@12-apps/ui 1.5.0 → 1.5.2

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 (229) hide show
  1. package/package.json +17 -9
  2. package/src/button/index.ts +1 -0
  3. package/src/social-login-button/index.ts +1 -0
  4. package/src/{social-login-button.tsx → social-login-button/social-login-button.tsx} +5 -5
  5. package/src/user-avatar/index.ts +1 -0
  6. package/src/{user-avatar.tsx → user-avatar/user-avatar.tsx} +4 -4
  7. package/eslint.config.js +0 -89
  8. package/src/__tests__/data-grid.test.tsx +0 -125
  9. package/src/__tests__/package-wiring.test.ts +0 -41
  10. package/src/__tests__/setup.ts +0 -1
  11. package/src/__tests__/social-login-button.test.tsx +0 -186
  12. package/src/__tests__/user-avatar.test.tsx +0 -195
  13. package/src/__tests__/viewport.test.ts +0 -50
  14. package/src/components/command/__tests__/command.test.tsx +0 -112
  15. package/src/components/data-display/Alert/Alert.stories.tsx +0 -559
  16. package/src/components/data-display/Alert/Alert.test.stories.tsx +0 -707
  17. package/src/components/data-display/AlertDialog/AlertDialog.stories.tsx +0 -362
  18. package/src/components/data-display/AlertDialog/AlertDialog.test.stories.tsx +0 -763
  19. package/src/components/data-display/AsyncStateContainer/AsyncStateContainer.stories.tsx +0 -230
  20. package/src/components/data-display/AsyncStateContainer/AsyncStateContainer.test.stories.tsx +0 -270
  21. package/src/components/data-display/Avatar/Avatar.stories.tsx +0 -721
  22. package/src/components/data-display/Avatar/Avatar.test.stories.tsx +0 -822
  23. package/src/components/data-display/Badge/Badge.stories.tsx +0 -1134
  24. package/src/components/data-display/Badge/Badge.test.stories.tsx +0 -1194
  25. package/src/components/data-display/Banner/Banner.stories.tsx +0 -528
  26. package/src/components/data-display/Banner/Banner.test.stories.tsx +0 -511
  27. package/src/components/data-display/Carousel/Carousel.stories.tsx +0 -607
  28. package/src/components/data-display/Carousel/Carousel.test.stories.tsx +0 -701
  29. package/src/components/data-display/Chart/Chart.stories.tsx +0 -568
  30. package/src/components/data-display/Chart/Chart.test.stories.tsx +0 -174
  31. package/src/components/data-display/Chart/SpecChart.stories.tsx +0 -150
  32. package/src/components/data-display/Chart/SpecChart.test.stories.tsx +0 -56
  33. package/src/components/data-display/Chart/__tests__/SpecChart.test.tsx +0 -60
  34. package/src/components/data-display/Chart/__tests__/chart-format.test.ts +0 -43
  35. package/src/components/data-display/Chart/__tests__/chart-spec.test.ts +0 -119
  36. package/src/components/data-display/Chip/Chip.stories.tsx +0 -252
  37. package/src/components/data-display/Chip/Chip.test.stories.tsx +0 -266
  38. package/src/components/data-display/DataGrid/DataGrid.stories.tsx +0 -515
  39. package/src/components/data-display/DataGrid/DataGrid.test.stories.tsx +0 -653
  40. package/src/components/data-display/DataViews/__tests__/DataViewsGrid.test.tsx +0 -271
  41. package/src/components/data-display/DataViews/__tests__/DataViewsTableBase.test.tsx +0 -134
  42. package/src/components/data-display/DataViews/__tests__/SaveViewModal.test.tsx +0 -83
  43. package/src/components/data-display/DataViews/__tests__/data-views-filter.test.ts +0 -115
  44. package/src/components/data-display/DataViews/__tests__/data-views-preview.test.ts +0 -53
  45. package/src/components/data-display/DataViews/__tests__/range-pill.test.tsx +0 -114
  46. package/src/components/data-display/DataViews/base-card.stories.tsx +0 -136
  47. package/src/components/data-display/DescriptionItem/DescriptionItem.stories.tsx +0 -254
  48. package/src/components/data-display/EmptyState/EmptyState.stories.tsx +0 -282
  49. package/src/components/data-display/EmptyState/EmptyState.test.stories.tsx +0 -441
  50. package/src/components/data-display/ErrorState/ErrorState.stories.tsx +0 -110
  51. package/src/components/data-display/ErrorState/ErrorState.test.stories.tsx +0 -133
  52. package/src/components/data-display/HoverCard/HoverCard.stories.tsx +0 -650
  53. package/src/components/data-display/HoverCard/HoverCard.test.stories.tsx +0 -929
  54. package/src/components/data-display/InteractiveTooltip/InteractiveTooltip.stories.tsx +0 -411
  55. package/src/components/data-display/LazyImage/LazyImage.stories.tsx +0 -387
  56. package/src/components/data-display/Lightbox/Lightbox.stories.tsx +0 -315
  57. package/src/components/data-display/Lightbox/Lightbox.test.stories.tsx +0 -598
  58. package/src/components/data-display/LoadingState/LoadingState.stories.tsx +0 -124
  59. package/src/components/data-display/LoadingState/LoadingState.test.stories.tsx +0 -99
  60. package/src/components/data-display/MapPreview/MapPreview.stories.tsx +0 -458
  61. package/src/components/data-display/MapPreview/MapPreview.test.stories.tsx +0 -394
  62. package/src/components/data-display/Popover/Popover.stories.tsx +0 -295
  63. package/src/components/data-display/Popover/Popover.test.stories.tsx +0 -1162
  64. package/src/components/data-display/Progress/Progress.stories.tsx +0 -481
  65. package/src/components/data-display/Progress/Progress.test.stories.tsx +0 -2070
  66. package/src/components/data-display/SectionOnboarding/SectionOnboarding.stories.tsx +0 -160
  67. package/src/components/data-display/SectionOnboarding/SectionOnboarding.test.stories.tsx +0 -190
  68. package/src/components/data-display/Sheet/Sheet.stories.tsx +0 -883
  69. package/src/components/data-display/Sheet/Sheet.test.stories.tsx +0 -1105
  70. package/src/components/data-display/StatCard/StatCard.stories.tsx +0 -167
  71. package/src/components/data-display/StatCard/StatCard.test.stories.tsx +0 -240
  72. package/src/components/data-display/Stepper/Stepper.stories.tsx +0 -540
  73. package/src/components/data-display/Stepper/Stepper.test.stories.tsx +0 -600
  74. package/src/components/data-display/Table/Table.stories.tsx +0 -803
  75. package/src/components/data-display/Table/Table.test.stories.tsx +0 -369
  76. package/src/components/data-display/Timeline/Timeline.stories.tsx +0 -442
  77. package/src/components/data-display/Timeline/Timeline.test.stories.tsx +0 -930
  78. package/src/components/data-display/TimingDiagram/TimingDiagram.stories.tsx +0 -475
  79. package/src/components/data-display/TimingDiagram/TimingDiagram.test.stories.tsx +0 -734
  80. package/src/components/data-display/Tooltip/Tooltip.stories.tsx +0 -468
  81. package/src/components/data-display/Tooltip/Tooltip.test.stories.tsx +0 -1154
  82. package/src/components/feedback/ConfirmAction/ConfirmAction.stories.tsx +0 -146
  83. package/src/components/feedback/ConfirmAction/ConfirmAction.test.stories.tsx +0 -114
  84. package/src/components/feedback/ConfirmAction/__tests__/confirm-action.test.tsx +0 -288
  85. package/src/components/feedback/Dialog/Dialog.stories.tsx +0 -833
  86. package/src/components/feedback/Dialog/Dialog.test.stories.tsx +0 -964
  87. package/src/components/feedback/Dialog/__tests__/dialog-content-spacing.test.tsx +0 -66
  88. package/src/components/feedback/Modal/Modal.stories.tsx +0 -765
  89. package/src/components/feedback/Modal/Modal.test.stories.tsx +0 -251
  90. package/src/components/feedback/Sonner/Sonner.stories.tsx +0 -698
  91. package/src/components/feedback/Sonner/Sonner.test.stories.tsx +0 -896
  92. package/src/components/feedback/StackedModal/StackedModal.stories.tsx +0 -1783
  93. package/src/components/feedback/StackedModal/StackedModal.test.stories.tsx +0 -973
  94. package/src/components/feedback/StackedModal/__tests__/stacked-modal-viewport.test.tsx +0 -104
  95. package/src/components/feedback/Toast/Toast.stories.tsx +0 -548
  96. package/src/components/feedback/Toast/Toast.test.stories.tsx +0 -834
  97. package/src/components/feedback/TutorialOverlay/TutorialOverlay.stories.tsx +0 -691
  98. package/src/components/feedback/TutorialOverlay/TutorialOverlay.test.stories.tsx +0 -634
  99. package/src/components/form/AddressAutocomplete/AddressAutocomplete.stories.tsx +0 -665
  100. package/src/components/form/AddressAutocomplete/AddressAutocomplete.test.stories.tsx +0 -727
  101. package/src/components/form/Autocomplete/Autocomplete.stories.tsx +0 -715
  102. package/src/components/form/Autocomplete/Autocomplete.test.stories.tsx +0 -825
  103. package/src/components/form/Button/Button.stories.tsx +0 -365
  104. package/src/components/form/Button/Button.test.stories.tsx +0 -607
  105. package/src/components/form/Calendar/Calendar.stories.tsx +0 -349
  106. package/src/components/form/Calendar/Calendar.test.stories.tsx +0 -464
  107. package/src/components/form/CepField/CepField.stories.tsx +0 -138
  108. package/src/components/form/CepField/CepField.test.stories.tsx +0 -281
  109. package/src/components/form/Checkbox/Checkbox.stories.tsx +0 -265
  110. package/src/components/form/Checkbox/Checkbox.test.stories.tsx +0 -181
  111. package/src/components/form/CodeEditor/CodeEditor.stories.tsx +0 -871
  112. package/src/components/form/CodeEditor/CodeEditor.test.stories.tsx +0 -574
  113. package/src/components/form/Command/Command.stories.tsx +0 -580
  114. package/src/components/form/Command/Command.test.stories.tsx +0 -215
  115. package/src/components/form/CreatableSelect/CreatableSelect.stories.tsx +0 -112
  116. package/src/components/form/CreatableSelect/CreatableSelect.test.stories.tsx +0 -134
  117. package/src/components/form/Form/Form.stories.tsx +0 -687
  118. package/src/components/form/Form/Form.test.stories.tsx +0 -601
  119. package/src/components/form/Input/Input.stories.tsx +0 -260
  120. package/src/components/form/Input/Input.test.stories.tsx +0 -1191
  121. package/src/components/form/InputOTP/InputOTP.stories.tsx +0 -774
  122. package/src/components/form/InputOTP/InputOTP.test.stories.tsx +0 -588
  123. package/src/components/form/Label/Label.stories.tsx +0 -473
  124. package/src/components/form/Label/Label.test.stories.tsx +0 -915
  125. package/src/components/form/Menubar/Menubar.stories.tsx +0 -472
  126. package/src/components/form/Menubar/Menubar.test.stories.tsx +0 -584
  127. package/src/components/form/PasswordStrength/PasswordStrength.stories.tsx +0 -562
  128. package/src/components/form/PasswordStrength/PasswordStrength.test.stories.tsx +0 -327
  129. package/src/components/form/PhoneInput/PhoneInput.stories.tsx +0 -495
  130. package/src/components/form/PhoneInput/PhoneInput.test.stories.tsx +0 -666
  131. package/src/components/form/RadioGroup/RadioGroup.stories.tsx +0 -518
  132. package/src/components/form/RadioGroup/RadioGroup.test.stories.tsx +0 -685
  133. package/src/components/form/RichTextEditor/RichTextEditor.stories.tsx +0 -261
  134. package/src/components/form/RichTextEditor/RichTextEditor.test.stories.tsx +0 -491
  135. package/src/components/form/SearchPalette/SearchPalette.stories.tsx +0 -135
  136. package/src/components/form/Select/Select.stories.tsx +0 -364
  137. package/src/components/form/Select/Select.test.stories.tsx +0 -985
  138. package/src/components/form/Slider/Slider.stories.tsx +0 -418
  139. package/src/components/form/Slider/Slider.test.stories.tsx +0 -1042
  140. package/src/components/form/Switch/Switch.stories.tsx +0 -697
  141. package/src/components/form/Switch/Switch.test.stories.tsx +0 -597
  142. package/src/components/form/Textarea/Textarea.stories.tsx +0 -473
  143. package/src/components/form/Textarea/Textarea.test.stories.tsx +0 -702
  144. package/src/components/form/Toggle/Toggle.stories.tsx +0 -638
  145. package/src/components/form/Toggle/Toggle.test.stories.tsx +0 -1159
  146. package/src/components/form/ToggleGroup/ToggleGroup.stories.tsx +0 -617
  147. package/src/components/form/ToggleGroup/ToggleGroup.test.stories.tsx +0 -915
  148. package/src/components/form/UploadButton/UploadButton.stories.tsx +0 -367
  149. package/src/components/form/UploadButton/UploadButton.test.stories.tsx +0 -573
  150. package/src/components/form/total-form/total-form.test.tsx +0 -214
  151. package/src/components/layout/Accordion/Accordion.stories.tsx +0 -694
  152. package/src/components/layout/Accordion/Accordion.test.stories.tsx +0 -1344
  153. package/src/components/layout/Card/Card.stories.tsx +0 -591
  154. package/src/components/layout/Card/Card.test.stories.tsx +0 -1134
  155. package/src/components/layout/CardGrid/__tests__/CardGrid.test.tsx +0 -92
  156. package/src/components/layout/Collapsible/Collapsible.stories.tsx +0 -180
  157. package/src/components/layout/Collapsible/Collapsible.test.stories.tsx +0 -308
  158. package/src/components/layout/Container/Container.stories.tsx +0 -557
  159. package/src/components/layout/Container/Container.test.stories.tsx +0 -745
  160. package/src/components/layout/ContentToolbar/ContentToolbar.stories.tsx +0 -129
  161. package/src/components/layout/ContentToolbar/ContentToolbar.test.stories.tsx +0 -251
  162. package/src/components/layout/ContentToolbar/__tests__/ColumnsMenu.test.tsx +0 -39
  163. package/src/components/layout/ContentToolbar/__tests__/MultiSelectDropdown.test.tsx +0 -131
  164. package/src/components/layout/ContentToolbar/__tests__/SavedViewsMenu.test.tsx +0 -99
  165. package/src/components/layout/Dashboard/Dashboard.stories.tsx +0 -104
  166. package/src/components/layout/Dashboard/Dashboard.test.stories.tsx +0 -190
  167. package/src/components/layout/Drawer/Drawer.stories.tsx +0 -658
  168. package/src/components/layout/Drawer/Drawer.test.stories.tsx +0 -1343
  169. package/src/components/layout/Resizable/Resizable.stories.tsx +0 -1039
  170. package/src/components/layout/Resizable/Resizable.test.stories.tsx +0 -754
  171. package/src/components/layout/ScrollArea/ScrollArea.stories.tsx +0 -651
  172. package/src/components/layout/ScrollArea/ScrollArea.test.stories.tsx +0 -619
  173. package/src/components/layout/Separator/Separator.stories.tsx +0 -563
  174. package/src/components/layout/Separator/Separator.test.stories.tsx +0 -518
  175. package/src/components/layout/SettingsLayout/SettingsLayout.stories.tsx +0 -192
  176. package/src/components/layout/SettingsLayout/SettingsLayout.test.stories.tsx +0 -175
  177. package/src/components/layout/Sidebar/Sidebar.stories.tsx +0 -609
  178. package/src/components/layout/Sidebar/Sidebar.test.stories.tsx +0 -1324
  179. package/src/components/layout/Skeleton/Skeleton.stories.tsx +0 -689
  180. package/src/components/layout/Skeleton/Skeleton.test.stories.tsx +0 -521
  181. package/src/components/layout/Spacer/Spacer.stories.tsx +0 -502
  182. package/src/components/layout/Spacer/Spacer.test.stories.tsx +0 -474
  183. package/src/components/layout/TableFilter/TableFilter.stories.tsx +0 -82
  184. package/src/components/layout/TableFilter/TableFilter.test.stories.tsx +0 -87
  185. package/src/components/navigation/Breadcrumbs/Breadcrumbs.stories.tsx +0 -638
  186. package/src/components/navigation/Breadcrumbs/Breadcrumbs.test.stories.tsx +0 -1008
  187. package/src/components/navigation/CommandPalette/CommandPalette.stories.tsx +0 -386
  188. package/src/components/navigation/CommandPalette/CommandPalette.test.stories.tsx +0 -435
  189. package/src/components/navigation/ContextMenu/ContextMenu.stories.tsx +0 -614
  190. package/src/components/navigation/ContextMenu/ContextMenu.test.stories.tsx +0 -845
  191. package/src/components/navigation/DropdownMenu/DropdownMenu.stories.tsx +0 -578
  192. package/src/components/navigation/DropdownMenu/DropdownMenu.test.stories.tsx +0 -660
  193. package/src/components/navigation/NavigationMenu/stories/NavigationMenu.stories.tsx +0 -516
  194. package/src/components/navigation/NavigationMenu/stories/NavigationMenu.test.stories.tsx +0 -935
  195. package/src/components/navigation/NavigationMenu/stories/NavigationMenuHorizontal.stories.tsx +0 -501
  196. package/src/components/navigation/NavigationMenu/stories/NavigationMenuVertical.stories.tsx +0 -453
  197. package/src/components/navigation/Pagination/Pagination.stories.tsx +0 -602
  198. package/src/components/navigation/Pagination/Pagination.test.stories.tsx +0 -520
  199. package/src/components/navigation/Tabs/Tabs.stories.tsx +0 -1004
  200. package/src/components/navigation/Tabs/Tabs.test.stories.tsx +0 -1225
  201. package/src/components/typography/Blockquote/Blockquote.stories.tsx +0 -359
  202. package/src/components/typography/Blockquote/Blockquote.test.stories.tsx +0 -432
  203. package/src/components/typography/Code/Code.stories.tsx +0 -686
  204. package/src/components/typography/Code/Code.test.stories.tsx +0 -703
  205. package/src/components/typography/Heading/Heading.stories.tsx +0 -451
  206. package/src/components/typography/Heading/Heading.test.stories.tsx +0 -830
  207. package/src/components/typography/Paragraph/Paragraph.stories.tsx +0 -280
  208. package/src/components/typography/Paragraph/Paragraph.test.stories.tsx +0 -231
  209. package/src/components/typography/Text/Text.stories.tsx +0 -359
  210. package/src/components/typography/Text/Text.test.stories.tsx +0 -759
  211. package/src/components/utility/AnimatedIcon/AnimatedIcon.stories.tsx +0 -945
  212. package/src/components/utility/AnimatedIcon/AnimatedIcon.test.stories.tsx +0 -603
  213. package/src/components/utility/AspectRatio/AspectRatio.stories.tsx +0 -414
  214. package/src/components/utility/AspectRatio/AspectRatio.test.stories.tsx +0 -859
  215. package/src/components/utility/InfiniteScroll/InfiniteScroll.stories.tsx +0 -620
  216. package/src/components/utility/InfiniteScroll/InfiniteScroll.test.stories.tsx +0 -361
  217. package/src/components/utility/InstallPrompt/InstallPrompt.stories.tsx +0 -118
  218. package/src/components/utility/InstallPrompt/InstallPrompt.test.stories.tsx +0 -83
  219. package/src/components/utility/InstallPrompt/__tests__/InstallPrompt.ios.test.tsx +0 -65
  220. package/src/components/utility/InstallPrompt/__tests__/usePwaInstall.test.tsx +0 -271
  221. package/src/components/utility/Portal/Portal.stories.tsx +0 -340
  222. package/src/components/utility/Portal/Portal.test.stories.tsx +0 -2086
  223. package/src/components/utility/Transition/Transition.stories.tsx +0 -493
  224. package/src/components/utility/Transition/Transition.test.stories.tsx +0 -854
  225. package/src/components/utility/VirtualList/VirtualList.stories.tsx +0 -1073
  226. package/src/components/utility/VirtualList/VirtualList.test.stories.tsx +0 -1085
  227. package/src/components/utility/WorkflowStep/WorkflowStep.stories.tsx +0 -431
  228. package/src/components/utility/WorkflowStep/WorkflowStep.test.stories.tsx +0 -364
  229. /package/src/{button.tsx → button/button.tsx} +0 -0
