@mlw-packages/react-components 1.0.0 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -106,6 +106,9 @@ __export(index_exports, {
106
106
  PopoverContentBase: () => PopoverContentBase,
107
107
  PopoverTriggerBase: () => PopoverTriggerBase,
108
108
  ProgressBase: () => ProgressBase,
109
+ ProgressCirclesBase: () => ProgressCirclesBase,
110
+ ProgressPanelsBase: () => ProgressPanelsBase,
111
+ ProgressSegmentsBase: () => ProgressSegmentsBase,
109
112
  ScrollAreaBase: () => ScrollAreaBase,
110
113
  ScrollBarBase: () => ScrollBarBase,
111
114
  Select: () => Select,
@@ -207,7 +210,7 @@ var import_jsx_runtime = require("react/jsx-runtime");
207
210
  var buttonVariantsBase = (0, import_class_variance_authority.cva)(
208
211
  `
209
212
  inline-flex items-center justify-center gap-2
210
- whitespace-nowrap rounded-md text-sm font-medium
213
+ whitespace-nowrap rounded-md text-sm
211
214
  transition-all duration-200
212
215
  focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2
213
216
  disabled:pointer-events-none disabled:opacity-50
@@ -231,7 +234,11 @@ var buttonVariantsBase = (0, import_class_variance_authority.cva)(
231
234
  hover:bg-accent hover:text-accent-foreground hover:shadow-md
232
235
  `,
233
236
  secondary: `
234
- bg-secondary text-secondary-foreground shadow-sm
237
+ <<<<<<< HEAD
238
+ bg-secondary border border-transparent text-secondary-foreground shadow-sm
239
+ =======
240
+ bg-secondary text-secondary-foreground shadow-sm border border-transparent
241
+ >>>>>>> origin/improvements/Home
235
242
  hover:opacity-80 hover:shadow-md
236
243
  `,
237
244
  ghost: `
@@ -573,7 +580,7 @@ var import_jsx_runtime6 = require("react/jsx-runtime");
573
580
  var LabelBase = React5.forwardRef(
574
581
  ({ className, asChild = false, ...props }, ref) => {
575
582
  const Comp = asChild ? import_react_slot2.Slot : "label";
576
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_react_label.Label, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
583
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_react_label.Label, { children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
577
584
  Comp,
578
585
  {
579
586
  ref,
@@ -597,25 +604,42 @@ var React8 = __toESM(require("react"));
597
604
  var React6 = __toESM(require("react"));
598
605
  var import_jsx_runtime7 = require("react/jsx-runtime");
599
606
  var InputBase = React6.forwardRef(
600
- ({ className, type = "text", label, leftIcon, rightIcon, ...props }, ref) => {
601
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex flex-col gap-1 w-full min-w-[150px]", children: [
602
- label && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(LabelBase_default, { children: label }),
603
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex items-center rounded-md border border-input transition focus-within:ring-1 focus-within:ring-ring focus-within:border-ring", children: [
604
- leftIcon && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "flex items-center justify-center px-2", children: leftIcon }),
605
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
606
- "input",
607
- {
608
- type,
609
- className: cn(
610
- " w-full flex-1 bg-transparent px-3 py-1 text-base placeholder:text-muted-foreground focus:outline-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
611
- className
607
+ ({
608
+ className,
609
+ type = "text",
610
+ label,
611
+ labelClassname,
612
+ leftIcon,
613
+ rightIcon,
614
+ ...props
615
+ }, ref) => {
616
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex flex-col w-full min-w-[150px]", children: [
617
+ label && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(LabelBase_default, { className: labelClassname, children: label }),
618
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
619
+ "div",
620
+ {
621
+ className: cn(
622
+ "flex items-center border border-input rounded-md transition focus-within:ring-1 focus-within:ring-ring focus-within:border-ring bg-white dark:bg-[hsl(231,15%,19%)] overflow-hidden",
623
+ type === "file" && "border-none p-0"
624
+ ),
625
+ children: [
626
+ leftIcon && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "flex items-center justify-center px-2", children: leftIcon }),
627
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
628
+ "input",
629
+ {
630
+ type,
631
+ className: cn(
632
+ "w-full flex-1 text-sm leading-tight py-2 px-3 focus:outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50 bg-white dark:bg-[hsl(231,15%,19%)]",
633
+ className
634
+ ),
635
+ ref,
636
+ ...props
637
+ }
612
638
  ),
613
- ref,
614
- ...props
615
- }
616
- ),
617
- rightIcon && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "flex items-center justify-center px-2", children: rightIcon })
618
- ] })
639
+ rightIcon && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "flex items-center justify-center px-2", children: rightIcon })
640
+ ]
641
+ }
642
+ )
619
643
  ] });
620
644
  }
621
645
  );
@@ -1073,16 +1097,23 @@ var DropDownMenuContentBase = React10.forwardRef(({ className, sideOffset = 4, .
1073
1097
  }
1074
1098
  ) }) }));
1075
1099
  DropDownMenuContentBase.displayName = DropdownMenuPrimitive.Content.displayName;
1076
- var DropDownMenuItemBase = React10.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1100
+ var DropDownMenuItemBase = React10.forwardRef(({ className, inset, leftIcon, rightIcon, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
1077
1101
  DropdownMenuPrimitive.Item,
1078
1102
  {
1079
1103
  ref,
1080
1104
  className: cn(
1081
- "relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&>svg]:size-4 [&>svg]:shrink-0",
1105
+ "relative flex cursor-default select-none items-center justify-between rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
1082
1106
  inset && "pl-8",
1083
1107
  className
1084
1108
  ),
1085
- ...props
1109
+ ...props,
1110
+ children: [
1111
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "flex items-center gap-2", children: [
1112
+ leftIcon && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "[&>svg]:size-4", children: leftIcon }),
1113
+ children
1114
+ ] }),
1115
+ rightIcon && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "[&>svg]:size-4", children: rightIcon })
1116
+ ]
1086
1117
  }
1087
1118
  ));
1088
1119
  DropDownMenuItemBase.displayName = DropdownMenuPrimitive.Item.displayName;
@@ -1401,7 +1432,7 @@ function ComboboxBase({
1401
1432
  ]
1402
1433
  }
1403
1434
  ) }),
1404
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(PopoverContentBase, { className: "max-h-[--radix-popover-content-available-height] w-[--radix-popover-trigger-width] p-0", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(CommandBase, { className: "dark:text-white", children: [
1435
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(PopoverContentBase, { className: "max-h-[--radix-popover-content-available-height] w-[--radix-popover-trigger-width] p-0 border-none", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(CommandBase, { className: "dark:text-white", children: [
1405
1436
  /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1406
1437
  CommandInputBase,
1407
1438
  {
@@ -1989,51 +2020,144 @@ FormMessageBase.displayName = "FormMessageBase";
1989
2020
  var React18 = __toESM(require("react"));
1990
2021
  var ProgressPrimitive = __toESM(require("@radix-ui/react-progress"));
1991
2022
  var import_jsx_runtime26 = require("react/jsx-runtime");
1992
- var ProgressBase = React18.forwardRef(
1993
- ({
1994
- className,
1995
- value,
1996
- label,
1997
- leftIcon,
1998
- rightIcon,
1999
- showValue = false,
2000
- ...props
2001
- }, ref) => {
2002
- return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "flex flex-col gap-1 w-full min-w-[150px]", children: [
2003
- label && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(LabelBase_default, { className: "py-2", children: label }),
2004
- /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "flex items-center gap-2", children: [
2005
- leftIcon && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "flex items-center", children: leftIcon }),
2006
- /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "relative w-full", children: [
2007
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2008
- ProgressPrimitive.Root,
2023
+ var ProgressBase = React18.forwardRef(({ className, value, label, leftIcon, rightIcon, ...props }, ref) => {
2024
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "flex flex-col gap-1 w-full min-w-[150px]", children: [
2025
+ label && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(LabelBase_default, { className: "py-2", children: label }),
2026
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "flex items-center gap-2", children: [
2027
+ leftIcon && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "flex items-center justify-center", children: leftIcon }),
2028
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2029
+ ProgressPrimitive.Root,
2030
+ {
2031
+ ref,
2032
+ className: cn(
2033
+ "relative h-3 w-full overflow-hidden rounded-full bg-zinc-200 dark:bg-zinc-800 shadow-inner transition-all",
2034
+ className
2035
+ ),
2036
+ value,
2037
+ ...props,
2038
+ children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2039
+ ProgressPrimitive.Indicator,
2009
2040
  {
2010
- ref,
2011
- className: cn(
2012
- "relative h-2 w-full overflow-hidden rounded-full bg-primary/20",
2013
- className
2014
- ),
2015
- value,
2016
- ...props,
2017
- children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2018
- ProgressPrimitive.Indicator,
2019
- {
2020
- className: "h-full w-full flex-1 bg-primary transition-all ",
2021
- style: { transform: `translateX(-${100 - (value || 0)}%)` }
2022
- }
2023
- )
2041
+ className: "h-full w-full flex-1 bg-primary transition-all duration-500 ease-in-out",
2042
+ style: { transform: `translateX(-${100 - (value || 0)}%)` }
2024
2043
  }
2025
- ),
2026
- showValue && /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("span", { className: "absolute right-2 top-1/2 -translate-y-1/2 text-xs text-muted-foreground", children: [
2027
- Math.round(value ?? 0),
2028
- "%"
2029
- ] })
2030
- ] }),
2031
- rightIcon && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "flex items-center", children: rightIcon })
2032
- ] })
2033
- ] });
2044
+ )
2045
+ }
2046
+ ),
2047
+ rightIcon && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "flex items-center justify-center", children: rightIcon })
2048
+ ] })
2049
+ ] });
2050
+ });
2051
+ ProgressBase.displayName = "ProgressBase";
2052
+ var ProgressSegmentsBase = ({
2053
+ label,
2054
+ segments,
2055
+ value
2056
+ }) => {
2057
+ const filled = Math.round(value / 100 * segments);
2058
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "flex flex-col gap-1 w-full min-w-[150px]", children: [
2059
+ label && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(LabelBase_default, { className: "py-2", children: label }),
2060
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "flex gap-1 w-full", children: Array.from({ length: segments }).map((_, idx) => /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2061
+ "div",
2062
+ {
2063
+ className: cn(
2064
+ "h-2 flex-1 rounded-full transition-all duration-300",
2065
+ idx < filled ? "bg-primary" : "bg-zinc-300 hover:bg-zinc-400"
2066
+ )
2067
+ },
2068
+ idx
2069
+ )) })
2070
+ ] });
2071
+ };
2072
+ var ArrowRightIcon = () => /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2073
+ "svg",
2074
+ {
2075
+ className: "w-6 h-6 text-zinc-400 transition-transform duration-300 group-hover:translate-x-1",
2076
+ fill: "none",
2077
+ stroke: "currentColor",
2078
+ strokeWidth: 2,
2079
+ viewBox: "0 0 24 24",
2080
+ xmlns: "http://www.w3.org/2000/svg",
2081
+ children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M9 5l7 7-7 7" })
2034
2082
  }
2035
2083
  );
2036
- ProgressBase.displayName = "ProgressBase";
2084
+ var ProgressPanelsBase = ({
2085
+ label,
2086
+ steps,
2087
+ currentStep
2088
+ }) => {
2089
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "flex flex-col gap-1 w-full", children: [
2090
+ label && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(LabelBase_default, { className: "py-2", children: label }),
2091
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "flex w-full gap-1 rounded-lg overflow-hidden", children: steps.map((step, idx) => {
2092
+ const isActive = idx === currentStep;
2093
+ const isLast = idx === steps.length - 1;
2094
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(React18.Fragment, { children: [
2095
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
2096
+ "div",
2097
+ {
2098
+ className: cn(
2099
+ "relative flex items-center justify-center cursor-pointer select-none rounded-lg border transition-shadow duration-300 ease-in-out",
2100
+ "hover:shadow-md hover:z-10",
2101
+ "aspect-[5/1] min-w-[90px] px-4",
2102
+ isActive ? "bg-primary/20 border-2 border-primary shadow-lg font-semibold" : "border-zinc-300"
2103
+ ),
2104
+ style: { flex: "1 1 0" },
2105
+ children: [
2106
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { className: "truncate", children: step }),
2107
+ isActive && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "absolute bottom-0 left-0 h-1 w-full animate-pulse rounded-b-lg" })
2108
+ ]
2109
+ }
2110
+ ),
2111
+ !isLast && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "flex items-center px-2 group", children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(ArrowRightIcon, {}) })
2112
+ ] }, idx);
2113
+ }) })
2114
+ ] });
2115
+ };
2116
+ var ProgressCirclesBase = ({
2117
+ label,
2118
+ steps,
2119
+ currentStep
2120
+ }) => {
2121
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "flex flex-col gap-2 w-full", children: [
2122
+ label && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("label", { className: "py-2 text-base font-semibold text-gray-700 dark:text-gray-300", children: label }),
2123
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "relative flex items-center justify-between w-full", children: [
2124
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "absolute top-5 left-0 w-full h-1 bg-zinc-200 dark:bg-zinc-700" }),
2125
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2126
+ "div",
2127
+ {
2128
+ className: "absolute top-5 left-0 h-1 bg-primary transition-all duration-300",
2129
+ style: {
2130
+ width: `${currentStep / (steps.length - 1) * 100}%`
2131
+ }
2132
+ }
2133
+ ),
2134
+ steps.map((step, idx) => {
2135
+ const isActive = idx <= currentStep;
2136
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
2137
+ "div",
2138
+ {
2139
+ className: "relative flex flex-col items-center w-10",
2140
+ style: { zIndex: isActive ? 10 : 1 },
2141
+ children: [
2142
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2143
+ "div",
2144
+ {
2145
+ className: cn(
2146
+ "w-10 h-10 rounded-full flex items-center justify-center font-bold text-sm transition-all duration-300 cursor-pointer select-none",
2147
+ isActive ? "bg-primary text-white dark:text-black shadow-md" : "bg-zinc-200 text-zinc-500 hover:bg-zinc-300 dark:bg-zinc-500 dark:text-black"
2148
+ ),
2149
+ children: idx + 1
2150
+ }
2151
+ ),
2152
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { className: "text-xs text-center font-medium mt-1 max-w-[80px] break-words", children: step })
2153
+ ]
2154
+ },
2155
+ idx
2156
+ );
2157
+ })
2158
+ ] })
2159
+ ] });
2160
+ };
2037
2161
 
2038
2162
  // src/components/ui/SeparatorBase.tsx
2039
2163
  var React19 = __toESM(require("react"));
@@ -3268,6 +3392,9 @@ function buildFilterSummary(filter, availableFilters) {
3268
3392
  PopoverContentBase,
3269
3393
  PopoverTriggerBase,
3270
3394
  ProgressBase,
3395
+ ProgressCirclesBase,
3396
+ ProgressPanelsBase,
3397
+ ProgressSegmentsBase,
3271
3398
  ScrollAreaBase,
3272
3399
  ScrollBarBase,
3273
3400
  Select,
package/dist/index.mjs CHANGED
@@ -19,7 +19,7 @@ import { jsx } from "react/jsx-runtime";
19
19
  var buttonVariantsBase = cva(
20
20
  `
21
21
  inline-flex items-center justify-center gap-2
22
- whitespace-nowrap rounded-md text-sm font-medium
22
+ whitespace-nowrap rounded-md text-sm
23
23
  transition-all duration-200
24
24
  focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2
25
25
  disabled:pointer-events-none disabled:opacity-50
@@ -43,7 +43,11 @@ var buttonVariantsBase = cva(
43
43
  hover:bg-accent hover:text-accent-foreground hover:shadow-md
44
44
  `,
45
45
  secondary: `
46
- bg-secondary text-secondary-foreground shadow-sm
46
+ <<<<<<< HEAD
47
+ bg-secondary border border-transparent text-secondary-foreground shadow-sm
48
+ =======
49
+ bg-secondary text-secondary-foreground shadow-sm border border-transparent
50
+ >>>>>>> origin/improvements/Home
47
51
  hover:opacity-80 hover:shadow-md
48
52
  `,
49
53
  ghost: `
@@ -385,7 +389,7 @@ import { jsx as jsx6 } from "react/jsx-runtime";
385
389
  var LabelBase = React5.forwardRef(
386
390
  ({ className, asChild = false, ...props }, ref) => {
387
391
  const Comp = asChild ? Slot2 : "label";
388
- return /* @__PURE__ */ jsx6(RadixLabel, { asChild: true, children: /* @__PURE__ */ jsx6(
392
+ return /* @__PURE__ */ jsx6(RadixLabel, { children: /* @__PURE__ */ jsx6(
389
393
  Comp,
390
394
  {
391
395
  ref,
@@ -409,25 +413,42 @@ import * as React8 from "react";
409
413
  import * as React6 from "react";
410
414
  import { jsx as jsx7, jsxs as jsxs3 } from "react/jsx-runtime";
411
415
  var InputBase = React6.forwardRef(
412
- ({ className, type = "text", label, leftIcon, rightIcon, ...props }, ref) => {
413
- return /* @__PURE__ */ jsxs3("div", { className: "flex flex-col gap-1 w-full min-w-[150px]", children: [
414
- label && /* @__PURE__ */ jsx7(LabelBase_default, { children: label }),
415
- /* @__PURE__ */ jsxs3("div", { className: "flex items-center rounded-md border border-input transition focus-within:ring-1 focus-within:ring-ring focus-within:border-ring", children: [
416
- leftIcon && /* @__PURE__ */ jsx7("div", { className: "flex items-center justify-center px-2", children: leftIcon }),
417
- /* @__PURE__ */ jsx7(
418
- "input",
419
- {
420
- type,
421
- className: cn(
422
- " w-full flex-1 bg-transparent px-3 py-1 text-base placeholder:text-muted-foreground focus:outline-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
423
- className
416
+ ({
417
+ className,
418
+ type = "text",
419
+ label,
420
+ labelClassname,
421
+ leftIcon,
422
+ rightIcon,
423
+ ...props
424
+ }, ref) => {
425
+ return /* @__PURE__ */ jsxs3("div", { className: "flex flex-col w-full min-w-[150px]", children: [
426
+ label && /* @__PURE__ */ jsx7(LabelBase_default, { className: labelClassname, children: label }),
427
+ /* @__PURE__ */ jsxs3(
428
+ "div",
429
+ {
430
+ className: cn(
431
+ "flex items-center border border-input rounded-md transition focus-within:ring-1 focus-within:ring-ring focus-within:border-ring bg-white dark:bg-[hsl(231,15%,19%)] overflow-hidden",
432
+ type === "file" && "border-none p-0"
433
+ ),
434
+ children: [
435
+ leftIcon && /* @__PURE__ */ jsx7("div", { className: "flex items-center justify-center px-2", children: leftIcon }),
436
+ /* @__PURE__ */ jsx7(
437
+ "input",
438
+ {
439
+ type,
440
+ className: cn(
441
+ "w-full flex-1 text-sm leading-tight py-2 px-3 focus:outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50 bg-white dark:bg-[hsl(231,15%,19%)]",
442
+ className
443
+ ),
444
+ ref,
445
+ ...props
446
+ }
424
447
  ),
425
- ref,
426
- ...props
427
- }
428
- ),
429
- rightIcon && /* @__PURE__ */ jsx7("div", { className: "flex items-center justify-center px-2", children: rightIcon })
430
- ] })
448
+ rightIcon && /* @__PURE__ */ jsx7("div", { className: "flex items-center justify-center px-2", children: rightIcon })
449
+ ]
450
+ }
451
+ )
431
452
  ] });
432
453
  }
433
454
  );
@@ -885,16 +906,23 @@ var DropDownMenuContentBase = React10.forwardRef(({ className, sideOffset = 4, .
885
906
  }
886
907
  ) }) }));
887
908
  DropDownMenuContentBase.displayName = DropdownMenuPrimitive.Content.displayName;
888
- var DropDownMenuItemBase = React10.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx11(
909
+ var DropDownMenuItemBase = React10.forwardRef(({ className, inset, leftIcon, rightIcon, children, ...props }, ref) => /* @__PURE__ */ jsxs6(
889
910
  DropdownMenuPrimitive.Item,
890
911
  {
891
912
  ref,
892
913
  className: cn(
893
- "relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&>svg]:size-4 [&>svg]:shrink-0",
914
+ "relative flex cursor-default select-none items-center justify-between rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
894
915
  inset && "pl-8",
895
916
  className
896
917
  ),
897
- ...props
918
+ ...props,
919
+ children: [
920
+ /* @__PURE__ */ jsxs6("div", { className: "flex items-center gap-2", children: [
921
+ leftIcon && /* @__PURE__ */ jsx11("span", { className: "[&>svg]:size-4", children: leftIcon }),
922
+ children
923
+ ] }),
924
+ rightIcon && /* @__PURE__ */ jsx11("span", { className: "[&>svg]:size-4", children: rightIcon })
925
+ ]
898
926
  }
899
927
  ));
900
928
  DropDownMenuItemBase.displayName = DropdownMenuPrimitive.Item.displayName;
@@ -1213,7 +1241,7 @@ function ComboboxBase({
1213
1241
  ]
1214
1242
  }
1215
1243
  ) }),
1216
- /* @__PURE__ */ jsx16(PopoverContentBase, { className: "max-h-[--radix-popover-content-available-height] w-[--radix-popover-trigger-width] p-0", children: /* @__PURE__ */ jsxs9(CommandBase, { className: "dark:text-white", children: [
1244
+ /* @__PURE__ */ jsx16(PopoverContentBase, { className: "max-h-[--radix-popover-content-available-height] w-[--radix-popover-trigger-width] p-0 border-none", children: /* @__PURE__ */ jsxs9(CommandBase, { className: "dark:text-white", children: [
1217
1245
  /* @__PURE__ */ jsx16(
1218
1246
  CommandInputBase,
1219
1247
  {
@@ -1805,51 +1833,144 @@ FormMessageBase.displayName = "FormMessageBase";
1805
1833
  import * as React18 from "react";
1806
1834
  import * as ProgressPrimitive from "@radix-ui/react-progress";
1807
1835
  import { jsx as jsx26, jsxs as jsxs15 } from "react/jsx-runtime";
1808
- var ProgressBase = React18.forwardRef(
1809
- ({
1810
- className,
1811
- value,
1812
- label,
1813
- leftIcon,
1814
- rightIcon,
1815
- showValue = false,
1816
- ...props
1817
- }, ref) => {
1818
- return /* @__PURE__ */ jsxs15("div", { className: "flex flex-col gap-1 w-full min-w-[150px]", children: [
1819
- label && /* @__PURE__ */ jsx26(LabelBase_default, { className: "py-2", children: label }),
1820
- /* @__PURE__ */ jsxs15("div", { className: "flex items-center gap-2", children: [
1821
- leftIcon && /* @__PURE__ */ jsx26("div", { className: "flex items-center", children: leftIcon }),
1822
- /* @__PURE__ */ jsxs15("div", { className: "relative w-full", children: [
1823
- /* @__PURE__ */ jsx26(
1824
- ProgressPrimitive.Root,
1836
+ var ProgressBase = React18.forwardRef(({ className, value, label, leftIcon, rightIcon, ...props }, ref) => {
1837
+ return /* @__PURE__ */ jsxs15("div", { className: "flex flex-col gap-1 w-full min-w-[150px]", children: [
1838
+ label && /* @__PURE__ */ jsx26(LabelBase_default, { className: "py-2", children: label }),
1839
+ /* @__PURE__ */ jsxs15("div", { className: "flex items-center gap-2", children: [
1840
+ leftIcon && /* @__PURE__ */ jsx26("div", { className: "flex items-center justify-center", children: leftIcon }),
1841
+ /* @__PURE__ */ jsx26(
1842
+ ProgressPrimitive.Root,
1843
+ {
1844
+ ref,
1845
+ className: cn(
1846
+ "relative h-3 w-full overflow-hidden rounded-full bg-zinc-200 dark:bg-zinc-800 shadow-inner transition-all",
1847
+ className
1848
+ ),
1849
+ value,
1850
+ ...props,
1851
+ children: /* @__PURE__ */ jsx26(
1852
+ ProgressPrimitive.Indicator,
1825
1853
  {
1826
- ref,
1827
- className: cn(
1828
- "relative h-2 w-full overflow-hidden rounded-full bg-primary/20",
1829
- className
1830
- ),
1831
- value,
1832
- ...props,
1833
- children: /* @__PURE__ */ jsx26(
1834
- ProgressPrimitive.Indicator,
1835
- {
1836
- className: "h-full w-full flex-1 bg-primary transition-all ",
1837
- style: { transform: `translateX(-${100 - (value || 0)}%)` }
1838
- }
1839
- )
1854
+ className: "h-full w-full flex-1 bg-primary transition-all duration-500 ease-in-out",
1855
+ style: { transform: `translateX(-${100 - (value || 0)}%)` }
1840
1856
  }
1841
- ),
1842
- showValue && /* @__PURE__ */ jsxs15("span", { className: "absolute right-2 top-1/2 -translate-y-1/2 text-xs text-muted-foreground", children: [
1843
- Math.round(value ?? 0),
1844
- "%"
1845
- ] })
1846
- ] }),
1847
- rightIcon && /* @__PURE__ */ jsx26("div", { className: "flex items-center", children: rightIcon })
1848
- ] })
1849
- ] });
1857
+ )
1858
+ }
1859
+ ),
1860
+ rightIcon && /* @__PURE__ */ jsx26("div", { className: "flex items-center justify-center", children: rightIcon })
1861
+ ] })
1862
+ ] });
1863
+ });
1864
+ ProgressBase.displayName = "ProgressBase";
1865
+ var ProgressSegmentsBase = ({
1866
+ label,
1867
+ segments,
1868
+ value
1869
+ }) => {
1870
+ const filled = Math.round(value / 100 * segments);
1871
+ return /* @__PURE__ */ jsxs15("div", { className: "flex flex-col gap-1 w-full min-w-[150px]", children: [
1872
+ label && /* @__PURE__ */ jsx26(LabelBase_default, { className: "py-2", children: label }),
1873
+ /* @__PURE__ */ jsx26("div", { className: "flex gap-1 w-full", children: Array.from({ length: segments }).map((_, idx) => /* @__PURE__ */ jsx26(
1874
+ "div",
1875
+ {
1876
+ className: cn(
1877
+ "h-2 flex-1 rounded-full transition-all duration-300",
1878
+ idx < filled ? "bg-primary" : "bg-zinc-300 hover:bg-zinc-400"
1879
+ )
1880
+ },
1881
+ idx
1882
+ )) })
1883
+ ] });
1884
+ };
1885
+ var ArrowRightIcon = () => /* @__PURE__ */ jsx26(
1886
+ "svg",
1887
+ {
1888
+ className: "w-6 h-6 text-zinc-400 transition-transform duration-300 group-hover:translate-x-1",
1889
+ fill: "none",
1890
+ stroke: "currentColor",
1891
+ strokeWidth: 2,
1892
+ viewBox: "0 0 24 24",
1893
+ xmlns: "http://www.w3.org/2000/svg",
1894
+ children: /* @__PURE__ */ jsx26("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M9 5l7 7-7 7" })
1850
1895
  }
1851
1896
  );
1852
- ProgressBase.displayName = "ProgressBase";
1897
+ var ProgressPanelsBase = ({
1898
+ label,
1899
+ steps,
1900
+ currentStep
1901
+ }) => {
1902
+ return /* @__PURE__ */ jsxs15("div", { className: "flex flex-col gap-1 w-full", children: [
1903
+ label && /* @__PURE__ */ jsx26(LabelBase_default, { className: "py-2", children: label }),
1904
+ /* @__PURE__ */ jsx26("div", { className: "flex w-full gap-1 rounded-lg overflow-hidden", children: steps.map((step, idx) => {
1905
+ const isActive = idx === currentStep;
1906
+ const isLast = idx === steps.length - 1;
1907
+ return /* @__PURE__ */ jsxs15(React18.Fragment, { children: [
1908
+ /* @__PURE__ */ jsxs15(
1909
+ "div",
1910
+ {
1911
+ className: cn(
1912
+ "relative flex items-center justify-center cursor-pointer select-none rounded-lg border transition-shadow duration-300 ease-in-out",
1913
+ "hover:shadow-md hover:z-10",
1914
+ "aspect-[5/1] min-w-[90px] px-4",
1915
+ isActive ? "bg-primary/20 border-2 border-primary shadow-lg font-semibold" : "border-zinc-300"
1916
+ ),
1917
+ style: { flex: "1 1 0" },
1918
+ children: [
1919
+ /* @__PURE__ */ jsx26("span", { className: "truncate", children: step }),
1920
+ isActive && /* @__PURE__ */ jsx26("div", { className: "absolute bottom-0 left-0 h-1 w-full animate-pulse rounded-b-lg" })
1921
+ ]
1922
+ }
1923
+ ),
1924
+ !isLast && /* @__PURE__ */ jsx26("div", { className: "flex items-center px-2 group", children: /* @__PURE__ */ jsx26(ArrowRightIcon, {}) })
1925
+ ] }, idx);
1926
+ }) })
1927
+ ] });
1928
+ };
1929
+ var ProgressCirclesBase = ({
1930
+ label,
1931
+ steps,
1932
+ currentStep
1933
+ }) => {
1934
+ return /* @__PURE__ */ jsxs15("div", { className: "flex flex-col gap-2 w-full", children: [
1935
+ label && /* @__PURE__ */ jsx26("label", { className: "py-2 text-base font-semibold text-gray-700 dark:text-gray-300", children: label }),
1936
+ /* @__PURE__ */ jsxs15("div", { className: "relative flex items-center justify-between w-full", children: [
1937
+ /* @__PURE__ */ jsx26("div", { className: "absolute top-5 left-0 w-full h-1 bg-zinc-200 dark:bg-zinc-700" }),
1938
+ /* @__PURE__ */ jsx26(
1939
+ "div",
1940
+ {
1941
+ className: "absolute top-5 left-0 h-1 bg-primary transition-all duration-300",
1942
+ style: {
1943
+ width: `${currentStep / (steps.length - 1) * 100}%`
1944
+ }
1945
+ }
1946
+ ),
1947
+ steps.map((step, idx) => {
1948
+ const isActive = idx <= currentStep;
1949
+ return /* @__PURE__ */ jsxs15(
1950
+ "div",
1951
+ {
1952
+ className: "relative flex flex-col items-center w-10",
1953
+ style: { zIndex: isActive ? 10 : 1 },
1954
+ children: [
1955
+ /* @__PURE__ */ jsx26(
1956
+ "div",
1957
+ {
1958
+ className: cn(
1959
+ "w-10 h-10 rounded-full flex items-center justify-center font-bold text-sm transition-all duration-300 cursor-pointer select-none",
1960
+ isActive ? "bg-primary text-white dark:text-black shadow-md" : "bg-zinc-200 text-zinc-500 hover:bg-zinc-300 dark:bg-zinc-500 dark:text-black"
1961
+ ),
1962
+ children: idx + 1
1963
+ }
1964
+ ),
1965
+ /* @__PURE__ */ jsx26("span", { className: "text-xs text-center font-medium mt-1 max-w-[80px] break-words", children: step })
1966
+ ]
1967
+ },
1968
+ idx
1969
+ );
1970
+ })
1971
+ ] })
1972
+ ] });
1973
+ };
1853
1974
 
1854
1975
  // src/components/ui/SeparatorBase.tsx
1855
1976
  import * as React19 from "react";
@@ -3083,6 +3204,9 @@ export {
3083
3204
  PopoverContentBase,
3084
3205
  PopoverTriggerBase,
3085
3206
  ProgressBase,
3207
+ ProgressCirclesBase,
3208
+ ProgressPanelsBase,
3209
+ ProgressSegmentsBase,
3086
3210
  ScrollAreaBase,
3087
3211
  ScrollBarBase,
3088
3212
  Select,