@fragment-build/ui 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (166) hide show
  1. package/README.md +56 -5
  2. package/dist/components/base/Accordion.d.ts +3 -0
  3. package/dist/components/base/Accordion.js +5 -0
  4. package/dist/components/base/Accordion.js.map +1 -0
  5. package/dist/components/base/Autocomplete.d.ts +4 -0
  6. package/dist/components/base/Autocomplete.js +6 -0
  7. package/dist/components/base/Autocomplete.js.map +1 -0
  8. package/dist/components/base/Avatar.d.ts +2 -0
  9. package/dist/components/base/Avatar.js +5 -0
  10. package/dist/components/base/Avatar.js.map +1 -0
  11. package/dist/components/base/Badge.d.ts +1 -0
  12. package/dist/components/base/Badge.js +4 -0
  13. package/dist/components/base/Badge.js.map +1 -0
  14. package/dist/components/base/Breadcrumbs.d.ts +2 -0
  15. package/dist/components/base/Breadcrumbs.js +5 -0
  16. package/dist/components/base/Breadcrumbs.js.map +1 -0
  17. package/dist/components/base/Button.d.ts +1 -0
  18. package/dist/components/base/Button.js +4 -0
  19. package/dist/components/base/Button.js.map +1 -0
  20. package/dist/components/base/Card.d.ts +2 -0
  21. package/dist/components/base/Card.js +5 -0
  22. package/dist/components/base/Card.js.map +1 -0
  23. package/dist/components/base/Checkbox.d.ts +2 -0
  24. package/dist/components/base/Checkbox.js +5 -0
  25. package/dist/components/base/Checkbox.js.map +1 -0
  26. package/dist/components/base/Chip.d.ts +1 -0
  27. package/dist/components/base/Chip.js +4 -0
  28. package/dist/components/base/Chip.js.map +1 -0
  29. package/dist/components/base/CircularProgress.d.ts +1 -0
  30. package/dist/components/base/CircularProgress.js +4 -0
  31. package/dist/components/base/CircularProgress.js.map +1 -0
  32. package/dist/components/base/Code.d.ts +1 -0
  33. package/dist/components/base/Code.js +4 -0
  34. package/dist/components/base/Code.js.map +1 -0
  35. package/dist/components/base/Divider.d.ts +1 -0
  36. package/dist/components/base/Divider.js +4 -0
  37. package/dist/components/base/Divider.js.map +1 -0
  38. package/dist/components/base/Dropdown.d.ts +9 -0
  39. package/dist/components/base/Dropdown.js +8 -0
  40. package/dist/components/base/Dropdown.js.map +1 -0
  41. package/dist/components/base/Image.d.ts +1 -0
  42. package/dist/components/base/Image.js +4 -0
  43. package/dist/components/base/Image.js.map +1 -0
  44. package/dist/components/base/Input.d.ts +1 -0
  45. package/dist/components/base/Input.js +4 -0
  46. package/dist/components/base/Input.js.map +1 -0
  47. package/dist/components/base/Kbd.d.ts +1 -0
  48. package/dist/components/base/Kbd.js +4 -0
  49. package/dist/components/base/Kbd.js.map +1 -0
  50. package/dist/components/base/Link.d.ts +1 -0
  51. package/dist/components/base/Link.js +4 -0
  52. package/dist/components/base/Link.js.map +1 -0
  53. package/dist/components/base/Listbox.d.ts +4 -0
  54. package/dist/components/base/Listbox.js +6 -0
  55. package/dist/components/base/Listbox.js.map +1 -0
  56. package/dist/components/base/Modal.d.ts +5 -0
  57. package/dist/components/base/Modal.js +8 -0
  58. package/dist/components/base/Modal.js.map +1 -0
  59. package/dist/components/base/Navbar.d.ts +7 -0
  60. package/dist/components/base/Navbar.js +10 -0
  61. package/dist/components/base/Navbar.js.map +1 -0
  62. package/dist/components/base/Pagination.d.ts +3 -0
  63. package/dist/components/base/Pagination.js +6 -0
  64. package/dist/components/base/Pagination.js.map +1 -0
  65. package/dist/components/base/Popover.d.ts +3 -0
  66. package/dist/components/base/Popover.js +6 -0
  67. package/dist/components/base/Popover.js.map +1 -0
  68. package/dist/components/base/Progress.d.ts +1 -0
  69. package/dist/components/base/Progress.js +4 -0
  70. package/dist/components/base/Progress.js.map +1 -0
  71. package/dist/components/base/Radio.d.ts +2 -0
  72. package/dist/components/base/Radio.js +5 -0
  73. package/dist/components/base/Radio.js.map +1 -0
  74. package/dist/components/base/ScrollShadow.d.ts +1 -0
  75. package/dist/components/base/ScrollShadow.js +4 -0
  76. package/dist/components/base/ScrollShadow.js.map +1 -0
  77. package/dist/components/base/Select.d.ts +4 -0
  78. package/dist/components/base/Select.js +6 -0
  79. package/dist/components/base/Select.js.map +1 -0
  80. package/dist/components/base/Skeleton.d.ts +1 -0
  81. package/dist/components/base/Skeleton.js +4 -0
  82. package/dist/components/base/Skeleton.js.map +1 -0
  83. package/dist/components/base/Slider.d.ts +1 -0
  84. package/dist/components/base/Slider.js +4 -0
  85. package/dist/components/base/Slider.js.map +1 -0
  86. package/dist/components/base/Snippet.d.ts +1 -0
  87. package/dist/components/base/Snippet.js +4 -0
  88. package/dist/components/base/Snippet.js.map +1 -0
  89. package/dist/components/base/Spacer.d.ts +1 -0
  90. package/dist/components/base/Spacer.js +4 -0
  91. package/dist/components/base/Spacer.js.map +1 -0
  92. package/dist/components/base/Spinner.d.ts +1 -0
  93. package/dist/components/base/Spinner.js +4 -0
  94. package/dist/components/base/Spinner.js.map +1 -0
  95. package/dist/components/base/Switch.d.ts +1 -0
  96. package/dist/components/base/Switch.js +4 -0
  97. package/dist/components/base/Switch.js.map +1 -0
  98. package/dist/components/base/Tab.d.ts +3 -0
  99. package/dist/components/base/Tab.js +5 -0
  100. package/dist/components/base/Tab.js.map +1 -0
  101. package/dist/components/base/Table.d.ts +7 -0
  102. package/dist/components/base/Table.js +9 -0
  103. package/dist/components/base/Table.js.map +1 -0
  104. package/dist/components/base/Textarea.d.ts +1 -0
  105. package/dist/components/base/Textarea.js +4 -0
  106. package/dist/components/base/Textarea.js.map +1 -0
  107. package/dist/components/base/Tooltip.d.ts +1 -0
  108. package/dist/components/base/Tooltip.js +4 -0
  109. package/dist/components/base/Tooltip.js.map +1 -0
  110. package/dist/components/base/User.d.ts +1 -0
  111. package/dist/components/base/User.js +4 -0
  112. package/dist/components/base/User.js.map +1 -0
  113. package/dist/components/base/index.d.ts +37 -0
  114. package/dist/components/base/index.js +38 -0
  115. package/dist/components/base/index.js.map +1 -0
  116. package/dist/components/color-input/ColorInput.d.ts +2 -3
  117. package/dist/components/color-input/ColorInput.js +16 -0
  118. package/dist/components/color-input/ColorInput.js.map +1 -0
  119. package/dist/components/color-input/{ColorInput.stories.jsx → ColorInput.stories.js} +1 -0
  120. package/dist/components/color-input/ColorInput.stories.js.map +1 -0
  121. package/dist/components/color-selector/ColorSelector.d.ts +2 -3
  122. package/dist/components/color-selector/ColorSelector.js +10 -0
  123. package/dist/components/color-selector/ColorSelector.js.map +1 -0
  124. package/dist/components/color-selector/{ColorSelector.stories.jsx → ColorSelector.stories.js} +3 -1
  125. package/dist/components/color-selector/ColorSelector.stories.js.map +1 -0
  126. package/dist/components/index.d.ts +3 -0
  127. package/dist/components/index.js +4 -0
  128. package/dist/components/index.js.map +1 -0
  129. package/dist/context.d.ts +84 -0
  130. package/dist/context.js +18 -0
  131. package/dist/context.js.map +1 -0
  132. package/dist/fragments/index.d.ts +2 -0
  133. package/dist/fragments/index.js +3 -0
  134. package/dist/fragments/index.js.map +1 -0
  135. package/dist/fragments/shell/Shell.js +6 -0
  136. package/dist/fragments/shell/Shell.js.map +1 -0
  137. package/dist/fragments/shell/Shell.stories.js +129 -0
  138. package/dist/fragments/shell/Shell.stories.js.map +1 -0
  139. package/dist/fragments/sidebar/Sidebar.d.ts +2 -1
  140. package/dist/fragments/sidebar/Sidebar.js +74 -0
  141. package/dist/fragments/sidebar/Sidebar.js.map +1 -0
  142. package/dist/fragments/sidebar/{Sidebar.stories.jsx → Sidebar.stories.js} +28 -17
  143. package/dist/fragments/sidebar/Sidebar.stories.js.map +1 -0
  144. package/dist/hooks/breakpoints.js +1 -0
  145. package/dist/hooks/breakpoints.js.map +1 -0
  146. package/dist/hooks/index.d.ts +1 -0
  147. package/dist/hooks/index.js +2 -0
  148. package/dist/hooks/index.js.map +1 -0
  149. package/dist/index.d.ts +6 -4
  150. package/dist/index.js +7 -4
  151. package/dist/index.js.map +1 -0
  152. package/dist/provider.d.ts +12 -0
  153. package/dist/provider.js +17 -0
  154. package/dist/provider.js.map +1 -0
  155. package/dist/tailwind.plugin.d.ts +4 -0
  156. package/dist/tailwind.plugin.js +18 -0
  157. package/dist/tailwind.plugin.js.map +1 -0
  158. package/dist/withFragment.d.ts +3 -0
  159. package/dist/withFragment.js +17 -0
  160. package/dist/withFragment.js.map +1 -0
  161. package/package.json +22 -22
  162. package/dist/components/color-input/ColorInput.jsx +0 -26
  163. package/dist/components/color-selector/ColorSelector.jsx +0 -22
  164. package/dist/fragments/shell/Shell.jsx +0 -10
  165. package/dist/fragments/shell/Shell.stories.jsx +0 -170
  166. package/dist/fragments/sidebar/Sidebar.jsx +0 -129
