@sth87/shadcn-design-system 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.
@@ -1,17 +1,17 @@
1
1
  import { jsxs as s, jsx as e } from "react/jsx-runtime";
2
- import u, { useState as D } from "react";
3
- import { Checkbox as L } from "../../packages/ui/src/components/checkbox.js";
2
+ import u, { useState as L } from "react";
3
+ import { Checkbox as V } from "../../packages/ui/src/components/checkbox.js";
4
4
  import "@radix-ui/react-slot";
5
5
  import "../../packages/ui/src/components/button.js";
6
6
  import "../../packages/ui/src/components/button-group.js";
7
7
  import "../../packages/ui/src/components/input.js";
8
8
  import "../../packages/ui/src/components/textarea.js";
9
- import { Label as V } from "../../packages/ui/src/components/label.js";
9
+ import { Label as g } from "../../packages/ui/src/components/label.js";
10
10
  import "../../packages/ui/src/components/select.js";
11
11
  import "../../packages/ui/src/components/combobox.js";
12
12
  import "@radix-ui/react-tooltip";
13
13
  import { cn as a } from "../../packages/ui/src/lib/utils.js";
14
- import { Info as g } from "lucide-react";
14
+ import { Info as C } from "lucide-react";
15
15
  import "react-day-picker";
16
16
  import "../../packages/ui/src/components/popover.js";
17
17
  import "@radix-ui/react-separator";
@@ -36,55 +36,55 @@ import { Tooltip as b } from "../Tooltip/Tooltip.js";
36
36
  import { AnimatePresence as $ } from "motion/react";
37
37
  import { ConfettiPiece as q } from "../../utils/css.js";
