@a2v2ai/uikit 0.0.36 → 0.0.38

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 (185) hide show
  1. package/Alert/Alert.stories.tsx +121 -0
  2. package/Alert/Alert.tsx +71 -0
  3. package/AlertDialog/AlertDialog.stories.tsx +665 -0
  4. package/AlertDialog/AlertDialog.tsx +241 -0
  5. package/Avatar/Avatar.stories.tsx +128 -0
  6. package/Avatar/Avatar.tsx +71 -0
  7. package/Badge/Badge.stories.tsx +76 -0
  8. package/Badge/Badge.tsx +39 -0
  9. package/Breadcrumb/Breadcrumb.stories.tsx +231 -0
  10. package/Breadcrumb/Breadcrumb.tsx +114 -0
  11. package/Button/Button.stories.tsx +684 -0
  12. package/Button/Button.tsx +107 -0
  13. package/Calendar/Calendar.stories.tsx +291 -0
  14. package/Calendar/Calendar.tsx +246 -0
  15. package/Card/Card.stories.tsx +136 -0
  16. package/Card/Card.tsx +96 -0
  17. package/Carousel/Carousel.stories.tsx +256 -0
  18. package/Carousel/Carousel.tsx +301 -0
  19. package/ChatBubble/ChatBubble.stories.tsx +339 -0
  20. package/ChatBubble/ChatBubble.tsx +179 -0
  21. package/Checkbox/Checkbox.stories.tsx +137 -0
  22. package/Checkbox/Checkbox.tsx +53 -0
  23. package/DataTable/DataTable.stories.tsx +400 -0
  24. package/DataTable/DataTable.tsx +207 -0
  25. package/Drawer/Drawer.stories.tsx +721 -0
  26. package/Drawer/Drawer.tsx +201 -0
  27. package/DropdownMenu/DropdownMenu.stories.tsx +251 -0
  28. package/DropdownMenu/DropdownMenu.tsx +199 -0
  29. package/ErrorMessage/ErrorMessage.stories.tsx +159 -0
  30. package/ErrorMessage/ErrorMessage.tsx +55 -0
  31. package/Flex/Flex.stories.tsx +390 -0
  32. package/Flex/Flex.tsx +102 -0
  33. package/IconButton/IconButton.stories.tsx +566 -0
  34. package/IconButton/IconButton.tsx +95 -0
  35. package/Input/Input.stories.tsx +566 -0
  36. package/Input/Input.tsx +168 -0
  37. package/InputOTP/InputOTP.stories.tsx +246 -0
  38. package/InputOTP/InputOTP.tsx +127 -0
  39. package/Label/Label.stories.tsx +110 -0
  40. package/Label/Label.tsx +44 -0
  41. package/Loader/Loader.stories.tsx +170 -0
  42. package/Loader/Loader.tsx +62 -0
  43. package/Menubar/Menubar.stories.tsx +382 -0
  44. package/Menubar/Menubar.tsx +274 -0
  45. package/Menubar/index.ts +18 -0
  46. package/Pagination/Pagination.stories.tsx +196 -0
  47. package/Pagination/Pagination.tsx +122 -0
  48. package/Popover/Popover.stories.tsx +133 -0
  49. package/Popover/Popover.tsx +31 -0
  50. package/Progress/Progress.stories.tsx +146 -0
  51. package/Progress/Progress.tsx +67 -0
  52. package/RadioGroup/RadioGroup.stories.tsx +159 -0
  53. package/RadioGroup/RadioGroup.tsx +68 -0
  54. package/ScrollArea/ScrollArea.stories.tsx +136 -0
  55. package/ScrollArea/ScrollArea.tsx +46 -0
  56. package/Select/Select.stories.tsx +378 -0
  57. package/Select/Select.tsx +230 -0
  58. package/Separator/Separator.stories.tsx +110 -0
  59. package/Separator/Separator.tsx +29 -0
  60. package/Sidebar/Sidebar.stories.tsx +340 -0
  61. package/Sidebar/Sidebar.tsx +414 -0
  62. package/Sidebar/index.ts +28 -0
  63. package/Skeleton/Skeleton.stories.tsx +117 -0
  64. package/Skeleton/Skeleton.tsx +16 -0
  65. package/Slider/Slider.stories.tsx +216 -0
  66. package/Slider/Slider.tsx +29 -0
  67. package/Spinner/Spinner.stories.tsx +210 -0
  68. package/Spinner/Spinner.tsx +78 -0
  69. package/Switch/Switch.stories.tsx +146 -0
  70. package/Switch/Switch.tsx +59 -0
  71. package/Table/Table.stories.tsx +510 -0
  72. package/Table/Table.tsx +114 -0
  73. package/Tabs/Tabs.stories.tsx +197 -0
  74. package/Tabs/Tabs.tsx +74 -0
  75. package/Textarea/Textarea.stories.tsx +187 -0
  76. package/Textarea/Textarea.tsx +73 -0
  77. package/Toast/Toast.stories.tsx +285 -0
  78. package/Toast/Toast.tsx +59 -0
  79. package/Tooltip/Tooltip.stories.tsx +463 -0
  80. package/Tooltip/Tooltip.tsx +96 -0
  81. package/Typography/Typography.stories.tsx +425 -0
  82. package/Typography/Typography.tsx +106 -0
  83. package/helpers.ts +5 -0
  84. package/{icons.js → icons.ts} +1 -1
  85. package/index.ts +217 -0
  86. package/lib/typography-types.ts +223 -0
  87. package/lib/utils.ts +15 -0
  88. package/package.json +36 -33
  89. package/tsconfig.json +22 -0
  90. package/Alert/Alert.d.ts +0 -13
  91. package/Alert/Alert.js +0 -25
  92. package/AlertDialog/AlertDialog.d.ts +0 -43
  93. package/AlertDialog/AlertDialog.js +0 -71
  94. package/Avatar/Avatar.d.ts +0 -14
  95. package/Avatar/Avatar.js +0 -25
  96. package/Badge/Badge.d.ts +0 -11
  97. package/Badge/Badge.js +0 -23
  98. package/Breadcrumb/Breadcrumb.d.ts +0 -19
  99. package/Breadcrumb/Breadcrumb.js +0 -23
  100. package/Button/Button.d.ts +0 -23
  101. package/Button/Button.js +0 -52
  102. package/Calendar/Calendar.d.ts +0 -20
  103. package/Calendar/Calendar.js +0 -78
  104. package/Card/Card.d.ts +0 -16
  105. package/Card/Card.js +0 -28
  106. package/Carousel/Carousel.d.ts +0 -37
  107. package/Carousel/Carousel.js +0 -132
  108. package/ChatBubble/ChatBubble.d.ts +0 -33
  109. package/ChatBubble/ChatBubble.js +0 -107
  110. package/Checkbox/Checkbox.d.ts +0 -12
  111. package/Checkbox/Checkbox.js +0 -20
  112. package/DataTable/DataTable.d.ts +0 -35
  113. package/DataTable/DataTable.js +0 -51
  114. package/Dialog/Dialog.d.ts +0 -35
  115. package/Dialog/Dialog.js +0 -130
  116. package/Drawer/Drawer.d.ts +0 -33
  117. package/Drawer/Drawer.js +0 -55
  118. package/DropdownMenu/DropdownMenu.d.ts +0 -27
  119. package/DropdownMenu/DropdownMenu.js +0 -35
  120. package/ErrorMessage/ErrorMessage.d.ts +0 -27
  121. package/ErrorMessage/ErrorMessage.js +0 -14
  122. package/Flex/Flex.d.ts +0 -31
  123. package/Flex/Flex.js +0 -64
  124. package/IconButton/IconButton.d.ts +0 -23
  125. package/IconButton/IconButton.js +0 -48
  126. package/Input/Input.d.ts +0 -27
  127. package/Input/Input.js +0 -42
  128. package/InputOTP/InputOTP.d.ts +0 -20
  129. package/InputOTP/InputOTP.js +0 -44
  130. package/Label/Label.d.ts +0 -13
  131. package/Label/Label.js +0 -19
  132. package/Loader/Loader.d.ts +0 -21
  133. package/Loader/Loader.js +0 -30
  134. package/Menubar/Menubar.d.ts +0 -26
  135. package/Menubar/Menubar.js +0 -54
  136. package/Menubar/index.d.ts +0 -1
  137. package/Menubar/index.js +0 -1
  138. package/Pagination/Pagination.d.ts +0 -35
  139. package/Pagination/Pagination.js +0 -37
  140. package/Popover/Popover.d.ts +0 -7
  141. package/Popover/Popover.js +0 -10
  142. package/Progress/Progress.d.ts +0 -17
  143. package/Progress/Progress.js +0 -33
  144. package/RadioGroup/RadioGroup.d.ts +0 -13
  145. package/RadioGroup/RadioGroup.js +0 -26
  146. package/ScrollArea/ScrollArea.d.ts +0 -5
  147. package/ScrollArea/ScrollArea.js +0 -11
  148. package/Select/Select.d.ts +0 -29
  149. package/Select/Select.js +0 -50
  150. package/Separator/Separator.d.ts +0 -4
  151. package/Separator/Separator.js +0 -7
  152. package/Sidebar/Sidebar.d.ts +0 -48
  153. package/Sidebar/Sidebar.js +0 -116
  154. package/Sidebar/index.d.ts +0 -2
  155. package/Sidebar/index.js +0 -1
  156. package/Skeleton/Skeleton.d.ts +0 -4
  157. package/Skeleton/Skeleton.js +0 -7
  158. package/Slider/Slider.d.ts +0 -6
  159. package/Slider/Slider.js +0 -7
  160. package/Spinner/Spinner.d.ts +0 -19
  161. package/Spinner/Spinner.js +0 -31
  162. package/Switch/Switch.d.ts +0 -12
  163. package/Switch/Switch.js +0 -30
  164. package/Table/Table.d.ts +0 -10
  165. package/Table/Table.js +0 -20
  166. package/Tabs/Tabs.d.ts +0 -15
  167. package/Tabs/Tabs.js +0 -24
  168. package/Textarea/Textarea.d.ts +0 -19
  169. package/Textarea/Textarea.js +0 -31
  170. package/Toast/Toast.d.ts +0 -12
  171. package/Toast/Toast.js +0 -25
  172. package/Tooltip/Tooltip.d.ts +0 -17
  173. package/Tooltip/Tooltip.js +0 -29
  174. package/Typography/Typography.d.ts +0 -20
  175. package/Typography/Typography.js +0 -43
  176. package/helpers.d.ts +0 -4
  177. package/helpers.js +0 -5
  178. package/icons.d.ts +0 -1
  179. package/index.d.ts +0 -42
  180. package/index.js +0 -45
  181. package/lib/typography-types.d.ts +0 -4
  182. package/lib/typography-types.js +0 -90
  183. package/lib/utils.d.ts +0 -3
  184. package/lib/utils.js +0 -14
  185. package/tmpclaude-2407-cwd +0 -1
