erp-pro-ui 0.1.2 → 0.1.3

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 (183) hide show
  1. package/dist/calendar.cjs +1 -1
  2. package/dist/calendar.mjs +1 -1
  3. package/dist/card.cjs +1 -1
  4. package/dist/card.mjs +1 -1
  5. package/dist/carousel.cjs +1 -1
  6. package/dist/carousel.mjs +1 -1
  7. package/dist/catalog.cjs +6 -0
  8. package/dist/catalog.cjs.map +1 -1
  9. package/dist/catalog.d.ts +11 -1
  10. package/dist/catalog.d.ts.map +1 -1
  11. package/dist/catalog.mjs +6 -0
  12. package/dist/catalog.mjs.map +1 -1
  13. package/dist/charts.cjs +2 -1
  14. package/dist/charts.mjs +2 -2
  15. package/dist/checkbox.cjs +1 -1
  16. package/dist/checkbox.mjs +1 -1
  17. package/dist/chip.cjs +1 -1
  18. package/dist/chip.mjs +1 -1
  19. package/dist/chroma-grid.cjs +1 -1
  20. package/dist/chroma-grid.mjs +1 -1
  21. package/dist/chunks/{calendar-xrGmvukr.cjs → calendar-Cpp_Rc7T.cjs} +58 -17
  22. package/dist/chunks/calendar-Cpp_Rc7T.cjs.map +1 -0
  23. package/dist/chunks/{calendar-BarcG6x_.mjs → calendar-DrCgT_pj.mjs} +58 -17
  24. package/dist/chunks/calendar-DrCgT_pj.mjs.map +1 -0
  25. package/dist/chunks/{card-gt-HZh0h.cjs → card-C5_tFK6Q.cjs} +1 -1
  26. package/dist/chunks/{card-gt-HZh0h.cjs.map → card-C5_tFK6Q.cjs.map} +1 -1
  27. package/dist/chunks/{card-CcIF6z2H.mjs → card-Dh8wNv8N.mjs} +1 -1
  28. package/dist/chunks/{card-CcIF6z2H.mjs.map → card-Dh8wNv8N.mjs.map} +1 -1
  29. package/dist/chunks/{carousel-DJdqBVRK.mjs → carousel-BYwqI4cA.mjs} +1 -1
  30. package/dist/chunks/{carousel-DJdqBVRK.mjs.map → carousel-BYwqI4cA.mjs.map} +1 -1
  31. package/dist/chunks/{carousel-Cq5uwqQt.cjs → carousel-C1338X8h.cjs} +1 -1
  32. package/dist/chunks/{carousel-Cq5uwqQt.cjs.map → carousel-C1338X8h.cjs.map} +1 -1
  33. package/dist/chunks/{charts-DugYWvEf.mjs → charts-BYvM4TMG.mjs} +371 -117
  34. package/dist/chunks/charts-BYvM4TMG.mjs.map +1 -0
  35. package/dist/chunks/{charts-BpElnsoR.cjs → charts-DbxyHtlX.cjs} +375 -115
  36. package/dist/chunks/charts-DbxyHtlX.cjs.map +1 -0
  37. package/dist/chunks/{checkbox-yHuSw-hV.cjs → checkbox-CxOcjoGP.cjs} +1 -1
  38. package/dist/chunks/{checkbox-yHuSw-hV.cjs.map → checkbox-CxOcjoGP.cjs.map} +1 -1
  39. package/dist/chunks/{checkbox-DvwlGwWe.mjs → checkbox-Pr49U9F1.mjs} +1 -1
  40. package/dist/chunks/{checkbox-DvwlGwWe.mjs.map → checkbox-Pr49U9F1.mjs.map} +1 -1
  41. package/dist/chunks/{chip-DcBji__g.cjs → chip-B4ol1yPk.cjs} +1 -1
  42. package/dist/chunks/{chip-DcBji__g.cjs.map → chip-B4ol1yPk.cjs.map} +1 -1
  43. package/dist/chunks/{chip-BGSUmnlO.mjs → chip-DdnBLdpl.mjs} +1 -1
  44. package/dist/chunks/{chip-BGSUmnlO.mjs.map → chip-DdnBLdpl.mjs.map} +1 -1
  45. package/dist/chunks/{chroma-grid-Cdeql_2C.mjs → chroma-grid-BAo6V5A7.mjs} +1 -1
  46. package/dist/chunks/{chroma-grid-Cdeql_2C.mjs.map → chroma-grid-BAo6V5A7.mjs.map} +1 -1
  47. package/dist/chunks/{chroma-grid-9E9j1s9I.cjs → chroma-grid-CIk0dsNS.cjs} +1 -1
  48. package/dist/chunks/{chroma-grid-9E9j1s9I.cjs.map → chroma-grid-CIk0dsNS.cjs.map} +1 -1
  49. package/dist/chunks/{color-palette-BLvDnCOD.cjs → color-palette-2TuEMkAn.cjs} +1 -1
  50. package/dist/chunks/{color-palette-BLvDnCOD.cjs.map → color-palette-2TuEMkAn.cjs.map} +1 -1
  51. package/dist/chunks/{color-palette-CXlCDiZz.mjs → color-palette-euKQMWlV.mjs} +1 -1
  52. package/dist/chunks/{color-palette-CXlCDiZz.mjs.map → color-palette-euKQMWlV.mjs.map} +1 -1
  53. package/dist/chunks/{combobox-BXu3s0dt.cjs → combobox-CwGubKTt.cjs} +2 -2
  54. package/dist/chunks/combobox-CwGubKTt.cjs.map +1 -0
  55. package/dist/chunks/{combobox-CjK-qG4k.mjs → combobox-DrFmkI0F.mjs} +2 -2
  56. package/dist/chunks/combobox-DrFmkI0F.mjs.map +1 -0
  57. package/dist/chunks/{data-table-DyEQn9Yj.mjs → data-table-Bo80m7qV.mjs} +8 -8
  58. package/dist/chunks/{data-table-DyEQn9Yj.mjs.map → data-table-Bo80m7qV.mjs.map} +1 -1
  59. package/dist/chunks/{data-table-9HELVsYR.cjs → data-table-W1sK5tkL.cjs} +8 -8
  60. package/dist/chunks/{data-table-9HELVsYR.cjs.map → data-table-W1sK5tkL.cjs.map} +1 -1
  61. package/dist/chunks/{date-picker-D8gaaMlJ.mjs → date-picker-CNPORxhv.mjs} +87 -17
  62. package/dist/chunks/date-picker-CNPORxhv.mjs.map +1 -0
  63. package/dist/chunks/{date-picker-W9om1j7A.cjs → date-picker-CZo68Fkl.cjs} +87 -17
  64. package/dist/chunks/date-picker-CZo68Fkl.cjs.map +1 -0
  65. package/dist/chunks/input-BWM6G7jq.cjs +117 -0
  66. package/dist/chunks/input-BWM6G7jq.cjs.map +1 -0
  67. package/dist/chunks/input-Bt_r_B_c.mjs +105 -0
  68. package/dist/chunks/input-Bt_r_B_c.mjs.map +1 -0
  69. package/dist/chunks/{multi-select-combobox-ELSH_Xr4.mjs → multi-select-combobox-D46M-AN9.mjs} +2 -2
  70. package/dist/chunks/multi-select-combobox-D46M-AN9.mjs.map +1 -0
  71. package/dist/chunks/{multi-select-combobox-UW0X15W7.cjs → multi-select-combobox-dS6bJE_e.cjs} +2 -2
  72. package/dist/chunks/multi-select-combobox-dS6bJE_e.cjs.map +1 -0
  73. package/dist/chunks/{otp-input-B6zzOEqw.cjs → otp-input-DSW9Ca_D.cjs} +2 -2
  74. package/dist/chunks/otp-input-DSW9Ca_D.cjs.map +1 -0
  75. package/dist/chunks/{otp-input-Bg4nQG6x.mjs → otp-input-DeAi4nJ_.mjs} +2 -2
  76. package/dist/chunks/otp-input-DeAi4nJ_.mjs.map +1 -0
  77. package/dist/chunks/{progress-bar-C9FZDrju.mjs → progress-bar-B9sy7WBT.mjs} +1 -1
  78. package/dist/chunks/{progress-bar-C9FZDrju.mjs.map → progress-bar-B9sy7WBT.mjs.map} +1 -1
  79. package/dist/chunks/{progress-bar-C1OvQ-NI.cjs → progress-bar-BdvQtpm3.cjs} +1 -1
  80. package/dist/chunks/{progress-bar-C1OvQ-NI.cjs.map → progress-bar-BdvQtpm3.cjs.map} +1 -1
  81. package/dist/chunks/select-B8UQ6Uq5.mjs +170 -0
  82. package/dist/chunks/select-B8UQ6Uq5.mjs.map +1 -0
  83. package/dist/chunks/select-CCUSMvfS.cjs +176 -0
  84. package/dist/chunks/select-CCUSMvfS.cjs.map +1 -0
  85. package/dist/chunks/stepper-D6qQbZdg.cjs +642 -0
  86. package/dist/chunks/stepper-D6qQbZdg.cjs.map +1 -0
  87. package/dist/chunks/stepper-DUknuW2E.mjs +618 -0
  88. package/dist/chunks/stepper-DUknuW2E.mjs.map +1 -0
  89. package/dist/chunks/{textarea-CU5C-Zw9.mjs → textarea-Blky_fLK.mjs} +2 -2
  90. package/dist/chunks/{textarea-CU5C-Zw9.mjs.map → textarea-Blky_fLK.mjs.map} +1 -1
  91. package/dist/chunks/{textarea-CAUsyu4-.cjs → textarea-ok_NlE2p.cjs} +2 -2
  92. package/dist/chunks/textarea-ok_NlE2p.cjs.map +1 -0
  93. package/dist/color-palette.cjs +1 -1
  94. package/dist/color-palette.mjs +1 -1
  95. package/dist/colors.css +3 -0
  96. package/dist/combobox.cjs +1 -1
  97. package/dist/combobox.mjs +1 -1
  98. package/dist/components/data-display/charts/AreaChart.d.ts.map +1 -1
  99. package/dist/components/data-display/charts/BarChart.d.ts +1 -0
  100. package/dist/components/data-display/charts/BarChart.d.ts.map +1 -1
  101. package/dist/components/data-display/charts/NeonLineChart.d.ts.map +1 -1
  102. package/dist/components/data-display/charts/PieChart.d.ts +18 -2
  103. package/dist/components/data-display/charts/PieChart.d.ts.map +1 -1
  104. package/dist/components/data-display/charts/PositiveNegativeBarChart.d.ts +21 -0
  105. package/dist/components/data-display/charts/PositiveNegativeBarChart.d.ts.map +1 -0
  106. package/dist/components/data-display/charts/StackedBarChart.d.ts.map +1 -1
  107. package/dist/components/data-display/charts/ThinBreakdownBar.d.ts +3 -0
  108. package/dist/components/data-display/charts/ThinBreakdownBar.d.ts.map +1 -1
  109. package/dist/components/data-display/charts/chartStyles.d.ts +24 -0
  110. package/dist/components/data-display/charts/chartStyles.d.ts.map +1 -0
  111. package/dist/components/data-display/charts/index.d.ts +2 -0
  112. package/dist/components/data-display/charts/index.d.ts.map +1 -1
  113. package/dist/components/forms/calendar/Calendar.d.ts.map +1 -1
  114. package/dist/components/forms/date-picker/DatePicker.d.ts.map +1 -1
  115. package/dist/components/forms/input/Input.d.ts.map +1 -1
  116. package/dist/components/forms/input/types.d.ts +5 -0
  117. package/dist/components/forms/input/types.d.ts.map +1 -1
  118. package/dist/components/forms/select/Select.d.ts.map +1 -1
  119. package/dist/components/forms/select/types.d.ts +7 -1
  120. package/dist/components/forms/select/types.d.ts.map +1 -1
  121. package/dist/components/navigation/stepper/Stepper1.d.ts +4 -0
  122. package/dist/components/navigation/stepper/Stepper1.d.ts.map +1 -0
  123. package/dist/components/navigation/stepper/Stepper2.d.ts +5 -0
  124. package/dist/components/navigation/stepper/Stepper2.d.ts.map +1 -0
  125. package/dist/components/navigation/stepper/index.d.ts +4 -1
  126. package/dist/components/navigation/stepper/index.d.ts.map +1 -1
  127. package/dist/components/navigation/stepper/types.d.ts +85 -0
  128. package/dist/components/navigation/stepper/types.d.ts.map +1 -1
  129. package/dist/data-table.cjs +1 -1
  130. package/dist/data-table.mjs +1 -1
  131. package/dist/date-picker.cjs +1 -1
  132. package/dist/date-picker.mjs +1 -1
  133. package/dist/docs.cjs +10 -0
  134. package/dist/docs.cjs.map +1 -1
  135. package/dist/docs.d.ts.map +1 -1
  136. package/dist/docs.mjs +10 -0
  137. package/dist/docs.mjs.map +1 -1
  138. package/dist/foundation.css +7 -0
  139. package/dist/index.cjs +23 -18
  140. package/dist/index.d.ts +5 -3
  141. package/dist/index.d.ts.map +1 -1
  142. package/dist/index.mjs +19 -19
  143. package/dist/input.cjs +1 -1
  144. package/dist/input.mjs +1 -1
  145. package/dist/multi-select-combobox.cjs +1 -1
  146. package/dist/multi-select-combobox.mjs +1 -1
  147. package/dist/otp-input.cjs +1 -1
  148. package/dist/otp-input.mjs +1 -1
  149. package/dist/progress-bar.cjs +1 -1
  150. package/dist/progress-bar.mjs +1 -1
  151. package/dist/select.cjs +1 -1
  152. package/dist/select.mjs +1 -1
  153. package/dist/stepper.cjs +5 -1
  154. package/dist/stepper.mjs +2 -2
  155. package/dist/textarea.cjs +1 -1
  156. package/dist/textarea.mjs +1 -1
  157. package/dist/tokens.css +11 -2
  158. package/package.json +4 -4
  159. package/dist/chunks/calendar-BarcG6x_.mjs.map +0 -1
  160. package/dist/chunks/calendar-xrGmvukr.cjs.map +0 -1
  161. package/dist/chunks/charts-BpElnsoR.cjs.map +0 -1
  162. package/dist/chunks/charts-DugYWvEf.mjs.map +0 -1
  163. package/dist/chunks/combobox-BXu3s0dt.cjs.map +0 -1
  164. package/dist/chunks/combobox-CjK-qG4k.mjs.map +0 -1
  165. package/dist/chunks/date-picker-D8gaaMlJ.mjs.map +0 -1
  166. package/dist/chunks/date-picker-W9om1j7A.cjs.map +0 -1
  167. package/dist/chunks/input-D9qZNqXV.cjs +0 -99
  168. package/dist/chunks/input-D9qZNqXV.cjs.map +0 -1
  169. package/dist/chunks/input-wNqevfQ4.mjs +0 -87
  170. package/dist/chunks/input-wNqevfQ4.mjs.map +0 -1
  171. package/dist/chunks/multi-select-combobox-ELSH_Xr4.mjs.map +0 -1
  172. package/dist/chunks/multi-select-combobox-UW0X15W7.cjs.map +0 -1
  173. package/dist/chunks/otp-input-B6zzOEqw.cjs.map +0 -1
  174. package/dist/chunks/otp-input-Bg4nQG6x.mjs.map +0 -1
  175. package/dist/chunks/select-D71tk6-I.mjs +0 -152
  176. package/dist/chunks/select-D71tk6-I.mjs.map +0 -1
  177. package/dist/chunks/select-WC_kPqUP.cjs +0 -158
  178. package/dist/chunks/select-WC_kPqUP.cjs.map +0 -1
  179. package/dist/chunks/stepper-D4yQsQB0.mjs +0 -261
  180. package/dist/chunks/stepper-D4yQsQB0.mjs.map +0 -1
  181. package/dist/chunks/stepper-fY-Sx72k.cjs +0 -267
  182. package/dist/chunks/stepper-fY-Sx72k.cjs.map +0 -1
  183. package/dist/chunks/textarea-CAUsyu4-.cjs.map +0 -1
