@fragment-build/ui 2.2.0 → 3.0.4
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 +19 -29
- package/components/grid/Grid.d.ts +8 -0
- package/components/grid/Grid.js +7 -0
- package/components/grid/Grid.js.map +1 -0
- package/components/grid/Grid.styles.d.ts +43 -0
- package/components/grid/Grid.styles.js +17 -0
- package/components/grid/Grid.styles.js.map +1 -0
- package/components/multi-switch/MultiSwitch.d.ts +6 -0
- package/components/multi-switch/MultiSwitch.js +6 -0
- package/components/multi-switch/MultiSwitch.js.map +1 -0
- package/components/multi-switch/MultiSwitch.styles.d.ts +43 -0
- package/components/multi-switch/MultiSwitch.styles.js +14 -0
- package/components/multi-switch/MultiSwitch.styles.js.map +1 -0
- package/components/theme-switch/ThemeSwitch.d.ts +6 -0
- package/components/theme-switch/ThemeSwitch.js +16 -0
- package/components/theme-switch/ThemeSwitch.js.map +1 -0
- package/constants.d.ts +12 -0
- package/constants.js +13 -0
- package/constants.js.map +1 -0
- package/context.d.ts +7 -0
- package/context.js +6 -0
- package/context.js.map +1 -0
- package/fragments/form/Form.d.ts +8 -0
- package/fragments/form/Form.js +12 -0
- package/fragments/form/Form.js.map +1 -0
- package/fragments/form/Form.styles.d.ts +25 -0
- package/fragments/form/Form.styles.js +7 -0
- package/fragments/form/Form.styles.js.map +1 -0
- package/fragments/form/FormSection.d.ts +12 -0
- package/fragments/form/FormSection.js +7 -0
- package/fragments/form/FormSection.js.map +1 -0
- package/fragments/form/FormSection.styles.d.ts +61 -0
- package/fragments/form/FormSection.styles.js +24 -0
- package/fragments/form/FormSection.styles.js.map +1 -0
- package/fragments/navbar/Navbar.d.ts +30 -0
- package/fragments/navbar/Navbar.js +26 -0
- package/fragments/navbar/Navbar.js.map +1 -0
- package/fragments/navbar/Navbar.styles.d.ts +55 -0
- package/fragments/navbar/Navbar.styles.js +12 -0
- package/fragments/navbar/Navbar.styles.js.map +1 -0
- package/fragments/page/PageHeader.d.ts +10 -0
- package/fragments/page/PageHeader.js +7 -0
- package/fragments/page/PageHeader.js.map +1 -0
- package/fragments/page/PageHeader.styles.d.ts +37 -0
- package/fragments/page/PageHeader.styles.js +9 -0
- package/fragments/page/PageHeader.styles.js.map +1 -0
- package/fragments/shell/Shell.d.ts +18 -0
- package/fragments/shell/Shell.js +12 -0
- package/fragments/shell/Shell.js.map +1 -0
- package/fragments/shell/Shell.styles.d.ts +37 -0
- package/fragments/shell/Shell.styles.js +18 -0
- package/fragments/shell/Shell.styles.js.map +1 -0
- package/fragments/sidebar/Sidebar.d.ts +39 -0
- package/fragments/sidebar/Sidebar.js +83 -0
- package/fragments/sidebar/Sidebar.js.map +1 -0
- package/fragments/sidebar/Sidebar.styles.d.ts +79 -0
- package/fragments/sidebar/Sidebar.styles.js +26 -0
- package/fragments/sidebar/Sidebar.styles.js.map +1 -0
- package/fragments/sidebar/SidebarNavigation.d.ts +19 -0
- package/fragments/sidebar/SidebarNavigation.js +51 -0
- package/fragments/sidebar/SidebarNavigation.js.map +1 -0
- package/fragments/widget/Widget.d.ts +15 -0
- package/fragments/widget/Widget.js +11 -0
- package/fragments/widget/Widget.js.map +1 -0
- package/fragments/widget/Widget.styles.d.ts +52 -0
- package/fragments/widget/Widget.styles.js +20 -0
- package/fragments/widget/Widget.styles.js.map +1 -0
- package/index.d.ts +12 -0
- package/index.js +2 -55
- package/index.js.map +1 -0
- package/package.json +44 -40
- package/provider.d.ts +7 -0
- package/provider.js +7 -0
- package/provider.js.map +1 -0
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
export declare const navbar: import("tailwind-variants").TVReturnType<{
|
|
2
|
+
[key: string]: {
|
|
3
|
+
[key: string]: import("tailwind-variants").ClassValue | {
|
|
4
|
+
end?: import("tailwind-variants").ClassValue;
|
|
5
|
+
tab?: import("tailwind-variants").ClassValue;
|
|
6
|
+
topbar?: import("tailwind-variants").ClassValue;
|
|
7
|
+
tabs?: import("tailwind-variants").ClassValue;
|
|
8
|
+
bottomNav?: import("tailwind-variants").ClassValue;
|
|
9
|
+
bottomNavBadge?: import("tailwind-variants").ClassValue;
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
} | {
|
|
13
|
+
[x: string]: {
|
|
14
|
+
[x: string]: import("tailwind-variants").ClassValue | {
|
|
15
|
+
end?: import("tailwind-variants").ClassValue;
|
|
16
|
+
tab?: import("tailwind-variants").ClassValue;
|
|
17
|
+
topbar?: import("tailwind-variants").ClassValue;
|
|
18
|
+
tabs?: import("tailwind-variants").ClassValue;
|
|
19
|
+
bottomNav?: import("tailwind-variants").ClassValue;
|
|
20
|
+
bottomNavBadge?: import("tailwind-variants").ClassValue;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
} | {}, {
|
|
24
|
+
topbar: string;
|
|
25
|
+
tabs: string;
|
|
26
|
+
tab: string;
|
|
27
|
+
end: string;
|
|
28
|
+
bottomNav: string;
|
|
29
|
+
bottomNavBadge: string;
|
|
30
|
+
}, undefined, {
|
|
31
|
+
[key: string]: {
|
|
32
|
+
[key: string]: import("tailwind-variants").ClassValue | {
|
|
33
|
+
end?: import("tailwind-variants").ClassValue;
|
|
34
|
+
tab?: import("tailwind-variants").ClassValue;
|
|
35
|
+
topbar?: import("tailwind-variants").ClassValue;
|
|
36
|
+
tabs?: import("tailwind-variants").ClassValue;
|
|
37
|
+
bottomNav?: import("tailwind-variants").ClassValue;
|
|
38
|
+
bottomNavBadge?: import("tailwind-variants").ClassValue;
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
} | {}, {
|
|
42
|
+
topbar: string;
|
|
43
|
+
tabs: string;
|
|
44
|
+
tab: string;
|
|
45
|
+
end: string;
|
|
46
|
+
bottomNav: string;
|
|
47
|
+
bottomNavBadge: string;
|
|
48
|
+
}, import("tailwind-variants").TVReturnType<unknown, {
|
|
49
|
+
topbar: string;
|
|
50
|
+
tabs: string;
|
|
51
|
+
tab: string;
|
|
52
|
+
end: string;
|
|
53
|
+
bottomNav: string;
|
|
54
|
+
bottomNavBadge: string;
|
|
55
|
+
}, undefined, unknown, unknown, undefined>>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { tv } from 'tailwind-variants';
|
|
2
|
+
export const navbar = tv({
|
|
3
|
+
slots: {
|
|
4
|
+
topbar: 'fragment-navbar__topbar',
|
|
5
|
+
tabs: 'fragment-navbar__tabs',
|
|
6
|
+
tab: 'fragment-navbar__tab',
|
|
7
|
+
end: 'fragment-navbar__end',
|
|
8
|
+
bottomNav: 'fragment-navbar__bottom-nav',
|
|
9
|
+
bottomNavBadge: 'fragment-navbar__bottom-nav-badge',
|
|
10
|
+
},
|
|
11
|
+
});
|
|
12
|
+
//# sourceMappingURL=Navbar.styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Navbar.styles.js","sourceRoot":"","sources":["../../src/fragments/navbar/Navbar.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAEvC,MAAM,CAAC,MAAM,MAAM,GAAG,EAAE,CAAC;IACvB,KAAK,EAAE;QACL,MAAM,EAAE,yBAAyB;QACjC,IAAI,EAAE,uBAAuB;QAC7B,GAAG,EAAE,sBAAsB;QAC3B,GAAG,EAAE,sBAAsB;QAC3B,SAAS,EAAE,6BAA6B;QACxC,cAAc,EAAE,mCAAmC;KACpD;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Primary UI component for Form Sections
|
|
3
|
+
*/
|
|
4
|
+
import React from 'react';
|
|
5
|
+
export interface PageHeaderProps {
|
|
6
|
+
children?: React.ReactNode;
|
|
7
|
+
title: string;
|
|
8
|
+
description?: React.ReactNode;
|
|
9
|
+
}
|
|
10
|
+
export declare const PageHeader: React.FC<PageHeaderProps>;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { pageHeader } from './PageHeader.styles';
|
|
3
|
+
export const PageHeader = ({ children, title, description, ...props }) => {
|
|
4
|
+
const v = pageHeader(props);
|
|
5
|
+
return (_jsxs("header", { className: v.base(), children: [_jsxs("div", { children: [_jsx("h1", { children: title }), description && _jsx("p", { className: v.description(), children: description })] }), _jsx("div", { className: v.actions(), children: children })] }));
|
|
6
|
+
};
|
|
7
|
+
//# sourceMappingURL=PageHeader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PageHeader.js","sourceRoot":"","sources":["../../src/fragments/page/PageHeader.tsx"],"names":[],"mappings":";AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AASjD,MAAM,CAAC,MAAM,UAAU,GAA8B,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE;IAClG,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAE5B,OAAO,CACL,kBAAQ,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,aACzB,0BACE,uBAAK,KAAK,GAAM,EACf,WAAW,IAAI,YAAG,SAAS,EAAE,CAAC,CAAC,WAAW,EAAE,YAAG,WAAW,GAAK,IAC5D,EACN,cAAK,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,YAAG,QAAQ,GAAO,IACtC,CACV,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export declare const pageHeader: import("tailwind-variants").TVReturnType<{
|
|
2
|
+
[key: string]: {
|
|
3
|
+
[key: string]: import("tailwind-variants").ClassValue | {
|
|
4
|
+
base?: import("tailwind-variants").ClassValue;
|
|
5
|
+
description?: import("tailwind-variants").ClassValue;
|
|
6
|
+
actions?: import("tailwind-variants").ClassValue;
|
|
7
|
+
};
|
|
8
|
+
};
|
|
9
|
+
} | {
|
|
10
|
+
[x: string]: {
|
|
11
|
+
[x: string]: import("tailwind-variants").ClassValue | {
|
|
12
|
+
base?: import("tailwind-variants").ClassValue;
|
|
13
|
+
description?: import("tailwind-variants").ClassValue;
|
|
14
|
+
actions?: import("tailwind-variants").ClassValue;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
} | {}, {
|
|
18
|
+
base: string;
|
|
19
|
+
description: string;
|
|
20
|
+
actions: string;
|
|
21
|
+
}, undefined, {
|
|
22
|
+
[key: string]: {
|
|
23
|
+
[key: string]: import("tailwind-variants").ClassValue | {
|
|
24
|
+
base?: import("tailwind-variants").ClassValue;
|
|
25
|
+
description?: import("tailwind-variants").ClassValue;
|
|
26
|
+
actions?: import("tailwind-variants").ClassValue;
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
} | {}, {
|
|
30
|
+
base: string;
|
|
31
|
+
description: string;
|
|
32
|
+
actions: string;
|
|
33
|
+
}, import("tailwind-variants").TVReturnType<unknown, {
|
|
34
|
+
base: string;
|
|
35
|
+
description: string;
|
|
36
|
+
actions: string;
|
|
37
|
+
}, undefined, unknown, unknown, undefined>>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { tv } from 'tailwind-variants';
|
|
2
|
+
export const pageHeader = tv({
|
|
3
|
+
slots: {
|
|
4
|
+
base: 'fragment-page-header',
|
|
5
|
+
description: 'fragment-page-header__description',
|
|
6
|
+
actions: 'fragment-page-header__actions',
|
|
7
|
+
},
|
|
8
|
+
});
|
|
9
|
+
//# sourceMappingURL=PageHeader.styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PageHeader.styles.js","sourceRoot":"","sources":["../../src/fragments/page/PageHeader.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAEvC,MAAM,CAAC,MAAM,UAAU,GAAG,EAAE,CAAC;IAC3B,KAAK,EAAE;QACL,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,mCAAmC;QAChD,OAAO,EAAE,+BAA+B;KACzC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type NavbarProps } from '../navbar/Navbar';
|
|
2
|
+
import { type SidebarProps } from '../sidebar/Sidebar';
|
|
3
|
+
/**
|
|
4
|
+
* Primary UI component for Dashboard App Shell
|
|
5
|
+
*/
|
|
6
|
+
interface ShellPropsHorizontal {
|
|
7
|
+
direction: 'horizontal';
|
|
8
|
+
sidebar: SidebarProps;
|
|
9
|
+
children: React.ReactNode;
|
|
10
|
+
}
|
|
11
|
+
interface ShellPropsVertical {
|
|
12
|
+
direction: 'vertical';
|
|
13
|
+
navbar: NavbarProps;
|
|
14
|
+
children: React.ReactNode;
|
|
15
|
+
}
|
|
16
|
+
export type ShellProps = ShellPropsHorizontal | ShellPropsVertical;
|
|
17
|
+
export declare const Shell: React.FC<ShellProps>;
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Navbar } from '../navbar/Navbar';
|
|
3
|
+
import { Sidebar } from '../sidebar/Sidebar';
|
|
4
|
+
import { shell } from './Shell.styles';
|
|
5
|
+
export const Shell = (props) => {
|
|
6
|
+
const v = shell({ direction: props.direction });
|
|
7
|
+
if (props.direction === 'vertical') {
|
|
8
|
+
return (_jsxs("div", { className: v.base(), children: [_jsx(Navbar, { ...props.navbar }), _jsx("main", { className: v.main(), children: props.children })] }));
|
|
9
|
+
}
|
|
10
|
+
return (_jsxs("div", { className: v.base(), children: [_jsx(Sidebar, { ...props.sidebar }), _jsx("main", { className: v.main(), children: props.children })] }));
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=Shell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Shell.js","sourceRoot":"","sources":["../../src/fragments/shell/Shell.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAoB,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAqB,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAoBvC,MAAM,CAAC,MAAM,KAAK,GAAyB,CAAC,KAAK,EAAE,EAAE;IACnD,MAAM,CAAC,GAAG,KAAK,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;IAEhD,IAAI,KAAK,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;QACnC,OAAO,CACL,eAAK,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,aACtB,KAAC,MAAM,OAAK,KAAK,CAAC,MAAM,GAAI,EAC5B,eAAM,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,YACtB,KAAK,CAAC,QAAQ,GACV,IACH,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,eAAK,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,aACtB,KAAC,OAAO,OAAK,KAAK,CAAC,OAAO,GAAI,EAC9B,eAAM,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,YACtB,KAAK,CAAC,QAAQ,GACV,IACH,CACP,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export declare const shell: import("tailwind-variants").TVReturnType<{
|
|
2
|
+
direction: {
|
|
3
|
+
horizontal: {
|
|
4
|
+
base: string;
|
|
5
|
+
};
|
|
6
|
+
vertical: {
|
|
7
|
+
base: string;
|
|
8
|
+
};
|
|
9
|
+
};
|
|
10
|
+
}, {
|
|
11
|
+
base: string;
|
|
12
|
+
main: string;
|
|
13
|
+
}, undefined, {
|
|
14
|
+
direction: {
|
|
15
|
+
horizontal: {
|
|
16
|
+
base: string;
|
|
17
|
+
};
|
|
18
|
+
vertical: {
|
|
19
|
+
base: string;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
}, {
|
|
23
|
+
base: string;
|
|
24
|
+
main: string;
|
|
25
|
+
}, import("tailwind-variants").TVReturnType<{
|
|
26
|
+
direction: {
|
|
27
|
+
horizontal: {
|
|
28
|
+
base: string;
|
|
29
|
+
};
|
|
30
|
+
vertical: {
|
|
31
|
+
base: string;
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
}, {
|
|
35
|
+
base: string;
|
|
36
|
+
main: string;
|
|
37
|
+
}, undefined, unknown, unknown, undefined>>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { tv } from 'tailwind-variants';
|
|
2
|
+
export const shell = tv({
|
|
3
|
+
slots: {
|
|
4
|
+
base: 'fragment-shell',
|
|
5
|
+
main: 'fragment-shell__main',
|
|
6
|
+
},
|
|
7
|
+
variants: {
|
|
8
|
+
direction: {
|
|
9
|
+
horizontal: {
|
|
10
|
+
base: 'fragment-shell--horizontal',
|
|
11
|
+
},
|
|
12
|
+
vertical: {
|
|
13
|
+
base: 'fragment-shell--vertical',
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
});
|
|
18
|
+
//# sourceMappingURL=Shell.styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Shell.styles.js","sourceRoot":"","sources":["../../src/fragments/shell/Shell.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAEvC,MAAM,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;IACtB,KAAK,EAAE;QACL,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,sBAAsB;KAC7B;IACD,QAAQ,EAAE;QACR,SAAS,EAAE;YACT,UAAU,EAAE;gBACV,IAAI,EAAE,4BAA4B;aACnC;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,0BAA0B;aACjC;SACF;KACF;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { AvatarImageProps, AvatarProps, DropdownItemProps, DropdownProps, ListBoxProps } from '@heroui/react';
|
|
2
|
+
import type { SidebarNavigationItem, SidebarChildNavigationItem } from './SidebarNavigation';
|
|
3
|
+
/**
|
|
4
|
+
* Primary UI component for Dashboard Sidebars
|
|
5
|
+
*/
|
|
6
|
+
interface SidebarItem {
|
|
7
|
+
key: string;
|
|
8
|
+
align?: 'top' | 'center' | 'bottom';
|
|
9
|
+
}
|
|
10
|
+
interface SidebarItemNavigation extends SidebarItem {
|
|
11
|
+
type: 'navigation';
|
|
12
|
+
label?: string;
|
|
13
|
+
navigation: SidebarNavigationItem[];
|
|
14
|
+
listboxProps?: Omit<ListBoxProps<object>, 'children'>;
|
|
15
|
+
}
|
|
16
|
+
interface SidebarItemUser extends SidebarItem {
|
|
17
|
+
type: 'user';
|
|
18
|
+
avatar?: AvatarProps & AvatarImageProps;
|
|
19
|
+
name: string;
|
|
20
|
+
description?: string;
|
|
21
|
+
dropdown?: Omit<DropdownProps, 'children'>;
|
|
22
|
+
dropdownItems?: (Omit<DropdownItemProps, 'children'> & {
|
|
23
|
+
label: string;
|
|
24
|
+
})[];
|
|
25
|
+
}
|
|
26
|
+
interface SidebarItemCustom extends SidebarItem {
|
|
27
|
+
type: 'custom';
|
|
28
|
+
render: React.ReactNode;
|
|
29
|
+
showCollapsedOnly?: boolean;
|
|
30
|
+
showExpandedOnly?: boolean;
|
|
31
|
+
}
|
|
32
|
+
type SidebarItemVariants = SidebarItemNavigation | SidebarItemUser | SidebarItemCustom;
|
|
33
|
+
export interface SidebarProps {
|
|
34
|
+
items: SidebarItemVariants[];
|
|
35
|
+
layout?: 'auto' | 'collapsed' | 'expanded';
|
|
36
|
+
currentPath?: string;
|
|
37
|
+
}
|
|
38
|
+
export type { SidebarNavigationItem, SidebarChildNavigationItem };
|
|
39
|
+
export declare const Sidebar: React.FC<SidebarProps>;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { createElement as _createElement } from "react";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import { Avatar, Badge, Button, Description, Dropdown, Label, Modal, ScrollShadow, Tooltip } from '@heroui/react';
|
|
4
|
+
import { IconChevronLeft, IconDots } from '@tabler/icons-react';
|
|
5
|
+
import { useEffect, useState } from 'react';
|
|
6
|
+
import { useFragmentUI } from '../../context';
|
|
7
|
+
import { sidebar } from './Sidebar.styles';
|
|
8
|
+
import { breakpointsTailwind } from '../../constants';
|
|
9
|
+
import { SidebarNavigation } from './SidebarNavigation';
|
|
10
|
+
const getAlignmentClass = (align) => align ? `fragment-sidebar__item--${align}` : '';
|
|
11
|
+
const ButtonLink = ({ href, ...props }) => {
|
|
12
|
+
const { linkComponent: LinkComponent } = useFragmentUI();
|
|
13
|
+
return _jsx(LinkComponent, { href: href, children: _jsx("button", { ...props }) });
|
|
14
|
+
};
|
|
15
|
+
const renderItems = (item, options) => {
|
|
16
|
+
switch (item.type) {
|
|
17
|
+
case 'navigation':
|
|
18
|
+
return (_jsx(SidebarNavigation, { navigation: item.navigation, label: item.label, layout: options.layout === 'expanded' ? 'expanded' : 'collapsed', activeLink: options.activeLink, listboxProps: item.listboxProps }));
|
|
19
|
+
case 'user':
|
|
20
|
+
return (_jsxs(Dropdown, { ...item.dropdown, children: [_jsx(Dropdown.Trigger, { className: "fragment-sidebar__user-trigger", children: options.layout === 'expanded' ? (_jsxs("div", { className: "fragment-sidebar__user-info", children: [_jsxs(Avatar, { ...item.avatar, children: [_jsx(Avatar.Image, { ...item.avatar }), _jsx(Avatar.Fallback, { children: item.name.charAt(0) })] }), _jsxs("div", { className: "fragment-sidebar__user-text", children: [_jsx(Label, { children: item.name }), _jsx(Description, { children: item.description })] })] })) : (_jsxs(Avatar, { ...item.avatar, children: [_jsx(Avatar.Image, { ...item.avatar }), _jsx(Avatar.Fallback, { children: item.name.charAt(0) })] })) }), _jsx(Dropdown.Popover, { className: "min-w-[256px]", placement: "bottom start", children: _jsx(Dropdown.Menu, { "aria-label": "User Actions", items: item.dropdownItems || [], children: (dropdownItem) => (_createElement(Dropdown.Item, { ...dropdownItem, key: dropdownItem.label }, dropdownItem.label)) }) })] }));
|
|
21
|
+
case 'custom':
|
|
22
|
+
return ((!item.showExpandedOnly && !item.showCollapsedOnly) ||
|
|
23
|
+
(options.layout === 'expanded' && item.showExpandedOnly) ||
|
|
24
|
+
(options.layout === 'collapsed' && item.showCollapsedOnly))
|
|
25
|
+
? _jsx("div", { className: "fragment-sidebar__custom-item", children: item.render })
|
|
26
|
+
: null;
|
|
27
|
+
default:
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
const getActiveLink = (currentPath, items) => {
|
|
32
|
+
if (!currentPath)
|
|
33
|
+
return undefined;
|
|
34
|
+
const allNavItems = [];
|
|
35
|
+
items.forEach((item) => {
|
|
36
|
+
if (item.type !== 'navigation')
|
|
37
|
+
return;
|
|
38
|
+
item.navigation.forEach((navItem) => {
|
|
39
|
+
allNavItems.push(navItem);
|
|
40
|
+
navItem.items?.forEach((child) => allNavItems.push(child));
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
const possibleMatches = allNavItems
|
|
44
|
+
.filter((navItem) => navItem.link && (currentPath === navItem.link || currentPath.startsWith(navItem.link + '/')))
|
|
45
|
+
.sort((a, b) => b.link.length - a.link.length);
|
|
46
|
+
return (possibleMatches.find((m) => m.link === currentPath) || possibleMatches[0])?.link;
|
|
47
|
+
};
|
|
48
|
+
export const Sidebar = ({ items, currentPath, layout: defaultLayout = 'auto' }) => {
|
|
49
|
+
const [layout, setLayout] = useState(defaultLayout);
|
|
50
|
+
const toggleLayout = () => {
|
|
51
|
+
if (layout === 'auto') {
|
|
52
|
+
if (document.body.clientWidth >= breakpointsTailwind.xl) {
|
|
53
|
+
return setLayout('collapsed');
|
|
54
|
+
}
|
|
55
|
+
return setLayout('expanded');
|
|
56
|
+
}
|
|
57
|
+
setLayout(layout === 'collapsed' ? 'expanded' : 'collapsed');
|
|
58
|
+
};
|
|
59
|
+
const v = sidebar({ layout });
|
|
60
|
+
const [activeLink, setActiveLink] = useState(getActiveLink(currentPath, items));
|
|
61
|
+
const [mobileMenuOpen, setMobileMenuOpen] = useState(false);
|
|
62
|
+
useEffect(() => setActiveLink(getActiveLink(currentPath, items)), [currentPath, items]);
|
|
63
|
+
return (_jsxs(_Fragment, { children: [_jsxs("div", { className: v.base(), children: [_jsxs("div", { className: v.collapsed(), children: [_jsx(ScrollShadow, { hideScrollBar: true, className: v.collapsedBody(), children: items.map((item) => {
|
|
64
|
+
const children = item.align !== 'bottom' ? renderItems(item, { layout: 'collapsed', activeLink }) : null;
|
|
65
|
+
return children ? (_jsx("div", { className: getAlignmentClass(item.align), children: children }, item.key)) : null;
|
|
66
|
+
}) }), _jsx("div", { className: v.collapsedFooter(), children: items.map((item) => {
|
|
67
|
+
const children = item.align === 'bottom' ? renderItems(item, { layout: 'collapsed', activeLink }) : null;
|
|
68
|
+
return children ? (_jsx("div", { className: getAlignmentClass(item.align), children: children }, item.key)) : null;
|
|
69
|
+
}) })] }), _jsxs("div", { className: v.expanded(), children: [_jsx(ScrollShadow, { hideScrollBar: true, className: v.expandedBody(), children: items.map((item) => {
|
|
70
|
+
const children = item.align !== 'bottom' ? renderItems(item, { layout: 'expanded', activeLink }) : null;
|
|
71
|
+
return children ? (_jsx("div", { className: getAlignmentClass(item.align), children: children }, item.key)) : null;
|
|
72
|
+
}) }), _jsx("div", { className: v.expandedFooter(), children: items.map((item) => {
|
|
73
|
+
const children = item.align === 'bottom' ? renderItems(item, { layout: 'expanded', activeLink }) : null;
|
|
74
|
+
return children ? (_jsx("div", { className: getAlignmentClass(item.align), children: children }, item.key)) : null;
|
|
75
|
+
}) })] }), _jsx("div", { className: v.placeholder() }), _jsx("div", { className: v.layoutButtonWrapper(), children: _jsx(Button, { size: "sm", isIconOnly: true, variant: "tertiary", className: v.layoutButton(), onPress: toggleLayout, children: _jsx(IconChevronLeft, {}) }) })] }), _jsxs("nav", { className: v.bottomNav(), onClick: () => setMobileMenuOpen(false), children: [items.find((item) => item.type === 'navigation')?.navigation?.map((navItem) => (_jsxs(Tooltip, { children: [_jsx(Tooltip.Trigger, { children: _jsx(Button, { render: (props) => _jsx(ButtonLink, { ...props, href: navItem.link }), isIconOnly: true, variant: activeLink === navItem.link ? 'tertiary' : 'ghost', onPress: () => setMobileMenuOpen(false), children: _jsxs(Badge.Anchor, { children: [navItem.icon, typeof navItem.badgeContent === 'string' && navItem.badgeContent ? (_jsx(Badge, { variant: "primary", color: "accent", size: "sm", className: "fragment-sidebar__bottom-nav-badge", children: navItem.badgeContent })) : null] }) }) }), _jsx(Tooltip.Content, { placement: "top", offset: 10, children: navItem.label })] }, navItem.label))), _jsx(Button, { variant: mobileMenuOpen ? 'tertiary' : 'ghost', isIconOnly: true, onPress: () => setMobileMenuOpen(!mobileMenuOpen), children: _jsx(IconDots, {}) })] }), _jsx(Modal, { isOpen: mobileMenuOpen, onOpenChange: setMobileMenuOpen, children: _jsx(Modal.Backdrop, { children: _jsx(Modal.Container, { children: _jsxs(Modal.Dialog, { children: [_jsx(Modal.Header, {}), _jsx(Modal.Body, { className: v.bottomNavModalBody(), children: items.map((item) => {
|
|
76
|
+
const children = item.align !== 'bottom' ? renderItems(item, { layout: 'expanded', activeLink }) : null;
|
|
77
|
+
return children ? (_jsx("div", { className: getAlignmentClass(item.align), children: children }, item.key)) : null;
|
|
78
|
+
}) }), _jsx(Modal.Footer, { className: v.bottomNavModalFooter(), children: items.map((item) => {
|
|
79
|
+
const children = item.align === 'bottom' ? renderItems(item, { layout: 'expanded', activeLink }) : null;
|
|
80
|
+
return children ? (_jsx("div", { className: getAlignmentClass(item.align), children: children }, item.key)) : null;
|
|
81
|
+
}) })] }) }) }) })] }));
|
|
82
|
+
};
|
|
83
|
+
//# sourceMappingURL=Sidebar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Sidebar.js","sourceRoot":"","sources":["../../src/fragments/sidebar/Sidebar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
export declare const sidebar: import("tailwind-variants").TVReturnType<{
|
|
2
|
+
layout: {
|
|
3
|
+
auto: {
|
|
4
|
+
base: string;
|
|
5
|
+
};
|
|
6
|
+
collapsed: {
|
|
7
|
+
base: string;
|
|
8
|
+
};
|
|
9
|
+
expanded: {
|
|
10
|
+
base: string;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
}, {
|
|
14
|
+
base: string;
|
|
15
|
+
collapsed: string;
|
|
16
|
+
collapsedBody: string;
|
|
17
|
+
collapsedFooter: string;
|
|
18
|
+
expanded: string;
|
|
19
|
+
expandedBody: string;
|
|
20
|
+
expandedFooter: string;
|
|
21
|
+
placeholder: string;
|
|
22
|
+
layoutButtonWrapper: string;
|
|
23
|
+
layoutButton: string;
|
|
24
|
+
bottomNav: string;
|
|
25
|
+
bottomNavModalBody: string;
|
|
26
|
+
bottomNavModalFooter: string;
|
|
27
|
+
}, undefined, {
|
|
28
|
+
layout: {
|
|
29
|
+
auto: {
|
|
30
|
+
base: string;
|
|
31
|
+
};
|
|
32
|
+
collapsed: {
|
|
33
|
+
base: string;
|
|
34
|
+
};
|
|
35
|
+
expanded: {
|
|
36
|
+
base: string;
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
}, {
|
|
40
|
+
base: string;
|
|
41
|
+
collapsed: string;
|
|
42
|
+
collapsedBody: string;
|
|
43
|
+
collapsedFooter: string;
|
|
44
|
+
expanded: string;
|
|
45
|
+
expandedBody: string;
|
|
46
|
+
expandedFooter: string;
|
|
47
|
+
placeholder: string;
|
|
48
|
+
layoutButtonWrapper: string;
|
|
49
|
+
layoutButton: string;
|
|
50
|
+
bottomNav: string;
|
|
51
|
+
bottomNavModalBody: string;
|
|
52
|
+
bottomNavModalFooter: string;
|
|
53
|
+
}, import("tailwind-variants").TVReturnType<{
|
|
54
|
+
layout: {
|
|
55
|
+
auto: {
|
|
56
|
+
base: string;
|
|
57
|
+
};
|
|
58
|
+
collapsed: {
|
|
59
|
+
base: string;
|
|
60
|
+
};
|
|
61
|
+
expanded: {
|
|
62
|
+
base: string;
|
|
63
|
+
};
|
|
64
|
+
};
|
|
65
|
+
}, {
|
|
66
|
+
base: string;
|
|
67
|
+
collapsed: string;
|
|
68
|
+
collapsedBody: string;
|
|
69
|
+
collapsedFooter: string;
|
|
70
|
+
expanded: string;
|
|
71
|
+
expandedBody: string;
|
|
72
|
+
expandedFooter: string;
|
|
73
|
+
placeholder: string;
|
|
74
|
+
layoutButtonWrapper: string;
|
|
75
|
+
layoutButton: string;
|
|
76
|
+
bottomNav: string;
|
|
77
|
+
bottomNavModalBody: string;
|
|
78
|
+
bottomNavModalFooter: string;
|
|
79
|
+
}, undefined, unknown, unknown, undefined>>;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { tv } from 'tailwind-variants';
|
|
2
|
+
export const sidebar = tv({
|
|
3
|
+
slots: {
|
|
4
|
+
base: 'fragment-sidebar',
|
|
5
|
+
collapsed: 'fragment-sidebar__collapsed',
|
|
6
|
+
collapsedBody: 'fragment-sidebar__collapsed-body',
|
|
7
|
+
collapsedFooter: 'fragment-sidebar__collapsed-footer',
|
|
8
|
+
expanded: 'fragment-sidebar__expanded',
|
|
9
|
+
expandedBody: 'fragment-sidebar__expanded-body',
|
|
10
|
+
expandedFooter: 'fragment-sidebar__expanded-footer',
|
|
11
|
+
placeholder: 'fragment-sidebar__placeholder',
|
|
12
|
+
layoutButtonWrapper: 'fragment-sidebar__layout-button-wrapper',
|
|
13
|
+
layoutButton: 'fragment-sidebar__layout-button',
|
|
14
|
+
bottomNav: 'fragment-sidebar__bottom-nav',
|
|
15
|
+
bottomNavModalBody: 'fragment-sidebar__modal-body',
|
|
16
|
+
bottomNavModalFooter: 'fragment-sidebar__modal-footer',
|
|
17
|
+
},
|
|
18
|
+
variants: {
|
|
19
|
+
layout: {
|
|
20
|
+
auto: { base: 'fragment-sidebar--auto' },
|
|
21
|
+
collapsed: { base: 'fragment-sidebar--collapsed' },
|
|
22
|
+
expanded: { base: 'fragment-sidebar--expanded' },
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
});
|
|
26
|
+
//# sourceMappingURL=Sidebar.styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Sidebar.styles.js","sourceRoot":"","sources":["../../src/fragments/sidebar/Sidebar.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAEvC,MAAM,CAAC,MAAM,OAAO,GAAG,EAAE,CAAC;IACxB,KAAK,EAAE;QACL,IAAI,EAAE,kBAAkB;QACxB,SAAS,EAAE,6BAA6B;QACxC,aAAa,EAAE,kCAAkC;QACjD,eAAe,EAAE,oCAAoC;QACrD,QAAQ,EAAE,4BAA4B;QACtC,YAAY,EAAE,iCAAiC;QAC/C,cAAc,EAAE,mCAAmC;QACnD,WAAW,EAAE,+BAA+B;QAC5C,mBAAmB,EAAE,yCAAyC;QAC9D,YAAY,EAAE,iCAAiC;QAC/C,SAAS,EAAE,8BAA8B;QACzC,kBAAkB,EAAE,8BAA8B;QAClD,oBAAoB,EAAE,gCAAgC;KACvD;IACD,QAAQ,EAAE;QACR,MAAM,EAAE;YACN,IAAI,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE;YACxC,SAAS,EAAE,EAAE,IAAI,EAAE,6BAA6B,EAAE;YAClD,QAAQ,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE;SACjD;KACF;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ListBoxProps } from '@heroui/react';
|
|
2
|
+
export type SidebarChildNavigationItem = Omit<SidebarNavigationItem, 'items'>;
|
|
3
|
+
export interface SidebarNavigationItem {
|
|
4
|
+
label: string;
|
|
5
|
+
link: string;
|
|
6
|
+
onClick?: React.MouseEventHandler;
|
|
7
|
+
icon?: React.ReactNode;
|
|
8
|
+
endContent?: React.ReactNode;
|
|
9
|
+
badgeContent?: React.ReactNode;
|
|
10
|
+
items?: SidebarChildNavigationItem[];
|
|
11
|
+
}
|
|
12
|
+
export interface SidebarNavigationProps {
|
|
13
|
+
navigation: SidebarNavigationItem[];
|
|
14
|
+
label?: string;
|
|
15
|
+
layout?: 'expanded' | 'collapsed';
|
|
16
|
+
activeLink?: string;
|
|
17
|
+
listboxProps?: Omit<ListBoxProps<object>, 'children'>;
|
|
18
|
+
}
|
|
19
|
+
export declare const SidebarNavigation: React.FC<SidebarNavigationProps>;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Accordion, Badge, Button, Chip, Header, ListBox, Tooltip } from '@heroui/react';
|
|
3
|
+
import { IconChevronRight } from '@tabler/icons-react';
|
|
4
|
+
import { useFragmentUI } from '../../context';
|
|
5
|
+
const ButtonLink = ({ href, ...props }) => {
|
|
6
|
+
const { linkComponent: LinkComponent } = useFragmentUI();
|
|
7
|
+
return _jsx(LinkComponent, { href: href, children: _jsx("button", { ...props }) });
|
|
8
|
+
};
|
|
9
|
+
const NavItemBadge = ({ badgeContent, endContent }) => {
|
|
10
|
+
const content = typeof badgeContent === 'string'
|
|
11
|
+
? _jsx(Chip, { size: "sm", color: "accent", variant: "primary", children: badgeContent })
|
|
12
|
+
: endContent ?? null;
|
|
13
|
+
return content ? _jsx("span", { className: "ml-auto", children: content }) : null;
|
|
14
|
+
};
|
|
15
|
+
const NavSubList = ({ items, activeLink, ariaLabel }) => (_jsx("div", { className: "fragment-sidebar__tree-list", children: _jsx(ListBox, { "aria-label": ariaLabel, children: items.map((subItem) => (_jsxs(ListBox.Item, { href: subItem.link, className: `fragment-sidebar__sub-item${activeLink === subItem.link ? ' fragment-sidebar__nav-item--active' : ''}`, children: [subItem.icon, subItem.label, _jsx(NavItemBadge, { badgeContent: subItem.badgeContent, endContent: subItem.endContent })] }, subItem.link))) }) }));
|
|
16
|
+
export const SidebarNavigation = ({ navigation, label, layout = 'expanded', activeLink, listboxProps, }) => {
|
|
17
|
+
if (layout === 'collapsed') {
|
|
18
|
+
return (_jsx("nav", { className: "fragment-sidebar__collapsed-nav", children: navigation.map((navItem) => {
|
|
19
|
+
const hasChildren = !!navItem.items?.length;
|
|
20
|
+
const isActive = hasChildren
|
|
21
|
+
? navItem.items.some((child) => activeLink === child.link)
|
|
22
|
+
: activeLink === navItem.link;
|
|
23
|
+
return (_jsxs(Tooltip, { delay: 0, closeDelay: hasChildren ? 300 : 0, children: [_jsx(Tooltip.Trigger, { children: _jsxs(Badge.Anchor, { children: [_jsx(Button, { variant: isActive ? 'primary' : 'ghost', size: "lg", render: (props) => _jsx(ButtonLink, { ...props, href: navItem.link }), isIconOnly: true, children: navItem.icon }), typeof navItem.badgeContent === 'string' && navItem.badgeContent ? (_jsx(Badge, { variant: "primary", color: "accent", size: "sm", children: navItem.badgeContent })) : null] }) }), _jsx(Tooltip.Content, { placement: hasChildren ? 'bottom start' : 'right', children: hasChildren ? (_jsx(NavSubList, { items: navItem.items, activeLink: activeLink, ariaLabel: navItem.label })) : navItem.label })] }, navItem.label));
|
|
24
|
+
}) }));
|
|
25
|
+
}
|
|
26
|
+
const batches = [];
|
|
27
|
+
for (const navItem of navigation) {
|
|
28
|
+
if (navItem.items?.length) {
|
|
29
|
+
batches.push({ type: 'accordion', item: navItem });
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
const last = batches[batches.length - 1];
|
|
33
|
+
if (last?.type === 'list') {
|
|
34
|
+
last.items.push(navItem);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
batches.push({ type: 'list', items: [navItem] });
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return (_jsxs("div", { className: "fragment-sidebar__nav", children: [label && _jsx(Header, { children: label }), batches.map((batch, i) => {
|
|
42
|
+
if (batch.type === 'list') {
|
|
43
|
+
return (_jsx(ListBox, { "aria-label": "Navigation", ...listboxProps, children: batch.items.map((navItem) => (_jsxs(ListBox.Item, { href: navItem.link, className: activeLink === navItem.link ? 'fragment-sidebar__nav-item--active' : '', children: [navItem.icon, navItem.label, _jsx(NavItemBadge, { badgeContent: navItem.badgeContent, endContent: navItem.endContent })] }, navItem.link))) }, i));
|
|
44
|
+
}
|
|
45
|
+
const navItem = batch.item;
|
|
46
|
+
const hasActiveChild = navItem.items.some((child) => activeLink === child.link);
|
|
47
|
+
const isParentActive = activeLink === navItem.link;
|
|
48
|
+
return (_jsx("div", { className: "px-1", children: _jsx(Accordion, { hideSeparator: true, defaultExpandedKeys: isParentActive || hasActiveChild ? [navItem.label] : [], children: _jsxs(Accordion.Item, { id: navItem.label, children: [_jsx(Accordion.Heading, { children: _jsxs(Accordion.Trigger, { className: `fragment-sidebar__accordion-trigger${isParentActive ? ' fragment-sidebar__accordion-trigger--active' : ''}`, children: [navItem.icon, _jsx("span", { className: "fragment-sidebar__accordion-label", children: navItem.label }), _jsx(Accordion.Indicator, { children: _jsx(IconChevronRight, { className: "fragment-sidebar__accordion-indicator" }) })] }) }), _jsx(Accordion.Panel, { children: _jsx(NavSubList, { items: navItem.items, activeLink: activeLink, ariaLabel: `${navItem.label} sub-navigation` }) })] }) }) }, navItem.label));
|
|
49
|
+
})] }));
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=SidebarNavigation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SidebarNavigation.js","sourceRoot":"","sources":["../../src/fragments/sidebar/SidebarNavigation.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Primary UI component for Dashboard Widgets
|
|
3
|
+
*/
|
|
4
|
+
import { CardProps } from '@heroui/react';
|
|
5
|
+
export interface WidgetProps {
|
|
6
|
+
children: React.ReactNode;
|
|
7
|
+
header?: {
|
|
8
|
+
startContent?: React.ReactNode;
|
|
9
|
+
endContent?: React.ReactNode;
|
|
10
|
+
};
|
|
11
|
+
title?: string;
|
|
12
|
+
size?: 'sm' | 'md' | 'lg';
|
|
13
|
+
variant?: CardProps['variant'];
|
|
14
|
+
}
|
|
15
|
+
export declare const Widget: React.FC<WidgetProps>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Primary UI component for Dashboard Widgets
|
|
4
|
+
*/
|
|
5
|
+
import { Card } from '@heroui/react';
|
|
6
|
+
import { widget } from './Widget.styles';
|
|
7
|
+
export const Widget = ({ children, title, header, variant, ...props }) => {
|
|
8
|
+
const { base, content, header: headerClasses, headerEndContent } = widget(props);
|
|
9
|
+
return (_jsxs(Card, { className: base(), variant: variant, children: [(title || header?.endContent) && (_jsxs(Card.Header, { className: headerClasses(), children: [title && _jsx("h3", { children: title }), _jsx("div", { className: headerEndContent(), children: header?.endContent })] })), _jsx(Card.Content, { className: content(), children: children })] }));
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=Widget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Widget.js","sourceRoot":"","sources":["../../src/fragments/widget/Widget.tsx"],"names":[],"mappings":";AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAa,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAczC,MAAM,CAAC,MAAM,MAAM,GAA0B,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE;IAC9F,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAEjF,OAAO,CACL,MAAC,IAAI,IAAC,SAAS,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,aACtC,CAAC,KAAK,IAAI,MAAM,EAAE,UAAU,CAAC,IAAI,CAChC,MAAC,IAAI,CAAC,MAAM,IAAC,SAAS,EAAE,aAAa,EAAE,aACpC,KAAK,IAAI,uBAAK,KAAK,GAAM,EAC1B,cAAK,SAAS,EAAE,gBAAgB,EAAE,YAAG,MAAM,EAAE,UAAU,GAAO,IAClD,CACf,EACD,KAAC,IAAI,CAAC,OAAO,IAAC,SAAS,EAAE,OAAO,EAAE,YAC/B,QAAQ,GACI,IACV,CACR,CAAC;AACJ,CAAC,CAAC"}
|