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,37 +0,0 @@
1
- 'use client';
2
-
3
- import { type ReactNode, useEffect, useState } from 'react';
4
- import { useIsPageActive } from './DrawerPageContext';
5
-
6
- export type DrawerPageProps<TPageID extends string = string> = {
7
- /** Unique identifier for this page. Must match a pagination page ID. */
8
- id: TPageID;
9
- /** Defer first mount until page becomes active. Once mounted, stays mounted. */
10
- lazy?: boolean;
11
- /** Page content. */
12
- children: ReactNode;
13
- };
14
-
15
- export const DrawerPage = <TPageID extends string = string>({ lazy = false, children }: DrawerPageProps<TPageID>) => {
16
- const isActive = useIsPageActive();
17
- const [hasBeenActive, setHasBeenActive] = useState(isActive);
18
-
19
- useEffect(() => {
20
- if (isActive && !hasBeenActive) {
21
- setHasBeenActive(true);
22
- }
23
- }, [isActive, hasBeenActive]);
24
-
25
- if (lazy && !hasBeenActive) {
26
- return null;
27
- }
28
-
29
- return <>{children}</>;
30
- };
31
-
32
- /** Type guard to check if a React element is a DrawerPage */
33
- export const isDrawerPageElement = (element: unknown): element is React.ReactElement<DrawerPageProps> =>
34
- element != null &&
35
- typeof element === 'object' &&
36
- 'type' in element &&
37
- (element as { type: unknown }).type === DrawerPage;
@@ -1,35 +0,0 @@
1
- 'use client';
2
-
3
- import { createContext, type ReactNode, useContext, useMemo } from 'react';
4
-
5
- export type DrawerPageContextValue = {
6
- isActive: boolean;
7
- pageID: string;
8
- };
9
-
10
- const DrawerPageContext = createContext<DrawerPageContextValue | null>(null);
11
-
12
- export function useDrawerPageContext(): DrawerPageContextValue | null {
13
- return useContext(DrawerPageContext);
14
- }
15
-
16
- export function useIsPageActive(): boolean {
17
- const context = useContext(DrawerPageContext);
18
- if (!context) {
19
- return true;
20
- }
21
- return context.isActive;
22
- }
23
-
24
- export function DrawerPageProvider({
25
- isActive,
26
- pageID,
27
- children,
28
- }: {
29
- isActive: boolean;
30
- pageID: string;
31
- children: ReactNode;
32
- }) {
33
- const value = useMemo(() => ({ isActive, pageID }), [isActive, pageID]);
34
- return <DrawerPageContext.Provider value={value}>{children}</DrawerPageContext.Provider>;
35
- }
@@ -1,22 +0,0 @@
1
- 'use client';
2
-
3
- import { createContext, type ReactNode, useContext } from 'react';
4
- import type { PaginationState } from '../pagination';
5
-
6
- type AnyPaginationState = PaginationState<string[] | readonly string[]>;
7
-
8
- const DrawerPaginationContext = createContext<AnyPaginationState | null>(null);
9
-
10
- export function useDrawerPagination(): AnyPaginationState | null {
11
- return useContext(DrawerPaginationContext);
12
- }
13
-
14
- export function DrawerPaginationProvider({
15
- pagination,
16
- children,
17
- }: {
18
- pagination: AnyPaginationState | null;
19
- children: ReactNode;
20
- }) {
21
- return <DrawerPaginationContext.Provider value={pagination}>{children}</DrawerPaginationContext.Provider>;
22
- }
@@ -1,72 +0,0 @@
1
- 'use client';
2
-
3
- import { useLayoutEffect } from 'react';
4
- import { createPortal } from 'react-dom';
5
- import styles from './Drawer.module.scss';
6
- import { useDrawerPagination } from './DrawerPaginationContext';
7
- import { useDrawerSlotContext } from './DrawerSlotContext';
8
-
9
- export type DrawerProgressBarStyleProps = {
10
- /** Fill color. @default 'var(--pte-new-colors-contentPrimary)' */
11
- fill?: string;
12
- /** Track (unfilled) color. @default 'var(--pte-new-colors-borderMedium)' */
13
- track?: string;
14
- /** Bar height as a CSS value. @default '2px' */
15
- height?: string | number;
16
- };
17
-
18
- export type DrawerProgressBarProps = DrawerProgressBarStyleProps & {
19
- /** Page IDs in order. Determines fill percentage based on the current page. */
20
- steps?: readonly string[];
21
- /** Fill percentage (0–100). When provided, takes precedence over the auto-calculated value from `steps`. */
22
- value?: number;
23
- };
24
-
25
- export const DrawerProgressBar = ({ steps, value, fill, track, height }: DrawerProgressBarProps) => {
26
- const pagination = useDrawerPagination();
27
- const slotContext = useDrawerSlotContext();
28
-
29
- const registerProgressBar = slotContext?.registerProgressBar;
30
- useLayoutEffect(() => {
31
- if (!registerProgressBar) return;
32
- return registerProgressBar();
33
- }, [registerProgressBar]);
34
-
35
- let progress: number;
36
- if (value != null) {
37
- progress = Math.max(0, Math.min(100, value));
38
- } else if (steps && steps.length > 0 && pagination) {
39
- const activeIndex = steps.indexOf(pagination.currentPage);
40
- progress = ((activeIndex + 1) / steps.length) * 100;
41
- } else {
42
- progress = 0;
43
- }
44
-
45
- if (!slotContext?.progressBarRef.current) {
46
- return null;
47
- }
48
-
49
- return createPortal(
50
- <div
51
- className={styles.progressBar}
52
- role="progressbar"
53
- aria-valuemin={0}
54
- aria-valuenow={Math.round(progress)}
55
- aria-valuemax={100}
56
- aria-label="Page progress"
57
- style={{
58
- ...(track && { background: track }),
59
- ...(height != null && { height: typeof height === 'number' ? `${height}px` : height }),
60
- }}
61
- >
62
- <div
63
- className={styles.progressBarFill}
64
- style={{
65
- width: `${progress}%`,
66
- ...(fill && { background: fill }),
67
- }}
68
- />
69
- </div>,
70
- slotContext.progressBarRef.current,
71
- );
72
- };
@@ -1,172 +0,0 @@
1
- 'use client';
2
-
3
- import {
4
- createContext,
5
- type ReactNode,
6
- type RefObject,
7
- useCallback,
8
- useContext,
9
- useMemo,
10
- useRef,
11
- useState,
12
- } from 'react';
13
-
14
- export type BottomPanelEntry = {
15
- id: string;
16
- mode: 'replace' | 'append';
17
- priority: number;
18
- };
19
-
20
- export type DrawerSlotContextValue = {
21
- titleRef: RefObject<HTMLDivElement | null>;
22
- actionsRef: RefObject<HTMLDivElement | null>;
23
- bottomPanelRef: RefObject<HTMLDivElement | null>;
24
- /** Callback ref for the bottom panel portal target — triggers re-render when assigned */
25
- bottomPanelCallbackRef: (node: HTMLDivElement | null) => void;
26
- /** Whether the bottom panel portal target is mounted in the DOM */
27
- isBottomPanelMounted: boolean;
28
-
29
- /** Portal target for the progress bar, rendered at the very top of the bottom panel */
30
- progressBarRef: RefObject<HTMLDivElement | null>;
31
-
32
- hasTitleSlot: boolean;
33
- hasActionsSlot: boolean;
34
- hasProgressBar: boolean;
35
-
36
- /** Whether a replace-mode bottom panel is registered */
37
- hasBottomPanelReplace: boolean;
38
- /** Whether any bottom panel slot (replace or append) is registered */
39
- hasAnyBottomPanelSlot: boolean;
40
- /** Sorted list of append-mode bottom panel entries */
41
- bottomPanelAppendEntries: BottomPanelEntry[];
42
-
43
- registerTitleSlot: () => () => void;
44
- registerActionsSlot: () => () => void;
45
- registerProgressBar: () => () => void;
46
- registerBottomPanel: (entry: BottomPanelEntry) => () => void;
47
- };
48
-
49
- const DrawerSlotContext = createContext<DrawerSlotContextValue | null>(null);
50
-
51
- export function useDrawerSlotContext(): DrawerSlotContextValue | null {
52
- return useContext(DrawerSlotContext);
53
- }
54
-
55
- export function DrawerSlotProvider({ children }: { children: ReactNode }) {
56
- const titleRef = useRef<HTMLDivElement | null>(null);
57
- const actionsRef = useRef<HTMLDivElement | null>(null);
58
- const progressBarRef = useRef<HTMLDivElement | null>(null);
59
- const bottomPanelRef = useRef<HTMLDivElement | null>(null);
60
- const [isBottomPanelMounted, setIsBottomPanelMounted] = useState(false);
61
-
62
- const bottomPanelCallbackRef = useCallback((node: HTMLDivElement | null) => {
63
- bottomPanelRef.current = node;
64
- setIsBottomPanelMounted(node !== null);
65
- }, []);
66
-
67
- const [titleSlotCount, setTitleSlotCount] = useState(0);
68
- const [actionsSlotCount, setActionsSlotCount] = useState(0);
69
- const [progressBarCount, setProgressBarCount] = useState(0);
70
- const [bottomPanelEntries, setBottomPanelEntries] = useState<BottomPanelEntry[]>([]);
71
-
72
- const registerTitleSlot = useCallback((): (() => void) => {
73
- setTitleSlotCount((prev) => {
74
- const next = prev + 1;
75
- if (process.env.NODE_ENV === 'development' && next > 1) {
76
- console.warn(
77
- 'DrawerSlotContext: Multiple title slots registered simultaneously. Only one is expected.',
78
- );
79
- }
80
- return next;
81
- });
82
- return () => {
83
- setTitleSlotCount((prev) => Math.max(0, prev - 1));
84
- };
85
- }, []);
86
-
87
- const registerActionsSlot = useCallback((): (() => void) => {
88
- setActionsSlotCount((prev) => {
89
- const next = prev + 1;
90
- if (process.env.NODE_ENV === 'development' && next > 1) {
91
- console.warn(
92
- 'DrawerSlotContext: Multiple actions slots registered simultaneously. Only one is expected.',
93
- );
94
- }
95
- return next;
96
- });
97
- return () => {
98
- setActionsSlotCount((prev) => Math.max(0, prev - 1));
99
- };
100
- }, []);
101
-
102
- const registerProgressBar = useCallback((): (() => void) => {
103
- setProgressBarCount((prev) => prev + 1);
104
- return () => {
105
- setProgressBarCount((prev) => Math.max(0, prev - 1));
106
- };
107
- }, []);
108
-
109
- const registerBottomPanel = useCallback((entry: BottomPanelEntry): (() => void) => {
110
- setBottomPanelEntries((prev) => {
111
- if (process.env.NODE_ENV === 'development' && entry.mode === 'replace') {
112
- const existingReplace = prev.find((e) => e.mode === 'replace');
113
- if (existingReplace) {
114
- console.warn(
115
- `DrawerSlotContext: Multiple replace-mode bottom panels registered (existing: "${existingReplace.id}", new: "${entry.id}"). Only one replace-mode panel is expected.`,
116
- );
117
- }
118
- }
119
- return [...prev, entry];
120
- });
121
- return () => {
122
- setBottomPanelEntries((prev) => prev.filter((e) => e.id !== entry.id));
123
- };
124
- }, []);
125
-
126
- const hasTitleSlot = titleSlotCount > 0;
127
- const hasActionsSlot = actionsSlotCount > 0;
128
- const hasProgressBar = progressBarCount > 0;
129
- const hasBottomPanelReplace = bottomPanelEntries.some((e) => e.mode === 'replace');
130
- const hasAnyBottomPanelSlot = bottomPanelEntries.length > 0;
131
- const bottomPanelAppendEntries = useMemo(
132
- () => bottomPanelEntries.filter((e) => e.mode === 'append').sort((a, b) => a.priority - b.priority),
133
- [bottomPanelEntries],
134
- );
135
-
136
- const value = useMemo<DrawerSlotContextValue>(
137
- () => ({
138
- titleRef,
139
- actionsRef,
140
- progressBarRef,
141
- bottomPanelRef,
142
- bottomPanelCallbackRef,
143
- isBottomPanelMounted,
144
- hasTitleSlot,
145
- hasActionsSlot,
146
- hasProgressBar,
147
- hasBottomPanelReplace,
148
- hasAnyBottomPanelSlot,
149
- bottomPanelAppendEntries,
150
- registerTitleSlot,
151
- registerActionsSlot,
152
- registerProgressBar,
153
- registerBottomPanel,
154
- }),
155
- [
156
- bottomPanelCallbackRef,
157
- isBottomPanelMounted,
158
- hasTitleSlot,
159
- hasActionsSlot,
160
- hasProgressBar,
161
- hasBottomPanelReplace,
162
- hasAnyBottomPanelSlot,
163
- bottomPanelAppendEntries,
164
- registerTitleSlot,
165
- registerActionsSlot,
166
- registerProgressBar,
167
- registerBottomPanel,
168
- ],
169
- );
170
-
171
- return <DrawerSlotContext.Provider value={value}>{children}</DrawerSlotContext.Provider>;
172
- }
@@ -1,35 +0,0 @@
1
- 'use client';
2
-
3
- import { type ReactNode, useId, useLayoutEffect } from 'react';
4
- import { createPortal } from 'react-dom';
5
- import { TextWhenString } from '../utility/TextWhenString';
6
- import { useIsPageActive } from './DrawerPageContext';
7
- import { useDrawerSlotContext } from './DrawerSlotContext';
8
-
9
- export type DrawerTitleProps = {
10
- children: ReactNode;
11
- };
12
-
13
- export const DrawerTitle = ({ children }: DrawerTitleProps) => {
14
- const isActive = useIsPageActive();
15
- const slotContext = useDrawerSlotContext();
16
- const id = useId();
17
-
18
- useLayoutEffect(() => {
19
- if (!isActive || !slotContext) return;
20
- const unregister = slotContext.registerTitleSlot();
21
- return unregister;
22
- }, [isActive, slotContext]);
23
-
24
- if (!isActive || !slotContext?.titleRef.current) {
25
- return null;
26
- }
27
-
28
- return createPortal(
29
- <TextWhenString kind="paragraphSmall" weight="medium">
30
- {children}
31
- </TextWhenString>,
32
- slotContext.titleRef.current,
33
- id,
34
- );
35
- };
@@ -1,36 +0,0 @@
1
- import type { Meta, StoryObj } from '@storybook/nextjs-vite';
2
- import { createElement } from 'react';
3
- import { Field } from './Field';
4
-
5
- const meta: Meta<typeof Field> = {
6
- title: 'Inputs/Field',
7
- component: Field,
8
- tags: ['autodocs'],
9
- };
10
-
11
- export default meta;
12
- type Story = StoryObj<typeof Field>;
13
-
14
- export const Default: Story = {
15
- args: {
16
- label: 'Label',
17
- description: 'Description.',
18
- children: createElement(
19
- 'div',
20
- {
21
- style: {
22
- backgroundColor: 'var(--pte-new-colors-inputFill)',
23
- height: '36px',
24
- width: '100%',
25
- display: 'flex',
26
- flexDirection: 'row',
27
- alignItems: 'center',
28
- justifyContent: 'flex-start',
29
- paddingLeft: '12px',
30
- border: '1px solid pink',
31
- },
32
- },
33
- 'Children are inserted here.',
34
- ),
35
- },
36
- };
@@ -1,146 +0,0 @@
1
- import { render, screen } from '../../test/render';
2
- import { Field } from './Field';
3
-
4
- describe('Field', () => {
5
- it('renders children', () => {
6
- render(
7
- <Field label="Name">
8
- <input data-testid="child" />
9
- </Field>,
10
- );
11
- expect(screen.getByTestId('child')).toBeInTheDocument();
12
- });
13
-
14
- it('renders a string label as a <label> element', () => {
15
- render(
16
- <Field label="Email" htmlFor="email-input">
17
- <input id="email-input" />
18
- </Field>,
19
- );
20
- const label = screen.getByText('Email');
21
- expect(label.tagName).toBe('LABEL');
22
- expect(label).toHaveAttribute('for', 'email-input');
23
- });
24
-
25
- it('renders a ReactNode label wrapped in a plain <label>', () => {
26
- render(
27
- <Field label={<span data-testid="custom-label">Custom</span>} htmlFor="input-id">
28
- <input id="input-id" />
29
- </Field>,
30
- );
31
- const customLabel = screen.getByTestId('custom-label');
32
- expect(customLabel).toBeInTheDocument();
33
- // The wrapping <label> should have the htmlFor
34
- expect(customLabel.closest('label')).toHaveAttribute('for', 'input-id');
35
- });
36
-
37
- it('hides the label visually when hideLabel is true', () => {
38
- render(
39
- <Field label="Hidden Label" hideLabel>
40
- <input />
41
- </Field>,
42
- );
43
- const label = screen.getByText('Hidden Label');
44
- expect(label).toHaveClass('hidden');
45
- });
46
-
47
- it('renders a string description', () => {
48
- render(
49
- <Field label="Name" description="Enter your full name" htmlFor="name">
50
- <input id="name" />
51
- </Field>,
52
- );
53
- expect(screen.getByText('Enter your full name')).toBeInTheDocument();
54
- });
55
-
56
- it('hides the description when hideDescription is true', () => {
57
- render(
58
- <Field label="Name" description="Helper text" hideDescription htmlFor="name">
59
- <input id="name" />
60
- </Field>,
61
- );
62
- const desc = screen.getByText('Helper text');
63
- expect(desc).toHaveClass('hidden');
64
- });
65
-
66
- it('hides the description element when no description is provided', () => {
67
- render(
68
- <Field label="Name" htmlFor="test-id">
69
- <input id="test-id" />
70
- </Field>,
71
- );
72
- const descEl = document.getElementById('test-id-description');
73
- expect(descEl).toBeInTheDocument();
74
- expect(descEl).toHaveClass('hidden');
75
- });
76
-
77
- it('renders description at the bottom by default', () => {
78
- const { container } = render(
79
- <Field label="Name" description="Below input" htmlFor="name">
80
- <input id="name" />
81
- </Field>,
82
- );
83
- const rootDiv = container.firstElementChild!;
84
- const children = Array.from(rootDiv.children);
85
- // Order: label, children (input), description
86
- const labelIdx = children.findIndex((el) => el.textContent === 'Name');
87
- const descIdx = children.findIndex((el) => el.textContent === 'Below input');
88
- expect(descIdx).toBeGreaterThan(labelIdx);
89
- });
90
-
91
- it('renders description above children when descriptionPosition is top', () => {
92
- const { container } = render(
93
- <Field label="Name" description="Above input" descriptionPosition="top" htmlFor="name">
94
- <input id="name" data-testid="input" />
95
- </Field>,
96
- );
97
- const rootDiv = container.firstElementChild!;
98
- const children = Array.from(rootDiv.children);
99
- // When top: label and description are in a labelContainer div, then children
100
- const labelContainer = children[0];
101
- expect(labelContainer).toHaveClass('labelContainer');
102
- expect(labelContainer.textContent).toContain('Name');
103
- expect(labelContainer.textContent).toContain('Above input');
104
- });
105
-
106
- it('focuses the input when the container is clicked', async () => {
107
- const { user } = render(
108
- <Field label="Click me" htmlFor="focusable">
109
- <input id="focusable" data-testid="focusable" />
110
- </Field>,
111
- );
112
- const label = screen.getByText('Click me');
113
- await user.click(label);
114
- expect(screen.getByTestId('focusable')).toHaveFocus();
115
- });
116
-
117
- it('does not focus the input when disabled', async () => {
118
- const { user, container } = render(
119
- <Field label="Disabled" htmlFor="disabled-input" disabled>
120
- <input id="disabled-input" data-testid="disabled-input" />
121
- </Field>,
122
- );
123
- await user.click(container.firstElementChild!);
124
- expect(screen.getByTestId('disabled-input')).not.toHaveFocus();
125
- });
126
-
127
- it('applies overrides.container props', () => {
128
- render(
129
- <Field label="Test" overrides={{ container: { 'data-testid': 'custom-container' } }}>
130
- <input />
131
- </Field>,
132
- );
133
- expect(screen.getByTestId('custom-container')).toBeInTheDocument();
134
- });
135
-
136
- it('renders ReactNode description in a div', () => {
137
- render(
138
- <Field label="Name" description={<em data-testid="em-desc">Emphasized</em>} htmlFor="name">
139
- <input id="name" />
140
- </Field>,
141
- );
142
- const emDesc = screen.getByTestId('em-desc');
143
- expect(emDesc).toBeInTheDocument();
144
- expect(emDesc.closest('div')).toHaveAttribute('id', 'name-description');
145
- });
146
- });