asheeui 0.6.15 → 0.7.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 (183) hide show
  1. package/dist/AsheeUIProvider.js +22 -24
  2. package/dist/components/accordion/Accordion.js +79 -173
  3. package/dist/components/accordion/accordion-config.js +12 -13
  4. package/dist/components/accordion/accordion-styles.js +21 -24
  5. package/dist/components/autocomplete/Autocomplete.js +78 -136
  6. package/dist/components/autocomplete/autocomplete-config.js +7 -12
  7. package/dist/components/button/Button.d.ts +29 -1
  8. package/dist/components/button/Button.d.ts.map +1 -1
  9. package/dist/components/button/Button.js +47 -108
  10. package/dist/components/button/button-config.js +16 -17
  11. package/dist/components/button/button-styles.js +10 -11
  12. package/dist/components/card/Card.d.ts +36 -16
  13. package/dist/components/card/Card.d.ts.map +1 -1
  14. package/dist/components/card/Card.js +115 -205
  15. package/dist/components/card/card-config.js +24 -21
  16. package/dist/components/card/card-styles.js +19 -22
  17. package/dist/components/carousel/Carousel.js +123 -248
  18. package/dist/components/carousel/carousel-config.js +24 -25
  19. package/dist/components/carousel/carousel-styles.js +14 -16
  20. package/dist/components/chip/Chip.js +84 -191
  21. package/dist/components/chip/chip-config.js +13 -14
  22. package/dist/components/chip/chip-styles.js +22 -26
  23. package/dist/components/date-picker/Calendar.d.ts +3 -3
  24. package/dist/components/date-picker/Calendar.d.ts.map +1 -1
  25. package/dist/components/date-picker/Calendar.js +141 -222
  26. package/dist/components/date-picker/DatePicker.d.ts +5 -5
  27. package/dist/components/date-picker/DatePicker.d.ts.map +1 -1
  28. package/dist/components/date-picker/DatePicker.js +122 -220
  29. package/dist/components/date-picker/TimeSpinner.js +58 -82
  30. package/dist/components/date-picker/date-picker-config.d.ts +4 -4
  31. package/dist/components/date-picker/date-picker-config.d.ts.map +1 -1
  32. package/dist/components/date-picker/date-picker-config.js +10 -11
  33. package/dist/components/date-picker/date-picker-styles.js +44 -45
  34. package/dist/components/date-picker/date-picker.helpers.d.ts +4 -4
  35. package/dist/components/date-picker/date-picker.helpers.d.ts.map +1 -1
  36. package/dist/components/date-picker/date-picker.helpers.js +74 -102
  37. package/dist/components/drawer/Drawer.d.ts +26 -8
  38. package/dist/components/drawer/Drawer.d.ts.map +1 -1
  39. package/dist/components/drawer/Drawer.js +54 -131
  40. package/dist/components/drawer/drawer-config.js +14 -15
  41. package/dist/components/drawer/drawer-styles.js +38 -42
  42. package/dist/components/field/FieldShell.js +49 -56
  43. package/dist/components/field/field-config.js +17 -18
  44. package/dist/components/field/field-styles.js +8 -8
  45. package/dist/components/image/Image.d.ts +7 -7
  46. package/dist/components/image/Image.d.ts.map +1 -1
  47. package/dist/components/image/Image.js +65 -132
  48. package/dist/components/image/image-config.js +17 -18
  49. package/dist/components/image/image-styles.js +14 -15
  50. package/dist/components/input/Input.js +65 -150
  51. package/dist/components/input/PasswordInput.js +30 -49
  52. package/dist/components/input/input-config.js +7 -7
  53. package/dist/components/input/input-styles.js +9 -10
  54. package/dist/components/keyboard/KeyboardContext.js +10 -11
  55. package/dist/components/keyboard/KeyboardProvider.js +100 -181
  56. package/dist/components/keyboard/OnScreenKeyboard.d.ts.map +1 -1
  57. package/dist/components/keyboard/OnScreenKeyboard.js +159 -166
  58. package/dist/components/keyboard/keyboard-config.js +59 -57
  59. package/dist/components/keyboard/keyboard-styles.js +10 -11
  60. package/dist/components/keyboard/use-keyboard-field.js +29 -21
  61. package/dist/components/link/Link.js +47 -137
  62. package/dist/components/link/link-config.js +14 -15
  63. package/dist/components/link/link-styles.js +25 -29
  64. package/dist/components/marquee/Marquee.js +55 -144
  65. package/dist/components/marquee/marquee-config.js +18 -19
  66. package/dist/components/marquee/marquee-styles.js +13 -15
  67. package/dist/components/modal/Modal.d.ts +26 -10
  68. package/dist/components/modal/Modal.d.ts.map +1 -1
  69. package/dist/components/modal/Modal.js +56 -136
  70. package/dist/components/modal/modal-config.js +15 -16
  71. package/dist/components/modal/modal-styles.js +13 -14
  72. package/dist/components/multi-select/MultiSelect.d.ts +18 -2
  73. package/dist/components/multi-select/MultiSelect.d.ts.map +1 -1
  74. package/dist/components/multi-select/MultiSelect.js +149 -283
  75. package/dist/components/multi-select/multi-select-config.d.ts +23 -18
  76. package/dist/components/multi-select/multi-select-config.d.ts.map +1 -1
  77. package/dist/components/multi-select/multi-select-config.js +18 -21
  78. package/dist/components/multi-select/multi-select-styles.js +17 -20
  79. package/dist/components/radio/Radio.js +43 -80
  80. package/dist/components/radio/RadioGroup.js +57 -155
  81. package/dist/components/radio/radio-config.js +15 -16
  82. package/dist/components/radio/radio-context.js +6 -6
  83. package/dist/components/radio/radio-styles.js +55 -60
  84. package/dist/components/resizable-screen/ResizableScreen.js +87 -177
  85. package/dist/components/resizable-screen/resizable-screen-config.js +16 -17
  86. package/dist/components/select/Select.d.ts +3 -2
  87. package/dist/components/select/Select.d.ts.map +1 -1
  88. package/dist/components/select/Select.js +97 -195
  89. package/dist/components/select/select-config.js +8 -9
  90. package/dist/components/select/select-styles.js +5 -5
  91. package/dist/components/select-menu/SelectMenu.d.ts.map +1 -1
  92. package/dist/components/select-menu/SelectMenu.js +102 -196
  93. package/dist/components/select-menu/select-menu-config.js +12 -12
  94. package/dist/components/select-menu/use-select-floating.d.ts +11 -1
  95. package/dist/components/select-menu/use-select-floating.d.ts.map +1 -1
  96. package/dist/components/select-menu/use-select-floating.js +41 -48
  97. package/dist/components/sidebar/Sidebar.d.ts +43 -22
  98. package/dist/components/sidebar/Sidebar.d.ts.map +1 -1
  99. package/dist/components/sidebar/Sidebar.js +146 -331
  100. package/dist/components/sidebar/sidebar-config.d.ts +98 -31
  101. package/dist/components/sidebar/sidebar-config.d.ts.map +1 -1
  102. package/dist/components/sidebar/sidebar-config.js +47 -33
  103. package/dist/components/sidebar/sidebar-styles.js +27 -32
  104. package/dist/components/spinner/spinner-config.js +12 -13
  105. package/dist/components/spinner/spinner-styles.js +13 -14
  106. package/dist/components/spinner/spinner.js +39 -82
  107. package/dist/components/switch/Switch.js +62 -154
  108. package/dist/components/switch/switch-config.js +11 -12
  109. package/dist/components/switch/switch-styles.js +14 -16
  110. package/dist/components/table/Table.js +64 -186
  111. package/dist/components/table/table-config.js +17 -18
  112. package/dist/components/table/table-styles.js +48 -52
  113. package/dist/components/tabs/Tabs.d.ts +16 -8
  114. package/dist/components/tabs/Tabs.d.ts.map +1 -1
  115. package/dist/components/tabs/Tabs.js +93 -208
  116. package/dist/components/tabs/tabs-config.d.ts +42 -20
  117. package/dist/components/tabs/tabs-config.d.ts.map +1 -1
  118. package/dist/components/tabs/tabs-config.js +26 -18
  119. package/dist/components/tabs/tabs-styles.js +15 -17
  120. package/dist/components/textarea/Textarea.js +52 -138
  121. package/dist/components/textarea/textarea-config.js +10 -11
  122. package/dist/components/textarea/textarea-styles.js +9 -10
  123. package/dist/components/toast/ToastContext.js +22 -26
  124. package/dist/components/toast/ToastItem.js +82 -144
  125. package/dist/components/toast/ToastProvider.d.ts.map +1 -1
  126. package/dist/components/toast/ToastProvider.js +128 -190
  127. package/dist/components/toast/toast-config.js +23 -24
  128. package/dist/components/toast/toast-styles.js +50 -55
  129. package/dist/components/toast/use-pausable-timeout.js +17 -13
  130. package/dist/components/tooltip/Tooltip.d.ts +5 -0
  131. package/dist/components/tooltip/Tooltip.d.ts.map +1 -1
  132. package/dist/components/tooltip/Tooltip.js +68 -158
  133. package/dist/components/tooltip/tooltip-config.d.ts +25 -0
  134. package/dist/components/tooltip/tooltip-config.d.ts.map +1 -1
  135. package/dist/components/tooltip/tooltip-config.js +26 -22
  136. package/dist/components/tooltip/tooltip-styles.js +15 -17
  137. package/dist/config/default-config.js +11 -34
  138. package/dist/config/resolve-color.js +23 -23
  139. package/dist/config/resolve-config.d.ts.map +1 -1
  140. package/dist/config/resolve-config.js +14 -12
  141. package/dist/icons/ArrowLeftIcon.js +16 -19
  142. package/dist/icons/CalendarIcon.js +43 -24
  143. package/dist/icons/CheckIcon.js +16 -19
  144. package/dist/icons/ChevronDownIcon.js +15 -21
  145. package/dist/icons/ChevronLeftIcon.js +16 -19
  146. package/dist/icons/ChevronRightIcon.js +16 -19
  147. package/dist/icons/ChevronUpIcon.js +16 -19
  148. package/dist/icons/ClearIcon.js +26 -22
  149. package/dist/icons/ClockIcon.js +20 -22
  150. package/dist/icons/CloseIcon.js +26 -22
  151. package/dist/icons/ErrorIcon.js +16 -19
  152. package/dist/icons/ExternalLinkIcon.js +25 -23
  153. package/dist/icons/EyeIcon.js +20 -22
  154. package/dist/icons/EyeOffIcon.js +21 -22
  155. package/dist/icons/InfoIcon.js +16 -19
  156. package/dist/icons/SearchIcon.js +25 -22
  157. package/dist/icons/WarningIcon.js +16 -19
  158. package/dist/index.js +65 -163
  159. package/dist/libs/context.js +10 -13
  160. package/dist/libs/index.js +1 -0
  161. package/dist/libs/registry.js +10 -12
  162. package/dist/libs/use-floating-z-index.d.ts +32 -0
  163. package/dist/libs/use-floating-z-index.d.ts.map +1 -0
  164. package/dist/libs/use-floating-z-index.js +16 -0
  165. package/dist/libs/use-isomorphic-layout-effect.js +5 -5
  166. package/dist/scripts/AsheeThemeScript.js +35 -44
  167. package/dist/shared/radius.d.ts.map +1 -1
  168. package/dist/shared/radius.js +12 -13
  169. package/dist/shared/variant.js +46 -134
  170. package/dist/theme/color.js +28 -28
  171. package/dist/theme/controller.d.ts.map +1 -1
  172. package/dist/theme/controller.js +65 -178
  173. package/dist/theme/useTheme.js +13 -44
  174. package/dist/utils/cn.js +7 -7
  175. package/dist/utils/index.d.ts +1 -0
  176. package/dist/utils/index.d.ts.map +1 -1
  177. package/dist/utils/index.js +1 -0
  178. package/dist/utils/merge-object.js +13 -14
  179. package/dist/utils/resolve-token.js +11 -14
  180. package/dist/utils/stacking.d.ts +76 -0
  181. package/dist/utils/stacking.d.ts.map +1 -0
  182. package/dist/utils/stacking.js +34 -0
  183. package/package.json +12 -11
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { FIELD_STATUS_BORDER_CLASS as S } from "../field/field-styles.js";
3
- const E = S;
4
- export {
5
- E as SELECT_STATUS_BORDER_CLASS
6
- };
2
+ import { FIELD_STATUS_BORDER_CLASS as e } from "../field/field-styles.js";
3
+ //#region src/components/select/select-styles.ts
4
+ var t = e;
5
+ //#endregion
6
+ export { t as SELECT_STATUS_BORDER_CLASS };
@@ -1 +1 @@
1
- {"version":3,"file":"SelectMenu.d.ts","sourceRoot":"","sources":["../../../src/components/select-menu/SelectMenu.tsx"],"names":[],"mappings":"AAUA,OAAO,EACL,KAAK,eAAe,EAGrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAGL,KAAK,SAAS,EAIf,MAAM,OAAO,CAAC;AASf,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,gBAAgB,EACtB,MAAM,sBAAsB,CAAC;AAE9B;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG;IACnC;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,cAAc,EAAE,KAAK,CAAC,aAAa,CAAC;IAEpC;;OAEG;IACH,OAAO,EAAE,eAAe,CAAC;IAEzB;;OAEG;IACH,gBAAgB,EAAE,CAChB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAChC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE7B;;OAEG;IACH,cAAc,EAAE,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;IAEnD;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAE5B;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAErC;;;OAGG;IACH,kBAAkB,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAEvD;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAEzC;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB;;OAEG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;IAExB;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,OAAO,KAAK,SAAS,CAAC;IAE5E;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAErD;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAgFD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2EG;AACH,eAAO,MAAM,UAAU;8RAqBpB,eAAe;;CA2OjB,CAAC"}
1
+ {"version":3,"file":"SelectMenu.d.ts","sourceRoot":"","sources":["../../../src/components/select-menu/SelectMenu.tsx"],"names":[],"mappings":"AAUA,OAAO,EACL,KAAK,eAAe,EAGrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAGL,KAAK,SAAS,EAIf,MAAM,OAAO,CAAC;AASf,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,gBAAgB,EACtB,MAAM,sBAAsB,CAAC;AAE9B;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG;IACnC;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,cAAc,EAAE,KAAK,CAAC,aAAa,CAAC;IAEpC;;OAEG;IACH,OAAO,EAAE,eAAe,CAAC;IAEzB;;OAEG;IACH,gBAAgB,EAAE,CAChB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAChC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE7B;;OAEG;IACH,cAAc,EAAE,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;IAEnD;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAE5B;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAErC;;;OAGG;IACH,kBAAkB,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAEvD;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAEzC;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB;;OAEG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;IAExB;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,OAAO,KAAK,SAAS,CAAC;IAE5E;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAErD;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAgFD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2EG;AACH,eAAO,MAAM,UAAU;8RAqBpB,eAAe;;CA6OjB,CAAC"}
@@ -1,198 +1,104 @@
1
1
  "use client";
