@pautena/react-design-system 0.5.1 → 0.6.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 (289) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/index.js +4 -4
  3. package/dist/cjs/index.js.map +1 -1
  4. package/dist/cjs/types/components/alerts/expandable-alert/expandable-alert.d.ts +1 -1
  5. package/dist/cjs/types/components/data-display/bullet/bullet.d.ts +6 -1
  6. package/dist/cjs/types/components/data-display/label/label.d.ts +6 -1
  7. package/dist/cjs/types/components/data-display/link-card/link-card.d.ts +11 -0
  8. package/dist/cjs/types/components/drawers/drawer/drawer.d.ts +4 -1
  9. package/dist/cjs/types/components/drawers/drawer/index.d.ts +0 -4
  10. package/dist/cjs/types/components/drawers/drawer-app-bar/drawer-app-bar.d.ts +5 -0
  11. package/dist/cjs/types/components/drawers/drawer-app-bar/index.d.ts +1 -0
  12. package/dist/cjs/types/components/drawers/drawer-content/drawer-content.d.ts +1 -1
  13. package/dist/cjs/types/components/drawers/drawer-item/drawer-item-link.d.ts +50 -0
  14. package/dist/cjs/types/components/drawers/drawer-item/drawer-item.d.ts +8 -34
  15. package/dist/cjs/types/components/drawers/drawer-item/drawer-menu-item.d.ts +35 -0
  16. package/dist/cjs/types/components/drawers/drawer-item/index.d.ts +2 -0
  17. package/dist/cjs/types/components/drawers/drawer-main/drawer-main.d.ts +3 -0
  18. package/dist/cjs/types/components/drawers/drawer-main/index.d.ts +1 -0
  19. package/dist/{esm/types/components/drawers/drawer/drawer.context.d.ts → cjs/types/components/drawers/drawer-provider/drawer-context.d.ts} +9 -1
  20. package/dist/cjs/types/components/drawers/drawer-provider/drawer.provider.d.ts +10 -0
  21. package/dist/cjs/types/components/drawers/drawer-provider/index.d.ts +3 -0
  22. package/dist/cjs/types/components/drawers/drawer-section/drawer-section.d.ts +5 -5
  23. package/dist/cjs/types/components/drawers/drawer-subheader/drawer-subheader.d.ts +20 -0
  24. package/dist/cjs/types/components/drawers/drawer-subheader/index.d.ts +1 -0
  25. package/dist/cjs/types/components/drawers/drawer.mock.d.ts +13 -0
  26. package/dist/cjs/types/components/drawers/drawer.types.d.ts +61 -0
  27. package/dist/cjs/types/components/drawers/index.d.ts +6 -2
  28. package/dist/cjs/types/components/index.d.ts +0 -1
  29. package/dist/cjs/types/components/inputs/autocomplete/autocomplete.d.ts +10 -0
  30. package/dist/cjs/types/components/inputs/autocomplete/index.d.ts +1 -0
  31. package/dist/cjs/types/components/inputs/index.d.ts +2 -2
  32. package/dist/cjs/types/components/inputs/select/index.d.ts +1 -0
  33. package/dist/cjs/types/components/inputs/select/select.d.ts +15 -0
  34. package/dist/cjs/types/components/inputs/text-field/index.d.ts +1 -0
  35. package/dist/cjs/types/components/inputs/text-field/text-field.d.ts +7 -0
  36. package/dist/cjs/types/generators/model-router/stories/templates.d.ts +0 -2
  37. package/dist/cjs/types/layouts/drawer-layout/drawer-layout.d.ts +8 -0
  38. package/dist/cjs/types/layouts/drawer-layout/index.d.ts +1 -0
  39. package/dist/cjs/types/layouts/index.d.ts +1 -1
  40. package/dist/cjs/types/utils/arrays.d.ts +1 -1
  41. package/dist/esm/index.js +4 -4
  42. package/dist/esm/index.js.map +1 -1
  43. package/dist/esm/types/components/alerts/expandable-alert/expandable-alert.d.ts +1 -1
  44. package/dist/esm/types/components/data-display/bullet/bullet.d.ts +6 -1
  45. package/dist/esm/types/components/data-display/label/label.d.ts +6 -1
  46. package/dist/esm/types/components/data-display/link-card/link-card.d.ts +11 -0
  47. package/dist/esm/types/components/drawers/drawer/drawer.d.ts +4 -1
  48. package/dist/esm/types/components/drawers/drawer/index.d.ts +0 -4
  49. package/dist/esm/types/components/drawers/drawer-app-bar/drawer-app-bar.d.ts +5 -0
  50. package/dist/esm/types/components/drawers/drawer-app-bar/index.d.ts +1 -0
  51. package/dist/esm/types/components/drawers/drawer-content/drawer-content.d.ts +1 -1
  52. package/dist/esm/types/components/drawers/drawer-item/drawer-item-link.d.ts +50 -0
  53. package/dist/esm/types/components/drawers/drawer-item/drawer-item.d.ts +8 -34
  54. package/dist/esm/types/components/drawers/drawer-item/drawer-menu-item.d.ts +35 -0
  55. package/dist/esm/types/components/drawers/drawer-item/index.d.ts +2 -0
  56. package/dist/esm/types/components/drawers/drawer-main/drawer-main.d.ts +3 -0
  57. package/dist/esm/types/components/drawers/drawer-main/index.d.ts +1 -0
  58. package/dist/{cjs/types/components/drawers/drawer/drawer.context.d.ts → esm/types/components/drawers/drawer-provider/drawer-context.d.ts} +9 -1
  59. package/dist/esm/types/components/drawers/drawer-provider/drawer.provider.d.ts +10 -0
  60. package/dist/esm/types/components/drawers/drawer-provider/index.d.ts +3 -0
  61. package/dist/esm/types/components/drawers/drawer-section/drawer-section.d.ts +5 -5
  62. package/dist/esm/types/components/drawers/drawer-subheader/drawer-subheader.d.ts +20 -0
  63. package/dist/esm/types/components/drawers/drawer-subheader/index.d.ts +1 -0
  64. package/dist/esm/types/components/drawers/drawer.mock.d.ts +13 -0
  65. package/dist/esm/types/components/drawers/drawer.types.d.ts +61 -0
  66. package/dist/esm/types/components/drawers/index.d.ts +6 -2
  67. package/dist/esm/types/components/index.d.ts +0 -1
  68. package/dist/esm/types/components/inputs/autocomplete/autocomplete.d.ts +10 -0
  69. package/dist/esm/types/components/inputs/autocomplete/index.d.ts +1 -0
  70. package/dist/esm/types/components/inputs/index.d.ts +2 -2
  71. package/dist/esm/types/components/inputs/select/index.d.ts +1 -0
  72. package/dist/esm/types/components/inputs/select/select.d.ts +15 -0
  73. package/dist/esm/types/components/inputs/text-field/index.d.ts +1 -0
  74. package/dist/esm/types/components/inputs/text-field/text-field.d.ts +7 -0
  75. package/dist/esm/types/generators/model-router/stories/templates.d.ts +0 -2
  76. package/dist/esm/types/layouts/drawer-layout/drawer-layout.d.ts +8 -0
  77. package/dist/esm/types/layouts/drawer-layout/index.d.ts +1 -0
  78. package/dist/esm/types/layouts/index.d.ts +1 -1
  79. package/dist/esm/types/utils/arrays.d.ts +1 -1
  80. package/dist/index.d.ts +99 -98
  81. package/package.json +24 -22
  82. package/setupTests.ts +22 -0
  83. package/src/components/alerts/expandable-alert/expandable-alert.stories.tsx +53 -27
  84. package/src/components/alerts/expandable-alert/expandable-alert.test.tsx +26 -3
  85. package/src/components/alerts/expandable-alert/expandable-alert.tsx +38 -38
  86. package/src/components/components.stories.mdx +0 -1
  87. package/src/components/containers/center-container/center-container.stories.tsx +29 -27
  88. package/src/components/containers/content/content.stories.tsx +6 -9
  89. package/src/components/data-display/board/board.stories.tsx +36 -32
  90. package/src/components/data-display/board/board.test.tsx +4 -3
  91. package/src/components/data-display/bullet/bullet.stories.tsx +27 -23
  92. package/src/components/data-display/bullet/bullet.tsx +7 -2
  93. package/src/components/data-display/data-display.stories.mdx +1 -0
  94. package/src/components/data-display/header/header.stories.tsx +90 -81
  95. package/src/components/data-display/header/header.test.tsx +2 -1
  96. package/src/components/data-display/label/label.stories.tsx +33 -29
  97. package/src/components/data-display/label/label.tsx +8 -3
  98. package/src/components/data-display/link-card/index.ts +0 -0
  99. package/src/components/data-display/link-card/link-card.stories.tsx +59 -0
  100. package/src/components/data-display/link-card/link-card.test.tsx +43 -0
  101. package/src/components/data-display/link-card/link-card.tsx +52 -0
  102. package/src/components/data-display/markdown/markdown.stories.tsx +11 -10
  103. package/src/components/data-display/markdown/markdown.test.tsx +1 -1
  104. package/src/components/dialogs/bootstrap-dialog/bootstrap-dialog.stories.tsx +57 -52
  105. package/src/components/dialogs/bootstrap-dialog/bootstrap-dialog.test.tsx +6 -5
  106. package/src/components/dialogs/confirm-dialog/confirm-dialog.stories.tsx +26 -23
  107. package/src/components/dialogs/confirm-dialog/confirm-dialog.test.tsx +3 -2
  108. package/src/components/dialogs/dialogs.stories.mdx +2 -2
  109. package/src/components/dialogs/form-dialog/form-dialog.stories.tsx +34 -32
  110. package/src/components/dialogs/form-dialog/form-dialog.test.tsx +3 -2
  111. package/src/components/drawers/drawer/drawer.stories.tsx +35 -0
  112. package/src/components/drawers/drawer/drawer.test.tsx +62 -76
  113. package/src/components/drawers/drawer/drawer.tsx +74 -10
  114. package/src/components/drawers/drawer/index.ts +0 -4
  115. package/src/components/drawers/drawer-app-bar/drawer-app-bar.stories.tsx +26 -0
  116. package/src/components/drawers/drawer-app-bar/drawer-app-bar.test.tsx +83 -0
  117. package/src/components/drawers/drawer-app-bar/drawer-app-bar.tsx +87 -0
  118. package/src/components/drawers/drawer-app-bar/index.ts +1 -0
  119. package/src/components/drawers/drawer-content/drawer-content.stories.tsx +36 -17
  120. package/src/components/drawers/drawer-content/drawer-content.test.tsx +7 -2
  121. package/src/components/drawers/drawer-content/drawer-content.tsx +3 -3
  122. package/src/components/drawers/drawer-demo.stories.tsx +94 -0
  123. package/src/components/drawers/drawer-item/drawer-item-link.tsx +149 -0
  124. package/src/components/drawers/drawer-item/drawer-item.stories.tsx +131 -39
  125. package/src/components/drawers/drawer-item/drawer-item.test.tsx +227 -75
  126. package/src/components/drawers/drawer-item/drawer-item.tsx +42 -78
  127. package/src/components/drawers/drawer-item/drawer-menu-item.tsx +137 -0
  128. package/src/components/drawers/drawer-item/index.ts +2 -0
  129. package/src/components/drawers/drawer-main/drawer-main.tsx +42 -0
  130. package/src/components/drawers/drawer-main/index.ts +1 -0
  131. package/src/components/drawers/drawer-provider/drawer-context.test.tsx +24 -0
  132. package/src/components/drawers/{drawer/drawer.context.ts → drawer-provider/drawer-context.ts} +9 -1
  133. package/src/components/drawers/drawer-provider/drawer-mixins.test.tsx +25 -0
  134. package/src/components/drawers/drawer-provider/drawer-provider.test.tsx +150 -0
  135. package/src/components/drawers/drawer-provider/drawer.provider.tsx +57 -0
  136. package/src/components/drawers/drawer-provider/index.ts +3 -0
  137. package/src/components/drawers/drawer-section/drawer-section.stories.tsx +42 -15
  138. package/src/components/drawers/drawer-section/drawer-section.test.tsx +56 -12
  139. package/src/components/drawers/drawer-section/drawer-section.tsx +25 -41
  140. package/src/components/drawers/drawer-subheader/drawer-subheader.stories.tsx +27 -0
  141. package/src/components/drawers/drawer-subheader/drawer-subheader.tsx +15 -0
  142. package/src/components/drawers/drawer-subheader/index.ts +1 -0
  143. package/src/components/drawers/drawer.mock.tsx +195 -0
  144. package/src/components/drawers/drawer.types.ts +78 -0
  145. package/src/components/drawers/drawers.stories.mdx +2 -0
  146. package/src/components/drawers/index.ts +6 -2
  147. package/src/components/feedback/loading-area/loading-area.stories.tsx +5 -7
  148. package/src/components/feedback/query-container/query-container.stories.tsx +47 -41
  149. package/src/components/index.ts +0 -1
  150. package/src/components/inputs/autocomplete/autocomplete.stories.tsx +115 -0
  151. package/src/components/inputs/{enhanced-autocomplete/enhanced-autocomplete.test.tsx → autocomplete/autocomplete.test.tsx} +5 -4
  152. package/src/components/inputs/{enhanced-autocomplete/enhanced-autocomplete.tsx → autocomplete/autocomplete.tsx} +12 -8
  153. package/src/components/inputs/autocomplete/index.ts +1 -0
  154. package/src/components/inputs/index.ts +2 -2
  155. package/src/components/inputs/inputs.stories.mdx +3 -3
  156. package/src/components/inputs/search-input/search-input.stories.tsx +36 -32
  157. package/src/components/inputs/search-input/search-input.test.tsx +2 -1
  158. package/src/components/inputs/select/index.ts +1 -0
  159. package/src/components/inputs/select/select.stories.tsx +107 -0
  160. package/src/components/inputs/{enhanced-select/enhanced-select.test.tsx → select/select.test.tsx} +14 -13
  161. package/src/components/inputs/{enhanced-select/enhanced-select.tsx → select/select.tsx} +9 -9
  162. package/src/components/inputs/sign-in/sign-in.stories.tsx +22 -21
  163. package/src/components/inputs/sign-in/sign-in.test.tsx +6 -5
  164. package/src/components/inputs/text-field/index.ts +1 -0
  165. package/src/components/inputs/text-field/text-field.stories.tsx +128 -0
  166. package/src/components/inputs/{enhanced-text-field/enhanced-text-field.test.tsx → text-field/text-field.test.tsx} +5 -4
  167. package/src/components/inputs/{enhanced-text-field/enhanced-text-field.tsx → text-field/text-field.tsx} +4 -4
  168. package/src/components/navigation/tab/tab-card/tab-card.stories.tsx +11 -11
  169. package/src/components/placeholders/content-placeholder/content-placeholder.stories.tsx +4 -6
  170. package/src/components/placeholders/lorem-ipsum-placeholder/lorem-ipsum-placeholder.stories.tsx +4 -6
  171. package/src/components/placeholders/placeholder/placeholder.stories.tsx +28 -27
  172. package/src/components/placeholders/placeholder/placeholder.test.tsx +2 -1
  173. package/src/components/placeholders/skeleton-card/skeleton-card.stories.tsx +7 -8
  174. package/src/components/placeholders/skeleton-grid/skeleton-grid.stories.tsx +4 -6
  175. package/src/components/tables/enhanced-remote-table/enhanced-remote-table.stories.tsx +12 -14
  176. package/src/components/tables/enhanced-remote-table/enhanced-remote-table.test.tsx +2 -1
  177. package/src/components/tables/enhanced-table/enhanced-table.stories.tsx +10 -11
  178. package/src/components/value-displays/group-value-card/group-value-card.stories.tsx +14 -13
  179. package/src/components/value-displays/value-boolean/value-boolean.stories.tsx +19 -19
  180. package/src/components/value-displays/value-boolean/value-boolean.test.tsx +2 -1
  181. package/src/components/value-displays/value-card/value-card.stories.tsx +10 -10
  182. package/src/components/value-displays/value-content/value-content.stories.tsx +9 -7
  183. package/src/components/value-displays/value-datetime/value-datetime.stories.tsx +45 -40
  184. package/src/components/value-displays/value-datetime/value-datetime.test.tsx +2 -1
  185. package/src/components/value-displays/value-image/value-image.stories.tsx +15 -14
  186. package/src/components/value-displays/value-rating/value-rating.stories.tsx +22 -20
  187. package/src/components/value-displays/value-rating/value-rating.test.tsx +2 -1
  188. package/src/components/value-displays/value-text/value-text.stories.tsx +34 -29
  189. package/src/components/value-displays/value-text/value-text.test.tsx +2 -1
  190. package/src/generators/model-form/model-form.stories.tsx +15 -14
  191. package/src/generators/model-form/model-form.test.tsx +2 -1
  192. package/src/generators/model-router/model-router.test.tsx +16 -16
  193. package/src/generators/model-router/stories/details-screen.stories.tsx +17 -16
  194. package/src/generators/model-router/stories/list-screen.stories.tsx +73 -67
  195. package/src/generators/model-router/stories/model-router.stories.tsx +17 -15
  196. package/src/generators/model-router/stories/templates.tsx +0 -5
  197. package/src/generators/object-details/object-details.stories.tsx +2 -2
  198. package/src/generators/table-list/table-list.stories.tsx +68 -62
  199. package/src/generators/table-list/table-list.test.tsx +4 -3
  200. package/src/layouts/drawer-layout/drawer-layout.stories.tsx +57 -0
  201. package/src/layouts/{app-bar-with-drawer-layout/app-bar-with-drawer-layout.test.tsx → drawer-layout/drawer-layout.test.tsx} +14 -4
  202. package/src/layouts/drawer-layout/drawer-layout.tsx +26 -0
  203. package/src/layouts/drawer-layout/index.ts +1 -0
  204. package/src/layouts/header-layout/header-layout.stories.tsx +103 -98
  205. package/src/layouts/index.ts +1 -1
  206. package/src/layouts/layouts.stories.mdx +1 -1
  207. package/src/providers/notification-center/notification-center.stories.tsx +2 -2
  208. package/src/providers/notification-center/notification-center.test.tsx +3 -2
  209. package/src/stories/getting-started.stories.mdx +1 -1
  210. package/src/storybook.tsx +1 -9
  211. package/src/tests/datatable-placeholder/datatable-placeholder.stories.tsx +4 -6
  212. package/src/tests/mocks.ts +3 -1
  213. package/vitest.config.ts +11 -0
  214. package/dist/cjs/types/components/app-bars/app-bar/app-bar.d.ts +0 -2
  215. package/dist/cjs/types/components/app-bars/app-bar/app-bar.types.d.ts +0 -14
  216. package/dist/cjs/types/components/app-bars/app-bar/index.d.ts +0 -3
  217. package/dist/cjs/types/components/app-bars/app-bar/mini-app-bar/index.d.ts +0 -1
  218. package/dist/cjs/types/components/app-bars/app-bar/mini-app-bar/mini-app-bar.d.ts +0 -2
  219. package/dist/cjs/types/components/app-bars/index.d.ts +0 -1
  220. package/dist/cjs/types/components/drawers/drawer/drawer.mock.d.ts +0 -3
  221. package/dist/cjs/types/components/drawers/drawer/drawer.provider.d.ts +0 -6
  222. package/dist/cjs/types/components/drawers/drawer/drawer.types.d.ts +0 -51
  223. package/dist/cjs/types/components/drawers/drawer/mini-drawer/index.d.ts +0 -1
  224. package/dist/cjs/types/components/drawers/drawer/mini-drawer/mini-drawer.d.ts +0 -1
  225. package/dist/cjs/types/components/drawers/drawer-collapsable-item/drawer-collapsable-item.d.ts +0 -26
  226. package/dist/cjs/types/components/drawers/drawer-collapsable-item/index.d.ts +0 -1
  227. package/dist/cjs/types/components/drawers/drawer-section/drawer-section.mock.d.ts +0 -2
  228. package/dist/cjs/types/components/inputs/enhanced-autocomplete/enhanced-autocomplete.d.ts +0 -10
  229. package/dist/cjs/types/components/inputs/enhanced-autocomplete/index.d.ts +0 -1
  230. package/dist/cjs/types/components/inputs/enhanced-select/enhanced-select.d.ts +0 -15
  231. package/dist/cjs/types/components/inputs/enhanced-select/index.d.ts +0 -1
  232. package/dist/cjs/types/components/inputs/enhanced-text-field/enhanced-text-field.d.ts +0 -7
  233. package/dist/cjs/types/components/inputs/enhanced-text-field/index.d.ts +0 -1
  234. package/dist/cjs/types/layouts/app-bar-with-drawer-layout/app-bar-with-drawer-layout.d.ts +0 -7
  235. package/dist/cjs/types/layouts/app-bar-with-drawer-layout/index.d.ts +0 -1
  236. package/dist/esm/types/components/app-bars/app-bar/app-bar.d.ts +0 -2
  237. package/dist/esm/types/components/app-bars/app-bar/app-bar.types.d.ts +0 -14
  238. package/dist/esm/types/components/app-bars/app-bar/index.d.ts +0 -3
  239. package/dist/esm/types/components/app-bars/app-bar/mini-app-bar/index.d.ts +0 -1
  240. package/dist/esm/types/components/app-bars/app-bar/mini-app-bar/mini-app-bar.d.ts +0 -2
  241. package/dist/esm/types/components/app-bars/index.d.ts +0 -1
  242. package/dist/esm/types/components/drawers/drawer/drawer.mock.d.ts +0 -3
  243. package/dist/esm/types/components/drawers/drawer/drawer.provider.d.ts +0 -6
  244. package/dist/esm/types/components/drawers/drawer/drawer.types.d.ts +0 -51
  245. package/dist/esm/types/components/drawers/drawer/mini-drawer/index.d.ts +0 -1
  246. package/dist/esm/types/components/drawers/drawer/mini-drawer/mini-drawer.d.ts +0 -1
  247. package/dist/esm/types/components/drawers/drawer-collapsable-item/drawer-collapsable-item.d.ts +0 -26
  248. package/dist/esm/types/components/drawers/drawer-collapsable-item/index.d.ts +0 -1
  249. package/dist/esm/types/components/drawers/drawer-section/drawer-section.mock.d.ts +0 -2
  250. package/dist/esm/types/components/inputs/enhanced-autocomplete/enhanced-autocomplete.d.ts +0 -10
  251. package/dist/esm/types/components/inputs/enhanced-autocomplete/index.d.ts +0 -1
  252. package/dist/esm/types/components/inputs/enhanced-select/enhanced-select.d.ts +0 -15
  253. package/dist/esm/types/components/inputs/enhanced-select/index.d.ts +0 -1
  254. package/dist/esm/types/components/inputs/enhanced-text-field/enhanced-text-field.d.ts +0 -7
  255. package/dist/esm/types/components/inputs/enhanced-text-field/index.d.ts +0 -1
  256. package/dist/esm/types/layouts/app-bar-with-drawer-layout/app-bar-with-drawer-layout.d.ts +0 -7
  257. package/dist/esm/types/layouts/app-bar-with-drawer-layout/index.d.ts +0 -1
  258. package/src/components/app-bars/app-bar/app-bar.stories.tsx +0 -55
  259. package/src/components/app-bars/app-bar/app-bar.test.tsx +0 -142
  260. package/src/components/app-bars/app-bar/app-bar.tsx +0 -150
  261. package/src/components/app-bars/app-bar/app-bar.types.ts +0 -17
  262. package/src/components/app-bars/app-bar/index.ts +0 -3
  263. package/src/components/app-bars/app-bar/mini-app-bar/index.ts +0 -1
  264. package/src/components/app-bars/app-bar/mini-app-bar/mini-app-bar.tsx +0 -31
  265. package/src/components/app-bars/app-bars.stories.mdx +0 -10
  266. package/src/components/app-bars/index.ts +0 -1
  267. package/src/components/drawers/drawer/__snapshots__/drawer.test.tsx.snap +0 -20
  268. package/src/components/drawers/drawer/drawer.mock.tsx +0 -127
  269. package/src/components/drawers/drawer/drawer.provider.tsx +0 -23
  270. package/src/components/drawers/drawer/drawer.types.ts +0 -62
  271. package/src/components/drawers/drawer/mini-drawer/index.ts +0 -1
  272. package/src/components/drawers/drawer/mini-drawer/mini-drawer.stories.tsx +0 -34
  273. package/src/components/drawers/drawer/mini-drawer/mini-drawer.tsx +0 -66
  274. package/src/components/drawers/drawer-collapsable-item/drawer-collapsable-item.test.tsx +0 -62
  275. package/src/components/drawers/drawer-collapsable-item/drawer-collapsable-item.tsx +0 -76
  276. package/src/components/drawers/drawer-collapsable-item/index.ts +0 -1
  277. package/src/components/drawers/drawer-section/drawer-section.mock.tsx +0 -39
  278. package/src/components/inputs/enhanced-autocomplete/enhanced-autocomplete.stories.tsx +0 -109
  279. package/src/components/inputs/enhanced-autocomplete/index.ts +0 -1
  280. package/src/components/inputs/enhanced-select/enhanced-select.stories.tsx +0 -99
  281. package/src/components/inputs/enhanced-select/index.ts +0 -1
  282. package/src/components/inputs/enhanced-text-field/enhanced-text-field.stories.tsx +0 -120
  283. package/src/components/inputs/enhanced-text-field/index.ts +0 -1
  284. package/src/layouts/app-bar-with-drawer-layout/app-bar-with-drawer-layout.stories.tsx +0 -27
  285. package/src/layouts/app-bar-with-drawer-layout/app-bar-with-drawer-layout.tsx +0 -37
  286. package/src/layouts/app-bar-with-drawer-layout/index.ts +0 -1
  287. /package/dist/cjs/types/components/drawers/{drawer/drawer.mixins.d.ts → drawer-provider/drawer-mixins.d.ts} +0 -0
  288. /package/dist/esm/types/components/drawers/{drawer/drawer.mixins.d.ts → drawer-provider/drawer-mixins.d.ts} +0 -0
  289. /package/src/components/drawers/{drawer/drawer.mixins.ts → drawer-provider/drawer-mixins.ts} +0 -0
