orbital-ds 0.1.1 → 0.3.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.
- package/AGENTS.md +57 -0
- package/README.md +22 -14
- package/components.manifest.json +1255 -0
- package/contract.json +82 -0
- package/dist/styles.css +486 -347
- package/dist/themes/qratia.css +14 -14
- package/dist/themes/qratia.fonts.css +2 -0
- package/dist/themes/qratia.scoped.css +247 -0
- package/dist/themes/zyro.css +343 -0
- package/dist/themes/zyro.fonts.css +2 -0
- package/dist/themes/zyro.scoped.css +343 -0
- package/dist/ui/accordion.d.ts +9 -0
- package/dist/ui/accordion.js +79 -0
- package/dist/ui/alert-dialog.d.ts +23 -0
- package/dist/ui/alert-dialog.js +173 -0
- package/dist/ui/alert.d.ts +13 -0
- package/dist/ui/alert.js +77 -0
- package/dist/ui/aspect-ratio.d.ts +7 -0
- package/dist/ui/aspect-ratio.js +22 -0
- package/dist/ui/attachment.d.ts +26 -0
- package/dist/ui/attachment.js +197 -0
- package/dist/ui/avatar.js +1 -1
- package/dist/ui/badge.d.ts +1 -1
- package/dist/ui/badge.js +1 -1
- package/dist/ui/bubble.d.ts +19 -0
- package/dist/ui/bubble.js +115 -0
- package/dist/ui/button-group.d.ts +15 -0
- package/dist/ui/button-group.js +82 -0
- package/dist/ui/button.d.ts +5 -3
- package/dist/ui/button.js +9 -6
- package/dist/ui/calendar.d.ts +15 -0
- package/dist/ui/calendar.js +190 -0
- package/dist/ui/card.js +4 -4
- package/dist/ui/carousel.d.ts +33 -0
- package/dist/ui/carousel.js +199 -0
- package/dist/ui/checkbox.js +1 -1
- package/dist/ui/combobox.d.ts +26 -0
- package/dist/ui/combobox.js +281 -0
- package/dist/ui/command.d.ts +22 -0
- package/dist/ui/command.js +183 -0
- package/dist/ui/context-menu.d.ts +31 -0
- package/dist/ui/context-menu.js +242 -0
- package/dist/ui/dialog.js +2 -2
- package/dist/ui/direction.d.ts +1 -0
- package/dist/ui/direction.js +8 -0
- package/dist/ui/drawer.d.ts +18 -0
- package/dist/ui/drawer.js +208 -0
- package/dist/ui/dropdown-menu.d.ts +1 -1
- package/dist/ui/dropdown-menu.js +13 -9
- package/dist/ui/empty.d.ts +15 -0
- package/dist/ui/empty.js +102 -0
- package/dist/ui/field.d.ts +28 -0
- package/dist/ui/field.js +217 -0
- package/dist/ui/hover-card.d.ts +8 -0
- package/dist/ui/hover-card.js +45 -0
- package/dist/ui/input-group.d.ts +22 -0
- package/dist/ui/input-group.js +145 -0
- package/dist/ui/input-otp.d.ts +13 -0
- package/dist/ui/input-otp.js +82 -0
- package/dist/ui/input.js +1 -1
- package/dist/ui/item.d.ts +26 -0
- package/dist/ui/item.js +195 -0
- package/dist/ui/kbd.d.ts +6 -0
- package/dist/ui/kbd.js +29 -0
- package/dist/ui/marker.d.ts +13 -0
- package/dist/ui/marker.js +71 -0
- package/dist/ui/menubar.d.ts +31 -0
- package/dist/ui/menubar.js +259 -0
- package/dist/ui/message-scroller.d.ts +16 -0
- package/dist/ui/message-scroller.js +120 -0
- package/dist/ui/message.d.ts +12 -0
- package/dist/ui/message.js +90 -0
- package/dist/ui/native-select.d.ts +10 -0
- package/dist/ui/native-select.js +63 -0
- package/dist/ui/navigation-menu.d.ts +15 -0
- package/dist/ui/navigation-menu.js +162 -0
- package/dist/ui/pagination.d.ts +22 -0
- package/dist/ui/pagination.js +128 -0
- package/dist/ui/popover.js +2 -2
- package/dist/ui/questionnaire.d.ts +24 -0
- package/dist/ui/questionnaire.js +331 -0
- package/dist/ui/radio-group.d.ts +8 -0
- package/dist/ui/radio-group.js +39 -0
- package/dist/ui/resizable.d.ts +10 -0
- package/dist/ui/resizable.js +46 -0
- package/dist/ui/scroll-area.js +1 -1
- package/dist/ui/select.js +5 -5
- package/dist/ui/sheet.js +4 -4
- package/dist/ui/sidebar.js +8 -8
- package/dist/ui/slider.d.ts +6 -0
- package/dist/ui/slider.js +53 -0
- package/dist/ui/spinner.d.ts +5 -0
- package/dist/ui/spinner.js +9 -0
- package/dist/ui/switch.d.ts +8 -0
- package/dist/ui/switch.js +32 -0
- package/dist/ui/table.js +2 -2
- package/dist/ui/tabs.d.ts +1 -1
- package/dist/ui/tabs.js +1 -1
- package/dist/ui/textarea.js +1 -1
- package/dist/ui/toast.d.ts +19 -0
- package/dist/ui/toast.js +193 -0
- package/dist/ui/toggle-group.d.ts +14 -0
- package/dist/ui/toggle-group.js +77 -0
- package/dist/ui/toggle.d.ts +12 -0
- package/dist/ui/toggle.js +43 -0
- package/dist/ui/tooltip.js +3 -3
- package/docs/CONTRACT.md +123 -0
- package/package.json +138 -95
- package/scripts/doctor.mjs +202 -0
- package/scripts/manifest.mjs +79 -0
|
@@ -0,0 +1,343 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* TEMA zyro — «liquid glass» (traducido de faro-orbital-zyro-ui).
|
|
3
|
+
*
|
|
4
|
+
* Personalidad: lavanda claro / azul muy oscuro, acento azul profundo (claro) y
|
|
5
|
+
* cian (oscuro). El cristal vive en la capa de NAVEGACIÓN y CONTROLES (sidebar,
|
|
6
|
+
* campos, menús); el CONTENIDO (tarjetas) se mantiene casi opaco, como indican
|
|
7
|
+
* las guías de cristal. Sidebar a ras de borde, sin silueta flotante. Acción
|
|
8
|
+
* primaria = píldora con degradado de marca y brillo.
|
|
9
|
+
*
|
|
10
|
+
* Estructura del fichero:
|
|
11
|
+
* 1. Variables claras (:root) y oscuras (.dark) — el CONTRATO del tema.
|
|
12
|
+
* 2. Capa de PERSONALIDAD — reglas sobre los ganchos del DOM (`data-slot`,
|
|
13
|
+
* `data-variant`…) escritas solo con variables. Va SIN capa para ganar a las
|
|
14
|
+
* utilidades de los componentes, así que define también los estados
|
|
15
|
+
* (hover, active). Es lo que da forma propia a los elementos.
|
|
16
|
+
*
|
|
17
|
+
* Variables `--zy-*`: privadas de este tema (no son contrato).
|
|
18
|
+
* Importar DESPUÉS de la estructura. Fuentes: `zyro.fonts.css`, lo primero del CSS.
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
/* ── 1. VARIABLES · PIEL CLARA ───────────────────────────────────────────── */
|
|
22
|
+
:root[data-theme='zyro'] {
|
|
23
|
+
--radius: 18px;
|
|
24
|
+
|
|
25
|
+
/* Tipografía: Montserrat (titulares) + Roboto (cuerpo) */
|
|
26
|
+
--ds-font-sans: 'Roboto', system-ui, -apple-system, sans-serif;
|
|
27
|
+
--ds-font-display: 'Montserrat', system-ui, -apple-system, sans-serif;
|
|
28
|
+
--ds-font-mono: ui-monospace, 'SF Mono', Menlo, monospace;
|
|
29
|
+
--ds-heading-tracking: -0.01em;
|
|
30
|
+
|
|
31
|
+
/* Color */
|
|
32
|
+
--background: #eaeefb;
|
|
33
|
+
--foreground: rgba(14, 22, 48, 0.92);
|
|
34
|
+
|
|
35
|
+
--card: rgba(255, 255, 255, 0.98);
|
|
36
|
+
--card-foreground: rgba(14, 22, 48, 0.92);
|
|
37
|
+
--popover: #ffffff;
|
|
38
|
+
--popover-foreground: rgba(14, 22, 48, 0.92);
|
|
39
|
+
|
|
40
|
+
--primary: #0349fe;
|
|
41
|
+
--primary-foreground: #ffffff;
|
|
42
|
+
--secondary: rgba(243, 246, 253, 0.9);
|
|
43
|
+
--secondary-foreground: rgba(14, 22, 48, 0.92);
|
|
44
|
+
--muted: rgba(243, 246, 253, 0.9);
|
|
45
|
+
--muted-foreground: rgba(14, 22, 48, 0.66);
|
|
46
|
+
--accent: rgba(3, 73, 254, 0.09);
|
|
47
|
+
--accent-foreground: #0349fe;
|
|
48
|
+
--destructive: #eb1919;
|
|
49
|
+
--destructive-foreground: #ffffff;
|
|
50
|
+
|
|
51
|
+
--border: rgba(168, 190, 235, 0.3);
|
|
52
|
+
--input: rgba(168, 190, 235, 0.55);
|
|
53
|
+
--ring: #0349fe;
|
|
54
|
+
|
|
55
|
+
--chart-1: #0349fe;
|
|
56
|
+
--chart-2: #14bd44;
|
|
57
|
+
--chart-3: #ffb300;
|
|
58
|
+
--chart-4: #eb1919;
|
|
59
|
+
--chart-5: #9747ff;
|
|
60
|
+
|
|
61
|
+
--sidebar: rgba(255, 255, 255, 0.58);
|
|
62
|
+
--sidebar-foreground: rgba(14, 22, 48, 0.78);
|
|
63
|
+
--sidebar-primary: #0349fe;
|
|
64
|
+
--sidebar-primary-foreground: #ffffff;
|
|
65
|
+
--sidebar-accent: rgba(3, 73, 254, 0.09);
|
|
66
|
+
--sidebar-accent-foreground: #0349fe;
|
|
67
|
+
--sidebar-border: rgba(168, 190, 235, 0.35);
|
|
68
|
+
--sidebar-ring: #0349fe;
|
|
69
|
+
|
|
70
|
+
--danger: #c21414;
|
|
71
|
+
--danger-soft: rgba(235, 25, 25, 0.1);
|
|
72
|
+
--warning: #9a6e00;
|
|
73
|
+
--warning-soft: rgba(255, 179, 0, 0.16);
|
|
74
|
+
--success: #0e8f34;
|
|
75
|
+
--success-soft: rgba(20, 189, 68, 0.12);
|
|
76
|
+
--info: #136ba8;
|
|
77
|
+
--info-soft: rgba(42, 147, 213, 0.12);
|
|
78
|
+
--neutral: rgba(14, 22, 48, 0.6);
|
|
79
|
+
--neutral-soft: rgba(14, 22, 48, 0.06);
|
|
80
|
+
|
|
81
|
+
--link: #0349fe;
|
|
82
|
+
--link-hover: #0236c0;
|
|
83
|
+
--inset: rgba(243, 246, 253, 0.9);
|
|
84
|
+
--inset-foreground: rgba(14, 22, 48, 0.92);
|
|
85
|
+
--brand: #0349fe;
|
|
86
|
+
--brand-bright: #36b3ed;
|
|
87
|
+
|
|
88
|
+
/* Formas: la esquina crece con el tamaño del contenedor (7·10·14·18·22) */
|
|
89
|
+
--ds-radius-sm: 7px;
|
|
90
|
+
--ds-radius-md: 10px;
|
|
91
|
+
--ds-radius-lg: 14px;
|
|
92
|
+
--ds-radius-xl: 18px;
|
|
93
|
+
--ds-radius-2xl: 22px;
|
|
94
|
+
--ds-radius-control: 10px;
|
|
95
|
+
--ds-radius-overlay: 22px;
|
|
96
|
+
|
|
97
|
+
/* Sombras de cristal: capa tenue + brillo interior en el borde superior */
|
|
98
|
+
--ds-shadow-card: 0 2px 14px rgba(28, 48, 100, 0.07);
|
|
99
|
+
--ds-shadow-card-hover: 0 6px 26px rgba(28, 48, 100, 0.1);
|
|
100
|
+
--ds-shadow-raised: 0 4px 30px rgba(28, 48, 100, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.85);
|
|
101
|
+
--ds-shadow-overlay: 0 14px 52px rgba(28, 48, 100, 0.12), inset 0 1px 0 rgba(255, 255, 255, 0.95);
|
|
102
|
+
--ds-shadow-popover: 0 14px 52px rgba(28, 48, 100, 0.12), inset 0 1px 0 rgba(255, 255, 255, 0.95);
|
|
103
|
+
|
|
104
|
+
/* Medidas: controles algo más altos y holgados */
|
|
105
|
+
--ds-control-h-sm: 2.25rem;
|
|
106
|
+
--ds-control-h-md: 2.5rem;
|
|
107
|
+
--ds-control-h-lg: 2.75rem;
|
|
108
|
+
--ds-button-px-sm: 1rem;
|
|
109
|
+
--ds-button-px-md: 1.25rem;
|
|
110
|
+
--ds-button-px-lg: 1.5rem;
|
|
111
|
+
--ds-field-px: 1rem;
|
|
112
|
+
|
|
113
|
+
/* Materiales: cristal en navegación y controles; tarjetas sin desenfoque */
|
|
114
|
+
--ds-sidebar-backdrop: blur(28px) saturate(180%);
|
|
115
|
+
--ds-overlay-backdrop: blur(28px) saturate(180%);
|
|
116
|
+
--ds-field-backdrop: blur(12px) saturate(160%);
|
|
117
|
+
--ds-card-backdrop: none;
|
|
118
|
+
--ds-page-backdrop:
|
|
119
|
+
radial-gradient(55% 45% at 78% 6%, rgba(54, 179, 237, 0.3), transparent 70%),
|
|
120
|
+
radial-gradient(50% 45% at 96% 58%, rgba(3, 73, 254, 0.16), transparent 70%),
|
|
121
|
+
radial-gradient(55% 50% at 40% 106%, rgba(151, 71, 255, 0.14), transparent 70%);
|
|
122
|
+
|
|
123
|
+
/* Sidebar a ras de borde: sin separación, sin silueta; filo de 1px */
|
|
124
|
+
--ds-sidebar-pad: 0px;
|
|
125
|
+
--ds-sidebar-radius: 0px;
|
|
126
|
+
--ds-sidebar-shadow: 0 0 #0000;
|
|
127
|
+
--ds-sidebar-ring: 0px;
|
|
128
|
+
--ds-sidebar-edge: 1px solid var(--zy-glass-bs);
|
|
129
|
+
--ds-sidebar-item-radius: var(--ds-radius-lg);
|
|
130
|
+
|
|
131
|
+
/* Privadas de zyro */
|
|
132
|
+
--zy-accent-g: linear-gradient(135deg, #0349fe, #36b3ed);
|
|
133
|
+
--zy-accent-glow: rgba(3, 73, 254, 0.24);
|
|
134
|
+
--zy-glass-bt: rgba(255, 255, 255, 0.95);
|
|
135
|
+
--zy-glass-bs: rgba(168, 190, 235, 0.4);
|
|
136
|
+
--zy-card-bt: rgba(255, 255, 255, 1);
|
|
137
|
+
--zy-card-bs: rgba(168, 190, 235, 0.46);
|
|
138
|
+
--zy-field-bg: rgba(255, 255, 255, 0.72);
|
|
139
|
+
--zy-field-b: rgba(168, 190, 235, 0.55);
|
|
140
|
+
--zy-field-bt: rgba(255, 255, 255, 1);
|
|
141
|
+
--zy-pill: rgba(255, 255, 255, 0.55);
|
|
142
|
+
--zy-pill-on: rgba(255, 255, 255, 0.98);
|
|
143
|
+
--zy-conv-h: rgba(20, 40, 90, 0.04);
|
|
144
|
+
--zy-conv-a: rgba(3, 73, 254, 0.07);
|
|
145
|
+
--zy-conv-ab: rgba(3, 73, 254, 0.24);
|
|
146
|
+
--zy-ease: cubic-bezier(0.2, 0.7, 0.2, 1);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/* ── 1b. VARIABLES · PIEL OSCURA ─────────────────────────────────────────── */
|
|
150
|
+
:root[data-theme='zyro'].dark {
|
|
151
|
+
--background: #0e3148;
|
|
152
|
+
--foreground: rgba(255, 255, 255, 0.94);
|
|
153
|
+
|
|
154
|
+
--card: rgba(16, 24, 54, 0.94);
|
|
155
|
+
--card-foreground: rgba(255, 255, 255, 0.94);
|
|
156
|
+
--popover: rgba(22, 32, 68, 0.97);
|
|
157
|
+
--popover-foreground: rgba(255, 255, 255, 0.94);
|
|
158
|
+
|
|
159
|
+
--primary: #36b3ed;
|
|
160
|
+
--primary-foreground: #04121c;
|
|
161
|
+
--secondary: rgba(255, 255, 255, 0.05);
|
|
162
|
+
--secondary-foreground: rgba(255, 255, 255, 0.94);
|
|
163
|
+
--muted: rgba(255, 255, 255, 0.05);
|
|
164
|
+
--muted-foreground: rgba(255, 255, 255, 0.68);
|
|
165
|
+
--accent: rgba(54, 179, 237, 0.16);
|
|
166
|
+
--accent-foreground: #36b3ed;
|
|
167
|
+
--destructive: #eb1919;
|
|
168
|
+
--destructive-foreground: #ffffff;
|
|
169
|
+
|
|
170
|
+
--border: rgba(255, 255, 255, 0.07);
|
|
171
|
+
--input: rgba(255, 255, 255, 0.12);
|
|
172
|
+
--ring: #36b3ed;
|
|
173
|
+
|
|
174
|
+
--chart-1: #36b3ed;
|
|
175
|
+
--chart-2: #14bd44;
|
|
176
|
+
--chart-3: #ffb300;
|
|
177
|
+
--chart-4: #eb1919;
|
|
178
|
+
--chart-5: #9747ff;
|
|
179
|
+
|
|
180
|
+
--sidebar: rgba(255, 255, 255, 0.04);
|
|
181
|
+
--sidebar-foreground: rgba(255, 255, 255, 0.72);
|
|
182
|
+
--sidebar-primary: #36b3ed;
|
|
183
|
+
--sidebar-primary-foreground: #04121c;
|
|
184
|
+
--sidebar-accent: rgba(54, 179, 237, 0.16);
|
|
185
|
+
--sidebar-accent-foreground: #36b3ed;
|
|
186
|
+
--sidebar-border: rgba(255, 255, 255, 0.07);
|
|
187
|
+
--sidebar-ring: #36b3ed;
|
|
188
|
+
|
|
189
|
+
--danger: #ff6b6b;
|
|
190
|
+
--danger-soft: rgba(235, 25, 25, 0.2);
|
|
191
|
+
--warning: #ffb300;
|
|
192
|
+
--warning-soft: rgba(255, 179, 0, 0.18);
|
|
193
|
+
--success: #14bd44;
|
|
194
|
+
--success-soft: rgba(20, 189, 68, 0.18);
|
|
195
|
+
--info: #2a93d5;
|
|
196
|
+
--info-soft: rgba(42, 147, 213, 0.2);
|
|
197
|
+
--neutral: rgba(255, 255, 255, 0.6);
|
|
198
|
+
--neutral-soft: rgba(255, 255, 255, 0.08);
|
|
199
|
+
|
|
200
|
+
--link: #36b3ed;
|
|
201
|
+
--link-hover: #7fd0f5;
|
|
202
|
+
--inset: rgba(255, 255, 255, 0.05);
|
|
203
|
+
--inset-foreground: rgba(255, 255, 255, 0.94);
|
|
204
|
+
--brand: #36b3ed;
|
|
205
|
+
--brand-bright: #7fd0f5;
|
|
206
|
+
|
|
207
|
+
--ds-shadow-card: 0 2px 14px rgba(0, 0, 0, 0.3);
|
|
208
|
+
--ds-shadow-card-hover: 0 6px 26px rgba(0, 0, 0, 0.38);
|
|
209
|
+
--ds-shadow-raised: 0 8px 40px rgba(0, 0, 0, 0.28), inset 0 1px 0 rgba(255, 255, 255, 0.1);
|
|
210
|
+
--ds-shadow-overlay: 0 22px 64px rgba(0, 0, 0, 0.36), inset 0 1px 0 rgba(255, 255, 255, 0.13);
|
|
211
|
+
--ds-shadow-popover: 0 22px 64px rgba(0, 0, 0, 0.36), inset 0 1px 0 rgba(255, 255, 255, 0.13);
|
|
212
|
+
|
|
213
|
+
--ds-sidebar-backdrop: blur(24px) saturate(180%);
|
|
214
|
+
--ds-overlay-backdrop: blur(24px) saturate(180%);
|
|
215
|
+
--ds-page-backdrop:
|
|
216
|
+
radial-gradient(55% 45% at 78% 6%, rgba(54, 179, 237, 0.26), transparent 70%),
|
|
217
|
+
radial-gradient(50% 45% at 96% 58%, rgba(3, 73, 254, 0.24), transparent 70%),
|
|
218
|
+
radial-gradient(55% 50% at 40% 106%, rgba(151, 71, 255, 0.2), transparent 70%);
|
|
219
|
+
|
|
220
|
+
--zy-accent-g: linear-gradient(135deg, #36b3ed, #0349fe);
|
|
221
|
+
--zy-accent-glow: rgba(54, 179, 237, 0.42);
|
|
222
|
+
--zy-glass-bt: rgba(255, 255, 255, 0.3);
|
|
223
|
+
--zy-glass-bs: rgba(255, 255, 255, 0.07);
|
|
224
|
+
--zy-card-bt: rgba(255, 255, 255, 0.11);
|
|
225
|
+
--zy-card-bs: rgba(255, 255, 255, 0.06);
|
|
226
|
+
--zy-field-bg: rgba(255, 255, 255, 0.06);
|
|
227
|
+
--zy-field-b: rgba(255, 255, 255, 0.12);
|
|
228
|
+
--zy-field-bt: rgba(255, 255, 255, 0.26);
|
|
229
|
+
--zy-pill: rgba(255, 255, 255, 0.05);
|
|
230
|
+
--zy-pill-on: rgba(255, 255, 255, 0.12);
|
|
231
|
+
--zy-conv-h: rgba(255, 255, 255, 0.05);
|
|
232
|
+
--zy-conv-a: rgba(54, 179, 237, 0.14);
|
|
233
|
+
--zy-conv-ab: rgba(54, 179, 237, 0.4);
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
/* ── 2. PERSONALIDAD ─────────────────────────────────────────────────────────
|
|
237
|
+
* Sin capa: gana a las utilidades de los componentes. Solo variables.
|
|
238
|
+
*/
|
|
239
|
+
:root[data-theme='zyro'] {
|
|
240
|
+
/* Botones: píldora. Acción primaria con degradado de marca y brillo. */
|
|
241
|
+
[data-slot='button'] {
|
|
242
|
+
border-radius: 9999px;
|
|
243
|
+
transition: all var(--ds-motion-base) var(--zy-ease);
|
|
244
|
+
}
|
|
245
|
+
[data-slot='button'][data-size^='icon'] {
|
|
246
|
+
border-radius: var(--ds-radius-xl);
|
|
247
|
+
}
|
|
248
|
+
[data-slot='button']:active:not(:disabled) {
|
|
249
|
+
transform: scale(0.98);
|
|
250
|
+
}
|
|
251
|
+
[data-slot='button'][data-variant='default'] {
|
|
252
|
+
background-color: transparent;
|
|
253
|
+
background-image: var(--zy-accent-g);
|
|
254
|
+
color: #ffffff;
|
|
255
|
+
border-color: transparent;
|
|
256
|
+
box-shadow: 0 4px 16px var(--zy-accent-glow);
|
|
257
|
+
}
|
|
258
|
+
[data-slot='button'][data-variant='default']:hover:not(:disabled) {
|
|
259
|
+
filter: brightness(1.1);
|
|
260
|
+
box-shadow: 0 6px 22px var(--zy-accent-glow);
|
|
261
|
+
}
|
|
262
|
+
[data-slot='button'][data-variant='destructive'] {
|
|
263
|
+
box-shadow: 0 4px 16px rgba(235, 25, 25, 0.3);
|
|
264
|
+
}
|
|
265
|
+
[data-slot='button'][data-variant='outline'],
|
|
266
|
+
[data-slot='button'][data-variant='secondary'] {
|
|
267
|
+
border: 1px solid var(--zy-field-b);
|
|
268
|
+
background: color-mix(in oklch, var(--foreground) 5%, var(--background));
|
|
269
|
+
color: var(--muted-foreground);
|
|
270
|
+
}
|
|
271
|
+
[data-slot='button'][data-variant='outline']:hover:not(:disabled),
|
|
272
|
+
[data-slot='button'][data-variant='secondary']:hover:not(:disabled) {
|
|
273
|
+
background: color-mix(in oklch, var(--foreground) 11%, var(--background));
|
|
274
|
+
color: var(--foreground);
|
|
275
|
+
}
|
|
276
|
+
[data-slot='button'][data-variant='ghost']:hover:not(:disabled) {
|
|
277
|
+
background: var(--zy-conv-h);
|
|
278
|
+
color: var(--foreground);
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
/* Tarjetas: contenido casi opaco con filo superior luminoso */
|
|
282
|
+
[data-slot='card'] {
|
|
283
|
+
border: 1px solid var(--zy-card-bs);
|
|
284
|
+
border-top-color: var(--zy-card-bt);
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
/* Campos: cristal claro con filo superior */
|
|
288
|
+
[data-slot='input'],
|
|
289
|
+
[data-slot='textarea'],
|
|
290
|
+
[data-slot='select-trigger'] {
|
|
291
|
+
background-color: var(--zy-field-bg);
|
|
292
|
+
border-color: var(--zy-field-b);
|
|
293
|
+
border-top-color: var(--zy-field-bt);
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
/* Capas flotantes: filo de cristal */
|
|
297
|
+
[data-slot='dialog-content'],
|
|
298
|
+
[data-slot='popover-content'],
|
|
299
|
+
[data-slot='dropdown-menu-content'],
|
|
300
|
+
[data-slot='select-content'] {
|
|
301
|
+
border: 1px solid var(--zy-glass-bs);
|
|
302
|
+
border-top-color: var(--zy-glass-bt);
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
/* Etiquetas en píldora */
|
|
306
|
+
[data-slot='badge'] {
|
|
307
|
+
border-radius: 9999px;
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
/* Pestañas: píldora de cristal con la activa elevada */
|
|
311
|
+
[data-slot='tabs-list'] {
|
|
312
|
+
background: var(--zy-pill);
|
|
313
|
+
border: 1px solid var(--zy-card-bs);
|
|
314
|
+
border-radius: 9999px;
|
|
315
|
+
}
|
|
316
|
+
[data-slot='tabs-trigger'] {
|
|
317
|
+
border-radius: 9999px;
|
|
318
|
+
}
|
|
319
|
+
[data-slot='tabs-trigger'][data-active] {
|
|
320
|
+
background: var(--zy-pill-on);
|
|
321
|
+
box-shadow: 0 1px 6px rgba(28, 48, 100, 0.12);
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
/* Interruptor y progreso: degradado de marca */
|
|
325
|
+
[data-slot='switch'][data-checked] {
|
|
326
|
+
background-image: var(--zy-accent-g);
|
|
327
|
+
background-color: transparent;
|
|
328
|
+
}
|
|
329
|
+
[data-slot='progress-indicator'] {
|
|
330
|
+
background-image: var(--zy-accent-g);
|
|
331
|
+
background-color: transparent;
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
/* Sidebar: destino activo con tinte y filo, como la conversación activa de zyro */
|
|
335
|
+
[data-sidebar='menu-button'][data-active='true'] {
|
|
336
|
+
background: var(--zy-conv-a);
|
|
337
|
+
box-shadow: inset 0 0 0 1px var(--zy-conv-ab);
|
|
338
|
+
color: var(--sidebar-accent-foreground);
|
|
339
|
+
}
|
|
340
|
+
[data-sidebar='menu-button']:hover:not([data-active='true']) {
|
|
341
|
+
background: var(--zy-conv-h);
|
|
342
|
+
}
|
|
343
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { Accordion as Accordion$1 } from '@base-ui/react/accordion';
|
|
3
|
+
|
|
4
|
+
declare function Accordion({ className, ...props }: Accordion$1.Root.Props): React.JSX.Element;
|
|
5
|
+
declare function AccordionItem({ className, ...props }: Accordion$1.Item.Props): React.JSX.Element;
|
|
6
|
+
declare function AccordionTrigger({ className, children, ...props }: Accordion$1.Trigger.Props): React.JSX.Element;
|
|
7
|
+
declare function AccordionContent({ className, children, ...props }: Accordion$1.Panel.Props): React.JSX.Element;
|
|
8
|
+
|
|
9
|
+
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger };
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Accordion as AccordionPrimitive } from "@base-ui/react/accordion";
|
|
3
|
+
import { cn } from "../lib/utils";
|
|
4
|
+
import { ChevronDownIcon, ChevronUpIcon } from "lucide-react";
|
|
5
|
+
function Accordion({ className, ...props }) {
|
|
6
|
+
return /* @__PURE__ */ jsx(
|
|
7
|
+
AccordionPrimitive.Root,
|
|
8
|
+
{
|
|
9
|
+
"data-slot": "accordion",
|
|
10
|
+
className: cn(
|
|
11
|
+
"flex w-full flex-col overflow-hidden rounded-2xl border",
|
|
12
|
+
className
|
|
13
|
+
),
|
|
14
|
+
...props
|
|
15
|
+
}
|
|
16
|
+
);
|
|
17
|
+
}
|
|
18
|
+
function AccordionItem({ className, ...props }) {
|
|
19
|
+
return /* @__PURE__ */ jsx(
|
|
20
|
+
AccordionPrimitive.Item,
|
|
21
|
+
{
|
|
22
|
+
"data-slot": "accordion-item",
|
|
23
|
+
className: cn("not-last:border-b data-open:bg-muted/50", className),
|
|
24
|
+
...props
|
|
25
|
+
}
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
function AccordionTrigger({
|
|
29
|
+
className,
|
|
30
|
+
children,
|
|
31
|
+
...props
|
|
32
|
+
}) {
|
|
33
|
+
return /* @__PURE__ */ jsx(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ jsxs(
|
|
34
|
+
AccordionPrimitive.Trigger,
|
|
35
|
+
{
|
|
36
|
+
"data-slot": "accordion-trigger",
|
|
37
|
+
className: cn(
|
|
38
|
+
"group/accordion-trigger relative flex flex-1 items-start justify-between gap-6 border border-transparent p-4 text-left text-sm font-medium transition-all outline-none hover:underline aria-disabled:pointer-events-none aria-disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground",
|
|
39
|
+
className
|
|
40
|
+
),
|
|
41
|
+
...props,
|
|
42
|
+
children: [
|
|
43
|
+
children,
|
|
44
|
+
/* @__PURE__ */ jsx(ChevronDownIcon, { "data-slot": "accordion-trigger-icon", className: "pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden" }),
|
|
45
|
+
/* @__PURE__ */ jsx(ChevronUpIcon, { "data-slot": "accordion-trigger-icon", className: "pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline" })
|
|
46
|
+
]
|
|
47
|
+
}
|
|
48
|
+
) });
|
|
49
|
+
}
|
|
50
|
+
function AccordionContent({
|
|
51
|
+
className,
|
|
52
|
+
children,
|
|
53
|
+
...props
|
|
54
|
+
}) {
|
|
55
|
+
return /* @__PURE__ */ jsx(
|
|
56
|
+
AccordionPrimitive.Panel,
|
|
57
|
+
{
|
|
58
|
+
"data-slot": "accordion-content",
|
|
59
|
+
className: "overflow-hidden px-4 text-sm data-open:animate-accordion-down data-closed:animate-accordion-up",
|
|
60
|
+
...props,
|
|
61
|
+
children: /* @__PURE__ */ jsx(
|
|
62
|
+
"div",
|
|
63
|
+
{
|
|
64
|
+
className: cn(
|
|
65
|
+
"h-(--accordion-panel-height) pt-0 pb-4 data-ending-style:h-0 data-starting-style:h-0 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4",
|
|
66
|
+
className
|
|
67
|
+
),
|
|
68
|
+
children
|
|
69
|
+
}
|
|
70
|
+
)
|
|
71
|
+
}
|
|
72
|
+
);
|
|
73
|
+
}
|
|
74
|
+
export {
|
|
75
|
+
Accordion,
|
|
76
|
+
AccordionContent,
|
|
77
|
+
AccordionItem,
|
|
78
|
+
AccordionTrigger
|
|
79
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { AlertDialog as AlertDialog$1 } from '@base-ui/react/alert-dialog';
|
|
3
|
+
import { Button } from './button.js';
|
|
4
|
+
import 'class-variance-authority/types';
|
|
5
|
+
import '@base-ui/react/use-render';
|
|
6
|
+
import 'class-variance-authority';
|
|
7
|
+
|
|
8
|
+
declare function AlertDialog({ ...props }: AlertDialog$1.Root.Props): React.JSX.Element;
|
|
9
|
+
declare function AlertDialogTrigger({ ...props }: AlertDialog$1.Trigger.Props): React.JSX.Element;
|
|
10
|
+
declare function AlertDialogPortal({ ...props }: AlertDialog$1.Portal.Props): React.JSX.Element;
|
|
11
|
+
declare function AlertDialogOverlay({ className, ...props }: AlertDialog$1.Backdrop.Props): React.JSX.Element;
|
|
12
|
+
declare function AlertDialogContent({ className, size, ...props }: AlertDialog$1.Popup.Props & {
|
|
13
|
+
size?: "default" | "sm";
|
|
14
|
+
}): React.JSX.Element;
|
|
15
|
+
declare function AlertDialogHeader({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
16
|
+
declare function AlertDialogFooter({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
17
|
+
declare function AlertDialogMedia({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
18
|
+
declare function AlertDialogTitle({ className, ...props }: React.ComponentProps<typeof AlertDialog$1.Title>): React.JSX.Element;
|
|
19
|
+
declare function AlertDialogDescription({ className, ...props }: React.ComponentProps<typeof AlertDialog$1.Description>): React.JSX.Element;
|
|
20
|
+
declare function AlertDialogAction({ className, ...props }: React.ComponentProps<typeof Button>): React.JSX.Element;
|
|
21
|
+
declare function AlertDialogCancel({ className, variant, size, ...props }: AlertDialog$1.Close.Props & Pick<React.ComponentProps<typeof Button>, "variant" | "size">): React.JSX.Element;
|
|
22
|
+
|
|
23
|
+
export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger };
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { AlertDialog as AlertDialogPrimitive } from "@base-ui/react/alert-dialog";
|
|
3
|
+
import { cn } from "../lib/utils";
|
|
4
|
+
import { Button } from "./button";
|
|
5
|
+
function AlertDialog({ ...props }) {
|
|
6
|
+
return /* @__PURE__ */ jsx(AlertDialogPrimitive.Root, { "data-slot": "alert-dialog", ...props });
|
|
7
|
+
}
|
|
8
|
+
function AlertDialogTrigger({ ...props }) {
|
|
9
|
+
return /* @__PURE__ */ jsx(AlertDialogPrimitive.Trigger, { "data-slot": "alert-dialog-trigger", ...props });
|
|
10
|
+
}
|
|
11
|
+
function AlertDialogPortal({ ...props }) {
|
|
12
|
+
return /* @__PURE__ */ jsx(AlertDialogPrimitive.Portal, { "data-slot": "alert-dialog-portal", ...props });
|
|
13
|
+
}
|
|
14
|
+
function AlertDialogOverlay({
|
|
15
|
+
className,
|
|
16
|
+
...props
|
|
17
|
+
}) {
|
|
18
|
+
return /* @__PURE__ */ jsx(
|
|
19
|
+
AlertDialogPrimitive.Backdrop,
|
|
20
|
+
{
|
|
21
|
+
"data-slot": "alert-dialog-overlay",
|
|
22
|
+
className: cn(
|
|
23
|
+
"fixed inset-0 isolate z-(--ds-z-overlay) bg-scrim duration-(--ds-motion-fast) supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",
|
|
24
|
+
className
|
|
25
|
+
),
|
|
26
|
+
...props
|
|
27
|
+
}
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
function AlertDialogContent({
|
|
31
|
+
className,
|
|
32
|
+
size = "default",
|
|
33
|
+
...props
|
|
34
|
+
}) {
|
|
35
|
+
return /* @__PURE__ */ jsxs(AlertDialogPortal, { children: [
|
|
36
|
+
/* @__PURE__ */ jsx(AlertDialogOverlay, {}),
|
|
37
|
+
/* @__PURE__ */ jsx(
|
|
38
|
+
AlertDialogPrimitive.Popup,
|
|
39
|
+
{
|
|
40
|
+
"data-slot": "alert-dialog-content",
|
|
41
|
+
"data-size": size,
|
|
42
|
+
className: cn(
|
|
43
|
+
"group/alert-dialog-content fixed top-1/2 left-1/2 z-(--ds-z-overlay) grid w-full -translate-x-1/2 -translate-y-1/2 gap-6 rounded-control bg-popover p-6 text-popover-foreground ring-1 ring-foreground/5 duration-(--ds-motion-fast) outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-md data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
|
|
44
|
+
className
|
|
45
|
+
),
|
|
46
|
+
...props
|
|
47
|
+
}
|
|
48
|
+
)
|
|
49
|
+
] });
|
|
50
|
+
}
|
|
51
|
+
function AlertDialogHeader({
|
|
52
|
+
className,
|
|
53
|
+
...props
|
|
54
|
+
}) {
|
|
55
|
+
return /* @__PURE__ */ jsx(
|
|
56
|
+
"div",
|
|
57
|
+
{
|
|
58
|
+
"data-slot": "alert-dialog-header",
|
|
59
|
+
className: cn(
|
|
60
|
+
"grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-6 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]",
|
|
61
|
+
className
|
|
62
|
+
),
|
|
63
|
+
...props
|
|
64
|
+
}
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
function AlertDialogFooter({
|
|
68
|
+
className,
|
|
69
|
+
...props
|
|
70
|
+
}) {
|
|
71
|
+
return /* @__PURE__ */ jsx(
|
|
72
|
+
"div",
|
|
73
|
+
{
|
|
74
|
+
"data-slot": "alert-dialog-footer",
|
|
75
|
+
className: cn(
|
|
76
|
+
"flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end",
|
|
77
|
+
className
|
|
78
|
+
),
|
|
79
|
+
...props
|
|
80
|
+
}
|
|
81
|
+
);
|
|
82
|
+
}
|
|
83
|
+
function AlertDialogMedia({
|
|
84
|
+
className,
|
|
85
|
+
...props
|
|
86
|
+
}) {
|
|
87
|
+
return /* @__PURE__ */ jsx(
|
|
88
|
+
"div",
|
|
89
|
+
{
|
|
90
|
+
"data-slot": "alert-dialog-media",
|
|
91
|
+
className: cn(
|
|
92
|
+
"mb-2 inline-flex size-16 items-center justify-center rounded-full bg-muted sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-8",
|
|
93
|
+
className
|
|
94
|
+
),
|
|
95
|
+
...props
|
|
96
|
+
}
|
|
97
|
+
);
|
|
98
|
+
}
|
|
99
|
+
function AlertDialogTitle({
|
|
100
|
+
className,
|
|
101
|
+
...props
|
|
102
|
+
}) {
|
|
103
|
+
return /* @__PURE__ */ jsx(
|
|
104
|
+
AlertDialogPrimitive.Title,
|
|
105
|
+
{
|
|
106
|
+
"data-slot": "alert-dialog-title",
|
|
107
|
+
className: cn(
|
|
108
|
+
"text-lg font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2",
|
|
109
|
+
className
|
|
110
|
+
),
|
|
111
|
+
...props
|
|
112
|
+
}
|
|
113
|
+
);
|
|
114
|
+
}
|
|
115
|
+
function AlertDialogDescription({
|
|
116
|
+
className,
|
|
117
|
+
...props
|
|
118
|
+
}) {
|
|
119
|
+
return /* @__PURE__ */ jsx(
|
|
120
|
+
AlertDialogPrimitive.Description,
|
|
121
|
+
{
|
|
122
|
+
"data-slot": "alert-dialog-description",
|
|
123
|
+
className: cn(
|
|
124
|
+
"text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",
|
|
125
|
+
className
|
|
126
|
+
),
|
|
127
|
+
...props
|
|
128
|
+
}
|
|
129
|
+
);
|
|
130
|
+
}
|
|
131
|
+
function AlertDialogAction({
|
|
132
|
+
className,
|
|
133
|
+
...props
|
|
134
|
+
}) {
|
|
135
|
+
return /* @__PURE__ */ jsx(
|
|
136
|
+
Button,
|
|
137
|
+
{
|
|
138
|
+
"data-slot": "alert-dialog-action",
|
|
139
|
+
className: cn(className),
|
|
140
|
+
...props
|
|
141
|
+
}
|
|
142
|
+
);
|
|
143
|
+
}
|
|
144
|
+
function AlertDialogCancel({
|
|
145
|
+
className,
|
|
146
|
+
variant = "outline",
|
|
147
|
+
size = "default",
|
|
148
|
+
...props
|
|
149
|
+
}) {
|
|
150
|
+
return /* @__PURE__ */ jsx(
|
|
151
|
+
AlertDialogPrimitive.Close,
|
|
152
|
+
{
|
|
153
|
+
"data-slot": "alert-dialog-cancel",
|
|
154
|
+
className: cn(className),
|
|
155
|
+
render: /* @__PURE__ */ jsx(Button, { variant, size }),
|
|
156
|
+
...props
|
|
157
|
+
}
|
|
158
|
+
);
|
|
159
|
+
}
|
|
160
|
+
export {
|
|
161
|
+
AlertDialog,
|
|
162
|
+
AlertDialogAction,
|
|
163
|
+
AlertDialogCancel,
|
|
164
|
+
AlertDialogContent,
|
|
165
|
+
AlertDialogDescription,
|
|
166
|
+
AlertDialogFooter,
|
|
167
|
+
AlertDialogHeader,
|
|
168
|
+
AlertDialogMedia,
|
|
169
|
+
AlertDialogOverlay,
|
|
170
|
+
AlertDialogPortal,
|
|
171
|
+
AlertDialogTitle,
|
|
172
|
+
AlertDialogTrigger
|
|
173
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { VariantProps } from 'class-variance-authority';
|
|
4
|
+
|
|
5
|
+
declare const alertVariants: (props?: ({
|
|
6
|
+
variant?: "default" | "destructive" | null | undefined;
|
|
7
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
8
|
+
declare function Alert({ className, variant, ...props }: React.ComponentProps<"div"> & VariantProps<typeof alertVariants>): React.JSX.Element;
|
|
9
|
+
declare function AlertTitle({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
10
|
+
declare function AlertDescription({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
11
|
+
declare function AlertAction({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
12
|
+
|
|
13
|
+
export { Alert, AlertAction, AlertDescription, AlertTitle };
|