@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.
- package/LICENSE +21 -0
- package/README.md +533 -0
- package/dist/veela.js +878 -0
- package/package.json +83 -0
- package/src/scss/_layers.scss +16 -0
- package/src/scss/advanced/_index.scss +0 -0
- package/src/scss/advanced/animation/_motion.scss +317 -0
- package/src/scss/advanced/color/_color.scss +328 -0
- package/src/scss/advanced/color/_colorize.scss +325 -0
- package/src/scss/advanced/design/_design-tokens.scss +118 -0
- package/src/scss/advanced/design/_effects.scss +275 -0
- package/src/scss/advanced/design/_shadow.scss +359 -0
- package/src/scss/advanced/design/_surfaces.scss +76 -0
- package/src/scss/advanced/effects/_animations.scss +124 -0
- package/src/scss/advanced/effects/_shadows.scss +50 -0
- package/src/scss/advanced/font/_typography.scss +600 -0
- package/src/scss/advanced/index.scss +11 -0
- package/src/scss/advanced/index.ts +35 -0
- package/src/scss/advanced/layout/_content.scss +170 -0
- package/src/scss/advanced/layout/_index.scss +5 -0
- package/src/scss/advanced/layout/_normalize.scss +541 -0
- package/src/scss/advanced/layout/_shared-overlays.scss +162 -0
- package/src/scss/advanced/md3/_md3.scss +596 -0
- package/src/scss/advanced/md3/_utils.scss +114 -0
- package/src/scss/advanced/misc/_config.scss +119 -0
- package/src/scss/advanced/misc/_initials.scss +298 -0
- package/src/scss/advanced/misc/_mixins.scss +179 -0
- package/src/scss/advanced/misc/_queries.scss +34 -0
- package/src/scss/advanced/misc/_rendering.scss +82 -0
- package/src/scss/advanced/misc/_tokens.scss +74 -0
- package/src/scss/advanced/theme/_shared.scss +232 -0
- package/src/scss/advanced/theme/_states.scss +332 -0
- package/src/scss/advanced/theme/_variants.scss +354 -0
- package/src/scss/advanced/tokens/_material-color.scss +120 -0
- package/src/scss/advanced/tokens/_variables.scss +171 -0
- package/src/scss/basic/_layers.scss +0 -0
- package/src/scss/basic/design/_index.scss +3 -0
- package/src/scss/basic/design/_keyframes.scss +163 -0
- package/src/scss/basic/design/_shapes.scss +266 -0
- package/src/scss/basic/design/_wavy-runtime.scss +50 -0
- package/src/scss/basic/index.scss +19 -0
- package/src/scss/basic/index.ts +29 -0
- package/src/scss/basic/misc/_core-layout.scss +272 -0
- package/src/scss/basic/misc/_index.scss +18 -0
- package/src/scss/basic/misc/_layout.scss +1040 -0
- package/src/scss/basic/misc/_mixins.scss +179 -0
- package/src/scss/basic/misc/_motion.scss +28 -0
- package/src/scss/basic/misc/_normalize.scss +765 -0
- package/src/scss/basic/misc/_queries.scss +34 -0
- package/src/scss/basic/misc/_shared.scss +232 -0
- package/src/scss/basic/misc/_states.scss +135 -0
- package/src/scss/basic/misc/_tokens.scss +78 -0
- package/src/scss/basic/misc/_veela.scss +12 -0
- package/src/scss/core/index.scss +1 -0
- package/src/scss/core/interact/_draggable.scss +32 -0
- package/src/scss/core/interact/_position.scss +45 -0
- package/src/scss/core/interact/_ps-anchor.scss +28 -0
- package/src/scss/core/interact/_ps-centered.scss +28 -0
- package/src/scss/core/interact/_ps-cursor.scss +18 -0
- package/src/scss/core/interact/_ps-draggable.scss +25 -0
- package/src/scss/core/interact/_ps-mechanic.scss +0 -0
- package/src/scss/core/interact/_ps-properties.scss +54 -0
- package/src/scss/core/interact/_ps-resizable.scss +61 -0
- package/src/scss/core/interact/_resizable.scss +69 -0
- package/src/scss/core/interact/_viewport.scss +469 -0
- package/src/scss/core/misc/_color-properties.scss +64 -0
- package/src/scss/core/misc/_config.scss +110 -0
- package/src/scss/core/misc/_functions.scss +530 -0
- package/src/scss/core/misc/_icons.scss +109 -0
- package/src/scss/core/misc/_index.scss +6 -0
- package/src/scss/core/misc/_layout.scss +49 -0
- package/src/scss/core/misc/_mixins.scss +744 -0
- package/src/scss/core/misc/_properties.scss +245 -0
- package/src/scss/core/misc/_tokens.scss +947 -0
- package/src/scss/core/misc/_utilities.scss +941 -0
- package/src/scss/core/misc/_utils.scss +17 -0
- package/src/scss/index.scss +18 -0
- 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
|
+
```
|