38
38
  const B = u.forwardRef(
39
- (C, N) => {
39
+ (N, w) => {
40
40
  const {
41
41
  label: o,
42
42
  infoTooltip: i,
43
43
  helperText: r,
44
- state: l,
45
- variant: w = "default",
46
- size: v = "default",
47
- color: k,
44
+ state: m,
45
+ variant: v = "default",
46
+ size: k = "default",
47
+ color: y,
48
48
  labelPosition: t = "right",
49
- labelAlignment: m = "center",
50
- icon: y,
51
- animation: T,
52
- id: I,
49
+ labelAlignment: l = "center",
50
+ icon: T,
51
+ animation: I,
52
+ id: j,
53
53
  onCheckedChange: c,
54
- ...j
55
- } = C, [z, p] = D(!1), A = u.useId(), d = I || A, P = {
54
+ ...z
55
+ } = N, [A, p] = L(!1), P = u.useId(), d = j || P, S = {
56
56
  default: "ds:text-muted-foreground",
57
57
  success: "ds:text-success",
58
58
  warning: "ds:text-warning",
59
59
  error: "ds:text-error"
60
- }, S = (n) => {
60
+ }, _ = (n) => {
61
61
  n && (p(!0), setTimeout(() => p(!1), 800)), c?.(n);
62
- }, f = t === "top" || t === "bottom", _ = f ? "ds:flex-col" : "ds:flex-row", F = f ? "ds:gap-1.5" : "ds:gap-2", R = m === "start" ? "ds:items-start" : m === "center" ? "ds:items-center" : "ds:items-end", h = "ds:flex ds:gap-2 ds:peer-disabled:cursor-not-allowed ds:peer-disabled:opacity-70";
62
+ }, f = t === "top" || t === "bottom", F = f ? "ds:flex-col" : "ds:flex-row", R = f ? "ds:gap-1.5" : "ds:gap-2", D = l === "start" ? "ds:items-start" : l === "center" ? "ds:items-center" : "ds:items-end", h = "ds:flex ds:gap-2 ds:peer-disabled:cursor-not-allowed ds:peer-disabled:opacity-70";
63
63
  return /* @__PURE__ */ s("div", { className: a("ds:flex ds:flex-col ds:gap-1.5 ds:relative", {}), children: [
64
- /* @__PURE__ */ s("div", { className: a("ds:flex", _, F, R), children: [
65
- (t === "top" || t === "left") && o && /* @__PURE__ */ s("label", { htmlFor: d, className: h, children: [
64
+ /* @__PURE__ */ s("div", { className: a("ds:flex", F, R, D), children: [
65
+ (t === "top" || t === "left") && o && /* @__PURE__ */ s(g, { htmlFor: d, className: h, children: [
66
66
  o,
67
- i && /* @__PURE__ */ e(b, { content: i, children: /* @__PURE__ */ e(g, { className: "ds:size-3.5 ds:min-w-3.5" }) })
67
+ i && /* @__PURE__ */ e(b, { content: i, children: /* @__PURE__ */ e(C, { className: "ds:size-3.5 ds:min-w-3.5" }) })
68
68
  ] }),
69
69
  /* @__PURE__ */ s("div", { className: "ds:relative ds:inline-flex", children: [
70
70
  /* @__PURE__ */ e(
71
- L,
71
+ V,
72
72
  {
73
- ref: N,
73
+ ref: w,
74
74
  id: d,
75
- ...j,
76
- variant: w,
77
- size: v,
78
- color: k,
79
- icon: y,
80
- onCheckedChange: T ? S : c
75
+ ...z,
76
+ variant: v,
77
+ size: k,
78
+ color: y,
79
+ icon: T,
80
+ onCheckedChange: I ? _ : c
81
81
  }
82
82
  ),
83
- /* @__PURE__ */ e($, { children: z && /* @__PURE__ */ e("div", { className: "ds:pointer-events-none ds:absolute ds:inset-0", children: [...Array(12)].map((n, x) => /* @__PURE__ */ e(q, { index: x }, x)) }) })
83
+ /* @__PURE__ */ e($, { children: A && /* @__PURE__ */ e("div", { className: "ds:pointer-events-none ds:absolute ds:inset-0", children: [...Array(12)].map((n, x) => /* @__PURE__ */ e(q, { index: x }, x)) }) })
84
84
  ] }),
85
- (t === "bottom" || t === "right") && o && /* @__PURE__ */ s(V, { htmlFor: d, className: h, children: [
85
+ (t === "bottom" || t === "right") && o && /* @__PURE__ */ s(g, { htmlFor: d, className: h, children: [
86
86
  o,
87
- i && /* @__PURE__ */ e(b, { content: i, children: /* @__PURE__ */ e(g, { className: "ds:size-3.5 ds:min-w-3.5" }) })
87
+ i && /* @__PURE__ */ e(b, { content: i, children: /* @__PURE__ */ e(C, { className: "ds:size-3.5 ds:min-w-3.5" }) })
88
88
  ] })
89
89
  ] }),
90
90
  r && /* @__PURE__ */ e("div", { className: "ds:flex ds:items-center ds:justify-between ds:text-xs ds:gap-2", children: r && /* @__PURE__ */ e(
@@ -92,7 +92,7 @@ const B = u.forwardRef(
92
92
  {
93
93
  className: a(
94
94
  "ds:text-xs",
95
- l ? P?.[l] : ""
95
+ m ? S?.[m] : ""
96
96
  ),
97
97
  children: r
98
98
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Checkbox.js","sources":["../../../../src/components/Checkbox/Checkbox.tsx"],"sourcesContent":["import React, { useState } from \"react\";\nimport { Checkbox as SCheckbox } from \"@dsui/ui/components/checkbox\";\nimport { cn } from \"@dsui/ui/index\";\nimport { Tooltip } from \"../Tooltip/Tooltip\";\nimport { Label } from \"../Label\";\nimport { Info } from \"lucide-react\";\nimport { AnimatePresence } from \"motion/react\";\nimport { ConfettiPiece } from \"@/utils/css\";\nimport type { CheckedState } from \"@radix-ui/react-checkbox\";\n\nexport type CheckboxProps = Omit<\n React.ComponentPropsWithoutRef<typeof SCheckbox>,\n \"onCheckedChange\" | \"variant\" | \"size\" | \"color\" | \"icon\"\n> & {\n onCheckedChange?: (checked: CheckedState) => void;\n variant?: \"default\" | \"circle\";\n size?: \"sm\" | \"default\" | \"lg\";\n color?:\n | \"primary\"\n | \"secondary\"\n | \"accent\"\n | \"destructive\"\n | \"muted\"\n | \"success\"\n | \"error\"\n | \"warning\";\n icon?: React.ReactNode;\n label?: React.ReactNode;\n labelPosition?: \"top\" | \"left\" | \"right\" | \"bottom\";\n labelAlignment?: \"start\" | \"center\" | \"end\";\n infoTooltip?: React.ReactNode;\n helperText?: React.ReactNode;\n state?: \"default\" | \"error\" | \"success\" | \"warning\";\n animation?: \"confetti\" | undefined;\n};\n\nconst Checkbox = React.forwardRef<HTMLButtonElement, CheckboxProps>(\n (props, ref) => {\n const {\n label,\n infoTooltip,\n helperText,\n state,\n variant = \"default\",\n size = \"default\",\n color,\n labelPosition = \"right\",\n labelAlignment = \"center\",\n icon,\n animation,\n id,\n onCheckedChange,\n ...rest\n } = props;\n const [showConfetti, setShowConfetti] = useState(false);\n const generatedId = React.useId();\n const inputId = id || generatedId;\n\n // State\n const helperTextStyles = {\n default: \"ds:text-muted-foreground\",\n success: \"ds:text-success\",\n warning: \"ds:text-warning\",\n error: \"ds:text-error\",\n };\n\n const handleCheckedChange = (checked: CheckedState) => {\n if (checked) {\n setShowConfetti(true);\n setTimeout(() => setShowConfetti(false), 800);\n }\n onCheckedChange?.(checked);\n };\n\n const isVertical = labelPosition === \"top\" || labelPosition === \"bottom\";\n const flexDirection = isVertical ? \"ds:flex-col\" : \"ds:flex-row\";\n const gapClass = isVertical ? \"ds:gap-1.5\" : \"ds:gap-2\";\n\n const alignmentClass =\n labelAlignment === \"start\"\n ? \"ds:items-start\"\n : labelAlignment === \"center\"\n ? \"ds:items-center\"\n : \"ds:items-end\";\n\n const labelClass =\n \"ds:flex ds:gap-2 ds:peer-disabled:cursor-not-allowed ds:peer-disabled:opacity-70\";\n\n return (\n <div className={cn(\"ds:flex ds:flex-col ds:gap-1.5 ds:relative\", {})}>\n <div className={cn(\"ds:flex\", flexDirection, gapClass, alignmentClass)}>\n {(labelPosition === \"top\" || labelPosition === \"left\") && label && (\n <label htmlFor={inputId} className={labelClass}>\n {label}\n {infoTooltip && (\n <Tooltip content={infoTooltip}>\n <Info className=\"ds:size-3.5 ds:min-w-3.5\" />\n </Tooltip>\n )}\n </label>\n )}\n\n <div className=\"ds:relative ds:inline-flex\">\n <SCheckbox\n ref={ref}\n id={inputId}\n {...rest}\n variant={variant}\n size={size}\n color={color}\n icon={icon}\n onCheckedChange={\n animation ? handleCheckedChange : onCheckedChange\n }\n />\n\n <AnimatePresence>\n {showConfetti && (\n <div className=\"ds:pointer-events-none ds:absolute ds:inset-0\">\n {[...Array(12)].map((_, i) => (\n <ConfettiPiece key={i} index={i} />\n ))}\n </div>\n )}\n </AnimatePresence>\n </div>\n\n {(labelPosition === \"bottom\" || labelPosition === \"right\") &&\n label && (\n <Label htmlFor={inputId} className={labelClass}>\n {label}\n {infoTooltip && (\n <Tooltip content={infoTooltip}>\n <Info className=\"ds:size-3.5 ds:min-w-3.5\" />\n </Tooltip>\n )}\n </Label>\n )}\n </div>\n\n {helperText && (\n <div className=\"ds:flex ds:items-center ds:justify-between ds:text-xs ds:gap-2\">\n {helperText && (\n <p\n className={cn(\n \"ds:text-xs\",\n state ? helperTextStyles?.[state] : \"\"\n )}\n >\n {helperText}\n </p>\n )}\n </div>\n )}\n </div>\n );\n }\n);\n\nCheckbox.displayName = \"Checkbox\";\nexport default Checkbox;\n"],"names":["Checkbox","React","props","ref","label","infoTooltip","helperText","state","variant","size","color","labelPosition","labelAlignment","icon","animation","id","onCheckedChange","rest","showConfetti","setShowConfetti","useState","generatedId","inputId","helperTextStyles","handleCheckedChange","checked","isVertical","flexDirection","gapClass","alignmentClass","labelClass","cn","jsxs","Tooltip","jsx","Info","SCheckbox","AnimatePresence","_","i","ConfettiPiece","Label"],"mappings":"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"}
1
+ {"version":3,"file":"Checkbox.js","sources":["../../../../src/components/Checkbox/Checkbox.tsx"],"sourcesContent":["import React, { useState } from \"react\";\nimport { Checkbox as SCheckbox } from \"@dsui/ui/components/checkbox\";\nimport { cn } from \"@dsui/ui/index\";\nimport { Tooltip } from \"../Tooltip/Tooltip\";\nimport { Label } from \"../Label\";\nimport { Info } from \"lucide-react\";\nimport { AnimatePresence } from \"motion/react\";\nimport { ConfettiPiece } from \"@/utils/css\";\nimport type { CheckedState } from \"@radix-ui/react-checkbox\";\n\nexport type CheckboxProps = Omit<\n React.ComponentPropsWithoutRef<typeof SCheckbox>,\n \"onCheckedChange\" | \"variant\" | \"size\" | \"color\" | \"icon\"\n> & {\n onCheckedChange?: (checked: CheckedState) => void;\n variant?: \"default\" | \"circle\";\n size?: \"sm\" | \"default\" | \"lg\";\n color?:\n | \"primary\"\n | \"secondary\"\n | \"accent\"\n | \"destructive\"\n | \"muted\"\n | \"success\"\n | \"error\"\n | \"warning\";\n icon?: React.ReactNode;\n label?: React.ReactNode;\n labelPosition?: \"top\" | \"left\" | \"right\" | \"bottom\";\n labelAlignment?: \"start\" | \"center\" | \"end\";\n infoTooltip?: React.ReactNode;\n helperText?: React.ReactNode;\n state?: \"default\" | \"error\" | \"success\" | \"warning\";\n animation?: \"confetti\" | undefined;\n};\n\nconst Checkbox = React.forwardRef<HTMLButtonElement, CheckboxProps>(\n (props, ref) => {\n const {\n label,\n infoTooltip,\n helperText,\n state,\n variant = \"default\",\n size = \"default\",\n color,\n labelPosition = \"right\",\n labelAlignment = \"center\",\n icon,\n animation,\n id,\n onCheckedChange,\n ...rest\n } = props;\n const [showConfetti, setShowConfetti] = useState(false);\n const generatedId = React.useId();\n const inputId = id || generatedId;\n\n // State\n const helperTextStyles = {\n default: \"ds:text-muted-foreground\",\n success: \"ds:text-success\",\n warning: \"ds:text-warning\",\n error: \"ds:text-error\",\n };\n\n const handleCheckedChange = (checked: CheckedState) => {\n if (checked) {\n setShowConfetti(true);\n setTimeout(() => setShowConfetti(false), 800);\n }\n onCheckedChange?.(checked);\n };\n\n const isVertical = labelPosition === \"top\" || labelPosition === \"bottom\";\n const flexDirection = isVertical ? \"ds:flex-col\" : \"ds:flex-row\";\n const gapClass = isVertical ? \"ds:gap-1.5\" : \"ds:gap-2\";\n\n const alignmentClass =\n labelAlignment === \"start\"\n ? \"ds:items-start\"\n : labelAlignment === \"center\"\n ? \"ds:items-center\"\n : \"ds:items-end\";\n\n const labelClass =\n \"ds:flex ds:gap-2 ds:peer-disabled:cursor-not-allowed ds:peer-disabled:opacity-70\";\n\n return (\n <div className={cn(\"ds:flex ds:flex-col ds:gap-1.5 ds:relative\", {})}>\n <div className={cn(\"ds:flex\", flexDirection, gapClass, alignmentClass)}>\n {(labelPosition === \"top\" || labelPosition === \"left\") && label && (\n <Label htmlFor={inputId} className={labelClass}>\n {label}\n {infoTooltip && (\n <Tooltip content={infoTooltip}>\n <Info className=\"ds:size-3.5 ds:min-w-3.5\" />\n </Tooltip>\n )}\n </Label>\n )}\n\n <div className=\"ds:relative ds:inline-flex\">\n <SCheckbox\n ref={ref}\n id={inputId}\n {...rest}\n variant={variant}\n size={size}\n color={color}\n icon={icon}\n onCheckedChange={\n animation ? handleCheckedChange : onCheckedChange\n }\n />\n\n <AnimatePresence>\n {showConfetti && (\n <div className=\"ds:pointer-events-none ds:absolute ds:inset-0\">\n {[...Array(12)].map((_, i) => (\n <ConfettiPiece key={i} index={i} />\n ))}\n </div>\n )}\n </AnimatePresence>\n </div>\n\n {(labelPosition === \"bottom\" || labelPosition === \"right\") &&\n label && (\n <Label htmlFor={inputId} className={labelClass}>\n {label}\n {infoTooltip && (\n <Tooltip content={infoTooltip}>\n <Info className=\"ds:size-3.5 ds:min-w-3.5\" />\n </Tooltip>\n )}\n </Label>\n )}\n </div>\n\n {helperText && (\n <div className=\"ds:flex ds:items-center ds:justify-between ds:text-xs ds:gap-2\">\n {helperText && (\n <p\n className={cn(\n \"ds:text-xs\",\n state ? helperTextStyles?.[state] : \"\"\n )}\n >\n {helperText}\n </p>\n )}\n </div>\n )}\n </div>\n );\n }\n);\n\nCheckbox.displayName = \"Checkbox\";\nexport default Checkbox;\n"],"names":["Checkbox","React","props","ref","label","infoTooltip","helperText","state","variant","size","color","labelPosition","labelAlignment","icon","animation","id","onCheckedChange","rest","showConfetti","setShowConfetti","useState","generatedId","inputId","helperTextStyles","handleCheckedChange","checked","isVertical","flexDirection","gapClass","alignmentClass","labelClass","cn","jsxs","Label","Tooltip","jsx","Info","SCheckbox","AnimatePresence","_","i","ConfettiPiece"],"mappings":"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"}
@@ -6,13 +6,14 @@ import { cn as o } from "../../packages/ui/src/lib/utils.js";
6
6
  import { FloatingLabel as O } from "../FloatLabel.js";
7
7
  import { Info as z } from "lucide-react";
8
8
  import { Tooltip as L } from "../Tooltip/Tooltip.js";
9
- const ee = n.forwardRef(
9
+ import { Label as ee } from "../../packages/ui/src/components/label.js";
10
+ const se = n.forwardRef(
10
11
  ({
11
12
  className: N,
12
13
  label: u,
13
14
  helperText: w,
14
15
  state: f = "default",
15
- size: l = "normal",
16
+ size: r = "normal",
16
17
  isFloatLabel: t,
17
18
  infoTooltip: p,
18
19
  clearable: y = !1,
@@ -43,8 +44,8 @@ const ee = n.forwardRef(
43
44
  }, [S, c]);
44
45
  const P = n.useCallback(
45
46
  (d) => {
46
- const r = d || "";
47
- c === void 0 && _(r), I?.(r), x?.(r);
47
+ const l = d || "";
48
+ c === void 0 && _(l), I?.(l), x?.(l);
48
49
  },
49
50
  [I, x, c]
50
51
  ), Q = n.useCallback(
@@ -57,11 +58,11 @@ const ee = n.forwardRef(
57
58
  success: "ds:text-success",
58
59
  warning: "ds:text-warning",
59
60
  error: "ds:text-error"
60
- }, G = t ? l === "xl" || l === "lg" ? l : "xl" : l, W = n.useMemo(() => {
61
+ }, G = t ? r === "xl" || r === "lg" ? r : "xl" : r, W = n.useMemo(() => {
61
62
  const d = /* @__PURE__ */ new Map();
62
- return g.forEach((r) => {
63
- const e = r.group;
64
- d.has(e) || d.set(e, []), d.get(e).push(r);
63
+ return g.forEach((l) => {
64
+ const e = l.group;
65
+ d.has(e) || d.set(e, []), d.get(e).push(l);
65
66
  }), d;
66
67
  }, [g]);
67
68
  return /* @__PURE__ */ s("div", { className: N, children: /* @__PURE__ */ m(
@@ -73,7 +74,7 @@ const ee = n.forwardRef(
73
74
  }),
74
75
  children: [
75
76
  !t && u && /* @__PURE__ */ m(
76
- "label",
77
+ ee,
77
78
  {
78
79
  htmlFor: i,
79
80
  className: "ds:flex ds:gap-2 ds:text-sm ds:font-medium ds:leading-none ds:peer-disabled:cursor-not-allowed ds:peer-disabled:opacity-70",
@@ -103,7 +104,7 @@ const ee = n.forwardRef(
103
104
  className: o(
104
105
  "ds:peer ds:w-full",
105
106
  {
106
- "ds:pt-5 ds:pb-1": t && l !== "lg"
107
+ "ds:pt-5 ds:pb-1": t && r !== "lg"
107
108
  },
108
109
  N
109
110
  ),
@@ -125,14 +126,14 @@ const ee = n.forwardRef(
125
126
  O,
126
127
  {
127
128
  htmlFor: i,
128
- size: l,
129
+ size: r,
129
130
  infoTooltip: p,
130
131
  required: M,
131
132
  children: u
132
133
  }
133
134
  ),
134
- /* @__PURE__ */ s(B, { search: h, children: [...W.entries()].map(([d, r]) => d ? /* @__PURE__ */ m(n.Fragment, { children: [
135
- /* @__PURE__ */ s(F, { heading: d, children: r.map((e) => /* @__PURE__ */ s(
135
+ /* @__PURE__ */ s(B, { search: h, children: [...W.entries()].map(([d, l]) => d ? /* @__PURE__ */ m(n.Fragment, { children: [
136
+ /* @__PURE__ */ s(F, { heading: d, children: l.map((e) => /* @__PURE__ */ s(
136
137
  H,
137
138
  {
138
139
  value: e.value,
@@ -144,7 +145,7 @@ const ee = n.forwardRef(
144
145
  e.value
145
146
  )) }),
146
147
  /* @__PURE__ */ s(R, {})
147
- ] }, d) : r.map((e) => /* @__PURE__ */ s(
148
+ ] }, d) : l.map((e) => /* @__PURE__ */ s(
148
149
  H,
149
150
  {
150
151
  value: e.value,
@@ -175,14 +176,14 @@ const ee = n.forwardRef(
175
176
  className: o(
176
177
  "ds:peer ds:w-full ds:justify-start",
177
178
  {
178
- "ds:pt-5 ds:pb-1": t && l !== "lg"
179
+ "ds:pt-5 ds:pb-1": t && r !== "lg"
179
180
  }
180
181
  // className,
181
182
  ),
182
183
  size: G,
183
184
  state: f,
184
185
  dropdownClassName: o("ds:opacity-40", {
185
- "ds:translate-y-[-8px]": t && l !== "lg"
186
+ "ds:translate-y-[-8px]": t && r !== "lg"
186
187
  }),
187
188
  searchable: !!h,
188
189
  tagRender: a,
@@ -194,7 +195,7 @@ const ee = n.forwardRef(
194
195
  O,
195
196
  {
196
197
  htmlFor: i,
197
- size: l,
198
+ size: r,
198
199
  infoTooltip: p,
199
200
  required: M,
200
201
  shouldFloat: !!(c ?? V),
@@ -210,8 +211,8 @@ const ee = n.forwardRef(
210
211
  ) });
211
212
  }
212
213
  );
213
- ee.displayName = "Select";
214
+ se.displayName = "Select";
214
215
  export {
215
- ee as default
216
+ se as default
216
217
  };
217
218
  //# sourceMappingURL=Select.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Select.js","sources":["../../../../src/components/Select/Select.tsx"],"sourcesContent":["import React from \"react\";\nimport {\n MultiSelect as BaseMultiSelect,\n MultiSelectTrigger as BaseMultiSelectTrigger,\n MultiSelectValue as BaseMultiSelectValue,\n MultiSelectContent as BaseMultiSelectContent,\n MultiSelectItem as BaseMultiSelectItem,\n MultiSelectGroup as BaseMultiSelectGroup,\n MultiSelectSeparator as BaseMultiSelectSeparator,\n} from \"@dsui/ui/components/select\";\nimport {\n Combobox,\n type ComboboxProps,\n type SelectOption as SSelectOption,\n} from \"@dsui/ui/components/combobox\";\nimport { cn } from \"@dsui/ui/lib/utils\";\nimport { FloatingLabel } from \"@/components/FloatLabel\";\nimport { Info } from \"lucide-react\";\nimport { Tooltip } from \"../Tooltip/Tooltip\";\n\nexport type SelectOption = SSelectOption;\n\nexport type SelectProps = Omit<ComboboxProps, \"ref\"> & {\n label?: string;\n helperText?: React.ReactNode;\n state?: \"default\" | \"success\" | \"warning\" | \"error\";\n size?: \"xs\" | \"sm\" | \"normal\" | \"lg\" | \"xl\";\n isFloatLabel?: boolean;\n infoTooltip?: React.ReactNode;\n clearable?: boolean;\n placeholder?: string;\n options?: SelectOption[];\n tagRender?: (option: SelectOption) => React.ReactNode;\n multiple?: boolean;\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n values?: string[];\n defaultValues?: string | string[];\n onValuesChange?: (values: string[]) => void;\n search?: boolean | { placeholder?: string; emptyMessage?: string };\n clickToRemove?: boolean;\n overflowBehavior?: \"wrap\" | \"wrap-when-open\" | \"cutoff\";\n className?: string;\n disabled?: boolean;\n onChange?: (value: string | string[]) => void;\n onFocus?: (event: React.FocusEvent<HTMLInputElement>) => void;\n onBlur?: (event: React.FocusEvent<HTMLInputElement>) => void;\n required?: boolean;\n};\n\nconst Select = React.forwardRef<HTMLDivElement, SelectProps>(\n (\n {\n className,\n label,\n helperText,\n state = \"default\",\n size = \"normal\",\n isFloatLabel,\n infoTooltip,\n clearable = false,\n placeholder = \"\",\n options = [],\n tagRender,\n multiple = false,\n value,\n defaultValue,\n onValueChange,\n values,\n defaultValues,\n onValuesChange,\n search,\n clickToRemove = true,\n overflowBehavior = \"wrap-when-open\",\n disabled,\n onChange,\n onFocus,\n onBlur,\n required,\n },\n ref\n ) => {\n const selectId = React.useId();\n\n // For single select, use controlled value or internal state\n const [internalValue, setInternalValue] = React.useState(\n value ?? defaultValue ?? \"\"\n );\n\n React.useEffect(() => {\n if (!multiple && value !== undefined) {\n setInternalValue(value);\n }\n }, [multiple, value]);\n\n // Handle single select value change\n const handleSingleValueChange = React.useCallback(\n (newValue?: string | null) => {\n const val = newValue || \"\";\n if (value === undefined) {\n setInternalValue(val);\n }\n onValueChange?.(val);\n onChange?.(val);\n },\n [onValueChange, onChange, value]\n );\n\n // Handle multi select values change\n const handleMultiValuesChange = React.useCallback(\n (newValues: string[]) => {\n onValuesChange?.(newValues);\n onChange?.(newValues);\n },\n [onValuesChange, onChange]\n );\n\n // Helper text styles\n const helperTextStyles = {\n default: \"ds:text-muted-foreground\",\n success: \"ds:text-success\",\n warning: \"ds:text-warning\",\n error: \"ds:text-error\",\n };\n\n // Calculate current size\n const currentSize = isFloatLabel\n ? size === \"xl\" || size === \"lg\"\n ? size\n : \"xl\"\n : size;\n\n // Group options by group property\n const groupedOptions = React.useMemo(() => {\n const groups = new Map<string | undefined, SelectOption[]>();\n options.forEach((option) => {\n const group = option.group;\n if (!groups.has(group)) {\n groups.set(group, []);\n }\n groups.get(group)!.push(option);\n });\n return groups;\n }, [options]);\n\n return (\n <div className={className}>\n <div\n ref={ref}\n className={cn(\"ds:flex ds:flex-col ds:gap-1.5 ds:relative\", {\n \"ds:floating-label ds:relative\": isFloatLabel,\n })}\n >\n {!isFloatLabel && label && (\n <label\n htmlFor={selectId}\n className=\"ds:flex ds:gap-2 ds:text-sm ds:font-medium ds:leading-none ds:peer-disabled:cursor-not-allowed ds:peer-disabled:opacity-70\"\n >\n <span>\n {label}\n {required && <span className=\"ds:text-error ds:ml-0.5\">*</span>}\n </span>\n {infoTooltip && (\n <Tooltip content={infoTooltip}>\n <Info className=\"ds:size-3.5 ds:min-w-3.5\" />\n </Tooltip>\n )}\n </label>\n )}\n\n <div className=\"ds:relative\">\n {!multiple ? (\n // Single Mode\n <>\n <Combobox\n value={value ?? internalValue}\n options={options}\n placeHolder={placeholder}\n emptyText={\n typeof search === \"object\"\n ? search.emptyMessage\n : \"No results found\"\n }\n onChange={handleSingleValueChange}\n clearable={clearable}\n disabled={disabled}\n id={selectId}\n className={cn(\n \"ds:peer ds:w-full ds:justify-start\",\n {\n \"ds:pt-5 ds:pb-1\": isFloatLabel && size !== \"lg\",\n }\n // className,\n )}\n size={currentSize}\n state={state}\n dropdownClassName={cn(\"ds:opacity-40\", {\n \"ds:translate-y-[-8px]\": isFloatLabel && size !== \"lg\",\n })}\n searchable={!!search}\n tagRender={tagRender}\n onFocus={onFocus}\n onBlur={onBlur}\n />\n {isFloatLabel && (\n <FloatingLabel\n htmlFor={selectId}\n size={size}\n infoTooltip={infoTooltip}\n required={required}\n shouldFloat={!!(value ?? internalValue)}\n className=\"ds:pointer-events-none\"\n >\n {label}\n </FloatingLabel>\n )}\n </>\n ) : (\n // Multi Mode\n <BaseMultiSelect\n values={values}\n defaultValues={\n typeof defaultValues === \"string\"\n ? [defaultValues]\n : defaultValues\n }\n onValuesChange={handleMultiValuesChange}\n >\n <BaseMultiSelectTrigger\n id={selectId}\n disabled={disabled}\n className={cn(\n \"ds:peer ds:w-full\",\n {\n \"ds:pt-5 ds:pb-1\": isFloatLabel && size !== \"lg\",\n },\n className\n )}\n size={currentSize}\n state={state}\n onFocus={onFocus}\n onBlur={onBlur}\n >\n <BaseMultiSelectValue\n placeholder={placeholder}\n clickToRemove={clickToRemove && clearable}\n overflowBehavior={overflowBehavior}\n />\n </BaseMultiSelectTrigger>\n\n {isFloatLabel && (\n <FloatingLabel\n htmlFor={selectId}\n size={size}\n infoTooltip={infoTooltip}\n required={required}\n >\n {label}\n </FloatingLabel>\n )}\n\n <BaseMultiSelectContent search={search}>\n {[...groupedOptions.entries()].map(([group, items]) => {\n if (group) {\n return (\n <React.Fragment key={group}>\n <BaseMultiSelectGroup heading={group}>\n {items.map((option) => (\n <BaseMultiSelectItem\n key={option.value}\n value={option.value}\n disabled={option?.disabled}\n icon={option?.icon}\n tagRender={!!tagRender}\n >\n {tagRender ? tagRender(option) : option.label}\n </BaseMultiSelectItem>\n ))}\n </BaseMultiSelectGroup>\n <BaseMultiSelectSeparator />\n </React.Fragment>\n );\n }\n return items.map((option) => (\n <BaseMultiSelectItem\n key={option.value}\n value={option.value}\n disabled={option?.disabled}\n icon={option?.icon}\n tagRender={!!tagRender}\n >\n {tagRender ? tagRender(option) : option.label}\n </BaseMultiSelectItem>\n ));\n })}\n </BaseMultiSelectContent>\n </BaseMultiSelect>\n )}\n </div>\n\n {helperText && (\n <p className={cn(\"ds:text-xs\", state ? helperTextStyles[state] : \"\")}>\n {helperText}\n </p>\n )}\n </div>\n </div>\n );\n }\n);\n\nSelect.displayName = \"Select\";\nexport default Select;\n"],"names":["Select","React","className","label","helperText","state","size","isFloatLabel","infoTooltip","clearable","placeholder","options","tagRender","multiple","value","defaultValue","onValueChange","values","defaultValues","onValuesChange","search","clickToRemove","overflowBehavior","disabled","onChange","onFocus","onBlur","required","ref","selectId","internalValue","setInternalValue","handleSingleValueChange","newValue","val","handleMultiValuesChange","newValues","helperTextStyles","currentSize","groupedOptions","groups","option","group","jsx","jsxs","cn","Tooltip","Info","BaseMultiSelect","BaseMultiSelectTrigger","BaseMultiSelectValue","FloatingLabel","BaseMultiSelectContent","items","BaseMultiSelectGroup","BaseMultiSelectItem","BaseMultiSelectSeparator","Fragment","Combobox"],"mappings":";;;;;;;;AAmDA,MAAMA,KAASC,EAAM;AAAA,EACnB,CACE;AAAA,IACE,WAAAC;AAAA,IACA,OAAAC;AAAA,IACA,YAAAC;AAAA,IACA,OAAAC,IAAQ;AAAA,IACR,MAAAC,IAAO;AAAA,IACP,cAAAC;AAAA,IACA,aAAAC;AAAA,IACA,WAAAC,IAAY;AAAA,IACZ,aAAAC,IAAc;AAAA,IACd,SAAAC,IAAU,CAAA;AAAA,IACV,WAAAC;AAAA,IACA,UAAAC,IAAW;AAAA,IACX,OAAAC;AAAA,IACA,cAAAC;AAAA,IACA,eAAAC;AAAA,IACA,QAAAC;AAAA,IACA,eAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,QAAAC;AAAA,IACA,eAAAC,IAAgB;AAAA,IAChB,kBAAAC,IAAmB;AAAA,IACnB,UAAAC;AAAA,IACA,UAAAC;AAAA,IACA,SAAAC;AAAA,IACA,QAAAC;AAAA,IACA,UAAAC;AAAA,EAAA,GAEFC,MACG;AACH,UAAMC,IAAW5B,EAAM,MAAA,GAGjB,CAAC6B,GAAeC,CAAgB,IAAI9B,EAAM;AAAA,MAC9Ca,KAASC,KAAgB;AAAA,IAAA;AAG3Bd,IAAAA,EAAM,UAAU,MAAM;AACpB,MAAI,CAACY,KAAYC,MAAU,UACzBiB,EAAiBjB,CAAK;AAAA,IAE1B,GAAG,CAACD,GAAUC,CAAK,CAAC;AAGpB,UAAMkB,IAA0B/B,EAAM;AAAA,MACpC,CAACgC,MAA6B;AAC5B,cAAMC,IAAMD,KAAY;AACxB,QAAInB,MAAU,UACZiB,EAAiBG,CAAG,GAEtBlB,IAAgBkB,CAAG,GACnBV,IAAWU,CAAG;AAAA,MAChB;AAAA,MACA,CAAClB,GAAeQ,GAAUV,CAAK;AAAA,IAAA,GAI3BqB,IAA0BlC,EAAM;AAAA,MACpC,CAACmC,MAAwB;AACvB,QAAAjB,IAAiBiB,CAAS,GAC1BZ,IAAWY,CAAS;AAAA,MACtB;AAAA,MACA,CAACjB,GAAgBK,CAAQ;AAAA,IAAA,GAIrBa,IAAmB;AAAA,MACvB,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,MACT,OAAO;AAAA,IAAA,GAIHC,IAAc/B,IAChBD,MAAS,QAAQA,MAAS,OACxBA,IACA,OACFA,GAGEiC,IAAiBtC,EAAM,QAAQ,MAAM;AACzC,YAAMuC,wBAAa,IAAA;AACnB,aAAA7B,EAAQ,QAAQ,CAAC8B,MAAW;AAC1B,cAAMC,IAAQD,EAAO;AACrB,QAAKD,EAAO,IAAIE,CAAK,KACnBF,EAAO,IAAIE,GAAO,EAAE,GAEtBF,EAAO,IAAIE,CAAK,EAAG,KAAKD,CAAM;AAAA,MAChC,CAAC,GACMD;AAAA,IACT,GAAG,CAAC7B,CAAO,CAAC;AAEZ,WACE,gBAAAgC,EAAC,SAAI,WAAAzC,GACH,UAAA,gBAAA0C;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAhB;AAAA,QACA,WAAWiB,EAAG,8CAA8C;AAAA,UAC1D,iCAAiCtC;AAAA,QAAA,CAClC;AAAA,QAEA,UAAA;AAAA,UAAA,CAACA,KAAgBJ,KAChB,gBAAAyC;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,SAASf;AAAA,cACT,WAAU;AAAA,cAEV,UAAA;AAAA,gBAAA,gBAAAe,EAAC,QAAA,EACE,UAAA;AAAA,kBAAAzC;AAAA,kBACAwB,KAAY,gBAAAgB,EAAC,QAAA,EAAK,WAAU,2BAA0B,UAAA,IAAA,CAAC;AAAA,gBAAA,GAC1D;AAAA,gBACCnC,uBACEsC,GAAA,EAAQ,SAAStC,GAChB,UAAA,gBAAAmC,EAACI,GAAA,EAAK,WAAU,2BAAA,CAA2B,EAAA,CAC7C;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAKN,gBAAAJ,EAAC,OAAA,EAAI,WAAU,eACZ,UAAC9B;AAAA;AAAA,YAgDA,gBAAA+B;AAAA,cAACI;AAAAA,cAAA;AAAA,gBACC,QAAA/B;AAAA,gBACA,eACE,OAAOC,KAAkB,WACrB,CAACA,CAAa,IACdA;AAAA,gBAEN,gBAAgBiB;AAAA,gBAEhB,UAAA;AAAA,kBAAA,gBAAAQ;AAAA,oBAACM;AAAAA,oBAAA;AAAA,sBACC,IAAIpB;AAAA,sBACJ,UAAAN;AAAA,sBACA,WAAWsB;AAAA,wBACT;AAAA,wBACA;AAAA,0BACE,mBAAmBtC,KAAgBD,MAAS;AAAA,wBAAA;AAAA,wBAE9CJ;AAAA,sBAAA;AAAA,sBAEF,MAAMoC;AAAA,sBACN,OAAAjC;AAAA,sBACA,SAAAoB;AAAA,sBACA,QAAAC;AAAA,sBAEA,UAAA,gBAAAiB;AAAA,wBAACO;AAAAA,wBAAA;AAAA,0BACC,aAAAxC;AAAA,0BACA,eAAeW,KAAiBZ;AAAA,0BAChC,kBAAAa;AAAA,wBAAA;AAAA,sBAAA;AAAA,oBACF;AAAA,kBAAA;AAAA,kBAGDf,KACC,gBAAAoC;AAAA,oBAACQ;AAAA,oBAAA;AAAA,sBACC,SAAStB;AAAA,sBACT,MAAAvB;AAAA,sBACA,aAAAE;AAAA,sBACA,UAAAmB;AAAA,sBAEC,UAAAxB;AAAA,oBAAA;AAAA,kBAAA;AAAA,kBAIL,gBAAAwC,EAACS,GAAA,EAAuB,QAAAhC,GACrB,UAAA,CAAC,GAAGmB,EAAe,QAAA,CAAS,EAAE,IAAI,CAAC,CAACG,GAAOW,CAAK,MAC3CX,IAEA,gBAAAE,EAAC3C,EAAM,UAAN,EACC,UAAA;AAAA,oBAAA,gBAAA0C,EAACW,KAAqB,SAASZ,GAC5B,UAAAW,EAAM,IAAI,CAACZ,MACV,gBAAAE;AAAA,sBAACY;AAAAA,sBAAA;AAAA,wBAEC,OAAOd,EAAO;AAAA,wBACd,UAAUA,GAAQ;AAAA,wBAClB,MAAMA,GAAQ;AAAA,wBACd,WAAW,CAAC,CAAC7B;AAAA,wBAEZ,UAAAA,IAAYA,EAAU6B,CAAM,IAAIA,EAAO;AAAA,sBAAA;AAAA,sBANnCA,EAAO;AAAA,oBAAA,CAQf,GACH;AAAA,sCACCe,GAAA,CAAA,CAAyB;AAAA,kBAAA,EAAA,GAdPd,CAerB,IAGGW,EAAM,IAAI,CAACZ,MAChB,gBAAAE;AAAA,oBAACY;AAAAA,oBAAA;AAAA,sBAEC,OAAOd,EAAO;AAAA,sBACd,UAAUA,GAAQ;AAAA,sBAClB,MAAMA,GAAQ;AAAA,sBACd,WAAW,CAAC,CAAC7B;AAAA,sBAEZ,UAAAA,IAAYA,EAAU6B,CAAM,IAAIA,EAAO;AAAA,oBAAA;AAAA,oBANnCA,EAAO;AAAA,kBAAA,CAQf,CACF,EAAA,CACH;AAAA,gBAAA;AAAA,cAAA;AAAA,YAAA;AAAA;AAAA;AAAA,YA1HF,gBAAAG,EAAAa,GAAA,EACE,UAAA;AAAA,cAAA,gBAAAd;AAAA,gBAACe;AAAA,gBAAA;AAAA,kBACC,OAAO5C,KAASgB;AAAA,kBAChB,SAAAnB;AAAA,kBACA,aAAaD;AAAA,kBACb,WACE,OAAOU,KAAW,WACdA,EAAO,eACP;AAAA,kBAEN,UAAUY;AAAA,kBACV,WAAAvB;AAAA,kBACA,UAAAc;AAAA,kBACA,IAAIM;AAAA,kBACJ,WAAWgB;AAAA,oBACT;AAAA,oBACA;AAAA,sBACE,mBAAmBtC,KAAgBD,MAAS;AAAA,oBAAA;AAAA;AAAA,kBAC9C;AAAA,kBAGF,MAAMgC;AAAA,kBACN,OAAAjC;AAAA,kBACA,mBAAmBwC,EAAG,iBAAiB;AAAA,oBACrC,yBAAyBtC,KAAgBD,MAAS;AAAA,kBAAA,CACnD;AAAA,kBACD,YAAY,CAAC,CAACc;AAAA,kBACd,WAAAR;AAAA,kBACA,SAAAa;AAAA,kBACA,QAAAC;AAAA,gBAAA;AAAA,cAAA;AAAA,cAEDnB,KACC,gBAAAoC;AAAA,gBAACQ;AAAA,gBAAA;AAAA,kBACC,SAAStB;AAAA,kBACT,MAAAvB;AAAA,kBACA,aAAAE;AAAA,kBACA,UAAAmB;AAAA,kBACA,aAAa,CAAC,EAAEb,KAASgB;AAAA,kBACzB,WAAU;AAAA,kBAET,UAAA3B;AAAA,gBAAA;AAAA,cAAA;AAAA,YACH,EAAA,CAEJ;AAAA,aAkFJ;AAAA,UAECC,KACC,gBAAAuC,EAAC,KAAA,EAAE,WAAWE,EAAG,cAAcxC,IAAQgC,EAAiBhC,CAAK,IAAI,EAAE,GAChE,UAAAD,EAAA,CACH;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA,GAGN;AAAA,EAEJ;AACF;AAEAJ,GAAO,cAAc;"}
1
+ {"version":3,"file":"Select.js","sources":["../../../../src/components/Select/Select.tsx"],"sourcesContent":["import React from \"react\";\nimport {\n MultiSelect as BaseMultiSelect,\n MultiSelectTrigger as BaseMultiSelectTrigger,\n MultiSelectValue as BaseMultiSelectValue,\n MultiSelectContent as BaseMultiSelectContent,\n MultiSelectItem as BaseMultiSelectItem,\n MultiSelectGroup as BaseMultiSelectGroup,\n MultiSelectSeparator as BaseMultiSelectSeparator,\n} from \"@dsui/ui/components/select\";\nimport {\n Combobox,\n type ComboboxProps,\n type SelectOption as SSelectOption,\n} from \"@dsui/ui/components/combobox\";\nimport { cn } from \"@dsui/ui/lib/utils\";\nimport { FloatingLabel } from \"@/components/FloatLabel\";\nimport { Info } from \"lucide-react\";\nimport { Tooltip } from \"../Tooltip/Tooltip\";\nimport { Label } from \"../Label\";\n\nexport type SelectOption = SSelectOption;\n\nexport type SelectProps = Omit<ComboboxProps, \"ref\"> & {\n label?: string;\n helperText?: React.ReactNode;\n state?: \"default\" | \"success\" | \"warning\" | \"error\";\n size?: \"xs\" | \"sm\" | \"normal\" | \"lg\" | \"xl\";\n isFloatLabel?: boolean;\n infoTooltip?: React.ReactNode;\n clearable?: boolean;\n placeholder?: string;\n options?: SelectOption[];\n tagRender?: (option: SelectOption) => React.ReactNode;\n multiple?: boolean;\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n values?: string[];\n defaultValues?: string | string[];\n onValuesChange?: (values: string[]) => void;\n search?: boolean | { placeholder?: string; emptyMessage?: string };\n clickToRemove?: boolean;\n overflowBehavior?: \"wrap\" | \"wrap-when-open\" | \"cutoff\";\n className?: string;\n disabled?: boolean;\n onChange?: (value: string | string[]) => void;\n onFocus?: (event: React.FocusEvent<HTMLInputElement>) => void;\n onBlur?: (event: React.FocusEvent<HTMLInputElement>) => void;\n required?: boolean;\n};\n\nconst Select = React.forwardRef<HTMLDivElement, SelectProps>(\n (\n {\n className,\n label,\n helperText,\n state = \"default\",\n size = \"normal\",\n isFloatLabel,\n infoTooltip,\n clearable = false,\n placeholder = \"\",\n options = [],\n tagRender,\n multiple = false,\n value,\n defaultValue,\n onValueChange,\n values,\n defaultValues,\n onValuesChange,\n search,\n clickToRemove = true,\n overflowBehavior = \"wrap-when-open\",\n disabled,\n onChange,\n onFocus,\n onBlur,\n required,\n },\n ref\n ) => {\n const selectId = React.useId();\n\n // For single select, use controlled value or internal state\n const [internalValue, setInternalValue] = React.useState(\n value ?? defaultValue ?? \"\"\n );\n\n React.useEffect(() => {\n if (!multiple && value !== undefined) {\n setInternalValue(value);\n }\n }, [multiple, value]);\n\n // Handle single select value change\n const handleSingleValueChange = React.useCallback(\n (newValue?: string | null) => {\n const val = newValue || \"\";\n if (value === undefined) {\n setInternalValue(val);\n }\n onValueChange?.(val);\n onChange?.(val);\n },\n [onValueChange, onChange, value]\n );\n\n // Handle multi select values change\n const handleMultiValuesChange = React.useCallback(\n (newValues: string[]) => {\n onValuesChange?.(newValues);\n onChange?.(newValues);\n },\n [onValuesChange, onChange]\n );\n\n // Helper text styles\n const helperTextStyles = {\n default: \"ds:text-muted-foreground\",\n success: \"ds:text-success\",\n warning: \"ds:text-warning\",\n error: \"ds:text-error\",\n };\n\n // Calculate current size\n const currentSize = isFloatLabel\n ? size === \"xl\" || size === \"lg\"\n ? size\n : \"xl\"\n : size;\n\n // Group options by group property\n const groupedOptions = React.useMemo(() => {\n const groups = new Map<string | undefined, SelectOption[]>();\n options.forEach((option) => {\n const group = option.group;\n if (!groups.has(group)) {\n groups.set(group, []);\n }\n groups.get(group)!.push(option);\n });\n return groups;\n }, [options]);\n\n return (\n <div className={className}>\n <div\n ref={ref}\n className={cn(\"ds:flex ds:flex-col ds:gap-1.5 ds:relative\", {\n \"ds:floating-label ds:relative\": isFloatLabel,\n })}\n >\n {!isFloatLabel && label && (\n <Label\n htmlFor={selectId}\n className=\"ds:flex ds:gap-2 ds:text-sm ds:font-medium ds:leading-none ds:peer-disabled:cursor-not-allowed ds:peer-disabled:opacity-70\"\n >\n <span>\n {label}\n {required && <span className=\"ds:text-error ds:ml-0.5\">*</span>}\n </span>\n {infoTooltip && (\n <Tooltip content={infoTooltip}>\n <Info className=\"ds:size-3.5 ds:min-w-3.5\" />\n </Tooltip>\n )}\n </Label>\n )}\n\n <div className=\"ds:relative\">\n {!multiple ? (\n // Single Mode\n <>\n <Combobox\n value={value ?? internalValue}\n options={options}\n placeHolder={placeholder}\n emptyText={\n typeof search === \"object\"\n ? search.emptyMessage\n : \"No results found\"\n }\n onChange={handleSingleValueChange}\n clearable={clearable}\n disabled={disabled}\n id={selectId}\n className={cn(\n \"ds:peer ds:w-full ds:justify-start\",\n {\n \"ds:pt-5 ds:pb-1\": isFloatLabel && size !== \"lg\",\n }\n // className,\n )}\n size={currentSize}\n state={state}\n dropdownClassName={cn(\"ds:opacity-40\", {\n \"ds:translate-y-[-8px]\": isFloatLabel && size !== \"lg\",\n })}\n searchable={!!search}\n tagRender={tagRender}\n onFocus={onFocus}\n onBlur={onBlur}\n />\n {isFloatLabel && (\n <FloatingLabel\n htmlFor={selectId}\n size={size}\n infoTooltip={infoTooltip}\n required={required}\n shouldFloat={!!(value ?? internalValue)}\n className=\"ds:pointer-events-none\"\n >\n {label}\n </FloatingLabel>\n )}\n </>\n ) : (\n // Multi Mode\n <BaseMultiSelect\n values={values}\n defaultValues={\n typeof defaultValues === \"string\"\n ? [defaultValues]\n : defaultValues\n }\n onValuesChange={handleMultiValuesChange}\n >\n <BaseMultiSelectTrigger\n id={selectId}\n disabled={disabled}\n className={cn(\n \"ds:peer ds:w-full\",\n {\n \"ds:pt-5 ds:pb-1\": isFloatLabel && size !== \"lg\",\n },\n className\n )}\n size={currentSize}\n state={state}\n onFocus={onFocus}\n onBlur={onBlur}\n >\n <BaseMultiSelectValue\n placeholder={placeholder}\n clickToRemove={clickToRemove && clearable}\n overflowBehavior={overflowBehavior}\n />\n </BaseMultiSelectTrigger>\n\n {isFloatLabel && (\n <FloatingLabel\n htmlFor={selectId}\n size={size}\n infoTooltip={infoTooltip}\n required={required}\n >\n {label}\n </FloatingLabel>\n )}\n\n <BaseMultiSelectContent search={search}>\n {[...groupedOptions.entries()].map(([group, items]) => {\n if (group) {\n return (\n <React.Fragment key={group}>\n <BaseMultiSelectGroup heading={group}>\n {items.map((option) => (\n <BaseMultiSelectItem\n key={option.value}\n value={option.value}\n disabled={option?.disabled}\n icon={option?.icon}\n tagRender={!!tagRender}\n >\n {tagRender ? tagRender(option) : option.label}\n </BaseMultiSelectItem>\n ))}\n </BaseMultiSelectGroup>\n <BaseMultiSelectSeparator />\n </React.Fragment>\n );\n }\n return items.map((option) => (\n <BaseMultiSelectItem\n key={option.value}\n value={option.value}\n disabled={option?.disabled}\n icon={option?.icon}\n tagRender={!!tagRender}\n >\n {tagRender ? tagRender(option) : option.label}\n </BaseMultiSelectItem>\n ));\n })}\n </BaseMultiSelectContent>\n </BaseMultiSelect>\n )}\n </div>\n\n {helperText && (\n <p className={cn(\"ds:text-xs\", state ? helperTextStyles[state] : \"\")}>\n {helperText}\n </p>\n )}\n </div>\n </div>\n );\n }\n);\n\nSelect.displayName = \"Select\";\nexport default Select;\n"],"names":["Select","React","className","label","helperText","state","size","isFloatLabel","infoTooltip","clearable","placeholder","options","tagRender","multiple","value","defaultValue","onValueChange","values","defaultValues","onValuesChange","search","clickToRemove","overflowBehavior","disabled","onChange","onFocus","onBlur","required","ref","selectId","internalValue","setInternalValue","handleSingleValueChange","newValue","val","handleMultiValuesChange","newValues","helperTextStyles","currentSize","groupedOptions","groups","option","group","jsx","jsxs","cn","Label","Tooltip","Info","BaseMultiSelect","BaseMultiSelectTrigger","BaseMultiSelectValue","FloatingLabel","BaseMultiSelectContent","items","BaseMultiSelectGroup","BaseMultiSelectItem","BaseMultiSelectSeparator","Fragment","Combobox"],"mappings":"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"}