@neut/ui 0.0.1 → 0.0.2

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 (35) hide show
  1. package/README.md +7 -6
  2. package/dist/components/accordion/Accordion/Accordion.context.d.ts +9 -10
  3. package/dist/components/accordion/Accordion/Accordion.context.js +21 -25
  4. package/dist/components/accordion/Accordion/Accordion.d.ts +1 -1
  5. package/dist/components/accordion/Accordion/Accordion.js +22 -20
  6. package/dist/components/accordion/Accordion/Accordion.types.d.ts +8 -7
  7. package/dist/components/accordion/Accordion/index.d.ts +2 -0
  8. package/dist/components/accordion/Accordion/useAccordion.d.ts +3 -0
  9. package/dist/components/accordion/Accordion/useAccordion.js +32 -0
  10. package/dist/components/accordion/AccordionContent/AccordionContent.js +22 -31
  11. package/dist/components/accordion/AccordionItem/AccordionItem.context.d.ts +5 -7
  12. package/dist/components/accordion/AccordionItem/AccordionItem.context.js +4 -20
  13. package/dist/components/accordion/AccordionItem/AccordionItem.d.ts +1 -1
  14. package/dist/components/accordion/AccordionItem/AccordionItem.js +17 -18
  15. package/dist/components/accordion/AccordionItem/AccordionItem.types.d.ts +4 -3
  16. package/dist/components/accordion/AccordionTrigger/AccordionTrigger.js +15 -20
  17. package/dist/components/scroll-area/ScrollArea/ScrollArea.context.d.ts +1 -1
  18. package/dist/components/scroll-area/ScrollArea/ScrollArea.js +29 -29
  19. package/dist/components/sidebar/SidebarMenuButton/SidebarMenuButton.styles.js +6 -5
  20. package/dist/components/sidebar/SidebarMenuButton/SidebarMenuButton.types.d.ts +1 -1
  21. package/dist/components/tooltip/TooltipContent/TooltipContent.js +8 -8
  22. package/dist/components/tooltip/TooltipContent/useTooltipContent.js +28 -28
  23. package/dist/components/tooltip/TooltipTrigger/TooltipTrigger.d.ts +2 -2
  24. package/dist/components/tooltip/TooltipTrigger/TooltipTrigger.js +1 -1
  25. package/dist/components/tooltip/TooltipTrigger/useTooltipTrigger.js +11 -10
  26. package/dist/hooks/index.d.ts +1 -0
  27. package/dist/hooks/useFontLoader.d.ts +86 -0
  28. package/dist/hooks/useFontLoader.js +87 -0
  29. package/dist/index.d.ts +1 -0
  30. package/dist/index.js +3 -1
  31. package/dist/ui.css +3 -0
  32. package/package.json +8 -8
  33. package/dist/styles/animate.css +0 -250
  34. package/dist/styles/index.css +0 -100
  35. package/dist/styles/toast.css +0 -745
package/README.md CHANGED
@@ -36,8 +36,7 @@
36
36
 
37
37
  ```css
38
38
  @import "tailwindcss";
39
- @import "./styles/animate.css";
40
- @import "./styles/toast.css";
39
+ @import "../node_modules/@neut/ui/dist/ui.css";
41
40
  ```
42
41
 
43
42
  除了样式文件外,还需要安装样式合并依赖`tailwind-merge`及样式定义依赖`class-variance-authority`:
@@ -79,26 +78,28 @@ bun i lucide-solid
79
78
  本组件库也支持作为依赖安装:
80
79
 
81
80
  ```bash
82
- bun i @dome/ui
81
+ bun i @neut/ui
83
82
  ```
84
83
 
85
84
  安装后需要在根样式文件中导入样式及注册样式资源:
86
85
 
87
86
  ```css
88
- @import "../node_modules/@dome/ui/dist/styles/index.css";
89
- @source "../node_modules/@dome/ui/dist";
87
+ @import "../node_modules/@neut/ui/dist/styles/index.css";
88
+ @source "../node_modules/@neut/ui/dist";
90
89
  ```
91
90
 
92
91
  然后即可如同其他组件库一样导入并使用组件:
93
92
 
94
93
  ```tsx
95
- import { Button } from "@dome/ui";
94
+ import { Button } from "@neut/ui";
96
95
 
97
96
  const App = () => {
98
97
  return <Button>Click me</Button>;
99
98
  };
100
99
  ```