2
- import { jsx as l, jsxs as A, Fragment as Z } from "react/jsx-runtime";
3
- import { FloatingFocusManager as u, FloatingPortal as m } from "@floating-ui/react";
4
- import { useState as p, useEffect as g, useMemo as C, memo as P } from "react";
5
- import { CheckIcon as tt } from "../../icons/CheckIcon.js";
6
- import { SearchIcon as et } from "../../icons/SearchIcon.js";
7
- import { useAsheeConfig as lt } from "../../libs/context.js";
8
- import { resolveCascade as a, resolveRadiusKey as ot } from "../../utils/resolve-token.js";
9
- import { Button as rt } from "../button/Button.js";
10
- import { Input as at } from "../input/Input.js";
11
- import { FALLBACK_SELECT_MENU_CONFIG as d } from "./select-menu-config.js";
12
- import { cn as dt } from "../../utils/cn.js";
13
- const ct = P(function({
14
- filteredOptions: v,
15
- selectedValues: w,
16
- onSelectMenuOption: x,
17
- renderOption: b,
18
- itemVariant: I,
19
- itemColor: i,
20
- activeItemVariant: f,
21
- activeItemColor: N,
22
- radius: s,
23
- size: S
24
- }) {
25
- const V = (o) => w.includes(o);
26
- return v.length === 0 ? /* @__PURE__ */ l("div", { className: "px-3 py-4 text-xs text-foreground/70 text-center", children: "No options found" }) : /* @__PURE__ */ l(Z, { children: v.map((o) => {
27
- const c = V(o.value);
28
- return b ? b(o, c) : /* @__PURE__ */ A(
29
- rt,
30
- {
31
- variant: c ? f : I,
32
- color: c ? N : i,
33
- radius: s,
34
- size: S,
35
- isDisabled: o.disabled,
36
- onClick: () => x(o),
37
- className: "w-full justify-between font-normal text-left transition-colors truncate",
38
- children: [
39
- /* @__PURE__ */ l("span", { children: o.label }),
40
- c && /* @__PURE__ */ l(tt, { className: "w-3.5 h-3.5 shrink-0 ml-2" })
41
- ]
42
- },
43
- String(o.value)
44
- );
45
- }) });
46
- }), it = ({
47
- isOpen: y,
48
- floatingStyles: v,
49
- context: w,
50
- getFloatingProps: x,
51
- setFloatingRef: b,
52
- isPositioned: I = !0,
53
- options: i = [],
54
- selectedValues: f = [],
55
- onSelectMenuOption: N,
56
- isSearch: s = !0,
57
- searchPlaceholder: S = "Search...",
58
- searchInputName: V = "select-menu-search",
59
- searchQuery: o,
60
- onSearchChange: c,
61
- belowList: k,
62
- menuConfig: e,
63
- menuProps: t = {},
64
- renderOption: E,
65
- initialFocus: Q,
66
- returnFocus: R
67
- }) => {
68
- const h = lt(), [j, K] = p(""), n = o ?? j, _ = (r) => {
69
- c ? c(r) : K(r);
70
- }, z = a(
71
- t == null ? void 0 : t.lockScroll,
72
- e == null ? void 0 : e.lockScroll,
73
- void 0,
74
- d.lockScroll
75
- ), B = a(
76
- t == null ? void 0 : t.portal,
77
- e == null ? void 0 : e.portal,
78
- void 0,
79
- d.portal
80
- ), O = a(
81
- t == null ? void 0 : t.portalTarget,
82
- e == null ? void 0 : e.portalTarget,
83
- void 0,
84
- typeof document < "u" ? document.body : null
85
- );
86
- g(() => {
87
- if (!y || !z) return;
88
- const r = window.scrollY, W = document.body.style.position, $ = document.body.style.top, q = document.body.style.left, H = document.body.style.right, J = document.body.style.width, X = document.body.style.overflow;
89
- return document.body.style.position = "fixed", document.body.style.top = `-${r}px`, document.body.style.left = "0", document.body.style.right = "0", document.body.style.width = "100%", document.body.style.overflow = "hidden", () => {
90
- document.body.style.position = W, document.body.style.top = $, document.body.style.left = q, document.body.style.right = H, document.body.style.width = J, document.body.style.overflow = X, window.scrollTo(0, r);
91
- };
92
- }, [y, z]);
93
- const Y = C(() => !s || !n.trim() ? i : i.filter(
94
- (r) => r.label.toLowerCase().includes(n.toLowerCase())
95
- ), [i, s, n]), D = a(
96
- t == null ? void 0 : t.itemVariant,
97
- e == null ? void 0 : e.itemVariant,
98
- void 0,
99
- d.itemVariant
100
- ), L = a(
101
- t == null ? void 0 : t.itemColor,
102
- e == null ? void 0 : e.itemColor,
103
- h.defaultColor,
104
- d.itemColor
105
- ), G = a(
106
- t == null ? void 0 : t.activeItemVariant,
107
- e == null ? void 0 : e.activeItemVariant,
108
- h.defaultVariant,
109
- d.activeItemVariant
110
- ), U = a(
111
- t == null ? void 0 : t.activeItemColor,
112
- e == null ? void 0 : e.activeItemColor,
113
- h.defaultColor,
114
- d.activeItemColor
115
- ), F = ot(
116
- t == null ? void 0 : t.radius,
117
- e == null ? void 0 : e.radius,
118
- h.defaultRadius,
119
- d.radius
120
- ), M = a(
121
- t == null ? void 0 : t.size,
122
- e == null ? void 0 : e.size,
123
- void 0,
124
- d.size
125
- );
126
- if (!y) return null;
127
- const T = /* @__PURE__ */ l(
128
- u,
129
- {
130
- context: w,
131
- modal: !1,
132
- initialFocus: Q,
133
- returnFocus: R,
134
- children: /* @__PURE__ */ A(
135
- "div",
136
- {
137
- ref: b,
138
- style: { ...v },
139
- className: dt(
140
- "z-30 w-full outline-none max-h-60 shadow-xl bg-background border border-border p-1 flex flex-col gap-0.5 overflow-y-auto scrollable-hidden",
141
- // Explicitly disable transitions on the floating element. Floating UI
142
- // positions this node via a `transform` written on every scroll tick
143
- // (through floatingStyles). If any transition — global, inherited, or
144
- // otherwise — applies to `transform` on this element, the browser eases
145
- // toward each new position instead of snapping to it, which compounds
146
- // under rapid scroll ticks into a visible spring/bounce effect that
147
- // worsens with scroll speed. transition-none guarantees position
148
- // updates apply instantly.
149
- "transition-none",
150
- I ? "animate-in fade-in-0 zoom-in-95 slide-in-from-top-1 duration-150 ease-out" : "invisible opacity-0 pointer-events-none",
151
- t == null ? void 0 : t.className
152
- ),
153
- ...x(),
154
- children: [
155
- s && /* @__PURE__ */ l("div", { className: "w-full p-1 mb-1 sticky top-0 z-10 border-b border-border", children: /* @__PURE__ */ l(
156
- at,
157
- {
158
- name: V,
159
- type: "text",
160
- variant: "bordered",
161
- radius: F,
162
- color: L,
163
- size: M,
164
- value: n,
165
- onChange: (r) => _(r.target.value),
166
- startContent: /* @__PURE__ */ l(et, { className: "w-3.5 h-3.5 text-foreground/70" }),
167
- placeholder: S,
168
- autoFocus: !0,
169
- className: "w-full pl-8 h-8 text-xs bg-secondary/30 border-none focus-visible:ring-0"
170
- }
171
- ) }),
172
- /* @__PURE__ */ l(
173
- ct,
174
- {
175
- filteredOptions: Y,
176
- selectedValues: f,
177
- onSelectMenuOption: N,
178
- renderOption: E,
179
- itemVariant: D,
180
- itemColor: L,
181
- activeItemVariant: G,
182
- activeItemColor: U,
183
- radius: F,
184
- size: M
185
- }
186
- ),
187
- k && /* @__PURE__ */ l("div", { className: "border-t border-border pt-1 mt-1", children: k })
188
- ]
189
- }
190
- )
191
- }
192
- );
193
- return B ? /* @__PURE__ */ l(m, { root: O, children: T }) : T;
194
- };
195
- it.displayName = "SelectMenu";
196
- export {
197
- it as SelectMenu
2
+ "use client";
3
+ import { cn as e } from "../../utils/cn.js";
4
+ import { useAsheeConfig as t } from "../../libs/context.js";
5
+ import { resolveCascade as n, resolveRadiusKey as r } from "../../utils/resolve-token.js";
6
+ import { Button as i } from "../button/Button.js";
7
+ import { Input as a } from "../input/Input.js";
8
+ import { CheckIcon as o } from "../../icons/CheckIcon.js";
9
+ import { SearchIcon as s } from "../../icons/SearchIcon.js";
10
+ import { FALLBACK_SELECT_MENU_CONFIG as c } from "./select-menu-config.js";
11
+ import { memo as l, useEffect as u, useMemo as d, useState as f } from "react";
12
+ import { Fragment as p, jsx as m, jsxs as h } from "react/jsx-runtime";
13
+ import { FloatingFocusManager as g, FloatingPortal as _ } from "@floating-ui/react";
14
+ //#region src/components/select-menu/SelectMenu.tsx
15
+ var v = l(function({ filteredOptions: e, selectedValues: t, onSelectMenuOption: n, renderOption: r, itemVariant: a, itemColor: s, activeItemVariant: c, activeItemColor: l, radius: u, size: d }) {
16
+ let f = (e) => t.includes(e);
17
+ return e.length === 0 ? /* @__PURE__ */ m("div", {
18
+ className: "px-3 py-4 text-xs text-foreground/70 text-center",
19
+ children: "No options found"
20
+ }) : /* @__PURE__ */ m(p, { children: e.map((e) => {
21
+ let t = f(e.value);
22
+ return r ? r(e, t) : /* @__PURE__ */ h(i, {
23
+ variant: t ? c : a,
24
+ color: t ? l : s,
25
+ radius: u,
26
+ size: d,
27
+ isDisabled: e.disabled,
28
+ onClick: () => n(e),
29
+ className: "w-full justify-between font-normal text-left transition-colors truncate",
30
+ children: [/* @__PURE__ */ m("span", { children: e.label }), t && /* @__PURE__ */ m(o, { className: "w-3.5 h-3.5 shrink-0 ml-2" })]
31
+ }, String(e.value));
32
+ }) });
33
+ }), y = ({ isOpen: i, floatingStyles: o, context: l, getFloatingProps: p, setFloatingRef: y, isPositioned: b = !0, options: x = [], selectedValues: S = [], onSelectMenuOption: C, isSearch: w = !0, searchPlaceholder: T = "Search...", searchInputName: E = "select-menu-search", searchQuery: D, onSearchChange: O, belowList: k, menuConfig: A, menuProps: j = {}, renderOption: M, initialFocus: N, returnFocus: P }) => {
34
+ let F = t(), [I, L] = f(""), R = D ?? I, z = (e) => {
35
+ O ? O(e) : L(e);
36
+ }, B = n(j?.lockScroll, A?.lockScroll, void 0, c.lockScroll), V = n(j?.portal, A?.portal, void 0, c.portal), H = n(j?.portalTarget, A?.portalTarget, void 0, typeof document < "u" ? document.body : null);
37
+ u(() => {
38
+ if (!i || !B) return;
39
+ let e = window.scrollY, t = document.body.style.position, n = document.body.style.top, r = document.body.style.left, a = document.body.style.right, o = document.body.style.width, s = document.body.style.overflow;
40
+ return document.body.style.position = "fixed", document.body.style.top = `-${e}px`, document.body.style.left = "0", document.body.style.right = "0", document.body.style.width = "100%", document.body.style.overflow = "hidden", () => {
41
+ document.body.style.position = t, document.body.style.top = n, document.body.style.left = r, document.body.style.right = a, document.body.style.width = o, document.body.style.overflow = s, window.scrollTo(0, e);
42
+ };
43
+ }, [i, B]);
44
+ let U = d(() => !w || !R.trim() ? x : x.filter((e) => e.label.toLowerCase().includes(R.toLowerCase())), [
45
+ x,
46
+ w,
47
+ R
48
+ ]), W = n(j?.itemVariant, A?.itemVariant, void 0, c.itemVariant), G = n(j?.itemColor, A?.itemColor, F.defaultColor, c.itemColor), K = n(j?.activeItemVariant, A?.activeItemVariant, F.defaultVariant, c.activeItemVariant), q = n(j?.activeItemColor, A?.activeItemColor, F.defaultColor, c.activeItemColor), J = r(j?.radius, A?.radius, F.defaultRadius, c.radius), Y = n(j?.size, A?.size, void 0, c.size);
49
+ if (!i) return null;
50
+ let X = /* @__PURE__ */ m(g, {
51
+ context: l,
52
+ modal: !1,
53
+ initialFocus: N,
54
+ returnFocus: P,
55
+ children: /* @__PURE__ */ h("div", {
56
+ ref: y,
57
+ style: { ...o },
58
+ className: e("w-full outline-none max-h-60 shadow-xl bg-background border border-border p-1 flex flex-col gap-0.5 overflow-y-auto scrollable-hidden", "transition-none", b ? "animate-in fade-in-0 zoom-in-95 slide-in-from-top-1 duration-150 ease-out" : "invisible opacity-0 pointer-events-none", j?.className),
59
+ ...p(),
60
+ children: [
61
+ w && /* @__PURE__ */ m("div", {
62
+ className: "w-full p-1 mb-1 sticky top-0 z-10 border-b border-border",
63
+ children: /* @__PURE__ */ m(a, {
64
+ name: E,
65
+ type: "text",
66
+ variant: "bordered",
67
+ radius: J,
68
+ color: G,
69
+ size: Y,
70
+ value: R,
71
+ onChange: (e) => z(e.target.value),
72
+ startContent: /* @__PURE__ */ m(s, { className: "w-3.5 h-3.5 text-foreground/70" }),
73
+ placeholder: T,
74
+ autoFocus: !0,
75
+ className: "w-full pl-8 h-8 text-xs bg-secondary/30 border-none focus-visible:ring-0"
76
+ })
77
+ }),
78
+ /* @__PURE__ */ m(v, {
79
+ filteredOptions: U,
80
+ selectedValues: S,
81
+ onSelectMenuOption: C,
82
+ renderOption: M,
83
+ itemVariant: W,
84
+ itemColor: G,
85
+ activeItemVariant: K,
86
+ activeItemColor: q,
87
+ radius: J,
88
+ size: Y
89
+ }),
90
+ k && /* @__PURE__ */ m("div", {
91
+ className: "border-t border-border pt-1 mt-1",
92
+ children: k
93
+ })
94
+ ]
95
+ })
96
+ });
97
+ return V ? /* @__PURE__ */ m(_, {
98
+ root: H,
99
+ children: X
100
+ }) : X;
198
101
  };
102
+ y.displayName = "SelectMenu";
103
+ //#endregion
104
+ export { y as SelectMenu };
@@ -1,14 +1,14 @@
1
1
  "use client";
2
- const t = {
3
- radius: "md",
4
- size: "md",
5
- itemVariant: "ghost",
6
- itemColor: "primary",
7
- activeItemVariant: "faded",
8
- activeItemColor: "primary",
9
- lockScroll: !0,
10
- portal: !0
11
- };
12
- export {
13
- t as FALLBACK_SELECT_MENU_CONFIG
2
+ //#region src/components/select-menu/select-menu-config.ts
3
+ var e = {
4
+ radius: "md",
5
+ size: "md",
6
+ itemVariant: "ghost",
7
+ itemColor: "primary",
8
+ activeItemVariant: "faded",
9
+ activeItemColor: "primary",
10
+ lockScroll: !0,
11
+ portal: !0
14
12
  };
13
+ //#endregion
14
+ export { e as FALLBACK_SELECT_MENU_CONFIG };
@@ -58,6 +58,15 @@ export interface UseSelectFloatingProps {
58
58
  * @default "listbox"
59
59
  */
60
60
  role?: "listbox" | "menu" | "dialog" | "tooltip" | "grid" | "tree";
61
+ /**
62
+ * Layer delta added to the trigger's detected stacking-context z-index to
63
+ * resolve the floating element's final `z-index`. Keeps anchored popups
64
+ * above their own container (for example a navbar) while staying underneath
65
+ * unrelated app chrome.
66
+ *
67
+ * @default ASHEE_LAYER.dropdown
68
+ */
69
+ zIndex?: number;
61
70
  }
62
71
  /**
63
72
  * Return value of useSelectFloating. Combines Floating UI's positioning
@@ -93,6 +102,7 @@ export interface UseSelectFloatingReturn<T extends HTMLElement> {
93
102
  * @param props.padding - Viewport padding for shift middleware. Defaults to 8.
94
103
  * @param props.matchReferenceWidth - Whether to match reference width. Defaults to true.
95
104
  * @param props.role - ARIA role for the floating element. Defaults to "listbox".
105
+ * @param props.zIndex - Layer delta for the floating element. Defaults to `ASHEE_LAYER.dropdown`.
96
106
  * @returns Floating UI refs/context/styles plus `isPositioned` and the
97
107
  * resolved `getReferenceProps`/`getFloatingProps` prop-getters.
98
108
  *
@@ -120,5 +130,5 @@ export interface UseSelectFloatingReturn<T extends HTMLElement> {
120
130
  * @see useFloating - The underlying Floating UI hook.
121
131
  * @see Select - The select component that uses this hook.
122
132
  */
123
- export declare function useSelectFloating<T extends HTMLElement = HTMLElement>({ isOpen, onOpenChange, disabled, placement, offsetDistance, padding, matchReferenceWidth, role, }: UseSelectFloatingProps): UseSelectFloatingReturn<T>;
133
+ export declare function useSelectFloating<T extends HTMLElement = HTMLElement>({ isOpen, onOpenChange, disabled, placement, offsetDistance, padding, matchReferenceWidth, role, zIndex, }: UseSelectFloatingProps): UseSelectFloatingReturn<T>;
124
134
  //# sourceMappingURL=use-select-floating.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-select-floating.d.ts","sourceRoot":"","sources":["../../../src/components/select-menu/use-select-floating.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAIL,KAAK,SAAS,EAKd,WAAW,EAGZ,MAAM,oBAAoB,CAAC;AAE5B;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;;OAGG;IACH,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAEtC;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;CACpE;AAED;;;;GAIG;AACH,MAAM,WAAW,uBAAuB,CAAC,CAAC,SAAS,WAAW;IAC5D,IAAI,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAChD,OAAO,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACtD,cAAc,EAAE,KAAK,CAAC,aAAa,CAAC;IACpC,YAAY,EAAE,OAAO,CAAC;IACtB,iBAAiB,EAAE,qBAAqB,CAAC,mBAAmB,CAAC,CAAC;IAC9D,gBAAgB,EAAE,qBAAqB,CAAC,kBAAkB,CAAC,CAAC;CAC7D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,EAAE,EACrE,MAAM,EACN,YAAY,EACZ,QAAgB,EAChB,SAA0B,EAC1B,cAAkB,EAClB,OAAW,EACX,mBAA0B,EAC1B,IAAgB,GACjB,EAAE,sBAAsB,GAAG,uBAAuB,CAAC,CAAC,CAAC,CA2CrD"}
1
+ {"version":3,"file":"use-select-floating.d.ts","sourceRoot":"","sources":["../../../src/components/select-menu/use-select-floating.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAIL,KAAK,SAAS,EAKd,WAAW,EAGZ,MAAM,oBAAoB,CAAC;AAI5B;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;;OAGG;IACH,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAEtC;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;IAEnE;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,uBAAuB,CAAC,CAAC,SAAS,WAAW;IAC5D,IAAI,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAChD,OAAO,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACtD,cAAc,EAAE,KAAK,CAAC,aAAa,CAAC;IACpC,YAAY,EAAE,OAAO,CAAC;IACtB,iBAAiB,EAAE,qBAAqB,CAAC,mBAAmB,CAAC,CAAC;IAC9D,gBAAgB,EAAE,qBAAqB,CAAC,kBAAkB,CAAC,CAAC;CAC7D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,EAAE,EACrE,MAAM,EACN,YAAY,EACZ,QAAgB,EAChB,SAA0B,EAC1B,cAAkB,EAClB,OAAW,EACX,mBAA0B,EAC1B,IAAgB,EAChB,MAA6B,GAC9B,EAAE,sBAAsB,GAAG,uBAAuB,CAAC,CAAC,CAAC,CAmDrD"}
@@ -1,50 +1,43 @@
1
1
  "use client";
2
- import { useFloating as h, autoUpdate as y, offset as w, flip as P, shift as b, size as C, useClick as F, useDismiss as R, useRole as S, useInteractions as k } from "@floating-ui/react";
3
- function O({
4
- isOpen: n,
5
- onOpenChange: l,
6
- disabled: o = !1,
7
- placement: a = "bottom-start",
8
- offsetDistance: c = 4,
9
- padding: r = 8,
10
- matchReferenceWidth: f = !0,
11
- role: g = "listbox"
12
- }) {
13
- const e = h({
14
- open: n,
15
- onOpenChange: (s) => !o && l(s),
16
- placement: a,
17
- strategy: "fixed",
18
- whileElementsMounted: y,
19
- middleware: [
20
- w(c),
21
- P(),
22
- b({ padding: r }),
23
- C({
24
- apply({ availableHeight: s, elements: i }) {
25
- Object.assign(i.floating.style, {
26
- maxHeight: `${s}px`,
27
- ...f && {
28
- width: `${i.reference.getBoundingClientRect().width}px`
29
- }
30
- });
31
- }
32
- })
33
- ]
34
- }), { context: t } = e, u = F(t, { enabled: !o }), p = R(t), d = S(t, { role: g }), { getReferenceProps: m, getFloatingProps: x } = k([
35
- u,
36
- p,
37
- d
38
- ]);
39
- return {
40
- refs: e.refs,
41
- context: t,
42
- floatingStyles: e.floatingStyles,
43
- isPositioned: e.isPositioned,
44
- getReferenceProps: m,
45
- getFloatingProps: x
46
- };
2
+ "use client";
3
+ import { ASHEE_LAYER as e } from "../../utils/stacking.js";
4
+ import { useFloatingZIndex as t } from "../../libs/use-floating-z-index.js";
5
+ import { autoUpdate as n, flip as r, offset as i, shift as a, size as o, useClick as s, useDismiss as c, useFloating as l, useInteractions as u, useRole as d } from "@floating-ui/react";
6
+ //#region src/components/select-menu/use-select-floating.ts
7
+ function f({ isOpen: f, onOpenChange: p, disabled: m = !1, placement: h = "bottom-start", offsetDistance: g = 4, padding: _ = 8, matchReferenceWidth: v = !0, role: y = "listbox", zIndex: b = e.dropdown }) {
8
+ let x = l({
9
+ open: f,
10
+ onOpenChange: (e) => !m && p(e),
11
+ placement: h,
12
+ strategy: "fixed",
13
+ whileElementsMounted: n,
14
+ middleware: [
15
+ i(g),
16
+ r(),
17
+ a({ padding: _ }),
18
+ o({ apply({ availableHeight: e, elements: t }) {
19
+ Object.assign(t.floating.style, {
20
+ maxHeight: `${e}px`,
21
+ ...v && { width: `${t.reference.getBoundingClientRect().width}px` }
22
+ });
23
+ } })
24
+ ]
25
+ }), S = t(x.refs.reference, f, b), { context: C } = x, w = s(C, { enabled: !m }), T = c(C), E = d(C, { role: y }), { getReferenceProps: D, getFloatingProps: O } = u([
26
+ w,
27
+ T,
28
+ E
29
+ ]);
30
+ return {
31
+ refs: x.refs,
32
+ context: C,
33
+ floatingStyles: {
34
+ ...x.floatingStyles,
35
+ zIndex: S
36
+ },
37
+ isPositioned: x.isPositioned,
38
+ getReferenceProps: D,
39
+ getFloatingProps: O
40
+ };
47
41
  }
48
- export {
49
- O as useSelectFloating
50
- };
42
+ //#endregion
43
+ export { f as useSelectFloating };
@@ -1,6 +1,32 @@
1
1
  import { ElementType, HTMLAttributes, ReactNode } from 'react';
2
- import { SidebarConfig, SidebarItem, SidebarItems } from './sidebar-config';
3
- type BaseSidebarProps = SidebarConfig & Omit<HTMLAttributes<HTMLElement>, "color" | "size" | "onSelect" | "title">;
2
+ import { SidebarConfig, SidebarItem, SidebarItems, SidebarOptionsConfig, SidebarTooltipConfig } from './sidebar-config';
3
+ type BaseSidebarProps = Omit<SidebarConfig, "options"> & Omit<HTMLAttributes<HTMLElement>, "color" | "size" | "onSelect" | "title">;
4
+ /**
5
+ * Options props for the sidebar's navigation items.
6
+ * Extends the options config with sidebar-local props.
7
+ */
8
+ export interface SidebarOptionProps extends SidebarOptionsConfig {
9
+ /**
10
+ * Class override applied to every navigation item.
11
+ */
12
+ itemClassName?: string;
13
+ }
14
+ /**
15
+ * Props for the sidebar's navigation links.
16
+ * Holds the instance-only link component and its props.
17
+ */
18
+ export interface SidebarLinkProps {
19
+ /**
20
+ * Custom link component (e.g., Next.js Link, TanStack Router Link).
21
+ * When provided, this component is used instead of the native <a> tag.
22
+ */
23
+ component?: ElementType;
24
+ /**
25
+ * Additional props to pass to the custom link component (e.g. { prefetch: true }).
26
+ * These take precedence over the component's own props.
27
+ */
28
+ props?: Record<string, unknown>;
29
+ }
4
30
  /**
5
31
  * Configuration options for the Sidebar component.
6
32
  */
@@ -63,9 +89,14 @@ export interface SidebarProps<T = string> extends BaseSidebarProps {
63
89
  */
64
90
  bodyClassName?: string;
65
91
  /**
66
- * Individual navigation item class override.
92
+ * Options configuration for the sidebar's navigation items
93
+ * (radius and active/inactive styling), plus item-local props.
67
94
  */
68
- itemClassName?: string;
95
+ options?: SidebarOptionProps;
96
+ /**
97
+ * Tooltip configuration for collapsed sidebar items.
98
+ */
99
+ tooltip?: SidebarTooltipConfig;
69
100
  /**
70
101
  * Section label class override.
71
102
  */
@@ -79,15 +110,10 @@ export interface SidebarProps<T = string> extends BaseSidebarProps {
79
110
  */
80
111
  anchorProps?: Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, "href" | "children" | "onClick" | "className">;
81
112
  /**
82
- * Custom link component (e.g., Next.js Link, TanStack Router Link).
83
- * When provided, this component is used instead of the native <a> tag.
84
- */
85
- linkComponent?: ElementType;
86
- /**
87
- * Additional props to pass to the custom link component (e.g., { prefetch: true }).
88
- * These take precedence over the component's own props.
113
+ * Link configuration for navigation items.
114
+ * Provides the custom link component and props forwarded to it.
89
115
  */
90
- linkProps?: Record<string, unknown>;
116
+ link?: SidebarLinkProps;
91
117
  }
92
118
  /**
93
119
  * A collapsible navigation sidebar with support for sections, items,
@@ -116,16 +142,11 @@ export interface SidebarProps<T = string> extends BaseSidebarProps {
116
142
  * @param props.size - Size scale. Defaults to "md".
117
143
  * @param props.variant - Visual style variant. Defaults to "default".
118
144
  * @param props.radius - Corner rounding of the sidebar.
119
- * @param props.itemRadius - Corner rounding of navigation items.
120
- * @param props.itemVariant - Visual variant for inactive items.
121
- * @param props.activeItemVariant - Visual variant for active items.
122
- * @param props.activeItemColor - Theme color for active items.
123
- * @param props.showTooltips - Whether tooltips are shown. Defaults to true.
124
- * @param props.tooltipPlacement - Placement of tooltips. Defaults to "right".
145
+ * @param props.options - Navigation item options (radius, active/inactive variant and color).
146
+ * @param props.tooltip - Tooltip configuration for collapsed items (show, placement, variant, color).
125
147
  * @param props.showCollapseButton - Whether the collapse button is shown. Defaults to true.
126
148
  * @param props.collapsible - Whether the sidebar can be collapsed. Defaults to true.
127
- * @param props.linkComponent - Custom link component for routing.
128
- * @param props.linkProps - Props for the custom link component.
149
+ * @param props.link - Link configuration for navigation items (component and props).
129
150
  *
130
151
  * @example
131
152
  * ```tsx
@@ -159,7 +180,7 @@ export interface SidebarProps<T = string> extends BaseSidebarProps {
159
180
  * { id: "main", label: "Main", items: mainItems },
160
181
  * { id: "admin", label: "Admin", items: adminItems },
161
182
  * ]}
162
- * linkComponent={NextLink}
183
+ * link={{ component: NextLink }}
163
184
  * userRole="admin"
164
185
  * />
165
186
  * ```
@@ -167,7 +188,7 @@ export interface SidebarProps<T = string> extends BaseSidebarProps {
167
188
  * @see SidebarConfig - The configuration type for component defaults.
168
189
  * @see useAsheeConfig - Hook for accessing the global configuration.
169
190
  */
170
- export declare function Sidebar<T = string>({ items: itemsProp, activeKey, onSelect, isCollapsed: isCollapsedProp, onCollapseChange, title, onBack, backIcon, userRole, footer, variant, size, radius, itemRadius, itemVariant, activeItemVariant, activeItemColor, showCollapseButton: showCollapseButtonProp, collapsible: collapsibleProp, defaultCollapsed: defaultCollapsedProp, showTooltips, tooltipPlacement, headerClassName, bodyClassName, itemClassName, sectionLabelClassName, footerClassName, anchorProps, linkComponent, linkProps: linkPropsProp, className, style, ...props }: SidebarProps<T>): import("react").JSX.Element;
191
+ export declare function Sidebar<T = string>({ items: itemsProp, activeKey, onSelect, isCollapsed: isCollapsedProp, onCollapseChange, title, onBack, backIcon, userRole, footer, variant, size, radius, options, showCollapseButton: showCollapseButtonProp, collapsible: collapsibleProp, defaultCollapsed: defaultCollapsedProp, tooltip, headerClassName, bodyClassName, sectionLabelClassName, footerClassName, anchorProps, link, className, style, ...props }: SidebarProps<T>): import("react").JSX.Element;
171
192
  export declare namespace Sidebar {
172
193
  var displayName: string;
173
194
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Sidebar.d.ts","sourceRoot":"","sources":["../../../src/components/sidebar/Sidebar.tsx"],"names":[],"mappings":"AAUA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,SAAS,EAKf,MAAM,OAAO,CAAC;AAqBf,OAAO,KAAK,EACV,aAAa,EACb,WAAW,EACX,YAAY,EAIb,MAAM,kBAAkB,CAAC;AAqB1B,KAAK,gBAAgB,GAAG,aAAa,GACnC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC,CAAC;AAE7E;;GAEG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,MAAM,CAAE,SAAQ,gBAAgB;IAChE;;;OAGG;IACH,KAAK,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAExB;;;OAGG;IACH,SAAS,CAAC,EAAE,CAAC,CAAC;IAEd;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAE1C;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IAEhD;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IAEpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,WAAW,CAAC,EAAE,IAAI,CAChB,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAC7C,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,CAC9C,CAAC;IAEF;;;OAGG;IACH,aAAa,CAAC,EAAE,WAAW,CAAC;IAE5B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6EG;AACH,wBAAgB,OAAO,CAAC,CAAC,GAAG,MAAM,EAAE,EAClC,KAAK,EAAE,SAAS,EAChB,SAAS,EACT,QAAQ,EACR,WAAW,EAAE,eAAe,EAC5B,gBAAgB,EAChB,KAAK,EACL,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,OAAO,EACP,IAAI,EACJ,MAAM,EACN,UAAU,EACV,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAAE,sBAAsB,EAC1C,WAAW,EAAE,eAAe,EAC5B,gBAAgB,EAAE,oBAAoB,EACtC,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,aAAa,EACb,qBAAqB,EACrB,eAAe,EACf,WAAW,EACX,aAAa,EACb,SAAS,EAAE,aAAa,EACxB,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACT,EAAE,YAAY,CAAC,CAAC,CAAC,+BAyYjB;yBA3ae,OAAO"}
1
+ {"version":3,"file":"Sidebar.d.ts","sourceRoot":"","sources":["../../../src/components/sidebar/Sidebar.tsx"],"names":[],"mappings":"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"}