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,266 +0,0 @@
1
- import { fireEvent } from '@testing-library/react';
2
- import { render, screen } from '../../test/render';
3
- import { Button } from './Button';
4
-
5
- describe('Button', () => {
6
- it('renders with default props', () => {
7
- render(<Button>Click me</Button>);
8
- expect(screen.getByRole('button', { name: /click me/i })).toBeInTheDocument();
9
- });
10
-
11
- it('renders default text when no children provided', () => {
12
- render(<Button />);
13
- expect(screen.getByRole('button')).toHaveTextContent('Button');
14
- });
15
-
16
- describe('kind variants', () => {
17
- it.each(['primary', 'secondary', 'tertiary'] as const)('renders %s kind', (kind) => {
18
- render(<Button kind={kind}>Label</Button>);
19
- const button = screen.getByRole('button');
20
- expect(button).toHaveClass(kind);
21
- });
22
-
23
- it('defaults to primary kind', () => {
24
- render(<Button>Label</Button>);
25
- expect(screen.getByRole('button')).toHaveClass('primary');
26
- });
27
- });
28
-
29
- describe('size variants', () => {
30
- it.each(['large', 'medium', 'small', 'xs'] as const)('renders %s size', (size) => {
31
- render(<Button size={size}>Label</Button>);
32
- expect(screen.getByRole('button')).toHaveClass(size);
33
- });
34
-
35
- it('defaults to large size', () => {
36
- render(<Button>Label</Button>);
37
- expect(screen.getByRole('button')).toHaveClass('large');
38
- });
39
- });
40
-
41
- describe('shape variants', () => {
42
- it.each(['pill', 'circle', 'rectangle', 'square'] as const)('renders %s shape', (shape) => {
43
- render(<Button shape={shape}>Label</Button>);
44
- expect(screen.getByRole('button')).toHaveClass(shape);
45
- });
46
-
47
- it('defaults to pill shape', () => {
48
- render(<Button>Label</Button>);
49
- expect(screen.getByRole('button')).toHaveClass('pill');
50
- });
51
-
52
- it('hides text content for circle shape but keeps it for accessibility', () => {
53
- render(<Button shape="circle">Action</Button>);
54
- const button = screen.getByRole('button');
55
- expect(button).toBeInTheDocument();
56
- expect(button).toHaveAttribute('aria-details', 'Action');
57
- });
58
-
59
- it('hides text content for square shape but keeps it for accessibility', () => {
60
- render(<Button shape="square">Action</Button>);
61
- const button = screen.getByRole('button');
62
- expect(button).toBeInTheDocument();
63
- expect(button).toHaveAttribute('aria-details', 'Action');
64
- });
65
- });
66
-
67
- describe('disabled state', () => {
68
- it('sets aria-disabled when disabled', () => {
69
- render(<Button disabled>Label</Button>);
70
- expect(screen.getByRole('button')).toHaveAttribute('aria-disabled', 'true');
71
- });
72
-
73
- it('does not fire onClick when disabled', () => {
74
- const onClick = vi.fn();
75
- render(
76
- <Button disabled onClick={onClick}>
77
- Label
78
- </Button>,
79
- );
80
- fireEvent.click(screen.getByRole('button'));
81
- expect(onClick).not.toHaveBeenCalled();
82
- });
83
-
84
- it('sets aria-disabled to false when not disabled', () => {
85
- render(<Button>Label</Button>);
86
- expect(screen.getByRole('button')).toHaveAttribute('aria-disabled', 'false');
87
- });
88
- });
89
-
90
- describe('loading state', () => {
91
- it('does not fire onClick when loading', async () => {
92
- const onClick = vi.fn();
93
- const { user } = render(
94
- <Button loading onClick={onClick}>
95
- Label
96
- </Button>,
97
- );
98
- await user.click(screen.getByRole('button'));
99
- expect(onClick).not.toHaveBeenCalled();
100
- });
101
-
102
- it('hides children text when loading', () => {
103
- render(<Button loading>Label</Button>);
104
- expect(screen.getByRole('button')).not.toHaveTextContent('Label');
105
- });
106
-
107
- it('hides enhancers when loading', () => {
108
- render(
109
- <Button loading startEnhancer={<span data-testid="start">S</span>}>
110
- Label
111
- </Button>,
112
- );
113
- expect(screen.queryByTestId('start')).not.toBeInTheDocument();
114
- });
115
- });
116
-
117
- describe('onClick', () => {
118
- it('fires onClick when clicked', async () => {
119
- const onClick = vi.fn();
120
- const { user } = render(<Button onClick={onClick}>Label</Button>);
121
- await user.click(screen.getByRole('button'));
122
- expect(onClick).toHaveBeenCalledTimes(1);
123
- });
124
- });
125
-
126
- describe('href rendering', () => {
127
- it('renders as an anchor when href is provided', () => {
128
- render(<Button href="https://example.com">Link</Button>);
129
- const anchor = screen.getByRole('link', { name: /link/i });
130
- expect(anchor).toBeInTheDocument();
131
- expect(anchor).toHaveAttribute('href', 'https://example.com');
132
- });
133
-
134
- it('defaults target to _self', () => {
135
- render(<Button href="https://example.com">Link</Button>);
136
- expect(screen.getByRole('link')).toHaveAttribute('target', '_self');
137
- });
138
-
139
- it('applies hreftarget when provided', () => {
140
- render(
141
- <Button href="https://example.com" hreftarget="_blank">
142
- Link
143
- </Button>,
144
- );
145
- const anchor = screen.getByRole('link');
146
- expect(anchor).toHaveAttribute('target', '_blank');
147
- expect(anchor).toHaveAttribute('rel', 'noreferrer');
148
- });
149
-
150
- it('does not fire onClick when href is set', async () => {
151
- const onClick = vi.fn();
152
- const { user } = render(
153
- <Button href="https://example.com" onClick={onClick}>
154
- Link
155
- </Button>,
156
- );
157
- await user.click(screen.getByRole('link'));
158
- expect(onClick).not.toHaveBeenCalled();
159
- });
160
- });
161
-
162
- describe('enhancers', () => {
163
- it('renders startEnhancer as ReactNode', () => {
164
- render(<Button startEnhancer={<span data-testid="start-icon">icon</span>}>Label</Button>);
165
- expect(screen.getByTestId('start-icon')).toBeInTheDocument();
166
- });
167
-
168
- it('renders endEnhancer as ReactNode', () => {
169
- render(<Button endEnhancer={<span data-testid="end-icon">icon</span>}>Label</Button>);
170
- expect(screen.getByTestId('end-icon')).toBeInTheDocument();
171
- });
172
-
173
- it('renders startEnhancer as function', () => {
174
- render(<Button startEnhancer={({ size }) => <span data-testid="fn-icon">{size}</span>}>Label</Button>);
175
- expect(screen.getByTestId('fn-icon')).toBeInTheDocument();
176
- expect(screen.getByTestId('fn-icon')).toHaveTextContent('13');
177
- });
178
-
179
- it('passes correct size to enhancer based on button size', () => {
180
- render(
181
- <Button size="xs" startEnhancer={({ size }) => <span data-testid="fn-icon">{size}</span>}>
182
- Label
183
- </Button>,
184
- );
185
- expect(screen.getByTestId('fn-icon')).toHaveTextContent('9');
186
- });
187
- });
188
-
189
- describe('notification dot', () => {
190
- it('renders notification dot when displayNotificationDot is true', () => {
191
- const { container } = render(<Button displayNotificationDot>Label</Button>);
192
- const dotWrapper = container.querySelector('.absolute');
193
- expect(dotWrapper).toBeInTheDocument();
194
- });
195
-
196
- it('does not render notification dot by default', () => {
197
- const { container } = render(<Button>Label</Button>);
198
- const dotWrapper = container.querySelector('.absolute');
199
- expect(dotWrapper).not.toBeInTheDocument();
200
- });
201
- });
202
-
203
- describe('custom colors and theme', () => {
204
- it('applies custom colors as CSS variables', () => {
205
- render(<Button colors={{ primary: '#ff0000', secondary: '#00ff00' }}>Label</Button>);
206
- const button = screen.getByRole('button');
207
- expect(button.style.getPropertyValue('--pte-new-colors-buttonFill')).toBe('#ff0000');
208
- expect(button.style.getPropertyValue('--pte-new-colors-buttonFillHover')).toBe('#00ff00');
209
- });
210
-
211
- it('applies theme preset', () => {
212
- render(<Button theme="negative">Label</Button>);
213
- const button = screen.getByRole('button');
214
- expect(button).toHaveAttribute('style');
215
- });
216
- });
217
-
218
- describe('className forwarding', () => {
219
- it('forwards custom className', () => {
220
- render(<Button className="custom-class">Label</Button>);
221
- expect(screen.getByRole('button')).toHaveClass('custom-class');
222
- });
223
-
224
- it('preserves internal classes when custom className is added', () => {
225
- render(<Button className="custom-class">Label</Button>);
226
- const button = screen.getByRole('button');
227
- expect(button).toHaveClass('button');
228
- expect(button).toHaveClass('primary');
229
- expect(button).toHaveClass('pill');
230
- expect(button).toHaveClass('large');
231
- expect(button).toHaveClass('custom-class');
232
- });
233
- });
234
-
235
- describe('corners', () => {
236
- it('applies corner preset class', () => {
237
- render(
238
- <Button shape="rectangle" corners="sharp">
239
- Label
240
- </Button>,
241
- );
242
- expect(screen.getByRole('button')).toHaveClass('sharp');
243
- });
244
-
245
- it('applies custom corner radius as inline style', () => {
246
- render(
247
- <Button shape="rectangle" corners="8px">
248
- Label
249
- </Button>,
250
- );
251
- expect(screen.getByRole('button').style.borderRadius).toBe('8px');
252
- });
253
- });
254
-
255
- describe('type attribute', () => {
256
- it('defaults to button type', () => {
257
- render(<Button>Label</Button>);
258
- expect(screen.getByRole('button')).toHaveAttribute('type', 'button');
259
- });
260
-
261
- it('allows submit type', () => {
262
- render(<Button type="submit">Label</Button>);
263
- expect(screen.getByRole('button')).toHaveAttribute('type', 'submit');
264
- });
265
- });
266
- });
@@ -1,226 +0,0 @@
1
- 'use client';
2
-
3
- import type { ButtonProps as AriaButtonProps } from '@ariakit/react';
4
- import { Button as AriaButton } from '@ariakit/react';
5
- import type { CSSLength } from '@ssh/csstypes';
6
- import { clsx } from 'clsx';
7
- import fontColorContrast from 'font-color-contrast';
8
- import type { CSSProperties, FC, HTMLAttributeAnchorTarget, MouseEventHandler, ReactNode } from 'react';
9
- import { useMemo } from 'react';
10
- import { MemoizedEnhancer } from '../../helpers/renderEnhancer';
11
- import type { Enhancer } from '../../types/Enhancer';
12
- import { NotificationDot, Spinner } from '../icon';
13
- import { Text } from '../text';
14
- import { pvar } from '../theme';
15
- import styles from './Button.module.scss';
16
-
17
- const EnhancerSizes = {
18
- large: 13,
19
- medium: 12,
20
- small: 11,
21
- xs: 9,
22
- };
23
-
24
- export const CornerPresets = ['sharp', 'rounded', 'roundedXL'] as const;
25
-
26
- export const ButtonThemes = {
27
- negative: {
28
- primary: pvar('new.colors.buttonBorderNegative'),
29
- secondary: pvar('new.colors.buttonFillHoverNegative'),
30
- primaryAlt: pvar('new.colors.contentNegative'),
31
- secondaryAlt: pvar('new.colors.backgroundNegativeStrong'),
32
- },
33
- positive: {
34
- primary: pvar('new.colors.contentPositive'),
35
- secondary: pvar('new.colors.backgroundPositive'),
36
- primaryAlt: pvar('new.colors.contentPositive'),
37
- secondaryAlt: pvar('new.colors.backgroundPositiveStrong'),
38
- },
39
- warning: {
40
- primary: pvar('new.colors.contentWarning'),
41
- secondary: pvar('new.colors.backgroundWarning'),
42
- primaryAlt: pvar('new.colors.contentWarning'),
43
- secondaryAlt: pvar('new.colors.backgroundWarningStrong'),
44
- },
45
- } as const;
46
-
47
- export type ButtonProps = {
48
- /**
49
- * The appearance of the Button.
50
- * @default primary
51
- */
52
- kind?: 'primary' | 'secondary' | 'tertiary';
53
- /**
54
- * The size of the Button.
55
- * @default large
56
- */
57
- size?: 'large' | 'medium' | 'small' | 'xs';
58
- /**
59
- * The shape of the Button.
60
- * @default pill
61
- */
62
- shape?: 'pill' | 'circle' | 'rectangle' | 'square';
63
- /**
64
- * The radius of the corners for the `rectangle` and `square` Button shapes. Either a preset or a valid {@link CSSLength} string.
65
- * `sharp` will have no rounding, `rounded` will have a slight rounding, and `roundedXL` will have a large rounding.
66
- * @see CornerPresets
67
- * @default rounded
68
- */
69
- corners?: (typeof CornerPresets)[number] | CSSLength;
70
- /**
71
- * A color to apply for the Button. Provide an object with `primary` and `secondary` properties to set the primary and hover colors.
72
- */
73
- colors?: {
74
- /** The primary color of the Button. Primary buttons will use this as the background color, and secondary/tertiary buttons will use it for the text and border. */
75
- primary: string;
76
- /**
77
- * The secondary color of the Button, used for hover/active states.
78
- */
79
- secondary: string;
80
- };
81
- /**
82
- * Preset themes for coloring the button. Overrides the `colors` prop.
83
- */
84
- theme?: keyof typeof ButtonThemes;
85
- /**
86
- * An icon or other element to render before the Button's text. A `size` argument is passed that should be used to determine the width & height of the content displayed.
87
- *
88
- * When Button shape is `circle` or `square`, this element will be the only visible content.
89
- */
90
- startEnhancer?: Enhancer;
91
- /**
92
- * An icon or other element to render after the Button's text. A `size` argument is passed that should be used to determine the width & height of the content displayed.
93
- */
94
- endEnhancer?: Enhancer;
95
- /**
96
- * Disables the Button, disallowing user interaction.
97
- * @default false
98
- */
99
- disabled?: boolean;
100
- /**
101
- * Displays a loading indicator inside the Button and disables user interaction.
102
- * @default false
103
- */
104
- loading?: boolean;
105
- /**
106
- * The interaction handler for the Button.
107
- */
108
- onClick?: MouseEventHandler<HTMLButtonElement>;
109
- /**
110
- * Optionally, the Button can be rendered as an anchor element by passing an `href` prop. To use a Next.js Link component, use the `render` prop directly.
111
- */
112
- href?: string;
113
- /**
114
- * Optionally, the target of the anchor element can be specified (defaults to `_self`).
115
- */
116
- hreftarget?: HTMLAttributeAnchorTarget;
117
- /**
118
- * The contents of the Button.
119
- *
120
- * This should be text. When Button shape is `circle` or `square`, the action description should still be passed here for screen readers.
121
- */
122
- children?: ReactNode | ReactNode[];
123
- /**
124
- * Displays a notification dot.
125
- */
126
- displayNotificationDot?: boolean;
127
- } & Omit<AriaButtonProps, 'children' | 'disabled' | 'onClick'>;
128
-
129
- /**
130
- * A `Button` is used to trigger an action or event, such as submitting a form, opening a dialog, canceling an action, or performing a delete operation.
131
- *
132
- * <hr />
133
- *
134
- * To use the `Button` component, import it as follows:
135
- *
136
- * ```js
137
- * import { Button } from 'paris/button';
138
- * ```
139
- *
140
- * @constructor
141
- */
142
- export const Button: FC<ButtonProps> = ({
143
- kind = 'primary',
144
- size = 'large',
145
- shape = 'pill',
146
- corners = 'rounded',
147
- colors,
148
- theme,
149
- type = 'button',
150
- startEnhancer,
151
- endEnhancer,
152
- onClick,
153
- children,
154
- disabled,
155
- loading,
156
- href,
157
- displayNotificationDot = false,
158
- style,
159
- ...props
160
- }) => {
161
- const cornersIsPreset = useMemo(() => (CornerPresets as readonly string[]).includes(corners), [corners]);
162
- return (
163
- <AriaButton
164
- {...props}
165
- style={
166
- theme || colors
167
- ? ({
168
- '--pte-new-colors-contentInversePrimary': fontColorContrast(
169
- theme
170
- ? ButtonThemes[theme].primary
171
- : colors?.primary || pvar('new.colors.contentPrimary'),
172
- ), // text for primary
173
- '--pte-new-colors-buttonFill': theme ? ButtonThemes[theme].primaryAlt : colors?.primary, // background for primary
174
- '--pte-new-colors-buttonFillHover': theme
175
- ? ButtonThemes[theme].secondaryAlt
176
- : colors?.secondary, // hover background for primary
177
- '--pte-new-colors-contentPrimary': theme ? ButtonThemes[theme].primary : colors?.primary, // text for secondary/tertiary
178
- '--pte-new-colors-buttonBorder': theme ? ButtonThemes[theme].primary : colors?.primary, // border for secondary/tertiary
179
- '--pte-new-colors-overlayMedium': theme ? ButtonThemes[theme].secondary : colors?.secondary, // hover background for secondary/tertiary
180
- borderRadius: !cornersIsPreset ? corners : '',
181
- ...style,
182
- } as CSSProperties)
183
- : { borderRadius: !cornersIsPreset ? corners : '', ...style }
184
- }
185
- className={clsx(
186
- styles.button,
187
- styles[kind],
188
- styles[shape],
189
- styles[size],
190
- cornersIsPreset && styles[corners],
191
- props?.className,
192
- )}
193
- aria-disabled={disabled ?? false}
194
- type={type}
195
- aria-details={typeof children === 'string' ? children : undefined}
196
- onClick={!disabled && !href && !loading ? onClick : () => {}}
197
- disabled={false}
198
- {...(href
199
- ? {
200
- render: (properties) => (
201
- // eslint-disable-next-line jsx-a11y/anchor-has-content
202
- <a
203
- {...properties}
204
- href={href}
205
- target={props.hreftarget ?? '_self'}
206
- rel={props.hreftarget === '_self' ? undefined : 'noreferrer'}
207
- />
208
- ),
209
- }
210
- : {})}
211
- >
212
- {!!(startEnhancer && !loading) && <MemoizedEnhancer enhancer={startEnhancer} size={EnhancerSizes[size]} />}
213
- {!['circle', 'square'].includes(shape) && (
214
- <Text kind="labelXSmall">
215
- {!loading ? children || 'Button' : <Spinner size={EnhancerSizes[size]} />}
216
- </Text>
217
- )}
218
- {!!(endEnhancer && !loading) && <MemoizedEnhancer enhancer={endEnhancer} size={EnhancerSizes[size]} />}
219
- {!!displayNotificationDot && (
220
- <div className="absolute top-0 right-0">
221
- <NotificationDot size={8} />
222
- </div>
223
- )}
224
- </AriaButton>
225
- );
226
- };
@@ -1,43 +0,0 @@
1
- .content {
2
- background-color: var(--pte-new-colors-overlayMedium);
3
- border-radius: 6px;
4
- width: 100%;
5
- padding: 8px 10px;
6
- color: var(--pte-new-colors-contentSecondary);
7
-
8
- display: flex;
9
- flex-direction: row;
10
- justify-content: flex-start;
11
- align-items: center;
12
- gap: 8px;
13
-
14
- .icon {
15
- width: 16px;
16
- height: 16px;
17
- display: flex;
18
- flex-direction: row;
19
- justify-content: flex-start;
20
- align-items: center;
21
-
22
- svg {
23
- width: 13px !important;
24
- height: 13px !important;
25
- }
26
- }
27
-
28
- &.warning {
29
- background-color: var(--pte-new-colors-backgroundWarning);
30
- color: var(--pte-new-colors-contentWarning);
31
- }
32
-
33
- &.negative {
34
- background-color: var(--pte-new-colors-overlayRed);
35
- color: var(--pte-new-colors-contentNegative);
36
- }
37
-
38
- &.positive {
39
- .icon {
40
- color: var(--pte-new-colors-contentPositive);
41
- }
42
- }
43
- }
@@ -1,52 +0,0 @@
1
- import { faCancel, faCheck, faWarning } from '@fortawesome/free-solid-svg-icons';
2
- import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
3
- import type { Meta, StoryObj } from '@storybook/nextjs-vite';
4
- import { createElement } from 'react';
5
- import { Callout } from './Callout';
6
-
7
- const meta: Meta<typeof Callout> = {
8
- title: 'Surfaces/Callout',
9
- component: Callout,
10
- tags: ['autodocs'],
11
- };
12
-
13
- export default meta;
14
- type Story = StoryObj<typeof Callout>;
15
-
16
- export const Default: Story = {
17
- args: {
18
- children: 'Receipts required for transactions over $25',
19
- },
20
- };
21
-
22
- export const Negative: Story = {
23
- args: {
24
- variant: 'negative',
25
- children: 'Please upload a receipt',
26
- icon: createElement(FontAwesomeIcon, { icon: faCancel }),
27
- },
28
- };
29
-
30
- export const Warning: Story = {
31
- args: {
32
- variant: 'warning',
33
- children: 'Receipt does not match transaction',
34
- icon: createElement(FontAwesomeIcon, { icon: faWarning }),
35
- },
36
- };
37
-
38
- export const Positive: Story = {
39
- args: {
40
- variant: 'positive',
41
- children: 'Receipt saved',
42
- icon: createElement(FontAwesomeIcon, { icon: faCheck }),
43
- },
44
- };
45
-
46
- export const IconHidden: Story = {
47
- args: {
48
- variant: 'default',
49
- children: 'Please upload a receipt',
50
- icon: null,
51
- },
52
- };
@@ -1,79 +0,0 @@
1
- import { render, screen } from '../../test/render';
2
- import { Callout } from './Callout';
3
-
4
- describe('Callout', () => {
5
- it('renders children text', () => {
6
- render(<Callout>Important message</Callout>);
7
- expect(screen.getByText('Important message')).toBeInTheDocument();
8
- });
9
-
10
- it('renders non-string children', () => {
11
- render(
12
- <Callout>
13
- <strong>Bold message</strong>
14
- </Callout>,
15
- );
16
- expect(screen.getByText('Bold message')).toBeInTheDocument();
17
- });
18
-
19
- it('applies default variant class', () => {
20
- const { container } = render(<Callout>Message</Callout>);
21
- expect(container.firstElementChild).toHaveClass('content', 'default');
22
- });
23
-
24
- it('applies warning variant', () => {
25
- const { container } = render(<Callout variant="warning">Warning!</Callout>);
26
- expect(container.firstElementChild).toHaveClass('content', 'warning');
27
- });
28
-
29
- it('applies positive variant', () => {
30
- const { container } = render(<Callout variant="positive">Success!</Callout>);
31
- expect(container.firstElementChild).toHaveClass('content', 'positive');
32
- });
33
-
34
- it('applies negative variant', () => {
35
- const { container } = render(<Callout variant="negative">Error!</Callout>);
36
- expect(container.firstElementChild).toHaveClass('content', 'negative');
37
- });
38
-
39
- it('renders default icon when no icon prop is provided', () => {
40
- const { container } = render(<Callout>With icon</Callout>);
41
- const iconWrapper = container.querySelector('.icon');
42
- expect(iconWrapper).toBeInTheDocument();
43
- });
44
-
45
- it('renders a custom icon', () => {
46
- render(<Callout icon={<svg data-testid="custom-icon" />}>With custom icon</Callout>);
47
- expect(screen.getByTestId('custom-icon')).toBeInTheDocument();
48
- });
49
-
50
- it('hides the icon when icon is null', () => {
51
- const { container } = render(<Callout icon={null}>No icon</Callout>);
52
- const iconWrapper = container.querySelector('.icon');
53
- expect(iconWrapper).not.toBeInTheDocument();
54
- });
55
-
56
- it('forwards className', () => {
57
- const { container } = render(<Callout className="extra">Message</Callout>);
58
- expect(container.firstElementChild).toHaveClass('extra');
59
- });
60
-
61
- it('forwards HTML div attributes', () => {
62
- render(
63
- <Callout data-testid="my-callout" role="alert">
64
- Alert!
65
- </Callout>,
66
- );
67
- const callout = screen.getByTestId('my-callout');
68
- expect(callout).toHaveAttribute('role', 'alert');
69
- });
70
-
71
- it('combines variant and custom className', () => {
72
- const { container } = render(
73
- <Callout variant="negative" className="custom">
74
- Error
75
- </Callout>,
76
- );
77
- expect(container.firstElementChild).toHaveClass('content', 'negative', 'custom');
78
- });
79
- });