@@ -1,170 +0,0 @@
1
- var _a, _b;
2
- import { Card, CardBody, Divider, Input, Tab, Table, TableBody, TableCell, TableColumn, TableHeader, TableRow, Tabs, } from "@nextui-org/react";
3
- import { IconBox, IconBoxMultiple, IconHome, IconMessageCircle, } from "@tabler/icons-react";
4
- import { Shell } from "./Shell";
5
- // More on how to set up stories at: https://storybook.js.org/docs/react/writing-stories/introduction
6
- const meta = {
7
- title: "components/Shell",
8
- component: Shell,
9
- tags: ["autodocs"],
10
- parameters: {
11
- layout: "fullscreen",
12
- },
13
- };
14
- export default meta;
15
- // More on writing stories with args: https://storybook.js.org/docs/react/writing-stories/args
16
- export const Primary = {
17
- args: {
18
- sidebar: {
19
- items: [
20
- {
21
- type: "user",
22
- key: "user",
23
- name: "Tony Reichert",
24
- description: "ACME Inc.",
25
- avatar: {
26
- src: "https://i.pravatar.cc/150?u=a042581f4e29026024d",
27
- },
28
- dropdownItems: [
29
- {
30
- label: "My Profile",
31
- },
32
- {
33
- label: "Settings",
34
- },
35
- {
36
- label: "Organization Settings",
37
- showDivider: true,
38
- },
39
- {
40
- label: "Logout",
41
- color: "danger",
42
- },
43
- ],
44
- },
45
- {
46
- type: "custom",
47
- key: "search",
48
- render: <Input label="Search..."/>,
49
- },
50
- {
51
- type: "navigation",
52
- key: "navigation-overview",
53
- label: "Overview",
54
- navigation: [
55
- {
56
- label: "Home",
57
- link: "/",
58
- icon: <IconHome stroke={1.5}/>,
59
- },
60
- {
61
- label: "My Projects",
62
- link: "/projects",
63
- icon: <IconBoxMultiple stroke={1.5}/>,
64
- },
65
- {
66
- label: "Chat",
67
- link: "/chat",
68
- icon: <IconMessageCircle stroke={1.5}/>,
69
- },
70
- ],
71
- },
72
- {
73
- type: "navigation",
74
- key: "navigation-projects",
75
- label: "Projects",
76
- navigation: [
77
- {
78
- label: "Project 1",
79
- link: "/projects/1",
80
- icon: <IconBox stroke={1.5}/>,
81
- },
82
- {
83
- label: "Project 2",
84
- link: "/projects/2",
85
- icon: <IconBox stroke={1.5}/>,
86
- },
87
- {
88
- label: "Project 3",
89
- link: "/projects/3",
90
- icon: <IconBox stroke={1.5}/>,
91
- },
92
- ],
93
- },
94
- {
95
- type: "custom",
96
- key: "bottom-banner",
97
- render: (<Card radius="lg" className="border-none">
98
- <img alt="Woman listing to music" className="object-cover w-full" height={200} src="https://nextui.org/images/hero-card.jpeg" width={200}/>
99
- </Card>),
100
- align: "bottom",
101
- },
102
- ],
103
- },
104
- children: "CONTENT",
105
- },
106
- };
107
- export const Collapsed = {
108
- args: Object.assign(Object.assign({}, Primary.args), { sidebar: ((_a = Primary.args) === null || _a === void 0 ? void 0 : _a.sidebar) ? Object.assign(Object.assign({}, Primary.args.sidebar), { layout: "collapsed" }) : undefined }),
109
- };
110
- export const Auto = {
111
- args: Object.assign(Object.assign({}, Primary.args), { sidebar: ((_b = Primary.args) === null || _b === void 0 ? void 0 : _b.sidebar) ? Object.assign(Object.assign({}, Primary.args.sidebar), { autoLayout: true }) : undefined }),
112
- };
113
- export const WithTable = {
114
- args: Object.assign(Object.assign({}, Primary.args), { children: (<>
115
- <h1>Customers</h1>
116
- <p className="mt-2 text-foreground-500">Blablabla</p>
117
- <Divider className="my-4"/>
118
- <Tabs aria-label="Options">
119
- <Tab key="table" title="Table">
120
- <Table aria-label="Example static collection table" selectionMode="multiple" removeWrapper>
121
- <TableHeader>
122
- <TableColumn>NAME</TableColumn>
123
- <TableColumn>ROLE</TableColumn>
124
- <TableColumn>STATUS</TableColumn>
125
- </TableHeader>
126
- <TableBody>
127
- <TableRow key="1">
128
- <TableCell>Tony Reichert</TableCell>
129
- <TableCell>CEO</TableCell>
130
- <TableCell>Active</TableCell>
131
- </TableRow>
132
- <TableRow key="2">
133
- <TableCell>Zoey Lang</TableCell>
134
- <TableCell>Technical Lead</TableCell>
135
- <TableCell>Paused</TableCell>
136
- </TableRow>
137
- <TableRow key="3">
138
- <TableCell>Jane Fisher</TableCell>
139
- <TableCell>Senior Developer</TableCell>
140
- <TableCell>Active</TableCell>
141
- </TableRow>
142
- <TableRow key="4">
143
- <TableCell>William Howard</TableCell>
144
- <TableCell>Community Manager</TableCell>
145
- <TableCell>Vacation</TableCell>
146
- </TableRow>
147
- </TableBody>
148
- </Table>
149
- </Tab>
150
- <Tab key="music" title="Music">
151
- <Card>
152
- <CardBody>
153
- Ut enim ad minim veniam, quis nostrud exercitation ullamco
154
- laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
155
- dolor in reprehenderit in voluptate velit esse cillum dolore eu
156
- fugiat nulla pariatur.
157
- </CardBody>
158
- </Card>
159
- </Tab>
160
- <Tab key="videos" title="Videos">
161
- <Card>
162
- <CardBody>
163
- Excepteur sint occaecat cupidatat non proident, sunt in culpa
164
- qui officia deserunt mollit anim id est laborum.
165
- </CardBody>
166
- </Card>
167
- </Tab>
168
- </Tabs>
169
- </>) }),
170
- };
@@ -1,129 +0,0 @@
1
- 'use client';
2
- import { Avatar, Button, Dropdown, DropdownItem, DropdownMenu, DropdownTrigger, Listbox, ListboxItem, ListboxSection, ScrollShadow, Tooltip, User, } from '@nextui-org/react';
3
- import { useSmaller } from '../../hooks/breakpoints';
4
- import { IconChevronLeft } from '@tabler/icons-react';
5
- import { useEffect, useState } from 'react';
6
- const getAlignmentClasses = (align) => {
7
- switch (align) {
8
- case 'center':
9
- return 'my-auto';
10
- case 'bottom':
11
- return 'mt-auto sticky bottom-0 bg-content1';
12
- default:
13
- return '';
14
- }
15
- };
16
- const renderItems = (item, options) => {
17
- switch (item.type) {
18
- case 'navigation':
19
- return options.layout === 'expanded' ? (<Listbox variant="flat" aria-label="Listbox menu with sections" itemClasses={{
20
- base: 'h-12 gap-6',
21
- }} {...item.listboxProps}>
22
- <ListboxSection title={item.label} classNames={{ group: 'flex flex-col gap-1' }}>
23
- {item.navigation.map((navItem) => {
24
- var _a;
25
- return (<ListboxItem key={navItem.label} startContent={navItem.icon} endContent={navItem.endContent} href={navItem.link} className={((_a = options.activeNav) === null || _a === void 0 ? void 0 : _a.link) === navItem.link ? "bg-default/40 text-default-foreground" : ''}>
26
- {navItem.label}
27
- </ListboxItem>);
28
- })}
29
- </ListboxSection>
30
- </Listbox>) : (<nav className="flex flex-col gap-1">
31
- {item.navigation.map((navItem) => {
32
- var _a;
33
- return (<Tooltip key={navItem.label} placement="right" content={navItem.label}>
34
- <Button variant={((_a = options.activeNav) === null || _a === void 0 ? void 0 : _a.link) === navItem.link ? 'flat' : 'light'} size="lg" as="a" startContent={navItem.icon} href={navItem.link} isIconOnly/>
35
- </Tooltip>);
36
- })}
37
- </nav>);
38
- case 'user':
39
- return (<Dropdown placement="bottom-start" classNames={{ trigger: options.layout === 'expanded' ? 'justify-start px-2' : 'justify-start' }} {...item.dropdown}>
40
- <DropdownTrigger>
41
- {options.layout === 'expanded' ? (<User as="button" avatarProps={item.avatar} className="transition-transform" description={item.description} name={item.name}/>) : (<Avatar as="button" className="transition-transform" {...item.avatar}/>)}
42
- </DropdownTrigger>
43
- <DropdownMenu aria-label="User Actions" color="primary" variant="flat" items={item.dropdownItems || []}>
44
- {(dropdownItem) => (<DropdownItem key={dropdownItem.label} {...dropdownItem}>
45
- {dropdownItem.label}
46
- </DropdownItem>)}
47
- </DropdownMenu>
48
- </Dropdown>);
49
- case 'custom':
50
- return options.layout === 'expanded' || item.showCollapsed ? <div className="px-2">{item.render}</div> : null;
51
- default:
52
- return null;
53
- }
54
- };
55
- const getActiveNav = (currentPath, items) => {
56
- if (!currentPath)
57
- return;
58
- const navigations = [];
59
- items.forEach((item) => {
60
- if (item.type !== 'navigation')
61
- return;
62
- navigations.push(item.navigation);
63
- });
64
- const possibleMatches = navigations.flat().filter((navItem) => navItem.link.startsWith(currentPath)).sort((a, b) => b.link.length - a.link.length);
65
- return possibleMatches.find((pMatch) => pMatch.link === currentPath) || possibleMatches[0];
66
- };
67
- export const Sidebar = ({ items, layout = 'expanded', autoLayout, currentPath }) => {
68
- const isMobile = useSmaller('xl');
69
- const [activeNav, setActiveNav] = useState(getActiveNav(currentPath, items));
70
- useEffect(() => setActiveNav(getActiveNav(currentPath, items)), [currentPath, items]);
71
- let renderedLayout = autoLayout ? undefined : layout;
72
- if (autoLayout) {
73
- if (isMobile) {
74
- renderedLayout = 'collapsed';
75
- }
76
- else {
77
- renderedLayout = 'expanded';
78
- }
79
- }
80
- const [collapsed, setCollapsed] = useState(renderedLayout === 'collapsed');
81
- useEffect(() => { if (autoLayout)
82
- setCollapsed(isMobile); }, [isMobile, setCollapsed, autoLayout]);
83
- const layoutStyles = collapsed ? 'w-20 opacity-0 pointer-events-none' : 'w-72';
84
- const collapseButtonStyles = collapsed ? 'left-20 translate-x-1/2 rotate-180' : 'left-72 -translate-x-1/2';
85
- return (<div className='flex border-r-[1px] border-default-100'>
86
- <div className={`fixed top-0 left-0 flex flex-col h-screen bg-content1 gap-8 transition-all ${collapsed ? '' : 'opacity-0'}`}>
87
- <ScrollShadow className={`w-20 items-center flex flex-col gap-8 px-3 pt-8 overflow-y-auto flex-1`}>
88
- {items.map((item) => {
89
- const children = item.align !== 'bottom' ? renderItems(item, { layout: 'collapsed', activeNav }) : null;
90
- return children ? (<div key={item.key} className={getAlignmentClasses(item.align)}>
91
- {children}
92
- </div>) : null;
93
- })}
94
- </ScrollShadow>
95
- <div className={`w-20 items-center flex flex-col gap-8 px-3 pb-8`}>
96
- {items.map((item) => {
97
- const children = item.align === 'bottom' ? renderItems(item, { layout: 'collapsed', activeNav }) : null;
98
- return children ? (<div key={item.key} className={getAlignmentClasses(item.align)}>
99
- {children}
100
- </div>) : null;
101
- })}
102
- </div>
103
- </div>
104
- <div className={`${layoutStyles} fixed top-0 left-0 flex flex-col h-screen bg-content1 gap-8 overflow-hidden transition-all`}>
105
- <ScrollShadow className={`w-72 flex flex-col gap-8 px-3 pt-8 overflow-y-auto flex-1`}>
106
- {items.map((item) => {
107
- const children = item.align !== 'bottom' ? renderItems(item, { layout: 'expanded', activeNav }) : null;
108
- return children ? (<div key={item.key} className={getAlignmentClasses(item.align)}>
109
- {children}
110
- </div>) : null;
111
- })}
112
- </ScrollShadow>
113
- <div className={`w-72 flex flex-col gap-8 px-3 pb-8`}>
114
- {items.map((item) => {
115
- const children = item.align === 'bottom' ? renderItems(item, { layout: 'expanded', activeNav }) : null;
116
- return children ? (<div key={item.key} className={getAlignmentClasses(item.align)}>
117
- {children}
118
- </div>) : null;
119
- })}
120
- </div>
121
- </div>
122
- <div className={`${layoutStyles} transition-all h-screen`}/>
123
- <div className={`fixed top-6 transition-all ${collapseButtonStyles}`}>
124
- <Button size="sm" isIconOnly radius="full" className="h-unit-6 w-unit-6 min-w-unit-6 bg-default-100" onClick={() => setCollapsed(!collapsed)}>
125
- <IconChevronLeft size={14}/>
126
- </Button>
127
- </div>
128
- </div>);
129
- };