@forgedevstack/bear 1.1.3 → 1.1.4

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 (228) hide show
  1. package/dist/components/ActionIcon/ActionIcon.cjs +1 -0
  2. package/dist/components/ActionIcon/ActionIcon.const.cjs +1 -0
  3. package/dist/components/ActionIcon/ActionIcon.const.d.ts +7 -0
  4. package/dist/components/ActionIcon/ActionIcon.const.js +68 -0
  5. package/dist/components/ActionIcon/ActionIcon.d.ts +4 -0
  6. package/dist/components/ActionIcon/ActionIcon.js +42 -0
  7. package/dist/components/ActionIcon/ActionIcon.types.d.ts +11 -0
  8. package/dist/components/ActionIcon/index.d.ts +2 -0
  9. package/dist/components/Affix/Affix.cjs +1 -0
  10. package/dist/components/Affix/Affix.const.cjs +1 -0
  11. package/dist/components/Affix/Affix.const.d.ts +6 -0
  12. package/dist/components/Affix/Affix.const.js +9 -0
  13. package/dist/components/Affix/Affix.d.ts +4 -0
  14. package/dist/components/Affix/Affix.js +69 -0
  15. package/dist/components/Affix/Affix.types.d.ts +10 -0
  16. package/dist/components/Affix/index.d.ts +2 -0
  17. package/dist/components/Anchor/Anchor.cjs +1 -0
  18. package/dist/components/Anchor/Anchor.const.cjs +1 -0
  19. package/dist/components/Anchor/Anchor.const.d.ts +9 -0
  20. package/dist/components/Anchor/Anchor.const.js +11 -0
  21. package/dist/components/Anchor/Anchor.d.ts +4 -0
  22. package/dist/components/Anchor/Anchor.js +91 -0
  23. package/dist/components/Anchor/Anchor.types.d.ts +16 -0
  24. package/dist/components/Anchor/index.d.ts +2 -0
  25. package/dist/components/Blockquote/Blockquote.cjs +1 -0
  26. package/dist/components/Blockquote/Blockquote.const.cjs +1 -0
  27. package/dist/components/Blockquote/Blockquote.const.d.ts +5 -0
  28. package/dist/components/Blockquote/Blockquote.const.js +19 -0
  29. package/dist/components/Blockquote/Blockquote.d.ts +4 -0
  30. package/dist/components/Blockquote/Blockquote.js +56 -0
  31. package/dist/components/Blockquote/Blockquote.types.d.ts +9 -0
  32. package/dist/components/Blockquote/index.d.ts +2 -0
  33. package/dist/components/CheckboxCard/CheckboxCard.cjs +1 -0
  34. package/dist/components/CheckboxCard/CheckboxCard.const.cjs +1 -0
  35. package/dist/components/CheckboxCard/CheckboxCard.const.d.ts +7 -0
  36. package/dist/components/CheckboxCard/CheckboxCard.const.js +22 -0
  37. package/dist/components/CheckboxCard/CheckboxCard.d.ts +5 -0
  38. package/dist/components/CheckboxCard/CheckboxCard.js +132 -0
  39. package/dist/components/CheckboxCard/CheckboxCard.types.d.ts +21 -0
  40. package/dist/components/CheckboxCard/index.d.ts +2 -0
  41. package/dist/components/ColorPicker/ColorPicker.cjs +1 -1
  42. package/dist/components/ColorPicker/ColorPicker.const.cjs +1 -0
  43. package/dist/components/ColorPicker/ColorPicker.const.d.ts +26 -0
  44. package/dist/components/ColorPicker/ColorPicker.const.js +38 -0
  45. package/dist/components/ColorPicker/ColorPicker.js +61 -78
  46. package/dist/components/ColorSwatch/ColorSwatch.cjs +1 -0
  47. package/dist/components/ColorSwatch/ColorSwatch.const.cjs +1 -0
  48. package/dist/components/ColorSwatch/ColorSwatch.const.d.ts +16 -0
  49. package/dist/components/ColorSwatch/ColorSwatch.const.js +19 -0
  50. package/dist/components/ColorSwatch/ColorSwatch.d.ts +5 -0
  51. package/dist/components/ColorSwatch/ColorSwatch.js +92 -0
  52. package/dist/components/ColorSwatch/ColorSwatch.types.d.ts +23 -0
  53. package/dist/components/ColorSwatch/ColorSwatch.utils.cjs +1 -0
  54. package/dist/components/ColorSwatch/ColorSwatch.utils.d.ts +6 -0
  55. package/dist/components/ColorSwatch/ColorSwatch.utils.js +14 -0
  56. package/dist/components/ColorSwatch/index.d.ts +2 -0
  57. package/dist/components/ContextMenu/ContextMenu.cjs +1 -0
  58. package/dist/components/ContextMenu/ContextMenu.const.cjs +1 -0
  59. package/dist/components/ContextMenu/ContextMenu.const.d.ts +9 -0
  60. package/dist/components/ContextMenu/ContextMenu.const.js +12 -0
  61. package/dist/components/ContextMenu/ContextMenu.d.ts +4 -0
  62. package/dist/components/ContextMenu/ContextMenu.js +64 -0
  63. package/dist/components/ContextMenu/ContextMenu.types.d.ts +23 -0
  64. package/dist/components/ContextMenu/index.d.ts +2 -0
  65. package/dist/components/DateRangePicker/DateRangePicker.cjs +1 -0
  66. package/dist/components/DateRangePicker/DateRangePicker.const.cjs +1 -0
  67. package/dist/components/DateRangePicker/DateRangePicker.const.d.ts +27 -0
  68. package/dist/components/DateRangePicker/DateRangePicker.const.js +74 -0
  69. package/dist/components/DateRangePicker/DateRangePicker.d.ts +4 -0
  70. package/dist/components/DateRangePicker/DateRangePicker.js +115 -0
  71. package/dist/components/DateRangePicker/DateRangePicker.types.d.ts +26 -0
  72. package/dist/components/DateRangePicker/DateRangePicker.utils.cjs +1 -0
  73. package/dist/components/DateRangePicker/DateRangePicker.utils.d.ts +4 -0
  74. package/dist/components/DateRangePicker/DateRangePicker.utils.js +22 -0
  75. package/dist/components/DateRangePicker/index.d.ts +2 -0
  76. package/dist/components/Descriptions/Descriptions.cjs +1 -0
  77. package/dist/components/Descriptions/Descriptions.const.cjs +1 -0
  78. package/dist/components/Descriptions/Descriptions.const.d.ts +24 -0
  79. package/dist/components/Descriptions/Descriptions.const.js +27 -0
  80. package/dist/components/Descriptions/Descriptions.d.ts +4 -0
  81. package/dist/components/Descriptions/Descriptions.js +65 -0
  82. package/dist/components/Descriptions/Descriptions.types.d.ts +16 -0
  83. package/dist/components/Descriptions/index.d.ts +2 -0
  84. package/dist/components/Fieldset/Fieldset.cjs +1 -0
  85. package/dist/components/Fieldset/Fieldset.const.cjs +1 -0
  86. package/dist/components/Fieldset/Fieldset.const.d.ts +5 -0
  87. package/dist/components/Fieldset/Fieldset.const.js +16 -0
  88. package/dist/components/Fieldset/Fieldset.d.ts +4 -0
  89. package/dist/components/Fieldset/Fieldset.js +47 -0
  90. package/dist/components/Fieldset/Fieldset.types.d.ts +10 -0
  91. package/dist/components/Fieldset/index.d.ts +2 -0
  92. package/dist/components/ImageGallery/ImageGallery.cjs +1 -0
  93. package/dist/components/ImageGallery/ImageGallery.const.cjs +1 -0
  94. package/dist/components/ImageGallery/ImageGallery.const.d.ts +13 -0
  95. package/dist/components/ImageGallery/ImageGallery.const.js +16 -0
  96. package/dist/components/ImageGallery/ImageGallery.d.ts +4 -0
  97. package/dist/components/ImageGallery/ImageGallery.js +61 -0
  98. package/dist/components/ImageGallery/ImageGallery.types.d.ts +22 -0
  99. package/dist/components/ImageGallery/index.d.ts +2 -0
  100. package/dist/components/Indicator/Indicator.cjs +1 -0
  101. package/dist/components/Indicator/Indicator.const.cjs +1 -0
  102. package/dist/components/Indicator/Indicator.const.d.ts +15 -0
  103. package/dist/components/Indicator/Indicator.const.js +26 -0
  104. package/dist/components/Indicator/Indicator.d.ts +4 -0
  105. package/dist/components/Indicator/Indicator.js +56 -0
  106. package/dist/components/Indicator/Indicator.types.d.ts +16 -0
  107. package/dist/components/Indicator/index.d.ts +2 -0
  108. package/dist/components/InfiniteScroll/InfiniteScroll.cjs +1 -0
  109. package/dist/components/InfiniteScroll/InfiniteScroll.const.cjs +1 -0
  110. package/dist/components/InfiniteScroll/InfiniteScroll.const.d.ts +7 -0
  111. package/dist/components/InfiniteScroll/InfiniteScroll.const.js +10 -0
  112. package/dist/components/InfiniteScroll/InfiniteScroll.d.ts +4 -0
  113. package/dist/components/InfiniteScroll/InfiniteScroll.js +51 -0
  114. package/dist/components/InfiniteScroll/InfiniteScroll.types.d.ts +13 -0
  115. package/dist/components/InfiniteScroll/index.d.ts +2 -0
  116. package/dist/components/Input/Input.cjs +1 -1
  117. package/dist/components/Input/Input.js +99 -66
  118. package/dist/components/Input/Input.types.d.ts +10 -0
  119. package/dist/components/Input/Input.utils.cjs +1 -0
  120. package/dist/components/Input/Input.utils.d.ts +2 -0
  121. package/dist/components/Input/Input.utils.js +15 -0
  122. package/dist/components/Input/index.d.ts +1 -1
  123. package/dist/components/LoadingOverlay/LoadingOverlay.cjs +1 -0
  124. package/dist/components/LoadingOverlay/LoadingOverlay.const.cjs +1 -0
  125. package/dist/components/LoadingOverlay/LoadingOverlay.const.d.ts +6 -0
  126. package/dist/components/LoadingOverlay/LoadingOverlay.const.js +9 -0
  127. package/dist/components/LoadingOverlay/LoadingOverlay.d.ts +4 -0
  128. package/dist/components/LoadingOverlay/LoadingOverlay.js +42 -0
  129. package/dist/components/LoadingOverlay/LoadingOverlay.types.d.ts +11 -0
  130. package/dist/components/LoadingOverlay/index.d.ts +2 -0
  131. package/dist/components/NumberFormatter/NumberFormatter.cjs +1 -0
  132. package/dist/components/NumberFormatter/NumberFormatter.const.cjs +1 -0
  133. package/dist/components/NumberFormatter/NumberFormatter.const.d.ts +5 -0
  134. package/dist/components/NumberFormatter/NumberFormatter.const.js +8 -0
  135. package/dist/components/NumberFormatter/NumberFormatter.d.ts +4 -0
  136. package/dist/components/NumberFormatter/NumberFormatter.js +53 -0
  137. package/dist/components/NumberFormatter/NumberFormatter.types.d.ts +20 -0
  138. package/dist/components/NumberFormatter/NumberFormatter.utils.cjs +1 -0
  139. package/dist/components/NumberFormatter/NumberFormatter.utils.d.ts +2 -0
  140. package/dist/components/NumberFormatter/NumberFormatter.utils.js +19 -0
  141. package/dist/components/NumberFormatter/index.d.ts +2 -0
  142. package/dist/components/Popconfirm/Popconfirm.cjs +1 -0
  143. package/dist/components/Popconfirm/Popconfirm.const.cjs +1 -0
  144. package/dist/components/Popconfirm/Popconfirm.const.d.ts +13 -0
  145. package/dist/components/Popconfirm/Popconfirm.const.js +20 -0
  146. package/dist/components/Popconfirm/Popconfirm.d.ts +4 -0
  147. package/dist/components/Popconfirm/Popconfirm.js +65 -0
  148. package/dist/components/Popconfirm/Popconfirm.types.d.ts +16 -0
  149. package/dist/components/Popconfirm/index.d.ts +2 -0
  150. package/dist/components/RadioCard/RadioCard.cjs +1 -0
  151. package/dist/components/RadioCard/RadioCard.const.cjs +1 -0
  152. package/dist/components/RadioCard/RadioCard.const.d.ts +7 -0
  153. package/dist/components/RadioCard/RadioCard.const.js +22 -0
  154. package/dist/components/RadioCard/RadioCard.d.ts +5 -0
  155. package/dist/components/RadioCard/RadioCard.js +111 -0
  156. package/dist/components/RadioCard/RadioCard.types.d.ts +22 -0
  157. package/dist/components/RadioCard/index.d.ts +2 -0
  158. package/dist/components/Result/Result.cjs +1 -0
  159. package/dist/components/Result/Result.const.cjs +1 -0
  160. package/dist/components/Result/Result.const.d.ts +10 -0
  161. package/dist/components/Result/Result.const.js +20 -0
  162. package/dist/components/Result/Result.d.ts +4 -0
  163. package/dist/components/Result/Result.icons.cjs +1 -0
  164. package/dist/components/Result/Result.icons.d.ts +3 -0
  165. package/dist/components/Result/Result.icons.js +31 -0
  166. package/dist/components/Result/Result.js +35 -0
  167. package/dist/components/Result/Result.types.d.ts +10 -0
  168. package/dist/components/Result/index.d.ts +2 -0
  169. package/dist/components/RingProgress/RingProgress.cjs +1 -0
  170. package/dist/components/RingProgress/RingProgress.const.cjs +1 -0
  171. package/dist/components/RingProgress/RingProgress.const.d.ts +4 -0
  172. package/dist/components/RingProgress/RingProgress.const.js +7 -0
  173. package/dist/components/RingProgress/RingProgress.d.ts +4 -0
  174. package/dist/components/RingProgress/RingProgress.js +67 -0
  175. package/dist/components/RingProgress/RingProgress.types.d.ts +15 -0
  176. package/dist/components/RingProgress/index.d.ts +2 -0
  177. package/dist/components/SignPad/SignPad.cjs +1 -1
  178. package/dist/components/SignPad/SignPad.const.cjs +1 -1
  179. package/dist/components/SignPad/SignPad.const.js +10 -11
  180. package/dist/components/SignPad/SignPad.d.ts +4 -6
  181. package/dist/components/SignPad/SignPad.js +108 -116
  182. package/dist/components/SignPad/SignPad.types.d.ts +2 -2
  183. package/dist/components/SplitButton/SplitButton.cjs +1 -0
  184. package/dist/components/SplitButton/SplitButton.const.cjs +1 -0
  185. package/dist/components/SplitButton/SplitButton.const.d.ts +25 -0
  186. package/dist/components/SplitButton/SplitButton.const.js +27 -0
  187. package/dist/components/SplitButton/SplitButton.d.ts +4 -0
  188. package/dist/components/SplitButton/SplitButton.js +73 -0
  189. package/dist/components/SplitButton/SplitButton.types.d.ts +21 -0
  190. package/dist/components/SplitButton/index.d.ts +2 -0
  191. package/dist/components/Spoiler/Spoiler.cjs +1 -0
  192. package/dist/components/Spoiler/Spoiler.const.cjs +1 -0
  193. package/dist/components/Spoiler/Spoiler.const.d.ts +6 -0
  194. package/dist/components/Spoiler/Spoiler.const.js +9 -0
  195. package/dist/components/Spoiler/Spoiler.d.ts +4 -0
  196. package/dist/components/Spoiler/Spoiler.js +59 -0
  197. package/dist/components/Spoiler/Spoiler.types.d.ts +10 -0
  198. package/dist/components/Spoiler/index.d.ts +2 -0
  199. package/dist/components/TimePicker/components/TimePickerDialDropdown/TimePickerDialDropdown.cjs +1 -1
  200. package/dist/components/TimePicker/components/TimePickerDialDropdown/TimePickerDialDropdown.js +63 -57
  201. package/dist/components/TimePicker/helpers/ClockFaceSvg.cjs +1 -1
  202. package/dist/components/TimePicker/helpers/ClockFaceSvg.d.ts +0 -7
  203. package/dist/components/TimePicker/helpers/ClockFaceSvg.js +32 -31
  204. package/dist/components/TreeSelect/TreeSelect.cjs +1 -0
  205. package/dist/components/TreeSelect/TreeSelect.const.cjs +1 -0
  206. package/dist/components/TreeSelect/TreeSelect.const.d.ts +19 -0
  207. package/dist/components/TreeSelect/TreeSelect.const.js +22 -0
  208. package/dist/components/TreeSelect/TreeSelect.d.ts +4 -0
  209. package/dist/components/TreeSelect/TreeSelect.js +128 -0
  210. package/dist/components/TreeSelect/TreeSelect.types.d.ts +25 -0
  211. package/dist/components/TreeSelect/TreeSelect.utils.cjs +1 -0
  212. package/dist/components/TreeSelect/TreeSelect.utils.d.ts +5 -0
  213. package/dist/components/TreeSelect/TreeSelect.utils.js +25 -0
  214. package/dist/components/TreeSelect/index.d.ts +2 -0
  215. package/dist/components/index.cjs +1 -1
  216. package/dist/components/index.d.ts +44 -0
  217. package/dist/components/index.js +353 -306
  218. package/dist/index.cjs +1 -1
  219. package/dist/index.js +439 -392
  220. package/dist/postcss/bear-plugin.cjs +86 -0
  221. package/dist/styles/_alerts.css +14 -0
  222. package/dist/styles/_base.css +56 -0
  223. package/dist/styles/_buttons.css +108 -0
  224. package/dist/styles/_effects.css +90 -0
  225. package/dist/styles/_marquee.css +25 -0
  226. package/dist/styles/main.css +5 -0
  227. package/dist/styles.css +1 -1
  228. package/package.json +10 -3