@@ -0,0 +1,24 @@
1
+ import { Box } from "@mui/material";
2
+ import React from "react";
3
+ import { mockConsoleError } from "~/tests/mocks";
4
+ import { DrawerContent } from "../drawer-content";
5
+ import { mockDrawerNavigation } from "../drawer.mock";
6
+ import { UndefinedProvider } from "./drawer-context";
7
+ import { Drawer } from "../drawer/drawer";
8
+ import { render } from "~/tests/testing-library";
9
+
10
+ describe("DrawerContext", () => {
11
+ mockConsoleError();
12
+
13
+ it("would throw an error if no Provider is defined", () => {
14
+ expect(() =>
15
+ render(
16
+ <Box>
17
+ <Drawer>
18
+ <DrawerContent nav={mockDrawerNavigation} />
19
+ </Drawer>
20
+ </Box>,
21
+ ),
22
+ ).toThrow(UndefinedProvider);
23
+ });
24
+ });
@@ -1,9 +1,17 @@
1
1
  import { useContext, createContext } from "react";
2
+ import { DrawerState, DrawerVariant } from "../drawer.types";
2
3
 
3
4
  export interface DrawerContextProps {
4
- isOpen: boolean;
5
+ selectedItemId?: string;
6
+ state: DrawerState;
7
+ variant: DrawerVariant;
8
+ drawerWidth: number;
9
+ underAppBar: boolean;
10
+ switchState(): void;
5
11
  close(): void;
12
+ collapse(): void;
6
13
  open(): void;
14
+ setState: (state: DrawerState) => void;
7
15
  }
