@omnitron-dev/prism 0.1.3 → 0.3.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 (839) hide show
  1. package/dist/accessibility/index.d.ts +7 -151
  2. package/dist/accessibility/index.d.ts.map +1 -0
  3. package/dist/accessibility/index.js +0 -1
  4. package/dist/accessibility/index.js.map +1 -1
  5. package/dist/accessibility/vision-mode.d.ts +154 -0
  6. package/dist/accessibility/vision-mode.d.ts.map +1 -0
  7. package/dist/blocks/auth-block/auth-block.d.ts +107 -0
  8. package/dist/blocks/auth-block/auth-block.d.ts.map +1 -0
  9. package/dist/blocks/auth-block/guards.d.ts +262 -0
  10. package/dist/blocks/auth-block/guards.d.ts.map +1 -0
  11. package/dist/blocks/auth-block/index.d.ts +13 -0
  12. package/dist/blocks/auth-block/index.d.ts.map +1 -0
  13. package/dist/blocks/auth-block/types.d.ts +232 -0
  14. package/dist/blocks/auth-block/types.d.ts.map +1 -0
  15. package/dist/blocks/dashboard-block/dashboard-block.d.ts +53 -0
  16. package/dist/blocks/dashboard-block/dashboard-block.d.ts.map +1 -0
  17. package/dist/blocks/dashboard-block/index.d.ts +12 -0
  18. package/dist/blocks/dashboard-block/index.d.ts.map +1 -0
  19. package/dist/blocks/dashboard-block/types.d.ts +182 -0
  20. package/dist/blocks/dashboard-block/types.d.ts.map +1 -0
  21. package/dist/blocks/dashboard-block/use-dashboard-block.d.ts +95 -0
  22. package/dist/blocks/dashboard-block/use-dashboard-block.d.ts.map +1 -0
  23. package/dist/blocks/data-grid-block/data-grid-block.d.ts +81 -0
  24. package/dist/blocks/data-grid-block/data-grid-block.d.ts.map +1 -0
  25. package/dist/blocks/data-grid-block/index.d.ts +11 -0
  26. package/dist/blocks/data-grid-block/index.d.ts.map +1 -0
  27. package/dist/blocks/data-grid-block/types.d.ts +304 -0
  28. package/dist/blocks/data-grid-block/types.d.ts.map +1 -0
  29. package/dist/blocks/index.d.ts +10 -1235
  30. package/dist/blocks/index.d.ts.map +1 -0
  31. package/dist/blocks/index.js +187 -50
  32. package/dist/blocks/index.js.map +1 -1
  33. package/dist/{chunk-UR6X3W5I.js → chunk-6AHI4GSV.js} +3 -3
  34. package/dist/chunk-6AHI4GSV.js.map +1 -0
  35. package/dist/{chunk-JDTC2SBY.js → chunk-AD4W7HYC.js} +2 -2
  36. package/dist/chunk-AD4W7HYC.js.map +1 -0
  37. package/dist/{chunk-BTIT7WYH.js → chunk-ADG4HZEP.js} +3 -3
  38. package/dist/chunk-ADG4HZEP.js.map +1 -0
  39. package/dist/{chunk-JNU4QHJK.js → chunk-AYYFMTMI.js} +5 -4
  40. package/dist/{chunk-JNU4QHJK.js.map → chunk-AYYFMTMI.js.map} +1 -1
  41. package/dist/{chunk-HO2GKTWJ.js → chunk-BRDWQVRT.js} +2 -2
  42. package/dist/chunk-BRDWQVRT.js.map +1 -0
  43. package/dist/{chunk-WC2WM2JD.js → chunk-BZOL7GMU.js} +36 -18
  44. package/dist/chunk-BZOL7GMU.js.map +1 -0
  45. package/dist/chunk-DRFNMZLG.js +192 -0
  46. package/dist/chunk-DRFNMZLG.js.map +1 -0
  47. package/dist/{chunk-BV32OJ2A.js → chunk-GUFHFEPZ.js} +2 -2
  48. package/dist/chunk-GUFHFEPZ.js.map +1 -0
  49. package/dist/{chunk-LAEY5USO.js → chunk-OBJ244BO.js} +608 -95
  50. package/dist/chunk-OBJ244BO.js.map +1 -0
  51. package/dist/{chunk-E3XANPTO.js → chunk-S6SEGBX6.js} +32 -209
  52. package/dist/chunk-S6SEGBX6.js.map +1 -0
  53. package/dist/chunk-SNZK5X6F.js +594 -0
  54. package/dist/chunk-SNZK5X6F.js.map +1 -0
  55. package/dist/chunk-WFD54GQQ.js +1940 -0
  56. package/dist/chunk-WFD54GQQ.js.map +1 -0
  57. package/dist/{chunk-DDY7TLUI.js → chunk-XIXSSI3B.js} +28 -2
  58. package/dist/chunk-XIXSSI3B.js.map +1 -0
  59. package/dist/chunk-YQW43BDH.js +11978 -0
  60. package/dist/chunk-YQW43BDH.js.map +1 -0
  61. package/dist/{chunk-XWL6J6IO.js → chunk-YSIG2XYH.js} +2 -2
  62. package/dist/chunk-YSIG2XYH.js.map +1 -0
  63. package/dist/chunk-Z5OSPAOC.js +1576 -0
  64. package/dist/chunk-Z5OSPAOC.js.map +1 -0
  65. package/dist/{chunk-DXXZ3ITR.js → chunk-ZTATTUH7.js} +851 -500
  66. package/dist/chunk-ZTATTUH7.js.map +1 -0
  67. package/dist/cli/commands/add.d.ts +22 -0
  68. package/dist/cli/commands/add.d.ts.map +1 -0
  69. package/dist/cli/commands/diff.d.ts +13 -0
  70. package/dist/cli/commands/diff.d.ts.map +1 -0
  71. package/dist/cli/commands/doctor.d.ts +13 -0
  72. package/dist/cli/commands/doctor.d.ts.map +1 -0
  73. package/dist/cli/commands/init.d.ts +13 -0
  74. package/dist/cli/commands/init.d.ts.map +1 -0
  75. package/dist/cli/commands/list.d.ts +13 -0
  76. package/dist/cli/commands/list.d.ts.map +1 -0
  77. package/dist/cli/commands/remove.d.ts +13 -0
  78. package/dist/cli/commands/remove.d.ts.map +1 -0
  79. package/dist/cli/commands/update.d.ts +13 -0
  80. package/dist/cli/commands/update.d.ts.map +1 -0
  81. package/dist/cli/config.d.ts +73 -0
  82. package/dist/cli/config.d.ts.map +1 -0
  83. package/dist/cli/constants.d.ts +60 -0
  84. package/dist/cli/constants.d.ts.map +1 -0
  85. package/dist/cli/index.d.ts +27 -0
  86. package/dist/cli/index.d.ts.map +1 -0
  87. package/dist/cli/index.js +35 -41
  88. package/dist/cli/index.js.map +1 -1
  89. package/dist/components/accordion/accordion.d.ts +149 -0
  90. package/dist/components/accordion/accordion.d.ts.map +1 -0
  91. package/dist/components/accordion/index.d.ts +7 -0
  92. package/dist/components/accordion/index.d.ts.map +1 -0
  93. package/dist/components/admin-filters/admin-data-table.d.ts +185 -0
  94. package/dist/components/admin-filters/admin-data-table.d.ts.map +1 -0
  95. package/dist/components/admin-filters/amount-cell.d.ts +39 -0
  96. package/dist/components/admin-filters/amount-cell.d.ts.map +1 -0
  97. package/dist/components/admin-filters/filter-toolbar.d.ts +99 -0
  98. package/dist/components/admin-filters/filter-toolbar.d.ts.map +1 -0
  99. package/dist/components/admin-filters/index.d.ts +13 -0
  100. package/dist/components/admin-filters/index.d.ts.map +1 -0
  101. package/dist/components/admin-filters/status-chip.d.ts +55 -0
  102. package/dist/components/admin-filters/status-chip.d.ts.map +1 -0
  103. package/dist/components/alert/alert.d.ts +159 -0
  104. package/dist/components/alert/alert.d.ts.map +1 -0
  105. package/dist/components/alert/index.d.ts +7 -0
  106. package/dist/components/alert/index.d.ts.map +1 -0
  107. package/dist/components/animate/animate-border.d.ts +33 -0
  108. package/dist/components/animate/animate-border.d.ts.map +1 -0
  109. package/dist/components/animate/index.d.ts +3 -0
  110. package/dist/components/animate/index.d.ts.map +1 -0
  111. package/dist/components/animate/motion-lazy.d.ts +5 -0
  112. package/dist/components/animate/motion-lazy.d.ts.map +1 -0
  113. package/dist/components/avatar/avatar.d.ts +78 -0
  114. package/dist/components/avatar/avatar.d.ts.map +1 -0
  115. package/dist/components/avatar/index.d.ts +7 -0
  116. package/dist/components/avatar/index.d.ts.map +1 -0
  117. package/dist/components/badge/badge.d.ts +102 -0
  118. package/dist/components/badge/badge.d.ts.map +1 -0
  119. package/dist/components/badge/index.d.ts +7 -0
  120. package/dist/components/badge/index.d.ts.map +1 -0
  121. package/dist/components/breadcrumbs/breadcrumbs.d.ts +100 -0
  122. package/dist/components/breadcrumbs/breadcrumbs.d.ts.map +1 -0
  123. package/dist/components/breadcrumbs/index.d.ts +7 -0
  124. package/dist/components/breadcrumbs/index.d.ts.map +1 -0
  125. package/dist/components/card/card.d.ts +127 -0
  126. package/dist/components/card/card.d.ts.map +1 -0
  127. package/dist/components/card/index.d.ts +7 -0
  128. package/dist/components/card/index.d.ts.map +1 -0
  129. package/dist/components/carousel/carousel.d.ts +35 -0
  130. package/dist/components/carousel/carousel.d.ts.map +1 -0
  131. package/dist/components/carousel/classes.d.ts +35 -0
  132. package/dist/components/carousel/classes.d.ts.map +1 -0
  133. package/dist/components/carousel/index.d.ts +10 -0
  134. package/dist/components/carousel/index.d.ts.map +1 -0
  135. package/dist/components/carousel/types.d.ts +167 -0
  136. package/dist/components/carousel/types.d.ts.map +1 -0
  137. package/dist/components/carousel/use-carousel.d.ts +51 -0
  138. package/dist/components/carousel/use-carousel.d.ts.map +1 -0
  139. package/dist/components/changelog/changelog-entry.d.ts +10 -0
  140. package/dist/components/changelog/changelog-entry.d.ts.map +1 -0
  141. package/dist/components/changelog/changelog-timeline.d.ts +9 -0
  142. package/dist/components/changelog/changelog-timeline.d.ts.map +1 -0
  143. package/dist/components/changelog/index.d.ts +3 -0
  144. package/dist/components/changelog/index.d.ts.map +1 -0
  145. package/dist/components/chart/chart.d.ts +39 -0
  146. package/dist/components/chart/chart.d.ts.map +1 -0
  147. package/dist/components/chart/classes.d.ts +24 -0
  148. package/dist/components/chart/classes.d.ts.map +1 -0
  149. package/dist/components/chart/components/chart-legends.d.ts +24 -0
  150. package/dist/components/chart/components/chart-legends.d.ts.map +1 -0
  151. package/dist/components/chart/components/chart-loading.d.ts +21 -0
  152. package/dist/components/chart/components/chart-loading.d.ts.map +1 -0
  153. package/dist/components/chart/components/index.d.ts +8 -0
  154. package/dist/components/chart/components/index.d.ts.map +1 -0
  155. package/dist/components/chart/index.d.ts +14 -0
  156. package/dist/components/chart/index.d.ts.map +1 -0
  157. package/dist/components/chart/types.d.ts +264 -0
  158. package/dist/components/chart/types.d.ts.map +1 -0
  159. package/dist/components/chart/use-chart.d.ts +34 -0
  160. package/dist/components/chart/use-chart.d.ts.map +1 -0
  161. package/dist/components/command-palette/command-palette.d.ts +73 -0
  162. package/dist/components/command-palette/command-palette.d.ts.map +1 -0
  163. package/dist/components/command-palette/index.d.ts +7 -0
  164. package/dist/components/command-palette/index.d.ts.map +1 -0
  165. package/dist/components/confirm-dialog/confirm-dialog.d.ts +89 -0
  166. package/dist/components/confirm-dialog/confirm-dialog.d.ts.map +1 -0
  167. package/dist/components/confirm-dialog/index.d.ts +7 -0
  168. package/dist/components/confirm-dialog/index.d.ts.map +1 -0
  169. package/dist/components/content-renderer/classes.d.ts +33 -0
  170. package/dist/components/content-renderer/classes.d.ts.map +1 -0
  171. package/dist/components/content-renderer/content-renderer.d.ts +37 -0
  172. package/dist/components/content-renderer/content-renderer.d.ts.map +1 -0
  173. package/dist/components/content-renderer/html-tags.d.ts +6 -0
  174. package/dist/components/content-renderer/html-tags.d.ts.map +1 -0
  175. package/dist/components/content-renderer/html-to-markdown.d.ts +7 -0
  176. package/dist/components/content-renderer/html-to-markdown.d.ts.map +1 -0
  177. package/dist/components/content-renderer/index.d.ts +7 -0
  178. package/dist/components/content-renderer/index.d.ts.map +1 -0
  179. package/dist/components/content-renderer/markdown.d.ts +23 -0
  180. package/dist/components/content-renderer/markdown.d.ts.map +1 -0
  181. package/dist/components/content-renderer/remark-spoiler.d.ts +9 -0
  182. package/dist/components/content-renderer/remark-spoiler.d.ts.map +1 -0
  183. package/dist/components/content-renderer/styles.d.ts +2 -0
  184. package/dist/components/content-renderer/styles.d.ts.map +1 -0
  185. package/dist/components/country-select/country-select.d.ts +101 -0
  186. package/dist/components/country-select/country-select.d.ts.map +1 -0
  187. package/dist/components/country-select/flag-icon.d.ts +36 -0
  188. package/dist/components/country-select/flag-icon.d.ts.map +1 -0
  189. package/dist/components/country-select/index.d.ts +5 -0
  190. package/dist/components/country-select/index.d.ts.map +1 -0
  191. package/dist/components/date-range-picker/date-range-input.d.ts +48 -0
  192. package/dist/components/date-range-picker/date-range-input.d.ts.map +1 -0
  193. package/dist/components/date-range-picker/date-range-picker.d.ts +39 -0
  194. package/dist/components/date-range-picker/date-range-picker.d.ts.map +1 -0
  195. package/dist/components/date-range-picker/index.d.ts +7 -0
  196. package/dist/components/date-range-picker/index.d.ts.map +1 -0
  197. package/dist/components/date-range-picker/use-date-range-picker.d.ts +28 -0
  198. package/dist/components/date-range-picker/use-date-range-picker.d.ts.map +1 -0
  199. package/dist/components/deadline-chip/deadline-chip.d.ts +41 -0
  200. package/dist/components/deadline-chip/deadline-chip.d.ts.map +1 -0
  201. package/dist/components/deadline-chip/index.d.ts +7 -0
  202. package/dist/components/deadline-chip/index.d.ts.map +1 -0
  203. package/dist/components/doc-layout/doc-layout.d.ts +17 -0
  204. package/dist/components/doc-layout/doc-layout.d.ts.map +1 -0
  205. package/dist/components/doc-layout/doc-section-nav.d.ts +16 -0
  206. package/dist/components/doc-layout/doc-section-nav.d.ts.map +1 -0
  207. package/dist/components/doc-layout/doc-sidebar.d.ts +15 -0
  208. package/dist/components/doc-layout/doc-sidebar.d.ts.map +1 -0
  209. package/dist/components/doc-layout/index.d.ts +4 -0
  210. package/dist/components/doc-layout/index.d.ts.map +1 -0
  211. package/dist/components/drawer/drawer.d.ts +65 -0
  212. package/dist/components/drawer/drawer.d.ts.map +1 -0
  213. package/dist/components/drawer/index.d.ts +7 -0
  214. package/dist/components/drawer/index.d.ts.map +1 -0
  215. package/dist/components/duration-picker/duration-picker.d.ts +24 -0
  216. package/dist/components/duration-picker/duration-picker.d.ts.map +1 -0
  217. package/dist/components/duration-picker/index.d.ts +2 -0
  218. package/dist/components/duration-picker/index.d.ts.map +1 -0
  219. package/dist/components/editor/classes.d.ts +52 -0
  220. package/dist/components/editor/classes.d.ts.map +1 -0
  221. package/dist/components/editor/editor.d.ts +15 -0
  222. package/dist/components/editor/editor.d.ts.map +1 -0
  223. package/dist/components/editor/extensions/clear-format.d.ts +3 -0
  224. package/dist/components/editor/extensions/clear-format.d.ts.map +1 -0
  225. package/dist/components/editor/extensions/index.d.ts +3 -0
  226. package/dist/components/editor/extensions/index.d.ts.map +1 -0
  227. package/dist/components/editor/extensions/text-transform.d.ts +20 -0
  228. package/dist/components/editor/extensions/text-transform.d.ts.map +1 -0
  229. package/dist/components/editor/icons/index.d.ts +42 -0
  230. package/dist/components/editor/icons/index.d.ts.map +1 -0
  231. package/dist/components/editor/index.d.ts +44 -0
  232. package/dist/components/editor/index.d.ts.map +1 -0
  233. package/dist/components/editor/index.js +3 -0
  234. package/dist/components/editor/index.js.map +1 -0
  235. package/dist/components/editor/presets.d.ts +3 -0
  236. package/dist/components/editor/presets.d.ts.map +1 -0
  237. package/dist/components/editor/styles.d.ts +2 -0
  238. package/dist/components/editor/styles.d.ts.map +1 -0
  239. package/dist/components/editor/toolbar/bubble-toolbar.d.ts +9 -0
  240. package/dist/components/editor/toolbar/bubble-toolbar.d.ts.map +1 -0
  241. package/dist/components/editor/toolbar/code-highlight-block.d.ts +3 -0
  242. package/dist/components/editor/toolbar/code-highlight-block.d.ts.map +1 -0
  243. package/dist/components/editor/toolbar/heading-block.d.ts +11 -0
  244. package/dist/components/editor/toolbar/heading-block.d.ts.map +1 -0
  245. package/dist/components/editor/toolbar/image-block.d.ts +11 -0
  246. package/dist/components/editor/toolbar/image-block.d.ts.map +1 -0
  247. package/dist/components/editor/toolbar/link-block.d.ts +13 -0
  248. package/dist/components/editor/toolbar/link-block.d.ts.map +1 -0
  249. package/dist/components/editor/toolbar/toolbar-item.d.ts +3 -0
  250. package/dist/components/editor/toolbar/toolbar-item.d.ts.map +1 -0
  251. package/dist/components/editor/toolbar/toolbar.d.ts +3 -0
  252. package/dist/components/editor/toolbar/toolbar.d.ts.map +1 -0
  253. package/dist/components/editor/toolbar/use-toolbar-state.d.ts +24 -0
  254. package/dist/components/editor/toolbar/use-toolbar-state.d.ts.map +1 -0
  255. package/dist/components/editor/types.d.ts +130 -0
  256. package/dist/components/editor/types.d.ts.map +1 -0
  257. package/dist/components/emoji-picker/emoji-picker.d.ts +24 -0
  258. package/dist/components/emoji-picker/emoji-picker.d.ts.map +1 -0
  259. package/dist/components/emoji-picker/emoji-search.d.ts +22 -0
  260. package/dist/components/emoji-picker/emoji-search.d.ts.map +1 -0
  261. package/dist/components/emoji-picker/emoji.d.ts +19 -0
  262. package/dist/components/emoji-picker/emoji.d.ts.map +1 -0
  263. package/dist/components/emoji-picker/index.d.ts +14 -0
  264. package/dist/components/emoji-picker/index.d.ts.map +1 -0
  265. package/dist/components/emoji-picker/index.js +3 -0
  266. package/dist/components/emoji-picker/index.js.map +1 -0
  267. package/dist/components/emoji-picker/twemoji-url.d.ts +26 -0
  268. package/dist/components/emoji-picker/twemoji-url.d.ts.map +1 -0
  269. package/dist/components/emoji-picker/types.d.ts +96 -0
  270. package/dist/components/emoji-picker/types.d.ts.map +1 -0
  271. package/dist/components/emoji-picker/use-emoji-data.d.ts +26 -0
  272. package/dist/components/emoji-picker/use-emoji-data.d.ts.map +1 -0
  273. package/dist/components/emoji-picker/use-recent-emojis.d.ts +16 -0
  274. package/dist/components/emoji-picker/use-recent-emojis.d.ts.map +1 -0
  275. package/dist/components/empty-content/empty-content.d.ts +92 -0
  276. package/dist/components/empty-content/empty-content.d.ts.map +1 -0
  277. package/dist/components/empty-content/index.d.ts +7 -0
  278. package/dist/components/empty-content/index.d.ts.map +1 -0
  279. package/dist/components/error-boundary/error-boundary.d.ts +162 -0
  280. package/dist/components/error-boundary/error-boundary.d.ts.map +1 -0
  281. package/dist/components/error-boundary/index.d.ts +7 -0
  282. package/dist/components/error-boundary/index.d.ts.map +1 -0
  283. package/dist/components/field/field-autocomplete.d.ts +74 -0
  284. package/dist/components/field/field-autocomplete.d.ts.map +1 -0
  285. package/dist/components/field/field-checkbox.d.ts +42 -0
  286. package/dist/components/field/field-checkbox.d.ts.map +1 -0
  287. package/dist/components/field/field-code.d.ts +80 -0
  288. package/dist/components/field/field-code.d.ts.map +1 -0
  289. package/dist/components/field/field-country-select.d.ts +84 -0
  290. package/dist/components/field/field-country-select.d.ts.map +1 -0
  291. package/dist/components/field/field-date-picker.d.ts +58 -0
  292. package/dist/components/field/field-date-picker.d.ts.map +1 -0
  293. package/dist/components/field/field-datetime-picker.d.ts +96 -0
  294. package/dist/components/field/field-datetime-picker.d.ts.map +1 -0
  295. package/dist/components/field/field-editor.d.ts +218 -0
  296. package/dist/components/field/field-editor.d.ts.map +1 -0
  297. package/dist/components/field/field-multi-checkbox.d.ts +91 -0
  298. package/dist/components/field/field-multi-checkbox.d.ts.map +1 -0
  299. package/dist/components/field/field-multi-select.d.ts +85 -0
  300. package/dist/components/field/field-multi-select.d.ts.map +1 -0
  301. package/dist/components/field/field-multi-switch.d.ts +93 -0
  302. package/dist/components/field/field-multi-switch.d.ts.map +1 -0
  303. package/dist/components/field/field-number.d.ts +50 -0
  304. package/dist/components/field/field-number.d.ts.map +1 -0
  305. package/dist/components/field/field-phone.d.ts +82 -0
  306. package/dist/components/field/field-phone.d.ts.map +1 -0
  307. package/dist/components/field/field-radio.d.ts +64 -0
  308. package/dist/components/field/field-radio.d.ts.map +1 -0
  309. package/dist/components/field/field-rating.d.ts +43 -0
  310. package/dist/components/field/field-rating.d.ts.map +1 -0
  311. package/dist/components/field/field-select.d.ts +50 -0
  312. package/dist/components/field/field-select.d.ts.map +1 -0
  313. package/dist/components/field/field-slider.d.ts +56 -0
  314. package/dist/components/field/field-slider.d.ts.map +1 -0
  315. package/dist/components/field/field-switch.d.ts +44 -0
  316. package/dist/components/field/field-switch.d.ts.map +1 -0
  317. package/dist/components/field/field-text.d.ts +38 -0
  318. package/dist/components/field/field-text.d.ts.map +1 -0
  319. package/dist/components/field/field-time-picker.d.ts +79 -0
  320. package/dist/components/field/field-time-picker.d.ts.map +1 -0
  321. package/dist/components/field/field-upload.d.ts +120 -0
  322. package/dist/components/field/field-upload.d.ts.map +1 -0
  323. package/dist/components/field/index.d.ts +149 -0
  324. package/dist/components/field/index.d.ts.map +1 -0
  325. package/dist/components/image/image.d.ts +79 -0
  326. package/dist/components/image/image.d.ts.map +1 -0
  327. package/dist/components/image/index.d.ts +7 -0
  328. package/dist/components/image/index.d.ts.map +1 -0
  329. package/dist/components/index.css +131 -0
  330. package/dist/components/index.css.map +1 -0
  331. package/dist/components/index.d.ts +61 -0
  332. package/dist/components/index.d.ts.map +1 -0
  333. package/dist/components/index.js +13 -0
  334. package/dist/components/index.js.map +1 -0
  335. package/dist/components/label/index.d.ts +7 -0
  336. package/dist/components/label/index.d.ts.map +1 -0
  337. package/dist/components/label/label.d.ts +71 -0
  338. package/dist/components/label/label.d.ts.map +1 -0
  339. package/dist/components/lightbox/classes.d.ts +34 -0
  340. package/dist/components/lightbox/classes.d.ts.map +1 -0
  341. package/dist/components/lightbox/index.d.ts +11 -0
  342. package/dist/components/lightbox/index.d.ts.map +1 -0
  343. package/dist/components/lightbox/lightbox.d.ts +42 -0
  344. package/dist/components/lightbox/lightbox.d.ts.map +1 -0
  345. package/dist/components/lightbox/types.d.ts +233 -0
  346. package/dist/components/lightbox/types.d.ts.map +1 -0
  347. package/dist/components/lightbox/use-lightbox.d.ts +42 -0
  348. package/dist/components/lightbox/use-lightbox.d.ts.map +1 -0
  349. package/dist/components/loading-screen/index.d.ts +8 -0
  350. package/dist/components/loading-screen/index.d.ts.map +1 -0
  351. package/dist/components/loading-screen/loading-screen.d.ts +37 -0
  352. package/dist/components/loading-screen/loading-screen.d.ts.map +1 -0
  353. package/dist/components/loading-screen/splash-screen.d.ts +80 -0
  354. package/dist/components/loading-screen/splash-screen.d.ts.map +1 -0
  355. package/dist/components/map/Map.d.ts +63 -0
  356. package/dist/components/map/Map.d.ts.map +1 -0
  357. package/dist/components/map/MapCoverageLayer.d.ts +25 -0
  358. package/dist/components/map/MapCoverageLayer.d.ts.map +1 -0
  359. package/dist/components/map/MapMarker.d.ts +17 -0
  360. package/dist/components/map/MapMarker.d.ts.map +1 -0
  361. package/dist/components/map/MapPointPicker.d.ts +26 -0
  362. package/dist/components/map/MapPointPicker.d.ts.map +1 -0
  363. package/dist/components/map/index.d.ts +14 -0
  364. package/dist/components/map/index.d.ts.map +1 -0
  365. package/dist/components/mega-menu/index.d.ts +12 -0
  366. package/dist/components/mega-menu/index.d.ts.map +1 -0
  367. package/dist/components/mega-menu/mega-menu-horizontal.d.ts +41 -0
  368. package/dist/components/mega-menu/mega-menu-horizontal.d.ts.map +1 -0
  369. package/dist/components/mega-menu/mega-menu-mobile.d.ts +28 -0
  370. package/dist/components/mega-menu/mega-menu-mobile.d.ts.map +1 -0
  371. package/dist/components/mega-menu/mega-menu-vertical.d.ts +28 -0
  372. package/dist/components/mega-menu/mega-menu-vertical.d.ts.map +1 -0
  373. package/dist/components/mega-menu/styles.d.ts +18 -0
  374. package/dist/components/mega-menu/styles.d.ts.map +1 -0
  375. package/dist/components/mega-menu/types.d.ts +200 -0
  376. package/dist/components/mega-menu/types.d.ts.map +1 -0
  377. package/dist/components/menu/index.d.ts +7 -0
  378. package/dist/components/menu/index.d.ts.map +1 -0
  379. package/dist/components/menu/menu.d.ts +144 -0
  380. package/dist/components/menu/menu.d.ts.map +1 -0
  381. package/dist/components/nav-card/index.d.ts +8 -0
  382. package/dist/components/nav-card/index.d.ts.map +1 -0
  383. package/dist/components/nav-card/nav-card-grid.d.ts +57 -0
  384. package/dist/components/nav-card/nav-card-grid.d.ts.map +1 -0
  385. package/dist/components/nav-card/nav-card.d.ts +69 -0
  386. package/dist/components/nav-card/nav-card.d.ts.map +1 -0
  387. package/dist/components/nav-section/components.d.ts +143 -0
  388. package/dist/components/nav-section/components.d.ts.map +1 -0
  389. package/dist/components/nav-section/index.d.ts +15 -0
  390. package/dist/components/nav-section/index.d.ts.map +1 -0
  391. package/dist/components/nav-section/nav-context.d.ts +80 -0
  392. package/dist/components/nav-section/nav-context.d.ts.map +1 -0
  393. package/dist/components/nav-section/nav-item.d.ts +20 -0
  394. package/dist/components/nav-section/nav-item.d.ts.map +1 -0
  395. package/dist/components/nav-section/nav-list.d.ts +25 -0
  396. package/dist/components/nav-section/nav-list.d.ts.map +1 -0
  397. package/dist/components/nav-section/nav-section-horizontal.d.ts +29 -0
  398. package/dist/components/nav-section/nav-section-horizontal.d.ts.map +1 -0
  399. package/dist/components/nav-section/nav-section-mini.d.ts +30 -0
  400. package/dist/components/nav-section/nav-section-mini.d.ts.map +1 -0
  401. package/dist/components/nav-section/nav-section-vertical.d.ts +37 -0
  402. package/dist/components/nav-section/nav-section-vertical.d.ts.map +1 -0
  403. package/dist/components/nav-section/styles.d.ts +35 -0
  404. package/dist/components/nav-section/styles.d.ts.map +1 -0
  405. package/dist/components/nav-section/types.d.ts +178 -0
  406. package/dist/components/nav-section/types.d.ts.map +1 -0
  407. package/dist/components/navigation-progress/index.d.ts +7 -0
  408. package/dist/components/navigation-progress/index.d.ts.map +1 -0
  409. package/dist/components/navigation-progress/navigation-progress.d.ts +36 -0
  410. package/dist/components/navigation-progress/navigation-progress.d.ts.map +1 -0
  411. package/dist/components/page-content/index.d.ts +7 -0
  412. package/dist/components/page-content/index.d.ts.map +1 -0
  413. package/dist/components/page-content/page-content.d.ts +55 -0
  414. package/dist/components/page-content/page-content.d.ts.map +1 -0
  415. package/dist/components/popover/index.d.ts +7 -0
  416. package/dist/components/popover/index.d.ts.map +1 -0
  417. package/dist/components/popover/popover.d.ts +124 -0
  418. package/dist/components/popover/popover.d.ts.map +1 -0
  419. package/dist/components/progress/countdown-ring.d.ts +60 -0
  420. package/dist/components/progress/countdown-ring.d.ts.map +1 -0
  421. package/dist/components/progress/index.d.ts +8 -0
  422. package/dist/components/progress/index.d.ts.map +1 -0
  423. package/dist/components/progress/progress.d.ts +106 -0
  424. package/dist/components/progress/progress.d.ts.map +1 -0
  425. package/dist/components/rail/index.d.ts +7 -0
  426. package/dist/components/rail/index.d.ts.map +1 -0
  427. package/dist/components/rail/rail.d.ts +39 -0
  428. package/dist/components/rail/rail.d.ts.map +1 -0
  429. package/dist/components/scroll-spy/index.d.ts +3 -0
  430. package/dist/components/scroll-spy/index.d.ts.map +1 -0
  431. package/dist/components/scroll-spy/scroll-spy-provider.d.ts +26 -0
  432. package/dist/components/scroll-spy/scroll-spy-provider.d.ts.map +1 -0
  433. package/dist/components/scroll-spy/scroll-spy-section.d.ts +10 -0
  434. package/dist/components/scroll-spy/scroll-spy-section.d.ts.map +1 -0
  435. package/dist/components/scroll-to-top/index.d.ts +7 -0
  436. package/dist/components/scroll-to-top/index.d.ts.map +1 -0
  437. package/dist/components/scroll-to-top/scroll-to-top.d.ts +25 -0
  438. package/dist/components/scroll-to-top/scroll-to-top.d.ts.map +1 -0
  439. package/dist/components/scrollbar/index.d.ts +7 -0
  440. package/dist/components/scrollbar/index.d.ts.map +1 -0
  441. package/dist/components/scrollbar/scrollbar.d.ts +59 -0
  442. package/dist/components/scrollbar/scrollbar.d.ts.map +1 -0
  443. package/dist/components/search-input/index.d.ts +2 -0
  444. package/dist/components/search-input/index.d.ts.map +1 -0
  445. package/dist/components/search-input/search-input.d.ts +46 -0
  446. package/dist/components/search-input/search-input.d.ts.map +1 -0
  447. package/dist/components/settings/index.d.ts +10 -0
  448. package/dist/components/settings/index.d.ts.map +1 -0
  449. package/dist/components/settings/settings-drawer.d.ts +39 -0
  450. package/dist/components/settings/settings-drawer.d.ts.map +1 -0
  451. package/dist/components/settings/settings-provider.d.ts +106 -0
  452. package/dist/components/settings/settings-provider.d.ts.map +1 -0
  453. package/dist/components/skeleton/index.d.ts +7 -0
  454. package/dist/components/skeleton/index.d.ts.map +1 -0
  455. package/dist/components/skeleton/skeleton.d.ts +77 -0
  456. package/dist/components/skeleton/skeleton.d.ts.map +1 -0
  457. package/dist/components/snackbar/index.d.ts +7 -0
  458. package/dist/components/snackbar/index.d.ts.map +1 -0
  459. package/dist/components/snackbar/snackbar.d.ts +120 -0
  460. package/dist/components/snackbar/snackbar.d.ts.map +1 -0
  461. package/dist/components/sponsored-slot/index.d.ts +3 -0
  462. package/dist/components/sponsored-slot/index.d.ts.map +1 -0
  463. package/dist/components/sponsored-slot/sponsored-slot.d.ts +16 -0
  464. package/dist/components/sponsored-slot/sponsored-slot.d.ts.map +1 -0
  465. package/dist/components/sponsored-slot/types.d.ts +45 -0
  466. package/dist/components/sponsored-slot/types.d.ts.map +1 -0
  467. package/dist/components/stepper/index.d.ts +7 -0
  468. package/dist/components/stepper/index.d.ts.map +1 -0
  469. package/dist/components/stepper/stepper.d.ts +145 -0
  470. package/dist/components/stepper/stepper.d.ts.map +1 -0
  471. package/dist/components/svg-color/index.d.ts +7 -0
  472. package/dist/components/svg-color/index.d.ts.map +1 -0
  473. package/dist/components/svg-color/svg-color.d.ts +80 -0
  474. package/dist/components/svg-color/svg-color.d.ts.map +1 -0
  475. package/dist/components/table/index.d.ts +7 -0
  476. package/dist/components/table/index.d.ts.map +1 -0
  477. package/dist/components/table/table.d.ts +184 -0
  478. package/dist/components/table/table.d.ts.map +1 -0
  479. package/dist/components/tabs/index.d.ts +7 -0
  480. package/dist/components/tabs/index.d.ts.map +1 -0
  481. package/dist/components/tabs/tabs.d.ts +146 -0
  482. package/dist/components/tabs/tabs.d.ts.map +1 -0
  483. package/dist/components/tag-cloud/index.d.ts +7 -0
  484. package/dist/components/tag-cloud/index.d.ts.map +1 -0
  485. package/dist/components/tag-cloud/tag-cloud.d.ts +58 -0
  486. package/dist/components/tag-cloud/tag-cloud.d.ts.map +1 -0
  487. package/dist/components/tiptap-renderer/index.d.ts +2 -0
  488. package/dist/components/tiptap-renderer/index.d.ts.map +1 -0
  489. package/dist/components/tiptap-renderer/tiptap-renderer.d.ts +45 -0
  490. package/dist/components/tiptap-renderer/tiptap-renderer.d.ts.map +1 -0
  491. package/dist/components/tooltip/index.d.ts +7 -0
  492. package/dist/components/tooltip/index.d.ts.map +1 -0
  493. package/dist/components/tooltip/tooltip.d.ts +38 -0
  494. package/dist/components/tooltip/tooltip.d.ts.map +1 -0
  495. package/dist/components/virtual-list/index.d.ts +7 -0
  496. package/dist/components/virtual-list/index.d.ts.map +1 -0
  497. package/dist/components/virtual-list/virtual-list.d.ts +64 -0
  498. package/dist/components/virtual-list/virtual-list.d.ts.map +1 -0
  499. package/dist/core/accessibility/index.d.ts +96 -0
  500. package/dist/core/accessibility/index.d.ts.map +1 -0
  501. package/dist/core/accessibility/skip-link.d.ts +31 -0
  502. package/dist/core/accessibility/skip-link.d.ts.map +1 -0
  503. package/dist/core/context.d.ts +99 -0
  504. package/dist/core/context.d.ts.map +1 -0
  505. package/dist/core/hooks/use-boolean.d.ts +54 -0
  506. package/dist/core/hooks/use-boolean.d.ts.map +1 -0
  507. package/dist/core/hooks/use-breakpoints.d.ts +87 -0
  508. package/dist/core/hooks/use-breakpoints.d.ts.map +1 -0
  509. package/dist/core/hooks/use-click-outside.d.ts +26 -0
  510. package/dist/core/hooks/use-click-outside.d.ts.map +1 -0
  511. package/dist/core/hooks/use-copy-to-clipboard.d.ts +66 -0
  512. package/dist/core/hooks/use-copy-to-clipboard.d.ts.map +1 -0
  513. package/dist/core/hooks/use-countdown.d.ts +105 -0
  514. package/dist/core/hooks/use-countdown.d.ts.map +1 -0
  515. package/dist/core/hooks/use-debounce.d.ts +64 -0
  516. package/dist/core/hooks/use-debounce.d.ts.map +1 -0
  517. package/dist/core/hooks/use-event-listener.d.ts +37 -0
  518. package/dist/core/hooks/use-event-listener.d.ts.map +1 -0
  519. package/dist/core/hooks/use-interval.d.ts +30 -0
  520. package/dist/core/hooks/use-interval.d.ts.map +1 -0
  521. package/dist/core/hooks/use-is-client.d.ts +24 -0
  522. package/dist/core/hooks/use-is-client.d.ts.map +1 -0
  523. package/dist/core/hooks/use-local-storage.d.ts +61 -0
  524. package/dist/core/hooks/use-local-storage.d.ts.map +1 -0
  525. package/dist/core/hooks/use-media-query.d.ts +107 -0
  526. package/dist/core/hooks/use-media-query.d.ts.map +1 -0
  527. package/dist/core/hooks/use-mounted.d.ts +33 -0
  528. package/dist/core/hooks/use-mounted.d.ts.map +1 -0
  529. package/dist/core/hooks/use-multi-select.d.ts +113 -0
  530. package/dist/core/hooks/use-multi-select.d.ts.map +1 -0
  531. package/dist/core/hooks/use-previous.d.ts +23 -0
  532. package/dist/core/hooks/use-previous.d.ts.map +1 -0
  533. package/dist/core/hooks/use-set-state.d.ts +56 -0
  534. package/dist/core/hooks/use-set-state.d.ts.map +1 -0
  535. package/dist/core/hooks/use-tabs.d.ts +74 -0
  536. package/dist/core/hooks/use-tabs.d.ts.map +1 -0
  537. package/dist/core/hooks/use-timeout.d.ts +37 -0
  538. package/dist/core/hooks/use-timeout.d.ts.map +1 -0
  539. package/dist/core/index.d.ts +36 -453
  540. package/dist/core/index.d.ts.map +1 -0
  541. package/dist/core/index.js +6 -7
  542. package/dist/core/provider-stack.d.ts +181 -0
  543. package/dist/core/provider-stack.d.ts.map +1 -0
  544. package/dist/core/provider.d.ts +67 -0
  545. package/dist/core/provider.d.ts.map +1 -0
  546. package/dist/forms/index.d.ts +6 -557
  547. package/dist/forms/index.d.ts.map +1 -0
  548. package/dist/forms/index.js +0 -1
  549. package/dist/forms/index.js.map +1 -1
  550. package/dist/forms/schema-provider.d.ts +282 -0
  551. package/dist/forms/schema-provider.d.ts.map +1 -0
  552. package/dist/forms/schema-utils.d.ts +286 -0
  553. package/dist/forms/schema-utils.d.ts.map +1 -0
  554. package/dist/hooks/index.d.ts +38 -7
  555. package/dist/hooks/index.d.ts.map +1 -0
  556. package/dist/hooks/index.js +8 -8
  557. package/dist/hooks/use-array.d.ts +126 -0
  558. package/dist/hooks/use-array.d.ts.map +1 -0
  559. package/dist/hooks/use-async.d.ts +88 -0
  560. package/dist/hooks/use-async.d.ts.map +1 -0
  561. package/dist/hooks/use-back-to-top.d.ts +57 -0
  562. package/dist/hooks/use-back-to-top.d.ts.map +1 -0
  563. package/dist/hooks/use-client-rect.d.ts +67 -0
  564. package/dist/hooks/use-client-rect.d.ts.map +1 -0
  565. package/dist/hooks/use-config-from-query.d.ts +98 -0
  566. package/dist/hooks/use-config-from-query.d.ts.map +1 -0
  567. package/dist/hooks/use-cookies.d.ts +62 -0
  568. package/dist/hooks/use-cookies.d.ts.map +1 -0
  569. package/dist/hooks/use-countdown-date.d.ts +47 -0
  570. package/dist/hooks/use-countdown-date.d.ts.map +1 -0
  571. package/dist/hooks/use-countdown-seconds.d.ts +83 -0
  572. package/dist/hooks/use-countdown-seconds.d.ts.map +1 -0
  573. package/dist/hooks/use-double-click.d.ts +67 -0
  574. package/dist/hooks/use-double-click.d.ts.map +1 -0
  575. package/dist/hooks/use-focus-trap.d.ts +66 -0
  576. package/dist/hooks/use-focus-trap.d.ts.map +1 -0
  577. package/dist/hooks/use-image-dimensions.d.ts +124 -0
  578. package/dist/hooks/use-image-dimensions.d.ts.map +1 -0
  579. package/dist/hooks/use-infinite-scroll.d.ts +204 -0
  580. package/dist/hooks/use-infinite-scroll.d.ts.map +1 -0
  581. package/dist/hooks/use-intersection-observer.d.ts +93 -0
  582. package/dist/hooks/use-intersection-observer.d.ts.map +1 -0
  583. package/dist/hooks/use-isomorphic-layout-effect.d.ts +34 -0
  584. package/dist/hooks/use-isomorphic-layout-effect.d.ts.map +1 -0
  585. package/dist/hooks/use-keyboard-shortcut.d.ts +112 -0
  586. package/dist/hooks/use-keyboard-shortcut.d.ts.map +1 -0
  587. package/dist/hooks/use-lazy-query.d.ts +132 -0
  588. package/dist/hooks/use-lazy-query.d.ts.map +1 -0
  589. package/dist/hooks/use-mutation.d.ts +141 -0
  590. package/dist/hooks/use-mutation.d.ts.map +1 -0
  591. package/dist/hooks/use-online-status.d.ts +56 -0
  592. package/dist/hooks/use-online-status.d.ts.map +1 -0
  593. package/dist/hooks/use-password-visibility.d.ts +83 -0
  594. package/dist/hooks/use-password-visibility.d.ts.map +1 -0
  595. package/dist/hooks/use-popover-hover.d.ts +78 -0
  596. package/dist/hooks/use-popover-hover.d.ts.map +1 -0
  597. package/dist/hooks/use-scroll-offset-top.d.ts +69 -0
  598. package/dist/hooks/use-scroll-offset-top.d.ts.map +1 -0
  599. package/dist/hooks/use-scroll-position.d.ts +96 -0
  600. package/dist/hooks/use-scroll-position.d.ts.map +1 -0
  601. package/dist/hooks/use-session-storage.d.ts +66 -0
  602. package/dist/hooks/use-session-storage.d.ts.map +1 -0
  603. package/dist/hooks/use-throttle.d.ts +67 -0
  604. package/dist/hooks/use-throttle.d.ts.map +1 -0
  605. package/dist/hooks/use-update-effect.d.ts +53 -0
  606. package/dist/hooks/use-update-effect.d.ts.map +1 -0
  607. package/dist/hooks/use-window-size.d.ts +132 -0
  608. package/dist/hooks/use-window-size.d.ts.map +1 -0
  609. package/dist/http/client.d.ts +74 -0
  610. package/dist/http/client.d.ts.map +1 -0
  611. package/dist/http/index.d.ts +6 -229
  612. package/dist/http/index.d.ts.map +1 -0
  613. package/dist/http/index.js +0 -2
  614. package/dist/http/index.js.map +1 -1
  615. package/dist/http/types.d.ts +158 -0
  616. package/dist/http/types.d.ts.map +1 -0
  617. package/dist/index.d.ts +19 -9108
  618. package/dist/index.d.ts.map +1 -0
  619. package/dist/index.js +107 -11678
  620. package/dist/index.js.map +1 -1
  621. package/dist/layouts/auth/centered.d.ts +49 -0
  622. package/dist/layouts/auth/centered.d.ts.map +1 -0
  623. package/dist/layouts/auth/index.d.ts +12 -0
  624. package/dist/layouts/auth/index.d.ts.map +1 -0
  625. package/dist/layouts/auth/simple.d.ts +58 -0
  626. package/dist/layouts/auth/simple.d.ts.map +1 -0
  627. package/dist/layouts/auth/split.d.ts +81 -0
  628. package/dist/layouts/auth/split.d.ts.map +1 -0
  629. package/dist/layouts/core/context.d.ts +102 -0
  630. package/dist/layouts/core/context.d.ts.map +1 -0
  631. package/dist/layouts/core/css-vars.d.ts +43 -0
  632. package/dist/layouts/core/css-vars.d.ts.map +1 -0
  633. package/dist/layouts/core/header-section.d.ts +79 -0
  634. package/dist/layouts/core/header-section.d.ts.map +1 -0
  635. package/dist/layouts/core/index.d.ts +18 -0
  636. package/dist/layouts/core/index.d.ts.map +1 -0
  637. package/dist/layouts/core/layout-section.d.ts +64 -0
  638. package/dist/layouts/core/layout-section.d.ts.map +1 -0
  639. package/dist/layouts/core/user-menu.d.ts +88 -0
  640. package/dist/layouts/core/user-menu.d.ts.map +1 -0
  641. package/dist/layouts/dashboard/index.d.ts +10 -0
  642. package/dist/layouts/dashboard/index.d.ts.map +1 -0
  643. package/dist/layouts/dashboard/layout.d.ts +90 -0
  644. package/dist/layouts/dashboard/layout.d.ts.map +1 -0
  645. package/dist/layouts/dashboard/sidenav.d.ts +58 -0
  646. package/dist/layouts/dashboard/sidenav.d.ts.map +1 -0
  647. package/dist/layouts/dashboard/topnav.d.ts +41 -0
  648. package/dist/layouts/dashboard/topnav.d.ts.map +1 -0
  649. package/dist/layouts/index.d.ts +27 -850
  650. package/dist/layouts/index.d.ts.map +1 -0
  651. package/dist/layouts/index.js +3 -4
  652. package/dist/layouts/types.d.ts +317 -0
  653. package/dist/layouts/types.d.ts.map +1 -0
  654. package/dist/netron/context.d.ts +18 -0
  655. package/dist/netron/context.d.ts.map +1 -0
  656. package/dist/netron/hooks.d.ts +10 -0
  657. package/dist/netron/hooks.d.ts.map +1 -0
  658. package/dist/netron/index.d.ts +47 -4
  659. package/dist/netron/index.d.ts.map +1 -0
  660. package/dist/netron/index.js +1 -2
  661. package/dist/netron/types.d.ts +12 -0
  662. package/dist/netron/types.d.ts.map +1 -0
  663. package/dist/registry/index.d.ts +8 -341
  664. package/dist/registry/index.d.ts.map +1 -0
  665. package/dist/registry/index.js +1 -2
  666. package/dist/registry/installer.d.ts +137 -0
  667. package/dist/registry/installer.d.ts.map +1 -0
  668. package/dist/registry/manager.d.ts +196 -0
  669. package/dist/registry/manager.d.ts.map +1 -0
  670. package/dist/state/create-store.d.ts +164 -0
  671. package/dist/state/create-store.d.ts.map +1 -0
  672. package/dist/state/index.d.ts +12 -969
  673. package/dist/state/index.d.ts.map +1 -0
  674. package/dist/state/index.js +2 -3
  675. package/dist/state/settings-version.d.ts +255 -0
  676. package/dist/state/settings-version.d.ts.map +1 -0
  677. package/dist/state/stores/auth.d.ts +155 -0
  678. package/dist/state/stores/auth.d.ts.map +1 -0
  679. package/dist/state/stores/index.d.ts +10 -0
  680. package/dist/state/stores/index.d.ts.map +1 -0
  681. package/dist/state/stores/settings.d.ts +151 -0
  682. package/dist/state/stores/settings.d.ts.map +1 -0
  683. package/dist/state/stores/theme.d.ts +87 -0
  684. package/dist/state/stores/theme.d.ts.map +1 -0
  685. package/dist/state/stores/ui.d.ts +204 -0
  686. package/dist/state/stores/ui.d.ts.map +1 -0
  687. package/dist/theme/colors/base.d.ts +61 -0
  688. package/dist/theme/colors/base.d.ts.map +1 -0
  689. package/dist/theme/colors/index.d.ts +10 -0
  690. package/dist/theme/colors/index.d.ts.map +1 -0
  691. package/dist/theme/colors/luxury.d.ts +49 -0
  692. package/dist/theme/colors/luxury.d.ts.map +1 -0
  693. package/dist/theme/components/Autocomplete.d.ts +9 -0
  694. package/dist/theme/components/Autocomplete.d.ts.map +1 -0
  695. package/dist/theme/components/Button.d.ts +33 -0
  696. package/dist/theme/components/Button.d.ts.map +1 -0
  697. package/dist/theme/components/Card.d.ts +20 -0
  698. package/dist/theme/components/Card.d.ts.map +1 -0
  699. package/dist/theme/components/Chip.d.ts +29 -0
  700. package/dist/theme/components/Chip.d.ts.map +1 -0
  701. package/dist/theme/components/DataGrid.d.ts +15 -0
  702. package/dist/theme/components/DataGrid.d.ts.map +1 -0
  703. package/dist/theme/components/DatePicker.d.ts +19 -0
  704. package/dist/theme/components/DatePicker.d.ts.map +1 -0
  705. package/dist/theme/components/Dialog.d.ts +23 -0
  706. package/dist/theme/components/Dialog.d.ts.map +1 -0
  707. package/dist/theme/components/FormControls.d.ts +53 -0
  708. package/dist/theme/components/FormControls.d.ts.map +1 -0
  709. package/dist/theme/components/Tabs.d.ts +21 -0
  710. package/dist/theme/components/Tabs.d.ts.map +1 -0
  711. package/dist/theme/components/TextField.d.ts +87 -0
  712. package/dist/theme/components/TextField.d.ts.map +1 -0
  713. package/dist/theme/components/index.d.ts +27 -0
  714. package/dist/theme/components/index.d.ts.map +1 -0
  715. package/dist/theme/components/theme-utils.d.ts +42 -0
  716. package/dist/theme/components/theme-utils.d.ts.map +1 -0
  717. package/dist/theme/create-theme.d.ts +131 -0
  718. package/dist/theme/create-theme.d.ts.map +1 -0
  719. package/dist/theme/css-variables.d.ts +42 -0
  720. package/dist/theme/css-variables.d.ts.map +1 -0
  721. package/dist/theme/custom-shadows.d.ts +58 -0
  722. package/dist/theme/custom-shadows.d.ts.map +1 -0
  723. package/dist/theme/index.d.ts +23 -1045
  724. package/dist/theme/index.d.ts.map +1 -0
  725. package/dist/theme/index.js +2 -3
  726. package/dist/theme/mixins.d.ts +332 -0
  727. package/dist/theme/mixins.d.ts.map +1 -0
  728. package/dist/theme/opacity.d.ts +51 -0
  729. package/dist/theme/opacity.d.ts.map +1 -0
  730. package/dist/theme/palette/builder.d.ts +138 -0
  731. package/dist/theme/palette/builder.d.ts.map +1 -0
  732. package/dist/theme/palette/index.d.ts +7 -0
  733. package/dist/theme/palette/index.d.ts.map +1 -0
  734. package/dist/theme/palette.d.ts +43 -0
  735. package/dist/theme/palette.d.ts.map +1 -0
  736. package/dist/theme/presets/arctic.d.ts +13 -0
  737. package/dist/theme/presets/arctic.d.ts.map +1 -0
  738. package/dist/theme/presets/default.d.ts +13 -0
  739. package/dist/theme/presets/default.d.ts.map +1 -0
  740. package/dist/theme/presets/dracula.d.ts +27 -0
  741. package/dist/theme/presets/dracula.d.ts.map +1 -0
  742. package/dist/theme/presets/ember.d.ts +23 -0
  743. package/dist/theme/presets/ember.d.ts.map +1 -0
  744. package/dist/theme/presets/index.d.ts +39 -0
  745. package/dist/theme/presets/index.d.ts.map +1 -0
  746. package/dist/theme/presets/luxury.d.ts +13 -0
  747. package/dist/theme/presets/luxury.d.ts.map +1 -0
  748. package/dist/theme/presets/midnight.d.ts +23 -0
  749. package/dist/theme/presets/midnight.d.ts.map +1 -0
  750. package/dist/theme/presets/minimal.d.ts +23 -0
  751. package/dist/theme/presets/minimal.d.ts.map +1 -0
  752. package/dist/theme/presets/nature.d.ts +14 -0
  753. package/dist/theme/presets/nature.d.ts.map +1 -0
  754. package/dist/theme/presets/retro.d.ts +23 -0
  755. package/dist/theme/presets/retro.d.ts.map +1 -0
  756. package/dist/theme/shadows.d.ts +61 -0
  757. package/dist/theme/shadows.d.ts.map +1 -0
  758. package/dist/theme/typography.d.ts +24 -0
  759. package/dist/theme/typography.d.ts.map +1 -0
  760. package/dist/theme/utils/color.d.ts +295 -0
  761. package/dist/theme/utils/color.d.ts.map +1 -0
  762. package/dist/theme/utils/index.d.ts +7 -0
  763. package/dist/theme/utils/index.d.ts.map +1 -0
  764. package/dist/{registry-BrDNftd5.d.ts → types/blocks.d.ts} +30 -191
  765. package/dist/types/blocks.d.ts.map +1 -0
  766. package/dist/types/components.d.ts +139 -0
  767. package/dist/types/components.d.ts.map +1 -0
  768. package/dist/{config-BA6IeTq9.d.ts → types/config.d.ts} +14 -16
  769. package/dist/types/config.d.ts.map +1 -0
  770. package/dist/types/index.d.ts +11 -144
  771. package/dist/types/index.d.ts.map +1 -0
  772. package/dist/types/index.js +1 -2
  773. package/dist/types/registry.d.ts +158 -0
  774. package/dist/types/registry.d.ts.map +1 -0
  775. package/dist/{theme-CrXLfP1c.d.ts → types/theme.d.ts} +31 -34
  776. package/dist/types/theme.d.ts.map +1 -0
  777. package/dist/utils/async-lock.d.ts +169 -0
  778. package/dist/utils/async-lock.d.ts.map +1 -0
  779. package/dist/utils/cn.d.ts +80 -0
  780. package/dist/utils/cn.d.ts.map +1 -0
  781. package/dist/utils/cookies.d.ts +68 -0
  782. package/dist/utils/cookies.d.ts.map +1 -0
  783. package/dist/utils/create-classes.d.ts +90 -0
  784. package/dist/utils/create-classes.d.ts.map +1 -0
  785. package/dist/utils/errors.d.ts +201 -0
  786. package/dist/utils/errors.d.ts.map +1 -0
  787. package/dist/utils/fetch-interceptor.d.ts +230 -0
  788. package/dist/utils/fetch-interceptor.d.ts.map +1 -0
  789. package/dist/utils/font.d.ts +65 -0
  790. package/dist/utils/font.d.ts.map +1 -0
  791. package/dist/utils/format-crypto.d.ts +312 -0
  792. package/dist/utils/format-crypto.d.ts.map +1 -0
  793. package/dist/utils/format-date.d.ts +240 -0
  794. package/dist/utils/format-date.d.ts.map +1 -0
  795. package/dist/utils/format-number.d.ts +245 -0
  796. package/dist/utils/format-number.d.ts.map +1 -0
  797. package/dist/utils/i18n-text.d.ts +68 -0
  798. package/dist/utils/i18n-text.d.ts.map +1 -0
  799. package/dist/utils/index.d.ts +30 -0
  800. package/dist/utils/index.d.ts.map +1 -0
  801. package/dist/utils/jwt.d.ts +227 -0
  802. package/dist/utils/jwt.d.ts.map +1 -0
  803. package/dist/utils/object.d.ts +96 -0
  804. package/dist/utils/object.d.ts.map +1 -0
  805. package/dist/utils/refs.d.ts +60 -0
  806. package/dist/utils/refs.d.ts.map +1 -0
  807. package/dist/utils/rtl.d.ts +75 -0
  808. package/dist/utils/rtl.d.ts.map +1 -0
  809. package/dist/utils/storage.d.ts +190 -0
  810. package/dist/utils/storage.d.ts.map +1 -0
  811. package/dist/utils/string.d.ts +216 -0
  812. package/dist/utils/string.d.ts.map +1 -0
  813. package/dist/utils/template-resolver.d.ts +12 -0
  814. package/dist/utils/template-resolver.d.ts.map +1 -0
  815. package/dist/utils/toast.d.ts +25 -0
  816. package/dist/utils/toast.d.ts.map +1 -0
  817. package/dist/utils/transform-number.d.ts +108 -0
  818. package/dist/utils/transform-number.d.ts.map +1 -0
  819. package/dist/utils/url.d.ts +198 -0
  820. package/dist/utils/url.d.ts.map +1 -0
  821. package/package.json +77 -61
  822. package/dist/chunk-77KIJLPP.js +0 -37
  823. package/dist/chunk-77KIJLPP.js.map +0 -1
  824. package/dist/chunk-BTIT7WYH.js.map +0 -1
  825. package/dist/chunk-BV32OJ2A.js.map +0 -1
  826. package/dist/chunk-DDY7TLUI.js.map +0 -1
  827. package/dist/chunk-DXXZ3ITR.js.map +0 -1
  828. package/dist/chunk-E3XANPTO.js.map +0 -1
  829. package/dist/chunk-GYDT5EKX.js +0 -16505
  830. package/dist/chunk-GYDT5EKX.js.map +0 -1
  831. package/dist/chunk-HO2GKTWJ.js.map +0 -1
  832. package/dist/chunk-JDTC2SBY.js.map +0 -1
  833. package/dist/chunk-LAEY5USO.js.map +0 -1
  834. package/dist/chunk-UR6X3W5I.js.map +0 -1
  835. package/dist/chunk-WC2WM2JD.js.map +0 -1
  836. package/dist/chunk-XWL6J6IO.js.map +0 -1
  837. package/dist/index-odhPSv9I.d.ts +0 -2491
  838. package/dist/settings-plpR26Xk.d.ts +0 -455
  839. package/dist/use-timeout-D7U3EAtH.d.ts +0 -808
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/layouts/types.ts","../src/layouts/core/context.tsx","../src/layouts/core/css-vars.tsx","../src/layouts/core/layout-section.tsx","../src/layouts/core/header-section.tsx","../src/layouts/core/user-menu.tsx","../src/layouts/dashboard/sidenav.tsx","../src/layouts/dashboard/topnav.tsx","../src/layouts/dashboard/layout.tsx","../src/layouts/auth/centered.tsx","../src/layouts/auth/split.tsx","../src/layouts/auth/simple.tsx"],"names":["useTheme","jsx","Box","useState","styled","jsxs","Container","alpha","useCallback","Fragment","Typography","Divider","RouterLink","ListItemIcon","ListItemText","useLocation","useMemo","IconButton","LayoutRoot","MainContent","Link"],"mappings":"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","file":"chunk-Z5OSPAOC.js","sourcesContent":["/**\n * Layout Type Definitions\n *\n * Combines the best patterns from minimal and aurora layout systems.\n *\n * @module layouts/types\n */\n\nimport type { ReactNode } from 'react';\nimport type { Breakpoint, SxProps, Theme } from '@mui/material';\n\n// =============================================================================\n// LAYOUT CONFIGURATION\n// =============================================================================\n\n/**\n * Navigation menu type - determines overall navigation strategy.\n */\nexport type NavigationMenuType = 'sidenav' | 'topnav' | 'combo';\n\n/**\n * Sidenav variant - different sidebar styles.\n */\nexport type SidenavVariant = 'default' | 'mini' | 'stacked';\n\n/**\n * Topnav variant - different top navigation styles.\n */\nexport type TopnavVariant = 'default' | 'slim' | 'stacked';\n\n/**\n * Navigation color mode.\n */\nexport type NavColorMode = 'default' | 'vibrant' | 'integrate';\n\n/**\n * Layout configuration options.\n */\nexport interface LayoutConfig {\n /** Navigation menu type */\n navigationMenuType: NavigationMenuType;\n /** Sidenav variant (when using sidenav or combo) */\n sidenavVariant: SidenavVariant;\n /** Whether sidenav is collapsed */\n sidenavCollapsed: boolean;\n /** Topnav variant (when using topnav or combo) */\n topnavVariant: TopnavVariant;\n /** Navigation color mode */\n navColor: NavColorMode;\n /** Whether mobile drawer is open */\n drawerOpen: boolean;\n /** Current drawer width in pixels */\n drawerWidth: number;\n /** Content compact mode (max-width container) */\n compactLayout: boolean;\n}\n\n// =============================================================================\n// DRAWER WIDTH CONSTANTS\n// =============================================================================\n\n/**\n * Standard drawer width values.\n */\nexport const DRAWER_WIDTHS = {\n /** Full expanded width */\n full: 280,\n /** Collapsed/mini width (72 content + 1px border = header desktop height) */\n mini: 73,\n /** Mobile drawer width */\n mobile: 280,\n /** Stacked sidenav collapsed width (left panel only) */\n stackedCollapsed: 72,\n /** Stacked sidenav expanded width */\n stackedExpanded: 300,\n} as const;\n\n/**\n * Header height values by breakpoint.\n */\nexport const HEADER_HEIGHTS = {\n mobile: 64,\n desktop: 72,\n} as const;\n\n// =============================================================================\n// NAVIGATION ITEM TYPES\n// =============================================================================\n\n/**\n * Layout navigation item definition.\n *\n * This is the data structure used for layout configuration.\n * For the NavItem component, see @omnitron-dev/prism/components/nav-section.\n */\nexport interface LayoutNavItem {\n /** Unique item ID */\n id: string;\n /** Display title */\n title: string;\n /** Navigation path (for leaf items) */\n path?: string;\n /** Icon component */\n icon?: ReactNode;\n /** Info badge/label */\n info?: ReactNode;\n /** Caption/description text */\n caption?: string;\n /** Disabled state */\n disabled?: boolean;\n /** External link flag */\n external?: boolean;\n /** Child items for nested menus */\n children?: LayoutNavItem[];\n /** Required roles for visibility */\n allowedRoles?: string[];\n /** Required permissions for visibility */\n allowedPermissions?: string[];\n /** Deep match for active state (match child paths) */\n deepMatch?: boolean;\n /** Badge for \"new\" or count indicators */\n badge?: string | number;\n /**\n * Selection prefix(es) for active state matching.\n * If set, the item will be marked active when the current path\n * starts with any of the listed prefixes. Useful for parent\n * items that should stay highlighted when on child routes —\n * including child routes whose URL doesn't share a prefix with\n * the item's `path` (e.g. /communities + /c/<slug>).\n *\n * Accepts a single string or an array of strings; arrays are\n * matched as \"any prefix wins\".\n *\n * @example\n * ```tsx\n * // Single prefix\n * { id: 'products', path: '/products', selectionPrefix: '/products' }\n * // Multiple prefixes (covers two disjoint URL spaces)\n * { id: 'communities', path: '/communities',\n * selectionPrefix: ['/communities', '/c/'] }\n * ```\n */\n selectionPrefix?: string | string[];\n}\n\n/**\n * Layout navigation section (group of items with optional subheader).\n *\n * This is the data structure used for layout configuration.\n * For the NavSection component, see @omnitron-dev/prism/components/nav-section.\n */\nexport interface LayoutNavSection {\n /** Section ID */\n id: string;\n /** Section subheader text */\n subheader?: string;\n /** Items in this section */\n items: LayoutNavItem[];\n}\n\n/**\n * Layout navigation data structure.\n */\nexport type LayoutNavData = LayoutNavSection[];\n\n// =============================================================================\n// HEADER SECTION TYPES\n// =============================================================================\n\n/**\n * Header section slots for flexible composition.\n */\nexport interface HeaderSlots {\n /** Content above the main header row */\n topArea?: ReactNode;\n /** Left side content (logo, menu button) */\n leftArea?: ReactNode;\n /** Center content (navigation, search) */\n centerArea?: ReactNode;\n /** Right side content (actions, user menu) */\n rightArea?: ReactNode;\n /** Content below the main header row (horizontal nav) */\n bottomArea?: ReactNode;\n}\n\n/**\n * Header section props.\n */\nexport interface HeaderSectionProps {\n /** Slot content */\n slots?: HeaderSlots;\n /** Props for each slot */\n slotProps?: {\n topArea?: SxProps<Theme>;\n leftArea?: SxProps<Theme>;\n centerArea?: SxProps<Theme>;\n rightArea?: SxProps<Theme>;\n bottomArea?: SxProps<Theme>;\n };\n /** Disable sticky behavior */\n disableSticky?: boolean;\n /** Disable offset detection (blur on scroll) */\n disableOffset?: boolean;\n /** Custom CSS variables */\n cssVars?: Record<string, string | number>;\n /** MUI sx prop */\n sx?: SxProps<Theme>;\n}\n\n// =============================================================================\n// LAYOUT SECTION TYPES\n// =============================================================================\n\n/**\n * Main layout section props.\n */\nexport interface LayoutSectionProps {\n /** Header section */\n headerSection?: ReactNode;\n /** Sidebar section (sidenav) */\n sidebarSection?: ReactNode;\n /** Footer section */\n footerSection?: ReactNode;\n /** Main content */\n children?: ReactNode;\n /** Custom CSS variables */\n cssVars?: Record<string, string | number>;\n /** MUI sx prop */\n sx?: SxProps<Theme>;\n}\n\n// =============================================================================\n// DASHBOARD LAYOUT TYPES\n// =============================================================================\n\n/**\n * Dashboard layout props.\n */\nexport interface DashboardLayoutProps {\n /** Child content */\n children?: ReactNode;\n /** Layout breakpoint threshold */\n layoutQuery?: Breakpoint;\n /** Navigation data */\n navData?: LayoutNavData;\n /** Header slots */\n headerSlots?: HeaderSlots;\n /** Props for layout sections */\n slotProps?: {\n header?: Partial<HeaderSectionProps>;\n nav?: {\n data?: LayoutNavData;\n };\n main?: {\n sx?: SxProps<Theme>;\n };\n };\n}\n\n// =============================================================================\n// AUTH LAYOUT TYPES\n// =============================================================================\n\n/**\n * Auth layout variant.\n */\nexport type AuthLayoutVariant = 'centered' | 'split' | 'simple';\n\n/**\n * Auth layout props.\n */\nexport interface AuthLayoutProps {\n /** Child content */\n children?: ReactNode;\n /** Layout variant */\n variant?: AuthLayoutVariant;\n /** Title text (for split layout) */\n title?: string;\n /** Subtitle text (for split layout) */\n subtitle?: string;\n /** Illustration image (for split layout) */\n illustration?: ReactNode;\n /** Show logo in header */\n showLogo?: boolean;\n /** Show help link */\n showHelp?: boolean;\n /** Custom max width for content */\n maxWidth?: number | string;\n}\n\n// =============================================================================\n// LAYOUT CONTEXT TYPES\n// =============================================================================\n\n/**\n * Layout context value.\n */\nexport interface LayoutContextValue {\n /** Current layout configuration */\n config: LayoutConfig;\n /** Whether the viewport is below the mobile breakpoint */\n isMobile: boolean;\n /** Update configuration */\n setConfig: (config: Partial<LayoutConfig>) => void;\n /** Toggle drawer open/close */\n toggleDrawer: () => void;\n /** Toggle sidenav collapse */\n toggleSidenavCollapse: () => void;\n /** Set navigation menu type */\n setNavigationMenuType: (type: NavigationMenuType) => void;\n /** Set sidenav variant */\n setSidenavVariant: (variant: SidenavVariant) => void;\n /** Set nav color mode */\n setNavColor: (mode: NavColorMode) => void;\n /** Open navigation items (for nested menus) */\n openItems: string[];\n /** Set open items */\n setOpenItems: (items: string[]) => void;\n /** Check if nested item is open */\n isItemOpen: (id: string) => boolean;\n /** Toggle item open state */\n toggleItem: (id: string) => void;\n /**\n * Check if any nested item is active based on current pathname.\n * Used to keep parent items highlighted when on child routes.\n *\n * @param items - Child items to check\n * @param pathname - Current pathname (typically from router)\n * @returns true if any nested item matches the current route\n */\n isNestedItemActive: (items: LayoutNavItem[] | undefined, pathname: string) => boolean;\n /**\n * Check if a single nav item is active based on pathname.\n * Supports exact match, deep match, and selectionPrefix matching.\n *\n * @param item - Nav item to check\n * @param pathname - Current pathname\n * @returns true if the item is active\n */\n isNavItemActive: (item: LayoutNavItem, pathname: string) => boolean;\n}\n\n// =============================================================================\n// CSS VARIABLES\n// =============================================================================\n\n/**\n * CSS variable names for layout dimensions.\n */\nexport const LAYOUT_CSS_VARS = {\n // Header\n headerHeight: '--layout-header-height',\n headerMobileHeight: '--layout-header-mobile-height',\n headerDesktopHeight: '--layout-header-desktop-height',\n headerBlur: '--layout-header-blur',\n headerZIndex: '--layout-header-z-index',\n // Nav\n navWidth: '--layout-nav-width',\n navMiniWidth: '--layout-nav-mini-width',\n navMobileWidth: '--layout-nav-mobile-width',\n navZIndex: '--layout-nav-z-index',\n navBg: '--layout-nav-bg',\n navTextColor: '--layout-nav-text-color',\n navTextSecondaryColor: '--layout-nav-text-secondary-color',\n // Main\n mainPaddingTop: '--layout-main-padding-top',\n mainPaddingBottom: '--layout-main-padding-bottom',\n mainPaddingLeft: '--layout-main-padding-left',\n mainPaddingRight: '--layout-main-padding-right',\n} as const;\n\n/**\n * Default CSS variable values.\n */\nexport const DEFAULT_LAYOUT_CSS_VARS: Record<string, string | number> = {\n [LAYOUT_CSS_VARS.headerMobileHeight]: `${HEADER_HEIGHTS.mobile}px`,\n [LAYOUT_CSS_VARS.headerDesktopHeight]: `${HEADER_HEIGHTS.desktop}px`,\n [LAYOUT_CSS_VARS.headerBlur]: '8px',\n [LAYOUT_CSS_VARS.navWidth]: `${DRAWER_WIDTHS.full}px`,\n [LAYOUT_CSS_VARS.navMiniWidth]: `${DRAWER_WIDTHS.mini}px`,\n [LAYOUT_CSS_VARS.navMobileWidth]: `${DRAWER_WIDTHS.mobile}px`,\n};\n","/**\n * Layout Context\n *\n * Provides layout configuration and state management across the layout system.\n *\n * @module layouts/core/context\n */\n\nimport { createContext, useContext, useCallback, useMemo, useState, type ReactNode } from 'react';\nimport { useMediaQuery, useTheme } from '@mui/material';\nimport type {\n LayoutConfig,\n LayoutContextValue,\n NavigationMenuType,\n SidenavVariant,\n NavColorMode,\n LayoutNavItem,\n} from '../types.js';\nimport { DRAWER_WIDTHS } from '../types.js';\nimport { useSettingsStore } from '../../state/stores/settings.js';\n\n// =============================================================================\n// DEFAULT CONFIGURATION\n// =============================================================================\n\n/**\n * Default layout configuration.\n */\nexport const defaultLayoutConfig: LayoutConfig = {\n navigationMenuType: 'sidenav',\n sidenavVariant: 'default',\n sidenavCollapsed: false,\n topnavVariant: 'default',\n navColor: 'default',\n drawerOpen: false,\n drawerWidth: DRAWER_WIDTHS.full,\n compactLayout: false,\n};\n\n// =============================================================================\n// CONTEXT\n// =============================================================================\n\n/**\n * Layout context.\n */\nexport const LayoutContext = createContext<LayoutContextValue | null>(null);\n\nLayoutContext.displayName = 'LayoutContext';\n\n// =============================================================================\n// PROVIDER\n// =============================================================================\n\nexport interface LayoutProviderProps {\n /** Child components */\n children: ReactNode;\n /** Initial configuration overrides */\n initialConfig?: Partial<LayoutConfig>;\n /**\n * Persistence key for sidebar collapsed state.\n * When provided, sidebar collapsed state is saved to localStorage\n * via the settings store and restored on mount.\n * Use different keys for different layouts (e.g., 'main', 'admin').\n */\n persistKey?: string;\n}\n\n/**\n * Layout provider component.\n * Manages layout configuration and navigation state.\n */\nexport function LayoutProvider({ children, initialConfig, persistKey }: LayoutProviderProps): ReactNode {\n const theme = useTheme();\n const isMobile = useMediaQuery(theme.breakpoints.down('md'));\n\n // Read persisted sidebar collapsed state\n const sidebarCollapsedMap = useSettingsStore((s) => s.sidebarCollapsed);\n const setSidebarCollapsedPersist = useSettingsStore((s) => s.setSidebarCollapsed);\n\n // Layout configuration state — restore collapsed from persistence if available\n const [config, setConfigState] = useState<LayoutConfig>(() => {\n const persisted = persistKey ? (sidebarCollapsedMap[persistKey] ?? false) : false;\n return {\n ...defaultLayoutConfig,\n ...initialConfig,\n ...(persistKey ? { sidenavCollapsed: persisted } : {}),\n };\n });\n\n // Open nav items state (for nested menus)\n const [openItems, setOpenItems] = useState<string[]>([]);\n\n // Calculate drawer width based on sidenav variant and collapse state\n const calculatedDrawerWidth = useMemo(() => {\n if (config.sidenavVariant === 'mini' || config.sidenavCollapsed) {\n return config.sidenavVariant === 'stacked' ? DRAWER_WIDTHS.stackedCollapsed : DRAWER_WIDTHS.mini;\n }\n if (config.sidenavVariant === 'stacked') {\n return DRAWER_WIDTHS.stackedExpanded;\n }\n return DRAWER_WIDTHS.full;\n }, [config.sidenavVariant, config.sidenavCollapsed]);\n\n // Update config with calculated drawer width\n const effectiveConfig = useMemo(\n () => ({\n ...config,\n drawerWidth: calculatedDrawerWidth,\n }),\n [config, calculatedDrawerWidth]\n );\n\n // Set config (partial update)\n const setConfig = useCallback((updates: Partial<LayoutConfig>) => {\n setConfigState((prev) => ({ ...prev, ...updates }));\n }, []);\n\n // Toggle drawer\n const toggleDrawer = useCallback(() => {\n setConfigState((prev) => ({ ...prev, drawerOpen: !prev.drawerOpen }));\n }, []);\n\n // Toggle sidenav collapse (with optional persistence)\n const toggleSidenavCollapse = useCallback(() => {\n setConfigState((prev) => {\n const next = !prev.sidenavCollapsed;\n // Persist outside of React's state updater to avoid update-during-render warning\n if (persistKey) {\n queueMicrotask(() => setSidebarCollapsedPersist(persistKey, next));\n }\n return { ...prev, sidenavCollapsed: next };\n });\n }, [persistKey, setSidebarCollapsedPersist]);\n\n // Set navigation menu type\n const setNavigationMenuType = useCallback((type: NavigationMenuType) => {\n setConfigState((prev) => ({ ...prev, navigationMenuType: type }));\n }, []);\n\n // Set sidenav variant\n const setSidenavVariant = useCallback((variant: SidenavVariant) => {\n setConfigState((prev) => ({ ...prev, sidenavVariant: variant }));\n }, []);\n\n // Set nav color mode\n const setNavColor = useCallback((mode: NavColorMode) => {\n setConfigState((prev) => ({ ...prev, navColor: mode }));\n }, []);\n\n // Check if item is open\n const isItemOpen = useCallback((id: string) => openItems.includes(id), [openItems]);\n\n // Toggle item open state\n const toggleItem = useCallback((id: string) => {\n setOpenItems((prev) => (prev.includes(id) ? prev.filter((item) => item !== id) : [...prev, id]));\n }, []);\n\n // Check if a single nav item is active based on pathname\n const isNavItemActive = useCallback((item: LayoutNavItem, pathname: string): boolean => {\n // No path means not activatable\n if (!item.path) return false;\n\n // Strip query params, hash, and trailing slash for comparison\n const cleanPath = pathname.split(/[?#]/)[0].replace(/\\/+$/, '') || '/';\n\n // Exact match\n if (item.path === cleanPath) return true;\n\n // Selection prefix match. Accepts a single string or an array\n // — array form lets one nav item span disjoint URL spaces\n // (e.g. \"/communities\" + \"/c/\" for the Communities entry).\n if (item.selectionPrefix) {\n const prefixes = Array.isArray(item.selectionPrefix)\n ? item.selectionPrefix\n : [item.selectionPrefix];\n if (prefixes.some((p) => cleanPath.startsWith(p))) {\n return true;\n }\n }\n\n // Deep match (default: true) — active if path is a prefix of pathname\n // e.g., /admin/orgs stays highlighted when on /admin/orgs/list\n // Set deepMatch: false to require exact match only\n if (item.deepMatch !== false && cleanPath.startsWith(item.path)) {\n // Ensure we're matching path segments, not partial strings\n // e.g., /product should not match /products\n const nextChar = cleanPath[item.path.length];\n return !nextChar || nextChar === '/';\n }\n\n return false;\n }, []);\n\n // Check if any nested item is active (recursive)\n const isNestedItemActive = useCallback(\n (items: LayoutNavItem[] | undefined, pathname: string): boolean => {\n if (!items || items.length === 0) return false;\n\n const checkItem = (item: LayoutNavItem): boolean => {\n // Check if this item is active\n if (isNavItemActive(item, pathname)) {\n return true;\n }\n\n // Check children recursively\n if (item.children && item.children.length > 0) {\n return item.children.some(checkItem);\n }\n\n return false;\n };\n\n return items.some(checkItem);\n },\n [isNavItemActive]\n );\n\n // Auto-close drawer on mobile when navigating\n // This would typically be connected to router events\n\n // Context value\n const contextValue = useMemo<LayoutContextValue>(\n () => ({\n config: effectiveConfig,\n isMobile,\n setConfig,\n toggleDrawer,\n toggleSidenavCollapse,\n setNavigationMenuType,\n setSidenavVariant,\n setNavColor,\n openItems,\n setOpenItems,\n isItemOpen,\n toggleItem,\n isNestedItemActive,\n isNavItemActive,\n }),\n [\n effectiveConfig,\n isMobile,\n setConfig,\n toggleDrawer,\n toggleSidenavCollapse,\n setNavigationMenuType,\n setSidenavVariant,\n setNavColor,\n openItems,\n isItemOpen,\n toggleItem,\n isNestedItemActive,\n isNavItemActive,\n ]\n );\n\n return <LayoutContext.Provider value={contextValue}>{children}</LayoutContext.Provider>;\n}\n\n// =============================================================================\n// HOOKS\n// =============================================================================\n\n/**\n * Hook to access layout context.\n *\n * @returns Layout context value\n * @throws If used outside LayoutProvider\n *\n * @example\n * ```tsx\n * function NavToggle() {\n * const { config, toggleSidenavCollapse } = useLayoutContext();\n *\n * return (\n * <IconButton onClick={toggleSidenavCollapse}>\n * {config.sidenavCollapsed ? <MenuOpenIcon /> : <MenuIcon />}\n * </IconButton>\n * );\n * }\n * ```\n */\nexport function useLayoutContext(): LayoutContextValue {\n const context = useContext(LayoutContext);\n\n if (!context) {\n throw new Error('useLayoutContext must be used within a LayoutProvider');\n }\n\n return context;\n}\n\n/**\n * Hook to access only layout configuration.\n */\nexport function useLayoutConfig(): LayoutConfig {\n const { config } = useLayoutContext();\n return config;\n}\n\n/**\n * Hook to check if sidenav should be visible.\n */\nexport function useSidenavVisible(): boolean {\n const { config } = useLayoutContext();\n return config.navigationMenuType === 'sidenav' || config.navigationMenuType === 'combo';\n}\n\n/**\n * Hook to check if topnav should be visible.\n */\nexport function useTopnavVisible(): boolean {\n const { config } = useLayoutContext();\n return config.navigationMenuType === 'topnav' || config.navigationMenuType === 'combo';\n}\n\n/**\n * Hook to check navigation item active state with current pathname.\n * Provides utilities for building navigation components.\n *\n * @param pathname - Current pathname from router\n * @returns Object with active state checking functions\n *\n * @example\n * ```tsx\n * function NavItem({ item }: { item: LayoutNavItem }) {\n * const { pathname } = useLocation(); // From your router\n * const { isItemActive, isNestedActive } = useNavActive(pathname);\n *\n * const active = isItemActive(item);\n * const nestedActive = item.children && isNestedActive(item.children);\n *\n * return (\n * <ListItemButton selected={active || nestedActive}>\n * {item.title}\n * </ListItemButton>\n * );\n * }\n * ```\n */\nexport function useNavActive(pathname: string) {\n const { isNavItemActive, isNestedItemActive } = useLayoutContext();\n\n return useMemo(\n () => ({\n /**\n * Check if a nav item is active.\n */\n isItemActive: (item: LayoutNavItem) => isNavItemActive(item, pathname),\n /**\n * Check if any nested item is active.\n */\n isNestedActive: (items: LayoutNavItem[] | undefined) => isNestedItemActive(items, pathname),\n }),\n [isNavItemActive, isNestedItemActive, pathname]\n );\n}\n","/**\n * Layout CSS Variables\n *\n * Global CSS variables for layout dimensions and styling.\n *\n * @module layouts/core/css-vars\n */\n\nimport type { ReactNode } from 'react';\nimport GlobalStyles from '@mui/material/GlobalStyles';\nimport { useTheme } from '@mui/material/styles';\nimport { LAYOUT_CSS_VARS, HEADER_HEIGHTS, DRAWER_WIDTHS, type NavColorMode } from '../types.js';\n\n// =============================================================================\n// CSS VARIABLE GENERATION\n// =============================================================================\n\n/**\n * Generate base layout CSS variables.\n */\nexport function getBaseLayoutCssVars(zIndexBase: number): Record<string, string | number> {\n return {\n // Header dimensions\n [LAYOUT_CSS_VARS.headerMobileHeight]: `${HEADER_HEIGHTS.mobile}px`,\n [LAYOUT_CSS_VARS.headerDesktopHeight]: `${HEADER_HEIGHTS.desktop}px`,\n [LAYOUT_CSS_VARS.headerBlur]: '8px',\n [LAYOUT_CSS_VARS.headerZIndex]: zIndexBase + 1,\n // Nav dimensions\n [LAYOUT_CSS_VARS.navWidth]: `${DRAWER_WIDTHS.full}px`,\n [LAYOUT_CSS_VARS.navMiniWidth]: `${DRAWER_WIDTHS.mini}px`,\n [LAYOUT_CSS_VARS.navMobileWidth]: `${DRAWER_WIDTHS.mobile}px`,\n [LAYOUT_CSS_VARS.navZIndex]: zIndexBase,\n };\n}\n\n/**\n * Generate navigation color CSS variables based on mode.\n */\nexport function getNavColorCssVars(\n mode: NavColorMode,\n theme: {\n palette: {\n mode: 'light' | 'dark';\n background: { paper: string; default: string };\n text: { primary: string; secondary: string };\n };\n }\n): Record<string, string> {\n const isDark = theme.palette.mode === 'dark';\n\n switch (mode) {\n case 'vibrant':\n // Vibrant mode - gradient background with white text\n return {\n [LAYOUT_CSS_VARS.navBg]: isDark\n ? 'linear-gradient(135deg, #1a237e 0%, #0d47a1 100%)'\n : 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',\n [LAYOUT_CSS_VARS.navTextColor]: '#ffffff',\n [LAYOUT_CSS_VARS.navTextSecondaryColor]: 'rgba(255, 255, 255, 0.7)',\n };\n\n case 'integrate':\n // Integrate mode - blends with page background\n return {\n [LAYOUT_CSS_VARS.navBg]: 'transparent',\n [LAYOUT_CSS_VARS.navTextColor]: theme.palette.text.primary,\n [LAYOUT_CSS_VARS.navTextSecondaryColor]: theme.palette.text.secondary,\n };\n\n case 'default':\n default:\n // Default mode - distinct nav background\n return {\n [LAYOUT_CSS_VARS.navBg]: theme.palette.background.paper,\n [LAYOUT_CSS_VARS.navTextColor]: theme.palette.text.primary,\n [LAYOUT_CSS_VARS.navTextSecondaryColor]: theme.palette.text.secondary,\n };\n }\n}\n\n/**\n * Merge custom CSS variables with defaults.\n */\nexport function mergeLayoutCssVars(\n customVars: Record<string, string | number> | undefined,\n ...defaultVars: Record<string, string | number>[]\n): Record<string, string | number> {\n return Object.assign({}, ...defaultVars, customVars);\n}\n\n// =============================================================================\n// GLOBAL STYLES COMPONENT\n// =============================================================================\n\nexport interface LayoutGlobalStylesProps {\n /** Additional CSS variables */\n cssVars?: Record<string, string | number>;\n}\n\n/**\n * Global CSS variables for layouts.\n * Should be rendered once at the root of the layout system.\n */\nexport function LayoutGlobalStyles({ cssVars }: LayoutGlobalStylesProps): ReactNode {\n const theme = useTheme();\n\n const baseVars = getBaseLayoutCssVars(theme.zIndex.drawer);\n\n const allVars = mergeLayoutCssVars(cssVars, baseVars);\n\n // Convert to CSS string (kept for debugging)\n const _cssString = Object.entries(allVars)\n .map(([key, value]) => `${key}: ${value};`)\n .join('\\n');\n\n return (\n <GlobalStyles\n styles={{\n ':root': Object.fromEntries(Object.entries(allVars).map(([key, value]) => [key, value])),\n // Responsive header height\n [`@media (max-width: ${theme.breakpoints.values.md}px)`]: {\n ':root': {\n [LAYOUT_CSS_VARS.headerHeight]: `var(${LAYOUT_CSS_VARS.headerMobileHeight})`,\n },\n },\n [`@media (min-width: ${theme.breakpoints.values.md}px)`]: {\n ':root': {\n [LAYOUT_CSS_VARS.headerHeight]: `var(${LAYOUT_CSS_VARS.headerDesktopHeight})`,\n },\n },\n }}\n />\n );\n}\n","/**\n * Layout Section\n *\n * Root container for all layout variants.\n * Provides the structural foundation for header, sidebar, main, and footer.\n *\n * @module layouts/core/layout-section\n */\n\nimport type { ReactNode } from 'react';\nimport { styled } from '@mui/material/styles';\nimport Box from '@mui/material/Box';\nimport type { SxProps, Theme } from '@mui/material';\nimport { LayoutGlobalStyles } from './css-vars.js';\n\n// =============================================================================\n// STYLED COMPONENTS\n// =============================================================================\n\n/**\n * Root layout container.\n */\nconst LayoutRoot = styled(Box)({\n minHeight: '100%',\n display: 'flex',\n flex: '1 1 auto',\n flexDirection: 'column',\n});\n\n/**\n * Container for sidebar + main content area.\n */\nconst LayoutSidebarContainer = styled(Box)({\n display: 'flex',\n flex: '1 1 auto',\n flexDirection: 'row',\n minHeight: 0, // Allow shrinking in flex context\n});\n\n// =============================================================================\n// COMPONENT\n// =============================================================================\n\nexport interface LayoutSectionProps {\n /** Header section (rendered at top) */\n headerSection?: ReactNode;\n /** Sidebar section (sidenav) */\n sidebarSection?: ReactNode;\n /** Footer section (rendered at bottom of main area) */\n footerSection?: ReactNode;\n /** Main content */\n children?: ReactNode;\n /** Custom CSS variables */\n cssVars?: Record<string, string | number>;\n /** MUI sx prop */\n sx?: SxProps<Theme>;\n}\n\n/**\n * Layout Section - Root container for page layouts.\n *\n * Structure:\n * ```\n * LayoutRoot\n * ├── GlobalStyles (CSS variables)\n * ├── HeaderSection\n * └── LayoutSidebarContainer (when sidebar exists)\n * ├── SidebarSection\n * └── MainContent\n * ├── children\n * └── FooterSection\n * └── or MainContent directly (when no sidebar)\n * ```\n *\n * @example\n * ```tsx\n * <LayoutSection\n * headerSection={<HeaderSection slots={{ leftArea: <Logo /> }} />}\n * sidebarSection={<Sidenav />}\n * footerSection={<Footer />}\n * >\n * <Outlet />\n * </LayoutSection>\n * ```\n */\nexport function LayoutSection({\n headerSection,\n sidebarSection,\n footerSection,\n children,\n cssVars,\n sx,\n}: LayoutSectionProps): ReactNode {\n const mainContent = (\n <Box\n component=\"main\"\n sx={{\n display: 'flex',\n flex: '1 1 auto',\n flexDirection: 'column',\n minWidth: 0, // Allow text truncation\n }}\n >\n {children}\n {footerSection}\n </Box>\n );\n\n return (\n <LayoutRoot sx={sx}>\n <LayoutGlobalStyles cssVars={cssVars} />\n\n {headerSection}\n\n {sidebarSection ? (\n <LayoutSidebarContainer>\n {sidebarSection}\n {mainContent}\n </LayoutSidebarContainer>\n ) : (\n mainContent\n )}\n </LayoutRoot>\n );\n}\n\n// =============================================================================\n// MAIN SECTION COMPONENT\n// =============================================================================\n\nexport interface MainSectionProps {\n /** Content */\n children?: ReactNode;\n /** MUI sx prop */\n sx?: SxProps<Theme>;\n}\n\n/**\n * Main content section.\n * Simple flex container for page content.\n */\nexport function MainSection({ children, sx }: MainSectionProps): ReactNode {\n return (\n <Box\n component=\"main\"\n sx={[\n {\n display: 'flex',\n flex: '1 1 auto',\n flexDirection: 'column',\n minWidth: 0,\n py: {\n xs: 2,\n sm: 3,\n md: 4,\n },\n px: {\n xs: 2,\n sm: 3,\n md: 4,\n },\n },\n ...(Array.isArray(sx) ? sx : [sx]),\n ]}\n >\n {children}\n </Box>\n );\n}\n","/**\n * Header Section\n *\n * Slot-based header component with sticky positioning and scroll effects.\n *\n * @module layouts/core/header-section\n */\n\nimport type { ReactNode } from 'react';\nimport { useState, useEffect } from 'react';\nimport { styled, alpha } from '@mui/material/styles';\nimport type { CSSObject } from '@mui/material/styles';\nimport AppBar from '@mui/material/AppBar';\nimport Toolbar from '@mui/material/Toolbar';\nimport Box from '@mui/material/Box';\nimport Container from '@mui/material/Container';\nimport type { SxProps, Theme, Breakpoint } from '@mui/material';\nimport { LAYOUT_CSS_VARS, HEADER_HEIGHTS, type HeaderSlots } from '../types.js';\n\n// =============================================================================\n// HOOKS\n// =============================================================================\n\n/**\n * Hook to detect scroll offset for header effects.\n *\n * Uses **hysteresis** (a small deadband around the threshold) to\n * prevent the boolean from flipping on every micro-pixel of\n * scroll. Without it, the header `::before` blur-layer opacity\n * (transitioning over `theme.transitions.duration.shorter`) was\n * observed to \"blink\" when:\n *\n * 1. The page is just-barely taller than the viewport — at the\n * bottom of the document, browser address-bar collapses\n * (mobile) or sticky-element layout shifts (e.g. a Collapse\n * animation finishing on the DescriptionCard) cause\n * `window.scrollY` to oscillate by a handful of pixels\n * across the 10px threshold, triggering 4–10 visible\n * opacity transitions per second.\n * 2. Any rAF / ResizeObserver downstream of `isOffset` adjusts\n * layout in response → scrollY changes again → feedback\n * loop.\n *\n * Hysteresis breaks the loop: enabling requires crossing the\n * upper bound (`threshold`); disabling requires falling back\n * below the lower bound (`threshold / 2`). Once `isOffset` is\n * true, a 5px wobble around 10 no longer flips it.\n */\nfunction useScrollOffset(threshold = 10): boolean {\n const [isOffset, setIsOffset] = useState(false);\n\n useEffect(() => {\n if (typeof window === 'undefined') return undefined;\n\n const upper = threshold;\n const lower = Math.max(0, threshold / 2);\n\n let ticking = false;\n const handleScroll = () => {\n if (!ticking) {\n ticking = true;\n requestAnimationFrame(() => {\n const y = window.scrollY;\n setIsOffset((prev) => (prev ? y > lower : y > upper));\n ticking = false;\n });\n }\n };\n\n window.addEventListener('scroll', handleScroll, { passive: true });\n handleScroll(); // Check initial position\n\n return () => {\n window.removeEventListener('scroll', handleScroll);\n };\n }, [threshold]);\n\n return isOffset;\n}\n\n// =============================================================================\n// STYLED COMPONENTS\n// =============================================================================\n\ninterface StyledAppBarProps {\n isOffset?: boolean;\n disableOffset?: boolean;\n disableElevation?: boolean;\n}\n\nconst StyledAppBar = styled(AppBar, {\n shouldForwardProp: (prop) => !['isOffset', 'disableOffset', 'disableElevation'].includes(prop as string),\n})<StyledAppBarProps>(({ theme, isOffset, disableOffset, disableElevation }) => {\n // Shared base for pseudo-elements: hidden by default, fade in on scroll\n const pseudoBase: CSSObject = {\n opacity: 0,\n content: '\"\"',\n visibility: 'hidden',\n position: 'absolute',\n transition: theme.transitions.create(['opacity', 'visibility'], {\n easing: theme.transitions.easing.easeInOut,\n duration: theme.transitions.duration.shorter,\n }),\n };\n\n // ::before — blurred background layer\n const bgStyles: CSSObject = {\n ...pseudoBase,\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n zIndex: -1,\n backdropFilter: `blur(var(${LAYOUT_CSS_VARS.headerBlur}, 8px))`,\n WebkitBackdropFilter: `blur(var(${LAYOUT_CSS_VARS.headerBlur}, 8px))`,\n backgroundColor: alpha(theme.palette.background.default, 0.8),\n ...(isOffset && { opacity: 1, visibility: 'visible' }),\n };\n\n // ::after — soft diffused shadow\n const shadowStyles: CSSObject = {\n ...pseudoBase,\n left: 0,\n right: 0,\n bottom: 0,\n height: 24,\n margin: 'auto',\n borderRadius: '50%',\n width: 'calc(100% - 48px)',\n zIndex: -2,\n boxShadow: theme.shadows[8],\n ...(isOffset && { opacity: 0.48, visibility: 'visible' }),\n };\n\n return {\n backgroundColor: 'transparent',\n boxShadow: 'none',\n zIndex: `var(${LAYOUT_CSS_VARS.headerZIndex}, ${theme.zIndex.appBar})`,\n ...(!disableOffset && { '&::before': bgStyles }),\n ...(!disableElevation && { '&::after': shadowStyles }),\n };\n});\n\nconst StyledToolbar = styled(Toolbar)(({ theme }) => ({\n minHeight: HEADER_HEIGHTS.mobile,\n [theme.breakpoints.up('md')]: {\n minHeight: HEADER_HEIGHTS.desktop,\n paddingLeft: theme.spacing(4),\n paddingRight: theme.spacing(4),\n },\n}));\n\nconst SlotContainer = styled(Box)({\n display: 'flex',\n alignItems: 'center',\n});\n\n// =============================================================================\n// COMPONENT\n// =============================================================================\n\nexport interface HeaderSectionProps {\n /** Slot content */\n slots?: HeaderSlots;\n /** Props for each slot */\n slotProps?: {\n topArea?: SxProps<Theme>;\n leftArea?: SxProps<Theme>;\n centerArea?: SxProps<Theme>;\n rightArea?: SxProps<Theme>;\n bottomArea?: SxProps<Theme>;\n container?: SxProps<Theme>;\n };\n /** Disable sticky positioning */\n disableSticky?: boolean;\n /** Disable scroll offset effects (blur on scroll) */\n disableOffset?: boolean;\n /** Disable scroll elevation shadow */\n disableElevation?: boolean;\n /** Use container for max-width */\n containerized?: boolean;\n /** Container max width */\n maxWidth?: Breakpoint | false;\n /** MUI sx prop */\n sx?: SxProps<Theme>;\n}\n\n/**\n * Header Section - Slot-based header with scroll effects.\n *\n * Slots:\n * - `topArea`: Content above the main toolbar row\n * - `leftArea`: Left side (logo, menu toggle)\n * - `centerArea`: Center content (search, navigation)\n * - `rightArea`: Right side (actions, user menu)\n * - `bottomArea`: Content below main toolbar (horizontal nav)\n *\n * @example\n * ```tsx\n * <HeaderSection\n * slots={{\n * leftArea: (\n * <>\n * <MenuButton onClick={onMenuClick} />\n * <Logo />\n * </>\n * ),\n * centerArea: <Searchbar />,\n * rightArea: (\n * <>\n * <NotificationsButton />\n * <UserMenu />\n * </>\n * ),\n * }}\n * />\n * ```\n */\nexport function HeaderSection({\n slots,\n slotProps,\n disableSticky = false,\n disableOffset = false,\n disableElevation = false,\n containerized = false,\n maxWidth = 'lg',\n sx,\n}: HeaderSectionProps): ReactNode {\n const isOffset = useScrollOffset();\n\n const toolbarContent = (\n <>\n {/* Left area */}\n {slots?.leftArea && (\n <SlotContainer sx={{ gap: 1, ...(slotProps?.leftArea as object) }}>{slots.leftArea}</SlotContainer>\n )}\n\n {/* Center area - flex to push right area to the end */}\n <SlotContainer\n sx={{\n flex: 1,\n justifyContent: 'center',\n mx: 2,\n ...(slotProps?.centerArea as object),\n }}\n >\n {slots?.centerArea}\n </SlotContainer>\n\n {/* Right area */}\n {slots?.rightArea && (\n <SlotContainer sx={{ gap: 1, ...(slotProps?.rightArea as object) }}>{slots.rightArea}</SlotContainer>\n )}\n </>\n );\n\n return (\n <StyledAppBar\n position={disableSticky ? 'static' : 'sticky'}\n isOffset={isOffset}\n disableOffset={disableOffset}\n disableElevation={disableElevation}\n sx={sx}\n >\n {/* Top area (above toolbar) */}\n {slots?.topArea && <Box sx={slotProps?.topArea}>{slots.topArea}</Box>}\n\n {/* Main toolbar */}\n <StyledToolbar>\n {containerized ? (\n <Container\n maxWidth={maxWidth}\n sx={{\n display: 'flex',\n alignItems: 'center',\n ...(slotProps?.container as object),\n }}\n >\n {toolbarContent}\n </Container>\n ) : (\n toolbarContent\n )}\n </StyledToolbar>\n\n {/* Bottom area (below toolbar, e.g., horizontal nav) */}\n {slots?.bottomArea && <Box sx={slotProps?.bottomArea}>{slots.bottomArea}</Box>}\n </StyledAppBar>\n );\n}\n\n// =============================================================================\n// SUB-COMPONENTS\n// =============================================================================\n\nexport interface HeaderToolbarProps {\n /** Content */\n children?: ReactNode;\n /** MUI sx prop */\n sx?: SxProps<Theme>;\n}\n\n/**\n * Standalone header toolbar without AppBar wrapper.\n * Useful for custom header implementations.\n */\nexport function HeaderToolbar({ children, sx }: HeaderToolbarProps): ReactNode {\n return <StyledToolbar sx={sx}>{children}</StyledToolbar>;\n}\n","/**\n * User Menu Component\n *\n * A dropdown menu for user account actions with avatar button trigger.\n * Combines minimal design with portal-style functionality.\n *\n * @module layouts/core/user-menu\n */\n\n'use client';\n\nimport type { ReactNode, MouseEvent } from 'react';\nimport { useState, useCallback } from 'react';\nimport { styled, alpha } from '@mui/material/styles';\nimport Box from '@mui/material/Box';\nimport Avatar from '@mui/material/Avatar';\nimport ButtonBase from '@mui/material/ButtonBase';\nimport Popover from '@mui/material/Popover';\nimport Divider from '@mui/material/Divider';\nimport Typography from '@mui/material/Typography';\nimport MenuItem from '@mui/material/MenuItem';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport ListItemText from '@mui/material/ListItemText';\nimport type { SxProps, Theme } from '@mui/material';\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\nexport interface UserMenuUser {\n /** User display name */\n name: string;\n /** User email */\n email?: string;\n /** Avatar image URL */\n avatarUrl?: string;\n /** User role or subtitle */\n role?: string;\n}\n\nexport interface UserMenuItem {\n /** Unique key for the menu item */\n key: string;\n /** Menu item label */\n label: string;\n /** Optional icon */\n icon?: ReactNode;\n /** Click handler */\n onClick?: () => void;\n /** Highlight as destructive (e.g., logout) */\n destructive?: boolean;\n /** Disabled state */\n disabled?: boolean;\n /** Show divider after this item */\n dividerAfter?: boolean;\n}\n\nexport interface UserMenuProps {\n /** User data */\n user: UserMenuUser;\n /** Menu items */\n menuItems?: UserMenuItem[];\n /** Custom header content */\n header?: ReactNode;\n /** Custom footer content */\n footer?: ReactNode;\n /** Avatar size */\n avatarSize?: 'small' | 'medium' | 'large';\n /** Show email in header */\n showEmail?: boolean;\n /** Show role in header */\n showRole?: boolean;\n /** Custom sx for the trigger button */\n sx?: SxProps<Theme>;\n /** Custom sx for the popover */\n popoverSx?: SxProps<Theme>;\n /** Callback when menu opens */\n onOpen?: () => void;\n /** Callback when menu closes */\n onClose?: () => void;\n}\n\n// =============================================================================\n// STYLED COMPONENTS\n// =============================================================================\n\nconst AVATAR_SIZES = {\n small: 32,\n medium: 40,\n large: 48,\n} as const;\n\nconst TriggerButton = styled(ButtonBase)(({ theme }) => ({\n borderRadius: '50%',\n padding: 0,\n transition: theme.transitions.create(['box-shadow', 'background-color'], {\n duration: theme.transitions.duration.shorter,\n }),\n '&:hover': {\n backgroundColor: alpha(theme.palette.primary.main, 0.08),\n },\n '&:focus-visible': {\n outline: `2px solid ${theme.palette.primary.main}`,\n outlineOffset: 2,\n },\n}));\n\nconst StyledPopover = styled(Popover)(({ theme }) => ({\n '& .MuiPopover-paper': {\n minWidth: 220,\n maxWidth: 280,\n borderRadius: Number(theme.shape.borderRadius) * 1.5,\n boxShadow: theme.shadows[8],\n overflow: 'hidden',\n },\n}));\n\nconst UserHeader = styled(Box)(({ theme }) => ({\n padding: theme.spacing(2),\n display: 'flex',\n alignItems: 'center',\n gap: theme.spacing(1.5),\n}));\n\nconst UserInfo = styled(Box)({\n flex: 1,\n minWidth: 0, // Enable text truncation\n overflow: 'hidden',\n});\n\nconst StyledMenuItem = styled(MenuItem, {\n shouldForwardProp: (prop) => prop !== 'destructive',\n})<{ destructive?: boolean }>(({ theme, destructive }) => ({\n padding: theme.spacing(1, 2),\n minHeight: 40,\n gap: theme.spacing(1.5),\n ...(destructive && {\n color: theme.palette.error.main,\n '&:hover': {\n backgroundColor: alpha(theme.palette.error.main, 0.08),\n },\n }),\n}));\n\n// =============================================================================\n// HELPER FUNCTIONS\n// =============================================================================\n\n/**\n * Get initials from a name.\n */\nfunction getInitials(name: string): string {\n const parts = name.trim().split(/\\s+/);\n if (parts.length >= 2) {\n return `${parts[0][0]}${parts[parts.length - 1][0]}`.toUpperCase();\n }\n return (parts[0]?.[0] || '?').toUpperCase();\n}\n\n/**\n * Get avatar background color based on name.\n */\nfunction getAvatarColor(name: string): string {\n const colors = [\n '#1976d2', // Blue\n '#388e3c', // Green\n '#d32f2f', // Red\n '#7b1fa2', // Purple\n '#f57c00', // Orange\n '#0097a7', // Cyan\n '#c2185b', // Pink\n '#5d4037', // Brown\n ];\n\n let hash = 0;\n for (let i = 0; i < name.length; i++) {\n hash = name.charCodeAt(i) + ((hash << 5) - hash);\n }\n\n return colors[Math.abs(hash) % colors.length];\n}\n\n// =============================================================================\n// COMPONENT\n// =============================================================================\n\n/**\n * User Menu - Dropdown menu with avatar trigger for user account actions.\n *\n * Features:\n * - Avatar button trigger with hover/focus states\n * - Customizable menu items with icons\n * - User header with name, email, and role\n * - Destructive action styling (for logout)\n * - Keyboard accessible\n *\n * @example\n * ```tsx\n * <UserMenu\n * user={{\n * name: 'John Doe',\n * email: 'john@example.com',\n * avatarUrl: '/avatars/john.jpg',\n * }}\n * menuItems={[\n * { key: 'profile', label: 'Profile', icon: <PersonIcon />, onClick: () => {} },\n * { key: 'settings', label: 'Settings', icon: <SettingsIcon />, onClick: () => {} },\n * { key: 'logout', label: 'Logout', icon: <LogoutIcon />, destructive: true, onClick: handleLogout },\n * ]}\n * />\n * ```\n */\nexport function UserMenu({\n user,\n menuItems = [],\n header,\n footer,\n avatarSize = 'medium',\n showEmail = true,\n showRole = false,\n sx,\n popoverSx,\n onOpen,\n onClose,\n}: UserMenuProps): ReactNode {\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n const open = Boolean(anchorEl);\n\n const handleOpen = useCallback(\n (event: MouseEvent<HTMLElement>) => {\n setAnchorEl(event.currentTarget);\n onOpen?.();\n },\n [onOpen]\n );\n\n const handleClose = useCallback(() => {\n setAnchorEl(null);\n onClose?.();\n }, [onClose]);\n\n const handleMenuItemClick = useCallback(\n (item: UserMenuItem) => {\n item.onClick?.();\n handleClose();\n },\n [handleClose]\n );\n\n const size = AVATAR_SIZES[avatarSize];\n const initials = getInitials(user.name);\n const avatarBgColor = getAvatarColor(user.name);\n\n return (\n <>\n <TriggerButton onClick={handleOpen} aria-label=\"Open user menu\" aria-haspopup=\"true\" aria-expanded={open} sx={sx}>\n <Avatar\n src={user.avatarUrl}\n alt={user.name}\n sx={{\n width: size,\n height: size,\n bgcolor: user.avatarUrl ? 'transparent' : avatarBgColor,\n fontSize: size * 0.4,\n fontWeight: 600,\n }}\n >\n {initials}\n </Avatar>\n </TriggerButton>\n <StyledPopover\n open={open}\n anchorEl={anchorEl}\n onClose={handleClose}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right',\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right',\n }}\n slotProps={{\n paper: {\n sx: popoverSx,\n },\n }}\n >\n {/* Custom header or default user header */}\n {header ?? (\n <UserHeader>\n <Avatar\n src={user.avatarUrl}\n alt={user.name}\n sx={{\n width: 44,\n height: 44,\n bgcolor: user.avatarUrl ? 'transparent' : avatarBgColor,\n fontSize: 18,\n fontWeight: 600,\n }}\n >\n {initials}\n </Avatar>\n <UserInfo>\n <Typography variant=\"subtitle2\" noWrap sx={{ fontWeight: 600 }}>\n {user.name}\n </Typography>\n {showEmail && user.email && (\n <Typography variant=\"body2\" noWrap sx={{\n color: \"text.secondary\"\n }}>\n {user.email}\n </Typography>\n )}\n {showRole && user.role && (\n <Typography variant=\"caption\" noWrap sx={{\n color: \"text.disabled\"\n }}>\n {user.role}\n </Typography>\n )}\n </UserInfo>\n </UserHeader>\n )}\n\n {menuItems.length > 0 && (\n <>\n <Divider sx={{ my: 0.5 }} />\n <Box sx={{ py: 0.5 }}>\n {menuItems.map((item) => (\n <Box key={item.key}>\n <StyledMenuItem\n onClick={() => handleMenuItemClick(item)}\n disabled={item.disabled}\n destructive={item.destructive}\n >\n {item.icon && (\n <ListItemIcon\n sx={{\n minWidth: 'auto',\n color: item.destructive ? 'error.main' : 'inherit',\n }}\n >\n {item.icon}\n </ListItemIcon>\n )}\n <ListItemText\n primary={item.label}\n slotProps={{\n primary: {\n variant: 'body2',\n noWrap: true,\n }\n }}\n />\n </StyledMenuItem>\n {item.dividerAfter && <Divider sx={{ my: 0.5 }} />}\n </Box>\n ))}\n </Box>\n </>\n )}\n\n {/* Custom footer */}\n {footer && (\n <>\n <Divider />\n {footer}\n </>\n )}\n </StyledPopover>\n </>\n );\n}\n","/**\n * Dashboard Sidenav\n *\n * Sidebar navigation for dashboard layouts.\n * Supports multiple variants: default, mini, and stacked.\n * Implements WCAG 2.1 accessibility with proper ARIA attributes.\n *\n * @module layouts/dashboard/sidenav\n */\n\nimport { Fragment, type ReactNode } from 'react';\nimport { styled, alpha } from '@mui/material/styles';\nimport Drawer from '@mui/material/Drawer';\nimport Box from '@mui/material/Box';\nimport List from '@mui/material/List';\nimport ListSubheader from '@mui/material/ListSubheader';\nimport ListItemButton from '@mui/material/ListItemButton';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport ListItemText from '@mui/material/ListItemText';\nimport IconButton from '@mui/material/IconButton';\nimport Divider from '@mui/material/Divider';\nimport Tooltip from '@mui/material/Tooltip';\nimport type { SxProps, Theme, Breakpoint } from '@mui/material';\nimport { Link as RouterLink, useLocation } from 'react-router-dom';\nimport { useLayoutContext, useNavActive } from '../core/context.js';\nimport { ARIA_LABELS } from '../../core/accessibility/index.js';\nimport { DRAWER_WIDTHS, HEADER_HEIGHTS, LAYOUT_CSS_VARS, type LayoutNavData, type SidenavVariant } from '../types.js';\n\n// =============================================================================\n// STYLED COMPONENTS\n// =============================================================================\n\ninterface NavRootProps {\n variant: SidenavVariant;\n collapsed: boolean;\n}\n\nconst NavRoot = styled(Box, {\n shouldForwardProp: (prop) => !['variant', 'collapsed'].includes(prop as string),\n})<NavRootProps>(({ theme, variant, collapsed }) => {\n // Calculate width based on variant and collapse state\n let width: number = DRAWER_WIDTHS.full;\n if (collapsed) {\n width = variant === 'stacked' ? DRAWER_WIDTHS.stackedCollapsed : DRAWER_WIDTHS.mini;\n } else if (variant === 'mini') {\n width = DRAWER_WIDTHS.mini;\n } else if (variant === 'stacked') {\n width = DRAWER_WIDTHS.stackedExpanded;\n }\n\n return {\n position: 'fixed',\n top: 0,\n left: 0,\n height: '100%',\n width,\n flexShrink: 0,\n display: 'flex',\n flexDirection: 'column',\n zIndex: theme.zIndex.drawer,\n backgroundColor: `var(${LAYOUT_CSS_VARS.navBg}, ${theme.palette.background.paper})`,\n borderRight: `1px solid ${theme.palette.divider}`,\n transition: theme.transitions.create('width', {\n duration: theme.transitions.duration.shorter,\n }),\n };\n});\n\nconst NavContent = styled(Box)({\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n overflow: 'hidden',\n});\n\nconst NavScrollArea = styled(Box)({\n flex: 1,\n overflow: 'auto',\n // Custom scrollbar\n '&::-webkit-scrollbar': {\n width: 6,\n },\n '&::-webkit-scrollbar-thumb': {\n backgroundColor: 'rgba(0, 0, 0, 0.2)',\n borderRadius: 3,\n },\n});\n\nconst CollapseButton = styled(IconButton)(({ theme }) => ({\n position: 'absolute',\n top: HEADER_HEIGHTS.desktop / 2,\n transform: 'translateY(-50%)',\n right: -12,\n width: 24,\n height: 24,\n backgroundColor: theme.palette.background.paper,\n border: `1px solid ${theme.palette.divider}`,\n boxShadow: theme.shadows[1],\n '&:hover': {\n backgroundColor: theme.palette.action.hover,\n },\n '& svg': {\n width: 16,\n height: 16,\n },\n}));\n\n// =============================================================================\n// COMPONENTS\n// =============================================================================\n\nexport interface SidenavProps {\n /** Logo component */\n logo?: ReactNode;\n /** Navigation data */\n navData?: LayoutNavData;\n /** Navigation item renderer */\n renderNavItem?: (item: LayoutNavData[number]['items'][number], depth: number) => ReactNode;\n /** Footer content (above collapse button) */\n footer?: ReactNode;\n /** Show collapse toggle button */\n showCollapseButton?: boolean;\n /** Layout breakpoint (hides on mobile) */\n layoutQuery?: Breakpoint;\n /** Accessible label for the navigation */\n 'aria-label'?: string;\n /** MUI sx prop */\n sx?: SxProps<Theme>;\n}\n\n/**\n * Dashboard Sidenav - Sidebar navigation component.\n *\n * Supports three variants:\n * - `default`: Full-width sidebar with text labels\n * - `mini`: Icon-only collapsed sidebar\n * - `stacked`: Two-panel design with icon nav + content panel\n *\n * @example\n * ```tsx\n * <Sidenav\n * logo={<Logo />}\n * navData={navigationConfig}\n * showCollapseButton\n * />\n * ```\n */\nexport function Sidenav({\n logo,\n navData,\n renderNavItem,\n footer,\n showCollapseButton = true,\n layoutQuery = 'md',\n 'aria-label': ariaLabel = ARIA_LABELS.mainNav,\n sx,\n}: SidenavProps): ReactNode {\n const { config, toggleSidenavCollapse } = useLayoutContext();\n const { sidenavVariant, sidenavCollapsed } = config;\n\n const showText = !sidenavCollapsed && sidenavVariant !== 'mini';\n\n return (\n <NavRoot\n role=\"navigation\"\n aria-label={ariaLabel}\n variant={sidenavVariant}\n collapsed={sidenavCollapsed}\n sx={[\n (theme) => ({\n display: { xs: 'none', [layoutQuery]: 'flex' },\n }),\n ...(Array.isArray(sx) ? sx : [sx]),\n ]}\n >\n {/* Header area with logo — height matches HeaderSection */}\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: showText ? 'flex-start' : 'center',\n height: { xs: HEADER_HEIGHTS.mobile, md: HEADER_HEIGHTS.desktop },\n px: showText ? 3 : 1,\n flexShrink: 0,\n }}\n >\n {logo}\n </Box>\n\n <Divider />\n\n {/* Navigation content */}\n <NavContent>\n <NavScrollArea>\n {navData?.map((section, idx) => (\n <Fragment key={section.id}>\n {/* Collapsed-mode section separator. Lives as a sibling\n of the two surrounding `<List>`s rather than inside\n the next list's `subheader` slot — `<List>` adds a\n symmetric 8px padding top + bottom, and a subheader\n divider would have that 8px above it but nothing\n below, leaving the divider line ~3× closer to the\n next icon than to the previous one. As a sibling\n both surrounding paddings contribute equally to\n top and bottom, so the divider sits visually\n centred between the two icon clusters. */}\n {!showText && idx > 0 && <Divider sx={{ mx: 1.5 }} />}\n <List\n subheader={\n showText && section.subheader ? (\n <ListSubheader\n disableSticky\n sx={{\n px: 2.5,\n py: 1.5,\n typography: 'overline',\n color: 'text.secondary',\n bgcolor: 'transparent',\n }}\n >\n {section.subheader}\n </ListSubheader>\n ) : null\n }\n sx={{ px: showText ? 1 : 0.5 }}\n >\n {section.items.map((item) =>\n renderNavItem ? (\n renderNavItem(item, 0)\n ) : (\n <NavItemWithActive key={item.id} item={item} showText={showText} depth={0} />\n )\n )}\n </List>\n </Fragment>\n ))}\n </NavScrollArea>\n\n {/* Footer area */}\n {footer && <Box sx={{ flexShrink: 0, p: 2 }}>{footer}</Box>}\n </NavContent>\n\n {/* Collapse toggle button */}\n {showCollapseButton && sidenavVariant !== 'mini' && (\n <CollapseButton\n onClick={toggleSidenavCollapse}\n size=\"small\"\n aria-label={sidenavCollapsed ? 'Expand sidebar' : 'Collapse sidebar'}\n aria-expanded={!sidenavCollapsed}\n >\n <ChevronIcon direction={sidenavCollapsed ? 'right' : 'left'} />\n </CollapseButton>\n )}\n </NavRoot>\n );\n}\n\n// =============================================================================\n// MOBILE SIDENAV (DRAWER)\n// =============================================================================\n\nexport interface MobileSidenavProps extends Omit<SidenavProps, 'showCollapseButton' | 'layoutQuery'> {\n /** Layout breakpoint (shows only below this) */\n layoutQuery?: Breakpoint;\n}\n\n/**\n * Mobile Sidenav - Drawer-based navigation for mobile.\n * Implements WCAG 2.1 accessibility with proper ARIA attributes.\n */\nexport function MobileSidenav({\n logo,\n navData,\n renderNavItem,\n footer,\n layoutQuery = 'md',\n 'aria-label': ariaLabel = ARIA_LABELS.mainNav,\n sx,\n}: MobileSidenavProps): ReactNode {\n const { config, toggleDrawer } = useLayoutContext();\n const { drawerOpen } = config;\n\n return (\n <Drawer\n open={drawerOpen}\n onClose={toggleDrawer}\n aria-label={ariaLabel}\n sx={[\n (theme) => ({\n display: { xs: 'block', [layoutQuery]: 'none' },\n '& .MuiDrawer-paper': {\n width: DRAWER_WIDTHS.mobile,\n backgroundColor: `var(${LAYOUT_CSS_VARS.navBg}, ${theme.palette.background.paper})`,\n },\n }),\n ...(Array.isArray(sx) ? sx : [sx]),\n ]}\n >\n {/* Header with logo — height matches HeaderSection */}\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n height: { xs: HEADER_HEIGHTS.mobile, md: HEADER_HEIGHTS.desktop },\n px: 2.5,\n }}\n >\n {logo}\n </Box>\n\n <Divider />\n\n {/* Navigation */}\n <Box component=\"nav\" role=\"navigation\" sx={{ flex: 1, overflow: 'auto' }}>\n {navData?.map((section) => (\n <List\n key={section.id}\n subheader={\n section.subheader ? (\n <ListSubheader\n disableSticky\n sx={{\n px: 2.5,\n py: 1.5,\n typography: 'overline',\n color: 'text.secondary',\n bgcolor: 'transparent',\n }}\n >\n {section.subheader}\n </ListSubheader>\n ) : null\n }\n sx={{ px: 1 }}\n >\n {section.items.map((item) =>\n renderNavItem ? (\n renderNavItem(item, 0)\n ) : (\n <NavItemWithActive key={item.id} item={item} showText depth={0} />\n )\n )}\n </List>\n ))}\n </Box>\n\n {/* Footer */}\n {footer && <Box sx={{ p: 2 }}>{footer}</Box>}\n </Drawer>\n );\n}\n\n// =============================================================================\n// DEFAULT NAV ITEM — smart routing + active state\n// =============================================================================\n\ninterface DefaultNavItemProps {\n item: LayoutNavData[number]['items'][number];\n showText: boolean;\n depth: number;\n active?: boolean;\n}\n\n/**\n * Default nav item with react-router Link and active state detection.\n * Supports collapsed (icon-only) mode with tooltip.\n */\nfunction DefaultNavItem({ item, showText, depth, active }: DefaultNavItemProps): ReactNode {\n const button = (\n <ListItemButton\n component={item.path ? RouterLink : 'div'}\n {...(item.path ? { to: item.path } : {})}\n disabled={item.disabled}\n selected={active}\n sx={(theme) => ({\n minHeight: 44,\n borderRadius: 1,\n pl: showText ? depth * 2 + 2 : undefined,\n // Collapsed mode: center icon\n ...(!showText && {\n justifyContent: 'center',\n px: 1,\n mx: 0.5,\n }),\n // Active state\n ...(active && {\n color: 'primary.main',\n bgcolor: alpha(theme.palette.primary.main, 0.08),\n '&:hover': {\n bgcolor: alpha(theme.palette.primary.main, 0.16),\n },\n }),\n })}\n >\n {item.icon && (\n <ListItemIcon\n sx={{\n minWidth: showText ? 36 : 'unset',\n color: active ? 'primary.main' : 'text.secondary',\n ...(!showText && { mr: 0, justifyContent: 'center' }),\n }}\n >\n <Box\n component=\"span\"\n sx={{ display: 'flex', alignItems: 'center', justifyContent: 'center', width: 24, height: 24 }}\n >\n {item.icon}\n </Box>\n </ListItemIcon>\n )}\n {showText && (\n <ListItemText\n primary={item.title}\n slotProps={{\n primary: {\n variant: 'body2',\n noWrap: true,\n sx: { fontWeight: active ? 600 : 500 },\n },\n }}\n />\n )}\n {showText && item.info}\n </ListItemButton>\n );\n\n if (!showText) {\n return (\n <Tooltip title={item.title} placement=\"right\" arrow key={item.id}>\n {button}\n </Tooltip>\n );\n }\n\n return button;\n}\n\n/**\n * Wrapper that resolves active state for DefaultNavItem.\n * Separated to avoid re-creating hooks for custom renderNavItem.\n */\nfunction NavItemWithActive({ item, showText, depth }: Omit<DefaultNavItemProps, 'active'>): ReactNode {\n const { pathname } = useLocation();\n const { isItemActive } = useNavActive(pathname);\n const active = isItemActive(item);\n return <DefaultNavItem key={item.id} item={item} showText={showText} depth={depth} active={active} />;\n}\n\n// =============================================================================\n// CHEVRON ICON (SIMPLE SVG)\n// =============================================================================\n\ninterface ChevronIconProps {\n direction: 'left' | 'right';\n}\n\nfunction ChevronIcon({ direction }: ChevronIconProps): ReactNode {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n style={{\n transform: direction === 'right' ? 'rotate(180deg)' : undefined,\n }}\n >\n <polyline points=\"15 18 9 12 15 6\" />\n </svg>\n );\n}\n","/**\n * Dashboard Topnav\n *\n * Horizontal top navigation bar for dashboard layouts.\n * Used in 'topnav' and 'combo' navigation modes.\n * Implements WCAG 2.1 accessibility with proper ARIA attributes.\n *\n * @module layouts/dashboard/topnav\n */\n\nimport type { ReactNode } from 'react';\nimport { styled, alpha } from '@mui/material/styles';\nimport Box from '@mui/material/Box';\nimport type { SxProps, Theme, Breakpoint } from '@mui/material';\nimport { Link as RouterLink, useLocation } from 'react-router-dom';\nimport { useNavActive } from '../core/context.js';\nimport { ARIA_LABELS } from '../../core/accessibility/index.js';\nimport { LAYOUT_CSS_VARS, type LayoutNavData, type LayoutNavItem } from '../types.js';\n\n// =============================================================================\n// STYLED COMPONENTS\n// =============================================================================\n\nconst TopnavRoot = styled('nav')(({ theme }) => ({\n display: 'flex',\n alignItems: 'center',\n width: '100%',\n minHeight: 48,\n borderBottom: `1px solid ${theme.palette.divider}`,\n backgroundColor: `var(${LAYOUT_CSS_VARS.navBg}, ${theme.palette.background.paper})`,\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(2),\n gap: theme.spacing(0.5),\n overflowX: 'auto',\n // Hide scrollbar but keep scroll functional\n scrollbarWidth: 'none',\n '&::-webkit-scrollbar': { display: 'none' },\n}));\n\n// =============================================================================\n// COMPONENTS\n// =============================================================================\n\nexport interface TopnavProps {\n /** Navigation data */\n navData?: LayoutNavData;\n /** Navigation item renderer */\n renderNavItem?: (item: LayoutNavItem, depth: number) => ReactNode;\n /** Layout breakpoint (hides below this on combo mode) */\n layoutQuery?: Breakpoint;\n /** Accessible label */\n 'aria-label'?: string;\n /** MUI sx prop */\n sx?: SxProps<Theme>;\n}\n\n/**\n * Dashboard Topnav - Horizontal navigation bar.\n *\n * Renders navigation sections as a horizontal list.\n * For 'combo' mode, visible only on desktop alongside the sidenav.\n * For 'topnav' mode, always visible.\n *\n * @example\n * ```tsx\n * <Topnav\n * navData={navigationConfig}\n * renderNavItem={(item) => <NavLink key={item.id} to={item.path}>{item.title}</NavLink>}\n * />\n * ```\n */\nexport function Topnav({\n navData,\n renderNavItem,\n layoutQuery = 'lg',\n 'aria-label': ariaLabel = ARIA_LABELS.mainNav,\n sx,\n}: TopnavProps): ReactNode {\n return (\n <TopnavRoot aria-label={ariaLabel} sx={sx}>\n {navData?.map((section) =>\n section.items.map((item) =>\n renderNavItem ? renderNavItem(item, 0) : <DefaultTopnavItem key={item.id} item={item} />\n )\n )}\n </TopnavRoot>\n );\n}\n\n// =============================================================================\n// DEFAULT NAV ITEM — smart routing + active state\n// =============================================================================\n\ninterface DefaultTopnavItemProps {\n item: LayoutNavItem;\n}\n\nfunction DefaultTopnavItem({ item }: DefaultTopnavItemProps): ReactNode {\n const { pathname } = useLocation();\n const { isItemActive } = useNavActive(pathname);\n const active = isItemActive(item);\n\n return (\n <Box\n component={item.path ? RouterLink : 'div'}\n {...(item.path ? { to: item.path } : {})}\n role=\"menuitem\"\n tabIndex={0}\n aria-disabled={item.disabled || undefined}\n aria-current={active ? 'page' : undefined}\n sx={(theme) => ({\n display: 'flex',\n alignItems: 'center',\n gap: 1,\n px: 1.5,\n py: 0.75,\n borderRadius: 1,\n whiteSpace: 'nowrap',\n textDecoration: 'none',\n color: active ? 'primary.main' : 'text.primary',\n typography: 'body2',\n fontWeight: active ? 600 : 500,\n cursor: item.disabled ? 'default' : 'pointer',\n opacity: item.disabled ? 0.5 : 1,\n ...(active && {\n bgcolor: alpha(theme.palette.primary.main, 0.08),\n }),\n '&:hover': {\n bgcolor: item.disabled ? undefined : active ? alpha(theme.palette.primary.main, 0.16) : 'action.hover',\n },\n '&:focus-visible': {\n outline: `2px solid ${theme.palette.primary.main}`,\n outlineOffset: -2,\n },\n })}\n >\n {item.icon && (\n <Box\n component=\"span\"\n aria-hidden=\"true\"\n sx={{ display: 'flex', color: active ? 'primary.main' : 'text.secondary' }}\n >\n {item.icon}\n </Box>\n )}\n <span>{item.title}</span>\n {item.info}\n </Box>\n );\n}\n","/**\n * Dashboard Layout\n *\n * Main dashboard layout component that orchestrates navigation, header, and content.\n * Implements WCAG 2.1 accessibility guidelines with proper landmarks and keyboard navigation.\n *\n * @module layouts/dashboard/layout\n */\n\nimport type { ReactNode } from 'react';\nimport { useMemo } from 'react';\nimport { styled } from '@mui/material/styles';\nimport Box from '@mui/material/Box';\nimport Container from '@mui/material/Container';\nimport IconButton from '@mui/material/IconButton';\nimport SvgIcon from '@mui/material/SvgIcon';\nimport type { SxProps, Theme, Breakpoint } from '@mui/material';\nimport { LayoutProvider, useLayoutConfig, useLayoutContext } from '../core/context.js';\nimport { HeaderSection } from '../core/header-section.js';\nimport { Sidenav, MobileSidenav } from './sidenav.js';\nimport { Topnav } from './topnav.js';\nimport { SkipLink, ARIA_LABELS } from '../../core/accessibility/index.js';\nimport { type LayoutNavData, type HeaderSlots, type LayoutConfig } from '../types.js';\n\n// Simple menu icon (3 horizontal lines)\nfunction MenuIcon() {\n return (\n <SvgIcon>\n <path d=\"M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z\" />\n </SvgIcon>\n );\n}\n\n// =============================================================================\n// STYLED COMPONENTS\n// =============================================================================\n\ninterface MainWrapperProps {\n hasSidebar: boolean;\n sidebarWidth: number;\n layoutQuery: Breakpoint;\n}\n\nconst MainWrapper = styled(Box, {\n shouldForwardProp: (prop) => !['hasSidebar', 'sidebarWidth', 'layoutQuery'].includes(prop as string),\n})<MainWrapperProps>(({ theme, hasSidebar, sidebarWidth, layoutQuery }) => ({\n display: 'flex',\n flexDirection: 'column',\n flex: '1 1 auto',\n minHeight: '100vh',\n // Adjust margin for sidebar on desktop\n ...(hasSidebar && {\n [theme.breakpoints.up(layoutQuery)]: {\n marginLeft: sidebarWidth,\n },\n }),\n // Smooth transition\n transition: theme.transitions.create('margin-left', {\n duration: theme.transitions.duration.shorter,\n }),\n}));\n\n// =============================================================================\n// INTERNAL LAYOUT COMPONENT\n// =============================================================================\n\ninterface DashboardLayoutInternalProps {\n children?: ReactNode;\n layoutQuery: Breakpoint;\n navData?: LayoutNavData;\n headerSlots?: HeaderSlots;\n logo?: ReactNode;\n footer?: ReactNode;\n sidenavFooter?: ReactNode;\n slotProps?: {\n header?: Partial<React.ComponentProps<typeof HeaderSection>>;\n main?: {\n sx?: SxProps<Theme>;\n disablePadding?: boolean;\n maxWidth?: Breakpoint | false;\n };\n };\n}\n\n/**\n * Internal dashboard layout (used within LayoutProvider).\n */\nfunction DashboardLayoutInternal({\n children,\n layoutQuery,\n navData,\n headerSlots,\n logo,\n footer,\n sidenavFooter,\n slotProps,\n}: DashboardLayoutInternalProps): ReactNode {\n const config = useLayoutConfig();\n const { toggleDrawer } = useLayoutContext();\n const {\n navigationMenuType,\n sidenavCollapsed: _sidenavCollapsed,\n sidenavVariant: _sidenavVariant,\n drawerWidth,\n } = config;\n\n const hasSidebar = navigationMenuType === 'sidenav' || navigationMenuType === 'combo';\n const hasTopnav = navigationMenuType === 'topnav' || navigationMenuType === 'combo';\n\n // Calculate actual sidebar width\n const sidebarWidth = hasSidebar ? drawerWidth : 0;\n\n // Merge mobile menu button into header slots\n const mergedHeaderSlots = useMemo<HeaderSlots | undefined>(() => {\n if (!hasSidebar) return headerSlots;\n\n const mobileMenuButton = (\n <IconButton\n onClick={toggleDrawer}\n aria-label=\"Open menu\"\n sx={{\n display: { xs: 'inline-flex', [layoutQuery]: 'none' },\n bgcolor: 'transparent',\n transition: 'transform 0.2s ease',\n '&:hover': { bgcolor: 'transparent', transform: 'scale(1.1)' },\n }}\n >\n <MenuIcon />\n </IconButton>\n );\n\n return {\n ...headerSlots,\n leftArea: (\n <>\n {mobileMenuButton}\n {headerSlots?.leftArea}\n </>\n ),\n };\n }, [hasSidebar, headerSlots, toggleDrawer, layoutQuery]);\n\n return (\n <MainWrapper hasSidebar={hasSidebar} sidebarWidth={sidebarWidth} layoutQuery={layoutQuery}>\n {/* Skip to main content link for keyboard users */}\n <SkipLink href=\"#main-content\">Skip to main content</SkipLink>\n\n {/* Header */}\n <HeaderSection\n slots={mergedHeaderSlots}\n aria-label={ARIA_LABELS.header}\n sx={{\n ...(slotProps?.header?.sx as object),\n }}\n {...slotProps?.header}\n />\n\n {/* Top navigation bar (topnav or combo mode) */}\n {hasTopnav && (\n <Topnav\n navData={navData}\n layoutQuery={layoutQuery}\n aria-label={hasSidebar ? 'Secondary navigation' : ARIA_LABELS.mainNav}\n />\n )}\n\n {/* Sidebar (sidenav or combo mode) */}\n {hasSidebar && (\n <>\n <Sidenav\n logo={logo}\n navData={navData}\n footer={sidenavFooter}\n layoutQuery={layoutQuery}\n aria-label={ARIA_LABELS.mainNav}\n />\n <MobileSidenav\n logo={logo}\n navData={navData}\n footer={sidenavFooter}\n layoutQuery={layoutQuery}\n aria-label={ARIA_LABELS.mainNav}\n />\n </>\n )}\n\n {/* Main content */}\n <Box\n component=\"main\"\n id=\"main-content\"\n role=\"main\"\n aria-label={ARIA_LABELS.main}\n tabIndex={-1}\n sx={{\n display: 'flex',\n flexDirection: 'column',\n flex: '1 1 auto',\n // Remove focus outline for skip link target\n '&:focus': {\n outline: 'none',\n },\n ...(!slotProps?.main?.disablePadding && {\n py: { xs: 2, sm: 3, md: 4 },\n px: { xs: 2, sm: 3, md: 4 },\n }),\n ...(slotProps?.main?.sx as object),\n }}\n >\n {slotProps?.main?.maxWidth ? (\n <Container maxWidth={slotProps.main.maxWidth} sx={{ flex: 1, display: 'flex', flexDirection: 'column' }}>\n {children}\n </Container>\n ) : (\n children\n )}\n </Box>\n\n {/* Footer */}\n {footer}\n </MainWrapper>\n );\n}\n\n// =============================================================================\n// PUBLIC COMPONENT\n// =============================================================================\n\nexport interface DashboardLayoutProps {\n /** Child content */\n children?: ReactNode;\n /** Layout breakpoint for responsive behavior */\n layoutQuery?: Breakpoint;\n /** Navigation data */\n navData?: LayoutNavData;\n /** Header slot content */\n headerSlots?: HeaderSlots;\n /** Logo component */\n logo?: ReactNode;\n /** Footer component */\n footer?: ReactNode;\n /** Sidenav footer content */\n sidenavFooter?: ReactNode;\n /** Initial layout configuration */\n initialConfig?: Partial<LayoutConfig>;\n /**\n * Persistence key for sidebar collapsed state.\n * When provided, sidebar collapsed state persists to localStorage.\n * Use unique keys per layout (e.g., 'main', 'admin').\n */\n persistKey?: string;\n /** Props for layout sections */\n slotProps?: {\n header?: Partial<React.ComponentProps<typeof HeaderSection>>;\n main?: {\n sx?: SxProps<Theme>;\n disablePadding?: boolean;\n maxWidth?: Breakpoint | false;\n };\n };\n}\n\n/**\n * Dashboard Layout - Complete dashboard layout with navigation.\n *\n * Features:\n * - Configurable navigation type (sidenav, topnav, combo)\n * - Multiple sidenav variants (default, mini, stacked)\n * - Responsive mobile drawer\n * - Slot-based header customization\n * - CSS variables for theming\n *\n * @example\n * ```tsx\n * <DashboardLayout\n * logo={<Logo />}\n * navData={navigationConfig}\n * headerSlots={{\n * leftArea: <MenuButton />,\n * rightArea: <UserMenu />,\n * }}\n * initialConfig={{\n * navigationMenuType: 'sidenav',\n * sidenavVariant: 'default',\n * }}\n * >\n * <Outlet />\n * </DashboardLayout>\n * ```\n */\nexport function DashboardLayout({\n children,\n layoutQuery = 'lg',\n navData,\n headerSlots,\n logo,\n footer,\n sidenavFooter,\n initialConfig,\n persistKey,\n slotProps,\n}: DashboardLayoutProps): ReactNode {\n return (\n <LayoutProvider initialConfig={initialConfig} persistKey={persistKey}>\n <DashboardLayoutInternal\n layoutQuery={layoutQuery}\n navData={navData}\n headerSlots={headerSlots}\n logo={logo}\n footer={footer}\n sidenavFooter={sidenavFooter}\n slotProps={slotProps}\n >\n {children}\n </DashboardLayoutInternal>\n </LayoutProvider>\n );\n}\n\n// =============================================================================\n// DASHBOARD CONTENT WRAPPER\n// =============================================================================\n\nexport interface DashboardContentProps {\n /** Child content */\n children?: ReactNode;\n /** Disable padding */\n disablePadding?: boolean;\n /** Container max width */\n maxWidth?: Breakpoint | false;\n /** MUI sx prop */\n sx?: SxProps<Theme>;\n}\n\n/**\n * Dashboard content wrapper with optional container.\n * Use for consistent content padding within dashboard.\n */\nexport function DashboardContent({ children, disablePadding = false, maxWidth, sx }: DashboardContentProps): ReactNode {\n return (\n <Box\n sx={[\n {\n flex: '1 1 auto',\n display: 'flex',\n flexDirection: 'column',\n ...(!disablePadding && {\n py: { xs: 2, sm: 3, md: 4 },\n px: { xs: 2, sm: 3, md: 4 },\n }),\n },\n ...(Array.isArray(sx) ? sx : [sx]),\n ]}\n >\n {maxWidth ? (\n <Container maxWidth={maxWidth} sx={{ flex: 1 }}>\n {children}\n </Container>\n ) : (\n children\n )}\n </Box>\n );\n}\n","/**\n * Auth Centered Layout\n *\n * Centered authentication layout with card-style content.\n *\n * @module layouts/auth/centered\n */\n\nimport type { ReactNode } from 'react';\nimport { styled, alpha } from '@mui/material/styles';\nimport Box from '@mui/material/Box';\nimport Card from '@mui/material/Card';\nimport type { SxProps, Theme } from '@mui/material';\n\n// =============================================================================\n// STYLED COMPONENTS\n// =============================================================================\n\nconst LayoutRoot = styled(Box)(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n minHeight: '100vh',\n // Subtle background gradient\n background:\n theme.palette.mode === 'dark'\n ? `linear-gradient(135deg, ${alpha(theme.palette.primary.dark, 0.1)} 0%, ${theme.palette.background.default} 100%)`\n : `linear-gradient(135deg, ${alpha(theme.palette.primary.light, 0.1)} 0%, ${theme.palette.background.default} 100%)`,\n}));\n\nconst MainContent = styled(Box)({\n display: 'flex',\n flex: '1 1 auto',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n padding: 24,\n});\n\nconst ContentCard = styled(Card)(({ theme }) => ({\n width: '100%',\n maxWidth: 420,\n padding: theme.spacing(5, 3),\n position: 'relative',\n zIndex: 2,\n}));\n\n// =============================================================================\n// COMPONENT\n// =============================================================================\n\nexport interface AuthCenteredLayoutProps {\n /** Child content (form) */\n children?: ReactNode;\n /** Logo component */\n logo?: ReactNode;\n /** Custom max width for content card */\n maxWidth?: number | string;\n /** MUI sx prop */\n sx?: SxProps<Theme>;\n}\n\n/**\n * Auth Centered Layout - Card-based centered authentication form.\n *\n * Perfect for login, registration, password reset, and verification pages.\n *\n * @example\n * ```tsx\n * <AuthCenteredLayout\n * logo={<Logo />}\n * showHelp\n * >\n * <LoginForm />\n * </AuthCenteredLayout>\n * ```\n */\nexport function AuthCenteredLayout({ children, logo, maxWidth = 420, sx }: AuthCenteredLayoutProps): ReactNode {\n return (\n <LayoutRoot sx={sx}>\n {/* Logo */}\n {logo && (\n <Box\n sx={{\n position: { xs: 'static', md: 'fixed' },\n top: 0,\n left: 0,\n p: 3,\n zIndex: 3,\n }}\n >\n {logo}\n </Box>\n )}\n\n {/* Main content */}\n <MainContent>\n <ContentCard sx={{ maxWidth }}>{children}</ContentCard>\n </MainContent>\n </LayoutRoot>\n );\n}\n\n// =============================================================================\n// CONTENT WRAPPER\n// =============================================================================\n\nexport interface AuthCenteredContentProps {\n /** Child content */\n children?: ReactNode;\n /** Custom max width */\n maxWidth?: number | string;\n /** MUI sx prop */\n sx?: SxProps<Theme>;\n}\n\n/**\n * Auth centered content wrapper.\n * Use for the content inside the auth card.\n */\nexport function AuthCenteredContent({ children, maxWidth = 420, sx }: AuthCenteredContentProps): ReactNode {\n return <ContentCard sx={[{ maxWidth }, ...(Array.isArray(sx) ? sx : [sx])]}>{children}</ContentCard>;\n}\n","/**\n * Auth Split Layout\n *\n * Split-screen authentication layout with illustration and form.\n *\n * @module layouts/auth/split\n */\n\nimport type { ReactNode } from 'react';\nimport { styled } from '@mui/material/styles';\nimport Box from '@mui/material/Box';\nimport Typography from '@mui/material/Typography';\nimport Link from '@mui/material/Link';\nimport type { SxProps, Theme } from '@mui/material';\nimport { HeaderSection } from '../core/header-section.js';\n\n// =============================================================================\n// STYLED COMPONENTS\n// =============================================================================\n\nconst LayoutRoot = styled(Box)({\n display: 'flex',\n flexDirection: 'column',\n minHeight: '100vh',\n});\n\nconst MainContent = styled(Box)(({ theme }) => ({\n display: 'flex',\n flex: '1 1 auto',\n [theme.breakpoints.up('md')]: {\n flexDirection: 'row',\n },\n}));\n\nconst IllustrationSection = styled(Box)(({ theme }) => ({\n display: 'none',\n [theme.breakpoints.up('md')]: {\n display: 'flex',\n flexDirection: 'column',\n width: '50%',\n position: 'relative',\n background: `linear-gradient(135deg, ${theme.palette.primary.main} 0%, ${theme.palette.primary.dark} 100%)`,\n color: theme.palette.primary.contrastText,\n padding: theme.spacing(8),\n justifyContent: 'center',\n alignItems: 'center',\n },\n}));\n\nconst IllustrationContent = styled(Box)({\n maxWidth: 480,\n textAlign: 'center',\n position: 'relative',\n zIndex: 1,\n});\n\nconst FormSection = styled(Box)(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n [theme.breakpoints.up('md')]: {\n width: '50%',\n },\n}));\n\nconst FormContent = styled(Box)(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n flex: 1,\n padding: theme.spacing(3),\n [theme.breakpoints.up('sm')]: {\n padding: theme.spacing(5),\n },\n [theme.breakpoints.up('md')]: {\n padding: theme.spacing(8),\n maxWidth: 480,\n marginLeft: 'auto',\n marginRight: 'auto',\n },\n}));\n\n// =============================================================================\n// COMPONENT\n// =============================================================================\n\nexport interface AuthSplitLayoutProps {\n /** Child content (form) */\n children?: ReactNode;\n /** Logo component */\n logo?: ReactNode;\n /** Illustration title */\n title?: string;\n /** Illustration subtitle */\n subtitle?: string;\n /** Illustration image or component */\n illustration?: ReactNode;\n /** Show help link */\n showHelp?: boolean;\n /** Help link URL */\n helpUrl?: string;\n /** Help link text */\n helpText?: string;\n /** Settings button */\n settingsButton?: ReactNode;\n /** Custom max width for form */\n maxWidth?: number | string;\n /** Illustration section sx */\n illustrationSx?: SxProps<Theme>;\n /** MUI sx prop */\n sx?: SxProps<Theme>;\n}\n\n/**\n * Auth Split Layout - Split-screen with illustration and form.\n *\n * Left side: Illustration with title and subtitle\n * Right side: Authentication form\n *\n * @example\n * ```tsx\n * <AuthSplitLayout\n * logo={<Logo />}\n * title=\"Welcome to Prism\"\n * subtitle=\"Sign in to continue to your dashboard\"\n * illustration={<WelcomeIllustration />}\n * >\n * <LoginForm />\n * </AuthSplitLayout>\n * ```\n */\nexport function AuthSplitLayout({\n children,\n logo,\n title = 'Welcome',\n subtitle,\n illustration,\n showHelp = true,\n helpUrl = '/help',\n helpText = 'Need help?',\n settingsButton,\n maxWidth = 480,\n illustrationSx,\n sx,\n}: AuthSplitLayoutProps): ReactNode {\n return (\n <LayoutRoot sx={sx}>\n {/* Header (visible on mobile, fixed on desktop) */}\n <HeaderSection\n disableSticky\n disableOffset\n slots={{\n leftArea: logo,\n rightArea: (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 2 }}>\n {showHelp && (\n <Link href={helpUrl} underline=\"hover\" variant=\"body2\" sx={{ color: 'text.secondary' }}>\n {helpText}\n </Link>\n )}\n {settingsButton}\n </Box>\n ),\n }}\n sx={{\n position: { xs: 'static', md: 'fixed' },\n top: 0,\n left: 0,\n right: 0,\n zIndex: 10,\n }}\n />\n\n {/* Main content */}\n <MainContent>\n {/* Illustration side */}\n <IllustrationSection sx={illustrationSx}>\n <IllustrationContent>\n {illustration && <Box sx={{ mb: 4 }}>{illustration}</Box>}\n\n <Typography variant=\"h3\" sx={{ mb: 2, fontWeight: 700 }}>\n {title}\n </Typography>\n\n {subtitle && (\n <Typography variant=\"body1\" sx={{ opacity: 0.8, maxWidth: 360, mx: 'auto' }}>\n {subtitle}\n </Typography>\n )}\n </IllustrationContent>\n\n {/* Background decoration */}\n <Box\n sx={{\n position: 'absolute',\n bottom: 0,\n left: 0,\n right: 0,\n height: '30%',\n background: 'linear-gradient(to top, rgba(0,0,0,0.1) 0%, transparent 100%)',\n }}\n />\n </IllustrationSection>\n\n {/* Form side */}\n <FormSection>\n <FormContent sx={{ maxWidth }}>{children}</FormContent>\n </FormSection>\n </MainContent>\n </LayoutRoot>\n );\n}\n\n// =============================================================================\n// ILLUSTRATION SECTION (STANDALONE)\n// =============================================================================\n\nexport interface AuthSplitIllustrationProps {\n /** Title */\n title?: string;\n /** Subtitle */\n subtitle?: string;\n /** Illustration image/component */\n illustration?: ReactNode;\n /** MUI sx prop */\n sx?: SxProps<Theme>;\n}\n\n/**\n * Standalone illustration section for custom split layouts.\n */\nexport function AuthSplitIllustration({ title, subtitle, illustration, sx }: AuthSplitIllustrationProps): ReactNode {\n return (\n <IllustrationSection sx={sx}>\n <IllustrationContent>\n {illustration && <Box sx={{ mb: 4 }}>{illustration}</Box>}\n\n {title && (\n <Typography variant=\"h3\" sx={{ mb: 2, fontWeight: 700 }}>\n {title}\n </Typography>\n )}\n\n {subtitle && (\n <Typography variant=\"body1\" sx={{ opacity: 0.8 }}>\n {subtitle}\n </Typography>\n )}\n </IllustrationContent>\n </IllustrationSection>\n );\n}\n\n// =============================================================================\n// FORM CONTENT (STANDALONE)\n// =============================================================================\n\nexport interface AuthSplitContentProps {\n /** Child content */\n children?: ReactNode;\n /** Custom max width */\n maxWidth?: number | string;\n /** MUI sx prop */\n sx?: SxProps<Theme>;\n}\n\n/**\n * Standalone form content section for custom split layouts.\n */\nexport function AuthSplitContent({ children, maxWidth = 480, sx }: AuthSplitContentProps): ReactNode {\n return (\n <FormSection>\n <FormContent sx={[{ maxWidth }, ...(Array.isArray(sx) ? sx : [sx])]}>{children}</FormContent>\n </FormSection>\n );\n}\n","/**\n * Auth Simple Layout\n *\n * Simple, minimal layout for authentication-related pages.\n *\n * @module layouts/auth/simple\n */\n\nimport type { ReactNode } from 'react';\nimport { styled } from '@mui/material/styles';\nimport Box from '@mui/material/Box';\nimport Container from '@mui/material/Container';\nimport Link from '@mui/material/Link';\nimport type { SxProps, Theme, Breakpoint } from '@mui/material';\nimport { HeaderSection } from '../core/header-section.js';\n\n// =============================================================================\n// STYLED COMPONENTS\n// =============================================================================\n\nconst LayoutRoot = styled(Box)({\n display: 'flex',\n flexDirection: 'column',\n minHeight: '100vh',\n});\n\nconst MainContent = styled(Box)({\n display: 'flex',\n flexDirection: 'column',\n flex: '1 1 auto',\n});\n\nconst CompactContent = styled(Box)(({ theme }) => ({\n flex: '1 1 auto',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n padding: theme.spacing(3, 2, 10, 2),\n [theme.breakpoints.up('sm')]: {\n padding: theme.spacing(10, 0),\n maxWidth: 448,\n margin: '0 auto',\n width: '100%',\n },\n}));\n\n// =============================================================================\n// COMPONENT\n// =============================================================================\n\nexport interface AuthSimpleLayoutProps {\n /** Child content */\n children?: ReactNode;\n /** Logo component */\n logo?: ReactNode;\n /** Show help link */\n showHelp?: boolean;\n /** Help link URL */\n helpUrl?: string;\n /** Help link text */\n helpText?: string;\n /** Settings button */\n settingsButton?: ReactNode;\n /** Use compact centered content */\n compact?: boolean;\n /** Container max width (for non-compact) */\n maxWidth?: Breakpoint | false;\n /** MUI sx prop */\n sx?: SxProps<Theme>;\n}\n\n/**\n * Auth Simple Layout - Minimal layout for auth-related pages.\n *\n * Use for:\n * - Error pages (404, 500)\n * - Maintenance pages\n * - Simple message pages\n * - Compact auth forms\n *\n * @example\n * ```tsx\n * <AuthSimpleLayout logo={<Logo />} compact>\n * <NotFoundContent />\n * </AuthSimpleLayout>\n * ```\n */\nexport function AuthSimpleLayout({\n children,\n logo,\n showHelp = true,\n helpUrl = '/help',\n helpText = 'Need help?',\n settingsButton,\n compact = false,\n maxWidth = 'lg',\n sx,\n}: AuthSimpleLayoutProps): ReactNode {\n return (\n <LayoutRoot sx={sx}>\n {/* Header */}\n <HeaderSection\n disableOffset\n slots={{\n leftArea: logo,\n rightArea: (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 2 }}>\n {showHelp && (\n <Link href={helpUrl} underline=\"hover\" variant=\"body2\" sx={{ color: 'text.secondary' }}>\n {helpText}\n </Link>\n )}\n {settingsButton}\n </Box>\n ),\n }}\n />\n\n {/* Main content */}\n <MainContent>\n {compact ? (\n <CompactContent>{children}</CompactContent>\n ) : (\n <Container\n maxWidth={maxWidth}\n sx={{\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n py: { xs: 3, sm: 5 },\n }}\n >\n {children}\n </Container>\n )}\n </MainContent>\n </LayoutRoot>\n );\n}\n\n// =============================================================================\n// SIMPLE COMPACT CONTENT\n// =============================================================================\n\nexport interface SimpleCompactContentProps {\n /** Child content */\n children?: ReactNode;\n /** MUI sx prop */\n sx?: SxProps<Theme>;\n}\n\n/**\n * Simple compact content wrapper.\n * Centered, constrained-width content for simple pages.\n */\nexport function SimpleCompactContent({ children, sx }: SimpleCompactContentProps): ReactNode {\n return <CompactContent sx={sx}>{children}</CompactContent>;\n}\n"]}