@getdom/studio 0.1.0 → 0.2.0

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 (101) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/README.md +53 -1
  3. package/SKILL.md +21 -1
  4. package/package.json +6 -2
  5. package/public/llms.txt +13 -2
  6. package/src/pages/_layout/componentCatalog.generated.js +1185 -44
  7. package/src/pages/_layout/componentLoaders.js +41 -0
  8. package/src/pages/_layout/componentManager.js +38 -27
  9. package/src/pages/_layout/componentRuntimeRecords.js +3 -1
  10. package/src/pages/charts/_shared/ChartContainer.vue +67 -0
  11. package/src/pages/charts/_shared/ChartLegend.vue +22 -0
  12. package/src/pages/charts/_shared/ChartTooltip.vue +18 -0
  13. package/src/pages/charts/_shared/DonutRenderer.vue +33 -0
  14. package/src/pages/charts/_shared/XYChart.vue +140 -0
  15. package/src/pages/charts/_shared/XYRenderer.vue +90 -0
  16. package/src/pages/charts/_shared/chartProps.js +23 -0
  17. package/src/pages/charts/_shared/chartUtils.js +95 -0
  18. package/src/pages/charts/area-chart/DomAreaChart.vue +27 -0
  19. package/src/pages/charts/bar-chart/DomBarChart.vue +29 -0
  20. package/src/pages/charts/date-range-picker/DomDateRangePicker.vue +104 -0
  21. package/src/pages/charts/date-range-picker/dateRange.js +69 -0
  22. package/src/pages/charts/donut-chart/DomDonutChart.vue +117 -0
  23. package/src/pages/charts/line-chart/DomLineChart.vue +26 -0
  24. package/src/pages/charts/metric-card/DomMetricCard.vue +49 -0
  25. package/src/pages/charts/sparkline/DomSparkline.vue +30 -0
  26. package/src/pages/components/_shared/media/MediaDeviceSelect.vue +28 -0
  27. package/src/pages/components/_shared/media/useMediaInput.js +200 -0
  28. package/src/pages/components/audio-controls/DomAudioControls.vue +91 -0
  29. package/src/pages/components/audio-input/DomAudioInput.vue +58 -0
  30. package/src/pages/components/button/DomButton.vue +10 -4
  31. package/src/pages/components/button/buttonStyles.js +5 -0
  32. package/src/pages/components/camera-input/DomCameraInput.vue +75 -0
  33. package/src/pages/components/command-palette/DomCommandPalette.vue +12 -2
  34. package/src/pages/components/dialog/DomDialog.vue +338 -36
  35. package/src/pages/components/icon-button/DomIconButton.vue +8 -2
  36. package/src/pages/components/menu-stack/DomMenuStack.vue +111 -0
  37. package/src/pages/components/menu-stack/menuTree.js +35 -0
  38. package/src/pages/components/popover/DomPopover.vue +1 -53
  39. package/src/pages/components/popover/popover.css +50 -0
  40. package/src/pages/components/video-feed/DomVideoFeed.vue +551 -0
  41. package/src/pages/data/agent-chat/DomAgentChatShell.vue +1 -0
  42. package/src/pages/data/agent-chat/DomAgentConversation.vue +1 -0
  43. package/src/pages/data/agent-chat/DomAgentConversationList.vue +1 -0
  44. package/src/pages/data/gantt/DomGantt.vue +788 -0
  45. package/src/pages/data/gantt/ganttTime.js +223 -0
  46. package/src/pages/data/month-calendar/DomMonthCalendar.vue +84 -9
  47. package/src/pages/data/notification-inbox/DomNotificationInbox.vue +505 -0
  48. package/src/pages/data/notification-inbox/notificationPresentation.js +34 -0
  49. package/src/pages/designer/_shared/ControlIconButton.vue +62 -0
  50. package/src/pages/designer/_shared/StyleControlSection.vue +59 -0
  51. package/src/pages/designer/_shared/cssEditorContext.js +19 -0
  52. package/src/pages/designer/backdrop-editor/BackdropControl.vue +57 -0
  53. package/src/pages/designer/backdrop-editor/DomBackdropEditor.vue +33 -0
  54. package/src/pages/designer/backdrop-editor/backdropModel.js +39 -0
  55. package/src/pages/designer/background-editor/BackgroundLayers.vue +210 -0
  56. package/src/pages/designer/background-editor/DomBackgroundEditor.vue +33 -0
  57. package/src/pages/designer/background-editor/backgroundModel.js +102 -0
  58. package/src/pages/designer/border-editor/BorderControl.vue +72 -0
  59. package/src/pages/designer/border-editor/DomBorderEditor.vue +34 -0
  60. package/src/pages/designer/border-editor/borderModel.js +21 -0
  61. package/src/pages/designer/color-swatch/DomColorSwatch.vue +95 -0
  62. package/src/pages/designer/frame/DomDesignerFrame.vue +16 -0
  63. package/src/pages/designer/frame/DomFrameLayoutEditor.vue +41 -0
  64. package/src/pages/designer/frame/frameLayout.js +93 -0
  65. package/src/pages/designer/layers/DomDesignerLayers.vue +11 -0
  66. package/src/pages/designer/shadow-editor/DomShadowEditor.vue +32 -0
  67. package/src/pages/designer/shadow-editor/ShadowLayers.vue +185 -0
  68. package/src/pages/designer/shadow-editor/shadowModel.js +73 -0
  69. package/src/pages/designer/stage/DesignerBounds.vue +31 -0
  70. package/src/pages/designer/stage/DomDesignerStage.vue +237 -0
  71. package/src/pages/designer/stage/SpacingGuides.vue +33 -0
  72. package/src/pages/designer/stage/resizeGeometry.js +15 -0
  73. package/src/pages/designer/stage/snapGeometry.js +69 -0
  74. package/src/pages/designer/stage/snapPipeline.js +17 -0
  75. package/src/pages/designer/stage/spacingGeometry.js +129 -0
  76. package/src/pages/forms/native-select/DomNativeSelect.vue +8 -3
  77. package/src/pages/forms/number-input/DomNumberInput.vue +39 -3
  78. package/src/pages/forms/range-input/DomRangeInput.vue +75 -23
  79. package/src/pages/forms/textarea-composer/DomTextareaComposer.vue +91 -9
  80. package/src/pages/forms/toggle/DomToggle.vue +1 -1
  81. package/src/pages/lib/headless/base.js +10 -5
  82. package/src/pages/lib/headless/dialog.js +25 -6
  83. package/src/pages/lib/headless/drawer.js +49 -21
  84. package/src/pages/lib/vue/index.d.ts +1161 -14
  85. package/src/pages/lib/vue/index.js +43 -0
  86. package/src/pages/mobile/_shared/interactionMath.js +46 -0
  87. package/src/pages/mobile/_shared/useKeyboardViewport.js +91 -0
  88. package/src/pages/mobile/action-sheet/DomActionSheet.vue +102 -65
  89. package/src/pages/mobile/bottom-nav/DomAppBottomNav.vue +4 -2
  90. package/src/pages/mobile/bottom-sheet/DomBottomSheet.vue +221 -0
  91. package/src/pages/mobile/list-item/DomAppListItem.vue +6 -6
  92. package/src/pages/mobile/profile/DomAppProfile.vue +42 -0
  93. package/src/pages/mobile/safe-area/DomSafeArea.vue +6 -6
  94. package/src/pages/mobile/shell/DomAppShell.vue +60 -9
  95. package/src/pages/mobile/stack/DomAppStack.vue +214 -55
  96. package/src/pages/mobile/swipe-actions/DomSwipeActions.vue +346 -0
  97. package/src/pages/mobile/top-bar/DomAppTopBar.vue +3 -3
  98. package/src/pages/visual/audio-visualizer/DomAudioVisualizer.vue +143 -0
  99. package/src/style.css +2 -445
  100. package/src/tailwind.css +351 -0
  101. package/src/theme.css +99 -0