8
16
 
9
17
  export const DrawerContext = createContext<DrawerContextProps | undefined>(undefined);
@@ -0,0 +1,25 @@
1
+ import { createTheme } from "@mui/material";
2
+ import { openedMixin, closedMixin } from "./drawer-mixins";
3
+
4
+ describe("mixins", () => {
5
+ it("would match a snapshot", () => {
6
+ const theme = createTheme();
7
+ expect(openedMixin(theme)).toStrictEqual({
8
+ overflowX: "hidden",
9
+ transition: "width 225ms cubic-bezier(0.4, 0, 0.6, 1) 0ms",
10
+ width: 240,
11
+ });
12
+ });
13
+
14
+ it("would match a snapshot", () => {
15
+ const theme = createTheme();
16
+ expect(closedMixin(theme)).toStrictEqual({
17
+ "@media (min-width:600px)": {
18
+ width: "calc(64px + 1px)",
19
+ },
20
+ overflowX: "hidden",
21
+ transition: "width 195ms cubic-bezier(0.4, 0, 0.6, 1) 0ms",
22
+ width: "calc(56px + 1px)",
23
+ });
24
+ });
25
+ });
@@ -0,0 +1,150 @@
1
+ import React from "react";
2
+ import { DrawerProvider, useDrawer } from "../drawer-provider";
3
+ import { render, screen } from "~/tests/testing-library";
4
+ import { Box, Button, Typography } from "@mui/material";
5
+ import { DrawerState, DrawerVariant } from "../drawer.types";
6
+ import userEvent from "@testing-library/user-event";
7
+
8
+ const TestContent = () => {
9
+ const {
10
+ selectedItemId,
11
+ state,
12
+ variant,
13
+ drawerWidth,
14
+ underAppBar,
15
+ switchState,
16
+ close,
17
+ collapse,
18
+ open,
19
+ setState,
20
+ } = useDrawer();
21
+
22
+ return (
23
+ <Box>
24
+ <Typography>selectedItemId: ${selectedItemId}</Typography>
25
+ <Typography>state: {state}</Typography>
26
+ <Typography>variant: {variant}</Typography>
27
+ <Typography>drawerWidth: {drawerWidth}</Typography>
28
+ <Typography>underAppBar: {underAppBar.toString()}</Typography>
29
+ <Button onClick={switchState}>switch</Button>
30
+ <Button onClick={open}>open</Button>
31
+ <Button onClick={collapse}>collapse</Button>
32
+ <Button onClick={close}>close</Button>
33
+ <Button onClick={() => setState("collapse")}>set state</Button>
34
+ </Box>
35
+ );
36
+ };
37
+
38
+ describe("DrawerProvider", () => {
39
+ const renderComponent = ({
40
+ initialState,
41
+ variant,
42
+ underAppBar,
43
+ }: { initialState?: DrawerState; variant?: DrawerVariant; underAppBar?: boolean } = {}) => {
44
+ return render(
45
+ <DrawerProvider
46
+ initialState={initialState}
47
+ variant={variant}
48
+ drawerWidth={400}
49
+ underAppBar={underAppBar}
50
+ >
51
+ <TestContent />
52
+ </DrawerProvider>,
53
+ );
54
+ };
55
+
56
+ it("should pass the drawerWith", () => {
57
+ renderComponent();
58
+
59
+ expect(screen.getByText("drawerWidth: 400")).toBeVisible();
60
+ });
61
+
62
+ describe("underAppBar", () => {
63
+ it.each([[true], [false]])("should pass the underAppBar=%s", (underAppBar) => {
64
+ renderComponent({ underAppBar });
65
+
66
+ expect(screen.getByText(`underAppBar: ${underAppBar.toString()}`)).toBeVisible();
67
+ });
68
+ });
69
+
70
+ describe("variant", () => {
71
+ it.each([["temporary"], ["persistent"], ["clipped"], ["mini"]] satisfies [DrawerVariant][])(
72
+ "should pass the variant %s",
73
+ (variant) => {
74
+ renderComponent({ variant });
75
+
76
+ expect(screen.getByText(`variant: ${variant}`)).toBeVisible();
77
+ },
78
+ );
79
+ });
80
+
81
+ describe("initialState", () => {
82
+ it.each([["open"], ["collapse"], ["close"]] as [DrawerState][])(
83
+ "should render with state=%s if it's its initialState",
84
+ (initialState) => {
85
+ renderComponent({ initialState });
86
+
87
+ expect(screen.getByText(`state: ${initialState}`)).toBeVisible();
88
+ },
89
+ );
90
+
91
+ it.each([
92
+ ["temporary", "close"],
93
+ ["persistent", "close"],
94
+ ["clipped", "open"],
95
+ ["mini", "collapse"],
96
+ ] satisfies [DrawerVariant, DrawerState][])(
97
+ "should render the %s variant default state",
98
+ (variant, state) => {
99
+ renderComponent({ variant });
100
+
101
+ expect(screen.getByText(`state: ${state}`)).toBeVisible();
102
+ },
103
+ );
104
+ });
105
+
106
+ it("should change the state to open if open is called", async () => {
107
+ renderComponent({ initialState: "close" });
108
+
109
+ await userEvent.click(screen.getByRole("button", { name: /open/i }));
110
+
111
+ expect(screen.getByText("state: open")).toBeVisible();
112
+ });
113
+
114
+ it("should change the state to collapse if collapse is called", async () => {
115
+ renderComponent({ initialState: "close" });
116
+
117
+ await userEvent.click(screen.getByRole("button", { name: /collapse/i }));
118
+
119
+ expect(screen.getByText("state: collapse")).toBeVisible();
120
+ });
121
+
122
+ it("should change the state to close if close is called", async () => {
123
+ renderComponent({ initialState: "open" });
124
+
125
+ await userEvent.click(screen.getByRole("button", { name: /close/i }));
126
+
127
+ expect(screen.getByText("state: close")).toBeVisible();
128
+ });
129
+
130
+ describe("switchState", () => {
131
+ it.each([
132
+ ["close", "open", "temporary"],
133
+ ["open", "close", "temporary"],
134
+ ["close", "open", "persistent"],
135
+ ["open", "close", "persistent"],
136
+ ["open", "open", "clipped"],
137
+ ["collapse", "open", "mini"],
138
+ ["open", "collapse", "mini"],
139
+ ] satisfies [DrawerState, DrawerState, DrawerVariant][])(
140
+ "should change state to %s if state is %s and variant %s",
141
+ async (expectedState, initialState, variant) => {
142
+ renderComponent({ initialState, variant });
143
+
144
+ await userEvent.click(screen.getByRole("button", { name: /switch/i }));
145
+
146
+ expect(screen.getByText(`state: ${expectedState}`)).toBeVisible();
147
+ },
148
+ );
149
+ });
150
+ });
@@ -0,0 +1,57 @@
1
+ import { useState } from "react";
2
+ import React, { PropsWithChildren } from "react";
3
+ import { DrawerContext } from "./drawer-context";
4
+ import { DrawerState, DrawerVariant } from "../drawer.types";
5
+ import { drawerWidth } from "./drawer-mixins";
6
+
7
+ const initialState: Record<DrawerVariant, DrawerState> = {
8
+ temporary: "close",
9
+ mini: "collapse",
10
+ clipped: "open",
11
+ persistent: "close",
12
+ };
13
+
14
+ const targetStates: Record<DrawerVariant, [DrawerState, DrawerState]> = {
15
+ temporary: ["close", "open"],
16
+ mini: ["collapse", "open"],
17
+ clipped: ["open", "open"],
18
+ persistent: ["close", "open"],
19
+ };
20
+
21
+ export type DrawerProviderProps = PropsWithChildren<{
22
+ initialState?: DrawerState;
23
+ underAppBar?: boolean;
24
+ drawerWidth?: number;
25
+ variant?: DrawerVariant;
26
+ selectedItemId?: string;
27
+ }>;
28
+
29
+ export const DrawerProvider = ({
30
+ children,
31
+ initialState: initialStateProp,
32
+ variant = "temporary",
33
+ drawerWidth: drawerWidthProp = drawerWidth,
34
+ underAppBar = false,
35
+ selectedItemId,
36
+ }: DrawerProviderProps) => {
37
+ const [state, setState] = useState<DrawerState>(initialStateProp || initialState[variant]);
38
+
39
+ return (
40
+ <DrawerContext.Provider
41
+ value={{
42
+ state,
43
+ variant,
44
+ selectedItemId,
45
+ underAppBar,
46
+ drawerWidth: drawerWidthProp,
47
+ switchState: () => setState((state) => targetStates[variant][state === "open" ? 0 : 1]),
48
+ collapse: () => setState("collapse"),
49
+ close: () => setState("close"),
50
+ open: () => setState("open"),
51
+ setState,
52
+ }}
53
+ >
54
+ {children}
55
+ </DrawerContext.Provider>
56
+ );
57
+ };
@@ -0,0 +1,3 @@
1
+ export * from "../drawer/drawer";
2
+ export * from "./drawer.provider";
3
+ export * from "./drawer-context";
@@ -1,28 +1,55 @@
1
- import { ComponentMeta } from "@storybook/react";
2
- import { createTemplate } from "../../../storybook";
3
- import { DrawerSection } from "./drawer-section";
4
- import { withContainer } from "../../../storybook";
1
+ import { Meta, StoryObj } from "@storybook/react";
2
+ import { DrawerSection, DrawerSectionProps } from "./drawer-section";
5
3
  import { withMemoryRouter } from "~/storybook";
