@fluencypassdevs/cycle 0.2.0 → 0.4.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 (83) hide show
  1. package/README.md +13 -4
  2. package/bin/init.mjs +95 -0
  3. package/cli/CLAUDE-section.md +100 -0
  4. package/dist/chunk-2EKU7RP4.js +18 -0
  5. package/dist/chunk-2EKU7RP4.js.map +1 -0
  6. package/dist/chunk-5AZSRHJE.js +180 -0
  7. package/dist/chunk-5AZSRHJE.js.map +1 -0
  8. package/dist/chunk-EF6FQT4Y.js +78 -0
  9. package/dist/chunk-EF6FQT4Y.js.map +1 -0
  10. package/dist/chunk-F2Q3E2ZM.js +102 -0
  11. package/dist/chunk-F2Q3E2ZM.js.map +1 -0
  12. package/dist/chunk-IGMII4BK.js +58 -0
  13. package/dist/chunk-IGMII4BK.js.map +1 -0
  14. package/dist/chunk-LHSUEXOW.js +70 -0
  15. package/dist/chunk-LHSUEXOW.js.map +1 -0
  16. package/dist/{chunk-PM6ZUCMQ.js → chunk-MTKKVYNS.js} +3 -3
  17. package/dist/chunk-MTKKVYNS.js.map +1 -0
  18. package/dist/{chunk-QTL6W4I2.js → chunk-NYJMA2T7.js} +3 -3
  19. package/dist/{chunk-QTL6W4I2.js.map → chunk-NYJMA2T7.js.map} +1 -1
  20. package/dist/chunk-POQUVBVT.js +110 -0
  21. package/dist/chunk-POQUVBVT.js.map +1 -0
  22. package/dist/chunk-PY2BIZNB.js +52 -0
  23. package/dist/chunk-PY2BIZNB.js.map +1 -0
  24. package/dist/chunk-RI3ULQHH.js +91 -0
  25. package/dist/chunk-RI3ULQHH.js.map +1 -0
  26. package/dist/chunk-SZUWVHP4.js +187 -0
  27. package/dist/chunk-SZUWVHP4.js.map +1 -0
  28. package/dist/chunk-TZ7BEYQ7.js +147 -0
  29. package/dist/chunk-TZ7BEYQ7.js.map +1 -0
  30. package/dist/{chunk-VECLN5AT.js → chunk-WRJZHQNY.js} +4 -4
  31. package/dist/{chunk-VECLN5AT.js.map → chunk-WRJZHQNY.js.map} +1 -1
  32. package/dist/index.d.ts +13 -0
  33. package/dist/index.js +15 -4
  34. package/dist/styles/tokens.css +3 -2
  35. package/dist/ui/alert-dialog.d.ts +23 -0
  36. package/dist/ui/alert-dialog.js +6 -0
  37. package/dist/ui/alert-dialog.js.map +1 -0
  38. package/dist/ui/alert.d.ts +17 -0
  39. package/dist/ui/alert.js +7 -0
  40. package/dist/ui/alert.js.map +1 -0
  41. package/dist/ui/audio-player.js +1 -1
  42. package/dist/ui/badge.d.ts +2 -2
  43. package/dist/ui/button.d.ts +2 -2
  44. package/dist/ui/checkbox.d.ts +1 -1
  45. package/dist/ui/dialog.d.ts +20 -0
  46. package/dist/ui/dialog.js +6 -0
  47. package/dist/ui/dialog.js.map +1 -0
  48. package/dist/ui/empty.d.ts +15 -0
  49. package/dist/ui/empty.js +5 -0
  50. package/dist/ui/empty.js.map +1 -0
  51. package/dist/ui/file-card.d.ts +1 -1
  52. package/dist/ui/like-dislike.d.ts +1 -1
  53. package/dist/ui/popover.d.ts +13 -0
  54. package/dist/ui/popover.js +5 -0
  55. package/dist/ui/popover.js.map +1 -0
  56. package/dist/ui/progress-dot.d.ts +22 -0
  57. package/dist/ui/progress-dot.js +5 -0
  58. package/dist/ui/progress-dot.js.map +1 -0
  59. package/dist/ui/progress-stage.d.ts +1 -1
  60. package/dist/ui/progress-stage.js +1 -1
  61. package/dist/ui/progress.d.ts +1 -1
  62. package/dist/ui/progress.js +1 -1
  63. package/dist/ui/radio-group.d.ts +1 -1
  64. package/dist/ui/resizable.d.ts +10 -0
  65. package/dist/ui/resizable.js +5 -0
  66. package/dist/ui/resizable.js.map +1 -0
  67. package/dist/ui/select.d.ts +18 -0
  68. package/dist/ui/select.js +5 -0
  69. package/dist/ui/select.js.map +1 -0
  70. package/dist/ui/skeleton.d.ts +5 -0
  71. package/dist/ui/skeleton.js +5 -0
  72. package/dist/ui/skeleton.js.map +1 -0
  73. package/dist/ui/slider.d.ts +1 -1
  74. package/dist/ui/sonner.d.ts +29 -0
  75. package/dist/ui/sonner.js +7 -0
  76. package/dist/ui/sonner.js.map +1 -0
  77. package/dist/ui/switch.d.ts +1 -1
  78. package/dist/ui/toggle.d.ts +1 -1
  79. package/dist/ui/tooltip.d.ts +10 -0
  80. package/dist/ui/tooltip.js +5 -0
  81. package/dist/ui/tooltip.js.map +1 -0
  82. package/package.json +12 -1
  83. package/dist/chunk-PM6ZUCMQ.js.map +0 -1
