paris 0.23.0 → 0.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (555) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +17 -17
  3. package/dist/helpers/OpenChangeEffect.d.ts +11 -0
  4. package/dist/helpers/OpenChangeEffect.js +16 -0
  5. package/dist/helpers/OpenChangeEffect.js.map +1 -0
  6. package/dist/helpers/renderEnhancer.d.ts +7 -0
  7. package/dist/helpers/renderEnhancer.js +20 -0
  8. package/dist/helpers/renderEnhancer.js.map +1 -0
  9. package/dist/helpers/useControllableState.d.ts +7 -0
  10. package/dist/helpers/useControllableState.js +49 -0
  11. package/dist/helpers/useControllableState.js.map +1 -0
  12. package/dist/helpers/useIsMounted.d.ts +1 -0
  13. package/dist/helpers/useResizeObserver.d.ts +12 -0
  14. package/dist/stories/accordion/Accordion.d.ts +47 -0
  15. package/dist/stories/accordion/Accordion.js +82 -0
  16. package/dist/stories/accordion/Accordion.js.map +1 -0
  17. package/dist/stories/accordion/Accordion.module.css +130 -0
  18. package/dist/stories/accordion/Accordion.module.scss.js +26 -0
  19. package/dist/stories/accordion/Accordion.module.scss.js.map +1 -0
  20. package/dist/stories/accordion/index.js +2 -0
  21. package/dist/stories/accordion/index.js.map +1 -0
  22. package/dist/stories/accordionselect/AccordionSelect.d.ts +102 -0
  23. package/dist/stories/accordionselect/AccordionSelect.js +137 -0
  24. package/dist/stories/accordionselect/AccordionSelect.js.map +1 -0
  25. package/dist/stories/accordionselect/AccordionSelect.module.css +106 -0
  26. package/dist/stories/accordionselect/AccordionSelect.module.scss.js +27 -0
  27. package/dist/stories/accordionselect/AccordionSelect.module.scss.js.map +1 -0
  28. package/dist/stories/accordionselect/index.js +2 -0
  29. package/dist/stories/accordionselect/index.js.map +1 -0
  30. package/dist/stories/avatar/Avatar.d.ts +22 -0
  31. package/dist/stories/avatar/Avatar.js +37 -0
  32. package/dist/stories/avatar/Avatar.js.map +1 -0
  33. package/dist/stories/avatar/Avatar.module.css +7 -0
  34. package/dist/stories/avatar/Avatar.module.scss.js +7 -0
  35. package/dist/stories/avatar/Avatar.module.scss.js.map +1 -0
  36. package/dist/stories/avatar/index.js +2 -0
  37. package/dist/stories/avatar/index.js.map +1 -0
  38. package/dist/stories/button/Button.d.ts +120 -0
  39. package/dist/stories/button/Button.js +123 -0
  40. package/dist/stories/button/Button.js.map +1 -0
  41. package/dist/stories/button/Button.module.css +137 -0
  42. package/dist/stories/button/Button.module.scss.js +35 -0
  43. package/dist/stories/button/Button.module.scss.js.map +1 -0
  44. package/dist/stories/button/index.js +2 -0
  45. package/dist/stories/button/index.js.map +1 -0
  46. package/dist/stories/callout/Callout.d.ts +22 -0
  47. package/dist/stories/callout/Callout.js +21 -0
  48. package/dist/stories/callout/Callout.js.map +1 -0
  49. package/dist/stories/callout/Callout.module.css +35 -0
  50. package/dist/stories/callout/Callout.module.scss.js +15 -0
  51. package/dist/stories/callout/Callout.module.scss.js.map +1 -0
  52. package/dist/stories/callout/index.js +2 -0
  53. package/dist/stories/callout/index.js.map +1 -0
  54. package/dist/stories/card/Card.d.ts +30 -0
  55. package/dist/stories/card/Card.js +22 -0
  56. package/dist/stories/card/Card.js.map +1 -0
  57. package/dist/stories/card/Card.module.css +39 -0
  58. package/dist/stories/card/Card.module.scss.js +17 -0
  59. package/dist/stories/card/Card.module.scss.js.map +1 -0
  60. package/dist/stories/card/index.js +2 -0
  61. package/dist/stories/card/index.js.map +1 -0
  62. package/dist/stories/cardbutton/CardButton.d.ts +50 -0
  63. package/dist/stories/cardbutton/CardButton.js +53 -0
  64. package/dist/stories/cardbutton/CardButton.js.map +1 -0
  65. package/dist/stories/cardbutton/CardButton.module.css +77 -0
  66. package/dist/stories/cardbutton/CardButton.module.scss.js +19 -0
  67. package/dist/stories/cardbutton/CardButton.module.scss.js.map +1 -0
  68. package/dist/stories/cardbutton/index.js +2 -0
  69. package/dist/stories/cardbutton/index.js.map +1 -0
  70. package/dist/stories/checkbox/Checkbox.d.ts +31 -0
  71. package/dist/stories/checkbox/Checkbox.js +99 -0
  72. package/dist/stories/checkbox/Checkbox.js.map +1 -0
  73. package/dist/stories/checkbox/Checkbox.module.css +155 -0
  74. package/dist/stories/checkbox/Checkbox.module.scss.js +32 -0
  75. package/dist/stories/checkbox/Checkbox.module.scss.js.map +1 -0
  76. package/dist/stories/checkbox/index.js +2 -0
  77. package/dist/stories/checkbox/index.js.map +1 -0
  78. package/dist/stories/codeinput/CodeInput.d.ts +47 -0
  79. package/dist/stories/codeinput/CodeInput.js +105 -0
  80. package/dist/stories/codeinput/CodeInput.js.map +1 -0
  81. package/dist/stories/codeinput/CodeInput.module.css +63 -0
  82. package/dist/stories/codeinput/CodeInput.module.scss.js +13 -0
  83. package/dist/stories/codeinput/CodeInput.module.scss.js.map +1 -0
  84. package/dist/stories/codeinput/index.js +2 -0
  85. package/dist/stories/codeinput/index.js.map +1 -0
  86. package/dist/stories/combobox/Combobox.d.ts +125 -0
  87. package/dist/stories/combobox/Combobox.js +257 -0
  88. package/dist/stories/combobox/Combobox.js.map +1 -0
  89. package/dist/stories/combobox/index.js +2 -0
  90. package/dist/stories/combobox/index.js.map +1 -0
  91. package/dist/stories/dialog/Dialog.d.ts +103 -0
  92. package/dist/stories/dialog/Dialog.js +187 -0
  93. package/dist/stories/dialog/Dialog.js.map +1 -0
  94. package/dist/stories/dialog/Dialog.module.css +185 -0
  95. package/dist/stories/dialog/Dialog.module.scss.js +48 -0
  96. package/dist/stories/dialog/Dialog.module.scss.js.map +1 -0
  97. package/dist/stories/dialog/index.js +2 -0
  98. package/dist/stories/dialog/index.js.map +1 -0
  99. package/dist/stories/drawer/Drawer.d.ts +143 -0
  100. package/dist/stories/drawer/Drawer.js +357 -0
  101. package/dist/stories/drawer/Drawer.js.map +1 -0
  102. package/dist/stories/drawer/Drawer.module.css +406 -0
  103. package/dist/stories/drawer/Drawer.module.scss.js +96 -0
  104. package/dist/stories/drawer/Drawer.module.scss.js.map +1 -0
  105. package/dist/stories/drawer/DrawerActions.d.ts +5 -0
  106. package/dist/stories/drawer/DrawerActions.js +23 -0
  107. package/dist/stories/drawer/DrawerActions.js.map +1 -0
  108. package/dist/stories/drawer/DrawerBottomPanel.d.ts +9 -0
  109. package/dist/stories/drawer/DrawerBottomPanel.js +48 -0
  110. package/dist/stories/drawer/DrawerBottomPanel.js.map +1 -0
  111. package/dist/stories/drawer/DrawerContext.d.ts +11 -0
  112. package/dist/stories/drawer/DrawerContext.js +23 -0
  113. package/dist/stories/drawer/DrawerContext.js.map +1 -0
  114. package/dist/stories/drawer/DrawerPage.d.ts +12 -0
  115. package/dist/stories/drawer/DrawerPage.js +22 -0
  116. package/dist/stories/drawer/DrawerPage.js.map +1 -0
  117. package/dist/stories/drawer/DrawerPageContext.d.ts +12 -0
  118. package/dist/stories/drawer/DrawerPageContext.js +23 -0
  119. package/dist/stories/drawer/DrawerPageContext.js.map +1 -0
  120. package/dist/stories/drawer/DrawerPaginationContext.d.ts +9 -0
  121. package/dist/stories/drawer/DrawerPaginationContext.js +17 -0
  122. package/dist/stories/drawer/DrawerPaginationContext.js.map +1 -0
  123. package/dist/stories/drawer/DrawerProgressBar.d.ts +15 -0
  124. package/dist/stories/drawer/DrawerProgressBar.js +60 -0
  125. package/dist/stories/drawer/DrawerProgressBar.js.map +1 -0
  126. package/dist/stories/drawer/DrawerSlotContext.d.ts +34 -0
  127. package/dist/stories/drawer/DrawerSlotContext.js +120 -0
  128. package/dist/stories/drawer/DrawerSlotContext.js.map +1 -0
  129. package/dist/stories/drawer/DrawerTitle.d.ts +5 -0
  130. package/dist/stories/drawer/DrawerTitle.js +29 -0
  131. package/dist/stories/drawer/DrawerTitle.js.map +1 -0
  132. package/dist/stories/drawer/index.js +10 -0
  133. package/dist/stories/drawer/index.js.map +1 -0
  134. package/dist/stories/field/Field.d.ts +54 -0
  135. package/dist/stories/field/Field.js +91 -0
  136. package/dist/stories/field/Field.js.map +1 -0
  137. package/dist/stories/field/index.js +2 -0
  138. package/dist/stories/field/index.js.map +1 -0
  139. package/dist/stories/icon/ArrowRight.d.ts +2 -0
  140. package/dist/stories/icon/ArrowRight.js +13 -0
  141. package/dist/stories/icon/ArrowRight.js.map +1 -0
  142. package/dist/stories/icon/Check.d.ts +2 -0
  143. package/dist/stories/icon/Check.js +13 -0
  144. package/dist/stories/icon/Check.js.map +1 -0
  145. package/dist/stories/icon/ChevronLeft.d.ts +2 -0
  146. package/dist/stories/icon/ChevronLeft.js +13 -0
  147. package/dist/stories/icon/ChevronLeft.js.map +1 -0
  148. package/dist/stories/icon/ChevronRight.d.ts +2 -0
  149. package/dist/stories/icon/ChevronRight.js +13 -0
  150. package/dist/stories/icon/ChevronRight.js.map +1 -0
  151. package/dist/stories/icon/Close.d.ts +2 -0
  152. package/dist/stories/icon/Close.js +13 -0
  153. package/dist/stories/icon/Close.js.map +1 -0
  154. package/dist/stories/icon/Ellipsis.d.ts +2 -0
  155. package/dist/stories/icon/Ellipsis.js +13 -0
  156. package/dist/stories/icon/Ellipsis.js.map +1 -0
  157. package/{src/stories/icon/Icon.tsx → dist/stories/icon/Icon.d.ts} +2 -8
  158. package/dist/stories/icon/Icon.js +8 -0
  159. package/dist/stories/icon/Icon.js.map +1 -0
  160. package/dist/stories/icon/Info.d.ts +2 -0
  161. package/dist/stories/icon/Info.js +13 -0
  162. package/dist/stories/icon/Info.js.map +1 -0
  163. package/dist/stories/icon/NotificationDot.d.ts +2 -0
  164. package/dist/stories/icon/NotificationDot.js +7 -0
  165. package/dist/stories/icon/NotificationDot.js.map +1 -0
  166. package/dist/stories/icon/Spinner.d.ts +2 -0
  167. package/dist/stories/icon/Spinner.js +24 -0
  168. package/dist/stories/icon/Spinner.js.map +1 -0
  169. package/dist/stories/icon/index.js +11 -0
  170. package/dist/stories/icon/index.js.map +1 -0
  171. package/dist/stories/informationaltooltip/InformationalTooltip.d.ts +68 -0
  172. package/dist/stories/informationaltooltip/InformationalTooltip.js +85 -0
  173. package/dist/stories/informationaltooltip/InformationalTooltip.js.map +1 -0
  174. package/dist/stories/informationaltooltip/InformationalTooltip.module.css +22 -0
  175. package/dist/stories/informationaltooltip/InformationalTooltip.module.scss.js +11 -0
  176. package/dist/stories/informationaltooltip/InformationalTooltip.module.scss.js.map +1 -0
  177. package/dist/stories/informationaltooltip/index.js +2 -0
  178. package/dist/stories/informationaltooltip/index.js.map +1 -0
  179. package/dist/stories/input/Input.d.ts +57 -0
  180. package/dist/stories/input/Input.js +108 -0
  181. package/dist/stories/input/Input.js.map +1 -0
  182. package/dist/stories/input/Input.module.css +165 -0
  183. package/dist/stories/input/Input.module.scss.js +23 -0
  184. package/dist/stories/input/Input.module.scss.js.map +1 -0
  185. package/dist/stories/input/index.js +2 -0
  186. package/dist/stories/input/index.js.map +1 -0
  187. package/dist/stories/markdown/Markdown.d.ts +36 -0
  188. package/dist/stories/markdown/Markdown.js +141 -0
  189. package/dist/stories/markdown/Markdown.js.map +1 -0
  190. package/dist/stories/markdown/Markdown.module.css +301 -0
  191. package/dist/stories/markdown/Markdown.module.scss.js +73 -0
  192. package/dist/stories/markdown/Markdown.module.scss.js.map +1 -0
  193. package/dist/stories/markdown/index.js +2 -0
  194. package/dist/stories/markdown/index.js.map +1 -0
  195. package/dist/stories/markdowneditor/FixedToolbar.d.ts +19 -0
  196. package/dist/stories/markdowneditor/FixedToolbar.js +212 -0
  197. package/dist/stories/markdowneditor/FixedToolbar.js.map +1 -0
  198. package/dist/stories/markdowneditor/FixedToolbar.module.css +24 -0
  199. package/dist/stories/markdowneditor/FixedToolbar.module.scss.js +11 -0
  200. package/dist/stories/markdowneditor/FixedToolbar.module.scss.js.map +1 -0
  201. package/dist/stories/markdowneditor/FloatingToolbar.d.ts +15 -0
  202. package/dist/stories/markdowneditor/FloatingToolbar.js +66 -0
  203. package/dist/stories/markdowneditor/FloatingToolbar.js.map +1 -0
  204. package/dist/stories/markdowneditor/FloatingToolbar.module.css +18 -0
  205. package/dist/stories/markdowneditor/FloatingToolbar.module.scss.js +9 -0
  206. package/dist/stories/markdowneditor/FloatingToolbar.module.scss.js.map +1 -0
  207. package/dist/stories/markdowneditor/LinkPopover.d.ts +11 -0
  208. package/dist/stories/markdowneditor/LinkPopover.js +106 -0
  209. package/dist/stories/markdowneditor/LinkPopover.js.map +1 -0
  210. package/dist/stories/markdowneditor/LinkPopover.module.css +113 -0
  211. package/dist/stories/markdowneditor/LinkPopover.module.scss.js +21 -0
  212. package/dist/stories/markdowneditor/LinkPopover.module.scss.js.map +1 -0
  213. package/{src/stories/markdowneditor/MarkdownEditor.tsx → dist/stories/markdowneditor/MarkdownEditor.d.ts} +5 -68
  214. package/dist/stories/markdowneditor/MarkdownEditor.js +62 -0
  215. package/dist/stories/markdowneditor/MarkdownEditor.js.map +1 -0
  216. package/dist/stories/markdowneditor/MarkdownEditor.module.css +325 -0
  217. package/dist/stories/markdowneditor/MarkdownEditor.module.scss.js +11 -0
  218. package/dist/stories/markdowneditor/MarkdownEditor.module.scss.js.map +1 -0
  219. package/dist/stories/markdowneditor/MarkdownEditorContext.d.ts +10 -0
  220. package/dist/stories/markdowneditor/MarkdownEditorContext.js +11 -0
  221. package/dist/stories/markdowneditor/MarkdownEditorContext.js.map +1 -0
  222. package/dist/stories/markdowneditor/ToolbarButton.d.ts +22 -0
  223. package/dist/stories/markdowneditor/ToolbarButton.js +33 -0
  224. package/dist/stories/markdowneditor/ToolbarButton.js.map +1 -0
  225. package/dist/stories/markdowneditor/ToolbarButton.module.css +30 -0
  226. package/dist/stories/markdowneditor/ToolbarButton.module.scss.js +7 -0
  227. package/dist/stories/markdowneditor/ToolbarButton.module.scss.js.map +1 -0
  228. package/dist/stories/markdowneditor/features.d.ts +10 -0
  229. package/dist/stories/markdowneditor/features.js +79 -0
  230. package/dist/stories/markdowneditor/features.js.map +1 -0
  231. package/dist/stories/markdowneditor/index.js +7 -0
  232. package/dist/stories/markdowneditor/index.js.map +1 -0
  233. package/dist/stories/markdowneditor/useMarkdownEditor.d.ts +19 -0
  234. package/dist/stories/markdowneditor/useMarkdownEditor.js +50 -0
  235. package/dist/stories/markdowneditor/useMarkdownEditor.js.map +1 -0
  236. package/dist/stories/menu/Menu.d.ts +48 -0
  237. package/dist/stories/menu/Menu.js +31 -0
  238. package/dist/stories/menu/Menu.js.map +1 -0
  239. package/dist/stories/menu/Menu.module.css +59 -0
  240. package/dist/stories/menu/Menu.module.scss.js +12 -0
  241. package/dist/stories/menu/Menu.module.scss.js.map +1 -0
  242. package/dist/stories/menu/index.js +2 -0
  243. package/dist/stories/menu/index.js.map +1 -0
  244. package/dist/stories/pagination/index.js +2 -0
  245. package/dist/stories/pagination/index.js.map +1 -0
  246. package/dist/stories/pagination/usePagination.d.ts +47 -0
  247. package/dist/stories/pagination/usePagination.js +52 -0
  248. package/dist/stories/pagination/usePagination.js.map +1 -0
  249. package/dist/stories/popover/Popover.d.ts +29 -0
  250. package/dist/stories/popover/Popover.js +56 -0
  251. package/dist/stories/popover/Popover.js.map +1 -0
  252. package/dist/stories/popover/Popover.module.css +20 -0
  253. package/dist/stories/popover/Popover.module.scss.js +8 -0
  254. package/dist/stories/popover/Popover.module.scss.js.map +1 -0
  255. package/dist/stories/popover/index.js +2 -0
  256. package/dist/stories/popover/index.js.map +1 -0
  257. package/dist/stories/select/Select.d.ts +112 -0
  258. package/dist/stories/select/Select.js +283 -0
  259. package/dist/stories/select/Select.js.map +1 -0
  260. package/dist/stories/select/Select.module.css +236 -0
  261. package/dist/stories/select/Select.module.scss.js +47 -0
  262. package/dist/stories/select/Select.module.scss.js.map +1 -0
  263. package/dist/stories/select/index.js +2 -0
  264. package/dist/stories/select/index.js.map +1 -0
  265. package/dist/stories/styledlink/StyledLink.d.ts +20 -0
  266. package/dist/stories/styledlink/StyledLink.js +15 -0
  267. package/dist/stories/styledlink/StyledLink.js.map +1 -0
  268. package/dist/stories/styledlink/StyledLink.module.css +10 -0
  269. package/dist/stories/styledlink/StyledLink.module.scss.js +7 -0
  270. package/dist/stories/styledlink/StyledLink.module.scss.js.map +1 -0
  271. package/dist/stories/styledlink/index.js +2 -0
  272. package/dist/stories/styledlink/index.js.map +1 -0
  273. package/dist/stories/table/Table.d.ts +76 -0
  274. package/dist/stories/table/Table.js +91 -0
  275. package/dist/stories/table/Table.js.map +1 -0
  276. package/dist/stories/table/Table.module.css +60 -0
  277. package/dist/stories/table/Table.module.scss.js +21 -0
  278. package/dist/stories/table/Table.module.scss.js.map +1 -0
  279. package/dist/stories/table/index.js +2 -0
  280. package/dist/stories/table/index.js.map +1 -0
  281. package/dist/stories/tabs/Tabs.d.ts +74 -0
  282. package/dist/stories/tabs/Tabs.js +128 -0
  283. package/dist/stories/tabs/Tabs.js.map +1 -0
  284. package/dist/stories/tabs/Tabs.module.css +144 -0
  285. package/dist/stories/tabs/Tabs.module.scss.js +37 -0
  286. package/dist/stories/tabs/Tabs.module.scss.js.map +1 -0
  287. package/dist/stories/tabs/index.js +2 -0
  288. package/dist/stories/tabs/index.js.map +1 -0
  289. package/dist/stories/tag/Tag.d.ts +36 -0
  290. package/dist/stories/tag/Tag.js +52 -0
  291. package/dist/stories/tag/Tag.js.map +1 -0
  292. package/dist/stories/tag/Tag.module.css +164 -0
  293. package/dist/stories/tag/Tag.module.scss.js +38 -0
  294. package/dist/stories/tag/Tag.module.scss.js.map +1 -0
  295. package/dist/stories/tag/index.js +2 -0
  296. package/dist/stories/tag/index.js.map +1 -0
  297. package/dist/stories/text/Text.d.ts +52 -0
  298. package/dist/stories/text/Text.js +37 -0
  299. package/dist/stories/text/Text.js.map +1 -0
  300. package/dist/stories/text/Text.module.css +54 -0
  301. package/dist/stories/text/Text.module.scss.js +19 -0
  302. package/dist/stories/text/Text.module.scss.js.map +1 -0
  303. package/{src → dist}/stories/text/Typography.module.css +20 -20
  304. package/dist/stories/text/Typography.module.css.js +45 -0
  305. package/dist/stories/text/Typography.module.css.js.map +1 -0
  306. package/dist/stories/text/index.js +2 -0
  307. package/dist/stories/text/index.js.map +1 -0
  308. package/dist/stories/textarea/TextArea.d.ts +28 -0
  309. package/dist/stories/textarea/TextArea.js +102 -0
  310. package/dist/stories/textarea/TextArea.js.map +1 -0
  311. package/dist/stories/textarea/index.js +2 -0
  312. package/dist/stories/textarea/index.js.map +1 -0
  313. package/{src/stories/theme/tw-preflight.css → dist/stories/theme/global.css} +86 -110
  314. package/dist/stories/theme/index.js +4 -0
  315. package/dist/stories/theme/index.js.map +1 -0
  316. package/dist/stories/theme/themes.d.ts +513 -0
  317. package/dist/stories/theme/themes.js +854 -0
  318. package/dist/stories/theme/themes.js.map +1 -0
  319. package/dist/stories/theme/tokens.d.ts +128 -0
  320. package/dist/stories/theme/tokens.js +130 -0
  321. package/dist/stories/theme/tokens.js.map +1 -0
  322. package/dist/stories/tilt/Tilt.d.ts +70 -0
  323. package/dist/stories/tilt/Tilt.js +256 -0
  324. package/dist/stories/tilt/Tilt.js.map +1 -0
  325. package/dist/stories/tilt/Tilt.module.css +22 -0
  326. package/dist/stories/tilt/Tilt.module.scss.js +11 -0
  327. package/dist/stories/tilt/Tilt.module.scss.js.map +1 -0
  328. package/dist/stories/tilt/index.js +2 -0
  329. package/dist/stories/tilt/index.js.map +1 -0
  330. package/{src/stories/toast/Toast.tsx → dist/stories/toast/Toast.d.ts} +3 -17
  331. package/dist/stories/toast/Toast.js +19 -0
  332. package/dist/stories/toast/Toast.js.map +1 -0
  333. package/dist/stories/toast/Toast.module.css +17 -0
  334. package/dist/stories/toast/Toast.module.scss.js +7 -0
  335. package/dist/stories/toast/Toast.module.scss.js.map +1 -0
  336. package/dist/stories/toast/index.js +3 -0
  337. package/dist/stories/toast/index.js.map +1 -0
  338. package/dist/stories/utility/EasingFunctions.d.ts +1 -0
  339. package/dist/stories/utility/EasingFunctions.js +6 -0
  340. package/dist/stories/utility/EasingFunctions.js.map +1 -0
  341. package/dist/stories/utility/RemoveFromDOM.d.ts +11 -0
  342. package/dist/stories/utility/RemoveFromDOM.js +7 -0
  343. package/dist/stories/utility/RemoveFromDOM.js.map +1 -0
  344. package/dist/stories/utility/TextWhenString.d.ts +6 -0
  345. package/dist/stories/utility/TextWhenString.js +13 -0
  346. package/dist/stories/utility/TextWhenString.js.map +1 -0
  347. package/dist/stories/utility/VisuallyHidden.d.ts +13 -0
  348. package/dist/stories/utility/VisuallyHidden.js +8 -0
  349. package/dist/stories/utility/VisuallyHidden.js.map +1 -0
  350. package/dist/stories/utility/index.js +5 -0
  351. package/dist/stories/utility/index.js.map +1 -0
  352. package/dist/styles.css +3307 -0
  353. package/dist/types/Enhancer.d.ts +4 -0
  354. package/package.json +148 -44
  355. package/src/helpers/OpenChangeEffect.tsx +0 -21
  356. package/src/helpers/renderEnhancer.tsx +0 -20
  357. package/src/helpers/useControllableState.test.ts +0 -88
  358. package/src/helpers/useControllableState.ts +0 -59
  359. package/src/helpers/useIsMounted.ts +0 -17
  360. package/src/helpers/useResizeObserver.ts +0 -94
  361. package/src/pages/_app.tsx +0 -6
  362. package/src/pages/_document.tsx +0 -13
  363. package/src/pages/index.tsx +0 -116
  364. package/src/stories/Pagination.mdx +0 -73
  365. package/src/stories/Tokens.mdx +0 -46
  366. package/src/stories/Welcome.mdx +0 -8
  367. package/src/stories/accordion/Accordion.module.scss +0 -163
  368. package/src/stories/accordion/Accordion.stories.ts +0 -48
  369. package/src/stories/accordion/Accordion.test.tsx +0 -142
  370. package/src/stories/accordion/Accordion.tsx +0 -148
  371. package/src/stories/accordionselect/AccordionSelect.module.scss +0 -119
  372. package/src/stories/accordionselect/AccordionSelect.stories.ts +0 -38
  373. package/src/stories/accordionselect/AccordionSelect.test.tsx +0 -327
  374. package/src/stories/accordionselect/AccordionSelect.tsx +0 -249
  375. package/src/stories/avatar/Avatar.module.scss +0 -7
  376. package/src/stories/avatar/Avatar.stories.ts +0 -22
  377. package/src/stories/avatar/Avatar.test.tsx +0 -77
  378. package/src/stories/avatar/Avatar.tsx +0 -55
  379. package/src/stories/button/Button.module.scss +0 -167
  380. package/src/stories/button/Button.stories.ts +0 -93
  381. package/src/stories/button/Button.test.tsx +0 -266
  382. package/src/stories/button/Button.tsx +0 -226
  383. package/src/stories/callout/Callout.module.scss +0 -43
  384. package/src/stories/callout/Callout.stories.ts +0 -52
  385. package/src/stories/callout/Callout.test.tsx +0 -79
  386. package/src/stories/callout/Callout.tsx +0 -43
  387. package/src/stories/card/Card.module.scss +0 -42
  388. package/src/stories/card/Card.stories.ts +0 -38
  389. package/src/stories/card/Card.test.tsx +0 -81
  390. package/src/stories/card/Card.tsx +0 -54
  391. package/src/stories/cardbutton/CardButton.module.scss +0 -88
  392. package/src/stories/cardbutton/CardButton.stories.tsx +0 -24
  393. package/src/stories/cardbutton/CardButton.test.tsx +0 -174
  394. package/src/stories/cardbutton/CardButton.tsx +0 -100
  395. package/src/stories/checkbox/Checkbox.module.scss +0 -198
  396. package/src/stories/checkbox/Checkbox.stories.ts +0 -87
  397. package/src/stories/checkbox/Checkbox.test.tsx +0 -584
  398. package/src/stories/checkbox/Checkbox.tsx +0 -123
  399. package/src/stories/codeinput/CodeInput.module.scss +0 -77
  400. package/src/stories/codeinput/CodeInput.stories.ts +0 -51
  401. package/src/stories/codeinput/CodeInput.test.tsx +0 -56
  402. package/src/stories/codeinput/CodeInput.tsx +0 -160
  403. package/src/stories/combobox/Combobox.module.scss +0 -5
  404. package/src/stories/combobox/Combobox.stories.ts +0 -270
  405. package/src/stories/combobox/Combobox.test.tsx +0 -275
  406. package/src/stories/combobox/Combobox.tsx +0 -396
  407. package/src/stories/dialog/Dialog.module.scss +0 -211
  408. package/src/stories/dialog/Dialog.stories.tsx +0 -93
  409. package/src/stories/dialog/Dialog.test.tsx +0 -244
  410. package/src/stories/dialog/Dialog.tsx +0 -283
  411. package/src/stories/drawer/Drawer.module.scss +0 -479
  412. package/src/stories/drawer/Drawer.stories.tsx +0 -494
  413. package/src/stories/drawer/Drawer.test.tsx +0 -734
  414. package/src/stories/drawer/Drawer.tsx +0 -542
  415. package/src/stories/drawer/DrawerActions.tsx +0 -28
  416. package/src/stories/drawer/DrawerBottomPanel.tsx +0 -55
  417. package/src/stories/drawer/DrawerContext.tsx +0 -31
  418. package/src/stories/drawer/DrawerPage.tsx +0 -37
  419. package/src/stories/drawer/DrawerPageContext.tsx +0 -35
  420. package/src/stories/drawer/DrawerPaginationContext.tsx +0 -22
  421. package/src/stories/drawer/DrawerProgressBar.tsx +0 -72
  422. package/src/stories/drawer/DrawerSlotContext.tsx +0 -172
  423. package/src/stories/drawer/DrawerTitle.tsx +0 -35
  424. package/src/stories/field/Field.stories.ts +0 -36
  425. package/src/stories/field/Field.test.tsx +0 -146
  426. package/src/stories/field/Field.tsx +0 -145
  427. package/src/stories/icon/ArrowRight.tsx +0 -11
  428. package/src/stories/icon/Check.tsx +0 -11
  429. package/src/stories/icon/ChevronLeft.tsx +0 -11
  430. package/src/stories/icon/ChevronRight.tsx +0 -11
  431. package/src/stories/icon/Close.tsx +0 -11
  432. package/src/stories/icon/Ellipsis.tsx +0 -11
  433. package/src/stories/icon/Icon.module.scss +0 -5
  434. package/src/stories/icon/Icon.stories.ts +0 -33
  435. package/src/stories/icon/Icon.test.tsx +0 -59
  436. package/src/stories/icon/Info.tsx +0 -11
  437. package/src/stories/icon/NotificationDot.tsx +0 -8
  438. package/src/stories/icon/Spinner.tsx +0 -17
  439. package/src/stories/informationaltooltip/InformationalTooltip.module.scss +0 -23
  440. package/src/stories/informationaltooltip/InformationalTooltip.stories.tsx +0 -61
  441. package/src/stories/informationaltooltip/InformationalTooltip.test.tsx +0 -178
  442. package/src/stories/informationaltooltip/InformationalTooltip.tsx +0 -170
  443. package/src/stories/input/Input.module.scss +0 -217
  444. package/src/stories/input/Input.stories.ts +0 -110
  445. package/src/stories/input/Input.test.tsx +0 -174
  446. package/src/stories/input/Input.tsx +0 -181
  447. package/src/stories/markdown/Markdown.module.scss +0 -384
  448. package/src/stories/markdown/Markdown.stories.ts +0 -203
  449. package/src/stories/markdown/Markdown.test.tsx +0 -228
  450. package/src/stories/markdown/Markdown.tsx +0 -293
  451. package/src/stories/markdowneditor/FixedToolbar.module.scss +0 -24
  452. package/src/stories/markdowneditor/FixedToolbar.tsx +0 -274
  453. package/src/stories/markdowneditor/FloatingToolbar.module.scss +0 -21
  454. package/src/stories/markdowneditor/FloatingToolbar.tsx +0 -94
  455. package/src/stories/markdowneditor/LinkPopover.module.scss +0 -124
  456. package/src/stories/markdowneditor/LinkPopover.tsx +0 -135
  457. package/src/stories/markdowneditor/MarkdownEditor.module.scss +0 -405
  458. package/src/stories/markdowneditor/MarkdownEditor.stories.tsx +0 -226
  459. package/src/stories/markdowneditor/MarkdownEditor.test.tsx +0 -115
  460. package/src/stories/markdowneditor/MarkdownEditorContext.tsx +0 -20
  461. package/src/stories/markdowneditor/ToolbarButton.module.scss +0 -35
  462. package/src/stories/markdowneditor/ToolbarButton.tsx +0 -52
  463. package/src/stories/markdowneditor/features.ts +0 -92
  464. package/src/stories/markdowneditor/useMarkdownEditor.ts +0 -75
  465. package/src/stories/menu/Menu.module.scss +0 -71
  466. package/src/stories/menu/Menu.stories.tsx +0 -37
  467. package/src/stories/menu/Menu.test.tsx +0 -254
  468. package/src/stories/menu/Menu.tsx +0 -95
  469. package/src/stories/pagination/usePagination.test.ts +0 -259
  470. package/src/stories/pagination/usePagination.ts +0 -117
  471. package/src/stories/popover/Popover.module.scss +0 -22
  472. package/src/stories/popover/Popover.stories.ts +0 -20
  473. package/src/stories/popover/Popover.test.tsx +0 -152
  474. package/src/stories/popover/Popover.tsx +0 -89
  475. package/src/stories/select/Select.module.scss +0 -311
  476. package/src/stories/select/Select.stories.ts +0 -153
  477. package/src/stories/select/Select.test.tsx +0 -341
  478. package/src/stories/select/Select.tsx +0 -398
  479. package/src/stories/styledlink/StyledLink.module.scss +0 -11
  480. package/src/stories/styledlink/StyledLink.stories.ts +0 -28
  481. package/src/stories/styledlink/StyledLink.test.tsx +0 -59
  482. package/src/stories/styledlink/StyledLink.tsx +0 -33
  483. package/src/stories/table/Table.module.scss +0 -74
  484. package/src/stories/table/Table.stories.ts +0 -62
  485. package/src/stories/table/Table.test.tsx +0 -156
  486. package/src/stories/table/Table.tsx +0 -182
  487. package/src/stories/tabs/Tabs.module.scss +0 -185
  488. package/src/stories/tabs/Tabs.stories.tsx +0 -209
  489. package/src/stories/tabs/Tabs.test.tsx +0 -167
  490. package/src/stories/tabs/Tabs.tsx +0 -191
  491. package/src/stories/tag/Tag.module.scss +0 -189
  492. package/src/stories/tag/Tag.stories.ts +0 -58
  493. package/src/stories/tag/Tag.test.tsx +0 -90
  494. package/src/stories/tag/Tag.tsx +0 -84
  495. package/src/stories/text/Text.module.scss +0 -39
  496. package/src/stories/text/Text.stories.ts +0 -195
  497. package/src/stories/text/Text.test.tsx +0 -81
  498. package/src/stories/text/Text.tsx +0 -108
  499. package/src/stories/textarea/TextArea.stories.ts +0 -39
  500. package/src/stories/textarea/TextArea.test.tsx +0 -147
  501. package/src/stories/textarea/TextArea.tsx +0 -112
  502. package/src/stories/theme/global.scss +0 -6
  503. package/src/stories/theme/themes.ts +0 -1509
  504. package/src/stories/theme/tokens.ts +0 -149
  505. package/src/stories/theme/util.scss +0 -8
  506. package/src/stories/tilt/Tilt.module.scss +0 -22
  507. package/src/stories/tilt/Tilt.stories.tsx +0 -42
  508. package/src/stories/tilt/Tilt.test.tsx +0 -203
  509. package/src/stories/tilt/Tilt.tsx +0 -375
  510. package/src/stories/toast/Toast.module.scss +0 -20
  511. package/src/stories/toast/Toast.stories.tsx +0 -31
  512. package/src/stories/toast/Toast.test.tsx +0 -86
  513. package/src/stories/utility/Dropdown.module.scss +0 -28
  514. package/src/stories/utility/EasingFunctions.ts +0 -3
  515. package/src/stories/utility/RemoveFromDOM.tsx +0 -15
  516. package/src/stories/utility/TextWhenString.tsx +0 -15
  517. package/src/stories/utility/Utility.test.tsx +0 -96
  518. package/src/stories/utility/VisuallyHidden.tsx +0 -18
  519. package/src/styles/Home.module.css +0 -268
  520. package/src/styles/globals.css +0 -3
  521. package/src/test/render.tsx +0 -20
  522. package/src/test/setup.ts +0 -32
  523. package/src/types/Enhancer.ts +0 -3
  524. /package/{src/stories/accordion/index.ts → dist/stories/accordion/index.d.ts} +0 -0
  525. /package/{src/stories/accordionselect/index.ts → dist/stories/accordionselect/index.d.ts} +0 -0
  526. /package/{src/stories/avatar/index.ts → dist/stories/avatar/index.d.ts} +0 -0
  527. /package/{src/stories/button/index.ts → dist/stories/button/index.d.ts} +0 -0
  528. /package/{src/stories/callout/index.ts → dist/stories/callout/index.d.ts} +0 -0
  529. /package/{src/stories/card/index.ts → dist/stories/card/index.d.ts} +0 -0
  530. /package/{src/stories/cardbutton/index.ts → dist/stories/cardbutton/index.d.ts} +0 -0
  531. /package/{src/stories/checkbox/index.ts → dist/stories/checkbox/index.d.ts} +0 -0
  532. /package/{src/stories/codeinput/index.ts → dist/stories/codeinput/index.d.ts} +0 -0
  533. /package/{src/stories/combobox/index.ts → dist/stories/combobox/index.d.ts} +0 -0
  534. /package/{src/stories/dialog/index.ts → dist/stories/dialog/index.d.ts} +0 -0
  535. /package/{src/stories/drawer/index.ts → dist/stories/drawer/index.d.ts} +0 -0
  536. /package/{src/stories/field/index.ts → dist/stories/field/index.d.ts} +0 -0
  537. /package/{src/stories/icon/index.ts → dist/stories/icon/index.d.ts} +0 -0
  538. /package/{src/stories/informationaltooltip/index.ts → dist/stories/informationaltooltip/index.d.ts} +0 -0
  539. /package/{src/stories/input/index.ts → dist/stories/input/index.d.ts} +0 -0
  540. /package/{src/stories/markdown/index.ts → dist/stories/markdown/index.d.ts} +0 -0
  541. /package/{src/stories/markdowneditor/index.ts → dist/stories/markdowneditor/index.d.ts} +0 -0
  542. /package/{src/stories/menu/index.ts → dist/stories/menu/index.d.ts} +0 -0
  543. /package/{src/stories/pagination/index.ts → dist/stories/pagination/index.d.ts} +0 -0
  544. /package/{src/stories/popover/index.ts → dist/stories/popover/index.d.ts} +0 -0
  545. /package/{src/stories/select/index.ts → dist/stories/select/index.d.ts} +0 -0
  546. /package/{src/stories/styledlink/index.ts → dist/stories/styledlink/index.d.ts} +0 -0
  547. /package/{src/stories/table/index.ts → dist/stories/table/index.d.ts} +0 -0
  548. /package/{src/stories/tabs/index.ts → dist/stories/tabs/index.d.ts} +0 -0
  549. /package/{src/stories/tag/index.ts → dist/stories/tag/index.d.ts} +0 -0
  550. /package/{src/stories/text/index.ts → dist/stories/text/index.d.ts} +0 -0
  551. /package/{src/stories/textarea/index.ts → dist/stories/textarea/index.d.ts} +0 -0
  552. /package/{src/stories/theme/index.ts → dist/stories/theme/index.d.ts} +0 -0
  553. /package/{src/stories/tilt/index.ts → dist/stories/tilt/index.d.ts} +0 -0
  554. /package/{src/stories/toast/index.ts → dist/stories/toast/index.d.ts} +0 -0
  555. /package/{src/stories/utility/index.ts → dist/stories/utility/index.d.ts} +0 -0
