@vireo-ai/trellis-ui 0.1.0 → 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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vireo-ai/trellis-ui",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "type": "module",
5
5
  "description": "Django-native UI toolkit for building realtime and interactive web apps.",
6
6
  "license": "MIT",
@@ -13,6 +13,8 @@
13
13
  "README.md",
14
14
  "types/**/*.d.ts",
15
15
  "src/theme.css",
16
+ "src/components.css",
17
+ "src/components/**/*.css",
16
18
  "trellis_ui/static/trellis_ui/css/styles.css",
17
19
  "trellis_ui/static/trellis_ui/js/index.js",
18
20
  "trellis_ui/static/trellis_ui/js/esm/**/*.js",
@@ -76,6 +78,7 @@
76
78
  "check": "pnpm run build:package && pnpm run typecheck && pnpm test && uv run pytest && pnpm run test:browser",
77
79
  "check:packages": "pnpm pack --dry-run && uv build --sdist --wheel",
78
80
  "check:release": "pnpm run check && pnpm run check:packages",
81
+ "release": "node scripts/release.mjs",
79
82
  "publish:npm": "pnpm run check:release && pnpm publish --access public",
80
83
  "publish:pypi": "pnpm run build:package && uv build --sdist --wheel && uv publish dist/django_trellis-${npm_package_version}.tar.gz dist/django_trellis-${npm_package_version}-py3-none-any.whl",
81
84
  "publish:all": "pnpm run check:release && pnpm publish --access public && uv publish dist/django_trellis-${npm_package_version}.tar.gz dist/django_trellis-${npm_package_version}-py3-none-any.whl",
