@pautena/react-design-system 0.14.7 → 0.15.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 (418) hide show
  1. package/action/action-header.d.ts +1 -1
  2. package/action/action.d.ts +1 -1
  3. package/action/cjs/index.js +1 -1
  4. package/action/cjs/index.js.map +1 -1
  5. package/action/cjs/package.json +4 -4
  6. package/action/index.js +1 -1
  7. package/action/index.js.map +1 -1
  8. package/action/package.json +4 -4
  9. package/autocomplete/autocomplete.d.ts +1 -1
  10. package/autocomplete/cjs/index.js +1 -1
  11. package/autocomplete/cjs/index.js.map +1 -1
  12. package/autocomplete/cjs/package.json +2 -2
  13. package/autocomplete/index.js +1 -1
  14. package/autocomplete/index.js.map +1 -1
  15. package/autocomplete/package.json +2 -2
  16. package/board/board.d.ts +1 -1
  17. package/board/cjs/index.js +1 -1
  18. package/board/cjs/index.js.map +1 -1
  19. package/board/cjs/package.json +4 -4
  20. package/board/index.js.map +1 -1
  21. package/board/package.json +4 -4
  22. package/bootstrap-dialog/bootstrap-dialog.d.ts +1 -1
  23. package/bootstrap-dialog/cjs/index.js +1 -1
  24. package/bootstrap-dialog/cjs/index.js.map +1 -1
  25. package/bootstrap-dialog/cjs/package.json +4 -4
  26. package/bootstrap-dialog/index.js.map +1 -1
  27. package/bootstrap-dialog/package.json +4 -4
  28. package/bullet/bullet.d.ts +1 -1
  29. package/bullet/cjs/index.js +1 -1
  30. package/bullet/cjs/index.js.map +1 -1
  31. package/bullet/cjs/package.json +2 -2
  32. package/bullet/package.json +2 -2
  33. package/center-container/center-container.d.ts +1 -1
  34. package/center-container/cjs/index.js +1 -1
  35. package/center-container/cjs/index.js.map +1 -1
  36. package/center-container/cjs/package.json +2 -2
  37. package/center-container/package.json +2 -2
  38. package/cjs/index.js +1 -23
  39. package/cjs/index.js.map +1 -1
  40. package/confirm-dialog/cjs/index.js +1 -1
  41. package/confirm-dialog/cjs/index.js.map +1 -1
  42. package/confirm-dialog/cjs/package.json +4 -4
  43. package/confirm-dialog/confirm-dialog.d.ts +1 -1
  44. package/confirm-dialog/index.js.map +1 -1
  45. package/confirm-dialog/package.json +4 -4
  46. package/content/cjs/index.js +1 -1
  47. package/content/cjs/index.js.map +1 -1
  48. package/content/cjs/package.json +2 -2
  49. package/content/content.d.ts +1 -1
  50. package/content/package.json +2 -2
  51. package/content-placeholder/cjs/index.js +1 -1
  52. package/content-placeholder/cjs/index.js.map +1 -1
  53. package/content-placeholder/cjs/package.json +2 -2
  54. package/content-placeholder/content-placeholder.d.ts +1 -1
  55. package/content-placeholder/package.json +2 -2
  56. package/date-range-calendar/cjs/index.js +1 -1
  57. package/date-range-calendar/cjs/index.js.map +1 -1
  58. package/date-range-calendar/cjs/package.json +4 -4
  59. package/date-range-calendar/date-range-calendar.d.ts +1 -1
  60. package/date-range-calendar/index.js +1 -1
  61. package/date-range-calendar/index.js.map +1 -1
  62. package/date-range-calendar/package.json +4 -4
  63. package/date-range-picker/cjs/index.js +1 -1
  64. package/date-range-picker/cjs/index.js.map +1 -1
  65. package/date-range-picker/cjs/package.json +5 -5
  66. package/date-range-picker/date-range-picker.d.ts +1 -1
  67. package/date-range-picker/index.js +1 -1
  68. package/date-range-picker/index.js.map +1 -1
  69. package/date-range-picker/package.json +5 -5
  70. package/dialog/cjs/index.js +1 -1
  71. package/dialog/cjs/index.js.map +1 -1
  72. package/dialog/cjs/package.json +1 -1
  73. package/dialog/package.json +1 -1
  74. package/dialog/use-dialog.d.ts +0 -1
  75. package/drawer/cjs/index.js +1 -1
  76. package/drawer/cjs/index.js.map +1 -1
  77. package/drawer/cjs/package.json +3 -3
  78. package/drawer/drawer.d.ts +0 -1
  79. package/drawer/index.js.map +1 -1
  80. package/drawer/package.json +3 -3
  81. package/drawer-app-bar/cjs/index.js +1 -1
  82. package/drawer-app-bar/cjs/index.js.map +1 -1
  83. package/drawer-app-bar/cjs/package.json +3 -3
  84. package/drawer-app-bar/drawer-app-bar.d.ts +1 -1
  85. package/drawer-app-bar/index.js.map +1 -1
  86. package/drawer-app-bar/package.json +3 -3
  87. package/drawer-content/cjs/index.js +1 -1
  88. package/drawer-content/cjs/index.js.map +1 -1
  89. package/drawer-content/cjs/package.json +3 -4
  90. package/drawer-content/index.js +1 -1
  91. package/drawer-content/index.js.map +1 -1
  92. package/drawer-content/package.json +3 -4
  93. package/drawer-item/cjs/index.js +1 -1
  94. package/drawer-item/cjs/index.js.map +1 -1
  95. package/drawer-item/cjs/package.json +3 -4
  96. package/drawer-item/drawer-item-link.d.ts +1 -1
  97. package/drawer-item/drawer-item.d.ts +1 -1
  98. package/drawer-item/drawer-menu-item.d.ts +1 -1
  99. package/drawer-item/index.js +1 -1
  100. package/drawer-item/index.js.map +1 -1
  101. package/drawer-item/package.json +3 -4
  102. package/drawer-layout/cjs/index.js +1 -1
  103. package/drawer-layout/cjs/index.js.map +1 -1
  104. package/drawer-layout/cjs/package.json +3 -3
  105. package/drawer-layout/drawer-layout.d.ts +1 -1
  106. package/drawer-layout/index.js.map +1 -1
  107. package/drawer-layout/package.json +3 -3
  108. package/drawer-main/cjs/index.js +1 -1
  109. package/drawer-main/cjs/index.js.map +1 -1
  110. package/drawer-main/cjs/package.json +3 -3
  111. package/drawer-main/drawer-main.d.ts +1 -1
  112. package/drawer-main/index.js.map +1 -1
  113. package/drawer-main/package.json +3 -3
  114. package/drawer-provider/cjs/index.js +1 -1
  115. package/drawer-provider/cjs/index.js.map +1 -1
  116. package/drawer-provider/cjs/package.json +3 -3
  117. package/drawer-provider/drawer-context.d.ts +0 -1
  118. package/drawer-provider/drawer.provider.d.ts +1 -1
  119. package/drawer-provider/index.js.map +1 -1
  120. package/drawer-provider/package.json +3 -3
  121. package/drawer-section/cjs/index.js +1 -1
  122. package/drawer-section/cjs/index.js.map +1 -1
  123. package/drawer-section/cjs/package.json +3 -4
  124. package/drawer-section/drawer-section.d.ts +1 -1
  125. package/drawer-section/index.js +1 -1
  126. package/drawer-section/index.js.map +1 -1
  127. package/drawer-section/package.json +3 -4
  128. package/drawer-subheader/cjs/index.js +1 -1
  129. package/drawer-subheader/cjs/index.js.map +1 -1
  130. package/drawer-subheader/cjs/package.json +1 -1
  131. package/drawer-subheader/drawer-subheader.d.ts +1 -12
  132. package/drawer-subheader/package.json +1 -1
  133. package/enhanced-remote-table/cjs/index.js +1 -23
  134. package/enhanced-remote-table/cjs/index.js.map +1 -1
  135. package/enhanced-remote-table/cjs/package.json +3 -3
  136. package/enhanced-remote-table/enhanced-remote-table.d.ts +1 -1
  137. package/enhanced-remote-table/enhanced-remote-table.mock.d.ts +1 -1
  138. package/enhanced-remote-table/index.js +1 -23
  139. package/enhanced-remote-table/index.js.map +1 -1
  140. package/enhanced-remote-table/package.json +3 -3
  141. package/enhanced-table/cjs/index.js +1 -23
  142. package/enhanced-table/cjs/index.js.map +1 -1
  143. package/enhanced-table/cjs/package.json +3 -3
  144. package/enhanced-table/enhanced-table-head.d.ts +1 -1
  145. package/enhanced-table/enhanced-table.d.ts +1 -1
  146. package/enhanced-table/enhanced-table.mock.d.ts +1 -1
  147. package/enhanced-table/index.js +1 -23
  148. package/enhanced-table/index.js.map +1 -1
  149. package/enhanced-table/package.json +3 -3
  150. package/expandable-alert/cjs/index.js +1 -1
  151. package/expandable-alert/cjs/index.js.map +1 -1
  152. package/expandable-alert/cjs/package.json +4 -4
  153. package/expandable-alert/index.js.map +1 -1
  154. package/expandable-alert/package.json +4 -4
  155. package/form-dialog/cjs/index.js +1 -1
  156. package/form-dialog/cjs/index.js.map +1 -1
  157. package/form-dialog/cjs/package.json +4 -4
  158. package/form-dialog/form-dialog.d.ts +1 -1
  159. package/form-dialog/index.js.map +1 -1
  160. package/form-dialog/package.json +4 -4
  161. package/generators/cjs/index.js +1 -1
  162. package/generators/cjs/index.js.map +1 -1
  163. package/generators/index.js.map +1 -1
  164. package/group-value-card/cjs/index.js +1 -1
  165. package/group-value-card/cjs/index.js.map +1 -1
  166. package/group-value-card/cjs/package.json +2 -2
  167. package/group-value-card/group-value-card.d.ts +1 -1
  168. package/group-value-card/group-value-card.mock.d.ts +2 -2
  169. package/group-value-card/index.js.map +1 -1
  170. package/group-value-card/package.json +2 -2
  171. package/header/cjs/index.js +1 -1
  172. package/header/cjs/index.js.map +1 -1
  173. package/header/cjs/package.json +2 -3
  174. package/header/header-title.d.ts +2 -2
  175. package/header/index.js +1 -1
  176. package/header/index.js.map +1 -1
  177. package/header/package.json +2 -3
  178. package/header-layout/cjs/index.js +1 -1
  179. package/header-layout/cjs/index.js.map +1 -1
  180. package/header-layout/cjs/package.json +3 -3
  181. package/header-layout/header-layout.d.ts +1 -1
  182. package/header-layout/index.js.map +1 -1
  183. package/header-layout/package.json +3 -3
  184. package/index.d.ts +0 -1
  185. package/index.js +1 -23
  186. package/index.js.map +1 -1
  187. package/label/cjs/index.js +1 -1
  188. package/label/cjs/index.js.map +1 -1
  189. package/label/cjs/package.json +2 -2
  190. package/label/index.js +1 -1
  191. package/label/index.js.map +1 -1
  192. package/label/label.d.ts +5 -1
  193. package/label/package.json +2 -2
  194. package/link-card/cjs/index.js +1 -1
  195. package/link-card/cjs/index.js.map +1 -1
  196. package/link-card/cjs/package.json +2 -3
  197. package/link-card/index.js +1 -1
  198. package/link-card/index.js.map +1 -1
  199. package/link-card/link-card.d.ts +1 -1
  200. package/link-card/package.json +2 -3
  201. package/list-panel/cjs/index.js +1 -1
  202. package/list-panel/cjs/index.js.map +1 -1
  203. package/list-panel/cjs/package.json +2 -3
  204. package/list-panel/index.js +1 -1
  205. package/list-panel/index.js.map +1 -1
  206. package/list-panel/list-panel-panel.d.ts +1 -1
  207. package/list-panel/list-panel.context.d.ts +0 -1
  208. package/list-panel/list-panel.d.ts +1 -1
  209. package/list-panel/list-panel.mocks.d.ts +1 -1
  210. package/list-panel/package.json +2 -3
  211. package/loading-area/cjs/index.js +1 -1
  212. package/loading-area/cjs/index.js.map +1 -1
  213. package/loading-area/cjs/package.json +2 -2
  214. package/loading-area/loading-area.d.ts +1 -1
  215. package/loading-area/package.json +2 -2
  216. package/lorem-ipsum-placeholder/cjs/index.js +1 -1
  217. package/lorem-ipsum-placeholder/cjs/index.js.map +1 -1
  218. package/lorem-ipsum-placeholder/cjs/package.json +2 -2
  219. package/lorem-ipsum-placeholder/lorem-ipsum-placeholder.d.ts +1 -1
  220. package/lorem-ipsum-placeholder/package.json +2 -2
  221. package/markdown/cjs/index.js +1 -1
  222. package/markdown/cjs/index.js.map +1 -1
  223. package/markdown/cjs/package.json +3 -3
  224. package/markdown/markdown.d.ts +1 -1
  225. package/markdown/package.json +3 -3
  226. package/model-form/cjs/index.js +1 -1
  227. package/model-form/cjs/index.js.map +1 -1
  228. package/model-form/cjs/package.json +3 -3
  229. package/model-form/index.js.map +1 -1
  230. package/model-form/model-form-field.d.ts +1 -1
  231. package/model-form/model-form.d.ts +1 -1
  232. package/model-form/package.json +3 -3
  233. package/notification-center/cjs/index.js +1 -1
  234. package/notification-center/cjs/index.js.map +1 -1
  235. package/notification-center/cjs/package.json +2 -2
  236. package/notification-center/index.js +1 -1
  237. package/notification-center/index.js.map +1 -1
  238. package/notification-center/notification-center.context.d.ts +0 -1
  239. package/notification-center/notification-center.provider.d.ts +1 -1
  240. package/notification-center/package.json +2 -2
  241. package/object-details/cjs/index.js +1 -1
  242. package/object-details/cjs/index.js.map +1 -1
  243. package/object-details/cjs/package.json +6 -6
  244. package/object-details/index.js.map +1 -1
  245. package/object-details/object-details.d.ts +1 -1
  246. package/object-details/package.json +6 -6
  247. package/package.json +23 -25
  248. package/placeholder/cjs/index.js +1 -1
  249. package/placeholder/cjs/index.js.map +1 -1
  250. package/placeholder/cjs/package.json +2 -2
  251. package/placeholder/package.json +2 -2
  252. package/placeholder/placeholder.d.ts +1 -1
  253. package/query-container/cjs/index.js +1 -1
  254. package/query-container/cjs/index.js.map +1 -1
  255. package/query-container/cjs/package.json +2 -2
  256. package/query-container/index.js.map +1 -1
  257. package/query-container/package.json +2 -2
  258. package/query-container/query-container.d.ts +1 -1
  259. package/search-input/cjs/index.js +1 -1
  260. package/search-input/cjs/index.js.map +1 -1
  261. package/search-input/cjs/package.json +4 -4
  262. package/search-input/index.js.map +1 -1
  263. package/search-input/package.json +4 -4
  264. package/search-input/search-input.d.ts +1 -1
  265. package/select/cjs/index.js +1 -1
  266. package/select/cjs/index.js.map +1 -1
  267. package/select/cjs/package.json +2 -2
  268. package/select/index.js.map +1 -1
  269. package/select/package.json +2 -2
  270. package/select/select.d.ts +1 -1
  271. package/sign-in/cjs/index.js +1 -1
  272. package/sign-in/cjs/index.js.map +1 -1
  273. package/sign-in/cjs/package.json +3 -3
  274. package/sign-in/index.js.map +1 -1
  275. package/sign-in/package.json +3 -3
  276. package/sign-in/sign-in.d.ts +1 -1
  277. package/skeleton-card/cjs/index.js +1 -1
  278. package/skeleton-card/cjs/index.js.map +1 -1
  279. package/skeleton-card/cjs/package.json +2 -2
  280. package/skeleton-card/package.json +2 -2
  281. package/skeleton-card/skeleton-card.d.ts +1 -1
  282. package/skeleton-grid/cjs/index.js +1 -1
  283. package/skeleton-grid/cjs/index.js.map +1 -1
  284. package/skeleton-grid/cjs/package.json +2 -2
  285. package/skeleton-grid/package.json +2 -2
  286. package/skeleton-grid/skeleton-grid.d.ts +1 -1
  287. package/tab-card/cjs/index.js +1 -1
  288. package/tab-card/cjs/index.js.map +1 -1
  289. package/tab-card/cjs/package.json +2 -2
  290. package/tab-card/index.js.map +1 -1
  291. package/tab-card/package.json +2 -2
  292. package/tab-card/tab-card-panel.d.ts +1 -1
  293. package/tab-card/tab-card.d.ts +1 -1
  294. package/tab-card/tab-card.dummy.d.ts +2 -2
  295. package/tab-panel/cjs/index.js +1 -1
  296. package/tab-panel/cjs/index.js.map +1 -1
  297. package/tab-panel/cjs/package.json +2 -2
  298. package/tab-panel/package.json +2 -2
  299. package/tab-panel/tab-panel.d.ts +1 -2
  300. package/tab-provider/cjs/index.js +1 -1
  301. package/tab-provider/cjs/index.js.map +1 -1
  302. package/tab-provider/cjs/package.json +1 -1
  303. package/tab-provider/package.json +1 -1
  304. package/tab-provider/tab-provider.provider.d.ts +1 -1
  305. package/table-list/cjs/index.js +1 -23
  306. package/table-list/cjs/index.js.map +1 -1
  307. package/table-list/cjs/package.json +3 -3
  308. package/table-list/index.js +1 -23
  309. package/table-list/index.js.map +1 -1
  310. package/table-list/package.json +3 -3
  311. package/table-list/table-list.d.ts +1 -1
  312. package/text-field/cjs/index.js +1 -1
  313. package/text-field/cjs/index.js.map +1 -1
  314. package/text-field/cjs/package.json +2 -2
  315. package/text-field/index.js +1 -1
  316. package/text-field/index.js.map +1 -1
  317. package/text-field/package.json +2 -2
  318. package/text-field/text-field.d.ts +1 -1
  319. package/utils/cjs/index.js +1 -1
  320. package/utils/cjs/index.js.map +1 -1
  321. package/utils/cjs/package.json +1 -1
  322. package/utils/colors.d.ts +1 -0
  323. package/utils/index.js.map +1 -1
  324. package/utils/package.json +1 -1
  325. package/utils/theme.d.ts +2 -2
  326. package/value-base/cjs/index.js +1 -1
  327. package/value-base/cjs/index.js.map +1 -1
  328. package/value-base/cjs/package.json +3 -3
  329. package/value-base/index.js.map +1 -1
  330. package/value-base/package.json +3 -3
  331. package/value-base/value-edit.d.ts +3 -4
  332. package/value-boolean/cjs/index.js +1 -1
  333. package/value-boolean/cjs/index.js.map +1 -1
  334. package/value-boolean/cjs/package.json +3 -3
  335. package/value-boolean/index.js.map +1 -1
  336. package/value-boolean/package.json +3 -3
  337. package/value-boolean/value-boolean.d.ts +1 -1
  338. package/value-card/cjs/index.js +1 -1
  339. package/value-card/cjs/index.js.map +1 -1
  340. package/value-card/cjs/package.json +2 -2
  341. package/value-card/package.json +2 -2
  342. package/value-card/value-card.d.ts +1 -1
  343. package/value-content/cjs/index.js +1 -1
  344. package/value-content/cjs/index.js.map +1 -1
  345. package/value-content/cjs/package.json +2 -2
  346. package/value-content/index.js.map +1 -1
  347. package/value-content/package.json +2 -2
  348. package/value-content/value-content.d.ts +1 -2
  349. package/value-datetime/cjs/index.js +1 -1
  350. package/value-datetime/cjs/index.js.map +1 -1
  351. package/value-datetime/cjs/package.json +5 -5
  352. package/value-datetime/index.js.map +1 -1
  353. package/value-datetime/package.json +5 -5
  354. package/value-datetime/value-datetime.d.ts +1 -1
  355. package/value-image/cjs/index.js +1 -1
  356. package/value-image/cjs/index.js.map +1 -1
  357. package/value-image/cjs/package.json +2 -2
  358. package/value-image/index.js.map +1 -1
  359. package/value-image/package.json +2 -2
  360. package/value-image/value-image.d.ts +1 -1
  361. package/value-item/cjs/index.js +1 -1
  362. package/value-item/cjs/index.js.map +1 -1
  363. package/value-item/cjs/package.json +2 -2
  364. package/value-item/index.js.map +1 -1
  365. package/value-item/package.json +2 -2
  366. package/value-label/cjs/index.js +1 -1
  367. package/value-label/cjs/index.js.map +1 -1
  368. package/value-label/cjs/package.json +3 -3
  369. package/value-label/index.js +1 -1
  370. package/value-label/index.js.map +1 -1
  371. package/value-label/package.json +3 -3
  372. package/value-label/value-label.d.ts +3 -2
  373. package/value-rating/cjs/index.js +1 -1
  374. package/value-rating/cjs/index.js.map +1 -1
  375. package/value-rating/cjs/package.json +3 -3
  376. package/value-rating/index.js +1 -1
  377. package/value-rating/index.js.map +1 -1
  378. package/value-rating/package.json +3 -3
  379. package/value-rating/value-rating.d.ts +1 -1
  380. package/value-text/cjs/index.js +1 -1
  381. package/value-text/cjs/index.js.map +1 -1
  382. package/value-text/cjs/package.json +3 -3
  383. package/value-text/index.js.map +1 -1
  384. package/value-text/package.json +3 -3
  385. package/value-text/value-text.d.ts +1 -1
  386. package/hooks/cjs/index.js +0 -2
  387. package/hooks/cjs/index.js.map +0 -1
  388. package/hooks/cjs/package.json +0 -11
  389. package/hooks/index.d.ts +0 -1
  390. package/hooks/index.js +0 -2
  391. package/hooks/index.js.map +0 -1
  392. package/hooks/package.json +0 -11
  393. package/hooks/routing/index.d.ts +0 -1
  394. package/hooks/routing/routing.hooks.d.ts +0 -6
  395. package/link/cjs/index.js +0 -2
  396. package/link/cjs/index.js.map +0 -1
  397. package/link/cjs/package.json +0 -12
  398. package/link/index.d.ts +0 -1
  399. package/link/index.js +0 -2
  400. package/link/index.js.map +0 -1
  401. package/link/link.d.ts +0 -7
  402. package/link/package.json +0 -12
  403. package/model-router/cjs/index.js +0 -24
  404. package/model-router/cjs/index.js.map +0 -1
  405. package/model-router/cjs/package.json +0 -16
  406. package/model-router/index.d.ts +0 -2
  407. package/model-router/index.js +0 -24
  408. package/model-router/index.js.map +0 -1
  409. package/model-router/model-router.d.ts +0 -4
  410. package/model-router/model-router.types.d.ts +0 -9
  411. package/model-router/package.json +0 -16
  412. package/model-router/screens/add-screen.d.ts +0 -16
  413. package/model-router/screens/details-screen.d.ts +0 -20
  414. package/model-router/screens/index.d.ts +0 -4
  415. package/model-router/screens/list-screen.d.ts +0 -30
  416. package/model-router/screens/screens.types.d.ts +0 -31
  417. package/model-router/screens/update-screen.d.ts +0 -29
  418. package/model-router/stories/templates.d.ts +0 -21
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/drawer-provider/drawer-context.ts","../../src/drawer/drawer.tsx","../../src/drawer/drawer.types.ts","../../src/bullet/bullet.tsx","../../src/label/label.tsx","../../src/link/link.tsx","../../src/drawer-item/drawer-item-link.tsx","../../src/drawer-item/drawer-item.tsx","../../src/drawer-item/drawer-menu-item.tsx"],"sourcesContent":["import { useContext, createContext } from \"react\";\nimport { DrawerState, DrawerVariant } from \"../drawer\";\n\nexport interface DrawerContextProps {\n selectedItemId?: string;\n state: DrawerState;\n variant: DrawerVariant;\n drawerWidth: number;\n underAppBar: boolean;\n switchState(): void;\n close(): void;\n collapse(): void;\n open(): void;\n setState: (state: DrawerState) => void;\n}\n\nexport const DrawerContext = createContext<DrawerContextProps | undefined>(undefined);\nexport const UndefinedProvider = new Error(\"DrawerContext.Provider is required and was undefined\");\n\nexport const useDrawer = () => {\n const context = useContext(DrawerContext);\n\n if (context === undefined) {\n throw UndefinedProvider;\n }\n\n return context;\n};\n","import { SxProps, Theme, styled, useTheme } from \"@mui/material/styles\";\nimport MuiDrawer, { drawerClasses } from \"@mui/material/Drawer\";\nimport { paperClasses } from \"@mui/material/Paper\";\nimport Divider from \"@mui/material/Divider\";\nimport IconButton from \"@mui/material/IconButton\";\nimport ChevronLeftIcon from \"@mui/icons-material/ChevronLeft\";\nimport { DrawerComponent, DrawerProps, DrawerState, DrawerVariant } from \"./drawer.types\";\nimport { useDrawer } from \"../drawer-provider/drawer-context\";\nimport { closedMixin, openedMixin } from \"../drawer-provider/drawer-mixins\";\n\nexport const DrawerHeader = styled(\"div\")(({ theme }) => ({\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n padding: theme.spacing(0, 1),\n ...theme.mixins.toolbar,\n}));\n\nconst showCloseButton: Record<DrawerVariant, boolean> = {\n temporary: true,\n mini: true,\n persistent: true,\n clipped: false,\n};\n\nconst muiDrawerVariant: Record<DrawerVariant, \"permanent\" | \"persistent\" | \"temporary\"> = {\n temporary: \"temporary\",\n mini: \"permanent\",\n clipped: \"permanent\",\n persistent: \"persistent\",\n};\n\ntype SxGenerator = (state: DrawerState, theme: Theme) => SxProps<Theme>;\nconst NoopSxGenerator = () => ({});\nconst variantsSx: Readonly<Record<DrawerVariant, SxGenerator>> = {\n mini: (state: DrawerState, theme: Theme) => ({\n boxSizing: \"border-box\",\n [`& .${paperClasses.root}`]: {\n zIndex: theme.zIndex.drawer - 1,\n },\n }),\n temporary: NoopSxGenerator,\n clipped: NoopSxGenerator,\n persistent: NoopSxGenerator,\n};\n\nexport const Drawer: DrawerComponent = ({ children, ...rest }: DrawerProps) => {\n const theme = useTheme();\n const { state, switchState, underAppBar, close, drawerWidth, variant } = useDrawer();\n\n const sx: any = {\n width: drawerWidth,\n flexShrink: 0,\n whiteSpace: \"nowrap\",\n ...(state === \"open\" && {\n ...openedMixin(theme),\n [`& .${drawerClasses.paper}`]: openedMixin(theme),\n }),\n ...(state !== \"open\" && {\n ...closedMixin(theme),\n [`& .${drawerClasses.paper}`]: closedMixin(theme),\n }),\n ...variantsSx[variant](state, theme),\n };\n\n return (\n <MuiDrawer\n open={state === \"open\"}\n variant={muiDrawerVariant[variant]}\n role=\"menu\"\n aria-hidden={state === \"close\"}\n onClose={close}\n sx={sx}\n {...rest}\n >\n <DrawerHeader>\n {!underAppBar && showCloseButton[variant] && (\n <IconButton onClick={switchState}>\n <ChevronLeftIcon />\n </IconButton>\n )}\n </DrawerHeader>\n <Divider />\n {children}\n </MuiDrawer>\n );\n};\n","import { FunctionComponent, ReactElement } from \"react\";\nimport { BulletVariant } from \"../bullet\";\nimport { LabelVariant } from \"../label\";\nimport { DrawerProps as MuiDrawerProps } from \"@mui/material/Drawer\";\nimport { Theme } from \"@mui/material/styles\";\nimport { DrawerAppBarProps } from \"../drawer-app-bar\";\n\nexport type DrawerVariant = \"temporary\" | \"mini\" | \"persistent\" | \"clipped\";\nexport type DrawerState = \"open\" | \"collapse\" | \"close\";\nexport type DrawerSize = \"small\" | \"medium\";\n\nexport interface DrawerItemAvatar {\n src: string;\n alt: string;\n}\n\nexport interface DrawerItemLabel {\n text: string;\n variant: LabelVariant;\n}\n\nexport interface DrawerItemBullet {\n variant: BulletVariant;\n}\n\nexport interface DrawerNavigationItemLink {\n id: string;\n text: string;\n href: string;\n icon?: ReactElement;\n avatar?: DrawerItemAvatar;\n label?: DrawerItemLabel;\n bullet?: DrawerItemBullet;\n}\n\nexport type DrawerNavigationItemCollapsable = Pick<\n DrawerNavigationItemLink,\n \"id\" | \"text\" | \"icon\"\n> & {\n items: DrawerNavigationItem[];\n};\n\nexport type DrawerNavigationItem = DrawerNavigationItemLink | DrawerNavigationItemCollapsable;\n\nexport interface DrawerNavigationSection {\n title?: string;\n items: DrawerNavigationItem[];\n}\n\nexport interface DrawerNavigation {\n items: DrawerNavigationSection[];\n}\n\nexport interface DrawerContentProps {\n /**\n * Object with the content that has to be rendered\n */\n nav: DrawerNavigation;\n /**\n * Item size. default to medium\n */\n size?: DrawerSize;\n}\n\nexport type DrawerContentComponent = FunctionComponent<DrawerContentProps>;\nexport type DrawerContentElement = ReactElement<DrawerContentProps, DrawerContentComponent>;\n\nexport interface DrawerProps extends MuiDrawerProps {\n children: DrawerContentElement;\n}\n\nexport type DrawerComponent = FunctionComponent<DrawerProps>;\nexport type DrawerElement = ReactElement<DrawerProps, DrawerComponent>;\n\nexport const getDrawerItemColors = (theme: Theme, selected: boolean | undefined) => ({\n color: selected ? theme.palette.primary.main : undefined,\n fontWeight: selected ? theme.typography.fontWeightBold : theme.typography.fontWeightMedium,\n});\n\nexport type DrawerAppBarComponent = FunctionComponent<DrawerAppBarProps>;\nexport type DrawerAppBarElement = ReactElement<DrawerAppBarProps, DrawerAppBarComponent>;\n","import Badge from \"@mui/material/Badge\";\nimport { SxProps, Theme } from \"@mui/material/styles\";\n\nexport type BulletVariant = \"primary\" | \"secondary\" | \"default\" | \"info\" | \"warning\" | \"error\";\n\nexport const bulletClasses = {\n root: \"RdsBullet-root\",\n};\n\nexport interface BulletProps {\n /**\n * Color palette used to draw the component\n */\n variant?: BulletVariant;\n /**\n * Custom styles\n */\n sx?: SxProps<Theme>;\n}\n\n/**\n * Dot to attract the user attention\n */\nexport const Bullet = ({ variant = \"primary\", sx }: BulletProps) => {\n return (\n <Badge\n color={variant}\n variant=\"dot\"\n className={bulletClasses.root}\n role=\"bullet\"\n aria-describedby={variant}\n sx={sx}\n />\n );\n};\n","import Box from \"@mui/material/Box\";\nimport { SxProps, Theme, useTheme } from \"@mui/material/styles\";\n\nexport type LabelVariant =\n | \"primary\"\n | \"secondary\"\n | \"default\"\n | \"info\"\n | \"warning\"\n | \"error\"\n | \"success\";\n\nexport const labelClasses = {\n root: \"RdsLabel-root\",\n};\n\nexport interface LabelProps {\n /**\n * Content of the component\n */\n text: string;\n /**\n * Color palette used to draw the component\n */\n variant?: LabelVariant;\n\n /**\n * Custom styles\n */\n sx?: SxProps<Theme>;\n\n /**\n * Show the text as uppercase\n */\n textTransform?: \"none\" | \"capitalize\" | \"uppercase\";\n}\n\n/**\n * Compact element to represent a text\n */\nexport const Label = ({\n text,\n variant = \"default\",\n textTransform = \"capitalize\",\n sx,\n}: LabelProps) => {\n const { palette, typography } = useTheme();\n\n const backgroundColor: Record<LabelVariant, string> = {\n default: palette.mode === \"light\" ? palette.grey[100] : palette.grey[900],\n primary: palette.primary.light,\n secondary: palette.secondary.light,\n info: palette.info.light,\n warning: palette.warning.light,\n error: palette.error.light,\n success: palette.success.light,\n };\n\n const textColor: Record<LabelVariant, string> = {\n default: palette.getContrastText(backgroundColor.default),\n primary: palette.primary.contrastText,\n secondary: palette.secondary.contrastText,\n info: palette.info.contrastText,\n warning: palette.warning.contrastText,\n error: palette.error.contrastText,\n success: palette.success.contrastText,\n };\n\n return (\n <Box\n height={24}\n minWidth={22}\n display=\"inline-flex\"\n justifyContent=\"center\"\n alignItems=\"center\"\n bgcolor={backgroundColor[variant]}\n color={textColor[variant]}\n fontSize={typography.caption.fontSize}\n fontWeight={typography.fontWeightBold}\n lineHeight={0}\n textTransform={textTransform}\n whiteSpace=\"nowrap\"\n borderRadius={2}\n role=\"label\"\n aria-label={`${text} ${variant} label`}\n py={0}\n px={1}\n sx={{ cursor: \"default\", ...sx }}\n >\n {text}\n </Box>\n );\n};\n","import { Link as RouterLink, LinkProps as RouterLinkProps } from \"react-router-dom\";\nimport { forwardRef } from \"react\";\nimport MuiLink, { LinkProps } from \"@mui/material/Link\";\n\n/* eslint-disable react/display-name, @typescript-eslint/no-explicit-any */\nexport const LinkBehaviour = forwardRef<\n any,\n Omit<RouterLinkProps, \"to\"> & { href: RouterLinkProps[\"to\"] }\n>((props, ref) => {\n const { href, ...other } = props;\n return <RouterLink ref={ref} to={href} {...other} />;\n});\n\nexport const Link = forwardRef<any, LinkProps>((props, _1) => {\n return <MuiLink {...(props as any)} component={LinkBehaviour} />;\n});\n","import { ReactElement } from \"react\";\nimport Avatar from \"@mui/material/Avatar\";\nimport ListItemAvatar from \"@mui/material/ListItemAvatar\";\nimport ListItemButton from \"@mui/material/ListItemButton\";\nimport ListItemIcon from \"@mui/material/ListItemIcon\";\nimport ListItemText from \"@mui/material/ListItemText\";\nimport { SxProps, Theme, styled, useTheme } from \"@mui/material/styles\";\nimport { Bullet } from \"../bullet\";\nimport { Label } from \"../label\";\nimport {\n DrawerItemAvatar,\n DrawerItemBullet,\n DrawerItemLabel,\n DrawerSize,\n getDrawerItemColors,\n} from \"../drawer/drawer.types\";\nimport { Link } from \"../link\";\nimport { useDrawer } from \"../drawer-provider\";\n\nexport interface DrawerItemLinkProps {\n /**\n * Item size. default to medium\n */\n size?: DrawerSize;\n /**\n * Text displayed inside the item\n */\n text: string;\n /**\n * Url where the user is going to be redirected\n * if the item is clicked\n */\n href: string;\n /**\n * Icon displayed to the left\n */\n icon?: ReactElement;\n /**\n * Avatar displayed to the left\n */\n avatar?: DrawerItemAvatar;\n /**\n * Label with extra info displayed to the right\n */\n label?: DrawerItemLabel;\n /**\n * Bullet to attract the user attention displyed to the right\n */\n bullet?: DrawerItemBullet;\n /**\n * The item has to be marked as selected\n */\n selected?: boolean;\n /**\n * Deep level of this item inside the submenus\n */\n level: number;\n /**\n * Custom styles\n */\n sx?: SxProps<Theme>;\n}\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nconst StyledLink = styled(Link)(({ theme }) => {\n return {\n color: theme.palette.text.primary,\n };\n});\n\nconst sxCollapsedIcon = {\n minWidth: 0,\n justifyContent: \"center\",\n marginRight: \"auto\",\n};\n\n/**\n * Clicable item inside a drawer\n */\nexport const DrawerItemLink = ({\n text,\n icon,\n avatar,\n label,\n bullet,\n href,\n selected,\n size = \"medium\",\n level,\n sx,\n}: DrawerItemLinkProps) => {\n const { state } = useDrawer();\n const theme = useTheme();\n const { color, fontWeight } = getDrawerItemColors(theme, selected);\n\n return (\n <ListItemButton\n LinkComponent={StyledLink}\n dense={size === \"small\"}\n aria-label={text}\n href={href}\n selected={selected}\n sx={{\n ...sx,\n pl: state === \"open\" ? theme.spacing(2 + 1.5 * level) : undefined,\n ...(state === \"collapse\" && {\n paddingHorizontal: theme.spacing(2.5),\n justifyContent: \"center\",\n }),\n }}\n >\n {icon && (\n <ListItemIcon sx={{ color, ...(state === \"collapse\" && level === 0 && sxCollapsedIcon) }}>\n {icon}\n </ListItemIcon>\n )}\n {avatar && (\n <ListItemAvatar\n sx={{\n ...(state === \"collapse\" && level === 0 && sxCollapsedIcon),\n }}\n >\n <Avatar\n alt={avatar.alt}\n src={avatar.src}\n sx={{\n ...(size === \"small\" && { width: 24, height: 24 }),\n ...(state === \"collapse\" && { width: 30, height: 30 }),\n }}\n />\n </ListItemAvatar>\n )}\n <ListItemText\n disableTypography\n primary={text}\n sx={{ color, fontWeight, opacity: state === \"collapse\" && level === 0 ? 0 : undefined }}\n />\n {label && state === \"open\" && (\n <Label text={label.text} variant={label.variant} sx={{ ml: 2 }} />\n )}\n {bullet && state === \"open\" && <Bullet variant={bullet.variant} sx={{ ml: 2 }} />}\n </ListItemButton>\n );\n};\n","import { DrawerMenuItem } from \"./drawer-menu-item\";\nimport { DrawerNavigationItem, DrawerSize } from \"../drawer/drawer.types\";\nimport { DrawerItemLink } from \"./drawer-item-link\";\nimport { useDrawer } from \"../drawer-provider\";\n\nexport interface DrawerItemProps {\n /**\n * Data to be rendered\n */\n item: DrawerNavigationItem;\n /**\n * Size of the item\n */\n size?: DrawerSize;\n /**\n * Deep level of this item inside the submenus\n */\n level?: number;\n}\n\nexport const DrawerItem = ({ item, size = \"medium\", level = 0 }: DrawerItemProps) => {\n const { selectedItemId } = useDrawer();\n if (\"items\" in item) {\n const { id, text, icon, items } = item;\n const childrenSelected = items.some((item) => item.id === selectedItemId);\n return (\n <DrawerMenuItem\n size={size}\n selected={id === selectedItemId || childrenSelected}\n text={text}\n icon={icon}\n items={items}\n level={level}\n />\n );\n } else {\n const { id, text, icon, avatar, label, bullet, href } = item;\n return (\n <DrawerItemLink\n selected={id === selectedItemId}\n size={size}\n text={text}\n icon={icon}\n avatar={avatar}\n label={label}\n bullet={bullet}\n href={href}\n level={level}\n />\n );\n }\n};\n","import ListItemButton from \"@mui/material/ListItemButton\";\nimport ListItemIcon from \"@mui/material/ListItemIcon\";\nimport ListItemText from \"@mui/material/ListItemText\";\nimport Collapse from \"@mui/material/Collapse\";\nimport List from \"@mui/material/List\";\nimport Popover from \"@mui/material/Popover\";\nimport { SxProps, useTheme, Theme } from \"@mui/material/styles\";\nimport { ReactElement, useState, useRef } from \"react\";\nimport { DrawerNavigationItem, DrawerSize, getDrawerItemColors } from \"../drawer\";\nimport ExpandMoreIcon from \"@mui/icons-material/ExpandMore\";\nimport ChevronRightIcon from \"@mui/icons-material/ChevronRight\";\nimport { DrawerItem } from \"./drawer-item\";\nimport { useDrawer } from \"../drawer-provider\";\n\nexport interface DrawerMenuItemProps {\n /**\n * Item size. default to medium\n */\n size?: DrawerSize;\n /**\n * Text displayed inside the item\n */\n text: string;\n /**\n * Icon displayed to the left\n */\n icon?: ReactElement;\n /**\n * The item has to be marked as selected\n */\n selected?: boolean;\n /**\n * Items that are going to be displayed inside\n * the collapsable\n */\n items: DrawerNavigationItem[];\n /**\n * Deep level of this item inside the submenus\n */\n level: number;\n /**\n * Custom styles\n */\n sx?: SxProps<Theme>;\n}\n\nexport const DrawerMenuItem = ({\n text,\n icon,\n selected,\n items,\n size = \"medium\",\n level,\n sx = {},\n}: DrawerMenuItemProps) => {\n const { state } = useDrawer();\n const anchorEl = useRef<HTMLDivElement | null>(null);\n const { palette, spacing } = useTheme();\n const [menuOpen, setMenuOpen] = useState(false);\n const { color, fontWeight } = getDrawerItemColors(useTheme(), selected);\n\n const submenu = (\n <List component=\"div\" disablePadding>\n {items.map((item) => (\n <DrawerItem key={item.id} level={level + 1} item={item} size={size} />\n ))}\n </List>\n );\n\n const collapsedButtonSx =\n state === \"collapse\" && level === 0\n ? {\n position: \"absolute\",\n right: 0,\n }\n : {};\n\n return (\n <>\n <ListItemButton\n ref={anchorEl}\n selected={selected}\n aria-label={text}\n onClick={() => setMenuOpen((o) => !o)}\n dense={size === \"small\"}\n sx={{\n ...sx,\n pl: state === \"open\" ? spacing(2 + 1.5 * level) : undefined,\n backgroundColor: menuOpen ? palette.action.hover : undefined,\n }}\n >\n {icon && <ListItemIcon sx={{ color }}>{icon}</ListItemIcon>}\n <ListItemText\n disableTypography\n primary={text}\n sx={{ color, fontWeight, opacity: state === \"collapse\" && level === 0 ? 0 : undefined }}\n />\n {menuOpen && state === \"open\" ? (\n <ExpandMoreIcon sx={[{ color, ml: 2 }, collapsedButtonSx]} />\n ) : (\n <ChevronRightIcon sx={[{ color, ml: 2 }, collapsedButtonSx]} />\n )}\n </ListItemButton>\n {state === \"open\" ? (\n <Collapse\n in={menuOpen}\n timeout=\"auto\"\n unmountOnExit\n aria-label={`${text} collapse submenu`}\n >\n {submenu}\n </Collapse>\n ) : (\n <Popover\n open={menuOpen}\n PaperProps={{\n elevation: 0,\n variant: \"outlined\",\n }}\n aria-label={`${text} popover submenu`}\n anchorEl={anchorEl.current}\n onClose={() => setMenuOpen(false)}\n anchorOrigin={{\n vertical: \"top\",\n horizontal: \"right\",\n }}\n >\n {submenu}\n </Popover>\n )}\n </>\n );\n};\n"],"names":["DrawerContext","createContext","undefined","UndefinedProvider","Error","useDrawer","context","useContext","styled","theme","display","alignItems","justifyContent","padding","spacing","mixins","toolbar","getDrawerItemColors","selected","color","palette","primary","main","fontWeight","typography","fontWeightBold","fontWeightMedium","bulletClasses","Bullet","variant","sx","_jsx","Badge","className","role","Label","text","textTransform","useTheme","backgroundColor","default","mode","grey","light","secondary","info","warning","error","success","textColor","getContrastText","contrastText","Box","height","minWidth","bgcolor","fontSize","caption","lineHeight","whiteSpace","borderRadius","py","px","cursor","children","LinkBehaviour","forwardRef","props","ref","href","other","RouterLink","to","StyledLink","_1","MuiLink","component","sxCollapsedIcon","marginRight","DrawerItemLink","icon","avatar","label","bullet","size","level","state","_jsxs","ListItemButton","LinkComponent","dense","pl","paddingHorizontal","ListItemIcon","ListItemAvatar","Avatar","alt","src","width","ListItemText","disableTypography","opacity","ml","DrawerItem","item","selectedItemId","id","items","childrenSelected","some","DrawerMenuItem","anchorEl","useRef","menuOpen","setMenuOpen","useState","submenu","List","disablePadding","map","collapsedButtonSx","position","right","_Fragment","onClick","o","action","hover","ExpandMoreIcon","ChevronRightIcon","Collapse","in","timeout","unmountOnExit","Popover","open","PaperProps","elevation","current","onClose","anchorOrigin","vertical","horizontal"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/drawer-provider/drawer-context.ts","../../src/drawer/drawer.tsx","../../src/drawer/drawer.types.ts","../../src/bullet/bullet.tsx","../../src/label/label.tsx","../../src/drawer-item/drawer-item-link.tsx","../../src/drawer-item/drawer-item.tsx","../../src/drawer-item/drawer-menu-item.tsx"],"sourcesContent":["import { useContext, createContext } from \"react\";\nimport { DrawerState, DrawerVariant } from \"../drawer\";\n\nexport interface DrawerContextProps {\n selectedItemId?: string;\n state: DrawerState;\n variant: DrawerVariant;\n drawerWidth: number;\n underAppBar: boolean;\n switchState(): void;\n close(): void;\n collapse(): void;\n open(): void;\n setState: (state: DrawerState) => void;\n}\n\nexport const DrawerContext = createContext<DrawerContextProps | undefined>(undefined);\nexport const UndefinedProvider = new Error(\"DrawerContext.Provider is required and was undefined\");\n\nexport const useDrawer = () => {\n const context = useContext(DrawerContext);\n\n if (context === undefined) {\n throw UndefinedProvider;\n }\n\n return context;\n};\n","import { SxProps, Theme, styled, useTheme } from \"@mui/material/styles\";\nimport MuiDrawer, { drawerClasses } from \"@mui/material/Drawer\";\nimport { paperClasses } from \"@mui/material/Paper\";\nimport Divider from \"@mui/material/Divider\";\nimport IconButton from \"@mui/material/IconButton\";\nimport ChevronLeftIcon from \"@mui/icons-material/ChevronLeft\";\nimport { DrawerComponent, DrawerProps, DrawerState, DrawerVariant } from \"./drawer.types\";\nimport { useDrawer } from \"../drawer-provider/drawer-context\";\nimport { closedMixin, openedMixin } from \"../drawer-provider/drawer-mixins\";\n\nexport const DrawerHeader = styled(\"div\")(({ theme }) => ({\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n padding: theme.spacing(0, 1),\n ...theme.mixins.toolbar,\n}));\n\nconst showCloseButton: Record<DrawerVariant, boolean> = {\n temporary: true,\n mini: true,\n persistent: true,\n clipped: false,\n};\n\nconst muiDrawerVariant: Record<DrawerVariant, \"permanent\" | \"persistent\" | \"temporary\"> = {\n temporary: \"temporary\",\n mini: \"permanent\",\n clipped: \"permanent\",\n persistent: \"persistent\",\n};\n\ntype SxGenerator = (state: DrawerState, theme: Theme) => SxProps<Theme>;\nconst NoopSxGenerator = () => ({});\nconst variantsSx: Readonly<Record<DrawerVariant, SxGenerator>> = {\n mini: (state: DrawerState, theme: Theme) => ({\n boxSizing: \"border-box\",\n [`& .${paperClasses.root}`]: {\n zIndex: theme.zIndex.drawer - 1,\n },\n }),\n temporary: NoopSxGenerator,\n clipped: NoopSxGenerator,\n persistent: NoopSxGenerator,\n};\n\nexport const Drawer: DrawerComponent = ({ children, ...rest }: DrawerProps) => {\n const theme = useTheme();\n const { state, switchState, underAppBar, close, drawerWidth, variant } = useDrawer();\n\n const sx: any = {\n width: drawerWidth,\n flexShrink: 0,\n whiteSpace: \"nowrap\",\n ...(state === \"open\" && {\n ...openedMixin(theme),\n [`& .${drawerClasses.paper}`]: openedMixin(theme),\n }),\n ...(state !== \"open\" && {\n ...closedMixin(theme),\n [`& .${drawerClasses.paper}`]: closedMixin(theme),\n }),\n ...variantsSx[variant](state, theme),\n };\n\n return (\n <MuiDrawer\n open={state === \"open\"}\n variant={muiDrawerVariant[variant]}\n role=\"menu\"\n aria-hidden={state === \"close\"}\n onClose={close}\n sx={sx}\n {...rest}\n >\n <DrawerHeader>\n {!underAppBar && showCloseButton[variant] && (\n <IconButton onClick={switchState}>\n <ChevronLeftIcon />\n </IconButton>\n )}\n </DrawerHeader>\n <Divider />\n {children}\n </MuiDrawer>\n );\n};\n","import { FunctionComponent, ReactElement } from \"react\";\nimport { BulletVariant } from \"../bullet\";\nimport { LabelVariant } from \"../label\";\nimport { DrawerProps as MuiDrawerProps } from \"@mui/material/Drawer\";\nimport { Theme } from \"@mui/material/styles\";\nimport { DrawerAppBarProps } from \"../drawer-app-bar\";\n\nexport type DrawerVariant = \"temporary\" | \"mini\" | \"persistent\" | \"clipped\";\nexport type DrawerState = \"open\" | \"collapse\" | \"close\";\nexport type DrawerSize = \"small\" | \"medium\";\n\nexport interface DrawerItemAvatar {\n src: string;\n alt: string;\n}\n\nexport interface DrawerItemLabel {\n text: string;\n variant: LabelVariant;\n}\n\nexport interface DrawerItemBullet {\n variant: BulletVariant;\n}\n\nexport interface DrawerNavigationItemLink {\n id: string;\n text: string;\n href: string;\n icon?: ReactElement;\n avatar?: DrawerItemAvatar;\n label?: DrawerItemLabel;\n bullet?: DrawerItemBullet;\n}\n\nexport type DrawerNavigationItemCollapsable = Pick<\n DrawerNavigationItemLink,\n \"id\" | \"text\" | \"icon\"\n> & {\n items: DrawerNavigationItem[];\n};\n\nexport type DrawerNavigationItem = DrawerNavigationItemLink | DrawerNavigationItemCollapsable;\n\nexport interface DrawerNavigationSection {\n title?: string;\n items: DrawerNavigationItem[];\n}\n\nexport interface DrawerNavigation {\n items: DrawerNavigationSection[];\n}\n\nexport interface DrawerContentProps {\n /**\n * Object with the content that has to be rendered\n */\n nav: DrawerNavigation;\n /**\n * Item size. default to medium\n */\n size?: DrawerSize;\n}\n\nexport type DrawerContentComponent = FunctionComponent<DrawerContentProps>;\nexport type DrawerContentElement = ReactElement<DrawerContentProps, DrawerContentComponent>;\n\nexport interface DrawerProps extends MuiDrawerProps {\n children: DrawerContentElement;\n}\n\nexport type DrawerComponent = FunctionComponent<DrawerProps>;\nexport type DrawerElement = ReactElement<DrawerProps, DrawerComponent>;\n\nexport const getDrawerItemColors = (theme: Theme, selected: boolean | undefined) => ({\n color: selected ? theme.palette.primary.main : undefined,\n fontWeight: selected ? theme.typography.fontWeightBold : theme.typography.fontWeightMedium,\n});\n\nexport type DrawerAppBarComponent = FunctionComponent<DrawerAppBarProps>;\nexport type DrawerAppBarElement = ReactElement<DrawerAppBarProps, DrawerAppBarComponent>;\n","import Badge from \"@mui/material/Badge\";\nimport { SxProps, Theme } from \"@mui/material/styles\";\n\nexport type BulletVariant = \"primary\" | \"secondary\" | \"default\" | \"info\" | \"warning\" | \"error\";\n\nexport const bulletClasses = {\n root: \"RdsBullet-root\",\n};\n\nexport interface BulletProps {\n /**\n * Color palette used to draw the component\n */\n variant?: BulletVariant;\n /**\n * Custom styles\n */\n sx?: SxProps<Theme>;\n}\n\n/**\n * Dot to attract the user attention\n */\nexport const Bullet = ({ variant = \"primary\", sx }: BulletProps) => {\n return (\n <Badge\n color={variant}\n variant=\"dot\"\n className={bulletClasses.root}\n role=\"bullet\"\n aria-describedby={variant}\n sx={sx}\n />\n );\n};\n","import Box from \"@mui/material/Box\";\nimport { SxProps, Theme, useTheme } from \"@mui/material/styles\";\n\nexport type LabelVariant =\n | \"primary\"\n | \"secondary\"\n | \"default\"\n | \"info\"\n | \"warning\"\n | \"error\"\n | \"success\";\n\nexport const labelClasses = {\n root: \"RdsLabel-root\",\n};\n\nexport interface LabelProps {\n /**\n * Content of the component\n */\n text: string;\n /**\n * Color palette used to draw the component\n */\n variant?: LabelVariant;\n /**\n * Background color. Overrides variant\n */\n color?: string;\n\n /**\n * Custom styles\n */\n sx?: SxProps<Theme>;\n\n /**\n * Show the text as uppercase\n */\n textTransform?: \"none\" | \"capitalize\" | \"uppercase\";\n}\n\n/**\n * Compact element to represent a text\n */\nexport const Label = ({\n text,\n color: colorProp,\n variant = \"default\",\n textTransform = \"capitalize\",\n sx,\n}: LabelProps) => {\n const { palette, typography } = useTheme();\n\n const backgroundColor: Record<LabelVariant, string> = {\n default: palette.mode === \"light\" ? palette.grey[100] : palette.grey[900],\n primary: palette.primary.light,\n secondary: palette.secondary.light,\n info: palette.info.light,\n warning: palette.warning.light,\n error: palette.error.light,\n success: palette.success.light,\n };\n\n const textColor: Record<LabelVariant, string> = {\n default: palette.getContrastText(backgroundColor.default),\n primary: palette.primary.contrastText,\n secondary: palette.secondary.contrastText,\n info: palette.info.contrastText,\n warning: palette.warning.contrastText,\n error: palette.error.contrastText,\n success: palette.success.contrastText,\n };\n\n const bgcolor = colorProp ? colorProp : backgroundColor[variant];\n const color = colorProp ? palette.getContrastText(colorProp) : textColor[variant];\n\n return (\n <Box\n height={24}\n minWidth={22}\n display=\"inline-flex\"\n justifyContent=\"center\"\n alignItems=\"center\"\n bgcolor={bgcolor}\n color={color}\n fontSize={typography.caption.fontSize}\n fontWeight={typography.fontWeightBold}\n lineHeight={0}\n textTransform={textTransform}\n whiteSpace=\"nowrap\"\n borderRadius={2}\n role=\"label\"\n aria-label={`${text} ${variant} label`}\n py={0}\n px={1}\n sx={{ cursor: \"default\", ...sx }}\n >\n {text}\n </Box>\n );\n};\n","import { ReactElement } from \"react\";\nimport Avatar from \"@mui/material/Avatar\";\nimport ListItemAvatar from \"@mui/material/ListItemAvatar\";\nimport ListItemButton from \"@mui/material/ListItemButton\";\nimport ListItemIcon from \"@mui/material/ListItemIcon\";\nimport ListItemText from \"@mui/material/ListItemText\";\nimport Link from \"@mui/material/Link\";\nimport { SxProps, Theme, styled, useTheme } from \"@mui/material/styles\";\nimport { Bullet } from \"../bullet\";\nimport { Label } from \"../label\";\nimport {\n DrawerItemAvatar,\n DrawerItemBullet,\n DrawerItemLabel,\n DrawerSize,\n getDrawerItemColors,\n} from \"../drawer/drawer.types\";\nimport { useDrawer } from \"../drawer-provider\";\n\nexport interface DrawerItemLinkProps {\n /**\n * Item size. default to medium\n */\n size?: DrawerSize;\n /**\n * Text displayed inside the item\n */\n text: string;\n /**\n * Url where the user is going to be redirected\n * if the item is clicked\n */\n href: string;\n /**\n * Icon displayed to the left\n */\n icon?: ReactElement;\n /**\n * Avatar displayed to the left\n */\n avatar?: DrawerItemAvatar;\n /**\n * Label with extra info displayed to the right\n */\n label?: DrawerItemLabel;\n /**\n * Bullet to attract the user attention displyed to the right\n */\n bullet?: DrawerItemBullet;\n /**\n * The item has to be marked as selected\n */\n selected?: boolean;\n /**\n * Deep level of this item inside the submenus\n */\n level: number;\n /**\n * Custom styles\n */\n sx?: SxProps<Theme>;\n}\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nconst StyledLink = styled(Link)(({ theme }) => {\n return {\n color: theme.palette.text.primary,\n };\n});\n\nconst sxCollapsedIcon = {\n minWidth: 0,\n justifyContent: \"center\",\n marginRight: \"auto\",\n};\n\n/**\n * Clicable item inside a drawer\n */\nexport const DrawerItemLink = ({\n text,\n icon,\n avatar,\n label,\n bullet,\n href,\n selected,\n size = \"medium\",\n level,\n sx,\n}: DrawerItemLinkProps) => {\n const { state } = useDrawer();\n const theme = useTheme();\n const { color, fontWeight } = getDrawerItemColors(theme, selected);\n\n return (\n <ListItemButton\n LinkComponent={StyledLink}\n dense={size === \"small\"}\n aria-label={text}\n href={href}\n selected={selected}\n sx={{\n ...sx,\n pl: state === \"open\" ? theme.spacing(2 + 1.5 * level) : undefined,\n ...(state === \"collapse\" && {\n paddingHorizontal: theme.spacing(2.5),\n justifyContent: \"center\",\n }),\n }}\n >\n {icon && (\n <ListItemIcon sx={{ color, ...(state === \"collapse\" && level === 0 && sxCollapsedIcon) }}>\n {icon}\n </ListItemIcon>\n )}\n {avatar && (\n <ListItemAvatar\n sx={{\n ...(state === \"collapse\" && level === 0 && sxCollapsedIcon),\n }}\n >\n <Avatar\n alt={avatar.alt}\n src={avatar.src}\n sx={{\n ...(size === \"small\" && { width: 24, height: 24 }),\n ...(state === \"collapse\" && { width: 30, height: 30 }),\n }}\n />\n </ListItemAvatar>\n )}\n <ListItemText\n disableTypography\n primary={text}\n sx={{ color, fontWeight, opacity: state === \"collapse\" && level === 0 ? 0 : undefined }}\n />\n {label && state === \"open\" && (\n <Label text={label.text} variant={label.variant} sx={{ ml: 2 }} />\n )}\n {bullet && state === \"open\" && <Bullet variant={bullet.variant} sx={{ ml: 2 }} />}\n </ListItemButton>\n );\n};\n","import { DrawerMenuItem } from \"./drawer-menu-item\";\nimport { DrawerNavigationItem, DrawerSize } from \"../drawer/drawer.types\";\nimport { DrawerItemLink } from \"./drawer-item-link\";\nimport { useDrawer } from \"../drawer-provider\";\n\nexport interface DrawerItemProps {\n /**\n * Data to be rendered\n */\n item: DrawerNavigationItem;\n /**\n * Size of the item\n */\n size?: DrawerSize;\n /**\n * Deep level of this item inside the submenus\n */\n level?: number;\n}\n\nexport const DrawerItem = ({ item, size = \"medium\", level = 0 }: DrawerItemProps) => {\n const { selectedItemId } = useDrawer();\n if (\"items\" in item) {\n const { id, text, icon, items } = item;\n const childrenSelected = items.some((item) => item.id === selectedItemId);\n return (\n <DrawerMenuItem\n size={size}\n selected={id === selectedItemId || childrenSelected}\n text={text}\n icon={icon}\n items={items}\n level={level}\n />\n );\n } else {\n const { id, text, icon, avatar, label, bullet, href } = item;\n return (\n <DrawerItemLink\n selected={id === selectedItemId}\n size={size}\n text={text}\n icon={icon}\n avatar={avatar}\n label={label}\n bullet={bullet}\n href={href}\n level={level}\n />\n );\n }\n};\n","import ListItemButton from \"@mui/material/ListItemButton\";\nimport ListItemIcon from \"@mui/material/ListItemIcon\";\nimport ListItemText from \"@mui/material/ListItemText\";\nimport Collapse from \"@mui/material/Collapse\";\nimport List from \"@mui/material/List\";\nimport Popover from \"@mui/material/Popover\";\nimport { SxProps, useTheme, Theme } from \"@mui/material/styles\";\nimport { ReactElement, useState, useRef } from \"react\";\nimport { DrawerNavigationItem, DrawerSize, getDrawerItemColors } from \"../drawer\";\nimport ExpandMoreIcon from \"@mui/icons-material/ExpandMore\";\nimport ChevronRightIcon from \"@mui/icons-material/ChevronRight\";\nimport { DrawerItem } from \"./drawer-item\";\nimport { useDrawer } from \"../drawer-provider\";\n\nexport interface DrawerMenuItemProps {\n /**\n * Item size. default to medium\n */\n size?: DrawerSize;\n /**\n * Text displayed inside the item\n */\n text: string;\n /**\n * Icon displayed to the left\n */\n icon?: ReactElement;\n /**\n * The item has to be marked as selected\n */\n selected?: boolean;\n /**\n * Items that are going to be displayed inside\n * the collapsable\n */\n items: DrawerNavigationItem[];\n /**\n * Deep level of this item inside the submenus\n */\n level: number;\n /**\n * Custom styles\n */\n sx?: SxProps<Theme>;\n}\n\nexport const DrawerMenuItem = ({\n text,\n icon,\n selected,\n items,\n size = \"medium\",\n level,\n sx = {},\n}: DrawerMenuItemProps) => {\n const { state } = useDrawer();\n const anchorEl = useRef<HTMLDivElement | null>(null);\n const { palette, spacing } = useTheme();\n const [menuOpen, setMenuOpen] = useState(false);\n const { color, fontWeight } = getDrawerItemColors(useTheme(), selected);\n\n const submenu = (\n <List component=\"div\" disablePadding>\n {items.map((item) => (\n <DrawerItem key={item.id} level={level + 1} item={item} size={size} />\n ))}\n </List>\n );\n\n const collapsedButtonSx =\n state === \"collapse\" && level === 0\n ? {\n position: \"absolute\",\n right: 0,\n }\n : {};\n\n return (\n <>\n <ListItemButton\n ref={anchorEl}\n selected={selected}\n aria-label={text}\n onClick={() => setMenuOpen((o) => !o)}\n dense={size === \"small\"}\n sx={{\n ...sx,\n pl: state === \"open\" ? spacing(2 + 1.5 * level) : undefined,\n backgroundColor: menuOpen ? palette.action.hover : undefined,\n }}\n >\n {icon && <ListItemIcon sx={{ color }}>{icon}</ListItemIcon>}\n <ListItemText\n disableTypography\n primary={text}\n sx={{ color, fontWeight, opacity: state === \"collapse\" && level === 0 ? 0 : undefined }}\n />\n {menuOpen && state === \"open\" ? (\n <ExpandMoreIcon sx={[{ color, ml: 2 }, collapsedButtonSx]} />\n ) : (\n <ChevronRightIcon sx={[{ color, ml: 2 }, collapsedButtonSx]} />\n )}\n </ListItemButton>\n {state === \"open\" ? (\n <Collapse\n in={menuOpen}\n timeout=\"auto\"\n unmountOnExit\n aria-label={`${text} collapse submenu`}\n >\n {submenu}\n </Collapse>\n ) : (\n <Popover\n open={menuOpen}\n PaperProps={{\n elevation: 0,\n variant: \"outlined\",\n }}\n aria-label={`${text} popover submenu`}\n anchorEl={anchorEl.current}\n onClose={() => setMenuOpen(false)}\n anchorOrigin={{\n vertical: \"top\",\n horizontal: \"right\",\n }}\n >\n {submenu}\n </Popover>\n )}\n </>\n );\n};\n"],"names":["DrawerContext","createContext","undefined","UndefinedProvider","Error","useDrawer","context","useContext","styled","theme","display","alignItems","justifyContent","padding","spacing","mixins","toolbar","getDrawerItemColors","selected","color","palette","primary","main","fontWeight","typography","fontWeightBold","fontWeightMedium","bulletClasses","Bullet","variant","sx","_jsx","Badge","className","role","Label","text","colorProp","textTransform","useTheme","backgroundColor","default","mode","grey","light","secondary","info","warning","error","success","textColor","getContrastText","contrastText","bgcolor","Box","height","minWidth","fontSize","caption","lineHeight","whiteSpace","borderRadius","py","px","cursor","children","StyledLink","Link","sxCollapsedIcon","marginRight","DrawerItemLink","icon","avatar","label","bullet","href","size","level","state","_jsxs","ListItemButton","LinkComponent","dense","pl","paddingHorizontal","ListItemIcon","ListItemAvatar","Avatar","alt","src","width","ListItemText","disableTypography","opacity","ml","DrawerItem","item","selectedItemId","id","items","childrenSelected","some","DrawerMenuItem","anchorEl","useRef","menuOpen","setMenuOpen","useState","submenu","List","component","disablePadding","map","collapsedButtonSx","position","right","_Fragment","ref","onClick","o","action","hover","ExpandMoreIcon","ChevronRightIcon","Collapse","in","timeout","unmountOnExit","Popover","open","PaperProps","elevation","current","onClose","anchorOrigin","vertical","horizontal"],"mappings":"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"}
@@ -5,9 +5,8 @@
5
5
  "module": "./index.js",
