@adamosuiteservices/ui 2.10.11 → 2.10.13
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/dist/accordion-rounded.cjs +5 -5
- package/dist/accordion-rounded.js +4 -3
- package/dist/accordion.cjs +5 -5
- package/dist/accordion.js +11 -10
- package/dist/alert.cjs +1 -1
- package/dist/alert.js +1 -0
- package/dist/avatar.cjs +1 -1
- package/dist/avatar.js +1 -0
- package/dist/badge.cjs +2 -2
- package/dist/badge.js +1 -0
- package/dist/breadcrumb.cjs +3 -3
- package/dist/breadcrumb.js +10 -9
- package/dist/{button-BXTNbWAk.js → button-CBy_oQDu.js} +1 -0
- package/dist/button-group.cjs +3 -3
- package/dist/button-group.js +10 -9
- package/dist/{button-r2Y2aX25.cjs → button-hCW1Pww0.cjs} +1 -1
- package/dist/button.cjs +1 -1
- package/dist/button.js +1 -1
- package/dist/calendar.cjs +1 -1
- package/dist/calendar.js +3 -2
- package/dist/card.cjs +3 -3
- package/dist/card.js +1 -0
- package/dist/{checkbox-DmvyFfB3.js → checkbox-B-Lu1-qJ.js} +3 -2
- package/dist/checkbox-DHFt3l5c.cjs +22 -0
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/collapsible.cjs +1 -1
- package/dist/collapsible.js +10 -9
- package/dist/colors.css +1 -1
- package/dist/combobox.cjs +1 -1
- package/dist/combobox.js +6 -5
- package/dist/context-menu.cjs +1 -1
- package/dist/context-menu.js +3 -2
- package/dist/dialog.cjs +1 -1
- package/dist/dialog.js +3 -2
- package/dist/dropdown-menu.cjs +1 -1
- package/dist/dropdown-menu.js +3 -2
- package/dist/field.cjs +1 -1
- package/dist/field.js +39 -38
- package/dist/hover-card.cjs +1 -1
- package/dist/hover-card.js +5 -4
- package/dist/icon-DKAhvlX_.js +36 -0
- package/dist/{icon-Bg5HV6Ls.cjs → icon-DPMQJBkA.cjs} +1 -1
- package/dist/icon.cjs +1 -1
- package/dist/icon.js +1 -1
- package/dist/index-8iwAKZIp.cjs +1 -0
- package/dist/{index-Se4vRnIO.js → index-B6gxHWt9.js} +2 -1
- package/dist/{index-yWvyIlmA.js → index-B76LQ4E5.js} +4 -3
- package/dist/{index-B0M7VOwp.js → index-BAEhLEFF.js} +1 -0
- package/dist/{index-DniCthJA.js → index-BIydBVaH.js} +60 -59
- package/dist/{index-CZZ3llmi.js → index-BPOsnOxS.js} +1 -0
- package/dist/index-BaCYnOIG.cjs +1 -0
- package/dist/index-BnkHpTJs.cjs +1 -0
- package/dist/index-C2P2kXMc.cjs +41 -0
- package/dist/index-CBuLZ39k.cjs +1 -0
- package/dist/index-CC6DBo2g.cjs +1 -0
- package/dist/index-CRWn-2fF.cjs +1 -0
- package/dist/{index-BpWB3aFK.js → index-CSFEzRxy.js} +17 -16
- package/dist/index-CZWDxvEo.js +16 -0
- package/dist/index-Ca99LLZF.cjs +5 -0
- package/dist/{index-BBoIAjAs.js → index-Ce7JfyIP.js} +2 -1
- package/dist/{index-CUWMxxKG.js → index-CmWhhuj7.js} +1 -0
- package/dist/index-Cqf5g2f_.cjs +1 -0
- package/dist/index-DE3jjVoC.cjs +1 -0
- package/dist/{index-C0YiLSjW.js → index-D_hmhfRp.js} +3 -2
- package/dist/index-Da298sEl.cjs +1 -0
- package/dist/{index-CBjZooac.js → index-e0gNU5O1.js} +1 -0
- package/dist/index-i5lLg35-.cjs +1 -0
- package/dist/{index-DFPDUUq7.js → index-wujanfX3.js} +8 -7
- package/dist/{input-DSmxdfq5.cjs → input-CWDpI1Ua.cjs} +2 -2
- package/dist/{input-BQZUpTEY.js → input-DFvZLcgm.js} +1 -0
- package/dist/input-group.cjs +1 -1
- package/dist/input-group.js +4 -3
- package/dist/input.cjs +1 -1
- package/dist/input.js +1 -1
- package/dist/kbd.cjs +1 -1
- package/dist/kbd.js +1 -0
- package/dist/{label-CrsELeIw.js → label-C6zVnc3d.js} +1 -0
- package/dist/label-DqfX9cHc.cjs +7 -0
- package/dist/label.cjs +1 -1
- package/dist/label.js +1 -1
- package/dist/pagination.cjs +1 -1
- package/dist/pagination.js +4 -3
- package/dist/{popover-DAwH8jUh.js → popover-DcQ18EVl.js} +71 -70
- package/dist/popover-cGp_rNLg.cjs +15 -0
- package/dist/popover.cjs +1 -1
- package/dist/popover.js +1 -1
- package/dist/progress.cjs +1 -1
- package/dist/progress.js +1 -0
- package/dist/radio-group.cjs +1 -1
- package/dist/radio-group.js +5 -4
- package/dist/select.cjs +1 -1
- package/dist/select.js +7 -6
- package/dist/separator-CCGaTo09.cjs +7 -0
- package/dist/{separator-DVypR3Qf.js → separator-CsaqP20m.js} +1 -0
- package/dist/separator.cjs +1 -1
- package/dist/separator.js +1 -1
- package/dist/{sheet-mV8cYfd2.js → sheet-CPf9Guon.js} +3 -2
- package/dist/{sheet-IGhaVAfU.cjs → sheet-DVT_djHX.cjs} +3 -3
- package/dist/sheet.cjs +1 -1
- package/dist/sheet.js +1 -1
- package/dist/sidebar.cjs +1 -1
- package/dist/sidebar.js +25 -24
- package/dist/skeleton.cjs +1 -1
- package/dist/skeleton.js +6 -5
- package/dist/slider.cjs +1 -1
- package/dist/slider.js +2 -1
- package/dist/spinner.cjs +1 -1
- package/dist/spinner.js +10 -9
- package/dist/styles.css +1 -1
- package/dist/switch.cjs +1 -1
- package/dist/switch.js +14 -13
- package/dist/table.cjs +8 -8
- package/dist/table.js +3 -2
- package/dist/tabs-underline.cjs +1 -1
- package/dist/tabs-underline.js +8 -7
- package/dist/tabs.cjs +1 -1
- package/dist/tabs.js +3 -2
- package/dist/tailwind-colors.css +1 -1
- package/dist/tailwind-theme.css +1 -1
- package/dist/{textarea-CUPWKl-S.js → textarea-BRCnIxdB.js} +1 -0
- package/dist/{textarea-CG7iQcb3.cjs → textarea-DkFUS_oS.cjs} +1 -1
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.js +1 -1
- package/dist/themes.css +1 -1
- package/dist/toaster.cjs +2 -2
- package/dist/toaster.js +2 -1
- package/dist/toggle.cjs +1 -1
- package/dist/toggle.js +1 -0
- package/dist/tooltip.cjs +5 -4
- package/dist/tooltip.js +9 -7
- package/dist/types/theme.type.d.ts +1 -1
- package/dist/typography.cjs +1 -1
- package/dist/typography.js +5 -4
- package/docs/components/ui/accordion-rounded.md +7 -7
- package/docs/components/ui/accordion.md +2 -2
- package/docs/components/ui/alert.md +3 -3
- package/docs/components/ui/avatar.md +10 -10
- package/docs/components/ui/badge.md +10 -53
- package/docs/components/ui/button.md +1 -1
- package/docs/components/ui/calendar.md +1 -1
- package/docs/components/ui/combobox.md +7 -7
- package/docs/components/ui/hover-card.md +1 -1
- package/docs/components/ui/icon.md +12 -12
- package/docs/components/ui/input-group.md +9 -14
- package/docs/components/ui/popover.md +2 -2
- package/docs/components/ui/spinner.md +1 -1
- package/docs/components/ui/table.md +1 -1
- package/docs/components/ui/tooltip.md +3 -3
- package/docs/components/ui/typography.md +1 -1
- package/package.json +2 -1
- package/dist/checkbox-Bn7H8EaT.cjs +0 -22
- package/dist/icon-DG_i4bz2.js +0 -35
- package/dist/index-BFyr34mw.cjs +0 -5
- package/dist/index-BX9hz-JD.js +0 -15
- package/dist/index-BcGMAmWE.cjs +0 -1
- package/dist/index-Bd0gQB0k.cjs +0 -1
- package/dist/index-BeWgla7c.cjs +0 -1
- package/dist/index-COuvjZLM.cjs +0 -1
- package/dist/index-CTjlbbt9.cjs +0 -1
- package/dist/index-Cmx9M9cZ.cjs +0 -1
- package/dist/index-CzRiuk60.cjs +0 -1
- package/dist/index-DIwmXz1u.cjs +0 -1
- package/dist/index-DMs8RL3E.cjs +0 -41
- package/dist/index-Dbj9vHNq.cjs +0 -1
- package/dist/index-DmGzwG2z.cjs +0 -1
- package/dist/label-1jx6a0Sm.cjs +0 -7
- package/dist/popover-CYbik-H4.cjs +0 -15
- package/dist/separator-Brpax0EI.cjs +0 -7
|
@@ -107,7 +107,7 @@ Contenedor individual de cada item del accordion.
|
|
|
107
107
|
**Estilos aplicados**:
|
|
108
108
|
|
|
109
109
|
- `rounded-2xl`: Bordes muy redondeados
|
|
110
|
-
- `bg-
|
|
110
|
+
- `bg-muted`: Fondo gris claro
|
|
111
111
|
- `mb-4`: Margen inferior de 1rem
|
|
112
112
|
- `last:mb-0`: Sin margen en el último item
|
|
113
113
|
|
|
@@ -246,7 +246,7 @@ Solo un item abierto a la vez:
|
|
|
246
246
|
/>
|
|
247
247
|
<AccordionContent>
|
|
248
248
|
<div className="p-4 space-y-3">
|
|
249
|
-
<div className="rounded-lg border
|
|
249
|
+
<div className="rounded-lg border p-3">
|
|
250
250
|
<h4 className="text-sm font-semibold text-foreground">Full Name</h4>
|
|
251
251
|
<p className="text-sm text-foreground mt-1">Required field</p>
|
|
252
252
|
</div>
|
|
@@ -374,21 +374,21 @@ Varios items pueden estar abiertos simultáneamente:
|
|
|
374
374
|
/>
|
|
375
375
|
<AccordionContent>
|
|
376
376
|
<div className="p-4 space-y-4">
|
|
377
|
-
<div className="flex items-center justify-between p-3 bg-
|
|
377
|
+
<div className="flex items-center justify-between p-3 bg-muted rounded-lg">
|
|
378
378
|
<div>
|
|
379
379
|
<p className="text-sm font-semibold text-foreground">
|
|
380
380
|
Credit Card
|
|
381
381
|
</p>
|
|
382
382
|
<p className="text-xs text-muted-foreground">•••• 4242</p>
|
|
383
383
|
</div>
|
|
384
|
-
<span className="text-xs text-success
|
|
384
|
+
<span className="text-xs text-success font-medium">Active</span>
|
|
385
385
|
</div>
|
|
386
|
-
<div className="flex items-center justify-between p-3 bg-
|
|
386
|
+
<div className="flex items-center justify-between p-3 bg-muted rounded-lg">
|
|
387
387
|
<div>
|
|
388
388
|
<p className="text-sm font-semibold text-foreground">PayPal</p>
|
|
389
389
|
<p className="text-xs text-muted-foreground">user@example.com</p>
|
|
390
390
|
</div>
|
|
391
|
-
<span className="text-xs text-success
|
|
391
|
+
<span className="text-xs text-success font-medium">Active</span>
|
|
392
392
|
</div>
|
|
393
393
|
</div>
|
|
394
394
|
</AccordionContent>
|
|
@@ -548,7 +548,7 @@ Sin badges para diseño minimalista:
|
|
|
548
548
|
| Característica | Accordion Regular | Accordion Rounded |
|
|
549
549
|
| ------------------ | ----------------------- | --------------------------------- |
|
|
550
550
|
| Bordes | Esquinas cuadradas | `rounded-2xl` (muy redondeado) |
|
|
551
|
-
| Fondo del Item | Transparente con border | `bg-
|
|
551
|
+
| Fondo del Item | Transparente con border | `bg-muted` (gris claro) |
|
|
552
552
|
| Separación | Border entre items | Margen `mb-4` entre items |
|
|
553
553
|
| Badge Support | No (solo children) | Sí (prop `badge` dedicada) |
|
|
554
554
|
| Estilo del Título | Normal | Mayúsculas, compacto, color gris |
|
|
@@ -236,7 +236,7 @@ El trigger incluye hover effect con subrayado:
|
|
|
236
236
|
<AccordionItem value="phase-1">
|
|
237
237
|
<AccordionTrigger>
|
|
238
238
|
<div className="flex items-center gap-2">
|
|
239
|
-
<
|
|
239
|
+
<Icon symbol="check_circle" className="text-lg" />
|
|
240
240
|
Phase 1: Planning
|
|
241
241
|
</div>
|
|
242
242
|
</AccordionTrigger>
|
|
@@ -260,7 +260,7 @@ El trigger incluye hover effect con subrayado:
|
|
|
260
260
|
|
|
261
261
|
- Usa Radix UI Accordion internamente
|
|
262
262
|
- Todos los estilos tienen prefijo ``
|
|
263
|
-
- El icono
|
|
263
|
+
- El icono keyboard_arrow_down se incluye automáticamente en el trigger
|
|
264
264
|
- Las animaciones son manejadas por CSS y data attributes
|
|
265
265
|
|
|
266
266
|
## Referencias
|
|
@@ -344,15 +344,15 @@ import { Progress } from "@adamosuiteservices/ui/progress";
|
|
|
344
344
|
</div>
|
|
345
345
|
<div className="flex gap-4 justify-between">
|
|
346
346
|
<span>Memory usage:</span>
|
|
347
|
-
<span className="text-
|
|
347
|
+
<span className="text-success">-23%</span>
|
|
348
348
|
</div>
|
|
349
349
|
<div className="flex gap-4 justify-between">
|
|
350
350
|
<span>CPU usage:</span>
|
|
351
|
-
<span className="text-
|
|
351
|
+
<span className="text-success">-31%</span>
|
|
352
352
|
</div>
|
|
353
353
|
<div className="flex gap-4 justify-between">
|
|
354
354
|
<span>Battery life:</span>
|
|
355
|
-
<span className="text-
|
|
355
|
+
<span className="text-success">+18%</span>
|
|
356
356
|
</div>
|
|
357
357
|
</div>
|
|
358
358
|
</AlertDescription>
|
|
@@ -378,16 +378,16 @@ Para mostrar estado online/offline/busy:
|
|
|
378
378
|
<AvatarFallback>JD</AvatarFallback>
|
|
379
379
|
</Avatar>
|
|
380
380
|
{/* Indicador de estado */}
|
|
381
|
-
<span className="absolute bottom-0 right-0 block h-3 w-3 rounded-full bg-
|
|
381
|
+
<span className="absolute bottom-0 right-0 block h-3 w-3 rounded-full bg-success ring-2 ring-background" />
|
|
382
382
|
</div>
|
|
383
383
|
```
|
|
384
384
|
|
|
385
385
|
**Variantes de estado**:
|
|
386
386
|
|
|
387
|
-
- `bg-
|
|
387
|
+
- `bg-success`: Online
|
|
388
388
|
- `bg-gray-400`: Offline
|
|
389
|
-
- `bg-
|
|
390
|
-
- `bg-
|
|
389
|
+
- `bg-warning`: Away/Idle
|
|
390
|
+
- `bg-destructive`: Busy/Do Not Disturb
|
|
391
391
|
|
|
392
392
|
### Avatar con Badge
|
|
393
393
|
|
|
@@ -525,7 +525,7 @@ Mantén tamaños consistentes por contexto:
|
|
|
525
525
|
```tsx
|
|
526
526
|
<Avatar>
|
|
527
527
|
<AvatarImage src={url} alt="User" />
|
|
528
|
-
<AvatarFallback className="bg-
|
|
528
|
+
<AvatarFallback className="bg-primary text-primary-foreground">AB</AvatarFallback>
|
|
529
529
|
</Avatar>
|
|
530
530
|
```
|
|
531
531
|
|
|
@@ -534,11 +534,11 @@ Mantén tamaños consistentes por contexto:
|
|
|
534
534
|
```typescript
|
|
535
535
|
function getAvatarColor(name: string): string {
|
|
536
536
|
const colors = [
|
|
537
|
-
"bg-
|
|
538
|
-
"bg-
|
|
539
|
-
"bg-
|
|
540
|
-
"bg-
|
|
541
|
-
"bg-
|
|
537
|
+
"bg-destructive",
|
|
538
|
+
"bg-primary",
|
|
539
|
+
"bg-success",
|
|
540
|
+
"bg-warning",
|
|
541
|
+
"bg-primary",
|
|
542
542
|
];
|
|
543
543
|
const index = name.charCodeAt(0) % colors.length;
|
|
544
544
|
return colors[index];
|
|
@@ -499,29 +499,11 @@ Para etiquetas promocionales.
|
|
|
499
499
|
```tsx
|
|
500
500
|
import { Icon } from "@adamosuiteservices/ui/icon";
|
|
501
501
|
|
|
502
|
-
<div className="
|
|
503
|
-
|
|
504
|
-
<
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
<Badge variant="secondary">Bestseller</Badge>
|
|
508
|
-
<Badge variant="outline">Limited</Badge>
|
|
509
|
-
</div>
|
|
510
|
-
|
|
511
|
-
{/* Badges personalizados */}
|
|
512
|
-
<div className="flex gap-2">
|
|
513
|
-
<Badge className="bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200">
|
|
514
|
-
Free Shipping
|
|
515
|
-
</Badge>
|
|
516
|
-
<Badge className="bg-purple-100 text-purple-800 dark:bg-purple-900 dark:text-purple-200">
|
|
517
|
-
<Icon symbol="star" />
|
|
518
|
-
Premium
|
|
519
|
-
</Badge>
|
|
520
|
-
<Badge className="bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-200">
|
|
521
|
-
<Icon symbol="redeem" />
|
|
522
|
-
Bundle Deal
|
|
523
|
-
</Badge>
|
|
524
|
-
</div>
|
|
502
|
+
<div className="flex gap-2">
|
|
503
|
+
<Badge variant="destructive">Sale</Badge>
|
|
504
|
+
<Badge variant="default">New</Badge>
|
|
505
|
+
<Badge variant="secondary">Bestseller</Badge>
|
|
506
|
+
<Badge variant="outline">Limited</Badge>
|
|
525
507
|
</div>;
|
|
526
508
|
```
|
|
527
509
|
|
|
@@ -548,12 +530,10 @@ import { Icon } from "@adamosuiteservices/ui/icon";
|
|
|
548
530
|
|
|
549
531
|
<div className="flex items-center gap-2">
|
|
550
532
|
<Avatar className="size-6">
|
|
551
|
-
<
|
|
533
|
+
<AvatarImage src="https://github.com/shadcn.png" alt="@shadcn" />
|
|
534
|
+
<AvatarFallback>CN</AvatarFallback>
|
|
552
535
|
</Avatar>
|
|
553
|
-
<Badge variant="
|
|
554
|
-
<Icon symbol="verified" />
|
|
555
|
-
maxleiter
|
|
556
|
-
</Badge>
|
|
536
|
+
<Badge variant="secondary">shadcn</Badge>
|
|
557
537
|
</div>
|
|
558
538
|
</div>;
|
|
559
539
|
```
|
|
@@ -578,32 +558,9 @@ import { Icon } from "@adamosuiteservices/ui/icon";
|
|
|
578
558
|
Best Value
|
|
579
559
|
</Badge>
|
|
580
560
|
<Badge variant="outline">Free Trial</Badge>
|
|
581
|
-
|
|
582
|
-
```
|
|
583
|
-
|
|
584
|
-
### Colores Personalizados
|
|
585
|
-
|
|
586
|
-
Para casos especiales de branding.
|
|
587
|
-
|
|
588
|
-
```tsx
|
|
589
|
-
import { Icon } from "@adamosuiteservices/ui/icon";
|
|
590
|
-
|
|
591
|
-
<div className="flex gap-2">
|
|
592
|
-
<Badge className="bg-blue-500 text-white dark:bg-blue-600">
|
|
593
|
-
<Icon symbol="verified" />
|
|
594
|
-
Verified
|
|
595
|
-
</Badge>
|
|
596
|
-
<Badge className="bg-green-500 text-white dark:bg-green-600">
|
|
561
|
+
<Badge variant="success-medium">
|
|
597
562
|
<Icon symbol="check" />
|
|
598
|
-
|
|
599
|
-
</Badge>
|
|
600
|
-
<Badge className="bg-purple-500 text-white dark:bg-purple-600">
|
|
601
|
-
<Icon symbol="star" />
|
|
602
|
-
Premium
|
|
603
|
-
</Badge>
|
|
604
|
-
<Badge className="bg-orange-500 text-white dark:bg-orange-600">
|
|
605
|
-
<Icon symbol="trending_up" />
|
|
606
|
-
Trending
|
|
563
|
+
Money Back Guarantee
|
|
607
564
|
</Badge>
|
|
608
565
|
</div>;
|
|
609
566
|
```
|
|
@@ -1072,7 +1072,7 @@ function Navigation() {
|
|
|
1072
1072
|
|
|
1073
1073
|
```tsx
|
|
1074
1074
|
// ❌ Incorrecto - className sobrescribe variantes
|
|
1075
|
-
<Button className="bg-
|
|
1075
|
+
<Button className="bg-destructive">Click</Button>
|
|
1076
1076
|
|
|
1077
1077
|
// ✅ Correcto - Usa variantes predefinidas
|
|
1078
1078
|
<Button variant="destructive">Click</Button>
|
|
@@ -270,10 +270,10 @@ const options = [
|
|
|
270
270
|
searchable
|
|
271
271
|
options={frameworks}
|
|
272
272
|
classNames={{
|
|
273
|
-
trigger: "border-2 border-
|
|
274
|
-
popover: "border-
|
|
275
|
-
item: "rounded px-3 py-2 hover:bg-
|
|
276
|
-
check: "text-
|
|
273
|
+
trigger: "border-2 border-primary w-64",
|
|
274
|
+
popover: "border-border shadow-lg",
|
|
275
|
+
item: "rounded px-3 py-2 hover:bg-accent",
|
|
276
|
+
check: "text-primary",
|
|
277
277
|
}}
|
|
278
278
|
/>
|
|
279
279
|
```
|
|
@@ -335,7 +335,7 @@ const [values, setValues] = useState<string[]>([]);
|
|
|
335
335
|
{values.length > 0 && (
|
|
336
336
|
<button
|
|
337
337
|
onClick={() => setValues([])}
|
|
338
|
-
className="text-xs text-
|
|
338
|
+
className="text-xs text-primary hover:text-primary/80 underline"
|
|
339
339
|
>
|
|
340
340
|
Clear all
|
|
341
341
|
</button>
|
|
@@ -390,7 +390,7 @@ El prop `renders` permite personalizar completamente la UI usando el patrón ren
|
|
|
390
390
|
<div className="flex items-center gap-2">
|
|
391
391
|
<span>{text}</span>
|
|
392
392
|
{text && (
|
|
393
|
-
<span className="px-1.5 py-0.5 text-xs bg-
|
|
393
|
+
<span className="px-1.5 py-0.5 text-xs bg-success/10 text-success rounded font-medium">
|
|
394
394
|
Active
|
|
395
395
|
</span>
|
|
396
396
|
)}
|
|
@@ -411,7 +411,7 @@ El prop `renders` permite personalizar completamente la UI usando el patrón ren
|
|
|
411
411
|
renders={{
|
|
412
412
|
optionLabel: ({ option }) => (
|
|
413
413
|
<div className="flex items-center gap-2">
|
|
414
|
-
<span className="font-semibold text-
|
|
414
|
+
<span className="font-semibold text-primary">🚀</span>
|
|
415
415
|
<span>{option.label}</span>
|
|
416
416
|
</div>
|
|
417
417
|
),
|
|
@@ -192,7 +192,7 @@ import { Icon } from "@adamosuiteservices/ui/icon";
|
|
|
192
192
|
<span>4.1k</span>
|
|
193
193
|
</div>
|
|
194
194
|
<div className="flex items-center gap-1">
|
|
195
|
-
<div className="h-3 w-3 rounded-full bg-
|
|
195
|
+
<div className="h-3 w-3 rounded-full bg-primary" />
|
|
196
196
|
<span>TypeScript</span>
|
|
197
197
|
</div>
|
|
198
198
|
</div>
|
|
@@ -84,7 +84,7 @@ Usa clases de texto Tailwind para controlar el tamaño del icono. Se pueden comb
|
|
|
84
84
|
<Icon symbol="star" className="adm:text-5xl" /> {/* ~48px */}
|
|
85
85
|
|
|
86
86
|
// Combinando tamaño con color
|
|
87
|
-
<Icon symbol="star" className="adm:text-2xl adm:text-
|
|
87
|
+
<Icon symbol="star" className="adm:text-2xl adm:text-warning" />
|
|
88
88
|
```
|
|
89
89
|
|
|
90
90
|
### fill
|
|
@@ -190,7 +190,7 @@ function FavoriteButton() {
|
|
|
190
190
|
fill={isFavorite ? 1 : 0}
|
|
191
191
|
className={cn(
|
|
192
192
|
"adm:text-lg",
|
|
193
|
-
isFavorite ? "adm:text-
|
|
193
|
+
isFavorite ? "adm:text-destructive" : "adm:text-muted-foreground"
|
|
194
194
|
)}
|
|
195
195
|
/>
|
|
196
196
|
{isFavorite ? "Liked" : "Like"}
|
|
@@ -261,7 +261,7 @@ const commonIcons = [
|
|
|
261
261
|
<Icon
|
|
262
262
|
symbol="notification"
|
|
263
263
|
weight={300}
|
|
264
|
-
className="adm:text-2xl adm:text-
|
|
264
|
+
className="adm:text-2xl adm:text-primary adm:drop-shadow-sm"
|
|
265
265
|
/>
|
|
266
266
|
```
|
|
267
267
|
|
|
@@ -270,7 +270,7 @@ const commonIcons = [
|
|
|
270
270
|
```tsx
|
|
271
271
|
<Icon
|
|
272
272
|
symbol="refresh"
|
|
273
|
-
className="adm:text-2xl adm:animate-spin adm:text-
|
|
273
|
+
className="adm:text-2xl adm:animate-spin adm:text-primary"
|
|
274
274
|
/>
|
|
275
275
|
```
|
|
276
276
|
|
|
@@ -291,7 +291,7 @@ const commonIcons = [
|
|
|
291
291
|
<Card>
|
|
292
292
|
<CardHeader>
|
|
293
293
|
<div className="adm:flex adm:items-center adm:gap-2">
|
|
294
|
-
<Icon symbol="folder" className="adm:text-2xl adm:text-
|
|
294
|
+
<Icon symbol="folder" className="adm:text-2xl adm:text-primary" />
|
|
295
295
|
<CardTitle>Documents</CardTitle>
|
|
296
296
|
</div>
|
|
297
297
|
</CardHeader>
|
|
@@ -311,17 +311,17 @@ const commonIcons = [
|
|
|
311
311
|
|
|
312
312
|
```tsx
|
|
313
313
|
<div className="adm:flex adm:items-center adm:gap-2">
|
|
314
|
-
<Icon symbol="check_circle" fill={1} className="adm:text-
|
|
314
|
+
<Icon symbol="check_circle" fill={1} className="adm:text-success" />
|
|
315
315
|
<span>Completed</span>
|
|
316
316
|
</div>
|
|
317
317
|
|
|
318
318
|
<div className="adm:flex adm:items-center adm:gap-2">
|
|
319
|
-
<Icon symbol="error" fill={1} className="adm:text-
|
|
319
|
+
<Icon symbol="error" fill={1} className="adm:text-destructive" />
|
|
320
320
|
<span>Error</span>
|
|
321
321
|
</div>
|
|
322
322
|
|
|
323
323
|
<div className="adm:flex adm:items-center adm:gap-2">
|
|
324
|
-
<Icon symbol="schedule" fill={1} className="adm:text-
|
|
324
|
+
<Icon symbol="schedule" fill={1} className="adm:text-warning" />
|
|
325
325
|
<span>Pending</span>
|
|
326
326
|
</div>
|
|
327
327
|
```
|
|
@@ -396,7 +396,7 @@ const commonIcons = [
|
|
|
396
396
|
{
|
|
397
397
|
/* ✅ Correcto - Peso mayor para énfasis */
|
|
398
398
|
}
|
|
399
|
-
<Icon symbol="warning" weight={500} fill={1} className="adm:text-
|
|
399
|
+
<Icon symbol="warning" weight={500} fill={1} className="adm:text-warning" />;
|
|
400
400
|
|
|
401
401
|
{
|
|
402
402
|
/* ❌ Evitar - Peso muy pesado sin propósito */
|
|
@@ -408,9 +408,9 @@ const commonIcons = [
|
|
|
408
408
|
|
|
409
409
|
```tsx
|
|
410
410
|
{/* ✅ Correcto - Estados con significado claro */}
|
|
411
|
-
<Icon symbol="check_circle" fill={1} className="adm:text-
|
|
412
|
-
<Icon symbol="error" fill={1} className="adm:text-
|
|
413
|
-
<Icon symbol="info" fill={1} className="adm:text-
|
|
411
|
+
<Icon symbol="check_circle" fill={1} className="adm:text-success" /> {/* Éxito */}
|
|
412
|
+
<Icon symbol="error" fill={1} className="adm:text-destructive" /> {/* Error */}
|
|
413
|
+
<Icon symbol="info" fill={1} className="adm:text-primary" /> {/* Info */}
|
|
414
414
|
|
|
415
415
|
{/* ✅ Correcto - Estados interactivos */}
|
|
416
416
|
<Icon symbol="favorite" fill={liked ? 1 : 0} />
|
|
@@ -79,12 +79,12 @@ import {
|
|
|
79
79
|
|
|
80
80
|
### InputGroupButton
|
|
81
81
|
|
|
82
|
-
| Prop | Tipo | Default
|
|
83
|
-
| --------- | ---------------------------------------- |
|
|
84
|
-
| `size` | `"xs" \| "sm" \| "icon-xs" \| "icon-sm"` | `"xs"`
|
|
85
|
-
| `variant` | Button variants | `"ghost"`
|
|
86
|
-
| `type` | `string` | `"button"`
|
|
87
|
-
| ...rest | - | -
|
|
82
|
+
| Prop | Tipo | Default | Descripción |
|
|
83
|
+
| --------- | ---------------------------------------- | ----------------- | ---------------------------------------- |
|
|
84
|
+
| `size` | `"xs" \| "sm" \| "icon-xs" \| "icon-sm"` | `"xs"` | Tamaño del botón |
|
|
85
|
+
| `variant` | Button variants | `"ghost-neutral"` | Variante del botón |
|
|
86
|
+
| `type` | `string` | `"button"` | Tipo HTML del botón |
|
|
87
|
+
| ...rest | - | - | Todas las props de Button excepto `size` |
|
|
88
88
|
|
|
89
89
|
**Sizes**:
|
|
90
90
|
|
|
@@ -235,7 +235,7 @@ import {
|
|
|
235
235
|
<InputGroupAddon align="inline-end">
|
|
236
236
|
<Tooltip>
|
|
237
237
|
<TooltipTrigger asChild>
|
|
238
|
-
<InputGroupButton
|
|
238
|
+
<InputGroupButton size="icon-xs">
|
|
239
239
|
<Icon symbol="info" className="text-base" />
|
|
240
240
|
</InputGroupButton>
|
|
241
241
|
</TooltipTrigger>
|
|
@@ -268,7 +268,6 @@ function App() {
|
|
|
268
268
|
/>
|
|
269
269
|
<InputGroupAddon align="inline-end">
|
|
270
270
|
<InputGroupButton
|
|
271
|
-
variant="ghost"
|
|
272
271
|
size="icon-xs"
|
|
273
272
|
onClick={() => setShowPassword(!showPassword)}
|
|
274
273
|
aria-label={showPassword ? "Hide password" : "Show password"}
|
|
@@ -315,7 +314,7 @@ import {
|
|
|
315
314
|
<InputGroupAddon align="inline-end">
|
|
316
315
|
<DropdownMenu>
|
|
317
316
|
<DropdownMenuTrigger asChild>
|
|
318
|
-
<InputGroupButton
|
|
317
|
+
<InputGroupButton size="icon-xs">
|
|
319
318
|
<Icon symbol="more_horiz" className="text-base" />
|
|
320
319
|
</InputGroupButton>
|
|
321
320
|
</DropdownMenuTrigger>
|
|
@@ -362,11 +361,7 @@ import { Label } from "@adamosuiteservices/ui/label";
|
|
|
362
361
|
</Label>
|
|
363
362
|
<Tooltip>
|
|
364
363
|
<TooltipTrigger asChild>
|
|
365
|
-
<InputGroupButton
|
|
366
|
-
variant="ghost"
|
|
367
|
-
className="ml-auto rounded-full"
|
|
368
|
-
size="icon-xs"
|
|
369
|
-
>
|
|
364
|
+
<InputGroupButton className="ml-auto rounded-full" size="icon-xs">
|
|
370
365
|
<Icon symbol="info" className="text-base" />
|
|
371
366
|
</InputGroupButton>
|
|
372
367
|
</TooltipTrigger>
|
|
@@ -306,7 +306,7 @@ import { Icon } from "@adamosuiteservices/ui/icon";
|
|
|
306
306
|
<PopoverContent className="w-80">
|
|
307
307
|
<div className="space-y-3">
|
|
308
308
|
<div className="flex items-center gap-2">
|
|
309
|
-
<Icon symbol="error" className="text-lg text-
|
|
309
|
+
<Icon symbol="error" className="text-lg text-primary" />
|
|
310
310
|
<h4 className="font-medium">About this feature</h4>
|
|
311
311
|
</div>
|
|
312
312
|
<p className="text-sm text-muted-foreground">
|
|
@@ -359,7 +359,7 @@ import { Separator } from "@adamosuiteservices/ui/separator";
|
|
|
359
359
|
<p className="text-sm font-medium">New message</p>
|
|
360
360
|
<p className="text-xs text-muted-foreground">2 min ago</p>
|
|
361
361
|
</div>
|
|
362
|
-
<div className="h-2 w-2 bg-
|
|
362
|
+
<div className="h-2 w-2 bg-primary rounded-full mt-1" />
|
|
363
363
|
</div>
|
|
364
364
|
</div>
|
|
365
365
|
<Separator />
|
|
@@ -50,7 +50,7 @@ import { Spinner } from "@adamosuiteservices/ui/spinner";
|
|
|
50
50
|
```tsx
|
|
51
51
|
<Spinner className="text-primary" />
|
|
52
52
|
<Spinner className="text-destructive" />
|
|
53
|
-
<Spinner className="text-
|
|
53
|
+
<Spinner className="text-warning" />
|
|
54
54
|
```
|
|
55
55
|
|
|
56
56
|
### En Botones
|
|
@@ -174,7 +174,7 @@ const invoices = [
|
|
|
174
174
|
## Estilos Base
|
|
175
175
|
|
|
176
176
|
- **Container**: `rounded-xl border` con `overflow-x-auto`
|
|
177
|
-
- **Head**: `bg-
|
|
177
|
+
- **Head**: `bg-muted/50 text-muted-foreground text-xs uppercase`
|
|
178
178
|
- **Row hover**: `hover:bg-muted/50`
|
|
179
179
|
- **Cell**: `p-4 text-sm text-muted-foreground`
|
|
180
180
|
|
|
@@ -278,11 +278,11 @@ function App() {
|
|
|
278
278
|
|
|
279
279
|
## Estilos Base
|
|
280
280
|
|
|
281
|
-
- **Background**: `bg-
|
|
282
|
-
- **Text**: `text-
|
|
281
|
+
- **Background**: `bg-primary`
|
|
282
|
+
- **Text**: `text-primary-foreground text-xs`
|
|
283
283
|
- **Padding**: `px-3 py-1.5`
|
|
284
284
|
- **Border radius**: `rounded-md`
|
|
285
|
-
- **Arrow**: `size-2.5` con `bg-
|
|
285
|
+
- **Arrow**: `size-2.5` con `bg-primary`
|
|
286
286
|
- **Z-index**: `z-50`
|
|
287
287
|
- **Animation**: Fade + zoom in/out
|
|
288
288
|
|
|
@@ -264,7 +264,7 @@ import { Typography } from "@adamosuiteservices/ui/typography";
|
|
|
264
264
|
- **Default element**: `<p>` cuando `asChild=false`
|
|
265
265
|
- **Default variants**: `variant="sm"` y `color="default"`
|
|
266
266
|
- **Data attribute**: `data-slot="typography"` para identificación
|
|
267
|
-
- **Color variants**: Incluye colores default (
|
|
267
|
+
- **Color variants**: Incluye colores default (foreground) y muted (muted-foreground)
|
|
268
268
|
- **Extensibilidad**: Combina con utility classes para estilos adicionales (weight, spacing, etc.)
|
|
269
269
|
|
|
270
270
|
## Troubleshooting
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adamosuiteservices/ui",
|
|
3
|
-
"version": "2.10.
|
|
3
|
+
"version": "2.10.13",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -283,6 +283,7 @@
|
|
|
283
283
|
"globals": "^16.4.0",
|
|
284
284
|
"husky": "^9.1.7",
|
|
285
285
|
"lint-staged": "^16.2.6",
|
|
286
|
+
"rollup-preserve-directives": "^1.1.3",
|
|
286
287
|
"storybook": "^10.0.0",
|
|
287
288
|
"tw-animate-css": "^1.4.0",
|
|
288
289
|
"typescript": "~5.9.3",
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
"use strict";const o=require("./jsx-runtime-BB_1_6y_.cjs"),H=require("react"),w=require("./index-_XxjJPRD.cjs"),L=require("./index-cwZN7ZY3.cjs"),_=require("./index-BWaO7kQK.cjs"),G=require("./index-DYxWvftI.cjs"),K=require("./index-bSPhqlcX.cjs"),U=require("./index-Bd0gQB0k.cjs"),P=require("./index-CocSS1YK.cjs"),N=require("./icon-Bg5HV6Ls.cjs"),y=require("./index-DoxiiusW.cjs");function X(e){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const n in e)if(n!=="default"){const a=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(r,n,a.get?a:{enumerable:!0,get:()=>e[n]})}}return r.default=e,Object.freeze(r)}const d=X(H);var g="Checkbox",[J]=L.createContextScope(g),[Q,I]=J(g);function V(e){const{__scopeCheckbox:r,checked:n,children:a,defaultChecked:c,disabled:t,form:p,name:x,onCheckedChange:u,required:f,value:h="on",internal_do_not_use_render:l}=e,[m,v]=_.useControllableState({prop:n,defaultProp:c??!1,onChange:u,caller:g}),[k,C]=d.useState(null),[R,s]=d.useState(null),i=d.useRef(!1),j=k?!!p||!!k.closest("form"):!0,E={checked:m,disabled:t,setChecked:v,control:k,setControl:C,name:x,form:p,value:h,hasConsumerStoppedPropagationRef:i,required:f,defaultChecked:b(c)?!1:c,isFormControl:j,bubbleInput:R,setBubbleInput:s};return o.jsxRuntimeExports.jsx(Q,{scope:r,...E,children:W(l)?l(E):a})}var S="CheckboxTrigger",O=d.forwardRef(({__scopeCheckbox:e,onKeyDown:r,onClick:n,...a},c)=>{const{control:t,value:p,disabled:x,checked:u,required:f,setControl:h,setChecked:l,hasConsumerStoppedPropagationRef:m,isFormControl:v,bubbleInput:k}=I(S,e),C=w.useComposedRefs(c,h),R=d.useRef(u);return d.useEffect(()=>{const s=t?.form;if(s){const i=()=>l(R.current);return s.addEventListener("reset",i),()=>s.removeEventListener("reset",i)}},[t,l]),o.jsxRuntimeExports.jsx(P.Primitive.button,{type:"button",role:"checkbox","aria-checked":b(u)?"mixed":u,"aria-required":f,"data-state":A(u),"data-disabled":x?"":void 0,disabled:x,value:p,...a,ref:C,onKeyDown:_.composeEventHandlers(r,s=>{s.key==="Enter"&&s.preventDefault()}),onClick:_.composeEventHandlers(n,s=>{l(i=>b(i)?!0:!i),k&&v&&(m.current=s.isPropagationStopped(),m.current||s.stopPropagation())})})});O.displayName=S;var B=d.forwardRef((e,r)=>{const{__scopeCheckbox:n,name:a,checked:c,defaultChecked:t,required:p,disabled:x,value:u,onCheckedChange:f,form:h,...l}=e;return o.jsxRuntimeExports.jsx(V,{__scopeCheckbox:n,checked:c,defaultChecked:t,disabled:x,required:p,onCheckedChange:f,name:a,form:h,value:u,internal_do_not_use_render:({isFormControl:m})=>o.jsxRuntimeExports.jsxs(o.jsxRuntimeExports.Fragment,{children:[o.jsxRuntimeExports.jsx(O,{...l,ref:r,__scopeCheckbox:n}),m&&o.jsxRuntimeExports.jsx(D,{__scopeCheckbox:n})]})})});B.displayName=g;var M="CheckboxIndicator",T=d.forwardRef((e,r)=>{const{__scopeCheckbox:n,forceMount:a,...c}=e,t=I(M,n);return o.jsxRuntimeExports.jsx(U.Presence,{present:a||b(t.checked)||t.checked===!0,children:o.jsxRuntimeExports.jsx(P.Primitive.span,{"data-state":A(t.checked),"data-disabled":t.disabled?"":void 0,...c,ref:r,style:{pointerEvents:"none",...e.style}})})});T.displayName=M;var $="CheckboxBubbleInput",D=d.forwardRef(({__scopeCheckbox:e,...r},n)=>{const{control:a,hasConsumerStoppedPropagationRef:c,checked:t,defaultChecked:p,required:x,disabled:u,name:f,value:h,form:l,bubbleInput:m,setBubbleInput:v}=I($,e),k=w.useComposedRefs(n,v),C=G.usePrevious(t),R=K.useSize(a);d.useEffect(()=>{const i=m;if(!i)return;const j=window.HTMLInputElement.prototype,q=Object.getOwnPropertyDescriptor(j,"checked").set,z=!c.current;if(C!==t&&q){const F=new Event("click",{bubbles:z});i.indeterminate=b(t),q.call(i,b(t)?!1:t),i.dispatchEvent(F)}},[m,C,t,c]);const s=d.useRef(b(t)?!1:t);return o.jsxRuntimeExports.jsx(P.Primitive.input,{type:"checkbox","aria-hidden":!0,defaultChecked:p??s.current,required:x,disabled:u,name:f,value:h,form:l,...r,tabIndex:-1,ref:k,style:{...r.style,...R,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});D.displayName=$;function W(e){return typeof e=="function"}function b(e){return e==="indeterminate"}function A(e){return b(e)?"indeterminate":e?"checked":"unchecked"}function Y({className:e,...r}){return o.jsxRuntimeExports.jsx(B,{"data-slot":"checkbox",className:y.cn(`
|
|
2
|
-
adm:peer adm:size-5 adm:shrink-0 adm:rounded-[6px] adm:border
|
|
3
|
-
adm:border-input adm:shadow-xs adm:transition-shadow adm:outline-none
|
|
4
|
-
adm:focus-visible:border-ring adm:focus-visible:ring-[3px]
|
|
5
|
-
adm:focus-visible:ring-ring/50
|
|
6
|
-
adm:disabled:cursor-not-allowed adm:disabled:opacity-50
|
|
7
|
-
adm:aria-invalid:border-destructive
|
|
8
|
-
adm:aria-invalid:ring-destructive/20
|
|
9
|
-
adm:data-[state=checked]:border-primary
|
|
10
|
-
adm:data-[state=checked]:bg-primary
|
|
11
|
-
adm:data-[state=checked]:text-primary-foreground
|
|
12
|
-
adm:dark:bg-input/30 adm:dark:aria-invalid:ring-destructive/40
|
|
13
|
-
adm:dark:data-[state=checked]:bg-primary
|
|
14
|
-
`,e),...r,children:o.jsxRuntimeExports.jsxs(T,{"data-slot":"checkbox-indicator",className:`
|
|
15
|
-
adm:group adm:grid adm:place-content-center adm:text-current
|
|
16
|
-
adm:transition-none
|
|
17
|
-
adm:*:data-[slot=icon]:text-current
|
|
18
|
-
`,children:[o.jsxRuntimeExports.jsx(N.Icon,{symbol:"check",className:y.cn("adm:text-base adm:text-white",`
|
|
19
|
-
adm:group-data-[state=indeterminate]:hidden
|
|
20
|
-
`)}),o.jsxRuntimeExports.jsx(N.Icon,{symbol:"remove",className:y.cn("adm:text-base adm:text-primary",`
|
|
21
|
-
adm:group-data-[state=checked]:hidden
|
|
22
|
-
`)})]})})}exports.Checkbox=Y;
|
package/dist/icon-DG_i4bz2.js
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { j as r } from "./jsx-runtime-BzflLqGi.js";
|
|
2
|
-
import { c } from "./index-CRiPKpXj.js";
|
|
3
|
-
function d({
|
|
4
|
-
symbol: t,
|
|
5
|
-
fill: o = 0,
|
|
6
|
-
weight: s = 300,
|
|
7
|
-
grade: n = 0,
|
|
8
|
-
opticalSize: a = 24,
|
|
9
|
-
className: i,
|
|
10
|
-
style: e,
|
|
11
|
-
...l
|
|
12
|
-
}) {
|
|
13
|
-
const m = {
|
|
14
|
-
fontVariationSettings: `
|
|
15
|
-
'FILL' ${o},
|
|
16
|
-
'wght' ${s},
|
|
17
|
-
'GRAD' ${n},
|
|
18
|
-
'opsz' ${a}
|
|
19
|
-
`,
|
|
20
|
-
...e
|
|
21
|
-
};
|
|
22
|
-
return /* @__PURE__ */ r.jsx(
|
|
23
|
-
"span",
|
|
24
|
-
{
|
|
25
|
-
"data-slot": "icon",
|
|
26
|
-
className: c("material-symbols-outlined adm:inline-block adm:text-2xl", i),
|
|
27
|
-
style: m,
|
|
28
|
-
...l,
|
|
29
|
-
children: t
|
|
30
|
-
}
|
|
31
|
-
);
|
|
32
|
-
}
|
|
33
|
-
export {
|
|
34
|
-
d as I
|
|
35
|
-
};
|
package/dist/index-BFyr34mw.cjs
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
"use strict";const V=require("react"),g=require("./index-BWaO7kQK.cjs"),D=require("./index-_XxjJPRD.cjs"),O=require("./index-cwZN7ZY3.cjs"),j=require("./index-WIv2ndLu.cjs"),B=require("./index-BeWgla7c.cjs"),E=require("./index-DMs8RL3E.cjs"),Z=require("./index-Dbj9vHNq.cjs"),y=require("./index-Bd0gQB0k.cjs"),m=require("./index-CocSS1YK.cjs"),a=require("./jsx-runtime-BB_1_6y_.cjs");function z(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const o in e)if(o!=="default"){const r=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(t,o,r.get?r:{enumerable:!0,get:()=>e[o]})}}return t.default=e,Object.freeze(t)}const i=z(V);function K(e){const t=U(e),o=i.forwardRef((r,n)=>{const{children:s,...c}=r,l=i.Children.toArray(s),u=l.find(J);if(u){const p=u.props.children,x=l.map(R=>R===u?i.Children.count(p)>1?i.Children.only(null):i.isValidElement(p)?p.props.children:null:R);return a.jsxRuntimeExports.jsx(t,{...c,ref:n,children:i.isValidElement(p)?i.cloneElement(p,void 0,x):null})}return a.jsxRuntimeExports.jsx(t,{...c,ref:n,children:s})});return o.displayName=`${e}.Slot`,o}function U(e){const t=i.forwardRef((o,r)=>{const{children:n,...s}=o;if(i.isValidElement(n)){const c=X(n),l=Q(s,n.props);return n.type!==i.Fragment&&(l.ref=r?D.composeRefs(r,c):c),i.cloneElement(n,l)}return i.Children.count(n)>1?i.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var Y=Symbol("radix.slottable");function J(e){return i.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===Y}function Q(e,t){const o={...t};for(const r in t){const n=e[r],s=t[r];/^on[A-Z]/.test(r)?n&&s?o[r]=(...l)=>{const u=s(...l);return n(...l),u}:n&&(o[r]=n):r==="style"?o[r]={...n,...s}:r==="className"&&(o[r]=[n,s].filter(Boolean).join(" "))}return{...e,...o}}function X(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,o=t&&"isReactWarning"in t&&t.isReactWarning;return o?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,o=t&&"isReactWarning"in t&&t.isReactWarning,o?e.props.ref:e.props.ref||e.ref)}var C="Dialog",[I]=O.createContextScope(C),[ee,d]=I(C),N=e=>{const{__scopeDialog:t,children:o,open:r,defaultOpen:n,onOpenChange:s,modal:c=!0}=e,l=i.useRef(null),u=i.useRef(null),[p,x]=g.useControllableState({prop:r,defaultProp:n??!1,onChange:s,caller:C});return a.jsxRuntimeExports.jsx(ee,{scope:t,triggerRef:l,contentRef:u,contentId:j.useId(),titleId:j.useId(),descriptionId:j.useId(),open:p,onOpenChange:x,onOpenToggle:i.useCallback(()=>x(R=>!R),[x]),modal:c,children:o})};N.displayName=C;var b="DialogTrigger",T=i.forwardRef((e,t)=>{const{__scopeDialog:o,...r}=e,n=d(b,o),s=D.useComposedRefs(t,n.triggerRef);return a.jsxRuntimeExports.jsx(m.Primitive.button,{type:"button","aria-haspopup":"dialog","aria-expanded":n.open,"aria-controls":n.contentId,"data-state":P(n.open),...r,ref:s,onClick:g.composeEventHandlers(e.onClick,n.onOpenToggle)})});T.displayName=b;var _="DialogPortal",[te,A]=I(_,{forceMount:void 0}),S=e=>{const{__scopeDialog:t,forceMount:o,children:r,container:n}=e,s=d(_,t);return a.jsxRuntimeExports.jsx(te,{scope:t,forceMount:o,children:i.Children.map(r,c=>a.jsxRuntimeExports.jsx(y.Presence,{present:o||s.open,children:a.jsxRuntimeExports.jsx(Z.Portal,{asChild:!0,container:n,children:c})}))})};S.displayName=_;var v="DialogOverlay",M=i.forwardRef((e,t)=>{const o=A(v,e.__scopeDialog),{forceMount:r=o.forceMount,...n}=e,s=d(v,e.__scopeDialog);return s.modal?a.jsxRuntimeExports.jsx(y.Presence,{present:r||s.open,children:a.jsxRuntimeExports.jsx(ne,{...n,ref:t})}):null});M.displayName=v;var oe=K("DialogOverlay.RemoveScroll"),ne=i.forwardRef((e,t)=>{const{__scopeDialog:o,...r}=e,n=d(v,o);return a.jsxRuntimeExports.jsx(E.ReactRemoveScroll,{as:oe,allowPinchZoom:!0,shards:[n.contentRef],children:a.jsxRuntimeExports.jsx(m.Primitive.div,{"data-state":P(n.open),...r,ref:t,style:{pointerEvents:"auto",...r.style}})})}),f="DialogContent",w=i.forwardRef((e,t)=>{const o=A(f,e.__scopeDialog),{forceMount:r=o.forceMount,...n}=e,s=d(f,e.__scopeDialog);return a.jsxRuntimeExports.jsx(y.Presence,{present:r||s.open,children:s.modal?a.jsxRuntimeExports.jsx(re,{...n,ref:t}):a.jsxRuntimeExports.jsx(se,{...n,ref:t})})});w.displayName=f;var re=i.forwardRef((e,t)=>{const o=d(f,e.__scopeDialog),r=i.useRef(null),n=D.useComposedRefs(t,o.contentRef,r);return i.useEffect(()=>{const s=r.current;if(s)return E.hideOthers(s)},[]),a.jsxRuntimeExports.jsx(F,{...e,ref:n,trapFocus:o.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:g.composeEventHandlers(e.onCloseAutoFocus,s=>{s.preventDefault(),o.triggerRef.current?.focus()}),onPointerDownOutside:g.composeEventHandlers(e.onPointerDownOutside,s=>{const c=s.detail.originalEvent,l=c.button===0&&c.ctrlKey===!0;(c.button===2||l)&&s.preventDefault()}),onFocusOutside:g.composeEventHandlers(e.onFocusOutside,s=>s.preventDefault())})}),se=i.forwardRef((e,t)=>{const o=d(f,e.__scopeDialog),r=i.useRef(!1),n=i.useRef(!1);return a.jsxRuntimeExports.jsx(F,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:s=>{e.onCloseAutoFocus?.(s),s.defaultPrevented||(r.current||o.triggerRef.current?.focus(),s.preventDefault()),r.current=!1,n.current=!1},onInteractOutside:s=>{e.onInteractOutside?.(s),s.defaultPrevented||(r.current=!0,s.detail.originalEvent.type==="pointerdown"&&(n.current=!0));const c=s.target;o.triggerRef.current?.contains(c)&&s.preventDefault(),s.detail.originalEvent.type==="focusin"&&n.current&&s.preventDefault()}})}),F=i.forwardRef((e,t)=>{const{__scopeDialog:o,trapFocus:r,onOpenAutoFocus:n,onCloseAutoFocus:s,...c}=e,l=d(f,o),u=i.useRef(null),p=D.useComposedRefs(t,u);return E.useFocusGuards(),a.jsxRuntimeExports.jsxs(a.jsxRuntimeExports.Fragment,{children:[a.jsxRuntimeExports.jsx(E.FocusScope,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:n,onUnmountAutoFocus:s,children:a.jsxRuntimeExports.jsx(B.DismissableLayer,{role:"dialog",id:l.contentId,"aria-describedby":l.descriptionId,"aria-labelledby":l.titleId,"data-state":P(l.open),...c,ref:p,onDismiss:()=>l.onOpenChange(!1)})}),a.jsxRuntimeExports.jsxs(a.jsxRuntimeExports.Fragment,{children:[a.jsxRuntimeExports.jsx(ie,{titleId:l.titleId}),a.jsxRuntimeExports.jsx(le,{contentRef:u,descriptionId:l.descriptionId})]})]})}),h="DialogTitle",W=i.forwardRef((e,t)=>{const{__scopeDialog:o,...r}=e,n=d(h,o);return a.jsxRuntimeExports.jsx(m.Primitive.h2,{id:n.titleId,...r,ref:t})});W.displayName=h;var $="DialogDescription",q=i.forwardRef((e,t)=>{const{__scopeDialog:o,...r}=e,n=d($,o);return a.jsxRuntimeExports.jsx(m.Primitive.p,{id:n.descriptionId,...r,ref:t})});q.displayName=$;var L="DialogClose",k=i.forwardRef((e,t)=>{const{__scopeDialog:o,...r}=e,n=d(L,o);return a.jsxRuntimeExports.jsx(m.Primitive.button,{type:"button",...r,ref:t,onClick:g.composeEventHandlers(e.onClick,()=>n.onOpenChange(!1))})});k.displayName=L;function P(e){return e?"open":"closed"}var G="DialogTitleWarning",[Re,H]=O.createContext2(G,{contentName:f,titleName:h,docsSlug:"dialog"}),ie=({titleId:e})=>{const t=H(G),o=`\`${t.contentName}\` requires a \`${t.titleName}\` for the component to be accessible for screen reader users.
|
|
2
|
-
|
|
3
|
-
If you want to hide the \`${t.titleName}\`, you can wrap it with our VisuallyHidden component.
|
|
4
|
-
|
|
5
|
-
For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;return i.useEffect(()=>{e&&(document.getElementById(e)||console.error(o))},[o,e]),null},ae="DialogDescriptionWarning",le=({contentRef:e,descriptionId:t})=>{const r=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${H(ae).contentName}}.`;return i.useEffect(()=>{const n=e.current?.getAttribute("aria-describedby");t&&n&&(document.getElementById(t)||console.warn(r))},[r,e,t]),null},ce=N,ue=T,de=S,pe=M,fe=w,ge=W,xe=q,me=k;exports.Close=me;exports.Content=fe;exports.Description=xe;exports.Overlay=pe;exports.Portal=de;exports.Root=ce;exports.Title=ge;exports.Trigger=ue;
|
package/dist/index-BX9hz-JD.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import * as o from "react";
|
|
2
|
-
import n from "react-dom";
|
|
3
|
-
import { P as f } from "./index-BMWt1NBG.js";
|
|
4
|
-
import { u } from "./index-CCKe-Mpx.js";
|
|
5
|
-
import { j as c } from "./jsx-runtime-BzflLqGi.js";
|
|
6
|
-
var l = "Portal", p = o.forwardRef((r, a) => {
|
|
7
|
-
const { container: e, ...s } = r, [i, m] = o.useState(!1);
|
|
8
|
-
u(() => m(!0), []);
|
|
9
|
-
const t = e || i && globalThis?.document?.body;
|
|
10
|
-
return t ? n.createPortal(/* @__PURE__ */ c.jsx(f.div, { ...s, ref: a }), t) : null;
|
|
11
|
-
});
|
|
12
|
-
p.displayName = l;
|
|
13
|
-
export {
|
|
14
|
-
p as P
|
|
15
|
-
};
|