@fest-lib/veela 0.1.1

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 (78) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +533 -0
  3. package/dist/veela.js +878 -0
  4. package/package.json +83 -0
  5. package/src/scss/_layers.scss +16 -0
  6. package/src/scss/advanced/_index.scss +0 -0
  7. package/src/scss/advanced/animation/_motion.scss +317 -0
  8. package/src/scss/advanced/color/_color.scss +328 -0
  9. package/src/scss/advanced/color/_colorize.scss +325 -0
  10. package/src/scss/advanced/design/_design-tokens.scss +118 -0
  11. package/src/scss/advanced/design/_effects.scss +275 -0
  12. package/src/scss/advanced/design/_shadow.scss +359 -0
  13. package/src/scss/advanced/design/_surfaces.scss +76 -0
  14. package/src/scss/advanced/effects/_animations.scss +124 -0
  15. package/src/scss/advanced/effects/_shadows.scss +50 -0
  16. package/src/scss/advanced/font/_typography.scss +600 -0
  17. package/src/scss/advanced/index.scss +11 -0
  18. package/src/scss/advanced/index.ts +35 -0
  19. package/src/scss/advanced/layout/_content.scss +170 -0
  20. package/src/scss/advanced/layout/_index.scss +5 -0
  21. package/src/scss/advanced/layout/_normalize.scss +541 -0
  22. package/src/scss/advanced/layout/_shared-overlays.scss +162 -0
  23. package/src/scss/advanced/md3/_md3.scss +596 -0
  24. package/src/scss/advanced/md3/_utils.scss +114 -0
  25. package/src/scss/advanced/misc/_config.scss +119 -0
  26. package/src/scss/advanced/misc/_initials.scss +298 -0
  27. package/src/scss/advanced/misc/_mixins.scss +179 -0
  28. package/src/scss/advanced/misc/_queries.scss +34 -0
  29. package/src/scss/advanced/misc/_rendering.scss +82 -0
  30. package/src/scss/advanced/misc/_tokens.scss +74 -0
  31. package/src/scss/advanced/theme/_shared.scss +232 -0
  32. package/src/scss/advanced/theme/_states.scss +332 -0
  33. package/src/scss/advanced/theme/_variants.scss +354 -0
  34. package/src/scss/advanced/tokens/_material-color.scss +120 -0
  35. package/src/scss/advanced/tokens/_variables.scss +171 -0
  36. package/src/scss/basic/_layers.scss +0 -0
  37. package/src/scss/basic/design/_index.scss +3 -0
  38. package/src/scss/basic/design/_keyframes.scss +163 -0
  39. package/src/scss/basic/design/_shapes.scss +266 -0
  40. package/src/scss/basic/design/_wavy-runtime.scss +50 -0
  41. package/src/scss/basic/index.scss +19 -0
  42. package/src/scss/basic/index.ts +29 -0
  43. package/src/scss/basic/misc/_core-layout.scss +272 -0
  44. package/src/scss/basic/misc/_index.scss +18 -0
  45. package/src/scss/basic/misc/_layout.scss +1040 -0
  46. package/src/scss/basic/misc/_mixins.scss +179 -0
  47. package/src/scss/basic/misc/_motion.scss +28 -0
  48. package/src/scss/basic/misc/_normalize.scss +765 -0
  49. package/src/scss/basic/misc/_queries.scss +34 -0
  50. package/src/scss/basic/misc/_shared.scss +232 -0
  51. package/src/scss/basic/misc/_states.scss +135 -0
  52. package/src/scss/basic/misc/_tokens.scss +78 -0
  53. package/src/scss/basic/misc/_veela.scss +12 -0
  54. package/src/scss/core/index.scss +1 -0
  55. package/src/scss/core/interact/_draggable.scss +32 -0
  56. package/src/scss/core/interact/_position.scss +45 -0
  57. package/src/scss/core/interact/_ps-anchor.scss +28 -0
  58. package/src/scss/core/interact/_ps-centered.scss +28 -0
  59. package/src/scss/core/interact/_ps-cursor.scss +18 -0
  60. package/src/scss/core/interact/_ps-draggable.scss +25 -0
  61. package/src/scss/core/interact/_ps-mechanic.scss +0 -0
  62. package/src/scss/core/interact/_ps-properties.scss +54 -0
  63. package/src/scss/core/interact/_ps-resizable.scss +61 -0
  64. package/src/scss/core/interact/_resizable.scss +69 -0
  65. package/src/scss/core/interact/_viewport.scss +469 -0
  66. package/src/scss/core/misc/_color-properties.scss +64 -0
  67. package/src/scss/core/misc/_config.scss +110 -0
  68. package/src/scss/core/misc/_functions.scss +530 -0
  69. package/src/scss/core/misc/_icons.scss +109 -0
  70. package/src/scss/core/misc/_index.scss +6 -0
  71. package/src/scss/core/misc/_layout.scss +49 -0
  72. package/src/scss/core/misc/_mixins.scss +744 -0
  73. package/src/scss/core/misc/_properties.scss +245 -0
  74. package/src/scss/core/misc/_tokens.scss +947 -0
  75. package/src/scss/core/misc/_utilities.scss +941 -0
  76. package/src/scss/core/misc/_utils.scss +17 -0
  77. package/src/scss/index.scss +18 -0
  78. package/src/scss/index.ts +105 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 ⚙️ FE-ST ⚙️
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,533 @@
1
+ # 🌸 Veela.CSS 🌸
2
+
3
+ ---
4
+
5
+ ## 🛠️ Implementation Details
6
+
7
+ - **Transforms:** `self-size-x`/`self-size-y` = `100%` (client-space)
8
+ - **Insets/Sizing:** `self-size-x`/`self-size-y` = offset parent size
9
+ - **Transforms:** default to client-space unless transformed
10
+ - **Inline/Block:** sizes/insets may swap in different writing modes
11
+
12
+ ---
13
+
14
+ ## 🏗️ Potential Implementations
15
+
16
+ - **By layout:**
17
+ - Fixed/absolute (insets)
18
+ - CSS Houdini (layout worklets)
19
+ - **By orientation:**
20
+ - `inline`/`block` with `writing-mode`/`direction`
21
+ - `transform`-based (`rotate`)
22
+ - Mixed/combined approaches
23
+
24
+ ---
25
+
26
+ ## 🎨 Custom CSS Properties
27
+
28
+ | Oriented-Space | Client-Space | Implementation-Dependent |
29
+ |:--------------:|:------------:|:------------------------:|
30
+ | `--os-inset-x` | `--cs-inset-x` | `--im-inset-x` |
31
+ | `--os-inset-y` | `--cs-inset-y` | `--im-inset-y` |
32
+ | `--os-drag-x` | `--cs-drag-x` | `--im-drag-x` |
33
+ | `--os-drag-y` | `--cs-drag-y` | `--im-drag-y` |
34
+ | `--os-size-x` | `--cs-size-x` | `--im-size-x` |
35
+ | `--os-size-y` | `--cs-size-y` | `--im-size-y` |
36
+ | `--os-self-size-x` | `--cs-self-size-x` | `--im-self-size-x` |
37
+ | `--os-self-size-y` | `--cs-self-size-y` | `--im-self-size-y` |
38
+ | `--os-offset-x` | `--cs-offset-x` | `--im-offset-x` |
39
+ | `--os-offset-y` | `--cs-offset-y` | `--im-offset-y` |
40
+
41
+ ## 📏 Scaling
42
+
43
+ Special versions of `getBoundingClientRect`, `clientX`, and `clientY` with virtual scaling support.
44
+
45
+ **Scaling methods:**
46
+ - CSS `zoom` (recommended)
47
+ - CSS `scale` (legacy)
48
+ - `rem`/`em` units
49
+
50
+
51
+ ---
52
+
53
+ ## 🏙️ Agate.UX — Multi-dimensional UX/Interaction
54
+
55
+ > **Agate.UX** is a next-gen sub-component for advanced UI/UX, designed for the "2REmembrance" generation (2025+).
56
+
57
+ ### 🧩 Key Concepts
58
+
59
+ - **Orientation-based transforms:**
60
+ `calc(var(--orient, 0) * <A>)` where `<A>` can be `100grad`, `0.25turn`, `90deg`, etc.
61
+ - **Self-centering elements:**
62
+ `translate(-50%, -50%)` with `transform-origin: 0px 0px;`
63
+ - **Drag & center combined:**
64
+ `translate(calc(var(--drag-x, 0px) - 50%), calc(var(--drag-y, 0px) - 50%))`
65
+
66
+ <details>
67
+ <summary>How it works?</summary>
68
+
69
+ #### Coordinate Spaces
70
+
71
+ - <kbd>Client-Space</kbd>: page coordinate system
72
+ - <kbd>Oriented-Space</kbd>: virtual screen
73
+ - <kbd>Algorithm-Space</kbd>: internal logic
74
+
75
+ #### Degree Types
76
+
77
+ - <span style="background:#eee; border-radius:4px; padding:2px 6px;">90deg-based</span> (0°, 90°, 180°, 270°)
78
+ - <span style="background:#eee; border-radius:4px; padding:2px 6px;">Variable/Matrix-based</span>
79
+
80
+ #### Event Pre-computation
81
+
82
+ - Client-Space Pointer Position
83
+ - Oriented-Space Pointer Position
84
+ - Algorithm-Space Pointer Position
85
+
86
+ </details>
87
+
88
+ ---
89
+
90
+ ## 🧭 Policy Concepts
91
+
92
+ - Use `inset` for semi-static, `translate` for dynamic (drag/animation) positioning.
93
+
94
+ ---
95
+
96
+ ## 1. Introduction
97
+
98
+ Veela.CSS is a CSS framework for building modern, responsive, and accessible web applications. It is built on top of the veela.js library and provides a set of reusable components and utilities for building web applications.
99
+
100
+ ## 2. Features
101
+
102
+ - Responsive design
103
+ - Accessible components
104
+ - Reusable utilities
105
+ - Customizable theme
106
+ - Built-in animations
107
+
108
+ ## 3. Architecture
109
+
110
+ ### Runtime side
111
+
112
+ - Color functions
113
+ - Atomic classes
114
+ - Animation keyframes
115
+ - Implementations (commons)
116
+
117
+ ### SCSS library
118
+
119
+ - Theme mixins
120
+ - Layout mixins
121
+ - Utility mixins
122
+
123
+ ### Design types
124
+
125
+ - VE design (default, but no priority)
126
+ - Material Design 3 (not completed yet)
127
+
128
+ ---
129
+
130
+ ## Color functions
131
+
132
+ Currently we used native CSS custom functions (and own implementations for veela.css runtime side).
133
+
134
+ - `--c2-surface(tone = 0, base-color = var(--current), scheme-id = 2)` - returns a surface color based on the tone, base color and theme id
135
+ - `--c2-on-surface(tone = 0, base-color = var(--current), scheme-id = 2)` - returns a on-surface color based on the tone, base color and theme id
136
+ - `--c2-contrast(tone = 0, base-color = var(--current), scheme-id = 2)` - returns a contrast color based on the tone, base color and theme id
137
+ - `--c2-on-contrast(tone = 0, base-color = var(--current), scheme-id = 2)` - returns a on-contrast color based on the tone, base color and theme id
138
+
139
+ ### Alpha channel
140
+
141
+ - Can be got by relative color function, e.g. `oklch(from --c2-surface(tone = 0, base-color = var(--current), scheme-id = 2) l c h/ 0.5)`
142
+
143
+ ### Scheme ID
144
+
145
+ - 0 - light
146
+ - 1 - dark
147
+ - 2 - default
148
+
149
+ ### Tone (of function argument)
150
+
151
+ - 0% - light or black tone (depends on the scheme id)
152
+ - 50% - chromatic tone (depends on the base color and scheme id)
153
+ - 100% - white or white tone (depends on the scheme id)
154
+
155
+ ### Base color
156
+
157
+ - `var(--current)` - the current color, default bound to primary color, but can be overridden by the user
158
+ - `var(--primary)` - the primary color (in MD3 adapted under --current)
159
+ - `var(--secondary)` - the secondary color (in MD3 adapted under --secondary)
160
+ - `var(--accent)` - the accent color (in MD3 adapted under --accent)
161
+ - `var(--success)` - the success color
162
+ - `var(--warning)` - the warning color
163
+ - `var(--error)` - the error color
164
+
165
+ ### Example
166
+
167
+ ```css
168
+ .example {
169
+ background-color: var(--c2-surface(tone = 0, base-color = var(--current), scheme-id = 2));
170
+ }
171
+ ```
172
+
173
+ ## Color theme mixins
174
+
175
+ - `@mixin solid-colorize(selector = "&", options: ("shade": 0.0, "tint": 0.0, "scheme-id": 2, "role": null))` - colorizes the selector with the given options
176
+
177
+ ### Options
178
+
179
+ - `shade` - the shade of the color, default is 0.0
180
+ - `tint` - the tint of the color, default is 0.0
181
+ - `scheme-id` - the scheme id, default is 2
182
+ - 0 - light
183
+ - 1 - dark
184
+ - 2 - default
185
+ - `role` - the role of the color, default is null
186
+ - MD3 specific, such as `primary`, `secondary`, `tertiary`, `error`, `surface`, `on-surface`, etc.
187
+ - null - no role, default to current color
188
+ - `scope` - propagation mode, default is `"component"`
189
+ - `"component"` - applies the palette to the selector, supporting descendant form controls and global helpers (previous `solid-colorize` behaviour)
190
+ - `"selector"` - limits the palette to the selector itself without propagating to descendants (previous `solid-colorize-selector-only` behaviour)
191
+ - `propagate` - optional boolean override for descendant propagation (defaults to the value implied by `scope`)
192
+ - `forms-background` - controls whether interactive descendants receive the blended background colour (defaults to the value of `propagate`)
193
+ - `global-targets` - toggles the additional global helpers (`::picker`, `ui-icon`, inline text tags) (defaults to the value of `propagate`)
194
+
195
+ ### Example
196
+
197
+ ```css
198
+ .example {
199
+ @include solid-colorize(selector = "&", options: ("shade": 0.0, "tint": 0.0, "scheme-id": 2, "role": null));
200
+ }
201
+ ```
202
+
203
+ ---
204
+
205
+ ## Layout variables
206
+
207
+ **Padding variables (in rem):**
208
+
209
+ - `--padding-sm` - 0.25rem
210
+ - `--padding-md` - 0.5rem
211
+ - `--padding-lg` - 1rem
212
+ - `--padding-xl` - 2rem
213
+ - `--padding-2xl` - 4rem
214
+ - `--padding-3xl` - 8rem
215
+ - `--padding-4xl` - 16rem
216
+ - `--padding-5xl` - 32rem
217
+ - `--padding-6xl` - 64rem
218
+ - `--padding-7xl` - 128rem
219
+ - `--padding-8xl` - 256rem
220
+ - `--padding-9xl` - 512rem
221
+
222
+ **Spacing variables (in rem):**
223
+
224
+ - `--space-xs` - 0.25rem
225
+ - `--space-sm` - 0.5rem
226
+ - `--space-md` - 0.75rem
227
+ - `--space-lg` - 1rem
228
+ - `--space-xl` - 1.25rem
229
+ - `--space-2xl` - 1.6rem
230
+
231
+ **Radius variables (in rem):**
232
+
233
+ - `--radius-xs` - 0.25rem
234
+ - `--radius-sm` - 0.5rem
235
+ - `--radius-md` - 0.75rem
236
+ - `--radius-lg` - 0.85rem
237
+ - `--radius-xl` - 1rem
238
+ - `--radius-2xl` - 1.25rem
239
+ - `--radius-full` - min(50dvmin, 50cqmin)
240
+
241
+ **Gap variables (in rem):**
242
+
243
+ - `--gap-xs` - 0.25rem
244
+ - `--gap-sm` - 0.5rem
245
+ - `--gap-md` - 0.75rem
246
+ - `--gap-lg` - 1rem
247
+ - `--gap-xl` - 1.25rem
248
+ - `--gap-2xl` - 1.6rem
249
+
250
+ **Font size variables (in rem):**
251
+
252
+ - `--text-xs` - 0.7rem
253
+ - `--text-sm` - 0.8rem
254
+ - `--text-base` - 0.9rem
255
+ - `--text-lg` - 1rem
256
+ - `--text-xl` - 1.25rem
257
+ - `--text-2xl` - 1.6rem
258
+ - `--text-3xl` - 2rem
259
+ - `--text-4xl` - 2.5rem
260
+ - `--text-5xl` - 3rem
261
+ - `--text-6xl` - 4rem
262
+
263
+ **Line height variables:**
264
+
265
+ - `--leading-tight` - 1.2
266
+ - `--leading-normal` - 1.5
267
+ - `--leading-relaxed` - 1.8
268
+
269
+ **Font weight variables:**
270
+
271
+ - `--font-weight-normal` - 400
272
+ - `--font-weight-medium` - 500
273
+ - `--font-weight-semibold` - 600
274
+ - `--font-weight-bold` - 700
275
+
276
+ **Font family variables:**
277
+
278
+ - `--font-family` - 'Roboto', sans-serif
279
+ - `--font-family-mono` - 'Roboto Mono', monospace
280
+ - `--font-family-display` - 'Roboto Display', sans-serif
281
+ - `--font-family-serif` - 'Roboto Serif', serif
282
+ - `--font-family-handwriting` - 'Roboto Handwriting', cursive
283
+ - `--font-family-fantasy` - 'Roboto Fantasy', fantasy
284
+ - `--font-family-cursive` - 'Roboto Cursive', cursive
285
+ - `--font-family-system` - system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif
286
+
287
+ **Transition variables:**
288
+
289
+ - `--transition-fast` - 140ms ease
290
+ - `--transition-normal` - 160ms ease
291
+ - `--transition-slow` - 200ms ease
292
+
293
+ **Interactive state variables:**
294
+
295
+ - `--hover-lift` - 0.03
296
+ - `--active-lift` - 0.05
297
+ - `--focus-lift` - 0.02
298
+
299
+ **Shadow variables:**
300
+
301
+ - `--shadow-sm` - 0 1px 2px rgba(0, 0, 0, 0.05)
302
+ - `--shadow-md` - 0 4px 6px rgba(0, 0, 0, 0.1)
303
+ - `--shadow-lg` - 0 10px 15px rgba(0, 0, 0, 0.1)
304
+ - `--shadow-xl` - 0 20px 25px rgba(0, 0, 0, 0.1)
305
+ - `--shadow-2xl` - 0 25px 50px rgba(0, 0, 0, 0.1)
306
+ - `--shadow-inset` - inset 0 1px 0 rgba(0, 0, 0, 0.05)
307
+ - `--shadow-inset-strong` - inset 0 2px 6px rgba(0, 0, 0, 0.1)
308
+
309
+ **Border width variables (in px):**
310
+
311
+ - `--border-width-sm` - 0.5px
312
+ - `--border-width-md` - 1px
313
+ - `--border-width-lg` - 2px
314
+ - `--border-width-xl` - 4px
315
+ - `--border-width-2xl` - 8px
316
+ - `--border-width-3xl` - 16px
317
+ - `--border-width-4xl` - 32px
318
+ - `--border-width-5xl` - 64px
319
+ - `--border-width-6xl` - 128px
320
+ - `--border-width-7xl` - 256px
321
+ - `--border-width-8xl` - 512px
322
+ - `--border-width-9xl` - 1024px
323
+
324
+ ## Avatar and icon sizes
325
+
326
+ - `--avatar-size` - 48px
327
+ - `--avatar-size-lg` - 64px
328
+ - `--icon-size-sm` - 1rem
329
+ - `--icon-size-md` - 1.25rem
330
+ - `--icon-size-lg` - 1.5rem
331
+
332
+ ### Example
333
+
334
+ ```css
335
+ .icon-size-sm {
336
+ inline-size: var(--icon-size-sm);
337
+ block-size: var(--icon-size-sm);
338
+ }
339
+ .icon-size-md {
340
+ inline-size: var(--icon-size-md);
341
+ block-size: var(--icon-size-md);
342
+ }
343
+ .icon-size-lg {
344
+ inline-size: var(--icon-size-lg);
345
+ block-size: var(--icon-size-lg);
346
+ }
347
+ ```
348
+
349
+ ---
350
+
351
+ ## Atomic classes
352
+
353
+ ### Padding
354
+
355
+ - `.p-xs` - padding: `var(--padding-xs)`
356
+ - `.p-sm` - padding: `var(--padding-sm)`
357
+ - `.p-md` - padding: `var(--padding-md)`
358
+ - `.p-lg` - padding: `var(--padding-lg)`
359
+ - `.p-xl` - padding: `var(--padding-xl)`
360
+ - `.p-2xl` - padding: `var(--padding-2xl)`
361
+ - `.p-3xl` - padding: `var(--padding-3xl)`
362
+ - `.p-4xl` - padding: `var(--padding-4xl)`
363
+ - `.p-5xl` - padding: `var(--padding-5xl)`
364
+ - `.p-6xl` - padding: `var(--padding-6xl)`
365
+ - `.p-7xl` - padding: `var(--padding-7xl)`
366
+ - `.p-8xl` - padding: `var(--padding-8xl)`
367
+ - `.p-9xl` - padding: `var(--padding-9xl)`
368
+
369
+ ### Margin
370
+
371
+ - `.m-xs` - margin: `var(--space-xs)`
372
+ - `.m-sm` - margin: `var(--space-sm)`
373
+ - `.m-md` - margin: `var(--space-md)`
374
+ - `.m-lg` - margin: `var(--space-lg)`
375
+ - `.m-xl` - margin: `var(--space-xl)`
376
+ - `.m-2xl` - margin: `var(--space-2xl)`
377
+ - `.m-3xl` - margin: `var(--space-3xl)`
378
+ - `.m-4xl` - margin: `var(--space-4xl)`
379
+ - `.m-5xl` - margin: `var(--space-5xl)`
380
+ - `.m-6xl` - margin: `var(--space-6xl)`
381
+
382
+ ### Gap
383
+
384
+ - `.gap-xs` - gap: `var(--gap-xs)`
385
+ - `.gap-sm` - gap: `var(--gap-sm)`
386
+ - `.gap-md` - gap: `var(--gap-md)`
387
+ - `.gap-lg` - gap: `var(--gap-lg)`
388
+ - `.gap-xl` - gap: `var(--gap-xl)`
389
+
390
+ ### Text size
391
+
392
+ - `.text-xs` - font-size: `var(--text-xs)`
393
+ - `.text-sm` - font-size: `var(--text-sm)`
394
+ - `.text-base` - font-size: `var(--text-base)`
395
+ - `.text-lg` - font-size: `var(--text-lg)`
396
+ - `.text-xl` - font-size: `var(--text-xl)`
397
+
398
+ ### Font weight
399
+
400
+ - `.font-weight-normal` - font-weight: `var(--font-weight-normal)`
401
+ - `.font-weight-medium` - font-weight: `var(--font-weight-medium)`
402
+ - `.font-weight-semibold` - font-weight: `var(--font-weight-semibold)`
403
+ - `.font-weight-bold` - font-weight: `var(--font-weight-bold)`
404
+
405
+ ### Font family
406
+
407
+ - `.font-family-sans-serif` - font-family: `var(--font-family-sans-serif)`
408
+ - `.font-family-serif` - font-family: `var(--font-family-serif)`
409
+ - `.font-family-monospace` - font-family: `var(--font-family-monospace)`
410
+ - `.font-family-display` - font-family: `var(--font-family-display)`
411
+ - `.font-family-handwriting` - font-family: `var(--font-family-handwriting)`
412
+
413
+ ### Line height
414
+
415
+ - `.leading-tight` - line-height: `var(--leading-tight)`
416
+ - `.leading-normal` - line-height: `var(--leading-normal)`
417
+ - `.leading-relaxed` - line-height: `var(--leading-relaxed)`
418
+
419
+ ### Transition
420
+
421
+ - `.transition-fast` - transition: `var(--transition-fast)`
422
+ - `.transition-normal` - transition: `var(--transition-normal)`
423
+ - `.transition-slow` - transition: `var(--transition-slow)`
424
+
425
+ ### Interactive state
426
+
427
+ - `.hover-lift` - transform: `translateY(var(--hover-lift))`
428
+ - `.active-lift` - transform: `translateY(var(--active-lift))`
429
+ - `.focus-lift` - transform: `translateY(var(--focus-lift))`
430
+
431
+ ### Display
432
+
433
+ - `.d-grid` - display: `grid`
434
+ - `.d-flex` - display: `flex`
435
+ - `.d-block` - display: `block`
436
+ - `.d-inline` - display: `inline`
437
+ - `.d-inline-block` - display: `inline-block`
438
+ - `.d-inline-flex` - display: `inline-flex`
439
+ - `.d-inline-grid` - display: `inline-grid`
440
+ - `.d-none` - display: `none`
441
+ - `.d-flex-col` - display: `flex-column`
442
+ - `.d-flex-row` - display: `flex-row`
443
+ - `.d-flex-col-reverse` - display: `flex-column-reverse`
444
+ - `.d-flex-row-reverse` - display: `flex-row-reverse`
445
+ - `.d-flex-wrap` - display: `flex-wrap`
446
+ - `.d-flex-wrap-reverse` - display: `flex-wrap-reverse`
447
+
448
+ ### Shadow
449
+
450
+ - `.shadow-sm` - box-shadow: `var(--shadow-sm)`
451
+
452
+ ### Examples of classes usage
453
+
454
+ Grid with padding, margin, gap and `display: grid;`
455
+ ```html
456
+ <div class="p-md m-md gap-md d-grid">
457
+ <div class="p-md m-md gap-md d-grid">
458
+ <div class="p-md m-md gap-md d-grid">
459
+ </div>
460
+ <div class="p-md m-md gap-md d-grid">
461
+ </div>
462
+ </div>
463
+ </div>
464
+ ```
465
+
466
+ Flexbox with padding, margin, gap and `display: flex;`
467
+
468
+ ```html
469
+ <div class="p-md m-md gap-md d-flex">
470
+ <div class="p-md m-md gap-md d-flex">
471
+ </div>
472
+ <div class="p-md m-md gap-md d-flex">
473
+ </div>
474
+ </div>
475
+ ```
476
+
477
+ ---
478
+
479
+ ## MD3 color classes and variants
480
+
481
+ ### Color classes
482
+
483
+ - `.color-primary` - color: `var(--color-primary)`
484
+ - `.color-secondary` - color: `var(--color-secondary)`
485
+ - `.color-accent` - color: `var(--color-accent)`
486
+ - `.color-success` - color: `var(--color-success);`
487
+ - `.color-warning` - color: `var(--color-warning);`
488
+ - `.color-danger` - color: `var(--color-danger);`
489
+ - `.color-info` - color: `var(--color-info);`
490
+
491
+ ### Surface classes
492
+
493
+ - `.surface` - background-color: `var(--surface-color)`
494
+ - `.surface-subtle` - background-color: `var(--surface-color-subtle)`
495
+ - `.surface-muted` - background-color: `var(--surface-color-muted)`
496
+ - `.surface-emphasis` - background-color: `var(--surface-color-emphasis)`
497
+ - `.surface-strong` - background-color: `var(--surface-color-strong)`
498
+
499
+ ### Text classes
500
+
501
+ - `.text-primary` - color: `var(--text-color-primary)`
502
+ - `.text-secondary` - color: `var(--text-color-secondary)`
503
+ - `.text-muted` - color: `var(--text-color-muted)`
504
+ - `.text-disabled` - color: `var(--text-color-disabled)`
505
+
506
+ ### Validation state classes
507
+
508
+ - `.state-success` - color: `var(--color-success)`
509
+ - `.state-warning` - color: `var(--color-warning)`
510
+ - `.state-danger` - color: `var(--color-danger)`
511
+
512
+ ### Examples of classes usage
513
+
514
+ ```html
515
+ <div class="color-primary surface-subtle">
516
+ <div class="text-primary state-success">
517
+ </div>
518
+ </div>
519
+ ```
520
+
521
+ ```html
522
+ <div class="color-secondary surface-emphasis">
523
+ <div class="text-secondary state-warning">
524
+ </div>
525
+ </div>
526
+ ```
527
+
528
+ ```html
529
+ <div class="color-accent surface-strong">
530
+ <div class="text-accent state-danger">
531
+ </div>
532
+ </div>
533
+ ```