@fragment-build/ui 2.2.1 → 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.js +1 -22
- package/components/grid/Grid.js.map +1 -1
- 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 +3 -6
- package/components/multi-switch/MultiSwitch.js +4 -29
- package/components/multi-switch/MultiSwitch.js.map +1 -1
- 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 +1 -1
- package/components/theme-switch/ThemeSwitch.js +2 -2
- package/components/theme-switch/ThemeSwitch.js.map +1 -1
- package/context.d.ts +6 -105
- package/context.js +5 -466
- package/context.js.map +1 -1
- package/fragments/form/Form.js +5 -11
- package/fragments/form/Form.js.map +1 -1
- 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.js +3 -34
- package/fragments/form/FormSection.js.map +1 -1
- 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.js +1 -8
- package/fragments/page/PageHeader.js.map +1 -1
- 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 +10 -1
- package/fragments/shell/Shell.js +8 -2
- package/fragments/shell/Shell.js.map +1 -1
- 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 +5 -15
- package/fragments/sidebar/Sidebar.js +39 -49
- package/fragments/sidebar/Sidebar.js.map +1 -1
- package/fragments/sidebar/Sidebar.styles.d.ts +9 -48
- package/fragments/sidebar/Sidebar.styles.js +16 -35
- package/fragments/sidebar/Sidebar.styles.js.map +1 -1
- 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 +2 -2
- package/fragments/widget/Widget.js +5 -304
- package/fragments/widget/Widget.js.map +1 -1
- 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 +1 -54
- package/index.js +2 -55
- package/index.js.map +1 -1
- package/package.json +44 -40
- package/provider.d.ts +4 -4
- package/provider.js +3 -13
- package/provider.js.map +1 -1
- package/components/base/Accordion.d.ts +0 -2
- package/components/base/Accordion.js +0 -5
- package/components/base/Accordion.js.map +0 -1
- package/components/base/Alert.d.ts +0 -1
- package/components/base/Alert.js +0 -4
- package/components/base/Alert.js.map +0 -1
- package/components/base/Autocomplete.d.ts +0 -3
- package/components/base/Autocomplete.js +0 -6
- package/components/base/Autocomplete.js.map +0 -1
- package/components/base/Avatar.d.ts +0 -2
- package/components/base/Avatar.js +0 -5
- package/components/base/Avatar.js.map +0 -1
- package/components/base/Badge.d.ts +0 -1
- package/components/base/Badge.js +0 -4
- package/components/base/Badge.js.map +0 -1
- package/components/base/Breadcrumbs.d.ts +0 -2
- package/components/base/Breadcrumbs.js +0 -5
- package/components/base/Breadcrumbs.js.map +0 -1
- package/components/base/Button.d.ts +0 -2
- package/components/base/Button.js +0 -5
- package/components/base/Button.js.map +0 -1
- package/components/base/Calendar.d.ts +0 -1
- package/components/base/Calendar.js +0 -4
- package/components/base/Calendar.js.map +0 -1
- package/components/base/Card.d.ts +0 -2
- package/components/base/Card.js +0 -5
- package/components/base/Card.js.map +0 -1
- package/components/base/Checkbox.d.ts +0 -2
- package/components/base/Checkbox.js +0 -5
- package/components/base/Checkbox.js.map +0 -1
- package/components/base/Chip.d.ts +0 -1
- package/components/base/Chip.js +0 -4
- package/components/base/Chip.js.map +0 -1
- package/components/base/CircularProgress.d.ts +0 -1
- package/components/base/CircularProgress.js +0 -4
- package/components/base/CircularProgress.js.map +0 -1
- package/components/base/Code.d.ts +0 -1
- package/components/base/Code.js +0 -4
- package/components/base/Code.js.map +0 -1
- package/components/base/DateInput.d.ts +0 -1
- package/components/base/DateInput.js +0 -4
- package/components/base/DateInput.js.map +0 -1
- package/components/base/DatePicker.d.ts +0 -1
- package/components/base/DatePicker.js +0 -4
- package/components/base/DatePicker.js.map +0 -1
- package/components/base/DateRangePicker.d.ts +0 -1
- package/components/base/DateRangePicker.js +0 -4
- package/components/base/DateRangePicker.js.map +0 -1
- package/components/base/Divider.d.ts +0 -1
- package/components/base/Divider.js +0 -4
- package/components/base/Divider.js.map +0 -1
- package/components/base/Drawer.d.ts +0 -8
- package/components/base/Drawer.js +0 -8
- package/components/base/Drawer.js.map +0 -1
- package/components/base/Dropdown.d.ts +0 -11
- package/components/base/Dropdown.js +0 -8
- package/components/base/Dropdown.js.map +0 -1
- package/components/base/Form.d.ts +0 -0
- package/components/base/Form.js +0 -6
- package/components/base/Form.js.map +0 -1
- package/components/base/Image.d.ts +0 -1
- package/components/base/Image.js +0 -4
- package/components/base/Image.js.map +0 -1
- package/components/base/Input.d.ts +0 -1
- package/components/base/Input.js +0 -4
- package/components/base/Input.js.map +0 -1
- package/components/base/InputOtp.d.ts +0 -1
- package/components/base/InputOtp.js +0 -4
- package/components/base/InputOtp.js.map +0 -1
- package/components/base/Kbd.d.ts +0 -1
- package/components/base/Kbd.js +0 -4
- package/components/base/Kbd.js.map +0 -1
- package/components/base/Link.d.ts +0 -1
- package/components/base/Link.js +0 -4
- package/components/base/Link.js.map +0 -1
- package/components/base/Listbox.d.ts +0 -3
- package/components/base/Listbox.js +0 -6
- package/components/base/Listbox.js.map +0 -1
- package/components/base/Modal.d.ts +0 -8
- package/components/base/Modal.js +0 -8
- package/components/base/Modal.js.map +0 -1
- package/components/base/Navbar.d.ts +0 -7
- package/components/base/Navbar.js +0 -10
- package/components/base/Navbar.js.map +0 -1
- package/components/base/NumberInput.d.ts +0 -1
- package/components/base/NumberInput.js +0 -4
- package/components/base/NumberInput.js.map +0 -1
- package/components/base/Pagination.d.ts +0 -3
- package/components/base/Pagination.js +0 -6
- package/components/base/Pagination.js.map +0 -1
- package/components/base/Popover.d.ts +0 -234
- package/components/base/Popover.js +0 -6
- package/components/base/Popover.js.map +0 -1
- package/components/base/Progress.d.ts +0 -1
- package/components/base/Progress.js +0 -4
- package/components/base/Progress.js.map +0 -1
- package/components/base/Radio.d.ts +0 -2
- package/components/base/Radio.js +0 -5
- package/components/base/Radio.js.map +0 -1
- package/components/base/RangeCalendar.d.ts +0 -1
- package/components/base/RangeCalendar.js +0 -4
- package/components/base/RangeCalendar.js.map +0 -1
- package/components/base/ScrollShadow.d.ts +0 -1
- package/components/base/ScrollShadow.js +0 -4
- package/components/base/ScrollShadow.js.map +0 -1
- package/components/base/Select.d.ts +0 -3
- package/components/base/Select.js +0 -6
- package/components/base/Select.js.map +0 -1
- package/components/base/Skeleton.d.ts +0 -1
- package/components/base/Skeleton.js +0 -4
- package/components/base/Skeleton.js.map +0 -1
- package/components/base/Slider.d.ts +0 -1
- package/components/base/Slider.js +0 -4
- package/components/base/Slider.js.map +0 -1
- package/components/base/Snippet.d.ts +0 -1
- package/components/base/Snippet.js +0 -4
- package/components/base/Snippet.js.map +0 -1
- package/components/base/Spacer.d.ts +0 -1
- package/components/base/Spacer.js +0 -4
- package/components/base/Spacer.js.map +0 -1
- package/components/base/Spinner.d.ts +0 -1
- package/components/base/Spinner.js +0 -4
- package/components/base/Spinner.js.map +0 -1
- package/components/base/Switch.d.ts +0 -1
- package/components/base/Switch.js +0 -4
- package/components/base/Switch.js.map +0 -1
- package/components/base/Table.d.ts +0 -6
- package/components/base/Table.js +0 -9
- package/components/base/Table.js.map +0 -1
- package/components/base/Tabs.d.ts +0 -2
- package/components/base/Tabs.js +0 -5
- package/components/base/Tabs.js.map +0 -1
- package/components/base/Textarea.d.ts +0 -1
- package/components/base/Textarea.js +0 -4
- package/components/base/Textarea.js.map +0 -1
- package/components/base/TimeInput.d.ts +0 -1
- package/components/base/TimeInput.js +0 -4
- package/components/base/TimeInput.js.map +0 -1
- package/components/base/Toast.d.ts +0 -2
- package/components/base/Toast.js +0 -5
- package/components/base/Toast.js.map +0 -1
- package/components/base/Tooltip.d.ts +0 -1
- package/components/base/Tooltip.js +0 -4
- package/components/base/Tooltip.js.map +0 -1
- package/components/base/User.d.ts +0 -1
- package/components/base/User.js +0 -4
- package/components/base/User.js.map +0 -1
- package/components/chart/Chart.d.ts +0 -13
- package/components/chart/Chart.js +0 -18
- package/components/chart/Chart.js.map +0 -1
- package/components/color-input/ColorInput.d.ts +0 -8
- package/components/color-input/ColorInput.js +0 -24
- package/components/color-input/ColorInput.js.map +0 -1
- package/components/color-selector/ColorSelector.d.ts +0 -14
- package/components/color-selector/ColorSelector.js +0 -16
- package/components/color-selector/ColorSelector.js.map +0 -1
- package/tailwind.plugin.d.ts +0 -3
- package/tailwind.plugin.js +0 -52
- package/tailwind.plugin.js.map +0 -1
- package/withFragment.d.ts +0 -2
- package/withFragment.js +0 -21
- package/withFragment.js.map +0 -1
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { tv } from 'tailwind-variants';
|
|
2
|
+
export const formSection = tv({
|
|
3
|
+
slots: {
|
|
4
|
+
base: 'fragment-form-section',
|
|
5
|
+
main: 'fragment-form-section__main',
|
|
6
|
+
info: 'fragment-form-section__info',
|
|
7
|
+
content: 'fragment-form-section__content',
|
|
8
|
+
description: 'fragment-form-section__description',
|
|
9
|
+
},
|
|
10
|
+
variants: {
|
|
11
|
+
direction: {
|
|
12
|
+
horizontal: { base: 'fragment-form-section--horizontal' },
|
|
13
|
+
vertical: { base: 'fragment-form-section--vertical' },
|
|
14
|
+
},
|
|
15
|
+
fullWidth: {
|
|
16
|
+
true: { base: 'fragment-form-section--full-width' },
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
defaultVariants: {
|
|
20
|
+
direction: 'vertical',
|
|
21
|
+
fullWidth: false,
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
//# sourceMappingURL=FormSection.styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormSection.styles.js","sourceRoot":"","sources":["../../src/fragments/form/FormSection.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAEvC,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC;IAC5B,KAAK,EAAE;QACL,IAAI,EAAE,uBAAuB;QAC7B,IAAI,EAAE,6BAA6B;QACnC,IAAI,EAAE,6BAA6B;QACnC,OAAO,EAAE,gCAAgC;QACzC,WAAW,EAAE,oCAAoC;KAClD;IACD,QAAQ,EAAE;QACR,SAAS,EAAE;YACT,UAAU,EAAE,EAAE,IAAI,EAAE,mCAAmC,EAAE;YACzD,QAAQ,EAAE,EAAE,IAAI,EAAE,iCAAiC,EAAE;SACtD;QACD,SAAS,EAAE;YACT,IAAI,EAAE,EAAE,IAAI,EAAE,mCAAmC,EAAE;SACpD;KACF;IACD,eAAe,EAAE;QACf,SAAS,EAAE,UAAU;QACrB,SAAS,EAAE,KAAK;KACjB;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { AvatarImageProps, AvatarProps, DropdownItemProps, DropdownProps } from '@heroui/react';
|
|
2
|
+
/**
|
|
3
|
+
* Primary UI component for Dashboard Navbars
|
|
4
|
+
*/
|
|
5
|
+
interface NavbarNavigationItem {
|
|
6
|
+
label: string;
|
|
7
|
+
link: string;
|
|
8
|
+
onClick?: React.MouseEventHandler;
|
|
9
|
+
icon?: React.ReactNode;
|
|
10
|
+
endContent?: React.ReactNode;
|
|
11
|
+
badgeContent?: React.ReactNode;
|
|
12
|
+
}
|
|
13
|
+
interface NavbarItemUser {
|
|
14
|
+
avatar?: AvatarProps & AvatarImageProps;
|
|
15
|
+
name: string;
|
|
16
|
+
description?: string;
|
|
17
|
+
dropdown?: Omit<DropdownProps, 'children'>;
|
|
18
|
+
dropdownItems?: (Omit<DropdownItemProps, 'children'> & {
|
|
19
|
+
label: string;
|
|
20
|
+
})[];
|
|
21
|
+
}
|
|
22
|
+
export interface NavbarProps {
|
|
23
|
+
startContent?: React.ReactNode;
|
|
24
|
+
endContent?: React.ReactNode;
|
|
25
|
+
navigation?: NavbarNavigationItem[];
|
|
26
|
+
user?: NavbarItemUser;
|
|
27
|
+
currentPath?: string;
|
|
28
|
+
}
|
|
29
|
+
export declare const Navbar: React.FC<NavbarProps>;
|
|
30
|
+
export {};
|
|
@@ -0,0 +1,26 @@
|
|
|
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, Dropdown, ScrollShadow, Tabs, Tooltip } from '@heroui/react';
|
|
4
|
+
import { IconDots } from '@tabler/icons-react';
|
|
5
|
+
import { useEffect, useState } from 'react';
|
|
6
|
+
import { useFragmentUI } from '../../context';
|
|
7
|
+
import { navbar } from './Navbar.styles';
|
|
8
|
+
const getActiveNav = (currentPath, navigation) => {
|
|
9
|
+
if (!currentPath)
|
|
10
|
+
return;
|
|
11
|
+
const possibleMatches = navigation.filter((navItem) => navItem.link.startsWith(currentPath)).sort((a, b) => b.link.length - a.link.length);
|
|
12
|
+
return possibleMatches.find((pMatch) => pMatch.link === currentPath) || possibleMatches[0];
|
|
13
|
+
};
|
|
14
|
+
export const Navbar = ({ navigation, user, startContent, endContent, currentPath }) => {
|
|
15
|
+
const v = navbar();
|
|
16
|
+
const { linkComponent: LinkComponent } = useFragmentUI();
|
|
17
|
+
const [activeNav, setActiveNav] = useState(getActiveNav(currentPath, navigation ?? []));
|
|
18
|
+
useEffect(() => setActiveNav(getActiveNav(currentPath, navigation ?? [])), [currentPath, navigation]);
|
|
19
|
+
const overflowItems = (navigation ?? []).slice(4);
|
|
20
|
+
const isOverflowActive = overflowItems.some((item) => activeNav?.link === item.link);
|
|
21
|
+
return (_jsxs(_Fragment, { children: [_jsxs("div", { className: v.topbar(), children: [startContent, _jsx(ScrollShadow, { hideScrollBar: true, orientation: "horizontal", className: v.tabs(), children: _jsx(Tabs, { selectedKey: activeNav?.label, onSelectionChange: (key) => {
|
|
22
|
+
const nav = navigation?.find((item) => item.label === key);
|
|
23
|
+
setActiveNav(nav);
|
|
24
|
+
}, children: _jsx(Tabs.ListContainer, { children: _jsx(Tabs.List, { children: navigation?.map((item) => (_jsxs(Tabs.Tab, { id: item.label, className: v.tab(), render: (domProps) => _jsx(LinkComponent, { ...domProps, href: item.link }), children: [item.label, _jsx(Tabs.Indicator, {})] }, item.label))) }) }) }) }), _jsxs("div", { className: v.end(), children: [endContent, user && (_jsxs(Dropdown, { ...user.dropdown, children: [_jsx(Dropdown.Trigger, { children: _jsxs(Avatar, { ...user.avatar, children: [_jsx(Avatar.Image, { ...user.avatar }), _jsx(Avatar.Fallback, { children: user.name.charAt(0) })] }) }), _jsx(Dropdown.Popover, { className: "min-w-[256px]", placement: "bottom start", children: _jsx(Dropdown.Menu, { "aria-label": "User Actions", items: user.dropdownItems || [], children: (dropdownItem) => (_createElement(Dropdown.Item, { ...dropdownItem, key: dropdownItem.label }, dropdownItem.label)) }) })] }))] })] }), _jsxs("nav", { className: v.bottomNav(), children: [navigation?.slice(0, 4).map((navItem) => (_jsxs(Tooltip, { children: [_jsx(Tooltip.Content, { placement: "top", offset: 10, children: navItem.label }), _jsx(Button, { render: (props) => _jsx(LinkComponent, { href: navItem.link, children: _jsx("button", { ...props }) }), isIconOnly: true, variant: activeNav?.link === navItem.link ? 'tertiary' : 'ghost', fullWidth: true, children: _jsxs(Badge.Anchor, { children: [navItem.icon, typeof navItem.badgeContent === 'string' && navItem.badgeContent ? (_jsx(Badge, { variant: "primary", color: "accent", size: "sm", className: v.bottomNavBadge(), children: navItem.badgeContent })) : null] }) })] }, navItem.label))), overflowItems.length > 0 && (_jsxs(Dropdown, { children: [_jsx(Dropdown.Trigger, { children: _jsx(Button, { variant: isOverflowActive ? 'tertiary' : 'ghost', isIconOnly: true, fullWidth: true, children: _jsx(IconDots, {}) }) }), _jsx(Dropdown.Popover, { placement: "top end", children: _jsx(Dropdown.Menu, { "aria-label": "More navigation", children: overflowItems.map((item) => (_jsxs(Dropdown.Item, { href: item.link, children: [item.icon, item.label] }, item.label))) }) })] }))] })] }));
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=Navbar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Navbar.js","sourceRoot":"","sources":["../../src/fragments/navbar/Navbar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -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"}
|
|
@@ -1,12 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
3
|
-
const pageHeader = tv({
|
|
4
|
-
slots: {
|
|
5
|
-
base: 'flex gap-4 justify-between sm:items-end mb-8 flex-col sm:flex-row',
|
|
6
|
-
description: 'mt-2 text-foreground-500 ',
|
|
7
|
-
actions: 'flex gap-4',
|
|
8
|
-
},
|
|
9
|
-
});
|
|
2
|
+
import { pageHeader } from './PageHeader.styles';
|
|
10
3
|
export const PageHeader = ({ children, title, description, ...props }) => {
|
|
11
4
|
const v = pageHeader(props);
|
|
12
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 })] }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PageHeader.js","sourceRoot":"","sources":["../../src/fragments/page/PageHeader.tsx"],"names":[],"mappings":";AAKA,OAAO,EAAE,
|
|
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"}
|
|
@@ -1,9 +1,18 @@
|
|
|
1
|
+
import { type NavbarProps } from '../navbar/Navbar';
|
|
1
2
|
import { type SidebarProps } from '../sidebar/Sidebar';
|
|
2
3
|
/**
|
|
3
4
|
* Primary UI component for Dashboard App Shell
|
|
4
5
|
*/
|
|
5
|
-
|
|
6
|
+
interface ShellPropsHorizontal {
|
|
7
|
+
direction: 'horizontal';
|
|
6
8
|
sidebar: SidebarProps;
|
|
7
9
|
children: React.ReactNode;
|
|
8
10
|
}
|
|
11
|
+
interface ShellPropsVertical {
|
|
12
|
+
direction: 'vertical';
|
|
13
|
+
navbar: NavbarProps;
|
|
14
|
+
children: React.ReactNode;
|
|
15
|
+
}
|
|
16
|
+
export type ShellProps = ShellPropsHorizontal | ShellPropsVertical;
|
|
9
17
|
export declare const Shell: React.FC<ShellProps>;
|
|
18
|
+
export {};
|
package/fragments/shell/Shell.js
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Navbar } from '../navbar/Navbar';
|
|
2
3
|
import { Sidebar } from '../sidebar/Sidebar';
|
|
3
|
-
|
|
4
|
-
|
|
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 })] }));
|
|
5
11
|
};
|
|
6
12
|
//# sourceMappingURL=Shell.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Shell.js","sourceRoot":"","sources":["../../src/fragments/shell/Shell.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAqB,MAAM,oBAAoB,CAAC;
|
|
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"}
|
|
@@ -1,18 +1,8 @@
|
|
|
1
|
-
import type { AvatarProps } from '@heroui/
|
|
2
|
-
import type {
|
|
3
|
-
import type { ListboxProps } from '@heroui/listbox';
|
|
1
|
+
import type { AvatarImageProps, AvatarProps, DropdownItemProps, DropdownProps, ListBoxProps } from '@heroui/react';
|
|
2
|
+
import type { SidebarNavigationItem, SidebarChildNavigationItem } from './SidebarNavigation';
|
|
4
3
|
/**
|
|
5
4
|
* Primary UI component for Dashboard Sidebars
|
|
6
5
|
*/
|
|
7
|
-
interface SidebarNavigationItem {
|
|
8
|
-
label: string;
|
|
9
|
-
link: string;
|
|
10
|
-
onClick?: React.MouseEventHandler;
|
|
11
|
-
icon?: React.ReactNode;
|
|
12
|
-
endContent?: React.ReactNode;
|
|
13
|
-
badgeContent?: React.ReactNode;
|
|
14
|
-
items?: SidebarItemVariants[];
|
|
15
|
-
}
|
|
16
6
|
interface SidebarItem {
|
|
17
7
|
key: string;
|
|
18
8
|
align?: 'top' | 'center' | 'bottom';
|
|
@@ -21,11 +11,11 @@ interface SidebarItemNavigation extends SidebarItem {
|
|
|
21
11
|
type: 'navigation';
|
|
22
12
|
label?: string;
|
|
23
13
|
navigation: SidebarNavigationItem[];
|
|
24
|
-
listboxProps?: Omit<
|
|
14
|
+
listboxProps?: Omit<ListBoxProps<object>, 'children'>;
|
|
25
15
|
}
|
|
26
16
|
interface SidebarItemUser extends SidebarItem {
|
|
27
17
|
type: 'user';
|
|
28
|
-
avatar?: AvatarProps;
|
|
18
|
+
avatar?: AvatarProps & AvatarImageProps;
|
|
29
19
|
name: string;
|
|
30
20
|
description?: string;
|
|
31
21
|
dropdown?: Omit<DropdownProps, 'children'>;
|
|
@@ -45,5 +35,5 @@ export interface SidebarProps {
|
|
|
45
35
|
layout?: 'auto' | 'collapsed' | 'expanded';
|
|
46
36
|
currentPath?: string;
|
|
47
37
|
}
|
|
38
|
+
export type { SidebarNavigationItem, SidebarChildNavigationItem };
|
|
48
39
|
export declare const Sidebar: React.FC<SidebarProps>;
|
|
49
|
-
export {};
|
|
@@ -1,61 +1,51 @@
|
|
|
1
1
|
import { createElement as _createElement } from "react";
|
|
2
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';
|
|
3
4
|
import { IconChevronLeft, IconDots } from '@tabler/icons-react';
|
|
4
5
|
import { useEffect, useState } from 'react';
|
|
5
|
-
import {
|
|
6
|
-
import { Chip } from '../../components/base/Chip';
|
|
7
|
-
import { Tooltip } from '../../components/base/Tooltip';
|
|
8
|
-
import { Button } from '../../components/base/Button';
|
|
9
|
-
import { Badge } from '../../components/base/Badge';
|
|
10
|
-
import { Dropdown, DropdownItem, DropdownMenu, DropdownTrigger } from '../../components/base/Dropdown';
|
|
11
|
-
import { User } from '../../components/base/User';
|
|
12
|
-
import { Avatar } from '../../components/base/Avatar';
|
|
13
|
-
import { ScrollShadow } from '../../components/base/ScrollShadow';
|
|
14
|
-
import { Link } from '../../components/base/Link';
|
|
15
|
-
import { Modal, ModalBody, ModalContent, ModalFooter, ModalHeader } from '../../components/base/Modal';
|
|
6
|
+
import { useFragmentUI } from '../../context';
|
|
16
7
|
import { sidebar } from './Sidebar.styles';
|
|
17
8
|
import { breakpointsTailwind } from '../../constants';
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
return 'mt-auto max-w-full sticky bottom-0';
|
|
24
|
-
default:
|
|
25
|
-
return '';
|
|
26
|
-
}
|
|
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 }) });
|
|
27
14
|
};
|
|
28
15
|
const renderItems = (item, options) => {
|
|
29
16
|
switch (item.type) {
|
|
30
17
|
case 'navigation':
|
|
31
|
-
return options.layout === 'expanded' ?
|
|
32
|
-
base: 'h-12 gap-6',
|
|
33
|
-
}, ...item.listboxProps, children: _jsx(ListboxSection, { title: item.label, classNames: { group: 'flex flex-col gap-1' }, children: item.navigation.map((navItem) => (_jsx(ListboxItem, { startContent: navItem.icon, endContent: typeof navItem.badgeContent === 'string' ? _jsx(Chip, { size: "sm", color: "primary", variant: navItem.badgeContent ? 'solid' : 'dot', classNames: { base: 'border-none' }, children: navItem.badgeContent }) : navItem.endContent, href: navItem.link, color: options.activeNav?.link === navItem.link ? 'primary' : 'default', className: options.activeNav?.link === navItem.link ? 'text-primary' : '', children: navItem.label }, navItem.label))) }) })) : (_jsx("nav", { className: "flex flex-col gap-1", children: item.navigation.map((navItem) => (_jsx(Tooltip, { placement: "right", content: navItem.label, children: _jsx(Button, { color: options.activeNav?.link === navItem.link ? 'primary' : 'default', variant: "light", size: "lg", as: Link, href: navItem.link, isIconOnly: true, children: _jsx(Badge, { content: navItem.badgeContent, color: "primary", size: "sm", isInvisible: typeof navItem.badgeContent !== 'string', children: navItem.icon }) }) }, navItem.label))) }));
|
|
18
|
+
return (_jsx(SidebarNavigation, { navigation: item.navigation, label: item.label, layout: options.layout === 'expanded' ? 'expanded' : 'collapsed', activeLink: options.activeLink, listboxProps: item.listboxProps }));
|
|
34
19
|
case 'user':
|
|
35
|
-
return (_jsxs(Dropdown, {
|
|
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)) }) })] }));
|
|
36
21
|
case 'custom':
|
|
37
22
|
return ((!item.showExpandedOnly && !item.showCollapsedOnly) ||
|
|
38
23
|
(options.layout === 'expanded' && item.showExpandedOnly) ||
|
|
39
24
|
(options.layout === 'collapsed' && item.showCollapsedOnly))
|
|
40
|
-
? _jsx("div", { className: "
|
|
25
|
+
? _jsx("div", { className: "fragment-sidebar__custom-item", children: item.render })
|
|
41
26
|
: null;
|
|
42
27
|
default:
|
|
43
28
|
return null;
|
|
44
29
|
}
|
|
45
30
|
};
|
|
46
|
-
const
|
|
31
|
+
const getActiveLink = (currentPath, items) => {
|
|
47
32
|
if (!currentPath)
|
|
48
|
-
return;
|
|
49
|
-
const
|
|
33
|
+
return undefined;
|
|
34
|
+
const allNavItems = [];
|
|
50
35
|
items.forEach((item) => {
|
|
51
36
|
if (item.type !== 'navigation')
|
|
52
37
|
return;
|
|
53
|
-
|
|
38
|
+
item.navigation.forEach((navItem) => {
|
|
39
|
+
allNavItems.push(navItem);
|
|
40
|
+
navItem.items?.forEach((child) => allNavItems.push(child));
|
|
41
|
+
});
|
|
54
42
|
});
|
|
55
|
-
const possibleMatches =
|
|
56
|
-
|
|
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;
|
|
57
47
|
};
|
|
58
|
-
export const Sidebar = ({ items, currentPath, layout: defaultLayout =
|
|
48
|
+
export const Sidebar = ({ items, currentPath, layout: defaultLayout = 'auto' }) => {
|
|
59
49
|
const [layout, setLayout] = useState(defaultLayout);
|
|
60
50
|
const toggleLayout = () => {
|
|
61
51
|
if (layout === 'auto') {
|
|
@@ -67,27 +57,27 @@ export const Sidebar = ({ items, currentPath, layout: defaultLayout = "auto" })
|
|
|
67
57
|
setLayout(layout === 'collapsed' ? 'expanded' : 'collapsed');
|
|
68
58
|
};
|
|
69
59
|
const v = sidebar({ layout });
|
|
70
|
-
const [
|
|
60
|
+
const [activeLink, setActiveLink] = useState(getActiveLink(currentPath, items));
|
|
71
61
|
const [mobileMenuOpen, setMobileMenuOpen] = useState(false);
|
|
72
|
-
useEffect(() =>
|
|
62
|
+
useEffect(() => setActiveLink(getActiveLink(currentPath, items)), [currentPath, items]);
|
|
73
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) => {
|
|
74
|
-
const children = item.align !== 'bottom' ? renderItems(item, { layout: 'collapsed',
|
|
75
|
-
return children ? (_jsx("div", { className:
|
|
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;
|
|
76
66
|
}) }), _jsx("div", { className: v.collapsedFooter(), children: items.map((item) => {
|
|
77
|
-
const children = item.align === 'bottom' ? renderItems(item, { layout: 'collapsed',
|
|
78
|
-
return children ? (_jsx("div", { className:
|
|
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;
|
|
79
69
|
}) })] }), _jsxs("div", { className: v.expanded(), children: [_jsx(ScrollShadow, { hideScrollBar: true, className: v.expandedBody(), children: items.map((item) => {
|
|
80
|
-
const children = item.align !== 'bottom' ? renderItems(item, { layout: 'expanded',
|
|
81
|
-
return children ? (_jsx("div", { className:
|
|
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;
|
|
82
72
|
}) }), _jsx("div", { className: v.expandedFooter(), children: items.map((item) => {
|
|
83
|
-
const children = item.align === 'bottom' ? renderItems(item, { layout: 'expanded',
|
|
84
|
-
return children ? (_jsx("div", { className:
|
|
85
|
-
}) })] }), _jsx("div", { className: v.placeholder() }), _jsx("div", { className: v.layoutButtonWrapper(), children: _jsx(Button, { size: "sm", isIconOnly: true,
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
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
|
+
}) })] }) }) }) })] }));
|
|
92
82
|
};
|
|
93
83
|
//# sourceMappingURL=Sidebar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sidebar.js","sourceRoot":"","sources":["../../src/fragments/sidebar/Sidebar.tsx"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"Sidebar.js","sourceRoot":"","sources":["../../src/fragments/sidebar/Sidebar.tsx"],"names":[],"mappings":"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"}
|