presently 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (215) hide show
  1. checksums.yaml +7 -0
  2. data/bin/presently +13 -0
  3. data/lib/presently/application.rb +104 -0
  4. data/lib/presently/clock.rb +77 -0
  5. data/lib/presently/display_view.rb +73 -0
  6. data/lib/presently/environment/application.rb +62 -0
  7. data/lib/presently/page.rb +38 -0
  8. data/lib/presently/page.xrb +31 -0
  9. data/lib/presently/presentation.rb +72 -0
  10. data/lib/presently/presentation_controller.rb +181 -0
  11. data/lib/presently/presenter_view.rb +264 -0
  12. data/lib/presently/slide.rb +148 -0
  13. data/lib/presently/slide_view.rb +92 -0
  14. data/lib/presently/state.rb +66 -0
  15. data/lib/presently/version.rb +9 -0
  16. data/lib/presently.rb +9 -0
  17. data/license.md +21 -0
  18. data/public/_components/@socketry/syntax/Syntax/CodeElement.js +337 -0
  19. data/public/_components/@socketry/syntax/Syntax/Errors.js +52 -0
  20. data/public/_components/@socketry/syntax/Syntax/Language/apache.js +49 -0
  21. data/public/_components/@socketry/syntax/Syntax/Language/applescript.js +157 -0
  22. data/public/_components/@socketry/syntax/Syntax/Language/assembly.js +42 -0
  23. data/public/_components/@socketry/syntax/Syntax/Language/bash-script.js +108 -0
  24. data/public/_components/@socketry/syntax/Syntax/Language/bash.js +32 -0
  25. data/public/_components/@socketry/syntax/Syntax/Language/basic.js +232 -0
  26. data/public/_components/@socketry/syntax/Syntax/Language/c++.js +1 -0
  27. data/public/_components/@socketry/syntax/Syntax/Language/c.js +1 -0
  28. data/public/_components/@socketry/syntax/Syntax/Language/clang.js +201 -0
  29. data/public/_components/@socketry/syntax/Syntax/Language/cpp.js +1 -0
  30. data/public/_components/@socketry/syntax/Syntax/Language/csharp.js +166 -0
  31. data/public/_components/@socketry/syntax/Syntax/Language/css.js +244 -0
  32. data/public/_components/@socketry/syntax/Syntax/Language/diff.js +24 -0
  33. data/public/_components/@socketry/syntax/Syntax/Language/go.js +135 -0
  34. data/public/_components/@socketry/syntax/Syntax/Language/haskell.js +110 -0
  35. data/public/_components/@socketry/syntax/Syntax/Language/html.js +69 -0
  36. data/public/_components/@socketry/syntax/Syntax/Language/io.js +68 -0
  37. data/public/_components/@socketry/syntax/Syntax/Language/java.js +134 -0
  38. data/public/_components/@socketry/syntax/Syntax/Language/javascript.js +89 -0
  39. data/public/_components/@socketry/syntax/Syntax/Language/json.js +36 -0
  40. data/public/_components/@socketry/syntax/Syntax/Language/lisp.js +38 -0
  41. data/public/_components/@socketry/syntax/Syntax/Language/lua.js +87 -0
  42. data/public/_components/@socketry/syntax/Syntax/Language/markdown.js +112 -0
  43. data/public/_components/@socketry/syntax/Syntax/Language/nginx.js +37 -0
  44. data/public/_components/@socketry/syntax/Syntax/Language/objective-c.js +1 -0
  45. data/public/_components/@socketry/syntax/Syntax/Language/ocaml.js +225 -0
  46. data/public/_components/@socketry/syntax/Syntax/Language/pascal.js +166 -0
  47. data/public/_components/@socketry/syntax/Syntax/Language/patch.js +2 -0
  48. data/public/_components/@socketry/syntax/Syntax/Language/perl5.js +317 -0
  49. data/public/_components/@socketry/syntax/Syntax/Language/php-script.js +112 -0
  50. data/public/_components/@socketry/syntax/Syntax/Language/php.js +18 -0
  51. data/public/_components/@socketry/syntax/Syntax/Language/plain.js +20 -0
  52. data/public/_components/@socketry/syntax/Syntax/Language/protobuf.js +77 -0
  53. data/public/_components/@socketry/syntax/Syntax/Language/python.js +208 -0
  54. data/public/_components/@socketry/syntax/Syntax/Language/ruby.js +124 -0
  55. data/public/_components/@socketry/syntax/Syntax/Language/scala.js +81 -0
  56. data/public/_components/@socketry/syntax/Syntax/Language/smalltalk.js +30 -0
  57. data/public/_components/@socketry/syntax/Syntax/Language/sql.js +865 -0
  58. data/public/_components/@socketry/syntax/Syntax/Language/super-collider.js +70 -0
  59. data/public/_components/@socketry/syntax/Syntax/Language/swift.js +176 -0
  60. data/public/_components/@socketry/syntax/Syntax/Language/xml.js +76 -0
  61. data/public/_components/@socketry/syntax/Syntax/Language/xrb.js +33 -0
  62. data/public/_components/@socketry/syntax/Syntax/Language/yaml.js +29 -0
  63. data/public/_components/@socketry/syntax/Syntax/Language.js +276 -0
  64. data/public/_components/@socketry/syntax/Syntax/Loader.js +78 -0
  65. data/public/_components/@socketry/syntax/Syntax/Match.js +546 -0
  66. data/public/_components/@socketry/syntax/Syntax/Rule.js +306 -0
  67. data/public/_components/@socketry/syntax/Syntax.js +356 -0
  68. data/public/_components/@socketry/syntax/bin/syntax-ast.js +42 -0
  69. data/public/_components/@socketry/syntax/examples/_template.html +53 -0
  70. data/public/_components/@socketry/syntax/examples/apache.html +72 -0
  71. data/public/_components/@socketry/syntax/examples/applescript.html +72 -0
  72. data/public/_components/@socketry/syntax/examples/assembly.html +74 -0
  73. data/public/_components/@socketry/syntax/examples/bash.html +90 -0
  74. data/public/_components/@socketry/syntax/examples/basic.html +87 -0
  75. data/public/_components/@socketry/syntax/examples/c.html +141 -0
  76. data/public/_components/@socketry/syntax/examples/clang.html +202 -0
  77. data/public/_components/@socketry/syntax/examples/csharp.html +110 -0
  78. data/public/_components/@socketry/syntax/examples/css-colors.html +179 -0
  79. data/public/_components/@socketry/syntax/examples/custom-theme.html +155 -0
  80. data/public/_components/@socketry/syntax/examples/diff.html +142 -0
  81. data/public/_components/@socketry/syntax/examples/examples.css +216 -0
  82. data/public/_components/@socketry/syntax/examples/go.html +413 -0
  83. data/public/_components/@socketry/syntax/examples/haskell.html +373 -0
  84. data/public/_components/@socketry/syntax/examples/html.html +316 -0
  85. data/public/_components/@socketry/syntax/examples/index.html +97 -0
  86. data/public/_components/@socketry/syntax/examples/io.html +552 -0
  87. data/public/_components/@socketry/syntax/examples/java.html +786 -0
  88. data/public/_components/@socketry/syntax/examples/javascript.html +199 -0
  89. data/public/_components/@socketry/syntax/examples/json.html +150 -0
  90. data/public/_components/@socketry/syntax/examples/lisp.html +476 -0
  91. data/public/_components/@socketry/syntax/examples/lua.html +737 -0
  92. data/public/_components/@socketry/syntax/examples/markdown.html +121 -0
  93. data/public/_components/@socketry/syntax/examples/mixed.html +306 -0
  94. data/public/_components/@socketry/syntax/examples/nginx.html +554 -0
  95. data/public/_components/@socketry/syntax/examples/ocaml.html +596 -0
  96. data/public/_components/@socketry/syntax/examples/pascal.html +762 -0
  97. data/public/_components/@socketry/syntax/examples/perl5.html +488 -0
  98. data/public/_components/@socketry/syntax/examples/php-script.html +142 -0
  99. data/public/_components/@socketry/syntax/examples/php.html +95 -0
  100. data/public/_components/@socketry/syntax/examples/plain.html +222 -0
  101. data/public/_components/@socketry/syntax/examples/protobuf.html +405 -0
  102. data/public/_components/@socketry/syntax/examples/python.html +82 -0
  103. data/public/_components/@socketry/syntax/examples/readme.md +79 -0
  104. data/public/_components/@socketry/syntax/examples/ruby.html +58 -0
  105. data/public/_components/@socketry/syntax/examples/scala.html +41 -0
  106. data/public/_components/@socketry/syntax/examples/smalltalk.html +436 -0
  107. data/public/_components/@socketry/syntax/examples/sql.html +373 -0
  108. data/public/_components/@socketry/syntax/examples/super-collider.html +55 -0
  109. data/public/_components/@socketry/syntax/examples/swift.html +176 -0
  110. data/public/_components/@socketry/syntax/examples/wrap-demo.html +103 -0
  111. data/public/_components/@socketry/syntax/examples/xml.html +112 -0
  112. data/public/_components/@socketry/syntax/examples/xrb.html +37 -0
  113. data/public/_components/@socketry/syntax/examples/yaml.html +72 -0
  114. data/public/_components/@socketry/syntax/license.md +21 -0
  115. data/public/_components/@socketry/syntax/package-lock.json +834 -0
  116. data/public/_components/@socketry/syntax/package.json +43 -0
  117. data/public/_components/@socketry/syntax/readme.md +162 -0
  118. data/public/_components/@socketry/syntax/test/Syntax/CodeElement.js +306 -0
  119. data/public/_components/@socketry/syntax/test/Syntax/ErrorHandling.js +85 -0
  120. data/public/_components/@socketry/syntax/test/Syntax/Language/apache.js +153 -0
  121. data/public/_components/@socketry/syntax/test/Syntax/Language/applescript.js +198 -0
  122. data/public/_components/@socketry/syntax/test/Syntax/Language/assembly.js +209 -0
  123. data/public/_components/@socketry/syntax/test/Syntax/Language/bash-script.js +225 -0
  124. data/public/_components/@socketry/syntax/test/Syntax/Language/bash.js +162 -0
  125. data/public/_components/@socketry/syntax/test/Syntax/Language/basic.js +265 -0
  126. data/public/_components/@socketry/syntax/test/Syntax/Language/clang.js +390 -0
  127. data/public/_components/@socketry/syntax/test/Syntax/Language/csharp.js +436 -0
  128. data/public/_components/@socketry/syntax/test/Syntax/Language/css.js +431 -0
  129. data/public/_components/@socketry/syntax/test/Syntax/Language/diff.js +206 -0
  130. data/public/_components/@socketry/syntax/test/Syntax/Language/go.js +386 -0
  131. data/public/_components/@socketry/syntax/test/Syntax/Language/haskell.js +454 -0
  132. data/public/_components/@socketry/syntax/test/Syntax/Language/html.js +111 -0
  133. data/public/_components/@socketry/syntax/test/Syntax/Language/io.js +229 -0
  134. data/public/_components/@socketry/syntax/test/Syntax/Language/java.js +362 -0
  135. data/public/_components/@socketry/syntax/test/Syntax/Language/javascript.js +101 -0
  136. data/public/_components/@socketry/syntax/test/Syntax/Language/json.js +101 -0
  137. data/public/_components/@socketry/syntax/test/Syntax/Language/lisp.js +224 -0
  138. data/public/_components/@socketry/syntax/test/Syntax/Language/lua.js +307 -0
  139. data/public/_components/@socketry/syntax/test/Syntax/Language/markdown.js +163 -0
  140. data/public/_components/@socketry/syntax/test/Syntax/Language/nginx.js +267 -0
  141. data/public/_components/@socketry/syntax/test/Syntax/Language/ocaml.js +299 -0
  142. data/public/_components/@socketry/syntax/test/Syntax/Language/pascal.js +311 -0
  143. data/public/_components/@socketry/syntax/test/Syntax/Language/perl5.js +333 -0
  144. data/public/_components/@socketry/syntax/test/Syntax/Language/php-script.js +197 -0
  145. data/public/_components/@socketry/syntax/test/Syntax/Language/php.js +92 -0
  146. data/public/_components/@socketry/syntax/test/Syntax/Language/plain.js +327 -0
  147. data/public/_components/@socketry/syntax/test/Syntax/Language/protobuf.js +294 -0
  148. data/public/_components/@socketry/syntax/test/Syntax/Language/python.js +213 -0
  149. data/public/_components/@socketry/syntax/test/Syntax/Language/ruby.js +70 -0
  150. data/public/_components/@socketry/syntax/test/Syntax/Language/scala.js +75 -0
  151. data/public/_components/@socketry/syntax/test/Syntax/Language/smalltalk.js +223 -0
  152. data/public/_components/@socketry/syntax/test/Syntax/Language/sql.js +281 -0
  153. data/public/_components/@socketry/syntax/test/Syntax/Language/super-collider.js +66 -0
  154. data/public/_components/@socketry/syntax/test/Syntax/Language/swift.js +71 -0
  155. data/public/_components/@socketry/syntax/test/Syntax/Language/xml.js +170 -0
  156. data/public/_components/@socketry/syntax/test/Syntax/Language/xrb.js +57 -0
  157. data/public/_components/@socketry/syntax/test/Syntax/Language/yaml.js +123 -0
  158. data/public/_components/@socketry/syntax/test/Syntax/Language.js +62 -0
  159. data/public/_components/@socketry/syntax/test/Syntax/Match.js +40 -0
  160. data/public/_components/@socketry/syntax/test/Syntax/Rule.js +251 -0
  161. data/public/_components/@socketry/syntax/test/Syntax.js +38 -0
  162. data/public/_components/@socketry/syntax/test/helpers/ast-matcher.js +90 -0
  163. data/public/_components/@socketry/syntax/themes/base/apache.css +1 -0
  164. data/public/_components/@socketry/syntax/themes/base/applescript.css +1 -0
  165. data/public/_components/@socketry/syntax/themes/base/assembly.css +1 -0
  166. data/public/_components/@socketry/syntax/themes/base/bash.css +1 -0
  167. data/public/_components/@socketry/syntax/themes/base/basic.css +1 -0
  168. data/public/_components/@socketry/syntax/themes/base/c.css +1 -0
  169. data/public/_components/@socketry/syntax/themes/base/clang.css +0 -0
  170. data/public/_components/@socketry/syntax/themes/base/csharp.css +1 -0
  171. data/public/_components/@socketry/syntax/themes/base/css.css +22 -0
  172. data/public/_components/@socketry/syntax/themes/base/diff.css +48 -0
  173. data/public/_components/@socketry/syntax/themes/base/go.css +1 -0
  174. data/public/_components/@socketry/syntax/themes/base/haskell.css +1 -0
  175. data/public/_components/@socketry/syntax/themes/base/html.css +1 -0
  176. data/public/_components/@socketry/syntax/themes/base/io.css +1 -0
  177. data/public/_components/@socketry/syntax/themes/base/java.css +1 -0
  178. data/public/_components/@socketry/syntax/themes/base/javascript.css +1 -0
  179. data/public/_components/@socketry/syntax/themes/base/json.css +41 -0
  180. data/public/_components/@socketry/syntax/themes/base/lisp.css +1 -0
  181. data/public/_components/@socketry/syntax/themes/base/lua.css +1 -0
  182. data/public/_components/@socketry/syntax/themes/base/markdown.css +16 -0
  183. data/public/_components/@socketry/syntax/themes/base/nginx.css +1 -0
  184. data/public/_components/@socketry/syntax/themes/base/ocaml.css +1 -0
  185. data/public/_components/@socketry/syntax/themes/base/pascal.css +1 -0
  186. data/public/_components/@socketry/syntax/themes/base/perl5.css +1 -0
  187. data/public/_components/@socketry/syntax/themes/base/php-script.css +1 -0
  188. data/public/_components/@socketry/syntax/themes/base/php.css +1 -0
  189. data/public/_components/@socketry/syntax/themes/base/plain.css +1 -0
  190. data/public/_components/@socketry/syntax/themes/base/protobuf.css +1 -0
  191. data/public/_components/@socketry/syntax/themes/base/python.css +1 -0
  192. data/public/_components/@socketry/syntax/themes/base/ruby.css +23 -0
  193. data/public/_components/@socketry/syntax/themes/base/scala.css +3 -0
  194. data/public/_components/@socketry/syntax/themes/base/smalltalk.css +1 -0
  195. data/public/_components/@socketry/syntax/themes/base/sql.css +1 -0
  196. data/public/_components/@socketry/syntax/themes/base/super-collider.css +33 -0
  197. data/public/_components/@socketry/syntax/themes/base/swift.css +1 -0
  198. data/public/_components/@socketry/syntax/themes/base/syntax.css +63 -0
  199. data/public/_components/@socketry/syntax/themes/base/xml.css +1 -0
  200. data/public/_components/@socketry/syntax/themes/base/xrb.css +29 -0
  201. data/public/_components/@socketry/syntax/themes/base/yaml.css +1 -0
  202. data/public/_components/@socketry/syntax/themes/theming.md +233 -0
  203. data/public/_components/@socketry/syntax/update-examples.js +135 -0
  204. data/public/_static/index.css +593 -0
  205. data/public/application.js +147 -0
  206. data/readme.md +69 -0
  207. data/releases.md +3 -0
  208. data/templates/code.xrb +12 -0
  209. data/templates/default.xrb +5 -0
  210. data/templates/image.xrb +8 -0
  211. data/templates/section.xrb +5 -0
  212. data/templates/title.xrb +8 -0
  213. data/templates/translation.xrb +8 -0
  214. data/templates/two_column.xrb +8 -0
  215. metadata +280 -0