6
6
  "types": "./index.d.ts",
7
7
  "dependencies": {
8
- "@mui/icons-material": "^5.11.16",
9
- "@mui/material": "^5.13.6",
10
- "react": "^18.2.0",
11
- "react-router-dom": "^6.14.0"
8
+ "@mui/icons-material": "^6.4.5",
9
+ "@mui/material": "^6.4.5",
10
+ "react": "^19.0.0"
12
11
  }
13
12
  }
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),r=require("@mui/material/styles");require("@mui/material/Drawer"),require("@mui/material/Paper"),require("@mui/material/Divider"),require("@mui/material/IconButton"),require("@mui/icons-material/ChevronLeft");var t=require("react");const i=t.createContext(void 0),n=new Error("DrawerContext.Provider is required and was undefined"),a=r.styled("div")((({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"flex-end",padding:e.spacing(0,1),...e.mixins.toolbar}))),s={temporary:"close",mini:"collapse",clipped:"open",persistent:"close"},o={temporary:["close","open"],mini:["collapse","open"],clipped:["open","open"],persistent:["close","open"]},l=({children:r,initialState:n,variant:a="temporary",drawerWidth:l=240,underAppBar:d=!1,selectedItemId:p,onStateChange:c=(()=>null)})=>{const[u,m]=t.useState(n||s[a]),h=e=>{c(e),m(e)};return e.jsx(i.Provider,{value:{state:u,variant:a,selectedItemId:p,underAppBar:d,drawerWidth:l,switchState:()=>h(o[a]["open"===u?0:1]),collapse:()=>h("collapse"),close:()=>h("close"),open:()=>h("open"),setState:m},children:r})},d={temporary:!1,mini:!0,clipped:!0,persistent:!0},p=r.styled("div")((({theme:e})=>{const{spacing:a}=r.useTheme(),{drawerWidth:s,state:o,variant:l}=(()=>{const e=t.useContext(i);if(void 0===e)throw n;return e})();return{marginLeft:d[l]?"open"===o?s:"collapse"===o?a(8):0:0,transition:e.transitions.create("margin",{easing:e.transitions.easing.sharp,duration:e.transitions.duration.leavingScreen})}})),c=({children:r})=>e.jsxs(p,{children:[e.jsx(a,{}),r]});exports.DrawerLayout=({drawerProviderProps:r,children:t})=>{const[i,n,a]=t;return e.jsxs(l,{...r,children:[i,n,e.jsx(c,{children:a})]})};
1
+ "use strict";var e=require("react/jsx-runtime"),r=require("@mui/material/styles");require("@mui/material/Drawer"),require("@mui/material/Paper"),require("@mui/material/Divider"),require("@mui/material/IconButton"),require("@mui/icons-material/ChevronLeft");var t=require("react");const i=t.createContext(void 0),n=new Error("DrawerContext.Provider is required and was undefined"),a=r.styled("div")((({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"flex-end",padding:e.spacing(0,1),...e.mixins.toolbar}))),s={temporary:"close",mini:"collapse",clipped:"open",persistent:"close"},o={temporary:["close","open"],mini:["collapse","open"],clipped:["open","open"],persistent:["close","open"]},l=({children:r,initialState:n,variant:a="temporary",drawerWidth:l=240,underAppBar:d=!1,selectedItemId:c,onStateChange:p=(()=>null)})=>{const[u,m]=t.useState(n||s[a]),h=e=>{p(e),m(e)};return e.jsx(i.Provider,{value:{state:u,variant:a,selectedItemId:c,underAppBar:d,drawerWidth:l,switchState:()=>h(o[a]["open"===u?0:1]),collapse:()=>h("collapse"),close:()=>h("close"),open:()=>h("open"),setState:m},children:r})},d={temporary:!1,mini:!0,clipped:!0,persistent:!0},c=r.styled("div")((({theme:e})=>{const{spacing:a}=r.useTheme(),{drawerWidth:s,state:o,variant:l}=(()=>{const e=t.useContext(i);if(void 0===e)throw n;return e})();return{marginLeft:d[l]?"open"===o?s:"collapse"===o?a(8):0:0,transition:e.transitions.create("margin",{easing:e.transitions.easing.sharp,duration:e.transitions.duration.leavingScreen})}})),p=({children:r})=>e.jsxs(c,{children:[e.jsx(a,{}),r]});exports.DrawerLayout=({drawerProviderProps:r,children:t})=>{const[i,n,a]=t;return e.jsxs(l,{...r,children:[i,n,e.jsx(p,{children:a})]})};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/drawer-provider/drawer-context.ts","../../../src/drawer/drawer.tsx","../../../src/drawer-provider/drawer.provider.tsx","../../../src/drawer-provider/drawer-mixins.ts","../../../src/drawer-main/drawer-main.tsx","../../../src/drawer-layout/drawer-layout.tsx"],"sourcesContent":["import { useContext, createContext } from \"react\";\nimport { DrawerState, DrawerVariant } from \"../drawer\";\n\nexport interface DrawerContextProps {\n selectedItemId?: string;\n state: DrawerState;\n variant: DrawerVariant;\n drawerWidth: number;\n underAppBar: boolean;\n switchState(): void;\n close(): void;\n collapse(): void;\n open(): void;\n setState: (state: DrawerState) => void;\n}\n\nexport const DrawerContext = createContext<DrawerContextProps | undefined>(undefined);\nexport const UndefinedProvider = new Error(\"DrawerContext.Provider is required and was undefined\");\n\nexport const useDrawer = () => {\n const context = useContext(DrawerContext);\n\n if (context === undefined) {\n throw UndefinedProvider;\n }\n\n return context;\n};\n","import { SxProps, Theme, styled, useTheme } from \"@mui/material/styles\";\nimport MuiDrawer, { drawerClasses } from \"@mui/material/Drawer\";\nimport { paperClasses } from \"@mui/material/Paper\";\nimport Divider from \"@mui/material/Divider\";\nimport IconButton from \"@mui/material/IconButton\";\nimport ChevronLeftIcon from \"@mui/icons-material/ChevronLeft\";\nimport { DrawerComponent, DrawerProps, DrawerState, DrawerVariant } from \"./drawer.types\";\nimport { useDrawer } from \"../drawer-provider/drawer-context\";\nimport { closedMixin, openedMixin } from \"../drawer-provider/drawer-mixins\";\n\nexport const DrawerHeader = styled(\"div\")(({ theme }) => ({\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n padding: theme.spacing(0, 1),\n ...theme.mixins.toolbar,\n}));\n\nconst showCloseButton: Record<DrawerVariant, boolean> = {\n temporary: true,\n mini: true,\n persistent: true,\n clipped: false,\n};\n\nconst muiDrawerVariant: Record<DrawerVariant, \"permanent\" | \"persistent\" | \"temporary\"> = {\n temporary: \"temporary\",\n mini: \"permanent\",\n clipped: \"permanent\",\n persistent: \"persistent\",\n};\n\ntype SxGenerator = (state: DrawerState, theme: Theme) => SxProps<Theme>;\nconst NoopSxGenerator = () => ({});\nconst variantsSx: Readonly<Record<DrawerVariant, SxGenerator>> = {\n mini: (state: DrawerState, theme: Theme) => ({\n boxSizing: \"border-box\",\n [`& .${paperClasses.root}`]: {\n zIndex: theme.zIndex.drawer - 1,\n },\n }),\n temporary: NoopSxGenerator,\n clipped: NoopSxGenerator,\n persistent: NoopSxGenerator,\n};\n\nexport const Drawer: DrawerComponent = ({ children, ...rest }: DrawerProps) => {\n const theme = useTheme();\n const { state, switchState, underAppBar, close, drawerWidth, variant } = useDrawer();\n\n const sx: any = {\n width: drawerWidth,\n flexShrink: 0,\n whiteSpace: \"nowrap\",\n ...(state === \"open\" && {\n ...openedMixin(theme),\n [`& .${drawerClasses.paper}`]: openedMixin(theme),\n }),\n ...(state !== \"open\" && {\n ...closedMixin(theme),\n [`& .${drawerClasses.paper}`]: closedMixin(theme),\n }),\n ...variantsSx[variant](state, theme),\n };\n\n return (\n <MuiDrawer\n open={state === \"open\"}\n variant={muiDrawerVariant[variant]}\n role=\"menu\"\n aria-hidden={state === \"close\"}\n onClose={close}\n sx={sx}\n {...rest}\n >\n <DrawerHeader>\n {!underAppBar && showCloseButton[variant] && (\n <IconButton onClick={switchState}>\n <ChevronLeftIcon />\n </IconButton>\n )}\n </DrawerHeader>\n <Divider />\n {children}\n </MuiDrawer>\n );\n};\n","import { useState } from \"react\";\nimport { PropsWithChildren } from \"react\";\nimport { DrawerContext } from \"./drawer-context\";\nimport { DrawerState, DrawerVariant } from \"../drawer\";\nimport { drawerWidth } from \"./drawer-mixins\";\n\nconst initialState: Record<DrawerVariant, DrawerState> = {\n temporary: \"close\",\n mini: \"collapse\",\n clipped: \"open\",\n persistent: \"close\",\n};\n\nconst targetStates: Record<DrawerVariant, [DrawerState, DrawerState]> = {\n temporary: [\"close\", \"open\"],\n mini: [\"collapse\", \"open\"],\n clipped: [\"open\", \"open\"],\n persistent: [\"close\", \"open\"],\n};\n\nexport type DrawerProviderProps = PropsWithChildren<{\n initialState?: DrawerState;\n underAppBar?: boolean;\n drawerWidth?: number;\n variant?: DrawerVariant;\n selectedItemId?: string;\n onStateChange?: (newState: DrawerState) => void;\n}>;\n\nexport const DrawerProvider = ({\n children,\n initialState: initialStateProp,\n variant = \"temporary\",\n drawerWidth: drawerWidthProp = drawerWidth,\n underAppBar = false,\n selectedItemId,\n onStateChange = () => null,\n}: DrawerProviderProps) => {\n const [state, setState] = useState<DrawerState>(initialStateProp || initialState[variant]);\n\n const handleChangeState = (newState: DrawerState) => {\n onStateChange(newState);\n setState(newState);\n };\n\n return (\n <DrawerContext.Provider\n value={{\n state,\n variant,\n selectedItemId,\n underAppBar,\n drawerWidth: drawerWidthProp,\n switchState: () => handleChangeState(targetStates[variant][state === \"open\" ? 0 : 1]),\n collapse: () => handleChangeState(\"collapse\"),\n close: () => handleChangeState(\"close\"),\n open: () => handleChangeState(\"open\"),\n setState,\n }}\n >\n {children}\n </DrawerContext.Provider>\n );\n};\n","import { Theme, CSSObject } from \"@mui/material/styles\";\n\nexport const drawerWidth = 240;\n\nexport const openedMixin = (theme: Theme): CSSObject => ({\n width: drawerWidth,\n transition: theme.transitions.create(\"width\", {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.enteringScreen,\n }),\n overflowX: \"hidden\",\n});\n\nexport const closedMixin = (theme: Theme): CSSObject => ({\n transition: theme.transitions.create(\"width\", {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n overflowX: \"hidden\",\n width: `calc(${theme.spacing(7)} + 1px)`,\n [theme.breakpoints.up(\"sm\")]: {\n width: `calc(${theme.spacing(8)} + 1px)`,\n },\n});\n","import { styled, useTheme } from \"@mui/material/styles\";\nimport { PropsWithChildren } from \"react\";\nimport { DrawerHeader, useDrawer } from \"../drawer-provider\";\nimport { DrawerVariant } from \"../drawer\";\n\nconst drawerSpace: Record<DrawerVariant, boolean> = {\n temporary: false,\n mini: true,\n clipped: true,\n persistent: true,\n};\n\nconst StyledDiv = styled(\"div\")(({ theme }) => {\n const { spacing } = useTheme();\n const { drawerWidth, state, variant } = useDrawer();\n\n const marginLeft = drawerSpace[variant]\n ? state === \"open\"\n ? drawerWidth\n : state === \"collapse\"\n ? spacing(8)\n : 0\n : 0;\n\n return {\n marginLeft,\n transition: theme.transitions.create(\"margin\", {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n };\n});\n\nexport type DrawerMainProps = PropsWithChildren;\n\nexport const DrawerMain = ({ children }: DrawerMainProps) => (\n <StyledDiv>\n <DrawerHeader />\n {children}\n </StyledDiv>\n);\n","import { ReactNode } from \"react\";\nimport { DrawerProvider, DrawerProviderProps } from \"../drawer-provider\";\nimport { DrawerMain } from \"../drawer-main\";\nimport { DrawerAppBarElement, DrawerElement } from \"../drawer/drawer.types\";\n\nexport interface DrawerLayoutProps {\n drawerProviderProps?: DrawerProviderProps;\n children: [DrawerElement, DrawerAppBarElement, ReactNode];\n}\n\nexport const DrawerLayout = ({\n drawerProviderProps,\n children: childrenProps,\n}: DrawerLayoutProps) => {\n const [appBar, drawer, children] = childrenProps;\n\n return (\n <DrawerProvider {...drawerProviderProps}>\n {appBar}\n {drawer}\n <DrawerMain>{children}</DrawerMain>\n </DrawerProvider>\n );\n};\n"],"names":["DrawerContext","createContext","undefined","UndefinedProvider","Error","DrawerHeader","styled","theme","display","alignItems","justifyContent","padding","spacing","mixins","toolbar","initialState","temporary","mini","clipped","persistent","targetStates","DrawerProvider","children","initialStateProp","variant","drawerWidth","drawerWidthProp","underAppBar","selectedItemId","onStateChange","state","setState","useState","handleChangeState","newState","_jsx","Provider","value","switchState","collapse","close","open","drawerSpace","StyledDiv","useTheme","context","useContext","useDrawer","marginLeft","transition","transitions","create","easing","sharp","duration","leavingScreen","DrawerMain","_jsxs","jsxs","drawerProviderProps","childrenProps","appBar","drawer"],"mappings":"+UAgBO,MAAMA,EAAgBC,EAAAA,mBAA8CC,GAC9DC,EAAoB,IAAIC,MAAM,wDCP9BC,EAAeC,EAAAA,OAAO,MAAPA,EAAc,EAAGC,YAAa,CACxDC,QAAS,OACTC,WAAY,SACZC,eAAgB,WAChBC,QAASJ,EAAMK,QAAQ,EAAG,MACvBL,EAAMM,OAAOC,YCTZC,EAAmD,CACvDC,UAAW,QACXC,KAAM,WACNC,QAAS,OACTC,WAAY,SAGRC,EAAkE,CACtEJ,UAAW,CAAC,QAAS,QACrBC,KAAM,CAAC,WAAY,QACnBC,QAAS,CAAC,OAAQ,QAClBC,WAAY,CAAC,QAAS,SAYXE,EAAiB,EAC5BC,WACAP,aAAcQ,EACdC,UAAU,YACVC,YAAaC,EC/BY,IDgCzBC,eAAc,EACdC,iBACAC,gBAAgB,KAAM,UAEtB,MAAOC,EAAOC,GAAYC,EAAAA,SAAsBT,GAAoBR,EAAaS,IAE3ES,EAAqBC,IACzBL,EAAcK,GACdH,EAASG,EAAS,EAGpB,OACEC,MAACnC,EAAcoC,SAAQ,CACrBC,MAAO,CACLP,QACAN,UACAI,iBACAD,cACAF,YAAaC,EACbY,YAAa,IAAML,EAAkBb,EAAaI,GAAmB,SAAVM,EAAmB,EAAI,IAClFS,SAAU,IAAMN,EAAkB,YAClCO,MAAO,IAAMP,EAAkB,SAC/BQ,KAAM,IAAMR,EAAkB,QAC9BF,YAGDT,SAAAA,GAEH,EEzDEoB,EAA8C,CAClD1B,WAAW,EACXC,MAAM,EACNC,SAAS,EACTC,YAAY,GAGRwB,EAAYrC,EAAAA,OAAO,MAAPA,EAAc,EAAGC,YACjC,MAAMK,QAAEA,GAAYgC,EAAAA,YACdnB,YAAEA,EAAWK,MAAEA,EAAKN,QAAEA,GJKL,MACvB,MAAMqB,EAAUC,aAAW9C,GAE3B,QAAgBE,IAAZ2C,EACF,MAAM1C,EAGR,OAAO0C,CAAO,EIZ0BE,GAUxC,MAAO,CACLC,WATiBN,EAAYlB,GACjB,SAAVM,EACEL,EACU,aAAVK,EACAlB,EAAQ,GACR,EACF,EAIFqC,WAAY1C,EAAM2C,YAAYC,OAAO,SAAU,CAC7CC,OAAQ7C,EAAM2C,YAAYE,OAAOC,MACjCC,SAAU/C,EAAM2C,YAAYI,SAASC,gBAExC,IAKUC,EAAa,EAAGlC,cAC3BmC,EAACC,KAAAf,aACCR,EAAAA,IAAC9B,MACAiB,0BC5BuB,EAC1BqC,sBACArC,SAAUsC,MAEV,MAAOC,EAAQC,EAAQxC,GAAYsC,EAEnC,OACEH,EAAAA,KAACpC,EAAmB,IAAAsC,YACjBE,EACAC,EACD3B,MAACqB,EAAU,CAAAlC,SAAEA,MAEf"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/drawer-provider/drawer-context.ts","../../../src/drawer/drawer.tsx","../../../src/drawer-provider/drawer.provider.tsx","../../../src/drawer-provider/drawer-mixins.ts","../../../src/drawer-main/drawer-main.tsx","../../../src/drawer-layout/drawer-layout.tsx"],"sourcesContent":["import { useContext, createContext } from \"react\";\nimport { DrawerState, DrawerVariant } from \"../drawer\";\n\nexport interface DrawerContextProps {\n selectedItemId?: string;\n state: DrawerState;\n variant: DrawerVariant;\n drawerWidth: number;\n underAppBar: boolean;\n switchState(): void;\n close(): void;\n collapse(): void;\n open(): void;\n setState: (state: DrawerState) => void;\n}\n\nexport const DrawerContext = createContext<DrawerContextProps | undefined>(undefined);\nexport const UndefinedProvider = new Error(\"DrawerContext.Provider is required and was undefined\");\n\nexport const useDrawer = () => {\n const context = useContext(DrawerContext);\n\n if (context === undefined) {\n throw UndefinedProvider;\n }\n\n return context;\n};\n","import { SxProps, Theme, styled, useTheme } from \"@mui/material/styles\";\nimport MuiDrawer, { drawerClasses } from \"@mui/material/Drawer\";\nimport { paperClasses } from \"@mui/material/Paper\";\nimport Divider from \"@mui/material/Divider\";\nimport IconButton from \"@mui/material/IconButton\";\nimport ChevronLeftIcon from \"@mui/icons-material/ChevronLeft\";\nimport { DrawerComponent, DrawerProps, DrawerState, DrawerVariant } from \"./drawer.types\";\nimport { useDrawer } from \"../drawer-provider/drawer-context\";\nimport { closedMixin, openedMixin } from \"../drawer-provider/drawer-mixins\";\n\nexport const DrawerHeader = styled(\"div\")(({ theme }) => ({\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n padding: theme.spacing(0, 1),\n ...theme.mixins.toolbar,\n}));\n\nconst showCloseButton: Record<DrawerVariant, boolean> = {\n temporary: true,\n mini: true,\n persistent: true,\n clipped: false,\n};\n\nconst muiDrawerVariant: Record<DrawerVariant, \"permanent\" | \"persistent\" | \"temporary\"> = {\n temporary: \"temporary\",\n mini: \"permanent\",\n clipped: \"permanent\",\n persistent: \"persistent\",\n};\n\ntype SxGenerator = (state: DrawerState, theme: Theme) => SxProps<Theme>;\nconst NoopSxGenerator = () => ({});\nconst variantsSx: Readonly<Record<DrawerVariant, SxGenerator>> = {\n mini: (state: DrawerState, theme: Theme) => ({\n boxSizing: \"border-box\",\n [`& .${paperClasses.root}`]: {\n zIndex: theme.zIndex.drawer - 1,\n },\n }),\n temporary: NoopSxGenerator,\n clipped: NoopSxGenerator,\n persistent: NoopSxGenerator,\n};\n\nexport const Drawer: DrawerComponent = ({ children, ...rest }: DrawerProps) => {\n const theme = useTheme();\n const { state, switchState, underAppBar, close, drawerWidth, variant } = useDrawer();\n\n const sx: any = {\n width: drawerWidth,\n flexShrink: 0,\n whiteSpace: \"nowrap\",\n ...(state === \"open\" && {\n ...openedMixin(theme),\n [`& .${drawerClasses.paper}`]: openedMixin(theme),\n }),\n ...(state !== \"open\" && {\n ...closedMixin(theme),\n [`& .${drawerClasses.paper}`]: closedMixin(theme),\n }),\n ...variantsSx[variant](state, theme),\n };\n\n return (\n <MuiDrawer\n open={state === \"open\"}\n variant={muiDrawerVariant[variant]}\n role=\"menu\"\n aria-hidden={state === \"close\"}\n onClose={close}\n sx={sx}\n {...rest}\n >\n <DrawerHeader>\n {!underAppBar && showCloseButton[variant] && (\n <IconButton onClick={switchState}>\n <ChevronLeftIcon />\n </IconButton>\n )}\n </DrawerHeader>\n <Divider />\n {children}\n </MuiDrawer>\n );\n};\n","import { useState } from \"react\";\nimport { PropsWithChildren } from \"react\";\nimport { DrawerContext } from \"./drawer-context\";\nimport { DrawerState, DrawerVariant } from \"../drawer\";\nimport { drawerWidth } from \"./drawer-mixins\";\n\nconst initialState: Record<DrawerVariant, DrawerState> = {\n temporary: \"close\",\n mini: \"collapse\",\n clipped: \"open\",\n persistent: \"close\",\n};\n\nconst targetStates: Record<DrawerVariant, [DrawerState, DrawerState]> = {\n temporary: [\"close\", \"open\"],\n mini: [\"collapse\", \"open\"],\n clipped: [\"open\", \"open\"],\n persistent: [\"close\", \"open\"],\n};\n\nexport type DrawerProviderProps = PropsWithChildren<{\n initialState?: DrawerState;\n underAppBar?: boolean;\n drawerWidth?: number;\n variant?: DrawerVariant;\n selectedItemId?: string;\n onStateChange?: (newState: DrawerState) => void;\n}>;\n\nexport const DrawerProvider = ({\n children,\n initialState: initialStateProp,\n variant = \"temporary\",\n drawerWidth: drawerWidthProp = drawerWidth,\n underAppBar = false,\n selectedItemId,\n onStateChange = () => null,\n}: DrawerProviderProps) => {\n const [state, setState] = useState<DrawerState>(initialStateProp || initialState[variant]);\n\n const handleChangeState = (newState: DrawerState) => {\n onStateChange(newState);\n setState(newState);\n };\n\n return (\n <DrawerContext.Provider\n value={{\n state,\n variant,\n selectedItemId,\n underAppBar,\n drawerWidth: drawerWidthProp,\n switchState: () => handleChangeState(targetStates[variant][state === \"open\" ? 0 : 1]),\n collapse: () => handleChangeState(\"collapse\"),\n close: () => handleChangeState(\"close\"),\n open: () => handleChangeState(\"open\"),\n setState,\n }}\n >\n {children}\n </DrawerContext.Provider>\n );\n};\n","import { Theme, CSSObject } from \"@mui/material/styles\";\n\nexport const drawerWidth = 240;\n\nexport const openedMixin = (theme: Theme): CSSObject => ({\n width: drawerWidth,\n transition: theme.transitions.create(\"width\", {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.enteringScreen,\n }),\n overflowX: \"hidden\",\n});\n\nexport const closedMixin = (theme: Theme): CSSObject => ({\n transition: theme.transitions.create(\"width\", {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n overflowX: \"hidden\",\n width: `calc(${theme.spacing(7)} + 1px)`,\n [theme.breakpoints.up(\"sm\")]: {\n width: `calc(${theme.spacing(8)} + 1px)`,\n },\n});\n","import { styled, useTheme } from \"@mui/material/styles\";\nimport { PropsWithChildren } from \"react\";\nimport { DrawerHeader, useDrawer } from \"../drawer-provider\";\nimport { DrawerVariant } from \"../drawer\";\n\nconst drawerSpace: Record<DrawerVariant, boolean> = {\n temporary: false,\n mini: true,\n clipped: true,\n persistent: true,\n};\n\nconst StyledDiv = styled(\"div\")(({ theme }) => {\n const { spacing } = useTheme();\n const { drawerWidth, state, variant } = useDrawer();\n\n const marginLeft = drawerSpace[variant]\n ? state === \"open\"\n ? drawerWidth\n : state === \"collapse\"\n ? spacing(8)\n : 0\n : 0;\n\n return {\n marginLeft,\n transition: theme.transitions.create(\"margin\", {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n };\n});\n\nexport type DrawerMainProps = PropsWithChildren;\n\nexport const DrawerMain = ({ children }: DrawerMainProps) => (\n <StyledDiv>\n <DrawerHeader />\n {children}\n </StyledDiv>\n);\n","import { ReactNode } from \"react\";\nimport { DrawerProvider, DrawerProviderProps } from \"../drawer-provider\";\nimport { DrawerMain } from \"../drawer-main\";\nimport { DrawerAppBarElement, DrawerElement } from \"../drawer/drawer.types\";\n\nexport interface DrawerLayoutProps {\n drawerProviderProps?: DrawerProviderProps;\n children: [DrawerElement, DrawerAppBarElement, ReactNode];\n}\n\nexport const DrawerLayout = ({\n drawerProviderProps,\n children: childrenProps,\n}: DrawerLayoutProps) => {\n const [appBar, drawer, children] = childrenProps;\n\n return (\n <DrawerProvider {...drawerProviderProps}>\n {appBar}\n {drawer}\n <DrawerMain>{children}</DrawerMain>\n </DrawerProvider>\n );\n};\n"],"names":["DrawerContext","createContext","undefined","UndefinedProvider","Error","DrawerHeader","styled","theme","display","alignItems","justifyContent","padding","spacing","mixins","toolbar","initialState","temporary","mini","clipped","persistent","targetStates","DrawerProvider","children","initialStateProp","variant","drawerWidth","drawerWidthProp","underAppBar","selectedItemId","onStateChange","state","setState","useState","handleChangeState","newState","_jsx","Provider","value","switchState","collapse","close","open","drawerSpace","StyledDiv","useTheme","context","useContext","useDrawer","marginLeft","transition","transitions","create","easing","sharp","duration","leavingScreen","DrawerMain","_jsxs","jsxs","drawerProviderProps","childrenProps","appBar","drawer"],"mappings":"wRAgBO,MAAMA,EAAgBC,EAAaA,mBAAiCC,GAC9DC,EAAoB,IAAIC,MAAM,wDCP9BC,EAAeC,EAAAA,OAAO,MAAPA,EAAc,EAAGC,YAAa,CACxDC,QAAS,OACTC,WAAY,SACZC,eAAgB,WAChBC,QAASJ,EAAMK,QAAQ,EAAG,MACvBL,EAAMM,OAAOC,YCTZC,EAAmD,CACvDC,UAAW,QACXC,KAAM,WACNC,QAAS,OACTC,WAAY,SAGRC,EAAkE,CACtEJ,UAAW,CAAC,QAAS,QACrBC,KAAM,CAAC,WAAY,QACnBC,QAAS,CAAC,OAAQ,QAClBC,WAAY,CAAC,QAAS,SAYXE,EAAiB,EAC5BC,WACAP,aAAcQ,EACdC,UAAU,YACVC,YAAaC,EC/BY,IDgCzBC,eAAc,EACdC,iBACAC,gBAAgB,KAAM,UAEtB,MAAOC,EAAOC,GAAYC,EAAQA,SAAcT,GAAoBR,EAAaS,IAE3ES,EAAqBC,IACzBL,EAAcK,GACdH,EAASG,EAAS,EAGpB,OACEC,MAACnC,EAAcoC,SAAQ,CACrBC,MAAO,CACLP,QACAN,UACAI,iBACAD,cACAF,YAAaC,EACbY,YAAa,IAAML,EAAkBb,EAAaI,GAAmB,SAAVM,EAAmB,EAAI,IAClFS,SAAU,IAAMN,EAAkB,YAClCO,MAAO,IAAMP,EAAkB,SAC/BQ,KAAM,IAAMR,EAAkB,QAC9BF,YAGDT,SAAAA,GACsB,EExDvBoB,EAA8C,CAClD1B,WAAW,EACXC,MAAM,EACNC,SAAS,EACTC,YAAY,GAGRwB,EAAYrC,EAAAA,OAAO,MAAPA,EAAc,EAAGC,YACjC,MAAMK,QAAEA,GAAYgC,cACdnB,YAAEA,EAAWK,MAAEA,EAAKN,QAAEA,GJKL,MACvB,MAAMqB,EAAUC,EAAUA,WAAC9C,GAE3B,QAAgBE,IAAZ2C,EACF,MAAM1C,EAGR,OAAO0C,CAAO,EIZ0BE,GAUxC,MAAO,CACLC,WATiBN,EAAYlB,GACjB,SAAVM,EACEL,EACU,aAAVK,EACElB,EAAQ,GACR,EACJ,EAIFqC,WAAY1C,EAAM2C,YAAYC,OAAO,SAAU,CAC7CC,OAAQ7C,EAAM2C,YAAYE,OAAOC,MACjCC,SAAU/C,EAAM2C,YAAYI,SAASC,gBAExC,IAKUC,EAAa,EAAGlC,cAC3BmC,EAACC,KAAAf,aACCR,EAAAA,IAAC9B,MACAiB,0BC5BuB,EAC1BqC,sBACArC,SAAUsC,MAEV,MAAOC,EAAQC,EAAQxC,GAAYsC,EAEnC,OACEH,EAAAA,KAACpC,EAAmB,IAAAsC,YACjBE,EACAC,EACD3B,MAACqB,EAAU,CAAAlC,SAAEA,MACE"}
@@ -5,8 +5,8 @@
5
5
  "module": "./index.js",
