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,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
|
data/public/_static/sidebar.js
CHANGED
|
@@ -11,28 +11,57 @@
|
|
|
11
11
|
if (!sidebarNav) return;
|
|
12
12
|
|
|
13
13
|
const navLinks = sidebarNav.querySelectorAll('a[href*="#"]');
|
|
14
|
-
|
|
14
|
+
|
|
15
|
+
// Build a map of sidebar links by their fragment IDs
|
|
16
|
+
const sidebarLinksByFragment = new Map();
|
|
17
|
+
navLinks.forEach(link => {
|
|
15
18
|
const href = link.getAttribute('href');
|
|
16
|
-
// Extract fragment from both "#section" and "page.html#section" formats
|
|
17
19
|
const fragmentIndex = href.indexOf('#');
|
|
18
|
-
if (fragmentIndex
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
if (fragmentIndex !== -1) {
|
|
21
|
+
const fragment = href.substring(fragmentIndex + 1);
|
|
22
|
+
sidebarLinksByFragment.set(fragment, link);
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
if (sidebarLinksByFragment.size === 0) return;
|
|
27
|
+
|
|
28
|
+
// Get all sections/headings on the page and annotate them with their sidebar link
|
|
29
|
+
const allSections = Array.from(document.querySelectorAll('section, h1, h2, h3, h4, h5, h6'))
|
|
30
|
+
.filter(el => el.id) // Only keep elements with IDs
|
|
31
|
+
.map(el => {
|
|
32
|
+
// Get the section element (section or heading's parent)
|
|
33
|
+
const sectionElement = el.tagName === 'SECTION' ? el : (el.closest('section') || el.parentElement);
|
|
34
|
+
return { element: sectionElement, id: el.id };
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
// Annotate each section with which sidebar link should be active
|
|
38
|
+
// Walk through in DOM order and track the "last seen" sidebar link
|
|
39
|
+
let lastSeenSidebarId = null;
|
|
40
|
+
allSections.forEach(({element, id}) => {
|
|
41
|
+
if (sidebarLinksByFragment.has(id)) {
|
|
42
|
+
// This section has a sidebar link - use it
|
|
43
|
+
lastSeenSidebarId = id;
|
|
44
|
+
}
|
|
45
|
+
// Annotate the section element with the sidebar link to activate
|
|
46
|
+
if (lastSeenSidebarId) {
|
|
47
|
+
element.dataset.sidebarLink = lastSeenSidebarId;
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
// Build sections array with link references for active state tracking
|
|
52
|
+
const sections = Array.from(sidebarLinksByFragment.entries()).map(([id, link]) => {
|
|
53
|
+
let sectionElement = document.getElementById(id);
|
|
22
54
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
sectionElement = document.querySelector(`#${CSS.escape(fragment)}`);
|
|
55
|
+
if (!sectionElement && id !== CSS.escape(id)) {
|
|
56
|
+
sectionElement = document.querySelector(`#${CSS.escape(id)}`);
|
|
26
57
|
}
|
|
27
58
|
|
|
28
|
-
// The element we found should be the section container, not just the heading
|
|
29
|
-
// If it's a heading, find its parent section
|
|
30
59
|
if (sectionElement && sectionElement.tagName.match(/^H[1-6]$/)) {
|
|
31
60
|
sectionElement = sectionElement.closest('section') || sectionElement.parentElement;
|
|
32
61
|
}
|
|
33
62
|
|
|
34
|
-
return { link, sectionElement, id:
|
|
35
|
-
}).filter(
|
|
63
|
+
return sectionElement ? { link, sectionElement, id } : null;
|
|
64
|
+
}).filter(Boolean);
|
|
36
65
|
|
|
37
66
|
if (sections.length === 0) return;
|
|
38
67
|
|
|
@@ -41,26 +70,30 @@
|
|
|
41
70
|
function updateActiveLink(updatePageState = true) {
|
|
42
71
|
let activeSectionData = null;
|
|
43
72
|
let smallestValidBottom = Infinity;
|
|
73
|
+
let currentSectionElement = null;
|
|
44
74
|
|
|
45
|
-
// Find
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
const { sectionElement } = sectionData;
|
|
49
|
-
const rect = sectionElement.getBoundingClientRect();
|
|
75
|
+
// Find which section the user is currently viewing
|
|
76
|
+
allSections.forEach(({element}) => {
|
|
77
|
+
const rect = element.getBoundingClientRect();
|
|
50
78
|
const sectionBottom = rect.bottom;
|
|
51
79
|
|
|
52
80
|
// Get the actual bottom padding for this section
|
|
53
|
-
const bottomPadding = parseFloat(getComputedStyle(
|
|
81
|
+
const bottomPadding = parseFloat(getComputedStyle(element).paddingBottom);
|
|
54
82
|
|
|
55
83
|
// We want the section whose bottom is closest to the top but still visible
|
|
56
84
|
if (sectionBottom > bottomPadding && sectionBottom < smallestValidBottom) {
|
|
57
85
|
smallestValidBottom = sectionBottom;
|
|
58
|
-
|
|
86
|
+
currentSectionElement = element;
|
|
59
87
|
}
|
|
60
88
|
});
|
|
61
89
|
|
|
62
|
-
//
|
|
63
|
-
|
|
90
|
+
// Look up which sidebar link should be active using the data attribute
|
|
91
|
+
if (currentSectionElement && currentSectionElement.dataset.sidebarLink) {
|
|
92
|
+
const sidebarLinkId = currentSectionElement.dataset.sidebarLink;
|
|
93
|
+
activeSectionData = sections.find(s => s.id === sidebarLinkId);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// If still no section found, fall back to the last section
|
|
64
97
|
if (!activeSectionData && sections.length > 0) {
|
|
65
98
|
activeSectionData = sections[sections.length - 1];
|
|
66
99
|
}
|
data/public/_static/site.css
CHANGED
data.tar.gz.sig
CHANGED
|
Binary file
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: utopia-project
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.38.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Samuel Williams
|
|
@@ -174,6 +174,99 @@ files:
|
|
|
174
174
|
- pages/source/controller.rb
|
|
175
175
|
- pages/source/index.xnode
|
|
176
176
|
- pages/source/show.xnode
|
|
177
|
+
- public/_components/@socketry/syntax/Syntax.js
|
|
178
|
+
- public/_components/@socketry/syntax/Syntax/CodeElement.js
|
|
179
|
+
- public/_components/@socketry/syntax/Syntax/Errors.js
|
|
180
|
+
- public/_components/@socketry/syntax/Syntax/Language.js
|
|
181
|
+
- public/_components/@socketry/syntax/Syntax/Language/apache.js
|
|
182
|
+
- public/_components/@socketry/syntax/Syntax/Language/applescript.js
|
|
183
|
+
- public/_components/@socketry/syntax/Syntax/Language/assembly.js
|
|
184
|
+
- public/_components/@socketry/syntax/Syntax/Language/bash-script.js
|
|
185
|
+
- public/_components/@socketry/syntax/Syntax/Language/bash.js
|
|
186
|
+
- public/_components/@socketry/syntax/Syntax/Language/basic.js
|
|
187
|
+
- public/_components/@socketry/syntax/Syntax/Language/c++.js
|
|
188
|
+
- public/_components/@socketry/syntax/Syntax/Language/c.js
|
|
189
|
+
- public/_components/@socketry/syntax/Syntax/Language/clang.js
|
|
190
|
+
- public/_components/@socketry/syntax/Syntax/Language/cpp.js
|
|
191
|
+
- public/_components/@socketry/syntax/Syntax/Language/csharp.js
|
|
192
|
+
- public/_components/@socketry/syntax/Syntax/Language/css.js
|
|
193
|
+
- public/_components/@socketry/syntax/Syntax/Language/diff.js
|
|
194
|
+
- public/_components/@socketry/syntax/Syntax/Language/go.js
|
|
195
|
+
- public/_components/@socketry/syntax/Syntax/Language/haskell.js
|
|
196
|
+
- public/_components/@socketry/syntax/Syntax/Language/html.js
|
|
197
|
+
- public/_components/@socketry/syntax/Syntax/Language/io.js
|
|
198
|
+
- public/_components/@socketry/syntax/Syntax/Language/java.js
|
|
199
|
+
- public/_components/@socketry/syntax/Syntax/Language/javascript.js
|
|
200
|
+
- public/_components/@socketry/syntax/Syntax/Language/json.js
|
|
201
|
+
- public/_components/@socketry/syntax/Syntax/Language/lisp.js
|
|
202
|
+
- public/_components/@socketry/syntax/Syntax/Language/lua.js
|
|
203
|
+
- public/_components/@socketry/syntax/Syntax/Language/markdown.js
|
|
204
|
+
- public/_components/@socketry/syntax/Syntax/Language/nginx.js
|
|
205
|
+
- public/_components/@socketry/syntax/Syntax/Language/objective-c.js
|
|
206
|
+
- public/_components/@socketry/syntax/Syntax/Language/ocaml.js
|
|
207
|
+
- public/_components/@socketry/syntax/Syntax/Language/pascal.js
|
|
208
|
+
- public/_components/@socketry/syntax/Syntax/Language/patch.js
|
|
209
|
+
- public/_components/@socketry/syntax/Syntax/Language/perl5.js
|
|
210
|
+
- public/_components/@socketry/syntax/Syntax/Language/php-script.js
|
|
211
|
+
- public/_components/@socketry/syntax/Syntax/Language/php.js
|
|
212
|
+
- public/_components/@socketry/syntax/Syntax/Language/plain.js
|
|
213
|
+
- public/_components/@socketry/syntax/Syntax/Language/protobuf.js
|
|
214
|
+
- public/_components/@socketry/syntax/Syntax/Language/python.js
|
|
215
|
+
- public/_components/@socketry/syntax/Syntax/Language/ruby.js
|
|
216
|
+
- public/_components/@socketry/syntax/Syntax/Language/scala.js
|
|
217
|
+
- public/_components/@socketry/syntax/Syntax/Language/smalltalk.js
|
|
218
|
+
- public/_components/@socketry/syntax/Syntax/Language/sql.js
|
|
219
|
+
- public/_components/@socketry/syntax/Syntax/Language/super-collider.js
|
|
220
|
+
- public/_components/@socketry/syntax/Syntax/Language/swift.js
|
|
221
|
+
- public/_components/@socketry/syntax/Syntax/Language/xml.js
|
|
222
|
+
- public/_components/@socketry/syntax/Syntax/Language/xrb.js
|
|
223
|
+
- public/_components/@socketry/syntax/Syntax/Language/yaml.js
|
|
224
|
+
- public/_components/@socketry/syntax/Syntax/Loader.js
|
|
225
|
+
- public/_components/@socketry/syntax/Syntax/Match.js
|
|
226
|
+
- public/_components/@socketry/syntax/Syntax/Rule.js
|
|
227
|
+
- public/_components/@socketry/syntax/license.md
|
|
228
|
+
- public/_components/@socketry/syntax/package.json
|
|
229
|
+
- public/_components/@socketry/syntax/readme.md
|
|
230
|
+
- public/_components/@socketry/syntax/themes/base/apache.css
|
|
231
|
+
- public/_components/@socketry/syntax/themes/base/applescript.css
|
|
232
|
+
- public/_components/@socketry/syntax/themes/base/assembly.css
|
|
233
|
+
- public/_components/@socketry/syntax/themes/base/bash.css
|
|
234
|
+
- public/_components/@socketry/syntax/themes/base/basic.css
|
|
235
|
+
- public/_components/@socketry/syntax/themes/base/c.css
|
|
236
|
+
- public/_components/@socketry/syntax/themes/base/clang.css
|
|
237
|
+
- public/_components/@socketry/syntax/themes/base/csharp.css
|
|
238
|
+
- public/_components/@socketry/syntax/themes/base/css.css
|
|
239
|
+
- public/_components/@socketry/syntax/themes/base/diff.css
|
|
240
|
+
- public/_components/@socketry/syntax/themes/base/go.css
|
|
241
|
+
- public/_components/@socketry/syntax/themes/base/haskell.css
|
|
242
|
+
- public/_components/@socketry/syntax/themes/base/html.css
|
|
243
|
+
- public/_components/@socketry/syntax/themes/base/io.css
|
|
244
|
+
- public/_components/@socketry/syntax/themes/base/java.css
|
|
245
|
+
- public/_components/@socketry/syntax/themes/base/javascript.css
|
|
246
|
+
- public/_components/@socketry/syntax/themes/base/json.css
|
|
247
|
+
- public/_components/@socketry/syntax/themes/base/lisp.css
|
|
248
|
+
- public/_components/@socketry/syntax/themes/base/lua.css
|
|
249
|
+
- public/_components/@socketry/syntax/themes/base/markdown.css
|
|
250
|
+
- public/_components/@socketry/syntax/themes/base/nginx.css
|
|
251
|
+
- public/_components/@socketry/syntax/themes/base/ocaml.css
|
|
252
|
+
- public/_components/@socketry/syntax/themes/base/pascal.css
|
|
253
|
+
- public/_components/@socketry/syntax/themes/base/perl5.css
|
|
254
|
+
- public/_components/@socketry/syntax/themes/base/php-script.css
|
|
255
|
+
- public/_components/@socketry/syntax/themes/base/php.css
|
|
256
|
+
- public/_components/@socketry/syntax/themes/base/plain.css
|
|
257
|
+
- public/_components/@socketry/syntax/themes/base/protobuf.css
|
|
258
|
+
- public/_components/@socketry/syntax/themes/base/python.css
|
|
259
|
+
- public/_components/@socketry/syntax/themes/base/ruby.css
|
|
260
|
+
- public/_components/@socketry/syntax/themes/base/scala.css
|
|
261
|
+
- public/_components/@socketry/syntax/themes/base/smalltalk.css
|
|
262
|
+
- public/_components/@socketry/syntax/themes/base/sql.css
|
|
263
|
+
- public/_components/@socketry/syntax/themes/base/super-collider.css
|
|
264
|
+
- public/_components/@socketry/syntax/themes/base/swift.css
|
|
265
|
+
- public/_components/@socketry/syntax/themes/base/syntax.css
|
|
266
|
+
- public/_components/@socketry/syntax/themes/base/xml.css
|
|
267
|
+
- public/_components/@socketry/syntax/themes/base/xrb.css
|
|
268
|
+
- public/_components/@socketry/syntax/themes/base/yaml.css
|
|
269
|
+
- public/_components/@socketry/syntax/themes/theming.md
|
|
177
270
|
- public/_components/jquery-litebox/jquery.litebox.css
|
|
178
271
|
- public/_components/jquery-litebox/jquery.litebox.gallery.css
|
|
179
272
|
- public/_components/jquery-litebox/jquery.litebox.js
|
metadata.gz.sig
CHANGED
|
Binary file
|