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.
- checksums.yaml +7 -0
- data/bin/presently +13 -0
- data/lib/presently/application.rb +104 -0
- data/lib/presently/clock.rb +77 -0
- data/lib/presently/display_view.rb +73 -0
- data/lib/presently/environment/application.rb +62 -0
- data/lib/presently/page.rb +38 -0
- data/lib/presently/page.xrb +31 -0
- data/lib/presently/presentation.rb +72 -0
- data/lib/presently/presentation_controller.rb +181 -0
- data/lib/presently/presenter_view.rb +264 -0
- data/lib/presently/slide.rb +148 -0
- data/lib/presently/slide_view.rb +92 -0
- data/lib/presently/state.rb +66 -0
- data/lib/presently/version.rb +9 -0
- data/lib/presently.rb +9 -0
- data/license.md +21 -0
- data/public/_components/@socketry/syntax/Syntax/CodeElement.js +337 -0
- data/public/_components/@socketry/syntax/Syntax/Errors.js +52 -0
- data/public/_components/@socketry/syntax/Syntax/Language/apache.js +49 -0
- data/public/_components/@socketry/syntax/Syntax/Language/applescript.js +157 -0
- data/public/_components/@socketry/syntax/Syntax/Language/assembly.js +42 -0
- data/public/_components/@socketry/syntax/Syntax/Language/bash-script.js +108 -0
- data/public/_components/@socketry/syntax/Syntax/Language/bash.js +32 -0
- data/public/_components/@socketry/syntax/Syntax/Language/basic.js +232 -0
- data/public/_components/@socketry/syntax/Syntax/Language/c++.js +1 -0
- data/public/_components/@socketry/syntax/Syntax/Language/c.js +1 -0
- data/public/_components/@socketry/syntax/Syntax/Language/clang.js +201 -0
- data/public/_components/@socketry/syntax/Syntax/Language/cpp.js +1 -0
- data/public/_components/@socketry/syntax/Syntax/Language/csharp.js +166 -0
- data/public/_components/@socketry/syntax/Syntax/Language/css.js +244 -0
- data/public/_components/@socketry/syntax/Syntax/Language/diff.js +24 -0
- data/public/_components/@socketry/syntax/Syntax/Language/go.js +135 -0
- data/public/_components/@socketry/syntax/Syntax/Language/haskell.js +110 -0
- data/public/_components/@socketry/syntax/Syntax/Language/html.js +69 -0
- data/public/_components/@socketry/syntax/Syntax/Language/io.js +68 -0
- data/public/_components/@socketry/syntax/Syntax/Language/java.js +134 -0
- data/public/_components/@socketry/syntax/Syntax/Language/javascript.js +89 -0
- data/public/_components/@socketry/syntax/Syntax/Language/json.js +36 -0
- data/public/_components/@socketry/syntax/Syntax/Language/lisp.js +38 -0
- data/public/_components/@socketry/syntax/Syntax/Language/lua.js +87 -0
- data/public/_components/@socketry/syntax/Syntax/Language/markdown.js +112 -0
- data/public/_components/@socketry/syntax/Syntax/Language/nginx.js +37 -0
- data/public/_components/@socketry/syntax/Syntax/Language/objective-c.js +1 -0
- data/public/_components/@socketry/syntax/Syntax/Language/ocaml.js +225 -0
- data/public/_components/@socketry/syntax/Syntax/Language/pascal.js +166 -0
- data/public/_components/@socketry/syntax/Syntax/Language/patch.js +2 -0
- data/public/_components/@socketry/syntax/Syntax/Language/perl5.js +317 -0
- data/public/_components/@socketry/syntax/Syntax/Language/php-script.js +112 -0
- data/public/_components/@socketry/syntax/Syntax/Language/php.js +18 -0
- data/public/_components/@socketry/syntax/Syntax/Language/plain.js +20 -0
- data/public/_components/@socketry/syntax/Syntax/Language/protobuf.js +77 -0
- data/public/_components/@socketry/syntax/Syntax/Language/python.js +208 -0
- data/public/_components/@socketry/syntax/Syntax/Language/ruby.js +124 -0
- data/public/_components/@socketry/syntax/Syntax/Language/scala.js +81 -0
- data/public/_components/@socketry/syntax/Syntax/Language/smalltalk.js +30 -0
- data/public/_components/@socketry/syntax/Syntax/Language/sql.js +865 -0
- data/public/_components/@socketry/syntax/Syntax/Language/super-collider.js +70 -0
- data/public/_components/@socketry/syntax/Syntax/Language/swift.js +176 -0
- data/public/_components/@socketry/syntax/Syntax/Language/xml.js +76 -0
- data/public/_components/@socketry/syntax/Syntax/Language/xrb.js +33 -0
- data/public/_components/@socketry/syntax/Syntax/Language/yaml.js +29 -0
- data/public/_components/@socketry/syntax/Syntax/Language.js +276 -0
- data/public/_components/@socketry/syntax/Syntax/Loader.js +78 -0
- data/public/_components/@socketry/syntax/Syntax/Match.js +546 -0
- data/public/_components/@socketry/syntax/Syntax/Rule.js +306 -0
- data/public/_components/@socketry/syntax/Syntax.js +356 -0
- data/public/_components/@socketry/syntax/bin/syntax-ast.js +42 -0
- data/public/_components/@socketry/syntax/examples/_template.html +53 -0
- data/public/_components/@socketry/syntax/examples/apache.html +72 -0
- data/public/_components/@socketry/syntax/examples/applescript.html +72 -0
- data/public/_components/@socketry/syntax/examples/assembly.html +74 -0
- data/public/_components/@socketry/syntax/examples/bash.html +90 -0
- data/public/_components/@socketry/syntax/examples/basic.html +87 -0
- data/public/_components/@socketry/syntax/examples/c.html +141 -0
- data/public/_components/@socketry/syntax/examples/clang.html +202 -0
- data/public/_components/@socketry/syntax/examples/csharp.html +110 -0
- data/public/_components/@socketry/syntax/examples/css-colors.html +179 -0
- data/public/_components/@socketry/syntax/examples/custom-theme.html +155 -0
- data/public/_components/@socketry/syntax/examples/diff.html +142 -0
- data/public/_components/@socketry/syntax/examples/examples.css +216 -0
- data/public/_components/@socketry/syntax/examples/go.html +413 -0
- data/public/_components/@socketry/syntax/examples/haskell.html +373 -0
- data/public/_components/@socketry/syntax/examples/html.html +316 -0
- data/public/_components/@socketry/syntax/examples/index.html +97 -0
- data/public/_components/@socketry/syntax/examples/io.html +552 -0
- data/public/_components/@socketry/syntax/examples/java.html +786 -0
- data/public/_components/@socketry/syntax/examples/javascript.html +199 -0
- data/public/_components/@socketry/syntax/examples/json.html +150 -0
- data/public/_components/@socketry/syntax/examples/lisp.html +476 -0
- data/public/_components/@socketry/syntax/examples/lua.html +737 -0
- data/public/_components/@socketry/syntax/examples/markdown.html +121 -0
- data/public/_components/@socketry/syntax/examples/mixed.html +306 -0
- data/public/_components/@socketry/syntax/examples/nginx.html +554 -0
- data/public/_components/@socketry/syntax/examples/ocaml.html +596 -0
- data/public/_components/@socketry/syntax/examples/pascal.html +762 -0
- data/public/_components/@socketry/syntax/examples/perl5.html +488 -0
- data/public/_components/@socketry/syntax/examples/php-script.html +142 -0
- data/public/_components/@socketry/syntax/examples/php.html +95 -0
- data/public/_components/@socketry/syntax/examples/plain.html +222 -0
- data/public/_components/@socketry/syntax/examples/protobuf.html +405 -0
- data/public/_components/@socketry/syntax/examples/python.html +82 -0
- data/public/_components/@socketry/syntax/examples/readme.md +79 -0
- data/public/_components/@socketry/syntax/examples/ruby.html +58 -0
- data/public/_components/@socketry/syntax/examples/scala.html +41 -0
- data/public/_components/@socketry/syntax/examples/smalltalk.html +436 -0
- data/public/_components/@socketry/syntax/examples/sql.html +373 -0
- data/public/_components/@socketry/syntax/examples/super-collider.html +55 -0
- data/public/_components/@socketry/syntax/examples/swift.html +176 -0
- data/public/_components/@socketry/syntax/examples/wrap-demo.html +103 -0
- data/public/_components/@socketry/syntax/examples/xml.html +112 -0
- data/public/_components/@socketry/syntax/examples/xrb.html +37 -0
- data/public/_components/@socketry/syntax/examples/yaml.html +72 -0
- data/public/_components/@socketry/syntax/license.md +21 -0
- data/public/_components/@socketry/syntax/package-lock.json +834 -0
- data/public/_components/@socketry/syntax/package.json +43 -0
- data/public/_components/@socketry/syntax/readme.md +162 -0
- data/public/_components/@socketry/syntax/test/Syntax/CodeElement.js +306 -0
- data/public/_components/@socketry/syntax/test/Syntax/ErrorHandling.js +85 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/apache.js +153 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/applescript.js +198 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/assembly.js +209 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/bash-script.js +225 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/bash.js +162 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/basic.js +265 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/clang.js +390 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/csharp.js +436 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/css.js +431 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/diff.js +206 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/go.js +386 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/haskell.js +454 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/html.js +111 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/io.js +229 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/java.js +362 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/javascript.js +101 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/json.js +101 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/lisp.js +224 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/lua.js +307 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/markdown.js +163 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/nginx.js +267 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/ocaml.js +299 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/pascal.js +311 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/perl5.js +333 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/php-script.js +197 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/php.js +92 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/plain.js +327 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/protobuf.js +294 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/python.js +213 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/ruby.js +70 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/scala.js +75 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/smalltalk.js +223 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/sql.js +281 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/super-collider.js +66 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/swift.js +71 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/xml.js +170 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/xrb.js +57 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/yaml.js +123 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language.js +62 -0
- data/public/_components/@socketry/syntax/test/Syntax/Match.js +40 -0
- data/public/_components/@socketry/syntax/test/Syntax/Rule.js +251 -0
- data/public/_components/@socketry/syntax/test/Syntax.js +38 -0
- data/public/_components/@socketry/syntax/test/helpers/ast-matcher.js +90 -0
- data/public/_components/@socketry/syntax/themes/base/apache.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/applescript.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/assembly.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/bash.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/basic.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/c.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/clang.css +0 -0
- data/public/_components/@socketry/syntax/themes/base/csharp.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/css.css +22 -0
- data/public/_components/@socketry/syntax/themes/base/diff.css +48 -0
- data/public/_components/@socketry/syntax/themes/base/go.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/haskell.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/html.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/io.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/java.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/javascript.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/json.css +41 -0
- data/public/_components/@socketry/syntax/themes/base/lisp.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/lua.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/markdown.css +16 -0
- data/public/_components/@socketry/syntax/themes/base/nginx.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/ocaml.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/pascal.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/perl5.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/php-script.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/php.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/plain.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/protobuf.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/python.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/ruby.css +23 -0
- data/public/_components/@socketry/syntax/themes/base/scala.css +3 -0
- data/public/_components/@socketry/syntax/themes/base/smalltalk.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/sql.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/super-collider.css +33 -0
- data/public/_components/@socketry/syntax/themes/base/swift.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/syntax.css +63 -0
- data/public/_components/@socketry/syntax/themes/base/xml.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/xrb.css +29 -0
- data/public/_components/@socketry/syntax/themes/base/yaml.css +1 -0
- data/public/_components/@socketry/syntax/themes/theming.md +233 -0
- data/public/_components/@socketry/syntax/update-examples.js +135 -0
- data/public/_static/index.css +593 -0
- data/public/application.js +147 -0
- data/readme.md +69 -0
- data/releases.md +3 -0
- data/templates/code.xrb +12 -0
- data/templates/default.xrb +5 -0
- data/templates/image.xrb +8 -0
- data/templates/section.xrb +5 -0
- data/templates/title.xrb +8 -0
- data/templates/translation.xrb +8 -0
- data/templates/two_column.xrb +8 -0
- 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 @@
|
|
|
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
|