@omnitron-dev/prism 0.2.0 → 0.3.1

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 (961) hide show
  1. package/README.md +148 -0
  2. package/dist/accessibility/index.d.ts +7 -151
  3. package/dist/accessibility/index.d.ts.map +1 -0
  4. package/dist/accessibility/index.js +0 -1
  5. package/dist/accessibility/index.js.map +1 -1
  6. package/dist/accessibility/vision-mode.d.ts +154 -0
  7. package/dist/accessibility/vision-mode.d.ts.map +1 -0
  8. package/dist/blocks/auth-block/auth-block.d.ts +107 -0
  9. package/dist/blocks/auth-block/auth-block.d.ts.map +1 -0
  10. package/dist/blocks/auth-block/guards.d.ts +262 -0
  11. package/dist/blocks/auth-block/guards.d.ts.map +1 -0
  12. package/dist/blocks/auth-block/index.d.ts +13 -0
  13. package/dist/blocks/auth-block/index.d.ts.map +1 -0
  14. package/dist/blocks/auth-block/types.d.ts +232 -0
  15. package/dist/blocks/auth-block/types.d.ts.map +1 -0
  16. package/dist/blocks/dashboard-block/dashboard-block.d.ts +53 -0
  17. package/dist/blocks/dashboard-block/dashboard-block.d.ts.map +1 -0
  18. package/dist/blocks/dashboard-block/index.d.ts +12 -0
  19. package/dist/blocks/dashboard-block/index.d.ts.map +1 -0
  20. package/dist/blocks/dashboard-block/types.d.ts +182 -0
  21. package/dist/blocks/dashboard-block/types.d.ts.map +1 -0
  22. package/dist/blocks/dashboard-block/use-dashboard-block.d.ts +95 -0
  23. package/dist/blocks/dashboard-block/use-dashboard-block.d.ts.map +1 -0
  24. package/dist/blocks/data-grid-block/data-grid-block.d.ts +81 -0
  25. package/dist/blocks/data-grid-block/data-grid-block.d.ts.map +1 -0
  26. package/dist/blocks/data-grid-block/index.d.ts +11 -0
  27. package/dist/blocks/data-grid-block/index.d.ts.map +1 -0
  28. package/dist/blocks/data-grid-block/types.d.ts +304 -0
  29. package/dist/blocks/data-grid-block/types.d.ts.map +1 -0
  30. package/dist/blocks/index.d.ts +10 -1235
  31. package/dist/blocks/index.d.ts.map +1 -0
  32. package/dist/blocks/index.js +141 -42
  33. package/dist/blocks/index.js.map +1 -1
  34. package/dist/{chunk-IZOIO7PA.js → chunk-472SOF76.js} +31 -22
  35. package/dist/chunk-472SOF76.js.map +1 -0
  36. package/dist/chunk-4Z5DE5GK.js +1579 -0
  37. package/dist/chunk-4Z5DE5GK.js.map +1 -0
  38. package/dist/chunk-52PQL67Q.js +559 -0
  39. package/dist/chunk-52PQL67Q.js.map +1 -0
  40. package/dist/chunk-75FQ5IW3.js +590 -0
  41. package/dist/chunk-75FQ5IW3.js.map +1 -0
  42. package/dist/{chunk-VAAIHNWQ.js → chunk-7G5D5PTC.js} +4 -3
  43. package/dist/chunk-7G5D5PTC.js.map +1 -0
  44. package/dist/{chunk-JDTC2SBY.js → chunk-AD4W7HYC.js} +2 -2
  45. package/dist/chunk-AD4W7HYC.js.map +1 -0
  46. package/dist/{chunk-SNKGGHBT.js → chunk-ADG4HZEP.js} +3 -3
  47. package/dist/chunk-ADG4HZEP.js.map +1 -0
  48. package/dist/{chunk-JNU4QHJK.js → chunk-AYYFMTMI.js} +5 -4
  49. package/dist/{chunk-JNU4QHJK.js.map → chunk-AYYFMTMI.js.map} +1 -1
  50. package/dist/chunk-BJE2AKD4.js +105 -0
  51. package/dist/chunk-BJE2AKD4.js.map +1 -0
  52. package/dist/{chunk-HO2GKTWJ.js → chunk-BRDWQVRT.js} +2 -2
  53. package/dist/chunk-BRDWQVRT.js.map +1 -0
  54. package/dist/{chunk-2FYNRDXR.js → chunk-DRFNMZLG.js} +2 -2
  55. package/dist/chunk-DRFNMZLG.js.map +1 -0
  56. package/dist/chunk-FF5RF32O.js +248 -0
  57. package/dist/chunk-FF5RF32O.js.map +1 -0
  58. package/dist/{chunk-KTCWPGON.js → chunk-GMIE6III.js} +561 -111
  59. package/dist/chunk-GMIE6III.js.map +1 -0
  60. package/dist/{chunk-BV32OJ2A.js → chunk-GUFHFEPZ.js} +2 -2
  61. package/dist/chunk-GUFHFEPZ.js.map +1 -0
  62. package/dist/chunk-GUGTDURV.js +826 -0
  63. package/dist/chunk-GUGTDURV.js.map +1 -0
  64. package/dist/chunk-HOXFSQUV.js +573 -0
  65. package/dist/chunk-HOXFSQUV.js.map +1 -0
  66. package/dist/chunk-JSQTYDPG.js +3 -0
  67. package/dist/{chunk-77KIJLPP.js.map → chunk-JSQTYDPG.js.map} +1 -1
  68. package/dist/{chunk-MEFT6XPH.js → chunk-KQ67XB6T.js} +351 -704
  69. package/dist/chunk-KQ67XB6T.js.map +1 -0
  70. package/dist/{chunk-YJMAQL3S.js → chunk-LOY2NPCO.js} +129 -635
  71. package/dist/chunk-LOY2NPCO.js.map +1 -0
  72. package/dist/{chunk-A2Z7NVGL.js → chunk-LSPFFEJT.js} +1026 -2128
  73. package/dist/chunk-LSPFFEJT.js.map +1 -0
  74. package/dist/{chunk-XXP3ZGU6.js → chunk-OKTLA23Q.js} +22 -14
  75. package/dist/chunk-OKTLA23Q.js.map +1 -0
  76. package/dist/chunk-PFT2BNYO.js +191 -0
  77. package/dist/chunk-PFT2BNYO.js.map +1 -0
  78. package/dist/chunk-PGHEP4JD.js +106 -0
  79. package/dist/chunk-PGHEP4JD.js.map +1 -0
  80. package/dist/chunk-PXXPLHIY.js +74 -0
  81. package/dist/chunk-PXXPLHIY.js.map +1 -0
  82. package/dist/chunk-SNZK5X6F.js +594 -0
  83. package/dist/chunk-SNZK5X6F.js.map +1 -0
  84. package/dist/chunk-SU3LVQ7N.js +518 -0
  85. package/dist/chunk-SU3LVQ7N.js.map +1 -0
  86. package/dist/{chunk-DDY7TLUI.js → chunk-XIXSSI3B.js} +28 -2
  87. package/dist/chunk-XIXSSI3B.js.map +1 -0
  88. package/dist/chunk-YHE7HXSG.js +206 -0
  89. package/dist/chunk-YHE7HXSG.js.map +1 -0
  90. package/dist/{chunk-XWL6J6IO.js → chunk-YSIG2XYH.js} +2 -2
  91. package/dist/chunk-YSIG2XYH.js.map +1 -0
  92. package/dist/cli/commands/add.d.ts +22 -0
  93. package/dist/cli/commands/add.d.ts.map +1 -0
  94. package/dist/cli/commands/diff.d.ts +13 -0
  95. package/dist/cli/commands/diff.d.ts.map +1 -0
  96. package/dist/cli/commands/doctor.d.ts +13 -0
  97. package/dist/cli/commands/doctor.d.ts.map +1 -0
  98. package/dist/cli/commands/init.d.ts +13 -0
  99. package/dist/cli/commands/init.d.ts.map +1 -0
  100. package/dist/cli/commands/list.d.ts +13 -0
  101. package/dist/cli/commands/list.d.ts.map +1 -0
  102. package/dist/cli/commands/remove.d.ts +13 -0
  103. package/dist/cli/commands/remove.d.ts.map +1 -0
  104. package/dist/cli/commands/update.d.ts +13 -0
  105. package/dist/cli/commands/update.d.ts.map +1 -0
  106. package/dist/cli/config.d.ts +73 -0
  107. package/dist/cli/config.d.ts.map +1 -0
  108. package/dist/cli/constants.d.ts +60 -0
  109. package/dist/cli/constants.d.ts.map +1 -0
  110. package/dist/cli/index.d.ts +27 -0
  111. package/dist/cli/index.d.ts.map +1 -0
  112. package/dist/cli/index.js +38 -39
  113. package/dist/cli/index.js.map +1 -1
  114. package/dist/components/accordion/accordion.d.ts +149 -0
  115. package/dist/components/accordion/accordion.d.ts.map +1 -0
  116. package/dist/components/accordion/index.d.ts +7 -0
  117. package/dist/components/accordion/index.d.ts.map +1 -0
  118. package/dist/components/admin-filters/admin-data-table.d.ts +185 -0
  119. package/dist/components/admin-filters/admin-data-table.d.ts.map +1 -0
  120. package/dist/components/admin-filters/amount-cell.d.ts +39 -0
  121. package/dist/components/admin-filters/amount-cell.d.ts.map +1 -0
  122. package/dist/components/admin-filters/filter-toolbar.d.ts +99 -0
  123. package/dist/components/admin-filters/filter-toolbar.d.ts.map +1 -0
  124. package/dist/components/admin-filters/index.d.ts +13 -0
  125. package/dist/components/admin-filters/index.d.ts.map +1 -0
  126. package/dist/components/admin-filters/status-chip.d.ts +55 -0
  127. package/dist/components/admin-filters/status-chip.d.ts.map +1 -0
  128. package/dist/components/alert/alert.d.ts +159 -0
  129. package/dist/components/alert/alert.d.ts.map +1 -0
  130. package/dist/components/alert/index.d.ts +7 -0
  131. package/dist/components/alert/index.d.ts.map +1 -0
  132. package/dist/components/animate/animate-border.d.ts +33 -0
  133. package/dist/components/animate/animate-border.d.ts.map +1 -0
  134. package/dist/components/animate/index.d.ts +3 -0
  135. package/dist/components/animate/index.d.ts.map +1 -0
  136. package/dist/components/animate/motion-lazy.d.ts +5 -0
  137. package/dist/components/animate/motion-lazy.d.ts.map +1 -0
  138. package/dist/components/avatar/avatar.d.ts +78 -0
  139. package/dist/components/avatar/avatar.d.ts.map +1 -0
  140. package/dist/components/avatar/index.d.ts +7 -0
  141. package/dist/components/avatar/index.d.ts.map +1 -0
  142. package/dist/components/badge/badge.d.ts +102 -0
  143. package/dist/components/badge/badge.d.ts.map +1 -0
  144. package/dist/components/badge/index.d.ts +7 -0
  145. package/dist/components/badge/index.d.ts.map +1 -0
  146. package/dist/components/breadcrumbs/breadcrumbs.d.ts +100 -0
  147. package/dist/components/breadcrumbs/breadcrumbs.d.ts.map +1 -0
  148. package/dist/components/breadcrumbs/index.d.ts +7 -0
  149. package/dist/components/breadcrumbs/index.d.ts.map +1 -0
  150. package/dist/components/card/card.d.ts +127 -0
  151. package/dist/components/card/card.d.ts.map +1 -0
  152. package/dist/components/card/index.d.ts +7 -0
  153. package/dist/components/card/index.d.ts.map +1 -0
  154. package/dist/components/carousel/carousel.d.ts +35 -0
  155. package/dist/components/carousel/carousel.d.ts.map +1 -0
  156. package/dist/components/carousel/classes.d.ts +35 -0
  157. package/dist/components/carousel/classes.d.ts.map +1 -0
  158. package/dist/components/carousel/index.d.ts +10 -0
  159. package/dist/components/carousel/index.d.ts.map +1 -0
  160. package/dist/components/carousel/types.d.ts +167 -0
  161. package/dist/components/carousel/types.d.ts.map +1 -0
  162. package/dist/components/carousel/use-carousel.d.ts +51 -0
  163. package/dist/components/carousel/use-carousel.d.ts.map +1 -0
  164. package/dist/components/changelog/changelog-entry.d.ts +10 -0
  165. package/dist/components/changelog/changelog-entry.d.ts.map +1 -0
  166. package/dist/components/changelog/changelog-timeline.d.ts +9 -0
  167. package/dist/components/changelog/changelog-timeline.d.ts.map +1 -0
  168. package/dist/components/changelog/index.d.ts +3 -0
  169. package/dist/components/changelog/index.d.ts.map +1 -0
  170. package/dist/components/chart/chart.d.ts +39 -0
  171. package/dist/components/chart/chart.d.ts.map +1 -0
  172. package/dist/components/chart/classes.d.ts +24 -0
  173. package/dist/components/chart/classes.d.ts.map +1 -0
  174. package/dist/components/chart/components/chart-legends.d.ts +24 -0
  175. package/dist/components/chart/components/chart-legends.d.ts.map +1 -0
  176. package/dist/components/chart/components/chart-loading.d.ts +21 -0
  177. package/dist/components/chart/components/chart-loading.d.ts.map +1 -0
  178. package/dist/components/chart/components/index.d.ts +8 -0
  179. package/dist/components/chart/components/index.d.ts.map +1 -0
  180. package/dist/components/chart/index.d.ts +14 -0
  181. package/dist/components/chart/index.d.ts.map +1 -0
  182. package/dist/components/chart/types.d.ts +264 -0
  183. package/dist/components/chart/types.d.ts.map +1 -0
  184. package/dist/components/chart/use-chart.d.ts +34 -0
  185. package/dist/components/chart/use-chart.d.ts.map +1 -0
  186. package/dist/components/command-palette/command-palette.d.ts +73 -0
  187. package/dist/components/command-palette/command-palette.d.ts.map +1 -0
  188. package/dist/components/command-palette/index.d.ts +7 -0
  189. package/dist/components/command-palette/index.d.ts.map +1 -0
  190. package/dist/components/confirm-dialog/confirm-dialog.d.ts +89 -0
  191. package/dist/components/confirm-dialog/confirm-dialog.d.ts.map +1 -0
  192. package/dist/components/confirm-dialog/index.d.ts +7 -0
  193. package/dist/components/confirm-dialog/index.d.ts.map +1 -0
  194. package/dist/components/content-renderer/classes.d.ts +33 -0
  195. package/dist/components/content-renderer/classes.d.ts.map +1 -0
  196. package/dist/components/content-renderer/content-renderer.d.ts +37 -0
  197. package/dist/components/content-renderer/content-renderer.d.ts.map +1 -0
  198. package/dist/components/content-renderer/html-tags.d.ts +6 -0
  199. package/dist/components/content-renderer/html-tags.d.ts.map +1 -0
  200. package/dist/components/content-renderer/html-to-markdown.d.ts +7 -0
  201. package/dist/components/content-renderer/html-to-markdown.d.ts.map +1 -0
  202. package/dist/components/content-renderer/index.d.ts +7 -0
  203. package/dist/components/content-renderer/index.d.ts.map +1 -0
  204. package/dist/components/content-renderer/markdown.d.ts +23 -0
  205. package/dist/components/content-renderer/markdown.d.ts.map +1 -0
  206. package/dist/components/content-renderer/remark-spoiler.d.ts +9 -0
  207. package/dist/components/content-renderer/remark-spoiler.d.ts.map +1 -0
  208. package/dist/components/content-renderer/styles.d.ts +2 -0
  209. package/dist/components/content-renderer/styles.d.ts.map +1 -0
  210. package/dist/components/country-select/country-select.d.ts +101 -0
  211. package/dist/components/country-select/country-select.d.ts.map +1 -0
  212. package/dist/components/country-select/flag-icon.d.ts +36 -0
  213. package/dist/components/country-select/flag-icon.d.ts.map +1 -0
  214. package/dist/components/country-select/index.d.ts +5 -0
  215. package/dist/components/country-select/index.d.ts.map +1 -0
  216. package/dist/components/date-input/date-input.d.ts +27 -0
  217. package/dist/components/date-input/date-input.d.ts.map +1 -0
  218. package/dist/components/date-input/index.d.ts +4 -0
  219. package/dist/components/date-input/index.d.ts.map +1 -0
  220. package/dist/components/date-input/value.d.ts +9 -0
  221. package/dist/components/date-input/value.d.ts.map +1 -0
  222. package/dist/components/date-range-picker/date-range-input.d.ts +48 -0
  223. package/dist/components/date-range-picker/date-range-input.d.ts.map +1 -0
  224. package/dist/components/date-range-picker/date-range-picker.d.ts +39 -0
  225. package/dist/components/date-range-picker/date-range-picker.d.ts.map +1 -0
  226. package/dist/components/date-range-picker/index.d.ts +7 -0
  227. package/dist/components/date-range-picker/index.d.ts.map +1 -0
  228. package/dist/components/date-range-picker/use-date-range-picker.d.ts +28 -0
  229. package/dist/components/date-range-picker/use-date-range-picker.d.ts.map +1 -0
  230. package/dist/components/deadline-chip/deadline-chip.d.ts +41 -0
  231. package/dist/components/deadline-chip/deadline-chip.d.ts.map +1 -0
  232. package/dist/components/deadline-chip/index.d.ts +7 -0
  233. package/dist/components/deadline-chip/index.d.ts.map +1 -0
  234. package/dist/components/doc-layout/doc-layout.d.ts +17 -0
  235. package/dist/components/doc-layout/doc-layout.d.ts.map +1 -0
  236. package/dist/components/doc-layout/doc-section-nav.d.ts +16 -0
  237. package/dist/components/doc-layout/doc-section-nav.d.ts.map +1 -0
  238. package/dist/components/doc-layout/doc-sidebar.d.ts +18 -0
  239. package/dist/components/doc-layout/doc-sidebar.d.ts.map +1 -0
  240. package/dist/components/doc-layout/index.d.ts +4 -0
  241. package/dist/components/doc-layout/index.d.ts.map +1 -0
  242. package/dist/components/doc-layout/index.js +6 -0
  243. package/dist/components/doc-layout/index.js.map +1 -0
  244. package/dist/components/drawer/drawer.d.ts +65 -0
  245. package/dist/components/drawer/drawer.d.ts.map +1 -0
  246. package/dist/components/drawer/index.d.ts +7 -0
  247. package/dist/components/drawer/index.d.ts.map +1 -0
  248. package/dist/components/duration-picker/duration-picker.d.ts +24 -0
  249. package/dist/components/duration-picker/duration-picker.d.ts.map +1 -0
  250. package/dist/components/duration-picker/index.d.ts +2 -0
  251. package/dist/components/duration-picker/index.d.ts.map +1 -0
  252. package/dist/components/editor/classes.d.ts +52 -0
  253. package/dist/components/editor/classes.d.ts.map +1 -0
  254. package/dist/components/editor/editor.d.ts +15 -0
  255. package/dist/components/editor/editor.d.ts.map +1 -0
  256. package/dist/components/editor/extensions/clear-format.d.ts +3 -0
  257. package/dist/components/editor/extensions/clear-format.d.ts.map +1 -0
  258. package/dist/components/editor/extensions/index.d.ts +3 -0
  259. package/dist/components/editor/extensions/index.d.ts.map +1 -0
  260. package/dist/components/editor/extensions/text-transform.d.ts +20 -0
  261. package/dist/components/editor/extensions/text-transform.d.ts.map +1 -0
  262. package/dist/components/editor/icons/index.d.ts +34 -0
  263. package/dist/components/editor/icons/index.d.ts.map +1 -0
  264. package/dist/components/editor/index.d.ts +41 -104
  265. package/dist/components/editor/index.d.ts.map +1 -0
  266. package/dist/components/editor/index.js +3 -2
  267. package/dist/components/editor/presets.d.ts +3 -0
  268. package/dist/components/editor/presets.d.ts.map +1 -0
  269. package/dist/components/editor/styles.d.ts +2 -0
  270. package/dist/components/editor/styles.d.ts.map +1 -0
  271. package/dist/components/editor/toolbar/bubble-toolbar.d.ts +9 -0
  272. package/dist/components/editor/toolbar/bubble-toolbar.d.ts.map +1 -0
  273. package/dist/components/editor/toolbar/code-highlight-block.d.ts +3 -0
  274. package/dist/components/editor/toolbar/code-highlight-block.d.ts.map +1 -0
  275. package/dist/components/editor/toolbar/heading-block.d.ts +11 -0
  276. package/dist/components/editor/toolbar/heading-block.d.ts.map +1 -0
  277. package/dist/components/editor/toolbar/image-block.d.ts +11 -0
  278. package/dist/components/editor/toolbar/image-block.d.ts.map +1 -0
  279. package/dist/components/editor/toolbar/link-block.d.ts +13 -0
  280. package/dist/components/editor/toolbar/link-block.d.ts.map +1 -0
  281. package/dist/components/editor/toolbar/toolbar-item.d.ts +3 -0
  282. package/dist/components/editor/toolbar/toolbar-item.d.ts.map +1 -0
  283. package/dist/components/editor/toolbar/toolbar.d.ts +3 -0
  284. package/dist/components/editor/toolbar/toolbar.d.ts.map +1 -0
  285. package/dist/components/editor/toolbar/use-toolbar-state.d.ts +24 -0
  286. package/dist/components/editor/toolbar/use-toolbar-state.d.ts.map +1 -0
  287. package/dist/components/editor/types.d.ts +130 -0
  288. package/dist/components/editor/types.d.ts.map +1 -0
  289. package/dist/components/emoji-picker/emoji-picker.d.ts +24 -0
  290. package/dist/components/emoji-picker/emoji-picker.d.ts.map +1 -0
  291. package/dist/components/emoji-picker/emoji-search.d.ts +22 -0
  292. package/dist/components/emoji-picker/emoji-search.d.ts.map +1 -0
  293. package/dist/components/emoji-picker/emoji.d.ts +19 -0
  294. package/dist/components/emoji-picker/emoji.d.ts.map +1 -0
  295. package/dist/components/emoji-picker/index.d.ts +14 -0
  296. package/dist/components/emoji-picker/index.d.ts.map +1 -0
  297. package/dist/components/emoji-picker/index.js +3 -0
  298. package/dist/components/emoji-picker/index.js.map +1 -0
  299. package/dist/components/emoji-picker/twemoji-url.d.ts +26 -0
  300. package/dist/components/emoji-picker/twemoji-url.d.ts.map +1 -0
  301. package/dist/components/emoji-picker/types.d.ts +96 -0
  302. package/dist/components/emoji-picker/types.d.ts.map +1 -0
  303. package/dist/components/emoji-picker/use-emoji-data.d.ts +26 -0
  304. package/dist/components/emoji-picker/use-emoji-data.d.ts.map +1 -0
  305. package/dist/components/emoji-picker/use-recent-emojis.d.ts +16 -0
  306. package/dist/components/emoji-picker/use-recent-emojis.d.ts.map +1 -0
  307. package/dist/components/empty-content/empty-content.d.ts +92 -0
  308. package/dist/components/empty-content/empty-content.d.ts.map +1 -0
  309. package/dist/components/empty-content/index.d.ts +7 -0
  310. package/dist/components/empty-content/index.d.ts.map +1 -0
  311. package/dist/components/error-boundary/error-boundary.d.ts +162 -0
  312. package/dist/components/error-boundary/error-boundary.d.ts.map +1 -0
  313. package/dist/components/error-boundary/index.d.ts +7 -0
  314. package/dist/components/error-boundary/index.d.ts.map +1 -0
  315. package/dist/components/field/field-autocomplete.d.ts +74 -0
  316. package/dist/components/field/field-autocomplete.d.ts.map +1 -0
  317. package/dist/components/field/field-checkbox.d.ts +42 -0
  318. package/dist/components/field/field-checkbox.d.ts.map +1 -0
  319. package/dist/components/field/field-code.d.ts +80 -0
  320. package/dist/components/field/field-code.d.ts.map +1 -0
  321. package/dist/components/field/field-country-select.d.ts +84 -0
  322. package/dist/components/field/field-country-select.d.ts.map +1 -0
  323. package/dist/components/field/field-date-picker.d.ts +58 -0
  324. package/dist/components/field/field-date-picker.d.ts.map +1 -0
  325. package/dist/components/field/field-datetime-picker.d.ts +96 -0
  326. package/dist/components/field/field-datetime-picker.d.ts.map +1 -0
  327. package/dist/components/field/field-editor.d.ts +218 -0
  328. package/dist/components/field/field-editor.d.ts.map +1 -0
  329. package/dist/components/field/field-multi-checkbox.d.ts +91 -0
  330. package/dist/components/field/field-multi-checkbox.d.ts.map +1 -0
  331. package/dist/components/field/field-multi-select.d.ts +85 -0
  332. package/dist/components/field/field-multi-select.d.ts.map +1 -0
  333. package/dist/components/field/field-multi-switch.d.ts +93 -0
  334. package/dist/components/field/field-multi-switch.d.ts.map +1 -0
  335. package/dist/components/field/field-number.d.ts +50 -0
  336. package/dist/components/field/field-number.d.ts.map +1 -0
  337. package/dist/components/field/field-phone.d.ts +82 -0
  338. package/dist/components/field/field-phone.d.ts.map +1 -0
  339. package/dist/components/field/field-radio.d.ts +64 -0
  340. package/dist/components/field/field-radio.d.ts.map +1 -0
  341. package/dist/components/field/field-rating.d.ts +43 -0
  342. package/dist/components/field/field-rating.d.ts.map +1 -0
  343. package/dist/components/field/field-select.d.ts +50 -0
  344. package/dist/components/field/field-select.d.ts.map +1 -0
  345. package/dist/components/field/field-slider.d.ts +56 -0
  346. package/dist/components/field/field-slider.d.ts.map +1 -0
  347. package/dist/components/field/field-switch.d.ts +44 -0
  348. package/dist/components/field/field-switch.d.ts.map +1 -0
  349. package/dist/components/field/field-text.d.ts +38 -0
  350. package/dist/components/field/field-text.d.ts.map +1 -0
  351. package/dist/components/field/field-time-picker.d.ts +79 -0
  352. package/dist/components/field/field-time-picker.d.ts.map +1 -0
  353. package/dist/components/field/field-upload.d.ts +120 -0
  354. package/dist/components/field/field-upload.d.ts.map +1 -0
  355. package/dist/components/field/index.d.ts +149 -0
  356. package/dist/components/field/index.d.ts.map +1 -0
  357. package/dist/components/image/image.d.ts +79 -0
  358. package/dist/components/image/image.d.ts.map +1 -0
  359. package/dist/components/image/index.d.ts +7 -0
  360. package/dist/components/image/index.d.ts.map +1 -0
  361. package/dist/components/index.css +4 -0
  362. package/dist/components/index.css.map +1 -1
  363. package/dist/components/index.d.ts +60 -7072
  364. package/dist/components/index.d.ts.map +1 -0
  365. package/dist/components/index.js +21 -11
  366. package/dist/components/knowledge-graph/edge-labels.d.ts +14 -0
  367. package/dist/components/knowledge-graph/edge-labels.d.ts.map +1 -0
  368. package/dist/components/knowledge-graph/graph.d.ts +56 -0
  369. package/dist/components/knowledge-graph/graph.d.ts.map +1 -0
  370. package/dist/components/knowledge-graph/index.css +176 -0
  371. package/dist/components/knowledge-graph/index.css.map +1 -0
  372. package/dist/components/knowledge-graph/index.d.ts +3 -0
  373. package/dist/components/knowledge-graph/index.d.ts.map +1 -0
  374. package/dist/components/knowledge-graph/index.js +795 -0
  375. package/dist/components/knowledge-graph/index.js.map +1 -0
  376. package/dist/components/knowledge-graph/label-layout.d.ts +28 -0
  377. package/dist/components/knowledge-graph/label-layout.d.ts.map +1 -0
  378. package/dist/components/knowledge-graph/label-store.d.ts +15 -0
  379. package/dist/components/knowledge-graph/label-store.d.ts.map +1 -0
  380. package/dist/components/knowledge-graph/model.d.ts +92 -0
  381. package/dist/components/knowledge-graph/model.d.ts.map +1 -0
  382. package/dist/components/label/index.d.ts +7 -0
  383. package/dist/components/label/index.d.ts.map +1 -0
  384. package/dist/components/label/label.d.ts +71 -0
  385. package/dist/components/label/label.d.ts.map +1 -0
  386. package/dist/components/lightbox/classes.d.ts +34 -0
  387. package/dist/components/lightbox/classes.d.ts.map +1 -0
  388. package/dist/components/lightbox/index.d.ts +11 -0
  389. package/dist/components/lightbox/index.d.ts.map +1 -0
  390. package/dist/components/lightbox/lightbox.d.ts +42 -0
  391. package/dist/components/lightbox/lightbox.d.ts.map +1 -0
  392. package/dist/components/lightbox/types.d.ts +233 -0
  393. package/dist/components/lightbox/types.d.ts.map +1 -0
  394. package/dist/components/lightbox/use-lightbox.d.ts +42 -0
  395. package/dist/components/lightbox/use-lightbox.d.ts.map +1 -0
  396. package/dist/components/loading-screen/index.d.ts +8 -0
  397. package/dist/components/loading-screen/index.d.ts.map +1 -0
  398. package/dist/components/loading-screen/loading-screen.d.ts +37 -0
  399. package/dist/components/loading-screen/loading-screen.d.ts.map +1 -0
  400. package/dist/components/loading-screen/splash-screen.d.ts +80 -0
  401. package/dist/components/loading-screen/splash-screen.d.ts.map +1 -0
  402. package/dist/components/map/Map.d.ts +39 -0
  403. package/dist/components/map/Map.d.ts.map +1 -0
  404. package/dist/components/map/MapCoverageLayer.d.ts +25 -0
  405. package/dist/components/map/MapCoverageLayer.d.ts.map +1 -0
  406. package/dist/components/map/MapMarker.d.ts +17 -0
  407. package/dist/components/map/MapMarker.d.ts.map +1 -0
  408. package/dist/components/map/MapPlaceSearch.d.ts +33 -0
  409. package/dist/components/map/MapPlaceSearch.d.ts.map +1 -0
  410. package/dist/components/map/MapPointPicker.d.ts +35 -0
  411. package/dist/components/map/MapPointPicker.d.ts.map +1 -0
  412. package/dist/components/map/coordinates.d.ts +10 -0
  413. package/dist/components/map/coordinates.d.ts.map +1 -0
  414. package/dist/components/map/index.css +4 -0
  415. package/dist/components/map/index.css.map +1 -0
  416. package/dist/components/map/index.d.ts +19 -0
  417. package/dist/components/map/index.d.ts.map +1 -0
  418. package/dist/components/map/index.js +3 -0
  419. package/dist/components/map/index.js.map +1 -0
  420. package/dist/components/mega-menu/index.d.ts +12 -0
  421. package/dist/components/mega-menu/index.d.ts.map +1 -0
  422. package/dist/components/mega-menu/mega-menu-horizontal.d.ts +41 -0
  423. package/dist/components/mega-menu/mega-menu-horizontal.d.ts.map +1 -0
  424. package/dist/components/mega-menu/mega-menu-mobile.d.ts +28 -0
  425. package/dist/components/mega-menu/mega-menu-mobile.d.ts.map +1 -0
  426. package/dist/components/mega-menu/mega-menu-vertical.d.ts +28 -0
  427. package/dist/components/mega-menu/mega-menu-vertical.d.ts.map +1 -0
  428. package/dist/components/mega-menu/styles.d.ts +18 -0
  429. package/dist/components/mega-menu/styles.d.ts.map +1 -0
  430. package/dist/components/mega-menu/types.d.ts +200 -0
  431. package/dist/components/mega-menu/types.d.ts.map +1 -0
  432. package/dist/components/menu/index.d.ts +7 -0
  433. package/dist/components/menu/index.d.ts.map +1 -0
  434. package/dist/components/menu/menu.d.ts +144 -0
  435. package/dist/components/menu/menu.d.ts.map +1 -0
  436. package/dist/components/nav-card/index.d.ts +8 -0
  437. package/dist/components/nav-card/index.d.ts.map +1 -0
  438. package/dist/components/nav-card/nav-card-grid.d.ts +57 -0
  439. package/dist/components/nav-card/nav-card-grid.d.ts.map +1 -0
  440. package/dist/components/nav-card/nav-card.d.ts +69 -0
  441. package/dist/components/nav-card/nav-card.d.ts.map +1 -0
  442. package/dist/components/nav-section/components.d.ts +143 -0
  443. package/dist/components/nav-section/components.d.ts.map +1 -0
  444. package/dist/components/nav-section/index.d.ts +15 -0
  445. package/dist/components/nav-section/index.d.ts.map +1 -0
  446. package/dist/components/nav-section/nav-context.d.ts +80 -0
  447. package/dist/components/nav-section/nav-context.d.ts.map +1 -0
  448. package/dist/components/nav-section/nav-item.d.ts +20 -0
  449. package/dist/components/nav-section/nav-item.d.ts.map +1 -0
  450. package/dist/components/nav-section/nav-list.d.ts +25 -0
  451. package/dist/components/nav-section/nav-list.d.ts.map +1 -0
  452. package/dist/components/nav-section/nav-section-horizontal.d.ts +29 -0
  453. package/dist/components/nav-section/nav-section-horizontal.d.ts.map +1 -0
  454. package/dist/components/nav-section/nav-section-mini.d.ts +30 -0
  455. package/dist/components/nav-section/nav-section-mini.d.ts.map +1 -0
  456. package/dist/components/nav-section/nav-section-vertical.d.ts +37 -0
  457. package/dist/components/nav-section/nav-section-vertical.d.ts.map +1 -0
  458. package/dist/components/nav-section/styles.d.ts +35 -0
  459. package/dist/components/nav-section/styles.d.ts.map +1 -0
  460. package/dist/components/nav-section/types.d.ts +178 -0
  461. package/dist/components/nav-section/types.d.ts.map +1 -0
  462. package/dist/components/navigation-progress/index.d.ts +7 -0
  463. package/dist/components/navigation-progress/index.d.ts.map +1 -0
  464. package/dist/components/navigation-progress/navigation-progress.d.ts +36 -0
  465. package/dist/components/navigation-progress/navigation-progress.d.ts.map +1 -0
  466. package/dist/components/page-content/index.d.ts +7 -0
  467. package/dist/components/page-content/index.d.ts.map +1 -0
  468. package/dist/components/page-content/page-content.d.ts +55 -0
  469. package/dist/components/page-content/page-content.d.ts.map +1 -0
  470. package/dist/components/popover/index.d.ts +7 -0
  471. package/dist/components/popover/index.d.ts.map +1 -0
  472. package/dist/{popover-Dmw7SJLR.d.ts → components/popover/popover.d.ts} +11 -14
  473. package/dist/components/popover/popover.d.ts.map +1 -0
  474. package/dist/components/progress/countdown-ring.d.ts +60 -0
  475. package/dist/components/progress/countdown-ring.d.ts.map +1 -0
  476. package/dist/components/progress/index.d.ts +8 -0
  477. package/dist/components/progress/index.d.ts.map +1 -0
  478. package/dist/components/progress/progress.d.ts +106 -0
  479. package/dist/components/progress/progress.d.ts.map +1 -0
  480. package/dist/components/rail/index.d.ts +7 -0
  481. package/dist/components/rail/index.d.ts.map +1 -0
  482. package/dist/components/rail/rail.d.ts +39 -0
  483. package/dist/components/rail/rail.d.ts.map +1 -0
  484. package/dist/components/research/diagram-image.d.ts +11 -0
  485. package/dist/components/research/diagram-image.d.ts.map +1 -0
  486. package/dist/components/research/diagram.d.ts +8 -0
  487. package/dist/components/research/diagram.d.ts.map +1 -0
  488. package/dist/components/research/document.d.ts +33 -0
  489. package/dist/components/research/document.d.ts.map +1 -0
  490. package/dist/components/research/frontmatter.d.ts +15 -0
  491. package/dist/components/research/frontmatter.d.ts.map +1 -0
  492. package/dist/components/research/index.css +51 -0
  493. package/dist/components/research/index.css.map +1 -0
  494. package/dist/components/research/index.d.ts +3 -0
  495. package/dist/components/research/index.d.ts.map +1 -0
  496. package/dist/components/research/index.js +6 -0
  497. package/dist/components/research/index.js.map +1 -0
  498. package/dist/components/research/parse.d.ts +29 -0
  499. package/dist/components/research/parse.d.ts.map +1 -0
  500. package/dist/components/research-editor/block-commands.d.ts +20 -0
  501. package/dist/components/research-editor/block-commands.d.ts.map +1 -0
  502. package/dist/components/research-editor/block-controls.d.ts +13 -0
  503. package/dist/components/research-editor/block-controls.d.ts.map +1 -0
  504. package/dist/components/research-editor/editor.d.ts +75 -0
  505. package/dist/components/research-editor/editor.d.ts.map +1 -0
  506. package/dist/components/research-editor/extensions.d.ts +14 -0
  507. package/dist/components/research-editor/extensions.d.ts.map +1 -0
  508. package/dist/components/research-editor/index.css +332 -0
  509. package/dist/components/research-editor/index.css.map +1 -0
  510. package/dist/components/research-editor/index.d.ts +5 -0
  511. package/dist/components/research-editor/index.d.ts.map +1 -0
  512. package/dist/components/research-editor/index.js +1592 -0
  513. package/dist/components/research-editor/index.js.map +1 -0
  514. package/dist/components/research-editor/math-input.d.ts +32 -0
  515. package/dist/components/research-editor/math-input.d.ts.map +1 -0
  516. package/dist/components/research-editor/math-markup.d.ts +4 -0
  517. package/dist/components/research-editor/math-markup.d.ts.map +1 -0
  518. package/dist/components/research-editor/math-navigation.d.ts +6 -0
  519. package/dist/components/research-editor/math-navigation.d.ts.map +1 -0
  520. package/dist/components/research-editor/math-node.d.ts +11 -0
  521. package/dist/components/research-editor/math-node.d.ts.map +1 -0
  522. package/dist/components/research-editor/source.d.ts +19 -0
  523. package/dist/components/research-editor/source.d.ts.map +1 -0
  524. package/dist/components/scroll-spy/index.d.ts +3 -0
  525. package/dist/components/scroll-spy/index.d.ts.map +1 -0
  526. package/dist/components/scroll-spy/scroll-spy-provider.d.ts +26 -0
  527. package/dist/components/scroll-spy/scroll-spy-provider.d.ts.map +1 -0
  528. package/dist/components/scroll-spy/scroll-spy-section.d.ts +10 -0
  529. package/dist/components/scroll-spy/scroll-spy-section.d.ts.map +1 -0
  530. package/dist/components/scroll-to-top/index.d.ts +7 -0
  531. package/dist/components/scroll-to-top/index.d.ts.map +1 -0
  532. package/dist/components/scroll-to-top/scroll-to-top.d.ts +25 -0
  533. package/dist/components/scroll-to-top/scroll-to-top.d.ts.map +1 -0
  534. package/dist/components/scrollbar/index.d.ts +7 -0
  535. package/dist/components/scrollbar/index.d.ts.map +1 -0
  536. package/dist/components/scrollbar/scrollbar.d.ts +61 -0
  537. package/dist/components/scrollbar/scrollbar.d.ts.map +1 -0
  538. package/dist/components/search-input/index.d.ts +2 -0
  539. package/dist/components/search-input/index.d.ts.map +1 -0
  540. package/dist/components/search-input/search-input.d.ts +36 -0
  541. package/dist/components/search-input/search-input.d.ts.map +1 -0
  542. package/dist/components/settings/index.d.ts +10 -0
  543. package/dist/components/settings/index.d.ts.map +1 -0
  544. package/dist/components/settings/settings-drawer.d.ts +39 -0
  545. package/dist/components/settings/settings-drawer.d.ts.map +1 -0
  546. package/dist/components/settings/settings-provider.d.ts +106 -0
  547. package/dist/components/settings/settings-provider.d.ts.map +1 -0
  548. package/dist/components/skeleton/index.d.ts +7 -0
  549. package/dist/components/skeleton/index.d.ts.map +1 -0
  550. package/dist/components/skeleton/skeleton.d.ts +77 -0
  551. package/dist/components/skeleton/skeleton.d.ts.map +1 -0
  552. package/dist/components/snackbar/index.d.ts +7 -0
  553. package/dist/components/snackbar/index.d.ts.map +1 -0
  554. package/dist/components/snackbar/snackbar.d.ts +120 -0
  555. package/dist/components/snackbar/snackbar.d.ts.map +1 -0
  556. package/dist/components/sponsored-slot/index.d.ts +3 -0
  557. package/dist/components/sponsored-slot/index.d.ts.map +1 -0
  558. package/dist/components/sponsored-slot/sponsored-slot.d.ts +16 -0
  559. package/dist/components/sponsored-slot/sponsored-slot.d.ts.map +1 -0
  560. package/dist/components/sponsored-slot/types.d.ts +45 -0
  561. package/dist/components/sponsored-slot/types.d.ts.map +1 -0
  562. package/dist/components/stepper/index.d.ts +7 -0
  563. package/dist/components/stepper/index.d.ts.map +1 -0
  564. package/dist/components/stepper/stepper.d.ts +145 -0
  565. package/dist/components/stepper/stepper.d.ts.map +1 -0
  566. package/dist/components/svg-color/index.d.ts +7 -0
  567. package/dist/components/svg-color/index.d.ts.map +1 -0
  568. package/dist/components/svg-color/svg-color.d.ts +80 -0
  569. package/dist/components/svg-color/svg-color.d.ts.map +1 -0
  570. package/dist/components/table/index.d.ts +7 -0
  571. package/dist/components/table/index.d.ts.map +1 -0
  572. package/dist/components/table/table.d.ts +184 -0
  573. package/dist/components/table/table.d.ts.map +1 -0
  574. package/dist/components/tabs/index.d.ts +7 -0
  575. package/dist/components/tabs/index.d.ts.map +1 -0
  576. package/dist/components/tabs/tabs.d.ts +146 -0
  577. package/dist/components/tabs/tabs.d.ts.map +1 -0
  578. package/dist/components/tag-cloud/index.d.ts +7 -0
  579. package/dist/components/tag-cloud/index.d.ts.map +1 -0
  580. package/dist/components/tag-cloud/tag-cloud.d.ts +58 -0
  581. package/dist/components/tag-cloud/tag-cloud.d.ts.map +1 -0
  582. package/dist/components/tiptap-renderer/index.d.ts +2 -0
  583. package/dist/components/tiptap-renderer/index.d.ts.map +1 -0
  584. package/dist/components/tiptap-renderer/tiptap-renderer.d.ts +46 -0
  585. package/dist/components/tiptap-renderer/tiptap-renderer.d.ts.map +1 -0
  586. package/dist/components/tooltip/index.d.ts +7 -0
  587. package/dist/components/tooltip/index.d.ts.map +1 -0
  588. package/dist/components/tooltip/tooltip.d.ts +38 -0
  589. package/dist/components/tooltip/tooltip.d.ts.map +1 -0
  590. package/dist/components/virtual-list/index.d.ts +7 -0
  591. package/dist/components/virtual-list/index.d.ts.map +1 -0
  592. package/dist/components/virtual-list/virtual-list.d.ts +64 -0
  593. package/dist/components/virtual-list/virtual-list.d.ts.map +1 -0
  594. package/dist/core/accessibility/index.d.ts +96 -0
  595. package/dist/core/accessibility/index.d.ts.map +1 -0
  596. package/dist/core/accessibility/skip-link.d.ts +31 -0
  597. package/dist/core/accessibility/skip-link.d.ts.map +1 -0
  598. package/dist/core/context.d.ts +99 -0
  599. package/dist/core/context.d.ts.map +1 -0
  600. package/dist/core/hooks/use-boolean.d.ts +54 -0
  601. package/dist/core/hooks/use-boolean.d.ts.map +1 -0
  602. package/dist/core/hooks/use-breakpoints.d.ts +87 -0
  603. package/dist/core/hooks/use-breakpoints.d.ts.map +1 -0
  604. package/dist/core/hooks/use-click-outside.d.ts +26 -0
  605. package/dist/core/hooks/use-click-outside.d.ts.map +1 -0
  606. package/dist/core/hooks/use-copy-to-clipboard.d.ts +66 -0
  607. package/dist/core/hooks/use-copy-to-clipboard.d.ts.map +1 -0
  608. package/dist/core/hooks/use-countdown.d.ts +105 -0
  609. package/dist/core/hooks/use-countdown.d.ts.map +1 -0
  610. package/dist/core/hooks/use-debounce.d.ts +64 -0
  611. package/dist/core/hooks/use-debounce.d.ts.map +1 -0
  612. package/dist/core/hooks/use-event-listener.d.ts +37 -0
  613. package/dist/core/hooks/use-event-listener.d.ts.map +1 -0
  614. package/dist/core/hooks/use-interval.d.ts +30 -0
  615. package/dist/core/hooks/use-interval.d.ts.map +1 -0
  616. package/dist/core/hooks/use-is-client.d.ts +24 -0
  617. package/dist/core/hooks/use-is-client.d.ts.map +1 -0
  618. package/dist/core/hooks/use-local-storage.d.ts +61 -0
  619. package/dist/core/hooks/use-local-storage.d.ts.map +1 -0
  620. package/dist/core/hooks/use-media-query.d.ts +107 -0
  621. package/dist/core/hooks/use-media-query.d.ts.map +1 -0
  622. package/dist/core/hooks/use-mounted.d.ts +33 -0
  623. package/dist/core/hooks/use-mounted.d.ts.map +1 -0
  624. package/dist/core/hooks/use-multi-select.d.ts +113 -0
  625. package/dist/core/hooks/use-multi-select.d.ts.map +1 -0
  626. package/dist/core/hooks/use-previous.d.ts +23 -0
  627. package/dist/core/hooks/use-previous.d.ts.map +1 -0
  628. package/dist/core/hooks/use-set-state.d.ts +56 -0
  629. package/dist/core/hooks/use-set-state.d.ts.map +1 -0
  630. package/dist/core/hooks/use-tabs.d.ts +74 -0
  631. package/dist/core/hooks/use-tabs.d.ts.map +1 -0
  632. package/dist/core/hooks/use-timeout.d.ts +37 -0
  633. package/dist/core/hooks/use-timeout.d.ts.map +1 -0
  634. package/dist/core/index.d.ts +36 -468
  635. package/dist/core/index.d.ts.map +1 -0
  636. package/dist/core/index.js +10 -7
  637. package/dist/core/provider-stack.d.ts +181 -0
  638. package/dist/core/provider-stack.d.ts.map +1 -0
  639. package/dist/core/provider.d.ts +72 -0
  640. package/dist/core/provider.d.ts.map +1 -0
  641. package/dist/forms/index.d.ts +6 -557
  642. package/dist/forms/index.d.ts.map +1 -0
  643. package/dist/forms/index.js +0 -1
  644. package/dist/forms/index.js.map +1 -1
  645. package/dist/forms/schema-provider.d.ts +282 -0
  646. package/dist/forms/schema-provider.d.ts.map +1 -0
  647. package/dist/forms/schema-utils.d.ts +286 -0
  648. package/dist/forms/schema-utils.d.ts.map +1 -0
  649. package/dist/hooks/index.d.ts +38 -8
  650. package/dist/hooks/index.d.ts.map +1 -0
  651. package/dist/hooks/index.js +12 -9
  652. package/dist/hooks/use-array.d.ts +126 -0
  653. package/dist/hooks/use-array.d.ts.map +1 -0
  654. package/dist/hooks/use-async.d.ts +88 -0
  655. package/dist/hooks/use-async.d.ts.map +1 -0
  656. package/dist/hooks/use-back-to-top.d.ts +57 -0
  657. package/dist/hooks/use-back-to-top.d.ts.map +1 -0
  658. package/dist/hooks/use-client-rect.d.ts +67 -0
  659. package/dist/hooks/use-client-rect.d.ts.map +1 -0
  660. package/dist/hooks/use-config-from-query.d.ts +98 -0
  661. package/dist/hooks/use-config-from-query.d.ts.map +1 -0
  662. package/dist/hooks/use-cookies.d.ts +62 -0
  663. package/dist/hooks/use-cookies.d.ts.map +1 -0
  664. package/dist/hooks/use-countdown-date.d.ts +47 -0
  665. package/dist/hooks/use-countdown-date.d.ts.map +1 -0
  666. package/dist/hooks/use-countdown-seconds.d.ts +83 -0
  667. package/dist/hooks/use-countdown-seconds.d.ts.map +1 -0
  668. package/dist/hooks/use-double-click.d.ts +67 -0
  669. package/dist/hooks/use-double-click.d.ts.map +1 -0
  670. package/dist/hooks/use-focus-trap.d.ts +66 -0
  671. package/dist/hooks/use-focus-trap.d.ts.map +1 -0
  672. package/dist/hooks/use-image-dimensions.d.ts +124 -0
  673. package/dist/hooks/use-image-dimensions.d.ts.map +1 -0
  674. package/dist/hooks/use-infinite-scroll.d.ts +204 -0
  675. package/dist/hooks/use-infinite-scroll.d.ts.map +1 -0
  676. package/dist/hooks/use-intersection-observer.d.ts +93 -0
  677. package/dist/hooks/use-intersection-observer.d.ts.map +1 -0
  678. package/dist/hooks/use-isomorphic-layout-effect.d.ts +34 -0
  679. package/dist/hooks/use-isomorphic-layout-effect.d.ts.map +1 -0
  680. package/dist/hooks/use-keyboard-shortcut.d.ts +112 -0
  681. package/dist/hooks/use-keyboard-shortcut.d.ts.map +1 -0
  682. package/dist/hooks/use-lazy-query.d.ts +132 -0
  683. package/dist/hooks/use-lazy-query.d.ts.map +1 -0
  684. package/dist/hooks/use-mutation.d.ts +141 -0
  685. package/dist/hooks/use-mutation.d.ts.map +1 -0
  686. package/dist/hooks/use-online-status.d.ts +56 -0
  687. package/dist/hooks/use-online-status.d.ts.map +1 -0
  688. package/dist/hooks/use-password-visibility.d.ts +83 -0
  689. package/dist/hooks/use-password-visibility.d.ts.map +1 -0
  690. package/dist/hooks/use-popover-hover.d.ts +78 -0
  691. package/dist/hooks/use-popover-hover.d.ts.map +1 -0
  692. package/dist/hooks/use-scroll-offset-top.d.ts +69 -0
  693. package/dist/hooks/use-scroll-offset-top.d.ts.map +1 -0
  694. package/dist/hooks/use-scroll-position.d.ts +96 -0
  695. package/dist/hooks/use-scroll-position.d.ts.map +1 -0
  696. package/dist/hooks/use-session-storage.d.ts +66 -0
  697. package/dist/hooks/use-session-storage.d.ts.map +1 -0
  698. package/dist/hooks/use-throttle.d.ts +67 -0
  699. package/dist/hooks/use-throttle.d.ts.map +1 -0
  700. package/dist/hooks/use-update-effect.d.ts +53 -0
  701. package/dist/hooks/use-update-effect.d.ts.map +1 -0
  702. package/dist/hooks/use-window-size.d.ts +132 -0
  703. package/dist/hooks/use-window-size.d.ts.map +1 -0
  704. package/dist/http/client.d.ts +74 -0
  705. package/dist/http/client.d.ts.map +1 -0
  706. package/dist/http/index.d.ts +6 -229
  707. package/dist/http/index.d.ts.map +1 -0
  708. package/dist/http/index.js +0 -2
  709. package/dist/http/index.js.map +1 -1
  710. package/dist/http/types.d.ts +158 -0
  711. package/dist/http/types.d.ts.map +1 -0
  712. package/dist/icons/context.d.ts +17 -0
  713. package/dist/icons/context.d.ts.map +1 -0
  714. package/dist/icons/controls.d.ts +51 -0
  715. package/dist/icons/controls.d.ts.map +1 -0
  716. package/dist/icons/index.d.ts +3 -0
  717. package/dist/icons/index.d.ts.map +1 -0
  718. package/dist/icons/index.js +4 -0
  719. package/dist/icons/index.js.map +1 -0
  720. package/dist/icons/theme.d.ts +4 -0
  721. package/dist/icons/theme.d.ts.map +1 -0
  722. package/dist/index.css +4 -0
  723. package/dist/index.css.map +1 -1
  724. package/dist/index.d.ts +19 -2758
  725. package/dist/index.d.ts.map +1 -0
  726. package/dist/index.js +46 -63
  727. package/dist/index.js.map +1 -1
  728. package/dist/layouts/auth/centered.d.ts +49 -0
  729. package/dist/layouts/auth/centered.d.ts.map +1 -0
  730. package/dist/layouts/auth/index.d.ts +12 -0
  731. package/dist/layouts/auth/index.d.ts.map +1 -0
  732. package/dist/layouts/auth/simple.d.ts +58 -0
  733. package/dist/layouts/auth/simple.d.ts.map +1 -0
  734. package/dist/layouts/auth/split.d.ts +81 -0
  735. package/dist/layouts/auth/split.d.ts.map +1 -0
  736. package/dist/layouts/core/context.d.ts +102 -0
  737. package/dist/layouts/core/context.d.ts.map +1 -0
  738. package/dist/layouts/core/css-vars.d.ts +43 -0
  739. package/dist/layouts/core/css-vars.d.ts.map +1 -0
  740. package/dist/layouts/core/header-section.d.ts +79 -0
  741. package/dist/layouts/core/header-section.d.ts.map +1 -0
  742. package/dist/layouts/core/index.d.ts +18 -0
  743. package/dist/layouts/core/index.d.ts.map +1 -0
  744. package/dist/layouts/core/layout-section.d.ts +64 -0
  745. package/dist/layouts/core/layout-section.d.ts.map +1 -0
  746. package/dist/layouts/core/user-menu.d.ts +88 -0
  747. package/dist/layouts/core/user-menu.d.ts.map +1 -0
  748. package/dist/layouts/dashboard/index.d.ts +10 -0
  749. package/dist/layouts/dashboard/index.d.ts.map +1 -0
  750. package/dist/layouts/dashboard/labels.d.ts +12 -0
  751. package/dist/layouts/dashboard/labels.d.ts.map +1 -0
  752. package/dist/layouts/dashboard/layout.d.ts +96 -0
  753. package/dist/layouts/dashboard/layout.d.ts.map +1 -0
  754. package/dist/layouts/dashboard/sidenav.d.ts +62 -0
  755. package/dist/layouts/dashboard/sidenav.d.ts.map +1 -0
  756. package/dist/layouts/dashboard/topnav.d.ts +41 -0
  757. package/dist/layouts/dashboard/topnav.d.ts.map +1 -0
  758. package/dist/layouts/index.d.ts +32 -850
  759. package/dist/layouts/index.d.ts.map +1 -0
  760. package/dist/layouts/index.js +8 -4
  761. package/dist/layouts/panel-layout.d.ts +35 -0
  762. package/dist/layouts/panel-layout.d.ts.map +1 -0
  763. package/dist/layouts/sidebar-toggle.d.ts +11 -0
  764. package/dist/layouts/sidebar-toggle.d.ts.map +1 -0
  765. package/dist/layouts/types.d.ts +317 -0
  766. package/dist/layouts/types.d.ts.map +1 -0
  767. package/dist/netron/context.d.ts +18 -0
  768. package/dist/netron/context.d.ts.map +1 -0
  769. package/dist/netron/hooks.d.ts +10 -0
  770. package/dist/netron/hooks.d.ts.map +1 -0
  771. package/dist/netron/index.d.ts +47 -4
  772. package/dist/netron/index.d.ts.map +1 -0
  773. package/dist/netron/index.js +1 -2
  774. package/dist/netron/types.d.ts +12 -0
  775. package/dist/netron/types.d.ts.map +1 -0
  776. package/dist/registry/index.d.ts +8 -341
  777. package/dist/registry/index.d.ts.map +1 -0
  778. package/dist/registry/index.js +1 -2
  779. package/dist/registry/installer.d.ts +137 -0
  780. package/dist/registry/installer.d.ts.map +1 -0
  781. package/dist/registry/manager.d.ts +196 -0
  782. package/dist/registry/manager.d.ts.map +1 -0
  783. package/dist/state/create-store.d.ts +164 -0
  784. package/dist/state/create-store.d.ts.map +1 -0
  785. package/dist/state/index.d.ts +12 -969
  786. package/dist/state/index.d.ts.map +1 -0
  787. package/dist/state/index.js +2 -3
  788. package/dist/state/settings-version.d.ts +255 -0
  789. package/dist/state/settings-version.d.ts.map +1 -0
  790. package/dist/state/stores/auth.d.ts +143 -0
  791. package/dist/state/stores/auth.d.ts.map +1 -0
  792. package/dist/state/stores/index.d.ts +10 -0
  793. package/dist/state/stores/index.d.ts.map +1 -0
  794. package/dist/state/stores/settings.d.ts +151 -0
  795. package/dist/state/stores/settings.d.ts.map +1 -0
  796. package/dist/state/stores/theme.d.ts +87 -0
  797. package/dist/state/stores/theme.d.ts.map +1 -0
  798. package/dist/state/stores/ui.d.ts +106 -0
  799. package/dist/state/stores/ui.d.ts.map +1 -0
  800. package/dist/theme/colors/base.d.ts +61 -0
  801. package/dist/theme/colors/base.d.ts.map +1 -0
  802. package/dist/theme/colors/index.d.ts +10 -0
  803. package/dist/theme/colors/index.d.ts.map +1 -0
  804. package/dist/theme/colors/luxury.d.ts +49 -0
  805. package/dist/theme/colors/luxury.d.ts.map +1 -0
  806. package/dist/theme/components/Autocomplete.d.ts +9 -0
  807. package/dist/theme/components/Autocomplete.d.ts.map +1 -0
  808. package/dist/theme/components/Button.d.ts +33 -0
  809. package/dist/theme/components/Button.d.ts.map +1 -0
  810. package/dist/theme/components/Card.d.ts +20 -0
  811. package/dist/theme/components/Card.d.ts.map +1 -0
  812. package/dist/theme/components/Chip.d.ts +29 -0
  813. package/dist/theme/components/Chip.d.ts.map +1 -0
  814. package/dist/theme/components/DataGrid.d.ts +15 -0
  815. package/dist/theme/components/DataGrid.d.ts.map +1 -0
  816. package/dist/theme/components/DatePicker.d.ts +19 -0
  817. package/dist/theme/components/DatePicker.d.ts.map +1 -0
  818. package/dist/theme/components/Dialog.d.ts +23 -0
  819. package/dist/theme/components/Dialog.d.ts.map +1 -0
  820. package/dist/theme/components/FormControls.d.ts +44 -0
  821. package/dist/theme/components/FormControls.d.ts.map +1 -0
  822. package/dist/theme/components/Tabs.d.ts +21 -0
  823. package/dist/theme/components/Tabs.d.ts.map +1 -0
  824. package/dist/theme/components/TextField.d.ts +87 -0
  825. package/dist/theme/components/TextField.d.ts.map +1 -0
  826. package/dist/theme/components/index.d.ts +27 -0
  827. package/dist/theme/components/index.d.ts.map +1 -0
  828. package/dist/theme/components/theme-utils.d.ts +42 -0
  829. package/dist/theme/components/theme-utils.d.ts.map +1 -0
  830. package/dist/theme/create-theme.d.ts +119 -0
  831. package/dist/theme/create-theme.d.ts.map +1 -0
  832. package/dist/theme/css-variables.d.ts +42 -0
  833. package/dist/theme/css-variables.d.ts.map +1 -0
  834. package/dist/theme/custom-shadows.d.ts +58 -0
  835. package/dist/theme/custom-shadows.d.ts.map +1 -0
  836. package/dist/theme/index.d.ts +23 -1045
  837. package/dist/theme/index.d.ts.map +1 -0
  838. package/dist/theme/index.js +6 -3
  839. package/dist/theme/mixins.d.ts +334 -0
  840. package/dist/theme/mixins.d.ts.map +1 -0
  841. package/dist/theme/opacity.d.ts +51 -0
  842. package/dist/theme/opacity.d.ts.map +1 -0
  843. package/dist/theme/palette/builder.d.ts +138 -0
  844. package/dist/theme/palette/builder.d.ts.map +1 -0
  845. package/dist/theme/palette/index.d.ts +7 -0
  846. package/dist/theme/palette/index.d.ts.map +1 -0
  847. package/dist/theme/palette/overrides.d.ts +23 -0
  848. package/dist/theme/palette/overrides.d.ts.map +1 -0
  849. package/dist/theme/palette.d.ts +43 -0
  850. package/dist/theme/palette.d.ts.map +1 -0
  851. package/dist/theme/presets/arctic.d.ts +13 -0
  852. package/dist/theme/presets/arctic.d.ts.map +1 -0
  853. package/dist/theme/presets/default.d.ts +13 -0
  854. package/dist/theme/presets/default.d.ts.map +1 -0
  855. package/dist/theme/presets/dracula.d.ts +27 -0
  856. package/dist/theme/presets/dracula.d.ts.map +1 -0
  857. package/dist/theme/presets/ember.d.ts +23 -0
  858. package/dist/theme/presets/ember.d.ts.map +1 -0
  859. package/dist/theme/presets/index.d.ts +39 -0
  860. package/dist/theme/presets/index.d.ts.map +1 -0
  861. package/dist/theme/presets/luxury.d.ts +13 -0
  862. package/dist/theme/presets/luxury.d.ts.map +1 -0
  863. package/dist/theme/presets/midnight.d.ts +23 -0
  864. package/dist/theme/presets/midnight.d.ts.map +1 -0
  865. package/dist/theme/presets/minimal.d.ts +23 -0
  866. package/dist/theme/presets/minimal.d.ts.map +1 -0
  867. package/dist/theme/presets/nature.d.ts +14 -0
  868. package/dist/theme/presets/nature.d.ts.map +1 -0
  869. package/dist/theme/presets/retro.d.ts +23 -0
  870. package/dist/theme/presets/retro.d.ts.map +1 -0
  871. package/dist/theme/shadows.d.ts +61 -0
  872. package/dist/theme/shadows.d.ts.map +1 -0
  873. package/dist/theme/typography.d.ts +24 -0
  874. package/dist/theme/typography.d.ts.map +1 -0
  875. package/dist/theme/utils/color.d.ts +295 -0
  876. package/dist/theme/utils/color.d.ts.map +1 -0
  877. package/dist/theme/utils/index.d.ts +7 -0
  878. package/dist/theme/utils/index.d.ts.map +1 -0
  879. package/dist/{registry-DQcIzW2s.d.ts → types/blocks.d.ts} +30 -191
  880. package/dist/types/blocks.d.ts.map +1 -0
  881. package/dist/{components-BCGZ-Rwt.d.ts → types/components.d.ts} +17 -20
  882. package/dist/types/components.d.ts.map +1 -0
  883. package/dist/{config-Pct0n_Kq.d.ts → types/config.d.ts} +14 -16
  884. package/dist/types/config.d.ts.map +1 -0
  885. package/dist/types/index.d.ts +13 -7
  886. package/dist/types/index.d.ts.map +1 -0
  887. package/dist/types/index.js +1 -2
  888. package/dist/types/registry.d.ts +158 -0
  889. package/dist/types/registry.d.ts.map +1 -0
  890. package/dist/{theme-B4Q3Bg5o.d.ts → types/theme.d.ts} +31 -34
  891. package/dist/types/theme.d.ts.map +1 -0
  892. package/dist/ui/index.d.ts +18 -0
  893. package/dist/ui/index.d.ts.map +1 -0
  894. package/dist/ui/index.js +148 -0
  895. package/dist/ui/index.js.map +1 -0
  896. package/dist/utils/async-lock.d.ts +169 -0
  897. package/dist/utils/async-lock.d.ts.map +1 -0
  898. package/dist/utils/cn.d.ts +80 -0
  899. package/dist/utils/cn.d.ts.map +1 -0
  900. package/dist/utils/cookies.d.ts +68 -0
  901. package/dist/utils/cookies.d.ts.map +1 -0
  902. package/dist/utils/create-classes.d.ts +90 -0
  903. package/dist/utils/create-classes.d.ts.map +1 -0
  904. package/dist/utils/errors.d.ts +201 -0
  905. package/dist/utils/errors.d.ts.map +1 -0
  906. package/dist/utils/fetch-interceptor.d.ts +230 -0
  907. package/dist/utils/fetch-interceptor.d.ts.map +1 -0
  908. package/dist/utils/font.d.ts +65 -0
  909. package/dist/utils/font.d.ts.map +1 -0
  910. package/dist/utils/format-crypto.d.ts +312 -0
  911. package/dist/utils/format-crypto.d.ts.map +1 -0
  912. package/dist/utils/format-date.d.ts +240 -0
  913. package/dist/utils/format-date.d.ts.map +1 -0
  914. package/dist/utils/format-number.d.ts +245 -0
  915. package/dist/utils/format-number.d.ts.map +1 -0
  916. package/dist/utils/i18n-text.d.ts +68 -0
  917. package/dist/utils/i18n-text.d.ts.map +1 -0
  918. package/dist/utils/index.d.ts +30 -0
  919. package/dist/utils/index.d.ts.map +1 -0
  920. package/dist/utils/jwt.d.ts +227 -0
  921. package/dist/utils/jwt.d.ts.map +1 -0
  922. package/dist/utils/object.d.ts +96 -0
  923. package/dist/utils/object.d.ts.map +1 -0
  924. package/dist/utils/refs.d.ts +60 -0
  925. package/dist/utils/refs.d.ts.map +1 -0
  926. package/dist/utils/rtl.d.ts +75 -0
  927. package/dist/utils/rtl.d.ts.map +1 -0
  928. package/dist/utils/storage.d.ts +190 -0
  929. package/dist/utils/storage.d.ts.map +1 -0
  930. package/dist/utils/string.d.ts +216 -0
  931. package/dist/utils/string.d.ts.map +1 -0
  932. package/dist/utils/template-resolver.d.ts +12 -0
  933. package/dist/utils/template-resolver.d.ts.map +1 -0
  934. package/dist/utils/toast.d.ts +25 -0
  935. package/dist/utils/toast.d.ts.map +1 -0
  936. package/dist/utils/transform-number.d.ts +108 -0
  937. package/dist/utils/transform-number.d.ts.map +1 -0
  938. package/dist/utils/url.d.ts +198 -0
  939. package/dist/utils/url.d.ts.map +1 -0
  940. package/package.json +120 -63
  941. package/dist/chunk-2FYNRDXR.js.map +0 -1
  942. package/dist/chunk-77KIJLPP.js +0 -37
  943. package/dist/chunk-A2Z7NVGL.js.map +0 -1
  944. package/dist/chunk-BV32OJ2A.js.map +0 -1
  945. package/dist/chunk-DDY7TLUI.js.map +0 -1
  946. package/dist/chunk-HO2GKTWJ.js.map +0 -1
  947. package/dist/chunk-IZOIO7PA.js.map +0 -1
  948. package/dist/chunk-JDTC2SBY.js.map +0 -1
  949. package/dist/chunk-KTCWPGON.js.map +0 -1
  950. package/dist/chunk-MEFT6XPH.js.map +0 -1
  951. package/dist/chunk-SNKGGHBT.js.map +0 -1
  952. package/dist/chunk-VAAIHNWQ.js.map +0 -1
  953. package/dist/chunk-XQXGE2PW.js +0 -16793
  954. package/dist/chunk-XQXGE2PW.js.map +0 -1
  955. package/dist/chunk-XWL6J6IO.js.map +0 -1
  956. package/dist/chunk-XXP3ZGU6.js.map +0 -1
  957. package/dist/chunk-YJMAQL3S.js.map +0 -1
  958. package/dist/index-nmJ8Muwg.d.ts +0 -2368
  959. package/dist/settings-CAC0qFjS.d.ts +0 -455
  960. package/dist/text-transform-D6MzzF7V.d.ts +0 -165
  961. package/dist/use-timeout-D7U3EAtH.d.ts +0 -808