6
6
  "types": "./index.d.ts",
7
7
  "dependencies": {
8
- "@mui/icons-material": "^5.11.16",
9
- "@mui/material": "^5.13.6",
10
- "react": "^18.2.0"
8
+ "@mui/icons-material": "^6.4.5",
9
+ "@mui/material": "^6.4.5",
10
+ "react": "^19.0.0"
11
11
  }
12
12
  }
@@ -5,4 +5,4 @@ export interface DrawerLayoutProps {
5
5
  drawerProviderProps?: DrawerProviderProps;
6
6
  children: [DrawerElement, DrawerAppBarElement, ReactNode];
7
7
  }
8
- export declare const DrawerLayout: ({ drawerProviderProps, children: childrenProps, }: DrawerLayoutProps) => JSX.Element;
8
+ export declare const DrawerLayout: ({ drawerProviderProps, children: childrenProps, }: DrawerLayoutProps) => import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/drawer-provider/drawer-context.ts","../../src/drawer/drawer.tsx","../../src/drawer-provider/drawer.provider.tsx","../../src/drawer-provider/drawer-mixins.ts","../../src/drawer-main/drawer-main.tsx","../../src/drawer-layout/drawer-layout.tsx"],"sourcesContent":["import { useContext, createContext } from \"react\";\nimport { DrawerState, DrawerVariant } from \"../drawer\";\n\nexport interface DrawerContextProps {\n selectedItemId?: string;\n state: DrawerState;\n variant: DrawerVariant;\n drawerWidth: number;\n underAppBar: boolean;\n switchState(): void;\n close(): void;\n collapse(): void;\n open(): void;\n setState: (state: DrawerState) => void;\n}\n\nexport const DrawerContext = createContext<DrawerContextProps | undefined>(undefined);\nexport const UndefinedProvider = new Error(\"DrawerContext.Provider is required and was undefined\");\n\nexport const useDrawer = () => {\n const context = useContext(DrawerContext);\n\n if (context === undefined) {\n throw UndefinedProvider;\n }\n\n return context;\n};\n","import { SxProps, Theme, styled, useTheme } from \"@mui/material/styles\";\nimport MuiDrawer, { drawerClasses } from \"@mui/material/Drawer\";\nimport { paperClasses } from \"@mui/material/Paper\";\nimport Divider from \"@mui/material/Divider\";\nimport IconButton from \"@mui/material/IconButton\";\nimport ChevronLeftIcon from \"@mui/icons-material/ChevronLeft\";\nimport { DrawerComponent, DrawerProps, DrawerState, DrawerVariant } from \"./drawer.types\";\nimport { useDrawer } from \"../drawer-provider/drawer-context\";\nimport { closedMixin, openedMixin } from \"../drawer-provider/drawer-mixins\";\n\nexport const DrawerHeader = styled(\"div\")(({ theme }) => ({\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n padding: theme.spacing(0, 1),\n ...theme.mixins.toolbar,\n}));\n\nconst showCloseButton: Record<DrawerVariant, boolean> = {\n temporary: true,\n mini: true,\n persistent: true,\n clipped: false,\n};\n\nconst muiDrawerVariant: Record<DrawerVariant, \"permanent\" | \"persistent\" | \"temporary\"> = {\n temporary: \"temporary\",\n mini: \"permanent\",\n clipped: \"permanent\",\n persistent: \"persistent\",\n};\n\ntype SxGenerator = (state: DrawerState, theme: Theme) => SxProps<Theme>;\nconst NoopSxGenerator = () => ({});\nconst variantsSx: Readonly<Record<DrawerVariant, SxGenerator>> = {\n mini: (state: DrawerState, theme: Theme) => ({\n boxSizing: \"border-box\",\n [`& .${paperClasses.root}`]: {\n zIndex: theme.zIndex.drawer - 1,\n },\n }),\n temporary: NoopSxGenerator,\n clipped: NoopSxGenerator,\n persistent: NoopSxGenerator,\n};\n\nexport const Drawer: DrawerComponent = ({ children, ...rest }: DrawerProps) => {\n const theme = useTheme();\n const { state, switchState, underAppBar, close, drawerWidth, variant } = useDrawer();\n\n const sx: any = {\n width: drawerWidth,\n flexShrink: 0,\n whiteSpace: \"nowrap\",\n ...(state === \"open\" && {\n ...openedMixin(theme),\n [`& .${drawerClasses.paper}`]: openedMixin(theme),\n }),\n ...(state !== \"open\" && {\n ...closedMixin(theme),\n [`& .${drawerClasses.paper}`]: closedMixin(theme),\n }),\n ...variantsSx[variant](state, theme),\n };\n\n return (\n <MuiDrawer\n open={state === \"open\"}\n variant={muiDrawerVariant[variant]}\n role=\"menu\"\n aria-hidden={state === \"close\"}\n onClose={close}\n sx={sx}\n {...rest}\n >\n <DrawerHeader>\n {!underAppBar && showCloseButton[variant] && (\n <IconButton onClick={switchState}>\n <ChevronLeftIcon />\n </IconButton>\n )}\n </DrawerHeader>\n <Divider />\n {children}\n </MuiDrawer>\n );\n};\n","import { useState } from \"react\";\nimport { PropsWithChildren } from \"react\";\nimport { DrawerContext } from \"./drawer-context\";\nimport { DrawerState, DrawerVariant } from \"../drawer\";\nimport { drawerWidth } from \"./drawer-mixins\";\n\nconst initialState: Record<DrawerVariant, DrawerState> = {\n temporary: \"close\",\n mini: \"collapse\",\n clipped: \"open\",\n persistent: \"close\",\n};\n\nconst targetStates: Record<DrawerVariant, [DrawerState, DrawerState]> = {\n temporary: [\"close\", \"open\"],\n mini: [\"collapse\", \"open\"],\n clipped: [\"open\", \"open\"],\n persistent: [\"close\", \"open\"],\n};\n\nexport type DrawerProviderProps = PropsWithChildren<{\n initialState?: DrawerState;\n underAppBar?: boolean;\n drawerWidth?: number;\n variant?: DrawerVariant;\n selectedItemId?: string;\n onStateChange?: (newState: DrawerState) => void;\n}>;\n\nexport const DrawerProvider = ({\n children,\n initialState: initialStateProp,\n variant = \"temporary\",\n drawerWidth: drawerWidthProp = drawerWidth,\n underAppBar = false,\n selectedItemId,\n onStateChange = () => null,\n}: DrawerProviderProps) => {\n const [state, setState] = useState<DrawerState>(initialStateProp || initialState[variant]);\n\n const handleChangeState = (newState: DrawerState) => {\n onStateChange(newState);\n setState(newState);\n };\n\n return (\n <DrawerContext.Provider\n value={{\n state,\n variant,\n selectedItemId,\n underAppBar,\n drawerWidth: drawerWidthProp,\n switchState: () => handleChangeState(targetStates[variant][state === \"open\" ? 0 : 1]),\n collapse: () => handleChangeState(\"collapse\"),\n close: () => handleChangeState(\"close\"),\n open: () => handleChangeState(\"open\"),\n setState,\n }}\n >\n {children}\n </DrawerContext.Provider>\n );\n};\n","import { Theme, CSSObject } from \"@mui/material/styles\";\n\nexport const drawerWidth = 240;\n\nexport const openedMixin = (theme: Theme): CSSObject => ({\n width: drawerWidth,\n transition: theme.transitions.create(\"width\", {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.enteringScreen,\n }),\n overflowX: \"hidden\",\n});\n\nexport const closedMixin = (theme: Theme): CSSObject => ({\n transition: theme.transitions.create(\"width\", {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n overflowX: \"hidden\",\n width: `calc(${theme.spacing(7)} + 1px)`,\n [theme.breakpoints.up(\"sm\")]: {\n width: `calc(${theme.spacing(8)} + 1px)`,\n },\n});\n","import { styled, useTheme } from \"@mui/material/styles\";\nimport { PropsWithChildren } from \"react\";\nimport { DrawerHeader, useDrawer } from \"../drawer-provider\";\nimport { DrawerVariant } from \"../drawer\";\n\nconst drawerSpace: Record<DrawerVariant, boolean> = {\n temporary: false,\n mini: true,\n clipped: true,\n persistent: true,\n};\n\nconst StyledDiv = styled(\"div\")(({ theme }) => {\n const { spacing } = useTheme();\n const { drawerWidth, state, variant } = useDrawer();\n\n const marginLeft = drawerSpace[variant]\n ? state === \"open\"\n ? drawerWidth\n : state === \"collapse\"\n ? spacing(8)\n : 0\n : 0;\n\n return {\n marginLeft,\n transition: theme.transitions.create(\"margin\", {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n };\n});\n\nexport type DrawerMainProps = PropsWithChildren;\n\nexport const DrawerMain = ({ children }: DrawerMainProps) => (\n <StyledDiv>\n <DrawerHeader />\n {children}\n </StyledDiv>\n);\n","import { ReactNode } from \"react\";\nimport { DrawerProvider, DrawerProviderProps } from \"../drawer-provider\";\nimport { DrawerMain } from \"../drawer-main\";\nimport { DrawerAppBarElement, DrawerElement } from \"../drawer/drawer.types\";\n\nexport interface DrawerLayoutProps {\n drawerProviderProps?: DrawerProviderProps;\n children: [DrawerElement, DrawerAppBarElement, ReactNode];\n}\n\nexport const DrawerLayout = ({\n drawerProviderProps,\n children: childrenProps,\n}: DrawerLayoutProps) => {\n const [appBar, drawer, children] = childrenProps;\n\n return (\n <DrawerProvider {...drawerProviderProps}>\n {appBar}\n {drawer}\n <DrawerMain>{children}</DrawerMain>\n </DrawerProvider>\n );\n};\n"],"names":["DrawerContext","createContext","undefined","UndefinedProvider","Error","DrawerHeader","styled","theme","display","alignItems","justifyContent","padding","spacing","mixins","toolbar","initialState","temporary","mini","clipped","persistent","targetStates","DrawerProvider","children","initialStateProp","variant","drawerWidth","drawerWidthProp","underAppBar","selectedItemId","onStateChange","state","setState","useState","handleChangeState","newState","_jsx","Provider","value","switchState","collapse","close","open","drawerSpace","StyledDiv","useTheme","context","useContext","useDrawer","marginLeft","transition","transitions","create","easing","sharp","duration","leavingScreen","DrawerMain","_jsxs","DrawerLayout","drawerProviderProps","childrenProps","appBar","drawer"],"mappings":"kVAgBO,MAAMA,EAAgBC,OAA8CC,GAC9DC,EAAoB,IAAIC,MAAM,wDCP9BC,EAAeC,EAAO,MAAPA,EAAc,EAAGC,YAAa,CACxDC,QAAS,OACTC,WAAY,SACZC,eAAgB,WAChBC,QAASJ,EAAMK,QAAQ,EAAG,MACvBL,EAAMM,OAAOC,YCTZC,EAAmD,CACvDC,UAAW,QACXC,KAAM,WACNC,QAAS,OACTC,WAAY,SAGRC,EAAkE,CACtEJ,UAAW,CAAC,QAAS,QACrBC,KAAM,CAAC,WAAY,QACnBC,QAAS,CAAC,OAAQ,QAClBC,WAAY,CAAC,QAAS,SAYXE,EAAiB,EAC5BC,WACAP,aAAcQ,EACdC,UAAU,YACVC,YAAaC,EC/BY,IDgCzBC,eAAc,EACdC,iBACAC,gBAAgB,KAAM,UAEtB,MAAOC,EAAOC,GAAYC,EAAsBT,GAAoBR,EAAaS,IAE3ES,EAAqBC,IACzBL,EAAcK,GACdH,EAASG,EAAS,EAGpB,OACEC,EAACnC,EAAcoC,SAAQ,CACrBC,MAAO,CACLP,QACAN,UACAI,iBACAD,cACAF,YAAaC,EACbY,YAAa,IAAML,EAAkBb,EAAaI,GAAmB,SAAVM,EAAmB,EAAI,IAClFS,SAAU,IAAMN,EAAkB,YAClCO,MAAO,IAAMP,EAAkB,SAC/BQ,KAAM,IAAMR,EAAkB,QAC9BF,YAGDT,SAAAA,GAEH,EEzDEoB,EAA8C,CAClD1B,WAAW,EACXC,MAAM,EACNC,SAAS,EACTC,YAAY,GAGRwB,EAAYrC,EAAO,MAAPA,EAAc,EAAGC,YACjC,MAAMK,QAAEA,GAAYgC,KACdnB,YAAEA,EAAWK,MAAEA,EAAKN,QAAEA,GJKL,MACvB,MAAMqB,EAAUC,EAAW9C,GAE3B,QAAgBE,IAAZ2C,EACF,MAAM1C,EAGR,OAAO0C,CAAO,EIZ0BE,GAUxC,MAAO,CACLC,WATiBN,EAAYlB,GACjB,SAAVM,EACEL,EACU,aAAVK,EACAlB,EAAQ,GACR,EACF,EAIFqC,WAAY1C,EAAM2C,YAAYC,OAAO,SAAU,CAC7CC,OAAQ7C,EAAM2C,YAAYE,OAAOC,MACjCC,SAAU/C,EAAM2C,YAAYI,SAASC,gBAExC,IAKUC,EAAa,EAAGlC,cAC3BmC,EAACd,aACCR,EAAC9B,MACAiB,KC5BQoC,EAAe,EAC1BC,sBACArC,SAAUsC,MAEV,MAAOC,EAAQC,EAAQxC,GAAYsC,EAEnC,OACEH,EAACpC,EAAmB,IAAAsC,YACjBE,EACAC,EACD3B,EAACqB,EAAU,CAAAlC,SAAEA,MAEf"}
1
+ {"version":3,"file":"index.js","sources":["../../src/drawer-provider/drawer-context.ts","../../src/drawer/drawer.tsx","../../src/drawer-provider/drawer.provider.tsx","../../src/drawer-provider/drawer-mixins.ts","../../src/drawer-main/drawer-main.tsx","../../src/drawer-layout/drawer-layout.tsx"],"sourcesContent":["import { useContext, createContext } from \"react\";\nimport { DrawerState, DrawerVariant } from \"../drawer\";\n\nexport interface DrawerContextProps {\n selectedItemId?: string;\n state: DrawerState;\n variant: DrawerVariant;\n drawerWidth: number;\n underAppBar: boolean;\n switchState(): void;\n close(): void;\n collapse(): void;\n open(): void;\n setState: (state: DrawerState) => void;\n}\n\nexport const DrawerContext = createContext<DrawerContextProps | undefined>(undefined);\nexport const UndefinedProvider = new Error(\"DrawerContext.Provider is required and was undefined\");\n\nexport const useDrawer = () => {\n const context = useContext(DrawerContext);\n\n if (context === undefined) {\n throw UndefinedProvider;\n }\n\n return context;\n};\n","import { SxProps, Theme, styled, useTheme } from \"@mui/material/styles\";\nimport MuiDrawer, { drawerClasses } from \"@mui/material/Drawer\";\nimport { paperClasses } from \"@mui/material/Paper\";\nimport Divider from \"@mui/material/Divider\";\nimport IconButton from \"@mui/material/IconButton\";\nimport ChevronLeftIcon from \"@mui/icons-material/ChevronLeft\";\nimport { DrawerComponent, DrawerProps, DrawerState, DrawerVariant } from \"./drawer.types\";\nimport { useDrawer } from \"../drawer-provider/drawer-context\";\nimport { closedMixin, openedMixin } from \"../drawer-provider/drawer-mixins\";\n\nexport const DrawerHeader = styled(\"div\")(({ theme }) => ({\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n padding: theme.spacing(0, 1),\n ...theme.mixins.toolbar,\n}));\n\nconst showCloseButton: Record<DrawerVariant, boolean> = {\n temporary: true,\n mini: true,\n persistent: true,\n clipped: false,\n};\n\nconst muiDrawerVariant: Record<DrawerVariant, \"permanent\" | \"persistent\" | \"temporary\"> = {\n temporary: \"temporary\",\n mini: \"permanent\",\n clipped: \"permanent\",\n persistent: \"persistent\",\n};\n\ntype SxGenerator = (state: DrawerState, theme: Theme) => SxProps<Theme>;\nconst NoopSxGenerator = () => ({});\nconst variantsSx: Readonly<Record<DrawerVariant, SxGenerator>> = {\n mini: (state: DrawerState, theme: Theme) => ({\n boxSizing: \"border-box\",\n [`& .${paperClasses.root}`]: {\n zIndex: theme.zIndex.drawer - 1,\n },\n }),\n temporary: NoopSxGenerator,\n clipped: NoopSxGenerator,\n persistent: NoopSxGenerator,\n};\n\nexport const Drawer: DrawerComponent = ({ children, ...rest }: DrawerProps) => {\n const theme = useTheme();\n const { state, switchState, underAppBar, close, drawerWidth, variant } = useDrawer();\n\n const sx: any = {\n width: drawerWidth,\n flexShrink: 0,\n whiteSpace: \"nowrap\",\n ...(state === \"open\" && {\n ...openedMixin(theme),\n [`& .${drawerClasses.paper}`]: openedMixin(theme),\n }),\n ...(state !== \"open\" && {\n ...closedMixin(theme),\n [`& .${drawerClasses.paper}`]: closedMixin(theme),\n }),\n ...variantsSx[variant](state, theme),\n };\n\n return (\n <MuiDrawer\n open={state === \"open\"}\n variant={muiDrawerVariant[variant]}\n role=\"menu\"\n aria-hidden={state === \"close\"}\n onClose={close}\n sx={sx}\n {...rest}\n >\n <DrawerHeader>\n {!underAppBar && showCloseButton[variant] && (\n <IconButton onClick={switchState}>\n <ChevronLeftIcon />\n </IconButton>\n )}\n </DrawerHeader>\n <Divider />\n {children}\n </MuiDrawer>\n );\n};\n","import { useState } from \"react\";\nimport { PropsWithChildren } from \"react\";\nimport { DrawerContext } from \"./drawer-context\";\nimport { DrawerState, DrawerVariant } from \"../drawer\";\nimport { drawerWidth } from \"./drawer-mixins\";\n\nconst initialState: Record<DrawerVariant, DrawerState> = {\n temporary: \"close\",\n mini: \"collapse\",\n clipped: \"open\",\n persistent: \"close\",\n};\n\nconst targetStates: Record<DrawerVariant, [DrawerState, DrawerState]> = {\n temporary: [\"close\", \"open\"],\n mini: [\"collapse\", \"open\"],\n clipped: [\"open\", \"open\"],\n persistent: [\"close\", \"open\"],\n};\n\nexport type DrawerProviderProps = PropsWithChildren<{\n initialState?: DrawerState;\n underAppBar?: boolean;\n drawerWidth?: number;\n variant?: DrawerVariant;\n selectedItemId?: string;\n onStateChange?: (newState: DrawerState) => void;\n}>;\n\nexport const DrawerProvider = ({\n children,\n initialState: initialStateProp,\n variant = \"temporary\",\n drawerWidth: drawerWidthProp = drawerWidth,\n underAppBar = false,\n selectedItemId,\n onStateChange = () => null,\n}: DrawerProviderProps) => {\n const [state, setState] = useState<DrawerState>(initialStateProp || initialState[variant]);\n\n const handleChangeState = (newState: DrawerState) => {\n onStateChange(newState);\n setState(newState);\n };\n\n return (\n <DrawerContext.Provider\n value={{\n state,\n variant,\n selectedItemId,\n underAppBar,\n drawerWidth: drawerWidthProp,\n switchState: () => handleChangeState(targetStates[variant][state === \"open\" ? 0 : 1]),\n collapse: () => handleChangeState(\"collapse\"),\n close: () => handleChangeState(\"close\"),\n open: () => handleChangeState(\"open\"),\n setState,\n }}\n >\n {children}\n </DrawerContext.Provider>\n );\n};\n","import { Theme, CSSObject } from \"@mui/material/styles\";\n\nexport const drawerWidth = 240;\n\nexport const openedMixin = (theme: Theme): CSSObject => ({\n width: drawerWidth,\n transition: theme.transitions.create(\"width\", {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.enteringScreen,\n }),\n overflowX: \"hidden\",\n});\n\nexport const closedMixin = (theme: Theme): CSSObject => ({\n transition: theme.transitions.create(\"width\", {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n overflowX: \"hidden\",\n width: `calc(${theme.spacing(7)} + 1px)`,\n [theme.breakpoints.up(\"sm\")]: {\n width: `calc(${theme.spacing(8)} + 1px)`,\n },\n});\n","import { styled, useTheme } from \"@mui/material/styles\";\nimport { PropsWithChildren } from \"react\";\nimport { DrawerHeader, useDrawer } from \"../drawer-provider\";\nimport { DrawerVariant } from \"../drawer\";\n\nconst drawerSpace: Record<DrawerVariant, boolean> = {\n temporary: false,\n mini: true,\n clipped: true,\n persistent: true,\n};\n\nconst StyledDiv = styled(\"div\")(({ theme }) => {\n const { spacing } = useTheme();\n const { drawerWidth, state, variant } = useDrawer();\n\n const marginLeft = drawerSpace[variant]\n ? state === \"open\"\n ? drawerWidth\n : state === \"collapse\"\n ? spacing(8)\n : 0\n : 0;\n\n return {\n marginLeft,\n transition: theme.transitions.create(\"margin\", {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n };\n});\n\nexport type DrawerMainProps = PropsWithChildren;\n\nexport const DrawerMain = ({ children }: DrawerMainProps) => (\n <StyledDiv>\n <DrawerHeader />\n {children}\n </StyledDiv>\n);\n","import { ReactNode } from \"react\";\nimport { DrawerProvider, DrawerProviderProps } from \"../drawer-provider\";\nimport { DrawerMain } from \"../drawer-main\";\nimport { DrawerAppBarElement, DrawerElement } from \"../drawer/drawer.types\";\n\nexport interface DrawerLayoutProps {\n drawerProviderProps?: DrawerProviderProps;\n children: [DrawerElement, DrawerAppBarElement, ReactNode];\n}\n\nexport const DrawerLayout = ({\n drawerProviderProps,\n children: childrenProps,\n}: DrawerLayoutProps) => {\n const [appBar, drawer, children] = childrenProps;\n\n return (\n <DrawerProvider {...drawerProviderProps}>\n {appBar}\n {drawer}\n <DrawerMain>{children}</DrawerMain>\n </DrawerProvider>\n );\n};\n"],"names":["DrawerContext","createContext","undefined","UndefinedProvider","Error","DrawerHeader","styled","theme","display","alignItems","justifyContent","padding","spacing","mixins","toolbar","initialState","temporary","mini","clipped","persistent","targetStates","DrawerProvider","children","initialStateProp","variant","drawerWidth","drawerWidthProp","underAppBar","selectedItemId","onStateChange","state","setState","useState","handleChangeState","newState","_jsx","Provider","value","switchState","collapse","close","open","drawerSpace","StyledDiv","useTheme","context","useContext","useDrawer","marginLeft","transition","transitions","create","easing","sharp","duration","leavingScreen","DrawerMain","_jsxs","DrawerLayout","drawerProviderProps","childrenProps","appBar","drawer"],"mappings":"kVAgBO,MAAMA,EAAgBC,OAA8CC,GAC9DC,EAAoB,IAAIC,MAAM,wDCP9BC,EAAeC,EAAO,MAAPA,EAAc,EAAGC,YAAa,CACxDC,QAAS,OACTC,WAAY,SACZC,eAAgB,WAChBC,QAASJ,EAAMK,QAAQ,EAAG,MACvBL,EAAMM,OAAOC,YCTZC,EAAmD,CACvDC,UAAW,QACXC,KAAM,WACNC,QAAS,OACTC,WAAY,SAGRC,EAAkE,CACtEJ,UAAW,CAAC,QAAS,QACrBC,KAAM,CAAC,WAAY,QACnBC,QAAS,CAAC,OAAQ,QAClBC,WAAY,CAAC,QAAS,SAYXE,EAAiB,EAC5BC,WACAP,aAAcQ,EACdC,UAAU,YACVC,YAAaC,EC/BY,IDgCzBC,eAAc,EACdC,iBACAC,gBAAgB,KAAM,UAEtB,MAAOC,EAAOC,GAAYC,EAAsBT,GAAoBR,EAAaS,IAE3ES,EAAqBC,IACzBL,EAAcK,GACdH,EAASG,EAAS,EAGpB,OACEC,EAACnC,EAAcoC,SAAQ,CACrBC,MAAO,CACLP,QACAN,UACAI,iBACAD,cACAF,YAAaC,EACbY,YAAa,IAAML,EAAkBb,EAAaI,GAAmB,SAAVM,EAAmB,EAAI,IAClFS,SAAU,IAAMN,EAAkB,YAClCO,MAAO,IAAMP,EAAkB,SAC/BQ,KAAM,IAAMR,EAAkB,QAC9BF,YAGDT,SAAAA,GACsB,EExDvBoB,EAA8C,CAClD1B,WAAW,EACXC,MAAM,EACNC,SAAS,EACTC,YAAY,GAGRwB,EAAYrC,EAAO,MAAPA,EAAc,EAAGC,YACjC,MAAMK,QAAEA,GAAYgC,KACdnB,YAAEA,EAAWK,MAAEA,EAAKN,QAAEA,GJKL,MACvB,MAAMqB,EAAUC,EAAW9C,GAE3B,QAAgBE,IAAZ2C,EACF,MAAM1C,EAGR,OAAO0C,CAAO,EIZ0BE,GAUxC,MAAO,CACLC,WATiBN,EAAYlB,GACjB,SAAVM,EACEL,EACU,aAAVK,EACElB,EAAQ,GACR,EACJ,EAIFqC,WAAY1C,EAAM2C,YAAYC,OAAO,SAAU,CAC7CC,OAAQ7C,EAAM2C,YAAYE,OAAOC,MACjCC,SAAU/C,EAAM2C,YAAYI,SAASC,gBAExC,IAKUC,EAAa,EAAGlC,cAC3BmC,EAACd,aACCR,EAAC9B,MACAiB,KC5BQoC,EAAe,EAC1BC,sBACArC,SAAUsC,MAEV,MAAOC,EAAQC,EAAQxC,GAAYsC,EAEnC,OACEH,EAACpC,EAAmB,IAAAsC,YACjBE,EACAC,EACD3B,EAACqB,EAAU,CAAAlC,SAAEA,MACE"}
@@ -5,8 +5,8 @@
5
5
  "module": "./index.js",
