@vivix-labs/project-studio 0.0.0-stage → 1.0.0-beta

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 (61) hide show
  1. package/dist/Inter-LICENSE.txt +93 -0
  2. package/dist/UI-LICENSE.txt +21 -0
  3. package/dist/assets/35a50-G5EJUNOC.svg +6 -0
  4. package/dist/assets/369ca-BISNKZ3M.svg +6 -0
  5. package/dist/assets/441bc-BCMNQ72W.svg +6 -0
  6. package/dist/assets/483f0-T6ZAGTDG.svg +6 -0
  7. package/dist/assets/6911b-ESLYKSC6.svg +6 -0
  8. package/dist/assets/Inter-LICENSE.txt +93 -0
  9. package/dist/assets/UI-system-LICENSE.txt +21 -0
  10. package/dist/assets/add-JY533O73.svg +5 -0
  11. package/dist/assets/area-P2WOMBT5.svg +9 -0
  12. package/dist/assets/b70bb-BTTOKPOH.svg +6 -0
  13. package/dist/assets/b9919-3S3O6YOT.svg +6 -0
  14. package/dist/assets/calendar-JI6USFRJ.svg +1 -0
  15. package/dist/assets/check-JSRRIXN5.svg +5 -0
  16. package/dist/assets/check-on-content-FQUVG3IZ.svg +5 -0
  17. package/dist/assets/chevron-down-K7YKS2EY.svg +5 -0
  18. package/dist/assets/chevron-left-JQCLK2WZ.svg +3 -0
  19. package/dist/assets/chevron-right-TNE35DBJ.svg +3 -0
  20. package/dist/assets/chevron-up-VBHYAJVB.svg +5 -0
  21. package/dist/assets/clear-XNEZJKFC.svg +5 -0
  22. package/dist/assets/close-GO5F7YFS.svg +10 -0
  23. package/dist/assets/dccd4-CZJXWICW.svg +6 -0
  24. package/dist/assets/dd163-3S3O6YOT.svg +6 -0
  25. package/dist/assets/draw-FOFX5TOM.svg +6 -0
  26. package/dist/assets/e8aed-CZJXWICW.svg +6 -0
  27. package/dist/assets/ea990-CZJXWICW.svg +6 -0
  28. package/dist/assets/expand-IAV75AFA.svg +6 -0
  29. package/dist/assets/fullscreen-L2JCXIN2.svg +6 -0
  30. package/dist/assets/grid-TLG5JYWB.svg +8 -0
  31. package/dist/assets/import-AFBUV2VV.svg +4 -0
  32. package/dist/assets/inter-latin-400-normal-55WT6UWF.woff2 +0 -0
  33. package/dist/assets/inter-latin-500-normal-W62DVTXI.woff2 +0 -0
  34. package/dist/assets/inter-latin-600-normal-R6Y2SZCR.woff2 +0 -0
  35. package/dist/assets/list-5VUAOZUH.svg +9 -0
  36. package/dist/assets/magic-OMME7FOV.svg +9 -0
  37. package/dist/assets/more-AEJ5MHWV.svg +5 -0
  38. package/dist/assets/mute-SXOSCR2U.svg +6 -0
  39. package/dist/assets/pause-2E4UY4FW.svg +6 -0
  40. package/dist/assets/play-WIIT3XQK.svg +5 -0
  41. package/dist/assets/reset-JESMTEMV.svg +6 -0
  42. package/dist/assets/search-JUOSGQRM.svg +6 -0
  43. package/dist/assets/select-VU7WR7B4.svg +7 -0
  44. package/dist/assets/sound-file-YYY6VNYN.svg +3 -0
  45. package/dist/assets/volume-2TYGJL6F.svg +6 -0
  46. package/dist/client.bundle.js +1373 -0
  47. package/dist/client.css +1900 -0
  48. package/dist/client.d.ts +19 -0
  49. package/dist/client.js +3 -0
  50. package/dist/events.d.ts +102 -0
  51. package/dist/events.js +244 -0
  52. package/dist/server.d.ts +16 -0
  53. package/dist/server.js +3502 -0
  54. package/dist/shared-BUdviVVD.d.ts +263 -0
  55. package/dist/shared.d.ts +510 -0
  56. package/dist/shared.js +228 -0
  57. package/package.json +50 -3
  58. package/schemas/billing-notice.json +16 -0
  59. package/schemas/task-notice.json +57 -0
  60. package/studio-plugin.json +40 -0
  61. package/README.md +0 -3
