@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.
- package/README.md +148 -0
- package/dist/accessibility/index.d.ts +7 -151
- package/dist/accessibility/index.d.ts.map +1 -0
- package/dist/accessibility/index.js +0 -1
- package/dist/accessibility/index.js.map +1 -1
- package/dist/accessibility/vision-mode.d.ts +154 -0
- package/dist/accessibility/vision-mode.d.ts.map +1 -0
- package/dist/blocks/auth-block/auth-block.d.ts +107 -0
- package/dist/blocks/auth-block/auth-block.d.ts.map +1 -0
- package/dist/blocks/auth-block/guards.d.ts +262 -0
- package/dist/blocks/auth-block/guards.d.ts.map +1 -0
- package/dist/blocks/auth-block/index.d.ts +13 -0
- package/dist/blocks/auth-block/index.d.ts.map +1 -0
- package/dist/blocks/auth-block/types.d.ts +232 -0
- package/dist/blocks/auth-block/types.d.ts.map +1 -0
- package/dist/blocks/dashboard-block/dashboard-block.d.ts +53 -0
- package/dist/blocks/dashboard-block/dashboard-block.d.ts.map +1 -0
- package/dist/blocks/dashboard-block/index.d.ts +12 -0
- package/dist/blocks/dashboard-block/index.d.ts.map +1 -0
- package/dist/blocks/dashboard-block/types.d.ts +182 -0
- package/dist/blocks/dashboard-block/types.d.ts.map +1 -0
- package/dist/blocks/dashboard-block/use-dashboard-block.d.ts +95 -0
- package/dist/blocks/dashboard-block/use-dashboard-block.d.ts.map +1 -0
- package/dist/blocks/data-grid-block/data-grid-block.d.ts +81 -0
- package/dist/blocks/data-grid-block/data-grid-block.d.ts.map +1 -0
- package/dist/blocks/data-grid-block/index.d.ts +11 -0
- package/dist/blocks/data-grid-block/index.d.ts.map +1 -0
- package/dist/blocks/data-grid-block/types.d.ts +304 -0
- package/dist/blocks/data-grid-block/types.d.ts.map +1 -0
- package/dist/blocks/index.d.ts +10 -1235
- package/dist/blocks/index.d.ts.map +1 -0
- package/dist/blocks/index.js +141 -42
- package/dist/blocks/index.js.map +1 -1
- package/dist/{chunk-IZOIO7PA.js → chunk-472SOF76.js} +31 -22
- package/dist/chunk-472SOF76.js.map +1 -0
- package/dist/chunk-4Z5DE5GK.js +1579 -0
- package/dist/chunk-4Z5DE5GK.js.map +1 -0
- package/dist/chunk-52PQL67Q.js +559 -0
- package/dist/chunk-52PQL67Q.js.map +1 -0
- package/dist/chunk-75FQ5IW3.js +590 -0
- package/dist/chunk-75FQ5IW3.js.map +1 -0
- package/dist/{chunk-VAAIHNWQ.js → chunk-7G5D5PTC.js} +4 -3
- package/dist/chunk-7G5D5PTC.js.map +1 -0
- package/dist/{chunk-JDTC2SBY.js → chunk-AD4W7HYC.js} +2 -2
- package/dist/chunk-AD4W7HYC.js.map +1 -0
- package/dist/{chunk-SNKGGHBT.js → chunk-ADG4HZEP.js} +3 -3
- package/dist/chunk-ADG4HZEP.js.map +1 -0
- package/dist/{chunk-JNU4QHJK.js → chunk-AYYFMTMI.js} +5 -4
- package/dist/{chunk-JNU4QHJK.js.map → chunk-AYYFMTMI.js.map} +1 -1
- package/dist/chunk-BJE2AKD4.js +105 -0
- package/dist/chunk-BJE2AKD4.js.map +1 -0
- package/dist/{chunk-HO2GKTWJ.js → chunk-BRDWQVRT.js} +2 -2
- package/dist/chunk-BRDWQVRT.js.map +1 -0
- package/dist/{chunk-2FYNRDXR.js → chunk-DRFNMZLG.js} +2 -2
- package/dist/chunk-DRFNMZLG.js.map +1 -0
- package/dist/chunk-FF5RF32O.js +248 -0
- package/dist/chunk-FF5RF32O.js.map +1 -0
- package/dist/{chunk-KTCWPGON.js → chunk-GMIE6III.js} +561 -111
- package/dist/chunk-GMIE6III.js.map +1 -0
- package/dist/{chunk-BV32OJ2A.js → chunk-GUFHFEPZ.js} +2 -2
- package/dist/chunk-GUFHFEPZ.js.map +1 -0
- package/dist/chunk-GUGTDURV.js +826 -0
- package/dist/chunk-GUGTDURV.js.map +1 -0
- package/dist/chunk-HOXFSQUV.js +573 -0
- package/dist/chunk-HOXFSQUV.js.map +1 -0
- package/dist/chunk-JSQTYDPG.js +3 -0
- package/dist/{chunk-77KIJLPP.js.map → chunk-JSQTYDPG.js.map} +1 -1
- package/dist/{chunk-MEFT6XPH.js → chunk-KQ67XB6T.js} +351 -704
- package/dist/chunk-KQ67XB6T.js.map +1 -0
- package/dist/{chunk-YJMAQL3S.js → chunk-LOY2NPCO.js} +129 -635
- package/dist/chunk-LOY2NPCO.js.map +1 -0
- package/dist/{chunk-A2Z7NVGL.js → chunk-LSPFFEJT.js} +1026 -2128
- package/dist/chunk-LSPFFEJT.js.map +1 -0
- package/dist/{chunk-XXP3ZGU6.js → chunk-OKTLA23Q.js} +22 -14
- package/dist/chunk-OKTLA23Q.js.map +1 -0
- package/dist/chunk-PFT2BNYO.js +191 -0
- package/dist/chunk-PFT2BNYO.js.map +1 -0
- package/dist/chunk-PGHEP4JD.js +106 -0
- package/dist/chunk-PGHEP4JD.js.map +1 -0
- package/dist/chunk-PXXPLHIY.js +74 -0
- package/dist/chunk-PXXPLHIY.js.map +1 -0
- package/dist/chunk-SNZK5X6F.js +594 -0
- package/dist/chunk-SNZK5X6F.js.map +1 -0
- package/dist/chunk-SU3LVQ7N.js +518 -0
- package/dist/chunk-SU3LVQ7N.js.map +1 -0
- package/dist/{chunk-DDY7TLUI.js → chunk-XIXSSI3B.js} +28 -2
- package/dist/chunk-XIXSSI3B.js.map +1 -0
- package/dist/chunk-YHE7HXSG.js +206 -0
- package/dist/chunk-YHE7HXSG.js.map +1 -0
- package/dist/{chunk-XWL6J6IO.js → chunk-YSIG2XYH.js} +2 -2
- package/dist/chunk-YSIG2XYH.js.map +1 -0
- package/dist/cli/commands/add.d.ts +22 -0
- package/dist/cli/commands/add.d.ts.map +1 -0
- package/dist/cli/commands/diff.d.ts +13 -0
- package/dist/cli/commands/diff.d.ts.map +1 -0
- package/dist/cli/commands/doctor.d.ts +13 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/init.d.ts +13 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/list.d.ts +13 -0
- package/dist/cli/commands/list.d.ts.map +1 -0
- package/dist/cli/commands/remove.d.ts +13 -0
- package/dist/cli/commands/remove.d.ts.map +1 -0
- package/dist/cli/commands/update.d.ts +13 -0
- package/dist/cli/commands/update.d.ts.map +1 -0
- package/dist/cli/config.d.ts +73 -0
- package/dist/cli/config.d.ts.map +1 -0
- package/dist/cli/constants.d.ts +60 -0
- package/dist/cli/constants.d.ts.map +1 -0
- package/dist/cli/index.d.ts +27 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +38 -39
- package/dist/cli/index.js.map +1 -1
- package/dist/components/accordion/accordion.d.ts +149 -0
- package/dist/components/accordion/accordion.d.ts.map +1 -0
- package/dist/components/accordion/index.d.ts +7 -0
- package/dist/components/accordion/index.d.ts.map +1 -0
- package/dist/components/admin-filters/admin-data-table.d.ts +185 -0
- package/dist/components/admin-filters/admin-data-table.d.ts.map +1 -0
- package/dist/components/admin-filters/amount-cell.d.ts +39 -0
- package/dist/components/admin-filters/amount-cell.d.ts.map +1 -0
- package/dist/components/admin-filters/filter-toolbar.d.ts +99 -0
- package/dist/components/admin-filters/filter-toolbar.d.ts.map +1 -0
- package/dist/components/admin-filters/index.d.ts +13 -0
- package/dist/components/admin-filters/index.d.ts.map +1 -0
- package/dist/components/admin-filters/status-chip.d.ts +55 -0
- package/dist/components/admin-filters/status-chip.d.ts.map +1 -0
- package/dist/components/alert/alert.d.ts +159 -0
- package/dist/components/alert/alert.d.ts.map +1 -0
- package/dist/components/alert/index.d.ts +7 -0
- package/dist/components/alert/index.d.ts.map +1 -0
- package/dist/components/animate/animate-border.d.ts +33 -0
- package/dist/components/animate/animate-border.d.ts.map +1 -0
- package/dist/components/animate/index.d.ts +3 -0
- package/dist/components/animate/index.d.ts.map +1 -0
- package/dist/components/animate/motion-lazy.d.ts +5 -0
- package/dist/components/animate/motion-lazy.d.ts.map +1 -0
- package/dist/components/avatar/avatar.d.ts +78 -0
- package/dist/components/avatar/avatar.d.ts.map +1 -0
- package/dist/components/avatar/index.d.ts +7 -0
- package/dist/components/avatar/index.d.ts.map +1 -0
- package/dist/components/badge/badge.d.ts +102 -0
- package/dist/components/badge/badge.d.ts.map +1 -0
- package/dist/components/badge/index.d.ts +7 -0
- package/dist/components/badge/index.d.ts.map +1 -0
- package/dist/components/breadcrumbs/breadcrumbs.d.ts +100 -0
- package/dist/components/breadcrumbs/breadcrumbs.d.ts.map +1 -0
- package/dist/components/breadcrumbs/index.d.ts +7 -0
- package/dist/components/breadcrumbs/index.d.ts.map +1 -0
- package/dist/components/card/card.d.ts +127 -0
- package/dist/components/card/card.d.ts.map +1 -0
- package/dist/components/card/index.d.ts +7 -0
- package/dist/components/card/index.d.ts.map +1 -0
- package/dist/components/carousel/carousel.d.ts +35 -0
- package/dist/components/carousel/carousel.d.ts.map +1 -0
- package/dist/components/carousel/classes.d.ts +35 -0
- package/dist/components/carousel/classes.d.ts.map +1 -0
- package/dist/components/carousel/index.d.ts +10 -0
- package/dist/components/carousel/index.d.ts.map +1 -0
- package/dist/components/carousel/types.d.ts +167 -0
- package/dist/components/carousel/types.d.ts.map +1 -0
- package/dist/components/carousel/use-carousel.d.ts +51 -0
- package/dist/components/carousel/use-carousel.d.ts.map +1 -0
- package/dist/components/changelog/changelog-entry.d.ts +10 -0
- package/dist/components/changelog/changelog-entry.d.ts.map +1 -0
- package/dist/components/changelog/changelog-timeline.d.ts +9 -0
- package/dist/components/changelog/changelog-timeline.d.ts.map +1 -0
- package/dist/components/changelog/index.d.ts +3 -0
- package/dist/components/changelog/index.d.ts.map +1 -0
- package/dist/components/chart/chart.d.ts +39 -0
- package/dist/components/chart/chart.d.ts.map +1 -0
- package/dist/components/chart/classes.d.ts +24 -0
- package/dist/components/chart/classes.d.ts.map +1 -0
- package/dist/components/chart/components/chart-legends.d.ts +24 -0
- package/dist/components/chart/components/chart-legends.d.ts.map +1 -0
- package/dist/components/chart/components/chart-loading.d.ts +21 -0
- package/dist/components/chart/components/chart-loading.d.ts.map +1 -0
- package/dist/components/chart/components/index.d.ts +8 -0
- package/dist/components/chart/components/index.d.ts.map +1 -0
- package/dist/components/chart/index.d.ts +14 -0
- package/dist/components/chart/index.d.ts.map +1 -0
- package/dist/components/chart/types.d.ts +264 -0
- package/dist/components/chart/types.d.ts.map +1 -0
- package/dist/components/chart/use-chart.d.ts +34 -0
- package/dist/components/chart/use-chart.d.ts.map +1 -0
- package/dist/components/command-palette/command-palette.d.ts +73 -0
- package/dist/components/command-palette/command-palette.d.ts.map +1 -0
- package/dist/components/command-palette/index.d.ts +7 -0
- package/dist/components/command-palette/index.d.ts.map +1 -0
- package/dist/components/confirm-dialog/confirm-dialog.d.ts +89 -0
- package/dist/components/confirm-dialog/confirm-dialog.d.ts.map +1 -0
- package/dist/components/confirm-dialog/index.d.ts +7 -0
- package/dist/components/confirm-dialog/index.d.ts.map +1 -0
- package/dist/components/content-renderer/classes.d.ts +33 -0
- package/dist/components/content-renderer/classes.d.ts.map +1 -0
- package/dist/components/content-renderer/content-renderer.d.ts +37 -0
- package/dist/components/content-renderer/content-renderer.d.ts.map +1 -0
- package/dist/components/content-renderer/html-tags.d.ts +6 -0
- package/dist/components/content-renderer/html-tags.d.ts.map +1 -0
- package/dist/components/content-renderer/html-to-markdown.d.ts +7 -0
- package/dist/components/content-renderer/html-to-markdown.d.ts.map +1 -0
- package/dist/components/content-renderer/index.d.ts +7 -0
- package/dist/components/content-renderer/index.d.ts.map +1 -0
- package/dist/components/content-renderer/markdown.d.ts +23 -0
- package/dist/components/content-renderer/markdown.d.ts.map +1 -0
- package/dist/components/content-renderer/remark-spoiler.d.ts +9 -0
- package/dist/components/content-renderer/remark-spoiler.d.ts.map +1 -0
- package/dist/components/content-renderer/styles.d.ts +2 -0
- package/dist/components/content-renderer/styles.d.ts.map +1 -0
- package/dist/components/country-select/country-select.d.ts +101 -0
- package/dist/components/country-select/country-select.d.ts.map +1 -0
- package/dist/components/country-select/flag-icon.d.ts +36 -0
- package/dist/components/country-select/flag-icon.d.ts.map +1 -0
- package/dist/components/country-select/index.d.ts +5 -0
- package/dist/components/country-select/index.d.ts.map +1 -0
- package/dist/components/date-input/date-input.d.ts +27 -0
- package/dist/components/date-input/date-input.d.ts.map +1 -0
- package/dist/components/date-input/index.d.ts +4 -0
- package/dist/components/date-input/index.d.ts.map +1 -0
- package/dist/components/date-input/value.d.ts +9 -0
- package/dist/components/date-input/value.d.ts.map +1 -0
- package/dist/components/date-range-picker/date-range-input.d.ts +48 -0
- package/dist/components/date-range-picker/date-range-input.d.ts.map +1 -0
- package/dist/components/date-range-picker/date-range-picker.d.ts +39 -0
- package/dist/components/date-range-picker/date-range-picker.d.ts.map +1 -0
- package/dist/components/date-range-picker/index.d.ts +7 -0
- package/dist/components/date-range-picker/index.d.ts.map +1 -0
- package/dist/components/date-range-picker/use-date-range-picker.d.ts +28 -0
- package/dist/components/date-range-picker/use-date-range-picker.d.ts.map +1 -0
- package/dist/components/deadline-chip/deadline-chip.d.ts +41 -0
- package/dist/components/deadline-chip/deadline-chip.d.ts.map +1 -0
- package/dist/components/deadline-chip/index.d.ts +7 -0
- package/dist/components/deadline-chip/index.d.ts.map +1 -0
- package/dist/components/doc-layout/doc-layout.d.ts +17 -0
- package/dist/components/doc-layout/doc-layout.d.ts.map +1 -0
- package/dist/components/doc-layout/doc-section-nav.d.ts +16 -0
- package/dist/components/doc-layout/doc-section-nav.d.ts.map +1 -0
- package/dist/components/doc-layout/doc-sidebar.d.ts +18 -0
- package/dist/components/doc-layout/doc-sidebar.d.ts.map +1 -0
- package/dist/components/doc-layout/index.d.ts +4 -0
- package/dist/components/doc-layout/index.d.ts.map +1 -0
- package/dist/components/doc-layout/index.js +6 -0
- package/dist/components/doc-layout/index.js.map +1 -0
- package/dist/components/drawer/drawer.d.ts +65 -0
- package/dist/components/drawer/drawer.d.ts.map +1 -0
- package/dist/components/drawer/index.d.ts +7 -0
- package/dist/components/drawer/index.d.ts.map +1 -0
- package/dist/components/duration-picker/duration-picker.d.ts +24 -0
- package/dist/components/duration-picker/duration-picker.d.ts.map +1 -0
- package/dist/components/duration-picker/index.d.ts +2 -0
- package/dist/components/duration-picker/index.d.ts.map +1 -0
- package/dist/components/editor/classes.d.ts +52 -0
- package/dist/components/editor/classes.d.ts.map +1 -0
- package/dist/components/editor/editor.d.ts +15 -0
- package/dist/components/editor/editor.d.ts.map +1 -0
- package/dist/components/editor/extensions/clear-format.d.ts +3 -0
- package/dist/components/editor/extensions/clear-format.d.ts.map +1 -0
- package/dist/components/editor/extensions/index.d.ts +3 -0
- package/dist/components/editor/extensions/index.d.ts.map +1 -0
- package/dist/components/editor/extensions/text-transform.d.ts +20 -0
- package/dist/components/editor/extensions/text-transform.d.ts.map +1 -0
- package/dist/components/editor/icons/index.d.ts +34 -0
- package/dist/components/editor/icons/index.d.ts.map +1 -0
- package/dist/components/editor/index.d.ts +41 -104
- package/dist/components/editor/index.d.ts.map +1 -0
- package/dist/components/editor/index.js +3 -2
- package/dist/components/editor/presets.d.ts +3 -0
- package/dist/components/editor/presets.d.ts.map +1 -0
- package/dist/components/editor/styles.d.ts +2 -0
- package/dist/components/editor/styles.d.ts.map +1 -0
- package/dist/components/editor/toolbar/bubble-toolbar.d.ts +9 -0
- package/dist/components/editor/toolbar/bubble-toolbar.d.ts.map +1 -0
- package/dist/components/editor/toolbar/code-highlight-block.d.ts +3 -0
- package/dist/components/editor/toolbar/code-highlight-block.d.ts.map +1 -0
- package/dist/components/editor/toolbar/heading-block.d.ts +11 -0
- package/dist/components/editor/toolbar/heading-block.d.ts.map +1 -0
- package/dist/components/editor/toolbar/image-block.d.ts +11 -0
- package/dist/components/editor/toolbar/image-block.d.ts.map +1 -0
- package/dist/components/editor/toolbar/link-block.d.ts +13 -0
- package/dist/components/editor/toolbar/link-block.d.ts.map +1 -0
- package/dist/components/editor/toolbar/toolbar-item.d.ts +3 -0
- package/dist/components/editor/toolbar/toolbar-item.d.ts.map +1 -0
- package/dist/components/editor/toolbar/toolbar.d.ts +3 -0
- package/dist/components/editor/toolbar/toolbar.d.ts.map +1 -0
- package/dist/components/editor/toolbar/use-toolbar-state.d.ts +24 -0
- package/dist/components/editor/toolbar/use-toolbar-state.d.ts.map +1 -0
- package/dist/components/editor/types.d.ts +130 -0
- package/dist/components/editor/types.d.ts.map +1 -0
- package/dist/components/emoji-picker/emoji-picker.d.ts +24 -0
- package/dist/components/emoji-picker/emoji-picker.d.ts.map +1 -0
- package/dist/components/emoji-picker/emoji-search.d.ts +22 -0
- package/dist/components/emoji-picker/emoji-search.d.ts.map +1 -0
- package/dist/components/emoji-picker/emoji.d.ts +19 -0
- package/dist/components/emoji-picker/emoji.d.ts.map +1 -0
- package/dist/components/emoji-picker/index.d.ts +14 -0
- package/dist/components/emoji-picker/index.d.ts.map +1 -0
- package/dist/components/emoji-picker/index.js +3 -0
- package/dist/components/emoji-picker/index.js.map +1 -0
- package/dist/components/emoji-picker/twemoji-url.d.ts +26 -0
- package/dist/components/emoji-picker/twemoji-url.d.ts.map +1 -0
- package/dist/components/emoji-picker/types.d.ts +96 -0
- package/dist/components/emoji-picker/types.d.ts.map +1 -0
- package/dist/components/emoji-picker/use-emoji-data.d.ts +26 -0
- package/dist/components/emoji-picker/use-emoji-data.d.ts.map +1 -0
- package/dist/components/emoji-picker/use-recent-emojis.d.ts +16 -0
- package/dist/components/emoji-picker/use-recent-emojis.d.ts.map +1 -0
- package/dist/components/empty-content/empty-content.d.ts +92 -0
- package/dist/components/empty-content/empty-content.d.ts.map +1 -0
- package/dist/components/empty-content/index.d.ts +7 -0
- package/dist/components/empty-content/index.d.ts.map +1 -0
- package/dist/components/error-boundary/error-boundary.d.ts +162 -0
- package/dist/components/error-boundary/error-boundary.d.ts.map +1 -0
- package/dist/components/error-boundary/index.d.ts +7 -0
- package/dist/components/error-boundary/index.d.ts.map +1 -0
- package/dist/components/field/field-autocomplete.d.ts +74 -0
- package/dist/components/field/field-autocomplete.d.ts.map +1 -0
- package/dist/components/field/field-checkbox.d.ts +42 -0
- package/dist/components/field/field-checkbox.d.ts.map +1 -0
- package/dist/components/field/field-code.d.ts +80 -0
- package/dist/components/field/field-code.d.ts.map +1 -0
- package/dist/components/field/field-country-select.d.ts +84 -0
- package/dist/components/field/field-country-select.d.ts.map +1 -0
- package/dist/components/field/field-date-picker.d.ts +58 -0
- package/dist/components/field/field-date-picker.d.ts.map +1 -0
- package/dist/components/field/field-datetime-picker.d.ts +96 -0
- package/dist/components/field/field-datetime-picker.d.ts.map +1 -0
- package/dist/components/field/field-editor.d.ts +218 -0
- package/dist/components/field/field-editor.d.ts.map +1 -0
- package/dist/components/field/field-multi-checkbox.d.ts +91 -0
- package/dist/components/field/field-multi-checkbox.d.ts.map +1 -0
- package/dist/components/field/field-multi-select.d.ts +85 -0
- package/dist/components/field/field-multi-select.d.ts.map +1 -0
- package/dist/components/field/field-multi-switch.d.ts +93 -0
- package/dist/components/field/field-multi-switch.d.ts.map +1 -0
- package/dist/components/field/field-number.d.ts +50 -0
- package/dist/components/field/field-number.d.ts.map +1 -0
- package/dist/components/field/field-phone.d.ts +82 -0
- package/dist/components/field/field-phone.d.ts.map +1 -0
- package/dist/components/field/field-radio.d.ts +64 -0
- package/dist/components/field/field-radio.d.ts.map +1 -0
- package/dist/components/field/field-rating.d.ts +43 -0
- package/dist/components/field/field-rating.d.ts.map +1 -0
- package/dist/components/field/field-select.d.ts +50 -0
- package/dist/components/field/field-select.d.ts.map +1 -0
- package/dist/components/field/field-slider.d.ts +56 -0
- package/dist/components/field/field-slider.d.ts.map +1 -0
- package/dist/components/field/field-switch.d.ts +44 -0
- package/dist/components/field/field-switch.d.ts.map +1 -0
- package/dist/components/field/field-text.d.ts +38 -0
- package/dist/components/field/field-text.d.ts.map +1 -0
- package/dist/components/field/field-time-picker.d.ts +79 -0
- package/dist/components/field/field-time-picker.d.ts.map +1 -0
- package/dist/components/field/field-upload.d.ts +120 -0
- package/dist/components/field/field-upload.d.ts.map +1 -0
- package/dist/components/field/index.d.ts +149 -0
- package/dist/components/field/index.d.ts.map +1 -0
- package/dist/components/image/image.d.ts +79 -0
- package/dist/components/image/image.d.ts.map +1 -0
- package/dist/components/image/index.d.ts +7 -0
- package/dist/components/image/index.d.ts.map +1 -0
- package/dist/components/index.css +4 -0
- package/dist/components/index.css.map +1 -1
- package/dist/components/index.d.ts +60 -7072
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +21 -11
- package/dist/components/knowledge-graph/edge-labels.d.ts +14 -0
- package/dist/components/knowledge-graph/edge-labels.d.ts.map +1 -0
- package/dist/components/knowledge-graph/graph.d.ts +56 -0
- package/dist/components/knowledge-graph/graph.d.ts.map +1 -0
- package/dist/components/knowledge-graph/index.css +176 -0
- package/dist/components/knowledge-graph/index.css.map +1 -0
- package/dist/components/knowledge-graph/index.d.ts +3 -0
- package/dist/components/knowledge-graph/index.d.ts.map +1 -0
- package/dist/components/knowledge-graph/index.js +795 -0
- package/dist/components/knowledge-graph/index.js.map +1 -0
- package/dist/components/knowledge-graph/label-layout.d.ts +28 -0
- package/dist/components/knowledge-graph/label-layout.d.ts.map +1 -0
- package/dist/components/knowledge-graph/label-store.d.ts +15 -0
- package/dist/components/knowledge-graph/label-store.d.ts.map +1 -0
- package/dist/components/knowledge-graph/model.d.ts +92 -0
- package/dist/components/knowledge-graph/model.d.ts.map +1 -0
- package/dist/components/label/index.d.ts +7 -0
- package/dist/components/label/index.d.ts.map +1 -0
- package/dist/components/label/label.d.ts +71 -0
- package/dist/components/label/label.d.ts.map +1 -0
- package/dist/components/lightbox/classes.d.ts +34 -0
- package/dist/components/lightbox/classes.d.ts.map +1 -0
- package/dist/components/lightbox/index.d.ts +11 -0
- package/dist/components/lightbox/index.d.ts.map +1 -0
- package/dist/components/lightbox/lightbox.d.ts +42 -0
- package/dist/components/lightbox/lightbox.d.ts.map +1 -0
- package/dist/components/lightbox/types.d.ts +233 -0
- package/dist/components/lightbox/types.d.ts.map +1 -0
- package/dist/components/lightbox/use-lightbox.d.ts +42 -0
- package/dist/components/lightbox/use-lightbox.d.ts.map +1 -0
- package/dist/components/loading-screen/index.d.ts +8 -0
- package/dist/components/loading-screen/index.d.ts.map +1 -0
- package/dist/components/loading-screen/loading-screen.d.ts +37 -0
- package/dist/components/loading-screen/loading-screen.d.ts.map +1 -0
- package/dist/components/loading-screen/splash-screen.d.ts +80 -0
- package/dist/components/loading-screen/splash-screen.d.ts.map +1 -0
- package/dist/components/map/Map.d.ts +39 -0
- package/dist/components/map/Map.d.ts.map +1 -0
- package/dist/components/map/MapCoverageLayer.d.ts +25 -0
- package/dist/components/map/MapCoverageLayer.d.ts.map +1 -0
- package/dist/components/map/MapMarker.d.ts +17 -0
- package/dist/components/map/MapMarker.d.ts.map +1 -0
- package/dist/components/map/MapPlaceSearch.d.ts +33 -0
- package/dist/components/map/MapPlaceSearch.d.ts.map +1 -0
- package/dist/components/map/MapPointPicker.d.ts +35 -0
- package/dist/components/map/MapPointPicker.d.ts.map +1 -0
- package/dist/components/map/coordinates.d.ts +10 -0
- package/dist/components/map/coordinates.d.ts.map +1 -0
- package/dist/components/map/index.css +4 -0
- package/dist/components/map/index.css.map +1 -0
- package/dist/components/map/index.d.ts +19 -0
- package/dist/components/map/index.d.ts.map +1 -0
- package/dist/components/map/index.js +3 -0
- package/dist/components/map/index.js.map +1 -0
- package/dist/components/mega-menu/index.d.ts +12 -0
- package/dist/components/mega-menu/index.d.ts.map +1 -0
- package/dist/components/mega-menu/mega-menu-horizontal.d.ts +41 -0
- package/dist/components/mega-menu/mega-menu-horizontal.d.ts.map +1 -0
- package/dist/components/mega-menu/mega-menu-mobile.d.ts +28 -0
- package/dist/components/mega-menu/mega-menu-mobile.d.ts.map +1 -0
- package/dist/components/mega-menu/mega-menu-vertical.d.ts +28 -0
- package/dist/components/mega-menu/mega-menu-vertical.d.ts.map +1 -0
- package/dist/components/mega-menu/styles.d.ts +18 -0
- package/dist/components/mega-menu/styles.d.ts.map +1 -0
- package/dist/components/mega-menu/types.d.ts +200 -0
- package/dist/components/mega-menu/types.d.ts.map +1 -0
- package/dist/components/menu/index.d.ts +7 -0
- package/dist/components/menu/index.d.ts.map +1 -0
- package/dist/components/menu/menu.d.ts +144 -0
- package/dist/components/menu/menu.d.ts.map +1 -0
- package/dist/components/nav-card/index.d.ts +8 -0
- package/dist/components/nav-card/index.d.ts.map +1 -0
- package/dist/components/nav-card/nav-card-grid.d.ts +57 -0
- package/dist/components/nav-card/nav-card-grid.d.ts.map +1 -0
- package/dist/components/nav-card/nav-card.d.ts +69 -0
- package/dist/components/nav-card/nav-card.d.ts.map +1 -0
- package/dist/components/nav-section/components.d.ts +143 -0
- package/dist/components/nav-section/components.d.ts.map +1 -0
- package/dist/components/nav-section/index.d.ts +15 -0
- package/dist/components/nav-section/index.d.ts.map +1 -0
- package/dist/components/nav-section/nav-context.d.ts +80 -0
- package/dist/components/nav-section/nav-context.d.ts.map +1 -0
- package/dist/components/nav-section/nav-item.d.ts +20 -0
- package/dist/components/nav-section/nav-item.d.ts.map +1 -0
- package/dist/components/nav-section/nav-list.d.ts +25 -0
- package/dist/components/nav-section/nav-list.d.ts.map +1 -0
- package/dist/components/nav-section/nav-section-horizontal.d.ts +29 -0
- package/dist/components/nav-section/nav-section-horizontal.d.ts.map +1 -0
- package/dist/components/nav-section/nav-section-mini.d.ts +30 -0
- package/dist/components/nav-section/nav-section-mini.d.ts.map +1 -0
- package/dist/components/nav-section/nav-section-vertical.d.ts +37 -0
- package/dist/components/nav-section/nav-section-vertical.d.ts.map +1 -0
- package/dist/components/nav-section/styles.d.ts +35 -0
- package/dist/components/nav-section/styles.d.ts.map +1 -0
- package/dist/components/nav-section/types.d.ts +178 -0
- package/dist/components/nav-section/types.d.ts.map +1 -0
- package/dist/components/navigation-progress/index.d.ts +7 -0
- package/dist/components/navigation-progress/index.d.ts.map +1 -0
- package/dist/components/navigation-progress/navigation-progress.d.ts +36 -0
- package/dist/components/navigation-progress/navigation-progress.d.ts.map +1 -0
- package/dist/components/page-content/index.d.ts +7 -0
- package/dist/components/page-content/index.d.ts.map +1 -0
- package/dist/components/page-content/page-content.d.ts +55 -0
- package/dist/components/page-content/page-content.d.ts.map +1 -0
- package/dist/components/popover/index.d.ts +7 -0
- package/dist/components/popover/index.d.ts.map +1 -0
- package/dist/{popover-Dmw7SJLR.d.ts → components/popover/popover.d.ts} +11 -14
- package/dist/components/popover/popover.d.ts.map +1 -0
- package/dist/components/progress/countdown-ring.d.ts +60 -0
- package/dist/components/progress/countdown-ring.d.ts.map +1 -0
- package/dist/components/progress/index.d.ts +8 -0
- package/dist/components/progress/index.d.ts.map +1 -0
- package/dist/components/progress/progress.d.ts +106 -0
- package/dist/components/progress/progress.d.ts.map +1 -0
- package/dist/components/rail/index.d.ts +7 -0
- package/dist/components/rail/index.d.ts.map +1 -0
- package/dist/components/rail/rail.d.ts +39 -0
- package/dist/components/rail/rail.d.ts.map +1 -0
- package/dist/components/research/diagram-image.d.ts +11 -0
- package/dist/components/research/diagram-image.d.ts.map +1 -0
- package/dist/components/research/diagram.d.ts +8 -0
- package/dist/components/research/diagram.d.ts.map +1 -0
- package/dist/components/research/document.d.ts +33 -0
- package/dist/components/research/document.d.ts.map +1 -0
- package/dist/components/research/frontmatter.d.ts +15 -0
- package/dist/components/research/frontmatter.d.ts.map +1 -0
- package/dist/components/research/index.css +51 -0
- package/dist/components/research/index.css.map +1 -0
- package/dist/components/research/index.d.ts +3 -0
- package/dist/components/research/index.d.ts.map +1 -0
- package/dist/components/research/index.js +6 -0
- package/dist/components/research/index.js.map +1 -0
- package/dist/components/research/parse.d.ts +29 -0
- package/dist/components/research/parse.d.ts.map +1 -0
- package/dist/components/research-editor/block-commands.d.ts +20 -0
- package/dist/components/research-editor/block-commands.d.ts.map +1 -0
- package/dist/components/research-editor/block-controls.d.ts +13 -0
- package/dist/components/research-editor/block-controls.d.ts.map +1 -0
- package/dist/components/research-editor/editor.d.ts +75 -0
- package/dist/components/research-editor/editor.d.ts.map +1 -0
- package/dist/components/research-editor/extensions.d.ts +14 -0
- package/dist/components/research-editor/extensions.d.ts.map +1 -0
- package/dist/components/research-editor/index.css +332 -0
- package/dist/components/research-editor/index.css.map +1 -0
- package/dist/components/research-editor/index.d.ts +5 -0
- package/dist/components/research-editor/index.d.ts.map +1 -0
- package/dist/components/research-editor/index.js +1592 -0
- package/dist/components/research-editor/index.js.map +1 -0
- package/dist/components/research-editor/math-input.d.ts +32 -0
- package/dist/components/research-editor/math-input.d.ts.map +1 -0
- package/dist/components/research-editor/math-markup.d.ts +4 -0
- package/dist/components/research-editor/math-markup.d.ts.map +1 -0
- package/dist/components/research-editor/math-navigation.d.ts +6 -0
- package/dist/components/research-editor/math-navigation.d.ts.map +1 -0
- package/dist/components/research-editor/math-node.d.ts +11 -0
- package/dist/components/research-editor/math-node.d.ts.map +1 -0
- package/dist/components/research-editor/source.d.ts +19 -0
- package/dist/components/research-editor/source.d.ts.map +1 -0
- package/dist/components/scroll-spy/index.d.ts +3 -0
- package/dist/components/scroll-spy/index.d.ts.map +1 -0
- package/dist/components/scroll-spy/scroll-spy-provider.d.ts +26 -0
- package/dist/components/scroll-spy/scroll-spy-provider.d.ts.map +1 -0
- package/dist/components/scroll-spy/scroll-spy-section.d.ts +10 -0
- package/dist/components/scroll-spy/scroll-spy-section.d.ts.map +1 -0
- package/dist/components/scroll-to-top/index.d.ts +7 -0
- package/dist/components/scroll-to-top/index.d.ts.map +1 -0
- package/dist/components/scroll-to-top/scroll-to-top.d.ts +25 -0
- package/dist/components/scroll-to-top/scroll-to-top.d.ts.map +1 -0
- package/dist/components/scrollbar/index.d.ts +7 -0
- package/dist/components/scrollbar/index.d.ts.map +1 -0
- package/dist/components/scrollbar/scrollbar.d.ts +61 -0
- package/dist/components/scrollbar/scrollbar.d.ts.map +1 -0
- package/dist/components/search-input/index.d.ts +2 -0
- package/dist/components/search-input/index.d.ts.map +1 -0
- package/dist/components/search-input/search-input.d.ts +36 -0
- package/dist/components/search-input/search-input.d.ts.map +1 -0
- package/dist/components/settings/index.d.ts +10 -0
- package/dist/components/settings/index.d.ts.map +1 -0
- package/dist/components/settings/settings-drawer.d.ts +39 -0
- package/dist/components/settings/settings-drawer.d.ts.map +1 -0
- package/dist/components/settings/settings-provider.d.ts +106 -0
- package/dist/components/settings/settings-provider.d.ts.map +1 -0
- package/dist/components/skeleton/index.d.ts +7 -0
- package/dist/components/skeleton/index.d.ts.map +1 -0
- package/dist/components/skeleton/skeleton.d.ts +77 -0
- package/dist/components/skeleton/skeleton.d.ts.map +1 -0
- package/dist/components/snackbar/index.d.ts +7 -0
- package/dist/components/snackbar/index.d.ts.map +1 -0
- package/dist/components/snackbar/snackbar.d.ts +120 -0
- package/dist/components/snackbar/snackbar.d.ts.map +1 -0
- package/dist/components/sponsored-slot/index.d.ts +3 -0
- package/dist/components/sponsored-slot/index.d.ts.map +1 -0
- package/dist/components/sponsored-slot/sponsored-slot.d.ts +16 -0
- package/dist/components/sponsored-slot/sponsored-slot.d.ts.map +1 -0
- package/dist/components/sponsored-slot/types.d.ts +45 -0
- package/dist/components/sponsored-slot/types.d.ts.map +1 -0
- package/dist/components/stepper/index.d.ts +7 -0
- package/dist/components/stepper/index.d.ts.map +1 -0
- package/dist/components/stepper/stepper.d.ts +145 -0
- package/dist/components/stepper/stepper.d.ts.map +1 -0
- package/dist/components/svg-color/index.d.ts +7 -0
- package/dist/components/svg-color/index.d.ts.map +1 -0
- package/dist/components/svg-color/svg-color.d.ts +80 -0
- package/dist/components/svg-color/svg-color.d.ts.map +1 -0
- package/dist/components/table/index.d.ts +7 -0
- package/dist/components/table/index.d.ts.map +1 -0
- package/dist/components/table/table.d.ts +184 -0
- package/dist/components/table/table.d.ts.map +1 -0
- package/dist/components/tabs/index.d.ts +7 -0
- package/dist/components/tabs/index.d.ts.map +1 -0
- package/dist/components/tabs/tabs.d.ts +146 -0
- package/dist/components/tabs/tabs.d.ts.map +1 -0
- package/dist/components/tag-cloud/index.d.ts +7 -0
- package/dist/components/tag-cloud/index.d.ts.map +1 -0
- package/dist/components/tag-cloud/tag-cloud.d.ts +58 -0
- package/dist/components/tag-cloud/tag-cloud.d.ts.map +1 -0
- package/dist/components/tiptap-renderer/index.d.ts +2 -0
- package/dist/components/tiptap-renderer/index.d.ts.map +1 -0
- package/dist/components/tiptap-renderer/tiptap-renderer.d.ts +46 -0
- package/dist/components/tiptap-renderer/tiptap-renderer.d.ts.map +1 -0
- package/dist/components/tooltip/index.d.ts +7 -0
- package/dist/components/tooltip/index.d.ts.map +1 -0
- package/dist/components/tooltip/tooltip.d.ts +38 -0
- package/dist/components/tooltip/tooltip.d.ts.map +1 -0
- package/dist/components/virtual-list/index.d.ts +7 -0
- package/dist/components/virtual-list/index.d.ts.map +1 -0
- package/dist/components/virtual-list/virtual-list.d.ts +64 -0
- package/dist/components/virtual-list/virtual-list.d.ts.map +1 -0
- package/dist/core/accessibility/index.d.ts +96 -0
- package/dist/core/accessibility/index.d.ts.map +1 -0
- package/dist/core/accessibility/skip-link.d.ts +31 -0
- package/dist/core/accessibility/skip-link.d.ts.map +1 -0
- package/dist/core/context.d.ts +99 -0
- package/dist/core/context.d.ts.map +1 -0
- package/dist/core/hooks/use-boolean.d.ts +54 -0
- package/dist/core/hooks/use-boolean.d.ts.map +1 -0
- package/dist/core/hooks/use-breakpoints.d.ts +87 -0
- package/dist/core/hooks/use-breakpoints.d.ts.map +1 -0
- package/dist/core/hooks/use-click-outside.d.ts +26 -0
- package/dist/core/hooks/use-click-outside.d.ts.map +1 -0
- package/dist/core/hooks/use-copy-to-clipboard.d.ts +66 -0
- package/dist/core/hooks/use-copy-to-clipboard.d.ts.map +1 -0
- package/dist/core/hooks/use-countdown.d.ts +105 -0
- package/dist/core/hooks/use-countdown.d.ts.map +1 -0
- package/dist/core/hooks/use-debounce.d.ts +64 -0
- package/dist/core/hooks/use-debounce.d.ts.map +1 -0
- package/dist/core/hooks/use-event-listener.d.ts +37 -0
- package/dist/core/hooks/use-event-listener.d.ts.map +1 -0
- package/dist/core/hooks/use-interval.d.ts +30 -0
- package/dist/core/hooks/use-interval.d.ts.map +1 -0
- package/dist/core/hooks/use-is-client.d.ts +24 -0
- package/dist/core/hooks/use-is-client.d.ts.map +1 -0
- package/dist/core/hooks/use-local-storage.d.ts +61 -0
- package/dist/core/hooks/use-local-storage.d.ts.map +1 -0
- package/dist/core/hooks/use-media-query.d.ts +107 -0
- package/dist/core/hooks/use-media-query.d.ts.map +1 -0
- package/dist/core/hooks/use-mounted.d.ts +33 -0
- package/dist/core/hooks/use-mounted.d.ts.map +1 -0
- package/dist/core/hooks/use-multi-select.d.ts +113 -0
- package/dist/core/hooks/use-multi-select.d.ts.map +1 -0
- package/dist/core/hooks/use-previous.d.ts +23 -0
- package/dist/core/hooks/use-previous.d.ts.map +1 -0
- package/dist/core/hooks/use-set-state.d.ts +56 -0
- package/dist/core/hooks/use-set-state.d.ts.map +1 -0
- package/dist/core/hooks/use-tabs.d.ts +74 -0
- package/dist/core/hooks/use-tabs.d.ts.map +1 -0
- package/dist/core/hooks/use-timeout.d.ts +37 -0
- package/dist/core/hooks/use-timeout.d.ts.map +1 -0
- package/dist/core/index.d.ts +36 -468
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +10 -7
- package/dist/core/provider-stack.d.ts +181 -0
- package/dist/core/provider-stack.d.ts.map +1 -0
- package/dist/core/provider.d.ts +72 -0
- package/dist/core/provider.d.ts.map +1 -0
- package/dist/forms/index.d.ts +6 -557
- package/dist/forms/index.d.ts.map +1 -0
- package/dist/forms/index.js +0 -1
- package/dist/forms/index.js.map +1 -1
- package/dist/forms/schema-provider.d.ts +282 -0
- package/dist/forms/schema-provider.d.ts.map +1 -0
- package/dist/forms/schema-utils.d.ts +286 -0
- package/dist/forms/schema-utils.d.ts.map +1 -0
- package/dist/hooks/index.d.ts +38 -8
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +12 -9
- package/dist/hooks/use-array.d.ts +126 -0
- package/dist/hooks/use-array.d.ts.map +1 -0
- package/dist/hooks/use-async.d.ts +88 -0
- package/dist/hooks/use-async.d.ts.map +1 -0
- package/dist/hooks/use-back-to-top.d.ts +57 -0
- package/dist/hooks/use-back-to-top.d.ts.map +1 -0
- package/dist/hooks/use-client-rect.d.ts +67 -0
- package/dist/hooks/use-client-rect.d.ts.map +1 -0
- package/dist/hooks/use-config-from-query.d.ts +98 -0
- package/dist/hooks/use-config-from-query.d.ts.map +1 -0
- package/dist/hooks/use-cookies.d.ts +62 -0
- package/dist/hooks/use-cookies.d.ts.map +1 -0
- package/dist/hooks/use-countdown-date.d.ts +47 -0
- package/dist/hooks/use-countdown-date.d.ts.map +1 -0
- package/dist/hooks/use-countdown-seconds.d.ts +83 -0
- package/dist/hooks/use-countdown-seconds.d.ts.map +1 -0
- package/dist/hooks/use-double-click.d.ts +67 -0
- package/dist/hooks/use-double-click.d.ts.map +1 -0
- package/dist/hooks/use-focus-trap.d.ts +66 -0
- package/dist/hooks/use-focus-trap.d.ts.map +1 -0
- package/dist/hooks/use-image-dimensions.d.ts +124 -0
- package/dist/hooks/use-image-dimensions.d.ts.map +1 -0
- package/dist/hooks/use-infinite-scroll.d.ts +204 -0
- package/dist/hooks/use-infinite-scroll.d.ts.map +1 -0
- package/dist/hooks/use-intersection-observer.d.ts +93 -0
- package/dist/hooks/use-intersection-observer.d.ts.map +1 -0
- package/dist/hooks/use-isomorphic-layout-effect.d.ts +34 -0
- package/dist/hooks/use-isomorphic-layout-effect.d.ts.map +1 -0
- package/dist/hooks/use-keyboard-shortcut.d.ts +112 -0
- package/dist/hooks/use-keyboard-shortcut.d.ts.map +1 -0
- package/dist/hooks/use-lazy-query.d.ts +132 -0
- package/dist/hooks/use-lazy-query.d.ts.map +1 -0
- package/dist/hooks/use-mutation.d.ts +141 -0
- package/dist/hooks/use-mutation.d.ts.map +1 -0
- package/dist/hooks/use-online-status.d.ts +56 -0
- package/dist/hooks/use-online-status.d.ts.map +1 -0
- package/dist/hooks/use-password-visibility.d.ts +83 -0
- package/dist/hooks/use-password-visibility.d.ts.map +1 -0
- package/dist/hooks/use-popover-hover.d.ts +78 -0
- package/dist/hooks/use-popover-hover.d.ts.map +1 -0
- package/dist/hooks/use-scroll-offset-top.d.ts +69 -0
- package/dist/hooks/use-scroll-offset-top.d.ts.map +1 -0
- package/dist/hooks/use-scroll-position.d.ts +96 -0
- package/dist/hooks/use-scroll-position.d.ts.map +1 -0
- package/dist/hooks/use-session-storage.d.ts +66 -0
- package/dist/hooks/use-session-storage.d.ts.map +1 -0
- package/dist/hooks/use-throttle.d.ts +67 -0
- package/dist/hooks/use-throttle.d.ts.map +1 -0
- package/dist/hooks/use-update-effect.d.ts +53 -0
- package/dist/hooks/use-update-effect.d.ts.map +1 -0
- package/dist/hooks/use-window-size.d.ts +132 -0
- package/dist/hooks/use-window-size.d.ts.map +1 -0
- package/dist/http/client.d.ts +74 -0
- package/dist/http/client.d.ts.map +1 -0
- package/dist/http/index.d.ts +6 -229
- package/dist/http/index.d.ts.map +1 -0
- package/dist/http/index.js +0 -2
- package/dist/http/index.js.map +1 -1
- package/dist/http/types.d.ts +158 -0
- package/dist/http/types.d.ts.map +1 -0
- package/dist/icons/context.d.ts +17 -0
- package/dist/icons/context.d.ts.map +1 -0
- package/dist/icons/controls.d.ts +51 -0
- package/dist/icons/controls.d.ts.map +1 -0
- package/dist/icons/index.d.ts +3 -0
- package/dist/icons/index.d.ts.map +1 -0
- package/dist/icons/index.js +4 -0
- package/dist/icons/index.js.map +1 -0
- package/dist/icons/theme.d.ts +4 -0
- package/dist/icons/theme.d.ts.map +1 -0
- package/dist/index.css +4 -0
- package/dist/index.css.map +1 -1
- package/dist/index.d.ts +19 -2758
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +46 -63
- package/dist/index.js.map +1 -1
- package/dist/layouts/auth/centered.d.ts +49 -0
- package/dist/layouts/auth/centered.d.ts.map +1 -0
- package/dist/layouts/auth/index.d.ts +12 -0
- package/dist/layouts/auth/index.d.ts.map +1 -0
- package/dist/layouts/auth/simple.d.ts +58 -0
- package/dist/layouts/auth/simple.d.ts.map +1 -0
- package/dist/layouts/auth/split.d.ts +81 -0
- package/dist/layouts/auth/split.d.ts.map +1 -0
- package/dist/layouts/core/context.d.ts +102 -0
- package/dist/layouts/core/context.d.ts.map +1 -0
- package/dist/layouts/core/css-vars.d.ts +43 -0
- package/dist/layouts/core/css-vars.d.ts.map +1 -0
- package/dist/layouts/core/header-section.d.ts +79 -0
- package/dist/layouts/core/header-section.d.ts.map +1 -0
- package/dist/layouts/core/index.d.ts +18 -0
- package/dist/layouts/core/index.d.ts.map +1 -0
- package/dist/layouts/core/layout-section.d.ts +64 -0
- package/dist/layouts/core/layout-section.d.ts.map +1 -0
- package/dist/layouts/core/user-menu.d.ts +88 -0
- package/dist/layouts/core/user-menu.d.ts.map +1 -0
- package/dist/layouts/dashboard/index.d.ts +10 -0
- package/dist/layouts/dashboard/index.d.ts.map +1 -0
- package/dist/layouts/dashboard/labels.d.ts +12 -0
- package/dist/layouts/dashboard/labels.d.ts.map +1 -0
- package/dist/layouts/dashboard/layout.d.ts +96 -0
- package/dist/layouts/dashboard/layout.d.ts.map +1 -0
- package/dist/layouts/dashboard/sidenav.d.ts +62 -0
- package/dist/layouts/dashboard/sidenav.d.ts.map +1 -0
- package/dist/layouts/dashboard/topnav.d.ts +41 -0
- package/dist/layouts/dashboard/topnav.d.ts.map +1 -0
- package/dist/layouts/index.d.ts +32 -850
- package/dist/layouts/index.d.ts.map +1 -0
- package/dist/layouts/index.js +8 -4
- package/dist/layouts/panel-layout.d.ts +35 -0
- package/dist/layouts/panel-layout.d.ts.map +1 -0
- package/dist/layouts/sidebar-toggle.d.ts +11 -0
- package/dist/layouts/sidebar-toggle.d.ts.map +1 -0
- package/dist/layouts/types.d.ts +317 -0
- package/dist/layouts/types.d.ts.map +1 -0
- package/dist/netron/context.d.ts +18 -0
- package/dist/netron/context.d.ts.map +1 -0
- package/dist/netron/hooks.d.ts +10 -0
- package/dist/netron/hooks.d.ts.map +1 -0
- package/dist/netron/index.d.ts +47 -4
- package/dist/netron/index.d.ts.map +1 -0
- package/dist/netron/index.js +1 -2
- package/dist/netron/types.d.ts +12 -0
- package/dist/netron/types.d.ts.map +1 -0
- package/dist/registry/index.d.ts +8 -341
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +1 -2
- package/dist/registry/installer.d.ts +137 -0
- package/dist/registry/installer.d.ts.map +1 -0
- package/dist/registry/manager.d.ts +196 -0
- package/dist/registry/manager.d.ts.map +1 -0
- package/dist/state/create-store.d.ts +164 -0
- package/dist/state/create-store.d.ts.map +1 -0
- package/dist/state/index.d.ts +12 -969
- package/dist/state/index.d.ts.map +1 -0
- package/dist/state/index.js +2 -3
- package/dist/state/settings-version.d.ts +255 -0
- package/dist/state/settings-version.d.ts.map +1 -0
- package/dist/state/stores/auth.d.ts +143 -0
- package/dist/state/stores/auth.d.ts.map +1 -0
- package/dist/state/stores/index.d.ts +10 -0
- package/dist/state/stores/index.d.ts.map +1 -0
- package/dist/state/stores/settings.d.ts +151 -0
- package/dist/state/stores/settings.d.ts.map +1 -0
- package/dist/state/stores/theme.d.ts +87 -0
- package/dist/state/stores/theme.d.ts.map +1 -0
- package/dist/state/stores/ui.d.ts +106 -0
- package/dist/state/stores/ui.d.ts.map +1 -0
- package/dist/theme/colors/base.d.ts +61 -0
- package/dist/theme/colors/base.d.ts.map +1 -0
- package/dist/theme/colors/index.d.ts +10 -0
- package/dist/theme/colors/index.d.ts.map +1 -0
- package/dist/theme/colors/luxury.d.ts +49 -0
- package/dist/theme/colors/luxury.d.ts.map +1 -0
- package/dist/theme/components/Autocomplete.d.ts +9 -0
- package/dist/theme/components/Autocomplete.d.ts.map +1 -0
- package/dist/theme/components/Button.d.ts +33 -0
- package/dist/theme/components/Button.d.ts.map +1 -0
- package/dist/theme/components/Card.d.ts +20 -0
- package/dist/theme/components/Card.d.ts.map +1 -0
- package/dist/theme/components/Chip.d.ts +29 -0
- package/dist/theme/components/Chip.d.ts.map +1 -0
- package/dist/theme/components/DataGrid.d.ts +15 -0
- package/dist/theme/components/DataGrid.d.ts.map +1 -0
- package/dist/theme/components/DatePicker.d.ts +19 -0
- package/dist/theme/components/DatePicker.d.ts.map +1 -0
- package/dist/theme/components/Dialog.d.ts +23 -0
- package/dist/theme/components/Dialog.d.ts.map +1 -0
- package/dist/theme/components/FormControls.d.ts +44 -0
- package/dist/theme/components/FormControls.d.ts.map +1 -0
- package/dist/theme/components/Tabs.d.ts +21 -0
- package/dist/theme/components/Tabs.d.ts.map +1 -0
- package/dist/theme/components/TextField.d.ts +87 -0
- package/dist/theme/components/TextField.d.ts.map +1 -0
- package/dist/theme/components/index.d.ts +27 -0
- package/dist/theme/components/index.d.ts.map +1 -0
- package/dist/theme/components/theme-utils.d.ts +42 -0
- package/dist/theme/components/theme-utils.d.ts.map +1 -0
- package/dist/theme/create-theme.d.ts +119 -0
- package/dist/theme/create-theme.d.ts.map +1 -0
- package/dist/theme/css-variables.d.ts +42 -0
- package/dist/theme/css-variables.d.ts.map +1 -0
- package/dist/theme/custom-shadows.d.ts +58 -0
- package/dist/theme/custom-shadows.d.ts.map +1 -0
- package/dist/theme/index.d.ts +23 -1045
- package/dist/theme/index.d.ts.map +1 -0
- package/dist/theme/index.js +6 -3
- package/dist/theme/mixins.d.ts +334 -0
- package/dist/theme/mixins.d.ts.map +1 -0
- package/dist/theme/opacity.d.ts +51 -0
- package/dist/theme/opacity.d.ts.map +1 -0
- package/dist/theme/palette/builder.d.ts +138 -0
- package/dist/theme/palette/builder.d.ts.map +1 -0
- package/dist/theme/palette/index.d.ts +7 -0
- package/dist/theme/palette/index.d.ts.map +1 -0
- package/dist/theme/palette/overrides.d.ts +23 -0
- package/dist/theme/palette/overrides.d.ts.map +1 -0
- package/dist/theme/palette.d.ts +43 -0
- package/dist/theme/palette.d.ts.map +1 -0
- package/dist/theme/presets/arctic.d.ts +13 -0
- package/dist/theme/presets/arctic.d.ts.map +1 -0
- package/dist/theme/presets/default.d.ts +13 -0
- package/dist/theme/presets/default.d.ts.map +1 -0
- package/dist/theme/presets/dracula.d.ts +27 -0
- package/dist/theme/presets/dracula.d.ts.map +1 -0
- package/dist/theme/presets/ember.d.ts +23 -0
- package/dist/theme/presets/ember.d.ts.map +1 -0
- package/dist/theme/presets/index.d.ts +39 -0
- package/dist/theme/presets/index.d.ts.map +1 -0
- package/dist/theme/presets/luxury.d.ts +13 -0
- package/dist/theme/presets/luxury.d.ts.map +1 -0
- package/dist/theme/presets/midnight.d.ts +23 -0
- package/dist/theme/presets/midnight.d.ts.map +1 -0
- package/dist/theme/presets/minimal.d.ts +23 -0
- package/dist/theme/presets/minimal.d.ts.map +1 -0
- package/dist/theme/presets/nature.d.ts +14 -0
- package/dist/theme/presets/nature.d.ts.map +1 -0
- package/dist/theme/presets/retro.d.ts +23 -0
- package/dist/theme/presets/retro.d.ts.map +1 -0
- package/dist/theme/shadows.d.ts +61 -0
- package/dist/theme/shadows.d.ts.map +1 -0
- package/dist/theme/typography.d.ts +24 -0
- package/dist/theme/typography.d.ts.map +1 -0
- package/dist/theme/utils/color.d.ts +295 -0
- package/dist/theme/utils/color.d.ts.map +1 -0
- package/dist/theme/utils/index.d.ts +7 -0
- package/dist/theme/utils/index.d.ts.map +1 -0
- package/dist/{registry-DQcIzW2s.d.ts → types/blocks.d.ts} +30 -191
- package/dist/types/blocks.d.ts.map +1 -0
- package/dist/{components-BCGZ-Rwt.d.ts → types/components.d.ts} +17 -20
- package/dist/types/components.d.ts.map +1 -0
- package/dist/{config-Pct0n_Kq.d.ts → types/config.d.ts} +14 -16
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/index.d.ts +13 -7
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +1 -2
- package/dist/types/registry.d.ts +158 -0
- package/dist/types/registry.d.ts.map +1 -0
- package/dist/{theme-B4Q3Bg5o.d.ts → types/theme.d.ts} +31 -34
- package/dist/types/theme.d.ts.map +1 -0
- package/dist/ui/index.d.ts +18 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +148 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/utils/async-lock.d.ts +169 -0
- package/dist/utils/async-lock.d.ts.map +1 -0
- package/dist/utils/cn.d.ts +80 -0
- package/dist/utils/cn.d.ts.map +1 -0
- package/dist/utils/cookies.d.ts +68 -0
- package/dist/utils/cookies.d.ts.map +1 -0
- package/dist/utils/create-classes.d.ts +90 -0
- package/dist/utils/create-classes.d.ts.map +1 -0
- package/dist/utils/errors.d.ts +201 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/fetch-interceptor.d.ts +230 -0
- package/dist/utils/fetch-interceptor.d.ts.map +1 -0
- package/dist/utils/font.d.ts +65 -0
- package/dist/utils/font.d.ts.map +1 -0
- package/dist/utils/format-crypto.d.ts +312 -0
- package/dist/utils/format-crypto.d.ts.map +1 -0
- package/dist/utils/format-date.d.ts +240 -0
- package/dist/utils/format-date.d.ts.map +1 -0
- package/dist/utils/format-number.d.ts +245 -0
- package/dist/utils/format-number.d.ts.map +1 -0
- package/dist/utils/i18n-text.d.ts +68 -0
- package/dist/utils/i18n-text.d.ts.map +1 -0
- package/dist/utils/index.d.ts +30 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/jwt.d.ts +227 -0
- package/dist/utils/jwt.d.ts.map +1 -0
- package/dist/utils/object.d.ts +96 -0
- package/dist/utils/object.d.ts.map +1 -0
- package/dist/utils/refs.d.ts +60 -0
- package/dist/utils/refs.d.ts.map +1 -0
- package/dist/utils/rtl.d.ts +75 -0
- package/dist/utils/rtl.d.ts.map +1 -0
- package/dist/utils/storage.d.ts +190 -0
- package/dist/utils/storage.d.ts.map +1 -0
- package/dist/utils/string.d.ts +216 -0
- package/dist/utils/string.d.ts.map +1 -0
- package/dist/utils/template-resolver.d.ts +12 -0
- package/dist/utils/template-resolver.d.ts.map +1 -0
- package/dist/utils/toast.d.ts +25 -0
- package/dist/utils/toast.d.ts.map +1 -0
- package/dist/utils/transform-number.d.ts +108 -0
- package/dist/utils/transform-number.d.ts.map +1 -0
- package/dist/utils/url.d.ts +198 -0
- package/dist/utils/url.d.ts.map +1 -0
- package/package.json +120 -63
- package/dist/chunk-2FYNRDXR.js.map +0 -1
- package/dist/chunk-77KIJLPP.js +0 -37
- package/dist/chunk-A2Z7NVGL.js.map +0 -1
- package/dist/chunk-BV32OJ2A.js.map +0 -1
- package/dist/chunk-DDY7TLUI.js.map +0 -1
- package/dist/chunk-HO2GKTWJ.js.map +0 -1
- package/dist/chunk-IZOIO7PA.js.map +0 -1
- package/dist/chunk-JDTC2SBY.js.map +0 -1
- package/dist/chunk-KTCWPGON.js.map +0 -1
- package/dist/chunk-MEFT6XPH.js.map +0 -1
- package/dist/chunk-SNKGGHBT.js.map +0 -1
- package/dist/chunk-VAAIHNWQ.js.map +0 -1
- package/dist/chunk-XQXGE2PW.js +0 -16793
- package/dist/chunk-XQXGE2PW.js.map +0 -1
- package/dist/chunk-XWL6J6IO.js.map +0 -1
- package/dist/chunk-XXP3ZGU6.js.map +0 -1
- package/dist/chunk-YJMAQL3S.js.map +0 -1
- package/dist/index-nmJ8Muwg.d.ts +0 -2368
- package/dist/settings-CAC0qFjS.d.ts +0 -455
- package/dist/text-transform-D6MzzF7V.d.ts +0 -165
- 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
|
-
*
|
|
2
|
+
* Prism Accessibility Module
|
|
5
3
|
*
|
|
6
|
-
*
|
|
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
|
-
*
|
|
12
|
-
* -
|
|
13
|
-
* -
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/accessibility/vision-mode.tsx"],"names":[],"mappings":";;;;;AAyEA,IAAM,WAAA,GAAc,mBAAA;AACpB,IAAM,mBAAA,GAAsB,sBAAA;AAKrB,IAAM,mBAAA,GAA0C;AAAA,EACrD;AAAA,IACE,KAAA,EAAO,QAAA;AAAA,IACP,KAAA,EAAO,eAAA;AAAA,IACP,WAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,KAAA,EAAO,YAAA;AAAA,IACP,KAAA,EAAO,YAAA;AAAA,IACP,WAAA,EAAa,sDAAA;AAAA,IACb,UAAA,EAAY;AAAA,GACd;AAAA,EACA;AAAA,IACE,KAAA,EAAO,cAAA;AAAA,IACP,KAAA,EAAO,cAAA;AAAA,IACP,WAAA,EAAa,wDAAA;AAAA,IACb,UAAA,EAAY;AAAA,GACd;AAAA,EACA;AAAA,IACE,KAAA,EAAO,YAAA;AAAA,IACP,KAAA,EAAO,YAAA;AAAA,IACP,WAAA,EAAa,yDAAA;AAAA,IACb,UAAA,EAAY;AAAA,GACd;AAAA,EACA;AAAA,IACE,KAAA,EAAO,eAAA;AAAA,IACP,KAAA,EAAO,eAAA;AAAA,IACP,WAAA,EAAa,2CAAA;AAAA,IACb,UAAA,EAAY;AAAA;AAEhB;AAWA,IAAM,eAAA,GAAkB;AAAA;AAAA,EAEtB,UAAA,EAAY;AAAA;AAAA;AAAA;AAAA;AAAA,EAAA,CAAA;AAAA;AAAA,EAOZ,YAAA,EAAc;AAAA;AAAA;AAAA;AAAA;AAAA,EAAA,CAAA;AAAA;AAAA,EAOd,UAAA,EAAY;AAAA;AAAA;AAAA;AAAA;AAAA,EAAA,CAAA;AAAA;AAAA,EAOZ,aAAA,EAAe;AAAA;AAAA;AAAA;AAAA;AAAA,EAAA;AAMjB,CAAA;AAMA,SAAS,aAAA,GAA2B;AAClC,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,EAAA,EAAI,mBAAA;AAAA,MACJ,KAAA,EAAO;AAAA,QACL,QAAA,EAAU,UAAA;AAAA,QACV,KAAA,EAAO,CAAA;AAAA,QACP,MAAA,EAAQ,CAAA;AAAA,QACR,QAAA,EAAU,QAAA;AAAA,QACV,aAAA,EAAe;AAAA,OACjB;AAAA,MACA,aAAA,EAAY,MAAA;AAAA,MAEZ,8BAAC,KAAA,EAAA,EAAI,KAAA,EAAM,4BAAA,EAA6B,aAAA,EAAY,QAClD,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EACE,QAAA,EAAA,MAAA,CAAO,OAAA,CAAQ,eAAe,CAAA,CAAE,GAAA,CAAI,CAAC,CAAC,MAAM,MAAM,CAAA,qBACjD,GAAA,CAAC,QAAA,EAAA,EAAkB,IAAI,CAAA,EAAG,IAAI,CAAA,OAAA,CAAA,EAC5B,QAAA,kBAAA,GAAA,CAAC,mBAAc,IAAA,EAAK,QAAA,EAAS,EAAA,EAAG,eAAA,EAAgB,QAAQ,MAAA,EAAQ,CAAA,EAAA,EADrD,IAEb,CACD,GACH,CAAA,EACF;AAAA;AAAA,GACF;AAEJ;AAMA,IAAM,iBAAA,GAAoB,cAA6C,IAAI,CAAA;AAsDpE,SAAS,kBAAA,CAAmB;AAAA,EACjC,QAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA,GAAa,WAAA;AAAA,EACb,kBAAA,GAAqB,KAAA;AAAA,EACrB,aAAA,GAAgB;AAClB,CAAA,EAAuC;AAErC,EAAA,MAAM,CAAC,IAAA,EAAM,YAAY,CAAA,GAAI,SAAqB,MAAM;AACtD,IAAA,IAAI,OAAO,MAAA,KAAW,WAAA,EAAa,OAAO,WAAA,IAAe,QAAA;AACzD,IAAA,IAAI,kBAAA,SAA2B,WAAA,IAAe,QAAA;AAE9C,IAAA,IAAI;AACF,MAAA,MAAM,MAAA,GAAS,YAAA,CAAa,OAAA,CAAQ,UAAU,CAAA;AAC9C,MAAA,IAAI,MAAA,EAAQ;AACV,QAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,MAAM,CAAA;AAChC,QAAA,IAAI,oBAAoB,IAAA,CAAK,CAAC,QAAQ,GAAA,CAAI,KAAA,KAAU,MAAM,CAAA,EAAG;AAC3D,UAAA,OAAO,MAAA;AAAA,QACT;AAAA,MACF;AAAA,IACF,CAAA,CAAA,MAAQ;AAAA,IAER;AACA,IAAA,OAAO,WAAA,IAAe,QAAA;AAAA,EACxB,CAAC,CAAA;AAED,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAI,SAAS,KAAK,CAAA;AAGtD,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,OAAO,QAAA,KAAa,WAAA,IAAe,CAAC,QAAA,CAAS,cAAA,CAAe,mBAAmB,CAAA,EAAG;AACpF,MAAA,eAAA,CAAgB,IAAI,CAAA;AAAA,IACtB;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAGL,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,OAAO,QAAA,KAAa,WAAA,EAAa,OAAO,MAAA;AAE5C,IAAA,IAAI,SAAS,QAAA,EAAU;AACrB,MAAA,QAAA,CAAS,eAAA,CAAgB,gBAAgB,aAAa,CAAA;AAAA,IACxD,CAAA,MAAO;AACL,MAAA,QAAA,CAAS,eAAA,CAAgB,YAAA,CAAa,aAAA,EAAe,IAAI,CAAA;AAAA,IAC3D;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,QAAA,CAAS,eAAA,CAAgB,gBAAgB,aAAa,CAAA;AAAA,IACxD,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,IAAA,EAAM,aAAa,CAAC,CAAA;AAGxB,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,kBAAA,IAAsB,OAAO,YAAA,KAAiB,WAAA,EAAa,OAAO,MAAA;AAEtE,IAAA,IAAI;AACF,MAAA,YAAA,CAAa,OAAA,CAAQ,UAAA,EAAY,IAAA,CAAK,SAAA,CAAU,IAAI,CAAC,CAAA;AAAA,IACvD,CAAA,CAAA,MAAQ;AAAA,IAER;AACA,IAAA,OAAO,MAAA;AAAA,EACT,CAAA,EAAG,CAAC,IAAA,EAAM,UAAA,EAAY,kBAAkB,CAAC,CAAA;AAGzC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,kBAAA,IAAsB,OAAO,MAAA,KAAW,WAAA,EAAa,OAAO,MAAA;AAEhE,IAAA,MAAM,aAAA,GAAgB,CAAC,CAAA,KAAoB;AACzC,MAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,UAAA,IAAc,CAAC,EAAE,QAAA,EAAU;AACzC,MAAA,IAAI;AACF,QAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,CAAA,CAAE,QAAQ,CAAA;AACpC,QAAA,IAAI,oBAAoB,IAAA,CAAK,CAAC,QAAQ,GAAA,CAAI,KAAA,KAAU,MAAM,CAAA,EAAG;AAC3D,UAAA,YAAA,CAAa,MAAM,CAAA;AAAA,QACrB;AAAA,MACF,CAAA,CAAA,MAAQ;AAAA,MAER;AAAA,IACF,CAAA;AAEA,IAAA,MAAA,CAAO,gBAAA,CAAiB,WAAW,aAAa,CAAA;AAChD,IAAA,OAAO,MAAM,MAAA,CAAO,mBAAA,CAAoB,SAAA,EAAW,aAAa,CAAA;AAAA,EAClE,CAAA,EAAG,CAAC,UAAA,EAAY,kBAAkB,CAAC,CAAA;AAEnC,EAAA,MAAM,OAAA,GAAU,WAAA,CAAY,CAAC,OAAA,KAAwB;AACnD,IAAA,YAAA,CAAa,OAAO,CAAA;AAAA,EACtB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,MAAA,GAAS,WAAA,CAAY,CAAC,UAAA,GAAyB,YAAA,KAAiB;AACpE,IAAA,YAAA,CAAa,CAAC,OAAA,KAAa,OAAA,KAAY,QAAA,GAAW,aAAa,QAAS,CAAA;AAAA,EAC1E,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,KAAA,GAAQ,YAAY,MAAM;AAC9B,IAAA,YAAA,CAAa,QAAQ,CAAA;AAAA,EACvB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,KAAA,GAAgC;AAAA,IACpC,IAAA;AAAA,IACA,OAAA;AAAA,IACA,MAAA;AAAA,IACA,KAAA;AAAA,IACA,YAAY,IAAA,KAAS;AAAA,GACvB;AAEA,EAAA,uBACE,IAAA,CAAC,iBAAA,CAAkB,QAAA,EAAlB,EAA2B,KAAA,EACzB,QAAA,EAAA;AAAA,IAAA,YAAA,IAAgB,OAAO,QAAA,KAAa,WAAA,IAAe,QAAA,CAAS,IAAA,GACzD,YAAA,iBAAa,GAAA,CAAC,aAAA,EAAA,EAAc,CAAA,EAAI,QAAA,CAAS,IAAI,CAAA,GAC7C,IAAA;AAAA,IACH;AAAA,GAAA,EACH,CAAA;AAEJ;AA8BO,SAAS,aAAA,GAAwC;AACtD,EAAA,MAAM,OAAA,GAAU,WAAW,iBAAiB,CAAA;AAE5C,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,IAAI,MAAM,wDAAwD,CAAA;AAAA,EAC1E;AAEA,EAAA,OAAO,OAAA;AACT;AA8BO,SAAS,mBAAA,CAAoB,gBAAgB,aAAA,EAAmD;AACrG,EAAA,MAAM,KAAA,GAA8C,CAAC,YAAA,EAAc,cAAA,EAAgB,cAAc,eAAe,CAAA;AAEhH,EAAA,OAAO,MAAA,CAAO,WAAA;AAAA,IACZ,MAAM,GAAA,CAAI,CAAC,IAAA,KAAS,CAAC,QAAQ,aAAa,CAAA,EAAA,EAAK,IAAI,CAAA,uBAAA,CAAA,EAA2B,EAAE,MAAA,EAAQ,CAAA,MAAA,EAAS,IAAI,CAAA,SAAA,CAAA,EAAa,CAAC;AAAA,GACrH;AACF","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"}
|