package/README.md CHANGED
@@ -39,6 +39,154 @@ function App() {
39
39
  }
40
40
  ```
41
41
 
42
+ ## Research documents
43
+
44
+ `@omnitron-dev/prism/components/research` adds a source-preserving Markdown → typed document → React path. Import `@omnitron-dev/prism/components/research/styles.css` once. It supports GFM, stable Unicode heading anchors, admonitions, tabs, KaTeX and strict Mermaid diagrams. `parseResearchMarkdown(source, documentId)` returns the document tree, heading outline and diagnostics; node attributes retain source positions.
45
+
46
+ ```tsx
47
+ import { ResearchDocument, defineResearchWidget } from '@omnitron-dev/prism/components/research';
48
+ import '@omnitron-dev/prism/components/research/styles.css';
49
+ import { z } from 'zod';
50
+
51
+ const props = z.object({ value: z.number().finite() }).strict();
52
+ const widgets = {
53
+ quantity: defineResearchWidget(
54
+ 1,
55
+ (input) => props.parse(input),
56
+ ({ value }) => <output aria-label="Quantity">{value}</output>
57
+ ),
58
+ };
59
+ <ResearchDocument source={markdown} documentId="paper-overview" widgets={widgets} contents />;
60
+ ```
61
+
62
+ Use `$...$` / `$$...$$` for math, a `mermaid` fence for diagrams, and a `prism` fence containing `{"type":"quantity","version":1,"props":{"value":3}}` for a registered widget. `:::note`, `:::warning`, and `:::tabs` with nested `:::tab{label="..."}` use directive syntax. Custom widgets are ordinary host-owned React components with explicit versioned prop validation. The source cannot import JavaScript, register components or grant access. Registries belong to each document, not to process-wide state. `TipTapRenderer` also exposes `nodeRenderers` and `inheritRegisteredNodes`; existing global registrations remain supported by default, while `ResearchDocument` disables inheritance.
63
+
64
+ Raw HTML and unsupported constructs remain inert with source diagnostics. Unsupported diagram engines retain their source; Pintora is not interpreted as Mermaid. TeX runs with trust disabled and expansion/size limits. Mermaid source cannot change renderer configuration; rendered SVG is sanitized and displayed as an isolated SVG image, preserving the layout styles without inserting document-controlled CSS into the page. Active elements and links are removed; the browser image boundary disables scripting and external resources. Theme changes are serialized. Source/AST/block/edge limits bound accepted input, **not execution time**: Mermaid runs on the browser main thread. Host-owned widgets must independently obey the host's accessibility, resource, network and permission policies. This renderer provides presentation, not proof checking or Noesis semantics. The host owns immutable revision identity, digest verification, authorization and publication. Unknown or failing blocks preserve source rather than masquerading as successful verification.
65
+
42
66
  ## License
43
67
 
44
68
  MIT
69
+
70
+ ### Theme-native UI primitives
71
+
72
+ `@omnitron-dev/prism/ui` is a separately built, tree-shakeable entry for MUI
73
+ composition primitives (`Button`, `TextField`, `Tabs`, `Drawer`, `Typography`,
74
+ `ListItemButton`, etc.). It preserves upstream props, slots and keyboard semantics;
75
+ it does not introduce a second set of controls. Use these primitives alongside
76
+ Prism's research editor and knowledge graph under the **same** theme.
77
+
78
+ ```tsx
79
+ import { PrismThemeProvider, Button, TextField } from '@omnitron-dev/prism/ui';
80
+ import { createPrismTheme } from '@omnitron-dev/prism/theme';
81
+ const theme = createPrismTheme({ mode: 'light' });
82
+ <PrismThemeProvider theme={theme}>
83
+ <TextField label="Title" size="small" />
84
+ <Button variant="contained">Save</Button>
85
+ </PrismThemeProvider>;
86
+ ```
87
+
88
+ The lightweight provider is appropriate for applications which already own their
89
+ appearance preferences. `PrismProvider` supplies the larger settings/localization
90
+ stack. Do not apply global `button`, `input` or `:focus-visible` appearance rules
91
+ to either provider's controls: configure state styles through the shared theme.
92
+ Keep a visible keyboard-focus indication when integrating legacy stylesheets.
93
+
94
+ `ResearchDocument` also accepts `sourceProfile="docusaurus"` for explicit
95
+ `{#heading-id}` anchors and namespaced local fragment links. The default research
96
+ profile leaves that syntax literal. This is an inert rendering profile, not an MDX
97
+ runtime or a Docusaurus configuration executor. Corpus routes and semantic metadata
98
+ are supplied by the host's source adapter; Prism does not infer knowledge status.
99
+
100
+ ## Corpus navigation
101
+
102
+ `@omnitron-dev/prism/components/doc-layout` exposes `DocSidebar`, `DocLayout`
103
+ and `DocSectionNav` without the full component barrel. Sidebar items carry
104
+ stable IDs, labels, optional native hrefs and children. Native hrefs preserve
105
+ modified-click and new-tab navigation; `onItemClick` may route ordinary clicks
106
+ through the host router. Categories announce expansion and remove collapsed
107
+ children from keyboard navigation. No source-format or authorization semantics
108
+ belong in these presentation components.
109
+
110
+ ### Application icon families
111
+
112
+ Wrap the application (including its theme provider) in `PrismIconProvider` from
113
+ `@omnitron-dev/prism/icons`. Supply components accepting `SvgIconProps`, forwarding
114
+ an SVG ref and retaining MUI's decorative/accessibly labelled behaviour. A partial
115
+ set overrides selected slots; a complete `Record<PrismIconName, PrismIconComponent>`
116
+ provides compile-time coverage. `prismIconNames` enumerates the public slots.
117
+
118
+ The same context reaches layout controls, search, scientific and rich-text editors,
119
+ graph controls and native MUI slots through portals. Nested providers inherit the
120
+ parent set. Unconfigured slots retain bundled artwork; applications own and license
121
+ their supplied assets. No network icon lookup or DOM replacement is performed.
122
+ Local MUI `slots`, `IconComponent` and `icon` props still take precedence.
123
+
124
+ ```tsx
125
+ import { PrismIconProvider, type PrismIconSet } from '@omnitron-dev/prism/icons';
126
+ const icons = { search: ApplicationSearchIcon } satisfies PrismIconSet;
127
+ <PrismIconProvider icons={icons}>
128
+ <PrismThemeProvider theme={theme}>{children}</PrismThemeProvider>
129
+ </PrismIconProvider>;
130
+ ```
131
+
132
+ ### Scrollbar visibility
133
+
134
+ Prism's baseline and `Scrollbar` share native, theme-aware scrollbars. On a fine
135
+ pointer they reveal on container hover or `focus-within`, and become transparent
136
+ when idle. Thumb visibility changes neither overflow nor scrollport dimensions.
137
+ Touch input and forced-colors mode retain visible native controls. No mouse
138
+ listener, overlay, delayed timer or scroll-position state is introduced.
139
+
140
+ Set `<Scrollbar autoHide={false}>` for a persistent thumb, or use
141
+ `mixins.scrollbarStyles(theme, { autoHide: false })` for a custom scrollport.
142
+ `hideScrollbar` remains the explicit fully-hidden option.
143
+
144
+
145
+ ### Mode-aware application palettes
146
+
147
+ `PrismProvider.themeOverrides` accepts a static object or a function receiving
148
+ `{ mode: 'light' | 'dark' }`. The provider resolves the operating-system setting
149
+ before calling this function, so an application does not need a second theme
150
+ store or a synchronisation effect. Keep the callback stable when possible.
151
+
152
+ ```tsx
153
+ const appTheme = ({ mode }: PrismThemeOverrideContext) => ({
154
+ palette: {
155
+ primary: { main: mode === 'dark' ? '#C9B2FF' : '#7446A6' },
156
+ background: { paper: mode === 'dark' ? '#241E2C' : '#FFFCF8' },
157
+ },
158
+ });
159
+
160
+ <PrismProvider themeOverrides={appTheme}>{children}</PrismProvider>
161
+ ```
162
+
163
+ Import `PrismProvider` and the `PrismThemeOverrideContext` type from
164
+ `@omnitron-dev/prism/core`. The callback is evaluated again when the resolved
165
+ mode changes; existing object overrides retain their behavior.
166
+
167
+
168
+ Palette overrides replace dependent tones and channels together: changing `main`
169
+ rebuilds its tonal family; changing an individual colour rebuilds only that
170
+ colour's channel. Explicit shades and channel expressions retain precedence.
171
+ This includes Prism's `lighter`/`darker` and `text.disabledChannel` extensions.
172
+ Opaque static colours receive the higher-contrast black/white `contrastText`
173
+ when none is supplied. Authored contrast colours remain the application's
174
+ responsibility.
175
+
176
+ For runtime CSS colours (`var(...)`, `oklch(...)`, wide-gamut colours), use
177
+ `themeOverrides={{ cssVariables: { nativeColor: true }, palette: ... }}`. MUI resolves tones and
178
+ contrast in the browser; Prism channels use relative RGB expressions instead
179
+ of guessed numeric values. This requires browser support for CSS relative
180
+ colours and MUI native colour mode. Without native colour mode, an unresolved
181
+ `main` requires explicit `light`, `dark` and `contrastText`; Prism reports this
182
+ contract before MUI's JavaScript colour parser runs. Static presets and
183
+ explicit channel overrides remain supported.
184
+
185
+
186
+ ### Compact navigation identity
187
+
188
+ `DashboardLayout` and `Sidenav` accept `compactLogo` for the collapsed or mini
189
+ sidebar. Pass a compact symbol that fits beside the collapse control; the full
190
+ `logo` remains visible in expanded and mobile navigation. Omitting the prop
191
+ preserves the existing logo behavior. The sidebar control stays centred on its
192
+ boundary in either text direction, including enlarged accessible hit targets.
@@ -1,157 +1,13 @@
1
- import { PropsWithChildren, ReactNode } from 'react';
2
-
3
1
  /**
4
- * Vision Mode Accessibility System
2
+ * Prism Accessibility Module
5
3
  *
6
- * Simulates color vision deficiencies to help designers and developers
7
- * test their applications for accessibility. Uses SVG color matrix filters
8
- * applied globally to simulate how users with different types of color
9
- * blindness perceive content.
4
+ * Tools and utilities for building accessible applications.
10
5
  *
11
- * Vision Deficiency Types:
12
- * - Protanopia: Red-blind (affects ~1% of males)
13
- * - Deuteranopia: Green-blind (affects ~1% of males)
14
- * - Tritanopia: Blue-blind (rare, affects <0.01% of population)
15
- * - Achromatopsia: Complete color blindness (grayscale)
6
+ * Features:
7
+ * - Vision Mode: Color blindness simulation for testing
8
+ * - More accessibility features coming soon
16
9
  *
17
10
  * @module @omnitron-dev/prism/accessibility
18
11
  */
19
-
20
- /**
21
- * Available vision modes for color blindness simulation.
22
- */
23
- type VisionMode = 'normal' | 'protanopia' | 'deuteranopia' | 'tritanopia' | 'achromatopsia';
24
- /**
25
- * Vision mode metadata for UI display.
26
- */
27
- interface VisionModeOption {
28
- /** Mode identifier */
29
- value: VisionMode;
30
- /** Human-readable label */
31
- label: string;
32
- /** Description of the vision deficiency */
33
- description: string;
34
- /** Percentage of population affected (for educational purposes) */
35
- prevalence?: string;
36
- }
37
- /**
38
- * Vision mode context value.
39
- */
40
- interface VisionModeContextValue {
41
- /** Current vision mode */
42
- mode: VisionMode;
43
- /** Set the vision mode */
44
- setMode: (mode: VisionMode) => void;
45
- /** Toggle between normal and a specific mode */
46
- toggle: (mode?: VisionMode) => void;
47
- /** Reset to normal vision */
48
- reset: () => void;
49
- /** Whether vision filters are active */
50
- isFiltered: boolean;
51
- }
52
- /**
53
- * Available vision mode options with descriptions.
54
- */
55
- declare const VISION_MODE_OPTIONS: VisionModeOption[];
56
- /**
57
- * Props for VisionModeProvider.
58
- */
59
- interface VisionModeProviderProps extends PropsWithChildren {
60
- /** Initial vision mode (default: 'normal' or from localStorage) */
61
- defaultMode?: VisionMode;
62
- /** Storage key for persistence (default: 'prism-vision-mode') */
63
- storageKey?: string;
64
- /** Disable persistence to localStorage */
65
- disablePersistence?: boolean;
66
- /** CSS selector attribute name (default: 'data-vision') */
67
- attributeName?: string;
68
- }
69
- /**
70
- * VisionModeProvider - Provides vision mode context and renders filters.
71
- *
72
- * @example
73
- * ```tsx
74
- * // In your app root
75
- * import { VisionModeProvider } from '@omnitron-dev/prism/accessibility';
76
- *
77
- * function App() {
78
- * return (
79
- * <VisionModeProvider>
80
- * <YourApp />
81
- * </VisionModeProvider>
82
- * );
83
- * }
84
- *
85
- * // In a component
86
- * import { useVisionMode, VISION_MODE_OPTIONS } from '@omnitron-dev/prism/accessibility';
87
- *
88
- * function AccessibilityPanel() {
89
- * const { mode, setMode } = useVisionMode();
90
- *
91
- * return (
92
- * <select value={mode} onChange={(e) => setMode(e.target.value as VisionMode)}>
93
- * {VISION_MODE_OPTIONS.map((option) => (
94
- * <option key={option.value} value={option.value}>
95
- * {option.label}
96
- * </option>
97
- * ))}
98
- * </select>
99
- * );
100
- * }
101
- * ```
102
- */
103
- declare function VisionModeProvider({ children, defaultMode, storageKey, disablePersistence, attributeName, }: VisionModeProviderProps): ReactNode;
104
- /**
105
- * useVisionMode - Hook to access vision mode context.
106
- *
107
- * @throws Error if used outside of VisionModeProvider
108
- *
109
- * @example
110
- * ```tsx
111
- * function AccessibilityToggle() {
112
- * const { mode, setMode, isFiltered, reset } = useVisionMode();
113
- *
114
- * return (
115
- * <div>
116
- * <p>Current mode: {mode}</p>
117
- * <button onClick={() => setMode('protanopia')}>
118
- * Simulate Protanopia
119
- * </button>
120
- * {isFiltered && (
121
- * <button onClick={reset}>Reset to Normal</button>
122
- * )}
123
- * </div>
124
- * );
125
- * }
126
- * ```
127
- */
128
- declare function useVisionMode(): VisionModeContextValue;
129
- /**
130
- * Generate CSS styles for vision mode filters.
131
- * Use this in your theme's CssBaseline or global styles.
132
- *
133
- * @param attributeName - The data attribute name (default: 'data-vision')
134
- * @returns CSS styles object for MUI CssBaseline styleOverrides
135
- *
136
- * @example
137
- * ```tsx
138
- * // In your theme configuration
139
- * import { getVisionModeStyles } from '@omnitron-dev/prism/accessibility';
140
- *
141
- * const theme = createTheme({
142
- * components: {
143
- * MuiCssBaseline: {
144
- * styleOverrides: (theme) => ({
145
- * ...getVisionModeStyles(),
146
- * // ... other styles
147
- * }),
148
- * },
149
- * },
150
- * });
151
- * ```
152
- */
153
- declare function getVisionModeStyles(attributeName?: string): Record<string, {
154
- filter: string;
155
- }>;
156
-
157
- export { VISION_MODE_OPTIONS, type VisionMode, type VisionModeContextValue, type VisionModeOption, VisionModeProvider, type VisionModeProviderProps, getVisionModeStyles, useVisionMode };
12
+ export { VisionModeProvider, useVisionMode, getVisionModeStyles, VISION_MODE_OPTIONS, type VisionMode, type VisionModeOption, type VisionModeContextValue, type VisionModeProviderProps, } from './vision-mode.js';
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/accessibility/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAEL,kBAAkB,EAElB,aAAa,EAEb,mBAAmB,EAEnB,mBAAmB,EAEnB,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,GAC7B,MAAM,kBAAkB,CAAC"}
@@ -1,4 +1,3 @@
1
- import '../chunk-77KIJLPP.js';
2
1
  import { createContext, useState, useEffect, useCallback, useContext } from 'react';
3
2
  import { createPortal } from 'react-dom';
4
3
  import { jsxs, jsx } from 'react/jsx-runtime';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/accessibility/vision-mode.tsx"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["'use client';\n\n/**\n * Vision Mode Accessibility System\n *\n * Simulates color vision deficiencies to help designers and developers\n * test their applications for accessibility. Uses SVG color matrix filters\n * applied globally to simulate how users with different types of color\n * blindness perceive content.\n *\n * Vision Deficiency Types:\n * - Protanopia: Red-blind (affects ~1% of males)\n * - Deuteranopia: Green-blind (affects ~1% of males)\n * - Tritanopia: Blue-blind (rare, affects <0.01% of population)\n * - Achromatopsia: Complete color blindness (grayscale)\n *\n * @module @omnitron-dev/prism/accessibility\n */\n\nimport {\n createContext,\n useContext,\n useState,\n useEffect,\n useCallback,\n type PropsWithChildren,\n type ReactNode,\n} from 'react';\nimport { createPortal } from 'react-dom';\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/**\n * Available vision modes for color blindness simulation.\n */\nexport type VisionMode = 'normal' | 'protanopia' | 'deuteranopia' | 'tritanopia' | 'achromatopsia';\n\n/**\n * Vision mode metadata for UI display.\n */\nexport interface VisionModeOption {\n /** Mode identifier */\n value: VisionMode;\n /** Human-readable label */\n label: string;\n /** Description of the vision deficiency */\n description: string;\n /** Percentage of population affected (for educational purposes) */\n prevalence?: string;\n}\n\n/**\n * Vision mode context value.\n */\nexport interface VisionModeContextValue {\n /** Current vision mode */\n mode: VisionMode;\n /** Set the vision mode */\n setMode: (mode: VisionMode) => void;\n /** Toggle between normal and a specific mode */\n toggle: (mode?: VisionMode) => void;\n /** Reset to normal vision */\n reset: () => void;\n /** Whether vision filters are active */\n isFiltered: boolean;\n}\n\n// =============================================================================\n// CONSTANTS\n// =============================================================================\n\nconst STORAGE_KEY = 'prism-vision-mode';\nconst FILTER_CONTAINER_ID = 'prism-vision-filters';\n\n/**\n * Available vision mode options with descriptions.\n */\nexport const VISION_MODE_OPTIONS: VisionModeOption[] = [\n {\n value: 'normal',\n label: 'Normal Vision',\n description: 'Shows all colors normally',\n },\n {\n value: 'protanopia',\n label: 'Protanopia',\n description: 'Difficulty distinguishing red from green (red-blind)',\n prevalence: '~1% of males',\n },\n {\n value: 'deuteranopia',\n label: 'Deuteranopia',\n description: 'Difficulty distinguishing green from red (green-blind)',\n prevalence: '~1% of males',\n },\n {\n value: 'tritanopia',\n label: 'Tritanopia',\n description: 'Difficulty distinguishing blue from yellow (blue-blind)',\n prevalence: '<0.01%',\n },\n {\n value: 'achromatopsia',\n label: 'Achromatopsia',\n description: 'Complete color blindness (grayscale only)',\n prevalence: '~0.003%',\n },\n];\n\n// =============================================================================\n// SVG FILTERS\n// =============================================================================\n\n/**\n * Color matrix values for vision deficiency simulation.\n * These matrices transform colors to simulate how they appear to people\n * with various types of color blindness.\n */\nconst FILTER_MATRICES = {\n // Protanopia: Reduced sensitivity to red light\n protanopia: `\n 0.10889 0.89111 0.00000 0 0\n 0.10889 0.89111 0.00000 0 0\n 0.00447 -0.00447 1.00000 0 0\n 0 0 0 1 0\n `,\n // Deuteranopia: Reduced sensitivity to green light\n deuteranopia: `\n 0.4251 0.6934 -0.1147 0 0\n 0.3417 0.5882 0.0692 0 0\n -0.0105 0.0234 0.9870 0 0\n 0 0 0 1 0\n `,\n // Tritanopia: Reduced sensitivity to blue light\n tritanopia: `\n 0.95 0.05 0 0 0\n 0 0.433 0.567 0 0\n 0 0.475 0.525 0 0\n 0 0 0 1 0\n `,\n // Achromatopsia: Complete color blindness (luminance only)\n achromatopsia: `\n 0.299 0.587 0.114 0 0\n 0.299 0.587 0.114 0 0\n 0.299 0.587 0.114 0 0\n 0 0 0 1 0\n `,\n} as const;\n\n/**\n * SVG filters for vision mode simulation.\n * Rendered as a hidden element and referenced by CSS.\n */\nfunction VisionFilters(): ReactNode {\n return (\n <div\n id={FILTER_CONTAINER_ID}\n style={{\n position: 'absolute',\n width: 0,\n height: 0,\n overflow: 'hidden',\n pointerEvents: 'none',\n }}\n aria-hidden=\"true\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n <defs>\n {Object.entries(FILTER_MATRICES).map(([mode, matrix]) => (\n <filter key={mode} id={`${mode}-filter`}>\n <feColorMatrix type=\"matrix\" in=\"SourceGraphic\" values={matrix} />\n </filter>\n ))}\n </defs>\n </svg>\n </div>\n );\n}\n\n// =============================================================================\n// CONTEXT\n// =============================================================================\n\nconst VisionModeContext = createContext<VisionModeContextValue | null>(null);\n\n// =============================================================================\n// PROVIDER\n// =============================================================================\n\n/**\n * Props for VisionModeProvider.\n */\nexport interface VisionModeProviderProps extends PropsWithChildren {\n /** Initial vision mode (default: 'normal' or from localStorage) */\n defaultMode?: VisionMode;\n /** Storage key for persistence (default: 'prism-vision-mode') */\n storageKey?: string;\n /** Disable persistence to localStorage */\n disablePersistence?: boolean;\n /** CSS selector attribute name (default: 'data-vision') */\n attributeName?: string;\n}\n\n/**\n * VisionModeProvider - Provides vision mode context and renders filters.\n *\n * @example\n * ```tsx\n * // In your app root\n * import { VisionModeProvider } from '@omnitron-dev/prism/accessibility';\n *\n * function App() {\n * return (\n * <VisionModeProvider>\n * <YourApp />\n * </VisionModeProvider>\n * );\n * }\n *\n * // In a component\n * import { useVisionMode, VISION_MODE_OPTIONS } from '@omnitron-dev/prism/accessibility';\n *\n * function AccessibilityPanel() {\n * const { mode, setMode } = useVisionMode();\n *\n * return (\n * <select value={mode} onChange={(e) => setMode(e.target.value as VisionMode)}>\n * {VISION_MODE_OPTIONS.map((option) => (\n * <option key={option.value} value={option.value}>\n * {option.label}\n * </option>\n * ))}\n * </select>\n * );\n * }\n * ```\n */\nexport function VisionModeProvider({\n children,\n defaultMode,\n storageKey = STORAGE_KEY,\n disablePersistence = false,\n attributeName = 'data-vision',\n}: VisionModeProviderProps): ReactNode {\n // Initialize from localStorage or default\n const [mode, setModeState] = useState<VisionMode>(() => {\n if (typeof window === 'undefined') return defaultMode ?? 'normal';\n if (disablePersistence) return defaultMode ?? 'normal';\n\n try {\n const stored = localStorage.getItem(storageKey);\n if (stored) {\n const parsed = JSON.parse(stored) as VisionMode;\n if (VISION_MODE_OPTIONS.some((opt) => opt.value === parsed)) {\n return parsed;\n }\n }\n } catch {\n // Ignore localStorage errors\n }\n return defaultMode ?? 'normal';\n });\n\n const [needsFilters, setNeedsFilters] = useState(false);\n\n // Check if filters need to be rendered\n useEffect(() => {\n if (typeof document !== 'undefined' && !document.getElementById(FILTER_CONTAINER_ID)) {\n setNeedsFilters(true);\n }\n }, []);\n\n // Apply data attribute to document element\n useEffect(() => {\n if (typeof document === 'undefined') return undefined;\n\n if (mode === 'normal') {\n document.documentElement.removeAttribute(attributeName);\n } else {\n document.documentElement.setAttribute(attributeName, mode);\n }\n\n return () => {\n document.documentElement.removeAttribute(attributeName);\n };\n }, [mode, attributeName]);\n\n // Persist to localStorage\n useEffect(() => {\n if (disablePersistence || typeof localStorage === 'undefined') return undefined;\n\n try {\n localStorage.setItem(storageKey, JSON.stringify(mode));\n } catch {\n // Ignore localStorage errors\n }\n return undefined;\n }, [mode, storageKey, disablePersistence]);\n\n // Cross-tab sync via storage event\n useEffect(() => {\n if (disablePersistence || typeof window === 'undefined') return undefined;\n\n const handleStorage = (e: StorageEvent) => {\n if (e.key !== storageKey || !e.newValue) return;\n try {\n const parsed = JSON.parse(e.newValue) as VisionMode;\n if (VISION_MODE_OPTIONS.some((opt) => opt.value === parsed)) {\n setModeState(parsed);\n }\n } catch {\n // Ignore parse errors\n }\n };\n\n window.addEventListener('storage', handleStorage);\n return () => window.removeEventListener('storage', handleStorage);\n }, [storageKey, disablePersistence]);\n\n const setMode = useCallback((newMode: VisionMode) => {\n setModeState(newMode);\n }, []);\n\n const toggle = useCallback((targetMode: VisionMode = 'protanopia') => {\n setModeState((current) => (current === 'normal' ? targetMode : 'normal'));\n }, []);\n\n const reset = useCallback(() => {\n setModeState('normal');\n }, []);\n\n const value: VisionModeContextValue = {\n mode,\n setMode,\n toggle,\n reset,\n isFiltered: mode !== 'normal',\n };\n\n return (\n <VisionModeContext.Provider value={value}>\n {needsFilters && typeof document !== 'undefined' && document.body\n ? createPortal(<VisionFilters />, document.body)\n : null}\n {children}\n </VisionModeContext.Provider>\n );\n}\n\n// =============================================================================\n// HOOK\n// =============================================================================\n\n/**\n * useVisionMode - Hook to access vision mode context.\n *\n * @throws Error if used outside of VisionModeProvider\n *\n * @example\n * ```tsx\n * function AccessibilityToggle() {\n * const { mode, setMode, isFiltered, reset } = useVisionMode();\n *\n * return (\n * <div>\n * <p>Current mode: {mode}</p>\n * <button onClick={() => setMode('protanopia')}>\n * Simulate Protanopia\n * </button>\n * {isFiltered && (\n * <button onClick={reset}>Reset to Normal</button>\n * )}\n * </div>\n * );\n * }\n * ```\n */\nexport function useVisionMode(): VisionModeContextValue {\n const context = useContext(VisionModeContext);\n\n if (!context) {\n throw new Error('useVisionMode must be used within a VisionModeProvider');\n }\n\n return context;\n}\n\n// =============================================================================\n// CSS STYLES HELPER\n// =============================================================================\n\n/**\n * Generate CSS styles for vision mode filters.\n * Use this in your theme's CssBaseline or global styles.\n *\n * @param attributeName - The data attribute name (default: 'data-vision')\n * @returns CSS styles object for MUI CssBaseline styleOverrides\n *\n * @example\n * ```tsx\n * // In your theme configuration\n * import { getVisionModeStyles } from '@omnitron-dev/prism/accessibility';\n *\n * const theme = createTheme({\n * components: {\n * MuiCssBaseline: {\n * styleOverrides: (theme) => ({\n * ...getVisionModeStyles(),\n * // ... other styles\n * }),\n * },\n * },\n * });\n * ```\n */\nexport function getVisionModeStyles(attributeName = 'data-vision'): Record<string, { filter: string }> {\n const modes: Array<Exclude<VisionMode, 'normal'>> = ['protanopia', 'deuteranopia', 'tritanopia', 'achromatopsia'];\n\n return Object.fromEntries(\n modes.map((mode) => [`html[${attributeName}=\"${mode}\"]:not([data-showcase])`, { filter: `url(\"#${mode}-filter\")` }])\n ) as Record<string, { filter: string }>;\n}\n"]}
1
+ {"version":3,"sources":["../../src/accessibility/vision-mode.tsx"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["'use client';\n\n/**\n * Vision Mode Accessibility System\n *\n * Simulates color vision deficiencies to help designers and developers\n * test their applications for accessibility. Uses SVG color matrix filters\n * applied globally to simulate how users with different types of color\n * blindness perceive content.\n *\n * Vision Deficiency Types:\n * - Protanopia: Red-blind (affects ~1% of males)\n * - Deuteranopia: Green-blind (affects ~1% of males)\n * - Tritanopia: Blue-blind (rare, affects <0.01% of population)\n * - Achromatopsia: Complete color blindness (grayscale)\n *\n * @module @omnitron-dev/prism/accessibility\n */\n\nimport {\n createContext,\n useContext,\n useState,\n useEffect,\n useCallback,\n type PropsWithChildren,\n type ReactNode,\n} from 'react';\nimport { createPortal } from 'react-dom';\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/**\n * Available vision modes for color blindness simulation.\n */\nexport type VisionMode = 'normal' | 'protanopia' | 'deuteranopia' | 'tritanopia' | 'achromatopsia';\n\n/**\n * Vision mode metadata for UI display.\n */\nexport interface VisionModeOption {\n /** Mode identifier */\n value: VisionMode;\n /** Human-readable label */\n label: string;\n /** Description of the vision deficiency */\n description: string;\n /** Percentage of population affected (for educational purposes) */\n prevalence?: string;\n}\n\n/**\n * Vision mode context value.\n */\nexport interface VisionModeContextValue {\n /** Current vision mode */\n mode: VisionMode;\n /** Set the vision mode */\n setMode: (mode: VisionMode) => void;\n /** Toggle between normal and a specific mode */\n toggle: (mode?: VisionMode) => void;\n /** Reset to normal vision */\n reset: () => void;\n /** Whether vision filters are active */\n isFiltered: boolean;\n}\n\n// =============================================================================\n// CONSTANTS\n// =============================================================================\n\nconst STORAGE_KEY = 'prism-vision-mode';\nconst FILTER_CONTAINER_ID = 'prism-vision-filters';\n\n/**\n * Available vision mode options with descriptions.\n */\nexport const VISION_MODE_OPTIONS: VisionModeOption[] = [\n {\n value: 'normal',\n label: 'Normal Vision',\n description: 'Shows all colors normally',\n },\n {\n value: 'protanopia',\n label: 'Protanopia',\n description: 'Difficulty distinguishing red from green (red-blind)',\n prevalence: '~1% of males',\n },\n {\n value: 'deuteranopia',\n label: 'Deuteranopia',\n description: 'Difficulty distinguishing green from red (green-blind)',\n prevalence: '~1% of males',\n },\n {\n value: 'tritanopia',\n label: 'Tritanopia',\n description: 'Difficulty distinguishing blue from yellow (blue-blind)',\n prevalence: '<0.01%',\n },\n {\n value: 'achromatopsia',\n label: 'Achromatopsia',\n description: 'Complete color blindness (grayscale only)',\n prevalence: '~0.003%',\n },\n];\n\n// =============================================================================\n// SVG FILTERS\n// =============================================================================\n\n/**\n * Color matrix values for vision deficiency simulation.\n * These matrices transform colors to simulate how they appear to people\n * with various types of color blindness.\n */\nconst FILTER_MATRICES = {\n // Protanopia: Reduced sensitivity to red light\n protanopia: `\n 0.10889 0.89111 0.00000 0 0\n 0.10889 0.89111 0.00000 0 0\n 0.00447 -0.00447 1.00000 0 0\n 0 0 0 1 0\n `,\n // Deuteranopia: Reduced sensitivity to green light\n deuteranopia: `\n 0.4251 0.6934 -0.1147 0 0\n 0.3417 0.5882 0.0692 0 0\n -0.0105 0.0234 0.9870 0 0\n 0 0 0 1 0\n `,\n // Tritanopia: Reduced sensitivity to blue light\n tritanopia: `\n 0.95 0.05 0 0 0\n 0 0.433 0.567 0 0\n 0 0.475 0.525 0 0\n 0 0 0 1 0\n `,\n // Achromatopsia: Complete color blindness (luminance only)\n achromatopsia: `\n 0.299 0.587 0.114 0 0\n 0.299 0.587 0.114 0 0\n 0.299 0.587 0.114 0 0\n 0 0 0 1 0\n `,\n} as const;\n\n/**\n * SVG filters for vision mode simulation.\n * Rendered as a hidden element and referenced by CSS.\n */\nfunction VisionFilters(): ReactNode {\n return (\n <div\n id={FILTER_CONTAINER_ID}\n style={{\n position: 'absolute',\n width: 0,\n height: 0,\n overflow: 'hidden',\n pointerEvents: 'none',\n }}\n aria-hidden=\"true\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n <defs>\n {Object.entries(FILTER_MATRICES).map(([mode, matrix]) => (\n <filter key={mode} id={`${mode}-filter`}>\n <feColorMatrix type=\"matrix\" in=\"SourceGraphic\" values={matrix} />\n </filter>\n ))}\n </defs>\n </svg>\n </div>\n );\n}\n\n// =============================================================================\n// CONTEXT\n// =============================================================================\n\nconst VisionModeContext = createContext<VisionModeContextValue | null>(null);\n\n// =============================================================================\n// PROVIDER\n// =============================================================================\n\n/**\n * Props for VisionModeProvider.\n */\nexport interface VisionModeProviderProps extends PropsWithChildren {\n /** Initial vision mode (default: 'normal' or from localStorage) */\n defaultMode?: VisionMode;\n /** Storage key for persistence (default: 'prism-vision-mode') */\n storageKey?: string;\n /** Disable persistence to localStorage */\n disablePersistence?: boolean;\n /** CSS selector attribute name (default: 'data-vision') */\n attributeName?: string;\n}\n\n/**\n * VisionModeProvider - Provides vision mode context and renders filters.\n *\n * @example\n * ```tsx\n * // In your app root\n * import { VisionModeProvider } from '@omnitron-dev/prism/accessibility';\n *\n * function App() {\n * return (\n * <VisionModeProvider>\n * <YourApp />\n * </VisionModeProvider>\n * );\n * }\n *\n * // In a component\n * import { useVisionMode, VISION_MODE_OPTIONS } from '@omnitron-dev/prism/accessibility';\n *\n * function AccessibilityPanel() {\n * const { mode, setMode } = useVisionMode();\n *\n * return (\n * <select value={mode} onChange={(e) => setMode(e.target.value as VisionMode)}>\n * {VISION_MODE_OPTIONS.map((option) => (\n * <option key={option.value} value={option.value}>\n * {option.label}\n * </option>\n * ))}\n * </select>\n * );\n * }\n * ```\n */\nexport function VisionModeProvider({\n children,\n defaultMode,\n storageKey = STORAGE_KEY,\n disablePersistence = false,\n attributeName = 'data-vision',\n}: VisionModeProviderProps): ReactNode {\n // Initialize from localStorage or default\n const [mode, setModeState] = useState<VisionMode>(() => {\n if (typeof window === 'undefined') return defaultMode ?? 'normal';\n if (disablePersistence) return defaultMode ?? 'normal';\n\n try {\n const stored = localStorage.getItem(storageKey);\n if (stored) {\n const parsed = JSON.parse(stored) as VisionMode;\n if (VISION_MODE_OPTIONS.some((opt) => opt.value === parsed)) {\n return parsed;\n }\n }\n } catch {\n // Ignore localStorage errors\n }\n return defaultMode ?? 'normal';\n });\n\n const [needsFilters, setNeedsFilters] = useState(false);\n\n // Check if filters need to be rendered\n useEffect(() => {\n if (typeof document !== 'undefined' && !document.getElementById(FILTER_CONTAINER_ID)) {\n setNeedsFilters(true);\n }\n }, []);\n\n // Apply data attribute to document element\n useEffect(() => {\n if (typeof document === 'undefined') return undefined;\n\n if (mode === 'normal') {\n document.documentElement.removeAttribute(attributeName);\n } else {\n document.documentElement.setAttribute(attributeName, mode);\n }\n\n return () => {\n document.documentElement.removeAttribute(attributeName);\n };\n }, [mode, attributeName]);\n\n // Persist to localStorage\n useEffect(() => {\n if (disablePersistence || typeof localStorage === 'undefined') return undefined;\n\n try {\n localStorage.setItem(storageKey, JSON.stringify(mode));\n } catch {\n // Ignore localStorage errors\n }\n return undefined;\n }, [mode, storageKey, disablePersistence]);\n\n // Cross-tab sync via storage event\n useEffect(() => {\n if (disablePersistence || typeof window === 'undefined') return undefined;\n\n const handleStorage = (e: StorageEvent) => {\n if (e.key !== storageKey || !e.newValue) return;\n try {\n const parsed = JSON.parse(e.newValue) as VisionMode;\n if (VISION_MODE_OPTIONS.some((opt) => opt.value === parsed)) {\n setModeState(parsed);\n }\n } catch {\n // Ignore parse errors\n }\n };\n\n window.addEventListener('storage', handleStorage);\n return () => window.removeEventListener('storage', handleStorage);\n }, [storageKey, disablePersistence]);\n\n const setMode = useCallback((newMode: VisionMode) => {\n setModeState(newMode);\n }, []);\n\n const toggle = useCallback((targetMode: VisionMode = 'protanopia') => {\n setModeState((current) => (current === 'normal' ? targetMode : 'normal'));\n }, []);\n\n const reset = useCallback(() => {\n setModeState('normal');\n }, []);\n\n const value: VisionModeContextValue = {\n mode,\n setMode,\n toggle,\n reset,\n isFiltered: mode !== 'normal',\n };\n\n return (\n <VisionModeContext.Provider value={value}>\n {needsFilters && typeof document !== 'undefined' && document.body\n ? createPortal(<VisionFilters />, document.body)\n : null}\n {children}\n </VisionModeContext.Provider>\n );\n}\n\n// =============================================================================\n// HOOK\n// =============================================================================\n\n/**\n * useVisionMode - Hook to access vision mode context.\n *\n * @throws Error if used outside of VisionModeProvider\n *\n * @example\n * ```tsx\n * function AccessibilityToggle() {\n * const { mode, setMode, isFiltered, reset } = useVisionMode();\n *\n * return (\n * <div>\n * <p>Current mode: {mode}</p>\n * <button onClick={() => setMode('protanopia')}>\n * Simulate Protanopia\n * </button>\n * {isFiltered && (\n * <button onClick={reset}>Reset to Normal</button>\n * )}\n * </div>\n * );\n * }\n * ```\n */\nexport function useVisionMode(): VisionModeContextValue {\n const context = useContext(VisionModeContext);\n\n if (!context) {\n throw new Error('useVisionMode must be used within a VisionModeProvider');\n }\n\n return context;\n}\n\n// =============================================================================\n// CSS STYLES HELPER\n// =============================================================================\n\n/**\n * Generate CSS styles for vision mode filters.\n * Use this in your theme's CssBaseline or global styles.\n *\n * @param attributeName - The data attribute name (default: 'data-vision')\n * @returns CSS styles object for MUI CssBaseline styleOverrides\n *\n * @example\n * ```tsx\n * // In your theme configuration\n * import { getVisionModeStyles } from '@omnitron-dev/prism/accessibility';\n *\n * const theme = createTheme({\n * components: {\n * MuiCssBaseline: {\n * styleOverrides: (theme) => ({\n * ...getVisionModeStyles(),\n * // ... other styles\n * }),\n * },\n * },\n * });\n * ```\n */\nexport function getVisionModeStyles(attributeName = 'data-vision'): Record<string, { filter: string }> {\n const modes: Array<Exclude<VisionMode, 'normal'>> = ['protanopia', 'deuteranopia', 'tritanopia', 'achromatopsia'];\n\n return Object.fromEntries(\n modes.map((mode) => [`html[${attributeName}=\"${mode}\"]:not([data-showcase])`, { filter: `url(\"#${mode}-filter\")` }])\n ) as Record<string, { filter: string }>;\n}\n"]}
@@ -0,0 +1,154 @@
1
+ /**
2
+ * Vision Mode Accessibility System
3
+ *
4
+ * Simulates color vision deficiencies to help designers and developers
5
+ * test their applications for accessibility. Uses SVG color matrix filters
6
+ * applied globally to simulate how users with different types of color
7
+ * blindness perceive content.
8
+ *
9
+ * Vision Deficiency Types:
10
+ * - Protanopia: Red-blind (affects ~1% of males)
11
+ * - Deuteranopia: Green-blind (affects ~1% of males)
12
+ * - Tritanopia: Blue-blind (rare, affects <0.01% of population)
13
+ * - Achromatopsia: Complete color blindness (grayscale)
14
+ *
15
+ * @module @omnitron-dev/prism/accessibility
16
+ */
17
+ import { type PropsWithChildren, type ReactNode } from 'react';
18
+ /**
19
+ * Available vision modes for color blindness simulation.
20
+ */
21
+ export type VisionMode = 'normal' | 'protanopia' | 'deuteranopia' | 'tritanopia' | 'achromatopsia';
22
+ /**
23
+ * Vision mode metadata for UI display.
24
+ */
25
+ export interface VisionModeOption {
26
+ /** Mode identifier */
27
+ value: VisionMode;
28
+ /** Human-readable label */
29
+ label: string;
30
+ /** Description of the vision deficiency */
31
+ description: string;
32
+ /** Percentage of population affected (for educational purposes) */
33
+ prevalence?: string;
34
+ }
35
+ /**
36
+ * Vision mode context value.
37
+ */
38
+ export interface VisionModeContextValue {
39
+ /** Current vision mode */
40
+ mode: VisionMode;
41
+ /** Set the vision mode */
42
+ setMode: (mode: VisionMode) => void;
43
+ /** Toggle between normal and a specific mode */
44
+ toggle: (mode?: VisionMode) => void;
45
+ /** Reset to normal vision */
46
+ reset: () => void;
47
+ /** Whether vision filters are active */
48
+ isFiltered: boolean;
49
+ }
50
+ /**
51
+ * Available vision mode options with descriptions.
52
+ */
53
+ export declare const VISION_MODE_OPTIONS: VisionModeOption[];
54
+ /**
55
+ * Props for VisionModeProvider.
56
+ */
57
+ export interface VisionModeProviderProps extends PropsWithChildren {
58
+ /** Initial vision mode (default: 'normal' or from localStorage) */
59
+ defaultMode?: VisionMode;
60
+ /** Storage key for persistence (default: 'prism-vision-mode') */
61
+ storageKey?: string;
62
+ /** Disable persistence to localStorage */
63
+ disablePersistence?: boolean;
64
+ /** CSS selector attribute name (default: 'data-vision') */
65
+ attributeName?: string;
66
+ }
67
+ /**
68
+ * VisionModeProvider - Provides vision mode context and renders filters.
69
+ *
70
+ * @example
71
+ * ```tsx
72
+ * // In your app root
73
+ * import { VisionModeProvider } from '@omnitron-dev/prism/accessibility';
74
+ *
75
+ * function App() {
76
+ * return (
77
+ * <VisionModeProvider>
78
+ * <YourApp />
79
+ * </VisionModeProvider>
80
+ * );
81
+ * }
82
+ *
83
+ * // In a component
84
+ * import { useVisionMode, VISION_MODE_OPTIONS } from '@omnitron-dev/prism/accessibility';
85
+ *
86
+ * function AccessibilityPanel() {
87
+ * const { mode, setMode } = useVisionMode();
88
+ *
89
+ * return (
90
+ * <select value={mode} onChange={(e) => setMode(e.target.value as VisionMode)}>
91
+ * {VISION_MODE_OPTIONS.map((option) => (
92
+ * <option key={option.value} value={option.value}>
93
+ * {option.label}
94
+ * </option>
95
+ * ))}
96
+ * </select>
97
+ * );
98
+ * }
99
+ * ```
100
+ */
101
+ export declare function VisionModeProvider({ children, defaultMode, storageKey, disablePersistence, attributeName, }: VisionModeProviderProps): ReactNode;
102
+ /**
103
+ * useVisionMode - Hook to access vision mode context.
104
+ *
105
+ * @throws Error if used outside of VisionModeProvider
106
+ *
107
+ * @example
108
+ * ```tsx
109
+ * function AccessibilityToggle() {
110
+ * const { mode, setMode, isFiltered, reset } = useVisionMode();
111
+ *
112
+ * return (
113
+ * <div>
114
+ * <p>Current mode: {mode}</p>
115
+ * <button onClick={() => setMode('protanopia')}>
116
+ * Simulate Protanopia
117
+ * </button>
118
+ * {isFiltered && (
119
+ * <button onClick={reset}>Reset to Normal</button>
120
+ * )}
121
+ * </div>
122
+ * );
123
+ * }
124
+ * ```
125
+ */
126
+ export declare function useVisionMode(): VisionModeContextValue;
127
+ /**
128
+ * Generate CSS styles for vision mode filters.
129
+ * Use this in your theme's CssBaseline or global styles.
130
+ *
131
+ * @param attributeName - The data attribute name (default: 'data-vision')
132
+ * @returns CSS styles object for MUI CssBaseline styleOverrides
133
+ *
134
+ * @example
135
+ * ```tsx
136
+ * // In your theme configuration
137
+ * import { getVisionModeStyles } from '@omnitron-dev/prism/accessibility';
138
+ *
139
+ * const theme = createTheme({
140
+ * components: {
141
+ * MuiCssBaseline: {
142
+ * styleOverrides: (theme) => ({
143
+ * ...getVisionModeStyles(),
144
+ * // ... other styles
145
+ * }),
146
+ * },
147
+ * },
148
+ * });
149
+ * ```
150
+ */
151
+ export declare function getVisionModeStyles(attributeName?: string): Record<string, {
152
+ filter: string;
153
+ }>;
154
+ //# sourceMappingURL=vision-mode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vision-mode.d.ts","sourceRoot":"","sources":["../../src/accessibility/vision-mode.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAML,KAAK,iBAAiB,EACtB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAOf;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,YAAY,GAAG,cAAc,GAAG,YAAY,GAAG,eAAe,CAAC;AAEnG;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,sBAAsB;IACtB,KAAK,EAAE,UAAU,CAAC;IAClB,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,2CAA2C;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,0BAA0B;IAC1B,IAAI,EAAE,UAAU,CAAC;IACjB,0BAA0B;IAC1B,OAAO,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;IACpC,gDAAgD;IAChD,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IACpC,6BAA6B;IAC7B,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,wCAAwC;IACxC,UAAU,EAAE,OAAO,CAAC;CACrB;AASD;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,gBAAgB,EA8BjD,CAAC;AAkFF;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,iBAAiB;IAChE,mEAAmE;IACnE,WAAW,CAAC,EAAE,UAAU,CAAC;IACzB,iEAAiE;IACjE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,2DAA2D;IAC3D,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,QAAQ,EACR,WAAW,EACX,UAAwB,EACxB,kBAA0B,EAC1B,aAA6B,GAC9B,EAAE,uBAAuB,GAAG,SAAS,CAwGrC;AAMD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,aAAa,IAAI,sBAAsB,CAQtD;AAMD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,mBAAmB,CAAC,aAAa,SAAgB,GAAG,MAAM,CAAC,MAAM,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAMrG"}