package/src/style.css CHANGED
@@ -1,446 +1,3 @@
1
1
  @import "tailwindcss";
2
- @source "./pages/**/*.{vue,js}";
3
- @source inline("transition duration-1000 ease-in ease-out opacity-0 opacity-100 scale-50 scale-100");
4
- @custom-variant dark (&:where([data-theme='dark'], [data-theme='dark'] *));
5
-
6
- :root,
7
- [data-theme="light"] {
8
- color-scheme: light;
9
- --radius: 0.625rem;
10
- --radius-sm: calc(var(--radius) * 0.6);
11
- --radius-md: calc(var(--radius) * 0.8);
12
- --radius-lg: var(--radius);
13
- --radius-xl: calc(var(--radius) * 1.4);
14
- --radius-2xl: calc(var(--radius) * 1.8);
15
- --radius-3xl: calc(var(--radius) * 2.2);
16
- --radius-4xl: calc(var(--radius) * 2.6);
17
- --shadow-xs: 0 1px 1px 0 rgb(15 23 42 / 0.04);
18
- --shadow-sm: 0 1px 2px 0 rgb(15 23 42 / 0.06);
19
- --shadow-md: 0 3px 8px -2px rgb(15 23 42 / 0.12), 0 1px 2px -1px rgb(15 23 42 / 0.08);
20
- --shadow-lg: 0 8px 20px -6px rgb(15 23 42 / 0.16), 0 2px 6px -2px rgb(15 23 42 / 0.08);
21
- --shadow-xl: 0 18px 44px -18px rgb(15 23 42 / 0.24), 0 8px 18px -12px rgb(15 23 42 / 0.16);
22
- --shadow-2xl: 0 24px 60px -18px rgb(15 23 42 / 0.24), 0 8px 20px -10px rgb(15 23 42 / 0.14);
23
- --canvas: #fff;
24
- --canvas-fg: oklch(0.145 0 0);
25
- --primary: oklch(0.205 0 0);
26
- --primary-fg: oklch(0.985 0 0);
27
- --secondary: oklch(0.97 0 0);
28
- --secondary-fg: oklch(0.205 0 0);
29
- --muted: oklch(0.97 0 0);
30
- --muted-fg: oklch(0.50 0 0);
31
- --accent: oklch(0.97 0 0);
32
- --accent-fg: oklch(0.205 0 0);
33
- --destructive: oklch(0.577 0.245 27.325);
34
- --destructive-fg: oklch(0.985 0 0);
35
- --success: oklch(0.57 0.794 149.350);
36
- --success-fg: oklch(0.985 0 0);
37
- --warning: oklch(0.7 0.2 84);
38
- --warning-fg: oklch(0.28 0.07 46);
39
- --border: oklch(0.922 0 0);
40
- --input: oklch(0.922 0 0);
41
- --ring: oklch(0.708 0 0);
42
- }
43
-
44
- /*
45
- * The month calendar always responds to its own container. Tailwind expands
46
- * theme(...) while compiling the combined app stylesheet, so consumer @theme
47
- * overrides remain the single source of truth for its sensible defaults.
48
- */
49
- .dom-month-calendar__grid {
50
- --dom-month-calendar-day-min-height: 7.5rem;
51
- --dom-month-calendar-day-headers-display: none;
52
- --dom-month-calendar-row-rail-align: center;
53
- --dom-month-calendar-row-rail-direction: row;
54
- --dom-month-calendar-row-rail-justify: space-between;
55
- --dom-month-calendar-row-rail-min-height: 2.5rem;
56
- --dom-month-calendar-week-columns: minmax(0, 1fr);
57
- }
58
-
59
- .dom-month-calendar__continuous-mobile-header {
60
- display: flex;
61
- }
62
-
63
- @container (min-width: theme(--breakpoint-lg)) {
64
- .dom-month-calendar__continuous-mobile-header {
65
- display: none;
66
- }
67
-
68
- .dom-month-calendar__grid {
69
- --dom-month-calendar-day-min-height: 11rem;
70
- --dom-month-calendar-day-headers-display: grid;
71
- --dom-month-calendar-row-rail-align: flex-start;
72
- --dom-month-calendar-row-rail-direction: column;
73
- --dom-month-calendar-row-rail-justify: flex-start;
74
- --dom-month-calendar-row-rail-min-height: 11rem;
75
- --dom-month-calendar-week-columns: var(--dom-month-calendar-wide-week-columns);
76
- --dom-month-calendar-wide-border-left-width: 1px;
77
- --dom-month-calendar-wide-border-top-width: 0;
78
- --dom-month-calendar-wide-boundary-gradient: linear-gradient(var(--dom-month-calendar-boundary-color), var(--dom-month-calendar-boundary-color));
79
- --dom-month-calendar-wide-boundary-left-size: 2px 100%;
80
- --dom-month-calendar-wide-boundary-top-size: 100% 2px;
81
- }
82
- }
83
-
84
- [data-theme="dark"] {
85
- color-scheme: dark;
86
- --shadow-xs: 0 1px 1px 0 rgb(0 0 0 / 0.28);
87
- --shadow-sm: 0 1px 0 0 rgb(255 255 255 / 0.04) inset, 0 1px 2px 0 rgb(0 0 0 / 0.34);
88
- --shadow-md: 0 1px 0 0 rgb(255 255 255 / 0.04) inset, 0 8px 18px -10px rgb(0 0 0 / 0.52), 0 2px 5px -3px rgb(0 0 0 / 0.44);
89
- --shadow-lg: 0 1px 0 0 rgb(255 255 255 / 0.05) inset, 0 16px 34px -18px rgb(0 0 0 / 0.58), 0 5px 12px -8px rgb(0 0 0 / 0.5);
90
- --shadow-xl: 0 1px 0 0 rgb(255 255 255 / 0.05) inset, 0 24px 52px -24px rgb(0 0 0 / 0.68), 0 10px 22px -14px rgb(0 0 0 / 0.56);
91
- --shadow-2xl: 0 1px 0 0 rgb(255 255 255 / 0.06) inset, 0 34px 76px -30px rgb(0 0 0 / 0.72), 0 16px 34px -20px rgb(0 0 0 / 0.58);
92
- --canvas: oklch(0.145 0 0);
93
- --canvas-fg: oklch(0.985 0 0);
94
- --primary: oklch(0.922 0 0);
95
- --primary-fg: oklch(0.205 0 0);
96
- --secondary: oklch(0.269 0 0);
97
- --secondary-fg: oklch(0.985 0 0);
98
- --muted: oklch(0.269 0 0);
99
- --muted-fg: oklch(0.708 0 0);
100
- --accent: oklch(0.269 0 0);
101
- --accent-fg: oklch(0.985 0 0);
102
- --destructive: oklch(0.704 0.191 22.216);
103
- --destructive-fg: oklch(0.985 0 0);
104
- --success: oklch(0.696 0.17 162.48);
105
- --success-fg: oklch(0.145 0 0);
106
- --warning: oklch(0.769 0.188 70.08);
107
- --warning-fg: oklch(0.145 0 0);
108
- --border: oklch(1 0 0 / 10%);
109
- --input: oklch(1 0 0 / 15%);
110
- --ring: oklch(0.556 0 0);
111
- }
112
-
113
- @theme inline {
114
- --color-canvas: var(--canvas);
115
- --color-canvas-fg: var(--canvas-fg);
116
- --color-primary: var(--primary);
117
- --color-primary-fg: var(--primary-fg);
118
- --color-secondary: var(--secondary);
119
- --color-secondary-fg: var(--secondary-fg);
120
- --color-muted: var(--muted);
121
- --color-muted-fg: var(--muted-fg);
122
- --color-accent: var(--accent);
123
- --color-accent-fg: var(--accent-fg);
124
- --color-destructive: var(--destructive);
125
- --color-destructive-fg: var(--destructive-fg);
126
- --color-success: var(--success);
127
- --color-success-fg: var(--success-fg);
128
- --color-warning: var(--warning);
129
- --color-warning-fg: var(--warning-fg);
130
- --color-border: var(--border);
131
- --color-input: var(--input);
132
- --color-ring: var(--ring);
133
- --radius-sm: calc(var(--radius) * 0.6);
134
- --radius-md: calc(var(--radius) * 0.8);
135
- --radius-lg: var(--radius);
136
- --radius-xl: calc(var(--radius) * 1.4);
137
- --radius-2xl: calc(var(--radius) * 1.8);
138
- --radius-3xl: calc(var(--radius) * 2.2);
139
- --radius-4xl: calc(var(--radius) * 2.6);
140
- }
141
-
142
- * {
143
- box-sizing: border-box;
144
- }
145
-
146
- html,
147
- body,
148
- #app {
149
- min-height: 100%;
150
- }
151
-
152
- body {
153
- margin: 0;
154
- font-family:
155
- "Plus Jakarta Sans Variable",
156
- "Plus Jakarta Sans",
157
- ui-sans-serif,
158
- system-ui,
159
- -apple-system,
160
- BlinkMacSystemFont,
161
- "Segoe UI",
162
- sans-serif;
163
- background: var(--canvas);
164
- color: var(--canvas-fg);
165
- text-rendering: optimizeLegibility;
166
- -webkit-font-smoothing: antialiased;
167
- }
168
-
169
- @layer utilities {
170
- .skin-card {
171
- background-color: var(--skin-card-bg, var(--canvas));
172
- background-image: var(--skin-card-bg-image, none);
173
- border-color: var(--skin-card-border, var(--border));
174
- border-style: var(--skin-card-border-style, solid);
175
- border-width: var(--skin-card-border-width, 1px);
176
- box-shadow: var(--skin-card-shadow, var(--shadow-xs));
177
- color: var(--skin-card-fg, var(--canvas-fg));
178
- backdrop-filter: var(--skin-card-backdrop, none);
179
- -webkit-backdrop-filter: var(--skin-card-backdrop, none);
180
- }
181
-
182
- .skin-popover {
183
- background-color: var(--skin-popover-bg, var(--canvas));
184
- background-image: var(--skin-popover-bg-image, none);
185
- border-color: var(--skin-popover-border, var(--border));
186
- border-style: var(--skin-popover-border-style, solid);
187
- border-width: var(--skin-popover-border-width, 1px);
188
- box-shadow: var(--skin-popover-shadow, var(--shadow-lg));
189
- color: var(--skin-popover-fg, var(--canvas-fg));
190
- backdrop-filter: var(--skin-popover-backdrop, none);
191
- -webkit-backdrop-filter: var(--skin-popover-backdrop, none);
192
- }
193
-
194
- .skin-overlay {
195
- background-color: var(--skin-overlay-bg, var(--canvas));
196
- background-image: var(--skin-overlay-bg-image, none);
197
- border-color: var(--skin-overlay-border, var(--border));
198
- border-style: var(--skin-overlay-border-style, solid);
199
- border-width: var(--skin-overlay-border-width, 1px);
200
- box-shadow: var(--skin-overlay-shadow, var(--shadow-2xl));
201
- color: var(--skin-overlay-fg, var(--canvas-fg));
202
- backdrop-filter: var(--skin-overlay-backdrop, blur(20px) saturate(1.12));
203
- -webkit-backdrop-filter: var(--skin-overlay-backdrop, blur(20px) saturate(1.12));
204
- }
205
-
206
- .skin-control {
207
- background-color: var(--skin-control-bg, var(--secondary));
208
- background-image: var(--skin-control-bg-image, none);
209
- border-color: var(--skin-control-border, var(--border));
210
- border-style: var(--skin-control-border-style, solid);
211
- border-width: var(--skin-control-border-width, 1px);
212
- box-shadow: var(--skin-control-shadow, var(--shadow-xs));
213
- color: var(--skin-control-fg, var(--secondary-fg));
214
- backdrop-filter: var(--skin-control-backdrop, none);
215
- -webkit-backdrop-filter: var(--skin-control-backdrop, none);
216
- }
217
-
218
- .skin-action {
219
- background-color: var(--skin-action-bg, var(--primary));
220
- background-image: var(--skin-action-bg-image, linear-gradient(to bottom, color-mix(in oklch, white 10%, transparent), transparent));
221
- border-color: var(--skin-action-border, color-mix(in oklch, var(--primary) 80%, var(--border)));
222
- border-style: var(--skin-action-border-style, solid);
223
- border-width: var(--skin-action-border-width, 1px);
224
- box-shadow: var(--skin-action-shadow, var(--shadow-sm));
225
- color: var(--skin-action-fg, var(--primary-fg));
226
- backdrop-filter: var(--skin-action-backdrop, none);
227
- -webkit-backdrop-filter: var(--skin-action-backdrop, none);
228
- }
229
- }
230
-
231
- /* DOM Studio custom-elements: hide pre-upgrade light-DOM children so SSR'd
232
- * dialog / popover content doesn't render in flow before the JS module
233
- * loads and the shadow DOM takes over. Trigger slots stay visible. */
234
- dom-dialog:not(:defined) > *:not([slot="trigger"]),
235
- dom-popover:not(:defined) > *:not([slot="trigger"]) {
236
- display: none;
237
- }
238
-
239
- /* Shiki code blocks. Shiki emits dual-theme styles in one render — the inline
240
- * styles carry the light colours and the dark colours as CSS variables.
241
- * Override those vars when [data-theme="dark"] is on the root. */
242
- .dom-shiki {
243
- min-width: 0;
244
- max-width: 100%;
245
- overflow-x: auto;
246
- }
247
- .dom-shiki .shiki {
248
- box-sizing: border-box;
249
- margin: 0;
250
- min-width: 0;
251
- max-width: 100%;
252
- overflow-x: auto;
253
- padding: 1rem;
254
- font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
255
- font-size: 12.5px;
256
- line-height: 1.65;
257
- }
258
- .dom-shiki .shiki,
259
- .dom-shiki .shiki code {
260
- background-color: inherit;
261
- }
262
- [data-theme="dark"] .dom-shiki .shiki:not([data-theme="light"] *),
263
- [data-theme="dark"] .dom-shiki .shiki span:not([data-theme="light"] *),
264
- .dom-code[data-theme="dark"] > .dom-shiki .shiki,
265
- .dom-code[data-theme="dark"] > .dom-shiki .shiki span {
266
- color: var(--shiki-dark) !important;
267
- background-color: var(--shiki-dark-bg) !important;
268
- }
269
- [data-theme="dark"] .dom-shiki .shiki span:not([data-theme="light"] *),
270
- .dom-code[data-theme="dark"] > .dom-shiki .shiki span {
271
- font-style: var(--shiki-dark-font-style) !important;
272
- font-weight: var(--shiki-dark-font-weight) !important;
273
- text-decoration: var(--shiki-dark-text-decoration) !important;
274
- }
275
- [data-theme="dark"] .dom-code-token:not([data-theme="light"] *) {
276
- background-color: var(--shiki-dark-bg) !important;
277
- color: var(--shiki-dark) !important;
278
- font-style: var(--shiki-dark-font-style) !important;
279
- font-weight: var(--shiki-dark-font-weight) !important;
280
- text-decoration: var(--shiki-dark-text-decoration) !important;
281
- }
282
-
283
- @layer components {
284
- .skin-input {
285
- background-color: var(--skin-input-bg, var(--canvas));
286
- background-image: var(--skin-input-bg-image, none);
287
- border-color: var(--skin-input-border, var(--input));
288
- border-style: var(--skin-input-border-style, solid);
289
- border-width: var(--skin-input-border-width, 1px);
290
- box-shadow: var(--skin-input-shadow, inset 0 1px 2px rgb(15 23 42 / 0.1));
291
- color: var(--skin-input-fg, var(--canvas-fg));
292
- backdrop-filter: var(--skin-input-backdrop, none);
293
- -webkit-backdrop-filter: var(--skin-input-backdrop, none);
294
- @apply w-full rounded-lg px-3 py-2 text-sm outline-none transition placeholder:text-muted-fg focus:border-ring focus:ring-2 focus:ring-ring/30 disabled:opacity-50;
295
- }
296
-
297
- dom-dropdown[open] > [slot="trigger"].skin-input,
298
- dom-dropdown[open] > [data-trigger].skin-input {
299
- @apply border-ring ring-2 ring-ring/30;
300
- }
301
-
302
- .dom-floating-transition {
303
- --dom-floating-enter-x: 0px;
304
- --dom-floating-enter-y: -10px;
305
- --dom-floating-origin: top center;
306
- --dom-floating-scale: 0.975;
307
- --dom-floating-enter-opacity-duration: 190ms;
308
- --dom-floating-enter-transform-duration: 260ms;
309
- --dom-floating-leave-opacity-duration: 190ms;
310
- --dom-floating-leave-transform-duration: 260ms;
311
- --dom-floating-enter-easing: cubic-bezier(0.16, 1, 0.3, 1);
312
- --dom-floating-leave-easing: cubic-bezier(0.25, 0.1, 0.25, 1);
313
- --dom-popover-arrow-x: 50%;
314
- --dom-popover-arrow-y: auto;
315
- opacity: 0;
316
- transform: translate3d(var(--dom-floating-enter-x), var(--dom-floating-enter-y), 0) scale(var(--dom-floating-scale));
317
- transform-origin: var(--dom-floating-origin);
318
- transition:
319
- opacity var(--dom-floating-enter-opacity-duration) var(--dom-floating-enter-easing),
320
- transform var(--dom-floating-enter-transform-duration) var(--dom-floating-enter-easing);
321
- will-change: opacity, transform;
322
- animation: none;
323
- }
324
-
325
- @keyframes dom-floating-scale-fade-opacity-in {
326
- from { opacity: 0; }
327
- to { opacity: 1; }
328
- }
329
-
330
- @keyframes dom-floating-scale-fade-opacity-out {
331
- from { opacity: 1; }
332
- to { opacity: 0; }
333
- }
334
-
335
- @keyframes dom-floating-scale-fade-transform-in {
336
- from { transform: translate3d(var(--dom-floating-enter-x), var(--dom-floating-enter-y), 0) scale(var(--dom-floating-scale)); }
337
- to { transform: translate3d(0, 0, 0) scale(1); }
338
- }
339
-
340
- @keyframes dom-floating-scale-fade-transform-out {
341
- from { transform: translate3d(0, 0, 0) scale(1); }
342
- to { transform: translate3d(var(--dom-floating-enter-x), var(--dom-floating-enter-y), 0) scale(var(--dom-floating-scale)); }
343
- }
344
-
345
- .dom-floating-transition:popover-open,
346
- .dom-floating-transition[data-floating-open="true"] {
347
- opacity: 1;
348
- transform: translate3d(0, 0, 0) scale(1);
349
- }
350
-
351
- .dom-floating-transition[data-entering="from"]:popover-open,
352
- .dom-floating-transition[data-entering="from"][data-floating-open="true"],
353
- .dom-floating-transition[data-leaving="to"]:popover-open,
354
- .dom-floating-transition[data-leaving="to"][data-floating-open="true"] {
355
- opacity: 0;
356
- transform: translate3d(var(--dom-floating-enter-x), var(--dom-floating-enter-y), 0) scale(var(--dom-floating-scale));
357
- }
358
-
359
- .dom-floating-transition[data-entering="to"]:popover-open,
360
- .dom-floating-transition[data-entering="to"][data-floating-open="true"],
361
- .dom-floating-transition[data-leaving="from"]:popover-open,
362
- .dom-floating-transition[data-leaving="from"][data-floating-open="true"] {
363
- opacity: 1;
364
- transform: translate3d(0, 0, 0) scale(1);
365
- }
366
-
367
- .dom-floating-transition[data-floating-effect="scale-fade"][data-entering="to"]:popover-open,
368
- .dom-floating-transition[data-floating-effect="scale-fade"][data-entering="to"][data-floating-open="true"] {
369
- animation:
370
- dom-floating-scale-fade-opacity-in var(--dom-floating-enter-opacity-duration) var(--dom-floating-enter-easing) both,
371
- dom-floating-scale-fade-transform-in var(--dom-floating-enter-transform-duration) var(--dom-floating-enter-easing) both;
372
- }
373
-
374
- .dom-floating-transition[data-leaving="to"]:popover-open {
375
- transition:
376
- opacity var(--dom-floating-leave-opacity-duration) linear,
377
- transform var(--dom-floating-leave-transform-duration) var(--dom-floating-leave-easing);
378
- }
379
-
380
- .dom-floating-transition[data-leaving="to"][data-floating-open="true"] {
381
- transition:
382
- opacity var(--dom-floating-leave-opacity-duration) linear,
383
- transform var(--dom-floating-leave-transform-duration) var(--dom-floating-leave-easing);
384
- }
385
-
386
- .dom-floating-transition[data-floating-effect="scale-fade"][data-leaving="to"]:popover-open,
387
- .dom-floating-transition[data-floating-effect="scale-fade"][data-leaving="to"][data-floating-open="true"] {
388
- transition: none;
389
- animation:
390
- dom-floating-scale-fade-opacity-out var(--dom-floating-leave-opacity-duration) linear both,
391
- dom-floating-scale-fade-transform-out var(--dom-floating-leave-transform-duration) var(--dom-floating-leave-easing) both;
392
- }
393
-
394
- @starting-style {
395
- .dom-floating-transition:popover-open {
396
- opacity: 0;
397
- transform: translate3d(var(--dom-floating-enter-x), var(--dom-floating-enter-y), 0) scale(var(--dom-floating-scale));
398
- }
399
- }
400
-
401
- .dom-floating-transition:not([data-animate-placement]) {
402
- transition-property: opacity;
403
- }
404
-
405
- .dom-floating-transition[data-side="top"] {
406
- --dom-floating-enter-y: 10px;
407
- --dom-floating-origin: bottom center;
408
- }
409
-
410
- .dom-floating-transition[data-side="bottom"] {
411
- --dom-floating-enter-y: -10px;
412
- --dom-floating-origin: top center;
413
- }
414
-
415
- .dom-floating-transition[data-side="left"] {
416
- --dom-floating-enter-x: 10px;
417
- --dom-floating-enter-y: 0px;
418
- --dom-floating-origin: center right;
419
- }
420
-
421
- .dom-floating-transition[data-side="right"] {
422
- --dom-floating-enter-x: -10px;
423
- --dom-floating-enter-y: 0px;
424
- --dom-floating-origin: center left;
425
- }
426
-
427
- .dom-floating-transition[data-floating-effect="fade"] {
428
- --dom-floating-enter-x: 0px;
429
- --dom-floating-enter-y: 0px;
430
- --dom-floating-scale: 1;
431
- --dom-floating-enter-transform-duration: 0ms;
432
- --dom-floating-leave-transform-duration: 0ms;
433
- }
434
-
435
- [data-invalid] .skin-input,
436
- .skin-input[data-invalid] {
437
- @apply border-destructive focus:border-destructive focus:ring-destructive/25;
438
- }
439
-
440
- [data-invalid] dom-dropdown[open] > [slot="trigger"].skin-input,
441
- [data-invalid] dom-dropdown[open] > [data-trigger].skin-input,
442
- dom-dropdown[open] > [slot="trigger"].skin-input[aria-invalid="true"],
443
- dom-dropdown[open] > [data-trigger].skin-input[aria-invalid="true"] {
444
- @apply border-destructive ring-2 ring-destructive/25;
445
- }
446
- }
2
+ @import "./tailwind.css";
3
+ @import "./theme.css";