@@ -0,0 +1,1900 @@
1
+ /* packages/ui-system/dist/tokens.css */
2
+ [data-vx-theme] {
3
+ --vx-font-inter:
4
+ "Vivix Studio Inter",
5
+ system-ui,
6
+ sans-serif;
7
+ --vx-shadow-none: none;
8
+ --vx-shadow-button: 0px 2px 4px 0px rgb(0 0 0 / 4%);
9
+ --vx-shadow-annotation: 0px 2px 12px 0px rgb(0 0 0 / 16%);
10
+ --vx-shadow-menu: 0px 4px 16px 0px rgb(0 0 0 / 8%);
11
+ --vx-shadow-dialog: 0px 4px 20px 0px rgb(0 0 0 / 8%);
12
+ --vx-motion-duration-fast: 120ms;
13
+ --vx-motion-duration-standard: 180ms;
14
+ --vx-motion-duration-enter: 240ms;
15
+ --vx-motion-duration-ambient: 6000ms;
16
+ --vx-motion-easing-standard: cubic-bezier(0.2, 0, 0, 1);
17
+ --vx-motion-easing-enter: cubic-bezier(0.16, 1, 0.3, 1);
18
+ --vx-motion-distance-menu: 4px;
19
+ --vx-motion-distance-dialog: 8px;
20
+ --vx-motion-scale-enter: 0.98;
21
+ --vx-space-2: 2px;
22
+ --vx-space-4: 4px;
23
+ --vx-space-6: 6px;
24
+ --vx-space-8: 8px;
25
+ --vx-space-10: 10px;
26
+ --vx-space-12: 12px;
27
+ --vx-space-16: 16px;
28
+ --vx-space-20: 20px;
29
+ --vx-space-24: 24px;
30
+ --vx-space-32: 32px;
31
+ --vx-radius-xs: 2px;
32
+ --vx-radius-sm: 4px;
33
+ --vx-radius-md: 6px;
34
+ --vx-radius-lg: 8px;
35
+ --vx-radius-xl: 12px;
36
+ --vx-radius-full: 999px;
37
+ --vx-border-width: 1px;
38
+ --vx-divider-width: 0.5px;
39
+ --vx-focus-ring-width: 2px;
40
+ --vx-icon-slot-small: 12px;
41
+ --vx-icon-slot-medium: 16px;
42
+ --vx-icon-slot-large: 20px;
43
+ --vx-menu-width: 224px;
44
+ --vx-dropdown-width: 182px;
45
+ --vx-dropdown-mini-height: 28px;
46
+ --vx-dropdown-medium-height: 32px;
47
+ --vx-dropdown-large-height: 40px;
48
+ --vx-input-width: 180px;
49
+ --vx-input-medium-height: 32px;
50
+ --vx-input-large-height: 40px;
51
+ --vx-input-radius: var(--vx-radius-md);
52
+ --vx-button-pill-shadow: var(--vx-shadow-button);
53
+ --vx-tabs-primary-height: 56px;
54
+ --vx-tabs-secondary-height: 44px;
55
+ --vx-segment-medium-height: 32px;
56
+ --vx-segment-large-height: 36px;
57
+ --vx-warm-neutral-01: #f9f6f4;
58
+ --vx-warm-neutral-02: #f3f0ed;
59
+ --vx-warm-neutral-03: #f1eeea;
60
+ --vx-warm-neutral-04: #ede8e0;
61
+ --vx-warm-neutral-05: #e9e6e0;
62
+ --vx-warm-neutral-06: #ddd8d3;
63
+ --vx-warm-neutral-07: #ada5a0;
64
+ --vx-warm-neutral-08: #938c88;
65
+ --vx-warm-neutral-09: #736e67;
66
+ --vx-black-black: #000000;
67
+ --vx-black-black-1a: rgb(0 0 0 / 10%);
68
+ --vx-black-black-2a: rgb(0 0 0 / 20%);
69
+ --vx-black-black-3a: rgb(0 0 0 / 30%);
70
+ --vx-black-black-4a: rgb(0 0 0 / 40%);
71
+ --vx-black-black-5a: rgb(0 0 0 / 50%);
72
+ --vx-black-black-6a: rgb(0 0 0 / 60%);
73
+ --vx-black-black-7a: rgb(0 0 0 / 70%);
74
+ --vx-black-black-8a: rgb(0 0 0 / 80%);
75
+ --vx-black-black-9a: rgb(0 0 0 / 90%);
76
+ --vx-dark-neutral-01: #181615;
77
+ --vx-dark-neutral-02: #211e1c;
78
+ --vx-dark-neutral-03: #282420;
79
+ --vx-dark-neutral-04: #322d28;
80
+ --vx-dark-neutral-05: #3c352f;
81
+ --vx-dark-neutral-06: #51483f;
82
+ --vx-dark-neutral-07: #9d8f82;
83
+ --vx-dark-neutral-08: #b6aaa0;
84
+ --vx-dark-neutral-09: #f0e9e3;
85
+ --vx-white-white: #ffffff;
86
+ --vx-white-white-1a: rgb(255 255 255 / 10%);
87
+ --vx-white-white-2a: rgb(255 255 255 / 20%);
88
+ --vx-white-white-3a: rgb(255 255 255 / 30%);
89
+ --vx-white-white-4a: rgb(255 255 255 / 40%);
90
+ --vx-white-white-5a: rgb(255 255 255 / 50%);
91
+ --vx-white-white-6a: rgb(255 255 255 / 60%);
92
+ --vx-white-white-7a: rgb(255 255 255 / 70%);
93
+ --vx-white-white-8a: rgb(255 255 255 / 80%);
94
+ --vx-white-white-9a: rgb(255 255 255 / 90%);
95
+ --vx-neutral-01: #0f0c0c;
96
+ --vx-red-light: #ff3f3f;
97
+ --vx-red-dark: #ff6b6b;
98
+ --vx-orange-light: #f95801;
99
+ --vx-orange-dark: #f95801;
100
+ --vx-blue-light: #315fe8;
101
+ --vx-blue-dark: #5c85ff;
102
+ --vx-blue-beam: #79a4d6;
103
+ --vx-green-green: #3c6852;
104
+ --vx-green-dark: #2ba86a;
105
+ --vx-button-border-width: 1px;
106
+ --vx-button-pill-radius: 1000px;
107
+ --vx-button-circle-radius: 24px;
108
+ --vx-button-disabled-pill-opacity: 0.5;
109
+ --vx-button-trailing-gap: 2px;
110
+ --vx-button-pill-small-padding: 16px;
111
+ --vx-button-pill-small-gap: 4px;
112
+ --vx-button-focus-width: 2px;
113
+ --vx-button-focus-offset: 3px;
114
+ --vx-button-on-content-icon-size: 14px;
115
+ --vx-button-24-height: 24px;
116
+ --vx-button-24-icon-size: 14px;
117
+ --vx-button-24-radius: 6px;
118
+ --vx-button-24-padding-x: 0px;
119
+ --vx-button-24-gap: 6px;
120
+ --vx-button-24-font-size: 14px;
121
+ --vx-button-24-line-height: 18px;
122
+ --vx-button-32-height: 32px;
123
+ --vx-button-32-icon-size: 16px;
124
+ --vx-button-32-radius: 6px;
125
+ --vx-button-32-padding-x: 12px;
126
+ --vx-button-32-gap: 6px;
127
+ --vx-button-32-font-size: 14px;
128
+ --vx-button-32-line-height: 18px;
129
+ --vx-button-40-height: 40px;
130
+ --vx-button-40-icon-size: 18px;
131
+ --vx-button-40-radius: 8px;
132
+ --vx-button-40-padding-x: 16px;
133
+ --vx-button-40-gap: 8px;
134
+ --vx-button-40-font-size: 14px;
135
+ --vx-button-40-line-height: 18px;
136
+ --vx-button-44-height: 44px;
137
+ --vx-button-44-icon-size: 18px;
138
+ --vx-button-44-radius: 8px;
139
+ --vx-button-44-padding-x: 24px;
140
+ --vx-button-44-gap: 8px;
141
+ --vx-button-44-font-size: 16px;
142
+ --vx-button-44-line-height: 21px;
143
+ --vx-button-48-height: 48px;
144
+ --vx-button-48-icon-size: 20px;
145
+ --vx-button-48-radius: 8px;
146
+ --vx-button-48-padding-x: 24px;
147
+ --vx-button-48-gap: 8px;
148
+ --vx-button-48-font-size: 16px;
149
+ --vx-button-48-line-height: 21px;
150
+ --vx-typography-inter-14-medium: normal 500 14px/18px var(--vx-font-inter);
151
+ --vx-typography-inter-14-medium-tracking: 0px;
152
+ --vx-typography-inter-10-semi-bold: normal 600 10px/13px var(--vx-font-inter);
153
+ --vx-typography-inter-12-regular: normal 400 12px/16px var(--vx-font-inter);
154
+ --vx-typography-inter-12-semi-bold: normal 600 12px/16px var(--vx-font-inter);
155
+ --vx-typography-inter-12-medium: normal 500 12px/16px var(--vx-font-inter);
156
+ --vx-typography-inter-12-medium-tracking: 0px;
157
+ --vx-typography-inter-14-regular: normal 400 14px/18px var(--vx-font-inter);
158
+ --vx-typography-inter-14-semi-bold: normal 600 14px/18px var(--vx-font-inter);
159
+ --vx-typography-inter-16-regular: normal 400 16px/21px var(--vx-font-inter);
160
+ --vx-typography-inter-16-semi-bold: normal 600 16px/21px var(--vx-font-inter);
161
+ --vx-typography-inter-16-medium: normal 500 16px/21px var(--vx-font-inter);
162
+ --vx-typography-inter-16-medium-tracking: 0px;
163
+ --vx-typography-inter-18-regular: normal 400 18px/23px var(--vx-font-inter);
164
+ --vx-typography-inter-18-semi-bold: normal 600 18px/23px var(--vx-font-inter);
165
+ --vx-typography-inter-18-medium: normal 500 18px/23px var(--vx-font-inter);
166
+ --vx-typography-inter-18-medium-tracking: 0px;
167
+ color: var(--vx-text-primary);
168
+ font: var(--vx-typography-inter-14-regular);
169
+ }
170
+ [data-vx-theme=light] {
171
+ color-scheme: light;
172
+ --vx-background-page: var(--vx-warm-neutral-01);
173
+ --vx-background-dialog: var(--vx-white-white);
174
+ --vx-surface-selected: var(--vx-warm-neutral-05);
175
+ --vx-surface-message: var(--vx-warm-neutral-04);
176
+ --vx-surface-tool-result: var(--vx-warm-neutral-02);
177
+ --vx-surface-input: var(--vx-warm-neutral-03);
178
+ --vx-surface-hover: var(--vx-warm-neutral-03);
179
+ --vx-surface-input-transparency: rgb(241 238 234 / 90%);
180
+ --vx-text-brand-display: rgb(30 38 32 / 90%);
181
+ --vx-text-primary: var(--vx-neutral-01);
182
+ --vx-text-secondary: var(--vx-warm-neutral-08);
183
+ --vx-text-secondary-readable: color-mix( in srgb, var(--vx-warm-neutral-09) 90%, var(--vx-text-primary) );
184
+ --vx-control-border: var(--vx-warm-neutral-09);
185
+ --vx-text-tertiary: var(--vx-warm-neutral-07);
186
+ --vx-text-muted: var(--vx-warm-neutral-06);
187
+ --vx-text-placeholder: var(--vx-warm-neutral-07);
188
+ --vx-text-inverse: var(--vx-white-white);
189
+ --vx-text-subtle-black: var(--vx-neutral-01);
190
+ --vx-text-subtle-white: var(--vx-white-white);
191
+ --vx-text-on-content-primary: var(--vx-white-white);
192
+ --vx-text-on-content-secondary: var(--vx-white-white-7a);
193
+ --vx-icon-primary: var(--vx-neutral-01);
194
+ --vx-icon-secondary: var(--vx-warm-neutral-08);
195
+ --vx-icon-tertiary: var(--vx-warm-neutral-07);
196
+ --vx-icon-muted: var(--vx-warm-neutral-06);
197
+ --vx-icon-placeholder: var(--vx-warm-neutral-07);
198
+ --vx-icon-inverse: var(--vx-white-white);
199
+ --vx-icon-subtle-black: var(--vx-neutral-01);
200
+ --vx-icon-subtle-white: var(--vx-white-white);
201
+ --vx-icon-on-content-primary: var(--vx-white-white);
202
+ --vx-icon-on-content-secondary: var(--vx-white-white-7a);
203
+ --vx-border-primary: var(--vx-warm-neutral-06);
204
+ --vx-border-secondary: var(--vx-warm-neutral-05);
205
+ --vx-border-inverse: var(--vx-neutral-01);
206
+ --vx-border-on-content: var(--vx-white-white);
207
+ --vx-state-danger: var(--vx-red-light);
208
+ --vx-state-warning: var(--vx-orange-light);
209
+ --vx-state-assistance: var(--vx-blue-light);
210
+ --vx-state-success: var(--vx-green-green);
211
+ --vx-overlay-media-control: var(--vx-black-black-8a);
212
+ --vx-overlay-mask: var(--vx-black-black-6a);
213
+ --vx-overlay-dialog: var(--vx-white-white-8a);
214
+ --vx-overlay-tag: rgb(149 149 149 / 40%);
215
+ }
216
+ [data-vx-theme=dark] {
217
+ color-scheme: dark;
218
+ --vx-background-page: var(--vx-dark-neutral-01);
219
+ --vx-background-dialog: var(--vx-dark-neutral-02);
220
+ --vx-surface-selected: var(--vx-dark-neutral-05);
221
+ --vx-surface-message: var(--vx-dark-neutral-04);
222
+ --vx-surface-tool-result: var(--vx-dark-neutral-02);
223
+ --vx-surface-input: var(--vx-dark-neutral-03);
224
+ --vx-surface-hover: var(--vx-dark-neutral-03);
225
+ --vx-surface-input-transparency: rgb(40 36 32 / 90%);
226
+ --vx-text-brand-display: var(--vx-warm-neutral-01);
227
+ --vx-text-primary: var(--vx-dark-neutral-09);
228
+ --vx-text-secondary: var(--vx-dark-neutral-08);
229
+ --vx-text-secondary-readable: var(--vx-text-secondary);
230
+ --vx-control-border: var(--vx-dark-neutral-07);
231
+ --vx-text-tertiary: var(--vx-dark-neutral-07);
232
+ --vx-text-muted: var(--vx-dark-neutral-06);
233
+ --vx-text-placeholder: var(--vx-dark-neutral-07);
234
+ --vx-text-inverse: var(--vx-black-black);
235
+ --vx-text-subtle-black: var(--vx-neutral-01);
236
+ --vx-text-subtle-white: var(--vx-white-white);
237
+ --vx-text-on-content-primary: var(--vx-white-white);
238
+ --vx-text-on-content-secondary: var(--vx-white-white-7a);
239
+ --vx-icon-primary: var(--vx-dark-neutral-09);
240
+ --vx-icon-secondary: var(--vx-dark-neutral-08);
241
+ --vx-icon-tertiary: var(--vx-dark-neutral-07);
242
+ --vx-icon-muted: var(--vx-dark-neutral-06);
243
+ --vx-icon-placeholder: var(--vx-dark-neutral-07);
244
+ --vx-icon-inverse: var(--vx-black-black);
245
+ --vx-icon-subtle-black: var(--vx-neutral-01);
246
+ --vx-icon-subtle-white: var(--vx-white-white);
247
+ --vx-icon-on-content-primary: var(--vx-white-white);
248
+ --vx-icon-on-content-secondary: var(--vx-white-white-7a);
249
+ --vx-border-primary: var(--vx-dark-neutral-06);
250
+ --vx-border-secondary: var(--vx-dark-neutral-05);
251
+ --vx-border-inverse: var(--vx-warm-neutral-01);
252
+ --vx-border-on-content: var(--vx-white-white);
253
+ --vx-state-danger: var(--vx-red-dark);
254
+ --vx-state-warning: var(--vx-orange-dark);
255
+ --vx-state-assistance: var(--vx-blue-dark);
256
+ --vx-state-success: var(--vx-green-dark);
257
+ --vx-overlay-media-control: var(--vx-black-black-8a);
258
+ --vx-overlay-mask: var(--vx-black-black-7a);
259
+ --vx-overlay-dialog: var(--vx-black-black-8a);
260
+ --vx-overlay-tag: rgb(149 149 149 / 40%);
261
+ }
262
+ @scope ([data-vx-theme]) {
263
+ .vx-button[data-size="24"] {
264
+ --vx-button-height: var(--vx-button-24-height);
265
+ --vx-button-icon-size: var(--vx-button-24-icon-size);
266
+ --vx-button-radius: var(--vx-button-24-radius);
267
+ --vx-button-padding-x: var(--vx-button-24-padding-x);
268
+ --vx-button-gap: var(--vx-button-24-gap);
269
+ --vx-button-font-size: var(--vx-button-24-font-size);
270
+ --vx-button-line-height: var(--vx-button-24-line-height);
271
+ }
272
+ .vx-button[data-size="32"] {
273
+ --vx-button-height: var(--vx-button-32-height);
274
+ --vx-button-icon-size: var(--vx-button-32-icon-size);
275
+ --vx-button-radius: var(--vx-button-32-radius);
276
+ --vx-button-padding-x: var(--vx-button-32-padding-x);
277
+ --vx-button-gap: var(--vx-button-32-gap);
278
+ --vx-button-font-size: var(--vx-button-32-font-size);
279
+ --vx-button-line-height: var(--vx-button-32-line-height);
280
+ }
281
+ .vx-button[data-size="40"] {
282
+ --vx-button-height: var(--vx-button-40-height);
283
+ --vx-button-icon-size: var(--vx-button-40-icon-size);
284
+ --vx-button-radius: var(--vx-button-40-radius);
285
+ --vx-button-padding-x: var(--vx-button-40-padding-x);
286
+ --vx-button-gap: var(--vx-button-40-gap);
287
+ --vx-button-font-size: var(--vx-button-40-font-size);
288
+ --vx-button-line-height: var(--vx-button-40-line-height);
289
+ }
290
+ .vx-button[data-size="44"] {
291
+ --vx-button-height: var(--vx-button-44-height);
292
+ --vx-button-icon-size: var(--vx-button-44-icon-size);
293
+ --vx-button-radius: var(--vx-button-44-radius);
294
+ --vx-button-padding-x: var(--vx-button-44-padding-x);
295
+ --vx-button-gap: var(--vx-button-44-gap);
296
+ --vx-button-font-size: var(--vx-button-44-font-size);
297
+ --vx-button-line-height: var(--vx-button-44-line-height);
298
+ }
299
+ .vx-button[data-size="48"] {
300
+ --vx-button-height: var(--vx-button-48-height);
301
+ --vx-button-icon-size: var(--vx-button-48-icon-size);
302
+ --vx-button-radius: var(--vx-button-48-radius);
303
+ --vx-button-padding-x: var(--vx-button-48-padding-x);
304
+ --vx-button-gap: var(--vx-button-48-gap);
305
+ --vx-button-font-size: var(--vx-button-48-font-size);
306
+ --vx-button-line-height: var(--vx-button-48-line-height);
307
+ }
308
+ }
309
+
310
+ /* packages/ui-system/dist/button.css */
311
+ @scope ([data-vx-theme]) {
312
+ .vx-button {
313
+ box-sizing: border-box;
314
+ position: relative;
315
+ display: inline-flex;
316
+ align-items: center;
317
+ justify-content: center;
318
+ vertical-align: middle;
319
+ flex-shrink: 0;
320
+ height: var(--vx-button-height);
321
+ width: var(--vx-button-width, max-content);
322
+ max-width: 100%;
323
+ padding: 0 var(--vx-button-padding-x);
324
+ border: 0 solid transparent;
325
+ border-radius: var(--vx-button-radius);
326
+ background: var(--vx-button-background, transparent);
327
+ color: var(--vx-button-foreground, var(--vx-text-primary));
328
+ font: var(--vx-typography-inter-14-medium);
329
+ font-size: var(--vx-button-font-size);
330
+ line-height: var(--vx-button-line-height);
331
+ letter-spacing: 0;
332
+ white-space: nowrap;
333
+ cursor: pointer;
334
+ appearance: none;
335
+ }
336
+ .vx-button-content {
337
+ display: inline-flex;
338
+ align-items: center;
339
+ justify-content: center;
340
+ gap: var(--vx-button-gap);
341
+ min-width: 0;
342
+ max-width: 100%;
343
+ }
344
+ .vx-button-label {
345
+ overflow: hidden;
346
+ text-overflow: ellipsis;
347
+ }
348
+ .vx-button-trailing {
349
+ margin-left: calc(var(--vx-button-trailing-gap) - var(--vx-button-gap));
350
+ }
351
+ .vx-button[data-width=full] {
352
+ width: 100%;
353
+ }
354
+ .vx-button[data-width=hug] {
355
+ width: max-content;
356
+ }
357
+ .vx-button[data-appearance=filled] {
358
+ --vx-button-background: var(--vx-text-primary);
359
+ --vx-button-foreground: var(--vx-text-inverse);
360
+ }
361
+ .vx-button[data-appearance=tonal] {
362
+ --vx-button-background: var(--vx-surface-input);
363
+ }
364
+ .vx-button[data-appearance=on-content] {
365
+ --vx-button-background: var(--vx-overlay-tag);
366
+ --vx-button-foreground: var(--vx-text-on-content-primary);
367
+ }
368
+ .vx-button[data-variant=text-on-content-sm] {
369
+ --vx-button-background: var(--vx-overlay-media-control);
370
+ }
371
+ .vx-button[data-variant=text-on-content-sm]:hover:not(:disabled) {
372
+ --vx-button-background: var(--vx-black-black-6a);
373
+ }
374
+ .vx-button[data-variant=text-on-content-sm]:focus-visible {
375
+ outline-color: var(--vx-border-on-content);
376
+ }
377
+ .vx-button[data-appearance=on-content][data-state=disabled] {
378
+ --vx-button-foreground: var(--vx-text-on-content-secondary);
379
+ }
380
+ .vx-button[data-appearance=outline] {
381
+ border-width: var(--vx-button-border-width);
382
+ border-color: var(--vx-border-secondary);
383
+ }
384
+ .vx-button[data-appearance=plain] {
385
+ --vx-button-background: var(--vx-background-dialog);
386
+ }
387
+ .vx-button[data-shape=pill] {
388
+ border-radius: var(--vx-button-pill-radius);
389
+ }
390
+ .vx-button[data-variant=pill-plain] {
391
+ box-shadow: var(--vx-shadow-button);
392
+ }
393
+ .vx-button[data-variant=pill-small] {
394
+ --vx-button-background: var(--vx-text-on-content-primary);
395
+ --vx-button-foreground: var(--vx-text-subtle-black);
396
+ --vx-button-padding-x: var(--vx-button-pill-small-padding);
397
+ --vx-button-gap: var(--vx-button-pill-small-gap);
398
+ }
399
+ .vx-button:is([data-shape=icon], [data-shape=circle]) {
400
+ width: var(--vx-button-height);
401
+ padding: 0;
402
+ }
403
+ .vx-button[data-shape=circle] {
404
+ border-radius: var(--vx-button-circle-radius);
405
+ }
406
+ .vx-button[data-appearance=ghost]:not([data-size="40"]) {
407
+ border-radius: var(--vx-button-32-radius);
408
+ }
409
+ .vx-button:hover:not(:disabled):is([data-appearance=filled], [data-variant=text-tonal-md], [data-variant=text-tonal-lg]) {
410
+ background-image: linear-gradient(var(--vx-white-white-1a), var(--vx-white-white-1a));
411
+ }
412
+ .vx-button[data-appearance=ghost]:hover:not(:disabled) {
413
+ --vx-button-background: var(--vx-surface-hover);
414
+ }
415
+ .vx-button:focus-visible {
416
+ outline: var(--vx-button-focus-width) solid var(--vx-state-assistance);
417
+ outline-offset: var(--vx-button-focus-offset);
418
+ }
419
+ .vx-button:active:not(:disabled) {
420
+ filter: brightness(0.96);
421
+ }
422
+ .vx-button:disabled {
423
+ cursor: not-allowed;
424
+ }
425
+ .vx-button[data-state=disabled] {
426
+ --vx-button-foreground: var(--vx-text-placeholder);
427
+ }
428
+ .vx-button[data-state=disabled]:is([data-appearance=filled], [data-appearance=tonal]):not([data-shape=pill]) {
429
+ --vx-button-background: var(--vx-surface-input);
430
+ }
431
+ .vx-button[data-state=disabled][data-shape=pill] {
432
+ opacity: var(--vx-button-disabled-pill-opacity);
433
+ --vx-button-foreground: var(--vx-text-primary);
434
+ }
435
+ .vx-button[data-state=disabled][data-variant=pill-filled] {
436
+ --vx-button-foreground: var(--vx-text-inverse);
437
+ }
438
+ .vx-button[data-state=disabled][data-variant=pill-small] {
439
+ --vx-button-foreground: var(--vx-text-subtle-black);
440
+ }
441
+ .vx-button-loading {
442
+ display: none;
443
+ position: absolute;
444
+ width: 16px;
445
+ height: 16px;
446
+ color: inherit;
447
+ background: currentColor;
448
+ mask: url("./assets/ea990-CZJXWICW.svg") center / contain no-repeat;
449
+ }
450
+ .vx-button[data-state=loading] {
451
+ cursor: progress;
452
+ }
453
+ .vx-button[data-state=loading] .vx-button-content {
454
+ visibility: hidden;
455
+ }
456
+ .vx-button[data-state=loading] .vx-button-loading {
457
+ display: block;
458
+ }
459
+ .vx-button[data-shape=text][data-size="44"] .vx-button-loading {
460
+ width: 20px;
461
+ height: 20px;
462
+ mask-image: url("./assets/369ca-BISNKZ3M.svg");
463
+ }
464
+ .vx-button[data-variant=text-tonal-lg] .vx-button-loading {
465
+ color: var(--vx-text-placeholder);
466
+ mask-image: url("./assets/483f0-T6ZAGTDG.svg");
467
+ }
468
+ .vx-button[data-variant=text-outline-lg] .vx-button-loading {
469
+ mask-image: url("./assets/b70bb-BTTOKPOH.svg");
470
+ }
471
+ .vx-button[data-variant=text-tonal-sm][data-state=loading] {
472
+ --vx-button-background: var(--vx-surface-selected);
473
+ }
474
+ .vx-button[data-variant=text-tonal-sm] .vx-button-loading {
475
+ color: var(--vx-icon-inverse);
476
+ }
477
+ .vx-button[data-variant=pill-plain] .vx-button-loading {
478
+ mask-image: url("./assets/b9919-3S3O6YOT.svg");
479
+ }
480
+ .vx-button[data-variant=pill-small] .vx-button-loading {
481
+ mask-image: url("./assets/dd163-3S3O6YOT.svg");
482
+ }
483
+ .vx-button[data-shape=circle] .vx-button-loading {
484
+ mask-image: url("./assets/dccd4-CZJXWICW.svg");
485
+ }
486
+ .vx-button[data-variant=icon-circle-lg] .vx-button-loading {
487
+ width: 18px;
488
+ height: 18px;
489
+ mask-image: url("./assets/6911b-ESLYKSC6.svg");
490
+ }
491
+ .vx-button[data-shape=icon] .vx-button-loading {
492
+ mask-image: url("./assets/b9919-3S3O6YOT.svg");
493
+ }
494
+ .vx-button[data-shape=icon][data-size="48"] .vx-button-loading {
495
+ width: 18px;
496
+ height: 18px;
497
+ mask-image: url("./assets/441bc-BCMNQ72W.svg");
498
+ }
499
+ .vx-button[data-shape=icon] .vx-button-loading::before {
500
+ content: "";
501
+ position: absolute;
502
+ top: 1px;
503
+ left: 1px;
504
+ width: 16px;
505
+ height: 16px;
506
+ background: currentColor;
507
+ mask: url("./assets/e8aed-CZJXWICW.svg") center / contain no-repeat;
508
+ }
509
+ .vx-button[data-shape=icon][data-size="32"][data-state=loading] {
510
+ --vx-button-background: var(--vx-background-dialog);
511
+ }
512
+ .vx-button[data-appearance=on-content] .vx-button-loading {
513
+ width: var(--vx-button-on-content-icon-size);
514
+ height: var(--vx-button-on-content-icon-size);
515
+ mask-image: url("./assets/35a50-G5EJUNOC.svg");
516
+ }
517
+ .vx-button[data-appearance=on-content] .vx-button-loading::before {
518
+ content: none;
519
+ }
520
+ }
521
+
522
+ /* packages/ui-system/dist/controls.css */
523
+ @scope ([data-vx-theme]) {
524
+ .vx-text {
525
+ margin: 0;
526
+ color: var(--vx-text-primary);
527
+ }
528
+ .vx-text[data-tone=secondary] {
529
+ color: var(--vx-text-secondary-readable);
530
+ }
531
+ .vx-divider {
532
+ display: inline-block;
533
+ flex: none;
534
+ width: 100%;
535
+ height: var(--vx-divider-width);
536
+ background: var(--vx-border-secondary);
537
+ }
538
+ .vx-divider[data-orientation=vertical] {
539
+ width: var(--vx-divider-width);
540
+ height: var(--vx-space-8);
541
+ }
542
+ .vx-checkbox {
543
+ display: inline-flex;
544
+ align-items: center;
545
+ gap: var(--vx-space-8);
546
+ position: relative;
547
+ width: fit-content;
548
+ min-height: var(--vx-space-24);
549
+ cursor: pointer;
550
+ vertical-align: middle;
551
+ }
552
+ .vx-checkbox[data-label-hidden] {
553
+ justify-content: center;
554
+ min-width: var(--vx-space-24);
555
+ }
556
+ .vx-checkbox-input,
557
+ .vx-segment input {
558
+ position: absolute;
559
+ inset: 0;
560
+ width: 100%;
561
+ height: 100%;
562
+ margin: 0;
563
+ opacity: 0;
564
+ cursor: inherit;
565
+ }
566
+ .vx-checkbox-mark {
567
+ --vx-checkbox-active: var(--vx-state-success);
568
+ --vx-checkbox-ink: var(--vx-text-on-content-primary);
569
+ display: inline-grid;
570
+ flex: none;
571
+ place-items: center;
572
+ box-sizing: border-box;
573
+ width: var(--vx-space-16);
574
+ height: var(--vx-space-16);
575
+ border: var(--vx-border-width) solid var(--vx-control-border);
576
+ border-radius: var(--vx-radius-sm);
577
+ background: var(--vx-surface-input);
578
+ color: var(--vx-checkbox-ink);
579
+ }
580
+ .vx-checkbox[data-appearance=on-content] .vx-checkbox-mark {
581
+ --vx-checkbox-active: var(--vx-border-on-content);
582
+ --vx-checkbox-ink: var(--vx-icon-subtle-black);
583
+ background: var(--vx-black-black-4a);
584
+ border-color: var(--vx-text-on-content-secondary);
585
+ }
586
+ .vx-checkbox-input:checked + .vx-checkbox-mark {
587
+ background: var(--vx-checkbox-active);
588
+ border-color: var(--vx-checkbox-active);
589
+ }
590
+ .vx-checkbox-mark > .vx-icon {
591
+ --vx-icon-size: var(--vx-icon-slot-small);
592
+ }
593
+ .vx-checkbox-input:not(:checked) + .vx-checkbox-mark > .vx-icon {
594
+ visibility: hidden;
595
+ }
596
+ .vx-checkbox-input:focus-visible + .vx-checkbox-mark {
597
+ outline: var(--vx-focus-ring-width) solid var(--vx-checkbox-active);
598
+ outline-offset: var(--vx-space-2);
599
+ }
600
+ .vx-checkbox:has(input:disabled),
601
+ .vx-segment label:has(input:disabled) {
602
+ cursor: not-allowed;
603
+ opacity: 0.5;
604
+ }
605
+ .vx-search-input,
606
+ .vx-dropdown-trigger {
607
+ display: inline-flex;
608
+ align-items: center;
609
+ gap: var(--vx-space-4);
610
+ box-sizing: border-box;
611
+ max-width: 100%;
612
+ border: 0;
613
+ border-radius: var(--vx-radius-md);
614
+ }
615
+ .vx-search-input {
616
+ width: var(--vx-input-width);
617
+ height: var(--vx-input-medium-height);
618
+ padding: var(--vx-space-8);
619
+ background: var(--vx-surface-input);
620
+ color: var(--vx-text-secondary-readable);
621
+ }
622
+ .vx-search-input[data-size=large] {
623
+ height: var(--vx-input-large-height);
624
+ padding-inline: var(--vx-space-12);
625
+ }
626
+ .vx-search-input:has(.vx-search-clear) {
627
+ padding-inline-end: var(--vx-space-4);
628
+ }
629
+ .vx-search-input[data-size=large]:has(.vx-search-clear) {
630
+ padding-inline-end: var(--vx-space-8);
631
+ }
632
+ .vx-search-input:has(input:focus-visible) {
633
+ outline: var(--vx-focus-ring-width) solid var(--vx-state-assistance);
634
+ outline-offset: var(--vx-space-2);
635
+ }
636
+ .vx-search-input:has(input:disabled) {
637
+ opacity: 0.5;
638
+ }
639
+ .vx-search-input:is(:hover, :focus-within):not(:has(input:disabled)) {
640
+ background: var(--vx-surface-selected);
641
+ }
642
+ .vx-search-input > [data-icon=search] {
643
+ transform: scaleY(-1);
644
+ }
645
+ .vx-search-input > input {
646
+ appearance: none;
647
+ flex: 1;
648
+ min-width: 0;
649
+ padding: 0;
650
+ border: 0;
651
+ outline: none;
652
+ background: transparent;
653
+ color: var(--vx-text-primary);
654
+ font: var(--vx-typography-inter-14-regular);
655
+ caret-color: var(--vx-state-success);
656
+ }
657
+ .vx-search-input[data-size=large] > input {
658
+ font: var(--vx-typography-inter-16-regular);
659
+ }
660
+ .vx-search-input > input::placeholder {
661
+ color: var(--vx-text-secondary-readable);
662
+ opacity: 1;
663
+ }
664
+ .vx-search-input input::-webkit-search-cancel-button {
665
+ appearance: none;
666
+ }
667
+ .vx-search-input .vx-search-clear {
668
+ width: var(--vx-space-24);
669
+ height: var(--vx-space-24);
670
+ border-radius: var(--vx-radius-full);
671
+ color: var(--vx-text-secondary-readable);
672
+ }
673
+ .vx-dropdown {
674
+ position: relative;
675
+ display: inline-block;
676
+ width: var(--vx-dropdown-width);
677
+ max-width: 100%;
678
+ }
679
+ .vx-dropdown[data-width=hug] {
680
+ width: max-content;
681
+ }
682
+ .vx-dropdown[data-width=hug] .vx-dropdown-trigger {
683
+ padding-block: var(--vx-space-8);
684
+ }
685
+ .vx-dropdown[data-width=hug] [role=listbox] {
686
+ box-sizing: border-box;
687
+ width: min(var(--vx-menu-width), calc(100vw - var(--vx-space-16)));
688
+ inset-inline-start: auto;
689
+ margin-block-start: var(--vx-space-6);
690
+ }
691
+ .vx-dropdown[data-width=hug] [role=option] {
692
+ box-sizing: border-box;
693
+ padding: var(--vx-space-8) var(--vx-space-12);
694
+ border-radius: var(--vx-radius-lg);
695
+ font: var(--vx-typography-inter-14-regular);
696
+ }
697
+ .vx-dropdown[data-width=hug] [role=option] + [role=option] {
698
+ margin-block-start: var(--vx-space-2);
699
+ }
700
+ .vx-dropdown[data-width=hug] [role=option][aria-selected=true] {
701
+ background: var(--vx-surface-input);
702
+ font-weight: 400;
703
+ }
704
+ .vx-dropdown [role=option] > [data-icon=check] {
705
+ margin-inline-start: auto;
706
+ color: var(--vx-state-success);
707
+ }
708
+ .vx-dropdown-trigger {
709
+ width: 100%;
710
+ height: var(--vx-dropdown-medium-height);
711
+ padding-inline: var(--vx-space-10) var(--vx-space-8);
712
+ background: transparent;
713
+ color: var(--vx-text-primary);
714
+ font: var(--vx-typography-inter-14-semi-bold);
715
+ cursor: pointer;
716
+ }
717
+ .vx-dropdown[data-size=mini] .vx-dropdown-trigger {
718
+ height: var(--vx-dropdown-mini-height);
719
+ padding-inline: var(--vx-space-8) var(--vx-space-6);
720
+ border-radius: var(--vx-radius-sm);
721
+ }
722
+ .vx-dropdown[data-size=large] .vx-dropdown-trigger {
723
+ height: var(--vx-dropdown-large-height);
724
+ padding-inline: var(--vx-space-12) var(--vx-space-10);
725
+ border-radius: var(--vx-radius-lg);
726
+ font: var(--vx-typography-inter-16-semi-bold);
727
+ }
728
+ .vx-dropdown-trigger > .vx-icon {
729
+ --vx-icon-size: var(--vx-icon-slot-medium);
730
+ color: var(--vx-text-secondary-readable);
731
+ }
732
+ .vx-dropdown-trigger:hover:not(:disabled) {
733
+ background: var(--vx-surface-hover);
734
+ }
735
+ .vx-dropdown-trigger[aria-expanded=true] {
736
+ background: var(--vx-surface-selected);
737
+ }
738
+ .vx-dropdown-trigger:disabled {
739
+ color: var(--vx-text-placeholder);
740
+ cursor: not-allowed;
741
+ }
742
+ .vx-dropdown-value {
743
+ display: inline-flex;
744
+ align-items: center;
745
+ min-width: 0;
746
+ gap: var(--vx-space-4);
747
+ }
748
+ .vx-dropdown-value > span:last-child {
749
+ overflow: hidden;
750
+ white-space: nowrap;
751
+ text-overflow: ellipsis;
752
+ }
753
+ .vx-dropdown [role=listbox] {
754
+ position: absolute;
755
+ z-index: 1;
756
+ inset-inline: 0;
757
+ margin: var(--vx-space-4) 0 0;
758
+ max-height: min(15rem, 50vh);
759
+ overflow: auto;
760
+ padding: var(--vx-space-4);
761
+ border: var(--vx-border-width) solid var(--vx-border-secondary);
762
+ border-radius: var(--vx-radius-xl);
763
+ background: var(--vx-background-dialog);
764
+ box-shadow: var(--vx-shadow-menu);
765
+ list-style: none;
766
+ }
767
+ .vx-dropdown [role=option] {
768
+ display: flex;
769
+ align-items: center;
770
+ gap: var(--vx-space-8);
771
+ min-height: 36px;
772
+ padding-inline: var(--vx-space-8);
773
+ border-radius: var(--vx-radius-md);
774
+ overflow-wrap: anywhere;
775
+ cursor: pointer;
776
+ }
777
+ .vx-dropdown [role=option][aria-selected=true] {
778
+ font-weight: 600;
779
+ }
780
+ .vx-dropdown [role=option]:is([data-active=true], :hover):not([aria-disabled=true]) {
781
+ background: var(--vx-surface-hover);
782
+ }
783
+ .vx-dropdown [role=option][aria-disabled=true] {
784
+ color: var(--vx-text-placeholder);
785
+ cursor: not-allowed;
786
+ }
787
+ .vx-tabs,
788
+ .vx-tab-list,
789
+ .vx-tabs-actions,
790
+ .vx-segment {
791
+ display: flex;
792
+ align-items: stretch;
793
+ min-width: 0;
794
+ }
795
+ .vx-tabs,
796
+ .vx-tab-list {
797
+ gap: var(--vx-space-16);
798
+ }
799
+ .vx-tabs-actions {
800
+ align-items: center;
801
+ gap: var(--vx-space-4);
802
+ }
803
+ .vx-tabs {
804
+ height: var(--vx-tabs-primary-height);
805
+ }
806
+ .vx-tab-list {
807
+ flex: 1;
808
+ overflow-x: auto;
809
+ scrollbar-width: none;
810
+ }
811
+ .vx-tabs [role=tab] {
812
+ flex: none;
813
+ padding: var(--vx-space-16) 0 var(--vx-space-12);
814
+ border: 0;
815
+ border-bottom: var(--vx-space-2) solid transparent;
816
+ background: transparent;
817
+ color: var(--vx-text-secondary-readable);
818
+ font: var(--vx-typography-inter-16-semi-bold);
819
+ cursor: pointer;
820
+ white-space: nowrap;
821
+ }
822
+ .vx-tabs [role=tab][aria-selected=true] {
823
+ border-color: var(--vx-state-success);
824
+ color: var(--vx-state-success);
825
+ }
826
+ .vx-tabs [role=tab]:disabled {
827
+ opacity: 0.5;
828
+ cursor: not-allowed;
829
+ }
830
+ .vx-tabs[data-variant=secondary] {
831
+ box-sizing: border-box;
832
+ height: var(--vx-tabs-secondary-height);
833
+ padding-inline: var(--vx-space-16);
834
+ }
835
+ .vx-tabs[data-variant=secondary] [role=tab] {
836
+ padding: 0;
837
+ border: 0;
838
+ font: var(--vx-typography-inter-14-semi-bold);
839
+ }
840
+ .vx-tabs[data-variant=secondary] [role=tab][aria-selected=true] {
841
+ color: var(--vx-text-primary);
842
+ }
843
+ .vx-segment {
844
+ display: inline-flex;
845
+ box-sizing: border-box;
846
+ gap: var(--vx-space-2);
847
+ width: 430px;
848
+ max-width: 100%;
849
+ height: var(--vx-segment-medium-height);
850
+ overflow-x: auto;
851
+ scrollbar-width: none;
852
+ padding: var(--vx-space-2);
853
+ border-radius: var(--vx-radius-lg);
854
+ background: var(--vx-background-page);
855
+ }
856
+ .vx-segment[data-size=large] {
857
+ height: var(--vx-segment-large-height);
858
+ }
859
+ .vx-segment[data-width=full] {
860
+ width: 100%;
861
+ }
862
+ .vx-segment[data-width=hug],
863
+ .vx-segment[data-icon-only=true] {
864
+ width: max-content;
865
+ }
866
+ .vx-segment > label {
867
+ position: relative;
868
+ display: flex;
869
+ flex: 1 0 auto;
870
+ cursor: pointer;
871
+ }
872
+ .vx-segment-item {
873
+ display: inline-flex;
874
+ flex: 1;
875
+ justify-content: center;
876
+ align-items: center;
877
+ gap: var(--vx-space-4);
878
+ padding-inline: var(--vx-space-16);
879
+ border-radius: var(--vx-radius-md);
880
+ font: var(--vx-typography-inter-14-semi-bold);
881
+ white-space: nowrap;
882
+ }
883
+ .vx-segment[data-icon-only=true] .vx-segment-item {
884
+ min-width: 28px;
885
+ padding-inline: 0;
886
+ border-radius: var(--vx-radius-sm);
887
+ }
888
+ .vx-segment input:checked + .vx-segment-item {
889
+ background: var(--vx-background-dialog);
890
+ }
891
+ .vx-dropdown-trigger:focus-visible,
892
+ .vx-tabs [role=tab]:focus-visible,
893
+ .vx-segment input:focus-visible + .vx-segment-item {
894
+ outline: var(--vx-focus-ring-width) solid var(--vx-state-assistance);
895
+ outline-offset: calc(-1 * var(--vx-focus-ring-width));
896
+ }
897
+ @media (prefers-reduced-motion: no-preference) {
898
+ .vx-dropdown-trigger,
899
+ .vx-search-input {
900
+ transition: background-color var(--vx-motion-duration-fast) var(--vx-motion-easing-standard);
901
+ }
902
+ }
903
+ @media (forced-colors: active) {
904
+ .vx-icon::before {
905
+ forced-color-adjust: none;
906
+ background-color: CanvasText;
907
+ }
908
+ .vx-checkbox-mark,
909
+ .vx-segment-item {
910
+ border: var(--vx-border-width) solid ButtonText;
911
+ }
912
+ .vx-checkbox-input:checked + .vx-checkbox-mark,
913
+ .vx-segment input:checked + .vx-segment-item {
914
+ border-color: Highlight;
915
+ }
916
+ }
917
+ }
918
+ .vx-workspace-theme {
919
+ display: inline-flex;
920
+ align-items: center;
921
+ gap: var(--vx-space-4);
922
+ padding: 3px 8px;
923
+ min-height: 32px;
924
+ border: 1px solid var(--vx-border-secondary);
925
+ border-radius: 8px;
926
+ color: var(--vx-text-secondary-readable);
927
+ font: var(--vx-typography-inter-12-regular);
928
+ }
929
+ .vx-workspace-theme select {
930
+ border: 0;
931
+ background: transparent;
932
+ color: var(--vx-text-primary);
933
+ font: var(--vx-typography-inter-12-medium);
934
+ padding: 3px;
935
+ }
936
+
937
+ /* packages/ui-system/dist/field.css */
938
+ @scope ([data-vx-theme]) {
939
+ .vx-field,
940
+ .vx-slider {
941
+ display: grid;
942
+ gap: var(--vx-space-4);
943
+ min-width: 0;
944
+ color: var(--vx-text-primary);
945
+ }
946
+ .vx-field > input {
947
+ box-sizing: border-box;
948
+ width: 100%;
949
+ min-height: var(--vx-input-medium-height);
950
+ padding: var(--vx-space-4) var(--vx-space-8);
951
+ border: var(--vx-border-width) solid var(--vx-control-border);
952
+ border-radius: var(--vx-radius-md);
953
+ background: var(--vx-surface-input);
954
+ color: inherit;
955
+ font: inherit;
956
+ }
957
+ .vx-field[data-size=large] > input {
958
+ min-height: var(--vx-input-large-height);
959
+ }
960
+ .vx-date-picker {
961
+ display: inline-flex;
962
+ align-items: flex-start;
963
+ gap: var(--vx-space-4);
964
+ max-width: 100%;
965
+ }
966
+ .vx-date-picker[data-variant=dropdown] {
967
+ display: flex;
968
+ width: 100%;
969
+ }
970
+ .vx-date-picker .vx-field > span:empty {
971
+ display: none;
972
+ }
973
+ .vx-date-calendar {
974
+ box-sizing: border-box;
975
+ width: min(320px, calc(100vw - 16px));
976
+ max-height: calc(100dvh - 16px);
977
+ overflow: auto;
978
+ inset: auto;
979
+ position-area: bottom span-right;
980
+ position-try-fallbacks:
981
+ flip-inline,
982
+ flip-block,
983
+ flip-block flip-inline;
984
+ margin: var(--vx-space-4) 0;
985
+ padding: var(--vx-space-8);
986
+ border: var(--vx-border-width) solid var(--vx-border-secondary);
987
+ border-radius: var(--vx-radius-xl);
988
+ background: var(--vx-background-dialog);
989
+ color: var(--vx-text-primary);
990
+ box-shadow: var(--vx-shadow-menu);
991
+ }
992
+ .vx-date-header {
993
+ display: flex;
994
+ justify-content: space-between;
995
+ align-items: center;
996
+ gap: var(--vx-space-4);
997
+ }
998
+ .vx-date-header > select {
999
+ min-width: 0;
1000
+ background: var(--vx-surface-input);
1001
+ color: inherit;
1002
+ border: var(--vx-border-width) solid var(--vx-control-border);
1003
+ border-radius: var(--vx-radius-sm);
1004
+ font: inherit;
1005
+ }
1006
+ .vx-date-grid {
1007
+ width: 100%;
1008
+ table-layout: fixed;
1009
+ text-align: center;
1010
+ font: var(--vx-typography-inter-12-medium);
1011
+ }
1012
+ .vx-date-grid td > button {
1013
+ width: 100%;
1014
+ min-height: 32px;
1015
+ border: 0;
1016
+ border-radius: var(--vx-radius-md);
1017
+ background: transparent;
1018
+ color: inherit;
1019
+ font: inherit;
1020
+ cursor: pointer;
1021
+ }
1022
+ .vx-date-grid td > button[data-outside=true] {
1023
+ color: var(--vx-text-secondary-readable);
1024
+ }
1025
+ .vx-date-grid td > button:disabled {
1026
+ color: var(--vx-text-placeholder);
1027
+ cursor: not-allowed;
1028
+ }
1029
+ .vx-date-grid td > button:hover:not(:disabled) {
1030
+ background: var(--vx-surface-hover);
1031
+ }
1032
+ .vx-date-grid td[aria-selected=true] > button {
1033
+ background: var(--vx-surface-selected);
1034
+ font-weight: 600;
1035
+ }
1036
+ .vx-date-grid td > button:focus-visible {
1037
+ outline: var(--vx-focus-ring-width) solid var(--vx-state-assistance);
1038
+ outline-offset: calc(-1 * var(--vx-focus-ring-width));
1039
+ }
1040
+ .vx-field > input:disabled,
1041
+ .vx-slider > input:disabled {
1042
+ cursor: not-allowed;
1043
+ opacity: 0.5;
1044
+ }
1045
+ .vx-field > input:focus-visible,
1046
+ .vx-slider > input:focus-visible {
1047
+ outline: var(--vx-focus-ring-width) solid var(--vx-state-assistance);
1048
+ outline-offset: var(--vx-space-2);
1049
+ }
1050
+ .vx-slider-heading {
1051
+ display: flex;
1052
+ justify-content: space-between;
1053
+ gap: var(--vx-space-8);
1054
+ }
1055
+ .vx-slider > input,
1056
+ .vx-playback-controls > input {
1057
+ accent-color: var(--vx-state-success);
1058
+ min-width: 0;
1059
+ margin: 0;
1060
+ }
1061
+ }
1062
+
1063
+ /* packages/ui-system/dist/inline-text.css */
1064
+ @scope ([data-vx-theme]) {
1065
+ .vx-inline-text {
1066
+ cursor: text;
1067
+ border-radius: var(--vx-radius-xs, 4px);
1068
+ outline: none;
1069
+ min-width: 0;
1070
+ min-height: 1lh;
1071
+ overflow-wrap: anywhere;
1072
+ }
1073
+ .vx-inline-text[aria-multiline=true] {
1074
+ white-space: pre-wrap;
1075
+ }
1076
+ .vx-inline-text:not([aria-readonly=true]):hover {
1077
+ background: var(--vx-surface-hover);
1078
+ }
1079
+ .vx-inline-text:focus {
1080
+ background: var(--vx-surface-input);
1081
+ outline: var(--vx-focus-ring-width, 2px) solid var(--vx-state-success);
1082
+ outline-offset: var(--vx-space-2);
1083
+ }
1084
+ .vx-inline-text:empty::before {
1085
+ content: attr(data-placeholder);
1086
+ color: var(--vx-text-secondary);
1087
+ pointer-events: none;
1088
+ }
1089
+ }
1090
+
1091
+ /* packages/ui-system/dist/media.css */
1092
+ @scope ([data-vx-theme]) {
1093
+ .vx-tag {
1094
+ display: inline-flex;
1095
+ align-items: center;
1096
+ min-height: 16px;
1097
+ padding-inline: var(--vx-space-4);
1098
+ border-radius: 3px;
1099
+ background: var(--vx-overlay-tag);
1100
+ color: var(--vx-text-on-content-primary);
1101
+ font: 600 10px / 14px var(--vx-font-inter);
1102
+ white-space: nowrap;
1103
+ }
1104
+ .vx-tag[data-variant=selected] {
1105
+ background: var(--vx-state-success);
1106
+ }
1107
+ .vx-tag[data-variant=subtle] {
1108
+ background: var(--vx-surface-message);
1109
+ color: var(--vx-text-secondary-readable);
1110
+ }
1111
+ .vx-tag[data-variant=neutral] {
1112
+ background: var(--vx-surface-input);
1113
+ color: var(--vx-text-primary);
1114
+ }
1115
+ .vx-media {
1116
+ position: relative;
1117
+ display: grid;
1118
+ place-items: center;
1119
+ box-sizing: border-box;
1120
+ width: 100%;
1121
+ min-width: 0;
1122
+ overflow: hidden;
1123
+ padding: 0;
1124
+ border: 0;
1125
+ border-radius: var(--vx-radius-lg);
1126
+ background: #000;
1127
+ color: var(--vx-text-on-content-primary);
1128
+ font: inherit;
1129
+ }
1130
+ .vx-media:is([data-empty=surface], [data-empty=audio]) {
1131
+ background: var(--vx-surface-input);
1132
+ color: var(--vx-text-primary);
1133
+ }
1134
+ button.vx-media {
1135
+ cursor: pointer;
1136
+ }
1137
+ button.vx-media:disabled {
1138
+ cursor: wait;
1139
+ }
1140
+ button.vx-media:focus-visible {
1141
+ outline: var(--vx-focus-ring-width) solid var(--vx-state-assistance);
1142
+ outline-offset: var(--vx-space-2);
1143
+ }
1144
+ .vx-media > :is(img, video),
1145
+ .vx-video-stage > :is(img, video) {
1146
+ position: absolute;
1147
+ inset: 0;
1148
+ width: 100%;
1149
+ height: 100%;
1150
+ object-fit: contain;
1151
+ }
1152
+ .vx-media > video {
1153
+ pointer-events: none;
1154
+ }
1155
+ .vx-media-empty-label {
1156
+ color: var(--vx-text-secondary-readable);
1157
+ font: var(--vx-typography-inter-12-regular);
1158
+ padding: var(--vx-space-8);
1159
+ }
1160
+ .vx-media[data-state=selected][data-selection=outline]::after {
1161
+ position: absolute;
1162
+ inset: 0;
1163
+ border: 3px solid var(--vx-state-success);
1164
+ border-radius: inherit;
1165
+ content: "";
1166
+ pointer-events: none;
1167
+ }
1168
+ .vx-media > :is(.vx-media-label, .vx-media-duration, .vx-media-selected, .vx-media-marker) {
1169
+ position: absolute;
1170
+ z-index: 1;
1171
+ }
1172
+ .vx-media-label {
1173
+ inset: auto auto var(--vx-space-8) var(--vx-space-8);
1174
+ }
1175
+ .vx-media-duration {
1176
+ inset: auto var(--vx-space-8) var(--vx-space-8) auto;
1177
+ }
1178
+ .vx-media-selected {
1179
+ inset: var(--vx-space-8) auto auto var(--vx-space-8);
1180
+ }
1181
+ .vx-media-marker {
1182
+ inset: var(--vx-space-8) var(--vx-space-8) auto auto;
1183
+ display: grid;
1184
+ place-items: center;
1185
+ width: var(--vx-space-16);
1186
+ height: var(--vx-space-16);
1187
+ border: var(--vx-border-width) solid currentColor;
1188
+ border-radius: var(--vx-radius-sm);
1189
+ background: var(--vx-overlay-tag);
1190
+ }
1191
+ .vx-media-progress {
1192
+ position: absolute;
1193
+ inset: 0;
1194
+ display: grid;
1195
+ place-items: center;
1196
+ background: var(--vx-overlay-tag);
1197
+ color: var(--vx-text-on-content-primary);
1198
+ }
1199
+ .vx-media-import {
1200
+ display: grid;
1201
+ gap: var(--vx-space-4);
1202
+ border-radius: var(--vx-radius-md);
1203
+ }
1204
+ .vx-media-import[data-dragging=true] {
1205
+ outline: var(--vx-focus-ring-width) dashed var(--vx-state-assistance);
1206
+ }
1207
+ .vx-import-file,
1208
+ .vx-audio-preview,
1209
+ .vx-playback-controls {
1210
+ display: flex;
1211
+ align-items: center;
1212
+ gap: var(--vx-space-8);
1213
+ }
1214
+ .vx-import-file > span,
1215
+ .vx-audio-preview > div {
1216
+ flex: 1;
1217
+ min-width: 0;
1218
+ overflow-wrap: anywhere;
1219
+ }
1220
+ .vx-audio-preview,
1221
+ .vx-playback-controls {
1222
+ box-sizing: border-box;
1223
+ padding: var(--vx-space-4) var(--vx-space-8);
1224
+ border-radius: var(--vx-radius-lg);
1225
+ background: var(--vx-background-dialog);
1226
+ color: var(--vx-text-primary);
1227
+ }
1228
+ .vx-audio-preview p {
1229
+ margin: 0;
1230
+ color: var(--vx-text-secondary-readable);
1231
+ }
1232
+ .vx-audio-preview[data-variant=voice] {
1233
+ width: 360px;
1234
+ max-width: 100%;
1235
+ padding: var(--vx-space-12);
1236
+ gap: var(--vx-space-12);
1237
+ background: var(--vx-surface-input);
1238
+ }
1239
+ .vx-audio-preview[data-variant=voice] > div > span {
1240
+ font-size: 13px;
1241
+ font-weight: 600;
1242
+ }
1243
+ .vx-audio-preview[data-variant=voice] p,
1244
+ .vx-audio-preview[data-variant=voice] > span {
1245
+ font-size: 11px;
1246
+ line-height: 1.5;
1247
+ }
1248
+ .vx-audio-preview[data-variant=voice] .vx-inline-text:not(:focus) {
1249
+ white-space: nowrap;
1250
+ overflow: hidden;
1251
+ text-overflow: ellipsis;
1252
+ }
1253
+ .vx-audio-preview[data-variant=voice] .vx-button[data-shape=circle] {
1254
+ --vx-button-background: var(--vx-text-on-content-primary);
1255
+ --vx-button-foreground: var(--vx-text-subtle-black);
1256
+ }
1257
+ .vx-audio-preview[data-variant=voice] > span {
1258
+ flex-shrink: 0;
1259
+ color: var(--vx-text-secondary);
1260
+ }
1261
+ .vx-playback-controls {
1262
+ min-height: 44px;
1263
+ }
1264
+ .vx-playback-controls[data-size=large] {
1265
+ min-height: 48px;
1266
+ }
1267
+ .vx-playback-controls > input {
1268
+ flex: 1;
1269
+ }
1270
+ .vx-playback-controls > span {
1271
+ white-space: nowrap;
1272
+ font: var(--vx-typography-inter-12-medium);
1273
+ }
1274
+ .vx-video-player {
1275
+ position: relative;
1276
+ min-width: 0;
1277
+ background: #000;
1278
+ border-radius: var(--vx-radius-lg);
1279
+ }
1280
+ .vx-video-stage {
1281
+ position: relative;
1282
+ aspect-ratio: 16 / 9;
1283
+ overflow: hidden;
1284
+ }
1285
+ .vx-video-player:fullscreen {
1286
+ display: grid;
1287
+ align-content: center;
1288
+ }
1289
+ .vx-video-player:fullscreen .vx-video-stage {
1290
+ max-height: 100dvh;
1291
+ }
1292
+ .vx-video-cover {
1293
+ position: absolute;
1294
+ inset: 0;
1295
+ display: grid;
1296
+ place-items: center;
1297
+ color: var(--vx-text-on-content-primary);
1298
+ background: linear-gradient(var(--vx-black-black-4a), transparent 40%);
1299
+ }
1300
+ .vx-video-cover > div {
1301
+ position: absolute;
1302
+ inset: var(--vx-space-12) var(--vx-space-12) auto;
1303
+ display: flex;
1304
+ flex-wrap: wrap;
1305
+ align-items: center;
1306
+ gap: var(--vx-space-4);
1307
+ }
1308
+ .vx-video-player[data-placement=overlay] > .vx-playback-controls {
1309
+ position: absolute;
1310
+ inset: auto var(--vx-space-8) var(--vx-space-8);
1311
+ }
1312
+ .vx-frame-range {
1313
+ position: relative;
1314
+ min-height: 80px;
1315
+ margin-inline: var(--vx-space-8);
1316
+ border-radius: var(--vx-radius-md);
1317
+ background: var(--vx-surface-input);
1318
+ }
1319
+ .vx-frame-range[data-variant=trim] {
1320
+ min-height: 48px;
1321
+ }
1322
+ .vx-frame-range > img {
1323
+ position: absolute;
1324
+ inset: 0;
1325
+ width: 100%;
1326
+ height: 100%;
1327
+ object-fit: cover;
1328
+ border-radius: inherit;
1329
+ }
1330
+ .vx-frame-selection {
1331
+ position: absolute;
1332
+ inset: 0 calc(100% - var(--vx-range-end)) 0 var(--vx-range-start);
1333
+ display: grid;
1334
+ place-items: center;
1335
+ border: 2px solid var(--vx-state-success);
1336
+ border-radius: inherit;
1337
+ pointer-events: none;
1338
+ }
1339
+ .vx-frame-handle {
1340
+ position: absolute;
1341
+ z-index: 1;
1342
+ top: 0;
1343
+ left: var(--vx-range-start);
1344
+ width: var(--vx-space-16);
1345
+ height: 100%;
1346
+ padding: 0;
1347
+ transform: translateX(-50%);
1348
+ border: 0;
1349
+ border-radius: var(--vx-radius-sm);
1350
+ background: var(--vx-state-success);
1351
+ touch-action: none;
1352
+ cursor: ew-resize;
1353
+ }
1354
+ .vx-frame-handle[data-edge=end] {
1355
+ left: var(--vx-range-end);
1356
+ }
1357
+ .vx-frame-handle:focus-visible {
1358
+ z-index: 2;
1359
+ outline: var(--vx-focus-ring-width) solid var(--vx-state-assistance);
1360
+ }
1361
+ .vx-frame-handle::after {
1362
+ display: block;
1363
+ width: 4px;
1364
+ height: 12px;
1365
+ margin: auto;
1366
+ border-radius: var(--vx-radius-sm);
1367
+ background: var(--vx-text-on-content-primary);
1368
+ content: "";
1369
+ }
1370
+ }
1371
+
1372
+ /* packages/ui-system/dist/overlays.css */
1373
+ @scope ([data-vx-theme]) {
1374
+ .vx-action-menu {
1375
+ display: inline-block;
1376
+ position: relative;
1377
+ max-width: 100%;
1378
+ }
1379
+ .vx-action-menu-items {
1380
+ position: absolute;
1381
+ z-index: 2;
1382
+ inset-inline-start: 0;
1383
+ top: calc(100% + var(--vx-space-4));
1384
+ box-sizing: border-box;
1385
+ width: min(224px, calc(100vw - 16px));
1386
+ max-height: min(480px, 50vh);
1387
+ overflow: auto;
1388
+ padding: var(--vx-space-4);
1389
+ border: var(--vx-border-width) solid var(--vx-border-secondary);
1390
+ border-radius: var(--vx-radius-xl);
1391
+ background: var(--vx-background-dialog);
1392
+ box-shadow: var(--vx-shadow-menu);
1393
+ }
1394
+ .vx-action-menu-items > button {
1395
+ display: flex;
1396
+ align-items: center;
1397
+ gap: var(--vx-space-8);
1398
+ width: 100%;
1399
+ min-height: 36px;
1400
+ padding: var(--vx-space-4) var(--vx-space-8);
1401
+ border: 0;
1402
+ border-radius: var(--vx-radius-md);
1403
+ background: transparent;
1404
+ color: inherit;
1405
+ font: inherit;
1406
+ text-align: start;
1407
+ cursor: pointer;
1408
+ }
1409
+ .vx-action-menu-items > button[data-size=large] {
1410
+ min-height: 48px;
1411
+ }
1412
+ .vx-action-menu-items > button > span:not(.vx-icon) {
1413
+ flex: 1;
1414
+ overflow-wrap: anywhere;
1415
+ }
1416
+ .vx-action-menu-items > button:disabled {
1417
+ color: var(--vx-text-placeholder);
1418
+ cursor: not-allowed;
1419
+ }
1420
+ .vx-action-menu-items > button:is(:hover, :focus-visible, [aria-checked=true]):not(:disabled) {
1421
+ background: var(--vx-surface-hover);
1422
+ }
1423
+ .vx-action-menu-items > button:focus-visible {
1424
+ outline: var(--vx-focus-ring-width) solid var(--vx-state-assistance);
1425
+ outline-offset: calc(-1 * var(--vx-focus-ring-width));
1426
+ }
1427
+ .vx-filter-menu {
1428
+ box-sizing: border-box;
1429
+ width: min(280px, calc(100vw - 16px));
1430
+ max-height: min(480px, calc(100dvh - 16px));
1431
+ overflow: auto;
1432
+ inset: auto;
1433
+ position-area: bottom span-right;
1434
+ position-try-fallbacks:
1435
+ flip-inline,
1436
+ flip-block,
1437
+ flip-block flip-inline;
1438
+ margin: var(--vx-space-4) 0;
1439
+ padding: var(--vx-space-8);
1440
+ border: var(--vx-border-width) solid var(--vx-border-secondary);
1441
+ border-radius: var(--vx-radius-xl);
1442
+ background: var(--vx-background-dialog);
1443
+ color: var(--vx-text-primary);
1444
+ box-shadow: var(--vx-shadow-menu);
1445
+ }
1446
+ .vx-filter-menu summary {
1447
+ padding: var(--vx-space-8);
1448
+ cursor: pointer;
1449
+ }
1450
+ .vx-filter-menu summary .vx-tag {
1451
+ margin-inline-start: var(--vx-space-8);
1452
+ }
1453
+ .vx-filter-options {
1454
+ display: grid;
1455
+ gap: var(--vx-space-4);
1456
+ padding: 0 var(--vx-space-8) var(--vx-space-8);
1457
+ }
1458
+ .vx-filter-menu > .vx-button {
1459
+ margin-top: var(--vx-space-8);
1460
+ }
1461
+ .vx-annotation-tools {
1462
+ display: inline-flex;
1463
+ align-items: center;
1464
+ gap: var(--vx-space-2);
1465
+ padding: var(--vx-space-4);
1466
+ border-radius: var(--vx-radius-full);
1467
+ background: var(--vx-state-success);
1468
+ color: var(--vx-text-on-content-primary);
1469
+ }
1470
+ .vx-annotation-tools .vx-button {
1471
+ color: inherit;
1472
+ background: transparent;
1473
+ }
1474
+ .vx-annotation-tools:not([role]) .vx-button:hover {
1475
+ background: var(--vx-overlay-tag);
1476
+ }
1477
+ .vx-annotation-tools[role=toolbar] {
1478
+ border: 1px solid var(--vx-border-secondary);
1479
+ background: var(--vx-background-dialog);
1480
+ color: var(--vx-text-primary);
1481
+ box-shadow: var(--vx-shadow-annotation);
1482
+ }
1483
+ .vx-annotation-tools[role=toolbar] .vx-button:hover:not(:disabled, [aria-pressed=true]) {
1484
+ background: var(--vx-surface-hover);
1485
+ }
1486
+ .vx-annotation-tools[role=toolbar] .vx-button[aria-pressed=true] {
1487
+ background: var(--vx-green-green);
1488
+ color: var(--vx-text-on-content-primary);
1489
+ }
1490
+ .vx-annotation-tools[role=toolbar] .vx-button:disabled {
1491
+ color: var(--vx-text-placeholder);
1492
+ }
1493
+ .vx-annotation-tools[role=toolbar] .vx-button:focus-visible {
1494
+ outline-offset: -2px;
1495
+ }
1496
+ .vx-annotation-tools[role=toolbar] .vx-button[aria-pressed=true]:focus-visible {
1497
+ outline-color: var(--vx-text-on-content-primary);
1498
+ }
1499
+ .vx-dialog {
1500
+ box-sizing: border-box;
1501
+ width: min(480px, calc(100vw - 32px));
1502
+ max-height: calc(100dvh - 32px);
1503
+ padding: 0;
1504
+ border: var(--vx-border-width) solid var(--vx-border-secondary);
1505
+ border-radius: var(--vx-radius-xl);
1506
+ background: var(--vx-background-dialog);
1507
+ color: var(--vx-text-primary);
1508
+ box-shadow: var(--vx-shadow-dialog);
1509
+ }
1510
+ .vx-dialog::backdrop {
1511
+ background: var(--vx-black-black-4a);
1512
+ }
1513
+ .vx-dialog > :is(header, footer),
1514
+ .vx-dialog-body {
1515
+ padding: var(--vx-space-16);
1516
+ }
1517
+ .vx-dialog > :is(header, footer) {
1518
+ display: flex;
1519
+ justify-content: space-between;
1520
+ align-items: center;
1521
+ gap: var(--vx-space-8);
1522
+ }
1523
+ .vx-dialog > footer {
1524
+ justify-content: flex-end;
1525
+ flex-wrap: wrap;
1526
+ }
1527
+ .vx-dialog h2 {
1528
+ margin: 0;
1529
+ font: var(--vx-typography-inter-16-semi-bold);
1530
+ }
1531
+ }
1532
+
1533
+ /* packages/ui-system/dist/styles.css */
1534
+ @font-face {
1535
+ font-family: "Vivix Studio Inter";
1536
+ src: url("./assets/inter-latin-400-normal-55WT6UWF.woff2") format("woff2");
1537
+ font-weight: 400;
1538
+ font-display: swap;
1539
+ }
1540
+ @font-face {
1541
+ font-family: "Vivix Studio Inter";
1542
+ src: url("./assets/inter-latin-500-normal-W62DVTXI.woff2") format("woff2");
1543
+ font-weight: 500;
1544
+ font-display: swap;
1545
+ }
1546
+ @font-face {
1547
+ font-family: "Vivix Studio Inter";
1548
+ src: url("./assets/inter-latin-600-normal-R6Y2SZCR.woff2") format("woff2");
1549
+ font-weight: 600;
1550
+ font-display: swap;
1551
+ }
1552
+ @scope ([data-vx-theme]) {
1553
+ .vx-icon {
1554
+ display: inline-block;
1555
+ flex: none;
1556
+ width: var(--vx-icon-size, var(--vx-button-icon-size, 16px));
1557
+ height: var(--vx-icon-size, var(--vx-button-icon-size, 16px));
1558
+ vertical-align: middle;
1559
+ position: relative;
1560
+ }
1561
+ .vx-icon::before {
1562
+ content: "";
1563
+ position: absolute;
1564
+ inset: 0;
1565
+ margin: auto;
1566
+ width: var(--vx-icon-width, 100%);
1567
+ height: var(--vx-icon-height, 100%);
1568
+ background: currentColor;
1569
+ mask: var(--vx-icon-mask) center / contain no-repeat;
1570
+ }
1571
+ .vx-icon[data-icon=add] {
1572
+ --vx-icon-mask: url("./assets/add-JY533O73.svg");
1573
+ }
1574
+ .vx-icon[data-icon=check] {
1575
+ --vx-icon-mask: url("./assets/check-JSRRIXN5.svg");
1576
+ }
1577
+ .vx-icon[data-icon=check-on-content] {
1578
+ --vx-icon-mask: url("./assets/check-on-content-FQUVG3IZ.svg");
1579
+ }
1580
+ .vx-icon[data-icon=chevron-up] {
1581
+ --vx-icon-mask: url("./assets/chevron-up-VBHYAJVB.svg");
1582
+ }
1583
+ .vx-icon[data-icon=expand] {
1584
+ --vx-icon-mask: url("./assets/expand-IAV75AFA.svg");
1585
+ }
1586
+ .vx-icon[data-icon=chevron-down] {
1587
+ --vx-icon-mask: url("./assets/chevron-down-K7YKS2EY.svg");
1588
+ }
1589
+ .vx-icon[data-icon=clear] {
1590
+ --vx-icon-mask: url("./assets/clear-XNEZJKFC.svg");
1591
+ --vx-icon-width: 90.83%;
1592
+ --vx-icon-height: 90.83%;
1593
+ }
1594
+ .vx-icon[data-icon=grid] {
1595
+ --vx-icon-mask: url("./assets/grid-TLG5JYWB.svg");
1596
+ --vx-icon-width: 82.52%;
1597
+ --vx-icon-height: 82.5%;
1598
+ }
1599
+ .vx-icon[data-icon=list] {
1600
+ --vx-icon-mask: url("./assets/list-5VUAOZUH.svg");
1601
+ --vx-icon-width: 83.36%;
1602
+ --vx-icon-height: 75.02%;
1603
+ }
1604
+ .vx-icon[data-icon=search] {
1605
+ --vx-icon-mask: url("./assets/search-JUOSGQRM.svg");
1606
+ --vx-icon-width: 82.5%;
1607
+ --vx-icon-height: 82.5%;
1608
+ }
1609
+ .vx-icon[data-icon=calendar] {
1610
+ --vx-icon-mask: url("./assets/calendar-JI6USFRJ.svg");
1611
+ }
1612
+ .vx-icon[data-icon=import] {
1613
+ --vx-icon-mask: url("./assets/import-AFBUV2VV.svg");
1614
+ }
1615
+ .vx-icon[data-icon=chevron-right] {
1616
+ --vx-icon-mask: url("./assets/chevron-right-TNE35DBJ.svg");
1617
+ }
1618
+ .vx-icon[data-icon=magic] {
1619
+ --vx-icon-size: 18px;
1620
+ --vx-icon-width: 78.125%;
1621
+ --vx-icon-height: 86.46%;
1622
+ --vx-icon-mask: url("./assets/magic-OMME7FOV.svg");
1623
+ }
1624
+ .vx-icon[data-icon=select] {
1625
+ --vx-icon-mask: url("./assets/select-VU7WR7B4.svg");
1626
+ }
1627
+ .vx-icon[data-icon=area] {
1628
+ --vx-icon-mask: url("./assets/area-P2WOMBT5.svg");
1629
+ }
1630
+ .vx-icon[data-icon=draw] {
1631
+ --vx-icon-mask: url("./assets/draw-FOFX5TOM.svg");
1632
+ }
1633
+ .vx-icon[data-icon=close] {
1634
+ --vx-icon-mask: url("./assets/close-GO5F7YFS.svg");
1635
+ }
1636
+ .vx-icon[data-icon=reset] {
1637
+ --vx-icon-mask: url("./assets/reset-JESMTEMV.svg");
1638
+ }
1639
+ .vx-icon[data-icon=more] {
1640
+ --vx-icon-mask: url("./assets/more-AEJ5MHWV.svg");
1641
+ }
1642
+ .vx-icon[data-icon=play] {
1643
+ --vx-icon-mask: url("./assets/play-WIIT3XQK.svg");
1644
+ }
1645
+ .vx-icon[data-icon=pause] {
1646
+ --vx-icon-mask: url("./assets/pause-2E4UY4FW.svg");
1647
+ }
1648
+ .vx-icon[data-icon=mute] {
1649
+ --vx-icon-mask: url("./assets/mute-SXOSCR2U.svg");
1650
+ }
1651
+ .vx-icon[data-icon=volume] {
1652
+ --vx-icon-mask: url("./assets/volume-2TYGJL6F.svg");
1653
+ }
1654
+ .vx-icon[data-icon=fullscreen] {
1655
+ --vx-icon-mask: url("./assets/fullscreen-L2JCXIN2.svg");
1656
+ }
1657
+ .vx-icon[data-icon=sound-file] {
1658
+ --vx-icon-mask: url("./assets/sound-file-YYY6VNYN.svg");
1659
+ }
1660
+ .vx-icon[data-icon=chevron-left] {
1661
+ --vx-icon-mask: url("./assets/chevron-left-JQCLK2WZ.svg");
1662
+ }
1663
+ }
1664
+
1665
+ /* packages/project-studio/src/ui/generation-form.css */
1666
+ @scope ([data-vx-theme]) {
1667
+ .vx-generation-panel {
1668
+ display: flex;
1669
+ flex-direction: column;
1670
+ gap: var(--vx-space-20);
1671
+ min-width: 0;
1672
+ color: var(--vx-text-primary);
1673
+ font: var(--vx-typography-inter-14-regular);
1674
+ }
1675
+ .vx-generation-panel p,
1676
+ .vx-generation-panel h3,
1677
+ .vx-generation-panel h2 {
1678
+ margin: 0;
1679
+ }
1680
+ .vx-generation-panel .vx-field {
1681
+ display: grid;
1682
+ gap: var(--vx-space-8);
1683
+ min-width: 0;
1684
+ }
1685
+ .vx-generation-panel .vx-field > span {
1686
+ font-weight: 500;
1687
+ font-size: 13px;
1688
+ }
1689
+ .vx-generation-panel .vx-field > textarea,
1690
+ .vx-generation-panel .vx-field > input {
1691
+ width: 100%;
1692
+ box-sizing: border-box;
1693
+ border: var(--vx-border-width) solid var(--vx-control-border);
1694
+ border-radius: var(--vx-radius-lg);
1695
+ background: var(--vx-surface-input);
1696
+ color: var(--vx-text-primary);
1697
+ font: inherit;
1698
+ line-height: 1.5;
1699
+ padding: var(--vx-space-10) var(--vx-space-12);
1700
+ }
1701
+ .vx-generation-panel .vx-field > textarea {
1702
+ min-height: 156px;
1703
+ max-height: 320px;
1704
+ resize: vertical;
1705
+ }
1706
+ .vx-generation-panel :is(input, textarea):focus-visible {
1707
+ outline: var(--vx-focus-ring-width) solid var(--vx-state-assistance);
1708
+ outline-offset: var(--vx-space-2);
1709
+ }
1710
+ .vx-generation-panel .vx-dropdown {
1711
+ width: 100%;
1712
+ }
1713
+ .vx-generation-panel .vx-dropdown-trigger {
1714
+ width: 100%;
1715
+ justify-content: space-between;
1716
+ min-height: 40px;
1717
+ border: var(--vx-border-width) solid var(--vx-control-border);
1718
+ background: var(--vx-surface-input);
1719
+ padding: var(--vx-space-10) var(--vx-space-12);
1720
+ }
1721
+ .vx-generation-panel .generation-settings-grid {
1722
+ display: grid;
1723
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1724
+ gap: var(--vx-space-16);
1725
+ }
1726
+ .vx-generation-panel .generation-more summary {
1727
+ cursor: pointer;
1728
+ color: var(--vx-text-secondary-readable);
1729
+ margin-bottom: var(--vx-space-12);
1730
+ }
1731
+ .vx-generation-hint,
1732
+ .vx-generation-panel .sub,
1733
+ .vx-generation-panel .reference-help {
1734
+ color: var(--vx-text-secondary-readable);
1735
+ font-size: 13px;
1736
+ line-height: 1.5;
1737
+ }
1738
+ .vx-generation-panel .vx-generation-count {
1739
+ max-width: 180px;
1740
+ }
1741
+ .vx-generation-submit {
1742
+ display: flex;
1743
+ align-items: center;
1744
+ justify-content: space-between;
1745
+ gap: var(--vx-space-16);
1746
+ position: sticky;
1747
+ bottom: 0;
1748
+ padding: var(--vx-space-16) 0 0;
1749
+ border-top: var(--vx-border-width) solid var(--vx-border-secondary);
1750
+ background: var(--vx-background-dialog);
1751
+ }
1752
+ .vx-generation-panel .reference-section {
1753
+ display: flex;
1754
+ flex-direction: column;
1755
+ gap: var(--vx-space-12);
1756
+ }
1757
+ .vx-generation-panel .reference-heading {
1758
+ display: flex;
1759
+ align-items: center;
1760
+ justify-content: space-between;
1761
+ gap: var(--vx-space-8);
1762
+ }
1763
+ .vx-generation-panel .reference-heading h3 {
1764
+ font: var(--vx-typography-inter-14-medium);
1765
+ color: var(--vx-text-primary);
1766
+ }
1767
+ .vx-generation-panel .reference-slot-group {
1768
+ display: grid;
1769
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1770
+ gap: var(--vx-space-12);
1771
+ }
1772
+ .vx-generation-panel :is(.reference-strip, .reference-actions) {
1773
+ display: flex;
1774
+ flex-wrap: wrap;
1775
+ align-items: flex-start;
1776
+ gap: var(--vx-space-12);
1777
+ }
1778
+ .vx-generation-panel .reference-slot {
1779
+ display: grid;
1780
+ gap: var(--vx-space-8);
1781
+ font-size: 13px;
1782
+ }
1783
+ .vx-generation-panel .reference-tile {
1784
+ position: relative;
1785
+ width: 136px;
1786
+ min-width: 0;
1787
+ }
1788
+ .vx-generation-panel .reference-thumb {
1789
+ width: 100%;
1790
+ height: 92px;
1791
+ padding: 0;
1792
+ overflow: hidden;
1793
+ border: var(--vx-border-width) solid var(--vx-border-secondary);
1794
+ border-radius: var(--vx-radius-lg);
1795
+ background: var(--vx-surface-input);
1796
+ }
1797
+ .vx-generation-panel .reference-thumb :is(img, video) {
1798
+ width: 100%;
1799
+ height: 100%;
1800
+ object-fit: contain;
1801
+ }
1802
+ .vx-generation-panel .reference-caption {
1803
+ display: grid;
1804
+ gap: var(--vx-space-4);
1805
+ padding-top: var(--vx-space-8);
1806
+ overflow-wrap: anywhere;
1807
+ }
1808
+ .vx-generation-panel .reference-remove {
1809
+ position: absolute;
1810
+ top: 4px;
1811
+ right: 4px;
1812
+ border: 0;
1813
+ border-radius: var(--vx-radius-full);
1814
+ background: var(--vx-background-dialog);
1815
+ }
1816
+ .vx-generation-panel :is(.reference-add, .reference-actions button, .version-button) {
1817
+ padding: var(--vx-space-8);
1818
+ border: var(--vx-border-width) solid var(--vx-border-secondary);
1819
+ border-radius: var(--vx-radius-lg);
1820
+ background: var(--vx-surface-input);
1821
+ color: var(--vx-text-primary);
1822
+ font: inherit;
1823
+ cursor: pointer;
1824
+ }
1825
+ .vx-generation-panel .reference-add {
1826
+ display: flex;
1827
+ min-height: 72px;
1828
+ justify-content: center;
1829
+ align-items: center;
1830
+ gap: var(--vx-space-8);
1831
+ border-style: dashed;
1832
+ }
1833
+ .vx-generation-panel .reference-picker-backdrop {
1834
+ position: fixed;
1835
+ inset: 0;
1836
+ z-index: 5;
1837
+ display: grid;
1838
+ place-items: center;
1839
+ background: var(--vx-black-black-4a);
1840
+ padding: var(--vx-space-16);
1841
+ }
1842
+ .vx-generation-panel .reference-picker {
1843
+ width: min(640px, 100%);
1844
+ max-height: calc(100dvh - 64px);
1845
+ overflow: auto;
1846
+ padding: var(--vx-space-24);
1847
+ background: var(--vx-background-dialog);
1848
+ border-radius: var(--vx-radius-xl);
1849
+ box-shadow: var(--vx-shadow-dialog);
1850
+ display: grid;
1851
+ gap: var(--vx-space-16);
1852
+ }
1853
+ .vx-generation-panel :is(.reference-picker-header, .reference-picker-toolbar, .reference-picker-footer, .reference-picker-selection) {
1854
+ display: flex;
1855
+ align-items: center;
1856
+ justify-content: space-between;
1857
+ gap: var(--vx-space-12);
1858
+ flex-wrap: wrap;
1859
+ }
1860
+ .vx-generation-panel .reference-picker-grid {
1861
+ display: grid;
1862
+ grid-template-columns: repeat(3, minmax(0, 1fr));
1863
+ gap: var(--vx-space-12);
1864
+ }
1865
+ .vx-generation-panel .reference-picker-card {
1866
+ min-width: 0;
1867
+ padding: var(--vx-space-8);
1868
+ border: var(--vx-border-width) solid var(--vx-border-secondary);
1869
+ border-radius: var(--vx-radius-lg);
1870
+ background: var(--vx-background-dialog);
1871
+ color: var(--vx-text-primary);
1872
+ }
1873
+ .vx-generation-panel .reference-picker-card.chosen {
1874
+ border-color: var(--vx-state-success);
1875
+ }
1876
+ .vx-generation-panel .reference-picker-card :is(strong, small) {
1877
+ display: block;
1878
+ overflow-wrap: anywhere;
1879
+ margin-top: var(--vx-space-4);
1880
+ }
1881
+ .vx-generation-panel .reference-picker-selection > label {
1882
+ display: grid;
1883
+ gap: var(--vx-space-8);
1884
+ min-width: 180px;
1885
+ }
1886
+ .vx-generation-panel .reference-picker-toolbar .vx-field {
1887
+ flex: 1;
1888
+ }
1889
+ .vx-generation-panel .reference-picker-toolbar {
1890
+ align-items: flex-end;
1891
+ }
1892
+ @media (max-width: 520px) {
1893
+ .vx-generation-panel .generation-settings-grid {
1894
+ grid-template-columns: 1fr;
1895
+ }
1896
+ .vx-generation-submit {
1897
+ flex-wrap: wrap;
1898
+ }
1899
+ }
1900
+ }