@mdigital_ui/ui 0.2.9 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/dist/accordion/index.js +1 -1
  2. package/dist/avatar/index.js +1 -1
  3. package/dist/badge/index.js +1 -1
  4. package/dist/breadcrumbs/index.js +1 -1
  5. package/dist/button/index.js +1 -1
  6. package/dist/button-group/index.js +1 -1
  7. package/dist/card/index.js +2 -1
  8. package/dist/cascader/index.js +2 -1
  9. package/dist/checkbox/index.js +1 -1
  10. package/dist/checkbox-group/index.js +1 -1
  11. package/dist/{chunk-4LSKRZOT.js → chunk-2PNLIQYM.js} +21 -4
  12. package/dist/chunk-2PNLIQYM.js.map +1 -0
  13. package/dist/{chunk-43RDFTC5.js → chunk-4TQ4BZ3S.js} +6 -4
  14. package/dist/chunk-4TQ4BZ3S.js.map +1 -0
  15. package/dist/{chunk-IMGVPMHJ.js → chunk-5JOJBDET.js} +47 -40
  16. package/dist/chunk-5JOJBDET.js.map +1 -0
  17. package/dist/{chunk-W3ES3UPV.js → chunk-5VORB55Y.js} +19 -3
  18. package/dist/chunk-5VORB55Y.js.map +1 -0
  19. package/dist/{chunk-3UCZ4GMN.js → chunk-6HGUDHHE.js} +4 -2
  20. package/dist/chunk-6HGUDHHE.js.map +1 -0
  21. package/dist/chunk-6YVT3AL2.js +211 -0
  22. package/dist/chunk-6YVT3AL2.js.map +1 -0
  23. package/dist/{chunk-CPDVBHA3.js → chunk-7KA7JSRX.js} +133 -23
  24. package/dist/chunk-7KA7JSRX.js.map +1 -0
  25. package/dist/chunk-CO766H7F.js +348 -0
  26. package/dist/chunk-CO766H7F.js.map +1 -0
  27. package/dist/{chunk-JIREY2VB.js → chunk-DHXVNO75.js} +3 -3
  28. package/dist/{chunk-JIREY2VB.js.map → chunk-DHXVNO75.js.map} +1 -1
  29. package/dist/chunk-DRL4CJMI.js +147 -0
  30. package/dist/chunk-DRL4CJMI.js.map +1 -0
  31. package/dist/{chunk-YAAV7FQG.js → chunk-FJPMIXWU.js} +15 -4
  32. package/dist/chunk-FJPMIXWU.js.map +1 -0
  33. package/dist/{chunk-MXDTUN3V.js → chunk-FZLFCT6Q.js} +141 -106
  34. package/dist/chunk-FZLFCT6Q.js.map +1 -0
  35. package/dist/chunk-GGDDE7LC.js +303 -0
  36. package/dist/chunk-GGDDE7LC.js.map +1 -0
  37. package/dist/{chunk-MRFCITKK.js → chunk-GVEEUHM2.js} +20 -16
  38. package/dist/chunk-GVEEUHM2.js.map +1 -0
  39. package/dist/{chunk-RYKVZFGB.js → chunk-HLY4VDIX.js} +7 -7
  40. package/dist/chunk-HLY4VDIX.js.map +1 -0
  41. package/dist/{chunk-2OUGJBXK.js → chunk-IVOMN6DV.js} +60 -14
  42. package/dist/chunk-IVOMN6DV.js.map +1 -0
  43. package/dist/{chunk-REKWBXAQ.js → chunk-J6IJBRYT.js} +12 -11
  44. package/dist/chunk-J6IJBRYT.js.map +1 -0
  45. package/dist/{chunk-LMR7TKDJ.js → chunk-KPM72QBO.js} +27 -10
  46. package/dist/chunk-KPM72QBO.js.map +1 -0
  47. package/dist/{chunk-QF3NJUUG.js → chunk-L572AMB3.js} +53 -8
  48. package/dist/chunk-L572AMB3.js.map +1 -0
  49. package/dist/{chunk-UUP7YGOS.js → chunk-LX4FDH4J.js} +3 -3
  50. package/dist/chunk-LX4FDH4J.js.map +1 -0
  51. package/dist/chunk-OL2GU2O3.js +293 -0
  52. package/dist/chunk-OL2GU2O3.js.map +1 -0
  53. package/dist/{chunk-N32VWE6V.js → chunk-RLYGJN56.js} +64 -60
  54. package/dist/chunk-RLYGJN56.js.map +1 -0
  55. package/dist/{chunk-X5SCI7KH.js → chunk-RZVEKAFR.js} +18 -6
  56. package/dist/chunk-RZVEKAFR.js.map +1 -0
  57. package/dist/chunk-T4MGK3WE.js +143 -0
  58. package/dist/chunk-T4MGK3WE.js.map +1 -0
  59. package/dist/{chunk-YFK2DHCY.js → chunk-TBMY5EQC.js} +10 -6
  60. package/dist/chunk-TBMY5EQC.js.map +1 -0
  61. package/dist/{chunk-PXOHJJBE.js → chunk-UHVPOGNC.js} +44 -9
  62. package/dist/chunk-UHVPOGNC.js.map +1 -0
  63. package/dist/{chunk-CMGCJXE5.js → chunk-UTKVWE76.js} +15 -4
  64. package/dist/chunk-UTKVWE76.js.map +1 -0
  65. package/dist/chunk-XQJ6HZ4Q.js +310 -0
  66. package/dist/chunk-XQJ6HZ4Q.js.map +1 -0
  67. package/dist/chunk-YJOLLSHH.js +132 -0
  68. package/dist/chunk-YJOLLSHH.js.map +1 -0
  69. package/dist/chunk-YWGWFGCY.js +332 -0
  70. package/dist/chunk-YWGWFGCY.js.map +1 -0
  71. package/dist/{chunk-FIGSNRWY.js → chunk-ZFYEAPEL.js} +40 -13
  72. package/dist/chunk-ZFYEAPEL.js.map +1 -0
  73. package/dist/chunk-ZRSSFP52.js +345 -0
  74. package/dist/chunk-ZRSSFP52.js.map +1 -0
  75. package/dist/clipboard/index.js +2 -1
  76. package/dist/collapse/index.js +2 -1
  77. package/dist/command/index.js +1 -1
  78. package/dist/context-menu/index.js +1 -1
  79. package/dist/date-picker/index.js +1 -1
  80. package/dist/descriptions/index.js +1 -1
  81. package/dist/float-input/index.js +6 -0
  82. package/dist/form/index.js +4 -0
  83. package/dist/form/index.js.map +1 -0
  84. package/dist/index.js +38 -30
  85. package/dist/index.js.map +1 -1
  86. package/dist/link/index.js +4 -0
  87. package/dist/link/index.js.map +1 -0
  88. package/dist/menubar/index.js +6 -0
  89. package/dist/menubar/index.js.map +1 -0
  90. package/dist/navigation-menu/index.js +4 -0
  91. package/dist/navigation-menu/index.js.map +1 -0
  92. package/dist/number-input/index.js +6 -0
  93. package/dist/number-input/index.js.map +1 -0
  94. package/dist/pagination/index.js +1 -1
  95. package/dist/progress/index.js +1 -1
  96. package/dist/scroll-area/index.js +4 -0
  97. package/dist/scroll-area/index.js.map +1 -0
  98. package/dist/select/index.js +1 -1
  99. package/dist/slider/index.js +1 -1
  100. package/dist/table/index.js +4 -4
  101. package/dist/timeline/index.js +4 -0
  102. package/dist/timeline/index.js.map +1 -0
  103. package/dist/toast/index.js +5 -0
  104. package/dist/toast/index.js.map +1 -0
  105. package/dist/transfer/index.js +2 -2
  106. package/dist/upload/index.js +1 -1
  107. package/package.json +72 -14
  108. package/dist/chart/index.js +0 -4
  109. package/dist/chunk-2OUGJBXK.js.map +0 -1
  110. package/dist/chunk-3UCZ4GMN.js.map +0 -1
  111. package/dist/chunk-43RDFTC5.js.map +0 -1
  112. package/dist/chunk-4LSKRZOT.js.map +0 -1
  113. package/dist/chunk-C5YO5VZS.js +0 -448
  114. package/dist/chunk-C5YO5VZS.js.map +0 -1
  115. package/dist/chunk-CMGCJXE5.js.map +0 -1
  116. package/dist/chunk-CPDVBHA3.js.map +0 -1
  117. package/dist/chunk-FIGSNRWY.js.map +0 -1
  118. package/dist/chunk-H47C2ENJ.js +0 -215
  119. package/dist/chunk-H47C2ENJ.js.map +0 -1
  120. package/dist/chunk-IMGVPMHJ.js.map +0 -1
  121. package/dist/chunk-LMR7TKDJ.js.map +0 -1
  122. package/dist/chunk-MRFCITKK.js.map +0 -1
  123. package/dist/chunk-MXDTUN3V.js.map +0 -1
  124. package/dist/chunk-N32VWE6V.js.map +0 -1
  125. package/dist/chunk-PXOHJJBE.js.map +0 -1
  126. package/dist/chunk-QF3NJUUG.js.map +0 -1
  127. package/dist/chunk-REKWBXAQ.js.map +0 -1
  128. package/dist/chunk-RYKVZFGB.js.map +0 -1
  129. package/dist/chunk-UUP7YGOS.js.map +0 -1
  130. package/dist/chunk-W3ES3UPV.js.map +0 -1
  131. package/dist/chunk-X5SCI7KH.js.map +0 -1
  132. package/dist/chunk-YAAV7FQG.js.map +0 -1
  133. package/dist/chunk-YFK2DHCY.js.map +0 -1
  134. package/dist/index.d.ts +0 -5220
  135. package/dist/styles/base.css +0 -5906
  136. package/dist/styles/global.css +0 -6401
  137. package/dist/styles/themes/dark.css +0 -93
  138. package/dist/styles/themes/light.css +0 -89
  139. package/dist/styles/themes/presets/corporate.css +0 -126
  140. package/dist/styles/themes/presets/minimal.css +0 -126
  141. package/dist/styles/themes/presets/vibrant.css +0 -126
  142. /package/dist/{chart → float-input}/index.js.map +0 -0
@@ -1,4 +1,4 @@
1
- export { accordion_default as default } from '../chunk-QF3NJUUG.js';
1
+ export { accordion_default as default } from '../chunk-L572AMB3.js';
2
2
  import '../chunk-LK4EPTNG.js';
3
3
  import '../chunk-NGYLRX6F.js';
4
4
  //# sourceMappingURL=index.js.map
@@ -1,4 +1,4 @@
1
- export { Avatar, AvatarGroup, avatar_default as default } from '../chunk-UUP7YGOS.js';
1
+ export { Avatar, AvatarGroup, avatar_default as default } from '../chunk-LX4FDH4J.js';
2
2
  import '../chunk-NGYLRX6F.js';
3
3
  //# sourceMappingURL=index.js.map
4
4
  //# sourceMappingURL=index.js.map
@@ -1,4 +1,4 @@
1
- export { badge_default as default } from '../chunk-IMGVPMHJ.js';
1
+ export { badge_default as default } from '../chunk-5JOJBDET.js';
2
2
  import '../chunk-LK4EPTNG.js';
3
3
  import '../chunk-NGYLRX6F.js';
4
4
  //# sourceMappingURL=index.js.map
@@ -1,4 +1,4 @@
1
- export { BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, breadcrumbs_default as default } from '../chunk-W3ES3UPV.js';
1
+ export { BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, breadcrumbs_default as default } from '../chunk-5VORB55Y.js';
2
2
  import '../chunk-KPI7MN5V.js';
3
3
  import '../chunk-WTGCXWNX.js';
4
4
  import '../chunk-LK4EPTNG.js';
@@ -1,4 +1,4 @@
1
- export { button_default as default } from '../chunk-YFK2DHCY.js';
1
+ export { button_default as default } from '../chunk-TBMY5EQC.js';
2
2
  import '../chunk-PHQOHVG3.js';
3
3
  import '../chunk-LK4EPTNG.js';
4
4
  import '../chunk-NGYLRX6F.js';
@@ -1,4 +1,4 @@
1
- export { button_group_default as default } from '../chunk-3UCZ4GMN.js';
1
+ export { button_group_default as default } from '../chunk-6HGUDHHE.js';
2
2
  import '../chunk-NGYLRX6F.js';
3
3
  //# sourceMappingURL=index.js.map
4
4
  //# sourceMappingURL=index.js.map
@@ -1,4 +1,5 @@
1
- export { Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardImage, CardTitle, cardVariants, card_default as default } from '../chunk-MXDTUN3V.js';
1
+ export { Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardImage, CardTitle, cardVariants, card_default as default } from '../chunk-FZLFCT6Q.js';
2
+ import '../chunk-LK4EPTNG.js';
2
3
  import '../chunk-NGYLRX6F.js';
3
4
  //# sourceMappingURL=index.js.map
4
5
  //# sourceMappingURL=index.js.map
@@ -1,4 +1,5 @@
1
- export { cascader_default as default } from '../chunk-2OUGJBXK.js';
1
+ export { cascader_default as default } from '../chunk-IVOMN6DV.js';
2
+ import '../chunk-LK4EPTNG.js';
2
3
  import '../chunk-NGYLRX6F.js';
3
4
  //# sourceMappingURL=index.js.map
4
5
  //# sourceMappingURL=index.js.map
@@ -1,4 +1,4 @@
1
- export { checkbox_default as default } from '../chunk-N32VWE6V.js';
1
+ export { checkbox_default as default } from '../chunk-RLYGJN56.js';
2
2
  import '../chunk-LK4EPTNG.js';
3
3
  import '../chunk-NGYLRX6F.js';
4
4
  //# sourceMappingURL=index.js.map
@@ -1,4 +1,4 @@
1
- export { checkbox_group_default as default } from '../chunk-4LSKRZOT.js';
1
+ export { checkbox_group_default as default } from '../chunk-2PNLIQYM.js';
2
2
  import '../chunk-NGYLRX6F.js';
3
3
  //# sourceMappingURL=index.js.map
4
4
  //# sourceMappingURL=index.js.map
