@docubook/ui-react 0.1.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 (80) hide show
  1. package/README.md +126 -0
  2. package/dist/breadcrumbs.cjs +13 -0
  3. package/dist/breadcrumbs.d.cts +19 -0
  4. package/dist/breadcrumbs.d.ts +19 -0
  5. package/dist/breadcrumbs.js +14 -0
  6. package/dist/chunk-42YUT467.cjs +41 -0
  7. package/dist/chunk-4DCBYM74.js +42 -0
  8. package/dist/chunk-54N6HTQV.cjs +49 -0
  9. package/dist/chunk-7HHY2WDF.cjs +43 -0
  10. package/dist/chunk-ACEM5N2Y.cjs +123 -0
  11. package/dist/chunk-BCJ3FW3Y.cjs +66 -0
  12. package/dist/chunk-EJCGJCVK.cjs +89 -0
  13. package/dist/chunk-EN2X23AN.cjs +330 -0
  14. package/dist/chunk-FGJ6EYLA.js +90 -0
  15. package/dist/chunk-HTNZRBKW.js +67 -0
  16. package/dist/chunk-I4CZWV3M.js +124 -0
  17. package/dist/chunk-IBKH77YN.js +50 -0
  18. package/dist/chunk-KHU72DOY.cjs +25 -0
  19. package/dist/chunk-LJV3UIMK.cjs +53 -0
  20. package/dist/chunk-LUO4YXRQ.js +38 -0
  21. package/dist/chunk-NJKWNMJF.js +44 -0
  22. package/dist/chunk-OB6B2KN5.js +54 -0
  23. package/dist/chunk-OKMEBWPL.cjs +133 -0
  24. package/dist/chunk-PB4SHWMJ.cjs +101 -0
  25. package/dist/chunk-Q55KNNKE.js +26 -0
  26. package/dist/chunk-QZH7EIFW.js +134 -0
  27. package/dist/chunk-VRODU4ZV.cjs +37 -0
  28. package/dist/chunk-W5G2ZBYA.js +102 -0
  29. package/dist/chunk-ZMIZV66S.js +331 -0
  30. package/dist/cn.cjs +6 -0
  31. package/dist/cn.d.cts +4 -0
  32. package/dist/cn.d.ts +4 -0
  33. package/dist/cn.js +7 -0
  34. package/dist/collapse.cjs +12 -0
  35. package/dist/collapse.d.cts +31 -0
  36. package/dist/collapse.d.ts +31 -0
  37. package/dist/collapse.js +13 -0
  38. package/dist/drawer.cjs +16 -0
  39. package/dist/drawer.d.cts +44 -0
  40. package/dist/drawer.d.ts +44 -0
  41. package/dist/drawer.js +17 -0
  42. package/dist/dropdown.cjs +12 -0
  43. package/dist/dropdown.d.cts +20 -0
  44. package/dist/dropdown.d.ts +20 -0
  45. package/dist/dropdown.js +13 -0
  46. package/dist/index.cjs +96 -0
  47. package/dist/index.d.cts +15 -0
  48. package/dist/index.d.ts +15 -0
  49. package/dist/index.js +97 -0
  50. package/dist/input.cjs +9 -0
  51. package/dist/input.d.cts +17 -0
  52. package/dist/input.d.ts +17 -0
  53. package/dist/input.js +10 -0
  54. package/dist/kbd.cjs +9 -0
  55. package/dist/kbd.d.cts +27 -0
  56. package/dist/kbd.d.ts +27 -0
  57. package/dist/kbd.js +10 -0
  58. package/dist/modal.cjs +10 -0
  59. package/dist/modal.d.cts +17 -0
  60. package/dist/modal.d.ts +17 -0
  61. package/dist/modal.js +11 -0
  62. package/dist/navbar.cjs +13 -0
  63. package/dist/navbar.d.cts +36 -0
  64. package/dist/navbar.d.ts +36 -0
  65. package/dist/navbar.js +14 -0
  66. package/dist/pagination.cjs +20 -0
  67. package/dist/pagination.d.cts +88 -0
  68. package/dist/pagination.d.ts +88 -0
  69. package/dist/pagination.js +21 -0
  70. package/dist/theme-controller.cjs +8 -0
  71. package/dist/theme-controller.d.cts +21 -0
  72. package/dist/theme-controller.d.ts +21 -0
  73. package/dist/theme-controller.js +9 -0
  74. package/dist/toggle.cjs +10 -0
  75. package/dist/toggle.d.cts +36 -0
  76. package/dist/toggle.d.ts +36 -0
  77. package/dist/toggle.js +11 -0
  78. package/dist/types-BZI5Cv8-.d.cts +6 -0
  79. package/dist/types-BZI5Cv8-.d.ts +6 -0
  80. package/package.json +200 -0