@@ -1,158 +0,0 @@
1
- require("./chunk-B_GkZjkl.cjs");
2
- const require_utils = require("./utils-B4SmmY4J.cjs");
3
- const require_icons = require("./icons-BxIzP2jd.cjs");
4
- let react = require("react");
5
- let react_jsx_runtime = require("react/jsx-runtime");
6
- let framer_motion = require("framer-motion");
7
- //#region src/components/forms/select/Select.tsx
8
- var Select = (0, react.forwardRef)(({ className = "", containerClassName = "", triggerClassName = "", label, error, helperText, options, value, onChange, placeholder = "Select...", disabled, bgClassName = "bg-background-secondary", ...props }, ref) => {
9
- const [open, setOpen] = (0, react.useState)(false);
10
- const [visible, setVisible] = (0, react.useState)(false);
11
- const containerRef = (0, react.useRef)(null);
12
- const hiddenSelectRef = (0, react.useRef)(null);
13
- const mouseX = (0, framer_motion.useMotionValue)(0);
14
- const mouseY = (0, framer_motion.useMotionValue)(0);
15
- const radius = 100;
16
- (0, react.useEffect)(() => {
17
- if (ref && typeof ref === "function") ref(hiddenSelectRef.current);
18
- else if (ref) ref.current = hiddenSelectRef.current;
19
- }, [ref]);
20
- (0, react.useEffect)(() => {
21
- const handleClick = (e) => {
22
- if (containerRef.current && !containerRef.current.contains(e.target)) setOpen(false);
23
- };
24
- if (open) document.addEventListener("mousedown", handleClick);
25
- return () => document.removeEventListener("mousedown", handleClick);
26
- }, [open]);
27
- const handleMouseMove = (event) => {
28
- const { left, top } = event.currentTarget.getBoundingClientRect();
29
- mouseX.set(event.clientX - left);
30
- mouseY.set(event.clientY - top);
31
- };
32
- const selectedOption = options.find((opt) => opt.value === value);
33
- const handleSelect = (optValue) => {
34
- if (onChange && hiddenSelectRef.current) onChange({
35
- target: {
36
- value: optValue,
37
- name: props.name
38
- },
39
- currentTarget: {
40
- value: optValue,
41
- name: props.name
42
- }
43
- });
44
- setOpen(false);
45
- };
46
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
47
- className: require_utils.mergeClassNames("w-full min-w-48", containerClassName),
48
- children: [
49
- label && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("label", {
50
- className: "mb-2 block text-sm leading-none font-medium text-foreground peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
51
- children: label
52
- }),
53
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("select", {
54
- ref: hiddenSelectRef,
55
- className: "sr-only",
56
- value,
57
- onChange,
58
- disabled,
59
- ...props,
60
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
61
- value: "",
62
- children: placeholder
63
- }), options.map((option) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
64
- value: option.value,
65
- children: option.label
66
- }, option.value))]
67
- }),
68
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
69
- ref: containerRef,
70
- className: require_utils.mergeClassNames("relative w-full", className),
71
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(framer_motion.motion.div, {
72
- style: { backgroundImage: disabled ? "none" : framer_motion.useMotionTemplate`
73
- radial-gradient(
74
- ${visible ? `${radius}px` : "0px"} circle at ${mouseX}px ${mouseY}px,
75
- var(--ds-color-accent),
76
- transparent 90%
77
- )
78
- ` },
79
- onMouseMove: !disabled ? handleMouseMove : void 0,
80
- onMouseEnter: !disabled ? () => setVisible(true) : void 0,
81
- onMouseLeave: !disabled ? () => setVisible(false) : void 0,
82
- className: require_utils.mergeClassNames("group/select rounded-lg p-[2px] transition duration-300 hover:border-accent", disabled ? "bg-muted border-none" : error ? "border-destructive" : "border-border"),
83
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
84
- className: require_utils.mergeClassNames("shadow-input flex h-10 w-full cursor-pointer items-center justify-between rounded-md border border-input px-3 py-2 text-sm transition duration-400 ease-in-out group-hover/select:shadow-none", bgClassName, disabled ? "cursor-not-allowed opacity-50" : "text-foreground", error && "border-destructive text-destructive focus-visible:ring-destructive", triggerClassName),
85
- onClick: () => {
86
- if (!disabled) setOpen((o) => !o);
87
- },
88
- onKeyDown: (event) => {
89
- if (disabled) return;
90
- if (event.key === "Enter" || event.key === " ") {
91
- event.preventDefault();
92
- setOpen((current) => !current);
93
- }
94
- if (event.key === "Escape") setOpen(false);
95
- },
96
- role: "button",
97
- tabIndex: disabled ? -1 : 0,
98
- "aria-haspopup": "listbox",
99
- "aria-expanded": open,
100
- children: [selectedOption ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
101
- className: "flex-1 truncate text-foreground",
102
- children: selectedOption.label
103
- }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
104
- className: "flex-1 text-muted-foreground",
105
- children: placeholder
106
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
107
- className: require_utils.mergeClassNames("ml-2 text-muted-foreground transition-transform duration-300", open ? "rotate-180" : "rotate-0"),
108
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_icons.ChevronDownIcon, {
109
- width: 24,
110
- height: 24,
111
- color: "currentColor",
112
- className: "h-5 w-5"
113
- })
114
- })]
115
- })
116
- }), open && !disabled && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
117
- className: require_utils.mergeClassNames("absolute right-0 left-0 z-20 mt-1 flex max-h-60 flex-col overflow-auto rounded-lg border border-border bg-background-secondary shadow-3 backdrop-blur-xl transition"),
118
- children: [options.length === 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
119
- className: "px-3 py-2 text-muted-foreground",
120
- children: "No options"
121
- }), options.map((opt) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
122
- className: require_utils.mergeClassNames("mx-1 my-1 flex cursor-pointer items-center gap-2 rounded-md px-3 py-2 text-sm text-foreground transition", opt.value === value ? "bg-accent-subtle text-accent font-semibold" : "", "hover:bg-accent hover:text-on-accent"),
123
- onClick: () => handleSelect(opt.value),
124
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
125
- className: "flex w-5 items-center justify-center",
126
- children: opt.value === value && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_icons.CheckIcon, {
127
- className: "text-accent",
128
- width: 18,
129
- height: 18
130
- })
131
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
132
- className: "min-w-0 flex-1 truncate",
133
- children: opt.label
134
- })]
135
- }, opt.value))]
136
- })]
137
- }),
138
- error && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
139
- className: "mt-1 text-sm font-medium text-destructive",
140
- children: error
141
- }),
142
- helperText && !error && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
143
- className: "mt-1 text-sm text-muted-foreground",
144
- children: helperText
145
- })
146
- ]
147
- });
148
- });
149
- Select.displayName = "Select";
150
- //#endregion
151
- Object.defineProperty(exports, "Select", {
152
- enumerable: true,
153
- get: function() {
154
- return Select;
155
- }
156
- });
157
-
158
- //# sourceMappingURL=select-WC_kPqUP.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"select-WC_kPqUP.cjs","names":[],"sources":["../../src/components/forms/select/Select.tsx"],"sourcesContent":["import type { SelectProps } from \"./types\";\nimport { forwardRef, useState, useRef, useEffect } from \"react\";\nimport { motion, useMotionTemplate, useMotionValue } from \"framer-motion\";\n\nimport { CheckIcon, ChevronDownIcon } from \"../../icons\";\nimport { mergeClassNames } from \"../../../utils\";\n\nexport const Select = forwardRef<HTMLSelectElement, SelectProps>(\n (\n {\n className = \"\",\n containerClassName = \"\",\n triggerClassName = \"\",\n label,\n error,\n helperText,\n options,\n value,\n onChange,\n placeholder = \"Select...\",\n disabled,\n bgClassName = \"bg-background-secondary\",\n ...props\n },\n ref,\n ) => {\n const [open, setOpen] = useState(false);\n const [visible, setVisible] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n const hiddenSelectRef = useRef<HTMLSelectElement>(null);\n const mouseX = useMotionValue(0);\n const mouseY = useMotionValue(0);\n const radius = 100;\n\n // Combine refs\n useEffect(() => {\n if (ref && typeof ref === \"function\") {\n ref(hiddenSelectRef.current);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLSelectElement | null>).current =\n hiddenSelectRef.current;\n }\n }, [ref]);\n\n // Close dropdown on outside click\n useEffect(() => {\n const handleClick = (e: MouseEvent) => {\n if (\n containerRef.current &&\n !containerRef.current.contains(e.target as Node)\n ) {\n setOpen(false);\n }\n };\n if (open) {\n document.addEventListener(\"mousedown\", handleClick);\n }\n return () => document.removeEventListener(\"mousedown\", handleClick);\n }, [open]);\n\n const handleMouseMove = (event: React.MouseEvent<HTMLDivElement>) => {\n const { left, top } = event.currentTarget.getBoundingClientRect();\n mouseX.set(event.clientX - left);\n mouseY.set(event.clientY - top);\n };\n\n const selectedOption = options.find((opt) => opt.value === value);\n\n const handleSelect = (optValue: string) => {\n // Trigger onChange with a synthetic event\n if (onChange && hiddenSelectRef.current) {\n const event = {\n target: { value: optValue, name: props.name },\n currentTarget: { value: optValue, name: props.name },\n } as React.ChangeEvent<HTMLSelectElement>;\n onChange(event);\n }\n setOpen(false);\n };\n\n return (\n <div className={mergeClassNames(\"w-full min-w-48\", containerClassName)}>\n {label && (\n <label className=\"mb-2 block text-sm leading-none font-medium text-foreground peer-disabled:cursor-not-allowed peer-disabled:opacity-70\">\n {label}\n </label>\n )}\n\n {/* Hidden native select for form compatibility */}\n <select\n ref={hiddenSelectRef}\n className=\"sr-only\"\n value={value}\n onChange={onChange}\n disabled={disabled}\n {...props}\n >\n <option value=\"\">{placeholder}</option>\n {options.map((option) => (\n <option key={option.value} value={option.value}>\n {option.label}\n </option>\n ))}\n </select>\n\n {/* Custom styled dropdown */}\n <div\n ref={containerRef}\n className={mergeClassNames(\"relative w-full\", className)}\n >\n <motion.div\n style={{\n backgroundImage: disabled\n ? \"none\"\n : useMotionTemplate`\n radial-gradient(\n ${\n visible ? `${radius}px` : \"0px\"\n } circle at ${mouseX}px ${mouseY}px,\n var(--ds-color-accent),\n transparent 90%\n )\n `,\n }}\n onMouseMove={!disabled ? handleMouseMove : undefined}\n onMouseEnter={!disabled ? () => setVisible(true) : undefined}\n onMouseLeave={!disabled ? () => setVisible(false) : undefined}\n className={mergeClassNames(\n \"group/select rounded-lg p-[2px] transition duration-300 hover:border-accent\",\n disabled\n ? \"bg-muted border-none\"\n : error\n ? \"border-destructive\"\n : \"border-border\",\n )}\n >\n <div\n className={mergeClassNames(\n \"shadow-input flex h-10 w-full cursor-pointer items-center justify-between rounded-md border border-input px-3 py-2 text-sm transition duration-400 ease-in-out group-hover/select:shadow-none\",\n bgClassName,\n disabled ? \"cursor-not-allowed opacity-50\" : \"text-foreground\",\n error &&\n \"border-destructive text-destructive focus-visible:ring-destructive\",\n triggerClassName,\n )}\n onClick={() => {\n if (!disabled) {\n setOpen((o) => !o);\n }\n }}\n onKeyDown={(event) => {\n if (disabled) {\n return;\n }\n\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n setOpen((current) => !current);\n }\n\n if (event.key === \"Escape\") {\n setOpen(false);\n }\n }}\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n >\n {selectedOption ? (\n <span className=\"flex-1 truncate text-foreground\">\n {selectedOption.label}\n </span>\n ) : (\n <span className=\"flex-1 text-muted-foreground\">\n {placeholder}\n </span>\n )}\n <span\n className={mergeClassNames(\n \"ml-2 text-muted-foreground transition-transform duration-300\",\n open ? \"rotate-180\" : \"rotate-0\",\n )}\n >\n <ChevronDownIcon\n width={24}\n height={24}\n color=\"currentColor\"\n className=\"h-5 w-5\"\n />\n </span>\n </div>\n </motion.div>\n\n {open && !disabled && (\n <div\n className={mergeClassNames(\n \"absolute right-0 left-0 z-20 mt-1 flex max-h-60 flex-col overflow-auto rounded-lg border border-border bg-background-secondary shadow-3 backdrop-blur-xl transition\",\n )}\n >\n {options.length === 0 && (\n <div className=\"px-3 py-2 text-muted-foreground\">\n No options\n </div>\n )}\n {options.map((opt) => (\n <div\n key={opt.value}\n className={mergeClassNames(\n \"mx-1 my-1 flex cursor-pointer items-center gap-2 rounded-md px-3 py-2 text-sm text-foreground transition\",\n opt.value === value\n ? \"bg-accent-subtle text-accent font-semibold\"\n : \"\",\n \"hover:bg-accent hover:text-on-accent\",\n )}\n onClick={() => handleSelect(opt.value)}\n >\n <span className=\"flex w-5 items-center justify-center\">\n {opt.value === value && (\n <CheckIcon\n className=\"text-accent\"\n width={18}\n height={18}\n />\n )}\n </span>\n <span className=\"min-w-0 flex-1 truncate\">{opt.label}</span>\n </div>\n ))}\n </div>\n )}\n </div>\n\n {error && (\n <p className=\"mt-1 text-sm font-medium text-destructive\">{error}</p>\n )}\n {helperText && !error && (\n <p className=\"mt-1 text-sm text-muted-foreground\">{helperText}</p>\n )}\n </div>\n );\n },\n);\n\nSelect.displayName = \"Select\";\n"],"mappings":"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"}
@@ -1,261 +0,0 @@
1
- import { n as mergeClassNames } from "./utils-ati1KkDb.mjs";
2
- import { J as CheckIcon, q as CloseIcon } from "./icons-DuumN7z-.mjs";
3
- import { jsx, jsxs } from "react/jsx-runtime";
4
- import { AnimatePresence, motion } from "framer-motion";
5
- //#region src/components/navigation/stepper/Stepper.tsx
6
- var sizeConfig = {
7
- sm: {
8
- indicator: "w-8 h-8",
9
- icon: "w-4 h-4",
10
- text: "text-xs",
11
- connectorThickness: "2px"
12
- },
13
- md: {
14
- indicator: "w-10 h-10",
15
- icon: "w-5 h-5",
16
- text: "text-sm",
17
- connectorThickness: "2px"
18
- },
19
- lg: {
20
- indicator: "w-12 h-12",
21
- icon: "w-6 h-6",
22
- text: "text-base",
23
- connectorThickness: "4px"
24
- }
25
- };
26
- var getVariantStyles = (variant, status) => {
27
- return {
28
- default: {
29
- completed: "bg-accent text-on-accent shadow-md shadow-accent/25",
30
- current: "bg-accent text-on-accent ring-4 ring-focus/40 shadow-lg shadow-accent/30",
31
- upcoming: "bg-neutral-200 text-neutral-500 dark:bg-neutral-700 dark:text-neutral-400",
32
- error: "bg-red-500 text-white ring-4 ring-red-500/30"
33
- },
34
- glass: {
35
- completed: "bg-accent/85 text-on-accent backdrop-blur-xl border border-accent/30 shadow-lg shadow-accent/20",
36
- current: "bg-accent/90 text-on-accent backdrop-blur-xl border-2 border-accent ring-4 ring-focus/30 shadow-xl shadow-accent/30",
37
- upcoming: "bg-white/60 text-neutral-500 backdrop-blur-xl border border-white/40 dark:bg-neutral-800/60 dark:text-neutral-400 dark:border-white/10",
38
- error: "bg-red-500/80 text-white backdrop-blur-xl border border-red-400/30 ring-4 ring-red-500/20"
39
- },
40
- minimal: {
41
- completed: "bg-accent-subtle text-accent",
42
- current: "bg-accent text-on-accent shadow-sm",
43
- upcoming: "bg-transparent text-neutral-400 border-2 border-neutral-300 dark:border-neutral-600",
44
- error: "bg-red-100 text-red-500 dark:bg-red-900/30"
45
- },
46
- outlined: {
47
- completed: "bg-transparent text-accent border-2 border-accent",
48
- current: "bg-accent text-on-accent border-2 border-accent shadow-lg",
49
- upcoming: "bg-transparent text-neutral-400 border-2 border-neutral-300 dark:border-neutral-600",
50
- error: "bg-transparent text-red-500 border-2 border-red-500"
51
- }
52
- }[variant][status];
53
- };
54
- var StepIndicator = ({ step, index, status, size, variant, showNumbers, animated, colors }) => {
55
- const config = sizeConfig[size];
56
- const variantStyles = getVariantStyles(variant, status);
57
- const customColorStyle = colors?.[status] ? {
58
- backgroundColor: colors[status],
59
- borderColor: colors[status]
60
- } : void 0;
61
- const renderContent = () => {
62
- if (step.icon) return /* @__PURE__ */ jsx("span", {
63
- className: config.icon,
64
- children: step.icon
65
- });
66
- if (status === "completed") return /* @__PURE__ */ jsx(CheckIcon, {
67
- className: config.icon,
68
- "aria-hidden": "true"
69
- });
70
- if (status === "error") return /* @__PURE__ */ jsx(CloseIcon, {
71
- className: config.icon,
72
- "aria-hidden": "true"
73
- });
74
- if (showNumbers) return /* @__PURE__ */ jsx("span", {
75
- className: "font-semibold",
76
- children: index + 1
77
- });
78
- return /* @__PURE__ */ jsx("span", { className: mergeClassNames("rounded-full bg-current", size === "sm" ? "w-2 h-2" : "w-3 h-3") });
79
- };
80
- return /* @__PURE__ */ jsx(motion.div, {
81
- className: mergeClassNames("rounded-full flex items-center justify-center transition-all duration-300", config.indicator, variantStyles),
82
- style: customColorStyle,
83
- initial: animated ? {
84
- scale: .8,
85
- opacity: 0
86
- } : void 0,
87
- animate: animated ? {
88
- scale: 1,
89
- opacity: 1
90
- } : void 0,
91
- whileHover: { scale: 1.05 },
92
- whileTap: { scale: .95 },
93
- transition: {
94
- type: "spring",
95
- stiffness: 400,
96
- damping: 17
97
- },
98
- children: /* @__PURE__ */ jsx(AnimatePresence, {
99
- mode: "wait",
100
- children: /* @__PURE__ */ jsx(motion.span, {
101
- initial: animated ? {
102
- scale: 0,
103
- rotate: -180
104
- } : void 0,
105
- animate: animated ? {
106
- scale: 1,
107
- rotate: 0
108
- } : void 0,
109
- exit: animated ? {
110
- scale: 0,
111
- rotate: 180
112
- } : void 0,
113
- transition: { duration: .2 },
114
- children: renderContent()
115
- }, status)
116
- })
117
- });
118
- };
119
- var Stepper = ({ steps, currentStep, onStepClick, orientation = "horizontal", size = "md", variant = "glass", showNumbers = true, clickable = true, showConnector = true, className, connectorClassName, stepClassName, showErrors = false, errorSteps = [], completedSteps, animated = true, colors }) => {
120
- const isVertical = orientation === "vertical";
121
- const config = sizeConfig[size];
122
- const getStepStatus = (index) => {
123
- if (showErrors && errorSteps.includes(index)) return "error";
124
- if (completedSteps) {
125
- if (completedSteps.includes(index)) return "completed";
126
- if (index === currentStep) return "current";
127
- return "upcoming";
128
- }
129
- if (index < currentStep) return "completed";
130
- if (index === currentStep) return "current";
131
- return "upcoming";
132
- };
133
- const handleStepClick = (index) => {
134
- if (!clickable || !onStepClick) return;
135
- if (steps[index].disabled) return;
136
- const status = getStepStatus(index);
137
- if (status === "completed" || status === "current") onStepClick(index);
138
- };
139
- return /* @__PURE__ */ jsxs("div", {
140
- className: mergeClassNames("w-full relative", isVertical ? "flex flex-col" : "flex items-start justify-between", className),
141
- children: [showConnector && (() => {
142
- const paddingValue = variant === "glass" || variant === "outlined" || variant === "minimal" ? 4 : 2;
143
- return /* @__PURE__ */ jsx("div", {
144
- className: mergeClassNames("absolute rounded-full", variant === "glass" ? "bg-white/30 dark:bg-white/10 backdrop-blur-sm" : "bg-neutral-200 dark:bg-neutral-700", connectorClassName),
145
- style: { ...isVertical ? {
146
- top: "0",
147
- bottom: "0",
148
- left: `calc(${paddingValue}px + 1px + ${config.indicator.split(" ")[0].replace("w-", "")} * 0.125rem - ${config.connectorThickness} / 2)`,
149
- width: config.connectorThickness
150
- } : {
151
- left: "0",
152
- right: "0",
153
- top: `calc(${paddingValue}px + 1px + ${config.indicator.split(" ")[1].replace("h-", "")} * 0.125rem - ${config.connectorThickness} / 2)`,
154
- height: config.connectorThickness
155
- } },
156
- children: animated ? /* @__PURE__ */ jsx(motion.div, {
157
- className: "absolute top-0 left-0 bg-accent rounded-full",
158
- initial: { [isVertical ? "height" : "width"]: 0 },
159
- animate: { [isVertical ? "height" : "width"]: `${steps.length > 1 ? Math.min(currentStep, steps.length - 1) / (steps.length - 1) * 100 : 0}%` },
160
- transition: {
161
- duration: .4,
162
- ease: "easeOut"
163
- },
164
- style: {
165
- ...isVertical ? { width: "100%" } : { height: "100%" },
166
- backgroundColor: colors?.connector || colors?.completed
167
- }
168
- }) : /* @__PURE__ */ jsx("div", {
169
- className: "absolute top-0 left-0 bg-accent rounded-full",
170
- style: {
171
- ...isVertical ? {
172
- width: "100%",
173
- height: `${steps.length > 1 ? Math.min(currentStep, steps.length - 1) / (steps.length - 1) * 100 : 0}%`
174
- } : {
175
- height: "100%",
176
- width: `${steps.length > 1 ? Math.min(currentStep, steps.length - 1) / (steps.length - 1) * 100 : 0}%`
177
- },
178
- backgroundColor: colors?.connector || colors?.completed
179
- }
180
- })
181
- });
182
- })(), steps.map((step, index) => {
183
- const status = getStepStatus(index);
184
- const isLast = index === steps.length - 1;
185
- const isClickable = clickable && !step.disabled;
186
- const paddingValue = variant === "glass" || variant === "outlined" || variant === "minimal" ? 4 : 2;
187
- return /* @__PURE__ */ jsxs("div", {
188
- className: mergeClassNames("relative z-10", isVertical ? "flex gap-4 pb-8" : "flex flex-1 flex-col items-center", !isLast && isVertical && "mb-2", isVertical && isLast && "pb-0", stepClassName),
189
- style: { ...!isVertical ? {
190
- flexBasis: 0,
191
- flexGrow: 1,
192
- alignItems: index === 0 ? "flex-start" : isLast ? "flex-end" : "center"
193
- } : {} },
194
- children: [
195
- /* @__PURE__ */ jsx("button", {
196
- type: "button",
197
- onClick: () => handleStepClick(index),
198
- disabled: !isClickable,
199
- className: mergeClassNames("relative z-10 shrink-0 flex items-center justify-center bg-white dark:bg-neutral-900 rounded-full", isClickable ? "cursor-pointer" : "cursor-default", !isVertical && index === 0 && "mx-0", !isVertical && isLast && "mx-0"),
200
- style: { padding: `${paddingValue}px` },
201
- "aria-current": status === "current" ? "step" : void 0,
202
- children: /* @__PURE__ */ jsx(StepIndicator, {
203
- step,
204
- index,
205
- status,
206
- size,
207
- variant,
208
- showNumbers,
209
- animated,
210
- colors
211
- })
212
- }),
213
- /* @__PURE__ */ jsxs(motion.div, {
214
- className: mergeClassNames("mt-2", isVertical ? "flex-1 pb-6" : "text-center px-2", !isVertical && index === 0 && "text-left px-0", !isVertical && isLast && "text-right px-0", isVertical && isLast && "pb-0"),
215
- style: isVertical ? { marginTop: "-4px" } : void 0,
216
- initial: animated ? {
217
- opacity: 0,
218
- y: 10
219
- } : void 0,
220
- animate: animated ? {
221
- opacity: 1,
222
- y: 0
223
- } : void 0,
224
- transition: { delay: index * .1 },
225
- children: [/* @__PURE__ */ jsxs("p", {
226
- className: mergeClassNames("font-medium transition-colors duration-200", config.text, status === "current" ? "text-accent" : status === "completed" ? "text-neutral-700 dark:text-neutral-200" : status === "error" ? "text-red-500" : "text-neutral-500 dark:text-neutral-400"),
227
- children: [step.title, step.optional && /* @__PURE__ */ jsx("span", {
228
- className: "ml-1 text-neutral-400 dark:text-neutral-500 font-normal",
229
- children: "(Optional)"
230
- })]
231
- }), step.description && /* @__PURE__ */ jsx("p", {
232
- className: mergeClassNames("mt-0.5 text-neutral-500 dark:text-neutral-400", size === "sm" ? "text-xs" : "text-xs"),
233
- children: step.description
234
- })]
235
- }),
236
- isVertical && step.content && status === "current" && /* @__PURE__ */ jsx(motion.div, {
237
- initial: {
238
- opacity: 0,
239
- height: 0
240
- },
241
- animate: {
242
- opacity: 1,
243
- height: "auto"
244
- },
245
- exit: {
246
- opacity: 0,
247
- height: 0
248
- },
249
- className: "pl-14 pb-4 w-full",
250
- children: step.content
251
- })
252
- ]
253
- }, step.id);
254
- })]
255
- });
256
- };
257
- Stepper.displayName = "Stepper";
258
- //#endregion
259
- export { Stepper as t };
260
-
261
- //# sourceMappingURL=stepper-D4yQsQB0.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stepper-D4yQsQB0.mjs","names":[],"sources":["../../src/components/navigation/stepper/Stepper.tsx"],"sourcesContent":["import { motion, AnimatePresence } from \"framer-motion\";\n\nimport { CheckIcon, CloseIcon } from \"../../icons\";\nimport { mergeClassNames } from \"../../../utils\";\nimport type {\n StepperProps,\n StepIndicatorProps,\n StepStatus,\n StepperSize,\n StepperVariant,\n} from \"./types\";\n\n// Size configurations for indicators and icons\nconst sizeConfig: Record<\n StepperSize,\n { indicator: string; icon: string; text: string; connectorThickness: string }\n> = {\n sm: {\n indicator: \"w-8 h-8\",\n icon: \"w-4 h-4\",\n text: \"text-xs\",\n connectorThickness: \"2px\",\n },\n md: {\n indicator: \"w-10 h-10\",\n icon: \"w-5 h-5\",\n text: \"text-sm\",\n connectorThickness: \"2px\",\n },\n lg: {\n indicator: \"w-12 h-12\",\n icon: \"w-6 h-6\",\n text: \"text-base\",\n connectorThickness: \"4px\",\n },\n};\n\n// Variant styles for the indicator\nconst getVariantStyles = (variant: StepperVariant, status: StepStatus) => {\n const baseStyles = {\n default: {\n completed: \"bg-accent text-on-accent shadow-md shadow-accent/25\",\n current:\n \"bg-accent text-on-accent ring-4 ring-focus/40 shadow-lg shadow-accent/30\",\n upcoming:\n \"bg-neutral-200 text-neutral-500 dark:bg-neutral-700 dark:text-neutral-400\",\n error: \"bg-red-500 text-white ring-4 ring-red-500/30\",\n },\n glass: {\n completed:\n \"bg-accent/85 text-on-accent backdrop-blur-xl border border-accent/30 shadow-lg shadow-accent/20\",\n current:\n \"bg-accent/90 text-on-accent backdrop-blur-xl border-2 border-accent ring-4 ring-focus/30 shadow-xl shadow-accent/30\",\n upcoming:\n \"bg-white/60 text-neutral-500 backdrop-blur-xl border border-white/40 dark:bg-neutral-800/60 dark:text-neutral-400 dark:border-white/10\",\n error:\n \"bg-red-500/80 text-white backdrop-blur-xl border border-red-400/30 ring-4 ring-red-500/20\",\n },\n minimal: {\n completed: \"bg-accent-subtle text-accent\",\n current: \"bg-accent text-on-accent shadow-sm\",\n upcoming:\n \"bg-transparent text-neutral-400 border-2 border-neutral-300 dark:border-neutral-600\",\n error: \"bg-red-100 text-red-500 dark:bg-red-900/30\",\n },\n outlined: {\n completed: \"bg-transparent text-accent border-2 border-accent\",\n current: \"bg-accent text-on-accent border-2 border-accent shadow-lg\",\n upcoming:\n \"bg-transparent text-neutral-400 border-2 border-neutral-300 dark:border-neutral-600\",\n error: \"bg-transparent text-red-500 border-2 border-red-500\",\n },\n };\n\n return baseStyles[variant][status];\n};\n\n// Step Indicator Component\nconst StepIndicator = ({\n step,\n index,\n status,\n size,\n variant,\n showNumbers,\n animated,\n colors,\n}: StepIndicatorProps) => {\n const config = sizeConfig[size];\n const variantStyles = getVariantStyles(variant, status);\n\n // Custom color overrides\n const customColorStyle = colors?.[status]\n ? { backgroundColor: colors[status], borderColor: colors[status] }\n : undefined;\n\n const renderContent = () => {\n if (step.icon) {\n return <span className={config.icon}>{step.icon}</span>;\n }\n\n if (status === \"completed\") {\n return <CheckIcon className={config.icon} aria-hidden=\"true\" />;\n }\n\n if (status === \"error\") {\n return <CloseIcon className={config.icon} aria-hidden=\"true\" />;\n }\n\n if (showNumbers) {\n return <span className=\"font-semibold\">{index + 1}</span>;\n }\n\n return (\n <span\n className={mergeClassNames(\n \"rounded-full bg-current\",\n size === \"sm\" ? \"w-2 h-2\" : \"w-3 h-3\",\n )}\n />\n );\n };\n\n return (\n <motion.div\n className={mergeClassNames(\n \"rounded-full flex items-center justify-center transition-all duration-300\",\n config.indicator,\n variantStyles,\n )}\n style={customColorStyle}\n initial={animated ? { scale: 0.8, opacity: 0 } : undefined}\n animate={animated ? { scale: 1, opacity: 1 } : undefined}\n whileHover={{ scale: 1.05 }}\n whileTap={{ scale: 0.95 }}\n transition={{ type: \"spring\", stiffness: 400, damping: 17 }}\n >\n <AnimatePresence mode=\"wait\">\n <motion.span\n key={status}\n initial={animated ? { scale: 0, rotate: -180 } : undefined}\n animate={animated ? { scale: 1, rotate: 0 } : undefined}\n exit={animated ? { scale: 0, rotate: 180 } : undefined}\n transition={{ duration: 0.2 }}\n >\n {renderContent()}\n </motion.span>\n </AnimatePresence>\n </motion.div>\n );\n};\n\n// Main Stepper Component\nexport const Stepper = ({\n steps,\n currentStep,\n onStepClick,\n orientation = \"horizontal\",\n size = \"md\",\n variant = \"glass\",\n showNumbers = true,\n clickable = true,\n showConnector = true,\n className,\n connectorClassName,\n stepClassName,\n showErrors = false,\n errorSteps = [],\n completedSteps,\n animated = true,\n colors,\n}: StepperProps) => {\n const isVertical = orientation === \"vertical\";\n const config = sizeConfig[size];\n\n const getStepStatus = (index: number): StepStatus => {\n if (showErrors && errorSteps.includes(index)) return \"error\";\n if (completedSteps) {\n if (completedSteps.includes(index)) return \"completed\";\n if (index === currentStep) return \"current\";\n return \"upcoming\";\n }\n if (index < currentStep) return \"completed\";\n if (index === currentStep) return \"current\";\n return \"upcoming\";\n };\n\n const handleStepClick = (index: number) => {\n if (!clickable || !onStepClick) return;\n const step = steps[index];\n if (step.disabled) return;\n\n // Allow clicking on completed or current steps\n const status = getStepStatus(index);\n if (status === \"completed\" || status === \"current\") {\n onStepClick(index);\n }\n };\n\n return (\n <div\n className={mergeClassNames(\n \"w-full relative\",\n isVertical ? \"flex flex-col\" : \"flex items-start justify-between\",\n className,\n )}\n >\n {/* Global Background Continuous Connector */}\n {showConnector &&\n (() => {\n const paddingValue =\n variant === \"glass\" ||\n variant === \"outlined\" ||\n variant === \"minimal\"\n ? 4\n : 2;\n return (\n <div\n className={mergeClassNames(\n \"absolute rounded-full\",\n variant === \"glass\"\n ? \"bg-white/30 dark:bg-white/10 backdrop-blur-sm\"\n : \"bg-neutral-200 dark:bg-neutral-700\",\n connectorClassName,\n )}\n style={{\n ...(isVertical\n ? {\n // Vertical background line\n top: \"0\",\n bottom: \"0\",\n left: `calc(${paddingValue}px + 1px + ${config.indicator.split(\" \")[0].replace(\"w-\", \"\")} * 0.125rem - ${config.connectorThickness} / 2)`,\n width: config.connectorThickness,\n }\n : {\n // Horizontal background line\n left: \"0\",\n right: \"0\",\n top: `calc(${paddingValue}px + 1px + ${config.indicator.split(\" \")[1].replace(\"h-\", \"\")} * 0.125rem - ${config.connectorThickness} / 2)`,\n height: config.connectorThickness,\n }),\n }}\n >\n {/* Animated fill connector */}\n {animated ? (\n <motion.div\n className=\"absolute top-0 left-0 bg-accent rounded-full\"\n initial={{ [isVertical ? \"height\" : \"width\"]: 0 }}\n animate={{\n [isVertical ? \"height\" : \"width\"]:\n `${steps.length > 1 ? (Math.min(currentStep, steps.length - 1) / (steps.length - 1)) * 100 : 0}%`,\n }}\n transition={{ duration: 0.4, ease: \"easeOut\" }}\n style={{\n ...(isVertical ? { width: \"100%\" } : { height: \"100%\" }),\n backgroundColor: colors?.connector || colors?.completed,\n }}\n />\n ) : (\n <div\n className=\"absolute top-0 left-0 bg-accent rounded-full\"\n style={{\n ...(isVertical\n ? {\n width: \"100%\",\n height: `${steps.length > 1 ? (Math.min(currentStep, steps.length - 1) / (steps.length - 1)) * 100 : 0}%`,\n }\n : {\n height: \"100%\",\n width: `${steps.length > 1 ? (Math.min(currentStep, steps.length - 1) / (steps.length - 1)) * 100 : 0}%`,\n }),\n backgroundColor: colors?.connector || colors?.completed,\n }}\n />\n )}\n </div>\n );\n })()}\n\n {steps.map((step, index) => {\n const status = getStepStatus(index);\n const isLast = index === steps.length - 1;\n const isClickable = clickable && !step.disabled; // Keep steps clickable unconditionally for navigation\n const paddingValue =\n variant === \"glass\" || variant === \"outlined\" || variant === \"minimal\"\n ? 4\n : 2;\n\n return (\n <div\n key={step.id}\n className={mergeClassNames(\n \"relative z-10\",\n isVertical\n ? \"flex gap-4 pb-8\" // spacing between vertical elements\n : \"flex flex-1 flex-col items-center\",\n !isLast && isVertical && \"mb-2\",\n isVertical && isLast && \"pb-0\",\n stepClassName,\n )}\n style={{\n // Ensure perfect horizontal distribution\n ...(!isVertical\n ? {\n flexBasis: 0,\n flexGrow: 1,\n // Keep first item aligned left, last aligned right, others centered\n alignItems:\n index === 0\n ? \"flex-start\"\n : isLast\n ? \"flex-end\"\n : \"center\",\n }\n : {}),\n }}\n >\n {/* Step Indicator */}\n <button\n type=\"button\"\n onClick={() => handleStepClick(index)}\n disabled={!isClickable}\n className={mergeClassNames(\n \"relative z-10 shrink-0 flex items-center justify-center bg-white dark:bg-neutral-900 rounded-full\", // Mask background line\n isClickable ? \"cursor-pointer\" : \"cursor-default\",\n // Horizontal offset logic for end items to align with text\n !isVertical && index === 0 && \"mx-0\",\n !isVertical && isLast && \"mx-0\",\n )}\n style={{\n // Adjust the background masking size depending on variant so the line doesn't peek through the edges\n padding: `${paddingValue}px`,\n }}\n aria-current={status === \"current\" ? \"step\" : undefined}\n >\n <StepIndicator\n step={step}\n index={index}\n status={status}\n size={size}\n variant={variant}\n showNumbers={showNumbers}\n animated={animated}\n colors={colors}\n />\n </button>\n\n {/* Step text content */}\n <motion.div\n className={mergeClassNames(\n \"mt-2\",\n isVertical ? \"flex-1 pb-6\" : \"text-center px-2\",\n !isVertical && index === 0 && \"text-left px-0\",\n !isVertical && isLast && \"text-right px-0\",\n isVertical && isLast && \"pb-0\",\n )}\n style={isVertical ? { marginTop: \"-4px\" } : undefined}\n initial={animated ? { opacity: 0, y: 10 } : undefined}\n animate={animated ? { opacity: 1, y: 0 } : undefined}\n transition={{ delay: index * 0.1 }}\n >\n <p\n className={mergeClassNames(\n \"font-medium transition-colors duration-200\",\n config.text,\n status === \"current\"\n ? \"text-accent\"\n : status === \"completed\"\n ? \"text-neutral-700 dark:text-neutral-200\"\n : status === \"error\"\n ? \"text-red-500\"\n : \"text-neutral-500 dark:text-neutral-400\",\n )}\n >\n {step.title}\n {step.optional && (\n <span className=\"ml-1 text-neutral-400 dark:text-neutral-500 font-normal\">\n (Optional)\n </span>\n )}\n </p>\n {step.description && (\n <p\n className={mergeClassNames(\n \"mt-0.5 text-neutral-500 dark:text-neutral-400\",\n size === \"sm\" ? \"text-xs\" : \"text-xs\",\n )}\n >\n {step.description}\n </p>\n )}\n </motion.div>\n\n {/* Step content (for vertical with content) */}\n {isVertical && step.content && status === \"current\" && (\n <motion.div\n initial={{ opacity: 0, height: 0 }}\n animate={{ opacity: 1, height: \"auto\" }}\n exit={{ opacity: 0, height: 0 }}\n className=\"pl-14 pb-4 w-full\"\n >\n {step.content}\n </motion.div>\n )}\n </div>\n );\n })}\n </div>\n );\n};\n\nStepper.displayName = \"Stepper\";\n\nexport default Stepper;\n"],"mappings":"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"}