asheeui 0.6.7 → 0.6.8

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.
@@ -7,8 +7,8 @@ import { resolveCascade as c, resolveRadiusKey as me } from "../../utils/resolve
7
7
  import { Input as pe } from "../input/Input.js";
8
8
  import { SelectMenu as de } from "../select-menu/SelectMenu.js";
9
9
  import { FALLBACK_AUTOCOMPLETE_CONFIG as o } from "./autocomplete-config.js";
10
- import { useSelectFloating as fe } from "../select-menu/use-select-floating.js";
11
- const ue = ae(
10
+ import { useSelectFloating as ue } from "../select-menu/use-select-floating.js";
11
+ const fe = ae(
12
12
  ({
13
13
  options: l = [],
14
14
  value: r,
@@ -17,10 +17,10 @@ const ue = ae(
17
17
  allowCustomValue: R = !1,
18
18
  belowList: P,
19
19
  dropdownClassName: L,
20
- menu: z,
21
- variant: w,
22
- color: E,
23
- radius: M,
20
+ menu: M,
21
+ variant: z,
22
+ color: w,
23
+ radius: E,
24
24
  size: N,
25
25
  endContent: j,
26
26
  onClick: v,
@@ -33,17 +33,17 @@ const ue = ae(
33
33
  }, m) => {
34
34
  var x;
35
35
  const p = ie(), e = (x = p.components) == null ? void 0 : x.autocomplete, U = c(
36
- w,
36
+ z,
37
37
  e == null ? void 0 : e.variant,
38
38
  p.defaultVariant,
39
39
  o.variant
40
40
  ), q = c(
41
- E,
41
+ w,
42
42
  e == null ? void 0 : e.color,
43
43
  p.defaultColor,
44
44
  o.color
45
45
  ), H = me(
46
- M,
46
+ E,
47
47
  e == null ? void 0 : e.radius,
48
48
  p.defaultRadius,
49
49
  o.radius
@@ -65,13 +65,13 @@ const ue = ae(
65
65
  ), a = F(
66
66
  () => l.find((t) => t.value === r),
67
67
  [l, r]
68
- ), [S, d] = A(!1), [f, u] = A(
68
+ ), [S, d] = A(!1), [u, f] = A(
69
69
  () => a ? a.label : String(r ?? "")
70
70
  );
71
71
  ce(() => {
72
- a ? u(a.label) : r != null && u(String(r));
72
+ a ? f(a.label) : r != null && f(String(r));
73
73
  }, [a, r]);
74
- const { refs: T, floatingStyles: X, context: n } = fe({
74
+ const { refs: T, floatingStyles: X, context: n } = ue({
75
75
  isOpen: S,
76
76
  onOpenChange: d,
77
77
  disabled: O
@@ -79,17 +79,17 @@ const ue = ae(
79
79
  Y,
80
80
  Z,
81
81
  $
82
- ]), V = F(() => f.trim() ? l.filter(
83
- (t) => t.label.toLowerCase().includes(f.toLowerCase())
84
- ) : l, [l, f]), g = K(
82
+ ]), V = F(() => u.trim() ? l.filter(
83
+ (t) => t.label.toLowerCase().includes(u.toLowerCase())
84
+ ) : l, [l, u]), g = K(
85
85
  (t) => {
86
86
  const y = t.target.value;
87
- u(y), i == null || i(y), d(!0), R && (s == null || s(y));
87
+ f(y), i == null || i(y), d(!0), R && (s == null || s(y));
88
88
  },
89
89
  [R, i, s]
90
90
  ), C = K(
91
91
  (t) => {
92
- u(t.label), s == null || s(t.value, t), d(!1);
92
+ f(t.label), s == null || s(t.value, t), d(!1);
93
93
  },
94
94
  [s]
95
95
  ), ee = F(
@@ -109,7 +109,7 @@ const ue = ae(
109
109
  size: J,
110
110
  disabled: O,
111
111
  placeholder: _,
112
- value: f,
112
+ value: u,
113
113
  onChange: g,
114
114
  onClick: (t) => {
115
115
  O || d(!0), v == null || v(t);
@@ -131,11 +131,11 @@ const ue = ae(
131
131
  setFloatingRef: T.setFloating,
132
132
  options: V,
133
133
  selectedValues: ee,
134
- onSelectOption: C,
134
+ onSelectMenuOption: C,
135
135
  isSearch: !1,
136
136
  belowList: P,
137
137
  dropdownClassName: L,
138
- menuProps: z,
138
+ menuProps: M,
139
139
  menuConfig: e == null ? void 0 : e.menu,
140
140
  initialFocus: -1,
141
141
  returnFocus: !1,
@@ -146,7 +146,7 @@ const ue = ae(
146
146
  ] });
147
147
  }
148
148
  );
149
- ue.displayName = "Autocomplete";
149
+ fe.displayName = "Autocomplete";
150
150
  export {
151
- ue as Autocomplete
151
+ fe as Autocomplete
152
152
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../src/components/modal/Modal.tsx"],"names":[],"mappings":"AASA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,SAAS,EAGf,MAAM,OAAO,CAAC;AASf,OAAO,EAEL,KAAK,WAAW,EAGjB,MAAM,gBAAgB,CAAC;AAGxB,KAAK,cAAc,GAAG,WAAW,GAC/B,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,UAAW,SAAQ,cAAc;IAChD;;;OAGG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB;;;OAGG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2EG;AACH,wBAAgB,KAAK,CAAC,EACpB,MAAM,EACN,OAAO,EACP,QAAQ,EACR,KAAK,EACL,MAAM,EACN,IAAI,EACJ,QAAQ,EAAE,YAAY,EACtB,MAAM,EACN,QAAQ,EAAE,YAAY,EACtB,oBAAoB,EAAE,wBAAwB,EAC9C,aAAa,EAAE,iBAAiB,EAChC,gBAAgB,EAAE,oBAAoB,EACtC,gBAAgB,EAAE,oBAAoB,EACtC,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACT,EAAE,UAAU,sCAyKZ;yBA1Le,KAAK"}
1
+ {"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../src/components/modal/Modal.tsx"],"names":[],"mappings":"AASA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,SAAS,EAGf,MAAM,OAAO,CAAC;AASf,OAAO,EAEL,KAAK,WAAW,EAGjB,MAAM,gBAAgB,CAAC;AAGxB,KAAK,cAAc,GAAG,WAAW,GAC/B,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,UAAW,SAAQ,cAAc;IAChD;;;OAGG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB;;;OAGG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2EG;AACH,wBAAgB,KAAK,CAAC,EACpB,MAAM,EACN,OAAO,EACP,QAAQ,EACR,KAAK,EACL,MAAM,EACN,IAAI,EACJ,QAAQ,EAAE,YAAY,EACtB,MAAM,EACN,QAAQ,EAAE,YAAY,EACtB,oBAAoB,EAAE,wBAAwB,EAC9C,aAAa,EAAE,iBAAiB,EAChC,gBAAgB,EAAE,oBAAoB,EACtC,gBAAgB,EAAE,oBAAoB,EACtC,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACT,EAAE,UAAU,sCA+JZ;yBAhLe,KAAK"}
@@ -1,21 +1,21 @@
1
1
  "use client";
2
- import { jsxs as P, jsx as k } from "react/jsx-runtime";
3
- import { useState as b, useEffect as d } from "react";
2
+ import { jsxs as P, jsx as v } from "react/jsx-runtime";
3
+ import { useState as y, useEffect as A } from "react";
4
4
  import { useAsheeConfig as U } from "../../libs/context.js";
5
- import { resolveCascade as a, resolveRadiusKey as W, resolveClassKey as w } from "../../utils/resolve-token.js";
6
- import { FALLBACK_MODAL_CONFIG as o } from "./modal-config.js";
7
- import { MODAL_MAX_WIDTH_CLASS as X, MODAL_POSITION_CLASS as A } from "./modal-styles.js";
5
+ import { resolveCascade as a, resolveRadiusKey as W, resolveClassKey as b } from "../../utils/resolve-token.js";
6
+ import { FALLBACK_MODAL_CONFIG as s } from "./modal-config.js";
7
+ import { MODAL_MAX_WIDTH_CLASS as X, MODAL_POSITION_CLASS as S } from "./modal-styles.js";
8
8
  import { RADIUS_CLASS as J } from "../../shared/radius.js";
9
- import { cn as i } from "../../utils/cn.js";
9
+ import { cn as l } from "../../utils/cn.js";
10
10
  function Q({
11
- isOpen: t,
12
- onClose: s,
13
- children: S,
14
- width: c,
11
+ isOpen: o,
12
+ onClose: t,
13
+ children: w,
14
+ width: d,
15
15
  height: L,
16
- size: x,
17
- position: O,
18
- radius: h,
16
+ size: O,
17
+ position: h,
18
+ radius: x,
19
19
  animated: E,
20
20
  closeOnBackdropClick: N,
21
21
  closeOnEscape: _,
@@ -25,114 +25,108 @@ function Q({
25
25
  style: C,
26
26
  ...D
27
27
  }) {
28
- var y;
29
- const m = U(), e = (y = m.components) == null ? void 0 : y.modal, [u, f] = b(!1), [I, n] = b(t), K = a(
30
- x,
28
+ var k;
29
+ const c = U(), e = (k = c.components) == null ? void 0 : k.modal, [m, u] = y(!1), [I, n] = y(o), K = a(
30
+ O,
31
31
  e == null ? void 0 : e.size,
32
32
  void 0,
33
- o.size
33
+ s.size
34
34
  ), R = a(
35
- O,
35
+ h,
36
36
  e == null ? void 0 : e.position,
37
37
  void 0,
38
- o.position
38
+ s.position
39
39
  ), T = a(
40
40
  N,
41
41
  e == null ? void 0 : e.closeOnBackdropClick,
42
42
  void 0,
43
- o.closeOnBackdropClick
43
+ s.closeOnBackdropClick
44
44
  ), p = a(
45
45
  _,
46
46
  e == null ? void 0 : e.closeOnEscape,
47
47
  void 0,
48
- o.closeOnEscape
49
- ), g = W(
50
- h,
48
+ s.closeOnEscape
49
+ ), j = W(
50
+ x,
51
51
  e == null ? void 0 : e.radius,
52
- m.defaultRadius,
53
- o.radius
54
- ), l = a(
52
+ c.defaultRadius,
53
+ s.radius
54
+ ), r = a(
55
55
  E,
56
56
  e == null ? void 0 : e.animated,
57
57
  void 0,
58
- o.animated
59
- ), j = c ? "" : w(
58
+ s.animated
59
+ ), F = d ? "" : b(
60
60
  K,
61
61
  X,
62
- o.size
63
- ), F = w(
64
- g,
62
+ s.size
63
+ ), g = b(
64
+ j,
65
65
  J,
66
- o.radius
67
- ), q = A[R] ?? A.center;
68
- if (d(() => {
69
- if (t)
66
+ s.radius
67
+ ), q = S[R] ?? S.center;
68
+ if (A(() => {
69
+ if (o)
70
70
  n(!0), requestAnimationFrame(() => {
71
- f(!1);
71
+ u(!1);
72
72
  });
73
- else if (l) {
74
- f(!0);
75
- const r = setTimeout(() => {
73
+ else if (r) {
74
+ u(!0);
75
+ const i = setTimeout(() => {
76
76
  n(!1);
77
77
  }, 200);
78
- return () => clearTimeout(r);
78
+ return () => clearTimeout(i);
79
79
  } else
80
80
  n(!1);
81
- }, [t, l]), d(() => {
82
- if (!t || !p || !s) return;
83
- const r = (H) => {
84
- H.key === "Escape" && s();
85
- };
86
- return window.addEventListener("keydown", r), () => window.removeEventListener("keydown", r);
87
- }, [t, p, s]), d(() => {
88
- if (!t) return;
89
- const r = document.body.style.overflow;
90
- return document.body.style.overflow = "hidden", () => {
91
- document.body.style.overflow = r;
81
+ }, [o, r]), A(() => {
82
+ if (!o || !p || !t) return;
83
+ const i = (H) => {
84
+ H.key === "Escape" && t();
92
85
  };
93
- }, [t]), !I) return null;
94
- const v = () => l ? u ? "animate-backdrop-out" : "animate-backdrop-in" : "", G = () => l ? u ? "animate-modal-out" : "animate-modal-in" : "";
86
+ return window.addEventListener("keydown", i), () => window.removeEventListener("keydown", i);
87
+ }, [o, p, t]), !I) return null;
88
+ const f = () => r ? m ? "animate-backdrop-out" : "animate-backdrop-in" : "", G = () => r ? m ? "animate-modal-out" : "animate-modal-in" : "";
95
89
  return /* @__PURE__ */ P(
96
90
  "div",
97
91
  {
98
92
  role: "dialog",
99
93
  "aria-modal": "true",
100
- className: i(
101
- "fixed inset-0 z-50 flex items-center justify-center p-4 sm:p-6 overflow-y-auto",
102
- v()
94
+ className: l(
95
+ "fixed inset-0 z-50 flex items-center justify-center p-4 sm:p-6 h-screen w-screen scrollbar-hide",
96
+ f()
103
97
  ),
104
98
  children: [
105
- /* @__PURE__ */ k(
99
+ /* @__PURE__ */ v(
106
100
  "button",
107
101
  {
108
102
  type: "button",
109
- onClick: T ? s : void 0,
110
- className: i(
103
+ onClick: T ? t : void 0,
104
+ className: l(
111
105
  "fixed inset-0 bg-background/80 backdrop-blur-xs dark:bg-black/70",
112
106
  M,
113
- v()
107
+ f()
114
108
  )
115
109
  }
116
110
  ),
117
- /* @__PURE__ */ k(
111
+ /* @__PURE__ */ v(
118
112
  "div",
119
113
  {
120
- className: i(
114
+ className: l(
121
115
  "relative z-10 w-full bg-background text-foreground overflow-y-auto max-h-[90vh]",
122
116
  q,
123
- j,
124
117
  F,
118
+ g,
125
119
  z,
126
120
  G(),
127
121
  B
128
122
  ),
129
123
  style: {
130
- width: c,
124
+ width: d,
131
125
  height: L,
132
126
  ...C
133
127
  },
134
128
  ...D,
135
- children: S
129
+ children: w
136
130
  }
137
131
  )
138
132
  ]
@@ -53,8 +53,8 @@ const tr = Ge(
53
53
  style: ce,
54
54
  ...ue
55
55
  }, p) => {
56
- var D, K, F, M;
57
- const v = qe(), e = (D = v.components) == null ? void 0 : D.multiSelect, me = He(), de = le ?? me, [x, fe] = P(!1), [Se, pe] = P(""), y = c(
56
+ var M, D, K, F;
57
+ const v = qe(), e = (M = v.components) == null ? void 0 : M.multiSelect, me = He(), de = le ?? me, [x, fe] = P(!1), [Se, pe] = P(""), y = c(
58
58
  J,
59
59
  e == null ? void 0 : e.size,
60
60
  void 0,
@@ -76,17 +76,17 @@ const tr = Ge(
76
76
  s.radius
77
77
  ), xe = c(
78
78
  a == null ? void 0 : a.color,
79
- (K = e == null ? void 0 : e.chip) == null ? void 0 : K.color,
79
+ (D = e == null ? void 0 : e.chip) == null ? void 0 : D.color,
80
80
  w,
81
81
  s.chip.color
82
82
  ), ye = c(
83
83
  a == null ? void 0 : a.size,
84
- (F = e == null ? void 0 : e.chip) == null ? void 0 : F.size,
84
+ (K = e == null ? void 0 : e.chip) == null ? void 0 : K.size,
85
85
  void 0,
86
86
  s.chip.size
87
87
  ), be = U(
88
88
  a == null ? void 0 : a.radius,
89
- (M = e == null ? void 0 : e.chip) == null ? void 0 : M.radius,
89
+ (F = e == null ? void 0 : e.chip) == null ? void 0 : F.radius,
90
90
  A,
91
91
  s.chip.radius
92
92
  ), d = X ?? "default", ge = d === "error" ? "danger" : d === "success" ? "success" : d === "warning" ? "warning" : w, Te = c(
@@ -124,14 +124,14 @@ const tr = Ge(
124
124
  isOpen: x,
125
125
  onOpenChange: fe,
126
126
  disabled: u
127
- }), Ee = Ue(b, { enabled: !u }), ke = Ve(b), De = je(b, { role: "listbox" }), { getReferenceProps: Ke, getFloatingProps: Fe } = Be([
127
+ }), Ee = Ue(b, { enabled: !u }), ke = Ve(b), Me = je(b, { role: "listbox" }), { getReferenceProps: De, getFloatingProps: Ke } = Be([
128
128
  Ee,
129
129
  ke,
130
- De
130
+ Me
131
131
  ]), i = R(() => N !== void 0 ? N : Array.isArray(o) ? I.filter((r) => o.includes(r.value)) : [], [N, o, I]), E = L(
132
132
  (r) => i.some((t) => t.value === r),
133
133
  [i]
134
- ), Me = L(
134
+ ), Fe = L(
135
135
  (r) => {
136
136
  const t = E(r.value);
137
137
  if (f || n)
@@ -193,7 +193,7 @@ const tr = Ge(
193
193
  we,
194
194
  ae
195
195
  ),
196
- ...Ke(),
196
+ ...De(),
197
197
  children: [
198
198
  /* @__PURE__ */ l("span", { children: i.length > 0 ? `${i.length} selected` : V }),
199
199
  /* @__PURE__ */ l(
@@ -214,11 +214,11 @@ const tr = Ge(
214
214
  isOpen: x,
215
215
  context: b,
216
216
  floatingStyles: ze,
217
- getFloatingProps: Fe,
217
+ getFloatingProps: Ke,
218
218
  setFloatingRef: z.setFloating,
219
219
  options: I,
220
220
  selectedValues: Oe,
221
- onSelectOption: Me,
221
+ onSelectMenuOption: Fe,
222
222
  isSearch: j,
223
223
  searchPlaceholder: B,
224
224
  searchInputName: G,
@@ -28,12 +28,12 @@ const De = ge(
28
28
  labelAlign: O,
29
29
  description: P,
30
30
  message: D,
31
- required: j,
32
- isLoading: z,
31
+ required: M,
32
+ isLoading: j,
33
33
  disabled: v,
34
- isSearch: C = !1,
35
- searchPlaceholder: B = "Search options...",
36
- searchInputName: M = "select-search",
34
+ isSearch: z = !1,
35
+ searchPlaceholder: C = "Search options...",
36
+ searchInputName: B = "select-search",
37
37
  initialValue: n,
38
38
  belowList: Q,
39
39
  placeholder: y = "Select...",
@@ -124,8 +124,8 @@ const De = ge(
124
124
  description: P,
125
125
  message: D,
126
126
  status: u,
127
- required: j,
128
- isLoading: z,
127
+ required: M,
128
+ isLoading: j,
129
129
  children: /* @__PURE__ */ T("div", { className: "w-full relative inline-block", children: [
130
130
  /* @__PURE__ */ T(
131
131
  "button",
@@ -180,10 +180,10 @@ const De = ge(
180
180
  setFloatingRef: h.setFloating,
181
181
  options: p,
182
182
  selectedValues: ve,
183
- onSelectOption: pe,
184
- isSearch: C,
185
- searchPlaceholder: B,
186
- searchInputName: M,
183
+ onSelectMenuOption: pe,
184
+ isSearch: z,
185
+ searchPlaceholder: C,
186
+ searchInputName: B,
187
187
  searchQuery: $,
188
188
  onSearchChange: R,
189
189
  belowList: Q,
@@ -1,16 +1,6 @@
1
1
  import { FloatingContext } from '@floating-ui/react';
2
2
  import { ReactNode } from 'react';
3
- import { SelectMenuConfig } from './select-menu-config';
4
- /**
5
- * Type alias for a select option.
6
- * Each option must have a label and a unique value.
7
- */
8
- export interface SelectOption {
9
- label: string;
10
- value: string | number;
11
- disabled?: boolean;
12
- [key: string]: unknown;
13
- }
3
+ import { SelectMenuConfig, SelectMenuOption } from './select-menu-config';
14
4
  /**
15
5
  * Props for the SelectMenu component.
16
6
  */
@@ -38,7 +28,7 @@ export interface SelectMenuProps {
38
28
  /**
39
29
  * Available options to display in the menu.
40
30
  */
41
- options: SelectOption[];
31
+ options: SelectMenuOption[];
42
32
  /**
43
33
  * Currently selected values.
44
34
  * Used to highlight selected options with a checkmark.
@@ -48,7 +38,7 @@ export interface SelectMenuProps {
48
38
  * Callback fired when an option is selected.
49
39
  * Receives the selected option object.
50
40
  */
51
- onSelectOption: (option: SelectOption) => void;
41
+ onSelectMenuOption: (option: SelectMenuOption) => void;
52
42
  /**
53
43
  * Whether search input is shown in the menu.
54
44
  * @default true
@@ -92,7 +82,7 @@ export interface SelectMenuProps {
92
82
  * Custom render function for each option.
93
83
  * Receives the option and a boolean indicating if it's selected.
94
84
  */
95
- renderOption?: (option: SelectOption, isSelected: boolean) => ReactNode;
85
+ renderOption?: (option: SelectMenuOption, isSelected: boolean) => ReactNode;
96
86
  /**
97
87
  * Initial focus target for the FloatingFocusManager.
98
88
  */
@@ -142,7 +132,7 @@ export interface SelectMenuProps {
142
132
  * @param props.setFloatingRef - Ref setter for the floating element.
143
133
  * @param props.options - Available options to display.
144
134
  * @param props.selectedValues - Currently selected values.
145
- * @param props.onSelectOption - Callback fired when an option is selected.
135
+ * @param props.onSelectMenuOption - Callback fired when an option is selected.
146
136
  * @param props.isSearch - Whether search is enabled. Defaults to true.
147
137
  * @param props.searchPlaceholder - Search placeholder. Defaults to "Search...".
148
138
  * @param props.belowList - Content below the options list.
@@ -152,6 +142,7 @@ export interface SelectMenuProps {
152
142
  * @param props.renderOption - Custom render function for options.
153
143
  * @param props.portal - Whether to render the menu in a portal. Defaults to true.
154
144
  * @param props.portalTarget - Custom portal target element. Defaults to document.body.
145
+ * @param props.lockScroll - Whether to lock body scroll. Defaults to true.
155
146
  *
156
147
  * @example
157
148
  * ```tsx
@@ -165,7 +156,7 @@ export interface SelectMenuProps {
165
156
  * setFloatingRef={refs.setFloating}
166
157
  * options={options}
167
158
  * selectedValues={selectedValues}
168
- * onSelectOption={handleSelect}
159
+ * onSelectMenuOption={handleSelect}
169
160
  * />
170
161
  * ```
171
162
  *
@@ -173,7 +164,7 @@ export interface SelectMenuProps {
173
164
  * @see Button - The button component used for menu items.
174
165
  */
175
166
  export declare const SelectMenu: {
176
- ({ isOpen, context, floatingStyles, getFloatingProps, setFloatingRef, options, selectedValues, onSelectOption, isSearch, searchPlaceholder, searchInputName, searchQuery, onSearchChange, belowList, dropdownClassName, menuConfig, menuProps, renderOption, initialFocus, returnFocus, portal, portalTarget, }: SelectMenuProps): import("react").JSX.Element | null;
167
+ ({ isOpen, context, floatingStyles, getFloatingProps, setFloatingRef, options, selectedValues, onSelectMenuOption, isSearch, searchPlaceholder, searchInputName, searchQuery, onSearchChange, belowList, dropdownClassName, menuConfig, menuProps, renderOption, initialFocus, returnFocus, portal, portalTarget, }: SelectMenuProps): import("react").JSX.Element | null;
177
168
  displayName: string;
178
169
  };
179
170
  //# sourceMappingURL=SelectMenu.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SelectMenu.d.ts","sourceRoot":"","sources":["../../../src/components/select-menu/SelectMenu.tsx"],"names":[],"mappings":"AAUA,OAAO,EAAE,KAAK,eAAe,EAAwB,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAoB,KAAK,SAAS,EAAqB,MAAM,OAAO,CAAC;AAU5E,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,sBAAsB,CAAC;AAE9B;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,OAAO,EAAE,eAAe,CAAC;IAEzB;;OAEG;IACH,cAAc,EAAE,KAAK,CAAC,aAAa,CAAC;IAEpC;;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;;OAEG;IACH,OAAO,EAAE,YAAY,EAAE,CAAC;IAExB;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAErC;;;OAGG;IACH,cAAc,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;IAE/C;;;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,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAE9B;;OAEG;IACH,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAE7B;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,KAAK,SAAS,CAAC;IAExE;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAErD;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;;;OAIG;IACH,YAAY,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;CACnC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AACH,eAAO,MAAM,UAAU;qTAuBpB,eAAe;;CAiKjB,CAAC"}
1
+ {"version":3,"file":"SelectMenu.d.ts","sourceRoot":"","sources":["../../../src/components/select-menu/SelectMenu.tsx"],"names":[],"mappings":"AAUA,OAAO,EAAE,KAAK,eAAe,EAAwB,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAEL,KAAK,SAAS,EAIf,MAAM,OAAO,CAAC;AAUf,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACtB,MAAM,sBAAsB,CAAC;AAE9B;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,OAAO,EAAE,eAAe,CAAC;IAEzB;;OAEG;IACH,cAAc,EAAE,KAAK,CAAC,aAAa,CAAC;IAEpC;;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;;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,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAE9B;;OAEG;IACH,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAE7B;;;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;IAEtB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;;;OAIG;IACH,YAAY,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;CACnC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AACH,eAAO,MAAM,UAAU;yTAuBpB,eAAe;;CAmMjB,CAAC"}
@@ -1,137 +1,150 @@
1
1
  "use client";
2
- import { jsx as a, jsxs as z } from "react/jsx-runtime";
3
- import { FloatingFocusManager as H } from "@floating-ui/react";
4
- import { useState as J, useMemo as W } from "react";
5
- import { createPortal as X } from "react-dom";
6
- import { CheckIcon as Y } from "../../icons/CheckIcon.js";
7
- import { SearchIcon as Z } from "../../icons/SearchIcon.js";
8
- import { useAsheeConfig as $ } from "../../libs/context.js";
9
- import { resolveCascade as c, resolveRadiusKey as p } from "../../utils/resolve-token.js";
10
- import { Button as C } from "../button/Button.js";
11
- import { Input as g } from "../input/Input.js";
12
- import { FALLBACK_SELECT_MENU_CONFIG as l } from "./select-menu-config.js";
13
- import { cn as P } from "../../utils/cn.js";
14
- const tt = ({
15
- isOpen: V,
16
- context: m,
17
- floatingStyles: u,
18
- getFloatingProps: S,
19
- setFloatingRef: k,
20
- options: s = [],
21
- selectedValues: A = [],
22
- onSelectOption: F,
23
- isSearch: v = !0,
2
+ import { jsx as r, jsxs as u } from "react/jsx-runtime";
3
+ import { FloatingFocusManager as J } from "@floating-ui/react";
4
+ import { useState as X, useEffect as Y, useMemo as Z } from "react";
5
+ import { createPortal as $ } from "react-dom";
6
+ import { CheckIcon as p } from "../../icons/CheckIcon.js";
7
+ import { SearchIcon as C } from "../../icons/SearchIcon.js";
8
+ import { useAsheeConfig as g } from "../../libs/context.js";
9
+ import { resolveCascade as d, resolveRadiusKey as P } from "../../utils/resolve-token.js";
10
+ import { Button as tt } from "../button/Button.js";
11
+ import { Input as et } from "../input/Input.js";
12
+ import { FALLBACK_SELECT_MENU_CONFIG as o } from "./select-menu-config.js";
13
+ import { cn as lt } from "../../utils/cn.js";
14
+ const rt = ({
15
+ isOpen: s,
16
+ context: z,
17
+ floatingStyles: V,
18
+ getFloatingProps: m,
19
+ setFloatingRef: A,
20
+ options: v = [],
21
+ selectedValues: F = [],
22
+ onSelectMenuOption: L,
23
+ isSearch: y = !0,
24
24
  searchPlaceholder: M = "Search...",
25
- searchInputName: L = "select-menu-search",
25
+ searchInputName: E = "select-menu-search",
26
26
  searchQuery: Q,
27
27
  onSearchChange: b,
28
28
  belowList: h,
29
29
  dropdownClassName: j,
30
30
  menuConfig: t,
31
31
  menuProps: e,
32
- renderOption: x,
33
- initialFocus: E,
34
- returnFocus: K,
35
- portal: R = !0,
36
- portalTarget: _
32
+ renderOption: f,
33
+ initialFocus: K,
34
+ returnFocus: R,
35
+ portal: _ = !0,
36
+ portalTarget: B
37
37
  }) => {
38
- const d = $(), [B, O] = J(""), o = Q ?? B, T = (r) => {
39
- b ? b(r) : O(r);
40
- }, f = W(() => !v || !o.trim() ? s : s.filter(
41
- (r) => r.label.toLowerCase().includes(o.toLowerCase())
42
- ), [s, v, o]), D = (r) => A.includes(r), G = c(
38
+ const c = g(), [T, D] = X(""), i = Q ?? T, G = (l) => {
39
+ b ? b(l) : D(l);
40
+ }, n = d(
41
+ e == null ? void 0 : e.lockScroll,
42
+ t == null ? void 0 : t.lockScroll,
43
+ void 0,
44
+ o.lockScroll
45
+ );
46
+ Y(() => {
47
+ if (!s || !n) return;
48
+ const l = document.body.style.overflow, a = document.body.style.position, H = document.body.style.width;
49
+ return document.body.style.overflow = "hidden", document.body.style.position = "fixed", document.body.style.width = "100%", () => {
50
+ document.body.style.overflow = l, document.body.style.position = a, document.body.style.width = H;
51
+ };
52
+ }, [s, n]);
53
+ const x = Z(() => !y || !i.trim() ? v : v.filter(
54
+ (l) => l.label.toLowerCase().includes(i.toLowerCase())
55
+ ), [v, y, i]), O = (l) => F.includes(l), U = d(
43
56
  e == null ? void 0 : e.itemVariant,
44
57
  t == null ? void 0 : t.itemVariant,
45
58
  void 0,
46
- l.itemVariant
47
- ), y = c(
59
+ o.itemVariant
60
+ ), w = d(
48
61
  e == null ? void 0 : e.itemColor,
49
62
  t == null ? void 0 : t.itemColor,
50
- d.defaultColor,
51
- l.itemColor
52
- ), U = c(
63
+ c.defaultColor,
64
+ o.itemColor
65
+ ), W = d(
53
66
  e == null ? void 0 : e.activeItemVariant,
54
67
  t == null ? void 0 : t.activeItemVariant,
55
- d.defaultVariant,
56
- l.activeItemVariant
57
- ), q = c(
68
+ c.defaultVariant,
69
+ o.activeItemVariant
70
+ ), q = d(
58
71
  e == null ? void 0 : e.activeItemColor,
59
72
  t == null ? void 0 : t.activeItemColor,
60
- d.defaultColor,
61
- l.activeItemColor
62
- ), I = p(
73
+ c.defaultColor,
74
+ o.activeItemColor
75
+ ), I = P(
63
76
  e == null ? void 0 : e.radius,
64
77
  t == null ? void 0 : t.radius,
65
- d.defaultRadius,
66
- l.radius
67
- ), N = c(
78
+ c.defaultRadius,
79
+ o.radius
80
+ ), N = d(
68
81
  e == null ? void 0 : e.size,
69
82
  t == null ? void 0 : t.size,
70
83
  void 0,
71
- l.size
72
- ), n = _ ?? (typeof document < "u" ? document.body : null);
73
- if (!V) return null;
74
- const w = /* @__PURE__ */ a(
75
- H,
84
+ o.size
85
+ ), S = B ?? (typeof document < "u" ? document.body : null);
86
+ if (!s) return null;
87
+ const k = /* @__PURE__ */ r(
88
+ J,
76
89
  {
77
- context: m,
90
+ context: z,
78
91
  modal: !1,
79
- initialFocus: E,
80
- returnFocus: K,
81
- children: /* @__PURE__ */ a(
92
+ initialFocus: K,
93
+ returnFocus: R,
94
+ children: /* @__PURE__ */ r(
82
95
  "div",
83
96
  {
84
- ref: k,
85
- style: { ...u, zIndex: 999999 },
97
+ ref: A,
98
+ style: { ...V, zIndex: 999999 },
86
99
  className: "w-full outline-none",
87
- ...S(),
88
- children: /* @__PURE__ */ z(
100
+ ...m(),
101
+ children: /* @__PURE__ */ u(
89
102
  "div",
90
103
  {
91
- className: P(
92
- "max-h-60 shadow-xl bg-background border border-border p-1 flex flex-col gap-0.5 overflow-y-auto scrollbar-hide",
104
+ className: lt(
105
+ "max-h-60 shadow-xl bg-background border border-border p-1 flex flex-col gap-0.5 overflow-y-auto scrollable-hidden",
93
106
  "animate-in fade-in-0 zoom-in-95 slide-in-from-top-1 duration-150 ease-out",
94
107
  j
95
108
  ),
96
109
  children: [
97
- v && /* @__PURE__ */ a("div", { className: "w-full p-1 mb-1 sticky top-0 z-10 border-b border-border", children: /* @__PURE__ */ a(
98
- g,
110
+ y && /* @__PURE__ */ r("div", { className: "w-full p-1 mb-1 sticky top-0 z-10 border-b border-border", children: /* @__PURE__ */ r(
111
+ et,
99
112
  {
100
- name: L,
113
+ name: E,
101
114
  type: "text",
102
115
  variant: "bordered",
103
116
  radius: I,
104
- color: y,
117
+ color: w,
105
118
  size: N,
106
- value: o,
107
- onChange: (r) => T(r.target.value),
108
- startContent: /* @__PURE__ */ a(Z, { className: "w-3.5 h-3.5 text-foreground/70" }),
119
+ value: i,
120
+ onChange: (l) => G(l.target.value),
121
+ startContent: /* @__PURE__ */ r(C, { className: "w-3.5 h-3.5 text-foreground/70" }),
109
122
  placeholder: M,
110
123
  autoFocus: !0,
111
124
  className: "w-full pl-8 h-8 text-xs bg-secondary/30 border-none focus-visible:ring-0"
112
125
  }
113
126
  ) }),
114
- f.length === 0 ? /* @__PURE__ */ a("div", { className: "px-3 py-4 text-xs text-foreground/70 text-center", children: "No options found" }) : f.map((r) => {
115
- const i = D(r.value);
116
- return x ? x(r, i) : /* @__PURE__ */ z(
117
- C,
127
+ x.length === 0 ? /* @__PURE__ */ r("div", { className: "px-3 py-4 text-xs text-foreground/70 text-center", children: "No options found" }) : x.map((l) => {
128
+ const a = O(l.value);
129
+ return f ? f(l, a) : /* @__PURE__ */ u(
130
+ tt,
118
131
  {
119
- variant: i ? U : G,
120
- color: i ? q : y,
132
+ variant: a ? W : U,
133
+ color: a ? q : w,
121
134
  radius: I,
122
135
  size: N,
123
- isDisabled: r.disabled,
124
- onClick: () => F(r),
136
+ isDisabled: l.disabled,
137
+ onClick: () => L(l),
125
138
  className: "w-full justify-between font-normal text-left transition-colors truncate",
126
139
  children: [
127
- /* @__PURE__ */ a("span", { children: r.label }),
128
- i && /* @__PURE__ */ a(Y, { className: "w-3.5 h-3.5 shrink-0 ml-2" })
140
+ /* @__PURE__ */ r("span", { children: l.label }),
141
+ a && /* @__PURE__ */ r(p, { className: "w-3.5 h-3.5 shrink-0 ml-2" })
129
142
  ]
130
143
  },
131
- String(r.value)
144
+ String(l.value)
132
145
  );
133
146
  }),
134
- h && /* @__PURE__ */ a("div", { className: "border-t border-border pt-1 mt-1", children: h })
147
+ h && /* @__PURE__ */ r("div", { className: "border-t border-border pt-1 mt-1", children: h })
135
148
  ]
136
149
  }
137
150
  )
@@ -139,9 +152,9 @@ const tt = ({
139
152
  )
140
153
  }
141
154
  );
142
- return R && n ? X(w, n) : w;
155
+ return _ && S ? $(k, S) : k;
143
156
  };
144
- tt.displayName = "SelectMenu";
157
+ rt.displayName = "SelectMenu";
145
158
  export {
146
- tt as SelectMenu
159
+ rt as SelectMenu
147
160
  };
@@ -72,6 +72,14 @@ export interface SelectMenuConfig {
72
72
  * @default "primary"
73
73
  */
74
74
  activeItemColor?: Color;
75
+ /**
76
+ * Whether to lock body scroll when the dropdown is open.
77
+ * When true, the page behind the dropdown cannot scroll.
78
+ * This prevents the page from scrolling while interacting with the dropdown.
79
+ *
80
+ * @default false
81
+ */
82
+ lockScroll?: boolean;
75
83
  }
76
84
  /**
77
85
  * Hard fallback values used when no config tier provides a value.
@@ -1 +1 @@
1
- {"version":3,"file":"select-menu-config.d.ts","sourceRoot":"","sources":["../../../src/components/select-menu/select-menu-config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEjE;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAEvB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,IAAI,CAAC;IAEZ;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC;IAElB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;;;;OAKG;IACH,eAAe,CAAC,EAAE,KAAK,CAAC;CACzB;AAED;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,EAAE,QAAQ,CAAC,gBAAgB,CAOlE,CAAC"}
1
+ {"version":3,"file":"select-menu-config.d.ts","sourceRoot":"","sources":["../../../src/components/select-menu/select-menu-config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEjE;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAEvB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,IAAI,CAAC;IAEZ;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC;IAElB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;;;;OAKG;IACH,eAAe,CAAC,EAAE,KAAK,CAAC;IAExB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,EAAE,QAAQ,CAAC,gBAAgB,CAQlE,CAAC"}
@@ -1,12 +1,13 @@
1
1
  "use client";
2
- const t = {
2
+ const e = {
3
3
  radius: "md",
4
4
  size: "md",
5
5
  itemVariant: "ghost",
6
6
  itemColor: "primary",
7
7
  activeItemVariant: "faded",
8
- activeItemColor: "primary"
8
+ activeItemColor: "primary",
9
+ lockScroll: !1
9
10
  };
10
11
  export {
11
- t as FALLBACK_SELECT_MENU_CONFIG
12
+ e as FALLBACK_SELECT_MENU_CONFIG
12
13
  };
@@ -275,7 +275,7 @@ function Ge({
275
275
  "nav",
276
276
  {
277
277
  className: i(
278
- "flex-1 overflow-y-auto py-3 px-2 flex flex-col gap-3 scrollbar-hide",
278
+ "flex-1 overflow-y-auto py-3 px-2 flex flex-col gap-3 scrollable-hidden",
279
279
  ee
280
280
  ),
281
281
  children: Ae.map(_e)
@@ -138,7 +138,7 @@ const pe = ae(
138
138
  role: "tablist",
139
139
  "aria-orientation": "horizontal",
140
140
  className: g(
141
- "flex flex-row w-full items-center overflow-x-auto scrollbar-hide shrink-0",
141
+ "flex flex-row w-full items-center overflow-x-auto scrollable-hidden shrink-0",
142
142
  le,
143
143
  v !== "underline" && ie,
144
144
  F
package/dist/index.css CHANGED
@@ -108,14 +108,36 @@
108
108
  /**
109
109
  * Utility class to hide scrollbars while maintaining scrollability.
110
110
  */
111
- .scrollbar-hide::-webkit-scrollbar {
111
+ .scrollable-hidden::-webkit-scrollbar {
112
112
  display: none;
113
113
  }
114
- .scrollbar-hide {
114
+ .scrollable-hidden {
115
115
  -ms-overflow-style: none;
116
116
  scrollbar-width: none;
117
117
  }
118
118
 
119
+ /**
120
+ * Utility class to hide scrollbars completely and eliminate scrollbar spacing
121
+ * across all browsers while preserving scrollability.
122
+ */
123
+ .scrollbar-hide {
124
+ scrollbar-width: none;
125
+ -ms-overflow-style: none;
126
+ scrollbar-gutter: auto;
127
+ }
128
+
129
+ .scrollbar-hide::-webkit-scrollbar {
130
+ display: none;
131
+ width: 0;
132
+ height: 0;
133
+ }
134
+
135
+ .scrollbar-hide::-webkit-scrollbar-track,
136
+ .scrollbar-hide::-webkit-scrollbar-thumb {
137
+ background: transparent;
138
+ border: none;
139
+ }
140
+
119
141
  /* ─── Modal Animations ────────────────────────────────────────────────────── */
120
142
 
121
143
  @keyframes modalPopIn {
package/dist/index.d.ts CHANGED
@@ -36,6 +36,7 @@ export * from './components/multi-select';
36
36
  export * from './components/radio';
37
37
  export * from './components/resizable-screen';
38
38
  export * from './components/select';
39
+ export type { SelectMenuOption } from './components/select-menu';
39
40
  export * from './components/sidebar';
40
41
  export * from './components/spinner';
41
42
  export * from './components/switch';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;;GAGG;AACH,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AAErC;;;GAGG;AACH,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAE7D;;;GAGG;AACH,YAAY,EACV,kBAAkB,EAClB,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,SAAS,GACV,MAAM,eAAe,CAAC;AAEvB;;;GAGG;AACH,OAAO,EACL,iBAAiB,EACjB,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;;GAGG;AACH,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC;AACpC,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AAErC;;;GAGG;AACH,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAE7D;;;GAGG;AACH,YAAY,EACV,kBAAkB,EAClB,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,SAAS,GACV,MAAM,eAAe,CAAC;AAEvB;;;GAGG;AACH,OAAO,EACL,iBAAiB,EACjB,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "asheeui",
3
- "version": "0.6.7",
3
+ "version": "0.6.8",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",