@@ -0,0 +1,58 @@
1
+ import { cn } from './chunk-TYCPXAXF.js';
2
+ import { __objRest, __spreadValues, __spreadProps } from './chunk-YINJ5YZ5.js';
3
+ import { Tooltip as Tooltip$1 } from 'radix-ui';
4
+ import { jsx, jsxs } from 'react/jsx-runtime';
5
+
6
+ function TooltipProvider(_a) {
7
+ var _b = _a, {
8
+ delayDuration = 0
9
+ } = _b, props = __objRest(_b, [
10
+ "delayDuration"
11
+ ]);
12
+ return /* @__PURE__ */ jsx(
13
+ Tooltip$1.Provider,
14
+ __spreadValues({
15
+ "data-slot": "tooltip-provider",
16
+ delayDuration
17
+ }, props)
18
+ );
19
+ }
20
+ function Tooltip(_a) {
21
+ var props = __objRest(_a, []);
22
+ return /* @__PURE__ */ jsx(Tooltip$1.Root, __spreadValues({ "data-slot": "tooltip" }, props));
23
+ }
24
+ function TooltipTrigger(_a) {
25
+ var props = __objRest(_a, []);
26
+ return /* @__PURE__ */ jsx(Tooltip$1.Trigger, __spreadValues({ "data-slot": "tooltip-trigger" }, props));
27
+ }
28
+ function TooltipContent(_a) {
29
+ var _b = _a, {
30
+ className,
31
+ sideOffset = 0,
32
+ children
33
+ } = _b, props = __objRest(_b, [
34
+ "className",
35
+ "sideOffset",
36
+ "children"
37
+ ]);
38
+ return /* @__PURE__ */ jsx(Tooltip$1.Portal, { children: /* @__PURE__ */ jsxs(
39
+ Tooltip$1.Content,
40
+ __spreadProps(__spreadValues({
41
+ "data-slot": "tooltip-content",
42
+ sideOffset,
43
+ className: cn(
44
+ "z-50 w-fit origin-(--radix-tooltip-content-transform-origin) animate-in rounded-md bg-foreground px-3 py-1.5 text-xs text-balance text-background fade-in-0 zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95",
45
+ className
46
+ )
47
+ }, props), {
48
+ children: [
49
+ children,
50
+ /* @__PURE__ */ jsx(Tooltip$1.Arrow, { className: "z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground" })
51
+ ]
52
+ })
53
+ ) });
54
+ }
55
+
56
+ export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };
57
+ //# sourceMappingURL=chunk-IGMII4BK.js.map
58
+ //# sourceMappingURL=chunk-IGMII4BK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/ui/tooltip.tsx"],"names":["TooltipPrimitive"],"mappings":";;;;;AAOA,SAAS,gBAAgB,EAAA,EAGkC;AAHlC,EAAA,IAAA,EAAA,GAAA,EAAA,EACvB;AAAA,IAAA,aAAA,GAAgB;AAAA,GARlB,GAOyB,EAAA,EAEpB,KAAA,GAAA,SAAA,CAFoB,EAAA,EAEpB;AAAA,IADH;AAAA,GAAA,CAAA;AAGA,EAAA,uBACE,GAAA;AAAA,IAACA,SAAA,CAAiB,QAAA;AAAA,IAAjB,cAAA,CAAA;AAAA,MACC,WAAA,EAAU,kBAAA;AAAA,MACV;AAAA,KAAA,EACI,KAAA;AAAA,GACN;AAEJ;AAEA,SAAS,QAAQ,EAAA,EAEsC;AAFtC,EAAA,IACZ,kBADY,EAAA,EACZ,EAAA,CAAA;AAEH,EAAA,2BAAQA,SAAA,CAAiB,IAAA,EAAjB,cAAA,CAAA,EAAsB,WAAA,EAAU,aAAc,KAAA,CAAO,CAAA;AAC/D;AAEA,SAAS,eAAe,EAAA,EAEkC;AAFlC,EAAA,IACnB,kBADmB,EAAA,EACnB,EAAA,CAAA;AAEH,EAAA,2BAAQA,SAAA,CAAiB,OAAA,EAAjB,cAAA,CAAA,EAAyB,WAAA,EAAU,qBAAsB,KAAA,CAAO,CAAA;AAC1E;AAEA,SAAS,eAAe,EAAA,EAKkC;AALlC,EAAA,IAAA,EAAA,GAAA,EAAA,EACtB;AAAA,IAAA,SAAA;AAAA,IACA,UAAA,GAAa,CAAA;AAAA,IACb;AAAA,GAnCF,GAgCwB,EAAA,EAInB,KAAA,GAAA,SAAA,CAJmB,EAAA,EAInB;AAAA,IAHH,WAAA;AAAA,IACA,YAAA;AAAA,IACA;AAAA,GAAA,CAAA;AAGA,EAAA,uBACE,GAAA,CAACA,SAAA,CAAiB,MAAA,EAAjB,EACC,QAAA,kBAAA,IAAA;AAAA,IAACA,SAAA,CAAiB,OAAA;AAAA,IAAjB,aAAA,CAAA,cAAA,CAAA;AAAA,MACC,WAAA,EAAU,iBAAA;AAAA,MACV,UAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,maAAA;AAAA,QACA;AAAA;AACF,KAAA,EACI,KAAA,CAAA,EAPL;AAAA,MASE,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,wBACD,GAAA,CAACA,SAAA,CAAiB,KAAA,EAAjB,EAAuB,WAAU,oGAAA,EAAqG;AAAA;AAAA,KAAA;AAAA,GACzI,EACF,CAAA;AAEJ","file":"chunk-IGMII4BK.js","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { Tooltip as TooltipPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delayDuration={delayDuration}\n {...props}\n />\n )\n}\n\nfunction Tooltip({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n}\n\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 0,\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-fit origin-(--radix-tooltip-content-transform-origin) animate-in rounded-md bg-foreground px-3 py-1.5 text-xs text-balance text-background fade-in-0 zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\",\n className\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground\" />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n )\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n"]}
@@ -0,0 +1,70 @@
1
+ import { cn } from './chunk-TYCPXAXF.js';
2
+ import { __objRest, __spreadProps, __spreadValues } from './chunk-YINJ5YZ5.js';
3
+ import { cva } from 'class-variance-authority';
4
+ import { jsx } from 'react/jsx-runtime';
5
+
6
+ var progressDotVariants = cva("flex items-center", {
7
+ variants: {
8
+ size: {
9
+ xs: "gap-0.5",
10
+ sm: "gap-1",
11
+ default: "gap-1",
12
+ lg: "gap-1"
13
+ }
14
+ },
15
+ defaultVariants: {
16
+ size: "default"
17
+ }
18
+ });
19
+ var dotVariants = cva("shrink-0 rounded-full", {
20
+ variants: {
21
+ size: {
22
+ xs: "size-1",
23
+ sm: "size-1.5",
24
+ default: "size-2",
25
+ lg: "size-3"
26
+ }
27
+ },
28
+ defaultVariants: {
29
+ size: "default"
30
+ }
31
+ });
32
+ function ProgressDot(_a) {
33
+ var _b = _a, {
34
+ stages,
35
+ value,
36
+ size = "default",
37
+ theme,
38
+ className
39
+ } = _b, props = __objRest(_b, [
40
+ "stages",
41
+ "value",
42
+ "size",
43
+ "theme",
44
+ "className"
45
+ ]);
46
+ const total = Math.min(10, Math.max(2, stages));
47
+ const filled = Math.min(total, Math.max(0, value));
48
+ return /* @__PURE__ */ jsx(
49
+ "div",
50
+ __spreadProps(__spreadValues({
51
+ "data-slot": "progress-dot",
52
+ className: cn(progressDotVariants({ size }), className)
53
+ }, props), {
54
+ children: Array.from({ length: total }, (_, i) => /* @__PURE__ */ jsx(
55
+ "div",
56
+ {
57
+ className: cn(
58
+ dotVariants({ size }),
59
+ i < filled ? cn(theme, "bg-primary") : "bg-neutral-input"
60
+ )
61
+ },
62
+ i
63
+ ))
64
+ })
65
+ );
66
+ }
67
+
68
+ export { ProgressDot, dotVariants, progressDotVariants };
69
+ //# sourceMappingURL=chunk-LHSUEXOW.js.map
70
+ //# sourceMappingURL=chunk-LHSUEXOW.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/ui/progress-dot.tsx"],"names":[],"mappings":";;;;;AAKA,IAAM,mBAAA,GAAsB,IAAI,mBAAA,EAAqB;AAAA,EACnD,QAAA,EAAU;AAAA,IACR,IAAA,EAAM;AAAA,MACJ,EAAA,EAAI,SAAA;AAAA,MACJ,EAAA,EAAI,OAAA;AAAA,MACJ,OAAA,EAAS,OAAA;AAAA,MACT,EAAA,EAAI;AAAA;AACN,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,IAAA,EAAM;AAAA;AAEV,CAAC;AAED,IAAM,WAAA,GAAc,IAAI,uBAAA,EAAyB;AAAA,EAC/C,QAAA,EAAU;AAAA,IACR,IAAA,EAAM;AAAA,MACJ,EAAA,EAAI,QAAA;AAAA,MACJ,EAAA,EAAI,UAAA;AAAA,MACJ,OAAA,EAAS,QAAA;AAAA,MACT,EAAA,EAAI;AAAA;AACN,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,IAAA,EAAM;AAAA;AAEV,CAAC;AAaD,SAAS,YAAY,EAAA,EAOA;AAPA,EAAA,IAAA,EAAA,GAAA,EAAA,EACnB;AAAA,IAAA,MAAA;AAAA,IACA,KAAA;AAAA,IACA,IAAA,GAAO,SAAA;AAAA,IACP,KAAA;AAAA,IACA;AAAA,GAjDF,GA4CqB,EAAA,EAMhB,KAAA,GAAA,SAAA,CANgB,EAAA,EAMhB;AAAA,IALH,QAAA;AAAA,IACA,OAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GAAA,CAAA;AAGA,EAAA,MAAM,KAAA,GAAQ,KAAK,GAAA,CAAI,EAAA,EAAI,KAAK,GAAA,CAAI,CAAA,EAAG,MAAM,CAAC,CAAA;AAC9C,EAAA,MAAM,MAAA,GAAS,KAAK,GAAA,CAAI,KAAA,EAAO,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,CAAC,CAAA;AAEjD,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA,aAAA,CAAA,cAAA,CAAA;AAAA,MACC,WAAA,EAAU,cAAA;AAAA,MACV,WAAW,EAAA,CAAG,mBAAA,CAAoB,EAAE,IAAA,EAAM,GAAG,SAAS;AAAA,KAAA,EAClD,KAAA,CAAA,EAHL;AAAA,MAKE,QAAA,EAAA,KAAA,CAAM,KAAK,EAAE,MAAA,EAAQ,OAAM,EAAG,CAAC,GAAG,CAAA,qBACjC,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UAEC,SAAA,EAAW,EAAA;AAAA,YACT,WAAA,CAAY,EAAE,IAAA,EAAM,CAAA;AAAA,YACpB,CAAA,GAAI,MAAA,GACA,EAAA,CAAG,KAAA,EAAO,YAAY,CAAA,GACtB;AAAA;AACN,SAAA;AAAA,QANK;AAAA,OAQR;AAAA,KAAA;AAAA,GACH;AAEJ","file":"chunk-LHSUEXOW.js","sourcesContent":["import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst progressDotVariants = cva(\"flex items-center\", {\n variants: {\n size: {\n xs: \"gap-0.5\",\n sm: \"gap-1\",\n default: \"gap-1\",\n lg: \"gap-1\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n})\n\nconst dotVariants = cva(\"shrink-0 rounded-full\", {\n variants: {\n size: {\n xs: \"size-1\",\n sm: \"size-1.5\",\n default: \"size-2\",\n lg: \"size-3\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n})\n\nexport interface ProgressDotProps\n extends React.ComponentProps<\"div\">,\n VariantProps<typeof dotVariants> {\n /** Numero total de stages (2–10) */\n stages: number\n /** Quantos stages estao preenchidos (0–stages) */\n value: number\n /** Classe de tema aplicada apenas nos dots preenchidos (ex: \"theme-class\") */\n theme?: string\n}\n\nfunction ProgressDot({\n stages,\n value,\n size = \"default\",\n theme,\n className,\n ...props\n}: ProgressDotProps) {\n const total = Math.min(10, Math.max(2, stages))\n const filled = Math.min(total, Math.max(0, value))\n\n return (\n <div\n data-slot=\"progress-dot\"\n className={cn(progressDotVariants({ size }), className)}\n {...props}\n >\n {Array.from({ length: total }, (_, i) => (\n <div\n key={i}\n className={cn(\n dotVariants({ size }),\n i < filled\n ? cn(theme, \"bg-primary\")\n : \"bg-neutral-input\"\n )}\n />\n ))}\n </div>\n )\n}\n\nexport { ProgressDot, progressDotVariants, dotVariants }\n"]}
@@ -5,7 +5,7 @@ import { cva } from 'class-variance-authority';
5
5
  import { jsx } from 'react/jsx-runtime';