6
6
  "types": "./index.d.ts",
7
7
  "dependencies": {
8
- "@mui/icons-material": "^5.11.16",
9
- "@mui/material": "^5.13.6",
10
- "react": "^18.2.0"
8
+ "@mui/icons-material": "^6.4.5",
9
+ "@mui/material": "^6.4.5",
10
+ "react": "^19.0.0"
11
11
  }
12
12
  }
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),r=require("@mui/material/styles");require("@mui/material/Drawer"),require("@mui/material/Paper"),require("@mui/material/Divider"),require("@mui/material/IconButton"),require("@mui/icons-material/ChevronLeft");var i=require("react");const t=i.createContext(void 0),a=new Error("DrawerContext.Provider is required and was undefined"),n=r.styled("div")((({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"flex-end",padding:e.spacing(0,1),...e.mixins.toolbar}))),s={temporary:!1,mini:!0,clipped:!0,persistent:!0},o=r.styled("div")((({theme:e})=>{const{spacing:n}=r.useTheme(),{drawerWidth:o,state:u,variant:d}=(()=>{const e=i.useContext(t);if(void 0===e)throw a;return e})();return{marginLeft:s[d]?"open"===u?o:"collapse"===u?n(8):0:0,transition:e.transitions.create("margin",{easing:e.transitions.easing.sharp,duration:e.transitions.duration.leavingScreen})}}));exports.DrawerMain=({children:r})=>e.jsxs(o,{children:[e.jsx(n,{}),r]});
1
+ "use strict";var e=require("react/jsx-runtime"),r=require("@mui/material/styles");require("@mui/material/Drawer"),require("@mui/material/Paper"),require("@mui/material/Divider"),require("@mui/material/IconButton"),require("@mui/icons-material/ChevronLeft");var i=require("react");const t=i.createContext(void 0),a=new Error("DrawerContext.Provider is required and was undefined"),n=r.styled("div")((({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"flex-end",padding:e.spacing(0,1),...e.mixins.toolbar}))),s={temporary:!1,mini:!0,clipped:!0,persistent:!0},o=r.styled("div")((({theme:e})=>{const{spacing:n}=r.useTheme(),{drawerWidth:o,state:u,variant:d}=(()=>{const e=i.useContext(t);if(void 0===e)throw a;return e})();return{marginLeft:s[d]?"open"===u?o:"collapse"===u?n(8):0:0,transition:e.transitions.create("margin",{easing:e.transitions.easing.sharp,duration:e.transitions.duration.leavingScreen})}}));exports.DrawerMain=({children:r})=>e.jsxs(o,{children:[e.jsx(n,{}),r]});
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/drawer-provider/drawer-context.ts","../../../src/drawer/drawer.tsx","../../../src/drawer-main/drawer-main.tsx"],"sourcesContent":["import { useContext, createContext } from \"react\";\nimport { DrawerState, DrawerVariant } from \"../drawer\";\n\nexport interface DrawerContextProps {\n selectedItemId?: string;\n state: DrawerState;\n variant: DrawerVariant;\n drawerWidth: number;\n underAppBar: boolean;\n switchState(): void;\n close(): void;\n collapse(): void;\n open(): void;\n setState: (state: DrawerState) => void;\n}\n\nexport const DrawerContext = createContext<DrawerContextProps | undefined>(undefined);\nexport const UndefinedProvider = new Error(\"DrawerContext.Provider is required and was undefined\");\n\nexport const useDrawer = () => {\n const context = useContext(DrawerContext);\n\n if (context === undefined) {\n throw UndefinedProvider;\n }\n\n return context;\n};\n","import { SxProps, Theme, styled, useTheme } from \"@mui/material/styles\";\nimport MuiDrawer, { drawerClasses } from \"@mui/material/Drawer\";\nimport { paperClasses } from \"@mui/material/Paper\";\nimport Divider from \"@mui/material/Divider\";\nimport IconButton from \"@mui/material/IconButton\";\nimport ChevronLeftIcon from \"@mui/icons-material/ChevronLeft\";\nimport { DrawerComponent, DrawerProps, DrawerState, DrawerVariant } from \"./drawer.types\";\nimport { useDrawer } from \"../drawer-provider/drawer-context\";\nimport { closedMixin, openedMixin } from \"../drawer-provider/drawer-mixins\";\n\nexport const DrawerHeader = styled(\"div\")(({ theme }) => ({\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n padding: theme.spacing(0, 1),\n ...theme.mixins.toolbar,\n}));\n\nconst showCloseButton: Record<DrawerVariant, boolean> = {\n temporary: true,\n mini: true,\n persistent: true,\n clipped: false,\n};\n\nconst muiDrawerVariant: Record<DrawerVariant, \"permanent\" | \"persistent\" | \"temporary\"> = {\n temporary: \"temporary\",\n mini: \"permanent\",\n clipped: \"permanent\",\n persistent: \"persistent\",\n};\n\ntype SxGenerator = (state: DrawerState, theme: Theme) => SxProps<Theme>;\nconst NoopSxGenerator = () => ({});\nconst variantsSx: Readonly<Record<DrawerVariant, SxGenerator>> = {\n mini: (state: DrawerState, theme: Theme) => ({\n boxSizing: \"border-box\",\n [`& .${paperClasses.root}`]: {\n zIndex: theme.zIndex.drawer - 1,\n },\n }),\n temporary: NoopSxGenerator,\n clipped: NoopSxGenerator,\n persistent: NoopSxGenerator,\n};\n\nexport const Drawer: DrawerComponent = ({ children, ...rest }: DrawerProps) => {\n const theme = useTheme();\n const { state, switchState, underAppBar, close, drawerWidth, variant } = useDrawer();\n\n const sx: any = {\n width: drawerWidth,\n flexShrink: 0,\n whiteSpace: \"nowrap\",\n ...(state === \"open\" && {\n ...openedMixin(theme),\n [`& .${drawerClasses.paper}`]: openedMixin(theme),\n }),\n ...(state !== \"open\" && {\n ...closedMixin(theme),\n [`& .${drawerClasses.paper}`]: closedMixin(theme),\n }),\n ...variantsSx[variant](state, theme),\n };\n\n return (\n <MuiDrawer\n open={state === \"open\"}\n variant={muiDrawerVariant[variant]}\n role=\"menu\"\n aria-hidden={state === \"close\"}\n onClose={close}\n sx={sx}\n {...rest}\n >\n <DrawerHeader>\n {!underAppBar && showCloseButton[variant] && (\n <IconButton onClick={switchState}>\n <ChevronLeftIcon />\n </IconButton>\n )}\n </DrawerHeader>\n <Divider />\n {children}\n </MuiDrawer>\n );\n};\n","import { styled, useTheme } from \"@mui/material/styles\";\nimport { PropsWithChildren } from \"react\";\nimport { DrawerHeader, useDrawer } from \"../drawer-provider\";\nimport { DrawerVariant } from \"../drawer\";\n\nconst drawerSpace: Record<DrawerVariant, boolean> = {\n temporary: false,\n mini: true,\n clipped: true,\n persistent: true,\n};\n\nconst StyledDiv = styled(\"div\")(({ theme }) => {\n const { spacing } = useTheme();\n const { drawerWidth, state, variant } = useDrawer();\n\n const marginLeft = drawerSpace[variant]\n ? state === \"open\"\n ? drawerWidth\n : state === \"collapse\"\n ? spacing(8)\n : 0\n : 0;\n\n return {\n marginLeft,\n transition: theme.transitions.create(\"margin\", {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n };\n});\n\nexport type DrawerMainProps = PropsWithChildren;\n\nexport const DrawerMain = ({ children }: DrawerMainProps) => (\n <StyledDiv>\n <DrawerHeader />\n {children}\n </StyledDiv>\n);\n"],"names":["DrawerContext","createContext","undefined","UndefinedProvider","Error","DrawerHeader","styled","theme","display","alignItems","justifyContent","padding","spacing","mixins","toolbar","drawerSpace","temporary","mini","clipped","persistent","StyledDiv","useTheme","drawerWidth","state","variant","context","useContext","useDrawer","marginLeft","transition","transitions","create","easing","sharp","duration","leavingScreen","children","_jsxs","_jsx","jsx"],"mappings":"+UAgBO,MAAMA,EAAgBC,EAAAA,mBAA8CC,GAC9DC,EAAoB,IAAIC,MAAM,wDCP9BC,EAAeC,EAAAA,OAAO,MAAPA,EAAc,EAAGC,YAAa,CACxDC,QAAS,OACTC,WAAY,SACZC,eAAgB,WAChBC,QAASJ,EAAMK,QAAQ,EAAG,MACvBL,EAAMM,OAAOC,YCVZC,EAA8C,CAClDC,WAAW,EACXC,MAAM,EACNC,SAAS,EACTC,YAAY,GAGRC,EAAYd,EAAAA,OAAO,MAAPA,EAAc,EAAGC,YACjC,MAAMK,QAAEA,GAAYS,EAAAA,YACdC,YAAEA,EAAWC,MAAEA,EAAKC,QAAEA,GFKL,MACvB,MAAMC,EAAUC,aAAW1B,GAE3B,QAAgBE,IAAZuB,EACF,MAAMtB,EAGR,OAAOsB,CAAO,EEZ0BE,GAUxC,MAAO,CACLC,WATiBb,EAAYS,GACjB,SAAVD,EACED,EACU,aAAVC,EACAX,EAAQ,GACR,EACF,EAIFiB,WAAYtB,EAAMuB,YAAYC,OAAO,SAAU,CAC7CC,OAAQzB,EAAMuB,YAAYE,OAAOC,MACjCC,SAAU3B,EAAMuB,YAAYI,SAASC,gBAExC,uBAKuB,EAAGC,cAC3BC,EAAAA,KAACjB,aACCkB,EAACC,IAAAlC,MACA+B"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/drawer-provider/drawer-context.ts","../../../src/drawer/drawer.tsx","../../../src/drawer-main/drawer-main.tsx"],"sourcesContent":["import { useContext, createContext } from \"react\";\nimport { DrawerState, DrawerVariant } from \"../drawer\";\n\nexport interface DrawerContextProps {\n selectedItemId?: string;\n state: DrawerState;\n variant: DrawerVariant;\n drawerWidth: number;\n underAppBar: boolean;\n switchState(): void;\n close(): void;\n collapse(): void;\n open(): void;\n setState: (state: DrawerState) => void;\n}\n\nexport const DrawerContext = createContext<DrawerContextProps | undefined>(undefined);\nexport const UndefinedProvider = new Error(\"DrawerContext.Provider is required and was undefined\");\n\nexport const useDrawer = () => {\n const context = useContext(DrawerContext);\n\n if (context === undefined) {\n throw UndefinedProvider;\n }\n\n return context;\n};\n","import { SxProps, Theme, styled, useTheme } from \"@mui/material/styles\";\nimport MuiDrawer, { drawerClasses } from \"@mui/material/Drawer\";\nimport { paperClasses } from \"@mui/material/Paper\";\nimport Divider from \"@mui/material/Divider\";\nimport IconButton from \"@mui/material/IconButton\";\nimport ChevronLeftIcon from \"@mui/icons-material/ChevronLeft\";\nimport { DrawerComponent, DrawerProps, DrawerState, DrawerVariant } from \"./drawer.types\";\nimport { useDrawer } from \"../drawer-provider/drawer-context\";\nimport { closedMixin, openedMixin } from \"../drawer-provider/drawer-mixins\";\n\nexport const DrawerHeader = styled(\"div\")(({ theme }) => ({\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n padding: theme.spacing(0, 1),\n ...theme.mixins.toolbar,\n}));\n\nconst showCloseButton: Record<DrawerVariant, boolean> = {\n temporary: true,\n mini: true,\n persistent: true,\n clipped: false,\n};\n\nconst muiDrawerVariant: Record<DrawerVariant, \"permanent\" | \"persistent\" | \"temporary\"> = {\n temporary: \"temporary\",\n mini: \"permanent\",\n clipped: \"permanent\",\n persistent: \"persistent\",\n};\n\ntype SxGenerator = (state: DrawerState, theme: Theme) => SxProps<Theme>;\nconst NoopSxGenerator = () => ({});\nconst variantsSx: Readonly<Record<DrawerVariant, SxGenerator>> = {\n mini: (state: DrawerState, theme: Theme) => ({\n boxSizing: \"border-box\",\n [`& .${paperClasses.root}`]: {\n zIndex: theme.zIndex.drawer - 1,\n },\n }),\n temporary: NoopSxGenerator,\n clipped: NoopSxGenerator,\n persistent: NoopSxGenerator,\n};\n\nexport const Drawer: DrawerComponent = ({ children, ...rest }: DrawerProps) => {\n const theme = useTheme();\n const { state, switchState, underAppBar, close, drawerWidth, variant } = useDrawer();\n\n const sx: any = {\n width: drawerWidth,\n flexShrink: 0,\n whiteSpace: \"nowrap\",\n ...(state === \"open\" && {\n ...openedMixin(theme),\n [`& .${drawerClasses.paper}`]: openedMixin(theme),\n }),\n ...(state !== \"open\" && {\n ...closedMixin(theme),\n [`& .${drawerClasses.paper}`]: closedMixin(theme),\n }),\n ...variantsSx[variant](state, theme),\n };\n\n return (\n <MuiDrawer\n open={state === \"open\"}\n variant={muiDrawerVariant[variant]}\n role=\"menu\"\n aria-hidden={state === \"close\"}\n onClose={close}\n sx={sx}\n {...rest}\n >\n <DrawerHeader>\n {!underAppBar && showCloseButton[variant] && (\n <IconButton onClick={switchState}>\n <ChevronLeftIcon />\n </IconButton>\n )}\n </DrawerHeader>\n <Divider />\n {children}\n </MuiDrawer>\n );\n};\n","import { styled, useTheme } from \"@mui/material/styles\";\nimport { PropsWithChildren } from \"react\";\nimport { DrawerHeader, useDrawer } from \"../drawer-provider\";\nimport { DrawerVariant } from \"../drawer\";\n\nconst drawerSpace: Record<DrawerVariant, boolean> = {\n temporary: false,\n mini: true,\n clipped: true,\n persistent: true,\n};\n\nconst StyledDiv = styled(\"div\")(({ theme }) => {\n const { spacing } = useTheme();\n const { drawerWidth, state, variant } = useDrawer();\n\n const marginLeft = drawerSpace[variant]\n ? state === \"open\"\n ? drawerWidth\n : state === \"collapse\"\n ? spacing(8)\n : 0\n : 0;\n\n return {\n marginLeft,\n transition: theme.transitions.create(\"margin\", {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n };\n});\n\nexport type DrawerMainProps = PropsWithChildren;\n\nexport const DrawerMain = ({ children }: DrawerMainProps) => (\n <StyledDiv>\n <DrawerHeader />\n {children}\n </StyledDiv>\n);\n"],"names":["DrawerContext","createContext","undefined","UndefinedProvider","Error","DrawerHeader","styled","theme","display","alignItems","justifyContent","padding","spacing","mixins","toolbar","drawerSpace","temporary","mini","clipped","persistent","StyledDiv","useTheme","drawerWidth","state","variant","context","useContext","useDrawer","marginLeft","transition","transitions","create","easing","sharp","duration","leavingScreen","children","_jsxs","_jsx","jsx"],"mappings":"wRAgBO,MAAMA,EAAgBC,EAAaA,mBAAiCC,GAC9DC,EAAoB,IAAIC,MAAM,wDCP9BC,EAAeC,EAAAA,OAAO,MAAPA,EAAc,EAAGC,YAAa,CACxDC,QAAS,OACTC,WAAY,SACZC,eAAgB,WAChBC,QAASJ,EAAMK,QAAQ,EAAG,MACvBL,EAAMM,OAAOC,YCVZC,EAA8C,CAClDC,WAAW,EACXC,MAAM,EACNC,SAAS,EACTC,YAAY,GAGRC,EAAYd,EAAAA,OAAO,MAAPA,EAAc,EAAGC,YACjC,MAAMK,QAAEA,GAAYS,cACdC,YAAEA,EAAWC,MAAEA,EAAKC,QAAEA,GFKL,MACvB,MAAMC,EAAUC,EAAUA,WAAC1B,GAE3B,QAAgBE,IAAZuB,EACF,MAAMtB,EAGR,OAAOsB,CAAO,EEZ0BE,GAUxC,MAAO,CACLC,WATiBb,EAAYS,GACjB,SAAVD,EACED,EACU,aAAVC,EACEX,EAAQ,GACR,EACJ,EAIFiB,WAAYtB,EAAMuB,YAAYC,OAAO,SAAU,CAC7CC,OAAQzB,EAAMuB,YAAYE,OAAOC,MACjCC,SAAU3B,EAAMuB,YAAYI,SAASC,gBAExC,uBAKuB,EAAGC,cAC3BC,EAAAA,KAACjB,aACCkB,EAACC,IAAAlC,MACA+B"}
@@ -5,8 +5,8 @@
5
5
  "module": "./index.js",