6
- import { SectionItems } from "./drawer-section.mock";
4
+ import { mockMenuDrawerNavigationSection } from "../drawer.mock";
5
+ import { DrawerProvider } from "../drawer-provider";
6
+ import React from "react";
7
+ import { DrawerState } from "../drawer.types";
8
+
9
+ type DrawerSectionArgs = DrawerSectionProps & {
10
+ initialState?: DrawerState;
11
+ selectedItemId?: string;
12
+ };
7
13
 
8
14
  export default {
9
15
  title: "Components/Drawers/DrawerSection",
10
16
  component: DrawerSection,
11
- decorators: [withMemoryRouter(), withContainer({ width: 250 })],
17
+ decorators: [withMemoryRouter()],
12
18
  parameters: {
13
19
  layout: "centered",
14
20
  },
15
- } as ComponentMeta<typeof DrawerSection>;
21
+ render: ({ initialState = "open", selectedItemId, ...args }) => (
22
+ <DrawerProvider initialState={initialState} selectedItemId={selectedItemId}>
23
+ <DrawerSection {...args} />{" "}
24
+ </DrawerProvider>
25
+ ),
26
+ } satisfies Meta<DrawerSectionArgs>;
27
+ type Story = StoryObj<DrawerSectionArgs>;
16
28
 
