@dhasdk/simple-ui 1.0.7 → 1.0.8

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 (227) hide show
  1. package/.babelrc +12 -0
  2. package/.storybook/main.ts +35 -0
  3. package/.storybook/preview.ts +4 -0
  4. package/BAKpostcss.config.jsBAK +15 -0
  5. package/BAKtailwind.config.mjsBAK +99 -0
  6. package/README.md +464 -16
  7. package/coverage/storybook/coverage-storybook.json +32411 -0
  8. package/coverage/storybook/lcov-report/Accordion.tsx.html +805 -0
  9. package/coverage/storybook/lcov-report/Badge.tsx.html +346 -0
  10. package/coverage/storybook/lcov-report/Breadcrumbs.tsx.html +742 -0
  11. package/coverage/storybook/lcov-report/Button.tsx.html +448 -0
  12. package/coverage/storybook/lcov-report/ButtonGroup.tsx.html +403 -0
  13. package/coverage/storybook/lcov-report/Card.tsx.html +292 -0
  14. package/coverage/storybook/lcov-report/CharacterCounter.tsx.html +253 -0
  15. package/coverage/storybook/lcov-report/CheckBox.tsx.html +1555 -0
  16. package/coverage/storybook/lcov-report/DatePicker.tsx.html +826 -0
  17. package/coverage/storybook/lcov-report/Input.tsx.html +1012 -0
  18. package/coverage/storybook/lcov-report/List.tsx.html +364 -0
  19. package/coverage/storybook/lcov-report/Modal.tsx.html +745 -0
  20. package/coverage/storybook/lcov-report/Pill.tsx.html +358 -0
  21. package/coverage/storybook/lcov-report/Search.tsx.html +997 -0
  22. package/coverage/storybook/lcov-report/SearchContent.tsx.html +235 -0
  23. package/coverage/storybook/lcov-report/SectionHeader.tsx.html +358 -0
  24. package/coverage/storybook/lcov-report/Select.tsx.html +1012 -0
  25. package/coverage/storybook/lcov-report/Shield.tsx.html +802 -0
  26. package/coverage/storybook/lcov-report/SideBarNav.tsx.html +490 -0
  27. package/coverage/storybook/lcov-report/Skeleton.tsx.html +394 -0
  28. package/coverage/storybook/lcov-report/Slider.tsx.html +385 -0
  29. package/coverage/storybook/lcov-report/Status.tsx.html +322 -0
  30. package/coverage/storybook/lcov-report/Tabs.tsx.html +610 -0
  31. package/coverage/storybook/lcov-report/Toggle.tsx.html +373 -0
  32. package/coverage/storybook/lcov-report/Tooltip.tsx.html +496 -0
  33. package/coverage/storybook/lcov-report/base.css +224 -0
  34. package/coverage/storybook/lcov-report/block-navigation.js +87 -0
  35. package/coverage/storybook/lcov-report/favicon.png +0 -0
  36. package/coverage/storybook/lcov-report/index.html +476 -0
  37. package/coverage/storybook/lcov-report/prettify.css +1 -0
  38. package/coverage/storybook/lcov-report/prettify.js +2 -0
  39. package/coverage/storybook/lcov-report/sort-arrow-sprite.png +0 -0
  40. package/coverage/storybook/lcov-report/sorter.js +196 -0
  41. package/coverage/storybook/lcov.info +2312 -0
  42. package/dist/README.md +1815 -0
  43. package/eslint.config.mjs +13 -0
  44. package/package.json +6 -7
  45. package/project.json +11 -0
  46. package/src/assets/img/Frame.svg +5 -0
  47. package/src/assets/img/backArrowRight.svg +10 -0
  48. package/src/assets/img/bc-separator.png +0 -0
  49. package/src/assets/img/calendar.png +0 -0
  50. package/src/assets/img/calendar.svg +4 -0
  51. package/src/assets/img/check.svg +5 -0
  52. package/src/assets/img/check_box.svg +10 -0
  53. package/src/assets/img/check_box_empty.svg +10 -0
  54. package/src/assets/img/check_box_fill.svg +10 -0
  55. package/src/assets/img/check_box_fill_empty.svg +10 -0
  56. package/src/assets/img/chevron-down-white.svg +2 -0
  57. package/src/assets/img/chevron-down.svg +2 -0
  58. package/src/assets/img/chevron-left.svg +1 -0
  59. package/src/assets/img/chevron-right-light.svg +4 -0
  60. package/src/assets/img/chevron-right.svg +3 -0
  61. package/src/assets/img/chevron-up-white.svg +1 -0
  62. package/src/assets/img/chevron-up.svg +1 -0
  63. package/src/assets/img/clock.svg +6 -0
  64. package/src/assets/img/close.svg +1 -0
  65. package/src/assets/img/close2.svg +6 -0
  66. package/src/assets/img/closeModal.svg +10 -0
  67. package/src/assets/img/close_icon_dark.svg +10 -0
  68. package/src/assets/img/close_small.svg +3 -0
  69. package/src/assets/img/emergency_home.svg +10 -0
  70. package/src/assets/img/first-aid-kit.svg +7 -0
  71. package/src/assets/img/heartbeat.svg +4 -0
  72. package/src/assets/img/home-gray.svg +3 -0
  73. package/src/assets/img/home.svg +3 -0
  74. package/src/assets/img/hospital.jpg +0 -0
  75. package/src/assets/img/indeterminate_check_box.svg +10 -0
  76. package/src/assets/img/indeterminate_check_box_fill.svg +10 -0
  77. package/src/assets/img/info_24_ 1d4ed8.svg +3 -0
  78. package/src/assets/img/info_24_ 2c6441.svg +3 -0
  79. package/src/assets/img/marker_check_by_default.svg +10 -0
  80. package/src/assets/img/marker_check_by_default_fill.svg +10 -0
  81. package/src/assets/img/minus-accordion.svg +5 -0
  82. package/src/assets/img/minus.svg +3 -0
  83. package/src/assets/img/open.svg +1 -0
  84. package/src/assets/img/pill-white.svg +7 -0
  85. package/src/assets/img/pill.svg +5 -0
  86. package/src/assets/img/plus-accordion.svg +5 -0
  87. package/src/assets/img/plus.svg +4 -0
  88. package/src/assets/img/prescription.svg +6 -0
  89. package/src/assets/img/search.svg +10 -0
  90. package/src/assets/img/search_icon_light.svg +10 -0
  91. package/src/assets/img/separator.svg +3 -0
  92. package/src/assets/img/stethoscope-white.svg +8 -0
  93. package/src/assets/img/stethoscope.svg +8 -0
  94. package/src/assets/img/thumb_up.svg +10 -0
  95. package/src/assets/img/vector.svg +3 -0
  96. package/src/assets/img/warning-badge-disabled.svg +11 -0
  97. package/src/assets/img/warning-badge-green.svg +11 -0
  98. package/src/assets/img/warning-badge-red.svg +11 -0
  99. package/src/assets/img/warning-badge-yellow.svg +11 -0
  100. package/src/assets/img/warning.svg +10 -0
  101. package/src/global.d.ts +13 -0
  102. package/{index.d.ts → src/index.ts} +13 -5
  103. package/src/lib/Accordian--Accordian.stories.tsx +312 -0
  104. package/src/lib/Accordion.spec.tsx +384 -0
  105. package/src/lib/Accordion.tsx +240 -0
  106. package/src/lib/AppointmentPicker.spec.tsx +138 -0
  107. package/src/lib/AppointmentPicker.tsx +97 -0
  108. package/src/lib/Badge--Badge.stories.tsx +60 -0
  109. package/src/lib/Badge.spec.tsx +70 -0
  110. package/src/lib/Badge.tsx +87 -0
  111. package/src/lib/Breadcrumbs-Breadcrumbs.stories.tsx +114 -0
  112. package/src/lib/Breadcrumbs.spec.tsx +218 -0
  113. package/src/lib/Breadcrumbs.tsx +219 -0
  114. package/src/lib/Button--Button.stories.tsx +220 -0
  115. package/src/lib/Button.spec.tsx +241 -0
  116. package/src/lib/Button.tsx +121 -0
  117. package/src/lib/ButtonGroup--ButtonGroup.stories.tsx +129 -0
  118. package/src/lib/ButtonGroup.spec.tsx +89 -0
  119. package/src/lib/ButtonGroup.tsx +107 -0
  120. package/src/lib/Card--Card.stories.tsx +113 -0
  121. package/src/lib/Card.spec.tsx +112 -0
  122. package/src/lib/Card.tsx +69 -0
  123. package/src/lib/CharacterCounter--CharacterCounter.stories.tsx +169 -0
  124. package/src/lib/CharacterCounter.spec.tsx +123 -0
  125. package/src/lib/CharacterCounter.tsx +56 -0
  126. package/src/lib/CheckBox--CheckBox.stories.tsx +107 -0
  127. package/src/lib/CheckBox.spec.tsx +412 -0
  128. package/src/lib/CheckBox.tsx +491 -0
  129. package/src/lib/DatePicker--DatePicker.stories.tsx +228 -0
  130. package/src/lib/DatePicker.spec.tsx +424 -0
  131. package/src/lib/DatePicker.tsx +247 -0
  132. package/src/lib/Input--Input.stories.tsx +449 -0
  133. package/src/lib/Input.spec.tsx +281 -0
  134. package/src/lib/Input.tsx +309 -0
  135. package/src/lib/List--List.stories.tsx +157 -0
  136. package/src/lib/List.spec.tsx +211 -0
  137. package/src/lib/List.tsx +93 -0
  138. package/src/lib/Modal--Modal.stories.tsx +454 -0
  139. package/src/lib/Modal.spec.tsx +202 -0
  140. package/src/lib/Modal.tsx +220 -0
  141. package/src/lib/Pill--Pill.stories.tsx +98 -0
  142. package/src/lib/Pill.spec.tsx +103 -0
  143. package/src/lib/Pill.tsx +91 -0
  144. package/src/lib/ProgressBar.spec.tsx +106 -0
  145. package/src/lib/ProgressBar.tsx +112 -0
  146. package/src/lib/RadioGroup.spec.tsx +84 -0
  147. package/src/lib/RadioGroup.tsx +74 -0
  148. package/src/lib/RadioIcon.tsx +13 -0
  149. package/src/lib/Search--Search.stories.tsx +67 -0
  150. package/src/lib/Search.spec.tsx +182 -0
  151. package/src/lib/Search.tsx +304 -0
  152. package/src/lib/SearchContent.tsx +51 -0
  153. package/src/lib/SectionHeader--SectionHeader.stories.tsx +98 -0
  154. package/src/lib/SectionHeader.spec.tsx +60 -0
  155. package/src/lib/SectionHeader.tsx +91 -0
  156. package/src/lib/Select--Select.stories.tsx +387 -0
  157. package/src/lib/Select.spec.tsx +493 -0
  158. package/src/lib/Select.tsx +311 -0
  159. package/src/lib/Shield--Shield.stories.tsx +196 -0
  160. package/src/lib/Shield.spec.tsx +275 -0
  161. package/src/lib/Shield.tsx +239 -0
  162. package/src/lib/SideBarNav--SideBarNav.stories.tsx +136 -0
  163. package/src/lib/SideBarNav.spec.tsx +178 -0
  164. package/src/lib/SideBarNav.tsx +135 -0
  165. package/src/lib/Skeleton--Skeleton.stories.tsx +77 -0
  166. package/src/lib/Skeleton.module.css +16 -0
  167. package/src/lib/Skeleton.spec.tsx +83 -0
  168. package/src/lib/Skeleton.tsx +103 -0
  169. package/src/lib/SkipLink.spec.tsx +76 -0
  170. package/src/lib/SkipLink.tsx +48 -0
  171. package/src/lib/Slider--Slider.stories.tsx +108 -0
  172. package/src/lib/Slider.module.css +109 -0
  173. package/src/lib/Slider.spec.tsx +67 -0
  174. package/src/lib/Slider.tsx +101 -0
  175. package/src/lib/Status--Status.stories.tsx +93 -0
  176. package/src/lib/Status.spec.tsx +118 -0
  177. package/src/lib/Status.tsx +79 -0
  178. package/src/lib/Tabs--Tabs.stories.tsx +294 -0
  179. package/src/lib/Tabs.spec.tsx +249 -0
  180. package/src/lib/Tabs.tsx +188 -0
  181. package/src/lib/Tester.spec.tsx +17 -0
  182. package/src/lib/Toggle--Toggle.stories.tsx +162 -0
  183. package/src/lib/Toggle.spec.tsx +122 -0
  184. package/src/lib/Toggle.tsx +96 -0
  185. package/src/lib/Tooltip--Tooltip.stories.tsx +315 -0
  186. package/src/lib/Tooltip.spec.tsx +307 -0
  187. package/src/lib/Tooltip.tsx +137 -0
  188. package/src/lib/bak-simple-ui.stories.tsx-bak +24 -0
  189. package/src/styles.css +190 -0
  190. package/tsconfig.json +25 -0
  191. package/tsconfig.lib.json +42 -0
  192. package/tsconfig.spec.json +29 -0
  193. package/tsconfig.storybook.json +36 -0
  194. package/vite.config.mts +87 -0
  195. package/vitest.setup.ts +12 -0
  196. package/index.css +0 -1
  197. package/index.js +0 -35
  198. package/index.mjs +0 -4981
  199. package/lib/Accordion.d.ts +0 -36
  200. package/lib/AppointmentPicker.d.ts +0 -21
  201. package/lib/Badge.d.ts +0 -11
  202. package/lib/Breadcrumbs.d.ts +0 -13
  203. package/lib/Button.d.ts +0 -15
  204. package/lib/ButtonGroup.d.ts +0 -8
  205. package/lib/Card.d.ts +0 -11
  206. package/lib/CharacterCounter.d.ts +0 -11
  207. package/lib/CheckBox.d.ts +0 -30
  208. package/lib/DatePicker.d.ts +0 -7
  209. package/lib/Input.d.ts +0 -16
  210. package/lib/List.d.ts +0 -22
  211. package/lib/Modal.d.ts +0 -18
  212. package/lib/Pill.d.ts +0 -13
  213. package/lib/ProgressBar.d.ts +0 -19
  214. package/lib/RadioGroup.d.ts +0 -15
  215. package/lib/Search.d.ts +0 -26
  216. package/lib/SearchContent.d.ts +0 -6
  217. package/lib/SectionHeader.d.ts +0 -18
  218. package/lib/Select.d.ts +0 -19
  219. package/lib/Shield.d.ts +0 -12
  220. package/lib/SideBarNav.d.ts +0 -21
  221. package/lib/Skeleton.d.ts +0 -15
  222. package/lib/SkipLink.d.ts +0 -22
  223. package/lib/Slider.d.ts +0 -14
  224. package/lib/Status.d.ts +0 -10
  225. package/lib/Tabs.d.ts +0 -23
  226. package/lib/Toggle.d.ts +0 -11
  227. package/lib/Tooltip.d.ts +0 -14
