@omnitron-dev/prism 0.3.0 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +216 -2
- package/THIRD-PARTY-NOTICES.txt +26 -0
- package/dist/accessibility/index.js +2 -0
- package/dist/accessibility/index.js.map +1 -1
- package/dist/auth/index.d.ts +4 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +4 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/blocks/auth-block/guards.d.ts +3 -2
- package/dist/blocks/auth-block/guards.d.ts.map +1 -1
- package/dist/blocks/dashboard-block/dashboard-block.d.ts.map +1 -1
- package/dist/blocks/dashboard-block/types.d.ts +4 -2
- package/dist/blocks/dashboard-block/types.d.ts.map +1 -1
- package/dist/blocks/dashboard-block/use-dashboard-block.d.ts +2 -2
- package/dist/blocks/dashboard-block/use-dashboard-block.d.ts.map +1 -1
- package/dist/blocks/data-grid-block/data-grid-block.d.ts.map +1 -1
- package/dist/blocks/data-grid-block/types.d.ts +3 -0
- package/dist/blocks/data-grid-block/types.d.ts.map +1 -1
- package/dist/blocks/index.js +80 -253
- package/dist/blocks/index.js.map +1 -1
- package/dist/chunk-2AB7VGPW.js +447 -0
- package/dist/chunk-2AB7VGPW.js.map +1 -0
- package/dist/{chunk-WFD54GQQ.js → chunk-2E67PQ4T.js} +14 -573
- package/dist/chunk-2E67PQ4T.js.map +1 -0
- package/dist/chunk-2KG2NI73.js +84 -0
- package/dist/chunk-2KG2NI73.js.map +1 -0
- package/dist/chunk-2UYRW6X3.js +44 -0
- package/dist/chunk-2UYRW6X3.js.map +1 -0
- package/dist/chunk-36C5H56C.js +208 -0
- package/dist/chunk-36C5H56C.js.map +1 -0
- package/dist/chunk-36FOXX25.js +73 -0
- package/dist/chunk-36FOXX25.js.map +1 -0
- package/dist/chunk-3VSM7NZG.js +562 -0
- package/dist/chunk-3VSM7NZG.js.map +1 -0
- package/dist/chunk-4B2LTPK2.js +826 -0
- package/dist/chunk-4B2LTPK2.js.map +1 -0
- package/dist/chunk-4HUGZJKU.js +108 -0
- package/dist/chunk-4HUGZJKU.js.map +1 -0
- package/dist/chunk-4Q5L7LDG.js +74 -0
- package/dist/chunk-4Q5L7LDG.js.map +1 -0
- package/dist/{chunk-BRDWQVRT.js → chunk-4R7EZ7GQ.js} +3 -2
- package/dist/chunk-4R7EZ7GQ.js.map +1 -0
- package/dist/chunk-6IANOSMD.js +185 -0
- package/dist/chunk-6IANOSMD.js.map +1 -0
- package/dist/chunk-7ATBURW2.js +206 -0
- package/dist/chunk-7ATBURW2.js.map +1 -0
- package/dist/{chunk-6AHI4GSV.js → chunk-AATAOOSF.js} +4 -3
- package/dist/chunk-AATAOOSF.js.map +1 -0
- package/dist/chunk-AKLRKCYH.js +128 -0
- package/dist/chunk-AKLRKCYH.js.map +1 -0
- package/dist/chunk-CT46KJOR.js +133 -0
- package/dist/chunk-CT46KJOR.js.map +1 -0
- package/dist/{chunk-YQW43BDH.js → chunk-D4GFAJAZ.js} +1168 -6354
- package/dist/chunk-D4GFAJAZ.js.map +1 -0
- package/dist/chunk-D5J3KW6Q.js +106 -0
- package/dist/chunk-D5J3KW6Q.js.map +1 -0
- package/dist/chunk-DEPJRTVT.js +3 -0
- package/dist/{chunk-FU52GL2E.js.map → chunk-DEPJRTVT.js.map} +1 -1
- package/dist/{chunk-S6SEGBX6.js → chunk-DHTYHUYI.js} +85 -107
- package/dist/chunk-DHTYHUYI.js.map +1 -0
- package/dist/chunk-E7WM2RXA.js +249 -0
- package/dist/chunk-E7WM2RXA.js.map +1 -0
- package/dist/chunk-F6RZ7LW6.js +1271 -0
- package/dist/chunk-F6RZ7LW6.js.map +1 -0
- package/dist/chunk-FOGY3HA4.js +217 -0
- package/dist/chunk-FOGY3HA4.js.map +1 -0
- package/dist/chunk-G2GANYMW.js +139 -0
- package/dist/chunk-G2GANYMW.js.map +1 -0
- package/dist/chunk-I6DILPFE.js +293 -0
- package/dist/chunk-I6DILPFE.js.map +1 -0
- package/dist/chunk-IRYU3NTG.js +573 -0
- package/dist/chunk-IRYU3NTG.js.map +1 -0
- package/dist/chunk-JTIUGPW5.js +284 -0
- package/dist/chunk-JTIUGPW5.js.map +1 -0
- package/dist/{chunk-GUFHFEPZ.js → chunk-JZBSPDED.js} +2 -2
- package/dist/{chunk-GUFHFEPZ.js.map → chunk-JZBSPDED.js.map} +1 -1
- package/dist/chunk-KPY7TA4D.js +191 -0
- package/dist/chunk-KPY7TA4D.js.map +1 -0
- package/dist/{chunk-OBJ244BO.js → chunk-LFWKGNCX.js} +50 -656
- package/dist/chunk-LFWKGNCX.js.map +1 -0
- package/dist/chunk-LH4ZZZYB.js +37 -0
- package/dist/chunk-LH4ZZZYB.js.map +1 -0
- package/dist/chunk-NFJ7CPG3.js +13 -0
- package/dist/chunk-NFJ7CPG3.js.map +1 -0
- package/dist/chunk-NFPOIHD4.js +3 -0
- package/dist/{chunk-AYYFMTMI.js.map → chunk-NFPOIHD4.js.map} +1 -1
- package/dist/{chunk-XIXSSI3B.js → chunk-NJM5AVBM.js} +3 -2
- package/dist/chunk-NJM5AVBM.js.map +1 -0
- package/dist/{chunk-Z5OSPAOC.js → chunk-NSNM53WI.js} +196 -175
- package/dist/chunk-NSNM53WI.js.map +1 -0
- package/dist/chunk-NTREGTG7.js +31 -0
- package/dist/chunk-NTREGTG7.js.map +1 -0
- package/dist/{chunk-ADG4HZEP.js → chunk-OKJA6SJM.js} +4 -4
- package/dist/chunk-OKJA6SJM.js.map +1 -0
- package/dist/chunk-Q6JDNFSG.js +303 -0
- package/dist/chunk-Q6JDNFSG.js.map +1 -0
- package/dist/chunk-RPOGINR5.js +115 -0
- package/dist/chunk-RPOGINR5.js.map +1 -0
- package/dist/{chunk-ZTATTUH7.js → chunk-RSWVYIXK.js} +282 -683
- package/dist/chunk-RSWVYIXK.js.map +1 -0
- package/dist/chunk-SSEHL5VP.js +110 -0
- package/dist/chunk-SSEHL5VP.js.map +1 -0
- package/dist/chunk-TEIGUOWN.js +523 -0
- package/dist/chunk-TEIGUOWN.js.map +1 -0
- package/dist/{chunk-AYYFMTMI.js → chunk-TJ7DHXUX.js} +2 -2
- package/dist/chunk-TJ7DHXUX.js.map +1 -0
- package/dist/chunk-TZHWYT34.js +590 -0
- package/dist/chunk-TZHWYT34.js.map +1 -0
- package/dist/chunk-TZWHELY4.js +45 -0
- package/dist/chunk-TZWHELY4.js.map +1 -0
- package/dist/{chunk-BZOL7GMU.js → chunk-UEINJFLS.js} +7 -7
- package/dist/chunk-UEINJFLS.js.map +1 -0
- package/dist/chunk-URFQX3I6.js +129 -0
- package/dist/chunk-URFQX3I6.js.map +1 -0
- package/dist/chunk-VG6FOMOH.js +187 -0
- package/dist/chunk-VG6FOMOH.js.map +1 -0
- package/dist/chunk-VQVVHMPG.js +106 -0
- package/dist/chunk-VQVVHMPG.js.map +1 -0
- package/dist/{chunk-DRFNMZLG.js → chunk-VUKOT432.js} +3 -2
- package/dist/chunk-VUKOT432.js.map +1 -0
- package/dist/chunk-WD4N72DL.js +315 -0
- package/dist/chunk-WD4N72DL.js.map +1 -0
- package/dist/chunk-XBYMG4QK.js +119 -0
- package/dist/chunk-XBYMG4QK.js.map +1 -0
- package/dist/chunk-YHM6GIHV.js +3 -0
- package/dist/chunk-YHM6GIHV.js.map +1 -0
- package/dist/{chunk-SNZK5X6F.js → chunk-Z2AN43YU.js} +4 -2
- package/dist/chunk-Z2AN43YU.js.map +1 -0
- package/dist/chunk-ZNWHMQRM.js +171 -0
- package/dist/chunk-ZNWHMQRM.js.map +1 -0
- package/dist/{chunk-YSIG2XYH.js → chunk-ZRJYQN6Y.js} +2 -2
- package/dist/{chunk-YSIG2XYH.js.map → chunk-ZRJYQN6Y.js.map} +1 -1
- package/dist/{chunk-AD4W7HYC.js → chunk-ZYI3MHLE.js} +3 -2
- package/dist/chunk-ZYI3MHLE.js.map +1 -0
- package/dist/cli/index.js +66 -423
- package/dist/cli/index.js.map +1 -1
- package/dist/components/accordion/accordion.d.ts.map +1 -1
- package/dist/components/admin-filters/admin-data-table.d.ts +7 -1
- package/dist/components/admin-filters/admin-data-table.d.ts.map +1 -1
- package/dist/components/admin-filters/filter-toolbar.d.ts.map +1 -1
- package/dist/components/admin-filters/index.js +8 -0
- package/dist/components/admin-filters/index.js.map +1 -0
- package/dist/components/alert/alert.d.ts.map +1 -1
- package/dist/components/alert/index.js +5 -0
- package/dist/components/alert/index.js.map +1 -0
- package/dist/components/animate/index.js +5 -0
- package/dist/components/animate/index.js.map +1 -0
- package/dist/components/breadcrumbs/breadcrumbs.d.ts.map +1 -1
- package/dist/components/breadcrumbs/index.js +4 -0
- package/dist/components/breadcrumbs/index.js.map +1 -0
- package/dist/components/card/index.js +4 -0
- package/dist/components/card/index.js.map +1 -0
- package/dist/components/chart/chart.d.ts.map +1 -1
- package/dist/components/chart/index.css +52 -0
- package/dist/components/chart/index.css.map +1 -0
- package/dist/components/chart/index.js +5 -0
- package/dist/components/chart/index.js.map +1 -0
- package/dist/components/chart/types.d.ts +3 -1
- package/dist/components/chart/types.d.ts.map +1 -1
- package/dist/components/chart/use-chart.d.ts.map +1 -1
- package/dist/components/command-palette/command-palette.d.ts +3 -1
- package/dist/components/command-palette/command-palette.d.ts.map +1 -1
- package/dist/components/command-palette/index.js +4 -0
- package/dist/components/command-palette/index.js.map +1 -0
- package/dist/components/confirm-dialog/index.js +4 -0
- package/dist/components/confirm-dialog/index.js.map +1 -0
- package/dist/components/date-input/date-input.d.ts +28 -0
- package/dist/components/date-input/date-input.d.ts.map +1 -0
- package/dist/components/date-input/index.d.ts +3 -0
- package/dist/components/date-input/index.d.ts.map +1 -0
- package/dist/components/date-input/value.d.ts +9 -0
- package/dist/components/date-input/value.d.ts.map +1 -0
- package/dist/components/doc-layout/doc-sidebar.d.ts +4 -1
- package/dist/components/doc-layout/doc-sidebar.d.ts.map +1 -1
- package/dist/components/doc-layout/index.js +7 -0
- package/dist/components/doc-layout/index.js.map +1 -0
- package/dist/components/editor/editor.d.ts.map +1 -1
- package/dist/components/editor/icons/index.d.ts +32 -40
- package/dist/components/editor/icons/index.d.ts.map +1 -1
- package/dist/components/editor/index.js +4 -1
- package/dist/components/editor/index.js.map +1 -1
- package/dist/components/emoji-picker/index.js +2 -1
- package/dist/components/emoji-picker/index.js.map +1 -1
- package/dist/components/empty-content/empty-content.d.ts.map +1 -1
- package/dist/components/empty-content/index.js +4 -0
- package/dist/components/empty-content/index.js.map +1 -0
- package/dist/components/error-boundary/error-boundary.d.ts.map +1 -1
- package/dist/components/error-boundary/index.js +6 -0
- package/dist/components/error-boundary/index.js.map +1 -0
- package/dist/components/index.css +17 -10
- package/dist/components/index.css.map +1 -1
- package/dist/components/index.d.ts +5 -4
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +47 -11
- package/dist/components/index.js.map +1 -1
- package/dist/components/knowledge-graph/edge-labels.d.ts +14 -0
- package/dist/components/knowledge-graph/edge-labels.d.ts.map +1 -0
- package/dist/components/knowledge-graph/graph.d.ts +56 -0
- package/dist/components/knowledge-graph/graph.d.ts.map +1 -0
- package/dist/components/knowledge-graph/index.css +176 -0
- package/dist/components/knowledge-graph/index.css.map +1 -0
- package/dist/components/knowledge-graph/index.d.ts +3 -0
- package/dist/components/knowledge-graph/index.d.ts.map +1 -0
- package/dist/components/knowledge-graph/index.js +797 -0
- package/dist/components/knowledge-graph/index.js.map +1 -0
- package/dist/components/knowledge-graph/label-layout.d.ts +28 -0
- package/dist/components/knowledge-graph/label-layout.d.ts.map +1 -0
- package/dist/components/knowledge-graph/label-store.d.ts +15 -0
- package/dist/components/knowledge-graph/label-store.d.ts.map +1 -0
- package/dist/components/knowledge-graph/model.d.ts +92 -0
- package/dist/components/knowledge-graph/model.d.ts.map +1 -0
- package/dist/components/label/index.js +5 -0
- package/dist/components/label/index.js.map +1 -0
- package/dist/components/label/label.d.ts.map +1 -1
- package/dist/components/lightbox/lightbox.d.ts.map +1 -1
- package/dist/components/loading-screen/index.js +4 -0
- package/dist/components/loading-screen/index.js.map +1 -0
- package/dist/components/map/Map.d.ts +19 -43
- package/dist/components/map/Map.d.ts.map +1 -1
- package/dist/components/map/MapCoverageLayer.d.ts +1 -1
- package/dist/components/map/MapCoverageLayer.d.ts.map +1 -1
- package/dist/components/map/MapMarker.d.ts +1 -1
- package/dist/components/map/MapMarker.d.ts.map +1 -1
- package/dist/components/map/MapPlaceSearch.d.ts +33 -0
- package/dist/components/map/MapPlaceSearch.d.ts.map +1 -0
- package/dist/components/map/MapPointPicker.d.ts +21 -12
- package/dist/components/map/MapPointPicker.d.ts.map +1 -1
- package/dist/components/map/coordinates.d.ts +10 -0
- package/dist/components/map/coordinates.d.ts.map +1 -0
- package/dist/components/map/index.css +4 -0
- package/dist/components/map/index.css.map +1 -0
- package/dist/components/map/index.d.ts +7 -2
- package/dist/components/map/index.d.ts.map +1 -1
- package/dist/components/map/index.js +4 -0
- package/dist/components/map/index.js.map +1 -0
- package/dist/components/nav-card/nav-card.d.ts.map +1 -1
- package/dist/components/navigation-progress/index.js +4 -0
- package/dist/components/navigation-progress/index.js.map +1 -0
- package/dist/components/page-content/index.js +4 -0
- package/dist/components/page-content/index.js.map +1 -0
- package/dist/components/popover/index.js +4 -0
- package/dist/components/popover/index.js.map +1 -0
- package/dist/components/rail/rail.d.ts.map +1 -1
- package/dist/components/research/diagram-image.d.ts +11 -0
- package/dist/components/research/diagram-image.d.ts.map +1 -0
- package/dist/components/research/diagram.d.ts +8 -0
- package/dist/components/research/diagram.d.ts.map +1 -0
- package/dist/components/research/document.d.ts +33 -0
- package/dist/components/research/document.d.ts.map +1 -0
- package/dist/components/research/frontmatter.d.ts +15 -0
- package/dist/components/research/frontmatter.d.ts.map +1 -0
- package/dist/components/research/index.css +51 -0
- package/dist/components/research/index.css.map +1 -0
- package/dist/components/research/index.d.ts +3 -0
- package/dist/components/research/index.d.ts.map +1 -0
- package/dist/components/research/index.js +8 -0
- package/dist/components/research/index.js.map +1 -0
- package/dist/components/research/parse.d.ts +29 -0
- package/dist/components/research/parse.d.ts.map +1 -0
- package/dist/components/research-editor/block-commands.d.ts +20 -0
- package/dist/components/research-editor/block-commands.d.ts.map +1 -0
- package/dist/components/research-editor/block-controls.d.ts +13 -0
- package/dist/components/research-editor/block-controls.d.ts.map +1 -0
- package/dist/components/research-editor/editor.d.ts +75 -0
- package/dist/components/research-editor/editor.d.ts.map +1 -0
- package/dist/components/research-editor/extensions.d.ts +14 -0
- package/dist/components/research-editor/extensions.d.ts.map +1 -0
- package/dist/components/research-editor/index.css +332 -0
- package/dist/components/research-editor/index.css.map +1 -0
- package/dist/components/research-editor/index.d.ts +5 -0
- package/dist/components/research-editor/index.d.ts.map +1 -0
- package/dist/components/research-editor/index.js +1593 -0
- package/dist/components/research-editor/index.js.map +1 -0
- package/dist/components/research-editor/math-input.d.ts +32 -0
- package/dist/components/research-editor/math-input.d.ts.map +1 -0
- package/dist/components/research-editor/math-markup.d.ts +4 -0
- package/dist/components/research-editor/math-markup.d.ts.map +1 -0
- package/dist/components/research-editor/math-navigation.d.ts +6 -0
- package/dist/components/research-editor/math-navigation.d.ts.map +1 -0
- package/dist/components/research-editor/math-node.d.ts +11 -0
- package/dist/components/research-editor/math-node.d.ts.map +1 -0
- package/dist/components/research-editor/source.d.ts +19 -0
- package/dist/components/research-editor/source.d.ts.map +1 -0
- package/dist/components/scroll-to-top/index.js +4 -0
- package/dist/components/scroll-to-top/index.js.map +1 -0
- package/dist/components/scrollbar/scrollbar.d.ts +4 -2
- package/dist/components/scrollbar/scrollbar.d.ts.map +1 -1
- package/dist/components/search-input/index.js +7 -0
- package/dist/components/search-input/index.js.map +1 -0
- package/dist/components/search-input/search-input.d.ts +3 -11
- package/dist/components/search-input/search-input.d.ts.map +1 -1
- package/dist/components/skeleton/index.js +4 -0
- package/dist/components/skeleton/index.js.map +1 -0
- package/dist/components/snackbar/index.js +6 -0
- package/dist/components/snackbar/index.js.map +1 -0
- package/dist/components/stepper/index.js +4 -0
- package/dist/components/stepper/index.js.map +1 -0
- package/dist/components/table/index.d.ts +1 -0
- package/dist/components/table/index.d.ts.map +1 -1
- package/dist/components/table/index.js +5 -0
- package/dist/components/table/index.js.map +1 -0
- package/dist/components/table/table-viewport.d.ts +13 -0
- package/dist/components/table/table-viewport.d.ts.map +1 -0
- package/dist/components/table/table.d.ts +3 -1
- package/dist/components/table/table.d.ts.map +1 -1
- package/dist/components/tabs/index.js +6 -0
- package/dist/components/tabs/index.js.map +1 -0
- package/dist/components/tabs/tabs.d.ts +12 -1
- package/dist/components/tabs/tabs.d.ts.map +1 -1
- package/dist/components/tiptap-renderer/tiptap-renderer.d.ts +4 -3
- package/dist/components/tiptap-renderer/tiptap-renderer.d.ts.map +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +12 -6
- package/dist/core/index.js.map +1 -1
- package/dist/core/provider.d.ts +7 -2
- package/dist/core/provider.d.ts.map +1 -1
- package/dist/forms/index.js +2 -0
- package/dist/forms/index.js.map +1 -1
- package/dist/forms/schema-provider.d.ts +3 -3
- package/dist/forms/schema-utils.d.ts +3 -3
- package/dist/hooks/index.js +14 -8
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/use-config-from-query.d.ts +2 -0
- package/dist/hooks/use-config-from-query.d.ts.map +1 -1
- package/dist/hooks/use-image-dimensions.d.ts.map +1 -1
- package/dist/hooks/use-keyboard-shortcut.d.ts.map +1 -1
- package/dist/hooks/use-scroll-position.d.ts.map +1 -1
- package/dist/hooks/use-window-size.d.ts.map +1 -1
- package/dist/icons/context.d.ts +17 -0
- package/dist/icons/context.d.ts.map +1 -0
- package/dist/icons/controls.d.ts +51 -0
- package/dist/icons/controls.d.ts.map +1 -0
- package/dist/icons/index.d.ts +3 -0
- package/dist/icons/index.d.ts.map +1 -0
- package/dist/icons/index.js +5 -0
- package/dist/icons/index.js.map +1 -0
- package/dist/icons/theme.d.ts +4 -0
- package/dist/icons/theme.d.ts.map +1 -0
- package/dist/index.css +17 -10
- package/dist/index.css.map +1 -1
- package/dist/index.js +57 -20
- package/dist/index.js.map +1 -1
- package/dist/internal/research-parser.js +3 -0
- package/dist/internal/research-parser.js.map +1 -0
- package/dist/layouts/core/header-section.d.ts +1 -0
- package/dist/layouts/core/header-section.d.ts.map +1 -1
- package/dist/layouts/dashboard/labels.d.ts +12 -0
- package/dist/layouts/dashboard/labels.d.ts.map +1 -0
- package/dist/layouts/dashboard/layout.d.ts +9 -1
- package/dist/layouts/dashboard/layout.d.ts.map +1 -1
- package/dist/layouts/dashboard/sidenav.d.ts +7 -3
- package/dist/layouts/dashboard/sidenav.d.ts.map +1 -1
- package/dist/layouts/index.d.ts +5 -0
- package/dist/layouts/index.d.ts.map +1 -1
- package/dist/layouts/index.js +9 -3
- package/dist/layouts/index.js.map +1 -1
- package/dist/layouts/panel-layout.d.ts +35 -0
- package/dist/layouts/panel-layout.d.ts.map +1 -0
- package/dist/layouts/sidebar-toggle.d.ts +11 -0
- package/dist/layouts/sidebar-toggle.d.ts.map +1 -0
- package/dist/netron/index.js +2 -1
- package/dist/netron/index.js.map +1 -1
- package/dist/registry/index.js +1 -1
- package/dist/state/create-store.d.ts.map +1 -1
- package/dist/state/index.js +3 -2
- package/dist/state/index.js.map +1 -1
- package/dist/state/settings-version.d.ts.map +1 -1
- package/dist/state/stores/auth.d.ts +4 -16
- package/dist/state/stores/auth.d.ts.map +1 -1
- package/dist/state/stores/ui.d.ts +7 -105
- package/dist/state/stores/ui.d.ts.map +1 -1
- package/dist/theme/components/Button.d.ts.map +1 -1
- package/dist/theme/components/Chip.d.ts.map +1 -1
- package/dist/theme/components/Dialog.d.ts.map +1 -1
- package/dist/theme/components/FormControls.d.ts +3 -12
- package/dist/theme/components/FormControls.d.ts.map +1 -1
- package/dist/theme/components/TextField.d.ts.map +1 -1
- package/dist/theme/components/index.d.ts.map +1 -1
- package/dist/theme/components/theme-utils.d.ts +2 -2
- package/dist/theme/components/theme-utils.d.ts.map +1 -1
- package/dist/theme/create-theme.d.ts +5 -17
- package/dist/theme/create-theme.d.ts.map +1 -1
- package/dist/theme/index.js +8 -2
- package/dist/theme/index.js.map +1 -1
- package/dist/theme/mixins.d.ts +3 -1
- package/dist/theme/mixins.d.ts.map +1 -1
- package/dist/theme/palette/overrides.d.ts +24 -0
- package/dist/theme/palette/overrides.d.ts.map +1 -0
- package/dist/theme/semantic-surface.d.ts +8 -0
- package/dist/theme/semantic-surface.d.ts.map +1 -0
- package/dist/types/index.js +2 -2
- package/dist/ui/index.d.ts +18 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +149 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/utils/async-lock.d.ts.map +1 -1
- package/package.json +200 -47
- package/dist/chunk-6AHI4GSV.js.map +0 -1
- package/dist/chunk-AD4W7HYC.js.map +0 -1
- package/dist/chunk-ADG4HZEP.js.map +0 -1
- package/dist/chunk-BRDWQVRT.js.map +0 -1
- package/dist/chunk-BZOL7GMU.js.map +0 -1
- package/dist/chunk-DRFNMZLG.js.map +0 -1
- package/dist/chunk-FU52GL2E.js +0 -3
- package/dist/chunk-OBJ244BO.js.map +0 -1
- package/dist/chunk-S6SEGBX6.js.map +0 -1
- package/dist/chunk-SNZK5X6F.js.map +0 -1
- package/dist/chunk-WFD54GQQ.js.map +0 -1
- package/dist/chunk-XIXSSI3B.js.map +0 -1
- package/dist/chunk-YQW43BDH.js.map +0 -1
- package/dist/chunk-Z5OSPAOC.js.map +0 -1
- package/dist/chunk-ZTATTUH7.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/label/label.tsx"],"names":[],"mappings":"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","file":"chunk-URFQX3I6.js","sourcesContent":["'use client';\n\n/**\n * Label Component\n *\n * A versatile label/badge component for status indicators, categories, and tags.\n *\n * @module components/label\n */\n\nimport type { ReactNode, Ref } from 'react';\nimport Box from '@mui/material/Box';\nimport { styled } from '@mui/material/styles';\nimport type { SxProps, Theme } from '@mui/material/styles';\nimport { semanticSurfaceStyles, semanticTextColor } from '../../theme/semantic-surface.js';\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\nexport type LabelColor = 'default' | 'primary' | 'secondary' | 'info' | 'success' | 'warning' | 'error';\n\nexport type LabelVariant = 'filled' | 'outlined' | 'soft' | 'inverted';\n\nexport interface LabelProps {\n /** Content of the label */\n children?: ReactNode;\n /** Color scheme */\n color?: LabelColor;\n /** Visual variant */\n variant?: LabelVariant;\n /** Start icon */\n startIcon?: ReactNode;\n /** End icon */\n endIcon?: ReactNode;\n /** Additional styles */\n sx?: SxProps<Theme>;\n /** Disabled state */\n disabled?: boolean;\n /**\n * Forwarded ref to the underlying span. React 19 threads `ref`\n * through props directly, so consumers pass it like any other\n * prop and no `forwardRef` wrapper is required on this side.\n */\n ref?: Ref<HTMLSpanElement>;\n}\n\n// =============================================================================\n// STYLED COMPONENT\n// =============================================================================\n\ninterface StyledLabelProps {\n ownerState: {\n color: LabelColor;\n variant: LabelVariant;\n disabled?: boolean;\n };\n}\n\nconst StyledLabel = styled('span', {\n shouldForwardProp: (prop) => !['ownerState', 'theme', 'sx', 'as'].includes(prop as string),\n})<StyledLabelProps>(({ theme, ownerState }) => {\n const palette = theme.vars?.palette ?? theme.palette;\n const { color, variant, disabled } = ownerState;\n\n // Get palette color for non-default colors (guaranteed defined when used below)\n const paletteColor = color !== 'default' ? palette[color] : null;\n\n // Fallback palette for safe access (uses grey as safe default)\n const safePalette = paletteColor ?? {\n main: palette.grey[500],\n light: palette.grey[300],\n dark: palette.grey[700],\n contrastText: palette.common.white,\n };\n\n const contrastText = (mode: 'light' | 'dark', surface: 'paper' | 'white' = 'paper') => {\n if (color === 'default') return surface === 'white' ? palette.grey[800] : palette.text.secondary;\n return semanticTextColor(theme, color, mode, 0.16, surface);\n };\n\n // Border radius as number for arithmetic\n const borderRadius = typeof theme.shape.borderRadius === 'number' ? theme.shape.borderRadius : 4;\n\n const baseStyles = {\n height: 24,\n minWidth: 24,\n lineHeight: 0,\n cursor: 'default',\n borderRadius: borderRadius * 0.75,\n alignItems: 'center',\n whiteSpace: 'nowrap' as const,\n display: 'inline-flex',\n justifyContent: 'center',\n textTransform: 'capitalize' as const,\n padding: theme.spacing(0, 0.75),\n fontSize: theme.typography.pxToRem(12),\n fontWeight: theme.typography.fontWeightBold,\n transition: theme.transitions.create(['all'], {\n duration: theme.transitions.duration.shorter,\n }),\n ...(disabled && {\n opacity: 0.48,\n pointerEvents: 'none' as const,\n }),\n };\n\n // Filled variant\n const filledStyles = {\n color: color === 'default' ? palette.common.white : safePalette.contrastText,\n backgroundColor: color === 'default' ? palette.text.primary : safePalette.main,\n ...(color === 'default' && theme.applyStyles('dark', { color: palette.grey[800] })),\n };\n\n // Outlined variant\n const outlinedStyles = {\n color: color === 'default' ? palette.text.primary : safePalette.main,\n backgroundColor: 'transparent',\n border: `2px solid ${color === 'default' ? theme.alpha(palette.grey[500], 0.32) : theme.alpha(safePalette.main, 0.48)}`,\n };\n\n // Soft variant\n const softStyles = color === 'default'\n ? { color: palette.text.secondary, backgroundColor: theme.alpha(palette.grey[500], 0.16) }\n : semanticSurfaceStyles(theme, color);\n\n // Inverted variant (white background with colored text)\n const invertedStyles = {\n color: contrastText('light', 'white'),\n backgroundColor: palette.common.white,\n border: `1px solid ${theme.alpha(palette.grey[500], 0.16)}`,\n ...(paletteColor && {\n boxShadow: `inset 0 0 0 1px ${theme.alpha(paletteColor.main, 0.24)}`,\n }),\n ...theme.applyStyles('dark', { color: contrastText('dark', 'white') }),\n };\n\n const variantStyles = {\n filled: filledStyles,\n outlined: outlinedStyles,\n soft: softStyles,\n inverted: invertedStyles,\n };\n\n return {\n ...baseStyles,\n ...variantStyles[variant],\n };\n});\n\n// =============================================================================\n// COMPONENT\n// =============================================================================\n\n/**\n * Label - A versatile label/badge component.\n *\n * @example\n * ```tsx\n * <Label>Default</Label>\n * <Label color=\"success\">Active</Label>\n * <Label color=\"error\" variant=\"outlined\">Failed</Label>\n * <Label color=\"warning\" variant=\"soft\">Pending</Label>\n * ```\n *\n * @example\n * ```tsx\n * // With icons\n * <Label\n * color=\"success\"\n * startIcon={<CheckIcon sx={{ width: 14, height: 14 }} />}\n * >\n * Verified\n * </Label>\n * ```\n */\nexport function Label({\n children,\n color = 'default',\n variant = 'soft',\n startIcon,\n endIcon,\n sx,\n disabled,\n ref,\n ...other\n}: LabelProps) {\n const ownerState = {\n color,\n variant,\n disabled,\n };\n\n const iconStyles = {\n width: 16,\n height: 16,\n flexShrink: 0,\n '& svg, & img': { width: '100%', height: '100%' },\n };\n\n return (\n <StyledLabel ref={ref} ownerState={ownerState} sx={sx} {...other}>\n {startIcon && <Box sx={{ mr: 0.5, ...iconStyles }}>{startIcon}</Box>}\n\n {children}\n\n {endIcon && <Box sx={{ ml: 0.5, ...iconStyles }}>{endIcon}</Box>}\n </StyledLabel>\n );\n}\n\n// =============================================================================\n// PRESET LABELS\n// =============================================================================\n\n/**\n * Status label with preset colors based on common status types.\n */\nexport function StatusLabel({\n status,\n ...props\n}: Omit<LabelProps, 'color' | 'children'> & {\n status: 'active' | 'inactive' | 'pending' | 'banned' | 'rejected';\n}): ReactNode {\n const statusConfig: Record<typeof status, { color: LabelColor; label: string }> = {\n active: { color: 'success', label: 'Active' },\n inactive: { color: 'default', label: 'Inactive' },\n pending: { color: 'warning', label: 'Pending' },\n banned: { color: 'error', label: 'Banned' },\n rejected: { color: 'error', label: 'Rejected' },\n };\n\n const config = statusConfig[status];\n\n return (\n <Label color={config.color} {...props}>\n {config.label}\n </Label>\n );\n}\n\n/**\n * Boolean label that shows Yes/No or custom text.\n */\nexport function BooleanLabel({\n value,\n trueText = 'Yes',\n falseText = 'No',\n ...props\n}: Omit<LabelProps, 'color' | 'children'> & {\n value: boolean;\n trueText?: string;\n falseText?: string;\n}): ReactNode {\n return (\n <Label color={value ? 'success' : 'error'} {...props}>\n {value ? trueText : falseText}\n </Label>\n );\n}\n"]}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import { styled } from '@mui/material/styles';
|
|
2
|
+
import MuiBreadcrumbs from '@mui/material/Breadcrumbs';
|
|
3
|
+
import Link from '@mui/material/Link';
|
|
4
|
+
import SvgIcon from '@mui/material/SvgIcon';
|
|
5
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
// src/components/breadcrumbs/breadcrumbs.tsx
|
|
8
|
+
var BreadcrumbsRoot = styled("div")(({ theme }) => ({
|
|
9
|
+
minWidth: 0,
|
|
10
|
+
display: "flex",
|
|
11
|
+
flexDirection: "column",
|
|
12
|
+
gap: theme.spacing(2)
|
|
13
|
+
}));
|
|
14
|
+
var BreadcrumbsHeading = styled("h6")(({ theme }) => ({
|
|
15
|
+
...theme.typography.h4,
|
|
16
|
+
margin: 0,
|
|
17
|
+
padding: 0,
|
|
18
|
+
display: "inline-flex"
|
|
19
|
+
}));
|
|
20
|
+
var BreadcrumbsContainer = styled("div")(({ theme }) => ({
|
|
21
|
+
display: "flex",
|
|
22
|
+
flexWrap: "wrap",
|
|
23
|
+
gap: theme.spacing(2),
|
|
24
|
+
alignItems: "flex-start",
|
|
25
|
+
justifyContent: "flex-end"
|
|
26
|
+
}));
|
|
27
|
+
var BreadcrumbsContent = styled("div")(({ theme }) => ({
|
|
28
|
+
minWidth: 0,
|
|
29
|
+
display: "flex",
|
|
30
|
+
flex: "1 1 auto",
|
|
31
|
+
gap: theme.spacing(2),
|
|
32
|
+
flexDirection: "column"
|
|
33
|
+
}));
|
|
34
|
+
var BreadcrumbsSeparator = styled("span")(({ theme }) => ({
|
|
35
|
+
width: 4,
|
|
36
|
+
height: 4,
|
|
37
|
+
borderRadius: "50%",
|
|
38
|
+
backgroundColor: theme.palette.text.disabled
|
|
39
|
+
}));
|
|
40
|
+
var ItemRoot = styled("div", {
|
|
41
|
+
shouldForwardProp: (prop) => prop !== "disabled"
|
|
42
|
+
})(({ disabled, theme }) => ({
|
|
43
|
+
...theme.typography.body2,
|
|
44
|
+
minWidth: 0,
|
|
45
|
+
maxWidth: "100%",
|
|
46
|
+
overflowWrap: "anywhere",
|
|
47
|
+
alignItems: "center",
|
|
48
|
+
gap: theme.spacing(0.5),
|
|
49
|
+
display: "inline-flex",
|
|
50
|
+
color: theme.palette.text.secondary,
|
|
51
|
+
...disabled && {
|
|
52
|
+
cursor: "default",
|
|
53
|
+
pointerEvents: "none",
|
|
54
|
+
color: theme.palette.text.primary,
|
|
55
|
+
fontWeight: 600
|
|
56
|
+
}
|
|
57
|
+
}));
|
|
58
|
+
var ItemIcon = styled("span")({
|
|
59
|
+
display: "inherit",
|
|
60
|
+
// Constrain the icon (first real child) to 20×20. The previous
|
|
61
|
+
// selector chain `:first-of-type:not(style):not(:first-of-type ~ *)`
|
|
62
|
+
// was an obscure way to say "the first child that isn't a <style>
|
|
63
|
+
// tag" — replaced with the modern `:first-child:not(style)` for
|
|
64
|
+
// both readability and v9 lint compliance.
|
|
65
|
+
"& > :first-child:not(style)": {
|
|
66
|
+
width: 20,
|
|
67
|
+
height: 20
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
var MoreLinksRoot = styled("ul")({
|
|
71
|
+
display: "flex",
|
|
72
|
+
flexDirection: "column",
|
|
73
|
+
"& > li": { display: "flex" }
|
|
74
|
+
});
|
|
75
|
+
function ArrowBackIcon() {
|
|
76
|
+
return /* @__PURE__ */ jsx(SvgIcon, { sx: { fontSize: 18 }, children: /* @__PURE__ */ jsx("path", { d: "M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z" }) });
|
|
77
|
+
}
|
|
78
|
+
function BackLink({
|
|
79
|
+
href,
|
|
80
|
+
label,
|
|
81
|
+
sx,
|
|
82
|
+
linkComponent
|
|
83
|
+
}) {
|
|
84
|
+
const linkProps = linkComponent ? { component: linkComponent, to: href } : { href };
|
|
85
|
+
return /* @__PURE__ */ jsxs(
|
|
86
|
+
Link,
|
|
87
|
+
{
|
|
88
|
+
color: "inherit",
|
|
89
|
+
underline: "none",
|
|
90
|
+
sx: [
|
|
91
|
+
(theme) => ({
|
|
92
|
+
verticalAlign: "middle",
|
|
93
|
+
display: "inline-flex",
|
|
94
|
+
alignItems: "center",
|
|
95
|
+
"& .PrismBackLinkIcon": {
|
|
96
|
+
verticalAlign: "inherit",
|
|
97
|
+
transform: "translateY(-1px)",
|
|
98
|
+
ml: { xs: "-14px", md: "-18px" },
|
|
99
|
+
transition: theme.transitions.create("opacity", {
|
|
100
|
+
duration: theme.transitions.duration.shorter
|
|
101
|
+
})
|
|
102
|
+
},
|
|
103
|
+
"&:hover .PrismBackLinkIcon": { opacity: 0.48 }
|
|
104
|
+
}),
|
|
105
|
+
...Array.isArray(sx) ? sx : [sx]
|
|
106
|
+
],
|
|
107
|
+
...linkProps,
|
|
108
|
+
children: [
|
|
109
|
+
/* @__PURE__ */ jsx("span", { className: "PrismBackLinkIcon", children: /* @__PURE__ */ jsx(ArrowBackIcon, {}) }),
|
|
110
|
+
label
|
|
111
|
+
]
|
|
112
|
+
}
|
|
113
|
+
);
|
|
114
|
+
}
|
|
115
|
+
function BreadcrumbLink({
|
|
116
|
+
href,
|
|
117
|
+
icon,
|
|
118
|
+
name,
|
|
119
|
+
disabled,
|
|
120
|
+
current,
|
|
121
|
+
linkComponent
|
|
122
|
+
}) {
|
|
123
|
+
const content = /* @__PURE__ */ jsxs(ItemRoot, { disabled, "aria-current": current ? "page" : void 0, children: [
|
|
124
|
+
icon && /* @__PURE__ */ jsx(ItemIcon, { children: icon }),
|
|
125
|
+
name
|
|
126
|
+
] });
|
|
127
|
+
if (href && !disabled) {
|
|
128
|
+
const linkProps = linkComponent ? { component: linkComponent, to: href } : { href };
|
|
129
|
+
return /* @__PURE__ */ jsx(Link, { color: "inherit", sx: { display: "inline-flex" }, ...linkProps, children: content });
|
|
130
|
+
}
|
|
131
|
+
return content;
|
|
132
|
+
}
|
|
133
|
+
var SAFE_LINK_SCHEMES = /* @__PURE__ */ new Set(["http:", "https:", "mailto:", "tel:"]);
|
|
134
|
+
function isSafeExternalLink(href) {
|
|
135
|
+
const trimmed = href.trim();
|
|
136
|
+
if (trimmed.startsWith("/") || trimmed.startsWith("#")) return true;
|
|
137
|
+
try {
|
|
138
|
+
return SAFE_LINK_SCHEMES.has(new URL(trimmed, "https://placeholder.invalid").protocol);
|
|
139
|
+
} catch {
|
|
140
|
+
return false;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
function MoreLinks({ links, sx, ...other }) {
|
|
144
|
+
return /* @__PURE__ */ jsx(MoreLinksRoot, { sx, ...other, children: links?.filter(isSafeExternalLink).map((href) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(Link, { href, variant: "body2", target: "_blank", rel: "noopener noreferrer", children: href }) }, href)) });
|
|
145
|
+
}
|
|
146
|
+
function Breadcrumbs({
|
|
147
|
+
sx,
|
|
148
|
+
action,
|
|
149
|
+
backHref,
|
|
150
|
+
heading,
|
|
151
|
+
slots = {},
|
|
152
|
+
links = [],
|
|
153
|
+
moreLinks = [],
|
|
154
|
+
slotProps = {},
|
|
155
|
+
activeLast = false,
|
|
156
|
+
linkComponent,
|
|
157
|
+
...other
|
|
158
|
+
}) {
|
|
159
|
+
const renderHeading = () => /* @__PURE__ */ jsx(BreadcrumbsHeading, { ...slotProps?.heading, children: backHref ? /* @__PURE__ */ jsx(BackLink, { href: backHref, label: heading, linkComponent }) : heading });
|
|
160
|
+
const renderLinks = () => slots?.breadcrumbs ?? /* @__PURE__ */ jsx(MuiBreadcrumbs, { separator: /* @__PURE__ */ jsx(BreadcrumbsSeparator, {}), ...slotProps?.breadcrumbs, children: links.map((link, index) => /* @__PURE__ */ jsx(
|
|
161
|
+
BreadcrumbLink,
|
|
162
|
+
{
|
|
163
|
+
icon: link.icon,
|
|
164
|
+
href: link.href,
|
|
165
|
+
name: link.name,
|
|
166
|
+
disabled: link.disabled || index === links.length - 1 && !activeLast,
|
|
167
|
+
current: index === links.length - 1,
|
|
168
|
+
linkComponent
|
|
169
|
+
},
|
|
170
|
+
`${link.href ?? link.name ?? ""}-${index}`
|
|
171
|
+
)) });
|
|
172
|
+
const renderMoreLinks = () => /* @__PURE__ */ jsx(MoreLinks, { links: moreLinks, ...slotProps?.moreLinks });
|
|
173
|
+
return /* @__PURE__ */ jsxs(BreadcrumbsRoot, { sx, ...other, children: [
|
|
174
|
+
/* @__PURE__ */ jsxs(BreadcrumbsContainer, { ...slotProps?.container, children: [
|
|
175
|
+
/* @__PURE__ */ jsxs(BreadcrumbsContent, { ...slotProps?.content, children: [
|
|
176
|
+
(heading || backHref) && renderHeading(),
|
|
177
|
+
(!!links.length || slots?.breadcrumbs) && renderLinks()
|
|
178
|
+
] }),
|
|
179
|
+
action
|
|
180
|
+
] }),
|
|
181
|
+
!!moreLinks?.length && renderMoreLinks()
|
|
182
|
+
] });
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
export { Breadcrumbs };
|
|
186
|
+
//# sourceMappingURL=chunk-VG6FOMOH.js.map
|
|
187
|
+
//# sourceMappingURL=chunk-VG6FOMOH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/breadcrumbs/breadcrumbs.tsx"],"names":[],"mappings":"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","file":"chunk-VG6FOMOH.js","sourcesContent":["'use client';\n\n/**\n * Custom Breadcrumbs Component\n *\n * Full-featured navigation breadcrumbs with heading, back link, action slot,\n * and more links section. Adapted from minimal-vite-ts patterns.\n *\n * @module components/breadcrumbs\n */\n\nimport type { ReactNode, ElementType } from 'react';\nimport { styled } from '@mui/material/styles';\nimport MuiBreadcrumbs from '@mui/material/Breadcrumbs';\nimport Link from '@mui/material/Link';\nimport SvgIcon from '@mui/material/SvgIcon';\nimport type { SxProps, Theme } from '@mui/material/styles';\nimport type { BreadcrumbsProps as MuiBreadcrumbsProps } from '@mui/material/Breadcrumbs';\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/** Individual breadcrumb link definition. */\nexport interface BreadcrumbLinkProps {\n /** Link label */\n name?: string;\n /** Link href */\n href?: string;\n /** Link icon */\n icon?: ReactNode;\n /** Whether the link is disabled */\n disabled?: boolean;\n}\n\n/** Props for the MoreLinks sub-component. */\nexport interface MoreLinksProps extends React.ComponentProps<'ul'> {\n /** Array of external link URLs */\n links?: string[];\n /** MUI sx prop */\n sx?: SxProps<Theme>;\n}\n\n/** Slot props for customizing sub-components. */\nexport interface BreadcrumbsSlotProps {\n breadcrumbs?: Partial<MuiBreadcrumbsProps>;\n heading?: React.ComponentProps<'h6'>;\n content?: React.ComponentProps<'div'>;\n container?: React.ComponentProps<'div'>;\n moreLinks?: Omit<MoreLinksProps, 'links'>;\n}\n\n/** Custom slot overrides. */\nexport interface BreadcrumbsSlots {\n /** Override the entire breadcrumbs section */\n breadcrumbs?: ReactNode;\n}\n\n/** Props for the Breadcrumbs component. */\nexport interface BreadcrumbsProps extends React.ComponentProps<'div'> {\n /** MUI sx prop */\n sx?: SxProps<Theme>;\n /** Page heading displayed above breadcrumbs */\n heading?: string;\n /** Keep the last breadcrumb link active (clickable) */\n activeLast?: boolean;\n /** Back navigation href — displays arrow icon before heading */\n backHref?: string;\n /** Action element rendered on the right side */\n action?: ReactNode;\n /** Breadcrumb link items */\n links?: BreadcrumbLinkProps[];\n /** External reference links displayed below breadcrumbs */\n moreLinks?: string[];\n /**\n * Custom link component for client-side routing (e.g. react-router's Link).\n * The component receives `to` (from href) and `children` props.\n * When provided, breadcrumb links use this instead of native `<a>` tags.\n */\n linkComponent?: ElementType;\n /** Slot overrides */\n slots?: BreadcrumbsSlots;\n /** Slot prop overrides */\n slotProps?: Partial<BreadcrumbsSlotProps>;\n}\n\n// =============================================================================\n// STYLED COMPONENTS\n// =============================================================================\n\nconst BreadcrumbsRoot = styled('div')(({ theme }) => ({\n minWidth: 0,\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(2),\n}));\n\nconst BreadcrumbsHeading = styled('h6')(({ theme }) => ({\n ...theme.typography.h4,\n margin: 0,\n padding: 0,\n display: 'inline-flex',\n}));\n\nconst BreadcrumbsContainer = styled('div')(({ theme }) => ({\n display: 'flex',\n flexWrap: 'wrap',\n gap: theme.spacing(2),\n alignItems: 'flex-start',\n justifyContent: 'flex-end',\n}));\n\nconst BreadcrumbsContent = styled('div')(({ theme }) => ({\n minWidth: 0,\n display: 'flex',\n flex: '1 1 auto',\n gap: theme.spacing(2),\n flexDirection: 'column',\n}));\n\nconst BreadcrumbsSeparator = styled('span')(({ theme }) => ({\n width: 4,\n height: 4,\n borderRadius: '50%',\n backgroundColor: theme.palette.text.disabled,\n}));\n\n/**\n * Breadcrumb item base. Three visual states:\n *\n * - `clickable` (default — link with `href`) → `text.secondary`\n * so the user can distinguish \"I can navigate here\" from\n * \"you are here\" at rest, not just on hover. Pre-fix every\n * item rendered in `text.primary` and the only differentiator\n * was the link underline, which appears only on hover.\n *\n * - `disabled` (terminal / current page — the last link by\n * default) → `text.primary` and `fontWeight: 600`. The current\n * location should be the MOST prominent crumb in the trail;\n * the prior styling greyed it out, which read as \"this item is\n * unavailable\" instead of \"this is where you are\".\n */\nconst ItemRoot = styled('div', {\n shouldForwardProp: (prop: string) => prop !== 'disabled',\n})<{ disabled?: boolean }>(({ disabled, theme }) => ({\n ...theme.typography.body2,\n minWidth: 0,\n maxWidth: '100%',\n overflowWrap: 'anywhere',\n alignItems: 'center',\n gap: theme.spacing(0.5),\n display: 'inline-flex',\n color: theme.palette.text.secondary,\n ...(disabled && {\n cursor: 'default',\n pointerEvents: 'none',\n color: theme.palette.text.primary,\n fontWeight: 600,\n }),\n}));\n\nconst ItemIcon = styled('span')({\n display: 'inherit',\n // Constrain the icon (first real child) to 20×20. The previous\n // selector chain `:first-of-type:not(style):not(:first-of-type ~ *)`\n // was an obscure way to say \"the first child that isn't a <style>\n // tag\" — replaced with the modern `:first-child:not(style)` for\n // both readability and v9 lint compliance.\n '& > :first-child:not(style)': {\n width: 20,\n height: 20,\n },\n});\n\nconst MoreLinksRoot = styled('ul')({\n display: 'flex',\n flexDirection: 'column',\n '& > li': { display: 'flex' },\n});\n\n// =============================================================================\n// ARROW BACK ICON\n// =============================================================================\n\nfunction ArrowBackIcon() {\n return (\n <SvgIcon sx={{ fontSize: 18 }}>\n <path d=\"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z\" />\n </SvgIcon>\n );\n}\n\n// =============================================================================\n// SUB-COMPONENTS\n// =============================================================================\n\n/** Back link with arrow icon for navigation. */\nfunction BackLink({\n href,\n label,\n sx,\n linkComponent,\n}: {\n href: string;\n label?: string;\n sx?: SxProps<Theme>;\n linkComponent?: ElementType;\n}) {\n const linkProps = linkComponent ? { component: linkComponent, to: href } : { href };\n\n return (\n <Link\n color=\"inherit\"\n underline=\"none\"\n sx={[\n (theme) => ({\n verticalAlign: 'middle',\n display: 'inline-flex',\n alignItems: 'center',\n '& .PrismBackLinkIcon': {\n verticalAlign: 'inherit',\n transform: 'translateY(-1px)',\n ml: { xs: '-14px', md: '-18px' },\n transition: theme.transitions.create('opacity', {\n duration: theme.transitions.duration.shorter,\n }),\n },\n '&:hover .PrismBackLinkIcon': { opacity: 0.48 },\n }),\n ...(Array.isArray(sx) ? sx : [sx]),\n ]}\n {...linkProps}\n >\n <span className=\"PrismBackLinkIcon\">\n <ArrowBackIcon />\n </span>\n {label}\n </Link>\n );\n}\n\n/** Individual breadcrumb link with optional icon. */\nfunction BreadcrumbLink({\n href,\n icon,\n name,\n disabled,\n current,\n linkComponent,\n}: BreadcrumbLinkProps & { current?: boolean; linkComponent?: ElementType }) {\n const content = (\n <ItemRoot disabled={disabled} aria-current={current ? 'page' : undefined}>\n {icon && <ItemIcon>{icon}</ItemIcon>}\n {name}\n </ItemRoot>\n );\n\n if (href && !disabled) {\n const linkProps = linkComponent ? { component: linkComponent, to: href } : { href };\n\n return (\n <Link color=\"inherit\" sx={{ display: 'inline-flex' }} {...linkProps}>\n {content}\n </Link>\n );\n }\n\n return content;\n}\n\n/**\n * Schemes an external reference link may use.\n *\n * `moreLinks` takes raw strings and renders them as anchors. If any consumer\n * ever feeds it a value that originated server-side, `javascript:` and\n * `data:` URLs become script execution on click. The component cannot know\n * where its strings came from, so it refuses the dangerous ones outright —\n * a library should be safe by default, not safe when used carefully.\n */\nconst SAFE_LINK_SCHEMES = new Set(['http:', 'https:', 'mailto:', 'tel:']);\n\nfunction isSafeExternalLink(href: string): boolean {\n const trimmed = href.trim();\n // Relative and protocol-relative URLs carry no scheme of their own.\n if (trimmed.startsWith('/') || trimmed.startsWith('#')) return true;\n try {\n return SAFE_LINK_SCHEMES.has(new URL(trimmed, 'https://placeholder.invalid').protocol);\n } catch {\n return false;\n }\n}\n\n/** List of external reference links. */\nfunction MoreLinks({ links, sx, ...other }: MoreLinksProps) {\n return (\n <MoreLinksRoot sx={sx} {...other}>\n {links?.filter(isSafeExternalLink).map((href) => (\n <li key={href}>\n <Link href={href} variant=\"body2\" target=\"_blank\" rel=\"noopener noreferrer\">\n {href}\n </Link>\n </li>\n ))}\n </MoreLinksRoot>\n );\n}\n\n// =============================================================================\n// MAIN COMPONENT\n// =============================================================================\n\n/**\n * Breadcrumbs - Full-featured navigation breadcrumbs with heading, back link,\n * action slot, and more links section.\n *\n * @example\n * ```tsx\n * // Simple usage\n * <Breadcrumbs\n * heading=\"Product List\"\n * links={[\n * { name: 'Home', href: '/' },\n * { name: 'Products', href: '/products' },\n * { name: 'Electronics' },\n * ]}\n * />\n *\n * // With back link and action\n * <Breadcrumbs\n * heading=\"Edit Product\"\n * backHref=\"/products\"\n * action={<Button variant=\"contained\">Save</Button>}\n * links={[\n * { name: 'Home', href: '/' },\n * { name: 'Products', href: '/products' },\n * { name: 'Edit' },\n * ]}\n * />\n * ```\n */\nexport function Breadcrumbs({\n sx,\n action,\n backHref,\n heading,\n slots = {},\n links = [],\n moreLinks = [],\n slotProps = {},\n activeLast = false,\n linkComponent,\n ...other\n}: BreadcrumbsProps): ReactNode {\n const renderHeading = () => (\n <BreadcrumbsHeading {...slotProps?.heading}>\n {backHref ? <BackLink href={backHref} label={heading} linkComponent={linkComponent} /> : heading}\n </BreadcrumbsHeading>\n );\n\n const renderLinks = () =>\n slots?.breadcrumbs ?? (\n <MuiBreadcrumbs separator={<BreadcrumbsSeparator />} {...slotProps?.breadcrumbs}>\n {links.map((link, index) => (\n <BreadcrumbLink\n key={`${link.href ?? link.name ?? ''}-${index}`}\n icon={link.icon}\n href={link.href}\n name={link.name}\n disabled={link.disabled || (index === links.length - 1 && !activeLast)}\n current={index === links.length - 1}\n linkComponent={linkComponent}\n />\n ))}\n </MuiBreadcrumbs>\n );\n\n const renderMoreLinks = () => <MoreLinks links={moreLinks} {...slotProps?.moreLinks} />;\n\n return (\n <BreadcrumbsRoot sx={sx} {...other}>\n <BreadcrumbsContainer {...slotProps?.container}>\n <BreadcrumbsContent {...slotProps?.content}>\n {(heading || backHref) && renderHeading()}\n {(!!links.length || slots?.breadcrumbs) && renderLinks()}\n </BreadcrumbsContent>\n {action}\n </BreadcrumbsContainer>\n\n {!!moreLinks?.length && renderMoreLinks()}\n </BreadcrumbsRoot>\n );\n}\n"]}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { createPrismIcon } from './chunk-D5J3KW6Q.js';
|
|
2
|
+
import DefaultSearchIcon from '@mui/icons-material/Search';
|
|
3
|
+
import DefaultCloseIcon from '@mui/icons-material/Close';
|
|
4
|
+
import DefaultChevronDownIcon from '@mui/icons-material/ExpandMore';
|
|
5
|
+
import DefaultChevronUpIcon from '@mui/icons-material/ExpandLess';
|
|
6
|
+
import DefaultChevronLeftIcon from '@mui/icons-material/ChevronLeft';
|
|
7
|
+
import DefaultChevronRightIcon from '@mui/icons-material/ChevronRight';
|
|
8
|
+
import DefaultArrowUpIcon from '@mui/icons-material/ArrowUpward';
|
|
9
|
+
import DefaultArrowDownIcon from '@mui/icons-material/ArrowDownward';
|
|
10
|
+
import DefaultArrowLeftIcon from '@mui/icons-material/ArrowBack';
|
|
11
|
+
import DefaultArrowRightIcon from '@mui/icons-material/ArrowForward';
|
|
12
|
+
import DefaultArrowUpRightIcon from '@mui/icons-material/NorthEast';
|
|
13
|
+
import DefaultPanelCollapseIcon from '@mui/icons-material/KeyboardDoubleArrowLeft';
|
|
14
|
+
import DefaultPanelExpandIcon from '@mui/icons-material/KeyboardDoubleArrowRight';
|
|
15
|
+
import DefaultMenuIcon from '@mui/icons-material/Menu';
|
|
16
|
+
import DefaultAddIcon from '@mui/icons-material/Add';
|
|
17
|
+
import DefaultRemoveIcon from '@mui/icons-material/Remove';
|
|
18
|
+
import DefaultDragIcon from '@mui/icons-material/DragIndicator';
|
|
19
|
+
import DefaultCheckIcon from '@mui/icons-material/Check';
|
|
20
|
+
import DefaultInfoIcon from '@mui/icons-material/InfoOutlined';
|
|
21
|
+
import DefaultWarningIcon from '@mui/icons-material/WarningAmber';
|
|
22
|
+
import DefaultErrorIcon from '@mui/icons-material/ErrorOutlined';
|
|
23
|
+
import DefaultSuccessIcon from '@mui/icons-material/CheckCircleOutlined';
|
|
24
|
+
import DefaultCheckboxIcon from '@mui/icons-material/CheckBoxOutlineBlank';
|
|
25
|
+
import DefaultCheckboxCheckedIcon from '@mui/icons-material/CheckBox';
|
|
26
|
+
import DefaultCheckboxMixedIcon from '@mui/icons-material/IndeterminateCheckBox';
|
|
27
|
+
import DefaultRadioIcon from '@mui/icons-material/RadioButtonUnchecked';
|
|
28
|
+
import DefaultRadioCheckedIcon from '@mui/icons-material/RadioButtonChecked';
|
|
29
|
+
import DefaultMoreIcon from '@mui/icons-material/MoreHoriz';
|
|
30
|
+
import DefaultFilterIcon from '@mui/icons-material/FilterList';
|
|
31
|
+
import DefaultEmptyIcon from '@mui/icons-material/InboxOutlined';
|
|
32
|
+
import DefaultCopyIcon from '@mui/icons-material/ContentCopy';
|
|
33
|
+
import DefaultCalendarIcon from '@mui/icons-material/CalendarMonth';
|
|
34
|
+
import DefaultDownloadIcon from '@mui/icons-material/Download';
|
|
35
|
+
import DefaultUploadIcon from '@mui/icons-material/Upload';
|
|
36
|
+
import DefaultZoomInIcon from '@mui/icons-material/ZoomIn';
|
|
37
|
+
import DefaultZoomOutIcon from '@mui/icons-material/ZoomOut';
|
|
38
|
+
import DefaultFitViewIcon from '@mui/icons-material/FitScreen';
|
|
39
|
+
import DefaultFullscreenIcon from '@mui/icons-material/Fullscreen';
|
|
40
|
+
import DefaultFullscreenExitIcon from '@mui/icons-material/FullscreenExit';
|
|
41
|
+
import DefaultShareIcon from '@mui/icons-material/Share';
|
|
42
|
+
import DefaultPlayIcon from '@mui/icons-material/PlayArrow';
|
|
43
|
+
import DefaultEyeIcon from '@mui/icons-material/Visibility';
|
|
44
|
+
import DefaultEyeOffIcon from '@mui/icons-material/VisibilityOff';
|
|
45
|
+
import DefaultKeyboardIcon from '@mui/icons-material/KeyboardOutlined';
|
|
46
|
+
import DefaultLockIcon from '@mui/icons-material/LockOutlined';
|
|
47
|
+
import DefaultUnlockIcon from '@mui/icons-material/LockOpenOutlined';
|
|
48
|
+
import DefaultStarIcon from '@mui/icons-material/Star';
|
|
49
|
+
import DefaultStarEmptyIcon from '@mui/icons-material/StarBorder';
|
|
50
|
+
import DefaultFirstPageIcon from '@mui/icons-material/FirstPage';
|
|
51
|
+
import DefaultLastPageIcon from '@mui/icons-material/LastPage';
|
|
52
|
+
|
|
53
|
+
var SearchIcon = createPrismIcon("search", DefaultSearchIcon);
|
|
54
|
+
var CloseIcon = createPrismIcon("close", DefaultCloseIcon);
|
|
55
|
+
var ChevronDownIcon = createPrismIcon("chevronDown", DefaultChevronDownIcon);
|
|
56
|
+
var ChevronUpIcon = createPrismIcon("chevronUp", DefaultChevronUpIcon);
|
|
57
|
+
var ChevronLeftIcon = createPrismIcon("chevronLeft", DefaultChevronLeftIcon);
|
|
58
|
+
var ChevronRightIcon = createPrismIcon("chevronRight", DefaultChevronRightIcon);
|
|
59
|
+
var ArrowUpIcon = createPrismIcon("arrowUp", DefaultArrowUpIcon);
|
|
60
|
+
var ArrowDownIcon = createPrismIcon("arrowDown", DefaultArrowDownIcon);
|
|
61
|
+
var ArrowLeftIcon = createPrismIcon("arrowLeft", DefaultArrowLeftIcon);
|
|
62
|
+
var ArrowRightIcon = createPrismIcon("arrowRight", DefaultArrowRightIcon);
|
|
63
|
+
var ArrowUpRightIcon = createPrismIcon("arrowUpRight", DefaultArrowUpRightIcon);
|
|
64
|
+
var PanelCollapseIcon = createPrismIcon("panelCollapse", DefaultPanelCollapseIcon);
|
|
65
|
+
var PanelExpandIcon = createPrismIcon("panelExpand", DefaultPanelExpandIcon);
|
|
66
|
+
var MenuIcon = createPrismIcon("menu", DefaultMenuIcon);
|
|
67
|
+
var AddIcon = createPrismIcon("add", DefaultAddIcon);
|
|
68
|
+
var RemoveIcon = createPrismIcon("remove", DefaultRemoveIcon);
|
|
69
|
+
var DragIcon = createPrismIcon("drag", DefaultDragIcon);
|
|
70
|
+
var CheckIcon = createPrismIcon("check", DefaultCheckIcon);
|
|
71
|
+
var InfoIcon = createPrismIcon("info", DefaultInfoIcon);
|
|
72
|
+
var WarningIcon = createPrismIcon("warning", DefaultWarningIcon);
|
|
73
|
+
var ErrorIcon = createPrismIcon("error", DefaultErrorIcon);
|
|
74
|
+
var SuccessIcon = createPrismIcon("success", DefaultSuccessIcon);
|
|
75
|
+
var CheckboxIcon = createPrismIcon("checkbox", DefaultCheckboxIcon);
|
|
76
|
+
var CheckboxCheckedIcon = createPrismIcon("checkboxChecked", DefaultCheckboxCheckedIcon);
|
|
77
|
+
var CheckboxMixedIcon = createPrismIcon("checkboxMixed", DefaultCheckboxMixedIcon);
|
|
78
|
+
var RadioIcon = createPrismIcon("radio", DefaultRadioIcon);
|
|
79
|
+
var RadioCheckedIcon = createPrismIcon("radioChecked", DefaultRadioCheckedIcon);
|
|
80
|
+
var MoreIcon = createPrismIcon("more", DefaultMoreIcon);
|
|
81
|
+
var FilterIcon = createPrismIcon("filter", DefaultFilterIcon);
|
|
82
|
+
var EmptyIcon = createPrismIcon("empty", DefaultEmptyIcon);
|
|
83
|
+
var CopyIcon = createPrismIcon("copy", DefaultCopyIcon);
|
|
84
|
+
var CalendarIcon = createPrismIcon("calendar", DefaultCalendarIcon);
|
|
85
|
+
var DownloadIcon = createPrismIcon("download", DefaultDownloadIcon);
|
|
86
|
+
var UploadIcon = createPrismIcon("upload", DefaultUploadIcon);
|
|
87
|
+
var ZoomInIcon = createPrismIcon("zoomIn", DefaultZoomInIcon);
|
|
88
|
+
var ZoomOutIcon = createPrismIcon("zoomOut", DefaultZoomOutIcon);
|
|
89
|
+
var FitViewIcon = createPrismIcon("fitView", DefaultFitViewIcon);
|
|
90
|
+
var FullscreenIcon = createPrismIcon("fullscreen", DefaultFullscreenIcon);
|
|
91
|
+
var FullscreenExitIcon = createPrismIcon("fullscreenExit", DefaultFullscreenExitIcon);
|
|
92
|
+
var ShareIcon = createPrismIcon("share", DefaultShareIcon);
|
|
93
|
+
var PlayIcon = createPrismIcon("play", DefaultPlayIcon);
|
|
94
|
+
var EyeIcon = createPrismIcon("eye", DefaultEyeIcon);
|
|
95
|
+
var EyeOffIcon = createPrismIcon("eyeOff", DefaultEyeOffIcon);
|
|
96
|
+
var KeyboardIcon = createPrismIcon("keyboard", DefaultKeyboardIcon);
|
|
97
|
+
var LockIcon = createPrismIcon("lock", DefaultLockIcon);
|
|
98
|
+
var UnlockIcon = createPrismIcon("unlock", DefaultUnlockIcon);
|
|
99
|
+
var StarIcon = createPrismIcon("star", DefaultStarIcon);
|
|
100
|
+
var StarEmptyIcon = createPrismIcon("starEmpty", DefaultStarEmptyIcon);
|
|
101
|
+
var FirstPageIcon = createPrismIcon("firstPage", DefaultFirstPageIcon);
|
|
102
|
+
var LastPageIcon = createPrismIcon("lastPage", DefaultLastPageIcon);
|
|
103
|
+
|
|
104
|
+
export { AddIcon, ArrowDownIcon, ArrowLeftIcon, ArrowRightIcon, ArrowUpIcon, ArrowUpRightIcon, CalendarIcon, CheckIcon, CheckboxCheckedIcon, CheckboxIcon, CheckboxMixedIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, CloseIcon, CopyIcon, DownloadIcon, DragIcon, EmptyIcon, ErrorIcon, EyeIcon, EyeOffIcon, FilterIcon, FirstPageIcon, FitViewIcon, FullscreenExitIcon, FullscreenIcon, InfoIcon, KeyboardIcon, LastPageIcon, LockIcon, MenuIcon, MoreIcon, PanelCollapseIcon, PanelExpandIcon, PlayIcon, RadioCheckedIcon, RadioIcon, RemoveIcon, SearchIcon, ShareIcon, StarEmptyIcon, StarIcon, SuccessIcon, UnlockIcon, UploadIcon, WarningIcon, ZoomInIcon, ZoomOutIcon };
|
|
105
|
+
//# sourceMappingURL=chunk-VQVVHMPG.js.map
|
|
106
|
+
//# sourceMappingURL=chunk-VQVVHMPG.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/icons/controls.tsx"],"names":[],"mappings":"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","file":"chunk-VQVVHMPG.js","sourcesContent":["import { createPrismIcon } from './context.js';\nimport DefaultSearchIcon from '@mui/icons-material/Search';\nexport const SearchIcon = createPrismIcon('search', DefaultSearchIcon);\nimport DefaultCloseIcon from '@mui/icons-material/Close';\nexport const CloseIcon = createPrismIcon('close', DefaultCloseIcon);\nimport DefaultChevronDownIcon from '@mui/icons-material/ExpandMore';\nexport const ChevronDownIcon = createPrismIcon('chevronDown', DefaultChevronDownIcon);\nimport DefaultChevronUpIcon from '@mui/icons-material/ExpandLess';\nexport const ChevronUpIcon = createPrismIcon('chevronUp', DefaultChevronUpIcon);\nimport DefaultChevronLeftIcon from '@mui/icons-material/ChevronLeft';\nexport const ChevronLeftIcon = createPrismIcon('chevronLeft', DefaultChevronLeftIcon);\nimport DefaultChevronRightIcon from '@mui/icons-material/ChevronRight';\nexport const ChevronRightIcon = createPrismIcon('chevronRight', DefaultChevronRightIcon);\nimport DefaultArrowUpIcon from '@mui/icons-material/ArrowUpward';\nexport const ArrowUpIcon = createPrismIcon('arrowUp', DefaultArrowUpIcon);\nimport DefaultArrowDownIcon from '@mui/icons-material/ArrowDownward';\nexport const ArrowDownIcon = createPrismIcon('arrowDown', DefaultArrowDownIcon);\nimport DefaultArrowLeftIcon from '@mui/icons-material/ArrowBack';\nexport const ArrowLeftIcon = createPrismIcon('arrowLeft', DefaultArrowLeftIcon);\nimport DefaultArrowRightIcon from '@mui/icons-material/ArrowForward';\nexport const ArrowRightIcon = createPrismIcon('arrowRight', DefaultArrowRightIcon);\nimport DefaultArrowUpRightIcon from '@mui/icons-material/NorthEast';\nexport const ArrowUpRightIcon = createPrismIcon('arrowUpRight', DefaultArrowUpRightIcon);\nimport DefaultPanelCollapseIcon from '@mui/icons-material/KeyboardDoubleArrowLeft';\nexport const PanelCollapseIcon = createPrismIcon('panelCollapse', DefaultPanelCollapseIcon);\nimport DefaultPanelExpandIcon from '@mui/icons-material/KeyboardDoubleArrowRight';\nexport const PanelExpandIcon = createPrismIcon('panelExpand', DefaultPanelExpandIcon);\nimport DefaultMenuIcon from '@mui/icons-material/Menu';\nexport const MenuIcon = createPrismIcon('menu', DefaultMenuIcon);\nimport DefaultAddIcon from '@mui/icons-material/Add';\nexport const AddIcon = createPrismIcon('add', DefaultAddIcon);\nimport DefaultRemoveIcon from '@mui/icons-material/Remove';\nexport const RemoveIcon = createPrismIcon('remove', DefaultRemoveIcon);\nimport DefaultDragIcon from '@mui/icons-material/DragIndicator';\nexport const DragIcon = createPrismIcon('drag', DefaultDragIcon);\nimport DefaultCheckIcon from '@mui/icons-material/Check';\nexport const CheckIcon = createPrismIcon('check', DefaultCheckIcon);\nimport DefaultInfoIcon from '@mui/icons-material/InfoOutlined';\nexport const InfoIcon = createPrismIcon('info', DefaultInfoIcon);\nimport DefaultWarningIcon from '@mui/icons-material/WarningAmber';\nexport const WarningIcon = createPrismIcon('warning', DefaultWarningIcon);\nimport DefaultErrorIcon from '@mui/icons-material/ErrorOutlined';\nexport const ErrorIcon = createPrismIcon('error', DefaultErrorIcon);\nimport DefaultSuccessIcon from '@mui/icons-material/CheckCircleOutlined';\nexport const SuccessIcon = createPrismIcon('success', DefaultSuccessIcon);\nimport DefaultCheckboxIcon from '@mui/icons-material/CheckBoxOutlineBlank';\nexport const CheckboxIcon = createPrismIcon('checkbox', DefaultCheckboxIcon);\nimport DefaultCheckboxCheckedIcon from '@mui/icons-material/CheckBox';\nexport const CheckboxCheckedIcon = createPrismIcon('checkboxChecked', DefaultCheckboxCheckedIcon);\nimport DefaultCheckboxMixedIcon from '@mui/icons-material/IndeterminateCheckBox';\nexport const CheckboxMixedIcon = createPrismIcon('checkboxMixed', DefaultCheckboxMixedIcon);\nimport DefaultRadioIcon from '@mui/icons-material/RadioButtonUnchecked';\nexport const RadioIcon = createPrismIcon('radio', DefaultRadioIcon);\nimport DefaultRadioCheckedIcon from '@mui/icons-material/RadioButtonChecked';\nexport const RadioCheckedIcon = createPrismIcon('radioChecked', DefaultRadioCheckedIcon);\nimport DefaultMoreIcon from '@mui/icons-material/MoreHoriz';\nexport const MoreIcon = createPrismIcon('more', DefaultMoreIcon);\nimport DefaultFilterIcon from '@mui/icons-material/FilterList';\nexport const FilterIcon = createPrismIcon('filter', DefaultFilterIcon);\nimport DefaultEmptyIcon from '@mui/icons-material/InboxOutlined';\nexport const EmptyIcon = createPrismIcon('empty', DefaultEmptyIcon);\nimport DefaultCopyIcon from '@mui/icons-material/ContentCopy';\nexport const CopyIcon = createPrismIcon('copy', DefaultCopyIcon);\nimport DefaultCalendarIcon from '@mui/icons-material/CalendarMonth';\nexport const CalendarIcon = createPrismIcon('calendar', DefaultCalendarIcon);\nimport DefaultDownloadIcon from '@mui/icons-material/Download';\nexport const DownloadIcon = createPrismIcon('download', DefaultDownloadIcon);\nimport DefaultUploadIcon from '@mui/icons-material/Upload';\nexport const UploadIcon = createPrismIcon('upload', DefaultUploadIcon);\nimport DefaultZoomInIcon from '@mui/icons-material/ZoomIn';\nexport const ZoomInIcon = createPrismIcon('zoomIn', DefaultZoomInIcon);\nimport DefaultZoomOutIcon from '@mui/icons-material/ZoomOut';\nexport const ZoomOutIcon = createPrismIcon('zoomOut', DefaultZoomOutIcon);\nimport DefaultFitViewIcon from '@mui/icons-material/FitScreen';\nexport const FitViewIcon = createPrismIcon('fitView', DefaultFitViewIcon);\nimport DefaultFullscreenIcon from '@mui/icons-material/Fullscreen';\nexport const FullscreenIcon = createPrismIcon('fullscreen', DefaultFullscreenIcon);\nimport DefaultFullscreenExitIcon from '@mui/icons-material/FullscreenExit';\nexport const FullscreenExitIcon = createPrismIcon('fullscreenExit', DefaultFullscreenExitIcon);\nimport DefaultShareIcon from '@mui/icons-material/Share';\nexport const ShareIcon = createPrismIcon('share', DefaultShareIcon);\nimport DefaultPlayIcon from '@mui/icons-material/PlayArrow';\nexport const PlayIcon = createPrismIcon('play', DefaultPlayIcon);\nimport DefaultEyeIcon from '@mui/icons-material/Visibility';\nexport const EyeIcon = createPrismIcon('eye', DefaultEyeIcon);\nimport DefaultEyeOffIcon from '@mui/icons-material/VisibilityOff';\nexport const EyeOffIcon = createPrismIcon('eyeOff', DefaultEyeOffIcon);\nimport DefaultKeyboardIcon from '@mui/icons-material/KeyboardOutlined';\nexport const KeyboardIcon = createPrismIcon('keyboard', DefaultKeyboardIcon);\nimport DefaultLockIcon from '@mui/icons-material/LockOutlined';\nexport const LockIcon = createPrismIcon('lock', DefaultLockIcon);\nimport DefaultUnlockIcon from '@mui/icons-material/LockOpenOutlined';\nexport const UnlockIcon = createPrismIcon('unlock', DefaultUnlockIcon);\nimport DefaultStarIcon from '@mui/icons-material/Star';\nexport const StarIcon = createPrismIcon('star', DefaultStarIcon);\nimport DefaultStarEmptyIcon from '@mui/icons-material/StarBorder';\nexport const StarEmptyIcon = createPrismIcon('starEmpty', DefaultStarEmptyIcon);\nimport DefaultFirstPageIcon from '@mui/icons-material/FirstPage';\nexport const FirstPageIcon = createPrismIcon('firstPage', DefaultFirstPageIcon);\nimport DefaultLastPageIcon from '@mui/icons-material/LastPage';\nexport const LastPageIcon = createPrismIcon('lastPage', DefaultLastPageIcon);\n"]}
|
|
@@ -5,6 +5,7 @@ import { listClasses } from '@mui/material/List';
|
|
|
5
5
|
import { menuItemClasses } from '@mui/material/MenuItem';
|
|
6
6
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
7
7
|
|
|
8
|
+
// src/components/popover/popover.tsx
|
|
8
9
|
var POPOVER_DISTANCE = 0.75;
|
|
9
10
|
function calculateAnchorOrigin(arrow = "top-right") {
|
|
10
11
|
const configs = {
|
|
@@ -188,5 +189,5 @@ function usePopover() {
|
|
|
188
189
|
}
|
|
189
190
|
|
|
190
191
|
export { CustomPopover, usePopover };
|
|
191
|
-
//# sourceMappingURL=chunk-
|
|
192
|
-
//# sourceMappingURL=chunk-
|
|
192
|
+
//# sourceMappingURL=chunk-VUKOT432.js.map
|
|
193
|
+
//# sourceMappingURL=chunk-VUKOT432.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/popover/popover.tsx"],"names":[],"mappings":"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","file":"chunk-VUKOT432.js","sourcesContent":["'use client';\n\n/**\n * Popover Component\n *\n * Enhanced popover component with arrow support and useful hook.\n *\n * @module components/popover\n */\n\nimport type { ReactNode, MouseEvent, Dispatch, SetStateAction } from 'react';\nimport { useState, useCallback } from 'react';\nimport Popover from '@mui/material/Popover';\nimport { styled, alpha } from '@mui/material/styles';\nimport type { PopoverProps, PopoverOrigin } from '@mui/material/Popover';\nimport type { SxProps, Theme, CSSObject } from '@mui/material/styles';\nimport { listClasses } from '@mui/material/List';\nimport { menuItemClasses } from '@mui/material/MenuItem';\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\nexport type ArrowPlacement =\n | 'top-left'\n | 'top-center'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-center'\n | 'bottom-right'\n | 'left-top'\n | 'left-center'\n | 'left-bottom'\n | 'right-top'\n | 'right-center'\n | 'right-bottom';\n\nexport interface PopoverArrowProps {\n /** Hide the arrow */\n hide?: boolean;\n /** Arrow size in pixels */\n size?: number;\n /** Offset from edge */\n offset?: number;\n /** Arrow placement */\n placement?: ArrowPlacement;\n /** Additional styles */\n sx?: SxProps<Theme>;\n}\n\nexport interface CustomPopoverProps extends Omit<PopoverProps, 'open'> {\n /** Whether the popover is open */\n open: boolean | Element | null;\n /** Close handler */\n onClose: () => void;\n /** Arrow configuration */\n arrow?: PopoverArrowProps;\n /** Minimum width of the popover */\n minWidth?: number | string;\n}\n\n// =============================================================================\n// UTILS\n// =============================================================================\n\nconst POPOVER_DISTANCE = 0.75;\n\ninterface AnchorOriginConfig {\n paperStyles?: CSSObject;\n anchorOrigin: PopoverOrigin;\n transformOrigin: PopoverOrigin;\n}\n\nfunction calculateAnchorOrigin(arrow: ArrowPlacement = 'top-right'): AnchorOriginConfig {\n const configs: Record<ArrowPlacement, AnchorOriginConfig> = {\n 'top-left': {\n paperStyles: { ml: -POPOVER_DISTANCE },\n anchorOrigin: { vertical: 'bottom', horizontal: 'left' },\n transformOrigin: { vertical: 'top', horizontal: 'left' },\n },\n 'top-center': {\n paperStyles: undefined,\n anchorOrigin: { vertical: 'bottom', horizontal: 'center' },\n transformOrigin: { vertical: 'top', horizontal: 'center' },\n },\n 'top-right': {\n paperStyles: { ml: POPOVER_DISTANCE },\n anchorOrigin: { vertical: 'bottom', horizontal: 'right' },\n transformOrigin: { vertical: 'top', horizontal: 'right' },\n },\n 'bottom-left': {\n paperStyles: { ml: -POPOVER_DISTANCE },\n anchorOrigin: { vertical: 'top', horizontal: 'left' },\n transformOrigin: { vertical: 'bottom', horizontal: 'left' },\n },\n 'bottom-center': {\n paperStyles: undefined,\n anchorOrigin: { vertical: 'top', horizontal: 'center' },\n transformOrigin: { vertical: 'bottom', horizontal: 'center' },\n },\n 'bottom-right': {\n paperStyles: { ml: POPOVER_DISTANCE },\n anchorOrigin: { vertical: 'top', horizontal: 'right' },\n transformOrigin: { vertical: 'bottom', horizontal: 'right' },\n },\n 'left-top': {\n paperStyles: { mt: -POPOVER_DISTANCE },\n anchorOrigin: { vertical: 'top', horizontal: 'right' },\n transformOrigin: { vertical: 'top', horizontal: 'left' },\n },\n 'left-center': {\n paperStyles: undefined,\n anchorOrigin: { vertical: 'center', horizontal: 'right' },\n transformOrigin: { vertical: 'center', horizontal: 'left' },\n },\n 'left-bottom': {\n paperStyles: { mt: POPOVER_DISTANCE },\n anchorOrigin: { vertical: 'bottom', horizontal: 'right' },\n transformOrigin: { vertical: 'bottom', horizontal: 'left' },\n },\n 'right-top': {\n paperStyles: { mt: -POPOVER_DISTANCE },\n anchorOrigin: { vertical: 'top', horizontal: 'left' },\n transformOrigin: { vertical: 'top', horizontal: 'right' },\n },\n 'right-center': {\n paperStyles: undefined,\n anchorOrigin: { vertical: 'center', horizontal: 'left' },\n transformOrigin: { vertical: 'center', horizontal: 'right' },\n },\n 'right-bottom': {\n paperStyles: { mt: POPOVER_DISTANCE },\n anchorOrigin: { vertical: 'bottom', horizontal: 'left' },\n transformOrigin: { vertical: 'bottom', horizontal: 'right' },\n },\n };\n\n return configs[arrow] || configs['top-right'];\n}\n\n// =============================================================================\n// ARROW COMPONENT\n// =============================================================================\n\ninterface ArrowStyledProps {\n ownerState: {\n size: number;\n offset: number;\n placement: ArrowPlacement;\n };\n}\n\nconst Arrow = styled('span', {\n shouldForwardProp: (prop) => prop !== 'ownerState',\n})<ArrowStyledProps>(({ theme, ownerState }) => {\n const { size, offset, placement } = ownerState;\n\n const directions: Record<string, CSSObject> = {\n top: { top: 0, rotate: '135deg', translate: '0 -50%' },\n bottom: { bottom: 0, rotate: '-45deg', translate: '0 50%' },\n left: { left: 0, rotate: '45deg', translate: '-50% 0' },\n right: { right: 0, rotate: '-135deg', translate: '50% 0' },\n };\n\n const getDirection = () => {\n if (placement.startsWith('top-')) return directions.top;\n if (placement.startsWith('bottom-')) return directions.bottom;\n if (placement.startsWith('left-')) return directions.left;\n if (placement.startsWith('right-')) return directions.right;\n return {};\n };\n\n const getPosition = () => {\n if (placement.endsWith('-left')) return { left: offset };\n if (placement.endsWith('-right')) return { right: offset };\n if (placement.endsWith('-top')) return { top: offset };\n if (placement.endsWith('-bottom')) return { bottom: offset };\n if (placement.endsWith('-center')) {\n if (placement.startsWith('top-') || placement.startsWith('bottom-')) {\n return { left: 0, right: 0, margin: 'auto' };\n }\n return { top: 0, bottom: 0, margin: 'auto' };\n }\n return {};\n };\n\n return {\n width: size,\n height: size,\n position: 'absolute',\n borderBottomLeftRadius: size / 4,\n clipPath: 'polygon(0% 0%, 100% 100%, 0% 100%)',\n backgroundColor: theme.palette.background.paper,\n border: `solid 1px ${alpha(theme.palette.grey[500], 0.12)}`,\n ...getDirection(),\n ...getPosition(),\n };\n});\n\n// =============================================================================\n// COMPONENT\n// =============================================================================\n\n/**\n * CustomPopover - Enhanced popover with arrow support.\n *\n * @example\n * ```tsx\n * const popover = usePopover();\n *\n * <Button onClick={popover.onOpen}>Open Menu</Button>\n *\n * <CustomPopover\n * open={popover.open}\n * onClose={popover.onClose}\n * anchorEl={popover.anchorEl}\n * arrow={{ placement: 'top-right' }}\n * >\n * <MenuItem>Option 1</MenuItem>\n * <MenuItem>Option 2</MenuItem>\n * </CustomPopover>\n * ```\n */\nexport function CustomPopover({\n open,\n onClose,\n children,\n anchorEl,\n arrow,\n minWidth = 140,\n slotProps,\n ...other\n}: CustomPopoverProps): ReactNode {\n const arrowSize = arrow?.size ?? 14;\n const arrowOffset = arrow?.offset ?? 17;\n const arrowPlacement = arrow?.placement ?? 'top-right';\n const hideArrow = arrow?.hide ?? false;\n\n const { paperStyles, anchorOrigin, transformOrigin } = calculateAnchorOrigin(arrowPlacement);\n\n const isOpen = Boolean(open);\n\n return (\n <Popover\n open={isOpen}\n anchorEl={anchorEl}\n onClose={onClose}\n anchorOrigin={anchorOrigin}\n transformOrigin={transformOrigin}\n slotProps={{\n ...slotProps,\n paper: {\n ...(typeof slotProps?.paper === 'object' ? slotProps.paper : {}),\n sx: [\n paperStyles as SxProps<Theme>,\n {\n overflow: 'inherit',\n [`& .${listClasses.root}`]: { minWidth },\n [`& .${menuItemClasses.root}`]: { gap: 2 },\n },\n ...(typeof slotProps?.paper === 'object' && slotProps.paper && 'sx' in slotProps.paper\n ? Array.isArray(slotProps.paper.sx)\n ? slotProps.paper.sx\n : [slotProps.paper.sx]\n : []),\n ],\n },\n }}\n {...other}\n >\n {!hideArrow && (\n <Arrow\n ownerState={{\n size: arrowSize,\n offset: arrowOffset,\n placement: arrowPlacement,\n }}\n sx={arrow?.sx}\n />\n )}\n {children}\n </Popover>\n );\n}\n\n// =============================================================================\n// HOOK\n// =============================================================================\n\n/**\n * Return type for usePopover hook with generic element type.\n *\n * @typeParam T - The HTML element type (default: HTMLElement)\n */\nexport interface UsePopoverReturn<T extends HTMLElement = HTMLElement> {\n /** Whether the popover is open */\n open: boolean;\n /** The anchor element (typed to T) */\n anchorEl: T | null;\n /** Open the popover - accepts MouseEvent with typed currentTarget */\n onOpen: (event: MouseEvent<T>) => void;\n /** Close the popover */\n onClose: () => void;\n /** Set the anchor element directly (typed to T | null) */\n setAnchorEl: Dispatch<SetStateAction<T | null>>;\n}\n\n/**\n * usePopover - Generic hook for managing popover state.\n *\n * Type-safe hook that accepts a generic type parameter for the anchor element.\n * This ensures type safety when accessing `event.currentTarget` and `anchorEl`.\n *\n * @typeParam T - The HTML element type (default: HTMLElement)\n * @returns Popover state and controls with typed elements\n *\n * @example\n * ```tsx\n * // Basic usage with default HTMLElement\n * function MenuButton() {\n * const popover = usePopover();\n *\n * return (\n * <>\n * <IconButton onClick={popover.onOpen}>\n * <MoreVertIcon />\n * </IconButton>\n *\n * <CustomPopover\n * open={popover.open}\n * onClose={popover.onClose}\n * anchorEl={popover.anchorEl}\n * >\n * <MenuItem onClick={popover.onClose}>Edit</MenuItem>\n * <MenuItem onClick={popover.onClose}>Delete</MenuItem>\n * </CustomPopover>\n * </>\n * );\n * }\n *\n * // Type-safe usage with specific element type\n * function TypedButton() {\n * const popover = usePopover<HTMLButtonElement>();\n *\n * // TypeScript knows anchorEl is HTMLButtonElement | null\n * // and onOpen accepts MouseEvent<HTMLButtonElement>\n *\n * return (\n * <>\n * <button onClick={popover.onOpen}>Click me</button>\n * <Popover open={popover.open} anchorEl={popover.anchorEl} onClose={popover.onClose}>\n * Content here\n * </Popover>\n * </>\n * );\n * }\n * ```\n */\nexport function usePopover<T extends HTMLElement = HTMLElement>(): UsePopoverReturn<T> {\n const [anchorEl, setAnchorEl] = useState<T | null>(null);\n\n const onOpen = useCallback((event: MouseEvent<T>) => {\n setAnchorEl(event.currentTarget as T);\n }, []);\n\n const onClose = useCallback(() => {\n setAnchorEl(null);\n }, []);\n\n return {\n open: Boolean(anchorEl),\n anchorEl,\n onOpen,\n onClose,\n setAnchorEl,\n };\n}\n"]}
|