@@ -1,5 +1,5 @@
1
1
  import { cn } from './chunk-NGYLRX6F.js';
2
- import React from 'react';
2
+ import React, { useId } from 'react';
3
3
  import { jsxs, jsx } from 'react/jsx-runtime';
4
4
 
5
5
  var CheckboxGroup = React.memo(
@@ -14,14 +14,28 @@ var CheckboxGroup = React.memo(
14
14
  ref,
15
15
  ...props
16
16
  }) => {
17
+ const uniqueId = useId();
18
+ const labelId = label ? `checkboxgroup-label-${uniqueId}` : void 0;
19
+ const messageId = helperText || error ? `checkboxgroup-message-${uniqueId}` : void 0;
17
20
  return /* @__PURE__ */ jsxs(
18
21
  "div",
19
22
  {
20
23
  ref,
24
+ role: "group",
25
+ "aria-labelledby": labelId,
26
+ "aria-describedby": messageId,
21
27
  className: cn("checkboxGroup_root", "w-full", className, classNames?.root),
28
+ "data-slot": "root",
22
29
  ...props,
23
30
  children: [
24
- label && /* @__PURE__ */ jsx("div", { className: "mb-2", children: /* @__PURE__ */ jsx("span", { className: cn("checkboxGroup_label", "text-sm font-medium text-text-secondary", classNames?.label), children: label }) }),
31
+ label && /* @__PURE__ */ jsx("div", { className: "mb-2", "data-slot": "label", children: /* @__PURE__ */ jsx(
32
+ "span",
33
+ {
34
+ id: labelId,
35
+ className: cn("checkboxGroup_label", "text-sm font-medium text-text-secondary", classNames?.label),
36
+ children: label
37
+ }
38
+ ) }),
25
39
  /* @__PURE__ */ jsx(
26
40
  "div",
27
41
  {
@@ -31,18 +45,21 @@ var CheckboxGroup = React.memo(
31
45
  orientation === "vertical" ? "flex-col gap-2" : "flex-row flex-wrap gap-4",
32
46
  classNames?.group
33
47
  ),
48
+ "data-slot": "group",
34
49
  children
35
50
  }
36
51
  ),
37
52
  (helperText || error) && /* @__PURE__ */ jsx(
38
53
  "p",
39
54
  {
55
+ id: messageId,
40
56
  className: cn(
41
57
  error ? "checkboxGroup_error" : "checkboxGroup_helper",
42
58
  "mt-2 text-xs",
43
59
  error ? "text-error" : "text-text-secondary",
44
60
  error ? classNames?.error : classNames?.helper
45
61
  ),
62
+ "data-slot": error ? "error" : "helper",
46
63
  children: error || helperText
47
64
  }
48
65
  )
@@ -55,5 +72,5 @@ CheckboxGroup.displayName = "CheckboxGroup";
55
72
  var checkbox_group_default = CheckboxGroup;
56
73
 
57
74
  export { checkbox_group_default };
58
- //# sourceMappingURL=chunk-4LSKRZOT.js.map
59
- //# sourceMappingURL=chunk-4LSKRZOT.js.map
75
+ //# sourceMappingURL=chunk-2PNLIQYM.js.map
76
+ //# sourceMappingURL=chunk-2PNLIQYM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/checkbox-group/index.tsx"],"names":[],"mappings":";;;;AAKA,IAAM,gBAAgB,KAAA,CAAM,IAAA;AAAA,EAC1B,CAAC;AAAA,IACC,KAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAA;AAAA,IACA,WAAA,GAAc,UAAA;AAAA,IACd,SAAA;AAAA,IACA,UAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAA;AAAA,IACA,GAAG;AAAA,GACL,KAAM;AACJ,IAAA,MAAM,WAAW,KAAA,EAAM;AACvB,IAAA,MAAM,OAAA,GAAU,KAAA,GAAQ,CAAA,oBAAA,EAAuB,QAAQ,CAAA,CAAA,GAAK,MAAA;AAC5D,IAAA,MAAM,SAAA,GAAa,UAAA,IAAc,KAAA,GAAS,CAAA,sBAAA,EAAyB,QAAQ,CAAA,CAAA,GAAK,MAAA;AAEhF,IAAA,uBACE,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,IAAA,EAAK,OAAA;AAAA,QACL,iBAAA,EAAiB,OAAA;AAAA,QACjB,kBAAA,EAAkB,SAAA;AAAA,QAClB,WAAW,EAAA,CAAG,oBAAA,EAAsB,QAAA,EAAU,SAAA,EAAW,YAAY,IAAI,CAAA;AAAA,QACzE,WAAA,EAAU,MAAA;AAAA,QACT,GAAG,KAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,KAAA,oBACC,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,MAAA,EAAO,aAAU,OAAA,EAC9B,QAAA,kBAAA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,EAAA,EAAI,OAAA;AAAA,cACJ,SAAA,EAAW,EAAA,CAAG,qBAAA,EAAuB,yCAAA,EAA2C,YAAY,KAAK,CAAA;AAAA,cAEhG,QAAA,EAAA;AAAA;AAAA,WACH,EACF,CAAA;AAAA,0BAEF,GAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,EAAA;AAAA,gBACT,qBAAA;AAAA,gBACA,MAAA;AAAA,gBACA,WAAA,KAAgB,aACZ,gBAAA,GACA,0BAAA;AAAA,gBACJ,UAAA,EAAY;AAAA,eACd;AAAA,cACA,WAAA,EAAU,OAAA;AAAA,cAET;AAAA;AAAA,WACH;AAAA,UAAA,CACE,cAAc,KAAA,qBACd,GAAA;AAAA,YAAC,GAAA;AAAA,YAAA;AAAA,cACC,EAAA,EAAI,SAAA;AAAA,cACJ,SAAA,EAAW,EAAA;AAAA,gBACT,QAAQ,qBAAA,GAAwB,sBAAA;AAAA,gBAChC,cAAA;AAAA,gBACA,QAAQ,YAAA,GAAe,qBAAA;AAAA,gBACvB,KAAA,GAAQ,UAAA,EAAY,KAAA,GAAQ,UAAA,EAAY;AAAA,eAC1C;AAAA,cACA,WAAA,EAAW,QAAQ,OAAA,GAAU,QAAA;AAAA,cAE5B,QAAA,EAAA,KAAA,IAAS;AAAA;AAAA;AACZ;AAAA;AAAA,KAEJ;AAAA,EAEJ;AACF,CAAA;AAEA,aAAA,CAAc,WAAA,GAAc,eAAA;AAG5B,IAAO,sBAAA,GAAQ","file":"chunk-2PNLIQYM.js","sourcesContent":["import React, { useId } from 'react'\n\nimport { cn } from '../utils'\nimport type { CheckboxGroupProps } from './types'\n\nconst CheckboxGroup = React.memo<CheckboxGroupProps>(\n ({\n label,\n helperText,\n error,\n orientation = 'vertical',\n className,\n classNames,\n children,\n ref,\n ...props\n }) => {\n const uniqueId = useId()\n const labelId = label ? `checkboxgroup-label-${uniqueId}` : undefined\n const messageId = (helperText || error) ? `checkboxgroup-message-${uniqueId}` : undefined\n\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-labelledby={labelId}\n aria-describedby={messageId}\n className={cn('checkboxGroup_root', 'w-full', className, classNames?.root)}\n data-slot=\"root\"\n {...props}\n >\n {label && (\n <div className=\"mb-2\" data-slot=\"label\">\n <span\n id={labelId}\n className={cn('checkboxGroup_label', 'text-sm font-medium text-text-secondary', classNames?.label)}\n >\n {label}\n </span>\n </div>\n )}\n <div\n className={cn(\n 'checkboxGroup_group',\n 'flex',\n orientation === 'vertical'\n ? 'flex-col gap-2'\n : 'flex-row flex-wrap gap-4',\n classNames?.group,\n )}\n data-slot=\"group\"\n >\n {children}\n </div>\n {(helperText || error) && (\n <p\n id={messageId}\n className={cn(\n error ? 'checkboxGroup_error' : 'checkboxGroup_helper',\n 'mt-2 text-xs',\n error ? 'text-error' : 'text-text-secondary',\n error ? classNames?.error : classNames?.helper,\n )}\n data-slot={error ? 'error' : 'helper'}\n >\n {error || helperText}\n </p>\n )}\n </div>\n )\n },\n)\n\nCheckboxGroup.displayName = 'CheckboxGroup'\n\nexport type * from './types'\nexport default CheckboxGroup\n"]}
@@ -518,7 +518,7 @@ var Select = React.memo(
518
518
  ref: inputRef,
519
519
  type: "text",
520
520
  "data-slot": "search",
521
- className: cn("select_search", "w-full text-ellipsis flex-1 bg-transparent outline-none cursor-pointer placeholder:text-text-secondary/50 pointer-events-none", classNames?.search),
521
+ className: cn("select_search", "w-full text-ellipsis flex-1 bg-transparent outline-none cursor-pointer placeholder:text-text-secondary/50", classNames?.search),
522
522
  placeholder,
523
523
  value: displayValue,
524
524
  onChange: handleInputChange,
@@ -526,7 +526,9 @@ var Select = React.memo(
526
526
  onKeyDown: handleKeyDown,
527
527
  disabled: disabled || loading,
528
528
  readOnly: !isOpen,
529
- tabIndex: -1
529
+ tabIndex: isOpen ? 0 : -1,
530
+ "aria-autocomplete": "list",
531
+ "aria-controls": isOpen ? listboxId : void 0
530
532
  }
531
533
  ),
532
534
  /* @__PURE__ */ jsxs(
@@ -617,5 +619,5 @@ Select.displayName = "Select";
617
619
  var select_default = Select;
618
620
 
619
621
  export { select_default };
620
- //# sourceMappingURL=chunk-43RDFTC5.js.map
621
- //# sourceMappingURL=chunk-43RDFTC5.js.map
622
+ //# sourceMappingURL=chunk-4TQ4BZ3S.js.map
623
+ //# sourceMappingURL=chunk-4TQ4BZ3S.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/select/index.tsx"],"names":[],"mappings":";;;;;;;;;AAkBA,IAAM,qBAAA,GAAwB,GAAA;AAAA,EAC5B,+MAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,MAAA,EAAQ;AAAA,QACN,OAAA,EAAS,uCAAA;AAAA,QACT,KAAA,EAAO,cAAA;AAAA,QACP,OAAA,EAAS,gBAAA;AAAA,QACT,IAAA,EAAM,aAAA;AAAA,QACN,OAAA,EAAS;AAAA,OACX;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,mEAAA;AAAA,QACJ,EAAA,EAAI,iEAAA;AAAA,QACJ,EAAA,EAAI,mEAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AAAA,MACA,SAAA,EAAW;AAAA,QACT,IAAA,EAAM,QAAA;AAAA,QACN,KAAA,EAAO;AAAA;AACT,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,MAAA,EAAQ,SAAA;AAAA,MACR,IAAA,EAAM,IAAA;AAAA,MACN,SAAA,EAAW;AAAA;AACb;AAEJ,CAAA;AAEA,IAAM,oBAAA,GAAuB,GAAA;AAAA,EAC3B,8FAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,QAAA,EAAU;AAAA,QACR,IAAA,EAAM,wCAAA;AAAA,QACN,KAAA,EAAO;AAAA,OACT;AAAA,MACA,QAAA,EAAU;AAAA,QACR,IAAA,EAAM,+BAAA;AAAA,QACN,KAAA,EAAO;AAAA;AACT,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,QAAA,EAAU,KAAA;AAAA,MACV,QAAA,EAAU;AAAA;AACZ;AAEJ,CAAA;AAEA,IAAM,mBAAA,GAAsB,GAAA;AAAA,EAC1B;AACF,CAAA;AAEA,IAAM,SAAS,KAAA,CAAM,IAAA;AAAA,EACnB,CAAC;AAAA,IACC,IAAA,GAAO,IAAA;AAAA,IACP,KAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA,IAAA;AAAA,IACA,OAAA;AAAA,IACA,UAAU,EAAC;AAAA,IACX,WAAA,GAAc,kBAAA;AAAA,IACd,OAAA,GAAU,KAAA;AAAA,IACV,SAAA,GAAY,IAAA;AAAA,IACZ,KAAA;AAAA,IACA,YAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA,GAAY,KAAA;AAAA,IACZ,QAAA;AAAA,IACA,QAAA;AAAA,IACA,mBAAA,GAAsB,EAAA;AAAA,IACtB,iBAAA,GAAoB,GAAA;AAAA,IACpB,SAAA;AAAA,IACA,UAAA;AAAA,IACA,GAAA;AAAA,IACA,GAAG;AAAA,GACL,KAAM;AACJ,IAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAI,KAAA,CAAM,SAAS,KAAK,CAAA;AAChD,IAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,KAAA,CAAM,QAAA;AAAA,MACxC;AAAA,KACF;AACA,IAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,IAAI,KAAA,CAAM,QAAA,CAA0B,gBAAgB,EAAE,CAAA;AAC5F,IAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,KAAA,CAAM,SAAS,EAAE,CAAA;AACvD,IAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAI,KAAA,CAAM,SAAS,EAAE,CAAA;AACjE,IAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAI,KAAA,CAAM,SAAS,KAAK,CAAA;AAC5D,IAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAI,KAAA,CAAM,SAAS,KAAK,CAAA;AAElE,IAAA,MAAM,UAAA,GAAa,KAAA,CAAM,MAAA,CAA0B,IAAI,CAAA;AACvD,IAAA,MAAM,QAAA,GAAW,KAAA,CAAM,MAAA,CAAyB,IAAI,CAAA;AACpD,IAAA,MAAM,kBAAA,GAAqB,KAAA,CAAM,MAAA,CAAuB,IAAI,CAAA;AAC5D,IAAA,MAAM,YAAA,GAAe,KAAA,KAAU,MAAA,GAAY,KAAA,GAAQ,aAAA;AAGnD,IAAA,MAAM,WAAW,KAAA,EAAM;AACvB,IAAA,MAAM,OAAA,GAAU,gBAAgB,QAAQ,CAAA,CAAA;AACxC,IAAA,MAAM,SAAA,GAAY,kBAAkB,QAAQ,CAAA,CAAA;AAC5C,IAAA,MAAM,QAAA,GAAW,iBAAiB,QAAQ,CAAA,CAAA;AAG1C,IAAA,MAAM,EAAE,MAAA,EAAQ,OAAA,EAAS,aAAA,KAAkB,mBAAA,CAAoB;AAAA,MAC7D,KAAA;AAAA,MACA,OAAA;AAAA,MACA,IAAA;AAAA,MACA,OAAA;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,MAAM,cAAA,GAAiB,KAAA,CAAM,OAAA,CAAQ,MAAM;AACzC,MAAA,MAAM,SAAyC,EAAC;AAChD,MAAA,MAAM,YAA4B,EAAC;AAEnC,MAAA,OAAA,CAAQ,OAAA,CAAQ,CAAC,MAAA,KAAW;AAC1B,QAAA,IAAI,OAAO,KAAA,EAAO;AAChB,UAAA,IAAI,CAAC,MAAA,CAAO,MAAA,CAAO,KAAK,CAAA,EAAG;AACzB,YAAA,MAAA,CAAO,MAAA,CAAO,KAAK,CAAA,GAAI,EAAC;AAAA,UAC1B;AACA,UAAA,MAAA,CAAO,MAAA,CAAO,KAAK,CAAA,CAAG,IAAA,CAAK,MAAM,CAAA;AAAA,QACnC,CAAA,MAAO;AACL,UAAA,SAAA,CAAU,KAAK,MAAM,CAAA;AAAA,QACvB;AAAA,MACF,CAAC,CAAA;AAED,MAAA,OAAO,EAAE,QAAQ,SAAA,EAAU;AAAA,IAC7B,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,IAAA,MAAM,gBAAA,GAAmB,KAAA,CAAM,OAAA,CAAQ,MAAM;AAC3C,MAAA,MAAM,QAGD,EAAC;AAEN,MAAA,cAAA,CAAe,SAAA,CAAU,OAAA,CAAQ,CAAC,MAAA,KAAW;AAC3C,QAAA,KAAA,CAAM,KAAK,EAAE,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,QAAQ,CAAA;AAAA,MAC7C,CAAC,CAAA;AAED,MAAA,MAAA,CAAO,OAAA,CAAQ,cAAA,CAAe,MAAM,CAAA,CAAE,OAAA;AAAA,QACpC,CAAC,CAAC,SAAA,EAAW,YAAY,CAAA,KAAM;AAC7B,UAAA,KAAA,CAAM,KAAK,EAAE,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,WAAW,CAAA;AAC7C,UAAA,YAAA,CAAa,OAAA,CAAQ,CAAC,MAAA,KAAW;AAC/B,YAAA,KAAA,CAAM,KAAK,EAAE,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,QAAQ,CAAA;AAAA,UAC7C,CAAC,CAAA;AAAA,QACH;AAAA,OACF;AAEA,MAAA,OAAO,KAAA;AAAA,IACT,CAAA,EAAG,CAAC,cAAc,CAAC,CAAA;AAEnB,IAAA,MAAM,eAAA,GAAkB,KAAA,CAAM,OAAA,CAAQ,MAAM;AAC1C,MAAA,IAAI,CAAC,aAAa,OAAO,gBAAA;AAEzB,MAAA,OAAO,gBAAA,CAAiB,MAAA,CAAO,CAAC,IAAA,KAAS;AACvC,QAAA,IAAI,IAAA,CAAK,IAAA,KAAS,OAAA,EAAS,OAAO,IAAA;AAClC,QAAA,MAAM,SAAS,IAAA,CAAK,IAAA;AACpB,QAAA,OAAO,OAAO,KAAA,CAAM,WAAA,GAAc,QAAA,CAAS,WAAA,CAAY,aAAa,CAAA;AAAA,MACtE,CAAC,CAAA;AAAA,IACH,CAAA,EAAG,CAAC,gBAAA,EAAkB,WAAW,CAAC,CAAA;AAElC,IAAA,MAAM,gBAAA,GAAmB,gBAAgB,MAAA,GAAS,mBAAA;AAElD,IAAA,MAAM,cAAc,cAAA,CAAe;AAAA,MACjC,OAAO,eAAA,CAAgB,MAAA;AAAA,MACvB,kBAAkB,MAAM,UAAA;AAAA,MACxB,cAAc,MAAM,EAAA;AAAA,MACpB,OAAA,EAAS,gBAAA;AAAA,MACT,QAAA,EAAU;AAAA,KACX,CAAA;AAGD,IAAA,MAAM,cAAA,GAAiB,KAAA,CAAM,MAAA,CAAO,WAAW,CAAA;AAC/C,IAAA,KAAA,CAAM,UAAU,MAAM;AACpB,MAAA,cAAA,CAAe,OAAA,GAAU,WAAA;AAAA,IAC3B,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAEhB,IAAA,MAAM,WAAA,GAAc,WAAA,CAAY,CAAC,IAAA,KAAyB;AACxD,MAAA,IAAI,IAAA,EAAM;AACR,QAAA,aAAA,CAAc,IAAI,CAAA;AAElB,QAAA,kBAAA,CAAmB,OAAA,GAAU,IAAA;AAAA,MAC/B;AAAA,IACF,CAAA,EAAG,EAAE,CAAA;AAEL,IAAA,MAAM,iBAAiB,OAAA,CAAQ,IAAA,CAAK,CAAC,GAAA,KAAQ,GAAA,CAAI,UAAU,YAAY,CAAA;AACvE,IAAA,MAAM,YAAA,GAAe,MAAA,GAAS,WAAA,GAAc,cAAA,EAAgB,KAAA,IAAS,EAAA;AAErE,IAAA,MAAM,eAAe,KAAA,CAAM,WAAA;AAAA,MACzB,CAAC,WAAA,KAAiC;AAChC,QAAA,IAAI,UAAU,MAAA,EAAW;AACvB,UAAA,gBAAA,CAAiB,WAAW,CAAA;AAAA,QAC9B;AACA,QAAA,QAAA,GAAW,WAAW,CAAA;AACtB,QAAA,SAAA,CAAU,KAAK,CAAA;AACf,QAAA,cAAA,CAAe,EAAE,CAAA;AACjB,QAAA,mBAAA,CAAoB,EAAE,CAAA;AAAA,MACxB,CAAA;AAAA,MACA,CAAC,OAAO,QAAQ;AAAA,KAClB;AAEA,IAAA,MAAM,cAAc,KAAA,CAAM,WAAA;AAAA,MACxB,CAAC,CAAA,KAAwB;AACvB,QAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,QAAA,IAAI,UAAU,MAAA,EAAW;AACvB,UAAA,gBAAA,CAAiB,EAAE,CAAA;AAAA,QACrB;AACA,QAAA,QAAA,GAAW,EAAE,CAAA;AACb,QAAA,cAAA,CAAe,EAAE,CAAA;AACjB,QAAA,mBAAA,CAAoB,EAAE,CAAA;AAAA,MACxB,CAAA;AAAA,MACA,CAAC,OAAO,QAAQ;AAAA,KAClB;AAEA,IAAA,MAAM,oBAAoB,KAAA,CAAM,WAAA;AAAA,MAC9B,CAAC,CAAA,KAA2C;AAC1C,QAAA,cAAA,CAAe,CAAA,CAAE,OAAO,KAAK,CAAA;AAC7B,QAAA,IAAI,CAAC,MAAA,EAAQ,SAAA,CAAU,IAAI,CAAA;AAAA,MAC7B,CAAA;AAAA,MACA,CAAC,MAAM;AAAA,KACT;AAEA,IAAA,MAAM,gBAAA,GAAmB,KAAA,CAAM,WAAA,CAAY,MAAM;AAC/C,MAAA,SAAA,CAAU,IAAI,CAAA;AAAA,IAChB,CAAA,EAAG,EAAE,CAAA;AAEL,IAAA,MAAM,gBAAgB,KAAA,CAAM,WAAA;AAAA,MAC1B,CAAC,CAAA,KAA2B;AAC1B,QAAA,IAAI,CAAC,MAAA,IAAU,CAAA,CAAE,GAAA,KAAQ,KAAA,EAAO;AAC9B,UAAA,IAAI,CAAA,CAAE,QAAQ,OAAA,IAAW,CAAA,CAAE,QAAQ,GAAA,IAAO,CAAA,CAAE,QAAQ,WAAA,EAAa;AAC/D,YAAA,CAAA,CAAE,cAAA,EAAe;AACjB,YAAA,SAAA,CAAU,IAAI,CAAA;AAAA,UAChB;AACA,UAAA;AAAA,QACF;AAEA,QAAA,MAAM,oBAAoB,eAAA,CAAgB,MAAA;AAAA,UACxC,CAAC,IAAA,KACC,IAAA,CAAK,SAAS,QAAA,IAAY,CAAE,KAAK,IAAA,CAAsB;AAAA,SAC3D;AAEA,QAAA,QAAQ,EAAE,GAAA;AAAK,UACb,KAAK,QAAA;AACH,YAAA,CAAA,CAAE,cAAA,EAAe;AACjB,YAAA,SAAA,CAAU,KAAK,CAAA;AACf,YAAA,cAAA,CAAe,EAAE,CAAA;AACjB,YAAA,mBAAA,CAAoB,EAAE,CAAA;AACtB,YAAA,QAAA,CAAS,SAAS,IAAA,EAAK;AACvB,YAAA;AAAA,UAEF,KAAK,WAAA;AACH,YAAA,CAAA,CAAE,cAAA,EAAe;AACjB,YAAA,mBAAA,CAAoB,CAAC,IAAA,KAAS;AAC5B,cAAA,MAAM,YAAY,IAAA,CAAK,GAAA,CAAI,OAAO,CAAA,EAAG,iBAAA,CAAkB,SAAS,CAAC,CAAA;AACjE,cAAA,MAAM,MAAA,GAAS,kBAAkB,SAAS,CAAA;AAC1C,cAAA,IAAI,MAAA,EAAQ;AACV,gBAAA,MAAM,WAAA,GAAc,eAAA,CAAgB,OAAA,CAAQ,MAAM,CAAA;AAClD,gBAAA,IAAI,gBAAA,IAAoB,eAAe,OAAA,EAAS;AAC9C,kBAAA,cAAA,CAAe,OAAA,CAAQ,cAAc,WAAA,EAAa;AAAA,oBAChD,KAAA,EAAO;AAAA,mBACR,CAAA;AAAA,gBACH;AAAA,cACF;AACA,cAAA,OAAO,SAAA;AAAA,YACT,CAAC,CAAA;AACD,YAAA;AAAA,UAEF,KAAK,SAAA;AACH,YAAA,CAAA,CAAE,cAAA,EAAe;AACjB,YAAA,mBAAA,CAAoB,CAAC,IAAA,KAAS;AAC5B,cAAA,MAAM,SAAA,GAAY,IAAA,CAAK,GAAA,CAAI,IAAA,GAAO,GAAG,CAAC,CAAA;AACtC,cAAA,MAAM,MAAA,GAAS,kBAAkB,SAAS,CAAA;AAC1C,cAAA,IAAI,MAAA,EAAQ;AACV,gBAAA,MAAM,WAAA,GAAc,eAAA,CAAgB,OAAA,CAAQ,MAAM,CAAA;AAClD,gBAAA,IAAI,gBAAA,IAAoB,eAAe,OAAA,EAAS;AAC9C,kBAAA,cAAA,CAAe,OAAA,CAAQ,cAAc,WAAA,EAAa;AAAA,oBAChD,KAAA,EAAO;AAAA,mBACR,CAAA;AAAA,gBACH;AAAA,cACF;AACA,cAAA,OAAO,SAAA;AAAA,YACT,CAAC,CAAA;AACD,YAAA;AAAA,UAEF,KAAK,OAAA;AACH,YAAA,CAAA,CAAE,cAAA,EAAe;AACjB,YAAA,IACE,gBAAA,IAAoB,CAAA,IACpB,gBAAA,GAAmB,iBAAA,CAAkB,MAAA,EACrC;AACA,cAAA,MAAM,IAAA,GAAO,kBAAkB,gBAAgB,CAAA;AAC/C,cAAA,IAAI,IAAA,EAAM;AACR,gBAAA,MAAM,SAAS,IAAA,CAAK,IAAA;AACpB,gBAAA,YAAA,CAAa,OAAO,KAAK,CAAA;AAAA,cAC3B;AAAA,YACF;AACA,YAAA;AAAA,UAEF,KAAK,MAAA;AACH,YAAA,CAAA,CAAE,cAAA,EAAe;AACjB,YAAA,mBAAA,CAAoB,CAAC,CAAA;AACrB,YAAA,IAAI,gBAAA,IAAoB,eAAe,OAAA,EAAS;AAC9C,cAAA,cAAA,CAAe,OAAA,CAAQ,cAAc,CAAC,CAAA;AAAA,YACxC;AACA,YAAA;AAAA,UAEF,KAAK,KAAA;AACH,YAAA,CAAA,CAAE,cAAA,EAAe;AACjB,YAAA,mBAAA,CAAoB,iBAAA,CAAkB,SAAS,CAAC,CAAA;AAChD,YAAA,IAAI,gBAAA,IAAoB,eAAe,OAAA,EAAS;AAC9C,cAAA,cAAA,CAAe,OAAA,CAAQ,aAAA,CAAc,eAAA,CAAgB,MAAA,GAAS,CAAC,CAAA;AAAA,YACjE;AACA,YAAA;AAGA;AACJ,MACF,CAAA;AAAA,MACA;AAAA,QACE,MAAA;AAAA,QACA,eAAA;AAAA,QACA,gBAAA;AAAA,QACA,YAAA;AAAA,QACA;AAAA;AACF,KACF;AAGA,IAAA,MAAM,eAAe,KAAA,CAAM,WAAA;AAAA,MACzB,CAAC,CAAA,KAAqC;AACpC,QAAA,MAAM,UAAU,CAAA,CAAE,aAAA;AAClB,QAAA,MAAM,EAAE,SAAA,EAAW,YAAA,EAAc,YAAA,EAAa,GAAI,OAAA;AAElD,QAAA,eAAA,CAAgB,YAAY,CAAC,CAAA;AAC7B,QAAA,kBAAA,CAAmB,SAAA,GAAY,YAAA,GAAe,YAAA,GAAe,CAAC,CAAA;AAAA,MAChE,CAAA;AAAA,MACA;AAAC,KACH;AAGA,IAAA,KAAA,CAAM,UAAU,MAAM;AACpB,MAAA,IAAI,MAAA,EAAQ;AAEV,QAAA,MAAM,SAAA,GAAY,WAAW,MAAM;AACjC,UAAA,MAAM,UAAU,kBAAA,CAAmB,OAAA;AACnC,UAAA,IAAI,OAAA,EAAS;AACX,YAAA,MAAM,EAAE,SAAA,EAAW,YAAA,EAAc,YAAA,EAAa,GAAI,OAAA;AAClD,YAAA,eAAA,CAAgB,YAAY,CAAC,CAAA;AAC7B,YAAA,kBAAA,CAAmB,SAAA,GAAY,YAAA,GAAe,YAAA,GAAe,CAAC,CAAA;AAAA,UAChE;AAAA,QACF,GAAG,EAAE,CAAA;AAEL,QAAA,OAAO,MAAM,aAAa,SAAS,CAAA;AAAA,MACrC,CAAA,MAAO;AACL,QAAA,eAAA,CAAgB,KAAK,CAAA;AACrB,QAAA,kBAAA,CAAmB,KAAK,CAAA;AACxB,QAAA,OAAO,MAAA;AAAA,MACT;AAAA,IACF,CAAA,EAAG,CAAC,MAAA,EAAQ,eAAA,EAAiB,gBAAgB,CAAC,CAAA;AAE9C,IAAA,MAAM,iBAAA,GAAoB,sBACxB,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,UAAA,EAEb,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,WAAU,sCAAA,EACZ,QAAA,EAAA,YAAA,wBAAiB,SAAA,EAAA,EAAU,SAAA,EAAU,4BAA2B,CAAA,EACnE,CAAA;AAAA,sBAEA,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,GAAA,EAAK,kBAAA;AAAA,UACL,SAAA,EAAU,wBAAA;AAAA,UACV,KAAA,EAAO,EAAE,SAAA,EAAW,iBAAA,EAAkB;AAAA,UACtC,IAAA,EAAK,SAAA;AAAA,UACL,EAAA,EAAI,SAAA;AAAA,UACJ,iBAAA,EAAiB,QAAQ,OAAA,GAAU,MAAA;AAAA,UACnC,QAAA,EAAU,YAAA;AAAA,UAET,QAAA,EAAA,CAAC,gBAAgB,MAAA,mBAChB,GAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,WAAA,EAAU,OAAA;AAAA,cACV,SAAA,EAAW,EAAA,CAAG,cAAA,EAAgB,mDAAA,EAAqD,YAAY,KAAK,CAAA;AAAA,cACrG,QAAA,EAAA;AAAA;AAAA,cAGC,gBAAA,mBACF,GAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,GAAA,EAAK,WAAA;AAAA,cACL,KAAA,EAAO;AAAA,gBACL,MAAA,EAAQ,GAAG,IAAA,CAAK,GAAA,CAAI,YAAY,YAAA,EAAa,EAAG,iBAAiB,CAAC,CAAA,EAAA,CAAA;AAAA,gBAClE,QAAA,EAAU;AAAA,eACZ;AAAA,cACA,QAAA,EAAU,YAAA;AAAA,cAEV,QAAA,kBAAA,GAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,KAAA,EAAO;AAAA,oBACL,MAAA,EAAQ,CAAA,EAAG,WAAA,CAAY,YAAA,EAAc,CAAA,EAAA,CAAA;AAAA,oBACrC,KAAA,EAAO,MAAA;AAAA,oBACP,QAAA,EAAU;AAAA,mBACZ;AAAA,kBAEC,QAAA,EAAA,WAAA,CAAY,eAAA,EAAgB,CAAE,GAAA,CAAI,CAAC,WAAA,KAAgB;AAClD,oBAAA,MAAM,IAAA,GAAO,eAAA,CAAgB,WAAA,CAAY,KAAK,CAAA;AAE9C,oBAAA,IAAI,CAAC,MAAM,OAAO,IAAA;AAElB,oBAAA,IAAI,IAAA,CAAK,SAAS,OAAA,EAAS;AACzB,sBAAA,uBACE,GAAA;AAAA,wBAAC,KAAA;AAAA,wBAAA;AAAA,0BAEC,WAAA,EAAU,OAAA;AAAA,0BACV,KAAA,EAAO;AAAA,4BACL,QAAA,EAAU,UAAA;AAAA,4BACV,GAAA,EAAK,CAAA;AAAA,4BACL,IAAA,EAAM,CAAA;AAAA,4BACN,KAAA,EAAO,MAAA;AAAA,4BACP,MAAA,EAAQ,CAAA,EAAG,WAAA,CAAY,IAAI,CAAA,EAAA,CAAA;AAAA,4BAC3B,SAAA,EAAW,CAAA,WAAA,EAAc,WAAA,CAAY,KAAK,CAAA,GAAA;AAAA,2BAC5C;AAAA,0BACA,WAAW,EAAA,CAAG,cAAA,EAAgB,mBAAA,EAAoB,EAAG,YAAY,KAAK,CAAA;AAAA,0BAEtE,QAAA,kBAAA,GAAA;AAAA,4BAAC,MAAA;AAAA,4BAAA;AAAA,8BACC,WAAA,EAAU,YAAA;AAAA,8BACV,SAAA,EAAW,EAAA,CAAG,mBAAA,EAAqB,UAAA,EAAY,UAAU,CAAA;AAAA,8BAExD,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA;AACR,yBAAA;AAAA,wBAjBK,CAAA,MAAA,EAAS,YAAY,KAAK,CAAA;AAAA,uBAkBjC;AAAA,oBAEJ;AAEA,oBAAA,MAAM,SAAS,IAAA,CAAK,IAAA;AACpB,oBAAA,MAAM,UAAA,GAAa,OAAO,KAAA,KAAU,YAAA;AACpC,oBAAA,MAAM,oBAAoB,eAAA,CAAgB,MAAA;AAAA,sBACxC,CAAC,CAAA,KACC,CAAA,CAAE,SAAS,QAAA,IAAY,CAAE,EAAE,IAAA,CAAsB;AAAA,qBACrD;AACA,oBAAA,MAAM,kBAAkB,iBAAA,CAAkB,SAAA;AAAA,sBACxC,CAAC,MAAM,CAAA,KAAM;AAAA,qBACf;AACA,oBAAA,MAAM,gBAAgB,eAAA,KAAoB,gBAAA;AAE1C,oBAAA,uBACE,IAAA;AAAA,sBAAC,KAAA;AAAA,sBAAA;AAAA,wBAEC,WAAA,EAAU,QAAA;AAAA,wBACV,KAAA,EAAO;AAAA,0BACL,QAAA,EAAU,UAAA;AAAA,0BACV,GAAA,EAAK,CAAA;AAAA,0BACL,IAAA,EAAM,CAAA;AAAA,0BACN,KAAA,EAAO,MAAA;AAAA,0BACP,MAAA,EAAQ,CAAA,EAAG,WAAA,CAAY,IAAI,CAAA,EAAA,CAAA;AAAA,0BAC3B,SAAA,EAAW,CAAA,WAAA,EAAc,WAAA,CAAY,KAAK,CAAA,GAAA;AAAA,yBAC5C;AAAA,wBACA,SAAA,EAAW,EAAA;AAAA,0BACT,eAAA;AAAA,0BACA,oBAAA,CAAqB;AAAA,4BACnB,QAAA,EAAU,UAAA;AAAA,4BACV,QAAA,EAAU,CAAC,CAAC,MAAA,CAAO;AAAA,2BACpB,CAAA;AAAA,0BACD,aAAA,IAAiB,YAAA;AAAA,0BACjB,UAAA,EAAY,MAAA;AAAA,0BACZ,cAAc,UAAA,EAAY;AAAA,yBAC5B;AAAA,wBACA,SAAS,MACP,CAAC,OAAO,QAAA,IAAY,YAAA,CAAa,OAAO,KAAK,CAAA;AAAA,wBAE/C,IAAA,EAAK,QAAA;AAAA,wBACL,eAAA,EAAe,UAAA;AAAA,wBACf,iBAAe,MAAA,CAAO,QAAA;AAAA,wBAErB,QAAA,EAAA;AAAA,0BAAA,MAAA,CAAO,KAAA;AAAA,0BACP,UAAA,oBACC,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,2CAAA,EACd,QAAA,kBAAA,GAAA;AAAA,4BAAC,KAAA;AAAA,4BAAA;AAAA,8BACC,SAAA,EAAW,EAAA,CAAG,cAAA,EAAgB,SAAA,CAAU,IAAI,CAAC;AAAA;AAAA,2BAC/C,EACF;AAAA;AAAA,uBAAA;AAAA,sBAjCG,MAAA,CAAO;AAAA,qBAmCd;AAAA,kBAEJ,CAAC;AAAA;AAAA;AACH;AAAA,WACF,uBAEC,KAAA,EAAA,EAAI,SAAA,EAAU,QACZ,QAAA,EAAA,eAAA,CAAgB,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,KAAU;AACpC,YAAA,IAAI,IAAA,CAAK,SAAS,OAAA,EAAS;AACzB,cAAA,uBACE,GAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBAEC,WAAA,EAAU,OAAA;AAAA,kBACV,WAAW,EAAA,CAAG,cAAA,EAAgB,mBAAA,EAAoB,EAAG,YAAY,KAAK,CAAA;AAAA,kBAEtE,QAAA,kBAAA,GAAA;AAAA,oBAAC,MAAA;AAAA,oBAAA;AAAA,sBACC,WAAA,EAAU,YAAA;AAAA,sBACV,SAAA,EAAW,EAAA,CAAG,mBAAA,EAAqB,UAAA,EAAY,UAAU,CAAA;AAAA,sBAExD,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA;AACR,iBAAA;AAAA,gBATK,SAAS,KAAK,CAAA;AAAA,eAUrB;AAAA,YAEJ;AAEA,YAAA,MAAM,SAAS,IAAA,CAAK,IAAA;AACpB,YAAA,MAAM,UAAA,GAAa,OAAO,KAAA,KAAU,YAAA;AACpC,YAAA,MAAM,oBAAoB,eAAA,CAAgB,MAAA;AAAA,cACxC,CAAC,CAAA,KACC,CAAA,CAAE,SAAS,QAAA,IAAY,CAAE,EAAE,IAAA,CAAsB;AAAA,aACrD;AACA,YAAA,MAAM,kBAAkB,iBAAA,CAAkB,SAAA;AAAA,cACxC,CAAC,MAAM,CAAA,KAAM;AAAA,aACf;AACA,YAAA,MAAM,gBAAgB,eAAA,KAAoB,gBAAA;AAE1C,YAAA,uBACE,IAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBAEC,WAAA,EAAU,QAAA;AAAA,gBACV,SAAA,EAAW,EAAA;AAAA,kBACT,eAAA;AAAA,kBACA,oBAAA,CAAqB;AAAA,oBACnB,QAAA,EAAU,UAAA;AAAA,oBACV,QAAA,EAAU,CAAC,CAAC,MAAA,CAAO;AAAA,mBACpB,CAAA;AAAA,kBACD,aAAA,IAAiB,YAAA;AAAA,kBACjB,UAAA,EAAY,MAAA;AAAA,kBACZ,cAAc,UAAA,EAAY;AAAA,iBAC5B;AAAA,gBACA,SAAS,MACP,CAAC,OAAO,QAAA,IAAY,YAAA,CAAa,OAAO,KAAK,CAAA;AAAA,gBAE/C,IAAA,EAAK,QAAA;AAAA,gBACL,eAAA,EAAe,UAAA;AAAA,gBACf,iBAAe,MAAA,CAAO,QAAA;AAAA,gBAErB,QAAA,EAAA;AAAA,kBAAA,MAAA,CAAO,KAAA;AAAA,kBACP,UAAA,oBACC,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,2CAAA,EACd,QAAA,kBAAA,GAAA;AAAA,oBAAC,KAAA;AAAA,oBAAA;AAAA,sBACC,SAAA,EAAW,EAAA,CAAG,cAAA,EAAgB,SAAA,CAAU,IAAI,CAAC;AAAA;AAAA,mBAC/C,EACF;AAAA;AAAA,eAAA;AAAA,cAzBG,MAAA,CAAO;AAAA,aA2Bd;AAAA,UAEJ,CAAC,CAAA,EACH;AAAA;AAAA,OAEJ;AAAA,sBAGA,GAAA,CAAC,SAAI,SAAA,EAAU,sCAAA,EACZ,6CACC,GAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,0BAAA,EAA2B,CAAA,EAEtD;AAAA,KAAA,EACF,CAAA;AAIF,IAAA,MAAM,aAAA,mBACJ,IAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,UAAA;AAAA,QACL,IAAA,EAAK,QAAA;AAAA,QACL,WAAA,EAAU,SAAA;AAAA,QACV,SAAA,EAAW,EAAA;AAAA,UACT,gBAAA;AAAA,UACA,qBAAA,CAAsB,EAAE,MAAA,EAAQ,IAAA,EAAM,WAAW,CAAA;AAAA,UACjD,OAAA,IAAW,YAAA;AAAA,UACX,SAAA;AAAA,UACA,UAAA,EAAY;AAAA,SACd;AAAA,QACA,UAAU,QAAA,IAAY,OAAA;AAAA,QACtB,eAAA,EAAc,SAAA;AAAA,QACd,eAAA,EAAe,MAAA;AAAA,QACf,eAAA,EAAe,SAAA;AAAA,QACf,iBAAA,EAAiB,QAAQ,OAAA,GAAU,MAAA;AAAA,QACnC,kBAAA,EAAkB,gBAAgB,QAAA,GAAW,MAAA;AAAA,QAC7C,OAAA,EAAS,MAAM,SAAA,CAAU,CAAC,MAAM,CAAA;AAAA,QAEhC,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACC,GAAA,EAAK,QAAA;AAAA,cACL,IAAA,EAAK,MAAA;AAAA,cACL,WAAA,EAAU,QAAA;AAAA,cACV,SAAA,EAAW,EAAA,CAAG,eAAA,EAAiB,2GAAA,EAA6G,YAAY,MAAM,CAAA;AAAA,cAC9J,WAAA;AAAA,cACA,KAAA,EAAO,YAAA;AAAA,cACP,QAAA,EAAU,iBAAA;AAAA,cACV,OAAA,EAAS,gBAAA;AAAA,cACT,SAAA,EAAW,aAAA;AAAA,cACX,UAAU,QAAA,IAAY,OAAA;AAAA,cACtB,UAAU,CAAC,MAAA;AAAA,cACX,QAAA,EAAU,SAAS,CAAA,GAAI,EAAA;AAAA,cACvB,mBAAA,EAAkB,MAAA;AAAA,cAClB,eAAA,EAAe,SAAS,SAAA,GAAY;AAAA;AAAA,WACtC;AAAA,0BACA,IAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,WAAA,EAAU,aAAA;AAAA,cACV,SAAA,EAAW,EAAA,CAAG,oBAAA,EAAsB,6CAAA,EAA+C,YAAY,WAAW,CAAA;AAAA,cAEzG,QAAA,EAAA;AAAA,gBAAA,SAAA,IAAa,YAAA,IAAgB,CAAC,QAAA,IAAY,CAAC,OAAA,oBAC1C,GAAA;AAAA,kBAAC,QAAA;AAAA,kBAAA;AAAA,oBACC,IAAA,EAAK,QAAA;AAAA,oBACL,OAAA,EAAS,WAAA;AAAA,oBACT,SAAA,EAAU,2CAAA;AAAA,oBACV,YAAA,EAAW,iBAAA;AAAA,oBAEX,QAAA,kBAAA,GAAA,CAAC,CAAA,EAAA,EAAE,SAAA,EAAW,SAAA,CAAU,IAAI,CAAA,EAAG;AAAA;AAAA,iBACjC;AAAA,gBAED,0BACC,GAAA,CAAC,eAAA,EAAA,EAAQ,oBAET,GAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA,MAAA,uBACE,MAAA,EAAA,EAAO,SAAA,EAAW,UAAU,IAAI,CAAA,EAAG,oBAEpC,GAAA,CAAC,WAAA,EAAA,EAAY,WAAW,SAAA,CAAU,IAAI,GAAG,CAAA,EAE7C;AAAA;AAAA;AAAA;AAEJ;AAAA;AAAA,KACF;AAGF,IAAA,MAAM,aAAA,mBACJ,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,WAAA,EAAU,MAAA;AAAA,QACV,SAAA,EAAW,GAAG,aAAA,EAAe,gBAAA,EAAkB,YAAY,QAAA,GAAW,cAAA,EAAgB,YAAY,IAAI,CAAA;AAAA,QACtG,GAAA;AAAA,QACC,GAAG,KAAA;AAAA,QAEJ,QAAA,kBAAA,IAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAM,MAAA;AAAA,YACN,YAAA,EAAc,SAAA;AAAA,YAEd,QAAA,EAAA;AAAA,8BAAA,GAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EAAE,QAAA,EAAA,aAAA,EAAc,CAAA;AAAA,8BAEvC,GAAA;AAAA,gBAAC,cAAA;AAAA,gBAAA;AAAA,kBACC,WAAA,EAAU,UAAA;AAAA,kBACV,SAAA,EAAW,EAAA,CAAG,iBAAA,EAAmB,4CAAA,EAA8C,YAAY,QAAQ,CAAA;AAAA,kBACnG,KAAA,EAAM,OAAA;AAAA,kBACN,eAAA,EAAiB,CAAC,CAAA,KAAa;AAC7B,oBAAA,CAAA,CAAE,cAAA,EAAe;AACjB,oBAAA,QAAA,CAAS,SAAS,KAAA,EAAM;AAAA,kBAC1B,CAAA;AAAA,kBAEC,QAAA,EAAA,iBAAA;AAAkB;AAAA;AACrB;AAAA;AAAA;AACF;AAAA,KACF;AAGF,IAAA,IAAI,CAAC,KAAA,IAAS,CAAC,UAAA,IAAc,CAAC,OAAO,OAAO,aAAA;AAE5C,IAAA,uBACE,IAAA,CAAC,SAAI,SAAA,EAAW,EAAA,CAAG,wBAAwB,CAAC,SAAA,IAAa,cAAc,CAAA,EACrE,QAAA,EAAA;AAAA,sBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,yBAAA,EACZ,QAAA,EAAA;AAAA,QAAA,KAAA,oBACC,GAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,EAAA,EAAI,OAAA;AAAA,YACJ,WAAA,EAAU,OAAA;AAAA,YACV,SAAA,EAAW,EAAA,CAAG,cAAA,EAAgB,cAAA,EAAgB,YAAY,KAAK,CAAA;AAAA,YAE/D,QAAA,kBAAA,IAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,yCAAA,EACb,QAAA,EAAA;AAAA,cAAA,KAAA;AAAA,cACA,QAAA,oBAAY,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,mBAAkB,QAAA,EAAA,GAAA,EAAC;AAAA,aAAA,EAClD;AAAA;AAAA,SACF;AAAA,QAED,aAAA,oBACC,GAAA;AAAA,UAAC,GAAA;AAAA,UAAA;AAAA,YACC,EAAA,EAAI,QAAA;AAAA,YACJ,WAAA,EAAU,QAAA;AAAA,YACV,SAAA,EAAW,GAAG,eAAA,EAAiB,qBAAA,CAAsB,EAAE,MAAA,EAAQ,CAAA,EAAG,UAAA,EAAY,MAAM,CAAA;AAAA,YAEnF,QAAA,EAAA;AAAA;AAAA;AACH,OAAA,EAEJ,CAAA;AAAA,MACC;AAAA,KAAA,EACH,CAAA;AAAA,EAEJ;AACF,CAAA;AAEA,MAAA,CAAO,WAAA,GAAc,QAAA;AAGrB,IAAO,cAAA,GAAQ","file":"chunk-4TQ4BZ3S.js","sourcesContent":["'use client'\n\nimport { useVirtualizer } from '@tanstack/react-virtual'\nimport { cva } from 'class-variance-authority'\nimport { Check, ChevronDown, ChevronUp, Search, X } from 'lucide-react'\nimport React, { useCallback, useId } from 'react'\n\nimport Spinner from '../spinner'\n\nimport { Popover, PopoverContent, PopoverTrigger } from '../popover'\nimport {\n cn,\n getValidationStatus,\n iconSizes,\n statusMessageVariants,\n} from '../utils'\nimport type { SelectOption, SelectProps } from './types'\n\nconst selectTriggerVariants = cva(\n 'w-full flex items-center justify-between rounded-md bg-background text-text-primary border focus:border-primary outline-none disabled:opacity-50 disabled:cursor-not-allowed cursor-pointer transition-colors',\n {\n variants: {\n status: {\n default: 'border-border hover:border-primary/50',\n error: 'border-error',\n warning: 'border-warning',\n info: 'border-info',\n success: 'border-success',\n },\n size: {\n xs: 'h-(--select-height-xs) px-(--select-padding-x-xs) text-xs gap-1.5',\n sm: 'h-(--select-height-sm) px-(--select-padding-x-sm) text-sm gap-2',\n md: 'h-(--select-height-md) px-(--select-padding-x-md) text-base gap-2',\n lg: 'h-(--select-height-lg) px-(--select-padding-x-lg) text-lg gap-3',\n },\n fullWidth: {\n true: 'w-full',\n false: 'max-w-full',\n },\n },\n defaultVariants: {\n status: 'default',\n size: 'md',\n fullWidth: true,\n },\n },\n)\n\nconst selectOptionVariants = cva(\n 'relative cursor-pointer select-none px-3 py-2 text-text-primary rounded-sm transition-colors',\n {\n variants: {\n selected: {\n true: 'bg-primary/10 text-primary font-medium',\n false: 'hover:bg-surface',\n },\n disabled: {\n true: 'opacity-50 cursor-not-allowed',\n false: '',\n },\n },\n defaultVariants: {\n selected: false,\n disabled: false,\n },\n },\n)\n\nconst selectGroupVariants = cva(\n 'px-3 py-2 text-xs font-semibold text-text-secondary uppercase tracking-wider bg-surface/50',\n)\n\nconst Select = React.memo<SelectProps>(\n ({\n size = 'md',\n label,\n helperText,\n error,\n warning,\n info,\n success,\n options = [],\n placeholder = 'Select an option',\n loading = false,\n fullWidth = true,\n value,\n defaultValue,\n onChange,\n clearable = false,\n disabled,\n required,\n virtualizeThreshold = 50,\n maxDropdownHeight = 300,\n className,\n classNames,\n ref,\n ...props\n }) => {\n const [isOpen, setIsOpen] = React.useState(false)\n const [parentNode, setParentNode] = React.useState<HTMLDivElement | null>(\n null,\n )\n const [internalValue, setInternalValue] = React.useState<string | number>(defaultValue || '')\n const [searchQuery, setSearchQuery] = React.useState('')\n const [highlightedIndex, setHighlightedIndex] = React.useState(-1)\n const [showTopArrow, setShowTopArrow] = React.useState(false)\n const [showBottomArrow, setShowBottomArrow] = React.useState(false)\n\n const triggerRef = React.useRef<HTMLButtonElement>(null)\n const inputRef = React.useRef<HTMLInputElement>(null)\n const scrollContainerRef = React.useRef<HTMLDivElement>(null)\n const currentValue = value !== undefined ? value : internalValue\n\n // Generate unique IDs for accessibility\n const uniqueId = useId()\n const labelId = `select-label-${uniqueId}`\n const listboxId = `select-listbox-${uniqueId}`\n const helperId = `select-helper-${uniqueId}`\n\n // Use shared validation status utility\n const { status, message: helperMessage } = getValidationStatus({\n error,\n warning,\n info,\n success,\n helperText,\n })\n\n const groupedOptions = React.useMemo(() => {\n const groups: Record<string, SelectOption[]> = {}\n const ungrouped: SelectOption[] = []\n\n options.forEach((option) => {\n if (option.group) {\n if (!groups[option.group]) {\n groups[option.group] = []\n }\n groups[option.group]!.push(option)\n } else {\n ungrouped.push(option)\n }\n })\n\n return { groups, ungrouped }\n }, [options])\n\n const flattenedOptions = React.useMemo(() => {\n const items: Array<{\n type: 'option' | 'group'\n data: SelectOption | string\n }> = []\n\n groupedOptions.ungrouped.forEach((option) => {\n items.push({ type: 'option', data: option })\n })\n\n Object.entries(groupedOptions.groups).forEach(\n ([groupName, groupOptions]) => {\n items.push({ type: 'group', data: groupName })\n groupOptions.forEach((option) => {\n items.push({ type: 'option', data: option })\n })\n },\n )\n\n return items\n }, [groupedOptions])\n\n const filteredOptions = React.useMemo(() => {\n if (!searchQuery) return flattenedOptions\n\n return flattenedOptions.filter((item) => {\n if (item.type === 'group') return true\n const option = item.data as SelectOption\n return option.label.toLowerCase().includes(searchQuery.toLowerCase())\n })\n }, [flattenedOptions, searchQuery])\n\n const shouldVirtualize = filteredOptions.length > virtualizeThreshold\n\n const virtualizer = useVirtualizer({\n count: filteredOptions.length,\n getScrollElement: () => parentNode,\n estimateSize: () => 40,\n enabled: shouldVirtualize,\n overscan: 10,\n })\n\n // Store virtualizer in ref to avoid recreating handleKeyDown on every render\n const virtualizerRef = React.useRef(virtualizer)\n React.useEffect(() => {\n virtualizerRef.current = virtualizer\n }, [virtualizer])\n\n const refCallback = useCallback((node: HTMLDivElement) => {\n if (node) {\n setParentNode(node)\n // Also set as scroll container for virtualized lists\n scrollContainerRef.current = node\n }\n }, [])\n\n const selectedOption = options.find((opt) => opt.value === currentValue)\n const displayValue = isOpen ? searchQuery : selectedOption?.label || ''\n\n const handleSelect = React.useCallback(\n (optionValue: string | number) => {\n if (value === undefined) {\n setInternalValue(optionValue)\n }\n onChange?.(optionValue)\n setIsOpen(false)\n setSearchQuery('')\n setHighlightedIndex(-1)\n },\n [value, onChange],\n )\n\n const handleClear = React.useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation()\n if (value === undefined) {\n setInternalValue('')\n }\n onChange?.('')\n setSearchQuery('')\n setHighlightedIndex(-1)\n },\n [value, onChange],\n )\n\n const handleInputChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n setSearchQuery(e.target.value)\n if (!isOpen) setIsOpen(true)\n },\n [isOpen],\n )\n\n const handleInputFocus = React.useCallback(() => {\n setIsOpen(true)\n }, [])\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent) => {\n if (!isOpen && e.key !== 'Tab') {\n if (e.key === 'Enter' || e.key === ' ' || e.key === 'ArrowDown') {\n e.preventDefault()\n setIsOpen(true)\n }\n return\n }\n\n const selectableOptions = filteredOptions.filter(\n (item) =>\n item.type === 'option' && !(item.data as SelectOption).disabled,\n )\n\n switch (e.key) {\n case 'Escape':\n e.preventDefault()\n setIsOpen(false)\n setSearchQuery('')\n setHighlightedIndex(-1)\n inputRef.current?.blur()\n break\n\n case 'ArrowDown':\n e.preventDefault()\n setHighlightedIndex((prev) => {\n const nextIndex = Math.min(prev + 1, selectableOptions.length - 1)\n const option = selectableOptions[nextIndex]\n if (option) {\n const optionIndex = filteredOptions.indexOf(option)\n if (shouldVirtualize && virtualizerRef.current) {\n virtualizerRef.current.scrollToIndex(optionIndex, {\n align: 'auto',\n })\n }\n }\n return nextIndex\n })\n break\n\n case 'ArrowUp':\n e.preventDefault()\n setHighlightedIndex((prev) => {\n const nextIndex = Math.max(prev - 1, 0)\n const option = selectableOptions[nextIndex]\n if (option) {\n const optionIndex = filteredOptions.indexOf(option)\n if (shouldVirtualize && virtualizerRef.current) {\n virtualizerRef.current.scrollToIndex(optionIndex, {\n align: 'auto',\n })\n }\n }\n return nextIndex\n })\n break\n\n case 'Enter':\n e.preventDefault()\n if (\n highlightedIndex >= 0 &&\n highlightedIndex < selectableOptions.length\n ) {\n const item = selectableOptions[highlightedIndex]\n if (item) {\n const option = item.data as SelectOption\n handleSelect(option.value)\n }\n }\n break\n\n case 'Home':\n e.preventDefault()\n setHighlightedIndex(0)\n if (shouldVirtualize && virtualizerRef.current) {\n virtualizerRef.current.scrollToIndex(0)\n }\n break\n\n case 'End':\n e.preventDefault()\n setHighlightedIndex(selectableOptions.length - 1)\n if (shouldVirtualize && virtualizerRef.current) {\n virtualizerRef.current.scrollToIndex(filteredOptions.length - 1)\n }\n break\n\n default:\n break\n }\n },\n [\n isOpen,\n filteredOptions,\n highlightedIndex,\n handleSelect,\n shouldVirtualize,\n ],\n )\n\n // Handle scroll to update arrow visibility\n const handleScroll = React.useCallback(\n (e: React.UIEvent<HTMLDivElement>) => {\n const element = e.currentTarget\n const { scrollTop, scrollHeight, clientHeight } = element\n\n setShowTopArrow(scrollTop > 0)\n setShowBottomArrow(scrollTop + clientHeight < scrollHeight - 1)\n },\n [],\n )\n\n // Check initial scroll state when dropdown opens\n React.useEffect(() => {\n if (isOpen) {\n // Use a small delay to ensure the DOM is fully rendered\n const timeoutId = setTimeout(() => {\n const element = scrollContainerRef.current\n if (element) {\n const { scrollTop, scrollHeight, clientHeight } = element\n setShowTopArrow(scrollTop > 0)\n setShowBottomArrow(scrollTop + clientHeight < scrollHeight - 1)\n }\n }, 50)\n\n return () => clearTimeout(timeoutId)\n } else {\n setShowTopArrow(false)\n setShowBottomArrow(false)\n return undefined\n }\n }, [isOpen, filteredOptions, shouldVirtualize])\n\n const renderOptionsList = () => (\n <div className=\"relative\">\n {/* Top scroll indicator */}\n <div className=\"flex items-center justify-center h-4\">\n {showTopArrow && <ChevronUp className=\"size-4 text-text-primary\" />}\n </div>\n\n <div\n ref={scrollContainerRef}\n className=\"overflow-auto relative\"\n style={{ maxHeight: maxDropdownHeight }}\n role=\"listbox\"\n id={listboxId}\n aria-labelledby={label ? labelId : undefined}\n onScroll={handleScroll}\n >\n {!filteredOptions.length ? (\n <div\n data-slot=\"empty\"\n className={cn('select_empty', 'px-3 py-4 text-center text-sm text-text-secondary', classNames?.empty)}\n >\n No options found\n </div>\n ) : shouldVirtualize ? (\n <div\n ref={refCallback}\n style={{\n height: `${Math.min(virtualizer.getTotalSize(), maxDropdownHeight)}px`,\n overflow: 'auto',\n }}\n onScroll={handleScroll}\n >\n <div\n style={{\n height: `${virtualizer.getTotalSize()}px`,\n width: '100%',\n position: 'relative',\n }}\n >\n {virtualizer.getVirtualItems().map((virtualItem) => {\n const item = filteredOptions[virtualItem.index]\n\n if (!item) return null\n\n if (item.type === 'group') {\n return (\n <div\n key={`group-${virtualItem.index}`}\n data-slot=\"group\"\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: `${virtualItem.size}px`,\n transform: `translateY(${virtualItem.start}px)`,\n }}\n className={cn('select_group', selectGroupVariants(), classNames?.group)}\n >\n <span\n data-slot=\"groupLabel\"\n className={cn('select_groupLabel', classNames?.groupLabel)}\n >\n {item.data as string}\n </span>\n </div>\n )\n }\n\n const option = item.data as SelectOption\n const isSelected = option.value === currentValue\n const selectableOptions = filteredOptions.filter(\n (i) =>\n i.type === 'option' && !(i.data as SelectOption).disabled,\n )\n const selectableIndex = selectableOptions.findIndex(\n (i) => i === item,\n )\n const isHighlighted = selectableIndex === highlightedIndex\n\n return (\n <div\n key={option.value}\n data-slot=\"option\"\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: `${virtualItem.size}px`,\n transform: `translateY(${virtualItem.start}px)`,\n }}\n className={cn(\n 'select_option',\n selectOptionVariants({\n selected: isSelected,\n disabled: !!option.disabled,\n }),\n isHighlighted && 'bg-surface',\n classNames?.option,\n isSelected && classNames?.optionSelected,\n )}\n onClick={() =>\n !option.disabled && handleSelect(option.value)\n }\n role=\"option\"\n aria-selected={isSelected}\n aria-disabled={option.disabled}\n >\n {option.label}\n {isSelected && (\n <span className=\"absolute right-3 top-1/2 -translate-y-1/2\">\n <Check\n className={cn('text-primary', iconSizes[size])}\n />\n </span>\n )}\n </div>\n )\n })}\n </div>\n </div>\n ) : (\n <div className=\"py-1\">\n {filteredOptions.map((item, index) => {\n if (item.type === 'group') {\n return (\n <div\n key={`group-${index}`}\n data-slot=\"group\"\n className={cn('select_group', selectGroupVariants(), classNames?.group)}\n >\n <span\n data-slot=\"groupLabel\"\n className={cn('select_groupLabel', classNames?.groupLabel)}\n >\n {item.data as string}\n </span>\n </div>\n )\n }\n\n const option = item.data as SelectOption\n const isSelected = option.value === currentValue\n const selectableOptions = filteredOptions.filter(\n (i) =>\n i.type === 'option' && !(i.data as SelectOption).disabled,\n )\n const selectableIndex = selectableOptions.findIndex(\n (i) => i === item,\n )\n const isHighlighted = selectableIndex === highlightedIndex\n\n return (\n <div\n key={option.value}\n data-slot=\"option\"\n className={cn(\n 'select_option',\n selectOptionVariants({\n selected: isSelected,\n disabled: !!option.disabled,\n }),\n isHighlighted && 'bg-surface',\n classNames?.option,\n isSelected && classNames?.optionSelected,\n )}\n onClick={() =>\n !option.disabled && handleSelect(option.value)\n }\n role=\"option\"\n aria-selected={isSelected}\n aria-disabled={option.disabled}\n >\n {option.label}\n {isSelected && (\n <span className=\"absolute right-3 top-1/2 -translate-y-1/2\">\n <Check\n className={cn('text-primary', iconSizes[size])}\n />\n </span>\n )}\n </div>\n )\n })}\n </div>\n )}\n </div>\n\n {/* Bottom scroll indicator */}\n <div className=\"flex items-center justify-center h-4\">\n {showBottomArrow && (\n <ChevronDown className=\"size-4 text-text-primary\" />\n )}\n </div>\n </div>\n )\n\n // Trigger button (used in both desktop and mobile)\n const triggerButton = (\n <button\n ref={triggerRef}\n type=\"button\"\n data-slot=\"trigger\"\n className={cn(\n 'select_trigger',\n selectTriggerVariants({ status, size, fullWidth }),\n loading && 'opacity-50',\n className,\n classNames?.trigger,\n )}\n disabled={disabled || loading}\n aria-haspopup=\"listbox\"\n aria-expanded={isOpen}\n aria-controls={listboxId}\n aria-labelledby={label ? labelId : undefined}\n aria-describedby={helperMessage ? helperId : undefined}\n onClick={() => setIsOpen(!isOpen)}\n >\n <input\n ref={inputRef}\n type=\"text\"\n data-slot=\"search\"\n className={cn('select_search', 'w-full text-ellipsis flex-1 bg-transparent outline-none cursor-pointer placeholder:text-text-secondary/50', classNames?.search)}\n placeholder={placeholder}\n value={displayValue}\n onChange={handleInputChange}\n onFocus={handleInputFocus}\n onKeyDown={handleKeyDown}\n disabled={disabled || loading}\n readOnly={!isOpen}\n tabIndex={isOpen ? 0 : -1}\n aria-autocomplete=\"list\"\n aria-controls={isOpen ? listboxId : undefined}\n />\n <div\n data-slot=\"triggerIcon\"\n className={cn('select_triggerIcon', 'flex items-center gap-1 text-text-secondary', classNames?.triggerIcon)}\n >\n {clearable && currentValue && !disabled && !loading && (\n <button\n type=\"button\"\n onClick={handleClear}\n className=\"hover:text-text-primary transition-colors\"\n aria-label=\"Clear selection\"\n >\n <X className={iconSizes[size]} />\n </button>\n )}\n {loading ? (\n <Spinner />\n ) : (\n <>\n {isOpen ? (\n <Search className={iconSizes[size]} />\n ) : (\n <ChevronDown className={iconSizes[size]} />\n )}\n </>\n )}\n </div>\n </button>\n )\n\n const selectElement = (\n <div\n data-slot=\"root\"\n className={cn('select_root', 'relative group', fullWidth ? 'w-full' : 'inline-block', classNames?.root)}\n ref={ref}\n {...props}\n >\n <Popover\n open={isOpen}\n onOpenChange={setIsOpen}\n >\n <PopoverTrigger asChild>{triggerButton}</PopoverTrigger>\n\n <PopoverContent\n data-slot=\"dropdown\"\n className={cn('select_dropdown', 'p-0 w-[var(--radix-popover-trigger-width)]', classNames?.dropdown)}\n align=\"start\"\n onOpenAutoFocus={(e: Event) => {\n e.preventDefault()\n inputRef.current?.focus()\n }}\n >\n {renderOptionsList()}\n </PopoverContent>\n </Popover>\n </div>\n )\n\n if (!label && !helperText && !error) return selectElement\n\n return (\n <div className={cn('w-full flex flex-col', !fullWidth && 'inline-block')}>\n <div className=\"flex gap-2 items-center\">\n {label && (\n <label\n id={labelId}\n data-slot=\"label\"\n className={cn('select_label', 'block mb-0.5', classNames?.label)}\n >\n <span className=\"text-sm font-medium text-text-secondary\">\n {label}\n {required && <span className=\"text-error ml-1\">*</span>}\n </span>\n </label>\n )}\n {helperMessage && (\n <p\n id={helperId}\n data-slot=\"helper\"\n className={cn('select_helper', statusMessageVariants({ status }), classNames?.helper)}\n >\n {helperMessage}\n </p>\n )}\n </div>\n {selectElement}\n </div>\n )\n },\n)\n\nSelect.displayName = 'Select'\n\nexport type * from './types'\nexport default Select\n"]}
@@ -115,45 +115,52 @@ var Badge = React.memo(
115
115
  "--badge-offset-x": `${offset[0]}px`,
116
116
  "--badge-offset-y": `${offset[1]}px`
117
117
  } : void 0;
118
- const renderBadge = (badgeContent) => /* @__PURE__ */ jsx(
119
- "span",
120
- {
121
- ref,
122
- "data-slot": "root",
123
- className: cn(
124
- "badge_root",
125
- badgeVariants({ variant, color, size, shape }),
126
- dot && ["p-0", dotSizeClasses[size], "min-w-0"],
127
- processing && "animate-pulse",
128
- invisible && "opacity-0 scale-0",
129
- "z-10",
130
- className
131
- ),
132
- style: offsetStyles,
133
- children: !dot && /* @__PURE__ */ jsxs(Fragment, { children: [
134
- icon && /* @__PURE__ */ jsx(
135
- "span",
136
- {
137
- className: cn(
138
- "inline-flex items-center justify-center shrink-0",
139
- iconSizeClasses[size],
140
- badgeContent && "mr-1"
141
- ),
142
- children: React.isValidElement(icon) ? React.cloneElement(
143
- icon,
144
- {
145
- className: cn(
146
- "w-full h-full",
147
- icon.props.className
148
- )
149
- }
150
- ) : icon
151
- }
118
+ const renderBadge = (badgeContent) => {
119
+ const isIconOnly = !!icon && badgeContent == null && !dot;
120
+ return /* @__PURE__ */ jsx(
121
+ "span",
122
+ {
123
+ ref,
124
+ "data-slot": "root",
125
+ className: cn(
126
+ "badge_root",
127
+ badgeVariants({ variant, color, size, shape }),
128
+ dot && [dotSizeClasses[size], "min-w-0", "rounded-full"],
129
+ isIconOnly && "aspect-square",
130
+ processing && "animate-pulse",
131
+ invisible && "opacity-0 scale-0",
132
+ "z-10",
133
+ className
152
134
  ),
153
- badgeContent
154
- ] })
155
- }
156
- );
135
+ style: {
136
+ ...dot ? { padding: 0 } : void 0,
137
+ ...offsetStyles
138
+ },
139
+ children: !dot && /* @__PURE__ */ jsxs(Fragment, { children: [
140
+ icon && /* @__PURE__ */ jsx(
141
+ "span",
142
+ {
143
+ className: cn(
144
+ "inline-flex items-center justify-center shrink-0",
145
+ iconSizeClasses[size],
146
+ badgeContent && "mr-1"
147
+ ),
148
+ children: React.isValidElement(icon) ? React.cloneElement(
149
+ icon,
150
+ {
151
+ className: cn(
152
+ "w-full h-full",
153
+ icon.props.className
154
+ )
155
+ }
156
+ ) : icon
157
+ }
158
+ ),
159
+ badgeContent
160
+ ] })
161
+ }
162
+ );
163
+ };
157
164
  const renderProcessingRing = () => processing && dot && !invisible && /* @__PURE__ */ jsx(
158
165
  "span",
159
166
  {
@@ -201,5 +208,5 @@ Badge.displayName = "Badge";
201
208
  var badge_default = Badge;
202
209
 
203
210
  export { badge_default };
204
- //# sourceMappingURL=chunk-IMGVPMHJ.js.map
205
- //# sourceMappingURL=chunk-IMGVPMHJ.js.map
211
+ //# sourceMappingURL=chunk-5JOJBDET.js.map
212
+ //# sourceMappingURL=chunk-5JOJBDET.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/badge/index.tsx"],"names":[],"mappings":"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","file":"chunk-5JOJBDET.js","sourcesContent":["import { cva } from \"class-variance-authority\";\nimport React from \"react\";\n\nimport { cn } from \"../utils\";\nimport { componentColors, createAllColorVariants } from \"../variants\";\nimport type {\n BadgeColor,\n BadgePlacement,\n BadgeProps,\n BadgeSize,\n} from \"./types\";\n\n/**\n * Processing ring color classes for ping animation\n */\nconst processingRingClasses: Record<BadgeColor, string> = {\n default: \"bg-surface/50\",\n primary: \"bg-primary/50\",\n secondary: \"bg-secondary/50\",\n accent: \"bg-accent/50\",\n success: \"bg-success/50\",\n error: \"bg-error/50\",\n warning: \"bg-warning/50\",\n info: \"bg-info/50\",\n};\n\nconst badgeVariants = cva(\n \"inline-flex items-center justify-center whitespace-nowrap font-medium transition-all\",\n {\n variants: {\n variant: {\n default: \"border\",\n solid: \"\",\n outline: \"border\",\n soft: \"\",\n },\n color: {\n default: \"\",\n primary: \"\",\n secondary: \"\",\n accent: \"\",\n success: \"\",\n error: \"\",\n warning: \"\",\n info: \"\",\n },\n size: {\n xs: \"text-(length:--badge-font-size-xs) px-(--badge-padding-x-xs) py-(--badge-padding-y-xs)\",\n sm: \"text-(length:--badge-font-size-sm) px-(--badge-padding-x-sm) py-(--badge-padding-y-sm)\",\n md: \"text-(length:--badge-font-size-md) px-(--badge-padding-x-md) py-(--badge-padding-y-md)\",\n lg: \"text-(length:--badge-font-size-lg) px-(--badge-padding-x-lg) py-(--badge-padding-y-lg)\",\n },\n shape: {\n rounded: \"rounded\",\n pill: \"rounded-full\",\n circle: \"rounded-full aspect-square\",\n },\n },\n compoundVariants: createAllColorVariants(componentColors, [\n \"default\",\n \"solid\",\n \"outline\",\n \"soft\",\n ]),\n defaultVariants: {\n variant: \"solid\",\n color: \"primary\",\n size: \"sm\",\n shape: \"rounded\",\n },\n },\n);\n\n/**\n * Dot size classes based on badge size\n */\nconst dotSizeClasses: Record<BadgeSize, string> = {\n xs: \"size-1.5\",\n sm: \"size-2\",\n md: \"size-2.5\",\n lg: \"size-3\",\n};\n\n/**\n * Icon size classes based on badge size\n */\nconst iconSizeClasses: Record<BadgeSize, string> = {\n xs: \"size-2.5\",\n sm: \"size-3\",\n md: \"size-3.5\",\n lg: \"size-4\",\n};\n\n/**\n * Placement position classes for floating badges\n */\nconst placementClasses: Record<BadgePlacement, string> = {\n \"top-right\": \"top-0 right-0 -translate-y-1/2 translate-x-1/2\",\n \"top-left\": \"top-0 left-0 -translate-y-1/2 -translate-x-1/2\",\n \"bottom-right\": \"bottom-0 right-0 translate-y-1/2 translate-x-1/2\",\n \"bottom-left\": \"bottom-0 left-0 translate-y-1/2 -translate-x-1/2\",\n};\n\n/**\n * Badge Component\n *\n * A versatile badge component for displaying counts, status indicators, or labels.\n * Can be used standalone or as a floating indicator over other elements.\n *\n * @example\n * // Standalone badge\n * <Badge>New</Badge>\n *\n * @example\n * // Badge with count floating over an icon\n * <Badge count={5}>\n * <BellIcon />\n * </Badge>\n *\n * @example\n * // Dot indicator with pulse\n * <Badge dot processing color=\"success\">\n * <Avatar />\n * </Badge>\n */\nconst Badge = React.memo<BadgeProps>(\n ({\n children,\n color = \"primary\",\n variant = \"solid\",\n size = \"sm\",\n shape = \"rounded\",\n dot = false,\n count,\n maxCount = 99,\n showZero = false,\n icon,\n placement = \"top-right\",\n offset,\n processing = false,\n invisible = false,\n standalone = false,\n content,\n className,\n wrapperClassName,\n ref,\n }) => {\n // Calculate display count\n const getDisplayCount = () => {\n if (count === undefined) return null;\n if (count === 0 && !showZero) return null;\n if (count > maxCount) return `${maxCount}+`;\n return count;\n };\n\n const displayCount = getDisplayCount();\n\n // Determine if we're in \"floating\" mode (badge over children) or \"standalone\" mode\n // Floating mode: children + (count OR dot OR content)\n // Standalone mode: just children as badge text, or count/dot without wrapping element\n const isFloatingMode =\n children && (count !== undefined || dot || content) && !standalone;\n\n // Don't render if count is 0 and showZero is false (when no children or content)\n if (\n count !== undefined &&\n count === 0 &&\n !showZero &&\n !children &&\n !content\n ) {\n return null;\n }\n\n // Calculate offset styles\n const offsetStyles = offset\n ? {\n \"--badge-offset-x\": `${offset[0]}px`,\n \"--badge-offset-y\": `${offset[1]}px`,\n }\n : undefined;\n\n // Render the badge element itself\n const renderBadge = (badgeContent: React.ReactNode) => {\n const isIconOnly = !!icon && badgeContent == null && !dot;\n\n return (\n <span\n ref={ref}\n data-slot=\"root\"\n className={cn(\n \"badge_root\",\n badgeVariants({ variant, color, size, shape }),\n dot && [dotSizeClasses[size], \"min-w-0\", \"rounded-full\"],\n isIconOnly && \"aspect-square\",\n processing && \"animate-pulse\",\n invisible && \"opacity-0 scale-0\",\n \"z-10\",\n className,\n )}\n style={{\n ...(dot ? { padding: 0 } : undefined),\n ...(offsetStyles as React.CSSProperties),\n }}\n >\n {!dot && (\n <>\n {icon && (\n <span\n className={cn(\n \"inline-flex items-center justify-center shrink-0\",\n iconSizeClasses[size],\n badgeContent && \"mr-1\",\n )}\n >\n {React.isValidElement(icon)\n ? React.cloneElement(\n icon as React.ReactElement<{ className?: string }>,\n {\n className: cn(\n \"w-full h-full\",\n (icon as React.ReactElement<{ className?: string }>)\n .props.className,\n ),\n },\n )\n : icon}\n </span>\n )}\n {badgeContent}\n </>\n )}\n </span>\n );\n };\n\n // Processing animation ring (for dot badges)\n const renderProcessingRing = () =>\n processing &&\n dot &&\n !invisible && (\n <span\n className={cn(\n \"absolute inset-0 rounded-full animate-ping\",\n processingRingClasses[color],\n )}\n />\n );\n\n // FLOATING MODE: Badge positioned over children\n if (isFloatingMode) {\n const floatingContent = content ?? displayCount;\n\n // Hide badge if count is 0 and showZero is false\n if (count !== undefined && count === 0 && !showZero && !dot && !content) {\n return (\n <span className={cn(\"relative inline-flex\", wrapperClassName)}>\n {children}\n </span>\n );\n }\n\n return (\n <span className={cn(\"relative inline-flex\", wrapperClassName)}>\n {children}\n <span\n className={cn(\n \"absolute\",\n placementClasses[placement],\n offset &&\n \"translate-x-[calc(var(--tw-translate-x)+var(--badge-offset-x,0px))] translate-y-[calc(var(--tw-translate-y)+var(--badge-offset-y,0px))]\",\n )}\n style={offsetStyles as React.CSSProperties}\n >\n <span className=\"relative inline-flex\">\n {renderBadge(floatingContent)}\n {renderProcessingRing()}\n </span>\n </span>\n </span>\n );\n }\n\n // STANDALONE MODE: Badge as inline element\n // Content priority: content prop > count > children\n const standaloneContent =\n content ?? (count !== undefined ? displayCount : children);\n\n if (dot && processing) {\n return (\n <span className={cn(\"relative inline-flex\", wrapperClassName)}>\n {renderBadge(null)}\n {renderProcessingRing()}\n </span>\n );\n }\n\n return renderBadge(standaloneContent);\n },\n);\n\nBadge.displayName = \"Badge\";\n\nexport type * from \"./types\";\nexport default Badge;\n"]}
@@ -211,6 +211,22 @@ var BreadcrumbSeparator = React.memo(
211
211
  }
212
212
  );
213
213
  BreadcrumbSeparator.displayName = "BreadcrumbSeparator";
214
+ var isValidNavigationUrl = (href) => {
215
+ if (href.startsWith("/") || href.startsWith("#") || href.startsWith("?")) {
216
+ return true;
217
+ }
218
+ const dangerousProtocols = ["javascript:", "data:", "vbscript:"];
219
+ const lowerHref = href.toLowerCase();
220
+ if (dangerousProtocols.some((protocol) => lowerHref.startsWith(protocol))) {
221
+ return false;
222
+ }
223
+ try {
224
+ const url = new URL(href, window.location.origin);
225
+ return url.origin === window.location.origin;
226
+ } catch {
227
+ return true;
228
+ }
229
+ };
214
230
  var BreadcrumbEllipsis = React.memo(
215
231
  ({ orientation = "horizontal", items, children, className, size = "md" }) => {
216
232
  const Icon = orientation === "horizontal" ? MoreHorizontal : MoreVertical;
@@ -238,7 +254,7 @@ var BreadcrumbEllipsis = React.memo(
238
254
  label: item.label || "",
239
255
  value: item.label || "",
240
256
  onClick: item.onClick || (() => {
241
- if (item.href) {
257
+ if (item.href && isValidNavigationUrl(item.href)) {
242
258
  window.location.href = item.href;
243
259
  }
244
260
  })
@@ -252,5 +268,5 @@ BreadcrumbEllipsis.displayName = "BreadcrumbEllipsis";
252
268
  var breadcrumbs_default = Breadcrumb;
253
269
 
254
270
  export { BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, breadcrumbs_default };
255
- //# sourceMappingURL=chunk-W3ES3UPV.js.map
256
- //# sourceMappingURL=chunk-W3ES3UPV.js.map
271
+ //# sourceMappingURL=chunk-5VORB55Y.js.map
272
+ //# sourceMappingURL=chunk-5VORB55Y.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/breadcrumbs/index.tsx"],"names":[],"mappings":"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","file":"chunk-5VORB55Y.js","sourcesContent":["'use client'\n\nimport { cva } from 'class-variance-authority'\nimport { ChevronRight, MoreHorizontal, MoreVertical } from 'lucide-react'\nimport React from 'react'\n\nimport Dropdown from '../dropdown'\nimport { cn, iconSizes } from '../utils'\nimport { textColorVariants } from '../variants'\nimport type {\n BreadcrumbEllipsisProps,\n BreadcrumbItemProps,\n BreadcrumbLinkProps,\n BreadcrumbListProps,\n BreadcrumbPageProps,\n BreadcrumbProps,\n BreadcrumbsColor,\n BreadcrumbSeparatorProps,\n BreadcrumbsSize,\n} from './types'\n\nexport type { BreadcrumbItemData } from './types'\n\ninterface BreadcrumbContextValue {\n color?: BreadcrumbsColor\n size?: BreadcrumbsSize\n classNames?: {\n list?: string\n item?: string\n link?: string\n separator?: string\n current?: string\n }\n}\n\nconst BreadcrumbContext = React.createContext<BreadcrumbContextValue>({})\n\nconst breadcrumbVariants = cva('', {\n variants: {\n size: {\n xs: 'text-xs',\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n})\n\nconst Breadcrumb = React.memo<BreadcrumbProps>(\n ({\n children,\n items,\n color = 'default',\n size = 'md',\n separator,\n className,\n classNames,\n }) => {\n const content = items?.length ? (\n <BreadcrumbList>\n {items.map((item, index) => {\n const isLast = index === items.length - 1\n return (\n <React.Fragment key={index}>\n <BreadcrumbItem>\n {item.ellipsis ? (\n <BreadcrumbEllipsis\n orientation={item.ellipsisOrientation || 'horizontal'}\n items={item.ellipsisItems || []}\n size={size}\n />\n ) : isLast ? (\n <BreadcrumbPage\n leftIcon={item.leftIcon}\n rightIcon={item.rightIcon}\n >\n {item.label}\n </BreadcrumbPage>\n ) : (\n <BreadcrumbLink\n href={item.href || ''}\n onClick={item.onClick}\n leftIcon={item.leftIcon}\n rightIcon={item.rightIcon}\n >\n {item.label}\n </BreadcrumbLink>\n )}\n </BreadcrumbItem>\n {!isLast && (\n <BreadcrumbSeparator size={size}>\n {separator}\n </BreadcrumbSeparator>\n )}\n </React.Fragment>\n )\n })}\n </BreadcrumbList>\n ) : (\n children\n )\n\n return (\n <BreadcrumbContext.Provider value={{ color, size, classNames }}>\n <nav\n aria-label=\"breadcrumb\"\n className={cn(\n 'breadcrumbs_root',\n breadcrumbVariants({ size }),\n textColorVariants({ color }),\n classNames?.root,\n className,\n )}\n >\n {content}\n </nav>\n </BreadcrumbContext.Provider>\n )\n },\n)\n\nBreadcrumb.displayName = 'Breadcrumb'\n\nexport const BreadcrumbList = React.memo<BreadcrumbListProps>(\n ({ children, className }) => {\n const { classNames } = React.useContext(BreadcrumbContext)\n\n return (\n <ol\n className={cn(\n 'breadcrumbs_list',\n 'flex items-center gap-1.5',\n classNames?.list,\n className,\n )}\n >\n {children}\n </ol>\n )\n },\n)\n\nBreadcrumbList.displayName = 'BreadcrumbList'\n\nexport const BreadcrumbItem = React.memo<BreadcrumbItemProps>(\n ({ children, className }) => {\n const { classNames } = React.useContext(BreadcrumbContext)\n\n return (\n <li\n className={cn(\n 'breadcrumbs_item',\n 'inline-flex items-center gap-1.5',\n classNames?.item,\n className,\n )}\n >\n {children}\n </li>\n )\n },\n)\n\nBreadcrumbItem.displayName = 'BreadcrumbItem'\n\nexport const BreadcrumbLink = React.memo<BreadcrumbLinkProps>(\n ({ children, href, onClick, leftIcon, rightIcon, className }) => {\n const { classNames } = React.useContext(BreadcrumbContext)\n\n const handleClick = (e: React.MouseEvent) => {\n if (onClick) {\n e.preventDefault()\n onClick()\n }\n }\n\n const content = (\n <>\n {leftIcon && (\n <span className=\"inline-flex items-center\">{leftIcon}</span>\n )}\n {children}\n {rightIcon && (\n <span className=\"inline-flex items-center\">{rightIcon}</span>\n )}\n </>\n )\n\n const linkClasses = cn(\n 'breadcrumbs_link',\n 'inline-flex items-center gap-1.5 transition-colors hover:underline cursor-pointer',\n classNames?.link,\n className,\n )\n\n if (href) {\n return (\n <a\n href={href}\n onClick={handleClick}\n className={linkClasses}\n >\n {content}\n </a>\n )\n }\n\n if (onClick) {\n return (\n <button\n type=\"button\"\n onClick={handleClick}\n className={linkClasses}\n >\n {content}\n </button>\n )\n }\n\n return (\n <span\n className={cn(\n 'breadcrumbs_link',\n 'inline-flex items-center gap-1.5',\n classNames?.link,\n className,\n )}\n >\n {content}\n </span>\n )\n },\n)\n\nBreadcrumbLink.displayName = 'BreadcrumbLink'\n\nexport const BreadcrumbPage = React.memo<BreadcrumbPageProps>(\n ({ children, leftIcon, rightIcon, className }) => {\n const { classNames } = React.useContext(BreadcrumbContext)\n\n return (\n <span\n aria-current=\"page\"\n className={cn(\n 'breadcrumbs_current',\n 'inline-flex items-center gap-1.5 font-medium',\n classNames?.current,\n className,\n )}\n >\n {leftIcon && (\n <span className=\"inline-flex items-center\">{leftIcon}</span>\n )}\n {children}\n {rightIcon && (\n <span className=\"inline-flex items-center\">{rightIcon}</span>\n )}\n </span>\n )\n },\n)\n\nBreadcrumbPage.displayName = 'BreadcrumbPage'\n\nexport const BreadcrumbSeparator = React.memo<BreadcrumbSeparatorProps>(\n ({ children, className, size = 'md' }) => {\n const { classNames } = React.useContext(BreadcrumbContext)\n\n return (\n <span\n className={cn(\n 'breadcrumbs_separator',\n 'text-text-secondary',\n classNames?.separator,\n className,\n )}\n >\n {children ?? <ChevronRight className={iconSizes[size]} />}\n </span>\n )\n },\n)\n\nBreadcrumbSeparator.displayName = 'BreadcrumbSeparator'\n\n/**\n * Validates URL to prevent open redirect vulnerabilities\n * Only allows relative URLs or same-origin URLs\n */\nconst isValidNavigationUrl = (href: string): boolean => {\n // Allow relative URLs starting with / or #\n if (href.startsWith('/') || href.startsWith('#') || href.startsWith('?')) {\n return true\n }\n\n // Block javascript: and other dangerous protocols\n const dangerousProtocols = ['javascript:', 'data:', 'vbscript:']\n const lowerHref = href.toLowerCase()\n if (dangerousProtocols.some(protocol => lowerHref.startsWith(protocol))) {\n return false\n }\n\n // For absolute URLs, verify same origin\n try {\n const url = new URL(href, window.location.origin)\n return url.origin === window.location.origin\n } catch {\n // If URL parsing fails, allow it (likely a relative URL)\n return true\n }\n}\n\nexport const BreadcrumbEllipsis = React.memo<BreadcrumbEllipsisProps>(\n ({ orientation = 'horizontal', items, children, className, size = 'md' }) => {\n const Icon = orientation === 'horizontal' ? MoreHorizontal : MoreVertical\n const isInteractive = !!(items?.length || children)\n\n const ellipsisButton = (\n <span\n role={isInteractive ? 'button' : 'presentation'}\n aria-hidden={isInteractive ? undefined : true}\n aria-label={isInteractive ? 'Show more breadcrumbs' : undefined}\n tabIndex={isInteractive ? 0 : undefined}\n className={cn(\n 'flex items-center justify-center',\n isInteractive && 'cursor-pointer',\n className,\n )}\n >\n <Icon className={iconSizes[size]} />\n <span className=\"sr-only\">More</span>\n </span>\n )\n\n // If items or children are provided, wrap in Dropdown\n if (items || children) {\n const dropdownItems = (items || []).map((item) => ({\n label: item.label || '',\n value: item.label || '',\n onClick:\n item.onClick ||\n (() => {\n // Validate URL before navigation to prevent open redirect\n if (item.href && isValidNavigationUrl(item.href)) {\n window.location.href = item.href\n }\n }),\n }))\n\n return <Dropdown items={dropdownItems}>{ellipsisButton}</Dropdown>\n }\n\n return ellipsisButton\n },\n)\n\nBreadcrumbEllipsis.displayName = 'BreadcrumbEllipsis'\n\nexport type * from './types'\nexport default Breadcrumb\n"]}
@@ -35,6 +35,7 @@ var ButtonGroup = React.memo(
35
35
  size,
36
36
  variant,
37
37
  color,
38
+ shape,
38
39
  disabled = false,
39
40
  className,
40
41
  classNames,
@@ -49,6 +50,7 @@ var ButtonGroup = React.memo(
49
50
  size: child.props.size ?? size,
50
51
  variant: child.props.variant ?? variant,
51
52
  color: child.props.color ?? color,
53
+ shape: child.props.shape ?? shape,
52
54
  // Disabled is additive - if group is disabled, all children are disabled
53
55
  disabled: child.props.disabled || disabled,
54
56
  // Apply button classNames from ButtonGroup
@@ -80,5 +82,5 @@ ButtonGroup.displayName = "ButtonGroup";
80
82
  var button_group_default = ButtonGroup;
81
83
 
82
84
  export { button_group_default };
83
- //# sourceMappingURL=chunk-3UCZ4GMN.js.map
84
- //# sourceMappingURL=chunk-3UCZ4GMN.js.map
85
+ //# sourceMappingURL=chunk-6HGUDHHE.js.map
86
+ //# sourceMappingURL=chunk-6HGUDHHE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/button-group/index.tsx"],"names":[],"mappings":";;;;;AAOA,IAAM,mBAAA,GAAsB,IAAI,aAAA,EAAe;AAAA,EAC7C,QAAA,EAAU;AAAA,IACR,QAAA,EAAU;AAAA,MACR,IAAA,EAAM,UAAA;AAAA,MACN,KAAA,EAAO;AAAA,KACT;AAAA,IACA,SAAA,EAAW;AAAA,MACT,IAAA,EAAM,qBAAA;AAAA,MACN,KAAA,EAAO;AAAA;AACT,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,QAAA,EAAU,KAAA;AAAA,IACV,SAAA,EAAW;AAAA;AAEf,CAAC,CAAA;AAKD,IAAM,yBAAA,GACJ,gHAAA;AAEF,IAAM,uBAAA,GACJ,gHAAA;AAKF,IAAM,UAAA,GAAa;AAAA,EACjB,EAAA,EAAI,OAAA;AAAA,EACJ,EAAA,EAAI,OAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AA8BA,IAAM,cAAc,KAAA,CAAM,IAAA;AAAA,EACxB,CAAC;AAAA,IACC,QAAA,GAAW,KAAA;AAAA,IACX,QAAA,GAAW,IAAA;AAAA,IACX,GAAA,GAAM,IAAA;AAAA,IACN,SAAA,GAAY,KAAA;AAAA,IACZ,IAAA;AAAA,IACA,OAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA,GAAW,KAAA;AAAA,IACX,SAAA;AAAA,IACA,UAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAA;AAAA,IACA,GAAG;AAAA,GACL,KAAM;AAEJ,IAAA,MAAM,mBAAmB,KAAA,CAAM,QAAA,CAAS,GAAA,CAAI,QAAA,EAAU,CAAC,KAAA,KAAU;AAC/D,MAAA,IAAI,KAAA,CAAM,cAAA,CAA4B,KAAK,CAAA,EAAG;AAC5C,QAAA,OAAO,KAAA,CAAM,aAAa,KAAA,EAAO;AAAA;AAAA,UAE/B,IAAA,EAAM,KAAA,CAAM,KAAA,CAAM,IAAA,IAAQ,IAAA;AAAA,UAC1B,OAAA,EAAS,KAAA,CAAM,KAAA,CAAM,OAAA,IAAW,OAAA;AAAA,UAChC,KAAA,EAAO,KAAA,CAAM,KAAA,CAAM,KAAA,IAAS,KAAA;AAAA,UAC5B,KAAA,EAAO,KAAA,CAAM,KAAA,CAAM,KAAA,IAAS,KAAA;AAAA;AAAA,UAE5B,QAAA,EAAU,KAAA,CAAM,KAAA,CAAM,QAAA,IAAY,QAAA;AAAA;AAAA,UAElC,WAAW,EAAA,CAAG,UAAA,EAAY,MAAA,EAAQ,KAAA,CAAM,MAAM,SAAS;AAAA,SACxD,CAAA;AAAA,MACH;AACA,MAAA,OAAO,KAAA;AAAA,IACT,CAAC,CAAA;AAED,IAAA,uBACE,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,IAAA,EAAK,OAAA;AAAA,QACL,SAAA,EAAW,EAAA;AAAA,UACT,kBAAA;AAAA,UACA,mBAAA,CAAoB,EAAE,QAAA,EAAU,SAAA,EAAW,CAAA;AAAA,UAC3C,QAAA,GACI,QAAA,GACE,uBAAA,GACA,yBAAA,GACF,WAAW,GAAG,CAAA;AAAA,UAClB,UAAA,EAAY,IAAA;AAAA,UACZ;AAAA,SACF;AAAA,QACA,WAAA,EAAU,MAAA;AAAA,QACT,GAAG,KAAA;AAAA,QAEH,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,EAEJ;AACF,CAAA;AAEA,WAAA,CAAY,WAAA,GAAc,aAAA;AAG1B,IAAO,oBAAA,GAAQ","file":"chunk-6HGUDHHE.js","sourcesContent":["import { cva } from 'class-variance-authority'\nimport React from 'react'\n\nimport type { ButtonProps } from '../button/types'\nimport { cn } from '../utils'\nimport type { ButtonGroupProps } from './types'\n\nconst buttonGroupVariants = cva('inline-flex', {\n variants: {\n vertical: {\n true: 'flex-col',\n false: 'flex-row',\n },\n fullWidth: {\n true: 'w-full [&>*]:flex-1',\n false: '',\n },\n },\n defaultVariants: {\n vertical: false,\n fullWidth: false,\n },\n})\n\n/**\n * Attached button styling - removes inner borders and rounds only outer corners\n */\nconst attachedHorizontalClasses =\n '[&>*:not(:first-child)]:rounded-l-none [&>*:not(:last-child)]:border-r-0 [&>*:not(:last-child)]:rounded-r-none'\n\nconst attachedVerticalClasses =\n '[&>*:not(:first-child)]:rounded-t-none [&>*:not(:last-child)]:border-b-0 [&>*:not(:last-child)]:rounded-b-none'\n\n/**\n * Gap size classes\n */\nconst gapClasses = {\n sm: 'gap-1',\n md: 'gap-2',\n lg: 'gap-3',\n}\n\n/**\n * ButtonGroup Component\n *\n * Groups multiple buttons together with consistent styling and spacing.\n * Can propagate common props (size, variant, color, disabled) to all child buttons.\n *\n * @example\n * // Basic horizontal group\n * <ButtonGroup>\n * <Button>Save</Button>\n * <Button>Cancel</Button>\n * </ButtonGroup>\n *\n * @example\n * // Vertical group with uniform styling\n * <ButtonGroup vertical variant=\"outline\" size=\"sm\">\n * <Button>Option 1</Button>\n * <Button>Option 2</Button>\n * </ButtonGroup>\n *\n * @example\n * // Separated buttons with gap\n * <ButtonGroup attached={false} gap=\"md\">\n * <Button>A</Button>\n * <Button>B</Button>\n * <Button>C</Button>\n * </ButtonGroup>\n */\nconst ButtonGroup = React.memo<ButtonGroupProps>(\n ({\n vertical = false,\n attached = true,\n gap = 'md',\n fullWidth = false,\n size,\n variant,\n color,\n shape,\n disabled = false,\n className,\n classNames,\n children,\n ref,\n ...props\n }) => {\n // Clone children and inject group props\n const enhancedChildren = React.Children.map(children, (child) => {\n if (React.isValidElement<ButtonProps>(child)) {\n return React.cloneElement(child, {\n // Group props are defaults - child props take precedence\n size: child.props.size ?? size,\n variant: child.props.variant ?? variant,\n color: child.props.color ?? color,\n shape: child.props.shape ?? shape,\n // Disabled is additive - if group is disabled, all children are disabled\n disabled: child.props.disabled || disabled,\n // Apply button classNames from ButtonGroup\n className: cn(classNames?.button, child.props.className),\n })\n }\n return child\n })\n\n return (\n <div\n ref={ref}\n role=\"group\"\n className={cn(\n 'buttonGroup_root',\n buttonGroupVariants({ vertical, fullWidth }),\n attached\n ? vertical\n ? attachedVerticalClasses\n : attachedHorizontalClasses\n : gapClasses[gap],\n classNames?.root,\n className,\n )}\n data-slot=\"root\"\n {...props}\n >\n {enhancedChildren}\n </div>\n )\n },\n)\n\nButtonGroup.displayName = 'ButtonGroup'\n\nexport type * from './types'\nexport default ButtonGroup\n"]}