6
6
  "types": "./index.d.ts",
7
7
  "dependencies": {
8
- "@mui/icons-material": "^5.11.16",
9
- "@mui/material": "^5.13.6",
10
- "react": "^18.2.0"
8
+ "@mui/icons-material": "^6.4.5",
9
+ "@mui/material": "^6.4.5",
10
+ "react": "^19.0.0"
11
11
  }
12
12
  }
@@ -1,3 +1,3 @@
1
1
  import { PropsWithChildren } from "react";
2
2
  export type DrawerMainProps = PropsWithChildren;
3
- export declare const DrawerMain: ({ children }: DrawerMainProps) => JSX.Element;
3
+ export declare const DrawerMain: ({ children }: DrawerMainProps) => import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/drawer-provider/drawer-context.ts","../../src/drawer/drawer.tsx","../../src/drawer-main/drawer-main.tsx"],"sourcesContent":["import { useContext, createContext } from \"react\";\nimport { DrawerState, DrawerVariant } from \"../drawer\";\n\nexport interface DrawerContextProps {\n selectedItemId?: string;\n state: DrawerState;\n variant: DrawerVariant;\n drawerWidth: number;\n underAppBar: boolean;\n switchState(): void;\n close(): void;\n collapse(): void;\n open(): void;\n setState: (state: DrawerState) => void;\n}\n\nexport const DrawerContext = createContext<DrawerContextProps | undefined>(undefined);\nexport const UndefinedProvider = new Error(\"DrawerContext.Provider is required and was undefined\");\n\nexport const useDrawer = () => {\n const context = useContext(DrawerContext);\n\n if (context === undefined) {\n throw UndefinedProvider;\n }\n\n return context;\n};\n","import { SxProps, Theme, styled, useTheme } from \"@mui/material/styles\";\nimport MuiDrawer, { drawerClasses } from \"@mui/material/Drawer\";\nimport { paperClasses } from \"@mui/material/Paper\";\nimport Divider from \"@mui/material/Divider\";\nimport IconButton from \"@mui/material/IconButton\";\nimport ChevronLeftIcon from \"@mui/icons-material/ChevronLeft\";\nimport { DrawerComponent, DrawerProps, DrawerState, DrawerVariant } from \"./drawer.types\";\nimport { useDrawer } from \"../drawer-provider/drawer-context\";\nimport { closedMixin, openedMixin } from \"../drawer-provider/drawer-mixins\";\n\nexport const DrawerHeader = styled(\"div\")(({ theme }) => ({\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n padding: theme.spacing(0, 1),\n ...theme.mixins.toolbar,\n}));\n\nconst showCloseButton: Record<DrawerVariant, boolean> = {\n temporary: true,\n mini: true,\n persistent: true,\n clipped: false,\n};\n\nconst muiDrawerVariant: Record<DrawerVariant, \"permanent\" | \"persistent\" | \"temporary\"> = {\n temporary: \"temporary\",\n mini: \"permanent\",\n clipped: \"permanent\",\n persistent: \"persistent\",\n};\n\ntype SxGenerator = (state: DrawerState, theme: Theme) => SxProps<Theme>;\nconst NoopSxGenerator = () => ({});\nconst variantsSx: Readonly<Record<DrawerVariant, SxGenerator>> = {\n mini: (state: DrawerState, theme: Theme) => ({\n boxSizing: \"border-box\",\n [`& .${paperClasses.root}`]: {\n zIndex: theme.zIndex.drawer - 1,\n },\n }),\n temporary: NoopSxGenerator,\n clipped: NoopSxGenerator,\n persistent: NoopSxGenerator,\n};\n\nexport const Drawer: DrawerComponent = ({ children, ...rest }: DrawerProps) => {\n const theme = useTheme();\n const { state, switchState, underAppBar, close, drawerWidth, variant } = useDrawer();\n\n const sx: any = {\n width: drawerWidth,\n flexShrink: 0,\n whiteSpace: \"nowrap\",\n ...(state === \"open\" && {\n ...openedMixin(theme),\n [`& .${drawerClasses.paper}`]: openedMixin(theme),\n }),\n ...(state !== \"open\" && {\n ...closedMixin(theme),\n [`& .${drawerClasses.paper}`]: closedMixin(theme),\n }),\n ...variantsSx[variant](state, theme),\n };\n\n return (\n <MuiDrawer\n open={state === \"open\"}\n variant={muiDrawerVariant[variant]}\n role=\"menu\"\n aria-hidden={state === \"close\"}\n onClose={close}\n sx={sx}\n {...rest}\n >\n <DrawerHeader>\n {!underAppBar && showCloseButton[variant] && (\n <IconButton onClick={switchState}>\n <ChevronLeftIcon />\n </IconButton>\n )}\n </DrawerHeader>\n <Divider />\n {children}\n </MuiDrawer>\n );\n};\n","import { styled, useTheme } from \"@mui/material/styles\";\nimport { PropsWithChildren } from \"react\";\nimport { DrawerHeader, useDrawer } from \"../drawer-provider\";\nimport { DrawerVariant } from \"../drawer\";\n\nconst drawerSpace: Record<DrawerVariant, boolean> = {\n temporary: false,\n mini: true,\n clipped: true,\n persistent: true,\n};\n\nconst StyledDiv = styled(\"div\")(({ theme }) => {\n const { spacing } = useTheme();\n const { drawerWidth, state, variant } = useDrawer();\n\n const marginLeft = drawerSpace[variant]\n ? state === \"open\"\n ? drawerWidth\n : state === \"collapse\"\n ? spacing(8)\n : 0\n : 0;\n\n return {\n marginLeft,\n transition: theme.transitions.create(\"margin\", {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n };\n});\n\nexport type DrawerMainProps = PropsWithChildren;\n\nexport const DrawerMain = ({ children }: DrawerMainProps) => (\n <StyledDiv>\n <DrawerHeader />\n {children}\n </StyledDiv>\n);\n"],"names":["DrawerContext","createContext","undefined","UndefinedProvider","Error","DrawerHeader","styled","theme","display","alignItems","justifyContent","padding","spacing","mixins","toolbar","drawerSpace","temporary","mini","clipped","persistent","StyledDiv","useTheme","drawerWidth","state","variant","context","useContext","useDrawer","marginLeft","transition","transitions","create","easing","sharp","duration","leavingScreen","DrawerMain","children","_jsxs","_jsx"],"mappings":"oUAgBO,MAAMA,EAAgBC,OAA8CC,GAC9DC,EAAoB,IAAIC,MAAM,wDCP9BC,EAAeC,EAAO,MAAPA,EAAc,EAAGC,YAAa,CACxDC,QAAS,OACTC,WAAY,SACZC,eAAgB,WAChBC,QAASJ,EAAMK,QAAQ,EAAG,MACvBL,EAAMM,OAAOC,YCVZC,EAA8C,CAClDC,WAAW,EACXC,MAAM,EACNC,SAAS,EACTC,YAAY,GAGRC,EAAYd,EAAO,MAAPA,EAAc,EAAGC,YACjC,MAAMK,QAAEA,GAAYS,KACdC,YAAEA,EAAWC,MAAEA,EAAKC,QAAEA,GFKL,MACvB,MAAMC,EAAUC,EAAW1B,GAE3B,QAAgBE,IAAZuB,EACF,MAAMtB,EAGR,OAAOsB,CAAO,EEZ0BE,GAUxC,MAAO,CACLC,WATiBb,EAAYS,GACjB,SAAVD,EACED,EACU,aAAVC,EACAX,EAAQ,GACR,EACF,EAIFiB,WAAYtB,EAAMuB,YAAYC,OAAO,SAAU,CAC7CC,OAAQzB,EAAMuB,YAAYE,OAAOC,MACjCC,SAAU3B,EAAMuB,YAAYI,SAASC,gBAExC,IAKUC,EAAa,EAAGC,cAC3BC,EAAClB,aACCmB,EAAClC,MACAgC"}
1
+ {"version":3,"file":"index.js","sources":["../../src/drawer-provider/drawer-context.ts","../../src/drawer/drawer.tsx","../../src/drawer-main/drawer-main.tsx"],"sourcesContent":["import { useContext, createContext } from \"react\";\nimport { DrawerState, DrawerVariant } from \"../drawer\";\n\nexport interface DrawerContextProps {\n selectedItemId?: string;\n state: DrawerState;\n variant: DrawerVariant;\n drawerWidth: number;\n underAppBar: boolean;\n switchState(): void;\n close(): void;\n collapse(): void;\n open(): void;\n setState: (state: DrawerState) => void;\n}\n\nexport const DrawerContext = createContext<DrawerContextProps | undefined>(undefined);\nexport const UndefinedProvider = new Error(\"DrawerContext.Provider is required and was undefined\");\n\nexport const useDrawer = () => {\n const context = useContext(DrawerContext);\n\n if (context === undefined) {\n throw UndefinedProvider;\n }\n\n return context;\n};\n","import { SxProps, Theme, styled, useTheme } from \"@mui/material/styles\";\nimport MuiDrawer, { drawerClasses } from \"@mui/material/Drawer\";\nimport { paperClasses } from \"@mui/material/Paper\";\nimport Divider from \"@mui/material/Divider\";\nimport IconButton from \"@mui/material/IconButton\";\nimport ChevronLeftIcon from \"@mui/icons-material/ChevronLeft\";\nimport { DrawerComponent, DrawerProps, DrawerState, DrawerVariant } from \"./drawer.types\";\nimport { useDrawer } from \"../drawer-provider/drawer-context\";\nimport { closedMixin, openedMixin } from \"../drawer-provider/drawer-mixins\";\n\nexport const DrawerHeader = styled(\"div\")(({ theme }) => ({\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n padding: theme.spacing(0, 1),\n ...theme.mixins.toolbar,\n}));\n\nconst showCloseButton: Record<DrawerVariant, boolean> = {\n temporary: true,\n mini: true,\n persistent: true,\n clipped: false,\n};\n\nconst muiDrawerVariant: Record<DrawerVariant, \"permanent\" | \"persistent\" | \"temporary\"> = {\n temporary: \"temporary\",\n mini: \"permanent\",\n clipped: \"permanent\",\n persistent: \"persistent\",\n};\n\ntype SxGenerator = (state: DrawerState, theme: Theme) => SxProps<Theme>;\nconst NoopSxGenerator = () => ({});\nconst variantsSx: Readonly<Record<DrawerVariant, SxGenerator>> = {\n mini: (state: DrawerState, theme: Theme) => ({\n boxSizing: \"border-box\",\n [`& .${paperClasses.root}`]: {\n zIndex: theme.zIndex.drawer - 1,\n },\n }),\n temporary: NoopSxGenerator,\n clipped: NoopSxGenerator,\n persistent: NoopSxGenerator,\n};\n\nexport const Drawer: DrawerComponent = ({ children, ...rest }: DrawerProps) => {\n const theme = useTheme();\n const { state, switchState, underAppBar, close, drawerWidth, variant } = useDrawer();\n\n const sx: any = {\n width: drawerWidth,\n flexShrink: 0,\n whiteSpace: \"nowrap\",\n ...(state === \"open\" && {\n ...openedMixin(theme),\n [`& .${drawerClasses.paper}`]: openedMixin(theme),\n }),\n ...(state !== \"open\" && {\n ...closedMixin(theme),\n [`& .${drawerClasses.paper}`]: closedMixin(theme),\n }),\n ...variantsSx[variant](state, theme),\n };\n\n return (\n <MuiDrawer\n open={state === \"open\"}\n variant={muiDrawerVariant[variant]}\n role=\"menu\"\n aria-hidden={state === \"close\"}\n onClose={close}\n sx={sx}\n {...rest}\n >\n <DrawerHeader>\n {!underAppBar && showCloseButton[variant] && (\n <IconButton onClick={switchState}>\n <ChevronLeftIcon />\n </IconButton>\n )}\n </DrawerHeader>\n <Divider />\n {children}\n </MuiDrawer>\n );\n};\n","import { styled, useTheme } from \"@mui/material/styles\";\nimport { PropsWithChildren } from \"react\";\nimport { DrawerHeader, useDrawer } from \"../drawer-provider\";\nimport { DrawerVariant } from \"../drawer\";\n\nconst drawerSpace: Record<DrawerVariant, boolean> = {\n temporary: false,\n mini: true,\n clipped: true,\n persistent: true,\n};\n\nconst StyledDiv = styled(\"div\")(({ theme }) => {\n const { spacing } = useTheme();\n const { drawerWidth, state, variant } = useDrawer();\n\n const marginLeft = drawerSpace[variant]\n ? state === \"open\"\n ? drawerWidth\n : state === \"collapse\"\n ? spacing(8)\n : 0\n : 0;\n\n return {\n marginLeft,\n transition: theme.transitions.create(\"margin\", {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n };\n});\n\nexport type DrawerMainProps = PropsWithChildren;\n\nexport const DrawerMain = ({ children }: DrawerMainProps) => (\n <StyledDiv>\n <DrawerHeader />\n {children}\n </StyledDiv>\n);\n"],"names":["DrawerContext","createContext","undefined","UndefinedProvider","Error","DrawerHeader","styled","theme","display","alignItems","justifyContent","padding","spacing","mixins","toolbar","drawerSpace","temporary","mini","clipped","persistent","StyledDiv","useTheme","drawerWidth","state","variant","context","useContext","useDrawer","marginLeft","transition","transitions","create","easing","sharp","duration","leavingScreen","DrawerMain","children","_jsxs","_jsx"],"mappings":"oUAgBO,MAAMA,EAAgBC,OAA8CC,GAC9DC,EAAoB,IAAIC,MAAM,wDCP9BC,EAAeC,EAAO,MAAPA,EAAc,EAAGC,YAAa,CACxDC,QAAS,OACTC,WAAY,SACZC,eAAgB,WAChBC,QAASJ,EAAMK,QAAQ,EAAG,MACvBL,EAAMM,OAAOC,YCVZC,EAA8C,CAClDC,WAAW,EACXC,MAAM,EACNC,SAAS,EACTC,YAAY,GAGRC,EAAYd,EAAO,MAAPA,EAAc,EAAGC,YACjC,MAAMK,QAAEA,GAAYS,KACdC,YAAEA,EAAWC,MAAEA,EAAKC,QAAEA,GFKL,MACvB,MAAMC,EAAUC,EAAW1B,GAE3B,QAAgBE,IAAZuB,EACF,MAAMtB,EAGR,OAAOsB,CAAO,EEZ0BE,GAUxC,MAAO,CACLC,WATiBb,EAAYS,GACjB,SAAVD,EACED,EACU,aAAVC,EACEX,EAAQ,GACR,EACJ,EAIFiB,WAAYtB,EAAMuB,YAAYC,OAAO,SAAU,CAC7CC,OAAQzB,EAAMuB,YAAYE,OAAOC,MACjCC,SAAU3B,EAAMuB,YAAYI,SAASC,gBAExC,IAKUC,EAAa,EAAGC,cAC3BC,EAAClB,aACCmB,EAAClC,MACAgC"}
@@ -5,8 +5,8 @@
5
5
  "module": "./index.js",