@@ -0,0 +1,53 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunk7HHY2WDFcjs = require('./chunk-7HHY2WDF.cjs');
4
+
5
+ // src/base/navbar.tsx
6
+ var _jsxruntime = require('react/jsx-runtime');
7
+ function Navbar({ id, children, className, style }) {
8
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "nav", { id, className: _chunk7HHY2WDFcjs.cn.call(void 0, "navbar", className), style, children });
9
+ }
10
+ function Logo({ src, alt, text, href = "/", className }) {
11
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "a", { href, className: _chunk7HHY2WDFcjs.cn.call(void 0, "flex items-center gap-2", className), children: [
12
+ src ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "img", { src, alt: alt || text || "Logo", className: "h-8 w-8" }) : null,
13
+ text && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-xl font-bold", children: text })
14
+ ] });
15
+ }
16
+ function NavMenu({ items, activePath, className }) {
17
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "ul", { className: _chunk7HHY2WDFcjs.cn.call(void 0, "menu menu-horizontal gap-1", className), children: items.map((item) => {
18
+ const isActive = activePath ? item.href === "/" ? activePath === "/" : activePath.startsWith(item.href) : false;
19
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "li", { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
20
+ "a",
21
+ {
22
+ href: item.href,
23
+ className: _chunk7HHY2WDFcjs.cn.call(void 0, isActive && "active"),
24
+ target: item.isExternal ? "_blank" : void 0,
25
+ rel: item.isExternal ? "noopener noreferrer" : void 0,
26
+ children: item.title
27
+ }
28
+ ) }, item.href);
29
+ }) });
30
+ }
31
+ function NavMenuLink({
32
+ item,
33
+ isActive,
34
+ className
35
+ }) {
36
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
37
+ "a",
38
+ {
39
+ href: item.href,
40
+ className: _chunk7HHY2WDFcjs.cn.call(void 0, isActive && "active", className),
41
+ target: item.isExternal ? "_blank" : void 0,
42
+ rel: item.isExternal ? "noopener noreferrer" : void 0,
43
+ children: item.title
44
+ }
45
+ );
46
+ }
47
+
48
+
49
+
50
+
51
+
52
+
53
+ exports.Navbar = Navbar; exports.Logo = Logo; exports.NavMenu = NavMenu; exports.NavMenuLink = NavMenuLink;
@@ -0,0 +1,38 @@
1
+ "use client";
2
+ import {
3
+ __objRest,
4
+ __spreadProps,
5
+ __spreadValues,
6
+ cn
7
+ } from "./chunk-NJKWNMJF.js";
8
+
9
+ // src/base/kbd.tsx
10
+ import { forwardRef } from "react";
11
+ import { jsx } from "react/jsx-runtime";
12
+ var Kbd = forwardRef(
13
+ (_a, ref) => {
14
+ var _b = _a, { children, className, size } = _b, props = __objRest(_b, ["children", "className", "size"]);
15
+ return /* @__PURE__ */ jsx("kbd", __spreadProps(__spreadValues({ ref, className: cn("kbd", size && `kbd-${size}`, className) }, props), { children }));
16
+ }
17
+ );
18
+ Kbd.displayName = "Kbd";
19
+ var iconSize = 12;
20
+ var FnKey = {
21
+ Cmd: () => /* @__PURE__ */ jsx("span", { style: { fontSize: iconSize }, children: "\u2318" }),
22
+ Option: () => /* @__PURE__ */ jsx("span", { style: { fontSize: iconSize }, children: "\u2325" }),
23
+ Ctrl: () => /* @__PURE__ */ jsx("span", { style: { fontSize: iconSize }, children: "\u2303" }),
24
+ Shift: () => /* @__PURE__ */ jsx("span", { style: { fontSize: iconSize }, children: "\u21E7" }),
25
+ Esc: () => /* @__PURE__ */ jsx("span", { style: { fontSize: iconSize }, children: "\u238B" }),
26
+ Space: () => /* @__PURE__ */ jsx("span", { style: { fontSize: iconSize }, children: "\u2423" }),
27
+ Delete: () => /* @__PURE__ */ jsx("span", { style: { fontSize: iconSize }, children: "\u232B" }),
28
+ Tab: () => /* @__PURE__ */ jsx("span", { style: { fontSize: iconSize }, children: "\u21E5" }),
29
+ Up: () => /* @__PURE__ */ jsx("span", { style: { fontSize: iconSize }, children: "\u2191" }),
30
+ Down: () => /* @__PURE__ */ jsx("span", { style: { fontSize: iconSize }, children: "\u2193" }),
31
+ Left: () => /* @__PURE__ */ jsx("span", { style: { fontSize: iconSize }, children: "\u2190" }),
32
+ Right: () => /* @__PURE__ */ jsx("span", { style: { fontSize: iconSize }, children: "\u2192" })
33
+ };
34
+
35
+ export {
36
+ Kbd,
37
+ FnKey
38
+ };
@@ -0,0 +1,44 @@
1
+ "use client";
2
+ var __defProp = Object.defineProperty;
3
+ var __defProps = Object.defineProperties;
4
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
5
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
8
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
9
+ var __spreadValues = (a, b) => {
10
+ for (var prop in b || (b = {}))
11
+ if (__hasOwnProp.call(b, prop))
12
+ __defNormalProp(a, prop, b[prop]);
13
+ if (__getOwnPropSymbols)
14
+ for (var prop of __getOwnPropSymbols(b)) {
15
+ if (__propIsEnum.call(b, prop))
16
+ __defNormalProp(a, prop, b[prop]);
17
+ }
18
+ return a;
19
+ };
20
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
21
+ var __objRest = (source, exclude) => {
22
+ var target = {};
23
+ for (var prop in source)
24
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
25
+ target[prop] = source[prop];
26
+ if (source != null && __getOwnPropSymbols)
27
+ for (var prop of __getOwnPropSymbols(source)) {
28
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
29
+ target[prop] = source[prop];
30
+ }
31
+ return target;
32
+ };
33
+
34
+ // src/utils/cn.ts
35
+ function cn(...inputs) {
36
+ return inputs.filter(Boolean).join(" ");
37
+ }
38
+
39
+ export {
40
+ __spreadValues,
41
+ __spreadProps,
42
+ __objRest,
43
+ cn
44
+ };
@@ -0,0 +1,54 @@
1
+ "use client";
2
+ import {
3
+ cn
4
+ } from "./chunk-NJKWNMJF.js";
5
+
6
+ // src/base/navbar.tsx
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ function Navbar({ id, children, className, style }) {
9
+ return /* @__PURE__ */ jsx("nav", { id, className: cn("navbar", className), style, children });
10
+ }
11
+ function Logo({ src, alt, text, href = "/", className }) {
12
+ return /* @__PURE__ */ jsxs("a", { href, className: cn("flex items-center gap-2", className), children: [
13
+ src ? /* @__PURE__ */ jsx("img", { src, alt: alt || text || "Logo", className: "h-8 w-8" }) : null,
14
+ text && /* @__PURE__ */ jsx("span", { className: "text-xl font-bold", children: text })
15
+ ] });
16
+ }
17
+ function NavMenu({ items, activePath, className }) {
18
+ return /* @__PURE__ */ jsx("ul", { className: cn("menu menu-horizontal gap-1", className), children: items.map((item) => {
19
+ const isActive = activePath ? item.href === "/" ? activePath === "/" : activePath.startsWith(item.href) : false;
20
+ return /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(
21
+ "a",
22
+ {
23
+ href: item.href,
24
+ className: cn(isActive && "active"),
25
+ target: item.isExternal ? "_blank" : void 0,
26
+ rel: item.isExternal ? "noopener noreferrer" : void 0,
27
+ children: item.title
28
+ }
29
+ ) }, item.href);
30
+ }) });
31
+ }
32
+ function NavMenuLink({
33
+ item,
34
+ isActive,
35
+ className
36
+ }) {
37
+ return /* @__PURE__ */ jsx(
38
+ "a",
39
+ {
40
+ href: item.href,
41
+ className: cn(isActive && "active", className),
42
+ target: item.isExternal ? "_blank" : void 0,
43
+ rel: item.isExternal ? "noopener noreferrer" : void 0,
44
+ children: item.title
45
+ }
46
+ );
47
+ }
48
+
49
+ export {
50
+ Navbar,
51
+ Logo,
52
+ NavMenu,
53
+ NavMenuLink
54
+ };
@@ -0,0 +1,133 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunk7HHY2WDFcjs = require('./chunk-7HHY2WDF.cjs');
4
+
5
+ // src/base/collapse.tsx
6
+ var _react = require('react');
7
+ var _jsxruntime = require('react/jsx-runtime');
8
+ function Collapse({
9
+ title,
10
+ children,
11
+ defaultOpen = false,
12
+ onOpenChange,
13
+ variant = "arrow",
14
+ className,
15
+ titleClassName,
16
+ contentClassName,
17
+ disabled = false
18
+ }) {
19
+ const [isOpen, setIsOpen] = _react.useState.call(void 0, defaultOpen);
20
+ const handleToggle = () => {
21
+ if (disabled) return;
22
+ const next = !isOpen;
23
+ setIsOpen(next);
24
+ onOpenChange == null ? void 0 : onOpenChange(next);
25
+ };
26
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
27
+ "div",
28
+ {
29
+ className: _chunk7HHY2WDFcjs.cn.call(void 0,
30
+ "bg-base-100 border-base-200 collapse rounded-lg border",
31
+ isOpen && "collapse-open",
32
+ !isOpen && "collapse-close",
33
+ variant === "arrow" ? "collapse-arrow" : "collapse-plus",
34
+ disabled && "cursor-not-allowed opacity-50",
35
+ className
36
+ ),
37
+ children: [
38
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
39
+ "input",
40
+ {
41
+ type: "checkbox",
42
+ checked: isOpen,
43
+ onChange: handleToggle,
44
+ disabled,
45
+ "aria-expanded": isOpen
46
+ }
47
+ ),
48
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
49
+ "div",
50
+ {
51
+ className: _chunk7HHY2WDFcjs.cn.call(void 0,
52
+ "collapse-title text-base-content cursor-pointer font-medium",
53
+ titleClassName
54
+ ),
55
+ onClick: handleToggle,
56
+ role: "button",
57
+ tabIndex: disabled ? -1 : 0,
58
+ onKeyDown: (e) => {
59
+ if (!disabled && (e.key === "Enter" || e.key === " ")) {
60
+ e.preventDefault();
61
+ handleToggle();
62
+ }
63
+ },
64
+ children: title
65
+ }
66
+ ),
67
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk7HHY2WDFcjs.cn.call(void 0, "collapse-content text-base-content/80", contentClassName), children })
68
+ ]
69
+ }
70
+ );
71
+ }
72
+ function Accordion({
73
+ items,
74
+ defaultOpen,
75
+ variant = "arrow",
76
+ className,
77
+ allowMultiple = false
78
+ }) {
79
+ const [openIds, setOpenIds] = _react.useState.call(void 0,
80
+ defaultOpen ? /* @__PURE__ */ new Set([defaultOpen]) : /* @__PURE__ */ new Set()
81
+ );
82
+ const toggle = (id) => {
83
+ setOpenIds((prev) => {
84
+ const next = new Set(prev);
85
+ if (next.has(id)) {
86
+ next.delete(id);
87
+ } else {
88
+ if (!allowMultiple) next.clear();
89
+ next.add(id);
90
+ }
91
+ return next;
92
+ });
93
+ };
94
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk7HHY2WDFcjs.cn.call(void 0, "flex flex-col gap-3", className), children: items.map((item) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
95
+ "div",
96
+ {
97
+ className: _chunk7HHY2WDFcjs.cn.call(void 0,
98
+ "bg-base-100 border-base-200 collapse rounded-lg border",
99
+ openIds.has(item.id) && "collapse-open",
100
+ !openIds.has(item.id) && "collapse-close",
101
+ variant === "arrow" ? "collapse-arrow" : "collapse-plus"
102
+ ),
103
+ children: [
104
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "input", { type: "checkbox", checked: openIds.has(item.id), onChange: () => toggle(item.id) }),
105
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
106
+ "div",
107
+ {
108
+ className: "collapse-title text-base-content cursor-pointer font-medium",
109
+ onClick: () => toggle(item.id),
110
+ role: "button",
111
+ tabIndex: 0,
112
+ onKeyDown: (e) => {
113
+ if (e.key === "Enter" || e.key === " ") {
114
+ e.preventDefault();
115
+ toggle(item.id);
116
+ }
117
+ },
118
+ children: item.title
119
+ }
120
+ ),
121
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "collapse-content text-base-content/80", children: item.content })
122
+ ]
123
+ },
124
+ item.id
125
+ )) });
126
+ }
127
+ var collapse_default = Collapse;
128
+
129
+
130
+
131
+
132
+
133
+ exports.Collapse = Collapse; exports.Accordion = Accordion; exports.collapse_default = collapse_default;
@@ -0,0 +1,101 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunk7HHY2WDFcjs = require('./chunk-7HHY2WDF.cjs');
4
+
5
+ // src/base/drawer.tsx
6
+ var _react = require('react');
7
+ var _jsxruntime = require('react/jsx-runtime');
8
+ function Drawer({
9
+ id,
10
+ children,
11
+ defaultOpen = false,
12
+ side = "left",
13
+ breakpoint = "lg",
14
+ withOverlay = true,
15
+ overlayClassName,
16
+ sideClassName,
17
+ contentClassName,
18
+ className
19
+ }) {
20
+ const [isOpen, setIsOpen] = _react.useState.call(void 0, defaultOpen);
21
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
22
+ "div",
23
+ {
24
+ className: _chunk7HHY2WDFcjs.cn.call(void 0,
25
+ "drawer",
26
+ breakpoint && `${breakpoint}:drawer-open`,
27
+ side === "right" && "drawer-end",
28
+ className
29
+ ),
30
+ children: [
31
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
32
+ "input",
33
+ {
34
+ id,
35
+ type: "checkbox",
36
+ className: "drawer-toggle",
37
+ checked: isOpen,
38
+ onChange: () => setIsOpen(!isOpen),
39
+ "aria-label": "Toggle drawer"
40
+ }
41
+ ),
42
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk7HHY2WDFcjs.cn.call(void 0, "drawer-content flex flex-col", contentClassName), children }),
43
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk7HHY2WDFcjs.cn.call(void 0, "drawer-side", sideClassName), children: withOverlay && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
44
+ "label",
45
+ {
46
+ htmlFor: id,
47
+ "aria-label": "Close sidebar",
48
+ className: _chunk7HHY2WDFcjs.cn.call(void 0, "drawer-overlay", overlayClassName),
49
+ onClick: () => setIsOpen(false)
50
+ }
51
+ ) })
52
+ ]
53
+ }
54
+ );
55
+ }
56
+ function useDrawerState(initialState = false) {
57
+ const [isOpen, setIsOpen] = _react.useState.call(void 0, initialState);
58
+ return {
59
+ isOpen,
60
+ open: () => setIsOpen(true),
61
+ close: () => setIsOpen(false),
62
+ toggle: () => setIsOpen((prev) => !prev)
63
+ };
64
+ }
65
+ function DrawerTrigger({ drawerId, children, className }) {
66
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "label", { htmlFor: drawerId, className: _chunk7HHY2WDFcjs.cn.call(void 0, "label cursor-pointer", className), children });
67
+ }
68
+ function DrawerSidePanel({
69
+ id,
70
+ children,
71
+ side = "left",
72
+ withOverlay = true,
73
+ overlayClassName,
74
+ className
75
+ }) {
76
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk7HHY2WDFcjs.cn.call(void 0, "drawer-side", side === "right" && "drawer-end", className), children: [
77
+ withOverlay && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
78
+ "label",
79
+ {
80
+ htmlFor: id,
81
+ "aria-label": "Close sidebar",
82
+ className: _chunk7HHY2WDFcjs.cn.call(void 0, "drawer-overlay", overlayClassName)
83
+ }
84
+ ),
85
+ children
86
+ ] });
87
+ }
88
+ function DrawerContent({
89
+ children,
90
+ className
91
+ }) {
92
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk7HHY2WDFcjs.cn.call(void 0, "drawer-content", className), children });
93
+ }
94
+
95
+
96
+
97
+
98
+
99
+
100
+
101
+ exports.Drawer = Drawer; exports.useDrawerState = useDrawerState; exports.DrawerTrigger = DrawerTrigger; exports.DrawerSidePanel = DrawerSidePanel; exports.DrawerContent = DrawerContent;
@@ -0,0 +1,26 @@
1
+ "use client";
2
+ import {
3
+ cn
4
+ } from "./chunk-NJKWNMJF.js";
5
+
6
+ // src/base/breadcrumbs.tsx
7
+ import { Fragment, jsx } from "react/jsx-runtime";
8
+ function Breadcrumb({ children, className }) {
9
+ return /* @__PURE__ */ jsx("div", { className: cn("breadcrumbs text-sm", className), children: /* @__PURE__ */ jsx("ul", { children }) });
10
+ }
11
+ function BreadcrumbItem({ children, className }) {
12
+ return /* @__PURE__ */ jsx("li", { className: cn(className), children });
13
+ }
14
+ function BreadcrumbPage({ children, className }) {
15
+ return /* @__PURE__ */ jsx("span", { className: cn(className), children });
16
+ }
17
+ function BreadcrumbList({ children }) {
18
+ return /* @__PURE__ */ jsx(Fragment, { children });
19
+ }
20
+
21
+ export {
22
+ Breadcrumb,
23
+ BreadcrumbItem,
24
+ BreadcrumbPage,
25
+ BreadcrumbList
26
+ };
@@ -0,0 +1,134 @@
1
+ "use client";
2
+ import {
3
+ cn
4
+ } from "./chunk-NJKWNMJF.js";
5
+
6
+ // src/base/collapse.tsx
7
+ import { useState } from "react";
8
+ import { jsx, jsxs } from "react/jsx-runtime";
9
+ function Collapse({
10
+ title,
11
+ children,
12
+ defaultOpen = false,
13
+ onOpenChange,
14
+ variant = "arrow",
15
+ className,
16
+ titleClassName,
17
+ contentClassName,
18
+ disabled = false
19
+ }) {
20
+ const [isOpen, setIsOpen] = useState(defaultOpen);
21
+ const handleToggle = () => {
22
+ if (disabled) return;
23
+ const next = !isOpen;
24
+ setIsOpen(next);
25
+ onOpenChange == null ? void 0 : onOpenChange(next);
26
+ };
27
+ return /* @__PURE__ */ jsxs(
28
+ "div",
29
+ {
30
+ className: cn(
31
+ "bg-base-100 border-base-200 collapse rounded-lg border",
32
+ isOpen && "collapse-open",
33
+ !isOpen && "collapse-close",
34
+ variant === "arrow" ? "collapse-arrow" : "collapse-plus",
35
+ disabled && "cursor-not-allowed opacity-50",
36
+ className
37
+ ),
38
+ children: [
39
+ /* @__PURE__ */ jsx(
40
+ "input",
41
+ {
42
+ type: "checkbox",
43
+ checked: isOpen,
44
+ onChange: handleToggle,
45
+ disabled,
46
+ "aria-expanded": isOpen
47
+ }
48
+ ),
49
+ /* @__PURE__ */ jsx(
50
+ "div",
51
+ {
52
+ className: cn(
53
+ "collapse-title text-base-content cursor-pointer font-medium",
54
+ titleClassName
55
+ ),
56
+ onClick: handleToggle,
57
+ role: "button",
58
+ tabIndex: disabled ? -1 : 0,
59
+ onKeyDown: (e) => {
60
+ if (!disabled && (e.key === "Enter" || e.key === " ")) {
61
+ e.preventDefault();
62
+ handleToggle();
63
+ }
64
+ },
65
+ children: title
66
+ }
67
+ ),
68
+ /* @__PURE__ */ jsx("div", { className: cn("collapse-content text-base-content/80", contentClassName), children })
69
+ ]
70
+ }
71
+ );
72
+ }
73
+ function Accordion({
74
+ items,
75
+ defaultOpen,
76
+ variant = "arrow",
77
+ className,
78
+ allowMultiple = false
79
+ }) {
80
+ const [openIds, setOpenIds] = useState(
81
+ defaultOpen ? /* @__PURE__ */ new Set([defaultOpen]) : /* @__PURE__ */ new Set()
82
+ );
83
+ const toggle = (id) => {
84
+ setOpenIds((prev) => {
85
+ const next = new Set(prev);
86
+ if (next.has(id)) {
87
+ next.delete(id);
88
+ } else {
89
+ if (!allowMultiple) next.clear();
90
+ next.add(id);
91
+ }
92
+ return next;
93
+ });
94
+ };
95
+ return /* @__PURE__ */ jsx("div", { className: cn("flex flex-col gap-3", className), children: items.map((item) => /* @__PURE__ */ jsxs(
96
+ "div",
97
+ {
98
+ className: cn(
99
+ "bg-base-100 border-base-200 collapse rounded-lg border",
100
+ openIds.has(item.id) && "collapse-open",
101
+ !openIds.has(item.id) && "collapse-close",
102
+ variant === "arrow" ? "collapse-arrow" : "collapse-plus"
103
+ ),
104
+ children: [
105
+ /* @__PURE__ */ jsx("input", { type: "checkbox", checked: openIds.has(item.id), onChange: () => toggle(item.id) }),
106
+ /* @__PURE__ */ jsx(
107
+ "div",
108
+ {
109
+ className: "collapse-title text-base-content cursor-pointer font-medium",
110
+ onClick: () => toggle(item.id),
111
+ role: "button",
112
+ tabIndex: 0,
113
+ onKeyDown: (e) => {
114
+ if (e.key === "Enter" || e.key === " ") {
115
+ e.preventDefault();
116
+ toggle(item.id);
117
+ }
118
+ },
119
+ children: item.title
120
+ }
121
+ ),
122
+ /* @__PURE__ */ jsx("div", { className: "collapse-content text-base-content/80", children: item.content })
123
+ ]
124
+ },
125
+ item.id
126
+ )) });
127
+ }
128
+ var collapse_default = Collapse;
129
+
130
+ export {
131
+ Collapse,
132
+ Accordion,
133
+ collapse_default
134
+ };
@@ -0,0 +1,37 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+
4
+
5
+
6
+ var _chunk7HHY2WDFcjs = require('./chunk-7HHY2WDF.cjs');
7
+
8
+ // src/base/kbd.tsx
9
+ var _react = require('react');
10
+ var _jsxruntime = require('react/jsx-runtime');
11
+ var Kbd = _react.forwardRef.call(void 0,
12
+ (_a, ref) => {
13
+ var _b = _a, { children, className, size } = _b, props = _chunk7HHY2WDFcjs.__objRest.call(void 0, _b, ["children", "className", "size"]);
14
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "kbd", _chunk7HHY2WDFcjs.__spreadProps.call(void 0, _chunk7HHY2WDFcjs.__spreadValues.call(void 0, { ref, className: _chunk7HHY2WDFcjs.cn.call(void 0, "kbd", size && `kbd-${size}`, className) }, props), { children }));
15
+ }
16
+ );
17
+ Kbd.displayName = "Kbd";
18
+ var iconSize = 12;
19
+ var FnKey = {
20
+ Cmd: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { style: { fontSize: iconSize }, children: "\u2318" }),
21
+ Option: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { style: { fontSize: iconSize }, children: "\u2325" }),
22
+ Ctrl: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { style: { fontSize: iconSize }, children: "\u2303" }),
23
+ Shift: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { style: { fontSize: iconSize }, children: "\u21E7" }),
24
+ Esc: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { style: { fontSize: iconSize }, children: "\u238B" }),
25
+ Space: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { style: { fontSize: iconSize }, children: "\u2423" }),
26
+ Delete: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { style: { fontSize: iconSize }, children: "\u232B" }),
27
+ Tab: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { style: { fontSize: iconSize }, children: "\u21E5" }),
28
+ Up: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { style: { fontSize: iconSize }, children: "\u2191" }),
29
+ Down: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { style: { fontSize: iconSize }, children: "\u2193" }),
30
+ Left: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { style: { fontSize: iconSize }, children: "\u2190" }),
31
+ Right: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { style: { fontSize: iconSize }, children: "\u2192" })
32
+ };
33
+
34
+
35
+
36
+
37
+ exports.Kbd = Kbd; exports.FnKey = FnKey;