@@ -1,694 +0,0 @@
1
- import ExpandMore from '@mui/icons-material/ExpandMore';
2
- import Help from '@mui/icons-material/Help';
3
- import Info from '@mui/icons-material/Info';
4
- import Security from '@mui/icons-material/Security';
5
- import Settings from '@mui/icons-material/Settings';
6
- import { Box, Button, Stack,Typography } from '@mui/material';
7
- import type { Meta, StoryObj } from '@storybook/react-vite';
8
- import { useState } from 'react';
9
-
10
- import { Accordion, AccordionActions,AccordionDetails, AccordionSummary } from './Accordion';
11
-
12
- const meta: Meta<typeof Accordion> = {
13
- title: 'Layout/Accordion',
14
- component: Accordion,
15
- parameters: {
16
- layout: 'padded',
17
- },
18
- tags: ['autodocs', 'component:Accordion'],
19
- argTypes: {
20
- variant: {
21
- control: { type: 'select' },
22
- options: ['default', 'glass', 'bordered', 'separated'],
23
- },
24
- disabled: {
25
- control: { type: 'boolean' },
26
- },
27
- defaultExpanded: {
28
- control: { type: 'boolean' },
29
- },
30
- },
31
- };
32
-
33
- export default meta;
34
- type Story = StoryObj<typeof meta>;
35
-
36
- export const Default: Story = {
37
- args: {
38
- variant: 'default',
39
- disabled: false,
40
- defaultExpanded: false,
41
- },
42
- render: (args) => (
43
- <Accordion {...args}>
44
- <AccordionSummary expandIcon={<ExpandMore />}>
45
- <Typography variant="h6">Basic Accordion</Typography>
46
- </AccordionSummary>
47
- <AccordionDetails>
48
- <Typography>
49
- This is the content of the accordion. It can contain any React elements, including text,
50
- forms, images, or other components.
51
- </Typography>
52
- </AccordionDetails>
53
- </Accordion>
54
- ),
55
- };
56
-
57
- export const AllVariants: Story = {
58
- render: () => (
59
- <Stack spacing={3}>
60
- <Box>
61
- <Typography variant="h6" gutterBottom>
62
- Default Variant
63
- </Typography>
64
- <Accordion variant="default">
65
- <AccordionSummary expandIcon={<ExpandMore />}>
66
- <Typography>Default Accordion</Typography>
67
- </AccordionSummary>
68
- <AccordionDetails>
69
- <Typography>
70
- The default variant follows Material-UI&apos;s standard accordion styling.
71
- </Typography>
72
- </AccordionDetails>
73
- </Accordion>
74
- </Box>
75
-
76
- <Box>
77
- <Typography variant="h6" gutterBottom>
78
- Glass Variant
79
- </Typography>
80
- <Accordion variant="glass">
81
- <AccordionSummary expandIcon={<ExpandMore />}>
82
- <Typography>Glass Accordion</Typography>
83
- </AccordionSummary>
84
- <AccordionDetails>
85
- <Typography>
86
- The glass variant features a frosted glass effect with backdrop blur and transparency.
87
- </Typography>
88
- </AccordionDetails>
89
- </Accordion>
90
- </Box>
91
-
92
- <Box>
93
- <Typography variant="h6" gutterBottom>
94
- Bordered Variant
95
- </Typography>
96
- <Accordion variant="bordered">
97
- <AccordionSummary expandIcon={<ExpandMore />}>
98
- <Typography>Bordered Accordion</Typography>
99
- </AccordionSummary>
100
- <AccordionDetails>
101
- <Typography>The bordered variant has clean borders and rounded corners.</Typography>
102
- </AccordionDetails>
103
- </Accordion>
104
- </Box>
105
-
106
- <Box>
107
- <Typography variant="h6" gutterBottom>
108
- Separated Variant
109
- </Typography>
110
- <Accordion variant="separated">
111
- <AccordionSummary expandIcon={<ExpandMore />}>
112
- <Typography>Separated Accordion</Typography>
113
- </AccordionSummary>
114
- <AccordionDetails>
115
- <Typography>
116
- The separated variant has elevated shadows and spacing between items.
117
- </Typography>
118
- </AccordionDetails>
119
- </Accordion>
120
- </Box>
121
- </Stack>
122
- ),
123
- };
124
-
125
- export const MultipleAccordions: Story = {
126
- render: () => (
127
- <Stack spacing={1}>
128
- <Accordion variant="bordered">
129
- <AccordionSummary expandIcon={<ExpandMore />}>
130
- <Settings sx={{ mr: 2 }} />
131
- <Typography>General Settings</Typography>
132
- </AccordionSummary>
133
- <AccordionDetails>
134
- <Typography gutterBottom>
135
- Configure general application settings including language, timezone, and theme
136
- preferences.
137
- </Typography>
138
- </AccordionDetails>
139
- <AccordionActions>
140
- <Button size="small">Reset</Button>
141
- <Button size="small" variant="contained">
142
- Save
143
- </Button>
144
- </AccordionActions>
145
- </Accordion>
146
-
147
- <Accordion variant="bordered">
148
- <AccordionSummary expandIcon={<ExpandMore />}>
149
- <Security sx={{ mr: 2 }} />
150
- <Typography>Security Settings</Typography>
151
- </AccordionSummary>
152
- <AccordionDetails>
153
- <Typography gutterBottom>
154
- Manage your security preferences including two-factor authentication, password
155
- requirements, and login alerts.
156
- </Typography>
157
- </AccordionDetails>
158
- <AccordionActions>
159
- <Button size="small" color="error">
160
- Disable
161
- </Button>
162
- <Button size="small" variant="contained">
163
- Update
164
- </Button>
165
- </AccordionActions>
166
- </Accordion>
167
-
168
- <Accordion variant="bordered">
169
- <AccordionSummary expandIcon={<ExpandMore />}>
170
- <Info sx={{ mr: 2 }} />
171
- <Typography>Notification Settings</Typography>
172
- </AccordionSummary>
173
- <AccordionDetails>
174
- <Typography gutterBottom>
175
- Control how and when you receive notifications from the application.
176
- </Typography>
177
- </AccordionDetails>
178
- <AccordionActions>
179
- <Button size="small">Test</Button>
180
- <Button size="small" variant="contained">
181
- Apply
182
- </Button>
183
- </AccordionActions>
184
- </Accordion>
185
- </Stack>
186
- ),
187
- };
188
-
189
- const ControlledAccordionComponent = () => {
190
- const [expanded, setExpanded] = useState<string | false>(false);
191
-
192
- const handleChange = (panel: string) => (event: React.SyntheticEvent, isExpanded: boolean) => {
193
- setExpanded(isExpanded ? panel : false);
194
- };
195
-
196
- return (
197
- <Stack spacing={1}>
198
- <Accordion
199
- variant="separated"
200
- expanded={expanded === 'panel1'}
201
- onChange={handleChange('panel1')}
202
- >
203
- <AccordionSummary expandIcon={<ExpandMore />}>
204
- <Typography>Controlled Panel 1</Typography>
205
- </AccordionSummary>
206
- <AccordionDetails>
207
- <Typography>
208
- This accordion is controlled - only one panel can be open at a time.
209
- </Typography>
210
- </AccordionDetails>
211
- </Accordion>
212
-
213
- <Accordion
214
- variant="separated"
215
- expanded={expanded === 'panel2'}
216
- onChange={handleChange('panel2')}
217
- >
218
- <AccordionSummary expandIcon={<ExpandMore />}>
219
- <Typography>Controlled Panel 2</Typography>
220
- </AccordionSummary>
221
- <AccordionDetails>
222
- <Typography>Opening this panel will close the other one automatically.</Typography>
223
- </AccordionDetails>
224
- </Accordion>
225
-
226
- <Accordion
227
- variant="separated"
228
- expanded={expanded === 'panel3'}
229
- onChange={handleChange('panel3')}
230
- >
231
- <AccordionSummary expandIcon={<ExpandMore />}>
232
- <Typography>Controlled Panel 3</Typography>
233
- </AccordionSummary>
234
- <AccordionDetails>
235
- <Typography>
236
- This demonstrates controlled accordion behavior with state management.
237
- </Typography>
238
- </AccordionDetails>
239
- </Accordion>
240
- </Stack>
241
- );
242
- };
243
-
244
- export const ControlledAccordion: Story = {
245
- render: () => <ControlledAccordionComponent />,
246
- };
247
-
248
- export const ComplexContent: Story = {
249
- render: () => (
250
- <Accordion variant="glass" defaultExpanded>
251
- <AccordionSummary expandIcon={<ExpandMore />}>
252
- <Typography variant="h6">Project Dashboard</Typography>
253
- </AccordionSummary>
254
- <AccordionDetails>
255
- <Stack spacing={2}>
256
- <Box display="grid" gridTemplateColumns="1fr 1fr" gap={2}>
257
- <Box>
258
- <Typography variant="subtitle2" gutterBottom>
259
- Progress
260
- </Typography>
261
- <Box
262
- sx={{
263
- height: 8,
264
- backgroundColor: 'grey.200',
265
- borderRadius: 1,
266
- position: 'relative',
267
- }}
268
- >
269
- <Box
270
- sx={{
271
- width: '75%',
272
- height: '100%',
273
- backgroundColor: 'primary.main',
274
- borderRadius: 1,
275
- }}
276
- />
277
- </Box>
278
- <Typography variant="body2" color="text.secondary" mt={1}>
279
- 75% Complete
280
- </Typography>
281
- </Box>
282
- <Box>
283
- <Typography variant="subtitle2" gutterBottom>
284
- Team Members
285
- </Typography>
286
- <Stack direction="row" spacing={1}>
287
- {['A', 'B', 'C', 'D'].map((letter) => (
288
- <Box
289
- key={letter}
290
- sx={{
291
- width: 32,
292
- height: 32,
293
- borderRadius: '50%',
294
- backgroundColor: 'primary.main',
295
- display: 'flex',
296
- alignItems: 'center',
297
- justifyContent: 'center',
298
- color: 'white',
299
- fontSize: '0.875rem',
300
- }}
301
- >
302
- {letter}
303
- </Box>
304
- ))}
305
- </Stack>
306
- </Box>
307
- </Box>
308
- <Typography variant="body2" color="text.secondary">
309
- This accordion contains complex content including progress indicators, team member
310
- avatars, and structured layouts.
311
- </Typography>
312
- </Stack>
313
- </AccordionDetails>
314
- <AccordionActions>
315
- <Button startIcon={<Help />} size="small">
316
- Help
317
- </Button>
318
- <Button variant="contained" size="small">
319
- View Details
320
- </Button>
321
- </AccordionActions>
322
- </Accordion>
323
- ),
324
- };
325
-
326
- export const DisabledAccordion: Story = {
327
- render: () => (
328
- <Stack spacing={2}>
329
- <Accordion disabled>
330
- <AccordionSummary expandIcon={<ExpandMore />}>
331
- <Typography>Disabled Accordion</Typography>
332
- </AccordionSummary>
333
- <AccordionDetails>
334
- <Typography>
335
- This content cannot be accessed because the accordion is disabled.
336
- </Typography>
337
- </AccordionDetails>
338
- </Accordion>
339
-
340
- <Accordion variant="glass">
341
- <AccordionSummary expandIcon={<ExpandMore />} disabled>
342
- <Typography>Disabled Summary Only</Typography>
343
- </AccordionSummary>
344
- <AccordionDetails>
345
- <Typography>
346
- Only the summary is disabled, but if opened programmatically, the content would be
347
- accessible.
348
- </Typography>
349
- </AccordionDetails>
350
- </Accordion>
351
- </Stack>
352
- ),
353
- };
354
-
355
- export const HoverState: Story = {
356
- render: () => (
357
- <Stack spacing={2}>
358
- <Typography variant="body2" color="text.secondary">
359
- Hover over the accordions to see the hover effects for each variant
360
- </Typography>
361
- <Accordion variant="default">
362
- <AccordionSummary expandIcon={<ExpandMore />}>
363
- <Typography>Default Hover Effect</Typography>
364
- </AccordionSummary>
365
- <AccordionDetails>
366
- <Typography>Standard Material-UI hover state</Typography>
367
- </AccordionDetails>
368
- </Accordion>
369
-
370
- <Accordion variant="glass">
371
- <AccordionSummary expandIcon={<ExpandMore />}>
372
- <Typography>Glass Hover Effect</Typography>
373
- </AccordionSummary>
374
- <AccordionDetails>
375
- <Typography>Enhanced glass effect with elevation on hover</Typography>
376
- </AccordionDetails>
377
- </Accordion>
378
-
379
- <Accordion variant="bordered">
380
- <AccordionSummary expandIcon={<ExpandMore />}>
381
- <Typography>Bordered Hover Effect</Typography>
382
- </AccordionSummary>
383
- <AccordionDetails>
384
- <Typography>Border color and shadow transition on hover</Typography>
385
- </AccordionDetails>
386
- </Accordion>
387
- </Stack>
388
- ),
389
- };
390
-
391
- export const EmptyState: Story = {
392
- render: () => (
393
- <Stack spacing={2}>
394
- <Accordion variant="bordered">
395
- <AccordionSummary expandIcon={<ExpandMore />}>
396
- <Typography>Empty Content Accordion</Typography>
397
- </AccordionSummary>
398
- <AccordionDetails>
399
- {/* Intentionally empty to test empty state handling */}
400
- </AccordionDetails>
401
- </Accordion>
402
-
403
- <Accordion variant="glass">
404
- <AccordionSummary expandIcon={<ExpandMore />}>
405
- <Typography>Minimal Content</Typography>
406
- </AccordionSummary>
407
- <AccordionDetails>
408
- <Box
409
- sx={{ minHeight: 50, display: 'flex', alignItems: 'center', justifyContent: 'center' }}
410
- >
411
- <Typography variant="caption" color="text.secondary">
412
- No data available
413
- </Typography>
414
- </Box>
415
- </AccordionDetails>
416
- </Accordion>
417
- </Stack>
418
- ),
419
- };
420
-
421
- export const LoadingState: Story = {
422
- render: () => {
423
- const LoadingComponent = () => {
424
- const [loading, setLoading] = useState(true);
425
-
426
- return (
427
- <Stack spacing={2}>
428
- <Button onClick={() => setLoading(!loading)} variant="outlined" size="small">
429
- Toggle Loading State
430
- </Button>
431
-
432
- <Accordion variant="separated" defaultExpanded>
433
- <AccordionSummary expandIcon={<ExpandMore />}>
434
- <Typography>Dynamic Content Accordion</Typography>
435
- </AccordionSummary>
436
- <AccordionDetails>
437
- {loading ? (
438
- <Box sx={{ p: 3, textAlign: 'center' }}>
439
- <Typography variant="body2" color="text.secondary">
440
- Loading content...
441
- </Typography>
442
- </Box>
443
- ) : (
444
- <Typography>Content has been loaded successfully!</Typography>
445
- )}
446
- </AccordionDetails>
447
- </Accordion>
448
- </Stack>
449
- );
450
- };
451
-
452
- return <LoadingComponent />;
453
- },
454
- };
455
-
456
- // Required story exports for validation
457
- export const AllSizes: Story = {
458
- render: () => (
459
- <Stack spacing={3}>
460
- <Box>
461
- <Typography variant="h6" gutterBottom>
462
- Small Size
463
- </Typography>
464
- <Accordion sx={{ '& .MuiAccordionSummary-root': { minHeight: 40 } }}>
465
- <AccordionSummary expandIcon={<ExpandMore sx={{ fontSize: '1rem' }} />}>
466
- <Typography variant="body2">Small Accordion</Typography>
467
- </AccordionSummary>
468
- <AccordionDetails>
469
- <Typography variant="body2">Compact content for small size accordion.</Typography>
470
- </AccordionDetails>
471
- </Accordion>
472
- </Box>
473
-
474
- <Box>
475
- <Typography variant="h6" gutterBottom>
476
- Medium Size (Default)
477
- </Typography>
478
- <Accordion>
479
- <AccordionSummary expandIcon={<ExpandMore />}>
480
- <Typography>Medium Accordion</Typography>
481
- </AccordionSummary>
482
- <AccordionDetails>
483
- <Typography>Standard content for medium size accordion.</Typography>
484
- </AccordionDetails>
485
- </Accordion>
486
- </Box>
487
-
488
- <Box>
489
- <Typography variant="h6" gutterBottom>
490
- Large Size
491
- </Typography>
492
- <Accordion sx={{ '& .MuiAccordionSummary-root': { minHeight: 64 } }}>
493
- <AccordionSummary expandIcon={<ExpandMore sx={{ fontSize: '1.5rem' }} />}>
494
- <Typography variant="h6">Large Accordion</Typography>
495
- </AccordionSummary>
496
- <AccordionDetails>
497
- <Typography variant="body1">
498
- Extended content area for large size accordion with more space.
499
- </Typography>
500
- </AccordionDetails>
501
- </Accordion>
502
- </Box>
503
- </Stack>
504
- ),
505
- };
506
-
507
- export const AllStates: Story = {
508
- render: () => (
509
- <Stack spacing={2}>
510
- <Accordion>
511
- <AccordionSummary expandIcon={<ExpandMore />}>
512
- <Typography>Default State</Typography>
513
- </AccordionSummary>
514
- <AccordionDetails>
515
- <Typography>Normal accordion in default state.</Typography>
516
- </AccordionDetails>
517
- </Accordion>
518
-
519
- <Accordion defaultExpanded>
520
- <AccordionSummary expandIcon={<ExpandMore />}>
521
- <Typography>Expanded State</Typography>
522
- </AccordionSummary>
523
- <AccordionDetails>
524
- <Typography>This accordion is expanded by default.</Typography>
525
- </AccordionDetails>
526
- </Accordion>
527
-
528
- <Accordion disabled>
529
- <AccordionSummary expandIcon={<ExpandMore />}>
530
- <Typography>Disabled State</Typography>
531
- </AccordionSummary>
532
- <AccordionDetails>
533
- <Typography>This accordion is disabled.</Typography>
534
- </AccordionDetails>
535
- </Accordion>
536
-
537
- <Accordion sx={{ '&:hover': { backgroundColor: 'action.hover' } }}>
538
- <AccordionSummary expandIcon={<ExpandMore />}>
539
- <Typography>Hover State (hover to see)</Typography>
540
- </AccordionSummary>
541
- <AccordionDetails>
542
- <Typography>Hover over the summary to see the hover effect.</Typography>
543
- </AccordionDetails>
544
- </Accordion>
545
-
546
- <Accordion sx={{ '&:focus-within': { outline: '2px solid', outlineColor: 'primary.main' } }}>
547
- <AccordionSummary expandIcon={<ExpandMore />}>
548
- <Typography>Focus State (tab to focus)</Typography>
549
- </AccordionSummary>
550
- <AccordionDetails>
551
- <Typography>Tab navigation will show focus outline.</Typography>
552
- </AccordionDetails>
553
- </Accordion>
554
- </Stack>
555
- ),
556
- };
557
-
558
- export const InteractiveStates: Story = {
559
- render: () => {
560
- const InteractiveComponent = () => {
561
- const [expanded, setExpanded] = useState<string | false>('panel1');
562
- const [clickCount, setClickCount] = useState(0);
563
-
564
- const handleChange =
565
- (panel: string) => (event: React.SyntheticEvent, isExpanded: boolean) => {
566
- setExpanded(isExpanded ? panel : false);
567
- setClickCount(clickCount + 1);
568
- };
569
-
570
- return (
571
- <Stack spacing={2}>
572
- <Typography variant="body2" color="text.secondary">
573
- Click count: {clickCount} | Currently expanded: {expanded || 'none'}
574
- </Typography>
575
-
576
- <Accordion expanded={expanded === 'panel1'} onChange={handleChange('panel1')}>
577
- <AccordionSummary expandIcon={<ExpandMore />}>
578
- <Typography>Interactive Panel 1</Typography>
579
- </AccordionSummary>
580
- <AccordionDetails>
581
- <Typography>Click to toggle expansion state.</Typography>
582
- </AccordionDetails>
583
- </Accordion>
584
-
585
- <Accordion expanded={expanded === 'panel2'} onChange={handleChange('panel2')}>
586
- <AccordionSummary expandIcon={<ExpandMore />}>
587
- <Typography>Interactive Panel 2</Typography>
588
- </AccordionSummary>
589
- <AccordionDetails>
590
- <Typography>Only one panel can be expanded at a time.</Typography>
591
- </AccordionDetails>
592
- </Accordion>
593
-
594
- <Accordion expanded={expanded === 'panel3'} onChange={handleChange('panel3')}>
595
- <AccordionSummary expandIcon={<ExpandMore />}>
596
- <Typography>Interactive Panel 3</Typography>
597
- </AccordionSummary>
598
- <AccordionDetails>
599
- <Typography>State is tracked and displayed above.</Typography>
600
- </AccordionDetails>
601
- </Accordion>
602
- </Stack>
603
- );
604
- };
605
-
606
- return <InteractiveComponent />;
607
- },
608
- };
609
-
610
- export const Responsive: Story = {
611
- render: () => (
612
- <Box>
613
- <Typography variant="h6" gutterBottom>
614
- Responsive Accordion (resize window to test)
615
- </Typography>
616
- <Stack spacing={2}>
617
- <Accordion
618
- sx={{
619
- width: '100%',
620
- maxWidth: { xs: '100%', sm: 600, md: 800 },
621
- mx: 'auto',
622
- }}
623
- >
624
- <AccordionSummary expandIcon={<ExpandMore />}>
625
- <Typography sx={{ fontSize: { xs: '0.875rem', sm: '1rem', md: '1.125rem' } }}>
626
- Responsive Typography
627
- </Typography>
628
- </AccordionSummary>
629
- <AccordionDetails>
630
- <Typography sx={{ fontSize: { xs: '0.75rem', sm: '0.875rem', md: '1rem' } }}>
631
- This accordion adapts to different screen sizes. On mobile it uses smaller text, on
632
- tablet medium text, and on desktop larger text.
633
- </Typography>
634
- </AccordionDetails>
635
- </Accordion>
636
-
637
- <Accordion
638
- sx={{
639
- display: { xs: 'block', md: 'flex' },
640
- flexDirection: { md: 'column' },
641
- }}
642
- >
643
- <AccordionSummary
644
- expandIcon={<ExpandMore />}
645
- sx={{
646
- flexDirection: { xs: 'row', md: 'row-reverse' },
647
- '& .MuiAccordionSummary-expandIconWrapper': {
648
- transform: { xs: 'none', md: 'rotate(90deg)' },
649
- },
650
- }}
651
- >
652
- <Typography>Layout Changes</Typography>
653
- </AccordionSummary>
654
- <AccordionDetails>
655
- <Box
656
- sx={{
657
- display: 'grid',
658
- gridTemplateColumns: { xs: '1fr', sm: '1fr 1fr', md: 'repeat(3, 1fr)' },
659
- gap: 2,
660
- }}
661
- >
662
- <Box sx={{ p: 2, bgcolor: 'grey.100', borderRadius: 1 }}>
663
- <Typography variant="caption">Item 1</Typography>
664
- </Box>
665
- <Box sx={{ p: 2, bgcolor: 'grey.100', borderRadius: 1 }}>
666
- <Typography variant="caption">Item 2</Typography>
667
- </Box>
668
- <Box sx={{ p: 2, bgcolor: 'grey.100', borderRadius: 1 }}>
669
- <Typography variant="caption">Item 3</Typography>
670
- </Box>
671
- </Box>
672
- </AccordionDetails>
673
- </Accordion>
674
-
675
- <Accordion
676
- variant="glass"
677
- sx={{
678
- backdropFilter: { xs: 'blur(8px)', md: 'blur(12px)' },
679
- backgroundColor: { xs: 'rgba(255,255,255,0.7)', md: 'rgba(255,255,255,0.9)' },
680
- }}
681
- >
682
- <AccordionSummary expandIcon={<ExpandMore />}>
683
- <Typography>Responsive Styling</Typography>
684
- </AccordionSummary>
685
- <AccordionDetails>
686
- <Typography>
687
- Glass effect intensity changes based on screen size for optimal performance.
688
- </Typography>
689
- </AccordionDetails>
690
- </Accordion>
691
- </Stack>
692
- </Box>
693
- ),
694
- };