6
6
 
7
7
  var progressVariants = cva(
8
- "relative w-full overflow-hidden rounded-full bg-neutral-accent",
8
+ "relative w-full overflow-hidden rounded-full bg-neutral-input",
9
9
  {
10
10
  variants: {
11
11
  size: {
@@ -69,5 +69,5 @@ function Progress(_a) {
69
69
  }
70
70
 
71
71
  export { Progress, indicatorVariants, progressVariants };
72
- //# sourceMappingURL=chunk-PM6ZUCMQ.js.map
73
- //# sourceMappingURL=chunk-PM6ZUCMQ.js.map
72
+ //# sourceMappingURL=chunk-MTKKVYNS.js.map
73
+ //# sourceMappingURL=chunk-MTKKVYNS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/ui/progress.tsx"],"names":["ProgressPrimitive"],"mappings":";;;;;;AAUA,IAAM,gBAAA,GAAmB,GAAA;AAAA,EACvB,+DAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,KAAA;AAAA,QACJ,EAAA,EAAI,OAAA;AAAA,QACJ,OAAA,EAAS,KAAA;AAAA,QACT,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM;AAAA;AACR;AAEJ;AAIA,IAAM,iBAAA,GAAoB,GAAA;AAAA,EACxB,kDAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,YAAA;AAAA,QACT,SAAA,EAAW,cAAA;AAAA,QACX,WAAA,EAAa,gBAAA;AAAA,QACb,KAAA,EAAO;AAAA;AACT,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS;AAAA;AACX;AAEJ;AAUA,SAAS,SAAS,EAAA,EAOA;AAPA,EAAA,IAAA,EAAA,GAAA,EAAA,EAChB;AAAA,IAAA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,IAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GA3DF,GAsDkB,EAAA,EAMb,KAAA,GAAA,SAAA,CANa,EAAA,EAMb;AAAA,IALH,WAAA;AAAA,IACA,OAAA;AAAA,IACA,MAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,GAAA,CAAA;AAGA,EAAA,uBACE,GAAA;AAAA,IAACA,UAAA,CAAkB,IAAA;AAAA,IAAlB,aAAA,CAAA,cAAA,CAAA;AAAA,MACC,WAAA,EAAU,UAAA;AAAA,MACV,WAAW,EAAA,CAAG,gBAAA,CAAiB,EAAE,IAAA,EAAM,GAAG,SAAS;AAAA,KAAA,EAC/C,KAAA,CAAA,EAHL;AAAA,MAKC,QAAA,kBAAA,GAAA;AAAA,QAACA,UAAA,CAAkB,SAAA;AAAA,QAAlB;AAAA,UACC,WAAA,EAAU,oBAAA;AAAA,UACV,WAAW,EAAA,CAAG,KAAA,EAAO,kBAAkB,EAAE,OAAA,EAAS,CAAC,CAAA;AAAA,UACnD,OAAO,EAAE,SAAA,EAAW,eAAe,GAAA,IAAO,KAAA,IAAS,EAAE,CAAA,EAAA,CAAA;AAAK;AAAA;AAC5D,KAAA;AAAA,GACF;AAEJ","file":"chunk-MTKKVYNS.js","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { Progress as ProgressPrimitive } from \"radix-ui\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\n/* ─── Track variants ─── */\n\nconst progressVariants = cva(\n \"relative w-full overflow-hidden rounded-full bg-neutral-input\",\n {\n variants: {\n size: {\n xs: \"h-1\",\n sm: \"h-1.5\",\n default: \"h-2\",\n lg: \"h-3\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n }\n)\n\n/* ─── Indicator variants ─── */\n\nconst indicatorVariants = cva(\n \"h-full w-full flex-1 rounded-full transition-all\",\n {\n variants: {\n variant: {\n default: \"bg-primary\",\n secondary: \"bg-secondary\",\n destructive: \"bg-destructive\",\n muted: \"bg-muted-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nexport interface ProgressProps\n extends Omit<React.ComponentProps<typeof ProgressPrimitive.Root>, \"children\">,\n VariantProps<typeof progressVariants>,\n VariantProps<typeof indicatorVariants> {\n /** Classe de tema aplicada apenas no indicator (ex: \"theme-class\") */\n theme?: string\n}\n\nfunction Progress({\n className,\n value,\n size,\n variant,\n theme,\n ...props\n}: ProgressProps) {\n return (\n <ProgressPrimitive.Root\n data-slot=\"progress\"\n className={cn(progressVariants({ size }), className)}\n {...props}\n >\n <ProgressPrimitive.Indicator\n data-slot=\"progress-indicator\"\n className={cn(theme, indicatorVariants({ variant }))}\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n />\n </ProgressPrimitive.Root>\n )\n}\n\nexport { Progress, progressVariants, indicatorVariants }\n"]}
@@ -43,7 +43,7 @@ function ProgressStage(_a) {
43
43
  {
44
44
  className: cn(
45
45
  progressStagePillVariants({ size }),
46
- i < filled ? cn(theme, "bg-primary") : "bg-neutral-accent"
46
+ i < filled ? cn(theme, "bg-primary") : "bg-neutral-input"
47
47
  )
48
48
  },
49
49
  i
@@ -53,5 +53,5 @@ function ProgressStage(_a) {
53
53
  }
54
54
 
55
55
  export { ProgressStage };
56
- //# sourceMappingURL=chunk-QTL6W4I2.js.map
57
- //# sourceMappingURL=chunk-QTL6W4I2.js.map
56
+ //# sourceMappingURL=chunk-NYJMA2T7.js.map
57
+ //# sourceMappingURL=chunk-NYJMA2T7.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/ui/progress-stage.tsx"],"names":[],"mappings":";;;;;AAKA,IAAM,yBAAA,GAA4B,IAAI,qBAAA,EAAuB;AAAA,EAC3D,QAAA,EAAU;AAAA,IACR,IAAA,EAAM;AAAA,MACJ,EAAA,EAAI,KAAA;AAAA,MACJ,EAAA,EAAI,OAAA;AAAA,MACJ,OAAA,EAAS,KAAA;AAAA,MACT,EAAA,EAAI;AAAA;AACN,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,IAAA,EAAM;AAAA;AAEV,CAAC,CAAA;AAaD,SAAS,cAAc,EAAA,EAOA;AAPA,EAAA,IAAA,EAAA,GAAA,EAAA,EACrB;AAAA,IAAA,MAAA;AAAA,IACA,KAAA;AAAA,IACA,IAAA,GAAO,SAAA;AAAA,IACP,KAAA;AAAA,IACA;AAAA,GAnCF,GA8BuB,EAAA,EAMlB,KAAA,GAAA,SAAA,CANkB,EAAA,EAMlB;AAAA,IALH,QAAA;AAAA,IACA,OAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GAAA,CAAA;AAGA,EAAA,MAAM,KAAA,GAAQ,KAAK,GAAA,CAAI,EAAA,EAAI,KAAK,GAAA,CAAI,CAAA,EAAG,MAAM,CAAC,CAAA;AAC9C,EAAA,MAAM,MAAA,GAAS,KAAK,GAAA,CAAI,KAAA,EAAO,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,CAAC,CAAA;AAEjD,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA,aAAA,CAAA,cAAA,CAAA;AAAA,MACC,WAAA,EAAU,gBAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,mBAAA,EAAqB,SAAS;AAAA,KAAA,EACxC,KAAA,CAAA,EAHL;AAAA,MAKE,QAAA,EAAA,KAAA,CAAM,KAAK,EAAE,MAAA,EAAQ,OAAM,EAAG,CAAC,GAAG,CAAA,qBACjC,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UAEC,SAAA,EAAW,EAAA;AAAA,YACT,yBAAA,CAA0B,EAAE,IAAA,EAAM,CAAA;AAAA,YAClC,CAAA,GAAI,MAAA,GACA,EAAA,CAAG,KAAA,EAAO,YAAY,CAAA,GACtB;AAAA;AACN,SAAA;AAAA,QANK;AAAA,OAQR;AAAA,KAAA;AAAA,GACH;AAEJ","file":"chunk-QTL6W4I2.js","sourcesContent":["import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst progressStagePillVariants = cva(\"flex-1 rounded-full\", {\n variants: {\n size: {\n xs: \"h-1\",\n sm: \"h-1.5\",\n default: \"h-2\",\n lg: \"h-3\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n})\n\nexport interface ProgressStageProps\n extends React.ComponentProps<\"div\">,\n VariantProps<typeof progressStagePillVariants> {\n /** Numero total de stages (2–10) */\n stages: number\n /** Quantos stages estao preenchidos (0–stages) */\n value: number\n /** Classe de tema aplicada apenas nas pills preenchidas (ex: \"theme-class\") */\n theme?: string\n}\n\nfunction ProgressStage({\n stages,\n value,\n size = \"default\",\n theme,\n className,\n ...props\n}: ProgressStageProps) {\n const total = Math.min(10, Math.max(2, stages))\n const filled = Math.min(total, Math.max(0, value))\n\n return (\n <div\n data-slot=\"progress-stage\"\n className={cn(\"flex w-full gap-2\", className)}\n {...props}\n >\n {Array.from({ length: total }, (_, i) => (\n <div\n key={i}\n className={cn(\n progressStagePillVariants({ size }),\n i < filled\n ? cn(theme, \"bg-primary\")\n : \"bg-neutral-accent\"\n )}\n />\n ))}\n </div>\n )\n}\n\nexport { ProgressStage }\n"]}
1
+ {"version":3,"sources":["../src/components/ui/progress-stage.tsx"],"names":[],"mappings":";;;;;AAKA,IAAM,yBAAA,GAA4B,IAAI,qBAAA,EAAuB;AAAA,EAC3D,QAAA,EAAU;AAAA,IACR,IAAA,EAAM;AAAA,MACJ,EAAA,EAAI,KAAA;AAAA,MACJ,EAAA,EAAI,OAAA;AAAA,MACJ,OAAA,EAAS,KAAA;AAAA,MACT,EAAA,EAAI;AAAA;AACN,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,IAAA,EAAM;AAAA;AAEV,CAAC,CAAA;AAaD,SAAS,cAAc,EAAA,EAOA;AAPA,EAAA,IAAA,EAAA,GAAA,EAAA,EACrB;AAAA,IAAA,MAAA;AAAA,IACA,KAAA;AAAA,IACA,IAAA,GAAO,SAAA;AAAA,IACP,KAAA;AAAA,IACA;AAAA,GAnCF,GA8BuB,EAAA,EAMlB,KAAA,GAAA,SAAA,CANkB,EAAA,EAMlB;AAAA,IALH,QAAA;AAAA,IACA,OAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GAAA,CAAA;AAGA,EAAA,MAAM,KAAA,GAAQ,KAAK,GAAA,CAAI,EAAA,EAAI,KAAK,GAAA,CAAI,CAAA,EAAG,MAAM,CAAC,CAAA;AAC9C,EAAA,MAAM,MAAA,GAAS,KAAK,GAAA,CAAI,KAAA,EAAO,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,CAAC,CAAA;AAEjD,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA,aAAA,CAAA,cAAA,CAAA;AAAA,MACC,WAAA,EAAU,gBAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,mBAAA,EAAqB,SAAS;AAAA,KAAA,EACxC,KAAA,CAAA,EAHL;AAAA,MAKE,QAAA,EAAA,KAAA,CAAM,KAAK,EAAE,MAAA,EAAQ,OAAM,EAAG,CAAC,GAAG,CAAA,qBACjC,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UAEC,SAAA,EAAW,EAAA;AAAA,YACT,yBAAA,CAA0B,EAAE,IAAA,EAAM,CAAA;AAAA,YAClC,CAAA,GAAI,MAAA,GACA,EAAA,CAAG,KAAA,EAAO,YAAY,CAAA,GACtB;AAAA;AACN,SAAA;AAAA,QANK;AAAA,OAQR;AAAA,KAAA;AAAA,GACH;AAEJ","file":"chunk-NYJMA2T7.js","sourcesContent":["import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst progressStagePillVariants = cva(\"flex-1 rounded-full\", {\n variants: {\n size: {\n xs: \"h-1\",\n sm: \"h-1.5\",\n default: \"h-2\",\n lg: \"h-3\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n})\n\nexport interface ProgressStageProps\n extends React.ComponentProps<\"div\">,\n VariantProps<typeof progressStagePillVariants> {\n /** Numero total de stages (2–10) */\n stages: number\n /** Quantos stages estao preenchidos (0–stages) */\n value: number\n /** Classe de tema aplicada apenas nas pills preenchidas (ex: \"theme-class\") */\n theme?: string\n}\n\nfunction ProgressStage({\n stages,\n value,\n size = \"default\",\n theme,\n className,\n ...props\n}: ProgressStageProps) {\n const total = Math.min(10, Math.max(2, stages))\n const filled = Math.min(total, Math.max(0, value))\n\n return (\n <div\n data-slot=\"progress-stage\"\n className={cn(\"flex w-full gap-2\", className)}\n {...props}\n >\n {Array.from({ length: total }, (_, i) => (\n <div\n key={i}\n className={cn(\n progressStagePillVariants({ size }),\n i < filled\n ? cn(theme, \"bg-primary\")\n : \"bg-neutral-input\"\n )}\n />\n ))}\n </div>\n )\n}\n\nexport { ProgressStage }\n"]}
@@ -0,0 +1,110 @@
1
+ import { CycleIcon } from './chunk-OT2HCBR2.js';
2
+ import { cn } from './chunk-TYCPXAXF.js';
3
+ import { __objRest, __spreadValues, __spreadProps } from './chunk-YINJ5YZ5.js';
4
+ import { cva } from 'class-variance-authority';
5
+ import { X } from 'lucide-react';
6
+ import { jsx } from 'react/jsx-runtime';
7
+
8
+ var alertVariants = cva(
9
+ "relative grid w-full grid-cols-[0_1fr_auto] items-start gap-y-0.5 rounded-lg border px-4 py-3 text-sm has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr_auto] has-[>svg]:gap-x-3 [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current",
10
+ {
11
+ variants: {
12
+ variant: {
13
+ default: "bg-card text-card-foreground",
14
+ destructive: "bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 [&>svg]:text-current",
15
+ positive: "theme-positive bg-card text-card-foreground border-border *:data-[slot=alert-description]:text-muted-foreground [&>svg]:text-current",
16
+ warning: "theme-warning bg-card text-card-foreground border-border *:data-[slot=alert-description]:text-muted-foreground [&>svg]:text-current",
17
+ critical: "theme-critical bg-card text-card-foreground border-border *:data-[slot=alert-description]:text-muted-foreground [&>svg]:text-current",
18
+ info: "theme-class bg-card text-card-foreground border-border *:data-[slot=alert-description]:text-muted-foreground [&>svg]:text-current"
19
+ }
20
+ },
21
+ defaultVariants: {
22
+ variant: "default"
23
+ }
24
+ }
25
+ );
26
+ function Alert(_a) {
27
+ var _b = _a, { className, variant } = _b, props = __objRest(_b, ["className", "variant"]);
28
+ return /* @__PURE__ */ jsx(
29
+ "div",
30
+ __spreadValues({
31
+ "data-slot": "alert",
32
+ role: "alert",
33
+ className: cn(alertVariants({ variant }), className)
34
+ }, props)
35
+ );
36
+ }
37
+ function AlertTitle(_a) {
38
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
39
+ return /* @__PURE__ */ jsx(
40
+ "div",
41
+ __spreadValues({
42
+ "data-slot": "alert-title",
43
+ className: cn(
44
+ "col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight",
45
+ className
46
+ )
47
+ }, props)
48
+ );
49
+ }
50
+ function AlertDescription(_a) {
51
+ var _b = _a, {
52
+ className
53
+ } = _b, props = __objRest(_b, [
54
+ "className"
55
+ ]);
56
+ return /* @__PURE__ */ jsx(
57
+ "div",
58
+ __spreadValues({
59
+ "data-slot": "alert-description",
60
+ className: cn(
61
+ "col-start-2 grid justify-items-start gap-1 text-sm text-muted-foreground [&_p]:leading-relaxed",
62
+ className
63
+ )
64
+ }, props)
65
+ );
66
+ }
67
+ function AlertAction(_a) {
68
+ var _b = _a, {
69
+ className
70
+ } = _b, props = __objRest(_b, [
71
+ "className"
72
+ ]);
73
+ return /* @__PURE__ */ jsx(
74
+ "button",
75
+ __spreadValues({
76
+ "data-slot": "alert-action",
77
+ className: cn(
78
+ "col-start-2 mt-2 inline-flex h-8 items-center justify-center rounded-md border border-current/20 bg-transparent px-3 text-xs font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
79
+ className
80
+ )
81
+ }, props)
82
+ );
83
+ }
84
+ function AlertClose(_a) {
85
+ var _b = _a, {
86
+ className,
87
+ onClick
88
+ } = _b, props = __objRest(_b, [
89
+ "className",
90
+ "onClick"
91
+ ]);
92
+ return /* @__PURE__ */ jsx(
93
+ "button",
94
+ __spreadProps(__spreadValues({
95
+ "data-slot": "alert-close",
96
+ "aria-label": "Fechar alerta",
97
+ className: cn(
98
+ "col-start-3 row-start-1 -mr-1 -mt-0.5 inline-flex size-7 items-center justify-center rounded-md text-muted-foreground/60 transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
99
+ className
100
+ ),
101
+ onClick
102
+ }, props), {
103
+ children: /* @__PURE__ */ jsx(CycleIcon, { icon: X, size: "xs", decorative: true })
104
+ })
105
+ );
106
+ }
107
+
108
+ export { Alert, AlertAction, AlertClose, AlertDescription, AlertTitle, alertVariants };
109
+ //# sourceMappingURL=chunk-POQUVBVT.js.map
110
+ //# sourceMappingURL=chunk-POQUVBVT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/ui/alert.tsx"],"names":[],"mappings":"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","file":"chunk-POQUVBVT.js","sourcesContent":["import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { CycleIcon } from \"@/components/icons\"\n\nconst alertVariants = cva(\n \"relative grid w-full grid-cols-[0_1fr_auto] items-start gap-y-0.5 rounded-lg border px-4 py-3 text-sm has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr_auto] has-[>svg]:gap-x-3 [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current\",\n {\n variants: {\n variant: {\n default: \"bg-card text-card-foreground\",\n destructive:\n \"bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 [&>svg]:text-current\",\n positive:\n \"theme-positive bg-card text-card-foreground border-border *:data-[slot=alert-description]:text-muted-foreground [&>svg]:text-current\",\n warning:\n \"theme-warning bg-card text-card-foreground border-border *:data-[slot=alert-description]:text-muted-foreground [&>svg]:text-current\",\n critical:\n \"theme-critical bg-card text-card-foreground border-border *:data-[slot=alert-description]:text-muted-foreground [&>svg]:text-current\",\n info:\n \"theme-class bg-card text-card-foreground border-border *:data-[slot=alert-description]:text-muted-foreground [&>svg]:text-current\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nexport interface AlertProps\n extends React.ComponentProps<\"div\">,\n VariantProps<typeof alertVariants> {}\n\nfunction Alert({ className, variant, ...props }: AlertProps) {\n return (\n <div\n data-slot=\"alert\"\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-title\"\n className={cn(\n \"col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDescription({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn(\n \"col-start-2 grid justify-items-start gap-1 text-sm text-muted-foreground [&_p]:leading-relaxed\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertAction({\n className,\n ...props\n}: React.ComponentProps<\"button\">) {\n return (\n <button\n data-slot=\"alert-action\"\n className={cn(\n \"col-start-2 mt-2 inline-flex h-8 items-center justify-center rounded-md border border-current/20 bg-transparent px-3 text-xs font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertClose({\n className,\n onClick,\n ...props\n}: React.ComponentProps<\"button\">) {\n return (\n <button\n data-slot=\"alert-close\"\n aria-label=\"Fechar alerta\"\n className={cn(\n \"col-start-3 row-start-1 -mr-1 -mt-0.5 inline-flex size-7 items-center justify-center rounded-md text-muted-foreground/60 transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n className\n )}\n onClick={onClick}\n {...props}\n >\n <CycleIcon icon={X} size=\"xs\" decorative />\n </button>\n )\n}\n\nexport { Alert, AlertTitle, AlertDescription, AlertAction, AlertClose, alertVariants }\n"]}
@@ -0,0 +1,52 @@
1
+ import { cn } from './chunk-TYCPXAXF.js';
2
+ import { __objRest, __spreadValues, __spreadProps } from './chunk-YINJ5YZ5.js';
3
+ import { GripVerticalIcon } from 'lucide-react';
4
+ import * as ResizablePrimitive from 'react-resizable-panels';
5
+ import { jsx } from 'react/jsx-runtime';
6
+
7
+ function ResizablePanelGroup(_a) {
8
+ var _b = _a, {
9
+ className
10
+ } = _b, props = __objRest(_b, [
11
+ "className"
12
+ ]);
13
+ return /* @__PURE__ */ jsx(
14
+ ResizablePrimitive.Group,
15
+ __spreadValues({
16
+ "data-slot": "resizable-panel-group",
17
+ className: cn(
18
+ "flex h-full w-full aria-[orientation=vertical]:flex-col",
19
+ className
20
+ )
21
+ }, props)
22
+ );
23
+ }
24
+ function ResizablePanel(_a) {
25
+ var props = __objRest(_a, []);
26
+ return /* @__PURE__ */ jsx(ResizablePrimitive.Panel, __spreadValues({ "data-slot": "resizable-panel" }, props));
27
+ }
28
+ function ResizableHandle(_a) {
29
+ var _b = _a, {
30
+ withHandle,
31
+ className
32
+ } = _b, props = __objRest(_b, [
33
+ "withHandle",
34
+ "className"
35
+ ]);
36
+ return /* @__PURE__ */ jsx(
37
+ ResizablePrimitive.Separator,
38
+ __spreadProps(__spreadValues({
39
+ "data-slot": "resizable-handle",
40
+ className: cn(
41
+ "relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:outline-hidden aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full aria-[orientation=horizontal]:after:left-0 aria-[orientation=horizontal]:after:h-1 aria-[orientation=horizontal]:after:w-full aria-[orientation=horizontal]:after:translate-x-0 aria-[orientation=horizontal]:after:-translate-y-1/2 [&[aria-orientation=horizontal]>div]:rotate-90",
42
+ className
43
+ )
44
+ }, props), {
45
+ children: withHandle && /* @__PURE__ */ jsx("div", { className: "z-10 flex h-4 w-3 items-center justify-center rounded-xs border bg-border", children: /* @__PURE__ */ jsx(GripVerticalIcon, { className: "size-2.5" }) })
46
+ })
47
+ );
48
+ }
49
+
50
+ export { ResizableHandle, ResizablePanel, ResizablePanelGroup };
51
+ //# sourceMappingURL=chunk-PY2BIZNB.js.map
52
+ //# sourceMappingURL=chunk-PY2BIZNB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/ui/resizable.tsx"],"names":[],"mappings":";;;;;;AAOA,SAAS,oBAAoB,EAAA,EAGK;AAHL,EAAA,IAAA,EAAA,GAAA,EAAA,EAC3B;AAAA,IAAA;AAAA,GARF,GAO6B,EAAA,EAExB,KAAA,GAAA,SAAA,CAFwB,EAAA,EAExB;AAAA,IADH;AAAA,GAAA,CAAA;AAGA,EAAA,uBACE,GAAA;AAAA,IAAoB,kBAAA,CAAA,KAAA;AAAA,IAAnB,cAAA,CAAA;AAAA,MACC,WAAA,EAAU,uBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,yDAAA;AAAA,QACA;AAAA;AACF,KAAA,EACI,KAAA;AAAA,GACN;AAEJ;AAEA,SAAS,eAAe,EAAA,EAA6C;AAA7C,EAAA,IAAK,kBAAL,EAAA,EAAK,EAAA,CAAA;AAC3B,EAAA,uBAAO,GAAA,CAAoB,kBAAA,CAAA,KAAA,EAAnB,cAAA,CAAA,EAAyB,WAAA,EAAU,qBAAsB,KAAA,CAAO,CAAA;AAC1E;AAEA,SAAS,gBAAgB,EAAA,EAMtB;AANsB,EAAA,IAAA,EAAA,GAAA,EAAA,EACvB;AAAA,IAAA,UAAA;AAAA,IACA;AAAA,GA7BF,GA2ByB,EAAA,EAGpB,KAAA,GAAA,SAAA,CAHoB,EAAA,EAGpB;AAAA,IAFH,YAAA;AAAA,IACA;AAAA,GAAA,CAAA;AAKA,EAAA,uBACE,GAAA;AAAA,IAAoB,kBAAA,CAAA,SAAA;AAAA,IAAnB,aAAA,CAAA,cAAA,CAAA;AAAA,MACC,WAAA,EAAU,kBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,2kBAAA;AAAA,QACA;AAAA;AACF,KAAA,EACI,KAAA,CAAA,EANL;AAAA,MAQE,QAAA,EAAA,UAAA,wBACE,KAAA,EAAA,EAAI,SAAA,EAAU,6EACb,QAAA,kBAAA,GAAA,CAAC,gBAAA,EAAA,EAAiB,SAAA,EAAU,UAAA,EAAW,CAAA,EACzC;AAAA,KAAA;AAAA,GAEJ;AAEJ","file":"chunk-PY2BIZNB.js","sourcesContent":["\"use client\"\n\nimport { GripVerticalIcon } from \"lucide-react\"\nimport * as ResizablePrimitive from \"react-resizable-panels\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction ResizablePanelGroup({\n className,\n ...props\n}: ResizablePrimitive.GroupProps) {\n return (\n <ResizablePrimitive.Group\n data-slot=\"resizable-panel-group\"\n className={cn(\n \"flex h-full w-full aria-[orientation=vertical]:flex-col\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ResizablePanel({ ...props }: ResizablePrimitive.PanelProps) {\n return <ResizablePrimitive.Panel data-slot=\"resizable-panel\" {...props} />\n}\n\nfunction ResizableHandle({\n withHandle,\n className,\n ...props\n}: ResizablePrimitive.SeparatorProps & {\n withHandle?: boolean\n}) {\n return (\n <ResizablePrimitive.Separator\n data-slot=\"resizable-handle\"\n className={cn(\n \"relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:outline-hidden aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full aria-[orientation=horizontal]:after:left-0 aria-[orientation=horizontal]:after:h-1 aria-[orientation=horizontal]:after:w-full aria-[orientation=horizontal]:after:translate-x-0 aria-[orientation=horizontal]:after:-translate-y-1/2 [&[aria-orientation=horizontal]>div]:rotate-90\",\n className\n )}\n {...props}\n >\n {withHandle && (\n <div className=\"z-10 flex h-4 w-3 items-center justify-center rounded-xs border bg-border\">\n <GripVerticalIcon className=\"size-2.5\" />\n </div>\n )}\n </ResizablePrimitive.Separator>\n )\n}\n\nexport { ResizableHandle, ResizablePanel, ResizablePanelGroup }\n"]}
@@ -0,0 +1,91 @@
1
+ import { CycleIcon } from './chunk-OT2HCBR2.js';
2
+ import { cn } from './chunk-TYCPXAXF.js';
3
+ import { __objRest, __spreadValues, __spreadProps } from './chunk-YINJ5YZ5.js';
4
+ import { useTheme } from 'next-themes';
5
+ import { Toaster as Toaster$1, toast } from 'sonner';
6
+ import { Loader2, OctagonX, TriangleAlert, Info, CircleCheck } from 'lucide-react';
7
+ import { jsx } from 'react/jsx-runtime';
8
+
9
+ var Toaster = (_a) => {
10
+ var props = __objRest(_a, []);
11
+ const { theme = "system" } = useTheme();
12
+ return /* @__PURE__ */ jsx(
13
+ Toaster$1,
14
+ __spreadValues({
15
+ theme,
16
+ className: "toaster group",
17
+ icons: {
18
+ success: /* @__PURE__ */ jsx(CycleIcon, { icon: CircleCheck, size: "xs", decorative: true }),
19
+ info: /* @__PURE__ */ jsx(CycleIcon, { icon: Info, size: "xs", decorative: true }),
20
+ warning: /* @__PURE__ */ jsx(CycleIcon, { icon: TriangleAlert, size: "xs", decorative: true }),
21
+ error: /* @__PURE__ */ jsx(CycleIcon, { icon: OctagonX, size: "xs", decorative: true }),
22
+ loading: /* @__PURE__ */ jsx(
23
+ CycleIcon,
24
+ {
25
+ icon: Loader2,
26
+ size: "xs",
27
+ decorative: true,
28
+ className: "animate-spin"
29
+ }
30
+ )
31
+ },
32
+ style: {
33
+ "--normal-bg": "var(--popover)",
34
+ "--normal-text": "var(--popover-foreground)",
35
+ "--normal-border": "var(--border)",
36
+ "--border-radius": "var(--radius)"
37
+ }
38
+ }, props)
39
+ );
40
+ };
41
+ var themedStyle = {
42
+ "--normal-bg": "var(--popover)",
43
+ "--normal-text": "var(--popover-foreground)",
44
+ "--normal-border": "var(--border)"
45
+ };
46
+ var cycleToast = {
47
+ /** Green — positive feedback (saved, completed, success) */
48
+ positive: (message, options) => {
49
+ var _a;
50
+ return toast.success(message, __spreadProps(__spreadValues({}, options), {
51
+ style: __spreadValues(__spreadValues({}, themedStyle), options == null ? void 0 : options.style),
52
+ classNames: __spreadProps(__spreadValues({}, options == null ? void 0 : options.classNames), {
53
+ toast: cn("theme-positive", (_a = options == null ? void 0 : options.classNames) == null ? void 0 : _a.toast)
54
+ })
55
+ }));
56
+ },
57
+ /** Red — critical error (failed, deleted, destructive) */
58
+ critical: (message, options) => {
59
+ var _a;
60
+ return toast.error(message, __spreadProps(__spreadValues({}, options), {
61
+ style: __spreadValues(__spreadValues({}, themedStyle), options == null ? void 0 : options.style),
62
+ classNames: __spreadProps(__spreadValues({}, options == null ? void 0 : options.classNames), {
63
+ toast: cn("theme-critical", (_a = options == null ? void 0 : options.classNames) == null ? void 0 : _a.toast)
64
+ })
65
+ }));
66
+ },
67
+ /** Amber — warning (limit reached, attention needed) */
68
+ warning: (message, options) => {
69
+ var _a;
70
+ return toast.warning(message, __spreadProps(__spreadValues({}, options), {
71
+ style: __spreadValues(__spreadValues({}, themedStyle), options == null ? void 0 : options.style),
72
+ classNames: __spreadProps(__spreadValues({}, options == null ? void 0 : options.classNames), {
73
+ toast: cn("theme-warning", (_a = options == null ? void 0 : options.classNames) == null ? void 0 : _a.toast)
74
+ })
75
+ }));
76
+ },
77
+ /** Blue (Class) — informational (updates, tips, contextual info) */
78
+ info: (message, options) => {
79
+ var _a;
80
+ return toast.info(message, __spreadProps(__spreadValues({}, options), {
81
+ style: __spreadValues(__spreadValues({}, themedStyle), options == null ? void 0 : options.style),
82
+ classNames: __spreadProps(__spreadValues({}, options == null ? void 0 : options.classNames), {
83
+ toast: cn("theme-class", (_a = options == null ? void 0 : options.classNames) == null ? void 0 : _a.toast)
84
+ })
85
+ }));
86
+ }
87
+ };
88
+
89
+ export { Toaster, cycleToast };
90
+ //# sourceMappingURL=chunk-RI3ULQHH.js.map
91
+ //# sourceMappingURL=chunk-RI3ULQHH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/ui/sonner.tsx"],"names":["Sonner"],"mappings":"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","file":"chunk-RI3ULQHH.js","sourcesContent":["\"use client\"\n\nimport { useTheme } from \"next-themes\"\nimport { Toaster as Sonner, toast, type ToasterProps } from \"sonner\"\nimport {\n CircleCheck,\n Info,\n Loader2,\n OctagonX,\n TriangleAlert,\n} from \"lucide-react\"\nimport { CycleIcon } from \"@/components/icons\"\nimport { cn } from \"@/lib/utils\"\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n const { theme = \"system\" } = useTheme()\n\n return (\n <Sonner\n theme={theme as ToasterProps[\"theme\"]}\n className=\"toaster group\"\n icons={{\n success: <CycleIcon icon={CircleCheck} size=\"xs\" decorative />,\n info: <CycleIcon icon={Info} size=\"xs\" decorative />,\n warning: <CycleIcon icon={TriangleAlert} size=\"xs\" decorative />,\n error: <CycleIcon icon={OctagonX} size=\"xs\" decorative />,\n loading: (\n <CycleIcon\n icon={Loader2}\n size=\"xs\"\n decorative\n className=\"animate-spin\"\n />\n ),\n }}\n style={\n {\n \"--normal-bg\": \"var(--popover)\",\n \"--normal-text\": \"var(--popover-foreground)\",\n \"--normal-border\": \"var(--border)\",\n \"--border-radius\": \"var(--radius)\",\n } as React.CSSProperties\n }\n {...props}\n />\n )\n}\n\n/**\n * Cycle-themed toast helpers.\n *\n * These wrap `sonner.toast` with Cycle semantic colors:\n * - `cycleToast.positive(...)` — green/success feedback\n * - `cycleToast.critical(...)` — red/error feedback\n * - `cycleToast.warning(...)` — amber/warning feedback\n *\n * Each applies the `.theme-*` class AND redefines `--normal-bg/text/border`\n * on the toast element so Sonner picks up the themed token values.\n */\n\ntype ToastMessage = string | React.ReactNode\ntype ToastOptions = Parameters<typeof toast>[1]\n\n/**\n * Style override that re-binds Sonner's CSS variables on the toast element itself.\n * Combined with `.theme-*` classNames, this makes `var(--popover)` resolve\n * in the toast's own scope (where the theme redefines the tokens).\n */\nconst themedStyle = {\n \"--normal-bg\": \"var(--popover)\",\n \"--normal-text\": \"var(--popover-foreground)\",\n \"--normal-border\": \"var(--border)\",\n} as React.CSSProperties\n\nconst cycleToast = {\n /** Green — positive feedback (saved, completed, success) */\n positive: (message: ToastMessage, options?: ToastOptions) =>\n toast.success(message, {\n ...options,\n style: { ...themedStyle, ...options?.style },\n classNames: {\n ...options?.classNames,\n toast: cn(\"theme-positive\", options?.classNames?.toast),\n },\n }),\n\n /** Red — critical error (failed, deleted, destructive) */\n critical: (message: ToastMessage, options?: ToastOptions) =>\n toast.error(message, {\n ...options,\n style: { ...themedStyle, ...options?.style },\n classNames: {\n ...options?.classNames,\n toast: cn(\"theme-critical\", options?.classNames?.toast),\n },\n }),\n\n /** Amber — warning (limit reached, attention needed) */\n warning: (message: ToastMessage, options?: ToastOptions) =>\n toast.warning(message, {\n ...options,\n style: { ...themedStyle, ...options?.style },\n classNames: {\n ...options?.classNames,\n toast: cn(\"theme-warning\", options?.classNames?.toast),\n },\n }),\n\n /** Blue (Class) — informational (updates, tips, contextual info) */\n info: (message: ToastMessage, options?: ToastOptions) =>\n toast.info(message, {\n ...options,\n style: { ...themedStyle, ...options?.style },\n classNames: {\n ...options?.classNames,\n toast: cn(\"theme-class\", options?.classNames?.toast),\n },\n }),\n}\n\nexport { Toaster, cycleToast }\n"]}