@@ -1,84 +1,90 @@
1
- import { jsxs as i, jsx as e } from "react/jsx-runtime";
2
- import { useState as M } from "react";
3
- import { cn as s } from "../../../../utils/cn.js";
4
- import { TIMEPICKER_DEFAULT_TRANSLATIONS as f, CLOCK_HOURS_12 as I, TIMEPICKER_FOOTER_CLASSES as L, TIMEPICKER_CLEAR_BUTTON_CLASSES as R, TIMEPICKER_CONFIRM_BUTTON_CLASSES as O, TIMEPICKER_DROPDOWN_CLASSES as A } from "../../TimePicker.constants.js";
5
- import { ClockFaceSvg as w } from "../../helpers/ClockFaceSvg.js";
6
- const U = ({
7
- selectedHour: t,
8
- setSelectedHour: d,
9
- selectedMinute: b,
1
+ import { jsxs as n, jsx as e } from "react/jsx-runtime";
2
+ import { useState as R, useCallback as v } from "react";
3
+ import { cn as o } from "../../../../utils/cn.js";
4
+ import { TIMEPICKER_DEFAULT_TRANSLATIONS as B, CLOCK_HOURS_12 as L, TIMEPICKER_FOOTER_CLASSES as D, TIMEPICKER_CLEAR_BUTTON_CLASSES as K, TIMEPICKER_CONFIRM_BUTTON_CLASSES as z, TIMEPICKER_DROPDOWN_CLASSES as w } from "../../TimePicker.constants.js";
5
+ import { ClockFaceSvg as F } from "../../helpers/ClockFaceSvg.js";
6
+ const x = "bear-text-blue-600 dark:bear-text-blue-400 bear-font-bold bear-bg-blue-50 dark:bear-bg-blue-900/30 bear-rounded bear-px-1", _ = "bear-text-gray-400 dark:bear-text-zinc-500 hover:bear-text-gray-600 dark:hover:bear-text-zinc-300 bear-cursor-pointer bear-px-1", G = ({
7
+ selectedHour: i,
8
+ setSelectedHour: s,
9
+ selectedMinute: d,
10
10
  setSelectedMinute: m,
11
- period: k,
12
- setPeriod: _,
11
+ period: u,
12
+ setPeriod: k,
13
13
  format: a,
14
- hours: u,
14
+ hours: p,
15
15
  minutes: h,
16
- timeValue: p,
17
- clearable: x,
18
- onChange: o,
19
- onConfirm: T,
20
- onClose: S,
16
+ timeValue: T,
17
+ clearable: S,
18
+ onChange: l,
19
+ onConfirm: E,
20
+ onClose: C,
21
21
  translations: N
22
22
  }) => {
23
- const [v, n] = M("hour"), c = { ...f, ...N }, C = a === "12h" ? t === 12 ? 12 : t % 12 : t, P = b, y = `${C.toString().padStart(2, "0")}:${P.toString().padStart(2, "0")}`, E = a === "12h" ? [...I] : u, l = v === "hour", g = l ? E : h, B = l ? (r) => d(a === "12h" && r === 0 ? 12 : r) : m;
24
- return /* @__PURE__ */ i("div", { className: s(A, "Bear-TimePicker__dial bear-w-72"), children: [
25
- /* @__PURE__ */ e("div", { className: "Bear-TimePicker__dial-title bear-text-center bear-uppercase bear-text-xs bear-text-gray-500 dark:bear-text-zinc-400 bear-mb-2", children: c.selectTime }),
26
- /* @__PURE__ */ i("div", { className: "Bear-TimePicker__dial-display bear-flex bear-items-center bear-justify-center bear-gap-3 bear-mb-4", children: [
27
- /* @__PURE__ */ e("span", { className: "Bear-TimePicker__dial-time bear-text-2xl bear-font-bold bear-text-gray-900 dark:bear-text-white", children: y }),
28
- a === "12h" && /* @__PURE__ */ e("div", { className: "Bear-TimePicker__dial-period bear-flex bear-flex-col bear-gap-0.5", children: ["AM", "PM"].map((r) => /* @__PURE__ */ e(
29
- "button",
30
- {
31
- onClick: () => _(r),
32
- className: s(
33
- "Bear-TimePicker__dial-period-btn bear-px-2 bear-py-0.5 bear-rounded bear-text-sm bear-transition-colors",
34
- k === r ? "bear-text-blue-600 dark:bear-text-blue-400 bear-font-medium" : "bear-text-gray-400 dark:bear-text-zinc-500 hover:bear-text-gray-600 dark:hover:bear-text-zinc-400"
35
- ),
36
- children: r
37
- },
38
- r
39
- )) })
40
- ] }),
41
- /* @__PURE__ */ i("div", { className: "Bear-TimePicker__dial-mode bear-flex bear-items-center bear-justify-center bear-gap-2 bear-mb-2", children: [
23
+ const [I, c] = R("hour"), b = { ...B, ...N }, P = a === "12h" ? i === 12 ? 12 : i % 12 : i, y = d, A = P.toString().padStart(2, "0"), M = y.toString().padStart(2, "0"), O = a === "12h" ? [...L] : p, t = I === "hour", f = t ? O : h, g = v((r) => {
24
+ t ? (s(a === "12h" && r === 0 ? 12 : r), c("minute")) : m(r);
25
+ }, [t, a, s, m]);
26
+ return /* @__PURE__ */ n("div", { className: o(w, "Bear-TimePicker__dial bear-w-72"), children: [
27
+ /* @__PURE__ */ e("div", { className: "Bear-TimePicker__dial-title bear-text-center bear-uppercase bear-text-xs bear-text-gray-500 dark:bear-text-zinc-400 bear-mb-2", children: b.selectTime }),
28
+ /* @__PURE__ */ n("div", { className: "Bear-TimePicker__dial-display bear-flex bear-items-center bear-justify-center bear-gap-1 bear-mb-4", children: [
42
29
  /* @__PURE__ */ e(
43
30
  "button",
44
31
  {
45
32
  type: "button",
46
- onClick: () => n("hour"),
47
- className: "Bear-TimePicker__dial-mode-btn bear-p-1 bear-rounded bear-text-gray-500 hover:bear-bg-gray-100 dark:hover:bear-bg-zinc-700",
48
- "aria-label": "Hour mode",
49
- children: /* @__PURE__ */ e("svg", { className: "bear-w-4 bear-h-4", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ e("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 19l-7-7 7-7" }) })
33
+ onClick: () => c("hour"),
34
+ className: o(
35
+ "Bear-TimePicker__dial-hour-btn bear-text-2xl bear-font-bold bear-transition-colors bear-border-none bear-bg-transparent",
36
+ t ? x : _
37
+ ),
38
+ "aria-label": b.hour,
39
+ children: A
50
40
  }
51
41
  ),
42
+ /* @__PURE__ */ e("span", { className: "bear-text-2xl bear-font-bold bear-text-gray-900 dark:bear-text-white", children: ":" }),
52
43
  /* @__PURE__ */ e(
53
44
  "button",
54
45
  {
55
46
  type: "button",
56
- onClick: () => n("minute"),
57
- className: "Bear-TimePicker__dial-mode-btn bear-p-1 bear-rounded bear-text-gray-500 hover:bear-bg-gray-100 dark:hover:bear-bg-zinc-700",
58
- "aria-label": "Minute mode",
59
- children: /* @__PURE__ */ e("svg", { className: "bear-w-4 bear-h-4", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ e("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 5l7 7-7 7" }) })
47
+ onClick: () => c("minute"),
48
+ className: o(
49
+ "Bear-TimePicker__dial-minute-btn bear-text-2xl bear-font-bold bear-transition-colors bear-border-none bear-bg-transparent",
50
+ t ? _ : x
51
+ ),
52
+ "aria-label": b.minute,
53
+ children: M
60
54
  }
61
- )
55
+ ),
56
+ a === "12h" && /* @__PURE__ */ e("div", { className: "Bear-TimePicker__dial-period bear-flex bear-flex-col bear-gap-0.5 bear-ml-2", children: ["AM", "PM"].map((r) => /* @__PURE__ */ e(
57
+ "button",
58
+ {
59
+ onClick: () => k(r),
60
+ className: o(
61
+ "Bear-TimePicker__dial-period-btn bear-px-2 bear-py-0.5 bear-rounded bear-text-sm bear-transition-colors",
62
+ u === r ? "bear-text-blue-600 dark:bear-text-blue-400 bear-font-medium" : "bear-text-gray-400 dark:bear-text-zinc-500 hover:bear-text-gray-600 dark:hover:bear-text-zinc-400"
63
+ ),
64
+ children: r
65
+ },
66
+ r
67
+ )) })
62
68
  ] }),
63
69
  /* @__PURE__ */ e("div", { className: "Bear-TimePicker__dial-face bear-relative bear-w-48 bear-h-48 bear-mx-auto bear-mb-4", children: /* @__PURE__ */ e(
64
- w,
70
+ F,
65
71
  {
66
- values: g,
67
- isHourMode: l,
72
+ values: f,
73
+ isHourMode: t,
68
74
  format: a,
69
- selectedHour: t,
70
- selectedMinute: b,
71
- onSelect: B
75
+ selectedHour: i,
76
+ selectedMinute: d,
77
+ onSelect: g
72
78
  }
73
79
  ) }),
74
- /* @__PURE__ */ i("div", { className: L, children: [
75
- x && p && /* @__PURE__ */ e("button", { onClick: () => {
76
- o == null || o(null), S();
77
- }, className: R, children: c.cancel }),
78
- /* @__PURE__ */ e("button", { onClick: T, className: O, children: c.ok })
80
+ /* @__PURE__ */ n("div", { className: D, children: [
81
+ S && T && /* @__PURE__ */ e("button", { onClick: () => {
82
+ l == null || l(null), C();
83
+ }, className: K, children: b.cancel }),
84
+ /* @__PURE__ */ e("button", { onClick: E, className: z, children: b.ok })
79
85
  ] })
80
86
  ] });
81
87
  };
82
88
  export {
83
- U as TimePickerDialDropdown
89
+ G as TimePickerDialDropdown
84
90
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),m=require("../../../utils/cn.cjs");require("react");const e=require("../TimePicker.constants.cjs"),E=({values:t,isHourMode:n,format:i,selectedHour:r,selectedMinute:l,onSelect:b,className:h})=>{const f=c=>n?(c*30-90)*(Math.PI/180):(c*(360/t.length)-90)*(Math.PI/180),s=(n?(i==="12h"?r===12?0:r%12:r)*30-90:l*6-90)*Math.PI/180;return a.jsxs("svg",{viewBox:"0 0 200 200",className:m.cn("Bear-TimePicker__clock-face bear-w-full bear-h-full",h),children:[a.jsx("circle",{cx:e.CLOCK_CENTER,cy:e.CLOCK_CENTER,r:e.CLOCK_RADIUS,className:"Bear-TimePicker__clock-face-circle bear-fill-none bear-stroke-gray-200 dark:bear-stroke-zinc-700 bear-stroke-2"}),t.map((c,x)=>{const C=f(x),o=e.CLOCK_CENTER+e.CLOCK_RADIUS*.85*Math.cos(C),_=e.CLOCK_CENTER+e.CLOCK_RADIUS*.85*Math.sin(C),k=n?i==="12h"?c===12?r===12:r%12===c:r===c:l===c;return a.jsxs("g",{onClick:()=>b(c),className:"Bear-TimePicker__clock-face-item bear-cursor-pointer",children:[k&&a.jsx("circle",{cx:o,cy:_,r:14,className:"Bear-TimePicker__clock-face-dot bear-fill-blue-500"}),a.jsx("text",{x:o,y:_,textAnchor:"middle",dominantBaseline:"middle",className:m.cn("Bear-TimePicker__clock-face-text bear-text-sm bear-font-medium bear-pointer-events-none",k?"bear-fill-white":"bear-fill-gray-700 dark:bear-fill-zinc-300"),children:typeof c=="number"?c.toString().padStart(2,"0"):c})]},c)}),a.jsx("line",{x1:e.CLOCK_CENTER,y1:e.CLOCK_CENTER,x2:e.CLOCK_CENTER+e.CLOCK_RADIUS*.6*Math.cos(s),y2:e.CLOCK_CENTER+e.CLOCK_RADIUS*.6*Math.sin(s),className:"Bear-TimePicker__clock-face-hand bear-stroke-blue-500 bear-stroke-2",strokeLinecap:"round"})]})};exports.ClockFaceSvg=E;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),m=require("../../../utils/cn.cjs");require("react");const e=require("../TimePicker.constants.cjs"),x=16,S=14,O=.85,R=.6,b=30,n=90,l=Math.PI/180,f=({values:o,isHourMode:t,format:_,selectedHour:a,selectedMinute:C,onSelect:A,className:L})=>{const N=c=>t?(c*b-n)*l:(c*(360/o.length)-n)*l,E=(t?(_==="12h"?a===12?0:a%12:a)*b-n:C*6-n)*l;return r.jsxs("svg",{viewBox:"0 0 200 200",className:m.cn("Bear-TimePicker__clock-face bear-w-full bear-h-full",L),children:[r.jsx("circle",{cx:e.CLOCK_CENTER,cy:e.CLOCK_CENTER,r:e.CLOCK_RADIUS,className:"Bear-TimePicker__clock-face-circle bear-fill-none bear-stroke-gray-200 dark:bear-stroke-zinc-700 bear-stroke-2"}),o.map((c,h)=>{const T=N(h),s=e.CLOCK_CENTER+e.CLOCK_RADIUS*O*Math.cos(T),i=e.CLOCK_CENTER+e.CLOCK_RADIUS*O*Math.sin(T),k=t?_==="12h"?c===12?a===12:a%12===c:a===c:C===c;return r.jsxs("g",{onClick:()=>A(c),className:"Bear-TimePicker__clock-face-item bear-cursor-pointer",children:[r.jsx("circle",{cx:s,cy:i,r:x,fill:"transparent"}),k&&r.jsx("circle",{cx:s,cy:i,r:S,className:"Bear-TimePicker__clock-face-dot bear-fill-blue-500"}),r.jsx("text",{x:s,y:i,textAnchor:"middle",dominantBaseline:"middle",className:m.cn("Bear-TimePicker__clock-face-text bear-text-sm bear-font-medium bear-pointer-events-none",k?"bear-fill-white":"bear-fill-gray-700 dark:bear-fill-zinc-300"),children:typeof c=="number"?c.toString().padStart(2,"0"):c})]},c)}),r.jsx("line",{x1:e.CLOCK_CENTER,y1:e.CLOCK_CENTER,x2:e.CLOCK_CENTER+e.CLOCK_RADIUS*R*Math.cos(E),y2:e.CLOCK_CENTER+e.CLOCK_RADIUS*R*Math.sin(E),className:"Bear-TimePicker__clock-face-hand bear-stroke-blue-500 bear-stroke-2",strokeLinecap:"round"})]})};exports.ClockFaceSvg=f;
@@ -1,18 +1,11 @@
1
1
  import { FC } from 'react';
2
2
  export interface ClockFaceSvgProps {
3
- /** Clock face values (hours or minutes) */
4
3
  values: readonly number[] | number[];
5
- /** Whether in hour mode (different angle calc) */
6
4
  isHourMode: boolean;
7
- /** Format: 12h or 24h */
8
5
  format: '12h' | '24h';
9
- /** Current selected hour (for hour mode) */
10
6
  selectedHour: number;
11
- /** Current selected minute (for minute mode) */
12
7
  selectedMinute: number;
13
- /** Callback when value is clicked */
14
8
  onSelect: (v: number) => void;
15
- /** Optional class name */
16
9
  className?: string;
17
10
  }
18
11
  export declare const ClockFaceSvg: FC<ClockFaceSvgProps>;
@@ -1,46 +1,47 @@
1
- import { jsxs as f, jsx as n } from "react/jsx-runtime";
2
- import { cn as _ } from "../../../utils/cn.js";
1
+ import { jsxs as T, jsx as a } from "react/jsx-runtime";
2
+ import { cn as A } from "../../../utils/cn.js";
3
3
  import "react";
4
- import { CLOCK_RADIUS as c, CLOCK_CENTER as r } from "../TimePicker.constants.js";
5
- const T = ({
6
- values: i,
7
- isHourMode: t,
8
- format: l,
9
- selectedHour: a,
10
- selectedMinute: o,
4
+ import { CLOCK_RADIUS as n, CLOCK_CENTER as c } from "../TimePicker.constants.js";
5
+ const I = 16, O = 14, E = 0.85, x = 0.6, N = 30, t = 90, s = Math.PI / 180, C = ({
6
+ values: _,
7
+ isHourMode: i,
8
+ format: m,
9
+ selectedHour: r,
10
+ selectedMinute: k,
11
11
  onSelect: g,
12
- className: x
12
+ className: p
13
13
  }) => {
14
- const d = (e) => t ? (e * 30 - 90) * (Math.PI / 180) : (e * (360 / i.length) - 90) * (Math.PI / 180), s = (t ? (l === "12h" ? a === 12 ? 0 : a % 12 : a) * 30 - 90 : o * 6 - 90) * Math.PI / 180;
15
- return /* @__PURE__ */ f("svg", { viewBox: "0 0 200 200", className: _("Bear-TimePicker__clock-face bear-w-full bear-h-full", x), children: [
16
- /* @__PURE__ */ n(
14
+ const d = (e) => i ? (e * N - t) * s : (e * (360 / _.length) - t) * s, b = (i ? (m === "12h" ? r === 12 ? 0 : r % 12 : r) * N - t : k * 6 - t) * s;
15
+ return /* @__PURE__ */ T("svg", { viewBox: "0 0 200 200", className: A("Bear-TimePicker__clock-face bear-w-full bear-h-full", p), children: [
16
+ /* @__PURE__ */ a(
17
17
  "circle",
18
18
  {
19
- cx: r,
20
- cy: r,
21
- r: c,
19
+ cx: c,
20
+ cy: c,
21
+ r: n,
22
22
  className: "Bear-TimePicker__clock-face-circle bear-fill-none bear-stroke-gray-200 dark:bear-stroke-zinc-700 bear-stroke-2"
23
23
  }
24
24
  ),
25
- i.map((e, p) => {
26
- const m = d(p), k = r + c * 0.85 * Math.cos(m), h = r + c * 0.85 * Math.sin(m), b = t ? l === "12h" ? e === 12 ? a === 12 : a % 12 === e : a === e : o === e;
27
- return /* @__PURE__ */ f(
25
+ _.map((e, S) => {
26
+ const f = d(S), l = c + n * E * Math.cos(f), o = c + n * E * Math.sin(f), h = i ? m === "12h" ? e === 12 ? r === 12 : r % 12 === e : r === e : k === e;
27
+ return /* @__PURE__ */ T(
28
28
  "g",
29
29
  {
30
30
  onClick: () => g(e),
31
31
  className: "Bear-TimePicker__clock-face-item bear-cursor-pointer",
32
32
  children: [
33
- b && /* @__PURE__ */ n("circle", { cx: k, cy: h, r: 14, className: "Bear-TimePicker__clock-face-dot bear-fill-blue-500" }),
34
- /* @__PURE__ */ n(
33
+ /* @__PURE__ */ a("circle", { cx: l, cy: o, r: I, fill: "transparent" }),
34
+ h && /* @__PURE__ */ a("circle", { cx: l, cy: o, r: O, className: "Bear-TimePicker__clock-face-dot bear-fill-blue-500" }),
35
+ /* @__PURE__ */ a(
35
36
  "text",
36
37
  {
37
- x: k,
38
- y: h,
38
+ x: l,
39
+ y: o,
39
40
  textAnchor: "middle",
40
41
  dominantBaseline: "middle",
41
- className: _(
42
+ className: A(
42
43
  "Bear-TimePicker__clock-face-text bear-text-sm bear-font-medium bear-pointer-events-none",
43
- b ? "bear-fill-white" : "bear-fill-gray-700 dark:bear-fill-zinc-300"
44
+ h ? "bear-fill-white" : "bear-fill-gray-700 dark:bear-fill-zinc-300"
44
45
  ),
45
46
  children: typeof e == "number" ? e.toString().padStart(2, "0") : e
46
47
  }
@@ -50,13 +51,13 @@ const T = ({
50
51
  e
51
52
  );
52
53
  }),
53
- /* @__PURE__ */ n(
54
+ /* @__PURE__ */ a(
54
55
  "line",
55
56
  {
56
- x1: r,
57
- y1: r,
58
- x2: r + c * 0.6 * Math.cos(s),
59
- y2: r + c * 0.6 * Math.sin(s),
57
+ x1: c,
58
+ y1: c,
59
+ x2: c + n * x * Math.cos(b),
60
+ y2: c + n * x * Math.sin(b),
60
61
  className: "Bear-TimePicker__clock-face-hand bear-stroke-blue-500 bear-stroke-2",
61
62
  strokeLinecap: "round"
62
63
  }
@@ -64,5 +65,5 @@ const T = ({
64
65
  ] });
65
66
  };
66
67
  export {
67
- T as ClockFaceSvg
68
+ C as ClockFaceSvg
68
69
  };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),n=require("react"),m=require("../../utils/cn.cjs"),a=require("./TreeSelect.const.cjs"),E=require("./TreeSelect.utils.cjs"),_=({node:s,depth:c,selected:o,expanded:t,multiple:i,onToggleExpand:h,onSelect:p})=>{const d=s.children&&s.children.length>0,f=t.has(s.id),S=o.has(s.id);return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:m.cn(a.NODE_CLASSES,S&&a.NODE_SELECTED_CLASSES,s.disabled&&a.NODE_DISABLED_CLASSES),style:{paddingLeft:c*a.INDENT_PX+12},onClick:()=>!s.disabled&&p(s.id),role:"treeitem","aria-selected":S,"aria-expanded":d?f:void 0,children:[d?e.jsx("svg",{className:m.cn(a.CHEVRON_CLASSES,f&&"bear-rotate-90"),onClick:x=>{x.stopPropagation(),h(s.id)},fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})}):e.jsx("span",{className:"bear-w-4 bear-mr-1"}),i&&e.jsx("span",{className:m.cn("bear-w-4 bear-h-4 bear-mr-2 bear-border bear-rounded bear-flex bear-items-center bear-justify-center bear-text-xs",S?"bear-bg-pink-500 bear-border-pink-500 bear-text-white":"bear-border-gray-300 dark:bear-border-zinc-600"),children:S&&"✓"}),s.icon&&e.jsx("span",{className:"bear-mr-1.5",children:s.icon}),e.jsx("span",{className:"bear-truncate",children:s.label})]}),d&&f&&s.children.map(x=>e.jsx(_,{node:x,depth:c+1,selected:o,expanded:t,multiple:i,onToggleExpand:h,onSelect:p},x.id))]})},z=s=>{const{nodes:c,value:o,onChange:t,multiple:i=!1,label:h,placeholder:p="Select…",disabled:d=!1,clearable:f=!0,searchable:S=!0,expandAll:x=!1,size:g="md",error:N,helperText:v,maxHeight:w=a.DEFAULT_MAX_HEIGHT,className:R,testId:T,...O}=s,[j,A]=n.useState(!1),[L,C]=n.useState(""),y=n.useRef(null),I=n.useMemo(()=>E.collectAllIds(c),[c]),[D,B]=n.useState(()=>x?I:new Set),b=n.useMemo(()=>o?new Set(Array.isArray(o)?o:[o]):new Set,[o]);n.useEffect(()=>{const r=l=>{y.current&&!y.current.contains(l.target)&&(A(!1),C(""))};return document.addEventListener("mousedown",r),()=>document.removeEventListener("mousedown",r)},[]);const H=n.useCallback(r=>{B(l=>{const u=new Set(l);return u.has(r)?u.delete(r):u.add(r),u})},[]),M=n.useCallback(r=>{if(i){const l=new Set(b);l.has(r)?l.delete(r):l.add(r),t==null||t(Array.from(l))}else t==null||t(r),A(!1),C("")},[i,b,t]),P=n.useCallback(()=>{t==null||t(i?[]:"")},[i,t]),k=L?E.filterNodes(c,L):c,q=()=>{if(b.size===0)return e.jsx("span",{className:"bear-text-gray-400 dark:bear-text-zinc-500",children:p});if(i)return e.jsx("div",{className:"bear-flex bear-flex-wrap bear-gap-1",children:Array.from(b).map(l=>{const u=E.findNodeById(c,l);return u?e.jsx("span",{className:a.TAG_CLASSES,children:u.label},l):null})});const r=E.findNodeById(c,Array.from(b)[0]);return(r==null?void 0:r.label)??p};return e.jsxs("div",{ref:y,className:m.cn(a.ROOT_CLASSES,R),"data-testid":T,...O,children:[h&&e.jsx("label",{className:a.LABEL_CLASSES,children:h}),e.jsxs("button",{type:"button",disabled:d,onClick:()=>!d&&A(!j),className:m.cn(a.TRIGGER_CLASSES,a.SIZE_CLASSES[g],d&&"bear-opacity-50 bear-cursor-not-allowed"),children:[e.jsx("span",{className:"bear-flex-1 bear-text-left bear-truncate",children:q()}),e.jsxs("div",{className:"bear-flex bear-items-center bear-gap-1",children:[f&&b.size>0&&e.jsx("span",{className:"bear-text-gray-400 hover:bear-text-gray-600 bear-cursor-pointer",onClick:r=>{r.stopPropagation(),P()},children:"✕"}),e.jsx("svg",{className:m.cn("bear-w-4 bear-h-4 bear-text-gray-400 bear-transition-transform",j&&"bear-rotate-180"),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]})]}),j&&e.jsxs("div",{className:a.DROPDOWN_CLASSES,children:[S&&e.jsx("input",{className:a.SEARCH_CLASSES,placeholder:"Search…",value:L,onChange:r=>C(r.target.value),autoFocus:!0}),e.jsx("div",{style:{maxHeight:w},className:"bear-overflow-y-auto",role:"tree",children:k.length>0?k.map(r=>e.jsx(_,{node:r,depth:0,selected:b,expanded:D,multiple:i,onToggleExpand:H,onSelect:M},r.id)):e.jsx("div",{className:"bear-py-6 bear-text-center bear-text-sm bear-text-gray-400",children:"No results"})})]}),N&&e.jsx("p",{className:a.ERROR_CLASSES,children:N}),!N&&v&&e.jsx("p",{className:a.HELPER_CLASSES,children:v})]})};exports.TreeSelect=z;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=280,r=20,a={sm:"bear-py-1.5 bear-px-3 bear-text-sm",md:"bear-py-2 bear-px-4 bear-text-base",lg:"bear-py-2.5 bear-px-5 bear-text-lg"},b="Bear-TreeSelect bear-relative bear-inline-block bear-w-full",t="bear-w-full bear-flex bear-items-center bear-justify-between bear-rounded-lg bear-border bear-border-gray-300 dark:bear-border-zinc-600 bear-bg-white dark:bear-bg-zinc-800 bear-text-gray-900 dark:bear-text-white bear-transition-colors focus:bear-ring-2 focus:bear-ring-pink-500 bear-outline-none",S="bear-absolute bear-z-[9999] bear-w-full bear-mt-1 bear-bg-white dark:bear-bg-zinc-800 bear-border bear-border-gray-200 dark:bear-border-zinc-700 bear-rounded-xl bear-shadow-xl bear-overflow-hidden",n="bear-w-full bear-px-3 bear-py-2 bear-text-sm bear-bg-transparent bear-border-b bear-border-gray-200 dark:bear-border-zinc-700 bear-outline-none bear-text-gray-900 dark:bear-text-white",o="bear-flex bear-items-center bear-py-1.5 bear-px-3 bear-cursor-pointer bear-transition-colors hover:bear-bg-gray-50 dark:hover:bear-bg-zinc-700 bear-text-sm bear-text-gray-700 dark:bear-text-zinc-300",E="bear-bg-pink-50 dark:bear-bg-pink-900/20 bear-text-pink-700 dark:bear-text-pink-300",i="bear-opacity-40 bear-cursor-not-allowed",s="bear-w-4 bear-h-4 bear-mr-1 bear-text-gray-400 dark:bear-text-zinc-500 bear-transition-transform bear-cursor-pointer",c="bear-inline-flex bear-items-center bear-gap-1 bear-bg-pink-100 dark:bear-bg-pink-900/30 bear-text-pink-700 dark:bear-text-pink-300 bear-rounded bear-px-1.5 bear-py-0.5 bear-text-xs",d="Bear-TreeSelect__label bear-block bear-text-sm bear-font-medium bear-text-gray-700 dark:bear-text-zinc-300 bear-mb-1.5",x="bear-mt-1 bear-text-xs bear-text-red-500",A="bear-mt-1 bear-text-xs bear-text-gray-500 dark:bear-text-zinc-500";exports.CHEVRON_CLASSES=s;exports.DEFAULT_MAX_HEIGHT=e;exports.DROPDOWN_CLASSES=S;exports.ERROR_CLASSES=x;exports.HELPER_CLASSES=A;exports.INDENT_PX=r;exports.LABEL_CLASSES=d;exports.NODE_CLASSES=o;exports.NODE_DISABLED_CLASSES=i;exports.NODE_SELECTED_CLASSES=E;exports.ROOT_CLASSES=b;exports.SEARCH_CLASSES=n;exports.SIZE_CLASSES=a;exports.TAG_CLASSES=c;exports.TRIGGER_CLASSES=t;
@@ -0,0 +1,19 @@
1
+ export declare const DEFAULT_MAX_HEIGHT = 280;
2
+ export declare const INDENT_PX = 20;
3
+ export declare const SIZE_CLASSES: {
4
+ readonly sm: "bear-py-1.5 bear-px-3 bear-text-sm";
5
+ readonly md: "bear-py-2 bear-px-4 bear-text-base";
6
+ readonly lg: "bear-py-2.5 bear-px-5 bear-text-lg";
7
+ };
8
+ export declare const ROOT_CLASSES = "Bear-TreeSelect bear-relative bear-inline-block bear-w-full";
9
+ export declare const TRIGGER_CLASSES = "bear-w-full bear-flex bear-items-center bear-justify-between bear-rounded-lg bear-border bear-border-gray-300 dark:bear-border-zinc-600 bear-bg-white dark:bear-bg-zinc-800 bear-text-gray-900 dark:bear-text-white bear-transition-colors focus:bear-ring-2 focus:bear-ring-pink-500 bear-outline-none";
10
+ export declare const DROPDOWN_CLASSES = "bear-absolute bear-z-[9999] bear-w-full bear-mt-1 bear-bg-white dark:bear-bg-zinc-800 bear-border bear-border-gray-200 dark:bear-border-zinc-700 bear-rounded-xl bear-shadow-xl bear-overflow-hidden";
11
+ export declare const SEARCH_CLASSES = "bear-w-full bear-px-3 bear-py-2 bear-text-sm bear-bg-transparent bear-border-b bear-border-gray-200 dark:bear-border-zinc-700 bear-outline-none bear-text-gray-900 dark:bear-text-white";
12
+ export declare const NODE_CLASSES = "bear-flex bear-items-center bear-py-1.5 bear-px-3 bear-cursor-pointer bear-transition-colors hover:bear-bg-gray-50 dark:hover:bear-bg-zinc-700 bear-text-sm bear-text-gray-700 dark:bear-text-zinc-300";
13
+ export declare const NODE_SELECTED_CLASSES = "bear-bg-pink-50 dark:bear-bg-pink-900/20 bear-text-pink-700 dark:bear-text-pink-300";
14
+ export declare const NODE_DISABLED_CLASSES = "bear-opacity-40 bear-cursor-not-allowed";
15
+ export declare const CHEVRON_CLASSES = "bear-w-4 bear-h-4 bear-mr-1 bear-text-gray-400 dark:bear-text-zinc-500 bear-transition-transform bear-cursor-pointer";
16
+ export declare const TAG_CLASSES = "bear-inline-flex bear-items-center bear-gap-1 bear-bg-pink-100 dark:bear-bg-pink-900/30 bear-text-pink-700 dark:bear-text-pink-300 bear-rounded bear-px-1.5 bear-py-0.5 bear-text-xs";
17
+ export declare const LABEL_CLASSES = "Bear-TreeSelect__label bear-block bear-text-sm bear-font-medium bear-text-gray-700 dark:bear-text-zinc-300 bear-mb-1.5";
18
+ export declare const ERROR_CLASSES = "bear-mt-1 bear-text-xs bear-text-red-500";
19
+ export declare const HELPER_CLASSES = "bear-mt-1 bear-text-xs bear-text-gray-500 dark:bear-text-zinc-500";
@@ -0,0 +1,22 @@
1
+ const e = 280, r = 20, a = {
2
+ sm: "bear-py-1.5 bear-px-3 bear-text-sm",
3
+ md: "bear-py-2 bear-px-4 bear-text-base",
4
+ lg: "bear-py-2.5 bear-px-5 bear-text-lg"
5
+ }, b = "Bear-TreeSelect bear-relative bear-inline-block bear-w-full", t = "bear-w-full bear-flex bear-items-center bear-justify-between bear-rounded-lg bear-border bear-border-gray-300 dark:bear-border-zinc-600 bear-bg-white dark:bear-bg-zinc-800 bear-text-gray-900 dark:bear-text-white bear-transition-colors focus:bear-ring-2 focus:bear-ring-pink-500 bear-outline-none", n = "bear-absolute bear-z-[9999] bear-w-full bear-mt-1 bear-bg-white dark:bear-bg-zinc-800 bear-border bear-border-gray-200 dark:bear-border-zinc-700 bear-rounded-xl bear-shadow-xl bear-overflow-hidden", o = "bear-w-full bear-px-3 bear-py-2 bear-text-sm bear-bg-transparent bear-border-b bear-border-gray-200 dark:bear-border-zinc-700 bear-outline-none bear-text-gray-900 dark:bear-text-white", i = "bear-flex bear-items-center bear-py-1.5 bear-px-3 bear-cursor-pointer bear-transition-colors hover:bear-bg-gray-50 dark:hover:bear-bg-zinc-700 bear-text-sm bear-text-gray-700 dark:bear-text-zinc-300", S = "bear-bg-pink-50 dark:bear-bg-pink-900/20 bear-text-pink-700 dark:bear-text-pink-300", s = "bear-opacity-40 bear-cursor-not-allowed", x = "bear-w-4 bear-h-4 bear-mr-1 bear-text-gray-400 dark:bear-text-zinc-500 bear-transition-transform bear-cursor-pointer", c = "bear-inline-flex bear-items-center bear-gap-1 bear-bg-pink-100 dark:bear-bg-pink-900/30 bear-text-pink-700 dark:bear-text-pink-300 bear-rounded bear-px-1.5 bear-py-0.5 bear-text-xs", d = "Bear-TreeSelect__label bear-block bear-text-sm bear-font-medium bear-text-gray-700 dark:bear-text-zinc-300 bear-mb-1.5", l = "bear-mt-1 bear-text-xs bear-text-red-500", E = "bear-mt-1 bear-text-xs bear-text-gray-500 dark:bear-text-zinc-500";
6
+ export {
7
+ x as CHEVRON_CLASSES,
8
+ e as DEFAULT_MAX_HEIGHT,
9
+ n as DROPDOWN_CLASSES,
10
+ l as ERROR_CLASSES,
11
+ E as HELPER_CLASSES,
12
+ r as INDENT_PX,
13
+ d as LABEL_CLASSES,
14
+ i as NODE_CLASSES,
15
+ s as NODE_DISABLED_CLASSES,
16
+ S as NODE_SELECTED_CLASSES,
17
+ b as ROOT_CLASSES,
18
+ o as SEARCH_CLASSES,
19
+ a as SIZE_CLASSES,
20
+ c as TAG_CLASSES,
21
+ t as TRIGGER_CLASSES
22
+ };
@@ -0,0 +1,4 @@
1
+ import { FC } from 'react';
2
+ import { TreeSelectProps } from './TreeSelect.types';
3
+ export declare const TreeSelect: FC<TreeSelectProps>;
4
+ export default TreeSelect;
@@ -0,0 +1,128 @@
1
+ import { jsxs as S, jsx as r, Fragment as W } from "react/jsx-runtime";
2
+ import { useState as v, useRef as V, useMemo as w, useEffect as X, useCallback as y } from "react";
3
+ import { cn as p } from "../../utils/cn.js";
4
+ import { DEFAULT_MAX_HEIGHT as U, LABEL_CLASSES as Z, SIZE_CLASSES as q, TRIGGER_CLASSES as J, DROPDOWN_CLASSES as K, SEARCH_CLASSES as Q, ERROR_CLASSES as Y, HELPER_CLASSES as $, ROOT_CLASSES as ee, TAG_CLASSES as re, CHEVRON_CLASSES as ae, INDENT_PX as te, NODE_DISABLED_CLASSES as se, NODE_SELECTED_CLASSES as le, NODE_CLASSES as ne } from "./TreeSelect.const.js";
5
+ import { collectAllIds as ce, filterNodes as oe, findNodeById as g } from "./TreeSelect.utils.js";
6
+ const R = ({ node: a, depth: l, selected: c, expanded: t, multiple: n, onToggleExpand: u, onSelect: h }) => {
7
+ const o = a.children && a.children.length > 0, f = t.has(a.id), b = c.has(a.id);
8
+ return /* @__PURE__ */ S(W, { children: [
9
+ /* @__PURE__ */ S(
10
+ "div",
11
+ {
12
+ className: p(ne, b && le, a.disabled && se),
13
+ style: { paddingLeft: l * te + 12 },
14
+ onClick: () => !a.disabled && h(a.id),
15
+ role: "treeitem",
16
+ "aria-selected": b,
17
+ "aria-expanded": o ? f : void 0,
18
+ children: [
19
+ o ? /* @__PURE__ */ r(
20
+ "svg",
21
+ {
22
+ className: p(ae, f && "bear-rotate-90"),
23
+ onClick: (m) => {
24
+ m.stopPropagation(), u(a.id);
25
+ },
26
+ fill: "none",
27
+ viewBox: "0 0 24 24",
28
+ stroke: "currentColor",
29
+ children: /* @__PURE__ */ r("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 5l7 7-7 7" })
30
+ }
31
+ ) : /* @__PURE__ */ r("span", { className: "bear-w-4 bear-mr-1" }),
32
+ n && /* @__PURE__ */ r("span", { className: p("bear-w-4 bear-h-4 bear-mr-2 bear-border bear-rounded bear-flex bear-items-center bear-justify-center bear-text-xs", b ? "bear-bg-pink-500 bear-border-pink-500 bear-text-white" : "bear-border-gray-300 dark:bear-border-zinc-600"), children: b && "✓" }),
33
+ a.icon && /* @__PURE__ */ r("span", { className: "bear-mr-1.5", children: a.icon }),
34
+ /* @__PURE__ */ r("span", { className: "bear-truncate", children: a.label })
35
+ ]
36
+ }
37
+ ),
38
+ o && f && a.children.map((m) => /* @__PURE__ */ r(R, { node: m, depth: l + 1, selected: c, expanded: t, multiple: n, onToggleExpand: u, onSelect: h }, m.id))
39
+ ] });
40
+ }, pe = (a) => {
41
+ const {
42
+ nodes: l,
43
+ value: c,
44
+ onChange: t,
45
+ multiple: n = !1,
46
+ label: u,
47
+ placeholder: h = "Select…",
48
+ disabled: o = !1,
49
+ clearable: f = !0,
50
+ searchable: b = !0,
51
+ expandAll: m = !1,
52
+ size: O = "md",
53
+ error: E,
54
+ helperText: k,
55
+ maxHeight: D = U,
56
+ className: I,
57
+ testId: T,
58
+ ...H
59
+ } = a, [N, x] = v(!1), [A, L] = v(""), C = V(null), j = w(() => ce(l), [l]), [z, B] = v(() => m ? j : /* @__PURE__ */ new Set()), i = w(() => c ? new Set(Array.isArray(c) ? c : [c]) : /* @__PURE__ */ new Set(), [c]);
60
+ X(() => {
61
+ const e = (s) => {
62
+ C.current && !C.current.contains(s.target) && (x(!1), L(""));
63
+ };
64
+ return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
65
+ }, []);
66
+ const P = y((e) => {
67
+ B((s) => {
68
+ const d = new Set(s);
69
+ return d.has(e) ? d.delete(e) : d.add(e), d;
70
+ });
71
+ }, []), G = y((e) => {
72
+ if (n) {
73
+ const s = new Set(i);
74
+ s.has(e) ? s.delete(e) : s.add(e), t == null || t(Array.from(s));
75
+ } else
76
+ t == null || t(e), x(!1), L("");
77
+ }, [n, i, t]), M = y(() => {
78
+ t == null || t(n ? [] : "");
79
+ }, [n, t]), _ = A ? oe(l, A) : l, F = () => {
80
+ if (i.size === 0) return /* @__PURE__ */ r("span", { className: "bear-text-gray-400 dark:bear-text-zinc-500", children: h });
81
+ if (n)
82
+ return /* @__PURE__ */ r("div", { className: "bear-flex bear-flex-wrap bear-gap-1", children: Array.from(i).map((s) => {
83
+ const d = g(l, s);
84
+ return d ? /* @__PURE__ */ r("span", { className: re, children: d.label }, s) : null;
85
+ }) });
86
+ const e = g(l, Array.from(i)[0]);
87
+ return (e == null ? void 0 : e.label) ?? h;
88
+ };
89
+ return /* @__PURE__ */ S("div", { ref: C, className: p(ee, I), "data-testid": T, ...H, children: [
90
+ u && /* @__PURE__ */ r("label", { className: Z, children: u }),
91
+ /* @__PURE__ */ S(
92
+ "button",
93
+ {
94
+ type: "button",
95
+ disabled: o,
96
+ onClick: () => !o && x(!N),
97
+ className: p(J, q[O], o && "bear-opacity-50 bear-cursor-not-allowed"),
98
+ children: [
99
+ /* @__PURE__ */ r("span", { className: "bear-flex-1 bear-text-left bear-truncate", children: F() }),
100
+ /* @__PURE__ */ S("div", { className: "bear-flex bear-items-center bear-gap-1", children: [
101
+ f && i.size > 0 && /* @__PURE__ */ r("span", { className: "bear-text-gray-400 hover:bear-text-gray-600 bear-cursor-pointer", onClick: (e) => {
102
+ e.stopPropagation(), M();
103
+ }, children: "✕" }),
104
+ /* @__PURE__ */ r("svg", { className: p("bear-w-4 bear-h-4 bear-text-gray-400 bear-transition-transform", N && "bear-rotate-180"), fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ r("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" }) })
105
+ ] })
106
+ ]
107
+ }
108
+ ),
109
+ N && /* @__PURE__ */ S("div", { className: K, children: [
110
+ b && /* @__PURE__ */ r(
111
+ "input",
112
+ {
113
+ className: Q,
114
+ placeholder: "Search…",
115
+ value: A,
116
+ onChange: (e) => L(e.target.value),
117
+ autoFocus: !0
118
+ }
119
+ ),
120
+ /* @__PURE__ */ r("div", { style: { maxHeight: D }, className: "bear-overflow-y-auto", role: "tree", children: _.length > 0 ? _.map((e) => /* @__PURE__ */ r(R, { node: e, depth: 0, selected: i, expanded: z, multiple: n, onToggleExpand: P, onSelect: G }, e.id)) : /* @__PURE__ */ r("div", { className: "bear-py-6 bear-text-center bear-text-sm bear-text-gray-400", children: "No results" }) })
121
+ ] }),
122
+ E && /* @__PURE__ */ r("p", { className: Y, children: E }),
123
+ !E && k && /* @__PURE__ */ r("p", { className: $, children: k })
124
+ ] });
125
+ };
126
+ export {
127
+ pe as TreeSelect
128
+ };
@@ -0,0 +1,25 @@
1
+ import { HTMLAttributes } from 'react';
2
+ export interface TreeNode {
3
+ id: string;
4
+ label: string;
5
+ children?: TreeNode[];
6
+ disabled?: boolean;
7
+ icon?: React.ReactNode;
8
+ }
9
+ export interface TreeSelectProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {
10
+ nodes: TreeNode[];
11
+ value?: string | string[];
12
+ onChange?: (value: string | string[]) => void;
13
+ multiple?: boolean;
14
+ label?: string;
15
+ placeholder?: string;
16
+ disabled?: boolean;
17
+ clearable?: boolean;
18
+ searchable?: boolean;
19
+ expandAll?: boolean;
20
+ size?: 'sm' | 'md' | 'lg';
21
+ error?: string;
22
+ helperText?: string;
23
+ maxHeight?: number;
24
+ testId?: string;
25
+ }
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=(t,r)=>{for(const e of t){if(e.id===r)return e;if(e.children){const n=d(e.children,r);if(n)return n}}},c=(t,r)=>{const e=r.toLowerCase();return t.reduce((n,l)=>{const o=l.children?c(l.children,r):[];return(l.label.toLowerCase().includes(e)||o.length>0)&&n.push({...l,children:o.length>0?o:l.children}),n},[])},i=t=>{const r=new Set;for(const e of t)r.add(e.id),e.children&&i(e.children).forEach(n=>r.add(n));return r};exports.collectAllIds=i;exports.filterNodes=c;exports.findNodeById=d;
@@ -0,0 +1,5 @@
1
+ import { TreeNode } from './TreeSelect.types';
2
+ export declare const flattenNodes: (nodes: TreeNode[]) => TreeNode[];
3
+ export declare const findNodeById: (nodes: TreeNode[], id: string) => TreeNode | undefined;
4
+ export declare const filterNodes: (nodes: TreeNode[], query: string) => TreeNode[];
5
+ export declare const collectAllIds: (nodes: TreeNode[]) => Set<string>;
@@ -0,0 +1,25 @@
1
+ const l = (t, r) => {
2
+ for (const e of t) {
3
+ if (e.id === r) return e;
4
+ if (e.children) {
5
+ const n = l(e.children, r);
6
+ if (n) return n;
7
+ }
8
+ }
9
+ }, d = (t, r) => {
10
+ const e = r.toLowerCase();
11
+ return t.reduce((n, c) => {
12
+ const o = c.children ? d(c.children, r) : [];
13
+ return (c.label.toLowerCase().includes(e) || o.length > 0) && n.push({ ...c, children: o.length > 0 ? o : c.children }), n;
14
+ }, []);
15
+ }, i = (t) => {
16
+ const r = /* @__PURE__ */ new Set();
17
+ for (const e of t)
18
+ r.add(e.id), e.children && i(e.children).forEach((n) => r.add(n));
19
+ return r;
20
+ };
21
+ export {
22
+ i as collectAllIds,
23
+ d as filterNodes,
24
+ l as findNodeById
25
+ };
@@ -0,0 +1,2 @@
1
+ export { TreeSelect } from './TreeSelect';
2
+ export type { TreeSelectProps, TreeNode } from './TreeSelect.types';