@@ -1,3 +1,4 @@
1
+ import './styles.css';
1
2
  export { Accordion, AccordionParent } from './lib/Accordion';
2
3
  export type { AccordionProps, AccordionParentProps } from './lib/Accordion';
3
4
  export { AppointmentPicker } from './lib/AppointmentPicker';
@@ -12,19 +13,19 @@ export { Card } from './lib/Card';
12
13
  export { CharacterCounter } from './lib/CharacterCounter';
13
14
  export type { CharacterCounterProps } from './lib/CharacterCounter';
14
15
  export { CheckBox, CheckBoxGroup } from './lib/CheckBox';
15
- export type { CheckBoxProps, CheckBoxGroupProps } from './lib/CheckBox';
16
+ export type { CheckBoxProps, CheckBoxGroupProps } from './lib/CheckBox'
16
17
  export { DatePicker } from './lib/DatePicker';
17
18
  export type { DatePickerProps } from './lib/DatePicker';
18
19
  export { IconPosition } from './lib/Tabs';
19
20
  export { Input } from './lib/Input';
20
- export { List, ListItem } from './lib/List';
21
+ export { List, ListItem } from './lib/List';
21
22
  export { Modal } from './lib/Modal';
22
23
  export { Pill } from './lib/Pill';
23
24
  export type { PillProps } from './lib/Pill';
