@vireo-ai/trellis-ui 0.1.0 → 0.1.2

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 (51) hide show
  1. package/package.json +4 -1
  2. package/src/components/accordion/styles.css +16 -0
  3. package/src/components/brand/styles.css +8 -0
  4. package/src/components/button/styles.css +178 -0
  5. package/src/components/date-picker/styles.css +426 -0
  6. package/src/components/field/styles.css +12 -0
  7. package/src/components/file-upload/styles.css +28 -0
  8. package/src/components/input/styles.css +11 -0
  9. package/src/components/radio/styles.css +112 -0
  10. package/src/components/scroll-area/styles.css +27 -0
  11. package/src/components/select/styles.css +51 -0
  12. package/src/components/sidebar/styles.css +10 -0
  13. package/src/components/toast/styles.css +43 -0
  14. package/src/components.css +20 -0
  15. package/src/theme.css +332 -46
  16. package/trellis_ui/static/trellis_ui/css/styles.css +955 -214
  17. package/trellis_ui/static/trellis_ui/js/esm/index.js +1149 -910
  18. package/trellis_ui/static/trellis_ui/js/esm/index.js.map +1 -1
  19. package/trellis_ui/static/trellis_ui/js/index.js +7 -7
  20. package/types/components/app/contract.d.ts +7 -2
  21. package/types/components/badge/contract.d.ts +8 -6
  22. package/types/components/box/contract.d.ts +29 -21
  23. package/types/components/box/index.d.ts +1 -1
  24. package/types/components/button/contract.d.ts +10 -7
  25. package/types/components/card/contract.d.ts +25 -11
  26. package/types/components/combobox/contract.d.ts +6 -3
  27. package/types/components/common.d.ts +239 -2
  28. package/types/components/date-picker/contract.d.ts +7 -4
  29. package/types/components/file-upload/index.d.ts +1 -0
  30. package/types/components/frame/contract.d.ts +43 -18
  31. package/types/components/frame/index.d.ts +2 -2
  32. package/types/components/heading/contract.d.ts +3 -2
  33. package/types/components/input/contract.d.ts +7 -3
  34. package/types/components/menu/contract.d.ts +1 -1
  35. package/types/components/modal/contract.d.ts +12 -6
  36. package/types/components/select/contract.d.ts +10 -7
  37. package/types/components/sidebar/contract.d.ts +1 -1
  38. package/types/components/table/contract.d.ts +1 -1
  39. package/types/components/tabs/index.d.ts +1 -0
  40. package/types/components/text/contract.d.ts +3 -2
  41. package/types/components/textarea/contract.d.ts +1 -0
  42. package/types/components/toast/contract.d.ts +11 -5
  43. package/types/components/toast/index.d.ts +2 -1
  44. package/types/index.d.ts +4 -4
  45. package/types/motion/animate.d.ts +4 -0
  46. package/types/motion/presence.d.ts +1 -1
  47. package/types/runtime/index.d.ts +4 -4
  48. package/types/runtime/manifest.d.ts +5 -1
  49. package/types/runtime/merge-bindings.d.ts +9 -0
  50. package/types/runtime/theme.d.ts +8 -3
  51. package/types/runtime/props.d.ts +0 -9
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.2",
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,178 @@
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="surface"],
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="surface"]:hover,
39
+ [data-ui-button][data-variant="surface"]:active {
40
+ background-color: var(--ui-control-bg) !important;
41
+ }
42
+
43
+ [data-ui-button][data-variant="outline"]:hover,
44
+ [data-ui-button][data-variant="outline"]:active {
45
+ background-color: transparent !important;
46
+ }
47
+
48
+ [data-ui-button][data-variant="solid"] {
49
+ --_ui-button-overlay: rgb(255 255 255 / 0.10);
50
+ --_ui-button-overlay-active: rgb(255 255 255 / 0.16);
51
+ --_ui-button-highlight: rgb(255 255 255 / 0.18);
52
+ box-shadow:
53
+ inset 0 1px var(--_ui-button-highlight),
54
+ var(--shadow-1) !important;
55
+ }
56
+
57
+ [data-ui-button][data-variant="solid"][data-color="neutral"]:hover,
58
+ [data-ui-button][data-variant="solid"][data-color="neutral"]:active {
59
+ background-color: var(--color-base-12) !important;
60
+ }
61
+
62
+ [data-ui-button][data-variant="solid"][data-color="accent"]:hover,
63
+ [data-ui-button][data-variant="solid"][data-color="accent"]:active {
64
+ background-color: var(--color-accent-solid) !important;
65
+ }
66
+
67
+ [data-ui-button][data-variant="soft"][data-color="neutral"] {
68
+ --_ui-button-overlay: var(--color-base-a3);
69
+ --_ui-button-overlay-active: var(--color-base-a4);
70
+ }
71
+
72
+ [data-ui-button][data-variant="soft"][data-color="neutral"]:hover,
73
+ [data-ui-button][data-variant="soft"][data-color="neutral"]:active {
74
+ background-color: var(--color-base-a2) !important;
75
+ }
76
+
77
+ [data-ui-button][data-variant="soft"][data-color="accent"] {
78
+ --_ui-button-overlay: var(--color-accent-a3);
79
+ --_ui-button-overlay-active: var(--color-accent-a4);
80
+ }
81
+
82
+ [data-ui-button][data-variant="soft"][data-color="accent"]:hover,
83
+ [data-ui-button][data-variant="soft"][data-color="accent"]:active {
84
+ background-color: var(--color-accent-surface) !important;
85
+ }
86
+
87
+ [data-ui-button][data-variant="soft"][data-color="danger"] {
88
+ --_ui-button-overlay: var(--color-danger-a3);
89
+ --_ui-button-overlay-active: var(--color-danger-a4);
90
+ }
91
+
92
+ [data-ui-button][data-variant="soft"][data-color="danger"]:hover,
93
+ [data-ui-button][data-variant="soft"][data-color="danger"]:active {
94
+ background-color: var(--color-danger-surface) !important;
95
+ }
96
+
97
+ [data-ui-button][data-variant="ghost"] {
98
+ --_ui-button-overlay: var(--color-base-a3);
99
+ --_ui-button-overlay-active: var(--color-base-a4);
100
+ }
101
+
102
+ [data-ui-button][data-variant="ghost"]:hover,
103
+ [data-ui-button][data-variant="ghost"]:active {
104
+ background-color: transparent !important;
105
+ }
106
+
107
+ [data-ui-button][data-variant="ghost"][data-color="accent"],
108
+ [data-ui-button][data-variant="outline"][data-color="accent"] {
109
+ --_ui-button-overlay: var(--color-accent-a3);
110
+ --_ui-button-overlay-active: var(--color-accent-a4);
111
+ }
112
+
113
+ [data-ui-button][data-variant="ghost"][data-color="danger"],
114
+ [data-ui-button][data-variant="outline"][data-color="danger"] {
115
+ --_ui-button-overlay: var(--color-danger-a3);
116
+ --_ui-button-overlay-active: var(--color-danger-a4);
117
+ }
118
+
119
+ [data-ui-button][data-variant="solid"][data-color="danger"]:hover,
120
+ [data-ui-button][data-variant="solid"][data-color="danger"]:active {
121
+ background-color: var(--color-danger-solid) !important;
122
+ }
123
+
124
+ [data-ui-button][data-ui-loading] {
125
+ cursor: wait;
126
+ }
127
+
128
+ [data-ui-button]:disabled,
129
+ [data-ui-button][aria-disabled="true"] {
130
+ pointer-events: none;
131
+ }
132
+
133
+ [data-ui-button]:is(:disabled, [aria-disabled="true"]):not([data-ui-loading]) {
134
+ opacity: 0.5;
135
+ }
136
+
137
+ [data-ui-button] [data-ui-button-loading-indicator] {
138
+ opacity: 0;
139
+ }
140
+
141
+ [data-ui-button][data-ui-loading] [data-ui-button-content] {
142
+ opacity: 0;
143
+ }
144
+
145
+ [data-ui-button][data-ui-loading] [data-ui-button-loading-indicator] {
146
+ opacity: 1;
147
+ }
148
+
149
+ [data-ui-button-group] > [data-ui-button] {
150
+ position: relative;
151
+ }
152
+
153
+ [data-ui-button-group] > [data-ui-button]:hover {
154
+ z-index: 2;
155
+ }
156
+
157
+ [data-ui-button-group] > [data-ui-button]:focus-visible {
158
+ z-index: 3;
159
+ }
160
+
161
+ [data-ui-button-group] > [data-ui-button]:not(:first-child) {
162
+ margin-left: -1px;
163
+ }
164
+
165
+ [data-ui-button-group] > [data-ui-button]:first-child:not(:last-child) {
166
+ border-top-right-radius: 0 !important;
167
+ border-bottom-right-radius: 0 !important;
168
+ }
169
+
170
+ [data-ui-button-group] > [data-ui-button]:not(:first-child):not(:last-child) {
171
+ border-radius: 0 !important;
172
+ }
173
+
174
+ [data-ui-button-group] > [data-ui-button]:last-child:not(:first-child) {
175
+ border-top-left-radius: 0 !important;
176
+ border-bottom-left-radius: 0 !important;
177
+ }
178
+ }
@@ -0,0 +1,426 @@
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-inverse-fg);
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-native]:is(:hover, :active):not(:focus):not(:disabled):not([aria-invalid="true"]) {
23
+ --ui-control-shadow: var(--ui-control-shadow-hover);
24
+ }
25
+
26
+ [data-ui-date-picker-native]:focus:not([aria-invalid="true"]) {
27
+ --ui-control-shadow: var(--ui-control-shadow-focus);
28
+ box-shadow: var(--shadow-control), var(--shadow-focus);
29
+ }
30
+
31
+ [data-ui-date-picker-native][aria-invalid="true"] {
32
+ --ui-control-shadow: var(--ui-control-shadow-invalid);
33
+ }
34
+
35
+ [data-ui-date-picker-native][aria-invalid="true"]:is(:hover, :active):not(:focus):not(:disabled) {
36
+ --ui-control-shadow: var(--ui-control-shadow-invalid-hover);
37
+ }
38
+
39
+ [data-ui-date-picker-native][aria-invalid="true"]:focus {
40
+ --ui-control-shadow: var(--ui-control-shadow-invalid-focus);
41
+ box-shadow: var(--shadow-danger-focus);
42
+ }
43
+
44
+ [data-ui-date-picker-calendar] {
45
+ --color-accent: var(--ui-date-picker-selected-bg);
46
+ --color-text-on-accent: var(--ui-date-picker-selected-fg);
47
+ color: var(--color-foreground);
48
+ inline-size: max-content;
49
+ max-inline-size: none;
50
+ }
51
+
52
+ [data-ui-date-picker-panel] {
53
+ inline-size: max-content;
54
+ max-inline-size: calc(100vw - 2rem);
55
+ }
56
+
57
+ [data-ui-date-picker-panel]:not(:has([data-ui-date-picker-presets])) {
58
+ inline-size: max-content;
59
+ grid-template-columns: auto !important;
60
+ }
61
+
62
+ [data-ui-date-picker-panel]:not(:has([data-ui-date-picker-presets])):has([data-ui-date-picker-calendar][months="2"]) {
63
+ inline-size: max-content;
64
+ }
65
+
66
+ [data-ui-date-picker-panel]:not(:has([data-ui-date-picker-presets])):has([data-ui-date-picker-calendar][months="3"]) {
67
+ inline-size: max-content;
68
+ }
69
+
70
+ [data-ui-date-picker-panel]:has([data-ui-date-picker-presets]) {
71
+ inline-size: max-content;
72
+ }
73
+
74
+ [data-ui-date-picker-calendar-wrap] {
75
+ block-size: 100%;
76
+ inline-size: 100%;
77
+ max-inline-size: calc(100vw - 2rem);
78
+ }
79
+
80
+ [data-ui-date-picker-calendar-wrap]:not(:has([data-ui-date-picker-presets])) {
81
+ inline-size: 100%;
82
+ }
83
+
84
+ [data-ui-date-picker-calendar-today] {
85
+ align-items: center;
86
+ background-color: transparent;
87
+ border: 0;
88
+ border-radius: var(--radius-2);
89
+ color: var(--color-foreground-muted);
90
+ display: inline-flex;
91
+ block-size: 1.75rem;
92
+ inline-size: 1.75rem;
93
+ justify-content: center;
94
+ padding: 0;
95
+ position: absolute;
96
+ right: 5rem;
97
+ top: var(--ui-popover-padding);
98
+ z-index: 1;
99
+ }
100
+
101
+ [data-ui-date-picker-today-day] {
102
+ align-items: center;
103
+ color: var(--color-foreground);
104
+ display: flex;
105
+ font-size: 0.5625rem;
106
+ font-weight: var(--font-weight-semibold);
107
+ inset-block: 0.3125rem 0;
108
+ inset-inline: 0;
109
+ justify-content: center;
110
+ line-height: 1;
111
+ position: absolute;
112
+ text-align: center;
113
+ }
114
+
115
+ [data-ui-date-picker-today-icon] {
116
+ block-size: 1.125rem;
117
+ border: 1.5px solid currentColor;
118
+ border-radius: var(--radius-2);
119
+ display: block;
120
+ inline-size: 1.125rem;
121
+ overflow: hidden;
122
+ position: relative;
123
+ }
124
+
125
+ [data-ui-date-picker-today-icon]::before {
126
+ background-color: currentColor;
127
+ block-size: 0.1875rem;
128
+ content: "";
129
+ inset-block-start: 0;
130
+ inset-inline: 0;
131
+ position: absolute;
132
+ }
133
+
134
+ [data-ui-date-picker-today-icon]::after {
135
+ background:
136
+ linear-gradient(currentColor 0 0) 0.25rem 0 / 0.125rem 0.25rem no-repeat,
137
+ linear-gradient(currentColor 0 0) calc(100% - 0.25rem) 0 / 0.125rem 0.25rem no-repeat;
138
+ content: "";
139
+ inset: -0.1875rem 0 0;
140
+ position: absolute;
141
+ }
142
+
143
+ [data-ui-date-picker-calendar-today]:hover {
144
+ background-color: var(--color-base-a2);
145
+ color: var(--color-foreground);
146
+ }
147
+
148
+ [data-ui-date-picker-calendar-today]:focus-visible {
149
+ box-shadow: var(--shadow-focus);
150
+ outline: none;
151
+ }
152
+
153
+ [data-ui-date-picker-calendar]::part(container) {
154
+ display: grid;
155
+ gap: 0.625rem;
156
+ }
157
+
158
+ [data-ui-date-picker-calendar]::part(header) {
159
+ align-items: center;
160
+ display: grid;
161
+ column-gap: 0.25rem;
162
+ grid-template-columns: minmax(0, 1fr) auto auto;
163
+ min-block-size: 1.75rem;
164
+ min-width: 0;
165
+ }
166
+
167
+ [data-ui-date-picker-calendar]::part(heading) {
168
+ align-items: center;
169
+ color: var(--color-foreground);
170
+ display: flex;
171
+ font-size: var(--text-sm);
172
+ font-weight: var(--font-weight-semibold);
173
+ gap: 0.375rem;
174
+ line-height: var(--text-sm--line-height);
175
+ min-width: 0;
176
+ text-align: left;
177
+ }
178
+
179
+ [data-ui-date-picker-calendar]::part(button) {
180
+ align-items: center;
181
+ background: transparent;
182
+ border: 0;
183
+ border-radius: var(--radius-2);
184
+ color: var(--color-foreground-muted);
185
+ display: inline-flex;
186
+ block-size: 1.75rem;
187
+ inline-size: 1.75rem;
188
+ justify-content: center;
189
+ outline: none;
190
+ padding: 0;
191
+ }
192
+
193
+ [data-ui-date-picker-calendar]::part(previous) {
194
+ grid-column: 2;
195
+ grid-row: 1;
196
+ }
197
+
198
+ [data-ui-date-picker-calendar]::part(next) {
199
+ grid-column: 3;
200
+ grid-row: 1;
201
+ }
202
+
203
+ [data-ui-date-picker-calendar]::part(button):hover {
204
+ background-color: var(--color-base-a2);
205
+ color: var(--color-foreground);
206
+ }
207
+
208
+ [data-ui-date-picker-calendar]::part(button):focus-visible {
209
+ box-shadow: var(--shadow-focus);
210
+ }
211
+
212
+ [data-ui-date-picker-calendar]::part(disabled) {
213
+ cursor: not-allowed;
214
+ opacity: 0.4;
215
+ }
216
+
217
+ [data-ui-date-picker-calendar]::part(months) {
218
+ align-items: start;
219
+ display: grid;
220
+ gap: 0.75rem;
221
+ grid-template-columns: repeat(var(--ui-date-picker-month-columns, 1), var(--ui-date-picker-month-min));
222
+ justify-content: center;
223
+ min-width: 0;
224
+ }
225
+
226
+ [data-ui-date-picker-calendar] [data-ui-date-picker-calendar-icon] {
227
+ color: var(--color-foreground-muted);
228
+ display: block;
229
+ pointer-events: none;
230
+ }
231
+
232
+ [data-ui-date-picker-calendar] calendar-month {
233
+ --color-accent: var(--ui-date-picker-selected-bg);
234
+ --color-text-on-accent: var(--ui-date-picker-selected-fg);
235
+ inline-size: var(--ui-date-picker-month-min);
236
+ min-inline-size: var(--ui-date-picker-month-min);
237
+ }
238
+
239
+ [data-ui-date-picker-calendar][data-fixed-weeks="true"] calendar-month {
240
+ min-block-size: calc(
241
+ var(--ui-date-picker-month-heading-size) +
242
+ (var(--ui-date-picker-week-row-size) * 7) +
243
+ (var(--ui-date-picker-week-gap) * 6) +
244
+ 0.25rem
245
+ );
246
+ }
247
+
248
+ [data-ui-date-picker-calendar][data-hide-month-heading="true"][data-fixed-weeks="true"] calendar-month {
249
+ min-block-size: calc(
250
+ (var(--ui-date-picker-week-row-size) * 7) +
251
+ (var(--ui-date-picker-week-gap) * 6)
252
+ );
253
+ }
254
+
255
+ [data-ui-date-picker-calendar] calendar-month::part(table) {
256
+ border-collapse: separate;
257
+ border-spacing: 0 0.125rem;
258
+ inline-size: var(--ui-date-picker-month-min);
259
+ max-inline-size: none;
260
+ min-inline-size: var(--ui-date-picker-month-min);
261
+ table-layout: fixed;
262
+ }
263
+
264
+ [data-ui-date-picker-calendar] calendar-month::part(heading) {
265
+ color: var(--color-foreground);
266
+ font-size: var(--text-sm);
267
+ font-weight: var(--font-weight-medium);
268
+ line-height: var(--text-sm--line-height);
269
+ min-block-size: var(--ui-date-picker-month-heading-size);
270
+ padding-block: 0.25rem;
271
+ text-align: center;
272
+ }
273
+
274
+ [data-ui-date-picker-calendar][data-hide-month-heading="true"] calendar-month::part(heading) {
275
+ display: none;
276
+ }
277
+
278
+ [data-ui-date-picker-calendar] calendar-month::part(th),
279
+ [data-ui-date-picker-calendar] calendar-month::part(td) {
280
+ block-size: var(--ui-date-picker-week-row-size);
281
+ inline-size: calc(100% / 7);
282
+ max-inline-size: none;
283
+ min-inline-size: 0;
284
+ overflow: hidden;
285
+ padding: 0;
286
+ text-align: center;
287
+ }
288
+
289
+ [data-ui-date-picker-calendar] calendar-month::part(weekday) {
290
+ align-items: center;
291
+ color: var(--color-foreground-subtle);
292
+ display: inline-flex;
293
+ font-size: var(--text-xs);
294
+ font-weight: var(--font-weight-medium);
295
+ inline-size: 100%;
296
+ justify-content: center;
297
+ line-height: var(--text-xs--line-height);
298
+ overflow: hidden;
299
+ }
300
+
301
+ [data-ui-date-picker-calendar] calendar-month::part(button) {
302
+ align-items: center;
303
+ background: transparent;
304
+ border: 0;
305
+ border-radius: var(--radius-3);
306
+ color: var(--color-foreground);
307
+ display: inline-flex;
308
+ block-size: 2rem;
309
+ inline-size: 2rem;
310
+ font-size: var(--text-sm);
311
+ justify-content: center;
312
+ line-height: var(--text-sm--line-height);
313
+ margin-inline: auto;
314
+ outline: none;
315
+ padding: 0;
316
+ }
317
+
318
+ [data-ui-date-picker-calendar] calendar-month::part(day) {
319
+ border-radius: var(--radius-3);
320
+ }
321
+
322
+ [data-ui-date-picker-calendar] calendar-month::part(button):hover {
323
+ background-color: var(--color-base-a2);
324
+ color: var(--color-foreground);
325
+ }
326
+
327
+ [data-ui-date-picker-calendar] calendar-month::part(button):focus-visible {
328
+ box-shadow: var(--shadow-focus);
329
+ }
330
+
331
+ [data-ui-date-picker-calendar] calendar-month::part(outside) {
332
+ color: var(--color-foreground-subtle);
333
+ }
334
+
335
+ [data-ui-date-picker-calendar] calendar-month::part(today) {
336
+ background-image: radial-gradient(circle at 50% calc(100% - 0.1875rem), currentColor 0.125rem, transparent 0.15625rem);
337
+ }
338
+
339
+ [data-ui-date-picker-calendar] calendar-month::part(selected),
340
+ [data-ui-date-picker-calendar] calendar-month::part(range-start),
341
+ [data-ui-date-picker-calendar] calendar-month::part(range-end) {
342
+ background-color: var(--ui-date-picker-selected-bg);
343
+ color: var(--ui-date-picker-selected-fg);
344
+ }
345
+
346
+ [data-ui-date-picker-calendar] calendar-month::part(selected):hover,
347
+ [data-ui-date-picker-calendar] calendar-month::part(range-start):hover,
348
+ [data-ui-date-picker-calendar] calendar-month::part(range-end):hover {
349
+ background-color: var(--ui-date-picker-selected-bg-hover);
350
+ color: var(--ui-date-picker-selected-fg);
351
+ }
352
+
353
+ [data-ui-date-picker-calendar] calendar-month::part(range-inner) {
354
+ background-color: var(--ui-date-picker-range-bg);
355
+ border-radius: 0;
356
+ color: var(--color-foreground);
357
+ inline-size: 100%;
358
+ margin-inline: 0;
359
+ width: 100%;
360
+ }
361
+
362
+ [data-ui-date-picker-calendar] calendar-month::part(range-inner):hover {
363
+ background-color: var(--ui-date-picker-range-bg-hover);
364
+ color: var(--color-foreground);
365
+ }
366
+
367
+ [data-ui-date-picker-calendar] calendar-month::part(range-start) {
368
+ border-start-end-radius: 0;
369
+ border-end-end-radius: 0;
370
+ inline-size: 100%;
371
+ margin-inline: 0;
372
+ width: 100%;
373
+ }
374
+
375
+ [data-ui-date-picker-calendar] calendar-month::part(range-end) {
376
+ border-start-start-radius: 0;
377
+ border-end-start-radius: 0;
378
+ inline-size: 100%;
379
+ margin-inline: 0;
380
+ width: 100%;
381
+ }
382
+
383
+ [data-ui-date-picker-calendar] calendar-month::part(range-start range-end) {
384
+ border-radius: var(--radius-3);
385
+ }
386
+
387
+ [data-ui-date-picker-calendar] calendar-select-month::part(label),
388
+ [data-ui-date-picker-calendar] calendar-select-year::part(label) {
389
+ display: none;
390
+ }
391
+
392
+ [data-ui-date-picker-calendar] calendar-select-month::part(select),
393
+ [data-ui-date-picker-calendar] calendar-select-year::part(select) {
394
+ appearance: auto;
395
+ background-color: var(--color-base-a2);
396
+ border: 1px solid transparent;
397
+ border-radius: var(--radius-3);
398
+ box-shadow: none;
399
+ block-size: var(--ui-control-height-md);
400
+ color: var(--color-foreground);
401
+ font-size: var(--text-sm);
402
+ font-weight: var(--font-weight-medium);
403
+ line-height: var(--text-sm--line-height);
404
+ min-inline-size: 4.75rem;
405
+ outline: none;
406
+ padding-block: 0;
407
+ padding-inline: 0.5rem 0.25rem;
408
+ }
409
+
410
+ [data-ui-date-picker-calendar] calendar-select-month::part(select):hover,
411
+ [data-ui-date-picker-calendar] calendar-select-year::part(select):hover {
412
+ background-color: var(--color-base-a3);
413
+ border-color: transparent;
414
+ }
415
+
416
+ [data-ui-date-picker-calendar] calendar-select-month::part(select):focus-visible,
417
+ [data-ui-date-picker-calendar] calendar-select-year::part(select):focus-visible {
418
+ box-shadow: var(--shadow-focus);
419
+ }
420
+
421
+ @media (max-width: 40rem) {
422
+ [data-ui-date-picker-calendar]::part(months) {
423
+ grid-template-columns: minmax(var(--ui-date-picker-month-min), 1fr);
424
+ }
425
+ }
426
+ }
@@ -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,28 @@
1
+ @layer components {
2
+ [data-ui-file-upload-dropzone]:is(:hover, :active):not(:focus-within):not([data-dragging]):not([data-disabled]):not([data-invalid]) {
3
+ --ui-control-shadow: var(--ui-control-shadow-hover);
4
+ }
5
+
6
+ [data-ui-file-upload-dropzone]:focus-within:not([data-invalid]) {
7
+ --ui-control-shadow: var(--ui-control-shadow-focus);
8
+ box-shadow: var(--shadow-control), var(--shadow-focus);
9
+ }
10
+
11
+ [data-ui-file-upload-dropzone][data-dragging]:not([data-invalid]) {
12
+ --ui-control-shadow: var(--ui-control-shadow-focus);
13
+ }
14
+
15
+ [data-ui-file-upload-dropzone][data-invalid] {
16
+ --ui-control-shadow: var(--ui-control-shadow-invalid);
17
+ }
18
+
19
+ [data-ui-file-upload-dropzone][data-invalid]:is(:hover, :active):not(:focus-within):not([data-dragging]):not([data-disabled]) {
20
+ --ui-control-shadow: var(--ui-control-shadow-invalid-hover);
21
+ }
22
+
23
+ [data-ui-file-upload-dropzone][data-invalid]:focus-within:not([data-disabled]),
24
+ [data-ui-file-upload-dropzone][data-invalid][data-dragging]:not([data-disabled]) {
25
+ --ui-control-shadow: var(--ui-control-shadow-invalid-focus);
26
+ box-shadow: var(--shadow-danger-focus);
27
+ }
28
+ }