Add ids theme

Change-Id: I1b4a82a3ee14a7499293c639ad22221e4b60f4c3
diff --git a/R/revealjs_presentation.R b/R/revealjs_presentation.R
index 84614ae..881364f 100644
--- a/R/revealjs_presentation.R
+++ b/R/revealjs_presentation.R
@@ -337,6 +337,7 @@
 revealjs_themes <- function() {
   c(
     "default", # not used by reveal
+    "ids",
     "simple",
     "dark", # our alias for black
     "black",
diff --git a/README.Rmd b/README.Rmd
index 6784308..0ecfe20 100644
--- a/README.Rmd
+++ b/README.Rmd
@@ -1,5 +1,5 @@
 ---
-title: "R Markdown Format for reveal.js Presentations"
+title: "R Markdown Format for reveal.js Presentations – extended by ids theme"
 output: github_document
 ---
 
diff --git a/README.md b/README.md
index d6d9946..bd524d5 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-R Markdown Format for reveal.js Presentations
+R Markdown Format for reveal.js Presentations – extended by ids theme
 ================
 
 <!-- badges: start -->
@@ -187,7 +187,7 @@
 presentations:
 
 - `theme` specifies the theme to use for the presentation (available
-  themes are “simple”, “dark”, “black”, “sky”, “beige”, “serif”,
+  themes are “ids”, “simple”, “dark”, “black”, “sky”, “beige”, “serif”,
   “solarized”, “blood”, “moon”, “night”, “league”, or “white”
 
 - `highlight` specifies the syntax highlighting style. Supported styles
diff --git a/examples/ids.Rmd b/examples/ids.Rmd
new file mode 100644
index 0000000..9196688
--- /dev/null
+++ b/examples/ids.Rmd
@@ -0,0 +1,61 @@
+---
+title: "Untitled"
+author: Marc Kupietz
+institute: "IDS Mannheim"
+date: 2024-01-01
+output: 
+  revealjs::revealjs_presentation:
+    theme: ids
+    highlight: pygments
+    self_contained: false
+    reveal_plugins: 
+      - search
+      - zoom
+      - notes
+      - chalkboard
+      - menu
+    reveal_options:
+      chalkboard:
+        theme: chalkboard
+        toggleNotesButton: true
+      menu:
+        numbers: true
+---
+
+```{r setup, include=FALSE}
+knitr::opts_chunk$set(echo = FALSE)
+```
+
+## R Markdown
+
+This is an R Markdown presentation. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see <http://rmarkdown.rstudio.com>.
+
+When you click the **Knit** button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document.
+
+## Slide with Bullets
+### Subheading
+
+- Bullet 1
+- Bullet 2
+- Bullet 3
+
+<aside class="notes">
+Here are some notes.
+</aside>
+
+::: footer
+Custom footer text
+:::
+
+## Slide with R Output
+
+```{r cars, echo = TRUE}
+summary(cars)
+```
+
+## Slide with Plot
+
+```{r pressure}
+plot(pressure)
+```
+
diff --git a/inst/reveal.js-4.6.1/css/theme/source/ids.scss b/inst/reveal.js-4.6.1/css/theme/source/ids.scss
new file mode 100644
index 0000000..b0f0e32
--- /dev/null
+++ b/inst/reveal.js-4.6.1/css/theme/source/ids.scss
@@ -0,0 +1,79 @@
+/**
+ * IDS theme for reveal.js
+ *
+ * By Marc Kupietz
+ */
+
+
+// Default mixins and settings -----------------
+@import "../template/mixins";
+@import "../template/settings";
+// ---------------------------------------------
+
+
+// Include theme-specific fonts
+@import url('https://code.cdn.mozilla.net/fonts/fira.css');
+@import url('https://korap.ids-mannheim.de/font/fira-condensed.css');
+@import url('https://korap.ids-mannheim.de/font/libertinus.css');
+
+$idsOrange: #f6a800;
+
+// Override theme settings (see ../template/settings.scss)
+$backgroundColor: #fff;
+
+$mainColor: #222;
+$headingColor: $idsOrange;
+
+$mainFontSize: 42px;
+$mainFont: 'Libertinus Serif', Helvetica, sans-serif;
+$headingFont: 'Fira Sans Extra Condensed', 'Fira Sans', Helvetica, sans-serif;
+$headingTextShadow: none;
+$headingLetterSpacing: 0.05ex;
+$headingTextTransform: uppercase;
+$headingFontWeight: 600;
+$linkColor: #2a76dd;
+$linkColorHover: lighten( $linkColor, 15% );
+$selectionBackgroundColor: lighten( $linkColor, 25% );
+
+$heading1Size: 2em;
+$heading2Size: 1.35em;
+$heading3Size: 1.1em;
+$heading4Size: 1.0em;
+
+$listBulletColor: $idsOrange;
+
+// Change text colors against dark slide backgrounds
+@include dark-bg-text-color(#fff);
+
+
+// Theme template ------------------------------
+@import "../template/theme";
+// ---------------------------------------------
+
+body {
+  background-image: url('https://corpora.ids-mannheim.de/slides/reveal.js.ids/images/IDS-Logo-2019.svg'),
+    url('https://corpora.ids-mannheim.de/slides/reveal.js.ids/images/orange_bar.png') !important;
+  background-repeat: no-repeat !important;
+  background-position: top 20px right 20px, top 20px left !important;
+  background-size: 25vH auto, 4vH 16vH !important;
+}
+
+// Define additional color effects based on Dracula spec
+// https://spec.draculatheme.com/
+:root {
+  --r-bold-color: #{$idsOrange};
+  --r-list-bullet-color: #{$listBulletColor};
+}
+
+.reveal {
+  strong, b {
+          color: var(--r-bold-color);
+  }
+
+  // Dracula colored list bullets and numbers
+  ul, ol {
+          li::marker {
+                  color: var(--r-list-bullet-color) !important;
+          }
+  }
+}
diff --git a/inst/reveal.js-4.6.1/dist/theme/ids.css b/inst/reveal.js-4.6.1/dist/theme/ids.css
new file mode 100644
index 0000000..bb2d057
--- /dev/null
+++ b/inst/reveal.js-4.6.1/dist/theme/ids.css
@@ -0,0 +1,377 @@
+/**
+ * IDS theme for reveal.js
+ *
+ * By Marc Kupietz
+ */
+@import url("https://code.cdn.mozilla.net/fonts/fira.css");
+@import url("https://korap.ids-mannheim.de/font/fira-condensed.css");
+@import url("https://korap.ids-mannheim.de/font/libertinus.css");
+section.has-dark-background, section.has-dark-background h1, section.has-dark-background h2, section.has-dark-background h3, section.has-dark-background h4, section.has-dark-background h5, section.has-dark-background h6 {
+  color: #fff;
+}
+
+/*********************************************
+ * GLOBAL STYLES
+ *********************************************/
+:root {
+  --r-background-color: #fff;
+  --r-main-font: Libertinus Serif, Helvetica, sans-serif;
+  --r-main-font-size: 42px;
+  --r-main-color: #222;
+  --r-block-margin: 20px;
+  --r-heading-margin: 0 0 20px 0;
+  --r-heading-font: Fira Sans Extra Condensed, Fira Sans, Helvetica, sans-serif;
+  --r-heading-color: #f6a800;
+  --r-heading-line-height: 1.2;
+  --r-heading-letter-spacing: 0.05ex;
+  --r-heading-text-transform: uppercase;
+  --r-heading-text-shadow: none;
+  --r-heading-font-weight: 600;
+  --r-heading1-text-shadow: none;
+  --r-heading1-size: 2em;
+  --r-heading2-size: 1.35em;
+  --r-heading3-size: 1.1em;
+  --r-heading4-size: 1em;
+  --r-code-font: monospace;
+  --r-link-color: #2a76dd;
+  --r-link-color-dark: #1a53a1;
+  --r-link-color-hover: #6ca0e8;
+  --r-selection-background-color: #98bdef;
+  --r-selection-color: #fff;
+}
+
+.reveal-viewport {
+  background: #fff;
+  background-color: var(--r-background-color);
+}
+
+.reveal {
+  font-family: var(--r-main-font);
+  font-size: var(--r-main-font-size);
+  font-weight: normal;
+  color: var(--r-main-color);
+}
+
+.reveal ::selection {
+  color: var(--r-selection-color);
+  background: var(--r-selection-background-color);
+  text-shadow: none;
+}
+
+.reveal ::-moz-selection {
+  color: var(--r-selection-color);
+  background: var(--r-selection-background-color);
+  text-shadow: none;
+}
+
+.reveal .slides section,
+.reveal .slides section > section {
+  line-height: 1.3;
+  font-weight: inherit;
+}
+
+/*********************************************
+ * HEADERS
+ *********************************************/
+.reveal h1,
+.reveal h2,
+.reveal h3,
+.reveal h4,
+.reveal h5,
+.reveal h6 {
+  margin: var(--r-heading-margin);
+  color: var(--r-heading-color);
+  font-family: var(--r-heading-font);
+  font-weight: var(--r-heading-font-weight);
+  line-height: var(--r-heading-line-height);
+  letter-spacing: var(--r-heading-letter-spacing);
+  text-transform: var(--r-heading-text-transform);
+  text-shadow: var(--r-heading-text-shadow);
+  word-wrap: break-word;
+}
+
+.reveal h1 {
+  font-size: var(--r-heading1-size);
+}
+
+.reveal h2 {
+  font-size: var(--r-heading2-size);
+}
+
+.reveal h3 {
+  font-size: var(--r-heading3-size);
+}
+
+.reveal h4 {
+  font-size: var(--r-heading4-size);
+}
+
+.reveal h1 {
+  text-shadow: var(--r-heading1-text-shadow);
+}
+
+/*********************************************
+ * OTHER
+ *********************************************/
+.reveal p {
+  margin: var(--r-block-margin) 0;
+  line-height: 1.3;
+}
+
+/* Remove trailing margins after titles */
+.reveal h1:last-child,
+.reveal h2:last-child,
+.reveal h3:last-child,
+.reveal h4:last-child,
+.reveal h5:last-child,
+.reveal h6:last-child {
+  margin-bottom: 0;
+}
+
+/* Ensure certain elements are never larger than the slide itself */
+.reveal img,
+.reveal video,
+.reveal iframe {
+  max-width: 95%;
+  max-height: 95%;
+}
+
+.reveal strong,
+.reveal b {
+  font-weight: bold;
+}
+
+.reveal em {
+  font-style: italic;
+}
+
+.reveal ol,
+.reveal dl,
+.reveal ul {
+  display: inline-block;
+  text-align: left;
+  margin: 0 0 0 1em;
+}
+
+.reveal ol {
+  list-style-type: decimal;
+}
+
+.reveal ul {
+  list-style-type: disc;
+}
+
+.reveal ul ul {
+  list-style-type: square;
+}
+
+.reveal ul ul ul {
+  list-style-type: circle;
+}
+
+.reveal ul ul,
+.reveal ul ol,
+.reveal ol ol,
+.reveal ol ul {
+  display: block;
+  margin-left: 40px;
+}
+
+.reveal dt {
+  font-weight: bold;
+}
+
+.reveal dd {
+  margin-left: 40px;
+}
+
+.reveal blockquote {
+  display: block;
+  position: relative;
+  width: 70%;
+  margin: var(--r-block-margin) auto;
+  padding: 5px;
+  font-style: italic;
+  background: rgba(255, 255, 255, 0.05);
+  box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2);
+}
+
+.reveal blockquote p:first-child,
+.reveal blockquote p:last-child {
+  display: inline-block;
+}
+
+.reveal q {
+  font-style: italic;
+}
+
+.reveal pre {
+  display: block;
+  position: relative;
+  width: 90%;
+  margin: var(--r-block-margin) auto;
+  text-align: left;
+  font-size: 0.55em;
+  font-family: var(--r-code-font);
+  line-height: 1.2em;
+  word-wrap: break-word;
+  box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.15);
+}
+
+.reveal code {
+  font-family: var(--r-code-font);
+  text-transform: none;
+  tab-size: 2;
+}
+
+.reveal pre code {
+  display: block;
+  padding: 5px;
+  overflow: auto;
+  max-height: 400px;
+  word-wrap: normal;
+}
+
+.reveal .code-wrapper {
+  white-space: normal;
+}
+
+.reveal .code-wrapper code {
+  white-space: pre;
+}
+
+.reveal table {
+  margin: auto;
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+
+.reveal table th {
+  font-weight: bold;
+}
+
+.reveal table th,
+.reveal table td {
+  text-align: left;
+  padding: 0.2em 0.5em 0.2em 0.5em;
+  border-bottom: 1px solid;
+}
+
+.reveal table th[align=center],
+.reveal table td[align=center] {
+  text-align: center;
+}
+
+.reveal table th[align=right],
+.reveal table td[align=right] {
+  text-align: right;
+}
+
+.reveal table tbody tr:last-child th,
+.reveal table tbody tr:last-child td {
+  border-bottom: none;
+}
+
+.reveal sup {
+  vertical-align: super;
+  font-size: smaller;
+}
+
+.reveal sub {
+  vertical-align: sub;
+  font-size: smaller;
+}
+
+.reveal small {
+  display: inline-block;
+  font-size: 0.6em;
+  line-height: 1.2em;
+  vertical-align: top;
+}
+
+.reveal small * {
+  vertical-align: top;
+}
+
+.reveal img {
+  margin: var(--r-block-margin) 0;
+}
+
+/*********************************************
+ * LINKS
+ *********************************************/
+.reveal a {
+  color: var(--r-link-color);
+  text-decoration: none;
+  transition: color 0.15s ease;
+}
+
+.reveal a:hover {
+  color: var(--r-link-color-hover);
+  text-shadow: none;
+  border: none;
+}
+
+.reveal .roll span:after {
+  color: #fff;
+  background: var(--r-link-color-dark);
+}
+
+/*********************************************
+ * Frame helper
+ *********************************************/
+.reveal .r-frame {
+  border: 4px solid var(--r-main-color);
+  box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
+}
+
+.reveal a .r-frame {
+  transition: all 0.15s linear;
+}
+
+.reveal a:hover .r-frame {
+  border-color: var(--r-link-color);
+  box-shadow: 0 0 20px rgba(0, 0, 0, 0.55);
+}
+
+/*********************************************
+ * NAVIGATION CONTROLS
+ *********************************************/
+.reveal .controls {
+  color: var(--r-link-color);
+}
+
+/*********************************************
+ * PROGRESS BAR
+ *********************************************/
+.reveal .progress {
+  background: rgba(0, 0, 0, 0.2);
+  color: var(--r-link-color);
+}
+
+/*********************************************
+ * PRINT BACKGROUND
+ *********************************************/
+@media print {
+  .backgrounds {
+    background-color: var(--r-background-color);
+  }
+}
+body {
+  background-image: url("https://corpora.ids-mannheim.de/slides/reveal.js.ids/images/IDS-Logo-2019.svg"), url("https://corpora.ids-mannheim.de/slides/reveal.js.ids/images/orange_bar.png") !important;
+  background-repeat: no-repeat !important;
+  background-position: top 20px right 20px, top 20px left !important;
+  background-size: 25vH auto, 4vH 16vH !important;
+}
+
+:root {
+  --r-bold-color: #f6a800;
+  --r-list-bullet-color: #f6a800;
+}
+
+.reveal strong, .reveal b {
+  color: var(--r-bold-color);
+}
+.reveal ul li::marker, .reveal ol li::marker {
+  color: var(--r-list-bullet-color) !important;
+}
\ No newline at end of file