24
25
  export { ProgressBar } from './lib/ProgressBar';
25
26
  export type { ProgressBarProps } from './lib/ProgressBar';
26
- export { RadioGroup } from './lib/RadioGroup';
27
- export type { RadioOption } from './lib/RadioGroup';
27
+ export { RadioGroup } from './lib/RadioGroup';
28
+ export type { RadioOption } from './lib/RadioGroup'
28
29
  export { Search } from './lib/Search';
29
30
  export type { DataSearchResults, SearchDataItem, SearchProps } from './lib/Search';
30
31
  export { SectionHeader } from './lib/SectionHeader';
@@ -32,7 +33,7 @@ export type { SectionHeaderProps } from './lib/SectionHeader';
32
33
  export { Select } from './lib/Select';
33
34
  export type { SelectProps } from './lib/Select';
34
35
  export { Shield } from './lib/Shield';
35
- export type { ShieldProps } from './lib/Shield';
36
+ export type { ShieldProps } from './lib/Shield'
36
37
  export { SideBarNav } from './lib/SideBarNav';
37
38
  export { Skeleton, SkelCircle, SkelLine, SkelRow, SkelSection } from './lib/Skeleton';
38
39
  export type { SkeletonProps, SkelProps } from './lib/Skeleton';
@@ -46,3 +47,10 @@ export { Toggle } from './lib/Toggle';
46
47
  export type { ToggleProps } from './lib/Toggle';