@@ -0,0 +1,170 @@
1
+ import type { Meta, StoryObj } from "@storybook/react"
2
+ import { Button } from "../Button/Button"
3
+ import { Flex } from "../Flex/Flex"
4
+ import { Typography } from "../Typography/Typography"
5
+ import { Loader } from "./Loader"
6
+
7
+ const meta: Meta<typeof Loader> = {
8
+ title: "Components/Loader",
9
+ component: Loader,
10
+ parameters: {
11
+ layout: "centered",
12
+ },
13
+ tags: ["autodocs"],
14
+ argTypes: {
15
+ size: {
16
+ control: "select",
17
+ options: ["mini", "small", "regular", "large"],
18
+ description: "The size of the loader",
19
+ },
20
+ color: {
21
+ control: "select",
22
+ options: ["main", "grey", "white", "current"],
23
+ description: "The color of the loader",
24
+ },
25
+ label: {
26
+ control: "text",
27
+ description: "Accessibility label for the loader",
28
+ },
29
+ },
30
+ }
31
+
32
+ export default meta
33
+ type Story = StoryObj<typeof Loader>
34
+
35
+ export const Default: Story = {
36
+ args: {
37
+ size: "regular",
38
+ color: "main",
39
+ },
40
+ }
41
+
42
+ export const Mini: Story = {
43
+ args: {
44
+ size: "mini",
45
+ color: "main",
46
+ },
47
+ }
48
+
49
+ export const Small: Story = {
50
+ args: {
51
+ size: "small",
52
+ color: "main",
53
+ },
54
+ }
55
+
56
+ export const Regular: Story = {
57
+ args: {
58
+ size: "regular",
59
+ color: "main",
60
+ },
61
+ }
62
+
63
+ export const Large: Story = {
64
+ args: {
65
+ size: "large",
66
+ color: "main",
67
+ },
68
+ }
69
+
70
+ export const Grey: Story = {
71
+ args: {
72
+ size: "regular",
73
+ color: "grey",
74
+ },
75
+ }
76
+
77
+ export const White: Story = {
78
+ args: {
79
+ size: "regular",
80
+ color: "white",
81
+ },
82
+ parameters: {
83
+ backgrounds: { default: "dark" },
84
+ },
85
+ decorators: [
86
+ (Story) => (
87
+ <Flex className="bg-main-600 p-4 rounded-lg">
88
+ <Story />
89
+ </Flex>
90
+ ),
91
+ ],
92
+ }
93
+
94
+ export const InButton: Story = {
95
+ render: () => (
96
+ <Button disabled>
97
+ <Loader size="small" color="current" className="mr-2" />
98
+ Loading...
99
+ </Button>
100
+ ),
101
+ }
102
+
103
+ export const AllVariants: Story = {
104
+ render: () => (
105
+ <Flex gap={8}>
106
+ {/* Sizes */}
107
+ <Flex gap={4}>
108
+ <Typography variant="subtitle1" color="main-700">Sizes</Typography>
109
+ <Flex direction="row" align="center" gap={6}>
110
+ <Flex align="center" gap={2}>
111
+ <Loader size="mini" />
112
+ <Typography variant="body3" color="main-500">Mini</Typography>
113
+ </Flex>
114
+ <Flex align="center" gap={2}>
115
+ <Loader size="small" />
116
+ <Typography variant="body3" color="main-500">Small</Typography>
117
+ </Flex>
118
+ <Flex align="center" gap={2}>
119
+ <Loader size="regular" />
120
+ <Typography variant="body3" color="main-500">Regular</Typography>
121
+ </Flex>
122
+ <Flex align="center" gap={2}>
123
+ <Loader size="large" />
124
+ <Typography variant="body3" color="main-500">Large</Typography>
125
+ </Flex>
126
+ </Flex>
127
+ </Flex>
128
+
129
+ {/* Colors */}
130
+ <Flex gap={4}>
131
+ <Typography variant="subtitle1" color="main-700">Colors</Typography>
132
+ <Flex direction="row" align="center" gap={6}>
133
+ <Flex align="center" gap={2}>
134
+ <Loader color="main" />
135
+ <Typography variant="body3" color="main-500">Main</Typography>
136
+ </Flex>
137
+ <Flex align="center" gap={2}>
138
+ <Loader color="grey" />
139
+ <Typography variant="body3" color="main-500">Grey</Typography>
140
+ </Flex>
141
+ <Flex align="center" gap={2} className="bg-main-600 p-3 rounded-lg">
142
+ <Loader color="white" />
143
+ <Typography variant="body3" className="text-white">White</Typography>
144
+ </Flex>
145
+ </Flex>
146
+ </Flex>
147
+
148
+ {/* Usage Examples */}
149
+ <Flex gap={4}>
150
+ <Typography variant="subtitle1" color="main-700">Usage Examples</Typography>
151
+ <Flex gap={4}>
152
+ <Flex direction="row" align="center" gap={4}>
153
+ <Button disabled>
154
+ <Loader size="small" color="current" className="mr-2" />
155
+ Loading...
156
+ </Button>
157
+ <Typography variant="body3" color="main-500">In Button</Typography>
158
+ </Flex>
159
+ <Flex direction="row" align="center" gap={4}>
160
+ <Flex direction="row" align="center" gap={2} className="text-main-600">
161
+ <Loader size="small" color="current" />
162
+ <Typography variant="body2">Processing...</Typography>
163
+ </Flex>
164
+ <Typography variant="body3" color="main-500">Inline with text</Typography>
165
+ </Flex>
166
+ </Flex>
167
+ </Flex>
168
+ </Flex>
169
+ ),
170
+ }
@@ -0,0 +1,62 @@
1
+ import * as React from "react"
2
+ import { Loader2 } from "lucide-react"
3
+ import { cva } from "class-variance-authority"
4
+
5
+ import { Flex } from "../Flex/Flex"
6
+ import { Typography } from "../Typography/Typography"
7
+ import { cn } from "../lib/utils"
8
+
9
+ type LoaderSize = "mini" | "small" | "regular" | "large"
10
+ type LoaderColor = "main" | "grey" | "white" | "current"
11
+
12
+ const loaderVariants = cva(
13
+ "animate-spin",
14
+ {
15
+ variants: {
16
+ size: {
17
+ mini: "size-3",
18
+ small: "size-4",
19
+ regular: "size-6",
20
+ large: "size-8",
21
+ },
22
+ color: {
23
+ main: "text-main-600",
24
+ grey: "text-grey-600",
25
+ white: "text-white",
26
+ current: "text-current",
27
+ },
28
+ },
29
+ defaultVariants: {
30
+ size: "regular",
31
+ color: "main",
32
+ },
33
+ }
34
+ )
35
+
36
+ export type LoaderProps = Omit<React.HTMLAttributes<HTMLDivElement>, "color"> & {
37
+ size?: LoaderSize
38
+ color?: LoaderColor
39
+ /** Optional label for accessibility */
40
+ label?: string
41
+ }
42
+
43
+ const Loader = React.forwardRef<HTMLDivElement, LoaderProps>(
44
+ ({ className, size, color, label = "Loading...", ...props }, ref) => (
45
+ <Flex
46
+ ref={ref}
47
+ role="status"
48
+ aria-label={label}
49
+ align="center"
50
+ justify="center"
51
+ className={cn("inline-flex", className)}
52
+ {...props}
53
+ >
54
+ <Loader2 className={cn(loaderVariants({ size, color }))} />
55
+ <Typography className="sr-only">{label}</Typography>
56
+ </Flex>
57
+ )
58
+ )
59
+ Loader.displayName = "Loader"
60
+
61
+ export { Loader, loaderVariants }
62
+ export type { LoaderSize, LoaderColor }
@@ -0,0 +1,382 @@
1
+ import type { Meta, StoryObj } from "@storybook/react"
2
+ import { Flex } from "../Flex/Flex"
3
+ import { Typography } from "../Typography/Typography"
4
+ import {
5
+ Menubar,
6
+ MenubarMenu,
7
+ MenubarTrigger,
8
+ MenubarContent,
9
+ MenubarItem,
10
+ MenubarSeparator,
11
+ MenubarShortcut,
12
+ MenubarCheckboxItem,
13
+ MenubarRadioGroup,
14
+ MenubarRadioItem,
15
+ MenubarSub,
16
+ MenubarSubTrigger,
17
+ MenubarSubContent,
18
+ MenubarLabel,
19
+ } from "./Menubar"
20
+
21
+ const meta: Meta<typeof Menubar> = {
22
+ title: "Components/Menubar",
23
+ component: Menubar,
24
+ parameters: {
25
+ layout: "centered",
26
+ },
27
+ tags: ["autodocs"],
28
+ }
29
+
30
+ export default meta
31
+ type Story = StoryObj<typeof Menubar>
32
+
33
+ export const Default: Story = {
34
+ render: () => (
35
+ <Menubar>
36
+ <MenubarMenu>
37
+ <MenubarTrigger>File</MenubarTrigger>
38
+ <MenubarContent>
39
+ <MenubarItem>
40
+ New Tab <MenubarShortcut>Ctrl+T</MenubarShortcut>
41
+ </MenubarItem>
42
+ <MenubarItem>
43
+ New Window <MenubarShortcut>Ctrl+N</MenubarShortcut>
44
+ </MenubarItem>
45
+ <MenubarItem disabled>New Incognito Window</MenubarItem>
46
+ <MenubarSeparator />
47
+ <MenubarSub>
48
+ <MenubarSubTrigger>Share</MenubarSubTrigger>
49
+ <MenubarSubContent>
50
+ <MenubarItem>Email link</MenubarItem>
51
+ <MenubarItem>Messages</MenubarItem>
52
+ <MenubarItem>Notes</MenubarItem>
53
+ </MenubarSubContent>
54
+ </MenubarSub>
55
+ <MenubarSeparator />
56
+ <MenubarItem>
57
+ Print... <MenubarShortcut>Ctrl+P</MenubarShortcut>
58
+ </MenubarItem>
59
+ </MenubarContent>
60
+ </MenubarMenu>
61
+ <MenubarMenu>
62
+ <MenubarTrigger>Edit</MenubarTrigger>
63
+ <MenubarContent>
64
+ <MenubarItem>
65
+ Undo <MenubarShortcut>Ctrl+Z</MenubarShortcut>
66
+ </MenubarItem>
67
+ <MenubarItem>
68
+ Redo <MenubarShortcut>Ctrl+Y</MenubarShortcut>
69
+ </MenubarItem>
70
+ <MenubarSeparator />
71
+ <MenubarSub>
72
+ <MenubarSubTrigger>Find</MenubarSubTrigger>
73
+ <MenubarSubContent>
74
+ <MenubarItem>Search the web</MenubarItem>
75
+ <MenubarSeparator />
76
+ <MenubarItem>Find...</MenubarItem>
77
+ <MenubarItem>Find Next</MenubarItem>
78
+ <MenubarItem>Find Previous</MenubarItem>
79
+ </MenubarSubContent>
80
+ </MenubarSub>
81
+ <MenubarSeparator />
82
+ <MenubarItem>
83
+ Cut <MenubarShortcut>Ctrl+X</MenubarShortcut>
84
+ </MenubarItem>
85
+ <MenubarItem>
86
+ Copy <MenubarShortcut>Ctrl+C</MenubarShortcut>
87
+ </MenubarItem>
88
+ <MenubarItem>
89
+ Paste <MenubarShortcut>Ctrl+V</MenubarShortcut>
90
+ </MenubarItem>
91
+ </MenubarContent>
92
+ </MenubarMenu>
93
+ <MenubarMenu>
94
+ <MenubarTrigger>View</MenubarTrigger>
95
+ <MenubarContent>
96
+ <MenubarCheckboxItem>Always Show Bookmarks Bar</MenubarCheckboxItem>
97
+ <MenubarCheckboxItem checked>
98
+ Always Show Full URLs
99
+ </MenubarCheckboxItem>
100
+ <MenubarSeparator />
101
+ <MenubarItem>
102
+ Reload <MenubarShortcut>Ctrl+R</MenubarShortcut>
103
+ </MenubarItem>
104
+ <MenubarItem disabled>
105
+ Force Reload <MenubarShortcut>Ctrl+Shift+R</MenubarShortcut>
106
+ </MenubarItem>
107
+ <MenubarSeparator />
108
+ <MenubarItem>Toggle Fullscreen</MenubarItem>
109
+ <MenubarSeparator />
110
+ <MenubarItem>Hide Sidebar</MenubarItem>
111
+ </MenubarContent>
112
+ </MenubarMenu>
113
+ <MenubarMenu>
114
+ <MenubarTrigger>Profiles</MenubarTrigger>
115
+ <MenubarContent>
116
+ <MenubarRadioGroup value="andy">
117
+ <MenubarRadioItem value="andy">Andy</MenubarRadioItem>
118
+ <MenubarRadioItem value="benoit">Benoit</MenubarRadioItem>
119
+ <MenubarRadioItem value="luis">Luis</MenubarRadioItem>
120
+ </MenubarRadioGroup>
121
+ <MenubarSeparator />
122
+ <MenubarItem>Edit...</MenubarItem>
123
+ <MenubarSeparator />
124
+ <MenubarItem>Add Profile...</MenubarItem>
125
+ </MenubarContent>
126
+ </MenubarMenu>
127
+ </Menubar>
128
+ ),
129
+ }
130
+
131
+ export const Simple: Story = {
132
+ render: () => (
133
+ <Menubar>
134
+ <MenubarMenu>
135
+ <MenubarTrigger>File</MenubarTrigger>
136
+ <MenubarContent>
137
+ <MenubarItem>New</MenubarItem>
138
+ <MenubarItem>Open</MenubarItem>
139
+ <MenubarItem>Save</MenubarItem>
140
+ <MenubarSeparator />
141
+ <MenubarItem>Exit</MenubarItem>
142
+ </MenubarContent>
143
+ </MenubarMenu>
144
+ <MenubarMenu>
145
+ <MenubarTrigger>Edit</MenubarTrigger>
146
+ <MenubarContent>
147
+ <MenubarItem>Undo</MenubarItem>
148
+ <MenubarItem>Redo</MenubarItem>
149
+ <MenubarSeparator />
150
+ <MenubarItem>Cut</MenubarItem>
151
+ <MenubarItem>Copy</MenubarItem>
152
+ <MenubarItem>Paste</MenubarItem>
153
+ </MenubarContent>
154
+ </MenubarMenu>
155
+ <MenubarMenu>
156
+ <MenubarTrigger>Help</MenubarTrigger>
157
+ <MenubarContent>
158
+ <MenubarItem>Documentation</MenubarItem>
159
+ <MenubarItem>About</MenubarItem>
160
+ </MenubarContent>
161
+ </MenubarMenu>
162
+ </Menubar>
163
+ ),
164
+ }
165
+
166
+ export const WithLabels: Story = {
167
+ render: () => (
168
+ <Menubar>
169
+ <MenubarMenu>
170
+ <MenubarTrigger>Actions</MenubarTrigger>
171
+ <MenubarContent>
172
+ <MenubarLabel>File Actions</MenubarLabel>
173
+ <MenubarItem>New File</MenubarItem>
174
+ <MenubarItem>New Folder</MenubarItem>
175
+ <MenubarSeparator />
176
+ <MenubarLabel>Edit Actions</MenubarLabel>
177
+ <MenubarItem>Rename</MenubarItem>
178
+ <MenubarItem>Delete</MenubarItem>
179
+ </MenubarContent>
180
+ </MenubarMenu>
181
+ </Menubar>
182
+ ),
183
+ }
184
+
185
+ export const WithCheckboxes: Story = {
186
+ render: () => (
187
+ <Menubar>
188
+ <MenubarMenu>
189
+ <MenubarTrigger>Options</MenubarTrigger>
190
+ <MenubarContent>
191
+ <MenubarCheckboxItem checked>Show Toolbar</MenubarCheckboxItem>
192
+ <MenubarCheckboxItem checked>Show Sidebar</MenubarCheckboxItem>
193
+ <MenubarCheckboxItem>Show Status Bar</MenubarCheckboxItem>
194
+ <MenubarSeparator />
195
+ <MenubarCheckboxItem>Enable Spell Check</MenubarCheckboxItem>
196
+ <MenubarCheckboxItem checked>Auto Save</MenubarCheckboxItem>
197
+ </MenubarContent>
198
+ </MenubarMenu>
199
+ </Menubar>
200
+ ),
201
+ }
202
+
203
+ export const WithRadioGroup: Story = {
204
+ render: () => (
205
+ <Menubar>
206
+ <MenubarMenu>
207
+ <MenubarTrigger>Theme</MenubarTrigger>
208
+ <MenubarContent>
209
+ <MenubarRadioGroup value="system">
210
+ <MenubarRadioItem value="light">Light</MenubarRadioItem>
211
+ <MenubarRadioItem value="dark">Dark</MenubarRadioItem>
212
+ <MenubarRadioItem value="system">System</MenubarRadioItem>
213
+ </MenubarRadioGroup>
214
+ </MenubarContent>
215
+ </MenubarMenu>
216
+ <MenubarMenu>
217
+ <MenubarTrigger>Font Size</MenubarTrigger>
218
+ <MenubarContent>
219
+ <MenubarRadioGroup value="medium">
220
+ <MenubarRadioItem value="small">Small</MenubarRadioItem>
221
+ <MenubarRadioItem value="medium">Medium</MenubarRadioItem>
222
+ <MenubarRadioItem value="large">Large</MenubarRadioItem>
223
+ </MenubarRadioGroup>
224
+ </MenubarContent>
225
+ </MenubarMenu>
226
+ </Menubar>
227
+ ),
228
+ }
229
+
230
+ export const WithSubmenus: Story = {
231
+ render: () => (
232
+ <Menubar>
233
+ <MenubarMenu>
234
+ <MenubarTrigger>Insert</MenubarTrigger>
235
+ <MenubarContent>
236
+ <MenubarItem>Text</MenubarItem>
237
+ <MenubarSub>
238
+ <MenubarSubTrigger>Shape</MenubarSubTrigger>
239
+ <MenubarSubContent>
240
+ <MenubarItem>Rectangle</MenubarItem>
241
+ <MenubarItem>Circle</MenubarItem>
242
+ <MenubarItem>Triangle</MenubarItem>
243
+ <MenubarSub>
244
+ <MenubarSubTrigger>More Shapes</MenubarSubTrigger>
245
+ <MenubarSubContent>
246
+ <MenubarItem>Star</MenubarItem>
247
+ <MenubarItem>Heart</MenubarItem>
248
+ <MenubarItem>Arrow</MenubarItem>
249
+ </MenubarSubContent>
250
+ </MenubarSub>
251
+ </MenubarSubContent>
252
+ </MenubarSub>
253
+ <MenubarSub>
254
+ <MenubarSubTrigger>Image</MenubarSubTrigger>
255
+ <MenubarSubContent>
256
+ <MenubarItem>From File...</MenubarItem>
257
+ <MenubarItem>From URL...</MenubarItem>
258
+ <MenubarItem>From Clipboard</MenubarItem>
259
+ </MenubarSubContent>
260
+ </MenubarSub>
261
+ <MenubarItem>Table</MenubarItem>
262
+ <MenubarItem>Chart</MenubarItem>
263
+ </MenubarContent>
264
+ </MenubarMenu>
265
+ </Menubar>
266
+ ),
267
+ }
268
+
269
+ export const AllVariants: Story = {
270
+ render: () => (
271
+ <Flex gap={8}>
272
+ <Flex gap={4}>
273
+ <Typography variant="subtitle1" color="main-700">
274
+ Full Featured Menubar
275
+ </Typography>
276
+ <Menubar>
277
+ <MenubarMenu>
278
+ <MenubarTrigger>File</MenubarTrigger>
279
+ <MenubarContent>
280
+ <MenubarItem>
281
+ New <MenubarShortcut>Ctrl+N</MenubarShortcut>
282
+ </MenubarItem>
283
+ <MenubarItem>
284
+ Open <MenubarShortcut>Ctrl+O</MenubarShortcut>
285
+ </MenubarItem>
286
+ <MenubarItem>
287
+ Save <MenubarShortcut>Ctrl+S</MenubarShortcut>
288
+ </MenubarItem>
289
+ <MenubarSeparator />
290
+ <MenubarSub>
291
+ <MenubarSubTrigger>Export</MenubarSubTrigger>
292
+ <MenubarSubContent>
293
+ <MenubarItem>PDF</MenubarItem>
294
+ <MenubarItem>PNG</MenubarItem>
295
+ <MenubarItem>JPEG</MenubarItem>
296
+ </MenubarSubContent>
297
+ </MenubarSub>
298
+ <MenubarSeparator />
299
+ <MenubarItem>Exit</MenubarItem>
300
+ </MenubarContent>
301
+ </MenubarMenu>
302
+ <MenubarMenu>
303
+ <MenubarTrigger>Edit</MenubarTrigger>
304
+ <MenubarContent>
305
+ <MenubarItem>
306
+ Undo <MenubarShortcut>Ctrl+Z</MenubarShortcut>
307
+ </MenubarItem>
308
+ <MenubarItem>
309
+ Redo <MenubarShortcut>Ctrl+Y</MenubarShortcut>
310
+ </MenubarItem>
311
+ </MenubarContent>
312
+ </MenubarMenu>
313
+ <MenubarMenu>
314
+ <MenubarTrigger>View</MenubarTrigger>
315
+ <MenubarContent>
316
+ <MenubarCheckboxItem checked>Toolbar</MenubarCheckboxItem>
317
+ <MenubarCheckboxItem>Status Bar</MenubarCheckboxItem>
318
+ <MenubarSeparator />
319
+ <MenubarRadioGroup value="100">
320
+ <MenubarLabel>Zoom</MenubarLabel>
321
+ <MenubarRadioItem value="50">50%</MenubarRadioItem>
322
+ <MenubarRadioItem value="100">100%</MenubarRadioItem>
323
+ <MenubarRadioItem value="150">150%</MenubarRadioItem>
324
+ </MenubarRadioGroup>
325
+ </MenubarContent>
326
+ </MenubarMenu>
327
+ </Menubar>
328
+ </Flex>
329
+
330
+ <Flex gap={4}>
331
+ <Typography variant="subtitle1" color="main-700">
332
+ Minimal Menubar
333
+ </Typography>
334
+ <Menubar>
335
+ <MenubarMenu>
336
+ <MenubarTrigger>Menu</MenubarTrigger>
337
+ <MenubarContent>
338
+ <MenubarItem>Option 1</MenubarItem>
339
+ <MenubarItem>Option 2</MenubarItem>
340
+ <MenubarItem>Option 3</MenubarItem>
341
+ </MenubarContent>
342
+ </MenubarMenu>
343
+ </Menubar>
344
+ </Flex>
345
+
346
+ <Flex gap={4}>
347
+ <Typography variant="subtitle1" color="main-700">
348
+ Application Menubar
349
+ </Typography>
350
+ <Menubar>
351
+ <MenubarMenu>
352
+ <MenubarTrigger>App</MenubarTrigger>
353
+ <MenubarContent>
354
+ <MenubarItem>About</MenubarItem>
355
+ <MenubarItem>Preferences</MenubarItem>
356
+ <MenubarSeparator />
357
+ <MenubarItem>Quit</MenubarItem>
358
+ </MenubarContent>
359
+ </MenubarMenu>
360
+ <MenubarMenu>
361
+ <MenubarTrigger>Account</MenubarTrigger>
362
+ <MenubarContent>
363
+ <MenubarItem>Profile</MenubarItem>
364
+ <MenubarItem>Settings</MenubarItem>
365
+ <MenubarSeparator />
366
+ <MenubarItem>Sign Out</MenubarItem>
367
+ </MenubarContent>
368
+ </MenubarMenu>
369
+ <MenubarMenu>
370
+ <MenubarTrigger>Help</MenubarTrigger>
371
+ <MenubarContent>
372
+ <MenubarItem>Documentation</MenubarItem>
373
+ <MenubarItem>Support</MenubarItem>
374
+ <MenubarSeparator />
375
+ <MenubarItem>Check for Updates</MenubarItem>
376
+ </MenubarContent>
377
+ </MenubarMenu>
378
+ </Menubar>
379
+ </Flex>
380
+ </Flex>
381
+ ),
382
+ }