@iclips/ui 2.0.2 → 3.0.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 (122) hide show
  1. package/MIGRATION-v3.md +244 -0
  2. package/README.md +1 -1
  3. package/dist/alert-theme.css +20 -79
  4. package/dist/components/ui/charts/donut-chart.cjs +1 -1
  5. package/dist/components/ui/charts/donut-chart.cjs.map +1 -1
  6. package/dist/components/ui/charts/donut-chart.js +39 -60
  7. package/dist/components/ui/charts/donut-chart.js.map +1 -1
  8. package/dist/components/ui/charts/kpi-card.cjs +1 -1
  9. package/dist/components/ui/charts/kpi-card.cjs.map +1 -1
  10. package/dist/components/ui/charts/kpi-card.js +19 -19
  11. package/dist/components/ui/charts/kpi-card.js.map +1 -1
  12. package/dist/components/ui/data/comment-system.cjs +1 -1
  13. package/dist/components/ui/data/comment-system.cjs.map +1 -1
  14. package/dist/components/ui/data/comment-system.js +67 -67
  15. package/dist/components/ui/data/comment-system.js.map +1 -1
  16. package/dist/components/ui/data/data-table.cjs +1 -1
  17. package/dist/components/ui/data/data-table.cjs.map +1 -1
  18. package/dist/components/ui/data/data-table.js +112 -101
  19. package/dist/components/ui/data/data-table.js.map +1 -1
  20. package/dist/components/ui/data/editorial-calendar.cjs +1 -1
  21. package/dist/components/ui/data/editorial-calendar.cjs.map +1 -1
  22. package/dist/components/ui/data/editorial-calendar.js +291 -291
  23. package/dist/components/ui/data/editorial-calendar.js.map +1 -1
  24. package/dist/components/ui/data/filter-builder.cjs +1 -1
  25. package/dist/components/ui/data/filter-builder.cjs.map +1 -1
  26. package/dist/components/ui/data/filter-builder.js +1 -1
  27. package/dist/components/ui/data/filter-builder.js.map +1 -1
  28. package/dist/components/ui/feedback/empty-state.cjs +1 -1
  29. package/dist/components/ui/feedback/empty-state.cjs.map +1 -1
  30. package/dist/components/ui/feedback/empty-state.js +14 -14
  31. package/dist/components/ui/feedback/empty-state.js.map +1 -1
  32. package/dist/components/ui/feedback/toast.cjs +1 -1
  33. package/dist/components/ui/feedback/toast.cjs.map +1 -1
  34. package/dist/components/ui/feedback/toast.js +53 -22
  35. package/dist/components/ui/feedback/toast.js.map +1 -1
  36. package/dist/components/ui/forms/calendar.cjs +1 -1
  37. package/dist/components/ui/forms/calendar.cjs.map +1 -1
  38. package/dist/components/ui/forms/calendar.js +16 -16
  39. package/dist/components/ui/forms/calendar.js.map +1 -1
  40. package/dist/components/ui/forms/combobox.cjs +1 -1
  41. package/dist/components/ui/forms/combobox.cjs.map +1 -1
  42. package/dist/components/ui/forms/combobox.js +78 -76
  43. package/dist/components/ui/forms/combobox.js.map +1 -1
  44. package/dist/components/ui/forms/file-attachment-list.cjs +1 -1
  45. package/dist/components/ui/forms/file-attachment-list.cjs.map +1 -1
  46. package/dist/components/ui/forms/file-attachment-list.js +4 -4
  47. package/dist/components/ui/forms/file-attachment-list.js.map +1 -1
  48. package/dist/components/ui/forms/file-upload-zone.cjs +2 -2
  49. package/dist/components/ui/forms/file-upload-zone.cjs.map +1 -1
  50. package/dist/components/ui/forms/file-upload-zone.js +55 -49
  51. package/dist/components/ui/forms/file-upload-zone.js.map +1 -1
  52. package/dist/components/ui/forms/form.cjs +1 -1
  53. package/dist/components/ui/forms/form.cjs.map +1 -1
  54. package/dist/components/ui/forms/form.js +11 -11
  55. package/dist/components/ui/forms/form.js.map +1 -1
  56. package/dist/components/ui/forms/input-validation.cjs +1 -1
  57. package/dist/components/ui/forms/input-validation.cjs.map +1 -1
  58. package/dist/components/ui/forms/input-validation.js +20 -20
  59. package/dist/components/ui/forms/input-validation.js.map +1 -1
  60. package/dist/components/ui/forms/multi-select.cjs +1 -1
  61. package/dist/components/ui/forms/multi-select.cjs.map +1 -1
  62. package/dist/components/ui/forms/multi-select.js +69 -67
  63. package/dist/components/ui/forms/multi-select.js.map +1 -1
  64. package/dist/components/ui/forms/radio-group.cjs +1 -1
  65. package/dist/components/ui/forms/radio-group.cjs.map +1 -1
  66. package/dist/components/ui/forms/radio-group.js +19 -19
  67. package/dist/components/ui/forms/radio-group.js.map +1 -1
  68. package/dist/components/ui/forms/social-button.cjs +1 -1
  69. package/dist/components/ui/forms/social-button.cjs.map +1 -1
  70. package/dist/components/ui/forms/social-button.js +6 -6
  71. package/dist/components/ui/forms/social-button.js.map +1 -1
  72. package/dist/components/ui/forms/toggle.cjs +1 -1
  73. package/dist/components/ui/forms/toggle.cjs.map +1 -1
  74. package/dist/components/ui/forms/toggle.js +7 -7
  75. package/dist/components/ui/forms/toggle.js.map +1 -1
  76. package/dist/components/ui/navigation/navigation-menu.cjs +1 -1
  77. package/dist/components/ui/navigation/navigation-menu.cjs.map +1 -1
  78. package/dist/components/ui/navigation/navigation-menu.js +14 -14
  79. package/dist/components/ui/navigation/navigation-menu.js.map +1 -1
  80. package/dist/components/ui/navigation/sidebar.cjs +1 -1
  81. package/dist/components/ui/navigation/sidebar.cjs.map +1 -1
  82. package/dist/components/ui/navigation/sidebar.js +44 -44
  83. package/dist/components/ui/navigation/sidebar.js.map +1 -1
  84. package/dist/components/ui/overlays/context-menu.cjs +1 -1
  85. package/dist/components/ui/overlays/context-menu.cjs.map +1 -1
  86. package/dist/components/ui/overlays/context-menu.js +1 -1
  87. package/dist/components/ui/overlays/context-menu.js.map +1 -1
  88. package/dist/components/ui/overlays/dropdown-menu.cjs +1 -1
  89. package/dist/components/ui/overlays/dropdown-menu.cjs.map +1 -1
  90. package/dist/components/ui/overlays/dropdown-menu.js +5 -5
  91. package/dist/components/ui/overlays/dropdown-menu.js.map +1 -1
  92. package/dist/components/ui/overlays/menubar.cjs +1 -1
  93. package/dist/components/ui/overlays/menubar.cjs.map +1 -1
  94. package/dist/components/ui/overlays/menubar.js +29 -29
  95. package/dist/components/ui/overlays/menubar.js.map +1 -1
  96. package/dist/components/ui/overlays/tooltip.cjs +1 -1
  97. package/dist/components/ui/overlays/tooltip.cjs.map +1 -1
  98. package/dist/components/ui/overlays/tooltip.js +12 -12
  99. package/dist/components/ui/overlays/tooltip.js.map +1 -1
  100. package/dist/components/ui/primitives/avatar.cjs +1 -1
  101. package/dist/components/ui/primitives/avatar.cjs.map +1 -1
  102. package/dist/components/ui/primitives/avatar.js +20 -27
  103. package/dist/components/ui/primitives/avatar.js.map +1 -1
  104. package/dist/components/ui/primitives/badge.cjs +1 -1
  105. package/dist/components/ui/primitives/badge.cjs.map +1 -1
  106. package/dist/components/ui/primitives/badge.js +13 -13
  107. package/dist/components/ui/primitives/badge.js.map +1 -1
  108. package/dist/components/ui/primitives/button.cjs +1 -1
  109. package/dist/components/ui/primitives/button.cjs.map +1 -1
  110. package/dist/components/ui/primitives/button.js +11 -8
  111. package/dist/components/ui/primitives/button.js.map +1 -1
  112. package/dist/index.cjs +1 -1
  113. package/dist/index.css +1 -1
  114. package/dist/index.d.cts +3 -3
  115. package/dist/index.d.ts +3 -3
  116. package/dist/index.js +34 -35
  117. package/dist/index.js.map +1 -1
  118. package/dist/preset.css +1 -2
  119. package/dist/toast-theme.css +100 -64
  120. package/dist/tokens.css +59 -159
  121. package/package.json +5 -3
  122. package/scripts/check-colors.mjs +208 -0