@@ -0,0 +1,16 @@
1
+ @layer components {
2
+ [data-ui-accordion-trigger][data-state="open"] [data-ui-accordion-icon] {
3
+ transform: rotate(180deg);
4
+ }
5
+
6
+ [data-ui-accordion-trigger][data-icon-position="leading"] [data-ui-accordion-icon],
7
+ [data-ui-accordion][data-icon-position="leading"] [data-ui-accordion-trigger][data-icon-position="inherit"] [data-ui-accordion-icon] {
8
+ order: -1;
9
+ transform: rotate(-90deg);
10
+ }
11
+
12
+ [data-ui-accordion-trigger][data-icon-position="leading"][data-state="open"] [data-ui-accordion-icon],
13
+ [data-ui-accordion][data-icon-position="leading"] [data-ui-accordion-trigger][data-icon-position="inherit"][data-state="open"] [data-ui-accordion-icon] {
14
+ transform: rotate(0deg);
15
+ }
16
+ }
@@ -0,0 +1,8 @@
1
+ @layer components {
2
+ [data-ui-brand-logo] svg {
3
+ display: block;
4
+ flex-shrink: 0;
5
+ height: 100%;
6
+ width: 100%;
7
+ }
8
+ }
@@ -0,0 +1,157 @@
1
+ @layer components {
2
+ [data-ui-button] {
3
+ isolation: isolate;
4
+ overflow: hidden;
5
+ }
6
+
7
+ [data-ui-button]::before {
8
+ background: var(--_ui-button-overlay, transparent);
9
+ border-radius: inherit;
10
+ content: "";
11
+ inset: 0;
12
+ opacity: 0;
13
+ pointer-events: none;
14
+ position: absolute;
15
+ z-index: 0;
16
+ }
17
+
18
+ [data-ui-button]:hover:not(:disabled, [aria-disabled="true"], [data-ui-loading])::before {
19
+ opacity: 1;
20
+ }
21
+
22
+ [data-ui-button]:active:not(:disabled, [aria-disabled="true"], [data-ui-loading])::before {
23
+ background: var(--_ui-button-overlay-active, var(--_ui-button-overlay, transparent));
24
+ opacity: 1;
25
+ }
26
+
27
+ [data-ui-button] > * {
28
+ position: relative;
29
+ z-index: 1;
30
+ }
31
+
32
+ [data-ui-button][data-variant="default"],
33
+ [data-ui-button][data-variant="outline"] {
34
+ --_ui-button-overlay: var(--color-base-a2);
35
+ --_ui-button-overlay-active: var(--color-base-a3);
36
+ }
37
+
38
+ [data-ui-button][data-variant="default"]:hover,
39
+ [data-ui-button][data-variant="default"]:active,
40
+ [data-ui-button][data-variant="outline"]:hover,
41
+ [data-ui-button][data-variant="outline"]:active {
42
+ background-color: var(--color-surface) !important;
43
+ }
44
+
45
+ [data-ui-button][data-variant="filled"][data-color="accent"] {
46
+ --_ui-button-overlay: rgb(255 255 255 / 0.10);
47
+ --_ui-button-overlay-active: rgb(255 255 255 / 0.16);
48
+ --_ui-button-highlight: rgb(255 255 255 / 0.22);
49
+ box-shadow:
50
+ inset 0 1px var(--_ui-button-highlight),
51
+ var(--shadow-1) !important;
52
+ }
53
+
54
+ [data-ui-button][data-variant="filled"][data-color="accent"]:hover,
55
+ [data-ui-button][data-variant="filled"][data-color="accent"]:active {
56
+ background-color: var(--color-accent-solid) !important;
57
+ }
58
+
59
+ [data-ui-button][data-variant="subtle"] {
60
+ --_ui-button-overlay: var(--color-base-a3);
61
+ --_ui-button-overlay-active: var(--color-base-a4);
62
+ }
63
+
64
+ [data-ui-button][data-variant="subtle"]:hover,
65
+ [data-ui-button][data-variant="subtle"]:active {
66
+ background-color: var(--color-base-a2) !important;
67
+ }
68
+
69
+ [data-ui-button][data-variant="filled"] {
70
+ --_ui-button-overlay: var(--color-base-a4);
71
+ --_ui-button-overlay-active: var(--color-base-a5);
72
+ }
73
+
74
+ [data-ui-button][data-variant="filled"]:hover,
75
+ [data-ui-button][data-variant="filled"]:active {
76
+ background-color: var(--color-base-a3) !important;
77
+ }
78
+
79
+ [data-ui-button][data-variant="ghost"] {
80
+ --_ui-button-overlay: var(--color-base-a3);
81
+ --_ui-button-overlay-active: var(--color-base-a4);
82
+ }
83
+
84
+ [data-ui-button][data-variant="ghost"]:hover,
85
+ [data-ui-button][data-variant="ghost"]:active {
86
+ background-color: transparent !important;
87
+ }
88
+
89
+ [data-ui-button][data-variant="filled"][data-color="danger"] {
90
+ --_ui-button-overlay: rgb(255 255 255 / 0.10);
91
+ --_ui-button-overlay-active: rgb(255 255 255 / 0.16);
92
+ --_ui-button-highlight: rgb(255 255 255 / 0.20);
93
+ box-shadow:
94
+ inset 0 1px var(--_ui-button-highlight),
95
+ var(--shadow-1) !important;
96
+ }
97
+
98
+ [data-ui-button][data-variant="filled"][data-color="danger"]:hover,
99
+ [data-ui-button][data-variant="filled"][data-color="danger"]:active {
100
+ background-color: var(--color-danger-solid) !important;
101
+ }
102
+
103
+ [data-ui-button][data-ui-loading] {
104
+ cursor: wait;
105
+ }
106
+
107
+ [data-ui-button]:disabled,
108
+ [data-ui-button][aria-disabled="true"] {
109
+ pointer-events: none;
110
+ }
111
+
112
+ [data-ui-button]:is(:disabled, [aria-disabled="true"]):not([data-ui-loading]) {
113
+ opacity: 0.5;
114
+ }
115
+
116
+ [data-ui-button] [data-ui-button-loading-indicator] {
117
+ opacity: 0;
118
+ }
119
+
120
+ [data-ui-button][data-ui-loading] [data-ui-button-content] {
121
+ opacity: 0;
122
+ }
123
+
124
+ [data-ui-button][data-ui-loading] [data-ui-button-loading-indicator] {
125
+ opacity: 1;
126
+ }
127
+
128
+ [data-ui-button-group] > [data-ui-button] {
129
+ position: relative;
130
+ }
131
+
132
+ [data-ui-button-group] > [data-ui-button]:hover {
133
+ z-index: 2;
134
+ }
135
+
136
+ [data-ui-button-group] > [data-ui-button]:focus-visible {
137
+ z-index: 3;
138
+ }
139
+
140
+ [data-ui-button-group] > [data-ui-button]:not(:first-child) {
141
+ margin-left: -1px;
142
+ }
143
+
144
+ [data-ui-button-group] > [data-ui-button]:first-child:not(:last-child) {
145
+ border-top-right-radius: 0 !important;
146
+ border-bottom-right-radius: 0 !important;
147
+ }
148
+
149
+ [data-ui-button-group] > [data-ui-button]:not(:first-child):not(:last-child) {
150
+ border-radius: 0 !important;
151
+ }
152
+
153
+ [data-ui-button-group] > [data-ui-button]:last-child:not(:first-child) {
154
+ border-top-left-radius: 0 !important;
155
+ border-bottom-left-radius: 0 !important;
156
+ }
157
+ }
@@ -0,0 +1,404 @@
1
+ @layer components {
2
+ [data-ui-date-picker] {
3
+ --ui-date-picker-selected-bg: var(--color-base-12);
4
+ --ui-date-picker-selected-bg-hover: var(--color-base-12);
5
+ --ui-date-picker-selected-fg: var(--color-surface);
6
+ --ui-date-picker-range-bg: var(--color-base-a3);
7
+ --ui-date-picker-range-bg-hover: var(--color-base-a4);
8
+ --ui-date-picker-month-heading-size: 1.75rem;
9
+ --ui-date-picker-month-min: 16.25rem;
10
+ --ui-date-picker-week-gap: 0.125rem;
11
+ --ui-date-picker-week-row-size: 2.125rem;
12
+ }
13
+
14
+ [data-ui-date-picker][data-color="accent"] {
15
+ --ui-date-picker-selected-bg: var(--color-accent-solid);
16
+ --ui-date-picker-selected-bg-hover: var(--color-accent-solid-hover);
17
+ --ui-date-picker-selected-fg: var(--color-accent-contrast);
18
+ --ui-date-picker-range-bg: var(--color-accent-surface);
19
+ --ui-date-picker-range-bg-hover: var(--color-accent-surface-hover);
20
+ }
21
+
22
+ [data-ui-date-picker-calendar] {
23
+ --color-accent: var(--ui-date-picker-selected-bg);
24
+ --color-text-on-accent: var(--ui-date-picker-selected-fg);
25
+ color: var(--color-foreground);
26
+ inline-size: max-content;
27
+ max-inline-size: none;
28
+ }
29
+
30
+ [data-ui-date-picker-panel] {
31
+ inline-size: max-content;
32
+ max-inline-size: calc(100vw - 2rem);
33
+ }
34
+
35
+ [data-ui-date-picker-panel]:not(:has([data-ui-date-picker-presets])) {
36
+ inline-size: max-content;
37
+ grid-template-columns: auto !important;
38
+ }
39
+
40
+ [data-ui-date-picker-panel]:not(:has([data-ui-date-picker-presets])):has([data-ui-date-picker-calendar][months="2"]) {
41
+ inline-size: max-content;
42
+ }
43
+
44
+ [data-ui-date-picker-panel]:not(:has([data-ui-date-picker-presets])):has([data-ui-date-picker-calendar][months="3"]) {
45
+ inline-size: max-content;
46
+ }
47
+
48
+ [data-ui-date-picker-panel]:has([data-ui-date-picker-presets]) {
49
+ inline-size: max-content;
50
+ }
51
+
52
+ [data-ui-date-picker-calendar-wrap] {
53
+ block-size: 100%;
54
+ inline-size: 100%;
55
+ max-inline-size: calc(100vw - 2rem);
56
+ }
57
+
58
+ [data-ui-date-picker-calendar-wrap]:not(:has([data-ui-date-picker-presets])) {
59
+ inline-size: 100%;
60
+ }
61
+
62
+ [data-ui-date-picker-calendar-today] {
63
+ align-items: center;
64
+ background-color: transparent;
65
+ border: 0;
66
+ border-radius: var(--radius-2);
67
+ color: var(--color-foreground-muted);
68
+ display: inline-flex;
69
+ block-size: 1.75rem;
70
+ inline-size: 1.75rem;
71
+ justify-content: center;
72
+ padding: 0;
73
+ position: absolute;
74
+ right: 5rem;
75
+ top: var(--ui-popover-padding);
76
+ z-index: 1;
77
+ }
78
+
79
+ [data-ui-date-picker-today-day] {
80
+ align-items: center;
81
+ color: var(--color-foreground);
82
+ display: flex;
83
+ font-size: 0.5625rem;
84
+ font-weight: var(--font-weight-semibold);
85
+ inset-block: 0.3125rem 0;
86
+ inset-inline: 0;
87
+ justify-content: center;
88
+ line-height: 1;
89
+ position: absolute;
90
+ text-align: center;
91
+ }
92
+
93
+ [data-ui-date-picker-today-icon] {
94
+ block-size: 1.125rem;
95
+ border: 1.5px solid currentColor;
96
+ border-radius: var(--radius-2);
97
+ display: block;
98
+ inline-size: 1.125rem;
99
+ overflow: hidden;
100
+ position: relative;
101
+ }
102
+
103
+ [data-ui-date-picker-today-icon]::before {
104
+ background-color: currentColor;
105
+ block-size: 0.1875rem;
106
+ content: "";
107
+ inset-block-start: 0;
108
+ inset-inline: 0;
109
+ position: absolute;
110
+ }
111
+
112
+ [data-ui-date-picker-today-icon]::after {
113
+ background:
114
+ linear-gradient(currentColor 0 0) 0.25rem 0 / 0.125rem 0.25rem no-repeat,
115
+ linear-gradient(currentColor 0 0) calc(100% - 0.25rem) 0 / 0.125rem 0.25rem no-repeat;
116
+ content: "";
117
+ inset: -0.1875rem 0 0;
118
+ position: absolute;
119
+ }
120
+
121
+ [data-ui-date-picker-calendar-today]:hover {
122
+ background-color: var(--color-base-a2);
123
+ color: var(--color-foreground);
124
+ }
125
+
126
+ [data-ui-date-picker-calendar-today]:focus-visible {
127
+ box-shadow: var(--shadow-focus);
128
+ outline: none;
129
+ }
130
+
131
+ [data-ui-date-picker-calendar]::part(container) {
132
+ display: grid;
133
+ gap: 0.625rem;
134
+ }
135
+
136
+ [data-ui-date-picker-calendar]::part(header) {
137
+ align-items: center;
138
+ display: grid;
139
+ column-gap: 0.25rem;
140
+ grid-template-columns: minmax(0, 1fr) auto auto;
141
+ min-block-size: 1.75rem;
142
+ min-width: 0;
143
+ }
144
+
145
+ [data-ui-date-picker-calendar]::part(heading) {
146
+ align-items: center;
147
+ color: var(--color-foreground);
148
+ display: flex;
149
+ font-size: var(--text-sm);
150
+ font-weight: var(--font-weight-semibold);
151
+ gap: 0.375rem;
152
+ line-height: var(--text-sm--line-height);
153
+ min-width: 0;
154
+ text-align: left;
155
+ }
156
+
157
+ [data-ui-date-picker-calendar]::part(button) {
158
+ align-items: center;
159
+ background: transparent;
160
+ border: 0;
161
+ border-radius: var(--radius-2);
162
+ color: var(--color-foreground-muted);
163
+ display: inline-flex;
164
+ block-size: 1.75rem;
165
+ inline-size: 1.75rem;
166
+ justify-content: center;
167
+ outline: none;
168
+ padding: 0;
169
+ }
170
+
171
+ [data-ui-date-picker-calendar]::part(previous) {
172
+ grid-column: 2;
173
+ grid-row: 1;
174
+ }
175
+
176
+ [data-ui-date-picker-calendar]::part(next) {
177
+ grid-column: 3;
178
+ grid-row: 1;
179
+ }
180
+
181
+ [data-ui-date-picker-calendar]::part(button):hover {
182
+ background-color: var(--color-base-a2);
183
+ color: var(--color-foreground);
184
+ }
185
+
186
+ [data-ui-date-picker-calendar]::part(button):focus-visible {
187
+ box-shadow: var(--shadow-focus);
188
+ }
189
+
190
+ [data-ui-date-picker-calendar]::part(disabled) {
191
+ cursor: not-allowed;
192
+ opacity: 0.4;
193
+ }
194
+
195
+ [data-ui-date-picker-calendar]::part(months) {
196
+ align-items: start;
197
+ display: grid;
198
+ gap: 0.75rem;
199
+ grid-template-columns: repeat(var(--ui-date-picker-month-columns, 1), var(--ui-date-picker-month-min));
200
+ justify-content: center;
201
+ min-width: 0;
202
+ }
203
+
204
+ [data-ui-date-picker-calendar] [data-ui-date-picker-calendar-icon] {
205
+ color: var(--color-foreground-muted);
206
+ display: block;
207
+ pointer-events: none;
208
+ }
209
+
210
+ [data-ui-date-picker-calendar] calendar-month {
211
+ --color-accent: var(--ui-date-picker-selected-bg);
212
+ --color-text-on-accent: var(--ui-date-picker-selected-fg);
213
+ inline-size: var(--ui-date-picker-month-min);
214
+ min-inline-size: var(--ui-date-picker-month-min);
215
+ }
216
+
217
+ [data-ui-date-picker-calendar][data-fixed-weeks="true"] calendar-month {
218
+ min-block-size: calc(
219
+ var(--ui-date-picker-month-heading-size) +
220
+ (var(--ui-date-picker-week-row-size) * 7) +
221
+ (var(--ui-date-picker-week-gap) * 6) +
222
+ 0.25rem
223
+ );
224
+ }
225
+
226
+ [data-ui-date-picker-calendar][data-hide-month-heading="true"][data-fixed-weeks="true"] calendar-month {
227
+ min-block-size: calc(
228
+ (var(--ui-date-picker-week-row-size) * 7) +
229
+ (var(--ui-date-picker-week-gap) * 6)
230
+ );
231
+ }
232
+
233
+ [data-ui-date-picker-calendar] calendar-month::part(table) {
234
+ border-collapse: separate;
235
+ border-spacing: 0 0.125rem;
236
+ inline-size: var(--ui-date-picker-month-min);
237
+ max-inline-size: none;
238
+ min-inline-size: var(--ui-date-picker-month-min);
239
+ table-layout: fixed;
240
+ }
241
+
242
+ [data-ui-date-picker-calendar] calendar-month::part(heading) {
243
+ color: var(--color-foreground);
244
+ font-size: var(--text-sm);
245
+ font-weight: var(--font-weight-medium);
246
+ line-height: var(--text-sm--line-height);
247
+ min-block-size: var(--ui-date-picker-month-heading-size);
248
+ padding-block: 0.25rem;
249
+ text-align: center;
250
+ }
251
+
252
+ [data-ui-date-picker-calendar][data-hide-month-heading="true"] calendar-month::part(heading) {
253
+ display: none;
254
+ }
255
+
256
+ [data-ui-date-picker-calendar] calendar-month::part(th),
257
+ [data-ui-date-picker-calendar] calendar-month::part(td) {
258
+ block-size: var(--ui-date-picker-week-row-size);
259
+ inline-size: calc(100% / 7);
260
+ max-inline-size: none;
261
+ min-inline-size: 0;
262
+ overflow: hidden;
263
+ padding: 0;
264
+ text-align: center;
265
+ }
266
+
267
+ [data-ui-date-picker-calendar] calendar-month::part(weekday) {
268
+ align-items: center;
269
+ color: var(--color-foreground-subtle);
270
+ display: inline-flex;
271
+ font-size: var(--text-xs);
272
+ font-weight: var(--font-weight-medium);
273
+ inline-size: 100%;
274
+ justify-content: center;
275
+ line-height: var(--text-xs--line-height);
276
+ overflow: hidden;
277
+ }
278
+
279
+ [data-ui-date-picker-calendar] calendar-month::part(button) {
280
+ align-items: center;
281
+ background: transparent;
282
+ border: 0;
283
+ border-radius: var(--radius-3);
284
+ color: var(--color-foreground);
285
+ display: inline-flex;
286
+ block-size: 2rem;
287
+ inline-size: 2rem;
288
+ font-size: var(--text-sm);
289
+ justify-content: center;
290
+ line-height: var(--text-sm--line-height);
291
+ margin-inline: auto;
292
+ outline: none;
293
+ padding: 0;
294
+ }
295
+
296
+ [data-ui-date-picker-calendar] calendar-month::part(day) {
297
+ border-radius: var(--radius-3);
298
+ }
299
+
300
+ [data-ui-date-picker-calendar] calendar-month::part(button):hover {
301
+ background-color: var(--color-base-a2);
302
+ color: var(--color-foreground);
303
+ }
304
+
305
+ [data-ui-date-picker-calendar] calendar-month::part(button):focus-visible {
306
+ box-shadow: var(--shadow-focus);
307
+ }
308
+
309
+ [data-ui-date-picker-calendar] calendar-month::part(outside) {
310
+ color: var(--color-foreground-subtle);
311
+ }
312
+
313
+ [data-ui-date-picker-calendar] calendar-month::part(today) {
314
+ background-image: radial-gradient(circle at 50% calc(100% - 0.1875rem), currentColor 0.125rem, transparent 0.15625rem);
315
+ }
316
+
317
+ [data-ui-date-picker-calendar] calendar-month::part(selected),
318
+ [data-ui-date-picker-calendar] calendar-month::part(range-start),
319
+ [data-ui-date-picker-calendar] calendar-month::part(range-end) {
320
+ background-color: var(--ui-date-picker-selected-bg);
321
+ color: var(--ui-date-picker-selected-fg);
322
+ }
323
+
324
+ [data-ui-date-picker-calendar] calendar-month::part(selected):hover,
325
+ [data-ui-date-picker-calendar] calendar-month::part(range-start):hover,
326
+ [data-ui-date-picker-calendar] calendar-month::part(range-end):hover {
327
+ background-color: var(--ui-date-picker-selected-bg-hover);
328
+ color: var(--ui-date-picker-selected-fg);
329
+ }
330
+
331
+ [data-ui-date-picker-calendar] calendar-month::part(range-inner) {
332
+ background-color: var(--ui-date-picker-range-bg);
333
+ border-radius: 0;
334
+ color: var(--color-foreground);
335
+ inline-size: 100%;
336
+ margin-inline: 0;
337
+ width: 100%;
338
+ }
339
+
340
+ [data-ui-date-picker-calendar] calendar-month::part(range-inner):hover {
341
+ background-color: var(--ui-date-picker-range-bg-hover);
342
+ color: var(--color-foreground);
343
+ }
344
+
345
+ [data-ui-date-picker-calendar] calendar-month::part(range-start) {
346
+ border-start-end-radius: 0;
347
+ border-end-end-radius: 0;
348
+ inline-size: 100%;
349
+ margin-inline: 0;
350
+ width: 100%;
351
+ }
352
+
353
+ [data-ui-date-picker-calendar] calendar-month::part(range-end) {
354
+ border-start-start-radius: 0;
355
+ border-end-start-radius: 0;
356
+ inline-size: 100%;
357
+ margin-inline: 0;
358
+ width: 100%;
359
+ }
360
+
361
+ [data-ui-date-picker-calendar] calendar-month::part(range-start range-end) {
362
+ border-radius: var(--radius-3);
363
+ }
364
+
365
+ [data-ui-date-picker-calendar] calendar-select-month::part(label),
366
+ [data-ui-date-picker-calendar] calendar-select-year::part(label) {
367
+ display: none;
368
+ }
369
+
370
+ [data-ui-date-picker-calendar] calendar-select-month::part(select),
371
+ [data-ui-date-picker-calendar] calendar-select-year::part(select) {
372
+ appearance: auto;
373
+ background-color: var(--color-base-a2);
374
+ border: 1px solid transparent;
375
+ border-radius: var(--radius-3);
376
+ box-shadow: none;
377
+ block-size: var(--ui-control-height-md);
378
+ color: var(--color-foreground);
379
+ font-size: var(--text-sm);
380
+ font-weight: var(--font-weight-medium);
381
+ line-height: var(--text-sm--line-height);
382
+ min-inline-size: 4.75rem;
383
+ outline: none;
384
+ padding-block: 0;
385
+ padding-inline: 0.5rem 0.25rem;
386
+ }
387
+
388
+ [data-ui-date-picker-calendar] calendar-select-month::part(select):hover,
389
+ [data-ui-date-picker-calendar] calendar-select-year::part(select):hover {
390
+ background-color: var(--color-base-a3);
391
+ border-color: transparent;
392
+ }
393
+
394
+ [data-ui-date-picker-calendar] calendar-select-month::part(select):focus-visible,
395
+ [data-ui-date-picker-calendar] calendar-select-year::part(select):focus-visible {
396
+ box-shadow: var(--shadow-focus);
397
+ }
398
+
399
+ @media (max-width: 40rem) {
400
+ [data-ui-date-picker-calendar]::part(months) {
401
+ grid-template-columns: minmax(var(--ui-date-picker-month-min), 1fr);
402
+ }
403
+ }
404
+ }
@@ -0,0 +1,12 @@
1
+ @layer components {
2
+ [data-ui-field][data-layout="grid"] > [data-ui-field-label] {
3
+ grid-column: 1;
4
+ grid-row: 1;
5
+ }
6
+
7
+ [data-ui-field][data-layout="grid"] > [data-ui-field-description],
8
+ [data-ui-field][data-layout="grid"] > [data-ui-field-error],
9
+ [data-ui-field][data-layout="grid"] > [data-ui-field-control] {
10
+ grid-column: 2;
11
+ }
12
+ }
@@ -0,0 +1,10 @@
1
+ @layer components {
2
+ .ui-image-outline {
3
+ outline: 1px solid rgba(0, 0, 0, 0.1);
4
+ outline-offset: -1px;
5
+ }
6
+
7
+ .dark .ui-image-outline {
8
+ outline-color: rgba(255, 255, 255, 0.1);
9
+ }
10
+ }
@@ -0,0 +1,11 @@
1
+ @layer components {
2
+ [data-ui-input-group] > [data-ui-input-root],
3
+ [data-ui-input-group] [data-ui-input-control] {
4
+ display: contents !important;
5
+ }
6
+
7
+ [data-ui-input-group] > :not([data-ui-input-root]):not([data-ui-input-control]) {
8
+ cursor: default;
9
+ user-select: none;
10
+ }
11
+ }
@@ -0,0 +1,100 @@
1
+ @layer components {
2
+ [data-ui-radio]:has([data-ui-radio-input]:focus-visible) {
3
+ box-shadow: var(--shadow-focus);
4
+ }
5
+
6
+ [data-ui-radio-group][data-variant="cards"] > [data-ui-radio],
7
+ [data-ui-radio][data-variant="cards"] {
8
+ align-items: center;
9
+ background-color: var(--color-surface);
10
+ border-radius: var(--radius-3);
11
+ box-shadow: var(--shadow-border);
12
+ min-height: var(--ui-control-height-xlg);
13
+ padding: 0.875rem 1rem;
14
+ }
15
+
16
+ [data-ui-radio-group][data-variant="cards"] > [data-ui-radio][data-invalid],
17
+ [data-ui-radio][data-variant="cards"][data-invalid] {
18
+ background-color: var(--color-danger-surface);
19
+ box-shadow: 0 0 0 1px var(--color-danger-border);
20
+ }
21
+
22
+ [data-ui-radio-group][data-variant="pills"] > [data-ui-radio],
23
+ [data-ui-radio][data-variant="pills"] {
24
+ align-items: center;
25
+ background-color: var(--color-surface);
26
+ border-radius: var(--radius-full);
27
+ box-shadow: var(--shadow-border);
28
+ min-height: var(--ui-control-height-md);
29
+ padding: 0.25rem 0.75rem;
30
+ }
31
+
32
+ [data-ui-radio-group][data-variant="pills"] > [data-ui-radio][data-checked],
33
+ [data-ui-radio][data-variant="pills"][data-checked] {
34
+ background-color: var(--color-accent-surface);
35
+ color: var(--color-foreground);
36
+ box-shadow: 0 0 0 1px var(--color-accent-border), var(--shadow-1);
37
+ }
38
+
39
+ [data-ui-radio-group][data-variant="pills"] > [data-ui-radio][data-checked]:hover:not([data-disabled]),
40
+ [data-ui-radio][data-variant="pills"][data-checked]:hover:not([data-disabled]) {
41
+ background-color: var(--color-accent-surface);
42
+ box-shadow: 0 0 0 1px var(--color-accent-border), var(--shadow-1);
43
+ }
44
+
45
+ [data-ui-radio-group][data-indicator="false"] [data-ui-radio-indicator],
46
+ [data-ui-radio][data-indicator="false"] [data-ui-radio-indicator] {
47
+ display: none !important;
48
+ }
49
+
50
+ [data-ui-radio-group][data-placement="trailing"] [data-ui-radio-indicator],
51
+ [data-ui-radio][data-placement="trailing"] > [data-ui-radio-indicator] {
52
+ margin-left: auto;
53
+ order: 10;
54
+ }
55
+
56
+ [data-ui-radio-group][data-placement="center"] [data-ui-radio-indicator],
57
+ [data-ui-radio][data-placement="center"] > [data-ui-radio-indicator] {
58
+ left: 50%;
59
+ margin: 0;
60
+ position: absolute;
61
+ top: 50%;
62
+ transform: translate(-50%, -50%);
63
+ }
64
+
65
+ [data-ui-radio-group][data-placement="top-leading"] [data-ui-radio-indicator],
66
+ [data-ui-radio][data-placement="top-leading"] > [data-ui-radio-indicator],
67
+ [data-ui-radio-group][data-placement="top-trailing"] [data-ui-radio-indicator],
68
+ [data-ui-radio][data-placement="top-trailing"] > [data-ui-radio-indicator],
69
+ [data-ui-radio-group][data-placement="bottom-leading"] [data-ui-radio-indicator],
70
+ [data-ui-radio][data-placement="bottom-leading"] > [data-ui-radio-indicator],
71
+ [data-ui-radio-group][data-placement="bottom-trailing"] [data-ui-radio-indicator],
72
+ [data-ui-radio][data-placement="bottom-trailing"] > [data-ui-radio-indicator] {
73
+ margin: 0;
74
+ position: absolute;
75
+ }
76
+
77
+ [data-ui-radio-group][data-placement="top-leading"] [data-ui-radio-indicator],
78
+ [data-ui-radio][data-placement="top-leading"] > [data-ui-radio-indicator] {
79
+ left: 0.75rem;
80
+ top: 0.75rem;
81
+ }
82
+
83
+ [data-ui-radio-group][data-placement="top-trailing"] [data-ui-radio-indicator],
84
+ [data-ui-radio][data-placement="top-trailing"] > [data-ui-radio-indicator] {
85
+ right: 0.75rem;
86
+ top: 0.75rem;
87
+ }
88
+
89
+ [data-ui-radio-group][data-placement="bottom-leading"] [data-ui-radio-indicator],
90
+ [data-ui-radio][data-placement="bottom-leading"] > [data-ui-radio-indicator] {
91
+ bottom: 0.75rem;
92
+ left: 0.75rem;
93
+ }
94
+
95
+ [data-ui-radio-group][data-placement="bottom-trailing"] [data-ui-radio-indicator],
96
+ [data-ui-radio][data-placement="bottom-trailing"] > [data-ui-radio-indicator] {
97
+ bottom: 0.75rem;
98
+ right: 0.75rem;
99
+ }
100
+ }
@@ -0,0 +1,27 @@
1
+ @layer components {
2
+ [data-ui-scroll-area][data-size="md"] {
3
+ --ui-scrollbar-size: 0.5rem;
4
+ }
5
+
6
+ [data-ui-scroll-area-viewport] {
7
+ max-height: inherit;
8
+ max-width: inherit;
9
+ }
10
+
11
+ [data-ui-scroll-area-viewport][data-hide-native] {
12
+ -ms-overflow-style: none;
13
+ scrollbar-width: none;
14
+ }
15
+
16
+ [data-ui-scroll-area-viewport][data-hide-native]::-webkit-scrollbar {
17
+ display: none;
18
+ }
19
+
20
+ [data-ui-scroll-area-scrollbar][data-orientation="vertical"] {
21
+ height: calc(100% - (var(--ui-scrollbar-inset) * 2));
22
+ }
23
+
24
+ [data-ui-scroll-area-scrollbar][data-orientation="horizontal"] {
25
+ width: calc(100% - (var(--ui-scrollbar-inset) * 2));
26
+ }
27
+ }
@@ -0,0 +1,10 @@
1
+ @layer components {
2
+ [data-ui-select-native][aria-invalid="true"] {
3
+ border-color: var(--ui-control-border-invalid);
4
+ }
5
+
6
+ [data-ui-select-native][aria-invalid="true"]:focus {
7
+ border-color: var(--ui-control-border-invalid-focus);
8
+ box-shadow: var(--shadow-control), 0 0 0 3px var(--color-danger-a4);
9
+ }
10
+ }
@@ -0,0 +1,10 @@
1
+ @layer components {
2
+ [data-ui-sidebar-state-icon] [data-ui-sidebar-state-icon-when] {
3
+ display: none;
4
+ }
5
+
6
+ [data-ui-sidebar-state-icon][data-state="closed"] [data-ui-sidebar-state-icon-when="closed"],
7
+ [data-ui-sidebar-state-icon][data-state="open"] [data-ui-sidebar-state-icon-when="open"] {
8
+ display: block;
9
+ }
10
+ }
@@ -0,0 +1,13 @@
1
+ @layer components {
2
+ [data-ui-theme-icon] [data-ui-theme-icon-when],
3
+ [data-ui-theme-text] [data-ui-theme-text-when] {
4
+ display: none;
5
+ }
6
+
7
+ html:not(.dark) [data-ui-theme-icon] [data-ui-theme-icon-when="light"],
8
+ html.dark [data-ui-theme-icon] [data-ui-theme-icon-when="dark"],
9
+ html:not(.dark) [data-ui-theme-text] [data-ui-theme-text-when="light"],
10
+ html.dark [data-ui-theme-text] [data-ui-theme-text-when="dark"] {
11
+ display: block;
12
+ }
13
+ }
@@ -0,0 +1,43 @@
1
+ /*
2
+ Keep collapsed stack layout unlayered so these state selectors outrank the
3
+ outlet's generated utility classes without extra !important declarations.
4
+ */
5
+
6
+ [data-ui-toast-outlet][data-stack="collapsed"] {
7
+ display: block;
8
+ height: var(--ui-toast-stack-height);
9
+ }
10
+
11
+ [data-ui-toast-outlet][data-stack="collapsed"][data-stack-expanded="true"] {
12
+ height: var(--ui-toast-stack-expanded-height);
13
+ }
14
+
15
+ [data-ui-toast-outlet][data-stack="collapsed"] > [data-ui-toast] {
16
+ inset-inline: 0;
17
+ position: absolute;
18
+ top: 0;
19
+ opacity: var(--ui-toast-stack-opacity, 1);
20
+ transform: translateY(var(--ui-toast-stack-offset, 0px)) scale(var(--ui-toast-stack-scale, 1));
21
+ transform-origin: top center;
22
+ }
23
+
24
+ [data-ui-toast-outlet][data-stack="collapsed"][data-position^="bottom"] > [data-ui-toast] {
25
+ bottom: 0;
26
+ top: auto;
27
+ transform-origin: bottom center;
28
+ }
29
+
30
+ [data-ui-toast-outlet][data-stack="collapsed"] > [data-ui-toast]:not(:first-child) {
31
+ height: var(--ui-toast-front-height);
32
+ }
33
+
34
+ [data-ui-toast-outlet][data-stack="collapsed"][data-stack-expanded="true"] > [data-ui-toast] {
35
+ height: auto;
36
+ opacity: 1;
37
+ position: relative;
38
+ transform: none;
39
+ }
40
+
41
+ [data-ui-toast-outlet][data-stack="collapsed"][data-stack-expanded="true"] > [data-ui-toast]:not(:first-child) {
42
+ margin-top: var(--spacing-2);
43
+ }
@@ -0,0 +1,21 @@
1
+ /*
2
+ Component CSS import point.
3
+
4
+ Add files here only when a component needs selectors or browser features that
5
+ TypeScript style recipes cannot express cleanly, such as pseudo-elements,
6
+ ::part(...), :has(...), native quirks, or child-order selectors.
7
+ */
8
+
9
+ @import "./components/brand/styles.css";
10
+ @import "./components/scroll-area/styles.css";
11
+ @import "./components/select/styles.css";
12
+ @import "./components/field/styles.css";
13
+ @import "./components/radio/styles.css";
14
+ @import "./components/date-picker/styles.css";
15
+ @import "./components/button/styles.css";
16
+ @import "./components/accordion/styles.css";
17
+ @import "./components/toast/styles.css";
18
+ @import "./components/input/styles.css";
19
+ @import "./components/image/styles.css";
20
+ @import "./components/sidebar/styles.css";
21
+ @import "./components/theme/styles.css";