@@ -0,0 +1,48 @@
1
+ /* Per-language overrides for Diff (empty by default). */
2
+
3
+ /* Light mode: Style entire lines based on the type of change */
4
+ .syntax.diff .insert {
5
+ background-color: rgba(0, 180, 0, 0.08);
6
+ }
7
+
8
+ .syntax.diff .remove {
9
+ background-color: rgba(220, 0, 0, 0.08);
10
+ }
11
+
12
+ .syntax.diff .offset {
13
+ background-color: rgba(0, 100, 200, 0.08);
14
+ font-weight: bold;
15
+ }
16
+
17
+ .syntax.diff .add {
18
+ color: #22863a;
19
+ font-weight: bold;
20
+ }
21
+
22
+ .syntax.diff .del {
23
+ color: #b31d28;
24
+ font-weight: bold;
25
+ }
26
+
27
+ /* Dark mode */
28
+ @media (prefers-color-scheme: dark) {
29
+ .syntax.diff .insert {
30
+ background-color: rgba(0, 255, 0, 0.1);
31
+ }
32
+
33
+ .syntax.diff .remove {
34
+ background-color: rgba(255, 0, 0, 0.1);
35
+ }
36
+
37
+ .syntax.diff .offset {
38
+ background-color: rgba(0, 150, 255, 0.1);
39
+ }
40
+
41
+ .syntax.diff .add {
42
+ color: #34d058;
43
+ }
44
+
45
+ .syntax.diff .del {
46
+ color: #ea4a5a;
47
+ }
48
+ }
@@ -0,0 +1 @@
1
+ /* Per-language overrides for Go (empty by default). */
@@ -0,0 +1 @@
1
+ /* Per-language overrides for Haskell (empty by default). */
@@ -0,0 +1 @@
1
+ /* Per-language overrides for HTML (empty by default). */
@@ -0,0 +1 @@
1
+ /* Io Syntax Theme */
@@ -0,0 +1 @@
1
+ /* Java Syntax Theme */
@@ -0,0 +1 @@
1
+ /* Per-language overrides for JavaScript (empty by default). */
@@ -0,0 +1,41 @@
1
+ /* JSON syntax highlighting styles */
2
+
3
+ /* Light mode (default) */
4
+ code.syntax .key {
5
+ color: #0451a5;
6
+ font-weight: normal;
7
+ }
8
+
9
+ code.syntax .string {
10
+ color: #a31515;
11
+ }
12
+
13
+ code.syntax .constant {
14
+ color: #098658;
15
+ }
16
+
17
+ code.syntax .operator {
18
+ color: #000000;
19
+ opacity: 0.6;
20
+ }
21
+
22
+ /* Dark mode */
23
+ @media (prefers-color-scheme: dark) {
24
+ code.syntax .key {
25
+ color: #9cdcfe;
26
+ font-weight: normal;
27
+ }
28
+
29
+ code.syntax .string {
30
+ color: #ce9178;
31
+ }
32
+
33
+ code.syntax .constant {
34
+ color: #b5cea8;
35
+ }
36
+
37
+ code.syntax .operator {
38
+ color: #d4d4d4;
39
+ opacity: 0.8;
40
+ }
41
+ }
@@ -0,0 +1 @@
1
+ /* Lisp Syntax Theme */
@@ -0,0 +1 @@
1
+ /* Lua Syntax Theme */
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Markdown language theme
3
+ *
4
+ * Markdown uses semantic token types with appropriate styling.
5
+ * Colors are derived from the base theme using hue rotation.
6
+ */
7
+
8
+ /* Semantic markdown tokens */
9
+ code.syntax .heading { color: hsl(calc(var(--syntax-base-hue) + 30), var(--syntax-base-saturation), var(--syntax-base-lightness)); font-weight: bold; }
10
+ code.syntax .emphasis { color: hsl(calc(var(--syntax-base-hue) - 90), calc(var(--syntax-base-saturation) - 10%), calc(var(--syntax-base-lightness) - 10%)); font-style: italic; }
11
+ code.syntax .strong { color: hsl(calc(var(--syntax-base-hue) + 30), var(--syntax-base-saturation), var(--syntax-base-lightness)); font-weight: bold; }
12
+ code.syntax .code { color: hsl(calc(var(--syntax-base-hue) - 30), var(--syntax-base-saturation), var(--syntax-base-lightness)); }
13
+ code.syntax .link { color: hsl(calc(var(--syntax-base-hue) - 60), var(--syntax-base-saturation), var(--syntax-base-lightness)); text-decoration: underline; }
14
+ code.syntax .quote { color: hsl(var(--syntax-base-hue), calc(var(--syntax-base-saturation) - 45%), var(--syntax-base-lightness)); font-style: italic; }
15
+ code.syntax .list-marker { color: hsl(calc(var(--syntax-base-hue) + 90), var(--syntax-base-saturation), var(--syntax-base-lightness)); }
16
+
@@ -0,0 +1 @@
1
+ /* Nginx Configuration Theme */
@@ -0,0 +1 @@
1
+ /* OCaml/F# Theme */
@@ -0,0 +1 @@
1
+ /* Pascal/Delphi Theme */
@@ -0,0 +1 @@
1
+ /* Perl 5 Syntax Highlighting */
@@ -0,0 +1 @@
1
+ /* PHP-script Syntax Highlighting Theme */
@@ -0,0 +1 @@
1
+ /* PHP Syntax Highlighting Theme */
@@ -0,0 +1 @@
1
+ /* Plain Text Syntax Highlighting */
@@ -0,0 +1 @@
1
+ /* Protocol Buffers Syntax Highlighting */
@@ -0,0 +1 @@
1
+ /* Per-language overrides for Python (empty by default). */
@@ -0,0 +1,23 @@
1
+ /* Ruby-specific token styles */
2
+
3
+ /* Light mode */
4
+ /* Symbols like :symbol */
5
+ code.syntax .symbol {
6
+ color: #d73a49;
7
+ }
8
+
9
+ /* Instance/class/global variables */
10
+ code.syntax .variable {
11
+ color: #6f42c1;
12
+ }
13
+
14
+ /* Dark mode */
15
+ @media (prefers-color-scheme: dark) {
16
+ code.syntax .symbol {
17
+ color: #e06c75;
18
+ }
19
+
20
+ code.syntax .variable {
21
+ color: #e5c07b;
22
+ }
23
+ }
@@ -0,0 +1,3 @@
1
+ /* Scala language specific tweaks (optional) */
2
+
3
+ /* Inherit base theme colors for standard token types. Add overrides here if desired. */
@@ -0,0 +1 @@
1
+ /* Smalltalk Syntax Theme */
@@ -0,0 +1 @@
1
+ /* SQL Syntax Theme */
@@ -0,0 +1,33 @@
1
+ /* SuperCollider-specific token styles */
2
+
3
+ /* Light mode */
4
+ /* Symbols like \freq or 'name' */
5
+ code.syntax .symbol {
6
+ color: #d73a49; /* red accent distinct from strings */
7
+ }
8
+
9
+ /* SC instance/class/global variables (@var, @@var, $char shown as constant) */
10
+ code.syntax .variable {
11
+ color: #6f42c1; /* purple distinct from constants */
12
+ }
13
+
14
+ /* Optional: emphasize function/method calls a bit more */
15
+ code.syntax .function {
16
+ color: #005cc5;
17
+ font-weight: 600;
18
+ }
19
+
20
+ /* Dark mode */
21
+ @media (prefers-color-scheme: dark) {
22
+ code.syntax .symbol {
23
+ color: #e06c75; /* reddish accent distinct from strings */
24
+ }
25
+
26
+ code.syntax .variable {
27
+ color: #e5c07b; /* warm yellow distinct from constants */
28
+ }
29
+
30
+ code.syntax .function {
31
+ color: #61afef;
32
+ }
33
+ }
@@ -0,0 +1 @@
1
+ /* Swift specific styles */
@@ -0,0 +1,63 @@
1
+ :host {
2
+ /* Base color - all other colors derive from this via hue rotation */
3
+ --syntax-base-hue: 270;
4
+ --syntax-base-saturation: 60%;
5
+ --syntax-base-lightness: 50%;
6
+ }
7
+
8
+ @media (prefers-color-scheme: dark) {
9
+ :host {
10
+ --syntax-base-saturation: 50%;
11
+ --syntax-base-lightness: 70%;
12
+ }
13
+ }
14
+
15
+ :host(:not([wrap])) {
16
+ overflow-x: auto;
17
+ white-space: pre;
18
+ }
19
+
20
+ :host[wrap] {
21
+ white-space: pre-wrap;
22
+ }
23
+
24
+ :host([wrap]) code.syntax > span {
25
+ display: flex;
26
+ }
27
+
28
+ code.syntax {
29
+ tab-size: 2;
30
+ }
31
+
32
+ :host([wrap]) code.syntax .indent {
33
+ flex-grow: 0;
34
+ flex-shrink: 0;
35
+ opacity: 0.5;
36
+ }
37
+
38
+ :host([wrap]) code.syntax .text {
39
+ white-space: pre-wrap;
40
+ padding-left: 2ch;
41
+ text-indent: -2ch;
42
+ }
43
+
44
+ /* Token type styles - colors derived from base via hue rotation */
45
+ code.syntax .keyword { color: hsl(calc(var(--syntax-base-hue) + 15), var(--syntax-base-saturation), var(--syntax-base-lightness)); font-weight: bold; }
46
+ code.syntax .string { color: hsl(calc(var(--syntax-base-hue) - 45), calc(var(--syntax-base-saturation) - 10%), calc(var(--syntax-base-lightness) - 5%)); }
47
+ code.syntax .comment { color: hsl(var(--syntax-base-hue), calc(var(--syntax-base-saturation) - 45%), var(--syntax-base-lightness)); font-style: italic; }
48
+ code.syntax .number { color: hsl(calc(var(--syntax-base-hue) - 30), var(--syntax-base-saturation), var(--syntax-base-lightness)); }
49
+ code.syntax .operator { color: hsl(calc(var(--syntax-base-hue) + 45), var(--syntax-base-saturation), var(--syntax-base-lightness)); }
50
+ code.syntax .function { color: hsl(calc(var(--syntax-base-hue) - 60), var(--syntax-base-saturation), var(--syntax-base-lightness)); }
51
+ code.syntax .constant { color: hsl(calc(var(--syntax-base-hue) - 30), var(--syntax-base-saturation), var(--syntax-base-lightness)); }
52
+ code.syntax .type { color: hsl(var(--syntax-base-hue), var(--syntax-base-saturation), var(--syntax-base-lightness)); }
53
+ code.syntax .preprocessor { color: hsl(calc(var(--syntax-base-hue) + 30), var(--syntax-base-saturation), var(--syntax-base-lightness)); font-style: italic; }
54
+ code.syntax .access { color: hsl(calc(var(--syntax-base-hue) + 15), var(--syntax-base-saturation), var(--syntax-base-lightness)); font-weight: bold; }
55
+ code.syntax .escape { color: hsl(calc(var(--syntax-base-hue) + 60), var(--syntax-base-saturation), var(--syntax-base-lightness)); font-weight: bold; }
56
+
57
+ /* HTML-oriented tokens */
58
+ code.syntax .tag { color: hsl(calc(var(--syntax-base-hue) + 50), var(--syntax-base-saturation), var(--syntax-base-lightness)); }
59
+ code.syntax .tag-name { color: hsl(calc(var(--syntax-base-hue) + 50), var(--syntax-base-saturation), var(--syntax-base-lightness)); font-weight: bold; }
60
+ code.syntax .attribute { color: hsl(calc(var(--syntax-base-hue) - 40), var(--syntax-base-saturation), var(--syntax-base-lightness)); }
61
+ code.syntax .entity { color: hsl(calc(var(--syntax-base-hue) + 45), var(--syntax-base-saturation), var(--syntax-base-lightness)); }
62
+ code.syntax .doctype { color: hsl(calc(var(--syntax-base-hue) + 15), var(--syntax-base-saturation), var(--syntax-base-lightness)); }
63
+ code.syntax .cdata { color: hsl(var(--syntax-base-hue), calc(var(--syntax-base-saturation) - 45%), var(--syntax-base-lightness)); }
@@ -0,0 +1 @@
1
+ /* XML specific styles */
@@ -0,0 +1,29 @@
1
+ /* XRB (XML with embedded Ruby) styles */
2
+
3
+ /* Light mode */
4
+ /* Delimiters for Ruby processing instruction: <?r ... ?> */
5
+ code.syntax .ruby-pi-open,
6
+ code.syntax .ruby-pi-close {
7
+ color: #005cc5; /* blue */
8
+ opacity: 0.9;
9
+ }
10
+
11
+ /* Delimiters for interpolation: #{ ... } */
12
+ code.syntax .ruby-interp-open,
13
+ code.syntax .ruby-interp-close {
14
+ color: #22863a; /* green */
15
+ opacity: 0.95;
16
+ }
17
+
18
+ /* Dark mode */
19
+ @media (prefers-color-scheme: dark) {
20
+ code.syntax .ruby-pi-open,
21
+ code.syntax .ruby-pi-close {
22
+ color: #61afef; /* blue-ish */
23
+ }
24
+
25
+ code.syntax .ruby-interp-open,
26
+ code.syntax .ruby-interp-close {
27
+ color: #98c379; /* green-ish */
28
+ }
29
+ }
@@ -0,0 +1 @@
1
+ /* Per-language overrides for YAML (empty by default). */
@@ -0,0 +1,233 @@
1
+ # Theming Guide
2
+
3
+ The `@socketry/syntax` library uses CSS custom properties (variables) with HSL colors to provide a flexible and maintainable theming system.
4
+
5
+ ## Key Benefits
6
+
7
+ 1. **Ultra Simple**: Change just 3 variables to create a complete theme
8
+ 2. **Automatic Dark Mode**: Light and dark mode handled automatically
9
+ 3. **Automatic Color Harmony**: All colors derived from one base color using hue rotation
10
+ 4. **Easy Customization**: Override the base or individual colors as needed
11
+
12
+ ## Theme Architecture
13
+
14
+ ### The Base Color System
15
+
16
+ Everything derives from three base variables:
17
+
18
+ ```css
19
+ :host {
20
+ --syntax-base-hue: 270; /* 0-360 degrees on the color wheel */
21
+ --syntax-base-saturation: 60%; /* How vibrant the colors are */
22
+ --syntax-base-lightness: 50%; /* How light/dark the colors are */
23
+ }
24
+ ```
25
+
26
+ **Dark mode** just adjusts saturation and lightness:
27
+
28
+ ```css
29
+ @media (prefers-color-scheme: dark) {
30
+ :host {
31
+ --syntax-base-saturation: 50%; /* Slightly less saturated */
32
+ --syntax-base-lightness: 70%; /* Much lighter for dark backgrounds */
33
+ }
34
+ }
35
+ ```
36
+
37
+ ### Automatic Color Derivation
38
+
39
+ All token colors are automatically calculated using hue rotation:
40
+
41
+ ```css
42
+ --syntax-keyword: hsl(calc(var(--syntax-base-hue) + 30), ...); /* 30° rotation */
43
+ --syntax-string: hsl(calc(var(--syntax-base-hue) - 90), ...); /* 90° opposite */
44
+ --syntax-function: hsl(calc(var(--syntax-base-hue) - 60), ...); /* 60° rotation */
45
+ /* etc. */
46
+ ```
47
+
48
+ This ensures all colors are harmonious and work together!
49
+
50
+ ## Creating Custom Themes
51
+
52
+ ### Method 1: Change the Base Hue (Recommended)
53
+
54
+ The simplest approach - just pick a different base color:
55
+
56
+ ```css
57
+ .ocean-theme {
58
+ --syntax-base-hue: 200; /* Blue - everything becomes ocean-themed! */
59
+ }
60
+
61
+ .sunset-theme {
62
+ --syntax-base-hue: 30; /* Orange - warm sunset colors */
63
+ }
64
+
65
+ .forest-theme {
66
+ --syntax-base-hue: 140; /* Green - natural forest palette */
67
+ }
68
+ ```
69
+
70
+ Then apply it:
71
+
72
+ ```html
73
+ <syntax-code language="javascript" class="ocean-theme">
74
+ // Your code here
75
+ </syntax-code>
76
+ ```
77
+
78
+ ### Method 2: Adjust Saturation and Lightness
79
+
80
+ For more subtle themes:
81
+
82
+ ```css
83
+ .pastel-theme {
84
+ --syntax-base-saturation: 40%; /* Less vibrant */
85
+ --syntax-base-lightness: 65%; /* Lighter */
86
+ }
87
+
88
+ .vivid-theme {
89
+ --syntax-base-saturation: 90%; /* Very saturated */
90
+ --syntax-base-lightness: 45%; /* Slightly darker */
91
+ }
92
+ ```
93
+
94
+ ### Method 3: Override Specific Colors
95
+
96
+ For fine-grained control:
97
+
98
+ ```css
99
+ .custom-theme {
100
+ --syntax-base-hue: 280; /* Purple base */
101
+
102
+ /* But make strings green instead of the derived color */
103
+ --syntax-string: hsl(120, 60%, 40%);
104
+ }
105
+ ```
106
+
107
+ ### Method 4: Custom Dark Mode
108
+
109
+ Override dark mode values for specific themes:
110
+
111
+ ```css
112
+ .my-theme {
113
+ --syntax-base-hue: 200;
114
+ }
115
+
116
+ @media (prefers-color-scheme: dark) {
117
+ .my-theme {
118
+ /* Different hue in dark mode */
119
+ --syntax-base-hue: 180;
120
+ --syntax-base-saturation: 45%;
121
+ --syntax-base-lightness: 75%;
122
+ }
123
+ }
124
+ ```
125
+
126
+ ## Token Types
127
+
128
+ All token types automatically get colors derived from the base. You can override individual ones if needed:
129
+
130
+ ### Programming Language Tokens
131
+
132
+ - `keyword` - Language keywords (if, function, class)
133
+ - `string` - String literals
134
+ - `comment` - Code comments
135
+ - `number` - Numeric literals
136
+ - `operator` - Operators (+, -, *, etc.)
137
+ - `function` - Function names
138
+ - `constant` - Constants and literals
139
+ - `type` - Type names
140
+ - `preprocessor` - Preprocessor directives
141
+ - `access` - Access modifiers (public, private)
142
+ - `escape` - Escape sequences
143
+
144
+ ### HTML/XML Tokens
145
+
146
+ - `tag` - HTML/XML tags
147
+ - `tag-name` - Tag names
148
+ - `attribute` - Attributes
149
+ - `entity` - HTML entities
150
+ - `doctype` - DOCTYPE declarations
151
+ - `cdata` - CDATA sections
152
+
153
+ ### Semantic Markdown Tokens
154
+
155
+ - `heading` - Headers (# Heading)
156
+ - `strong` - Bold text (**bold**)
157
+ - `emphasis` - Italic text (*italic*)
158
+ - `code` - Code blocks and inline code
159
+ - `link` - Links and images
160
+ - `quote` - Blockquotes
161
+ - `list-marker` - List markers
162
+
163
+ ## Dark Mode
164
+
165
+ Dark mode colors are automatically applied using `prefers-color-scheme`:
166
+
167
+ ```css
168
+ @media (prefers-color-scheme: dark) {
169
+ :host {
170
+ --syntax-keyword: hsl(var(--syntax-hue-primary), 50%, 70%);
171
+ /* Automatically lighter and less saturated for dark backgrounds */
172
+ }
173
+ }
174
+ ```
175
+
176
+ You can override dark mode colors in your custom theme:
177
+
178
+ ```css
179
+ .my-theme {
180
+ --syntax-keyword: hsl(300, 80%, 40%);
181
+ }
182
+
183
+ @media (prefers-color-scheme: dark) {
184
+ .my-theme {
185
+ --syntax-keyword: hsl(300, 60%, 75%);
186
+ }
187
+ }
188
+ ```
189
+
190
+ ## Example Themes
191
+
192
+ ### Monochrome
193
+
194
+ ```css
195
+ .monochrome {
196
+ --syntax-keyword: hsl(0, 0%, 20%);
197
+ --syntax-string: hsl(0, 0%, 30%);
198
+ --syntax-comment: hsl(0, 0%, 60%);
199
+ --syntax-function: hsl(0, 0%, 25%);
200
+ }
201
+ ```
202
+
203
+ ### High Contrast
204
+
205
+ ```css
206
+ .high-contrast {
207
+ --syntax-hue-primary: 270;
208
+ /* Increase saturation and contrast */
209
+ --syntax-keyword: hsl(var(--syntax-hue-primary), 100%, 30%);
210
+ --syntax-string: hsl(0, 100%, 35%);
211
+ --syntax-comment: hsl(0, 0%, 40%);
212
+ }
213
+ ```
214
+
215
+ ### Pastel
216
+
217
+ ```css
218
+ .pastel {
219
+ /* Use same hues but with high lightness and low saturation */
220
+ --syntax-keyword: hsl(var(--syntax-hue-primary), 40%, 60%);
221
+ --syntax-string: hsl(var(--syntax-hue-tertiary), 40%, 60%);
222
+ --syntax-comment: hsl(var(--syntax-hue-neutral), 20%, 70%);
223
+ }
224
+ ```
225
+
226
+ ## Tips
227
+
228
+ 1. **Hue Relationships**: Use complementary (180° apart) or analogous (30° apart) hues for harmony
229
+ 2. **Saturation**: Lower saturation (20-40%) for subtle themes, higher (70-90%) for vibrant themes
230
+ 3. **Lightness**: Keep 30-50% for light mode, 60-80% for dark mode
231
+ 4. **Contrast**: Ensure sufficient contrast between text and background (WCAG AA: 4.5:1 minimum)
232
+ 5. **Testing**: Test themes in both light and dark mode
233
+ 6. **Consistency**: Use the hue variables to maintain color relationships across tokens