@omnitron-dev/prism 0.1.3 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +187 -50
- package/dist/blocks/index.js.map +1 -1
- package/dist/{chunk-UR6X3W5I.js → chunk-6AHI4GSV.js} +3 -3
- package/dist/chunk-6AHI4GSV.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-BTIT7WYH.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-HO2GKTWJ.js → chunk-BRDWQVRT.js} +2 -2
- package/dist/chunk-BRDWQVRT.js.map +1 -0
- package/dist/{chunk-WC2WM2JD.js → chunk-BZOL7GMU.js} +36 -18
- package/dist/chunk-BZOL7GMU.js.map +1 -0
- package/dist/chunk-DRFNMZLG.js +192 -0
- package/dist/chunk-DRFNMZLG.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-LAEY5USO.js → chunk-OBJ244BO.js} +608 -95
- package/dist/chunk-OBJ244BO.js.map +1 -0
- package/dist/{chunk-E3XANPTO.js → chunk-S6SEGBX6.js} +32 -209
- package/dist/chunk-S6SEGBX6.js.map +1 -0
- package/dist/chunk-SNZK5X6F.js +594 -0
- package/dist/chunk-SNZK5X6F.js.map +1 -0
- package/dist/chunk-WFD54GQQ.js +1940 -0
- package/dist/chunk-WFD54GQQ.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-YQW43BDH.js +11978 -0
- package/dist/chunk-YQW43BDH.js.map +1 -0
- package/dist/{chunk-XWL6J6IO.js → chunk-YSIG2XYH.js} +2 -2
- package/dist/chunk-YSIG2XYH.js.map +1 -0
- package/dist/chunk-Z5OSPAOC.js +1576 -0
- package/dist/chunk-Z5OSPAOC.js.map +1 -0
- package/dist/{chunk-DXXZ3ITR.js → chunk-ZTATTUH7.js} +851 -500
- package/dist/chunk-ZTATTUH7.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 +35 -41
- 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-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 +15 -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/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 +42 -0
- package/dist/components/editor/icons/index.d.ts.map +1 -0
- package/dist/components/editor/index.d.ts +44 -0
- package/dist/components/editor/index.d.ts.map +1 -0
- package/dist/components/editor/index.js +3 -0
- package/dist/components/editor/index.js.map +1 -0
- 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 +131 -0
- package/dist/components/index.css.map +1 -0
- package/dist/components/index.d.ts +61 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +13 -0
- package/dist/components/index.js.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 +63 -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/MapPointPicker.d.ts +26 -0
- package/dist/components/map/MapPointPicker.d.ts.map +1 -0
- package/dist/components/map/index.d.ts +14 -0
- package/dist/components/map/index.d.ts.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/components/popover/popover.d.ts +124 -0
- 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/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 +59 -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 +46 -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 +45 -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 -453
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +6 -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 +67 -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 -7
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +8 -8
- 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/index.d.ts +19 -9108
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +107 -11678
- 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/layout.d.ts +90 -0
- package/dist/layouts/dashboard/layout.d.ts.map +1 -0
- package/dist/layouts/dashboard/sidenav.d.ts +58 -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 +27 -850
- package/dist/layouts/index.d.ts.map +1 -0
- package/dist/layouts/index.js +3 -4
- 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 +155 -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 +204 -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 +53 -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 +131 -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 +2 -3
- package/dist/theme/mixins.d.ts +332 -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.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-BrDNftd5.d.ts → types/blocks.d.ts} +30 -191
- package/dist/types/blocks.d.ts.map +1 -0
- package/dist/types/components.d.ts +139 -0
- package/dist/types/components.d.ts.map +1 -0
- package/dist/{config-BA6IeTq9.d.ts → types/config.d.ts} +14 -16
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/index.d.ts +11 -144
- 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-CrXLfP1c.d.ts → types/theme.d.ts} +31 -34
- package/dist/types/theme.d.ts.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 +77 -61
- package/dist/chunk-77KIJLPP.js +0 -37
- package/dist/chunk-77KIJLPP.js.map +0 -1
- package/dist/chunk-BTIT7WYH.js.map +0 -1
- package/dist/chunk-BV32OJ2A.js.map +0 -1
- package/dist/chunk-DDY7TLUI.js.map +0 -1
- package/dist/chunk-DXXZ3ITR.js.map +0 -1
- package/dist/chunk-E3XANPTO.js.map +0 -1
- package/dist/chunk-GYDT5EKX.js +0 -16505
- package/dist/chunk-GYDT5EKX.js.map +0 -1
- package/dist/chunk-HO2GKTWJ.js.map +0 -1
- package/dist/chunk-JDTC2SBY.js.map +0 -1
- package/dist/chunk-LAEY5USO.js.map +0 -1
- package/dist/chunk-UR6X3W5I.js.map +0 -1
- package/dist/chunk-WC2WM2JD.js.map +0 -1
- package/dist/chunk-XWL6J6IO.js.map +0 -1
- package/dist/index-odhPSv9I.d.ts +0 -2491
- package/dist/settings-plpR26Xk.d.ts +0 -455
- package/dist/use-timeout-D7U3EAtH.d.ts +0 -808
package/package.json
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@omnitron-dev/prism",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Design System Constructor - High-level UI building blocks for complex frontends",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"module": "./dist/index.js",
|
|
8
8
|
"types": "./dist/index.d.ts",
|
|
9
|
+
"_exportsNote": "Every subpath here is backed by a tsup entry in tsup.config.ts. The globs `./components/*` and `./blocks/*` used to be here and were not: they made every component directory resolvable to TypeScript while only three of them shipped JavaScript, so an import like `@omnitron-dev/prism/components/alert` typechecked and failed in the browser — the documentation recommended that style in 55 places. `./utils` was declared with no entry at all. Add an entry to tsup.config.ts and a line here together, or not at all.",
|
|
9
10
|
"exports": {
|
|
10
11
|
".": {
|
|
11
12
|
"types": "./dist/index.d.ts",
|
|
@@ -27,21 +28,17 @@
|
|
|
27
28
|
"types": "./dist/blocks/index.d.ts",
|
|
28
29
|
"import": "./dist/blocks/index.js"
|
|
29
30
|
},
|
|
30
|
-
"./blocks/*": {
|
|
31
|
-
"types": "./dist/blocks/*/index.d.ts",
|
|
32
|
-
"import": "./dist/blocks/*/index.js"
|
|
33
|
-
},
|
|
34
31
|
"./components": {
|
|
35
32
|
"types": "./dist/components/index.d.ts",
|
|
36
33
|
"import": "./dist/components/index.js"
|
|
37
34
|
},
|
|
38
|
-
"./components
|
|
39
|
-
"types": "./dist/components
|
|
40
|
-
"import": "./dist/components
|
|
35
|
+
"./components/editor": {
|
|
36
|
+
"types": "./dist/components/editor/index.d.ts",
|
|
37
|
+
"import": "./dist/components/editor/index.js"
|
|
41
38
|
},
|
|
42
|
-
"./
|
|
43
|
-
"types": "./dist/
|
|
44
|
-
"import": "./dist/
|
|
39
|
+
"./components/emoji-picker": {
|
|
40
|
+
"types": "./dist/components/emoji-picker/index.d.ts",
|
|
41
|
+
"import": "./dist/components/emoji-picker/index.js"
|
|
45
42
|
},
|
|
46
43
|
"./state": {
|
|
47
44
|
"types": "./dist/state/index.d.ts",
|
|
@@ -86,73 +83,82 @@
|
|
|
86
83
|
"@emotion/react": "^11.14.0",
|
|
87
84
|
"@emotion/styled": "^11.14.1",
|
|
88
85
|
"@hookform/resolvers": "5.2.2",
|
|
89
|
-
"@mui/icons-material": "^
|
|
90
|
-
"@mui/material": "^
|
|
91
|
-
"@mui/system": "^
|
|
92
|
-
"@mui/x-data-grid": "^
|
|
93
|
-
"@mui/x-date-pickers": "^
|
|
94
|
-
"@
|
|
95
|
-
"@tiptap/
|
|
96
|
-
"@tiptap/extension-
|
|
97
|
-
"@tiptap/extension-
|
|
98
|
-
"@tiptap/extension-
|
|
99
|
-
"@tiptap/extension-
|
|
100
|
-
"@tiptap/extension-task-
|
|
101
|
-
"@tiptap/extension-
|
|
102
|
-
"@tiptap/extension-
|
|
103
|
-
"@tiptap/
|
|
104
|
-
"@tiptap/
|
|
105
|
-
"@tiptap/
|
|
86
|
+
"@mui/icons-material": "^9.4.0",
|
|
87
|
+
"@mui/material": "^9.4.0",
|
|
88
|
+
"@mui/system": "^9.4.0",
|
|
89
|
+
"@mui/x-data-grid": "^9.13.0",
|
|
90
|
+
"@mui/x-date-pickers": "^9.13.0",
|
|
91
|
+
"@tanstack/react-virtual": "^3.14.10",
|
|
92
|
+
"@tiptap/core": "^3.31.3",
|
|
93
|
+
"@tiptap/extension-code-block-lowlight": "^3.31.3",
|
|
94
|
+
"@tiptap/extension-image": "^3.31.3",
|
|
95
|
+
"@tiptap/extension-link": "^3.31.3",
|
|
96
|
+
"@tiptap/extension-placeholder": "^3.31.3",
|
|
97
|
+
"@tiptap/extension-task-item": "^3.31.3",
|
|
98
|
+
"@tiptap/extension-task-list": "^3.31.3",
|
|
99
|
+
"@tiptap/extension-text-align": "^3.31.3",
|
|
100
|
+
"@tiptap/extension-underline": "^3.31.3",
|
|
101
|
+
"@tiptap/pm": "^3.31.3",
|
|
102
|
+
"@tiptap/react": "^3.31.3",
|
|
103
|
+
"@tiptap/starter-kit": "^3.31.3",
|
|
106
104
|
"@types/turndown": "^5.0.6",
|
|
107
105
|
"class-variance-authority": "^0.7.1",
|
|
108
106
|
"clsx": "^2.1.1",
|
|
109
|
-
"
|
|
110
|
-
"
|
|
111
|
-
"
|
|
107
|
+
"commander": "^14.0.3",
|
|
108
|
+
"dayjs": "^1.11.23",
|
|
109
|
+
"framer-motion": "^13.2.0",
|
|
110
|
+
"immer": "^11.1.18",
|
|
112
111
|
"lowlight": "^3.3.0",
|
|
112
|
+
"maplibre-gl": "^6.7.0",
|
|
113
113
|
"nprogress": "^0.2.0",
|
|
114
|
-
"
|
|
115
|
-
"react-
|
|
114
|
+
"pmtiles": "^4.5.0",
|
|
115
|
+
"react-dropzone": "^20.1.1",
|
|
116
|
+
"react-hook-form": "^7.87.0",
|
|
117
|
+
"react-map-gl": "^8.1.3",
|
|
116
118
|
"react-markdown": "^10.1.0",
|
|
117
119
|
"rehype-highlight": "^7.0.2",
|
|
118
120
|
"rehype-raw": "^7.0.0",
|
|
121
|
+
"rehype-sanitize": "^6.0.0",
|
|
119
122
|
"remark-gfm": "^4.0.1",
|
|
120
|
-
"stylis": "^4.
|
|
123
|
+
"stylis": "^4.4.0",
|
|
121
124
|
"stylis-plugin-rtl": "^2.1.1",
|
|
122
|
-
"turndown": "^7.2.
|
|
123
|
-
"zod": "^4.
|
|
124
|
-
"zustand": "^5.0.
|
|
125
|
-
"@omnitron-dev/netron-browser": "0.
|
|
126
|
-
"@omnitron-dev/netron-react": "0.
|
|
125
|
+
"turndown": "^7.2.4",
|
|
126
|
+
"zod": "^4.5.4",
|
|
127
|
+
"zustand": "^5.0.15",
|
|
128
|
+
"@omnitron-dev/netron-browser": "0.3.0",
|
|
129
|
+
"@omnitron-dev/netron-react": "0.3.0"
|
|
127
130
|
},
|
|
128
131
|
"devDependencies": {
|
|
129
|
-
"@axe-core/playwright": "^4.
|
|
130
|
-
"@mui/lab": "
|
|
131
|
-
"@playwright/test": "^1.
|
|
132
|
-
"@testing-library/jest-dom": "^
|
|
133
|
-
"@testing-library/react": "^16.3.
|
|
134
|
-
"@testing-library/user-event": "^14.6.
|
|
135
|
-
"@types/node": "^25.
|
|
132
|
+
"@axe-core/playwright": "^4.13.0",
|
|
133
|
+
"@mui/lab": "9.0.0-beta.3",
|
|
134
|
+
"@playwright/test": "^1.62.1",
|
|
135
|
+
"@testing-library/jest-dom": "^7.0.1",
|
|
136
|
+
"@testing-library/react": "^16.3.3",
|
|
137
|
+
"@testing-library/user-event": "^14.6.7",
|
|
138
|
+
"@types/node": "^25.9.5",
|
|
136
139
|
"@types/nprogress": "^0.2.3",
|
|
137
|
-
"@types/react": "^19.2.
|
|
138
|
-
"@types/react-dom": "^19.2.
|
|
139
|
-
"@vitejs/plugin-react-swc": "^4.
|
|
140
|
-
"@vitest/coverage-v8": "^
|
|
141
|
-
"apexcharts": "^
|
|
142
|
-
"
|
|
143
|
-
"
|
|
144
|
-
"react-
|
|
145
|
-
"
|
|
140
|
+
"@types/react": "^19.2.18",
|
|
141
|
+
"@types/react-dom": "^19.2.7",
|
|
142
|
+
"@vitejs/plugin-react-swc": "^4.3.3",
|
|
143
|
+
"@vitest/coverage-v8": "^5.0.0",
|
|
144
|
+
"apexcharts": "^7.1.0",
|
|
145
|
+
"happy-dom": "^20.14.0",
|
|
146
|
+
"react-apexcharts": "^2.1.1",
|
|
147
|
+
"react-router-dom": "7.18.3",
|
|
148
|
+
"sonner": "^2.0.8",
|
|
146
149
|
"tsup": "^8.5.1",
|
|
147
|
-
"typescript": "^
|
|
148
|
-
"vite": "^8.
|
|
149
|
-
"vitest": "^
|
|
150
|
+
"typescript": "^7.0.2",
|
|
151
|
+
"vite": "^8.2.2",
|
|
152
|
+
"vitest": "^5.0.0"
|
|
150
153
|
},
|
|
151
154
|
"peerDependencies": {
|
|
152
155
|
"apexcharts": ">=5.0.0",
|
|
153
156
|
"react": "^19.0.0",
|
|
154
157
|
"react-apexcharts": ">=1.8.0",
|
|
155
|
-
"react-dom": "^19.0.0"
|
|
158
|
+
"react-dom": "^19.0.0",
|
|
159
|
+
"react-router": "^7.0.0",
|
|
160
|
+
"react-router-dom": "^7.0.0",
|
|
161
|
+
"sonner": "^2.0.0"
|
|
156
162
|
},
|
|
157
163
|
"peerDependenciesMeta": {
|
|
158
164
|
"apexcharts": {
|
|
@@ -160,6 +166,15 @@
|
|
|
160
166
|
},
|
|
161
167
|
"react-apexcharts": {
|
|
162
168
|
"optional": true
|
|
169
|
+
},
|
|
170
|
+
"react-router": {
|
|
171
|
+
"optional": true
|
|
172
|
+
},
|
|
173
|
+
"react-router-dom": {
|
|
174
|
+
"optional": true
|
|
175
|
+
},
|
|
176
|
+
"sonner": {
|
|
177
|
+
"optional": true
|
|
163
178
|
}
|
|
164
179
|
},
|
|
165
180
|
"keywords": [
|
|
@@ -180,11 +195,12 @@
|
|
|
180
195
|
"url": "https://github.com/omnitron-dev/prism"
|
|
181
196
|
},
|
|
182
197
|
"scripts": {
|
|
183
|
-
"build": "tsup",
|
|
198
|
+
"build": "tsup && tsc -p tsconfig.build.json",
|
|
184
199
|
"dev": "tsup --watch",
|
|
185
200
|
"typecheck": "tsc --noEmit",
|
|
186
201
|
"lint": "eslint src",
|
|
187
|
-
"test": "vitest",
|
|
202
|
+
"test": "vitest run",
|
|
203
|
+
"test:coverage": "vitest run --coverage",
|
|
188
204
|
"test:e2e": "playwright test",
|
|
189
205
|
"test:e2e:ui": "playwright test --ui",
|
|
190
206
|
"test:e2e:debug": "playwright test --debug",
|
package/dist/chunk-77KIJLPP.js
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
var __create = Object.create;
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
-
var __esm = (fn, res) => function __init() {
|
|
8
|
-
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
|
|
9
|
-
};
|
|
10
|
-
var __commonJS = (cb, mod) => function __require() {
|
|
11
|
-
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
12
|
-
};
|
|
13
|
-
var __export = (target, all) => {
|
|
14
|
-
for (var name in all)
|
|
15
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
16
|
-
};
|
|
17
|
-
var __copyProps = (to, from, except, desc) => {
|
|
18
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
19
|
-
for (let key of __getOwnPropNames(from))
|
|
20
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
21
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
22
|
-
}
|
|
23
|
-
return to;
|
|
24
|
-
};
|
|
25
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
26
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
27
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
28
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
29
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
30
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
31
|
-
mod
|
|
32
|
-
));
|
|
33
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
34
|
-
|
|
35
|
-
export { __commonJS, __esm, __export, __toCommonJS, __toESM };
|
|
36
|
-
//# sourceMappingURL=chunk-77KIJLPP.js.map
|
|
37
|
-
//# sourceMappingURL=chunk-77KIJLPP.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-77KIJLPP.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/state/stores/theme.ts","../src/state/stores/auth.ts","../src/state/stores/ui.ts","../src/state/settings-version.ts"],"names":["defaultState"],"mappings":"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","file":"chunk-BTIT7WYH.js","sourcesContent":["/**\n * Theme Store\n *\n * @deprecated Use useSettingsStore from './settings' instead.\n * This store is maintained for backwards compatibility only.\n * The useSettingsStore provides the same functionality plus additional\n * settings like navLayout, density, fontSize, and more.\n *\n * Migration example:\n * ```tsx\n * // Before (deprecated)\n * const { mode, setMode } = useThemeStore();\n *\n * // After (recommended)\n * const { mode, setMode } = useSettingsStore();\n * ```\n *\n * @module @omnitron-dev/prism/state/stores\n */\n\nimport { createPersistedStore, createSelectors } from '../create-store.js';\nimport type { ThemeMode, ThemeDirection } from '../../types/theme.js';\n\n/**\n * Theme store state and actions.\n */\nexport interface ThemeState {\n /** Current theme mode */\n mode: ThemeMode;\n /** Text direction */\n direction: ThemeDirection;\n /** Current preset name */\n preset: string;\n /** Compact layout mode */\n compactLayout: boolean;\n /** High contrast mode */\n contrast: 'default' | 'high';\n /** Primary color override */\n primaryColor: string | null;\n\n // Actions\n setMode: (mode: ThemeMode) => void;\n toggleMode: () => void;\n setDirection: (direction: ThemeDirection) => void;\n setPreset: (preset: string) => void;\n setCompactLayout: (compact: boolean) => void;\n setContrast: (contrast: 'default' | 'high') => void;\n setPrimaryColor: (color: string | null) => void;\n reset: () => void;\n}\n\nconst defaultState = {\n mode: 'light' as ThemeMode,\n direction: 'ltr' as ThemeDirection,\n preset: 'default',\n compactLayout: false,\n contrast: 'default' as const,\n primaryColor: null,\n};\n\n/**\n * Theme store with persistence.\n *\n * @example\n * ```tsx\n * function ThemeToggle() {\n * const { mode, toggleMode } = useThemeStore();\n * return <button onClick={toggleMode}>{mode}</button>;\n * }\n * ```\n */\nexport const useThemeStore = createPersistedStore<ThemeState>(\n (set) => ({\n ...defaultState,\n\n setMode: (mode) => set({ mode }),\n toggleMode: () =>\n set((state) => {\n state.mode = state.mode === 'light' ? 'dark' : 'light';\n }),\n setDirection: (direction) => set({ direction }),\n setPreset: (preset) => set({ preset }),\n setCompactLayout: (compactLayout) => set({ compactLayout }),\n setContrast: (contrast) => set({ contrast }),\n setPrimaryColor: (primaryColor) => set({ primaryColor }),\n reset: () => set(defaultState),\n }),\n 'theme'\n);\n\n/**\n * Theme store with auto-generated selectors.\n *\n * @example\n * ```tsx\n * const mode = themeStore.use.mode();\n * ```\n */\nexport const themeStore = createSelectors(useThemeStore);\n","/**\n * Auth Store\n *\n * Manages authentication state (UI-side).\n * Server-side token validation should use Netron auth.\n *\n * SECURITY NOTE: Tokens are stored in session storage (not localStorage)\n * and are NOT persisted across browser sessions. Only the auth status\n * is persisted to allow checking login state on page load.\n *\n * @module @omnitron-dev/prism/state/stores\n */\n\nimport { createPersistedStore, createUIStore, createSelectors } from '../create-store.js';\n\n/**\n * Authentication status.\n */\nexport type AuthStatus = 'loading' | 'authenticated' | 'unauthenticated';\n\n/**\n * Auth store state (persisted - only status).\n */\nexport interface AuthStoreState {\n /** Current auth status */\n status: AuthStatus;\n /** Session ID (non-sensitive) */\n sessionId: string | null;\n\n // Actions\n setStatus: (status: AuthStatus) => void;\n setAuthenticated: (sessionId?: string) => void;\n setUnauthenticated: () => void;\n clearSession: () => void;\n}\n\n/**\n * Token store state (non-persisted - memory only).\n * Tokens should NEVER be persisted to localStorage.\n */\ninterface TokenStoreState {\n /** Access token (memory-only, cleared on page refresh) */\n token: string | null;\n setToken: (token: string | null) => void;\n}\n\n/**\n * Token store - memory-only, NOT persisted.\n * For XSS security, tokens should not be in localStorage.\n */\nexport const useTokenStore = createUIStore<TokenStoreState>(\n (set) => ({\n token: null,\n setToken: (token) => set({ token }),\n }),\n 'token'\n);\n\n/**\n * Auth store with partial persistence.\n * Only status and sessionId are persisted, NOT the token.\n *\n * @example\n * ```tsx\n * function AuthGuard({ children }) {\n * const status = useAuthStore((s) => s.status);\n * const isAuthenticated = selectIsAuthenticated(useAuthStore.getState());\n *\n * if (status === 'loading') return <Spinner />;\n * if (!isAuthenticated) return <Navigate to=\"/login\" />;\n *\n * return children;\n * }\n * ```\n */\nexport const useAuthStore = createPersistedStore<AuthStoreState>(\n (set) => ({\n status: 'loading',\n sessionId: null,\n\n // Actions\n setStatus: (status) => set({ status }),\n\n setAuthenticated: (sessionId) => {\n set({\n status: 'authenticated',\n sessionId: sessionId ?? null,\n });\n },\n\n setUnauthenticated: () => {\n // Clear token from memory store\n useTokenStore.getState().setToken(null);\n set({\n status: 'unauthenticated',\n sessionId: null,\n });\n },\n\n clearSession: () => {\n // Clear token from memory\n useTokenStore.getState().setToken(null);\n // Clear any stored session data\n if (typeof window !== 'undefined') {\n window.sessionStorage.removeItem('sessionId');\n }\n set({\n status: 'unauthenticated',\n sessionId: null,\n });\n },\n }),\n 'auth',\n {\n // Only persist non-sensitive data\n partialize: (state) =>\n ({\n status: state.status,\n sessionId: state.sessionId,\n }) as AuthStoreState,\n }\n);\n\n// =============================================================================\n// SELECTORS (computed state helpers)\n// =============================================================================\n\n/**\n * Select whether auth is loading.\n */\nexport function selectIsLoading(state: AuthStoreState): boolean {\n return state.status === 'loading';\n}\n\n/**\n * Select whether user is authenticated.\n */\nexport function selectIsAuthenticated(state: AuthStoreState): boolean {\n return state.status === 'authenticated';\n}\n\n/**\n * Select whether user is unauthenticated.\n */\nexport function selectIsUnauthenticated(state: AuthStoreState): boolean {\n return state.status === 'unauthenticated';\n}\n\n/**\n * Auth store with auto-generated selectors.\n */\nexport const authStore = createSelectors(useAuthStore);\n\n// =============================================================================\n// HELPER HOOKS\n// =============================================================================\n\n/**\n * Hook to set both token and auth status atomically.\n *\n * @example\n * ```tsx\n * const { login, logout } = useAuth();\n *\n * // On successful login\n * login(accessToken, sessionId);\n *\n * // On logout\n * logout();\n * ```\n */\nexport function useAuth() {\n const setToken = useTokenStore((s) => s.setToken);\n const { setAuthenticated, setUnauthenticated, clearSession } = useAuthStore();\n\n return {\n login: (token: string, sessionId?: string) => {\n setToken(token);\n setAuthenticated(sessionId);\n },\n logout: () => {\n setUnauthenticated();\n },\n clearSession,\n getToken: () => useTokenStore.getState().token,\n };\n}\n","/**\n * UI Store\n *\n * Manages transient UI state (not persisted).\n *\n * @module @omnitron-dev/prism/state/stores\n */\n\nimport { createUIStore, createSelectors } from '../create-store.js';\n\n/**\n * UI store state and actions.\n */\nexport interface UIState {\n /** Sidebar open state */\n sidebarOpen: boolean;\n /** Sidebar collapsed state (mini mode) */\n sidebarCollapsed: boolean;\n /** Active dialog ID */\n activeDialog: string | null;\n /** Global loading overlay */\n globalLoading: boolean;\n /** Search modal open */\n searchOpen: boolean;\n\n // Actions\n toggleSidebar: () => void;\n setSidebarOpen: (open: boolean) => void;\n setSidebarCollapsed: (collapsed: boolean) => void;\n openDialog: (dialogId: string) => void;\n closeDialog: () => void;\n setGlobalLoading: (loading: boolean) => void;\n toggleSearch: () => void;\n setSearchOpen: (open: boolean) => void;\n}\n\n/**\n * UI store for transient state.\n *\n * @example\n * ```tsx\n * function Sidebar() {\n * const { sidebarOpen, sidebarCollapsed, toggleSidebar } = useUIStore();\n *\n * return (\n * <Drawer\n * open={sidebarOpen}\n * variant={sidebarCollapsed ? 'mini' : 'permanent'}\n * >\n * <SidebarContent />\n * </Drawer>\n * );\n * }\n * ```\n */\nexport const useUIStore = createUIStore<UIState>(\n (set) => ({\n sidebarOpen: true,\n sidebarCollapsed: false,\n activeDialog: null,\n globalLoading: false,\n searchOpen: false,\n\n toggleSidebar: () =>\n set((state) => {\n state.sidebarOpen = !state.sidebarOpen;\n }),\n\n setSidebarOpen: (sidebarOpen) => set({ sidebarOpen }),\n\n setSidebarCollapsed: (sidebarCollapsed) => set({ sidebarCollapsed }),\n\n openDialog: (dialogId) => set({ activeDialog: dialogId }),\n\n closeDialog: () => set({ activeDialog: null }),\n\n setGlobalLoading: (globalLoading) => set({ globalLoading }),\n\n toggleSearch: () =>\n set((state) => {\n state.searchOpen = !state.searchOpen;\n }),\n\n setSearchOpen: (searchOpen) => set({ searchOpen }),\n }),\n 'ui'\n);\n\n/**\n * UI store with auto-generated selectors.\n */\nexport const uiStore = createSelectors(useUIStore);\n","/**\n * Settings Version Management\n *\n * Utilities for managing versioned settings with safe migrations.\n * Enables breaking changes to settings structure while preserving user data.\n *\n * @module @omnitron-dev/prism/state\n */\n\nimport { createJSONStorage, type PersistOptions, type StateStorage } from 'zustand/middleware';\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/**\n * Migration function signature.\n * Transforms settings from one version to the next.\n */\nexport type MigrationFn<TPrev = unknown, TNext = unknown> = (prevState: TPrev) => TNext;\n\n/**\n * Version-specific migration configuration.\n */\nexport interface VersionMigration<TPrev = unknown, TNext = unknown> {\n /** Target version number */\n version: number;\n /** Migration function */\n migrate: MigrationFn<TPrev, TNext>;\n}\n\n/**\n * Versioned settings configuration.\n */\nexport interface VersionedSettingsConfig<TState> {\n /** Current version number (increment when structure changes) */\n version: number;\n /** Storage key prefix */\n name: string;\n /** Ordered list of migrations (version -> next version) */\n migrations: VersionMigration[];\n /** Validation function (optional) */\n validate?: (state: unknown) => state is TState;\n /** Called when migration fails */\n onMigrationError?: (error: unknown, fromVersion: number, toVersion: number) => void;\n /** Called when stored data is corrupt/invalid */\n onCorruptData?: (error: unknown, rawData: unknown) => void;\n /** Default state (used when migration fails or data is corrupt) */\n defaultState: TState;\n}\n\n/**\n * Persisted settings with version metadata.\n */\nexport interface VersionedPersistedState<TState> {\n state: TState;\n version: number;\n}\n\n// =============================================================================\n// MIGRATION ENGINE\n// =============================================================================\n\n/**\n * Run migrations from one version to another.\n *\n * @param state - Current state\n * @param fromVersion - Starting version\n * @param toVersion - Target version\n * @param migrations - Available migrations\n * @returns Migrated state or null if migration failed\n */\nexport function runMigrations<TState>(\n state: unknown,\n fromVersion: number,\n toVersion: number,\n migrations: VersionMigration[]\n): TState | null {\n if (fromVersion >= toVersion) {\n return state as TState;\n }\n\n // Sort migrations by version\n const sortedMigrations = [...migrations].sort((a, b) => a.version - b.version);\n\n let currentState = state;\n let currentVersion = fromVersion;\n\n // Apply each migration in sequence\n for (const migration of sortedMigrations) {\n if (migration.version > fromVersion && migration.version <= toVersion) {\n try {\n currentState = migration.migrate(currentState);\n currentVersion = migration.version;\n } catch (error) {\n console.error(`[SettingsVersion] Migration to v${migration.version} failed:`, error);\n return null;\n }\n }\n }\n\n if (currentVersion !== toVersion) {\n console.warn(`[SettingsVersion] Migration incomplete: reached v${currentVersion}, expected v${toVersion}`);\n }\n\n return currentState as TState;\n}\n\n// =============================================================================\n// VERSIONED STORAGE\n// =============================================================================\n\n/**\n * Create a versioned storage adapter for Zustand persist.\n *\n * This adapter handles:\n * - Version tracking in stored data\n * - Automatic migrations when version changes\n * - Safe fallback to defaults on corrupt data\n *\n * @example\n * ```tsx\n * interface AppSettings {\n * theme: 'light' | 'dark';\n * language: string;\n * notifications: { email: boolean; push: boolean };\n * }\n *\n * const versionedStorage = createVersionedStorage<AppSettings>({\n * version: 3,\n * name: 'app-settings',\n * defaultState: {\n * theme: 'light',\n * language: 'en',\n * notifications: { email: true, push: true },\n * },\n * migrations: [\n * {\n * version: 2,\n * migrate: (prev: { theme: string }) => ({\n * ...prev,\n * language: 'en', // Added in v2\n * }),\n * },\n * {\n * version: 3,\n * migrate: (prev: { theme: string; language: string }) => ({\n * ...prev,\n * notifications: { email: true, push: true }, // Added in v3\n * }),\n * },\n * ],\n * });\n *\n * // Use with createPrismStore\n * const useSettings = createPrismStore<AppSettings>(\n * (set) => ({\n * ...versionedStorage.defaultState,\n * setTheme: (theme) => set({ theme }),\n * }),\n * {\n * name: 'settings',\n * persist: {\n * storage: versionedStorage.storage,\n * version: versionedStorage.version,\n * migrate: versionedStorage.migrate,\n * },\n * }\n * );\n * ```\n */\nexport function createVersionedStorage<TState>(config: VersionedSettingsConfig<TState>): {\n storage: StateStorage;\n version: number;\n migrate: (persistedState: unknown, version: number) => TState;\n defaultState: TState;\n} {\n const { version, name, migrations, validate, onMigrationError, onCorruptData, defaultState } = config;\n\n const storageKey = `prism-settings-${name}`;\n\n /**\n * Custom storage adapter that handles versioned data.\n */\n const storage: StateStorage = {\n getItem(key) {\n try {\n const raw = localStorage.getItem(key);\n return raw;\n } catch (error) {\n console.error('[SettingsVersion] Storage read error:', error);\n return null;\n }\n },\n\n setItem(key, value) {\n try {\n localStorage.setItem(key, value);\n } catch (error) {\n console.error('[SettingsVersion] Storage write error:', error);\n }\n },\n\n removeItem(key) {\n try {\n localStorage.removeItem(key);\n } catch (error) {\n console.error('[SettingsVersion] Storage remove error:', error);\n }\n },\n };\n\n /**\n * Migration function for Zustand persist.\n */\n function migrate(persistedState: unknown, persistedVersion: number): TState {\n // No migration needed if versions match\n if (persistedVersion === version) {\n // Optionally validate\n if (validate && !validate(persistedState)) {\n console.warn('[SettingsVersion] Stored state failed validation, using defaults');\n onCorruptData?.(new Error('Validation failed'), persistedState);\n return defaultState;\n }\n return persistedState as TState;\n }\n\n // Run migrations\n const migrated = runMigrations<TState>(persistedState, persistedVersion, version, migrations);\n\n if (migrated === null) {\n // Migration failed\n onMigrationError?.(new Error('Migration failed'), persistedVersion, version);\n console.warn('[SettingsVersion] Migration failed, using defaults');\n return defaultState;\n }\n\n // Validate migrated state\n if (validate && !validate(migrated)) {\n onCorruptData?.(new Error('Post-migration validation failed'), migrated);\n console.warn('[SettingsVersion] Migrated state failed validation, using defaults');\n return defaultState;\n }\n\n console.log(`[SettingsVersion] Migrated from v${persistedVersion} to v${version}`);\n return migrated;\n }\n\n return {\n storage,\n version,\n migrate,\n defaultState,\n };\n}\n\n// =============================================================================\n// HELPER FUNCTIONS\n// =============================================================================\n\n/**\n * Create persist options for versioned settings.\n * Convenience function that returns properly typed PersistOptions.\n *\n * @example\n * ```tsx\n * const persistOptions = createVersionedPersistOptions<MySettings>({\n * version: 2,\n * name: 'my-settings',\n * defaultState: { /* ... *\\/ },\n * migrations: [{ version: 2, migrate: (prev) => ({ ...prev, newField: 'default' }) }],\n * });\n *\n * const useStore = createPrismStore(initializer, {\n * name: 'my-settings',\n * persist: persistOptions,\n * });\n * ```\n */\nexport function createVersionedPersistOptions<TState>(\n config: VersionedSettingsConfig<TState>\n): Partial<PersistOptions<TState>> {\n const versioned = createVersionedStorage(config);\n\n return {\n name: `prism-settings-${config.name}`,\n // Use createJSONStorage to properly wrap the StateStorage for Zustand persist\n storage: createJSONStorage(() => versioned.storage),\n version: versioned.version,\n migrate: versioned.migrate as (persistedState: unknown, version: number) => TState | Promise<TState>,\n };\n}\n\n/**\n * Check if settings need migration.\n *\n * @param name - Settings name\n * @param currentVersion - Current app settings version\n * @returns Object with migration status\n */\nexport function checkSettingsVersion(\n name: string,\n currentVersion: number\n): {\n needsMigration: boolean;\n storedVersion: number | null;\n currentVersion: number;\n} {\n const storageKey = `prism-settings-${name}`;\n\n try {\n const raw = localStorage.getItem(storageKey);\n if (!raw) {\n return {\n needsMigration: false,\n storedVersion: null,\n currentVersion,\n };\n }\n\n const parsed = JSON.parse(raw);\n const storedVersion = parsed?.version ?? 0;\n\n return {\n needsMigration: storedVersion !== currentVersion,\n storedVersion,\n currentVersion,\n };\n } catch {\n return {\n needsMigration: true,\n storedVersion: null,\n currentVersion,\n };\n }\n}\n\n/**\n * Clear stored settings (useful for testing or reset).\n */\nexport function clearSettings(name: string): void {\n const storageKey = `prism-settings-${name}`;\n try {\n localStorage.removeItem(storageKey);\n } catch {\n // Ignore storage errors\n }\n}\n\n/**\n * Export settings to JSON.\n */\nexport function exportSettings<TState>(name: string, currentVersion: number): VersionedPersistedState<TState> | null {\n const storageKey = `prism-settings-${name}`;\n\n try {\n const raw = localStorage.getItem(storageKey);\n if (!raw) return null;\n\n const parsed = JSON.parse(raw);\n return {\n state: parsed.state,\n version: parsed.version ?? currentVersion,\n };\n } catch {\n return null;\n }\n}\n\n/**\n * Import settings from JSON.\n * Will trigger migration if version differs.\n */\nexport function importSettings<TState>(name: string, data: VersionedPersistedState<TState>): void {\n const storageKey = `prism-settings-${name}`;\n\n try {\n localStorage.setItem(storageKey, JSON.stringify(data));\n } catch (error) {\n console.error('[SettingsVersion] Import failed:', error);\n }\n}\n\n// =============================================================================\n// TYPE GUARDS\n// =============================================================================\n\n/**\n * Create a type guard for settings validation.\n *\n * @example\n * ```tsx\n * const isValidSettings = createSettingsValidator<MySettings>({\n * requiredKeys: ['theme', 'language'],\n * typeChecks: {\n * theme: (v) => v === 'light' || v === 'dark',\n * language: (v) => typeof v === 'string',\n * },\n * });\n * ```\n */\nexport function createSettingsValidator<TState extends Record<string, unknown>>(config: {\n requiredKeys?: (keyof TState)[];\n typeChecks?: Partial<{ [K in keyof TState]: (value: unknown) => boolean }>;\n}): (state: unknown) => state is TState {\n return (state: unknown): state is TState => {\n if (typeof state !== 'object' || state === null) {\n return false;\n }\n\n const record = state as Record<string, unknown>;\n\n // Check required keys\n if (config.requiredKeys) {\n for (const key of config.requiredKeys) {\n if (!(key in record)) {\n return false;\n }\n }\n }\n\n // Run type checks\n if (config.typeChecks) {\n for (const [key, check] of Object.entries(config.typeChecks)) {\n if (key in record && check && !check(record[key])) {\n return false;\n }\n }\n }\n\n return true;\n };\n}\n\n// =============================================================================\n// MIGRATION HELPERS\n// =============================================================================\n\n/**\n * Creates a simple migration from one version to the next.\n *\n * @example\n * ```typescript\n * const v2Migration = createMigration(2, (state) => ({\n * ...state,\n * navLayout: 'vertical',\n * }));\n * ```\n */\nexport function createMigration<TPrev = unknown, TNext = unknown>(\n version: number,\n migrate: MigrationFn<TPrev, TNext>\n): VersionMigration<TPrev, TNext> {\n return { version, migrate };\n}\n\n/**\n * Creates a migration that renames a field.\n *\n * @example\n * ```typescript\n * const renameMigration = createRenameMigration(3, 'theme', 'mode', 'light');\n * ```\n */\nexport function createRenameMigration<TNext>(\n version: number,\n oldKey: string,\n newKey: string,\n defaultValue: unknown\n): VersionMigration {\n return {\n version,\n migrate: (state) => {\n const prev = state as Record<string, unknown>;\n const result = { ...prev } as Record<string, unknown>;\n\n // Get value from old key or use default\n const value = oldKey in prev ? prev[oldKey] : defaultValue;\n\n // Remove old key and add new key\n delete result[oldKey];\n result[newKey] = value;\n\n return result as TNext;\n },\n };\n}\n\n/**\n * Creates a migration that adds a new field with a default value.\n *\n * @example\n * ```typescript\n * const addFieldMigration = createAddFieldMigration(4, 'stretch', false);\n * ```\n */\nexport function createAddFieldMigration<TNext>(version: number, key: string, defaultValue: unknown): VersionMigration {\n return {\n version,\n migrate: (state) =>\n ({\n ...(state as object),\n [key]: defaultValue,\n }) as TNext,\n };\n}\n\n/**\n * Creates a migration that removes a field.\n *\n * @example\n * ```typescript\n * const removeFieldMigration = createRemoveFieldMigration(5, 'legacyOption');\n * ```\n */\nexport function createRemoveFieldMigration<TNext>(version: number, key: string): VersionMigration {\n return {\n version,\n migrate: (state) => {\n const result = { ...(state as object) } as Record<string, unknown>;\n delete result[key];\n return result as TNext;\n },\n };\n}\n\n/**\n * Creates a migration that transforms a field's value.\n *\n * @example\n * ```typescript\n * const transformMigration = createTransformMigration(\n * 6,\n * 'fontSize',\n * (value) => typeof value === 'string' ? parseInt(value, 10) : value,\n * 16\n * );\n * ```\n */\nexport function createTransformMigration<TNext>(\n version: number,\n key: string,\n transform: (value: unknown) => unknown,\n defaultValue: unknown\n): VersionMigration {\n return {\n version,\n migrate: (state) => {\n const prev = state as Record<string, unknown>;\n const oldValue = key in prev ? prev[key] : undefined;\n const newValue = oldValue !== undefined ? transform(oldValue) : defaultValue;\n\n return {\n ...prev,\n [key]: newValue,\n } as TNext;\n },\n };\n}\n\n/**\n * Validates that migrations are in correct sequential order.\n *\n * @throws If migrations have duplicate versions\n */\nexport function validateMigrations(migrations: VersionMigration[]): void {\n const versions = migrations.map((m) => m.version).sort((a, b) => a - b);\n\n // Check for duplicates\n const uniqueVersions = new Set(versions);\n if (uniqueVersions.size !== versions.length) {\n throw new Error('[SettingsVersion] Duplicate migration versions detected');\n }\n\n // Check that versions are positive integers\n for (const version of versions) {\n if (!Number.isInteger(version) || version < 1) {\n throw new Error(`[SettingsVersion] Invalid migration version: ${version}. Must be a positive integer.`);\n }\n }\n}\n\n/**\n * Gets migration info for debugging.\n */\nexport function getMigrationInfo(migrations: VersionMigration[]): Array<{ version: number }> {\n return migrations.map((m) => ({ version: m.version })).sort((a, b) => a.version - b.version);\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/registry/manager.ts","../src/registry/installer.ts","../src/registry/index.ts"],"names":["registry","path","fs"],"mappings":"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","file":"chunk-BV32OJ2A.js","sourcesContent":["/**\n * Registry Manager\n *\n * Core registry management for Prism components and blocks.\n * Handles loading, merging, querying, and caching of registry data.\n *\n * Key Features:\n * - Multiple registry sources (local, remote, merged)\n * - Automatic dependency resolution\n * - Version management and compatibility checking\n * - Caching with configurable TTL\n *\n * @module @omnitron-dev/prism/registry/manager\n */\n\nimport type { RegistrySchema, ComponentDefinition, RegistryConfig, RemoteRegistryConfig } from '../types/registry.js';\nimport type { BlockDefinition } from '../types/blocks.js';\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\nexport interface RegistryManagerOptions {\n /** Base directory for local registries */\n baseDir?: string;\n /** Default registry name */\n defaultRegistry?: string;\n /** Registry configuration */\n config?: RegistryConfig;\n /** Cache TTL in milliseconds (default: 5 minutes) */\n cacheTtl?: number;\n}\n\nexport interface SearchOptions {\n /** Filter by category */\n category?: string;\n /** Search query */\n query?: string;\n /** Include dependencies in results */\n includeDependencies?: boolean;\n /** Limit results */\n limit?: number;\n}\n\nexport interface ResolvedItem {\n /** Item definition */\n definition: ComponentDefinition | BlockDefinition;\n /** Registry source */\n registry: string;\n /** Resolved dependencies */\n dependencies: ResolvedItem[];\n}\n\ninterface CacheEntry<T> {\n data: T;\n timestamp: number;\n}\n\n// =============================================================================\n// REGISTRY MANAGER\n// =============================================================================\n\n/**\n * Registry manager for Prism design system.\n *\n * Manages component and block registries with support for:\n * - Local and remote registry sources\n * - Registry merging and extension\n * - Dependency resolution\n * - Caching with TTL\n *\n * @example\n * ```typescript\n * const manager = new RegistryManager({\n * baseDir: './prism',\n * config: {\n * default: 'prism',\n * registries: {\n * prism: 'https://registry.prism.dev',\n * custom: './custom-registry.json',\n * },\n * },\n * });\n *\n * // Get a component\n * const button = await manager.getComponent('button');\n *\n * // Search for components\n * const inputs = await manager.searchComponents({ category: 'inputs' });\n *\n * // Resolve dependencies\n * const resolved = await manager.resolveDependencies('data-table');\n * ```\n */\nexport class RegistryManager {\n private readonly options: Required<RegistryManagerOptions>;\n private registries: Map<string, RegistrySchema> = new Map();\n private cache: Map<string, CacheEntry<RegistrySchema>> = new Map();\n private loaders: Map<string, () => Promise<RegistrySchema>> = new Map();\n\n constructor(options: RegistryManagerOptions = {}) {\n this.options = {\n baseDir: options.baseDir ?? (typeof process !== 'undefined' && process.cwd ? process.cwd() : '/'),\n defaultRegistry: options.defaultRegistry ?? 'prism',\n config: options.config ?? { default: 'prism', registries: {} },\n cacheTtl: options.cacheTtl ?? 5 * 60 * 1000, // 5 minutes\n };\n }\n\n // ===========================================================================\n // REGISTRY LOADING\n // ===========================================================================\n\n /**\n * Register a custom loader for a registry.\n */\n registerLoader(name: string, loader: () => Promise<RegistrySchema>): void {\n this.loaders.set(name, loader);\n }\n\n /**\n * Load a registry by name.\n */\n async loadRegistry(name: string): Promise<RegistrySchema> {\n // Check cache first\n const cached = this.cache.get(name);\n if (cached && Date.now() - cached.timestamp < this.options.cacheTtl) {\n return cached.data;\n }\n\n // Check if already loaded\n const existing = this.registries.get(name);\n if (existing && !cached) {\n return existing;\n }\n\n // Use custom loader if registered\n const customLoader = this.loaders.get(name);\n if (customLoader) {\n const registry = await customLoader();\n this.cacheRegistry(name, registry);\n return registry;\n }\n\n // Get registry config\n const config = this.options.config.registries[name];\n if (!config) {\n throw new Error(`Registry \"${name}\" not found in configuration`);\n }\n\n // Load based on config type\n const registry = typeof config === 'string' ? await this.loadFromPath(config) : await this.loadFromRemote(config);\n\n // Handle registry extension\n if (registry.extends) {\n const baseRegistry = await this.loadRegistry(registry.extends);\n const merged = this.mergeRegistries(baseRegistry, registry);\n this.cacheRegistry(name, merged);\n return merged;\n }\n\n this.cacheRegistry(name, registry);\n return registry;\n }\n\n /**\n * Load registry from local file path.\n * Uses dynamic import for ESM compatibility across environments.\n *\n * @param path - Relative or absolute path to registry JSON\n * @returns Loaded registry schema\n */\n private async loadFromPath(path: string): Promise<RegistrySchema> {\n const fullPath = path.startsWith('/') ? path : `${this.options.baseDir}/${path}`;\n\n // Check if running in Node.js-like environment with fs access\n if (typeof process !== 'undefined' && (process.versions?.node || process.versions?.bun)) {\n // Dynamic import for Node.js fs module\n const fs = await import('node:fs/promises');\n const content = await fs.readFile(fullPath, 'utf-8');\n return JSON.parse(content) as RegistrySchema;\n }\n\n // In browser/Deno environment, try to fetch if it's a URL\n if (path.startsWith('http://') || path.startsWith('https://')) {\n const response = await fetch(path);\n if (!response.ok) {\n throw new Error(`Failed to load registry from ${path}: ${response.statusText}`);\n }\n return response.json();\n }\n\n // For browser environment with bundled registries, use custom loader\n throw new Error(\n `Cannot load local file \"${fullPath}\" in browser environment. ` +\n `Register a custom loader with manager.registerLoader() or use a remote URL.`\n );\n }\n\n /**\n * Load registry from remote URL.\n */\n private async loadFromRemote(config: RemoteRegistryConfig): Promise<RegistrySchema> {\n const response = await fetch(config.url, {\n headers: config.headers,\n });\n\n if (!response.ok) {\n throw new Error(`Failed to load registry from ${config.url}: ${response.statusText}`);\n }\n\n return response.json();\n }\n\n /**\n * Cache a loaded registry.\n */\n private cacheRegistry(name: string, registry: RegistrySchema): void {\n this.registries.set(name, registry);\n this.cache.set(name, {\n data: registry,\n timestamp: Date.now(),\n });\n }\n\n /**\n * Merge two registries (base + extension).\n */\n private mergeRegistries(base: RegistrySchema, extension: RegistrySchema): RegistrySchema {\n return {\n ...base,\n ...extension,\n components: { ...base.components, ...extension.components },\n blocks: { ...base.blocks, ...extension.blocks },\n themes: { ...base.themes, ...extension.themes },\n };\n }\n\n /**\n * Clear registry cache.\n */\n clearCache(name?: string): void {\n if (name) {\n this.cache.delete(name);\n } else {\n this.cache.clear();\n }\n }\n\n // ===========================================================================\n // COMPONENT OPERATIONS\n // ===========================================================================\n\n /**\n * Get a component definition by name.\n */\n async getComponent(name: string, registryName?: string): Promise<ComponentDefinition | null> {\n const registry = await this.loadRegistry(registryName ?? this.options.defaultRegistry);\n return registry.components[name] ?? null;\n }\n\n /**\n * Get all components from a registry.\n */\n async getComponents(registryName?: string): Promise<Record<string, ComponentDefinition>> {\n const registry = await this.loadRegistry(registryName ?? this.options.defaultRegistry);\n return registry.components;\n }\n\n /**\n * Search for components.\n */\n async searchComponents(options: SearchOptions, registryName?: string): Promise<ComponentDefinition[]> {\n const registry = await this.loadRegistry(registryName ?? this.options.defaultRegistry);\n let results = Object.values(registry.components);\n\n // Filter by category\n if (options.category) {\n results = results.filter((c) => c.category === options.category);\n }\n\n // Filter by query\n if (options.query) {\n const query = options.query.toLowerCase();\n results = results.filter(\n (c) =>\n c.name.toLowerCase().includes(query) ||\n c.displayName?.toLowerCase().includes(query) ||\n c.description?.toLowerCase().includes(query)\n );\n }\n\n // Limit results\n if (options.limit && options.limit > 0) {\n results = results.slice(0, options.limit);\n }\n\n return results;\n }\n\n /**\n * Get component categories.\n */\n async getComponentCategories(registryName?: string): Promise<string[]> {\n const registry = await this.loadRegistry(registryName ?? this.options.defaultRegistry);\n const categories = new Set<string>();\n\n for (const component of Object.values(registry.components)) {\n categories.add(component.category);\n }\n\n return Array.from(categories).sort();\n }\n\n // ===========================================================================\n // BLOCK OPERATIONS\n // ===========================================================================\n\n /**\n * Get a block definition by name.\n */\n async getBlock(name: string, registryName?: string): Promise<BlockDefinition | null> {\n const registry = await this.loadRegistry(registryName ?? this.options.defaultRegistry);\n return registry.blocks[name] ?? null;\n }\n\n /**\n * Get all blocks from a registry.\n */\n async getBlocks(registryName?: string): Promise<Record<string, BlockDefinition>> {\n const registry = await this.loadRegistry(registryName ?? this.options.defaultRegistry);\n return registry.blocks;\n }\n\n /**\n * Search for blocks.\n */\n async searchBlocks(options: SearchOptions, registryName?: string): Promise<BlockDefinition[]> {\n const registry = await this.loadRegistry(registryName ?? this.options.defaultRegistry);\n let results = Object.values(registry.blocks);\n\n // Filter by category\n if (options.category) {\n results = results.filter((b) => b.category === options.category);\n }\n\n // Filter by query\n if (options.query) {\n const query = options.query.toLowerCase();\n results = results.filter(\n (b) =>\n b.name.toLowerCase().includes(query) ||\n b.displayName?.toLowerCase().includes(query) ||\n b.description?.toLowerCase().includes(query)\n );\n }\n\n // Limit results\n if (options.limit && options.limit > 0) {\n results = results.slice(0, options.limit);\n }\n\n return results;\n }\n\n /**\n * Get block categories.\n */\n async getBlockCategories(registryName?: string): Promise<string[]> {\n const registry = await this.loadRegistry(registryName ?? this.options.defaultRegistry);\n const categories = new Set<string>();\n\n for (const block of Object.values(registry.blocks)) {\n categories.add(block.category);\n }\n\n return Array.from(categories).sort();\n }\n\n // ===========================================================================\n // DEPENDENCY RESOLUTION\n // ===========================================================================\n\n /**\n * Resolve all dependencies for a component.\n */\n async resolveComponentDependencies(name: string, registryName?: string): Promise<ResolvedItem> {\n const registry = registryName ?? this.options.defaultRegistry;\n const component = await this.getComponent(name, registry);\n\n if (!component) {\n throw new Error(`Component \"${name}\" not found in registry \"${registry}\"`);\n }\n\n const dependencies: ResolvedItem[] = [];\n\n // Resolve component dependencies\n for (const depName of component.dependencies.components) {\n const resolved = await this.resolveComponentDependencies(depName, registry);\n dependencies.push(resolved);\n }\n\n return {\n definition: component,\n registry,\n dependencies,\n };\n }\n\n /**\n * Resolve all dependencies for a block.\n */\n async resolveBlockDependencies(name: string, registryName?: string): Promise<ResolvedItem> {\n const registry = registryName ?? this.options.defaultRegistry;\n const block = await this.getBlock(name, registry);\n\n if (!block) {\n throw new Error(`Block \"${name}\" not found in registry \"${registry}\"`);\n }\n\n const dependencies: ResolvedItem[] = [];\n\n // Resolve component dependencies\n for (const compName of block.dependencies.components) {\n const resolved = await this.resolveComponentDependencies(compName, registry);\n dependencies.push(resolved);\n }\n\n // Resolve block dependencies\n for (const blockName of block.dependencies.blocks) {\n const resolved = await this.resolveBlockDependencies(blockName, registry);\n dependencies.push(resolved);\n }\n\n return {\n definition: block,\n registry,\n dependencies,\n };\n }\n\n /**\n * Get flat list of all npm dependencies for resolved items.\n */\n getNpmDependencies(resolved: ResolvedItem): string[] {\n const deps = new Set<string>();\n\n function collectDeps(item: ResolvedItem): void {\n // Add direct npm dependencies\n const definition = item.definition as ComponentDefinition | BlockDefinition;\n if ('dependencies' in definition) {\n for (const dep of definition.dependencies.npm) {\n deps.add(dep);\n }\n }\n\n // Recurse into dependencies\n for (const child of item.dependencies) {\n collectDeps(child);\n }\n }\n\n collectDeps(resolved);\n return Array.from(deps).sort();\n }\n\n /**\n * Get flat list of all file paths for resolved items.\n */\n getFilePaths(resolved: ResolvedItem): string[] {\n const paths = new Set<string>();\n\n function collectPaths(item: ResolvedItem): void {\n // Add direct file paths\n const definition = item.definition as ComponentDefinition | BlockDefinition;\n for (const file of definition.files) {\n paths.add(file.path);\n }\n\n // Recurse into dependencies\n for (const child of item.dependencies) {\n collectPaths(child);\n }\n }\n\n collectPaths(resolved);\n return Array.from(paths).sort();\n }\n\n // ===========================================================================\n // VERSION CHECKING\n // ===========================================================================\n\n /**\n * Check if a component version is compatible.\n */\n async checkComponentVersion(name: string, requiredVersion: string, registryName?: string): Promise<boolean> {\n const component = await this.getComponent(name, registryName);\n if (!component) return false;\n\n return this.isVersionCompatible(component.version, requiredVersion);\n }\n\n /**\n * Check semver version compatibility.\n * Simple implementation - considers major.minor compatibility.\n */\n private isVersionCompatible(actual: string, required: string): boolean {\n const [actualMajor, actualMinor] = actual.split('.').map(Number);\n const [requiredMajor, requiredMinor] = required.split('.').map(Number);\n\n // Major version must match\n if (actualMajor !== requiredMajor) return false;\n\n // Minor version must be >= required\n return actualMinor >= requiredMinor;\n }\n\n // ===========================================================================\n // REGISTRY INFO\n // ===========================================================================\n\n /**\n * Get registry metadata.\n */\n async getRegistryInfo(registryName?: string): Promise<{\n name: string;\n version: string;\n description?: string;\n componentCount: number;\n blockCount: number;\n themeCount: number;\n }> {\n const registry = await this.loadRegistry(registryName ?? this.options.defaultRegistry);\n\n return {\n name: registry.name,\n version: registry.version,\n description: registry.description,\n componentCount: Object.keys(registry.components).length,\n blockCount: Object.keys(registry.blocks).length,\n themeCount: Object.keys(registry.themes).length,\n };\n }\n\n /**\n * Get list of loaded registries.\n */\n getLoadedRegistries(): string[] {\n return Array.from(this.registries.keys());\n }\n}\n\n// =============================================================================\n// DEFAULT INSTANCE\n// =============================================================================\n\n/**\n * Default registry manager instance.\n */\nexport const registry = new RegistryManager();\n\n/**\n * Create a new registry manager with custom options.\n */\nexport function createRegistryManager(options?: RegistryManagerOptions): RegistryManager {\n return new RegistryManager(options);\n}\n","/**\n * Component/Block Installer\n *\n * Handles installation of Prism components and blocks to target projects.\n * Manages file copying, dependency resolution, and lockfile tracking.\n *\n * Key Features:\n * - Atomic installation with rollback on failure\n * - Automatic dependency installation\n * - Template variable substitution\n * - Lockfile tracking for updates\n *\n * @module @omnitron-dev/prism/registry/installer\n */\n\nimport { promises as fs } from 'node:fs';\nimport * as path from 'node:path';\nimport type { ComponentDefinition, InstalledComponent, InstalledBlock, PrismLockfile } from '../types/registry.js';\nimport type { BlockDefinition } from '../types/blocks.js';\nimport { RegistryManager, type ResolvedItem } from './manager.js';\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\nexport interface InstallerOptions {\n /** Target directory for components */\n componentsDir?: string;\n /** Target directory for blocks */\n blocksDir?: string;\n /** Target directory for hooks */\n hooksDir?: string;\n /** Overwrite existing files */\n overwrite?: boolean;\n /** Dry run mode (don't write files) */\n dryRun?: boolean;\n /** Skip dependencies */\n skipDependencies?: boolean;\n /** Template variables for substitution */\n templateVars?: Record<string, string>;\n}\n\nexport interface InstallResult {\n /** Whether installation was successful */\n success: boolean;\n /** Installed files */\n files: string[];\n /** npm dependencies to install */\n npmDependencies: string[];\n /** Errors encountered */\n errors: string[];\n /** Warnings */\n warnings: string[];\n}\n\ninterface FileOperation {\n type: 'write' | 'mkdir';\n path: string;\n content?: string;\n}\n\n// =============================================================================\n// INSTALLER\n// =============================================================================\n\n/**\n * Prism component and block installer.\n *\n * @example\n * ```typescript\n * const installer = new PrismInstaller({\n * componentsDir: 'src/components',\n * blocksDir: 'src/blocks',\n * });\n *\n * // Install a component\n * const result = await installer.installComponent('button');\n *\n * // Install a block with all dependencies\n * const blockResult = await installer.installBlock('dashboard-layout');\n * ```\n */\nexport class PrismInstaller {\n private readonly options: Required<InstallerOptions>;\n private readonly registryManager: RegistryManager;\n private lockfile: PrismLockfile | null = null;\n private lockfilePath: string;\n\n constructor(registryManager: RegistryManager, options: InstallerOptions = {}) {\n this.registryManager = registryManager;\n this.options = {\n componentsDir: options.componentsDir ?? 'src/components/prism',\n blocksDir: options.blocksDir ?? 'src/blocks',\n hooksDir: options.hooksDir ?? 'src/hooks',\n overwrite: options.overwrite ?? false,\n dryRun: options.dryRun ?? false,\n skipDependencies: options.skipDependencies ?? false,\n templateVars: options.templateVars ?? {},\n };\n this.lockfilePath = path.join(process.cwd(), 'prism.lock.json');\n }\n\n // ===========================================================================\n // COMPONENT INSTALLATION\n // ===========================================================================\n\n /**\n * Install a component and its dependencies.\n */\n async installComponent(name: string, registryName?: string): Promise<InstallResult> {\n const result: InstallResult = {\n success: false,\n files: [],\n npmDependencies: [],\n errors: [],\n warnings: [],\n };\n\n try {\n // Resolve component and dependencies\n const resolved = await this.registryManager.resolveComponentDependencies(name, registryName);\n\n // Get all items to install (flattened)\n const itemsToInstall = this.options.skipDependencies ? [resolved] : this.flattenDependencies(resolved);\n\n // Check for existing installations\n await this.loadLockfile();\n const existingComponents = new Set(Object.keys(this.lockfile?.components ?? {}));\n\n // Filter out already installed components (unless overwrite is enabled)\n const filteredItems = this.options.overwrite\n ? itemsToInstall\n : itemsToInstall.filter((item) => {\n const def = item.definition as ComponentDefinition;\n if (existingComponents.has(def.name)) {\n result.warnings.push(\n `Component \"${def.name}\" is already installed, skipping (use --overwrite to replace)`\n );\n return false;\n }\n return true;\n });\n\n // Collect all file operations\n const operations: FileOperation[] = [];\n const installedComponents: InstalledComponent[] = [];\n\n for (const item of filteredItems) {\n const component = item.definition as ComponentDefinition;\n const componentOps = await this.prepareComponentFiles(component, item.registry);\n operations.push(...componentOps);\n\n installedComponents.push({\n name: component.name,\n version: component.version,\n registry: item.registry,\n installedAt: new Date().toISOString(),\n files: componentOps.filter((op) => op.type === 'write').map((op) => op.path),\n });\n }\n\n // Collect npm dependencies\n result.npmDependencies = this.registryManager.getNpmDependencies(resolved);\n\n // Execute operations (or simulate in dry run)\n if (this.options.dryRun) {\n result.files = operations.filter((op) => op.type === 'write').map((op) => op.path);\n result.success = true;\n } else {\n await this.executeOperations(operations);\n result.files = operations.filter((op) => op.type === 'write').map((op) => op.path);\n\n // Update lockfile\n for (const component of installedComponents) {\n this.lockfile!.components[component.name] = component;\n }\n await this.saveLockfile();\n\n result.success = true;\n }\n } catch (error) {\n result.errors.push(error instanceof Error ? error.message : String(error));\n }\n\n return result;\n }\n\n /**\n * Prepare file operations for a component.\n */\n private async prepareComponentFiles(component: ComponentDefinition, _registry: string): Promise<FileOperation[]> {\n const operations: FileOperation[] = [];\n const componentDir = path.join(this.options.componentsDir, component.name);\n\n // Create component directory\n operations.push({ type: 'mkdir', path: componentDir });\n\n // Prepare each file\n for (const file of component.files) {\n const targetPath = path.join(componentDir, path.basename(file.path));\n const content = await this.fetchFileContent(file.path);\n const processedContent = this.processTemplate(content);\n\n operations.push({\n type: 'write',\n path: targetPath,\n content: processedContent,\n });\n }\n\n return operations;\n }\n\n // ===========================================================================\n // BLOCK INSTALLATION\n // ===========================================================================\n\n /**\n * Install a block and its dependencies.\n */\n async installBlock(name: string, registryName?: string): Promise<InstallResult> {\n const result: InstallResult = {\n success: false,\n files: [],\n npmDependencies: [],\n errors: [],\n warnings: [],\n };\n\n try {\n // Resolve block and dependencies\n const resolved = await this.registryManager.resolveBlockDependencies(name, registryName);\n\n // Get all items to install (flattened)\n const allItems = this.options.skipDependencies ? [resolved] : this.flattenDependencies(resolved);\n\n // Separate blocks and components by checking for block-specific properties\n // BlockDefinition has 'defaultConfig' which ComponentDefinition doesn't have\n const blocks = allItems.filter((item) => {\n const def = item.definition;\n // Block has 'defaultConfig' and 'dependencies.blocks', Component has 'dependencies.components'\n return 'defaultConfig' in def && 'dependencies' in def && 'blocks' in (def as BlockDefinition).dependencies;\n });\n const components = allItems.filter((item) => !blocks.includes(item));\n\n // Check for existing installations\n await this.loadLockfile();\n\n // Install component dependencies first\n for (const item of components) {\n const component = item.definition as ComponentDefinition;\n const existingComponent = this.lockfile?.components[component.name];\n\n if (existingComponent && !this.options.overwrite) {\n result.warnings.push(`Component \"${component.name}\" is already installed, skipping`);\n continue;\n }\n\n const componentResult = await this.installComponent(component.name, item.registry);\n result.files.push(...componentResult.files);\n result.errors.push(...componentResult.errors);\n result.warnings.push(...componentResult.warnings);\n }\n\n // Install blocks\n const operations: FileOperation[] = [];\n const installedBlocks: InstalledBlock[] = [];\n\n for (const item of blocks) {\n const block = item.definition as BlockDefinition;\n const existingBlock = this.lockfile?.blocks[block.name];\n\n if (existingBlock && !this.options.overwrite) {\n result.warnings.push(`Block \"${block.name}\" is already installed, skipping`);\n continue;\n }\n\n const blockOps = await this.prepareBlockFiles(block, item.registry);\n operations.push(...blockOps);\n\n installedBlocks.push({\n name: block.name,\n version: block.version,\n registry: item.registry,\n installedAt: new Date().toISOString(),\n files: blockOps.filter((op) => op.type === 'write').map((op) => op.path),\n config: block.defaultConfig,\n });\n }\n\n // Collect npm dependencies\n result.npmDependencies = this.registryManager.getNpmDependencies(resolved);\n\n // Execute operations\n if (this.options.dryRun) {\n result.files.push(...operations.filter((op) => op.type === 'write').map((op) => op.path));\n result.success = true;\n } else {\n await this.executeOperations(operations);\n result.files.push(...operations.filter((op) => op.type === 'write').map((op) => op.path));\n\n // Update lockfile\n for (const block of installedBlocks) {\n this.lockfile!.blocks[block.name] = block;\n }\n await this.saveLockfile();\n\n result.success = true;\n }\n } catch (error) {\n result.errors.push(error instanceof Error ? error.message : String(error));\n }\n\n return result;\n }\n\n /**\n * Prepare file operations for a block.\n */\n private async prepareBlockFiles(block: BlockDefinition, _registry: string): Promise<FileOperation[]> {\n const operations: FileOperation[] = [];\n const blockDir = path.join(this.options.blocksDir, block.name);\n\n // Create block directory\n operations.push({ type: 'mkdir', path: blockDir });\n\n // Prepare each file\n for (const file of block.files) {\n const targetPath = path.join(blockDir, file.path);\n const targetDir = path.dirname(targetPath);\n\n // Create subdirectory if needed\n if (targetDir !== blockDir) {\n operations.push({ type: 'mkdir', path: targetDir });\n }\n\n const content = await this.fetchFileContent(file.path);\n const processedContent = this.processTemplate(content);\n\n operations.push({\n type: 'write',\n path: targetPath,\n content: processedContent,\n });\n }\n\n return operations;\n }\n\n // ===========================================================================\n // UNINSTALLATION\n // ===========================================================================\n\n /**\n * Uninstall a component.\n */\n async uninstallComponent(name: string): Promise<InstallResult> {\n const result: InstallResult = {\n success: false,\n files: [],\n npmDependencies: [],\n errors: [],\n warnings: [],\n };\n\n try {\n await this.loadLockfile();\n const installed = this.lockfile?.components[name];\n\n if (!installed) {\n result.errors.push(`Component \"${name}\" is not installed`);\n return result;\n }\n\n // Check if any other components depend on this one\n const dependents = await this.findDependents(name, 'component');\n if (dependents.length > 0) {\n result.errors.push(`Cannot uninstall \"${name}\" because it is used by: ${dependents.join(', ')}`);\n return result;\n }\n\n // Delete files\n if (!this.options.dryRun) {\n for (const filePath of installed.files) {\n await fs.unlink(filePath).catch(() => {\n result.warnings.push(`Could not delete file: ${filePath}`);\n });\n }\n\n // Try to remove component directory if empty\n const componentDir = path.dirname(installed.files[0]);\n await fs.rmdir(componentDir).catch(() => {\n // Directory not empty or doesn't exist\n });\n\n // Update lockfile\n delete this.lockfile!.components[name];\n await this.saveLockfile();\n }\n\n result.files = installed.files;\n result.success = true;\n } catch (error) {\n result.errors.push(error instanceof Error ? error.message : String(error));\n }\n\n return result;\n }\n\n /**\n * Uninstall a block.\n */\n async uninstallBlock(name: string): Promise<InstallResult> {\n const result: InstallResult = {\n success: false,\n files: [],\n npmDependencies: [],\n errors: [],\n warnings: [],\n };\n\n try {\n await this.loadLockfile();\n const installed = this.lockfile?.blocks[name];\n\n if (!installed) {\n result.errors.push(`Block \"${name}\" is not installed`);\n return result;\n }\n\n // Check if any other blocks depend on this one\n const dependents = await this.findDependents(name, 'block');\n if (dependents.length > 0) {\n result.errors.push(`Cannot uninstall \"${name}\" because it is used by: ${dependents.join(', ')}`);\n return result;\n }\n\n // Delete files\n if (!this.options.dryRun) {\n for (const filePath of installed.files) {\n await fs.unlink(filePath).catch(() => {\n result.warnings.push(`Could not delete file: ${filePath}`);\n });\n }\n\n // Try to remove block directory\n const blockDir = path.dirname(installed.files[0]);\n await fs.rm(blockDir, { recursive: true }).catch(() => {\n result.warnings.push(`Could not remove directory: ${blockDir}`);\n });\n\n // Update lockfile\n delete this.lockfile!.blocks[name];\n await this.saveLockfile();\n }\n\n result.files = installed.files;\n result.success = true;\n } catch (error) {\n result.errors.push(error instanceof Error ? error.message : String(error));\n }\n\n return result;\n }\n\n // ===========================================================================\n // HELPERS\n // ===========================================================================\n\n /**\n * Flatten dependency tree into unique list.\n */\n private flattenDependencies(resolved: ResolvedItem): ResolvedItem[] {\n const seen = new Set<string>();\n const result: ResolvedItem[] = [];\n\n function traverse(item: ResolvedItem): void {\n const key = `${item.registry}:${item.definition.name}`;\n if (seen.has(key)) return;\n seen.add(key);\n\n // Process dependencies first (for proper install order)\n for (const dep of item.dependencies) {\n traverse(dep);\n }\n\n result.push(item);\n }\n\n traverse(resolved);\n return result;\n }\n\n /**\n * Fetch file content from registry.\n * Supports local files (prefixed with file:// or absolute paths) and remote URLs.\n */\n private async fetchFileContent(filePath: string): Promise<string> {\n // Handle local file paths\n if (filePath.startsWith('file://') || filePath.startsWith('/') || /^[a-zA-Z]:/.test(filePath)) {\n const actualPath = filePath.replace('file://', '');\n try {\n const content = await fs.readFile(actualPath, 'utf-8');\n return content;\n } catch (error) {\n throw new Error(\n `Failed to read local file \"${actualPath}\": ${error instanceof Error ? error.message : String(error)}`,\n { cause: error }\n );\n }\n }\n\n // Handle relative paths (resolve against baseDir from registry manager options)\n if (!filePath.startsWith('http://') && !filePath.startsWith('https://')) {\n const resolvedPath = path.resolve(process.cwd(), filePath);\n try {\n const content = await fs.readFile(resolvedPath, 'utf-8');\n return content;\n } catch (error) {\n throw new Error(\n `Failed to read file \"${resolvedPath}\": ${error instanceof Error ? error.message : String(error)}`,\n { cause: error }\n );\n }\n }\n\n // Handle remote URLs\n try {\n const response = await fetch(filePath);\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}: ${response.statusText}`);\n }\n return await response.text();\n } catch (error) {\n throw new Error(\n `Failed to fetch remote file \"${filePath}\": ${error instanceof Error ? error.message : String(error)}`,\n { cause: error }\n );\n }\n }\n\n /**\n * Process template variables in content.\n */\n private processTemplate(content: string): string {\n let result = content;\n\n for (const [key, value] of Object.entries(this.options.templateVars)) {\n result = result.replace(new RegExp(`{{${key}}}`, 'g'), value);\n }\n\n return result;\n }\n\n /**\n * Execute file operations.\n */\n private async executeOperations(operations: FileOperation[]): Promise<void> {\n // Sort operations: directories first, then files\n const sorted = [...operations].sort((a, b) => {\n if (a.type === 'mkdir' && b.type !== 'mkdir') return -1;\n if (a.type !== 'mkdir' && b.type === 'mkdir') return 1;\n return 0;\n });\n\n for (const op of sorted) {\n if (op.type === 'mkdir') {\n await fs.mkdir(op.path, { recursive: true });\n } else if (op.type === 'write' && op.content !== undefined) {\n // Check if file exists and we shouldn't overwrite\n if (!this.options.overwrite) {\n try {\n await fs.access(op.path);\n continue; // File exists, skip\n } catch {\n // File doesn't exist, proceed\n }\n }\n await fs.writeFile(op.path, op.content, 'utf-8');\n }\n }\n }\n\n /**\n * Find items that depend on a given component/block.\n */\n private async findDependents(name: string, type: 'component' | 'block'): Promise<string[]> {\n const dependents: string[] = [];\n\n if (!this.lockfile) return dependents;\n\n // Check all installed blocks for dependencies\n for (const [blockName, _block] of Object.entries(this.lockfile.blocks)) {\n const blockDef = await this.registryManager.getBlock(blockName);\n if (!blockDef) continue;\n\n if (type === 'component' && blockDef.dependencies.components.includes(name)) {\n dependents.push(blockName);\n }\n if (type === 'block' && blockDef.dependencies.blocks.includes(name)) {\n dependents.push(blockName);\n }\n }\n\n // Check components for component dependencies\n if (type === 'component') {\n for (const [compName, _comp] of Object.entries(this.lockfile.components)) {\n const compDef = await this.registryManager.getComponent(compName);\n if (!compDef) continue;\n\n if (compDef.dependencies.components.includes(name)) {\n dependents.push(compName);\n }\n }\n }\n\n return dependents;\n }\n\n // ===========================================================================\n // LOCKFILE MANAGEMENT\n // ===========================================================================\n\n /**\n * Load lockfile from disk.\n */\n private async loadLockfile(): Promise<void> {\n if (this.lockfile) return;\n\n try {\n const content = await fs.readFile(this.lockfilePath, 'utf-8');\n this.lockfile = JSON.parse(content);\n } catch {\n // Create new lockfile if it doesn't exist\n this.lockfile = {\n version: '1.0.0',\n components: {},\n blocks: {},\n themes: [],\n };\n }\n }\n\n /**\n * Save lockfile to disk.\n */\n private async saveLockfile(): Promise<void> {\n if (!this.lockfile) return;\n\n await fs.writeFile(this.lockfilePath, JSON.stringify(this.lockfile, null, 2), 'utf-8');\n }\n\n /**\n * Get current lockfile.\n */\n async getLockfile(): Promise<PrismLockfile> {\n await this.loadLockfile();\n return this.lockfile!;\n }\n\n /**\n * List installed components.\n */\n async listInstalled(): Promise<{\n components: InstalledComponent[];\n blocks: InstalledBlock[];\n }> {\n await this.loadLockfile();\n return {\n components: Object.values(this.lockfile!.components),\n blocks: Object.values(this.lockfile!.blocks),\n };\n }\n}\n\n// =============================================================================\n// FACTORY\n// =============================================================================\n\n/**\n * Create a new installer instance.\n */\nexport function createInstaller(registryManager: RegistryManager, options?: InstallerOptions): PrismInstaller {\n return new PrismInstaller(registryManager, options);\n}\n","/**\n * Prism Registry Module\n *\n * Component and block registry system for the Prism design framework.\n * Enables shadcn/ui-style copy-paste installation with dependency resolution.\n *\n * @module @omnitron-dev/prism/registry\n */\n\n// =============================================================================\n// REGISTRY MANAGER\n// =============================================================================\n\nexport { RegistryManager, registry, createRegistryManager } from './manager.js';\n\nexport type { RegistryManagerOptions, SearchOptions, ResolvedItem } from './manager.js';\n\n// =============================================================================\n// INSTALLER\n// =============================================================================\n\nexport { PrismInstaller, createInstaller } from './installer.js';\n\nexport type { InstallerOptions, InstallResult } from './installer.js';\n\n// =============================================================================\n// DEFAULT REGISTRY SCHEMA\n// =============================================================================\n\nimport type { RegistrySchema } from '../types/registry.js';\n\n/**\n * Default Prism registry schema.\n * Defines the structure for the base component and block registry.\n */\nexport const defaultRegistrySchema: RegistrySchema = {\n $schema: 'https://prism.omnitron.dev/registry/v1/schema.json',\n name: 'prism',\n version: '1.0.0',\n description: 'Official Prism Design System Registry',\n baseUrl: 'https://registry.prism.omnitron.dev',\n components: {\n // Input Components\n button: {\n name: 'button',\n version: '1.0.0',\n category: 'inputs',\n displayName: 'Button',\n description: 'Primary action button with multiple variants',\n files: [\n { path: 'Button.tsx', type: 'component' },\n { path: 'Button.types.ts', type: 'types' },\n { path: 'index.ts', type: 'barrel' },\n ],\n dependencies: {\n npm: ['@mui/material'],\n components: [],\n },\n hasVariants: true,\n docs: 'https://docs.prism.omnitron.dev/components/button',\n },\n 'icon-button': {\n name: 'icon-button',\n version: '1.0.0',\n category: 'inputs',\n displayName: 'Icon Button',\n description: 'Compact button for icon-only actions',\n files: [\n { path: 'IconButton.tsx', type: 'component' },\n { path: 'index.ts', type: 'barrel' },\n ],\n dependencies: {\n npm: ['@mui/material'],\n components: [],\n },\n hasVariants: true,\n },\n 'text-field': {\n name: 'text-field',\n version: '1.0.0',\n category: 'inputs',\n displayName: 'Text Field',\n description: 'Text input with label and helper text',\n files: [\n { path: 'TextField.tsx', type: 'component' },\n { path: 'TextField.types.ts', type: 'types' },\n { path: 'index.ts', type: 'barrel' },\n ],\n dependencies: {\n npm: ['@mui/material'],\n components: [],\n },\n hasVariants: true,\n },\n select: {\n name: 'select',\n version: '1.0.0',\n category: 'inputs',\n displayName: 'Select',\n description: 'Dropdown selection component',\n files: [\n { path: 'Select.tsx', type: 'component' },\n { path: 'Select.types.ts', type: 'types' },\n { path: 'index.ts', type: 'barrel' },\n ],\n dependencies: {\n npm: ['@mui/material'],\n components: [],\n },\n hasVariants: true,\n },\n checkbox: {\n name: 'checkbox',\n version: '1.0.0',\n category: 'inputs',\n displayName: 'Checkbox',\n description: 'Checkbox input for boolean values',\n files: [\n { path: 'Checkbox.tsx', type: 'component' },\n { path: 'index.ts', type: 'barrel' },\n ],\n dependencies: {\n npm: ['@mui/material'],\n components: [],\n },\n hasVariants: false,\n },\n switch: {\n name: 'switch',\n version: '1.0.0',\n category: 'inputs',\n displayName: 'Switch',\n description: 'Toggle switch for on/off states',\n files: [\n { path: 'Switch.tsx', type: 'component' },\n { path: 'index.ts', type: 'barrel' },\n ],\n dependencies: {\n npm: ['@mui/material'],\n components: [],\n },\n hasVariants: false,\n },\n\n // Data Display\n avatar: {\n name: 'avatar',\n version: '1.0.0',\n category: 'data-display',\n displayName: 'Avatar',\n description: 'User avatar with image or initials',\n files: [\n { path: 'Avatar.tsx', type: 'component' },\n { path: 'AvatarGroup.tsx', type: 'component' },\n { path: 'index.ts', type: 'barrel' },\n ],\n dependencies: {\n npm: ['@mui/material'],\n components: [],\n },\n hasVariants: true,\n },\n badge: {\n name: 'badge',\n version: '1.0.0',\n category: 'data-display',\n displayName: 'Badge',\n description: 'Badge for notifications and status',\n files: [\n { path: 'Badge.tsx', type: 'component' },\n { path: 'index.ts', type: 'barrel' },\n ],\n dependencies: {\n npm: ['@mui/material'],\n components: [],\n },\n hasVariants: true,\n },\n chip: {\n name: 'chip',\n version: '1.0.0',\n category: 'data-display',\n displayName: 'Chip',\n description: 'Compact element for tags and selections',\n files: [\n { path: 'Chip.tsx', type: 'component' },\n { path: 'index.ts', type: 'barrel' },\n ],\n dependencies: {\n npm: ['@mui/material'],\n components: [],\n },\n hasVariants: true,\n },\n tooltip: {\n name: 'tooltip',\n version: '1.0.0',\n category: 'data-display',\n displayName: 'Tooltip',\n description: 'Informative tooltip on hover',\n files: [\n { path: 'Tooltip.tsx', type: 'component' },\n { path: 'index.ts', type: 'barrel' },\n ],\n dependencies: {\n npm: ['@mui/material'],\n components: [],\n },\n hasVariants: false,\n },\n\n // Feedback\n alert: {\n name: 'alert',\n version: '1.0.0',\n category: 'feedback',\n displayName: 'Alert',\n description: 'Alert messages with severity levels',\n files: [\n { path: 'Alert.tsx', type: 'component' },\n { path: 'index.ts', type: 'barrel' },\n ],\n dependencies: {\n npm: ['@mui/material'],\n components: [],\n },\n hasVariants: true,\n },\n snackbar: {\n name: 'snackbar',\n version: '1.0.0',\n category: 'feedback',\n displayName: 'Snackbar',\n description: 'Brief notification messages',\n files: [\n { path: 'Snackbar.tsx', type: 'component' },\n { path: 'SnackbarProvider.tsx', type: 'component' },\n { path: 'useSnackbar.ts', type: 'component' },\n { path: 'index.ts', type: 'barrel' },\n ],\n dependencies: {\n npm: ['@mui/material', 'notistack'],\n components: [],\n },\n hasVariants: false,\n },\n dialog: {\n name: 'dialog',\n version: '1.0.0',\n category: 'feedback',\n displayName: 'Dialog',\n description: 'Modal dialog with actions',\n files: [\n { path: 'Dialog.tsx', type: 'component' },\n { path: 'ConfirmDialog.tsx', type: 'component' },\n { path: 'index.ts', type: 'barrel' },\n ],\n dependencies: {\n npm: ['@mui/material'],\n components: ['button'],\n },\n hasVariants: false,\n },\n progress: {\n name: 'progress',\n version: '1.0.0',\n category: 'feedback',\n displayName: 'Progress',\n description: 'Progress indicators (linear and circular)',\n files: [\n { path: 'LinearProgress.tsx', type: 'component' },\n { path: 'CircularProgress.tsx', type: 'component' },\n { path: 'index.ts', type: 'barrel' },\n ],\n dependencies: {\n npm: ['@mui/material'],\n components: [],\n },\n hasVariants: false,\n },\n\n // Surfaces\n card: {\n name: 'card',\n version: '1.0.0',\n category: 'surfaces',\n displayName: 'Card',\n description: 'Content card with header, content, and actions',\n files: [\n { path: 'Card.tsx', type: 'component' },\n { path: 'Card.types.ts', type: 'types' },\n { path: 'index.ts', type: 'barrel' },\n ],\n dependencies: {\n npm: ['@mui/material'],\n components: [],\n },\n hasVariants: true,\n },\n paper: {\n name: 'paper',\n version: '1.0.0',\n category: 'surfaces',\n displayName: 'Paper',\n description: 'Basic surface with elevation',\n files: [\n { path: 'Paper.tsx', type: 'component' },\n { path: 'index.ts', type: 'barrel' },\n ],\n dependencies: {\n npm: ['@mui/material'],\n components: [],\n },\n hasVariants: false,\n },\n accordion: {\n name: 'accordion',\n version: '1.0.0',\n category: 'surfaces',\n displayName: 'Accordion',\n description: 'Expandable content panels',\n files: [\n { path: 'Accordion.tsx', type: 'component' },\n { path: 'index.ts', type: 'barrel' },\n ],\n dependencies: {\n npm: ['@mui/material'],\n components: [],\n },\n hasVariants: false,\n },\n\n // Navigation\n tabs: {\n name: 'tabs',\n version: '1.0.0',\n category: 'navigation',\n displayName: 'Tabs',\n description: 'Tabbed navigation component',\n files: [\n { path: 'Tabs.tsx', type: 'component' },\n { path: 'TabPanel.tsx', type: 'component' },\n { path: 'index.ts', type: 'barrel' },\n ],\n dependencies: {\n npm: ['@mui/material'],\n components: [],\n },\n hasVariants: true,\n },\n breadcrumbs: {\n name: 'breadcrumbs',\n version: '1.0.0',\n category: 'navigation',\n displayName: 'Breadcrumbs',\n description: 'Navigation breadcrumb trail',\n files: [\n { path: 'Breadcrumbs.tsx', type: 'component' },\n { path: 'index.ts', type: 'barrel' },\n ],\n dependencies: {\n npm: ['@mui/material'],\n components: [],\n },\n hasVariants: false,\n },\n menu: {\n name: 'menu',\n version: '1.0.0',\n category: 'navigation',\n displayName: 'Menu',\n description: 'Dropdown menu for actions',\n files: [\n { path: 'Menu.tsx', type: 'component' },\n { path: 'MenuItem.tsx', type: 'component' },\n { path: 'index.ts', type: 'barrel' },\n ],\n dependencies: {\n npm: ['@mui/material'],\n components: [],\n },\n hasVariants: false,\n },\n\n // Layout\n stack: {\n name: 'stack',\n version: '1.0.0',\n category: 'layout',\n displayName: 'Stack',\n description: 'Vertical/horizontal flex layout',\n files: [\n { path: 'Stack.tsx', type: 'component' },\n { path: 'index.ts', type: 'barrel' },\n ],\n dependencies: {\n npm: ['@mui/material'],\n components: [],\n },\n hasVariants: false,\n },\n grid: {\n name: 'grid',\n version: '1.0.0',\n category: 'layout',\n displayName: 'Grid',\n description: 'Responsive grid layout',\n files: [\n { path: 'Grid.tsx', type: 'component' },\n { path: 'index.ts', type: 'barrel' },\n ],\n dependencies: {\n npm: ['@mui/material'],\n components: [],\n },\n hasVariants: false,\n },\n container: {\n name: 'container',\n version: '1.0.0',\n category: 'layout',\n displayName: 'Container',\n description: 'Centered content container',\n files: [\n { path: 'Container.tsx', type: 'component' },\n { path: 'index.ts', type: 'barrel' },\n ],\n dependencies: {\n npm: ['@mui/material'],\n components: [],\n },\n hasVariants: false,\n },\n divider: {\n name: 'divider',\n version: '1.0.0',\n category: 'layout',\n displayName: 'Divider',\n description: 'Visual separator',\n files: [\n { path: 'Divider.tsx', type: 'component' },\n { path: 'index.ts', type: 'barrel' },\n ],\n dependencies: {\n npm: ['@mui/material'],\n components: [],\n },\n hasVariants: false,\n },\n\n // Data\n 'data-table': {\n name: 'data-table',\n version: '1.0.0',\n category: 'data',\n displayName: 'Data Table',\n description: 'Full-featured data table with sorting, filtering, pagination',\n files: [\n { path: 'DataTable.tsx', type: 'component' },\n { path: 'DataTable.types.ts', type: 'types' },\n { path: 'DataTableToolbar.tsx', type: 'component' },\n { path: 'DataTablePagination.tsx', type: 'component' },\n { path: 'index.ts', type: 'barrel' },\n ],\n dependencies: {\n npm: ['@mui/material', '@tanstack/react-table'],\n components: ['button', 'text-field', 'select', 'checkbox', 'menu'],\n },\n hasVariants: true,\n docs: 'https://docs.prism.omnitron.dev/components/data-table',\n },\n table: {\n name: 'table',\n version: '1.0.0',\n category: 'data',\n displayName: 'Table',\n description: 'Basic table component',\n files: [\n { path: 'Table.tsx', type: 'component' },\n { path: 'index.ts', type: 'barrel' },\n ],\n dependencies: {\n npm: ['@mui/material'],\n components: [],\n },\n hasVariants: false,\n },\n list: {\n name: 'list',\n version: '1.0.0',\n category: 'data',\n displayName: 'List',\n description: 'Vertical list of items',\n files: [\n { path: 'List.tsx', type: 'component' },\n { path: 'ListItem.tsx', type: 'component' },\n { path: 'index.ts', type: 'barrel' },\n ],\n dependencies: {\n npm: ['@mui/material'],\n components: [],\n },\n hasVariants: false,\n },\n },\n blocks: {\n // Dashboard blocks\n 'dashboard-layout': {\n name: 'dashboard-layout',\n version: '1.0.0',\n category: 'layouts',\n displayName: 'Dashboard Layout',\n description: 'Complete dashboard layout with sidebar and header',\n files: [\n { path: 'DashboardLayout.tsx', type: 'component' },\n { path: 'DashboardLayout.types.ts', type: 'type' },\n { path: 'Sidebar.tsx', type: 'component' },\n { path: 'Header.tsx', type: 'component' },\n { path: 'NavSection.tsx', type: 'component' },\n { path: 'NavItem.tsx', type: 'component' },\n { path: 'useDashboard.ts', type: 'hook' },\n { path: 'index.ts', type: 'barrel' },\n ],\n dependencies: {\n npm: ['@mui/material', 'framer-motion'],\n components: ['avatar', 'menu', 'icon-button', 'tooltip'],\n blocks: [],\n },\n defaultConfig: {\n sidebarWidth: 280,\n headerHeight: 64,\n collapsedWidth: 72,\n },\n docs: 'https://docs.prism.omnitron.dev/blocks/dashboard-layout',\n },\n 'auth-forms': {\n name: 'auth-forms',\n version: '1.0.0',\n category: 'auth',\n displayName: 'Authentication Forms',\n description: 'Login, register, forgot password, and verify forms',\n files: [\n { path: 'LoginForm.tsx', type: 'component' },\n { path: 'RegisterForm.tsx', type: 'component' },\n { path: 'ForgotPasswordForm.tsx', type: 'component' },\n { path: 'VerifyCodeForm.tsx', type: 'component' },\n { path: 'auth.schema.ts', type: 'schema' },\n { path: 'useAuthForm.ts', type: 'hook' },\n { path: 'index.ts', type: 'barrel' },\n ],\n dependencies: {\n npm: ['@mui/material', 'react-hook-form', '@hookform/resolvers', 'zod'],\n components: ['button', 'text-field', 'checkbox', 'alert'],\n blocks: [],\n },\n defaultConfig: {\n showSocialLogin: true,\n showRememberMe: true,\n },\n },\n 'settings-panel': {\n name: 'settings-panel',\n version: '1.0.0',\n category: 'settings',\n displayName: 'Settings Panel',\n description: 'Theme settings panel with live preview',\n files: [\n { path: 'SettingsPanel.tsx', type: 'component' },\n { path: 'SettingsDrawer.tsx', type: 'component' },\n { path: 'ThemePreview.tsx', type: 'component' },\n { path: 'useSettings.ts', type: 'hook' },\n { path: 'index.ts', type: 'barrel' },\n ],\n dependencies: {\n npm: ['@mui/material', 'framer-motion'],\n components: ['button', 'switch', 'select', 'icon-button'],\n blocks: [],\n },\n defaultConfig: {\n position: 'right',\n },\n },\n 'user-profile': {\n name: 'user-profile',\n version: '1.0.0',\n category: 'data',\n displayName: 'User Profile',\n description: 'User profile page with avatar, info, and settings',\n files: [\n { path: 'ProfilePage.tsx', type: 'component' },\n { path: 'ProfileHeader.tsx', type: 'component' },\n { path: 'ProfileTabs.tsx', type: 'component' },\n { path: 'AccountTab.tsx', type: 'component' },\n { path: 'SecurityTab.tsx', type: 'component' },\n { path: 'NotificationsTab.tsx', type: 'component' },\n { path: 'useProfile.ts', type: 'hook' },\n { path: 'index.ts', type: 'barrel' },\n ],\n dependencies: {\n npm: ['@mui/material', 'react-hook-form'],\n components: ['avatar', 'button', 'tabs', 'card', 'text-field', 'switch'],\n blocks: [],\n },\n defaultConfig: {},\n },\n 'data-grid': {\n name: 'data-grid',\n version: '1.0.0',\n category: 'data',\n displayName: 'Data Grid',\n description: 'Advanced data grid with server-side features',\n files: [\n { path: 'DataGrid.tsx', type: 'component' },\n { path: 'DataGrid.types.ts', type: 'type' },\n { path: 'GridToolbar.tsx', type: 'component' },\n { path: 'GridFilters.tsx', type: 'component' },\n { path: 'GridExport.tsx', type: 'component' },\n { path: 'useDataGrid.ts', type: 'hook' },\n { path: 'index.ts', type: 'barrel' },\n ],\n dependencies: {\n npm: ['@mui/material', '@tanstack/react-table', '@tanstack/react-virtual'],\n components: ['button', 'text-field', 'select', 'checkbox', 'menu', 'chip'],\n blocks: [],\n },\n defaultConfig: {\n pageSize: 25,\n enableColumnResize: true,\n enableColumnReorder: true,\n },\n },\n },\n themes: {},\n};\n"]}
|