@ui-doc/html-renderer 0.3.0 → 1.0.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 (102) hide show
  1. package/README.md +586 -151
  2. package/dist/HtmlCurlyBraceLexer.d.ts +4 -1
  3. package/dist/HtmlRenderer.d.ts +5 -5
  4. package/dist/InlineReader.d.ts +3 -2
  5. package/dist/{types/lexer.d.ts → Lexer.types.d.ts} +8 -5
  6. package/dist/NodeParser.d.ts +3 -2
  7. package/dist/{types/parser.d.ts → Parser.types.d.ts} +8 -8
  8. package/dist/{types/base.d.ts → Primitive.types.d.ts} +1 -1
  9. package/dist/{types/reader.d.ts → Reader.types.d.ts} +9 -7
  10. package/dist/Renderer.types.d.ts +14 -0
  11. package/dist/TemplateLoader.d.ts +3 -2
  12. package/dist/{types/token.d.ts → Token.types.d.ts} +1 -1
  13. package/dist/assets/services/expand.d.ts +19 -0
  14. package/dist/assets/ui-doc.cjs +283 -9
  15. package/dist/assets/ui-doc.cjs.map +1 -1
  16. package/dist/assets/ui-doc.css +1169 -250
  17. package/dist/assets/ui-doc.css.map +1 -1
  18. package/dist/assets/ui-doc.min.css +9 -1
  19. package/dist/assets/ui-doc.min.js +1 -1
  20. package/dist/assets/ui-doc.mjs +283 -9
  21. package/dist/assets/ui-doc.mjs.map +1 -1
  22. package/dist/assets/utils/delay.d.ts +1 -0
  23. package/dist/assets/utils/dom.d.ts +31 -0
  24. package/dist/assets/utils/select.d.ts +12 -0
  25. package/dist/index.cjs +161 -126
  26. package/dist/index.cjs.map +1 -1
  27. package/dist/index.d.ts +6 -1
  28. package/dist/index.mjs +160 -126
  29. package/dist/index.mjs.map +1 -1
  30. package/dist/nodes/CommentNode.d.ts +2 -1
  31. package/dist/nodes/Node.d.ts +1 -1
  32. package/dist/nodes/TemplateNode.d.ts +2 -1
  33. package/dist/nodes/index.d.ts +4 -2
  34. package/dist/nodes/tags/debug.d.ts +2 -1
  35. package/dist/nodes/tags/for.d.ts +4 -3
  36. package/dist/nodes/tags/if.d.ts +5 -4
  37. package/dist/nodes/tags/index.d.ts +1 -1
  38. package/dist/nodes/tags/page.d.ts +2 -1
  39. package/dist/nodes/tags/partial.d.ts +2 -1
  40. package/dist/nodes/tags/var.d.ts +2 -1
  41. package/dist/utils/index.d.ts +1 -1
  42. package/package.json +32 -29
  43. package/scripts/app.ts +5 -3
  44. package/scripts/{src → services}/example.ts +3 -3
  45. package/scripts/services/expand.ts +214 -0
  46. package/scripts/{src → services}/sidebar.ts +4 -3
  47. package/scripts/utils/delay.ts +12 -0
  48. package/scripts/utils/dom.ts +77 -0
  49. package/scripts/utils/select.ts +46 -0
  50. package/styles/01_resets/initial.css +8 -3
  51. package/styles/01_resets/root/color.css +19 -0
  52. package/styles/01_resets/root/font.css +28 -0
  53. package/styles/01_resets/root/space.css +30 -0
  54. package/styles/01_resets/root/witdh.css +12 -0
  55. package/styles/01_resets/root.css +61 -23
  56. package/styles/01_resets/typography.css +105 -8
  57. package/styles/02_utils/background.css +14 -0
  58. package/styles/02_utils/control.css +41 -0
  59. package/styles/02_utils/margin.css +150 -0
  60. package/styles/02_utils/padding.css +134 -0
  61. package/styles/02_utils/width.css +39 -0
  62. package/styles/03_components/button.css +42 -0
  63. package/styles/03_components/colors.css +7 -19
  64. package/styles/03_components/container.css +16 -0
  65. package/styles/03_components/example-markup.css +1 -6
  66. package/styles/03_components/grid-auto.css +49 -0
  67. package/styles/03_components/icons.css +7 -19
  68. package/styles/03_components/navigation/burger-control.css +75 -0
  69. package/styles/03_components/{nav → navigation}/list.css +9 -11
  70. package/styles/03_components/navigation/main.css +102 -0
  71. package/styles/03_components/spaces.css +8 -7
  72. package/styles/04_layout/body.css +22 -0
  73. package/styles/04_layout/inline-code.css +6 -0
  74. package/styles/04_layout/page.css +73 -0
  75. package/styles/index.css +58 -17
  76. package/templates/layouts/default.html +4 -6
  77. package/templates/layouts/example.html +1 -1
  78. package/templates/pages/default.html +13 -13
  79. package/templates/pages/index.html +9 -3
  80. package/templates/partials/code.html +1 -1
  81. package/templates/partials/colors.html +2 -2
  82. package/templates/partials/content.html +1 -1
  83. package/templates/partials/icons.html +3 -3
  84. package/templates/partials/nav-main.html +19 -8
  85. package/templates/partials/section.html +1 -1
  86. package/templates/partials/spaces.html +2 -2
  87. package/LICENSE.md +0 -9
  88. package/dist/assets/src/utils.d.ts +0 -2
  89. package/dist/types/index.d.ts +0 -6
  90. package/dist/types/renderer.d.ts +0 -14
  91. package/scripts/src/utils.ts +0 -20
  92. package/styles/02_objects/background.css +0 -7
  93. package/styles/02_objects/control.css +0 -25
  94. package/styles/02_objects/margin.css +0 -44
  95. package/styles/02_objects/padding.css +0 -44
  96. package/styles/02_objects/text.css +0 -3
  97. package/styles/02_objects/width.css +0 -16
  98. package/styles/03_components/nav/main.css +0 -39
  99. package/styles/03_components/text-flow.css +0 -5
  100. package/styles/04_layouts/page.css +0 -70
  101. /package/dist/assets/{src → services}/example.d.ts +0 -0
  102. /package/dist/assets/{src → services}/sidebar.d.ts +0 -0