47
48
  export { Tooltip, TooltipContent } from './lib/Tooltip';
48
49
  export type { TooltipProps, TooltipContentProps } from './lib/Tooltip';
50
+
51
+ // export * from './lib/Card';
52
+ // export * from './lib/Badge';
53
+ // export * from './lib/Button';
54
+ // export * from './lib/Input';
55
+ // export * from './lib/Select';
56
+ // export * from './lib/Toggle';
@@ -0,0 +1,312 @@
1
+ // Badge.stories.tsx
2
+
3
+ import { Meta, StoryContext} from '@storybook/react';
4
+ import { expect, fn, userEvent, within, waitFor } from 'storybook/test';
5
+ import { screen } from 'storybook/test'
6
+ import { Accordion, AccordionProps, AccordionParent, AccordionParentProps } from './Accordion';
7
+ import open from '../assets/img/open.svg';
8
+ import close from '../assets/img/close.svg';
9
+
10
+ export default {
11
+ title: 'Components/Accordion',
12
+ component: Accordion,
13
+ argTypes: {
14
+ variant: {
15
+ control: 'select',
16
+ options: ['default', 'blank', 'outline']
17
+ }
18
+ },
19
+ parameters: {
20
+ backgrounds: { default: 'light' },
21
+ // viewport: { defaultViewport: 'full' },
22
+ // viewport: { defaultViewport: 'full' },
23
+
24
+ },
25
+ } as Meta<typeof Accordion>;
26
+
27
+ // Default Accordion story
28
+ export const AccordionDefault = ({variant, label, children}: AccordionProps) => {
29
+
30
+ return (
31
+ <Accordion variant='default' label='Content Example'>
32
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
33
+ </Accordion>
34
+ )
35
+ };
36
+
37
+ // Default Accordion story
38
+ export const useBackgroundFalse = ({variant, label, children}: AccordionProps) => {
39
+
40
+ return (
41
+ <Accordion variant='default' label='Content Example' useBackground={false}>
42
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
43
+ </Accordion>
44
+ )
45
+ };
46
+
47
+ // Default Accordion story
48
+ export const hrFalse = ({variant, label, children}: AccordionProps) => {
49
+
50
+ return (
51
+ <Accordion variant='default' label='Content Example' hr={false}>
52
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
53
+ </Accordion>
54
+ )
55
+ };
56
+
57
+ // Default Accordion story
58
+ export const AccordionParentDefault = ({variant, label, children}: AccordionProps) => {
59
+
60
+ return (
61
+ <AccordionParent variant='default' chevron
62
+ classNameChildHeading='bg-blue-300'
63
+ classNameChildContent='bg-blue-100 ps-6 pt-2'
64
+ hr = {false}
65
+ >
66
+ <Accordion label='Content Example'>
67
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
68
+ </Accordion>
69
+ <Accordion label='Second Example'>
70
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
71
+ </Accordion>
72
+ </AccordionParent>
73
+ )
74
+ };
75
+
76
+ // play:async ({ canvasElement }: StoryContext) => {
77
+ AccordionParentDefault.play = async ({ canvasElement }: StoryContext) => {
78
+ const canvas = within(canvasElement);
79
+
80
+ // Find both accordion buttons
81
+ const firstAccordionButton = await canvas.findByRole('button', { name: /content example/i });
82
+ const secondAccordionButton = await canvas.findByRole('button', { name: /second example/i });
83
+
84
+ // Click the first accordion button to open it
85
+ await userEvent.click(firstAccordionButton);
86
+ expect(firstAccordionButton).toHaveAttribute('aria-expanded', 'true');
87
+
88
+ // Click the second accordion button to open it
89
+ await userEvent.click(secondAccordionButton);
90
+
91
+ // Verify the first accordion is now closed
92
+ expect(firstAccordionButton).toHaveAttribute('aria-expanded', 'false');
93
+
94
+ // Verify the second accordion is open
95
+ expect(secondAccordionButton).toHaveAttribute('aria-expanded', 'true');
96
+
97
+
98
+ // ✅ Keyboard accessibility tests
99
+
100
+ // Focus the first accordion button
101
+ firstAccordionButton.focus();
102
+ expect(firstAccordionButton).toHaveFocus();
103
+
104
+ // Press "Enter" to toggle the first accordion
105
+ await userEvent.keyboard('{Enter}');
106
+
107
+ // pause 500ms
108
+ await new Promise((resolve) => setTimeout(resolve, 500));
109
+
110
+ expect(firstAccordionButton).toHaveAttribute('aria-expanded', 'true');
111
+
112
+ // pause 500ms
113
+ await new Promise((resolve) => setTimeout(resolve, 500));
114
+
115
+ // Press "Space" to toggle the first accordion
116
+ await userEvent.keyboard(' '); // TODO - change back to 'Space'
117
+
118
+ // pause 1500ms
119
+ await new Promise((resolve) => setTimeout(resolve, 1500));
120
+
121
+ expect(firstAccordionButton).toHaveAttribute('aria-expanded', 'false');
122
+
123
+ // Press "Enter" again to re-open the first accordion
124
+ await userEvent.keyboard('{Enter}');
125
+
126
+ // pause 1500ms
127
+ await new Promise((resolve) => setTimeout(resolve, 1500));
128
+
129
+ // pause 500ms
130
+ await new Promise((resolve) => setTimeout(resolve, 500));
131
+
132
+ expect(firstAccordionButton).toHaveAttribute('aria-expanded', 'true');
133
+
134
+ // Verify the second accordion is closed (closes when 1st one opened)
135
+ expect(secondAccordionButton).toHaveAttribute('aria-expanded', 'false');
136
+
137
+ };
138
+
139
+ // Accordion Chevron False story
140
+ export const AccordionChevronTrue = ({variant, label, children}: AccordionProps) => {
141
+
142
+ return (
143
+ // <div className="w-full border-4 border-red-500">
144
+ <Accordion variant='default' label='Content Example' chevron={true}>
145
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
146
+ </Accordion>
147
+ // </div>
148
+ )
149
+ };
150
+
151
+
152
+ // Accordion Custom Icons story
153
+ export const AccordionCustomIcons = ({variant, label, children}: AccordionProps) => {
154
+
155
+ return (
156
+ // <div className="w-full border-4 border-red-500">
157
+ <Accordion variant='default' label='Content Example'
158
+ iconAccordionOpened={<img src={close} alt="Close Icon" />}
159
+ iconAccordionClosed={<img src={open} alt="Open Icon" />}
160
+ >
161
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
162
+ </Accordion>
163
+ // </div>
164
+ )
165
+ };
166
+
167
+
168
+ // Default Accordion story
169
+ export const AccordionReturnChild = ({variant, label, children}: AccordionProps) => {
170
+
171
+ return (
172
+ <AccordionParent variant='default' chevron
173
+ classNameChildHeading='bg-blue-300'
174
+ classNameChildContent='bg-blue-100 ps-6 pt-2'
175
+ >
176
+ <Accordion label='Content Example'>
177
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
178
+ </Accordion>
179
+ Return child test
180
+ <Accordion label='Second Example'>
181
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
182
+ </Accordion>
183
+ </AccordionParent>
184
+ )
185
+ };
186
+
187
+ // Default Accordion story
188
+ export const AccordionPlusMinus = ({variant, label, children}: AccordionProps) => {
189
+
190
+ return (
191
+ <AccordionParent variant='default' chevron={false}
192
+ classNameChildHeading='bg-blue-300'
193
+ classNameChildContent='bg-blue-100 ps-6 pt-2'
194
+ >
195
+ <Accordion label='Content Example'>
196
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
197
+ </Accordion>
198
+ <Accordion label='Second Example'>
199
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
200
+ </Accordion>
201
+ </AccordionParent>
202
+ )
203
+ };
204
+
205
+
206
+ // Custom Classes Accordion story
207
+ export const CustomClassesAccordion = ({variant, label, children}: AccordionProps) => {
208
+
209
+ return (
210
+ // <div className="w-full border-4 border-red-500">
211
+ <Accordion variant='default' label='Content Example'
212
+ classNameHeading='font-bold bg-slate-800 text-white border-b-0'
213
+ classNameContent='text-[0.9em] bg-slate-800 text-white font-sans'
214
+ >
215
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
216
+ </Accordion>
217
+ // </div>
218
+ )
219
+ };
220
+
221
+ // Multi Accordion Rounded Default story
222
+ export const MultiAccordionNoParent = ({variant, label, children}: AccordionProps) => {
223
+
224
+ return (
225
+ <>
226
+ <Accordion label='Content Example'>
227
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
228
+ </Accordion>
229
+ <Accordion label='Second Example'>
230
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
231
+ </Accordion>
232
+ <Accordion label='Third Example'>
233
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
234
+ </Accordion>
235
+ </>
236
+ )
237
+ };
238
+
239
+ // Multi Accordion Default story
240
+ export const MultiAccordionDefault = ({variant, label, children}: AccordionProps) => {
241
+
242
+ return (
243
+
244
+ <AccordionParent variant='default'>
245
+ <Accordion label='Content Example'>
246
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
247
+ </Accordion>
248
+ <Accordion label='Second Example'>
249
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
250
+ </Accordion>
251
+ <Accordion label='Third Example'>
252
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
253
+ </Accordion>
254
+ </AccordionParent>
255
+ )
256
+ };
257
+
258
+ // Multi Accordion Rounded Default story
259
+ export const MultiSingleOpenFalse = ({variant, label, children}: AccordionProps) => {
260
+
261
+ return (
262
+
263
+ <AccordionParent variant='default' className="" singleOpen={false}>
264
+ <Accordion label='Content Example'>
265
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
266
+ </Accordion>
267
+ <Accordion label='Second Example'>
268
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
269
+ </Accordion>
270
+ <Accordion label='Third Example'>
271
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
272
+ </Accordion>
273
+ </AccordionParent>
274
+ )
275
+ };
276
+
277
+ // Multi Accordion Rounded Default story
278
+ export const SingleUseBackgroundHr = ({variant, label, children}: AccordionProps) => {
279
+
280
+ return (
281
+
282
+ <AccordionParent variant='default' className="" singleOpen={false}>
283
+ <Accordion label='Content Example'>
284
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
285
+ </Accordion>
286
+ <Accordion label='hr = {false}' hr={false}>
287
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
288
+ </Accordion>
289
+ <Accordion label='useBackground = {false}' useBackground={false}>
290
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
291
+ </Accordion>
292
+ </AccordionParent>
293
+ )
294
+ };
295
+
296
+ // Multi Accordion Rounded Default story
297
+ export const MultiAccordionCustomClasses = ({variant, label, children}: AccordionProps) => {
298
+
299
+ return (
300
+ <AccordionParent variant='default' classNameChildHeading="bg-slate-500 text-white" classNameChildContent='font-bold' hr={false}>
301
+ <Accordion label='Content Example' classNameHeading="bg-slate-300 text-black" classNameContent='font-normal'>
302
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
303
+ </Accordion>
304
+ <Accordion label='Second Example'>
305
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
306
+ </Accordion>
307
+ <Accordion label='Third Example'>
308
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
309
+ </Accordion>
310
+ </AccordionParent>
311
+ )
312
+ };