101
100
 
101
+ 组件库的安装可以参考示例:https://github.com/thep0y/neut/tree/main/example
102
+
102
103
  ## 参考项目
103
104
 
104
105
  - shadcn: https://ui.shadcn.com/docs/installation
@@ -1,17 +1,16 @@
1
1
  import { ParentProps } from 'solid-js';
2
- interface AccordionContextValue<T> {
2
+ import { AccordionValue } from './Accordion.types';
3
+ interface AccordionContextValue {
3
4
  orientation: "horizontal" | "vertical";
4
- isOpen: (index: number) => boolean;
5
- toggle: (index: number) => void;
6
- registerItem: (value?: T) => number;
7
- unregisterItem: (index: number) => void;
5
+ isOpen: (value: string | number) => boolean;
6
+ toggle: (value: string | number) => void;
8
7
  }
9
- export declare function AccordionProvider<T>(props: ParentProps & {
8
+ export declare function AccordionProvider(props: ParentProps & {
10
9
  orientation: "horizontal" | "vertical";
11
- defaultValue?: T[];
12
- value?: T[];
10
+ defaultValue?: AccordionValue[];
11
+ value?: AccordionValue[];
13
12
  multiple?: boolean;
14
- onValueChange?: (value: T[]) => void;
13
+ onValueChange?: (value: (string | number)[]) => void;
15
14
  }): import("solid-js").JSX.Element;
16
- export declare const useAccordionContext: <T extends string | number>() => AccordionContextValue<T>;
15
+ export declare const useAccordionContext: () => AccordionContextValue;
17
16
  export {};
@@ -4,32 +4,28 @@ import { createStore as r, produce as i } from "solid-js/store";
4
4
  //#region src/components/accordion/Accordion/Accordion.context.tsx
5
5
  var a = t();
6
6
  function o(t) {
7
- let [n, o] = r([]), s = (e) => {
8
- let r = Symbol(), i = e === void 0 ? !1 : (t.defaultValue ?? []).includes(e), a = n.length;
9
- return o(n.length, {
10
- id: r,
11
- value: e,
12
- isOpen: i
13
- }), a;
14
- }, c = (e) => n[e].isOpen ?? !1, l = (e) => {
15
- o((t) => t.filter((t, n) => n !== e));
16
- }, u = (e) => {
17
- t.multiple ? o(e, "isOpen", (e) => !e) : o(i((n) => {
18
- let r = n[e], i = !r.isOpen;
19
- r.isOpen = i, i && n.forEach((t, n) => {
20
- n !== e && (t.isOpen = !1);
21
- }), t.onValueChange?.(n.filter((e) => e.isOpen && e.value).map(({ value: e }) => e));
22
- }));
23
- };
7
+ let [n, o] = r((t.defaultValue ?? []).reduce((e, t) => (e[String(t)] = t, e), {}));
24
8
  return e(a.Provider, {
25
- get value() {
26
- return {
27
- orientation: t.orientation,
28
- isOpen: c,
29
- toggle: u,
30
- registerItem: s,
31
- unregisterItem: l
32
- };
9
+ value: {
10
+ get orientation() {
11
+ return t.orientation;
12
+ },
13
+ isOpen: (e) => t.value ? t.value.includes(e) : n[String(e)] !== void 0,
14
+ toggle: (e) => {
15
+ if (t.value) {
16
+ let n = t.value, r = n.includes(e) ? n.filter((t) => t !== e) : t.multiple ? [...n, e] : [e];
17
+ t.onValueChange?.(r);
18
+ return;
19
+ }
20
+ let r = String(e);
21
+ t.multiple ? o(r, (t) => t === void 0 ? e : void 0) : o(i((t) => {
22
+ let n = t[r] !== void 0;
23
+ for (let e in t) t[e] = void 0;
24
+ n || (t[r] = e);
25
+ }));
26
+ let a = Object.values(n).filter((e) => e !== void 0);
27
+ t.onValueChange?.(a);
28
+ }
33
29
  },
34
30
  get children() {
35
31
  return t.children;
@@ -1,2 +1,2 @@
1
1
  import { AccordionProps } from './Accordion.types';
2
- export declare const Accordion: <T extends string | number>(props: AccordionProps<T>) => import("solid-js").JSX.Element;
2
+ export declare const Accordion: (props: AccordionProps) => import("solid-js").JSX.Element;
@@ -1,10 +1,11 @@
1
1
  import { clsx as e } from "../../../lib/utils/clsx.js";
2
2
  import { AccordionProvider as t } from "./Accordion.context.js";
3
- import { createComponent as n, insert as r, mergeProps as i, spread as a, template as o } from "solid-js/web";
4
- import { mergeProps as s, splitProps as c } from "solid-js";
3
+ import { useAccordion as n } from "./useAccordion.js";
4
+ import { addEventListener as r, createComponent as i, delegateEvents as a, insert as o, mergeProps as s, spread as c, template as l } from "solid-js/web";
5
+ import { mergeProps as u, splitProps as d } from "solid-js";
5
6
  //#region src/components/accordion/Accordion/Accordion.tsx
6
- var l = /* @__PURE__ */ o("<section data-slot=accordion>"), u = (o) => {
7
- let [u, d] = c(s({
7
+ var f = /* @__PURE__ */ l("<section data-slot=accordion>"), p = (a) => {
8
+ let [l, p] = d(u({
8
9
  hiddenUntilFound: !1,
9
10
  loopFocus: !0,
10
11
  multiple: !1,
@@ -12,7 +13,7 @@ var l = /* @__PURE__ */ o("<section data-slot=accordion>"), u = (o) => {
12
13
  orientation: "vertical",
13
14
  keepMounted: !1,
14
15
  dir: "ltr"
15
- }, o), [
16
+ }, a), [
16
17
  "defaultValue",
17
18
  "value",
18
19
  "onValueChange",
@@ -26,40 +27,41 @@ var l = /* @__PURE__ */ o("<section data-slot=accordion>"), u = (o) => {
26
27
  "keepMounted",
27
28
  "dir",
28
29
  "children"
29
- ]);
30
+ ]), { handleKeyDown: m } = n();
30
31
  return (() => {
31
- var s = l();
32
- return a(s, i({
32
+ var n = f();
33
+ return r(n, "keydown", m, !0), c(n, s({
33
34
  get class() {
34
- return e("flex", "w-full", "flex-col", "max-w-lg", u.class);
35
+ return e("flex", "w-full", "flex-col", "max-w-lg", l.class);
35
36
  },
36
37
  get "data-orientation"() {
37
- return u.orientation;
38
+ return l.orientation;
38
39
  },
39
40
  get dir() {
40
- return u.dir;
41
+ return l.dir;
41
42
  }
42
- }, d), !1, !0), r(s, n(t, {
43
+ }, p), !1, !0), o(n, i(t, {
43
44
  get orientation() {
44
- return u.orientation;
45
+ return l.orientation;
45
46
  },
46
47
  get defaultValue() {
47
- return o.defaultValue;
48
+ return a.defaultValue;
48
49
  },
49
50
  get value() {
50
- return o.value;
51
+ return a.value;
51
52
  },
52
53
  get multiple() {
53
- return o.multiple;
54
+ return a.multiple;
54
55
  },
55
56
  get onValueChange() {
56
- return o.onValueChange;
57
+ return a.onValueChange;
57
58
  },
58
59
  get children() {
59
- return u.children;
60
+ return l.children;
60
61
  }
61
- })), s;
62
+ })), n;
62
63
  })();
63
64
  };
65
+ a(["keydown"]);
64
66
  //#endregion
65
- export { u as Accordion };
67
+ export { p as Accordion };
@@ -1,8 +1,9 @@
1
1
  import { BaseProps, PolymorphicProps } from '../../../types';
2
- interface BaseAccordionProps<T> extends BaseProps {
3
- defaultValue?: T[];
4
- value?: T[];
5
- onValueChange?: (value: T[]) => void;
2
+ export type AccordionValue = string | number;
3
+ interface BaseAccordionProps extends BaseProps {
4
+ defaultValue?: AccordionValue[];
5
+ value?: AccordionValue[];
6
+ onValueChange?: (value: AccordionValue[]) => void;
6
7
  hiddenUntilFound?: boolean;
7
8
  loopFocus?: boolean;
8
9
  multiple?: boolean;
@@ -10,10 +11,10 @@ interface BaseAccordionProps<T> extends BaseProps {
10
11
  orientation?: "horizontal" | "vertical";
11
12
  keepMounted?: boolean;
12
13
  }
13
- export type AccordionProps<T> = PolymorphicProps<"section", BaseAccordionProps<T>, false>;
14
- export interface ItemEntry<T> {
14
+ export type AccordionProps = PolymorphicProps<"section", BaseAccordionProps, false>;
15
+ export interface ItemEntry {
15
16
  id: symbol;
16
- value?: T;
17
+ value?: AccordionValue;
17
18
  isOpen: boolean;
18
19
  }
19
20
  export {};
@@ -1 +1,3 @@
1
1
  export { Accordion } from './Accordion';
2
+ export * from './Accordion.types';
3
+ export * from './Accordion.context';
@@ -0,0 +1,3 @@
1
+ export declare const useAccordion: () => {
2
+ handleKeyDown: (e: KeyboardEvent) => void;
3
+ };
@@ -0,0 +1,32 @@
1
+ //#region src/components/accordion/Accordion/useAccordion.ts
2
+ var e = () => ({ handleKeyDown: (e) => {
3
+ if (![
4
+ "ArrowDown",
5
+ "ArrowUp",
6
+ "Home",
7
+ "End"
8
+ ].includes(e.key)) return;
9
+ let t = document.activeElement;
10
+ if (!t || t.getAttribute("data-accordion-trigger") === null) return;
11
+ e.preventDefault();
12
+ let n = e.currentTarget, r = Array.from(n.querySelectorAll("[data-accordion-trigger]:not([disabled])")), i = r.indexOf(t);
13
+ if (i === -1) return;
14
+ let a = i;
15
+ switch (e.key) {
16
+ case "ArrowDown":
17
+ a = (i + 1) % r.length;
18
+ break;
19
+ case "ArrowUp":
20
+ a = (i - 1 + r.length) % r.length;
21
+ break;
22
+ case "Home":
23
+ a = 0;
24
+ break;
25
+ case "End":
26
+ a = r.length - 1;
27
+ break;
28
+ }
29
+ r[a]?.focus();
30
+ } });
31
+ //#endregion
32
+ export { e as useAccordion };
@@ -2,52 +2,43 @@ import { clsx as e } from "../../../lib/utils/clsx.js";
2
2
  import { useAccordionContext as t } from "../Accordion/Accordion.context.js";
3
3
  import { useAccordionItemContext as n } from "../AccordionItem/AccordionItem.context.js";
4
4
  import { className as r, createComponent as i, effect as a, insert as o, mergeProps as s, setAttribute as c, spread as l, template as u, use as d } from "solid-js/web";
5
- import { Show as f, createEffect as p, createSignal as m, onCleanup as h, splitProps as g } from "solid-js";
5
+ import { Show as f, createEffect as p, createSignal as m, on as h, splitProps as g, untrack as _ } from "solid-js";
6
6
  //#region src/components/accordion/AccordionContent/AccordionContent.tsx
7
- var _ = /* @__PURE__ */ u("<div class=\"overflow-hidden text-sm data-open:animate-accordion-down data-closed:animate-accordion-up\"data-slot=accordion-content><div>"), v = (u) => {
8
- let { orientation: v } = t(), { index: y, open: b } = n(), [x, S] = g(u, [
7
+ var v = /* @__PURE__ */ u("<div role=region class=\"overflow-hidden text-sm data-[open=true]:animate-accordion-down data-[open=false]:animate-accordion-up\"data-slot=accordion-content><div>"), y = (u) => {
8
+ let { orientation: y } = t(), { triggerId: b, open: x, contentId: S } = n(), [C, w] = g(u, [
9
9
  "hiddenUntilFound",
10
10
  "keepMounted",
11
11
  "class",
12
12
  "classList",
13
13
  "children",
14
14
  "style"
15
- ]), [C, w] = m(b()), [T, E] = m(null), D, O;
16
- return p(() => {
17
- b() && w(!0);
18
- }), p(() => {
19
- if (C() && D) {
20
- let e = D.scrollHeight;
21
- E(e);
22
- }
23
- }), p(() => {
24
- if (!b() && O) {
25
- let e = O, t = (e) => {
26
- e.animationName === "accordion-up" && (w(!1), E(null));
27
- };
28
- e.addEventListener("animationend", t), h(() => e.removeEventListener("animationend", t));
29
- }
30
- }), i(f, {
15
+ ]), [T, E] = m(_(x)), [D, O] = m(null), k;
16
+ p(h(x, (e) => {
17
+ e && E(!0);
18
+ })), p(() => {
19
+ T() && k && O(k.scrollHeight);
20
+ });
21
+ let A = (e) => {
22
+ !x() && e.animationName === "accordion-up" && (E(!1), O(null));
23
+ };
24
+ return i(f, {
31
25
  get when() {
32
- return C();
26
+ return T();
33
27
  },
34
28
  get children() {
35
- var t = _(), n = t.firstChild, i = O;
36
- typeof i == "function" ? d(i, t) : O = t, c(t, "data-orientation", v), c(t, "data-index", y), l(t, s({
29
+ var t = v(), n = t.firstChild;
30
+ t.addEventListener("animationend", A), c(t, "id", S), c(t, "aria-labelledby", b), c(t, "data-orientation", y), l(t, s({
37
31
  get "data-open"() {
38
- return b() ? "" : null;
39
- },
40
- get "data-closed"() {
41
- return b() ? null : "";
32
+ return x() ? "true" : "false";
42
33
  },
43
34
  get style() {
44
- return { "--accordion-panel-height": T() ? `${T()}px` : "auto" };
35
+ return { "--accordion-panel-height": D() === null ? "auto" : `${D()}px` };
45
36
  }
46
- }, S), !1, !0);
47
- var u = D;
48
- return typeof u == "function" ? d(u, n) : D = n, o(n, () => x.children), a(() => r(n, e("pb-2.5 pt-0 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4", x.class))), t;
37
+ }, w), !1, !0);
38
+ var i = k;
39
+ return typeof i == "function" ? d(i, n) : k = n, o(n, () => C.children), a(() => r(n, e("pb-2.5 pt-0 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4", C.class))), t;
49
40
  }
50
41
  });
51
42
  };
52
43
  //#endregion
53
- export { v as AccordionContent };
44
+ export { y as AccordionContent };
@@ -1,13 +1,11 @@
1
- import { ParentProps } from 'solid-js';
1
+ import { AccordionValue } from '../Accordion';
2
2
  interface AccordionItemContextValue {
3
- index: number;
3
+ value: AccordionValue;
4
+ triggerId: string;
5
+ contentId: string;
4
6
  open: () => boolean;
5
7
  disabled?: boolean;
6
8
  }
7
- export declare function AccordionItemProvider(props: ParentProps & {
8
- index: number;
9
- open: () => boolean;
10
- disabled?: boolean;
11
- }): import("solid-js").JSX.Element;
9
+ export declare const AccordionItemContext: import('solid-js').Context<AccordionItemContextValue | undefined>;
12
10
  export declare const useAccordionItemContext: () => AccordionItemContextValue;
13
11
  export {};
@@ -1,25 +1,9 @@
1
- import { createComponent as e } from "solid-js/web";
2
- import { createContext as t, useContext as n } from "solid-js";
1
+ import { createContext as e, useContext as t } from "solid-js";
3
2
  //#region src/components/accordion/AccordionItem/AccordionItem.context.tsx
4
- var r = t();
5
- function i(t) {
6
- return e(r.Provider, {
7
- get value() {
8
- return {
9
- index: t.index,
10
- open: t.open,
11
- disabled: t.disabled
12
- };
13
- },
14
- get children() {
15
- return t.children;
16
- }
17
- });
18
- }
19
- var a = () => {
20
- let e = n(r);
3
+ var n = e(), r = () => {
4
+ let e = t(n);
21
5
  if (!e) throw Error("useAccordionItemContext must be used in AccordionProvider");
22
6
  return e;
23
7
  };
24
8
  //#endregion
25
- export { i as AccordionItemProvider, a as useAccordionItemContext };
9
+ export { n as AccordionItemContext, r as useAccordionItemContext };
@@ -1,2 +1,2 @@
1
1
  import { AccordionItemProps } from './AccordionItem.types';
2
- export declare const AccordionItem: <T extends string | number>(props: AccordionItemProps<T>) => import("solid-js").JSX.Element;
2
+ export declare const AccordionItem: (props: AccordionItemProps) => import("solid-js").JSX.Element;
@@ -1,43 +1,42 @@
1
1
  import { clsx as e } from "../../../lib/utils/clsx.js";
2
2
  import { useAccordionContext as t } from "../Accordion/Accordion.context.js";
3
- import { AccordionItemProvider as n } from "./AccordionItem.context.js";
3
+ import { AccordionItemContext as n } from "./AccordionItem.context.js";
4
4
  import { createComponent as r, insert as i, mergeProps as a, setAttribute as o, spread as s, template as c } from "solid-js/web";
5
- import { onCleanup as l, splitProps as u } from "solid-js";
5
+ import { createUniqueId as l, splitProps as u } from "solid-js";
6
6
  //#region src/components/accordion/AccordionItem/AccordionItem.tsx
7
7
  var d = /* @__PURE__ */ c("<div data-slot=accordion-item>"), f = (c) => {
8
- let { orientation: f, isOpen: p, registerItem: m, unregisterItem: h } = t(), [g, _] = u(c, [
8
+ let { orientation: f, isOpen: p } = t(), [m, h] = u(c, [
9
9
  "value",
10
10
  "onOpenChange",
11
11
  "disabled",
12
12
  "class",
13
13
  "classList",
14
14
  "children"
15
- ]), v = m(g.value);
16
- l(() => h(v));
17
- let y = () => p(v);
15
+ ]), g = l(), _ = `accordion-trigger-${g}`, v = `accordion-content-${g}`, y = () => m.value ?? g, b = () => p(y());
18
16
  return (() => {
19
17
  var t = d();
20
- return o(t, "data-orientation", f), o(t, "data-index", v), s(t, a({
18
+ return o(t, "data-orientation", f), s(t, a({
21
19
  get class() {
22
- return e("not-last:border-b", g.class);
20
+ return e("not-last:border-b", m.class);
23
21
  },
24
22
  get "data-open"() {
25
- return y() ? "" : null;
26
- },
27
- get "data-closed"() {
28
- return y() ? null : "";
23
+ return b();
29
24
  },
30
25
  get "data-disabled"() {
31
26
  return c.disabled ? "" : null;
32
27
  }
33
- }, _), !1, !0), i(t, r(n, {
34
- index: v,
35
- open: y,
36
- get disabled() {
37
- return c.disabled;
28
+ }, h), !1, !0), i(t, r(n.Provider, {
29
+ get value() {
30
+ return {
31
+ value: y(),
32
+ triggerId: _,
33
+ contentId: v,
34
+ open: b,
35
+ disabled: c.disabled
36
+ };
38
37
  },
39
38
  get children() {
40
- return g.children;
39
+ return m.children;
41
40
  }
42
41
  })), t;
43
42
  })();
@@ -1,8 +1,9 @@
1
1
  import { BaseProps, PolymorphicProps } from '../../../types';
2
- interface BaseAccordionItemProps<T> extends BaseProps {
3
- value?: T;
2
+ import { AccordionValue } from '../Accordion';
3
+ interface BaseAccordionItemProps extends BaseProps {
4
+ value?: AccordionValue;
4
5
  onOpenChange?: (open: boolean) => void;
5
6
  disabled?: boolean;
6
7
  }
7
- export type AccordionItemProps<T> = PolymorphicProps<"div", BaseAccordionItemProps<T>, false>;
8
+ export type AccordionItemProps = PolymorphicProps<"div", BaseAccordionItemProps, false>;
8
9
  export {};
@@ -3,35 +3,30 @@ import { useAccordionContext as t } from "../Accordion/Accordion.context.js";
3
3
  import { useAccordionItemContext as n } from "../AccordionItem/AccordionItem.context.js";
4
4
  import { className as r, createComponent as i, delegateEvents as a, effect as o, insert as s, mergeProps as c, setAttribute as l, spread as u, template as d } from "solid-js/web";
5
5
  import { splitProps as f } from "solid-js";
6
- import { ChevronDown as p, ChevronUp as m } from "lucide-solid";
6
+ import { ChevronDown as p } from "lucide-solid";
7
7
  //#region src/components/accordion/AccordionTrigger/AccordionTrigger.tsx
8
- var h = /* @__PURE__ */ d("<h3 class=flex><button type=button>"), g = (a) => {
9
- let { orientation: d, toggle: g } = t(), { index: _, open: v, disabled: y } = n(), [b, x] = f(a, [
8
+ var m = /* @__PURE__ */ d("<h3 class=flex><button type=button data-accordion-trigger>"), h = (a) => {
9
+ let { orientation: d, toggle: h } = t(), { value: g, open: _, disabled: v, triggerId: y, contentId: b } = n(), [x, S] = f(a, [
10
10
  "nativeButton",
11
11
  "class",
12
12
  "classList",
13
13
  "children"
14
- ]), S = () => {
15
- g(_);
14
+ ]), C = () => {
15
+ v || h(g);
16
16
  };
17
17
  return (() => {
18
- var t = h(), n = t.firstChild;
19
- return l(t, "data-orientation", d), l(t, "data-disabled", y ? "" : null), l(t, "data-index", _), u(t, c({
18
+ var t = m(), n = t.firstChild;
19
+ return l(t, "data-orientation", d), l(t, "data-disabled", v ? "" : null), u(t, c({ get "data-open"() {
20
+ return _();
21
+ } }, S), !1, !0), n.$$click = C, l(n, "id", y), l(n, "aria-controls", b), l(n, "aria-disabled", v), l(n, "data-orientation", d), n.disabled = v, s(n, () => x.children, null), s(n, i(p, {
22
+ class: "pointer-events-none shrink-0 data-[open=true]:-rotate-180 transition-[rotate] duration-200",
23
+ "data-slot": "accordion-trigger-icon",
20
24
  get "data-open"() {
21
- return v() ? "" : null;
22
- },
23
- get "data-closed"() {
24
- return v() ? null : "";
25
+ return _();
25
26
  }
26
- }, x), !1, !0), n.$$click = S, l(n, "data-orientation", d), l(n, "aria-disabled", y), l(n, "data-index", _), s(n, () => b.children, null), s(n, i(p, {
27
- class: "pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden",
28
- "data-slot": "accordion-trigger-icon"
29
- }), null), s(n, i(m, {
30
- class: "pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline",
31
- "data-slot": "accordion-trigger-icon"
32
27
  }), null), o((t) => {
33
- var i = e("group/accordion-trigger relative flex flex-1 items-start justify-between rounded-lg border border-transparent py-2.5 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:after:border-ring aria-disabled:pointer-events-none aria-disabled:select-none aria-disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-neutral-500 dark:**:data-[slot=accordion-trigger-icon]:text-neutral-400", b.class), a = v() ? "" : null, o = v();
34
- return i !== t.e && r(n, t.e = i), a !== t.t && l(n, "data-panel-open", t.t = a), o !== t.a && l(n, "aria-expanded", t.a = o), t;
28
+ var i = _(), a = e("group/accordion-trigger relative flex flex-1 items-start justify-between rounded-lg border border-transparent py-2.5 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:after:border-ring aria-disabled:pointer-events-none aria-disabled:select-none aria-disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-neutral-500 dark:**:data-[slot=accordion-trigger-icon]:text-neutral-400", x.class), o = _();
29
+ return i !== t.e && l(n, "aria-expanded", t.e = i), a !== t.t && r(n, t.t = a), o !== t.a && l(n, "data-open", t.a = o), t;
35
30
  }, {
36
31
  e: void 0,
37
32
  t: void 0,
@@ -41,4 +36,4 @@ var h = /* @__PURE__ */ d("<h3 class=flex><button type=button>"), g = (a) => {
41
36
  };
42
37
  a(["click"]);
43
38
  //#endregion
44
- export { g as AccordionTrigger };
39
+ export { h as AccordionTrigger };
@@ -2,7 +2,7 @@ import { Accessor, Setter } from 'solid-js';
2
2
  import { ScrollMetrics } from './ScrollArea.types';
3
3
  interface ScrollAreaContextValue {
4
4
  hovering: Accessor<boolean>;
5
- viewportRef: () => HTMLDivElement;
5
+ viewportRef: () => HTMLDivElement | undefined;
6
6
  dragging: Accessor<"vertical" | "horizontal" | null>;
7
7
  setDragging: Setter<"vertical" | "horizontal" | null>;
8
8
  vertical: Accessor<ScrollMetrics>;