@@ -1,57 +1,234 @@
1
+ /**
2
+ * Text for the index page
3
+ *
4
+ * @page index UI-Doc
5
+ */
6
+
7
+ /**
8
+ * Variables used in the project.
9
+ *
10
+ * @page variables Variables
11
+ * @order 10
12
+ */
13
+
14
+ /**
15
+ * Resets used to normalize the browser styles.
16
+ *
17
+ * @page resets Resets
18
+ * @order 20
19
+ */
20
+
21
+ /**
22
+ * The color variables are used to define the color palette.
23
+ *
24
+ * The color variables are defined by RGB value. When you want to use a color you need use the `rgb()` function. For example: `rgb(var(--color-black))`.
25
+ *
26
+ * @location variables.colors Colors
27
+ * @color {0 0 0|255 255 255} --color-black | Black
28
+ * @color {20 33 61|255 255 255} --color-blue | Blue
29
+ * @color {252 163 17} --color-yellow | Yellow
30
+ * @color {229 229 229} --color-gray | Gray
31
+ * @color {255 255 255} --color-white | White
32
+ */
33
+
34
+ :root {
35
+ --color-black: 0 0 0;
36
+ --color-blue: 20 33 61;
37
+ --color-yellow: 252 163 17;
38
+ --color-gray: 229 229 229;
39
+ --color-white: 255 255 255;
40
+ }
41
+
42
+ /**
43
+ * Set of predefined font variables.
44
+ *
45
+ * @location variables.font Font
46
+ */
47
+
1
48
  :root {
49
+ /**
50
+ * Font weights are a set of predefined values that can be used to define the weight of a font:
51
+ * - **--font-weight-normal**
52
+ * - **--font-weight-bold**
53
+ *
54
+ * @location variables.font.weight Font weight
55
+ */
2
56
  --font-weight-normal: 400;
3
57
  --font-weight-bold: 700;
58
+
59
+ /**
60
+ * Font sizes are a set of predefined values that can be used to define the size of a font:
61
+ * - **--font-size-sm**
62
+ * - **--font-size-normal**
63
+ * - **--font-size-md**
64
+ *
65
+ * @location variables.font.size Font size
66
+ */
4
67
  --font-size-sm: 0.85em;
5
68
  --font-size-normal: 1em;
6
69
  --font-size-md: 1.2em;
7
- --font-size-lg: 1.7em;
70
+ }
71
+
72
+ /**
73
+ * Space are a set of predefined values that can be used to define the space of an element.
74
+ * When spaces are used there is always a set of two variables you can use the `--space-unit` and `--space-<size>`.
75
+ * The `--space-unit` is the base unit that will be multiplied by the `--space-<size>`. Depending on the context
76
+ * you are using the space `<size>` changes.
77
+ *
78
+ * The predefined space can the be set in a specific context by defining the `--space-<size>` variable.
79
+ * For example the space unit is `1rem` and we are in the padding context, we can use `--space-pt: var(--space-md);` to change the padding
80
+ * top to the medium space.
81
+ *
82
+ * @location variables.spaces Spaces
83
+ * @space {0.35em} --space-xxs | Extra extra small
84
+ * @space {0.5em} --space-xs | Extra small
85
+ * @space {0.7em} --space-sm | Small
86
+ * @space {1em} --space-normal | Normal
87
+ * @space {1.3em} --space-md | Medium
88
+ * @space {1.8em} --space-lg | Large
89
+ * @space {3.2em} --space-xl | Extra large
90
+ * @space {4.8em} --space-xxl | Extra extra large
91
+ */
92
+
93
+ :root {
94
+ --space-xxs: 0.35;
95
+ --space-xs: 0.5;
96
+ --space-sm: 0.7;
97
+ --space-normal: 1;
98
+ --space-md: 1.3;
99
+ --space-lg: 1.8;
100
+ --space-xl: 3.2;
101
+ --space-xxl: 4.8;
102
+ }
103
+
104
+ /**
105
+ * Widths are a set of predefined values that can be used to limit the content width.
106
+ *
107
+ * - `--width-min-offset-x` - The minimum space on the left and right side.
108
+ * - `--width-content` - The width of the content.
109
+ *
110
+ * @location variables.width Width (Content)
111
+ */
112
+
113
+ :root {
114
+ --width-min-offset-x: 22px;
115
+ --width-content: 1200px;
116
+ }
117
+
118
+ /**
119
+ * There are some global veriables that are used in the project. These variables are a base set and can be changed depending on context and requirements. All components are using these variables to define the style or as a fallback if there more specific named variable is not present.
120
+ *
121
+ * @location variables.global Globals
122
+ */
123
+
124
+ :root {
125
+ /**
126
+ * - `--font-space-unit` - The spacing unit when using font related spaces (see the spaces documentation for mor details).
127
+ * - `--font-size-base` - The base font size.
128
+ * - `--font-color` - used font color.
129
+ * - `--font-family` - uded font family.
130
+ * - `--font-weight` - used font weight.
131
+ * - `--font-size` - used font size.
132
+ * - `--font-line-height` - used font line height.
133
+ *
134
+ * @location variables.global.font Font
135
+ */
136
+ --font-space-unit: 1em;
8
137
  --font-size-base: 16px;
9
- --font-color: 3 3 3;
138
+ --font-color: var(--color-black);
10
139
  --font-family: system-ui, "Segoe UI", roboto, helvetica, arial, sans-serif, "Apple Color Emoji",
11
140
  "Segoe UI Emoji", "Segoe UI Symbol";
12
141
  --font-weight: var(--font-weight-normal);
13
142
  --font-size: var(--font-size-normal);
14
143
  --font-line-height: 1.4;
15
- --headline-weight: var(--font-weight-bold);
16
- --bg-color: 255 255 255;
17
- --accent-color: 3 3 200;
18
- --border-color: 5 5 5;
144
+
145
+ /**
146
+ * - `--bg-color` - used background color
147
+ * - `--accent-color` - used accent color
148
+ * - `--selection-color` - used selection color
149
+ * - `--selection-bg-color` - used selection background color
150
+ * - `--animation-time` - used animation time
151
+ *
152
+ * @location variables.global.colors Colors
153
+ */
154
+ --bg-color: var(--color-white);
155
+ --accent-color: var(--color-yellow);
19
156
  --selection-color: var(--bg-color);
20
157
  --selection-bg-color: var(--font-color);
21
- --size-base-unit: 1rem;
22
- --size-xs: calc(0.5 * var(--size-base-unit));
23
- --size-sm: calc(0.8 * var(--size-base-unit));
24
- --size-normal: var(--size-base-unit);
25
- --size-md: calc(1.2 * var(--size-base-unit));
26
- --size-lg: calc(1.6 * var(--size-base-unit));
27
- --size-xl: calc(2.4 * var(--size-base-unit));
28
- --nav-main-menu-item-px: var(--size-sm);
29
- --nav-main-menu-item-py: var(--size-xs);
30
- --nav-main-menu-item-font-size: var(--font-size-md);
31
- --nav-main-height: calc(
32
- var(--nav-main-menu-item-py) * 2 + var(--nav-main-menu-item-font-size) * var(--font-line-height)
158
+ --space-unit: 1em;
159
+
160
+ /**
161
+ *
162
+ * - `--animation-time` - used animation time
163
+ *
164
+ * @location variables.global.animation Animation
165
+ */
166
+ --animation-time: 0.25s;
167
+
168
+ /**
169
+ * @location variables.global.nav-main Main navigation
170
+ */
171
+ --nav-main-bar-item-space-x: var(--space-normal);
172
+ --nav-main-bar-item-space-y: var(--space-sm);
173
+ --nav-main-bar-item-height: calc(
174
+ (var(--font-size) * var(--font-line-height)) +
175
+ (var(--space-unit) * var(--nav-main-bar-item-space-y) * 2)
33
176
  );
177
+ --nav-main-menu-space-t: var(--space-sm);
178
+ --nav-main-menu-space-b: var(--space-normal);
179
+ --nav-main-height: var(--nav-main-bar-item-height);
180
+
181
+ /**
182
+ * @location variables.global.nav-main Main navigation
183
+ */
184
+ --scroll-padding-top: var(--nav-main-height);
34
185
 
35
186
  color-scheme: light;
36
187
  }
188
+
37
189
  * {
38
190
  box-sizing: border-box;
39
- margin: 0;
40
191
  }
41
- *::after, *::before {
192
+
193
+ *::after,
194
+ *::before {
42
195
  box-sizing: inherit;
43
196
  }
197
+
44
198
  ::-moz-selection {
45
199
  color: rgb(var(--selection-color));
46
- background-color: rgb(var(--selection-bg-color));
200
+ background: rgb(var(--selection-bg-color));
47
201
  }
202
+
48
203
  ::selection {
49
204
  color: rgb(var(--selection-color));
50
- background-color: rgb(var(--selection-bg-color));
205
+ background: rgb(var(--selection-bg-color));
51
206
  }
207
+
208
+ html {
209
+ scroll-behavior: smooth;
210
+ scroll-padding-top: var(--scroll-padding-top, 0);
211
+ }
212
+
52
213
  body {
53
- background-color: rgb(var(--bg-color));
214
+ margin: 0;
215
+ background: rgb(var(--bg-color));
54
216
  }
217
+
218
+ /**
219
+ * @location resets.typography Typography
220
+ */
221
+
222
+ /**
223
+ * @location resets.typography.font Font Style
224
+ * @example
225
+ * <div style="font-weight: bold;">Bold | bold | 700</div>
226
+ * <div style="font-weight: normal;">Normal | normal | 400</div>
227
+ * <div style="font-weight: bold; font-style: italic;">Bold Italic</div>
228
+ * <div style="font-weight: normal; font-style: italic;">Normal Italic</div>
229
+ * @hideCode
230
+ */
231
+
55
232
  html {
56
233
  font-size: var(--font-size-base);
57
234
  -webkit-font-smoothing: antialiased;
@@ -61,140 +238,507 @@ html {
61
238
  text-size-adjust: 100%;
62
239
  word-break: break-word;
63
240
  }
64
- body, .font, .control {
241
+
242
+ body,
243
+ .font,
244
+ .control,
245
+ .btn {
65
246
  font-family: var(--font-family);
66
247
  font-size: var(--font-size);
67
248
  font-weight: var(--font-weight);
68
249
  line-height: var(--font-line-height);
69
250
  color: rgb(var(--font-color));
70
251
  }
71
- button, input, optgroup, select, textarea {
252
+
253
+ button,
254
+ input,
255
+ optgroup,
256
+ select,
257
+ textarea {
72
258
  font-family: inherit;
73
259
  }
74
- h1, h2, h3, h4, h5, h6 {
260
+
261
+ /**
262
+ * You can use html headline tags or the class `.headline` to define headlines. The hedline class comes in handy if you want to display
263
+ * a headline without the semantic meaning of a headline tag.
264
+ *
265
+ * @location resets.typography.headlines Headlines
266
+ * @example
267
+ * <h1>Headline h1</h1>
268
+ * <h2>Headline h2</h2>
269
+ * <h3>Headline h3</h3>
270
+ * <h4>Headline h4</h4>
271
+ * <h5>Headline h5</h5>
272
+ * <h6>Headline h6</h6>
273
+ * <span class="headline h1">Class Headline h1</span>
274
+ * <span class="headline h2">Class Headline h2</span>
275
+ * <span class="headline h3">Class Headline h3</span>
276
+ * <span class="headline h4">Class Headline h4</span>
277
+ * <span class="headline h5">Class Headline h5</span>
278
+ * <span class="headline h6">Class Headline h6</span>
279
+ */
280
+
281
+ h1,
282
+ h2,
283
+ h3,
284
+ h4,
285
+ h5,
286
+ h6,
287
+ .headline {
288
+ display: block;
289
+
290
+ margin-top: calc(var(--font-space-unit) * var(--headline-space, var(--space-normal)));
291
+ margin-bottom: 0;
292
+
75
293
  font-family: var(--headline-family, inherit);
76
294
  font-size: calc(var(--font-size-normal) * var(--headline-scale, 1));
77
- font-weight: var(--headline-weight, inherit);
295
+ font-weight: var(--headline-weight, var(--font-weight-bold));
78
296
  line-height: var(--headline-line-height, inherit);
79
297
  color: rgb(var(--headline-color, inherit));
80
298
  }
81
- h1 {
299
+
300
+ h1,
301
+ .headline.h1 {
82
302
  --headline-scale: 2.5;
83
303
  }
84
- h2 {
304
+
305
+ h2,
306
+ .headline.h2 {
85
307
  --headline-scale: 2;
86
308
  }
87
- h3 {
309
+
310
+ h3,
311
+ .headline.h3 {
88
312
  --headline-scale: 1.75;
89
313
  }
90
- h4 {
314
+
315
+ h4,
316
+ .headline.h4 {
91
317
  --headline-scale: 1.5;
92
318
  }
319
+
320
+ h5,
321
+ .headline.h5 {
322
+ --headline-scale: 1.2;
323
+ }
324
+
325
+ h6,
326
+ .headline.h6 {
327
+ --headline-scale: 1.1;
328
+ }
329
+
330
+ /**
331
+ * You can use the `.no-space` class to remove the margin from the headline class.
332
+ *
333
+ * @location resets.typography.headlines.no-space Headlines without space
334
+ * @example
335
+ * <span class="headline h1 no-space">Class Headline h1</span>
336
+ * <span class="headline h2 no-space">Class Headline h2</span>
337
+ */
338
+
339
+ .headline.no-space {
340
+ --headline-space: 0;
341
+ }
342
+
343
+ /**
344
+ * @location resets.typography.text Text / Paragraph
345
+ * @example
346
+ * <p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. </p>
347
+ * <p>Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.</p>
348
+ * <p>Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.</p>
349
+ */
350
+
351
+ /* p {} */
352
+
353
+ /**
354
+ * @location resets.typography.link Link
355
+ * @example
356
+ * <a href="#">Link Text</a>
357
+ */
358
+
93
359
  a {
94
360
  color: rgb(var(--link-color, inherit));
95
- -webkit-text-decoration: var(--link-decoration, none);
96
- text-decoration: var(--link-decoration, none);
361
+ -webkit-text-decoration: var(--link-decoration, underline);
362
+ text-decoration: var(--link-decoration, underline);
363
+ transition: color ease var(--link-animation-time, var(--animation-time)) text-decoration ease
364
+ var(--link-animation-time, var(--animation-time));
97
365
  }
98
- b, strong {
366
+
367
+ a:hover {
368
+ --link-color: var(--link-hover-color, var(--accent-color));
369
+ --link-decoration: var(--link-hover-decoration, none);
370
+ }
371
+
372
+ /**
373
+ * @location resets.typography.format Format
374
+ * @example
375
+ * <span>Normal Text</span><br>
376
+ * <strong>Strong Text</strong><br>
377
+ * <small>Small Text</small><br>
378
+ * <em>Emphasis Text</em><br>
379
+ * <i>Italic Text</i>
380
+ */
381
+
382
+ b,
383
+ strong {
99
384
  --font-weight: var(--font-weight-bold);
100
385
  }
386
+
101
387
  small {
102
388
  --font-size: var(--font-size-sm);
103
389
  }
104
- .bg, .nav-main {
390
+
391
+ /**
392
+ * Utility classes are building the base of all styles. They can be applyed everywhere to modify/control one specific thing.
393
+ *
394
+ * @page utils Utilities
395
+ * @order 30
396
+ */
397
+
398
+ /**
399
+ * The `.bg` class can be used to set backgrounds, depending on the selected
400
+ * variant css variables will be changed, so all colors used inside will fit to
401
+ * the background.
402
+ *
403
+ * @location utils.background Background
404
+ */
405
+
406
+ .bg {
105
407
  --selection-bg-color: var(--font-color);
106
408
  --selection-color: var(--bg-color);
107
409
 
108
410
  color: rgb(var(--font-color));
109
411
  background: rgb(var(--bg-color));
110
412
  }
111
- .tc {
112
- color: rgb(var(--font-color));
113
- }
114
- .padding, .pxy, .control {
115
- padding: var(--pt, var(--size-normal)) var(--pr, var(--size-normal)) var(--pb, var(--size-normal))
116
- var(--pl, var(--size-normal));
413
+
414
+ /**
415
+ * Using `padding` to add paddings top, right, bottom and left to your element.
416
+ * Possible variables are:
417
+ * - **--[space]** - set direclty a spacing unit
418
+ * - **--space-[space]** - set a predefined space
419
+ *
420
+ * Possible <spaces> are:
421
+ * - **pt** - padding-top
422
+ * - **pr** - padding-right
423
+ * - **pb** - padding-bottom
424
+ * - **pl** - padding-left
425
+ *
426
+ * @location utils.padding Padding
427
+ * @example
428
+ * <div class="padding bg bg-black"><div class="bg bg-white">text</div></div>
429
+ */
430
+
431
+ .padding,
432
+ .pxy {
433
+ padding: var(--pt, calc(var(--space-unit) * var(--space-pt, var(--space-normal))))
434
+ var(--pr, calc(var(--space-unit) * var(--space-pr, var(--space-normal))))
435
+ var(--pb, calc(var(--space-unit) * var(--space-pb, var(--space-normal))))
436
+ var(--pl, calc(var(--space-unit) * var(--space-pl, var(--space-normal))));
117
437
  }
118
- .pt, .py {
119
- padding-top: var(--pt, var(--size-normal));
438
+
439
+ /**
440
+ * Using `pt` to add padding top to your element.
441
+ * Possible variables are:
442
+ * - **--pt** - set direclty a spacing unit
443
+ * - **--space-pt** - set a predefined space
444
+ *
445
+ * @location utils.padding.top Padding top
446
+ * @example
447
+ * <div class="pt bg bg-black"><div class="bg bg-white">text</div></div>
448
+ */
449
+
450
+ .pt,
451
+ .py {
452
+ padding-top: var(--pt, calc(var(--space-unit) * var(--space-pt, var(--space-normal))));
120
453
  }
121
- .pr, .px {
122
- padding-right: var(--pr, var(--size-normal));
454
+
455
+ /**
456
+ * Using `pr` to add padding right to your element.
457
+ * Possible variables are:
458
+ * - **--pr** - set direclty a spacing unit
459
+ * - **--space-pr** - set a predefined space
460
+ *
461
+ * @location utils.padding.right Padding right
462
+ * @example
463
+ * <div class="pr bg bg-black"><div class="bg bg-white">text</div></div>
464
+ */
465
+
466
+ .pr,
467
+ .px {
468
+ padding-right: var(--pr, calc(var(--space-unit) * var(--space-pr, var(--space-normal))));
123
469
  }
124
- .pb, .py {
125
- padding-bottom: var(--pb, var(--size-normal));
470
+
471
+ /**
472
+ * Using `pb` to add padding bottom to your element.
473
+ * Possible variables are:
474
+ * - **--pb** - set direclty a spacing unit
475
+ * - **--space-pb** - set a predefined space
476
+ *
477
+ * @location utils.padding.bottom Padding bottom
478
+ * @example
479
+ * <div class="pb bg bg-black"><div class="bg bg-white">text</div></div>
480
+ */
481
+
482
+ .pb,
483
+ .py {
484
+ padding-bottom: var(--pb, calc(var(--space-unit) * var(--space-pb, var(--space-normal))));
126
485
  }
127
- .pl, .px {
128
- padding-left: var(--pl, var(--size-normal));
486
+
487
+ /**
488
+ * Using `pl` to add padding left to your element.
489
+ * Possible variables are:
490
+ * - **--pl** - set direclty a spacing unit
491
+ * - **--space-pl** - set a predefined space
492
+ *
493
+ * @location utils.padding.left Padding left
494
+ * @example
495
+ * <div class="pl bg bg-black"><div class="bg bg-white">text</div></div>
496
+ */
497
+
498
+ .pl,
499
+ .px {
500
+ padding-left: var(--pl, calc(var(--space-unit) * var(--space-pl, var(--space-normal))));
129
501
  }
130
- .pxy, .control {
131
- --pt: var(--py, var(--size-normal));
132
- --pb: var(--py, var(--size-normal));
133
- --pl: var(--px, var(--size-normal));
134
- --pr: var(--px, var(--size-normal));
502
+
503
+ /**
504
+ * Using `pxy` to add padding for the x and y axies to your element.
505
+ * Possible variables are:
506
+ * - **--[space]** - set direclty a spacing unit
507
+ * - **--space-[space]** - set a predefined space
508
+ *
509
+ * Possible <spaces> are:
510
+ * - **my** - padding-top and padding-bottom
511
+ * - **mx** - padding-left and padding-right
512
+
513
+ * @location utils.padding.xy padding y-axis and x-axis
514
+ * @example
515
+ * <div class="pxy bg bg-black"><div class="bg bg-white">text</div></div>
516
+ */
517
+
518
+ .pxy {
519
+ --pt: var(--py, calc(var(--space-unit) * var(--space-py, var(--space-normal))));
520
+ --pb: var(--py, calc(var(--space-unit) * var(--space-py, var(--space-normal))));
521
+ --pl: var(--px, calc(var(--space-unit) * var(--space-px, var(--space-normal))));
522
+ --pr: var(--px, calc(var(--space-unit) * var(--space-px, var(--space-normal))));
135
523
  }
524
+
525
+ /**
526
+ * Using `py` to add paddings tob and bottom with same size to your element.
527
+ * Possible variables are:
528
+ * - **--py** - set direclty a spacing unit
529
+ * - **--space-py** - set a predefined space
530
+ *
531
+ * @location utils.padding.y Padding y-axis
532
+ * @example
533
+ * <div class="py bg bg-black"><div class="bg bg-white">text</div></div>
534
+ */
535
+
136
536
  .py {
137
- --pt: var(--py, var(--size-normal));
138
- --pb: var(--py, var(--size-normal));
537
+ --pt: var(--py, calc(var(--space-unit) * var(--space-py, var(--space-normal))));
538
+ --pb: var(--py, calc(var(--space-unit) * var(--space-py, var(--space-normal))));
139
539
  }
540
+
541
+ /**
542
+ * Using `px` to add paddings left and right with same size to your element.
543
+ * Possible variables are:
544
+ * - **--px** - set direclty a spacing unit
545
+ * - **--space-px** - set a predefined space
546
+ *
547
+ * @location utils.padding.x Padding x-axis
548
+ * @example
549
+ * <div class="px bg bg-black"><div class="bg bg-white">text</div></div>
550
+ */
551
+
140
552
  .px {
141
- --pl: var(--px, var(--size-normal));
142
- --pr: var(--px, var(--size-normal));
553
+ --pl: var(--px, calc(var(--space-unit) * var(--space-px, var(--space-normal))));
554
+ --pr: var(--px, calc(var(--space-unit) * var(--space-px, var(--space-normal))));
143
555
  }
144
- .margin, .mxy {
145
- margin: var(--mt, var(--size-normal)) var(--mr, var(--size-normal)) var(--mb, var(--size-normal))
146
- var(--ml, var(--size-normal));
556
+
557
+ /**
558
+ * Using `margin` to add margins top, right, bottom and left to your element.
559
+ * Possible variables are:
560
+ * - **--[space]** - set direclty a spacing unit
561
+ * - **--space-[space]** - set a predefined space
562
+ *
563
+ * Possible <spaces> are:
564
+ * - **mt** - margin-top
565
+ * - **mr** - margin-right
566
+ * - **mb** - margin-bottom
567
+ * - **ml** - margin-left
568
+ *
569
+ * @location utils.margin Margin
570
+ * @example
571
+ * <div class="bg bg-black" style="display: flow-root;">
572
+ * <div class="margin bg bg-white">text</div>
573
+ * </div>
574
+ */
575
+
576
+ .margin,
577
+ .mxy {
578
+ margin: var(--mt, calc(var(--space-unit) * var(--space-mt, var(--space-normal))))
579
+ var(--mr, calc(var(--space-unit) * var(--space-mr, var(--space-normal))))
580
+ var(--mb, calc(var(--space-unit) * var(--space-mb, var(--space-normal))))
581
+ var(--ml, calc(var(--space-unit) * var(--space-ml, var(--space-normal))));
147
582
  }
148
- .mt, .my {
149
- margin-top: var(--mt, var(--size-normal));
583
+
584
+ /**
585
+ * Using `mt` to add margin top to your element.
586
+ * Possible variables are:
587
+ * - **--mt** - set direclty a spacing unit
588
+ * - **--space-mt** - set a predefined space
589
+ *
590
+ * @location utils.margin.top Margin top
591
+ * @example
592
+ * <div class="bg bg-black" style="display: flow-root;">
593
+ * <div class="mt bg bg-white">text</div>
594
+ * </div>
595
+ */
596
+
597
+ .mt,
598
+ .my {
599
+ margin-top: var(--mt, calc(var(--space-unit) * var(--space-mt, var(--space-normal))));
150
600
  }
151
- .mr, .mx {
152
- margin-right: var(--mr, var(--size-normal));
601
+
602
+ /**
603
+ * Using `mr` to add margin right to your element.
604
+ * Possible variables are:
605
+ * - **--mr** - set direclty a spacing unit
606
+ * - **--space-mr** - set a predefined space
607
+ *
608
+ * @location utils.margin.right Margin right
609
+ * @example
610
+ * <div class="bg bg-black" style="display: flow-root;">
611
+ * <div class="mr bg bg-white">text</div>
612
+ * </div>
613
+ */
614
+
615
+ .mr,
616
+ .mx {
617
+ margin-right: var(--mr, calc(var(--space-unit) * var(--space-mr, var(--space-normal))));
153
618
  }
154
- .mb, .my {
155
- margin-bottom: var(--mb, var(--size-normal));
619
+
620
+ /**
621
+ * Using `mb` to add margin bottom to your element.
622
+ * Possible variables are:
623
+ * - **--mb** - set direclty a spacing unit
624
+ * - **--space-mb** - set a predefined space
625
+ *
626
+ * @location utils.margin.bottom Margin bottom
627
+ * @example
628
+ * <div class="bg bg-black" style="display: flow-root;">
629
+ * <div class="mb bg bg-white">text</div>
630
+ * </div>
631
+ */
632
+
633
+ .mb,
634
+ .my {
635
+ margin-bottom: var(--mb, calc(var(--space-unit) * var(--space-mb, var(--space-normal))));
156
636
  }
157
- .ml, .mx {
158
- margin-left: var(--ml, var(--size-normal));
637
+
638
+ /**
639
+ * Using `ml` to add margin left to your element.
640
+ * Possible variables are:
641
+ * - **--ml** - set direclty a spacing unit
642
+ * - **--space-ml** - set a predefined space
643
+ *
644
+ * @location utils.margin.left Margin left
645
+ * @example
646
+ * <div class="bg bg-black" style="display: flow-root;">
647
+ * <div class="ml bg bg-white">text</div>
648
+ * </div>
649
+ */
650
+
651
+ .ml,
652
+ .mx {
653
+ margin-left: var(--ml, calc(var(--space-unit) * var(--space-ml, var(--space-normal))));
159
654
  }
655
+
656
+ /**
657
+ * Using `mxy` to add margin for the x and y axies to your element.
658
+ * Possible variables are:
659
+ * - **--[space]** - set direclty a spacing unit
660
+ * - **--space-[space]** - set a predefined space
661
+ *
662
+ * Possible <spaces> are:
663
+ * - **my** - margin-top and margin-bottom
664
+ * - **mx** - margin-left and margin-right
665
+
666
+ * @location utils.margin.xy Margin y-axis and x-axis
667
+ * @example
668
+ * <div class="bg bg-black" style="display: flow-root;">
669
+ * <div class="mxy bg bg-white">text</div>
670
+ * </div>
671
+ */
672
+
160
673
  .mxy {
161
- --mt: var(--my, var(--size-normal));
162
- --mb: var(--my, var(--size-normal));
163
- --ml: var(--mx, var(--size-normal));
164
- --mr: var(--mx, var(--size-normal));
674
+ --mt: var(--my, calc(var(--space-unit) * var(--space-my, var(--space-normal))));
675
+ --mb: var(--my, calc(var(--space-unit) * var(--space-my, var(--space-normal))));
676
+ --ml: var(--mx, calc(var(--space-unit) * var(--space-mx, var(--space-normal))));
677
+ --mr: var(--mx, calc(var(--space-unit) * var(--space-mx, var(--space-normal))));
165
678
  }
679
+
680
+ /**
681
+ * Using `my` to add margins tob and bottom with same size to your element.
682
+ * Possible variables are:
683
+ * - **--my** - set direclty a spacing unit
684
+ * - **--space-my** - set a predefined space
685
+ *
686
+ * @location utils.margin.y Margin y-axis
687
+ * @example
688
+ * <div class="bg bg-black" style="display: flow-root;">
689
+ * <div class="my bg bg-white">text</div>
690
+ * </div>
691
+ */
692
+
166
693
  .my {
167
- --mt: var(--my, var(--size-normal));
168
- --mb: var(--my, var(--size-normal));
694
+ --mt: var(--my, calc(var(--space-unit) * var(--space-my, var(--space-normal))));
695
+ --mb: var(--my, calc(var(--space-unit) * var(--space-my, var(--space-normal))));
169
696
  }
697
+
698
+ /**
699
+ * Using `mx` to add margins left and right with same size to your element.
700
+ * Possible variables are:
701
+ * - **--mx** - set direclty a spacing unit
702
+ * - **--space-mx** - set a predefined space
703
+ *
704
+ * @location utils.margin.x Margin x-axis
705
+ * @example
706
+ * <div class="bg bg-black" style="display: flow-root;">
707
+ * <div class="mx bg bg-white">text</div>
708
+ * </div>
709
+ */
710
+
170
711
  .mx {
171
- --ml: var(--mx, var(--size-normal));
172
- --mr: var(--mx, var(--size-normal));
712
+ --ml: var(--mx, calc(var(--space-unit) * var(--space-mx, var(--space-normal))));
713
+ --mr: var(--mx, calc(var(--space-unit) * var(--space-mx, var(--space-normal))));
173
714
  }
174
- [class*="width-"] {
175
- --width-calc: max(
176
- var(--width-min-space-x, 32px),
177
- calc((100% - var(--width-content, 1280px)) / 2)
178
- );
179
715
 
180
- padding-inline: var(--width-calc);
181
- }
182
- .width-content {
183
- --width-content: 1280px;
184
- }
185
- .width-full {
186
- --width: 100%;
187
- }
188
- .control {
189
- --px: 0;
190
- --py: 0;
716
+ /**
717
+ * The `.control` class is used as base for all controls either by extending or using the class directly.
718
+ *
719
+ * @location utils.control Control
720
+ * @example
721
+ * <a class="control">Link control</a><br>
722
+ * <button type="button" class="control">Button control</button><br>
723
+ * <button type="button" class="control" disabled>Button control disabeled</button><br>
724
+ * <button type="button" class="control no-hover">Disable hover effect</button><br>
725
+ */
726
+
727
+ .control,
728
+ .btn {
729
+ --space-px: 0;
730
+ --space-py: 0;
191
731
 
192
732
  cursor: pointer;
193
733
 
194
734
  display: inline-block;
195
735
 
736
+ padding: var(--py, calc(var(--space-unit) * var(--space-py)))
737
+ var(--px, calc(var(--space-unit) * var(--space-px)));
738
+
196
739
  text-align: center;
197
740
  text-decoration: none;
741
+ word-break: keep-all;
198
742
 
199
743
  -webkit-appearance: none;
200
744
 
@@ -206,271 +750,646 @@ small {
206
750
  border-radius: unset;
207
751
  outline: none;
208
752
  }
209
- .control[aria-disabled="true"], .control:disabled {
753
+
754
+ .control:hover:not([aria-disabled="true"], [disabled], .btn[class*="bg-"], .no-hover), .btn:hover:not([aria-disabled="true"], [disabled], .btn[class*="bg-"], .no-hover) {
755
+ --font-color: var(--control-hover-color, var(--accent-color));
756
+ }
757
+
758
+ .control[aria-disabled="true"],
759
+ .control:disabled,
760
+ .btn[aria-disabled="true"],
761
+ .btn:disabled {
210
762
  cursor: not-allowed;
211
763
  }
212
- .example, .markup {
213
- border: 1px solid rgb(var(--code-border-color, var(--border-color)));
764
+
765
+ /**
766
+ * Limit width of content. Use the `--width-content` variable to set the width and the `--width-min-offset-x` to
767
+ * set the minimum required space on the left and right side. If you want to offset the content a little bit but
768
+ * keep the same settings from `--width-content` and `--width-min-offset-x` you can use the `--width-content-offset`
769
+ * variable.
770
+ *
771
+ * @location utils.width Width (Content)
772
+ */
773
+
774
+ [class^="width-"],
775
+ [class*=" width-"] {
776
+ /* use padding to get content to a specific width https://css-tricks.com/using-max-for-an-inner-element-max-width/ */
777
+ --width-calc: max(
778
+ calc(var(--width-min-offset-x) - var(--width-content-offset, 0px)),
779
+ calc((100% - var(--width-content)) / 2 - var(--width-content-offset, 0px))
780
+ );
781
+
782
+ padding-inline: var(--width-calc);
214
783
  }
215
- .example, .markup > .code > .hljs {
216
- padding: 1em;
784
+
785
+ /**
786
+ * @location utils.width.content Width base/default
787
+ * @example
788
+ * <div class="width-content">
789
+ * <div class="bg bg-black" style="min-height: 1em"></div>
790
+ * </div>
791
+ */
792
+
793
+ /* .width-content {} */
794
+
795
+ /**
796
+ * @location utils.width.small Width small
797
+ * @example
798
+ * <div class="width-sm">
799
+ * <div class="bg bg-black" style="min-height: 1em"></div>
800
+ * </div>
801
+ */
802
+
803
+ .width-sm {
804
+ --width-content: var(--width-sm);
217
805
  }
218
- .example {
219
- display: flex;
806
+
807
+ /**
808
+ * Objects are build out of objects and define style for it's inner children.
809
+ *
810
+ * @page components Components
811
+ * @order 40
812
+ */
813
+
814
+ /**
815
+ * Buttons extend the `.control` class and can be used with different html attributes.
816
+ *
817
+ * @location components.button Button
818
+ * @example
819
+ * <button class="btn">Button</button>
820
+ * <button class="btn" disabled>Button disabled</button>
821
+ * <a href="#" class="btn">Link Button</a>
822
+ * <input type="submit" class="btn" value="Submit button" />
823
+ */
824
+
825
+ .btn {
826
+ --space-py: var(--btn-space-py, var(--space-xs));
827
+ --space-px: var(--btn-space-px, var(--space-sm));
828
+ --font-size: var(--btn-font-size, var(--font-size-normal));
829
+ --font-weight: var(--btn-font-weight, var(--font-weight-bold));
830
+
831
+ color: rgb(var(--btn-font-color, var(--font-color)));
832
+ background: rgb(var(--btn-bg-color, var(--bg-color)));
833
+ transition: all ease var(--btn-animation-time, var(--animation-time));
220
834
  }
221
- .example > iframe {
222
- width: 100%;
223
- border: none;
224
- }
225
- .markup {
226
- font-size: var(--font-size-xs);
835
+
836
+ /**
837
+ * We are using the bg colors to modify the btn color. In combination with the accent color for hover effects.
838
+ *
839
+ * @location components.button.colors Colors
840
+ * @example
841
+ * <button class="btn bg-white">Button</button>
842
+ * <button class="btn bg-black">Button</button>
843
+ */
844
+
845
+ .btn[class*="bg-"]:hover:not([aria-disabled="true"], [disabled], .no-hover) {
846
+ --btn-bg-color: var(--accent-color);
227
847
  }
228
- .markup > .code {
229
- margin: 0;
848
+
849
+ /**
850
+ * The hover effect when using bg colors is disabled when using disabled attributes. Or you can manually disable it with `.no-hover`.
851
+ *
852
+ * @location components.button.colors.hover Hover effect
853
+ * @example
854
+ * <button class="btn bg-black" aria-disabled="true">Disabled by aria</button>
855
+ * <button class="btn bg-black" disabled>Disabled</button>
856
+ * <button class="btn bg-black no-hover">No hover</button>
857
+ */
858
+
859
+ /**
860
+ * You can use the container class to wrap your content in a container.
861
+ *
862
+ * @location components.container Container
863
+ * @code
864
+ * <div class="container"></div>
865
+ */
866
+
867
+ .container > *:first-child {
868
+ margin-top: 0;
230
869
  }
231
- .example + .markup {
232
- margin-top: 0;
233
- border-top: none;
234
- }
235
- .text-flow > * + * {
236
- margin-top: var(--text-flow-space, 1em);
870
+
871
+ .container > *:last-child {
872
+ margin-bottom: 0;
237
873
  }
238
- .nav-main > .bar {
239
- height: var(--nav-main-height);
874
+
875
+ /**
876
+ * Use the auto grid class to define your custom grid layouts. Please note, all columns will have the same width.
877
+ * We are using css variables to define the grid:
878
+ * - `--grid-columns` (required): define how many columns your grid should have
879
+ * - `--grid-item-min-width` (required): define the min width of the containing items, when you use a count of 4 and a item
880
+ * width of 200px but there are only 650px availabe only three columns will be used. All items won't get smaller as
881
+ * this number.
882
+ *
883
+ * Modify the gap of your grid:
884
+ * - `--gap-x` (optional): column (x-axis) gap - space between items - eg. 3rem
885
+ * - `--gap-y` (optional): row (y-axis) gap - space between items - eg. 3rem
886
+ * - `--gap` (optional): Define column (x-axis) and row (y-axis) gap - eg. 3rem
887
+ * - `--gap-space-x` (optional): Define column (x-axis) gap - use existing space variables - eg. var(--space-xs)
888
+ * - `--gap-space-y` (optional): Define row (y-axis) gap - use existing space variables - eg. var(--space-xs)
889
+ * - `--gap-space` (optional): Define column (x-axis) and row (y-axis) gap - use existing space variables - eg. var(--space-xs)
890
+ *
891
+ * If you need to redefine the gap in a inner auto grid you can use `unset` or `inital` as vairable value inn the inner grid to fallback to default.
892
+ *
893
+ * @location components.grid-auto Auto Grid
894
+ * @example
895
+ * <div class="grid-auto" style="--grid-columns: 3; --grid-item-min-width: 300px;">
896
+ * <div class="bg bg-black pxy"></div>
897
+ * <div class="bg bg-black pxy"></div>
898
+ * <div class="bg bg-black pxy"></div>
899
+ * <div class="bg bg-black pxy"></div>
900
+ * <div class="bg bg-black pxy"></div>
901
+ * </div>
902
+ */
903
+
904
+ .grid-auto {
905
+ /* https://css-tricks.com/an-auto-filling-css-grid-with-max-columns/ */
906
+ --grid-gap-x: var(
907
+ --gap-x,
908
+ var(--gap, calc(var(--space-unit) * var(--gap-space-x, var(--gap-space, var(--space-normal)))))
909
+ );
910
+ --grid-gap-y: var(
911
+ --gap-y,
912
+ var(--gap, calc(var(--space-unit) * var(--gap-space-y, var(--gap-space, var(--space-normal)))))
913
+ );
914
+ --grid-gap-count: calc(var(--grid-columns) - 1);
915
+ --grid-total-gap-width: calc(var(--grid-gap-count) * var(--grid-gap-x));
916
+ --grid-item-max-width: calc((100% - var(--grid-total-gap-width)) / var(--grid-columns));
917
+
918
+ display: grid;
919
+ grid-gap: var(--grid-gap-y) var(--grid-gap-x);
920
+ grid-template-columns: repeat(
921
+ auto-fill,
922
+ minmax(max(var(--grid-item-min-width), var(--grid-item-max-width)), 1fr)
923
+ );
240
924
  }
241
- .nav-main > .bar > .control.title {
242
- --px: var(--nav-main-menu-item-px);
243
- --py: var(--nav-main-menu-item-py);
244
- --font-weight: var(--font-weight-bold);
245
- }
246
- .nav-main > .menu {
925
+
926
+ /**
927
+ * @location components.navigation.burger-control Navigation Burger Control
928
+ * @example
929
+ * <nav class="nav">
930
+ * <button class="control burger" aria-label="Toggle Navigation" aria-expanded="false" aria-controls="target" style="--nav-burger-control-size: 3em; --space-px: .4; --space-py: .6">
931
+ * <span class="line"></span>
932
+ * <span class="line"></span>
933
+ * <span class="line"></span>
934
+ * </button>
935
+ * <div id="target" hidden>Controlled Area</div>
936
+ * </nav>
937
+ */
938
+
939
+ .nav-main .burger.control {
940
+ /* prettier-ignore */
941
+ --nav-burger-control-line-height-calc: var(--nav-burger-control-line-height, calc(
942
+ (
943
+ var(--nav-burger-control-size) -
944
+ (var(--py, calc(var(--space-unit) * var(--space-py))) * 2) -
945
+ (var(--nav-burger-control-line-space, var(--space-unit) / 2) * 2)
946
+ ) / 3
947
+ ));
948
+
949
+ position: relative;
950
+ width: calc(var(--nav-burger-control-size) * var(--nav-burger-control-width-multiplier, 1.4));
951
+ height: var(--nav-burger-control-size);
952
+ }
953
+
954
+ .nav-main .burger.control > .line {
247
955
  position: absolute;
956
+ top: 50%;
957
+ left: 50%;
958
+ transform: translate(-50%, -50%);
959
+
960
+ display: block;
961
+
962
+ width: calc(100% - var(--px, calc(var(--space-unit) * var(--space-px))) * 2);
963
+ height: var(--nav-burger-control-line-height-calc);
964
+
965
+ background: rgb(var(--font-color));
966
+
967
+ transition: all var(--nav-burger-animation-time, 0.3s) ease;
968
+ }
969
+
970
+ .nav-main .burger.control > .line:first-child {
971
+ transform: translate(
972
+ -50%,
973
+ calc(
974
+ -50% - var(--nav-burger-control-line-space, var(--space-unit) / 2) - var(--nav-burger-control-line-height-calc)
975
+ )
976
+ );
977
+ }
978
+
979
+ .nav-main .burger.control > .line:last-child {
980
+ transform: translate(
981
+ -50%,
982
+ calc(
983
+ -50% + var(--nav-burger-control-line-space, var(--space-unit) / 2) + var(--nav-burger-control-line-height-calc)
984
+ )
985
+ );
986
+ }
987
+
988
+ .nav-main .burger.control[aria-expanded="true"] > .line:first-child {
989
+ transform: translate(-50%, -50%) rotate(45deg);
990
+ }
991
+
992
+ .nav-main .burger.control[aria-expanded="true"] > .line:nth-child(2) {
993
+ display: none;
994
+ }
995
+
996
+ .nav-main .burger.control[aria-expanded="true"] > .line:last-child {
997
+ transform: translate(-50%, -50%) rotate(-45deg);
998
+ }
999
+
1000
+ .nav-main {
1001
+ --bg-color: var(--na-main-bg-color, var(--color-blue));
1002
+ --font-color: var(--nav-main-bg-color, var(--color-white));
1003
+ --accent-color: var(--nav-main-accent-color, var(--color-yellow));
1004
+
1005
+ position: sticky;
1006
+ z-index: 100;
248
1007
  top: 0;
249
- right: calc(var(--width-calc) - var(--nav-main-menu-item-px));
1008
+ }
250
1009
 
1010
+ .nav-main > .bar,
1011
+ .nav-main > .bar > .menu {
251
1012
  display: flex;
252
- flex-direction: row;
1013
+ gap: var(--nav-main-item-gap, calc(var(--space-unit) * var(--nav-main-item-gap-space, 0)));
1014
+ }
1015
+
1016
+ .nav-main > .bar {
1017
+ --width-content-offset: var(--nav-main-bar-item-space-x) * var(--space-unit);
253
1018
 
254
- height: var(--nav-main-height);
1019
+ container-name: nav-bar;
1020
+ container-type: inline-size;
1021
+ justify-content: center;
1022
+ background: rgb(var(--bg-color));
255
1023
  }
256
- .nav-main > .menu > .control {
257
- --px: var(--nav-main-menu-item-px);
258
- --py: var(--nav-main-menu-item-py);
259
- --font-size: var(--nav-main-menu-item-font-size);
1024
+
1025
+ .nav-main > .bar > .logo,
1026
+ .nav-main > .bar > .burger.control,
1027
+ .nav-main > .bar > .menu > .control {
1028
+ --space-px: var(--nav-main-bar-item-space-x);
1029
+ --space-py: var(--nav-main-bar-item-space-y);
1030
+ }
1031
+
1032
+ .nav-main > .bar > .logo {
1033
+ height: var(--nav-main-bar-item-height);
1034
+ }
1035
+
1036
+ .nav-main > .bar > .logo > svg {
1037
+ width: auto;
1038
+ height: 100%;
1039
+ }
1040
+
1041
+ .nav-main > .bar > .menu > .control {
260
1042
  --font-weight: var(--font-weight-bold);
1043
+
1044
+ display: block;
261
1045
  }
262
- .nav-main > .menu > .control[aria-current] {
1046
+
1047
+ .nav-main > .bar > .menu > .control[aria-current="page"] {
263
1048
  --font-color: var(--accent-color);
264
1049
  }
265
- .nav-main > .menu > .control:hover {
266
- text-decoration: underline;
1050
+
1051
+ @container nav-bar (width > 1000px) {
1052
+ .nav-main > .bar > .burger.control {
1053
+ display: none;
1054
+ }
1055
+
1056
+ .nav-main > .bar > .menu {
1057
+ margin-left: auto;
1058
+ }
1059
+ }
1060
+
1061
+ @container nav-bar (width <= 1000px) {
1062
+
1063
+ .nav-main > .bar {
1064
+ position: relative
1065
+ }
1066
+
1067
+ .nav-main > .bar > .burger.control {
1068
+ --nav-burger-control-size: var(--nav-main-bar-item-height);
1069
+
1070
+ margin-left: auto;
1071
+ }
1072
+
1073
+ .nav-main > .bar > .menu {
1074
+ position: absolute;
1075
+ top: calc(var(--nav-main-bar-item-height));
1076
+ left: 0;
1077
+
1078
+ overflow-y: auto;
1079
+ flex-direction: column;
1080
+
1081
+ width: 100%;
1082
+ max-height: calc(100vh - var(--nav-main-height));
1083
+ padding: calc(var(--space-unit) * var(--nav-main-menu-space-t)) var(--width-calc)
1084
+ calc(var(--space-unit) * var(--nav-main-menu-space-b));
1085
+
1086
+ opacity: 1;
1087
+ background: rgb(var(--bg-color));
1088
+ }
1089
+
1090
+ .nav-main > .bar > .menu.menu-show-enter-active,
1091
+ .nav-main > .bar > .menu.menu-show-leave-active {
1092
+ transition: opacity 0.3s ease-in-out;
1093
+ }
1094
+
1095
+ .nav-main > .bar > .menu.menu-show-enter-from,
1096
+ .nav-main > .bar > .menu.menu-show-leave-to {
1097
+ opacity: 0;
267
1098
  }
1099
+
1100
+ .nav-main > .bar > .menu[hidden],
1101
+ .nav-main > .bar > .burger.control[aria-expanded="false"] ~ .menu {
1102
+ display: none;
1103
+ }
1104
+ }
1105
+
268
1106
  .nav-list {
269
- --nav-list-item-px: var(--size-sm);
270
- --nav-list-item-py: var(--size-xs);
271
- --nav-list-item-border-color: var(--border-color);
1107
+ --nav-list-item-space-px: var(--space-sm);
1108
+ --nav-list-item-space-py: var(--space-xs);
1109
+ --nav-list-item-border-color: var(--border-color, var(--font-color));
272
1110
 
273
1111
  text-align: left;
274
1112
  }
1113
+
275
1114
  .nav-list ul {
276
1115
  margin: 0;
277
1116
  padding: 0;
278
1117
  list-style: none;
279
1118
  }
1119
+
280
1120
  .nav-list > ul > li + li {
281
1121
  margin-top: var(--nav-list-root-item-space, var(--size-sm));
282
1122
  }
1123
+
283
1124
  .nav-list .control.active {
284
- --font-color: var(--accent-color);
285
- }
1125
+ --font-color: var(--accent-color);
1126
+ }
1127
+
286
1128
  .nav-list > ul > li > .control {
287
- --py: var(--nav-list-item-py);
288
- --pr: var(--nav-list-item-px);
1129
+ --space-py: var(--nav-list-item-space-py);
1130
+ --space-pr: var(--nav-list-item-space-px);
289
1131
  --font-weight: var(--font-weight-bold);
290
1132
  --font-size: var(--font-size-md);
291
1133
  }
1134
+
292
1135
  .nav-list > ul > li > ul > li > .control {
293
- --py: var(--nav-list-item-py);
294
- --px: var(--nav-list-item-px);
1136
+ --space-py: var(--nav-list-item-space-py);
1137
+ --space-px: var(--nav-list-item-space-px);
295
1138
 
296
1139
  text-align: left;
297
1140
  border-left: 1px solid rgba(var(--nav-list-item-border-color) / var(--border-opacity, 0.1));
298
1141
  }
1142
+
299
1143
  .nav-list > ul > li > ul > li > .control:hover {
300
1144
  --border-opacity: 1;
301
1145
  }
302
- .colors {
303
- display: grid;
304
- grid-template-columns: repeat(var(--colors-columns, 1), 1fr);
305
- gap: var(--colors-gap, var(--size-normal));
1146
+
1147
+ .example,
1148
+ .markup {
1149
+ border: 1px solid rgb(var(--code-border-color, var(--border-color, var(--font-color))));
306
1150
  }
307
- @container content (width > 300px) {
308
- .colors {
309
- --colors-columns: 2
1151
+
1152
+ .example {
1153
+ display: flex;
310
1154
  }
1155
+
1156
+ .example > iframe {
1157
+ width: 100%;
1158
+ border: none;
311
1159
  }
312
- @container content (width > 620px) {
313
- .colors {
314
- --colors-columns: 3
1160
+
1161
+ .markup {
1162
+ font-size: var(--font-size-xs);
315
1163
  }
1164
+
1165
+ .markup > .code {
1166
+ margin: 0;
316
1167
  }
317
- @container content (width > 940px) {
1168
+
1169
+ .example + .markup {
1170
+ margin-top: 0;
1171
+ border-top: none;
1172
+ }
1173
+
318
1174
  .colors {
319
- --colors-columns: 4
1175
+ --grid-columns: 4;
1176
+ --grid-item-min-width: 200px;
320
1177
  }
321
- }
1178
+
322
1179
  .colors > .item {
1180
+ --space-px: var(--space-md);
1181
+ --space-py: var(--space-xl);
1182
+
323
1183
  display: flex;
324
1184
  flex-direction: column;
325
- gap: var(--size-xs);
1185
+ gap: calc(var(--space-xs) * var(--space-unit));
326
1186
  justify-content: center;
327
1187
 
328
- padding: var(--size-xl) var(--size-md);
329
-
330
1188
  text-align: center;
331
1189
 
332
- border: 1px solid rgb(var(--border-color, currentColor));
1190
+ border: 1px solid rgb(var(--border-color, var(--font-color)));
333
1191
  }
1192
+
334
1193
  .colors > .item > .text {
335
1194
  font-size: var(--font-size-md);
336
1195
  font-weight: var(--font-weight-bold);
337
1196
  }
1197
+
1198
+ .icons {
1199
+ --grid-columns: 4;
1200
+ --grid-item-min-width: 200px;
1201
+ }
1202
+
1203
+ .icons > .item {
1204
+ --space-px: var(--space-md);
1205
+ --space-py: var(--space-xl);
1206
+
1207
+ display: flex;
1208
+ flex-direction: column;
1209
+ gap: calc(var(--space-xs) * var(--space-unit));
1210
+ justify-content: center;
1211
+
1212
+ text-align: center;
1213
+
1214
+ border: 1px solid rgb(var(--border-color, var(--font-color)));
1215
+ }
1216
+
1217
+ .icons > .item > .show,
1218
+ .icons > .item > .show::before,
1219
+ .icons > .item > .text::before,
1220
+ .icons > .item > .text::after {
1221
+ font-family: var(--icons-font-family);
1222
+ }
1223
+
1224
+ .icons > .item > .show {
1225
+ font-size: var(--icons-show-font-size, 3em);
1226
+ }
1227
+
1228
+ .icons > .item > .name {
1229
+ font-weight: var(--font-weight-bold);
1230
+ }
1231
+
1232
+ .icons > .item.from-var > .show::before,
1233
+ .icons > .item.from-var > .text::before,
1234
+ .icons > .item.from-var > .text::after {
1235
+ content: var(--icon);
1236
+ }
1237
+
1238
+ .icons > .item.from-data > .text::before,
1239
+ .icons > .item.from-data > .text::after {
1240
+ content: attr(data-icon);
1241
+ }
1242
+
338
1243
  .spaces {
339
1244
  --spaces-bg-color: var(--font-color);
340
1245
  --spaces-font-color: var(--bg-color);
341
1246
 
342
1247
  display: flex;
343
1248
  flex-direction: column;
344
- gap: var(--spaces-gap, var(--size-xs));
1249
+ gap: var(--spaces-gap, calc(var(--spaces-gap-space, var(--space-xs)) * var(--space-unit)));
345
1250
  }
1251
+
346
1252
  .spaces > .item {
347
1253
  display: flex;
348
1254
  }
1255
+
349
1256
  .spaces > .item > .bg {
350
1257
  --bg-color: var(--spaces-bg-color);
351
1258
  --font-color: var(--spaces-font-color);
352
1259
  }
353
- .spaces > .item > div {
354
- padding: var(--size-sm) var(--size-normal);
1260
+
1261
+ .spaces > .item > .pxy {
1262
+ --space-px: var(--space-normal);
1263
+ --space-py: var(--space-xs);
355
1264
  }
1265
+
356
1266
  .spaces > .item > div:first-child {
357
- margin-right: var(--space-value);
1267
+ margin-right: calc(var(--space-value) * var(--space-unit));
358
1268
  }
359
- .spaces > .item > div:last-child {
1269
+
1270
+ .spaces > .item > .info {
360
1271
  display: flex;
361
1272
  }
362
- .spaces > .item > div:last-child > *:not(:last-child) {
363
- margin-right: var(--size-xs);
364
- padding-right: var(--size-xs);
1273
+
1274
+ .spaces > .item > .info > *:not(:last-child) {
1275
+ margin-right: calc(var(--space-xs) * var(--space-unit));
1276
+ padding-right: calc(var(--space-xs) * var(--space-unit));
365
1277
  border-right: 1px solid currentcolor;
366
1278
  }
367
- .spaces > .item > div:last-child > .name {
1279
+
1280
+ .spaces > .item > .info > .name {
368
1281
  font-weight: var(--font-weight-bold);
369
1282
  }
370
- .icons {
371
- display: grid;
372
- grid-template-columns: repeat(var(--icons-columns, 1), 1fr);
373
- gap: var(--icons-gap, var(--size-normal));
374
- }
375
- @container content (width > 300px) {
376
- .icons {
377
- --icons-columns: 2
378
- }
379
- }
380
- @container content (width > 620px) {
381
- .icons {
382
- --icons-columns: 3
383
- }
384
- }
385
- @container content (width > 940px) {
386
- .icons {
387
- --icons-columns: 4
388
- }
389
- }
390
- .icons > .item {
391
- display: flex;
392
- flex-direction: column;
393
- gap: var(--size-xs);
394
- justify-content: center;
395
1283
 
396
- padding: var(--size-xl) var(--size-md);
1284
+ /**
1285
+ * Layouts are the outermost layer of the design. They define the structure of the page.
1286
+ *
1287
+ * @page layout Layout
1288
+ * @order 50
1289
+ */
397
1290
 
398
- text-align: center;
399
-
400
- border: 1px solid rgb(var(--border-color));
401
- }
402
- .icons > .item > .show, .icons > .item > .show::before, .icons > .item > .text::before, .icons > .item > .text::after {
403
- font-family: var(--icons-font-family);
404
- }
405
- .icons > .item > .show {
406
- font-size: var(--icons-show-font-size, 3em);
407
- }
408
- .icons > .item > .name {
409
- font-weight: var(--font-weight-bold);
410
- }
411
- .icons > .item.from-var > .show::before, .icons > .item.from-var > .text::before, .icons > .item.from-var > .text::after {
412
- content: var(--icon);
413
- }
414
- .icons > .item.from-data > .text::before, .icons > .item.from-data > .text::after {
415
- content: attr(data-icon);
416
- }
417
1291
  html {
418
- scroll-behavior: smooth;
419
- scrollbar-gutter: stable;
420
- scroll-padding-top: var(--nav-main-height);
421
1292
  height: 100%;
422
1293
  }
423
- html > body {
1294
+
1295
+ html > body:has(.expand-full-height) {
1296
+ display: flex;
1297
+ flex-direction: column;
424
1298
  min-height: 100%;
425
1299
  }
426
- body > header {
427
- padding-top: var(--nav-main-height);
1300
+
1301
+ html > body:has(.expand-full-height) > .expand-full-height {
1302
+ flex: 1 1;
1303
+ }
1304
+
1305
+ html > body > footer {
1306
+ --bg-color: var(--footer-bg-color, var(--color-blue));
1307
+ --font-color: var(--footer-font-color, var(--color-white));
428
1308
  }
429
- body > header > .nav-main {
430
- position: fixed;
431
- z-index: 1000;
432
- top: 0;
433
- width: 100%;
1309
+
1310
+ html > body > footer > .text {
1311
+ text-align: right;
434
1312
  }
435
- body > main {
436
- --main-sidebar-width: 25ch;
437
- --main-content-sidebar-space: var(--size-xl);
438
1313
 
439
- position: relative;
1314
+ p > code {
1315
+ display: inline-block;
1316
+ padding: 0.1em 0.2em;
1317
+ color: rgb(var(--inline-code-font-color, var(--font-color)));
1318
+ background: rgb(var(--inline-code-bg-color, var(--color-gray)));
440
1319
  }
441
- body > main > .sidebar {
442
- position: absolute;
443
- top: 0;
444
- left: var(--width-calc);
445
1320
 
446
- width: var(--main-sidebar-width);
447
- height: 100%;
1321
+ body.page {
1322
+ --main-sidebar-width: 25ch;
1323
+ --main-content-sidebar-space: var(--space-xl);
1324
+ }
1325
+
1326
+ body.page > .content {
1327
+ --space-py: var(--space-xl);
448
1328
  }
449
- body > main > .sidebar > .scroll {
450
- position: sticky;
451
- top: var(--nav-main-height);
452
1329
 
453
- overflow-y: auto;
1330
+ body.page > .content .headline + .description {
1331
+ margin-top: calc(var(--page-headline-description-space, var(--space-md)) * var(--space-unit));
1332
+ }
1333
+
1334
+ body.page > .content > main > section + section {
1335
+ margin-top: calc(var(--page-content-section-space, var(--space-xl)) * var(--space-unit));
1336
+ }
454
1337
 
455
- height: 100%;
456
- max-height: calc(100vh - var(--nav-main-height));
1338
+ body.page > .content > main * + .example,
1339
+ body.page > .content > main *:not(.example) + .markup {
1340
+ margin-top: 1em;
457
1341
  }
458
- body > main > .content {
1342
+
1343
+ body.page > .content > main {
459
1344
  container-name: content;
460
1345
  container-type: inline-size;
461
- margin-left: calc(var(--main-sidebar-width) + var(--main-content-sidebar-space));
462
1346
  }
463
- body > main > .content > .headline + .description {
464
- margin-top: var(--size-md);
465
- }
466
- body > main > .content > section + section, body > main > .content > section:first-of-type {
467
- margin-top: var(--main-content-section-space, var(--size-lg));
1347
+
1348
+ @media screen and (width >= 1000px) {
1349
+ body.page > .content:has(> .sidebar) {
1350
+ display: grid;
1351
+ grid-template-columns: var(--main-sidebar-width) 1fr;
1352
+ grid-template-rows: auto 1fr;
1353
+ gap: var(
1354
+ --page-header-main-garp,
1355
+ calc(var(--page-header-main-space, var(--space-lg)) * var(--space-unit))
1356
+ )
1357
+ var(
1358
+ --page-content-sidebar-garp,
1359
+ calc(var(--page-content-sidebar-space, var(--space-xl)) * var(--space-unit))
1360
+ );
468
1361
  }
469
- footer {
470
- --mt: var(--size-xl);
1362
+
1363
+ body.page > .content:has(> .sidebar) > .sidebar {
1364
+ grid-column: 1 / span 1;
1365
+ grid-row: 1 / span 2;
1366
+ }
1367
+
1368
+ body.page > .content:has(> .sidebar) > header {
1369
+ grid-column: 2 / span 1;
1370
+ grid-row: 1 / span 1;
1371
+ }
1372
+
1373
+ body.page > .content:has(> .sidebar) > main {
1374
+ grid-column: 2 / span 1;
1375
+ grid-row: 2 / span 1;
1376
+ }
1377
+
1378
+ body.page > .content:has(> .sidebar) > .sidebar > .scrollbar {
1379
+ position: sticky;
1380
+ top: var(--nav-main-height);
1381
+
1382
+ overflow-y: auto;
1383
+
1384
+ height: 100%;
1385
+ max-height: calc(100vh - var(--nav-main-height));
1386
+ }
471
1387
  }
472
- footer > .text {
473
- text-align: right;
1388
+
1389
+ @media screen and (width < 1000px) {
1390
+ body.page > .content > .sidebar {
1391
+ display: none;
474
1392
  }
1393
+ }
475
1394
 
476
1395
  /*# sourceMappingURL=ui-doc.css.map */