6
6
  "types": "./index.d.ts",
7
7
  "dependencies": {
8
- "@mui/icons-material": "^5.11.16",
9
- "@mui/material": "^5.13.6",
10
- "react": "^18.2.0"
8
+ "@mui/icons-material": "^6.4.5",
9
+ "@mui/material": "^6.4.5",
10
+ "react": "^19.0.0"
11
11
  }
12
12
  }
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),r=require("@mui/material/styles"),t=require("@mui/material/Drawer"),i=require("@mui/material/Paper"),n=require("@mui/material/Divider"),a=require("@mui/material/IconButton"),s=require("@mui/icons-material/ChevronLeft"),o=require("react");function p(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var d=p(t),l=p(n),c=p(a),u=p(s);const m=o.createContext(void 0),h=new Error("DrawerContext.Provider is required and was undefined"),x=()=>{const e=o.useContext(m);if(void 0===e)throw h;return e},w=e=>({width:240,transition:e.transitions.create("width",{easing:e.transitions.easing.sharp,duration:e.transitions.duration.enteringScreen}),overflowX:"hidden"}),v=e=>({transition:e.transitions.create("width",{easing:e.transitions.easing.sharp,duration:e.transitions.duration.leavingScreen}),overflowX:"hidden",width:`calc(${e.spacing(7)} + 1px)`,[e.breakpoints.up("sm")]:{width:`calc(${e.spacing(8)} + 1px)`}}),f=r.styled("div")((({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"flex-end",padding:e.spacing(0,1),...e.mixins.toolbar}))),g={temporary:!0,mini:!0,persistent:!0,clipped:!1},y={temporary:"temporary",mini:"permanent",clipped:"permanent",persistent:"persistent"},C=()=>({}),S={mini:(e,r)=>({boxSizing:"border-box",[`& .${i.paperClasses.root}`]:{zIndex:r.zIndex.drawer-1}}),temporary:C,clipped:C,persistent:C},j={temporary:"close",mini:"collapse",clipped:"open",persistent:"close"},q={temporary:["close","open"],mini:["collapse","open"],clipped:["open","open"],persistent:["close","open"]};exports.Drawer=({children:i,...n})=>{const a=r.useTheme(),{state:s,switchState:o,underAppBar:p,close:m,drawerWidth:h,variant:C}=x(),j={width:h,flexShrink:0,whiteSpace:"nowrap",..."open"===s&&{...w(a),[`& .${t.drawerClasses.paper}`]:w(a)},..."open"!==s&&{...v(a),[`& .${t.drawerClasses.paper}`]:v(a)},...S[C](s,a)};return e.jsxs(d.default,{open:"open"===s,variant:y[C],role:"menu","aria-hidden":"close"===s,onClose:m,sx:j,...n,children:[e.jsx(f,{children:!p&&g[C]&&e.jsx(c.default,{onClick:o,children:e.jsx(u.default,{})})}),e.jsx(l.default,{}),i]})},exports.DrawerContext=m,exports.DrawerHeader=f,exports.DrawerProvider=({children:r,initialState:t,variant:i="temporary",drawerWidth:n=240,underAppBar:a=!1,selectedItemId:s,onStateChange:p=(()=>null)})=>{const[d,l]=o.useState(t||j[i]),c=e=>{p(e),l(e)};return e.jsx(m.Provider,{value:{state:d,variant:i,selectedItemId:s,underAppBar:a,drawerWidth:n,switchState:()=>c(q[i]["open"===d?0:1]),collapse:()=>c("collapse"),close:()=>c("close"),open:()=>c("open"),setState:l},children:r})},exports.UndefinedProvider=h,exports.useDrawer=x;
1
+ "use strict";var e=require("react/jsx-runtime"),r=require("@mui/material/styles"),t=require("@mui/material/Drawer"),i=require("@mui/material/Paper"),n=require("@mui/material/Divider"),a=require("@mui/material/IconButton"),s=require("@mui/icons-material/ChevronLeft"),o=require("react");const p=o.createContext(void 0),d=new Error("DrawerContext.Provider is required and was undefined"),l=()=>{const e=o.useContext(p);if(void 0===e)throw d;return e},c=e=>({width:240,transition:e.transitions.create("width",{easing:e.transitions.easing.sharp,duration:e.transitions.duration.enteringScreen}),overflowX:"hidden"}),u=e=>({transition:e.transitions.create("width",{easing:e.transitions.easing.sharp,duration:e.transitions.duration.leavingScreen}),overflowX:"hidden",width:`calc(${e.spacing(7)} + 1px)`,[e.breakpoints.up("sm")]:{width:`calc(${e.spacing(8)} + 1px)`}}),m=r.styled("div")((({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"flex-end",padding:e.spacing(0,1),...e.mixins.toolbar}))),h={temporary:!0,mini:!0,persistent:!0,clipped:!1},w={temporary:"temporary",mini:"permanent",clipped:"permanent",persistent:"persistent"},x=()=>({}),v={mini:(e,r)=>({boxSizing:"border-box",[`& .${i.paperClasses.root}`]:{zIndex:r.zIndex.drawer-1}}),temporary:x,clipped:x,persistent:x},g={temporary:"close",mini:"collapse",clipped:"open",persistent:"close"},C={temporary:["close","open"],mini:["collapse","open"],clipped:["open","open"],persistent:["close","open"]};exports.Drawer=({children:i,...o})=>{const p=r.useTheme(),{state:d,switchState:x,underAppBar:g,close:C,drawerWidth:y,variant:S}=l(),f={width:y,flexShrink:0,whiteSpace:"nowrap",..."open"===d&&{...c(p),[`& .${t.drawerClasses.paper}`]:c(p)},..."open"!==d&&{...u(p),[`& .${t.drawerClasses.paper}`]:u(p)},...v[S](d,p)};return e.jsxs(t,{open:"open"===d,variant:w[S],role:"menu","aria-hidden":"close"===d,onClose:C,sx:f,...o,children:[e.jsx(m,{children:!g&&h[S]&&e.jsx(a,{onClick:x,children:e.jsx(s,{})})}),e.jsx(n,{}),i]})},exports.DrawerContext=p,exports.DrawerHeader=m,exports.DrawerProvider=({children:r,initialState:t,variant:i="temporary",drawerWidth:n=240,underAppBar:a=!1,selectedItemId:s,onStateChange:d=(()=>null)})=>{const[l,c]=o.useState(t||g[i]),u=e=>{d(e),c(e)};return e.jsx(p.Provider,{value:{state:l,variant:i,selectedItemId:s,underAppBar:a,drawerWidth:n,switchState:()=>u(C[i]["open"===l?0:1]),collapse:()=>u("collapse"),close:()=>u("close"),open:()=>u("open"),setState:c},children:r})},exports.UndefinedProvider=d,exports.useDrawer=l;
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/drawer-provider/drawer-context.ts","../../../src/drawer-provider/drawer-mixins.ts","../../../src/drawer/drawer.tsx","../../../src/drawer-provider/drawer.provider.tsx"],"sourcesContent":["import { useContext, createContext } from \"react\";\nimport { DrawerState, DrawerVariant } from \"../drawer\";\n\nexport interface DrawerContextProps {\n selectedItemId?: string;\n state: DrawerState;\n variant: DrawerVariant;\n drawerWidth: number;\n underAppBar: boolean;\n switchState(): void;\n close(): void;\n collapse(): void;\n open(): void;\n setState: (state: DrawerState) => void;\n}\n\nexport const DrawerContext = createContext<DrawerContextProps | undefined>(undefined);\nexport const UndefinedProvider = new Error(\"DrawerContext.Provider is required and was undefined\");\n\nexport const useDrawer = () => {\n const context = useContext(DrawerContext);\n\n if (context === undefined) {\n throw UndefinedProvider;\n }\n\n return context;\n};\n","import { Theme, CSSObject } from \"@mui/material/styles\";\n\nexport const drawerWidth = 240;\n\nexport const openedMixin = (theme: Theme): CSSObject => ({\n width: drawerWidth,\n transition: theme.transitions.create(\"width\", {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.enteringScreen,\n }),\n overflowX: \"hidden\",\n});\n\nexport const closedMixin = (theme: Theme): CSSObject => ({\n transition: theme.transitions.create(\"width\", {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n overflowX: \"hidden\",\n width: `calc(${theme.spacing(7)} + 1px)`,\n [theme.breakpoints.up(\"sm\")]: {\n width: `calc(${theme.spacing(8)} + 1px)`,\n },\n});\n","import { SxProps, Theme, styled, useTheme } from \"@mui/material/styles\";\nimport MuiDrawer, { drawerClasses } from \"@mui/material/Drawer\";\nimport { paperClasses } from \"@mui/material/Paper\";\nimport Divider from \"@mui/material/Divider\";\nimport IconButton from \"@mui/material/IconButton\";\nimport ChevronLeftIcon from \"@mui/icons-material/ChevronLeft\";\nimport { DrawerComponent, DrawerProps, DrawerState, DrawerVariant } from \"./drawer.types\";\nimport { useDrawer } from \"../drawer-provider/drawer-context\";\nimport { closedMixin, openedMixin } from \"../drawer-provider/drawer-mixins\";\n\nexport const DrawerHeader = styled(\"div\")(({ theme }) => ({\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n padding: theme.spacing(0, 1),\n ...theme.mixins.toolbar,\n}));\n\nconst showCloseButton: Record<DrawerVariant, boolean> = {\n temporary: true,\n mini: true,\n persistent: true,\n clipped: false,\n};\n\nconst muiDrawerVariant: Record<DrawerVariant, \"permanent\" | \"persistent\" | \"temporary\"> = {\n temporary: \"temporary\",\n mini: \"permanent\",\n clipped: \"permanent\",\n persistent: \"persistent\",\n};\n\ntype SxGenerator = (state: DrawerState, theme: Theme) => SxProps<Theme>;\nconst NoopSxGenerator = () => ({});\nconst variantsSx: Readonly<Record<DrawerVariant, SxGenerator>> = {\n mini: (state: DrawerState, theme: Theme) => ({\n boxSizing: \"border-box\",\n [`& .${paperClasses.root}`]: {\n zIndex: theme.zIndex.drawer - 1,\n },\n }),\n temporary: NoopSxGenerator,\n clipped: NoopSxGenerator,\n persistent: NoopSxGenerator,\n};\n\nexport const Drawer: DrawerComponent = ({ children, ...rest }: DrawerProps) => {\n const theme = useTheme();\n const { state, switchState, underAppBar, close, drawerWidth, variant } = useDrawer();\n\n const sx: any = {\n width: drawerWidth,\n flexShrink: 0,\n whiteSpace: \"nowrap\",\n ...(state === \"open\" && {\n ...openedMixin(theme),\n [`& .${drawerClasses.paper}`]: openedMixin(theme),\n }),\n ...(state !== \"open\" && {\n ...closedMixin(theme),\n [`& .${drawerClasses.paper}`]: closedMixin(theme),\n }),\n ...variantsSx[variant](state, theme),\n };\n\n return (\n <MuiDrawer\n open={state === \"open\"}\n variant={muiDrawerVariant[variant]}\n role=\"menu\"\n aria-hidden={state === \"close\"}\n onClose={close}\n sx={sx}\n {...rest}\n >\n <DrawerHeader>\n {!underAppBar && showCloseButton[variant] && (\n <IconButton onClick={switchState}>\n <ChevronLeftIcon />\n </IconButton>\n )}\n </DrawerHeader>\n <Divider />\n {children}\n </MuiDrawer>\n );\n};\n","import { useState } from \"react\";\nimport { PropsWithChildren } from \"react\";\nimport { DrawerContext } from \"./drawer-context\";\nimport { DrawerState, DrawerVariant } from \"../drawer\";\nimport { drawerWidth } from \"./drawer-mixins\";\n\nconst initialState: Record<DrawerVariant, DrawerState> = {\n temporary: \"close\",\n mini: \"collapse\",\n clipped: \"open\",\n persistent: \"close\",\n};\n\nconst targetStates: Record<DrawerVariant, [DrawerState, DrawerState]> = {\n temporary: [\"close\", \"open\"],\n mini: [\"collapse\", \"open\"],\n clipped: [\"open\", \"open\"],\n persistent: [\"close\", \"open\"],\n};\n\nexport type DrawerProviderProps = PropsWithChildren<{\n initialState?: DrawerState;\n underAppBar?: boolean;\n drawerWidth?: number;\n variant?: DrawerVariant;\n selectedItemId?: string;\n onStateChange?: (newState: DrawerState) => void;\n}>;\n\nexport const DrawerProvider = ({\n children,\n initialState: initialStateProp,\n variant = \"temporary\",\n drawerWidth: drawerWidthProp = drawerWidth,\n underAppBar = false,\n selectedItemId,\n onStateChange = () => null,\n}: DrawerProviderProps) => {\n const [state, setState] = useState<DrawerState>(initialStateProp || initialState[variant]);\n\n const handleChangeState = (newState: DrawerState) => {\n onStateChange(newState);\n setState(newState);\n };\n\n return (\n <DrawerContext.Provider\n value={{\n state,\n variant,\n selectedItemId,\n underAppBar,\n drawerWidth: drawerWidthProp,\n switchState: () => handleChangeState(targetStates[variant][state === \"open\" ? 0 : 1]),\n collapse: () => handleChangeState(\"collapse\"),\n close: () => handleChangeState(\"close\"),\n open: () => handleChangeState(\"open\"),\n setState,\n }}\n >\n {children}\n </DrawerContext.Provider>\n );\n};\n"],"names":["DrawerContext","createContext","undefined","UndefinedProvider","Error","useDrawer","context","useContext","openedMixin","theme","width","transition","transitions","create","easing","sharp","duration","enteringScreen","overflowX","closedMixin","leavingScreen","spacing","breakpoints","up","DrawerHeader","styled","display","alignItems","justifyContent","padding","mixins","toolbar","showCloseButton","temporary","mini","persistent","clipped","muiDrawerVariant","NoopSxGenerator","variantsSx","state","boxSizing","paperClasses","root","zIndex","drawer","initialState","targetStates","children","rest","useTheme","switchState","underAppBar","close","drawerWidth","variant","sx","flexShrink","whiteSpace","drawerClasses","paper","_jsxs","MuiDrawer","open","role","onClose","_jsx","IconButton","onClick","ChevronLeftIcon","Divider","initialStateProp","drawerWidthProp","selectedItemId","onStateChange","setState","useState","handleChangeState","newState","Provider","value","collapse"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/drawer-provider/drawer-context.ts","../../../src/drawer-provider/drawer-mixins.ts","../../../src/drawer/drawer.tsx","../../../src/drawer-provider/drawer.provider.tsx"],"sourcesContent":["import { useContext, createContext } from \"react\";\nimport { DrawerState, DrawerVariant } from \"../drawer\";\n\nexport interface DrawerContextProps {\n selectedItemId?: string;\n state: DrawerState;\n variant: DrawerVariant;\n drawerWidth: number;\n underAppBar: boolean;\n switchState(): void;\n close(): void;\n collapse(): void;\n open(): void;\n setState: (state: DrawerState) => void;\n}\n\nexport const DrawerContext = createContext<DrawerContextProps | undefined>(undefined);\nexport const UndefinedProvider = new Error(\"DrawerContext.Provider is required and was undefined\");\n\nexport const useDrawer = () => {\n const context = useContext(DrawerContext);\n\n if (context === undefined) {\n throw UndefinedProvider;\n }\n\n return context;\n};\n","import { Theme, CSSObject } from \"@mui/material/styles\";\n\nexport const drawerWidth = 240;\n\nexport const openedMixin = (theme: Theme): CSSObject => ({\n width: drawerWidth,\n transition: theme.transitions.create(\"width\", {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.enteringScreen,\n }),\n overflowX: \"hidden\",\n});\n\nexport const closedMixin = (theme: Theme): CSSObject => ({\n transition: theme.transitions.create(\"width\", {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n overflowX: \"hidden\",\n width: `calc(${theme.spacing(7)} + 1px)`,\n [theme.breakpoints.up(\"sm\")]: {\n width: `calc(${theme.spacing(8)} + 1px)`,\n },\n});\n","import { SxProps, Theme, styled, useTheme } from \"@mui/material/styles\";\nimport MuiDrawer, { drawerClasses } from \"@mui/material/Drawer\";\nimport { paperClasses } from \"@mui/material/Paper\";\nimport Divider from \"@mui/material/Divider\";\nimport IconButton from \"@mui/material/IconButton\";\nimport ChevronLeftIcon from \"@mui/icons-material/ChevronLeft\";\nimport { DrawerComponent, DrawerProps, DrawerState, DrawerVariant } from \"./drawer.types\";\nimport { useDrawer } from \"../drawer-provider/drawer-context\";\nimport { closedMixin, openedMixin } from \"../drawer-provider/drawer-mixins\";\n\nexport const DrawerHeader = styled(\"div\")(({ theme }) => ({\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n padding: theme.spacing(0, 1),\n ...theme.mixins.toolbar,\n}));\n\nconst showCloseButton: Record<DrawerVariant, boolean> = {\n temporary: true,\n mini: true,\n persistent: true,\n clipped: false,\n};\n\nconst muiDrawerVariant: Record<DrawerVariant, \"permanent\" | \"persistent\" | \"temporary\"> = {\n temporary: \"temporary\",\n mini: \"permanent\",\n clipped: \"permanent\",\n persistent: \"persistent\",\n};\n\ntype SxGenerator = (state: DrawerState, theme: Theme) => SxProps<Theme>;\nconst NoopSxGenerator = () => ({});\nconst variantsSx: Readonly<Record<DrawerVariant, SxGenerator>> = {\n mini: (state: DrawerState, theme: Theme) => ({\n boxSizing: \"border-box\",\n [`& .${paperClasses.root}`]: {\n zIndex: theme.zIndex.drawer - 1,\n },\n }),\n temporary: NoopSxGenerator,\n clipped: NoopSxGenerator,\n persistent: NoopSxGenerator,\n};\n\nexport const Drawer: DrawerComponent = ({ children, ...rest }: DrawerProps) => {\n const theme = useTheme();\n const { state, switchState, underAppBar, close, drawerWidth, variant } = useDrawer();\n\n const sx: any = {\n width: drawerWidth,\n flexShrink: 0,\n whiteSpace: \"nowrap\",\n ...(state === \"open\" && {\n ...openedMixin(theme),\n [`& .${drawerClasses.paper}`]: openedMixin(theme),\n }),\n ...(state !== \"open\" && {\n ...closedMixin(theme),\n [`& .${drawerClasses.paper}`]: closedMixin(theme),\n }),\n ...variantsSx[variant](state, theme),\n };\n\n return (\n <MuiDrawer\n open={state === \"open\"}\n variant={muiDrawerVariant[variant]}\n role=\"menu\"\n aria-hidden={state === \"close\"}\n onClose={close}\n sx={sx}\n {...rest}\n >\n <DrawerHeader>\n {!underAppBar && showCloseButton[variant] && (\n <IconButton onClick={switchState}>\n <ChevronLeftIcon />\n </IconButton>\n )}\n </DrawerHeader>\n <Divider />\n {children}\n </MuiDrawer>\n );\n};\n","import { useState } from \"react\";\nimport { PropsWithChildren } from \"react\";\nimport { DrawerContext } from \"./drawer-context\";\nimport { DrawerState, DrawerVariant } from \"../drawer\";\nimport { drawerWidth } from \"./drawer-mixins\";\n\nconst initialState: Record<DrawerVariant, DrawerState> = {\n temporary: \"close\",\n mini: \"collapse\",\n clipped: \"open\",\n persistent: \"close\",\n};\n\nconst targetStates: Record<DrawerVariant, [DrawerState, DrawerState]> = {\n temporary: [\"close\", \"open\"],\n mini: [\"collapse\", \"open\"],\n clipped: [\"open\", \"open\"],\n persistent: [\"close\", \"open\"],\n};\n\nexport type DrawerProviderProps = PropsWithChildren<{\n initialState?: DrawerState;\n underAppBar?: boolean;\n drawerWidth?: number;\n variant?: DrawerVariant;\n selectedItemId?: string;\n onStateChange?: (newState: DrawerState) => void;\n}>;\n\nexport const DrawerProvider = ({\n children,\n initialState: initialStateProp,\n variant = \"temporary\",\n drawerWidth: drawerWidthProp = drawerWidth,\n underAppBar = false,\n selectedItemId,\n onStateChange = () => null,\n}: DrawerProviderProps) => {\n const [state, setState] = useState<DrawerState>(initialStateProp || initialState[variant]);\n\n const handleChangeState = (newState: DrawerState) => {\n onStateChange(newState);\n setState(newState);\n };\n\n return (\n <DrawerContext.Provider\n value={{\n state,\n variant,\n selectedItemId,\n underAppBar,\n drawerWidth: drawerWidthProp,\n switchState: () => handleChangeState(targetStates[variant][state === \"open\" ? 0 : 1]),\n collapse: () => handleChangeState(\"collapse\"),\n close: () => handleChangeState(\"close\"),\n open: () => handleChangeState(\"open\"),\n setState,\n }}\n >\n {children}\n </DrawerContext.Provider>\n );\n};\n"],"names":["DrawerContext","createContext","undefined","UndefinedProvider","Error","useDrawer","context","useContext","openedMixin","theme","width","transition","transitions","create","easing","sharp","duration","enteringScreen","overflowX","closedMixin","leavingScreen","spacing","breakpoints","up","DrawerHeader","styled","display","alignItems","justifyContent","padding","mixins","toolbar","showCloseButton","temporary","mini","persistent","clipped","muiDrawerVariant","NoopSxGenerator","variantsSx","state","boxSizing","paperClasses","root","zIndex","drawer","initialState","targetStates","children","rest","useTheme","switchState","underAppBar","close","drawerWidth","variant","sx","flexShrink","whiteSpace","drawerClasses","paper","_jsxs","jsxs","MuiDrawer","open","role","onClose","_jsx","jsx","IconButton","onClick","ChevronLeftIcon","Divider","initialStateProp","drawerWidthProp","selectedItemId","onStateChange","setState","useState","handleChangeState","newState","Provider","value","collapse"],"mappings":"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"}
@@ -5,8 +5,8 @@
5
5
  "module": "./index.js",
6
6
  "types": "./index.d.ts",
7
7
  "dependencies": {
8
- "@mui/icons-material": "^5.11.16",
9
- "@mui/material": "^5.13.6",
10
- "react": "^18.2.0"
8
+ "@mui/icons-material": "^6.4.5",
9
+ "@mui/material": "^6.4.5",
10
+ "react": "^19.0.0"
11
11
  }
12
12
  }
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { DrawerState, DrawerVariant } from "../drawer";
3
2
  export interface DrawerContextProps {
4
3
  selectedItemId?: string;
@@ -8,4 +8,4 @@ export type DrawerProviderProps = PropsWithChildren<{
8
8
  selectedItemId?: string;
9
9
  onStateChange?: (newState: DrawerState) => void;
10
10
  }>;
11
- export declare const DrawerProvider: ({ children, initialState: initialStateProp, variant, drawerWidth: drawerWidthProp, underAppBar, selectedItemId, onStateChange, }: DrawerProviderProps) => JSX.Element;
11
+ export declare const DrawerProvider: ({ children, initialState: initialStateProp, variant, drawerWidth: drawerWidthProp, underAppBar, selectedItemId, onStateChange, }: DrawerProviderProps) => import("react/jsx-runtime").JSX.Element;