@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.
- package/README.md +7 -6
- package/dist/components/accordion/Accordion/Accordion.context.d.ts +9 -10
- package/dist/components/accordion/Accordion/Accordion.context.js +21 -25
- package/dist/components/accordion/Accordion/Accordion.d.ts +1 -1
- package/dist/components/accordion/Accordion/Accordion.js +22 -20
- package/dist/components/accordion/Accordion/Accordion.types.d.ts +8 -7
- package/dist/components/accordion/Accordion/index.d.ts +2 -0
- package/dist/components/accordion/Accordion/useAccordion.d.ts +3 -0
- package/dist/components/accordion/Accordion/useAccordion.js +32 -0
- package/dist/components/accordion/AccordionContent/AccordionContent.js +22 -31
- package/dist/components/accordion/AccordionItem/AccordionItem.context.d.ts +5 -7
- package/dist/components/accordion/AccordionItem/AccordionItem.context.js +4 -20
- package/dist/components/accordion/AccordionItem/AccordionItem.d.ts +1 -1
- package/dist/components/accordion/AccordionItem/AccordionItem.js +17 -18
- package/dist/components/accordion/AccordionItem/AccordionItem.types.d.ts +4 -3
- package/dist/components/accordion/AccordionTrigger/AccordionTrigger.js +15 -20
- package/dist/components/scroll-area/ScrollArea/ScrollArea.context.d.ts +1 -1
- package/dist/components/scroll-area/ScrollArea/ScrollArea.js +29 -29
- package/dist/components/sidebar/SidebarMenuButton/SidebarMenuButton.styles.js +6 -5
- package/dist/components/sidebar/SidebarMenuButton/SidebarMenuButton.types.d.ts +1 -1
- package/dist/components/tooltip/TooltipContent/TooltipContent.js +8 -8
- package/dist/components/tooltip/TooltipContent/useTooltipContent.js +28 -28
- package/dist/components/tooltip/TooltipTrigger/TooltipTrigger.d.ts +2 -2
- package/dist/components/tooltip/TooltipTrigger/TooltipTrigger.js +1 -1
- package/dist/components/tooltip/TooltipTrigger/useTooltipTrigger.js +11 -10
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/useFontLoader.d.ts +86 -0
- package/dist/hooks/useFontLoader.js +87 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +3 -1
- package/dist/ui.css +3 -0
- package/package.json +8 -8
- package/dist/styles/animate.css +0 -250
- package/dist/styles/index.css +0 -100
- 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 "
|
|
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 @
|
|
81
|
+
bun i @neut/ui
|
|
83
82
|
```
|
|
84
83
|
|
|
85
84
|
安装后需要在根样式文件中导入样式及注册样式资源:
|
|
86
85
|
|
|
87
86
|
```css
|
|
88
|
-
@import "../node_modules/@
|
|
89
|
-
@source "../node_modules/@
|
|
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 "@
|
|
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
|
-
|
|
2
|
+
import { AccordionValue } from './Accordion.types';
|
|
3
|
+
interface AccordionContextValue {
|
|
3
4
|
orientation: "horizontal" | "vertical";
|
|
4
|
-
isOpen: (
|
|
5
|
-
toggle: (
|
|
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
|
|
8
|
+
export declare function AccordionProvider(props: ParentProps & {
|
|
10
9
|
orientation: "horizontal" | "vertical";
|
|
11
|
-
defaultValue?:
|
|
12
|
-
value?:
|
|
10
|
+
defaultValue?: AccordionValue[];
|
|
11
|
+
value?: AccordionValue[];
|
|
13
12
|
multiple?: boolean;
|
|
14
|
-
onValueChange?: (value:
|
|
13
|
+
onValueChange?: (value: (string | number)[]) => void;
|
|
15
14
|
}): import("solid-js").JSX.Element;
|
|
16
|
-
export declare const useAccordionContext:
|
|
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([]),
|
|
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
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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:
|
|
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 {
|
|
4
|
-
import { mergeProps as s,
|
|
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
|
|
7
|
-
let [
|
|
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
|
-
},
|
|
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
|
|
32
|
-
return
|
|
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",
|
|
35
|
+
return e("flex", "w-full", "flex-col", "max-w-lg", l.class);
|
|
35
36
|
},
|
|
36
37
|
get "data-orientation"() {
|
|
37
|
-
return
|
|
38
|
+
return l.orientation;
|
|
38
39
|
},
|
|
39
40
|
get dir() {
|
|
40
|
-
return
|
|
41
|
+
return l.dir;
|
|
41
42
|
}
|
|
42
|
-
},
|
|
43
|
+
}, p), !1, !0), o(n, i(t, {
|
|
43
44
|
get orientation() {
|
|
44
|
-
return
|
|
45
|
+
return l.orientation;
|
|
45
46
|
},
|
|
46
47
|
get defaultValue() {
|
|
47
|
-
return
|
|
48
|
+
return a.defaultValue;
|
|
48
49
|
},
|
|
49
50
|
get value() {
|
|
50
|
-
return
|
|
51
|
+
return a.value;
|
|
51
52
|
},
|
|
52
53
|
get multiple() {
|
|
53
|
-
return
|
|
54
|
+
return a.multiple;
|
|
54
55
|
},
|
|
55
56
|
get onValueChange() {
|
|
56
|
-
return
|
|
57
|
+
return a.onValueChange;
|
|
57
58
|
},
|
|
58
59
|
get children() {
|
|
59
|
-
return
|
|
60
|
+
return l.children;
|
|
60
61
|
}
|
|
61
|
-
})),
|
|
62
|
+
})), n;
|
|
62
63
|
})();
|
|
63
64
|
};
|
|
65
|
+
a(["keydown"]);
|
|
64
66
|
//#endregion
|
|
65
|
-
export {
|
|
67
|
+
export { p as Accordion };
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { BaseProps, PolymorphicProps } from '../../../types';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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
|
|
14
|
-
export interface ItemEntry
|
|
14
|
+
export type AccordionProps = PolymorphicProps<"section", BaseAccordionProps, false>;
|
|
15
|
+
export interface ItemEntry {
|
|
15
16
|
id: symbol;
|
|
16
|
-
value?:
|
|
17
|
+
value?: AccordionValue;
|
|
17
18
|
isOpen: boolean;
|
|
18
19
|
}
|
|
19
20
|
export {};
|
|
@@ -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,
|
|
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
|
|
8
|
-
let { orientation:
|
|
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
|
-
]), [
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}), p(() => {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
}
|
|
24
|
-
|
|
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
|
|
26
|
+
return T();
|
|
33
27
|
},
|
|
34
28
|
get children() {
|
|
35
|
-
var t =
|
|
36
|
-
|
|
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
|
|
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":
|
|
35
|
+
return { "--accordion-panel-height": D() === null ? "auto" : `${D()}px` };
|
|
45
36
|
}
|
|
46
|
-
},
|
|
47
|
-
var
|
|
48
|
-
return typeof
|
|
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 {
|
|
44
|
+
export { y as AccordionContent };
|
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AccordionValue } from '../Accordion';
|
|
2
2
|
interface AccordionItemContextValue {
|
|
3
|
-
|
|
3
|
+
value: AccordionValue;
|
|
4
|
+
triggerId: string;
|
|
5
|
+
contentId: string;
|
|
4
6
|
open: () => boolean;
|
|
5
7
|
disabled?: boolean;
|
|
6
8
|
}
|
|
7
|
-
export declare
|
|
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 {
|
|
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 =
|
|
5
|
-
|
|
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 {
|
|
9
|
+
export { n as AccordionItemContext, r as useAccordionItemContext };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { AccordionItemProps } from './AccordionItem.types';
|
|
2
|
-
export declare const AccordionItem:
|
|
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 {
|
|
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 {
|
|
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
|
|
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
|
|
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),
|
|
18
|
+
return o(t, "data-orientation", f), s(t, a({
|
|
21
19
|
get class() {
|
|
22
|
-
return e("not-last:border-b",
|
|
20
|
+
return e("not-last:border-b", m.class);
|
|
23
21
|
},
|
|
24
22
|
get "data-open"() {
|
|
25
|
-
return
|
|
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
|
-
},
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
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
|
|
39
|
+
return m.children;
|
|
41
40
|
}
|
|
42
41
|
})), t;
|
|
43
42
|
})();
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { BaseProps, PolymorphicProps } from '../../../types';
|
|
2
|
-
|
|
3
|
-
|
|
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
|
|
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
|
|
6
|
+
import { ChevronDown as p } from "lucide-solid";
|
|
7
7
|
//#region src/components/accordion/AccordionTrigger/AccordionTrigger.tsx
|
|
8
|
-
var
|
|
9
|
-
let { orientation: d, toggle:
|
|
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
|
-
]),
|
|
15
|
-
g
|
|
14
|
+
]), C = () => {
|
|
15
|
+
v || h(g);
|
|
16
16
|
};
|
|
17
17
|
return (() => {
|
|
18
|
-
var t =
|
|
19
|
-
return l(t, "data-orientation", d), l(t, "data-disabled",
|
|
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
|
|
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",
|
|
34
|
-
return i !== t.e &&
|
|
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 {
|
|
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>;
|