utopia-project 0.37.6 → 0.38.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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data/context/documentation-guidelines.md +12 -7
- data/lib/utopia/project/import_map.rb +1 -0
- data/lib/utopia/project/version.rb +1 -1
- data/pages/_page.xnode +8 -13
- data/public/_components/@socketry/syntax/Syntax/CodeElement.js +293 -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/license.md +21 -0
- data/public/_components/@socketry/syntax/package.json +43 -0
- data/public/_components/@socketry/syntax/readme.md +162 -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/_static/sidebar.js +55 -22
- data/public/_static/site.css +0 -4
- data.tar.gz.sig +0 -0
- metadata +94 -1
- metadata.gz.sig +0 -0
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@socketry/syntax",
|
|
3
|
+
"version": "0.3.3",
|
|
4
|
+
"description": "A modern, framework-agnostic syntax highlighter using Web Components",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "Syntax.js",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": "./Syntax.js",
|
|
9
|
+
"./Match": "./Syntax/Match.js",
|
|
10
|
+
"./Language": "./Syntax/Language.js",
|
|
11
|
+
"./Loader": "./Syntax/Loader.js",
|
|
12
|
+
"./Errors": "./Syntax/Errors.js",
|
|
13
|
+
"./Language/*": "./Syntax/Language/*.js"
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
"Syntax.js",
|
|
17
|
+
"Syntax/",
|
|
18
|
+
"styles/",
|
|
19
|
+
"themes/"
|
|
20
|
+
],
|
|
21
|
+
"scripts": {
|
|
22
|
+
"test": "node --test 'test/**/*.js'",
|
|
23
|
+
"format": "prettier --write '**/*.{js,json,md}'",
|
|
24
|
+
"format:check": "prettier --check '**/*.{js,json,md}'"
|
|
25
|
+
},
|
|
26
|
+
"keywords": [
|
|
27
|
+
"syntax",
|
|
28
|
+
"highlighting",
|
|
29
|
+
"web-components",
|
|
30
|
+
"code",
|
|
31
|
+
"highlighter"
|
|
32
|
+
],
|
|
33
|
+
"author": "Samuel G. D. Williams",
|
|
34
|
+
"license": "MIT",
|
|
35
|
+
"repository": {
|
|
36
|
+
"type": "git",
|
|
37
|
+
"url": "https://github.com/socketry/syntax-js.git"
|
|
38
|
+
},
|
|
39
|
+
"devDependencies": {
|
|
40
|
+
"jsdom": "^25.0.0",
|
|
41
|
+
"prettier": "^3.6.2"
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
# @socketry/syntax
|
|
2
|
+
|
|
3
|
+
A modern, framework-agnostic syntax highlighter using Web Components. This is a reimplementation of [jQuery.Syntax](https://github.com/ioquatix/jquery-syntax) without jQuery dependencies.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- 🎨 **Modern Web Components** - Uses autonomous custom elements
|
|
8
|
+
- 📦 **Dynamic Loading** - Loads language definitions on-demand
|
|
9
|
+
- 🔒 **No Dependencies** - Pure JavaScript, no jQuery required
|
|
10
|
+
- 🎯 **Framework Agnostic** - Works with React, Vue, vanilla JS, etc.
|
|
11
|
+
- 🌲 **Clean Architecture** - Well-structured classes with clear responsibilities
|
|
12
|
+
- 🔐 **Private Fields** - Modern JavaScript with proper encapsulation
|
|
13
|
+
|
|
14
|
+
## Installation
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
npm install @socketry/syntax
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Usage
|
|
21
|
+
|
|
22
|
+
### Automatic Upgrade
|
|
23
|
+
|
|
24
|
+
The easiest way to use Syntax is to let it automatically upgrade existing `<code>` elements:
|
|
25
|
+
|
|
26
|
+
```html
|
|
27
|
+
<script type="module">
|
|
28
|
+
import Syntax from '@socketry/syntax';
|
|
29
|
+
|
|
30
|
+
// Automatically upgrade all code blocks with language classes
|
|
31
|
+
document.addEventListener('DOMContentLoaded', async function() {
|
|
32
|
+
await Syntax.highlight();
|
|
33
|
+
});
|
|
34
|
+
</script>
|
|
35
|
+
|
|
36
|
+
<!-- Standard code blocks - will be automatically upgraded -->
|
|
37
|
+
<pre><code class="language-javascript">
|
|
38
|
+
const hello = "world";
|
|
39
|
+
console.log(hello);
|
|
40
|
+
</code></pre>
|
|
41
|
+
|
|
42
|
+
<p>Inline code: <code class="language-javascript">const x = 1;</code></p>
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
By default, `Syntax.highlight()` will:
|
|
46
|
+
- Find all `<code>` elements with class names matching `language-*` e.g., `language-javascript`, `language-python`.
|
|
47
|
+
- Replace them with `<syntax-code>` web components.
|
|
48
|
+
- Automatically detect if they're inside `<pre>` tags for proper wrapping behavior.
|
|
49
|
+
|
|
50
|
+
You can customize the selector:
|
|
51
|
+
|
|
52
|
+
```javascript
|
|
53
|
+
// Only upgrade specific elements:
|
|
54
|
+
await Syntax.highlight({
|
|
55
|
+
selector: 'code.highlight'
|
|
56
|
+
});
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Manual Web Components
|
|
60
|
+
|
|
61
|
+
You can also use the `<syntax-code>` web component directly:
|
|
62
|
+
|
|
63
|
+
```html
|
|
64
|
+
<script type="module">
|
|
65
|
+
import {Syntax} from '@socketry/syntax';
|
|
66
|
+
|
|
67
|
+
// Disable automatic upgrade, just register the component:
|
|
68
|
+
await Syntax.highlight({upgradeAll: false});
|
|
69
|
+
</script>
|
|
70
|
+
|
|
71
|
+
<!-- Use the web component directly -->
|
|
72
|
+
<syntax-code language="javascript">
|
|
73
|
+
const hello = "world"; console.log(hello);
|
|
74
|
+
</syntax-code>
|
|
75
|
+
|
|
76
|
+
<!-- Inside a <pre> tag for block display with line wrapping -->
|
|
77
|
+
<pre><syntax-code language="python" wrap>
|
|
78
|
+
def greet(name):
|
|
79
|
+
print(f"Hello, {name}!")
|
|
80
|
+
</syntax-code></pre>
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Programmatic Usage
|
|
84
|
+
|
|
85
|
+
```javascript
|
|
86
|
+
import Syntax from '@socketry/syntax';
|
|
87
|
+
import registerJavaScript from '@socketry/syntax/Language/javascript.js';
|
|
88
|
+
|
|
89
|
+
// Create a Syntax instance
|
|
90
|
+
const syntax = new Syntax();
|
|
91
|
+
registerJavaScript(syntax);
|
|
92
|
+
|
|
93
|
+
// Get the JavaScript language and process code:
|
|
94
|
+
const language = await syntax.getLanguage('javascript');
|
|
95
|
+
const code = 'const x = 10;';
|
|
96
|
+
const html = await language.process(code);
|
|
97
|
+
document.body.appendChild(html);
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### The `wrap` Attribute
|
|
101
|
+
|
|
102
|
+
The `<syntax-code>` element automatically detects whether it's inside a `<pre>` tag:
|
|
103
|
+
|
|
104
|
+
- **Inside `<pre>`**: Sets `wrap` attribute, enables line wrapping with proper indentation.
|
|
105
|
+
- **Standalone**: No `wrap` attribute, uses horizontal scrolling for long lines.
|
|
106
|
+
|
|
107
|
+
You can manually control this:
|
|
108
|
+
|
|
109
|
+
```html
|
|
110
|
+
<!-- Force wrapping even outside <pre> -->
|
|
111
|
+
<syntax-code language="javascript" wrap>
|
|
112
|
+
const reallyLongLine = "This will wrap instead of scroll";
|
|
113
|
+
</syntax-code>
|
|
114
|
+
|
|
115
|
+
<!-- Disable wrapping even inside <pre> -->
|
|
116
|
+
<pre><syntax-code language="javascript">
|
|
117
|
+
const code = "This will scroll horizontally";
|
|
118
|
+
</syntax-code></pre>
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## Command Line Tool
|
|
122
|
+
|
|
123
|
+
A simple CLI tool is included to inspect the AST (Abstract Syntax Tree) of parsed code:
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
node bin/syntax-ast.js <language> <code>
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Examples:
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
# Parse JavaScript
|
|
133
|
+
node bin/syntax-ast.js javascript "const x = 1;"
|
|
134
|
+
|
|
135
|
+
# Parse Markdown
|
|
136
|
+
node bin/syntax-ast.js markdown '`inline code`'
|
|
137
|
+
|
|
138
|
+
# Parse Python
|
|
139
|
+
node bin/syntax-ast.js python "def foo(): pass"
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
Output shows all matched tokens with their type, position, length, and text:
|
|
143
|
+
|
|
144
|
+
```
|
|
145
|
+
Language: javascript
|
|
146
|
+
Code: "const x = 1;"
|
|
147
|
+
|
|
148
|
+
Matches: 3
|
|
149
|
+
────────────────────────────────────────────────────────────────────────────────
|
|
150
|
+
[keyword] @0..5 (5 chars)
|
|
151
|
+
Text: "const"
|
|
152
|
+
[operator] @8..9 (1 chars)
|
|
153
|
+
Text: "="
|
|
154
|
+
[constant] @10..11 (1 chars)
|
|
155
|
+
Text: "1"
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
This is useful for:
|
|
159
|
+
- Debugging language definitions
|
|
160
|
+
- Understanding how code is tokenized
|
|
161
|
+
- Testing pattern matching
|
|
162
|
+
- Developing new language support
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/* Per-language overrides for Apache (empty by default). */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/* Per-language overrides for AppleScript (empty by default). */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/* Per-language overrides for Assembly (empty by default). */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/* Per-language overrides for Bash (empty by default). */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/* Per-language overrides for BASIC (empty by default). */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/* Per-language overrides for C (empty by default). */
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/* Per-language overrides for C# (empty by default). */
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/* Per-language overrides for CSS (empty by default). */
|
|
2
|
+
|
|
3
|
+
/* Color box styling */
|
|
4
|
+
.colour-box {
|
|
5
|
+
display: inline-block;
|
|
6
|
+
margin: 0 0.2em;
|
|
7
|
+
border: 1px solid #999;
|
|
8
|
+
line-height: 0.9;
|
|
9
|
+
vertical-align: middle;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.colour-box .sample {
|
|
13
|
+
display: inline-block;
|
|
14
|
+
width: 0.9em;
|
|
15
|
+
height: 0.9em;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
@media (prefers-color-scheme: dark) {
|
|
19
|
+
.colour-box {
|
|
20
|
+
border-color: #666;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -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). */
|