package/dist/index.d.cts CHANGED
@@ -47,7 +47,7 @@ import * as SliderPrimitive from '@radix-ui/react-slider';
47
47
  import { SlotProps } from '@radix-ui/react-slot';
48
48
  import * as SwitchPrimitive from '@radix-ui/react-switch';
49
49
  import * as TabsPrimitive from '@radix-ui/react-tabs';
50
- import { toast } from 'sonner';
50
+ import { toast as toast_2 } from 'sonner';
51
51
  import { ToasterProps } from 'sonner';
52
52
  import * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';
53
53
  import * as TogglePrimitive from '@radix-ui/react-toggle';
@@ -227,7 +227,7 @@ declare const authLayoutVariants: (props?: ({
227
227
 
228
228
  export declare const Avatar: React_2.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarProps & React_2.RefAttributes<HTMLSpanElement>, "ref"> & React_2.RefAttributes<HTMLSpanElement>>;
229
229
 
230
- declare type AvatarColorVariant = "gray" | "pink" | "purple" | "blue" | "cyan" | "teal" | "green" | "yellow" | "orange" | "red";
230
+ declare type AvatarColorVariant = "gray" | "purple";
231
231
 
232
232
  export declare const AvatarFallback: React_2.ForwardRefExoticComponent<PropsAvatarFallback & React_2.RefAttributes<HTMLSpanElement>>;
233
233
 
@@ -2849,7 +2849,7 @@ export declare interface TimePickerProps {
2849
2849
  variant?: "input" | "select" | "inline";
2850
2850
  }
2851
2851
 
2852
- export { toast }
2852
+ export declare const toast: typeof toast_2;
2853
2853
 
2854
2854
  export declare function Toaster(props: ToasterProps): JSX.Element;
2855
2855
 
package/dist/index.d.ts CHANGED
@@ -47,7 +47,7 @@ import * as SliderPrimitive from '@radix-ui/react-slider';
47
47
  import { SlotProps } from '@radix-ui/react-slot';
48
48
  import * as SwitchPrimitive from '@radix-ui/react-switch';
49
49
  import * as TabsPrimitive from '@radix-ui/react-tabs';
50
- import { toast } from 'sonner';
50
+ import { toast as toast_2 } from 'sonner';
51
51
  import { ToasterProps } from 'sonner';
52
52
  import * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';
53
53
  import * as TogglePrimitive from '@radix-ui/react-toggle';
@@ -227,7 +227,7 @@ declare const authLayoutVariants: (props?: ({
227
227
 
228
228
  export declare const Avatar: React_2.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarProps & React_2.RefAttributes<HTMLSpanElement>, "ref"> & React_2.RefAttributes<HTMLSpanElement>>;
229
229
 
230
- declare type AvatarColorVariant = "gray" | "pink" | "purple" | "blue" | "cyan" | "teal" | "green" | "yellow" | "orange" | "red";
230
+ declare type AvatarColorVariant = "gray" | "purple";
231
231
 
232
232
  export declare const AvatarFallback: React_2.ForwardRefExoticComponent<PropsAvatarFallback & React_2.RefAttributes<HTMLSpanElement>>;
233
233
 
@@ -2849,7 +2849,7 @@ export declare interface TimePickerProps {
2849
2849
  variant?: "input" | "select" | "inline";
2850
2850
  }
2851
2851
 
2852
- export { toast }
2852
+ export declare const toast: typeof toast_2;
2853
2853
 
2854
2854
  export declare function Toaster(props: ToasterProps): JSX.Element;
2855
2855
 
package/dist/index.js CHANGED
@@ -70,16 +70,15 @@ import { calculatePaginationMetadata as ln } from "./components/ui/data/table-ty
70
70
  import { Tabs as mn, TabsContent as dn, TabsList as xn, TabsTrigger as bn } from "./components/ui/navigation/tabs.js";
71
71
  import { Textarea as Cn } from "./components/ui/forms/textarea.js";
72
72
  import { TimePicker as fn } from "./components/ui/forms/time-picker.js";
73
- import { Toaster as cn } from "./components/ui/feedback/toast.js";
74
- import { Toggle as Tn, toggleVariants as Dn } from "./components/ui/forms/toggle.js";
75
- import { ToggleGroup as Pn, ToggleGroupItem as An } from "./components/ui/forms/toggle-group.js";
76
- import { Tooltip as wn, TooltipContent as Fn, TooltipProvider as Gn, TooltipTrigger as vn } from "./components/ui/overlays/tooltip.js";
77
- import { UnderlineTabs as Ln, UnderlineTabsContent as Hn, UnderlineTabsList as Rn, UnderlineTabsTrigger as kn } from "./components/ui/navigation/underline-tabs.js";
78
- import { FileUploadZone as En } from "./components/ui/forms/file-upload-zone.js";
79
- import { EmptyCalendarIllustration as Vn, EmptyContractsIllustration as Un, EmptyInboxIllustration as On, EmptyProjectsIllustration as zn, EmptySearchIllustration as jn, ErrorStateIllustration as Kn, Illustrations as Zn, SuccessStateIllustration as qn, illustrationSources as Jn } from "./components/ui/feedback/illustrations.js";
80
- import { useIsMobile as Wn } from "./hooks/use-mobile.js";
81
- import { cn as Yn } from "./components/ui/utils.js";
82
- import { toast as $n } from "sonner";
73
+ import { Toaster as cn, toast as Mn } from "./components/ui/feedback/toast.js";
74
+ import { Toggle as Dn, toggleVariants as In } from "./components/ui/forms/toggle.js";
75
+ import { ToggleGroup as An, ToggleGroupItem as hn } from "./components/ui/forms/toggle-group.js";
76
+ import { Tooltip as Fn, TooltipContent as Gn, TooltipProvider as vn, TooltipTrigger as Bn } from "./components/ui/overlays/tooltip.js";
77
+ import { UnderlineTabs as Hn, UnderlineTabsContent as Rn, UnderlineTabsList as kn, UnderlineTabsTrigger as yn } from "./components/ui/navigation/underline-tabs.js";
78
+ import { FileUploadZone as Nn } from "./components/ui/forms/file-upload-zone.js";
79
+ import { EmptyCalendarIllustration as Un, EmptyContractsIllustration as On, EmptyInboxIllustration as zn, EmptyProjectsIllustration as jn, EmptySearchIllustration as Kn, ErrorStateIllustration as Zn, Illustrations as qn, SuccessStateIllustration as Jn, illustrationSources as Qn } from "./components/ui/feedback/illustrations.js";
80
+ import { useIsMobile as Xn } from "./hooks/use-mobile.js";
81
+ import { cn as _n } from "./components/ui/utils.js";
83
82
  export {
84
83
  t as Accordion,
85
84
  a as AccordionContent,
@@ -200,15 +199,15 @@ export {
200
199
  Vr as DropdownMenuSubTrigger,
201
200
  Ur as DropdownMenuTrigger,
202
201
  zr as EditableBadge,
203
- Vn as EmptyCalendarIllustration,
204
- Un as EmptyContractsIllustration,
205
- On as EmptyInboxIllustration,
206
- zn as EmptyProjectsIllustration,
207
- jn as EmptySearchIllustration,
202
+ Un as EmptyCalendarIllustration,
203
+ On as EmptyContractsIllustration,
204
+ zn as EmptyInboxIllustration,
205
+ jn as EmptyProjectsIllustration,
206
+ Kn as EmptySearchIllustration,
208
207
  Kr as EmptyState,
209
- Kn as ErrorStateIllustration,
208
+ Zn as ErrorStateIllustration,
210
209
  Lo as FileAttachmentList,
211
- En as FileUploadZone,
210
+ Nn as FileUploadZone,
212
211
  qr as FilterBar,
213
212
  Qr as FilterBuilder,
214
213
  Xr as FilterChip,
@@ -222,7 +221,7 @@ export {
222
221
  po as HoverCard,
223
222
  lo as HoverCardContent,
224
223
  uo as HoverCardTrigger,
225
- Zn as Illustrations,
224
+ qn as Illustrations,
226
225
  xo as Input,
227
226
  go as InputGroup,
228
227
  Co as InputGroupAddon,
@@ -332,7 +331,7 @@ export {
332
331
  Ua as Skeleton,
333
332
  za as Slider,
334
333
  Ka as SocialButton,
335
- qn as SuccessStateIllustration,
334
+ Jn as SuccessStateIllustration,
336
335
  Ja as Switch,
337
336
  Wa as Table,
338
337
  Xa as TableBody,
@@ -350,29 +349,29 @@ export {
350
349
  Cn as Textarea,
351
350
  fn as TimePicker,
352
351
  cn as Toaster,
353
- Tn as Toggle,
354
- Pn as ToggleGroup,
355
- An as ToggleGroupItem,
356
- wn as Tooltip,
357
- Fn as TooltipContent,
358
- Gn as TooltipProvider,
359
- vn as TooltipTrigger,
360
- Ln as UnderlineTabs,
361
- Hn as UnderlineTabsContent,
362
- Rn as UnderlineTabsList,
363
- kn as UnderlineTabsTrigger,
352
+ Dn as Toggle,
353
+ An as ToggleGroup,
354
+ hn as ToggleGroupItem,
355
+ Fn as Tooltip,
356
+ Gn as TooltipContent,
357
+ vn as TooltipProvider,
358
+ Bn as TooltipTrigger,
359
+ Hn as UnderlineTabs,
360
+ Rn as UnderlineTabsContent,
361
+ kn as UnderlineTabsList,
362
+ yn as UnderlineTabsTrigger,
364
363
  H as badgeVariants,
365
364
  q as buttonVariants,
366
365
  ln as calculatePaginationMetadata,
367
- Yn as cn,
366
+ _n as cn,
368
367
  nn as getPageNumbers,
369
- Jn as illustrationSources,
368
+ Qn as illustrationSources,
370
369
  pt as navigationMenuTriggerStyle,
371
370
  Za as socialButtonVariants,
372
- $n as toast,
373
- Dn as toggleVariants,
371
+ Mn as toast,
372
+ In as toggleVariants,
374
373
  no as useFormField,
375
- Wn as useIsMobile,
374
+ Xn as useIsMobile,
376
375
  Ga as useSidebar
377
376
  };
378
377
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/dist/preset.css CHANGED
@@ -236,8 +236,7 @@ html {
236
236
  }
237
237
 
238
238
  /* Ajustar cores de fundo para impressão */
239
- .bg-gray-50,
240
- .bg-gray-100 {
239
+ .bg-muted {
241
240
  background-color: var(--gray-50) !important;
242
241
  }
243
242
 
@@ -1,100 +1,136 @@
1
1
  /*
2
- * Toast Variant Theme Styles
3
- * Uses CSS variables for automatic dark/light mode adaptation.
4
- * These classes are referenced by toast.tsx (sonner) classNames map.
2
+ * Toast (sonner, `unstyled: true`) — documento Paleta iClips, "Toasts · camada 03".
5
3
  *
6
- * Sonner renders each toast with `unstyled: true`, so the variant class
7
- * (`toast-variant-*`) lands on the toast element, which also carries
8
- * `data-sonner-toast` and `data-type="error|success|warning|info"`.
9
- * Inner elements: `[data-title]`, `[data-description]`, `[data-icon]`.
4
+ * Superfície neutra sempre; a cor de estado fica só no ícone, dentro de um
5
+ * disco tingido. A cor identifica, a superfície não grita. Duas exceções de
6
+ * propósito:
7
+ * - `loading` é o único roxo: progresso é a ação do usuário acontecendo.
8
+ * - `.toast-undo` (toast sem tipo + action, aplicado pelo wrapper em
9
+ * toast.tsx) vem em superfície invertida: "escuro = tenho alguns segundos
10
+ * para agir".
10
11
  *
11
- * Same recipe as alert-theme.css. Variables used (defined in tokens.css,
12
- * change between modes):
13
- * --info → cyan-600 (light) / cyan-600 (dark)
14
- * --success → green-600 (light) / green-600 (dark)
15
- * --warning → yellow-500 (light) / yellow-600 (dark)
16
- * --destructive → red-600 (light) / red-600 (dark)
17
- * --foreground → gray-800 (light) / gray-50 (dark)
18
- * --card → white (light) / gray-700 (dark)
19
- * --border → gray-200 (light) / gray-600 (dark)
12
+ * O ícone usa `--*-emphasis` nos dois temas: no escuro os -600 puros ficam
13
+ * abaixo de 3:1 sobre o card (gray-700).
14
+ *
15
+ * Seletores: cada toast é `[data-sonner-toast]` com `data-type`; dentro,
16
+ * `[data-icon]`, `[data-title]`, `[data-description]`, `[data-button]`.
20
17
  */
21
18
 
22
- /* ── Error ────────────────────────────────────────────────── */
23
- [data-sonner-toast].toast-variant-error {
24
- color: color-mix(in oklab, var(--destructive) 80%, var(--foreground));
25
- background-color: color-mix(in oklab, var(--destructive) 22%, var(--card));
26
- border-color: color-mix(in oklab, var(--destructive) 50%, var(--border));
19
+ [data-sonner-toast].toast {
20
+ --toast-state: var(--foreground);
21
+ --toast-icon: var(--foreground);
22
+ background-color: var(--card);
23
+ border-color: var(--border);
24
+ color: var(--foreground);
25
+ }
26
+
27
+ [data-sonner-toast].toast [data-title] {
28
+ color: var(--foreground);
29
+ }
30
+
31
+ [data-sonner-toast].toast [data-description] {
32
+ color: var(--muted-foreground);
33
+ }
34
+
35
+ /* ── Disco do ícone ───────────────────────────────────────── */
36
+ [data-sonner-toast].toast [data-icon] {
37
+ display: inline-flex;
38
+ flex-shrink: 0;
39
+ align-items: center;
40
+ justify-content: center;
41
+ width: 1.75rem;
42
+ height: 1.75rem;
43
+ border-radius: 9999px;
44
+ background-color: color-mix(in oklab, var(--toast-state) 12%, var(--card));
45
+ color: var(--toast-icon);
46
+ }
47
+
48
+ /* O sonner posiciona o loader em absoluto; aqui ele fica dentro do disco. */
49
+ [data-sonner-toast].toast [data-icon] .sonner-loader {
50
+ position: static;
51
+ transform: none;
52
+ display: contents;
27
53
  }
28
54
 
29
- [data-sonner-toast].toast-variant-error [data-icon] {
30
- color: var(--destructive);
55
+ [data-sonner-toast].toast [data-icon] svg {
56
+ width: 1rem;
57
+ height: 1rem;
31
58
  }
32
59
 
33
- [data-sonner-toast].toast-variant-error [data-title] {
34
- color: color-mix(in oklab, var(--destructive) 80%, var(--foreground));
60
+ [data-sonner-toast].toast[data-type="success"] {
61
+ --toast-state: var(--success);
62
+ --toast-icon: var(--success-emphasis);
35
63
  }
36
64
 
37
- [data-sonner-toast].toast-variant-error [data-description] {
38
- color: color-mix(in oklab, var(--destructive) 65%, var(--foreground));
65
+ [data-sonner-toast].toast[data-type="error"] {
66
+ --toast-state: var(--destructive);
67
+ --toast-icon: var(--destructive-emphasis);
68
+ border-color: color-mix(in oklab, var(--destructive) 25%, var(--border));
39
69
  }
40
70
 
41
- /* ── Success ──────────────────────────────────────────────── */
42
- [data-sonner-toast].toast-variant-success {
43
- color: color-mix(in oklab, var(--success) 80%, var(--foreground));
44
- background-color: color-mix(in oklab, var(--success) 22%, var(--card));
45
- border-color: color-mix(in oklab, var(--success) 50%, var(--border));
71
+ [data-sonner-toast].toast[data-type="warning"] {
72
+ --toast-state: var(--warning);
73
+ --toast-icon: var(--warning-emphasis);
46
74
  }
47
75
 
48
- [data-sonner-toast].toast-variant-success [data-icon] {
49
- color: var(--success);
76
+ [data-sonner-toast].toast[data-type="info"] {
77
+ --toast-state: var(--info);
78
+ --toast-icon: var(--info-emphasis);
50
79
  }
51
80
 
52
- [data-sonner-toast].toast-variant-success [data-title] {
53
- color: color-mix(in oklab, var(--success) 80%, var(--foreground));
81
+ [data-sonner-toast].toast[data-type="loading"] {
82
+ --toast-state: var(--primary);
83
+ --toast-icon: var(--primary);
84
+ border-color: color-mix(in oklab, var(--primary) 40%, var(--border));
54
85
  }
55
86
 
56
- [data-sonner-toast].toast-variant-success [data-description] {
57
- color: color-mix(in oklab, var(--success) 65%, var(--foreground));
87
+ /* ── Ação: texto roxo, um link por toast ──────────────────── */
88
+ /* Nos toasts de estado a ação vai abaixo da descrição, alinhada ao texto
89
+ (disco 1.75rem + gap 0.75rem); no Desfazer ela fica à direita. */
90
+ [data-sonner-toast].toast {
91
+ flex-wrap: wrap;
58
92
  }
59
93
 
60
- /* ── Warning ──────────────────────────────────────────────── */
61
- /* --warning é o único token de status "claro" (yellow-500). Derivar texto
62
- com o mesmo 80/65% dos outros deixaria ~2,4:1 sobre o fundo pálido — abaixo
63
- de AA. O texto do warning mistura muito mais --foreground (fica âmbar
64
- escuro); o ícone continua no amarelo cheio. */
65
- [data-sonner-toast].toast-variant-warning {
66
- color: color-mix(in oklab, var(--warning) 32%, var(--foreground));
67
- background-color: color-mix(in oklab, var(--warning) 22%, var(--card));
68
- border-color: color-mix(in oklab, var(--warning) 50%, var(--border));
94
+ [data-sonner-toast].toast [data-content] {
95
+ flex: 1 1 0;
96
+ min-width: 0;
69
97
  }
70
98
 
71
- [data-sonner-toast].toast-variant-warning [data-icon] {
72
- color: color-mix(in oklab, var(--warning) 80%, var(--foreground));
99
+ [data-sonner-toast].toast [data-button][data-action] {
100
+ background: none;
101
+ color: var(--primary);
102
+ padding: 0;
103
+ margin: -0.25rem 0 0 2.5rem;
104
+ flex-basis: 100%;
105
+ text-align: left;
73
106
  }
74
107
 
75
- [data-sonner-toast].toast-variant-warning [data-title] {
76
- color: color-mix(in oklab, var(--warning) 32%, var(--foreground));
108
+ [data-sonner-toast].toast.toast-undo [data-button][data-action] {
109
+ margin: 0 0 0 auto;
110
+ flex-basis: auto;
77
111
  }
78
112
 
79
- [data-sonner-toast].toast-variant-warning [data-description] {
80
- color: color-mix(in oklab, var(--warning) 26%, var(--foreground));
113
+ /* ── Desfazer: superfície invertida ───────────────────────── */
114
+ [data-sonner-toast].toast.toast-undo {
115
+ background-color: var(--foreground);
116
+ border-color: var(--foreground);
117
+ color: var(--background);
118
+ align-items: center;
81
119
  }
82
120
 
83
- /* ── Info ─────────────────────────────────────────────────── */
84
- [data-sonner-toast].toast-variant-info {
85
- color: color-mix(in oklab, var(--info) 80%, var(--foreground));
86
- background-color: color-mix(in oklab, var(--info) 22%, var(--card));
87
- border-color: color-mix(in oklab, var(--info) 50%, var(--border));
121
+ [data-sonner-toast].toast.toast-undo [data-title],
122
+ [data-sonner-toast].toast.toast-undo [data-description] {
123
+ color: var(--background);
88
124
  }
89
125
 
90
- [data-sonner-toast].toast-variant-info [data-icon] {
91
- color: var(--info);
126
+ [data-sonner-toast].toast.toast-undo [data-icon] {
127
+ display: none;
92
128
  }
93
129
 
94
- [data-sonner-toast].toast-variant-info [data-title] {
95
- color: color-mix(in oklab, var(--info) 80%, var(--foreground));
130
+ [data-sonner-toast].toast.toast-undo [data-button][data-action] {
131
+ color: var(--purple-100);
96
132
  }
97
133
 
98
- [data-sonner-toast].toast-variant-info [data-description] {
99
- color: color-mix(in oklab, var(--info) 65%, var(--foreground));
134
+ .dark [data-sonner-toast].toast.toast-undo [data-button][data-action] {
135
+ color: var(--purple-500);
100
136
  }