@mihcm/ui 0.14.1 → 0.15.1
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/dist/CheckboxGrid.native.d.ts.map +1 -1
- package/dist/CheckboxGrid.native.js +2 -1
- package/dist/CheckboxGrid.native.js.map +1 -1
- package/dist/Combobox.native.d.ts.map +1 -1
- package/dist/Combobox.native.js +2 -1
- package/dist/Combobox.native.js.map +1 -1
- package/dist/DataTable/column-filter.d.ts +8 -0
- package/dist/DataTable/column-filter.d.ts.map +1 -0
- package/dist/DataTable/column-filter.js +67 -0
- package/dist/DataTable/column-filter.js.map +1 -0
- package/dist/DataTable/column-header.d.ts +16 -0
- package/dist/DataTable/column-header.d.ts.map +1 -0
- package/dist/DataTable/column-header.js +11 -0
- package/dist/DataTable/column-header.js.map +1 -0
- package/dist/DataTable/column-visibility.d.ts +7 -0
- package/dist/DataTable/column-visibility.d.ts.map +1 -0
- package/dist/DataTable/column-visibility.js +35 -0
- package/dist/DataTable/column-visibility.js.map +1 -0
- package/dist/DataTable/index.d.ts +5 -0
- package/dist/DataTable/index.d.ts.map +1 -0
- package/dist/DataTable/index.js +5 -0
- package/dist/DataTable/index.js.map +1 -0
- package/dist/DataTable/pinning.d.ts +13 -0
- package/dist/DataTable/pinning.d.ts.map +1 -0
- package/dist/DataTable/pinning.js +29 -0
- package/dist/DataTable/pinning.js.map +1 -0
- package/dist/DataTable.d.ts +3 -7
- package/dist/DataTable.d.ts.map +1 -1
- package/dist/DataTable.js +7 -126
- package/dist/DataTable.js.map +1 -1
- package/dist/Dialog.native.d.ts +3 -1
- package/dist/Dialog.native.d.ts.map +1 -1
- package/dist/Dialog.native.js +2 -2
- package/dist/Dialog.native.js.map +1 -1
- package/dist/Form/building-blocks.d.ts +26 -0
- package/dist/Form/building-blocks.d.ts.map +1 -0
- package/dist/Form/building-blocks.js +29 -0
- package/dist/Form/building-blocks.js.map +1 -0
- package/dist/Form/fields-choice.d.ts +72 -0
- package/dist/Form/fields-choice.d.ts.map +1 -0
- package/dist/Form/fields-choice.js +69 -0
- package/dist/Form/fields-choice.js.map +1 -0
- package/dist/Form/fields-complex.d.ts +28 -0
- package/dist/Form/fields-complex.d.ts.map +1 -0
- package/dist/Form/fields-complex.js +38 -0
- package/dist/Form/fields-complex.js.map +1 -0
- package/dist/Form/fields-date.d.ts +46 -0
- package/dist/Form/fields-date.d.ts.map +1 -0
- package/dist/Form/fields-date.js +41 -0
- package/dist/Form/fields-date.js.map +1 -0
- package/dist/Form/fields-text.d.ts +47 -0
- package/dist/Form/fields-text.d.ts.map +1 -0
- package/dist/Form/fields-text.js +46 -0
- package/dist/Form/fields-text.js.map +1 -0
- package/dist/Form/fields-toggle.d.ts +24 -0
- package/dist/Form/fields-toggle.d.ts.map +1 -0
- package/dist/Form/fields-toggle.js +32 -0
- package/dist/Form/fields-toggle.js.map +1 -0
- package/dist/Form/helpers.d.ts +66 -0
- package/dist/Form/helpers.d.ts.map +1 -0
- package/dist/Form/helpers.js +44 -0
- package/dist/Form/helpers.js.map +1 -0
- package/dist/Form/types.d.ts +25 -0
- package/dist/Form/types.d.ts.map +1 -0
- package/dist/Form/types.js +8 -0
- package/dist/Form/types.js.map +1 -0
- package/dist/Form.d.ts +24 -298
- package/dist/Form.d.ts.map +1 -1
- package/dist/Form.js +30 -246
- package/dist/Form.js.map +1 -1
- package/dist/IconSidebar.d.ts +6 -46
- package/dist/IconSidebar.d.ts.map +1 -1
- package/dist/IconSidebar.js +6 -116
- package/dist/IconSidebar.js.map +1 -1
- package/dist/MainSidebar/back-button.d.ts +14 -0
- package/dist/MainSidebar/back-button.d.ts.map +1 -0
- package/dist/MainSidebar/back-button.js +14 -0
- package/dist/MainSidebar/back-button.js.map +1 -0
- package/dist/MainSidebar/breadcrumb.d.ts +10 -0
- package/dist/MainSidebar/breadcrumb.d.ts.map +1 -0
- package/dist/MainSidebar/breadcrumb.js +24 -0
- package/dist/MainSidebar/breadcrumb.js.map +1 -0
- package/dist/MainSidebar/columns.d.ts +3 -0
- package/dist/MainSidebar/columns.d.ts.map +1 -0
- package/dist/MainSidebar/columns.js +198 -0
- package/dist/MainSidebar/columns.js.map +1 -0
- package/dist/MainSidebar/command.d.ts +3 -0
- package/dist/MainSidebar/command.d.ts.map +1 -0
- package/dist/MainSidebar/command.js +193 -0
- package/dist/MainSidebar/command.js.map +1 -0
- package/dist/MainSidebar/drilldown.d.ts +3 -0
- package/dist/MainSidebar/drilldown.d.ts.map +1 -0
- package/dist/MainSidebar/drilldown.js +154 -0
- package/dist/MainSidebar/drilldown.js.map +1 -0
- package/dist/MainSidebar/expanded.d.ts +7 -0
- package/dist/MainSidebar/expanded.d.ts.map +1 -0
- package/dist/MainSidebar/expanded.js +102 -0
- package/dist/MainSidebar/expanded.js.map +1 -0
- package/dist/MainSidebar/floating.d.ts +3 -0
- package/dist/MainSidebar/floating.d.ts.map +1 -0
- package/dist/MainSidebar/floating.js +116 -0
- package/dist/MainSidebar/floating.js.map +1 -0
- package/dist/MainSidebar/helpers.d.ts +50 -0
- package/dist/MainSidebar/helpers.d.ts.map +1 -0
- package/dist/MainSidebar/helpers.js +150 -0
- package/dist/MainSidebar/helpers.js.map +1 -0
- package/dist/MainSidebar/hover.d.ts +3 -0
- package/dist/MainSidebar/hover.d.ts.map +1 -0
- package/dist/MainSidebar/hover.js +177 -0
- package/dist/MainSidebar/hover.js.map +1 -0
- package/dist/MainSidebar/index.d.ts +6 -0
- package/dist/MainSidebar/index.d.ts.map +1 -0
- package/dist/MainSidebar/index.js +108 -0
- package/dist/MainSidebar/index.js.map +1 -0
- package/dist/MainSidebar/mobile.d.ts +29 -0
- package/dist/MainSidebar/mobile.d.ts.map +1 -0
- package/dist/MainSidebar/mobile.js +38 -0
- package/dist/MainSidebar/mobile.js.map +1 -0
- package/dist/MainSidebar/motion.d.ts +23 -0
- package/dist/MainSidebar/motion.d.ts.map +1 -0
- package/dist/MainSidebar/motion.js +40 -0
- package/dist/MainSidebar/motion.js.map +1 -0
- package/dist/MainSidebar/rail.d.ts +24 -0
- package/dist/MainSidebar/rail.d.ts.map +1 -0
- package/dist/MainSidebar/rail.js +29 -0
- package/dist/MainSidebar/rail.js.map +1 -0
- package/dist/MainSidebar/search.d.ts +19 -0
- package/dist/MainSidebar/search.d.ts.map +1 -0
- package/dist/MainSidebar/search.js +33 -0
- package/dist/MainSidebar/search.js.map +1 -0
- package/dist/MainSidebar/types.d.ts +161 -0
- package/dist/MainSidebar/types.d.ts.map +1 -0
- package/dist/MainSidebar/types.js +2 -0
- package/dist/MainSidebar/types.js.map +1 -0
- package/dist/MainSidebar.d.ts +6 -1
- package/dist/MainSidebar.d.ts.map +1 -1
- package/dist/MainSidebar.js +6 -1
- package/dist/MainSidebar.js.map +1 -1
- package/dist/NavigationMenu.js +1 -1
- package/dist/NavigationMenu.js.map +1 -1
- package/dist/RichTextEditor/theme.d.ts +44 -0
- package/dist/RichTextEditor/theme.d.ts.map +1 -0
- package/dist/RichTextEditor/theme.js +41 -0
- package/dist/RichTextEditor/theme.js.map +1 -0
- package/dist/RichTextEditor/toolbar-icons.d.ts +21 -0
- package/dist/RichTextEditor/toolbar-icons.d.ts.map +1 -0
- package/dist/RichTextEditor/toolbar-icons.js +21 -0
- package/dist/RichTextEditor/toolbar-icons.js.map +1 -0
- package/dist/RichTextEditor/toolbar.d.ts +5 -0
- package/dist/RichTextEditor/toolbar.d.ts.map +1 -0
- package/dist/RichTextEditor/toolbar.js +116 -0
- package/dist/RichTextEditor/toolbar.js.map +1 -0
- package/dist/RichTextEditor.d.ts +16 -9
- package/dist/RichTextEditor.d.ts.map +1 -1
- package/dist/RichTextEditor.js +18 -164
- package/dist/RichTextEditor.js.map +1 -1
- package/dist/Select/content.d.ts +9 -0
- package/dist/Select/content.d.ts.map +1 -0
- package/dist/Select/content.js +80 -0
- package/dist/Select/content.js.map +1 -0
- package/dist/Select/context.d.ts +27 -0
- package/dist/Select/context.d.ts.map +1 -0
- package/dist/Select/context.js +35 -0
- package/dist/Select/context.js.map +1 -0
- package/dist/Select/item.d.ts +13 -0
- package/dist/Select/item.d.ts.map +1 -0
- package/dist/Select/item.js +39 -0
- package/dist/Select/item.js.map +1 -0
- package/dist/Select/parts.d.ts +14 -0
- package/dist/Select/parts.d.ts.map +1 -0
- package/dist/Select/parts.js +17 -0
- package/dist/Select/parts.js.map +1 -0
- package/dist/Select/react-select.d.ts +25 -0
- package/dist/Select/react-select.d.ts.map +1 -0
- package/dist/Select/react-select.js +66 -0
- package/dist/Select/react-select.js.map +1 -0
- package/dist/Select/root.d.ts +15 -0
- package/dist/Select/root.d.ts.map +1 -0
- package/dist/Select/root.js +41 -0
- package/dist/Select/root.js.map +1 -0
- package/dist/Select/trigger.d.ts +15 -0
- package/dist/Select/trigger.d.ts.map +1 -0
- package/dist/Select/trigger.js +61 -0
- package/dist/Select/trigger.js.map +1 -0
- package/dist/Select.d.ts +14 -62
- package/dist/Select.d.ts.map +1 -1
- package/dist/Select.js +14 -293
- package/dist/Select.js.map +1 -1
- package/dist/Sidebar/context.d.ts +28 -0
- package/dist/Sidebar/context.d.ts.map +1 -0
- package/dist/Sidebar/context.js +37 -0
- package/dist/Sidebar/context.js.map +1 -0
- package/dist/Sidebar/group.d.ts +13 -0
- package/dist/Sidebar/group.d.ts.map +1 -0
- package/dist/Sidebar/group.js +20 -0
- package/dist/Sidebar/group.js.map +1 -0
- package/dist/Sidebar/icons.d.ts +7 -0
- package/dist/Sidebar/icons.d.ts.map +1 -0
- package/dist/Sidebar/icons.js +12 -0
- package/dist/Sidebar/icons.js.map +1 -0
- package/dist/Sidebar/layout.d.ts +9 -0
- package/dist/Sidebar/layout.d.ts.map +1 -0
- package/dist/Sidebar/layout.js +21 -0
- package/dist/Sidebar/layout.js.map +1 -0
- package/dist/Sidebar/menu.d.ts +29 -0
- package/dist/Sidebar/menu.d.ts.map +1 -0
- package/dist/Sidebar/menu.js +55 -0
- package/dist/Sidebar/menu.js.map +1 -0
- package/dist/Sidebar/provider.d.ts +33 -0
- package/dist/Sidebar/provider.d.ts.map +1 -0
- package/dist/Sidebar/provider.js +110 -0
- package/dist/Sidebar/provider.js.map +1 -0
- package/dist/Sidebar/sidebar.d.ts +17 -0
- package/dist/Sidebar/sidebar.d.ts.map +1 -0
- package/dist/Sidebar/sidebar.js +51 -0
- package/dist/Sidebar/sidebar.js.map +1 -0
- package/dist/Sidebar/submenu.d.ts +13 -0
- package/dist/Sidebar/submenu.d.ts.map +1 -0
- package/dist/Sidebar/submenu.js +17 -0
- package/dist/Sidebar/submenu.js.map +1 -0
- package/dist/Sidebar/trigger.d.ts +9 -0
- package/dist/Sidebar/trigger.d.ts.map +1 -0
- package/dist/Sidebar/trigger.js +33 -0
- package/dist/Sidebar/trigger.js.map +1 -0
- package/dist/Sidebar.d.ts +14 -104
- package/dist/Sidebar.d.ts.map +1 -1
- package/dist/Sidebar.js +14 -300
- package/dist/Sidebar.js.map +1 -1
- package/dist/StatCard.d.ts +67 -9
- package/dist/StatCard.d.ts.map +1 -1
- package/dist/StatCard.js +111 -9
- package/dist/StatCard.js.map +1 -1
- package/dist/TransferList.native.d.ts.map +1 -1
- package/dist/TransferList.native.js +2 -1
- package/dist/TransferList.native.js.map +1 -1
- package/package.json +2 -2
- package/src/CheckboxGrid.native.tsx +2 -1
- package/src/Combobox.native.tsx +2 -1
- package/src/DataTable/column-filter.tsx +134 -0
- package/src/DataTable/column-header.tsx +67 -0
- package/src/DataTable/column-visibility.tsx +87 -0
- package/src/DataTable/index.ts +4 -0
- package/src/DataTable/pinning.ts +40 -0
- package/src/DataTable.tsx +14 -297
- package/src/Dialog.native.tsx +4 -2
- package/src/Form/building-blocks.tsx +97 -0
- package/src/Form/fields-choice.tsx +312 -0
- package/src/Form/fields-complex.tsx +195 -0
- package/src/Form/fields-date.tsx +195 -0
- package/src/Form/fields-text.tsx +218 -0
- package/src/Form/fields-toggle.tsx +123 -0
- package/src/Form/helpers.tsx +189 -0
- package/src/Form/types.ts +26 -0
- package/src/Form.tsx +91 -1308
- package/src/IconSidebar.tsx +20 -442
- package/src/MainSidebar/back-button.tsx +58 -0
- package/src/MainSidebar/breadcrumb.tsx +53 -0
- package/src/MainSidebar/columns.tsx +350 -0
- package/src/MainSidebar/command.tsx +404 -0
- package/src/MainSidebar/drilldown.tsx +373 -0
- package/src/MainSidebar/expanded.tsx +414 -0
- package/src/MainSidebar/floating.tsx +268 -0
- package/src/MainSidebar/helpers.ts +166 -0
- package/src/MainSidebar/hover.tsx +334 -0
- package/src/MainSidebar/index.tsx +191 -0
- package/src/MainSidebar/mobile.tsx +117 -0
- package/src/MainSidebar/motion.ts +64 -0
- package/src/MainSidebar/rail.tsx +137 -0
- package/src/MainSidebar/search.tsx +99 -0
- package/src/MainSidebar/types.ts +208 -0
- package/src/MainSidebar.tsx +15 -4
- package/src/NavigationMenu.tsx +1 -1
- package/src/RichTextEditor/theme.ts +43 -0
- package/src/RichTextEditor/toolbar-icons.tsx +40 -0
- package/src/RichTextEditor/toolbar.tsx +271 -0
- package/src/RichTextEditor.tsx +23 -371
- package/src/Select/content.tsx +111 -0
- package/src/Select/context.tsx +66 -0
- package/src/Select/item.tsx +97 -0
- package/src/Select/parts.tsx +43 -0
- package/src/Select/react-select.tsx +216 -0
- package/src/Select/root.tsx +75 -0
- package/src/Select/trigger.tsx +122 -0
- package/src/Select.tsx +34 -692
- package/src/Sidebar/context.tsx +72 -0
- package/src/Sidebar/group.tsx +69 -0
- package/src/Sidebar/icons.tsx +42 -0
- package/src/Sidebar/layout.tsx +64 -0
- package/src/Sidebar/menu.tsx +171 -0
- package/src/Sidebar/provider.tsx +224 -0
- package/src/Sidebar/sidebar.tsx +178 -0
- package/src/Sidebar/submenu.tsx +58 -0
- package/src/Sidebar/trigger.tsx +104 -0
- package/src/Sidebar.tsx +44 -927
- package/src/StatCard.tsx +365 -20
- package/src/TransferList.native.tsx +2 -1
- package/dist/TiptapEditor.d.ts +0 -24
- package/dist/TiptapEditor.d.ts.map +0 -1
- package/dist/TiptapEditor.js +0 -84
- package/dist/TiptapEditor.js.map +0 -1
package/dist/Sidebar.js
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
2
|
/**
|
|
4
3
|
* Sidebar (web-only — React DOM).
|
|
5
4
|
*
|
|
6
|
-
* A composable, collapsible sidebar with mobile sheet support,
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* Composes: Button, Sheet, Separator, Skeleton, Tooltip, Input.
|
|
5
|
+
* A composable, collapsible sidebar with mobile sheet support, keyboard
|
|
6
|
+
* shortcut (Ctrl/Cmd+B), and cookie persistence. Composes Button, Sheet,
|
|
7
|
+
* Separator, Skeleton, Tooltip, Input.
|
|
10
8
|
*
|
|
11
9
|
* <SidebarProvider>
|
|
12
10
|
* <Sidebar>
|
|
@@ -28,301 +26,17 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
28
26
|
* <SidebarInset>…main content…</SidebarInset>
|
|
29
27
|
* </SidebarProvider>
|
|
30
28
|
*
|
|
29
|
+
* Public barrel — implementation is split across `./Sidebar/*` so each
|
|
30
|
+
* file stays under the 400-line rule (CLAUDE.md §6).
|
|
31
|
+
*
|
|
31
32
|
* Wiki: docs/components/Sidebar.md
|
|
32
33
|
*/
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
import { Input } from './Input.js';
|
|
42
|
-
/* ── Inline icon (avoids a lucide-react dep on the ui package) ───── */
|
|
43
|
-
function PanelLeftIcon() {
|
|
44
|
-
return (_jsxs("svg", { "aria-hidden": "true", xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", className: "h-4 w-4", children: [_jsx("rect", { width: "18", height: "18", x: "3", y: "3", rx: "2" }), _jsx("path", { d: "M9 3v18" })] }));
|
|
45
|
-
}
|
|
46
|
-
function PanelRightIcon() {
|
|
47
|
-
return (_jsxs("svg", { "aria-hidden": "true", xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", className: "h-4 w-4", children: [_jsx("rect", { width: "18", height: "18", x: "3", y: "3", rx: "2" }), _jsx("path", { d: "M15 3v18" })] }));
|
|
48
|
-
}
|
|
49
|
-
/* ── Constants ─────────────────────────────────────────────────────── */
|
|
50
|
-
const SIDEBAR_COOKIE_NAME = 'sidebar_state';
|
|
51
|
-
const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7; // 7 days
|
|
52
|
-
const SIDEBAR_WIDTH = '16rem';
|
|
53
|
-
const SIDEBAR_WIDTH_ICON = '3rem';
|
|
54
|
-
const SIDEBAR_WIDTH_MOBILE = '18rem';
|
|
55
|
-
const SIDEBAR_KEYBOARD_SHORTCUT = 'b';
|
|
56
|
-
const SIDEBAR_MOBILE_BREAKPOINT = 768;
|
|
57
|
-
/* ── useIsMobile (inline) ──────────────────────────────────────────── */
|
|
58
|
-
function useIsMobile(breakpoint) {
|
|
59
|
-
const [isMobile, setIsMobile] = useState(false);
|
|
60
|
-
useEffect(() => {
|
|
61
|
-
if (typeof window.matchMedia !== 'function') {
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
const mql = window.matchMedia(`(max-width: ${breakpoint}px)`);
|
|
65
|
-
const onChange = () => setIsMobile(mql.matches);
|
|
66
|
-
onChange();
|
|
67
|
-
mql.addEventListener('change', onChange);
|
|
68
|
-
return () => mql.removeEventListener('change', onChange);
|
|
69
|
-
}, [breakpoint]);
|
|
70
|
-
return isMobile;
|
|
71
|
-
}
|
|
72
|
-
const SidebarContext = createContext(null);
|
|
73
|
-
export function useSidebar() {
|
|
74
|
-
const ctx = useContext(SidebarContext);
|
|
75
|
-
if (!ctx) {
|
|
76
|
-
throw new Error('useSidebar must be used within a <SidebarProvider>.');
|
|
77
|
-
}
|
|
78
|
-
return ctx;
|
|
79
|
-
}
|
|
80
|
-
export const SidebarProvider = forwardRef(function SidebarProvider({ defaultOpen = true, open: openProp, onOpenChange: setOpenProp, defaultOpenMobile = false, openMobile: openMobileProp, onOpenMobileChange: setOpenMobileProp, side = 'left', variant = 'sidebar', collapsible = 'offcanvas', position = 'contained', mobile, mobileBreakpoint = SIDEBAR_MOBILE_BREAKPOINT, width = SIDEBAR_WIDTH, iconWidth = SIDEBAR_WIDTH_ICON, mobileWidth = SIDEBAR_WIDTH_MOBILE, className, style, children, ...props }, ref) {
|
|
81
|
-
const detectedMobile = useIsMobile(mobileBreakpoint);
|
|
82
|
-
const isMobile = mobile ?? detectedMobile;
|
|
83
|
-
const [_openMobile, _setOpenMobile] = useState(defaultOpenMobile);
|
|
84
|
-
// Start from props so server and initial client render match.
|
|
85
|
-
const [_open, _setOpen] = useState(defaultOpen);
|
|
86
|
-
const open = openProp ?? _open;
|
|
87
|
-
const openMobile = openMobileProp ?? _openMobile;
|
|
88
|
-
useEffect(() => {
|
|
89
|
-
if (openProp !== undefined)
|
|
90
|
-
return;
|
|
91
|
-
const cookie = document.cookie
|
|
92
|
-
.split('; ')
|
|
93
|
-
.find((row) => row.startsWith(`${SIDEBAR_COOKIE_NAME}=`));
|
|
94
|
-
if (!cookie)
|
|
95
|
-
return;
|
|
96
|
-
const nextOpen = cookie.split('=')[1] === 'true';
|
|
97
|
-
let cancelled = false;
|
|
98
|
-
queueMicrotask(() => {
|
|
99
|
-
if (!cancelled) {
|
|
100
|
-
_setOpen(nextOpen);
|
|
101
|
-
}
|
|
102
|
-
});
|
|
103
|
-
return () => {
|
|
104
|
-
cancelled = true;
|
|
105
|
-
};
|
|
106
|
-
}, [openProp]);
|
|
107
|
-
const setOpen = useCallback((value) => {
|
|
108
|
-
const next = typeof value === 'function' ? value(open) : value;
|
|
109
|
-
if (setOpenProp) {
|
|
110
|
-
setOpenProp(next);
|
|
111
|
-
}
|
|
112
|
-
else {
|
|
113
|
-
_setOpen(next);
|
|
114
|
-
}
|
|
115
|
-
if (typeof document !== 'undefined') {
|
|
116
|
-
document.cookie = `${SIDEBAR_COOKIE_NAME}=${next}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;
|
|
117
|
-
}
|
|
118
|
-
}, [setOpenProp, open]);
|
|
119
|
-
const setOpenMobile = useCallback((value) => {
|
|
120
|
-
const next = typeof value === 'function' ? value(openMobile) : value;
|
|
121
|
-
if (setOpenMobileProp) {
|
|
122
|
-
setOpenMobileProp(next);
|
|
123
|
-
}
|
|
124
|
-
else {
|
|
125
|
-
_setOpenMobile(next);
|
|
126
|
-
}
|
|
127
|
-
}, [openMobile, setOpenMobileProp]);
|
|
128
|
-
const toggleSidebar = useCallback(() => {
|
|
129
|
-
if (collapsible === 'none')
|
|
130
|
-
return;
|
|
131
|
-
if (isMobile) {
|
|
132
|
-
setOpenMobile((prev) => !prev);
|
|
133
|
-
}
|
|
134
|
-
else {
|
|
135
|
-
setOpen((prev) => !prev);
|
|
136
|
-
}
|
|
137
|
-
}, [collapsible, isMobile, setOpen]);
|
|
138
|
-
// Keyboard shortcut: Ctrl+B / Cmd+B
|
|
139
|
-
useEffect(() => {
|
|
140
|
-
const handleKeyDown = (e) => {
|
|
141
|
-
if (e.key === SIDEBAR_KEYBOARD_SHORTCUT && (e.metaKey || e.ctrlKey)) {
|
|
142
|
-
e.preventDefault();
|
|
143
|
-
toggleSidebar();
|
|
144
|
-
}
|
|
145
|
-
};
|
|
146
|
-
window.addEventListener('keydown', handleKeyDown);
|
|
147
|
-
return () => window.removeEventListener('keydown', handleKeyDown);
|
|
148
|
-
}, [toggleSidebar]);
|
|
149
|
-
const state = open ? 'expanded' : 'collapsed';
|
|
150
|
-
const value = useMemo(() => ({
|
|
151
|
-
state,
|
|
152
|
-
open,
|
|
153
|
-
setOpen,
|
|
154
|
-
isMobile,
|
|
155
|
-
openMobile,
|
|
156
|
-
setOpenMobile,
|
|
157
|
-
side,
|
|
158
|
-
variant,
|
|
159
|
-
collapsible,
|
|
160
|
-
position,
|
|
161
|
-
toggleSidebar,
|
|
162
|
-
}), [
|
|
163
|
-
state,
|
|
164
|
-
open,
|
|
165
|
-
setOpen,
|
|
166
|
-
isMobile,
|
|
167
|
-
openMobile,
|
|
168
|
-
setOpenMobile,
|
|
169
|
-
side,
|
|
170
|
-
variant,
|
|
171
|
-
collapsible,
|
|
172
|
-
position,
|
|
173
|
-
toggleSidebar,
|
|
174
|
-
]);
|
|
175
|
-
return (_jsx(SidebarContext.Provider, { value: value, children: _jsx("div", { ref: ref, style: {
|
|
176
|
-
'--sidebar-width': width,
|
|
177
|
-
'--sidebar-width-icon': iconWidth,
|
|
178
|
-
'--sidebar-width-mobile': mobileWidth,
|
|
179
|
-
...style,
|
|
180
|
-
}, className: cn('group/sidebar-wrapper flex min-h-svh w-full', side === 'right' && 'flex-row-reverse', variant === 'inset' && 'bg-sidebar', className), "data-sidebar": "provider", "data-state": state, "data-collapsible": state === 'collapsed' ? collapsible : '', "data-variant": variant, "data-side": side, "data-position": position, ...props, children: children }) }));
|
|
181
|
-
});
|
|
182
|
-
export const Sidebar = forwardRef(function Sidebar({ side, variant, collapsible, position, className, children, ...props }, ref) {
|
|
183
|
-
const context = useSidebar();
|
|
184
|
-
const { isMobile, state, openMobile, setOpenMobile } = context;
|
|
185
|
-
const currentSide = side ?? context.side;
|
|
186
|
-
const currentVariant = variant ?? context.variant;
|
|
187
|
-
const currentCollapsible = collapsible ?? context.collapsible;
|
|
188
|
-
const currentPosition = position ?? context.position;
|
|
189
|
-
const isCollapsed = state === 'collapsed';
|
|
190
|
-
const isFloating = currentVariant === 'floating' || currentVariant === 'inset';
|
|
191
|
-
const isOffcanvasCollapsed = isCollapsed && currentCollapsible === 'offcanvas';
|
|
192
|
-
const isIconCollapsed = isCollapsed && currentCollapsible === 'icon';
|
|
193
|
-
const sidebarEdgeBorder = currentSide === 'right'
|
|
194
|
-
? 'border-l border-sidebar-border'
|
|
195
|
-
: 'border-r border-sidebar-border';
|
|
196
|
-
if (currentCollapsible === 'none') {
|
|
197
|
-
return (_jsx("nav", { ref: ref, "aria-label": props['aria-label'] ?? 'Sidebar', "data-sidebar": "sidebar", "data-state": state, "data-collapsible": "", "data-variant": currentVariant, "data-side": currentSide, "data-position": currentPosition, className: cn('flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground', isFloating ? 'rounded-lg border border-sidebar-border shadow' : sidebarEdgeBorder, className), ...props, children: children }));
|
|
198
|
-
}
|
|
199
|
-
if (isMobile) {
|
|
200
|
-
return (_jsx(Sheet, { open: openMobile, onOpenChange: setOpenMobile, children: _jsx(SheetContent, { "data-sidebar": "sidebar", "data-mobile": "true", className: cn('w-(--sidebar-width-mobile) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden', className), side: currentSide, ...props, children: _jsx("nav", { "aria-label": props['aria-label'] ?? 'Sidebar', className: "flex h-full w-full flex-col", children: children }) }) }));
|
|
201
|
-
}
|
|
202
|
-
if (currentPosition === 'contained') {
|
|
203
|
-
return (_jsx("div", { "data-sidebar": "sidebar-container", className: cn('group peer relative hidden h-full shrink-0 overflow-hidden text-sidebar-foreground transition-[width] duration-200 ease-linear md:flex', isOffcanvasCollapsed
|
|
204
|
-
? 'w-0'
|
|
205
|
-
: isIconCollapsed
|
|
206
|
-
? isFloating
|
|
207
|
-
? 'w-[calc(var(--sidebar-width-icon)+theme(spacing.4))]'
|
|
208
|
-
: 'w-(--sidebar-width-icon)'
|
|
209
|
-
: 'w-(--sidebar-width)', isFloating && !isOffcanvasCollapsed && 'p-2', className), "data-state": state, "data-collapsible": isCollapsed ? currentCollapsible : '', "data-variant": currentVariant, "data-side": currentSide, "data-position": currentPosition, children: _jsx("nav", { ref: ref, "aria-label": props['aria-label'] ?? 'Sidebar', "data-sidebar": "sidebar", className: cn('flex h-full w-full min-w-0 flex-col bg-sidebar', isFloating ? 'rounded-lg border border-sidebar-border shadow' : sidebarEdgeBorder), ...props, children: children }) }));
|
|
210
|
-
}
|
|
211
|
-
return (_jsxs("div", { "data-sidebar": "sidebar-container", className: "group peer hidden md:block text-sidebar-foreground", "data-state": state, "data-collapsible": isCollapsed ? currentCollapsible : '', "data-variant": currentVariant, "data-side": currentSide, "data-position": currentPosition, children: [_jsx("div", { className: cn('relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear', 'group-data-[collapsible=offcanvas]:w-0', 'group-data-[side=right]:rotate-180', isFloating
|
|
212
|
-
? 'group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+theme(spacing.4))]'
|
|
213
|
-
: 'group-data-[collapsible=icon]:w-(--sidebar-width-icon)') }), _jsx("div", { className: cn('fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex', currentSide === 'left'
|
|
214
|
-
? 'left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]'
|
|
215
|
-
: 'right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]', isFloating
|
|
216
|
-
? 'p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+theme(spacing.4)+2px)]'
|
|
217
|
-
: cn('group-data-[collapsible=icon]:w-(--sidebar-width-icon)', 'border-sidebar-border', currentSide === 'right' ? 'group-data-[variant=sidebar]:border-l' : 'group-data-[variant=sidebar]:border-r'), className), ...props, children: _jsx("nav", { ref: ref, "aria-label": props['aria-label'] ?? 'Sidebar', "data-sidebar": "sidebar", className: cn('flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow'), children: children }) })] }));
|
|
218
|
-
});
|
|
219
|
-
/* ── SidebarTrigger ────────────────────────────────────────────────── */
|
|
220
|
-
export const SidebarTrigger = forwardRef(function SidebarTrigger({ className, disabled, onClick, ...props }, ref) {
|
|
221
|
-
const { isMobile, open, openMobile, collapsible, side, toggleSidebar } = useSidebar();
|
|
222
|
-
const expanded = collapsible === 'none' ? true : isMobile ? openMobile : open;
|
|
223
|
-
const isDisabled = disabled || collapsible === 'none';
|
|
224
|
-
return (_jsxs(Button, { ref: ref, "data-sidebar": "trigger", "aria-expanded": expanded, "aria-disabled": isDisabled || undefined, disabled: isDisabled, variant: "ghost", size: "icon", className: cn('size-7', className), onClick: (e) => {
|
|
225
|
-
onClick?.(e);
|
|
226
|
-
if (collapsible === 'none')
|
|
227
|
-
return;
|
|
228
|
-
toggleSidebar();
|
|
229
|
-
}, ...props, children: [side === 'right' ? _jsx(PanelRightIcon, {}) : _jsx(PanelLeftIcon, {}), _jsx("span", { className: "sr-only", children: "Toggle Sidebar" })] }));
|
|
230
|
-
});
|
|
231
|
-
/* ── SidebarRail ───────────────────────────────────────────────────── */
|
|
232
|
-
export const SidebarRail = forwardRef(function SidebarRail({ className, ...props }, ref) {
|
|
233
|
-
const { toggleSidebar } = useSidebar();
|
|
234
|
-
return (_jsx("button", { ref: ref, type: "button", "data-sidebar": "rail", "aria-label": "Toggle Sidebar", tabIndex: -1, onClick: toggleSidebar, title: "Toggle Sidebar", className: cn('absolute inset-y-0 z-20 hidden w-4 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] group-data-[side=left]:-right-4 group-data-[side=left]:-translate-x-1/2 group-data-[side=right]:-left-4 group-data-[side=right]:translate-x-1/2 sm:flex', 'hover:after:bg-sidebar-border', '[[data-side=left]_&]:cursor-w-resize [[data-side=right]_&]:cursor-e-resize', '[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize', 'group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-sidebar', '[[data-side=left][data-collapsible=offcanvas]_&]:-right-2 [[data-side=left][data-collapsible=offcanvas]_&]:translate-x-0', '[[data-side=right][data-collapsible=offcanvas]_&]:-left-2 [[data-side=right][data-collapsible=offcanvas]_&]:translate-x-0', className), ...props }));
|
|
235
|
-
});
|
|
236
|
-
/* ── SidebarInset ──────────────────────────────────────────────────── */
|
|
237
|
-
export const SidebarInset = forwardRef(function SidebarInset({ className, ...props }, ref) {
|
|
238
|
-
return (_jsx("main", { ref: ref, className: cn('relative flex min-h-svh flex-1 flex-col bg-background', 'peer-data-[variant=inset]:min-h-[calc(100svh-theme(spacing.4))] md:peer-data-[variant=inset]:m-2 md:peer-data-[side=left]:peer-data-[variant=inset]:ml-0 md:peer-data-[side=right]:peer-data-[variant=inset]:mr-0 md:peer-data-[side=left]:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[side=right]:peer-data-[state=collapsed]:peer-data-[variant=inset]:mr-2 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow', className), ...props }));
|
|
239
|
-
});
|
|
240
|
-
/* ── SidebarInput ──────────────────────────────────────────────────── */
|
|
241
|
-
export const SidebarInput = forwardRef(function SidebarInput({ className, ...props }, ref) {
|
|
242
|
-
return (_jsx(Input, { ref: ref, "data-sidebar": "input", className: cn('h-8 w-full bg-background shadow-none focus-within:ring-2 focus-within:ring-sidebar-ring', className), ...props }));
|
|
243
|
-
});
|
|
244
|
-
/* ── Layout sections ───────────────────────────────────────────────── */
|
|
245
|
-
export const SidebarHeader = forwardRef(function SidebarHeader({ className, ...props }, ref) {
|
|
246
|
-
return (_jsx("div", { ref: ref, "data-sidebar": "header", className: cn('flex flex-col gap-2 p-2', className), ...props }));
|
|
247
|
-
});
|
|
248
|
-
export const SidebarFooter = forwardRef(function SidebarFooter({ className, ...props }, ref) {
|
|
249
|
-
return (_jsx("div", { ref: ref, "data-sidebar": "footer", className: cn('flex flex-col gap-2 p-2', className), ...props }));
|
|
250
|
-
});
|
|
251
|
-
export const SidebarContent = forwardRef(function SidebarContent({ className, ...props }, ref) {
|
|
252
|
-
return (_jsx("div", { ref: ref, "data-sidebar": "content", className: cn('flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden', className), ...props }));
|
|
253
|
-
});
|
|
254
|
-
/* ── SidebarSeparator ──────────────────────────────────────────────── */
|
|
255
|
-
export const SidebarSeparator = forwardRef(function SidebarSeparator({ className, ...props }, ref) {
|
|
256
|
-
return (_jsx(Separator, { ref: ref, "data-sidebar": "separator", className: cn('mx-2 w-auto bg-sidebar-border', className), ...props }));
|
|
257
|
-
});
|
|
258
|
-
/* ── Group ─────────────────────────────────────────────────────────── */
|
|
259
|
-
export const SidebarGroup = forwardRef(function SidebarGroup({ className, ...props }, ref) {
|
|
260
|
-
return (_jsx("div", { ref: ref, "data-sidebar": "group", className: cn('relative flex w-full min-w-0 flex-col p-2', className), ...props }));
|
|
261
|
-
});
|
|
262
|
-
export const SidebarGroupLabel = forwardRef(function SidebarGroupLabel({ className, asChild: _asChild, ...props }, ref) {
|
|
263
|
-
return (_jsx("div", { ref: ref, "data-sidebar": "group-label", className: cn('flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 outline-none ring-sidebar-ring transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2', 'group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0', className), ...props }));
|
|
264
|
-
});
|
|
265
|
-
export const SidebarGroupAction = forwardRef(function SidebarGroupAction({ className, asChild: _asChild, ...props }, ref) {
|
|
266
|
-
return (_jsx("button", { ref: ref, type: "button", "data-sidebar": "group-action", className: cn('absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0', 'after:absolute after:-inset-2 after:md:hidden', 'group-data-[collapsible=icon]:hidden', className), ...props }));
|
|
267
|
-
});
|
|
268
|
-
export const SidebarGroupContent = forwardRef(function SidebarGroupContent({ className, ...props }, ref) {
|
|
269
|
-
return (_jsx("div", { ref: ref, "data-sidebar": "group-content", className: cn('w-full text-sm', className), ...props }));
|
|
270
|
-
});
|
|
271
|
-
/* ── Menu ──────────────────────────────────────────────────────────── */
|
|
272
|
-
export const SidebarMenu = forwardRef(function SidebarMenu({ className, ...props }, ref) {
|
|
273
|
-
return (_jsx("ul", { ref: ref, "data-sidebar": "menu", className: cn('flex w-full min-w-0 flex-col gap-1', className), ...props }));
|
|
274
|
-
});
|
|
275
|
-
export const SidebarMenuItem = forwardRef(function SidebarMenuItem({ className, ...props }, ref) {
|
|
276
|
-
return (_jsx("li", { ref: ref, "data-sidebar": "menu-item", className: cn('group/menu-item relative', className), ...props }));
|
|
277
|
-
});
|
|
278
|
-
/* ── SidebarMenuButton ─────────────────────────────────────────────── */
|
|
279
|
-
export const sidebarMenuButtonVariants = cva('peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-none ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0', {
|
|
280
|
-
variants: {
|
|
281
|
-
variant: {
|
|
282
|
-
default: 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',
|
|
283
|
-
outline: 'bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]',
|
|
284
|
-
},
|
|
285
|
-
size: {
|
|
286
|
-
default: 'h-8 text-sm',
|
|
287
|
-
sm: 'h-7 text-xs',
|
|
288
|
-
lg: 'h-12 text-sm group-data-[collapsible=icon]:p-0!',
|
|
289
|
-
},
|
|
290
|
-
},
|
|
291
|
-
defaultVariants: {
|
|
292
|
-
variant: 'default',
|
|
293
|
-
size: 'default',
|
|
294
|
-
},
|
|
295
|
-
});
|
|
296
|
-
export const SidebarMenuButton = forwardRef(function SidebarMenuButton({ asChild: _asChild, isActive = false, variant, size, tooltip, className, ...props }, ref) {
|
|
297
|
-
useSidebar();
|
|
298
|
-
const button = (_jsx("button", { ref: ref, type: "button", "data-sidebar": "menu-button", "data-size": size, "data-active": isActive, className: cn(sidebarMenuButtonVariants({ variant, size }), className), ...props }));
|
|
299
|
-
if (!tooltip)
|
|
300
|
-
return button;
|
|
301
|
-
const tooltipProps = typeof tooltip === 'string' ? { content: tooltip } : tooltip;
|
|
302
|
-
return (_jsx(Tooltip, { ...tooltipProps, side: "right", children: button }));
|
|
303
|
-
});
|
|
304
|
-
/* ── SidebarMenuAction ─────────────────────────────────────────────── */
|
|
305
|
-
export const SidebarMenuAction = forwardRef(function SidebarMenuAction({ className, asChild: _asChild, showOnHover = false, ...props }, ref) {
|
|
306
|
-
return (_jsx("button", { ref: ref, type: "button", "data-sidebar": "menu-action", className: cn('absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0', 'after:absolute after:-inset-2 after:md:hidden', 'group-data-[collapsible=icon]:hidden', showOnHover &&
|
|
307
|
-
'peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0', className), ...props }));
|
|
308
|
-
});
|
|
309
|
-
/* ── SidebarMenuBadge ──────────────────────────────────────────────── */
|
|
310
|
-
export const SidebarMenuBadge = forwardRef(function SidebarMenuBadge({ className, ...props }, ref) {
|
|
311
|
-
return (_jsx("div", { ref: ref, "data-sidebar": "menu-badge", className: cn('pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums text-sidebar-foreground', 'peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground', 'group-data-[collapsible=icon]:hidden', className), ...props }));
|
|
312
|
-
});
|
|
313
|
-
export const SidebarMenuSkeleton = forwardRef(function SidebarMenuSkeleton({ className, showIcon = false, ...props }, ref) {
|
|
314
|
-
// Fixed skeleton width — visual variety comes from multiple instances
|
|
315
|
-
const width = '70%';
|
|
316
|
-
return (_jsxs("div", { ref: ref, "data-sidebar": "menu-skeleton", className: cn('flex h-8 items-center gap-2 rounded-md px-2', className), ...props, children: [showIcon && _jsx(Skeleton, { className: "size-4 rounded-md", "data-sidebar": "menu-skeleton-icon" }), _jsx(Skeleton, { className: "h-4 max-w-(--skeleton-width) flex-1", "data-sidebar": "menu-skeleton-text", style: { '--skeleton-width': width } })] }));
|
|
317
|
-
});
|
|
318
|
-
/* ── Sub-menu ──────────────────────────────────────────────────────── */
|
|
319
|
-
export const SidebarMenuSub = forwardRef(function SidebarMenuSub({ className, ...props }, ref) {
|
|
320
|
-
return (_jsx("ul", { ref: ref, "data-sidebar": "menu-sub", className: cn('mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5', 'group-data-[collapsible=icon]:hidden', className), ...props }));
|
|
321
|
-
});
|
|
322
|
-
export const SidebarMenuSubItem = forwardRef(function SidebarMenuSubItem({ ...props }, ref) {
|
|
323
|
-
return _jsx("li", { ref: ref, ...props });
|
|
324
|
-
});
|
|
325
|
-
export const SidebarMenuSubButton = forwardRef(function SidebarMenuSubButton({ asChild: _asChild, size = 'md', isActive, className, ...props }, ref) {
|
|
326
|
-
return (_jsx("a", { ref: ref, "data-sidebar": "menu-sub-button", "data-size": size, "data-active": isActive, className: cn('flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground outline-none ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0', 'data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground', size === 'sm' && 'text-xs', size === 'md' && 'text-sm', 'group-data-[collapsible=icon]:hidden', className), ...props }));
|
|
327
|
-
});
|
|
34
|
+
export { useSidebar } from './Sidebar/context.js';
|
|
35
|
+
export { SidebarProvider } from './Sidebar/provider.js';
|
|
36
|
+
export { Sidebar } from './Sidebar/sidebar.js';
|
|
37
|
+
export { SidebarInput, SidebarInset, SidebarRail, SidebarTrigger, } from './Sidebar/trigger.js';
|
|
38
|
+
export { SidebarContent, SidebarFooter, SidebarHeader, SidebarSeparator, } from './Sidebar/layout.js';
|
|
39
|
+
export { SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, } from './Sidebar/group.js';
|
|
40
|
+
export { SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, sidebarMenuButtonVariants, } from './Sidebar/menu.js';
|
|
41
|
+
export { SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, } from './Sidebar/submenu.js';
|
|
328
42
|
//# sourceMappingURL=Sidebar.js.map
|
package/dist/Sidebar.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sidebar.js","sourceRoot":"","sources":["../src/Sidebar.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Sidebar.js","sourceRoot":"","sources":["../src/Sidebar.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,eAAe,EAA6B,MAAM,uBAAuB,CAAC;AACnF,OAAO,EAAE,OAAO,EAAqB,MAAM,sBAAsB,CAAC;AAClE,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,cAAc,GACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,cAAc,EACd,aAAa,EACb,aAAa,EACb,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,yBAAyB,GAG1B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,kBAAkB,GAEnB,MAAM,sBAAsB,CAAC"}
|
package/dist/StatCard.d.ts
CHANGED
|
@@ -1,16 +1,25 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* StatCard (web variant — React DOM).
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* Seven layout variants for product KPI surfaces:
|
|
5
|
+
*
|
|
6
|
+
* - `default` — Centered icon tile + big number + label (original layout)
|
|
7
|
+
* - `inline` — Icon left, value + label stacked right (compact rows)
|
|
8
|
+
* - `delta` — Value + ↑/↓ percentage in a semantic tone
|
|
9
|
+
* - `trend` — Value + delta + inline SparkChart trend (Stripe / Tremor)
|
|
10
|
+
* - `progress` — Value + thin progress bar (current / max goal)
|
|
11
|
+
* - `distribution` — Value + segmented CategoryBar breakdown
|
|
12
|
+
* - `hero` — Single huge number, no chrome (marketing / summary callouts)
|
|
13
|
+
*
|
|
14
|
+
* All variants share `value`, `label`, optional `icon`, and the 6-tone palette.
|
|
15
|
+
* Variant-specific props (`delta`, `sparkline`, `max`, `segments`) are typed
|
|
16
|
+
* via a discriminated union so consumers can't mix prop sets by mistake.
|
|
8
17
|
*
|
|
9
18
|
* Wiki: docs/components/StatCard.md
|
|
10
19
|
*/
|
|
11
20
|
import { type HTMLAttributes, type ReactNode } from 'react';
|
|
12
|
-
import { type
|
|
13
|
-
|
|
21
|
+
import { type CategoryBarItem } from './CategoryBar.js';
|
|
22
|
+
import { type SparkChartTone } from './SparkChart.js';
|
|
14
23
|
declare const TILE_TONE: {
|
|
15
24
|
readonly primary: "bg-primary-50 text-primary dark:bg-primary-950 dark:text-primary-300";
|
|
16
25
|
readonly accent: "bg-accent-50 text-accent";
|
|
@@ -20,16 +29,65 @@ declare const TILE_TONE: {
|
|
|
20
29
|
readonly neutral: "bg-muted text-muted-foreground";
|
|
21
30
|
};
|
|
22
31
|
export type StatCardTone = keyof typeof TILE_TONE;
|
|
23
|
-
export interface
|
|
32
|
+
export interface StatCardDelta {
|
|
33
|
+
/** Magnitude — e.g. `8.4` renders as `+8.4%`. */
|
|
34
|
+
value: number;
|
|
35
|
+
/** Direction of change. `flat` skips the arrow. */
|
|
36
|
+
direction: 'up' | 'down' | 'flat';
|
|
37
|
+
/** Override the auto-formatted display (default: `+8.4%` / `-3.1%`). */
|
|
38
|
+
formatted?: string;
|
|
39
|
+
/**
|
|
40
|
+
* Whether an `up` direction means a positive outcome. Defaults to `true`.
|
|
41
|
+
* Set `false` for metrics where down-is-better (failed jobs, error rate).
|
|
42
|
+
*/
|
|
43
|
+
positiveIsGood?: boolean;
|
|
44
|
+
}
|
|
45
|
+
interface BaseProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {
|
|
24
46
|
/** Big number / metric. */
|
|
25
47
|
value: ReactNode;
|
|
26
|
-
/** Caption shown below the value. */
|
|
48
|
+
/** Caption shown beside / below the value. */
|
|
27
49
|
label: ReactNode;
|
|
28
|
-
/** Optional icon
|
|
50
|
+
/** Optional icon. Honoured by `default` and `inline`; ignored by other variants. */
|
|
29
51
|
icon?: ReactNode;
|
|
30
52
|
/** Color tone. Defaults to `primary`. */
|
|
31
53
|
tone?: StatCardTone;
|
|
32
54
|
}
|
|
55
|
+
type DefaultVariantProps = BaseProps & {
|
|
56
|
+
variant?: 'default';
|
|
57
|
+
};
|
|
58
|
+
type InlineVariantProps = BaseProps & {
|
|
59
|
+
variant: 'inline';
|
|
60
|
+
};
|
|
61
|
+
type DeltaVariantProps = BaseProps & {
|
|
62
|
+
variant: 'delta';
|
|
63
|
+
delta: StatCardDelta;
|
|
64
|
+
};
|
|
65
|
+
type TrendVariantProps = BaseProps & {
|
|
66
|
+
variant: 'trend';
|
|
67
|
+
/** Series for the inline SparkChart. */
|
|
68
|
+
sparkline: number[];
|
|
69
|
+
/** Optional delta rendered alongside the value. */
|
|
70
|
+
delta?: StatCardDelta;
|
|
71
|
+
/** SparkChart tone override. Defaults to the card's `tone` (when mappable). */
|
|
72
|
+
sparklineTone?: SparkChartTone;
|
|
73
|
+
};
|
|
74
|
+
type ProgressVariantProps = BaseProps & {
|
|
75
|
+
variant: 'progress';
|
|
76
|
+
/** Maximum value used to compute the progress fill. */
|
|
77
|
+
max: number;
|
|
78
|
+
/** Visible label for the progress meta line (default: `"{value} / {max}"`). */
|
|
79
|
+
valueLabel?: string;
|
|
80
|
+
};
|
|
81
|
+
type DistributionVariantProps = BaseProps & {
|
|
82
|
+
variant: 'distribution';
|
|
83
|
+
/** CategoryBar segments — each `{ label, value, className }`. */
|
|
84
|
+
segments: CategoryBarItem[];
|
|
85
|
+
};
|
|
86
|
+
type HeroVariantProps = BaseProps & {
|
|
87
|
+
variant: 'hero';
|
|
88
|
+
};
|
|
89
|
+
export type StatCardProps = DefaultVariantProps | InlineVariantProps | DeltaVariantProps | TrendVariantProps | ProgressVariantProps | DistributionVariantProps | HeroVariantProps;
|
|
33
90
|
export declare const StatCard: import("react").ForwardRefExoticComponent<StatCardProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
91
|
+
export declare const statCardVariants: () => string;
|
|
34
92
|
export {};
|
|
35
93
|
//# sourceMappingURL=StatCard.d.ts.map
|
package/dist/StatCard.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatCard.d.ts","sourceRoot":"","sources":["../src/StatCard.tsx"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"StatCard.d.ts","sourceRoot":"","sources":["../src/StatCard.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAkC,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAG5F,OAAO,EAAe,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAIlE,QAAA,MAAM,SAAS;;;;;;;CAOL,CAAC;AAoBX,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,SAAS,CAAC;AAIlD,MAAM,WAAW,aAAa;IAC5B,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,mDAAmD;IACnD,SAAS,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;IAClC,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAoDD,UAAU,SAAU,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC;IAC1E,2BAA2B;IAC3B,KAAK,EAAE,SAAS,CAAC;IACjB,8CAA8C;IAC9C,KAAK,EAAE,SAAS,CAAC;IACjB,oFAAoF;IACpF,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,yCAAyC;IACzC,IAAI,CAAC,EAAE,YAAY,CAAC;CACrB;AAED,KAAK,mBAAmB,GAAG,SAAS,GAAG;IAAE,OAAO,CAAC,EAAE,SAAS,CAAA;CAAE,CAAC;AAC/D,KAAK,kBAAkB,GAAG,SAAS,GAAG;IAAE,OAAO,EAAE,QAAQ,CAAA;CAAE,CAAC;AAC5D,KAAK,iBAAiB,GAAG,SAAS,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,aAAa,CAAA;CAAE,CAAC;AAChF,KAAK,iBAAiB,GAAG,SAAS,GAAG;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,wCAAwC;IACxC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,mDAAmD;IACnD,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,+EAA+E;IAC/E,aAAa,CAAC,EAAE,cAAc,CAAC;CAChC,CAAC;AACF,KAAK,oBAAoB,GAAG,SAAS,GAAG;IACtC,OAAO,EAAE,UAAU,CAAC;IACpB,uDAAuD;IACvD,GAAG,EAAE,MAAM,CAAC;IACZ,+EAA+E;IAC/E,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AACF,KAAK,wBAAwB,GAAG,SAAS,GAAG;IAC1C,OAAO,EAAE,cAAc,CAAC;IACxB,iEAAiE;IACjE,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B,CAAC;AACF,KAAK,gBAAgB,GAAG,SAAS,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAExD,MAAM,MAAM,aAAa,GACrB,mBAAmB,GACnB,kBAAkB,GAClB,iBAAiB,GACjB,iBAAiB,GACjB,oBAAoB,GACpB,wBAAwB,GACxB,gBAAgB,CAAC;AAIrB,eAAO,MAAM,QAAQ,0GAmBnB,CAAC;AAmOH,eAAO,MAAM,gBAAgB,cACyC,CAAC"}
|