17
- const Template = createTemplate(DrawerSection);
29
+ export const WihtoutTitle = {
30
+ args: {
31
+ items: mockMenuDrawerNavigationSection.items,
32
+ selectedItemId: "item2.3.2",
33
+ },
34
+ };
18
35
 
19
- export const Default = Template.bind({});
20
- Default.args = {
21
- title: "Lorem ipsum",
22
- items: SectionItems,
36
+ export const Default: Story = {
37
+ args: {
38
+ ...WihtoutTitle.args,
39
+ title: "Lorem ipsum",
40
+ },
23
41
  };
24
42
 
25
- export const WihtoutTitle = Template.bind({});
26
- WihtoutTitle.args = {
27
- items: SectionItems,
43
+ export const Small: Story = {
44
+ args: {
45
+ ...Default.args,
46
+ size: "small",
47
+ },
48
+ };
49
+
50
+ export const Collapsed: Story = {
51
+ args: {
52
+ ...Default.args,
53
+ initialState: "collapse",
54
+ },
28
55
  };
@@ -2,38 +2,82 @@ import React from "react";
2
2
  import { render, screen } from "~/tests/testing-library";
3
3
  import userEvent from "@testing-library/user-event";
4
4
  import { DrawerSection } from "./drawer-section";
5
- import { SectionItems } from "./drawer-section.mock";
5
+ import { mockMenuDrawerNavigationSection } from "../drawer.mock";
6
+ import { DrawerProvider } from "../drawer-provider";
7
+ import { DrawerState } from "../drawer.types";
6
8
 
7
9
  describe("DrawerSection", () => {
8
10
  const renderComponent = ({
9
11
  title,
12
+ initialState = "open",
10
13
  }: {
11
14
  title?: string;
15
+ initialState?: DrawerState;
12
16
  } = {}) => {
13
- return render(<DrawerSection title={title} items={SectionItems} />);
17
+ return render(
18
+ <DrawerProvider initialState={initialState}>
19
+ <DrawerSection title={title} items={mockMenuDrawerNavigationSection.items} />
20
+ </DrawerProvider>,
21
+ );
14
22
  };
15
23
 
16
24
  describe("title", () => {
17
- it("would render if is set", () => {
18
- renderComponent({ title: "Lorem ipsum" });
25
+ it("should render if is set and state is open", () => {
26
+ renderComponent({ title: "Item 1" });
19
27
 
20
- expect(screen.getByRole("heading", { name: /lorem ipsum/i })).toBeInTheDocument();
28
+ expect(screen.getByRole("heading", { name: /item 1/i })).toBeInTheDocument();
21
29
  });
22
30
 
23
- it("wouldn't render if it's not set", () => {
31
+ it.each([["collapse" as DrawerState], ["close" as DrawerState]])(
32
+ "shouldn't render if is set and state isn't open",
33
+ (initialState) => {
34
+ renderComponent({ title: "Item 1", initialState });
35
+
36
+ expect(screen.queryByRole("heading", { name: /item 1/i })).not.toBeInTheDocument();
37
+ },
38
+ );
39
+
40
+ it("shouldn't render if it's not set and state is open", () => {
24
41
  renderComponent({ title: undefined });
25
42
 
26
- expect(screen.queryByRole("heading", { name: /lorem ipsum/i })).not.toBeInTheDocument();
43
+ expect(screen.queryByRole("heading", { name: /item 1/i })).not.toBeInTheDocument();
27
44
  });
28
45
  });
29
46
 
47
+ describe("expandable submenus", () => {
48
+ it.each([["collapse" as DrawerState], ["open" as DrawerState]])(
49
+ "should render the items if the drawer state is %s",
50
+ async (initialState: DrawerState) => {
51
+ renderComponent({ initialState });
52
+
53
+ await userEvent.click(screen.getByRole("button", { name: /item 2.3/i }));
54
+
55
+ expect(screen.getByRole("link", { name: /item 2.3.1/i })).toBeVisible();
56
+ expect(screen.getByRole("link", { name: /item 2.3.2/i })).toBeVisible();
57
+ expect(screen.getByRole("link", { name: /item 2.3.3/i })).toBeVisible();
58
+ },
59
+ );
60
+
61
+ it.each([
62
+ ["Item 2.3 popover submenu", "collapse" as DrawerState],
63
+ ["Item 2.3 collapse submenu", "open" as DrawerState],
64
+ ])(
65
+ "should render a '%s' if the drawer state is %s",
66
+ async (label: string, initialState: DrawerState) => {
67
+ renderComponent({ initialState });
68
+
69
+ await userEvent.click(screen.getByRole("button", { name: /item 2.3/i }));
70
+
71
+ expect(screen.getByLabelText(label)).toBeVisible();
72
+ },
73
+ );
74
+ });
75
+
30
76
  describe("click list item", () => {
31
77
  it.each([
32
- ["/items/1-1", /item 1/i],
33
- ["/items/1-2", /item 2/i],
34
- ["/items/1-3", /item 3/i],
35
- ["/items/1-4", /item 4/i],
36
- ])("would navigate to %s if %s is clicked", async (to: string, item: RegExp) => {
78
+ ["/items/2-1", /item 2.1/i],
79
+ ["/items/2-2", /item 2.2/i],
80
+ ])("should navigate to %s if %s is clicked", async (to: string, item: RegExp) => {
37
81
  const { history } = renderComponent();
38
82
 
39
83
  await userEvent.click(screen.getByRole("link", { name: item }));
@@ -1,8 +1,9 @@
1
- import { List, ListSubheader } from "@mui/material";
1
+ import { List, useTheme } from "@mui/material";
2
2
  import React from "react";
3
- import { DrawerCollapsableItem } from "../drawer-collapsable-item";
4
- import { DrawerItem } from "../drawer-item";
5
- import { NavItem } from "../drawer/drawer.types";
3
+ import { DrawerNavigationItem, DrawerSize } from "../drawer.types";
4
+ import { DrawerSubheader } from "../drawer-subheader";
5
+ import { DrawerItem } from "../drawer-item/drawer-item";
6
+ import { useDrawer } from "../drawer-provider";
6
7
 
7
8
  export interface DrawerSectionProps {
8
9
  /**
@@ -12,53 +13,36 @@ export interface DrawerSectionProps {
12
13
  /**
13
14
  * List of items of that section
14
15
  */
15
- items: NavItem[];
16
-
16
+ items: DrawerNavigationItem[];
17
17
  /**
18
- * Id of the item that has to be marked as selected
18
+ * Item size. default to medium
19
19
  */
20
- selectedItem?: string;
20
+ size?: DrawerSize;
21
21
  }
22
22
 
23
23
  /**
24
24
  * Render a group of items inside the drawer
25
25
  * with an optional title
26
26
  */
27
- export const DrawerSection = ({ title, items, selectedItem }: DrawerSectionProps) => {
27
+ export const DrawerSection = ({ title, items, size = "medium" }: DrawerSectionProps) => {
28
+ const { state } = useDrawer();
29
+ const { spacing } = useTheme();
28
30
  return (
29
31
  <>
30
- {title && <ListSubheader role="heading">{title}</ListSubheader>}
31
- <List>
32
- {items.map((item) => {
33
- if ("items" in item) {
34
- const { id, text, icon, items } = item;
35
- const childrenSelected = items.some((item) => item.id === selectedItem);
36
- return (
37
- <DrawerCollapsableItem
38
- key={id}
39
- selectedItem={selectedItem}
40
- selected={id === selectedItem || childrenSelected}
41
- text={text}
42
- icon={icon}
43
- items={items}
44
- />
45
- );
46
- } else {
47
- const { id, text, icon, avatar, label, bullet, href } = item;
48
- return (
49
- <DrawerItem
50
- key={id}
51
- selected={id === selectedItem}
52
- text={text}
53
- icon={icon}
54
- avatar={avatar}
55
- label={label}
56
- bullet={bullet}
57
- href={href}
58
- />
59
- );
60
- }
61
- })}
32
+ {title && state === "open" && (
33
+ <DrawerSubheader size={size} role="heading">
34
+ {title}
35
+ </DrawerSubheader>
36
+ )}
37
+ <List
38
+ sx={{
39
+ paddingTop: size === "small" ? spacing(0) : undefined,
40
+ paddingY: state === "collapse" ? 0 : undefined,
41
+ }}
42
+ >
43
+ {items.map((item) => (
44
+ <DrawerItem key={item.id} item={item} size={size} />
45
+ ))}
62
46
  </List>
63
47
  </>
64
48
  );
@@ -0,0 +1,27 @@
1
+ import { Meta, StoryObj } from "@storybook/react";
2
+ import { DrawerSubheader } from "./drawer-subheader";
3
+ import { withContainer } from "../../../storybook";
4
+
5
+ export default {
6
+ title: "Components/Drawers/DrawerSubheader",
7
+ component: DrawerSubheader,
8
+ decorators: [withContainer({ width: 250 })],
9
+ parameters: {
10
+ layout: "centered",
11
+ },
12
+ } satisfies Meta<typeof DrawerSubheader>;
13
+ type Story = StoryObj<typeof DrawerSubheader>;
14
+
15
+ export const Medium: Story = {
16
+ args: {
17
+ children: "Lorem ipsum",
18
+ size: "medium",
19
+ },
20
+ };
21
+
22
+ export const Small: Story = {
23
+ args: {
24
+ children: "Lorem ipsum",
25
+ size: "small",
26
+ },
27
+ };
@@ -0,0 +1,15 @@
1
+ import { ListSubheader, ListSubheaderProps, styled } from "@mui/material";
2
+ import { DrawerSize } from "../drawer.types";
3
+
4
+ export interface DrawerSubheaderProps extends ListSubheaderProps {
5
+ /**
6
+ * Item size. default to medium
7
+ */
8
+ size?: DrawerSize;
9
+ }
10
+
11
+ export const DrawerSubheader = styled(ListSubheader, {
12
+ shouldForwardProp: (prop) => prop !== "size",
13
+ })<DrawerSubheaderProps>(({ size, theme }) => ({
14
+ lineHeight: size === "small" ? theme.typography.pxToRem(40) : undefined,
15
+ }));
@@ -0,0 +1 @@
1
+ export * from "./drawer-subheader";