@@ -1,734 +0,0 @@
1
- import { renderHook } from '@testing-library/react';
2
- import { describe, expect, it, vi } from 'vitest';
3
- import { getCloseButton, render, screen, waitFor } from '../../test/render';
4
- import { usePagination } from '../pagination';
5
- import { Drawer } from './Drawer';
6
- import { DrawerActions } from './DrawerActions';
7
- import { DrawerBottomPanel } from './DrawerBottomPanel';
8
- import { useDrawer } from './DrawerContext';
9
- import { DrawerPage } from './DrawerPage';
10
- import { DrawerPageProvider, useIsPageActive } from './DrawerPageContext';
11
- import { useDrawerPagination } from './DrawerPaginationContext';
12
- import { DrawerProgressBar } from './DrawerProgressBar';
13
- import { DrawerTitle } from './DrawerTitle';
14
-
15
- describe('Drawer', () => {
16
- it('renders when isOpen is true', async () => {
17
- render(
18
- <Drawer isOpen={true} title="Test Drawer" onClose={vi.fn()}>
19
- Drawer content
20
- </Drawer>,
21
- );
22
-
23
- await waitFor(() => {
24
- expect(screen.getByRole('dialog')).toBeInTheDocument();
25
- });
26
- });
27
-
28
- it('does not render when isOpen is false', () => {
29
- render(
30
- <Drawer isOpen={false} title="Test Drawer" onClose={vi.fn()}>
31
- Drawer content
32
- </Drawer>,
33
- );
34
-
35
- expect(screen.queryByRole('dialog')).not.toBeInTheDocument();
36
- });
37
-
38
- it('renders children content', async () => {
39
- render(
40
- <Drawer isOpen={true} title="Test Drawer" onClose={vi.fn()}>
41
- <p>Hello from Drawer</p>
42
- </Drawer>,
43
- );
44
-
45
- await waitFor(() => {
46
- expect(screen.getByText('Hello from Drawer')).toBeInTheDocument();
47
- });
48
- });
49
-
50
- it('renders the title', async () => {
51
- render(
52
- <Drawer isOpen={true} title="My Drawer Title" onClose={vi.fn()}>
53
- Content
54
- </Drawer>,
55
- );
56
-
57
- await waitFor(() => {
58
- expect(screen.getByText('My Drawer Title')).toBeInTheDocument();
59
- });
60
- });
61
-
62
- it('visually hides title when hideTitle is true but keeps it accessible', async () => {
63
- render(
64
- <Drawer isOpen={true} title="Hidden Title" hideTitle={true} onClose={vi.fn()}>
65
- Content
66
- </Drawer>,
67
- );
68
-
69
- await waitFor(() => {
70
- expect(screen.getByText('Hidden Title')).toBeInTheDocument();
71
- });
72
- });
73
-
74
- it('renders the close button by default', async () => {
75
- render(
76
- <Drawer isOpen={true} title="Test Drawer" onClose={vi.fn()}>
77
- Content
78
- </Drawer>,
79
- );
80
-
81
- await waitFor(() => {
82
- expect(getCloseButton('Close drawer')).toBeInTheDocument();
83
- });
84
- });
85
-
86
- it('hides the close button when hideCloseButton is true', async () => {
87
- render(
88
- <Drawer isOpen={true} title="Test Drawer" hideCloseButton={true} onClose={vi.fn()}>
89
- Content
90
- </Drawer>,
91
- );
92
-
93
- await waitFor(() => {
94
- expect(screen.getByRole('dialog')).toBeInTheDocument();
95
- });
96
-
97
- expect(getCloseButton('Close drawer')).not.toBeInTheDocument();
98
- });
99
-
100
- it('calls onClose when the close button is clicked', async () => {
101
- const onClose = vi.fn();
102
- const { user } = render(
103
- <Drawer isOpen={true} title="Test Drawer" onClose={onClose}>
104
- Content
105
- </Drawer>,
106
- );
107
-
108
- await waitFor(() => {
109
- expect(getCloseButton('Close drawer')).toBeInTheDocument();
110
- });
111
-
112
- const closeButton = getCloseButton('Close drawer')!;
113
- await user.click(closeButton);
114
-
115
- expect(onClose).toHaveBeenCalledWith(false);
116
- });
117
-
118
- it('renders with from="left"', async () => {
119
- render(
120
- <Drawer isOpen={true} title="Test Drawer" from="left" onClose={vi.fn()}>
121
- Content
122
- </Drawer>,
123
- );
124
-
125
- await waitFor(() => {
126
- expect(screen.getByRole('dialog')).toBeInTheDocument();
127
- });
128
- });
129
-
130
- it('renders with from="right" (default)', async () => {
131
- render(
132
- <Drawer isOpen={true} title="Test Drawer" from="right" onClose={vi.fn()}>
133
- Content
134
- </Drawer>,
135
- );
136
-
137
- await waitFor(() => {
138
- expect(screen.getByRole('dialog')).toBeInTheDocument();
139
- });
140
- });
141
-
142
- it('renders with from="top"', async () => {
143
- render(
144
- <Drawer isOpen={true} title="Test Drawer" from="top" onClose={vi.fn()}>
145
- Content
146
- </Drawer>,
147
- );
148
-
149
- await waitFor(() => {
150
- expect(screen.getByRole('dialog')).toBeInTheDocument();
151
- });
152
- });
153
-
154
- it('renders with from="bottom"', async () => {
155
- render(
156
- <Drawer isOpen={true} title="Test Drawer" from="bottom" onClose={vi.fn()}>
157
- Content
158
- </Drawer>,
159
- );
160
-
161
- await waitFor(() => {
162
- expect(screen.getByRole('dialog')).toBeInTheDocument();
163
- });
164
- });
165
-
166
- it('renders a bottom panel via DrawerBottomPanel', async () => {
167
- render(
168
- <Drawer isOpen={true} title="Test Drawer" onClose={vi.fn()}>
169
- Content
170
- <DrawerBottomPanel>
171
- <button type="button">Save</button>
172
- </DrawerBottomPanel>
173
- </Drawer>,
174
- );
175
-
176
- await waitFor(() => {
177
- expect(screen.getAllByText('Save').length).toBeGreaterThan(0);
178
- });
179
- });
180
-
181
- it('renders additional actions', async () => {
182
- render(
183
- <Drawer
184
- isOpen={true}
185
- title="Test Drawer"
186
- onClose={vi.fn()}
187
- additionalActions={<button type="button">Action</button>}
188
- >
189
- Content
190
- </Drawer>,
191
- );
192
-
193
- await waitFor(() => {
194
- expect(screen.getByText('Action')).toBeInTheDocument();
195
- });
196
- });
197
-
198
- it('renders with blur overlay style', async () => {
199
- render(
200
- <Drawer isOpen={true} title="Test Drawer" overlayStyle="blur" onClose={vi.fn()}>
201
- Content
202
- </Drawer>,
203
- );
204
-
205
- await waitFor(() => {
206
- expect(screen.getByRole('dialog')).toBeInTheDocument();
207
- });
208
- });
209
-
210
- it('does not render when isOpen transitions from true to false', async () => {
211
- const { rerender } = render(
212
- <Drawer isOpen={true} title="Test Drawer" onClose={vi.fn()}>
213
- Content
214
- </Drawer>,
215
- );
216
-
217
- await waitFor(() => {
218
- expect(screen.getByRole('dialog')).toBeInTheDocument();
219
- });
220
-
221
- rerender(
222
- <Drawer isOpen={false} title="Test Drawer" onClose={vi.fn()}>
223
- Content
224
- </Drawer>,
225
- );
226
-
227
- await waitFor(() => {
228
- expect(screen.queryByRole('dialog')).not.toBeInTheDocument();
229
- });
230
- });
231
-
232
- it('accepts size presets', async () => {
233
- render(
234
- <Drawer isOpen={true} title="Test Drawer" size="full" onClose={vi.fn()}>
235
- Content
236
- </Drawer>,
237
- );
238
-
239
- await waitFor(() => {
240
- expect(screen.getByRole('dialog')).toBeInTheDocument();
241
- });
242
- });
243
-
244
- it('accepts custom size as CSSLength', async () => {
245
- render(
246
- <Drawer isOpen={true} title="Test Drawer" size="500px" onClose={vi.fn()}>
247
- Content
248
- </Drawer>,
249
- );
250
-
251
- await waitFor(() => {
252
- expect(screen.getByRole('dialog')).toBeInTheDocument();
253
- });
254
- });
255
-
256
- it('renders a ReactNode title', async () => {
257
- render(
258
- <Drawer isOpen={true} title={<span data-testid="custom-title">Custom Title</span>} onClose={vi.fn()}>
259
- Content
260
- </Drawer>,
261
- );
262
-
263
- await waitFor(() => {
264
- expect(screen.getByTestId('custom-title')).toBeInTheDocument();
265
- });
266
- });
267
-
268
- describe('useDrawer', () => {
269
- function DrawerConsumer() {
270
- const { close, isOpen } = useDrawer();
271
- return (
272
- <div>
273
- <span data-testid="is-open">{String(isOpen)}</span>
274
- <button type="button" onClick={close}>
275
- Close via context
276
- </button>
277
- </div>
278
- );
279
- }
280
-
281
- it('provides isOpen and close to children', async () => {
282
- render(
283
- <Drawer isOpen={true} title="Context Drawer" onClose={vi.fn()}>
284
- <DrawerConsumer />
285
- </Drawer>,
286
- );
287
-
288
- await waitFor(() => {
289
- expect(screen.getByTestId('is-open')).toHaveTextContent('true');
290
- });
291
- });
292
-
293
- it('calls onClose(false) when close is invoked from context', async () => {
294
- const onClose = vi.fn();
295
- const { user } = render(
296
- <Drawer isOpen={true} title="Context Drawer" onClose={onClose}>
297
- <DrawerConsumer />
298
- </Drawer>,
299
- );
300
-
301
- await waitFor(() => {
302
- expect(screen.getByText('Close via context')).toBeInTheDocument();
303
- });
304
-
305
- await user.click(screen.getByText('Close via context'));
306
-
307
- expect(onClose).toHaveBeenCalledWith(false);
308
- });
309
-
310
- it('throws when useDrawer is used outside of a Drawer', () => {
311
- // Suppress React error boundary console output
312
- const consoleSpy = vi.spyOn(console, 'error').mockImplementation(() => {});
313
- expect(() => render(<DrawerConsumer />)).toThrow('useDrawer must be used within a Drawer component');
314
- consoleSpy.mockRestore();
315
- });
316
- });
317
-
318
- describe('useDrawerPagination', () => {
319
- function PaginationConsumer() {
320
- const pagination = useDrawerPagination();
321
- return (
322
- <div>
323
- <span data-testid="pagination-value">{pagination ? pagination.currentPage : 'null'}</span>
324
- </div>
325
- );
326
- }
327
-
328
- it('provides pagination state to children in a paginated drawer', async () => {
329
- const Wrapper = () => {
330
- const pages = ['step1'] as const;
331
- const pagination = usePagination<typeof pages>('step1');
332
- return (
333
- <Drawer isOpen={true} title="Paginated Drawer" onClose={vi.fn()} pagination={pagination}>
334
- <DrawerPage id="step1">
335
- <PaginationConsumer />
336
- </DrawerPage>
337
- </Drawer>
338
- );
339
- };
340
-
341
- render(<Wrapper />);
342
-
343
- await waitFor(() => {
344
- expect(screen.getByTestId('pagination-value')).toHaveTextContent('step1');
345
- });
346
- });
347
-
348
- it('returns null when no pagination is provided', async () => {
349
- render(
350
- <Drawer isOpen={true} title="Non-paginated Drawer" onClose={vi.fn()}>
351
- <PaginationConsumer />
352
- </Drawer>,
353
- );
354
-
355
- await waitFor(() => {
356
- expect(screen.getByTestId('pagination-value')).toHaveTextContent('null');
357
- });
358
- });
359
- });
360
-
361
- describe('useIsPageActive', () => {
362
- it('returns true when page is active', () => {
363
- const { result } = renderHook(() => useIsPageActive(), {
364
- wrapper: ({ children }) => (
365
- <DrawerPageProvider isActive={true} pageID="page1">
366
- {children}
367
- </DrawerPageProvider>
368
- ),
369
- });
370
-
371
- expect(result.current).toBe(true);
372
- });
373
-
374
- it('returns false when page is not active', () => {
375
- const { result } = renderHook(() => useIsPageActive(), {
376
- wrapper: ({ children }) => (
377
- <DrawerPageProvider isActive={false} pageID="page1">
378
- {children}
379
- </DrawerPageProvider>
380
- ),
381
- });
382
-
383
- expect(result.current).toBe(false);
384
- });
385
-
386
- it('returns true when used outside DrawerPageProvider', () => {
387
- const { result } = renderHook(() => useIsPageActive());
388
-
389
- expect(result.current).toBe(true);
390
- });
391
- });
392
-
393
- describe('DrawerTitle', () => {
394
- it('overrides the drawer title prop', async () => {
395
- render(
396
- <Drawer isOpen={true} title="Fallback Title" onClose={vi.fn()}>
397
- <DrawerTitle>Custom Title</DrawerTitle>
398
- </Drawer>,
399
- );
400
-
401
- await waitFor(() => {
402
- expect(screen.getByText('Custom Title')).toBeInTheDocument();
403
- });
404
-
405
- // Fallback title stays in DOM (visually hidden) for aria-labelledby
406
- expect(screen.getByText('Fallback Title')).toBeInTheDocument();
407
- });
408
-
409
- it('shows fallback title when no DrawerTitle is used', async () => {
410
- render(
411
- <Drawer isOpen={true} title="Fallback Title" onClose={vi.fn()}>
412
- Content
413
- </Drawer>,
414
- );
415
-
416
- await waitFor(() => {
417
- expect(screen.getByText('Fallback Title')).toBeInTheDocument();
418
- });
419
- });
420
-
421
- it('only shows active page DrawerTitle in paginated drawer', async () => {
422
- const Wrapper = () => {
423
- const pages = ['a', 'b'] as const;
424
- const pagination = usePagination<typeof pages>('a');
425
- return (
426
- <Drawer isOpen={true} title="Fallback" onClose={vi.fn()} pagination={pagination}>
427
- <DrawerPage id="a">
428
- <DrawerTitle>Title A</DrawerTitle>
429
- Page A
430
- </DrawerPage>
431
- <DrawerPage id="b">
432
- <DrawerTitle>Title B</DrawerTitle>
433
- Page B
434
- </DrawerPage>
435
- </Drawer>
436
- );
437
- };
438
-
439
- render(<Wrapper />);
440
-
441
- await waitFor(() => {
442
- expect(screen.getByText('Title A')).toBeInTheDocument();
443
- });
444
-
445
- expect(screen.queryByText('Title B')).not.toBeInTheDocument();
446
- });
447
- });
448
-
449
- describe('DrawerActions', () => {
450
- it('renders actions via slot component', async () => {
451
- render(
452
- <Drawer isOpen={true} title="Test" onClose={vi.fn()}>
453
- <DrawerActions>
454
- <button type="button">Slot Action</button>
455
- </DrawerActions>
456
- Content
457
- </Drawer>,
458
- );
459
-
460
- await waitFor(() => {
461
- expect(screen.getByText('Slot Action')).toBeInTheDocument();
462
- });
463
- });
464
-
465
- it('falls back to additionalActions prop when no DrawerActions slot', async () => {
466
- render(
467
- <Drawer
468
- isOpen={true}
469
- title="Test"
470
- onClose={vi.fn()}
471
- additionalActions={<button type="button">Prop Action</button>}
472
- >
473
- Content
474
- </Drawer>,
475
- );
476
-
477
- await waitFor(() => {
478
- expect(screen.getByText('Prop Action')).toBeInTheDocument();
479
- });
480
- });
481
- });
482
-
483
- describe('DrawerPage', () => {
484
- it('renders children inside a paginated drawer', async () => {
485
- const Wrapper = () => {
486
- const pages = ['a', 'b'] as const;
487
- const pagination = usePagination<typeof pages>('a');
488
- return (
489
- <Drawer isOpen={true} title="Test" onClose={vi.fn()} pagination={pagination}>
490
- <DrawerPage id="a">Page A Content</DrawerPage>
491
- <DrawerPage id="b">Page B Content</DrawerPage>
492
- </Drawer>
493
- );
494
- };
495
-
496
- render(<Wrapper />);
497
-
498
- await waitFor(() => {
499
- expect(screen.getByText('Page A Content')).toBeInTheDocument();
500
- });
501
- });
502
-
503
- it('does not render lazy page until it becomes active', async () => {
504
- const LazyChild = () => <span data-testid="lazy-content">Lazy Loaded</span>;
505
-
506
- const Wrapper = () => {
507
- const pages = ['a', 'b'] as const;
508
- const pagination = usePagination<typeof pages>('a');
509
- return (
510
- <Drawer isOpen={true} title="Test" onClose={vi.fn()} pagination={pagination}>
511
- <DrawerPage id="a">
512
- <button type="button" onClick={() => pagination.open('b')}>
513
- Go to B
514
- </button>
515
- </DrawerPage>
516
- <DrawerPage id="b" lazy>
517
- <LazyChild />
518
- </DrawerPage>
519
- </Drawer>
520
- );
521
- };
522
-
523
- const { user } = render(<Wrapper />);
524
-
525
- await waitFor(() => {
526
- expect(screen.getByText('Go to B')).toBeInTheDocument();
527
- });
528
-
529
- expect(screen.queryByTestId('lazy-content')).not.toBeInTheDocument();
530
-
531
- await user.click(screen.getByText('Go to B'));
532
-
533
- await waitFor(() => {
534
- expect(screen.getByTestId('lazy-content')).toBeInTheDocument();
535
- });
536
- });
537
- });
538
-
539
- describe('onAfterClose', () => {
540
- it('calls onAfterClose after the drawer close animation completes', async () => {
541
- const onAfterClose = vi.fn();
542
- const onClose = vi.fn();
543
-
544
- const { rerender } = render(
545
- <Drawer isOpen={true} title="Test" onClose={onClose} onAfterClose={onAfterClose}>
546
- Content
547
- </Drawer>,
548
- );
549
-
550
- await waitFor(() => {
551
- expect(screen.getByRole('dialog')).toBeInTheDocument();
552
- });
553
-
554
- rerender(
555
- <Drawer isOpen={false} title="Test" onClose={onClose} onAfterClose={onAfterClose}>
556
- Content
557
- </Drawer>,
558
- );
559
-
560
- await waitFor(() => {
561
- expect(onAfterClose).toHaveBeenCalledTimes(1);
562
- });
563
- });
564
-
565
- it('does not call onAfterClose on initial render when closed', () => {
566
- const onAfterClose = vi.fn();
567
-
568
- render(
569
- <Drawer isOpen={false} title="Test" onClose={vi.fn()} onAfterClose={onAfterClose}>
570
- Content
571
- </Drawer>,
572
- );
573
-
574
- expect(onAfterClose).not.toHaveBeenCalled();
575
- });
576
- });
577
-
578
- describe('DrawerBottomPanel', () => {
579
- it('renders bottom panel content via slot component', async () => {
580
- render(
581
- <Drawer isOpen={true} title="Test" onClose={vi.fn()}>
582
- <DrawerBottomPanel>
583
- <button type="button">Slot Panel</button>
584
- </DrawerBottomPanel>
585
- Content
586
- </Drawer>,
587
- );
588
-
589
- await waitFor(() => {
590
- expect(screen.getByText('Slot Panel')).toBeInTheDocument();
591
- });
592
- });
593
-
594
- it('renders multiple append-mode bottom panels', async () => {
595
- render(
596
- <Drawer isOpen={true} title="Test" onClose={vi.fn()}>
597
- <DrawerBottomPanel mode="append">
598
- <span>First Panel</span>
599
- </DrawerBottomPanel>
600
- <DrawerBottomPanel mode="append">
601
- <span>Second Panel</span>
602
- </DrawerBottomPanel>
603
- Content
604
- </Drawer>,
605
- );
606
-
607
- await waitFor(() => {
608
- expect(screen.getByText('First Panel')).toBeInTheDocument();
609
- expect(screen.getByText('Second Panel')).toBeInTheDocument();
610
- });
611
- });
612
-
613
- it('orders multiple append slots by priority', async () => {
614
- render(
615
- <Drawer isOpen={true} title="Test" onClose={vi.fn()}>
616
- <DrawerBottomPanel mode="append" priority={20}>
617
- <span data-testid="p20">Priority 20</span>
618
- </DrawerBottomPanel>
619
- <DrawerBottomPanel mode="append" priority={10}>
620
- <span data-testid="p10">Priority 10</span>
621
- </DrawerBottomPanel>
622
- Content
623
- </Drawer>,
624
- );
625
-
626
- await waitFor(() => {
627
- const p10 = screen.getByTestId('p10');
628
- const p20 = screen.getByTestId('p20');
629
- // CSS order controls visual ordering — lower priority = visually higher
630
- const p10Order = Number((p10.parentElement as HTMLElement).style.order);
631
- const p20Order = Number((p20.parentElement as HTMLElement).style.order);
632
- expect(p10Order).toBeLessThan(p20Order);
633
- });
634
- });
635
-
636
- it('only shows active page bottom panel in paginated drawer', async () => {
637
- const Wrapper = () => {
638
- const pages = ['a', 'b'] as const;
639
- const pagination = usePagination<typeof pages>('a');
640
- return (
641
- <Drawer isOpen={true} title="Test" onClose={vi.fn()} pagination={pagination}>
642
- <DrawerPage id="a">
643
- <DrawerBottomPanel>
644
- <span>Panel A</span>
645
- </DrawerBottomPanel>
646
- Page A
647
- </DrawerPage>
648
- <DrawerPage id="b">
649
- <DrawerBottomPanel>
650
- <span>Panel B</span>
651
- </DrawerBottomPanel>
652
- Page B
653
- </DrawerPage>
654
- </Drawer>
655
- );
656
- };
657
-
658
- render(<Wrapper />);
659
-
660
- await waitFor(() => {
661
- expect(screen.getByText('Panel A')).toBeInTheDocument();
662
- });
663
-
664
- expect(screen.queryByText('Panel B')).not.toBeInTheDocument();
665
- });
666
- });
667
-
668
- describe('DrawerProgressBar', () => {
669
- it('renders progress bar with auto-calculated value from pagination', async () => {
670
- const Wrapper = () => {
671
- const pages = ['a', 'b', 'c'] as const;
672
- const pagination = usePagination<typeof pages>('b');
673
- return (
674
- <Drawer isOpen={true} title="Test" onClose={vi.fn()} pagination={pagination} progressBar>
675
- <DrawerPage id="a">Page A</DrawerPage>
676
- <DrawerPage id="b">Page B</DrawerPage>
677
- <DrawerPage id="c">Page C</DrawerPage>
678
- </Drawer>
679
- );
680
- };
681
-
682
- render(<Wrapper />);
683
-
684
- await waitFor(() => {
685
- const bar = screen.getByRole('progressbar');
686
- expect(bar).toBeInTheDocument();
687
- // Page 'b' is index 1, so (1+1)/3 * 100 ≈ 67
688
- expect(bar).toHaveAttribute('aria-valuenow', '67');
689
- });
690
- });
691
-
692
- it('renders progress bar with explicit value override', async () => {
693
- const Wrapper = () => {
694
- const pages = ['a', 'b'] as const;
695
- const pagination = usePagination<typeof pages>('a');
696
- return (
697
- <Drawer isOpen={true} title="Test" onClose={vi.fn()} pagination={pagination}>
698
- <DrawerPage id="a">Page A</DrawerPage>
699
- <DrawerPage id="b">Page B</DrawerPage>
700
- <DrawerProgressBar value={42} />
701
- </Drawer>
702
- );
703
- };
704
-
705
- render(<Wrapper />);
706
-
707
- await waitFor(() => {
708
- const bar = screen.getByRole('progressbar');
709
- expect(bar).toBeInTheDocument();
710
- expect(bar).toHaveAttribute('aria-valuenow', '42');
711
- });
712
- });
713
-
714
- it('clamps explicit value to 0–100 range', async () => {
715
- const Wrapper = () => {
716
- const pages = ['a'] as const;
717
- const pagination = usePagination<typeof pages>('a');
718
- return (
719
- <Drawer isOpen={true} title="Test" onClose={vi.fn()} pagination={pagination}>
720
- <DrawerPage id="a">Page A</DrawerPage>
721
- <DrawerProgressBar value={150} />
722
- </Drawer>
723
- );
724
- };
725
-
726
- render(<Wrapper />);
727
-
728
- await waitFor(() => {
729
- const bar = screen.getByRole('progressbar');
730
- expect(bar).toHaveAttribute('aria-valuenow', '100');
731
- });
732
- });
733
- });
734
- });