@omnitron-dev/prism 0.2.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +148 -0
- package/dist/accessibility/index.d.ts +7 -151
- package/dist/accessibility/index.d.ts.map +1 -0
- package/dist/accessibility/index.js +0 -1
- package/dist/accessibility/index.js.map +1 -1
- package/dist/accessibility/vision-mode.d.ts +154 -0
- package/dist/accessibility/vision-mode.d.ts.map +1 -0
- package/dist/blocks/auth-block/auth-block.d.ts +107 -0
- package/dist/blocks/auth-block/auth-block.d.ts.map +1 -0
- package/dist/blocks/auth-block/guards.d.ts +262 -0
- package/dist/blocks/auth-block/guards.d.ts.map +1 -0
- package/dist/blocks/auth-block/index.d.ts +13 -0
- package/dist/blocks/auth-block/index.d.ts.map +1 -0
- package/dist/blocks/auth-block/types.d.ts +232 -0
- package/dist/blocks/auth-block/types.d.ts.map +1 -0
- package/dist/blocks/dashboard-block/dashboard-block.d.ts +53 -0
- package/dist/blocks/dashboard-block/dashboard-block.d.ts.map +1 -0
- package/dist/blocks/dashboard-block/index.d.ts +12 -0
- package/dist/blocks/dashboard-block/index.d.ts.map +1 -0
- package/dist/blocks/dashboard-block/types.d.ts +182 -0
- package/dist/blocks/dashboard-block/types.d.ts.map +1 -0
- package/dist/blocks/dashboard-block/use-dashboard-block.d.ts +95 -0
- package/dist/blocks/dashboard-block/use-dashboard-block.d.ts.map +1 -0
- package/dist/blocks/data-grid-block/data-grid-block.d.ts +81 -0
- package/dist/blocks/data-grid-block/data-grid-block.d.ts.map +1 -0
- package/dist/blocks/data-grid-block/index.d.ts +11 -0
- package/dist/blocks/data-grid-block/index.d.ts.map +1 -0
- package/dist/blocks/data-grid-block/types.d.ts +304 -0
- package/dist/blocks/data-grid-block/types.d.ts.map +1 -0
- package/dist/blocks/index.d.ts +10 -1235
- package/dist/blocks/index.d.ts.map +1 -0
- package/dist/blocks/index.js +141 -42
- package/dist/blocks/index.js.map +1 -1
- package/dist/{chunk-IZOIO7PA.js → chunk-472SOF76.js} +31 -22
- package/dist/chunk-472SOF76.js.map +1 -0
- package/dist/chunk-4Z5DE5GK.js +1579 -0
- package/dist/chunk-4Z5DE5GK.js.map +1 -0
- package/dist/chunk-52PQL67Q.js +559 -0
- package/dist/chunk-52PQL67Q.js.map +1 -0
- package/dist/chunk-75FQ5IW3.js +590 -0
- package/dist/chunk-75FQ5IW3.js.map +1 -0
- package/dist/{chunk-VAAIHNWQ.js → chunk-7G5D5PTC.js} +4 -3
- package/dist/chunk-7G5D5PTC.js.map +1 -0
- package/dist/{chunk-JDTC2SBY.js → chunk-AD4W7HYC.js} +2 -2
- package/dist/chunk-AD4W7HYC.js.map +1 -0
- package/dist/{chunk-SNKGGHBT.js → chunk-ADG4HZEP.js} +3 -3
- package/dist/chunk-ADG4HZEP.js.map +1 -0
- package/dist/{chunk-JNU4QHJK.js → chunk-AYYFMTMI.js} +5 -4
- package/dist/{chunk-JNU4QHJK.js.map → chunk-AYYFMTMI.js.map} +1 -1
- package/dist/chunk-BJE2AKD4.js +105 -0
- package/dist/chunk-BJE2AKD4.js.map +1 -0
- package/dist/{chunk-HO2GKTWJ.js → chunk-BRDWQVRT.js} +2 -2
- package/dist/chunk-BRDWQVRT.js.map +1 -0
- package/dist/{chunk-2FYNRDXR.js → chunk-DRFNMZLG.js} +2 -2
- package/dist/chunk-DRFNMZLG.js.map +1 -0
- package/dist/chunk-FF5RF32O.js +248 -0
- package/dist/chunk-FF5RF32O.js.map +1 -0
- package/dist/{chunk-KTCWPGON.js → chunk-GMIE6III.js} +561 -111
- package/dist/chunk-GMIE6III.js.map +1 -0
- package/dist/{chunk-BV32OJ2A.js → chunk-GUFHFEPZ.js} +2 -2
- package/dist/chunk-GUFHFEPZ.js.map +1 -0
- package/dist/chunk-GUGTDURV.js +826 -0
- package/dist/chunk-GUGTDURV.js.map +1 -0
- package/dist/chunk-HOXFSQUV.js +573 -0
- package/dist/chunk-HOXFSQUV.js.map +1 -0
- package/dist/chunk-JSQTYDPG.js +3 -0
- package/dist/{chunk-77KIJLPP.js.map → chunk-JSQTYDPG.js.map} +1 -1
- package/dist/{chunk-MEFT6XPH.js → chunk-KQ67XB6T.js} +351 -704
- package/dist/chunk-KQ67XB6T.js.map +1 -0
- package/dist/{chunk-YJMAQL3S.js → chunk-LOY2NPCO.js} +129 -635
- package/dist/chunk-LOY2NPCO.js.map +1 -0
- package/dist/{chunk-A2Z7NVGL.js → chunk-LSPFFEJT.js} +1026 -2128
- package/dist/chunk-LSPFFEJT.js.map +1 -0
- package/dist/{chunk-XXP3ZGU6.js → chunk-OKTLA23Q.js} +22 -14
- package/dist/chunk-OKTLA23Q.js.map +1 -0
- package/dist/chunk-PFT2BNYO.js +191 -0
- package/dist/chunk-PFT2BNYO.js.map +1 -0
- package/dist/chunk-PGHEP4JD.js +106 -0
- package/dist/chunk-PGHEP4JD.js.map +1 -0
- package/dist/chunk-PXXPLHIY.js +74 -0
- package/dist/chunk-PXXPLHIY.js.map +1 -0
- package/dist/chunk-SNZK5X6F.js +594 -0
- package/dist/chunk-SNZK5X6F.js.map +1 -0
- package/dist/chunk-SU3LVQ7N.js +518 -0
- package/dist/chunk-SU3LVQ7N.js.map +1 -0
- package/dist/{chunk-DDY7TLUI.js → chunk-XIXSSI3B.js} +28 -2
- package/dist/chunk-XIXSSI3B.js.map +1 -0
- package/dist/chunk-YHE7HXSG.js +206 -0
- package/dist/chunk-YHE7HXSG.js.map +1 -0
- package/dist/{chunk-XWL6J6IO.js → chunk-YSIG2XYH.js} +2 -2
- package/dist/chunk-YSIG2XYH.js.map +1 -0
- package/dist/cli/commands/add.d.ts +22 -0
- package/dist/cli/commands/add.d.ts.map +1 -0
- package/dist/cli/commands/diff.d.ts +13 -0
- package/dist/cli/commands/diff.d.ts.map +1 -0
- package/dist/cli/commands/doctor.d.ts +13 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/init.d.ts +13 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/list.d.ts +13 -0
- package/dist/cli/commands/list.d.ts.map +1 -0
- package/dist/cli/commands/remove.d.ts +13 -0
- package/dist/cli/commands/remove.d.ts.map +1 -0
- package/dist/cli/commands/update.d.ts +13 -0
- package/dist/cli/commands/update.d.ts.map +1 -0
- package/dist/cli/config.d.ts +73 -0
- package/dist/cli/config.d.ts.map +1 -0
- package/dist/cli/constants.d.ts +60 -0
- package/dist/cli/constants.d.ts.map +1 -0
- package/dist/cli/index.d.ts +27 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +38 -39
- package/dist/cli/index.js.map +1 -1
- package/dist/components/accordion/accordion.d.ts +149 -0
- package/dist/components/accordion/accordion.d.ts.map +1 -0
- package/dist/components/accordion/index.d.ts +7 -0
- package/dist/components/accordion/index.d.ts.map +1 -0
- package/dist/components/admin-filters/admin-data-table.d.ts +185 -0
- package/dist/components/admin-filters/admin-data-table.d.ts.map +1 -0
- package/dist/components/admin-filters/amount-cell.d.ts +39 -0
- package/dist/components/admin-filters/amount-cell.d.ts.map +1 -0
- package/dist/components/admin-filters/filter-toolbar.d.ts +99 -0
- package/dist/components/admin-filters/filter-toolbar.d.ts.map +1 -0
- package/dist/components/admin-filters/index.d.ts +13 -0
- package/dist/components/admin-filters/index.d.ts.map +1 -0
- package/dist/components/admin-filters/status-chip.d.ts +55 -0
- package/dist/components/admin-filters/status-chip.d.ts.map +1 -0
- package/dist/components/alert/alert.d.ts +159 -0
- package/dist/components/alert/alert.d.ts.map +1 -0
- package/dist/components/alert/index.d.ts +7 -0
- package/dist/components/alert/index.d.ts.map +1 -0
- package/dist/components/animate/animate-border.d.ts +33 -0
- package/dist/components/animate/animate-border.d.ts.map +1 -0
- package/dist/components/animate/index.d.ts +3 -0
- package/dist/components/animate/index.d.ts.map +1 -0
- package/dist/components/animate/motion-lazy.d.ts +5 -0
- package/dist/components/animate/motion-lazy.d.ts.map +1 -0
- package/dist/components/avatar/avatar.d.ts +78 -0
- package/dist/components/avatar/avatar.d.ts.map +1 -0
- package/dist/components/avatar/index.d.ts +7 -0
- package/dist/components/avatar/index.d.ts.map +1 -0
- package/dist/components/badge/badge.d.ts +102 -0
- package/dist/components/badge/badge.d.ts.map +1 -0
- package/dist/components/badge/index.d.ts +7 -0
- package/dist/components/badge/index.d.ts.map +1 -0
- package/dist/components/breadcrumbs/breadcrumbs.d.ts +100 -0
- package/dist/components/breadcrumbs/breadcrumbs.d.ts.map +1 -0
- package/dist/components/breadcrumbs/index.d.ts +7 -0
- package/dist/components/breadcrumbs/index.d.ts.map +1 -0
- package/dist/components/card/card.d.ts +127 -0
- package/dist/components/card/card.d.ts.map +1 -0
- package/dist/components/card/index.d.ts +7 -0
- package/dist/components/card/index.d.ts.map +1 -0
- package/dist/components/carousel/carousel.d.ts +35 -0
- package/dist/components/carousel/carousel.d.ts.map +1 -0
- package/dist/components/carousel/classes.d.ts +35 -0
- package/dist/components/carousel/classes.d.ts.map +1 -0
- package/dist/components/carousel/index.d.ts +10 -0
- package/dist/components/carousel/index.d.ts.map +1 -0
- package/dist/components/carousel/types.d.ts +167 -0
- package/dist/components/carousel/types.d.ts.map +1 -0
- package/dist/components/carousel/use-carousel.d.ts +51 -0
- package/dist/components/carousel/use-carousel.d.ts.map +1 -0
- package/dist/components/changelog/changelog-entry.d.ts +10 -0
- package/dist/components/changelog/changelog-entry.d.ts.map +1 -0
- package/dist/components/changelog/changelog-timeline.d.ts +9 -0
- package/dist/components/changelog/changelog-timeline.d.ts.map +1 -0
- package/dist/components/changelog/index.d.ts +3 -0
- package/dist/components/changelog/index.d.ts.map +1 -0
- package/dist/components/chart/chart.d.ts +39 -0
- package/dist/components/chart/chart.d.ts.map +1 -0
- package/dist/components/chart/classes.d.ts +24 -0
- package/dist/components/chart/classes.d.ts.map +1 -0
- package/dist/components/chart/components/chart-legends.d.ts +24 -0
- package/dist/components/chart/components/chart-legends.d.ts.map +1 -0
- package/dist/components/chart/components/chart-loading.d.ts +21 -0
- package/dist/components/chart/components/chart-loading.d.ts.map +1 -0
- package/dist/components/chart/components/index.d.ts +8 -0
- package/dist/components/chart/components/index.d.ts.map +1 -0
- package/dist/components/chart/index.d.ts +14 -0
- package/dist/components/chart/index.d.ts.map +1 -0
- package/dist/components/chart/types.d.ts +264 -0
- package/dist/components/chart/types.d.ts.map +1 -0
- package/dist/components/chart/use-chart.d.ts +34 -0
- package/dist/components/chart/use-chart.d.ts.map +1 -0
- package/dist/components/command-palette/command-palette.d.ts +73 -0
- package/dist/components/command-palette/command-palette.d.ts.map +1 -0
- package/dist/components/command-palette/index.d.ts +7 -0
- package/dist/components/command-palette/index.d.ts.map +1 -0
- package/dist/components/confirm-dialog/confirm-dialog.d.ts +89 -0
- package/dist/components/confirm-dialog/confirm-dialog.d.ts.map +1 -0
- package/dist/components/confirm-dialog/index.d.ts +7 -0
- package/dist/components/confirm-dialog/index.d.ts.map +1 -0
- package/dist/components/content-renderer/classes.d.ts +33 -0
- package/dist/components/content-renderer/classes.d.ts.map +1 -0
- package/dist/components/content-renderer/content-renderer.d.ts +37 -0
- package/dist/components/content-renderer/content-renderer.d.ts.map +1 -0
- package/dist/components/content-renderer/html-tags.d.ts +6 -0
- package/dist/components/content-renderer/html-tags.d.ts.map +1 -0
- package/dist/components/content-renderer/html-to-markdown.d.ts +7 -0
- package/dist/components/content-renderer/html-to-markdown.d.ts.map +1 -0
- package/dist/components/content-renderer/index.d.ts +7 -0
- package/dist/components/content-renderer/index.d.ts.map +1 -0
- package/dist/components/content-renderer/markdown.d.ts +23 -0
- package/dist/components/content-renderer/markdown.d.ts.map +1 -0
- package/dist/components/content-renderer/remark-spoiler.d.ts +9 -0
- package/dist/components/content-renderer/remark-spoiler.d.ts.map +1 -0
- package/dist/components/content-renderer/styles.d.ts +2 -0
- package/dist/components/content-renderer/styles.d.ts.map +1 -0
- package/dist/components/country-select/country-select.d.ts +101 -0
- package/dist/components/country-select/country-select.d.ts.map +1 -0
- package/dist/components/country-select/flag-icon.d.ts +36 -0
- package/dist/components/country-select/flag-icon.d.ts.map +1 -0
- package/dist/components/country-select/index.d.ts +5 -0
- package/dist/components/country-select/index.d.ts.map +1 -0
- package/dist/components/date-input/date-input.d.ts +27 -0
- package/dist/components/date-input/date-input.d.ts.map +1 -0
- package/dist/components/date-input/index.d.ts +4 -0
- package/dist/components/date-input/index.d.ts.map +1 -0
- package/dist/components/date-input/value.d.ts +9 -0
- package/dist/components/date-input/value.d.ts.map +1 -0
- package/dist/components/date-range-picker/date-range-input.d.ts +48 -0
- package/dist/components/date-range-picker/date-range-input.d.ts.map +1 -0
- package/dist/components/date-range-picker/date-range-picker.d.ts +39 -0
- package/dist/components/date-range-picker/date-range-picker.d.ts.map +1 -0
- package/dist/components/date-range-picker/index.d.ts +7 -0
- package/dist/components/date-range-picker/index.d.ts.map +1 -0
- package/dist/components/date-range-picker/use-date-range-picker.d.ts +28 -0
- package/dist/components/date-range-picker/use-date-range-picker.d.ts.map +1 -0
- package/dist/components/deadline-chip/deadline-chip.d.ts +41 -0
- package/dist/components/deadline-chip/deadline-chip.d.ts.map +1 -0
- package/dist/components/deadline-chip/index.d.ts +7 -0
- package/dist/components/deadline-chip/index.d.ts.map +1 -0
- package/dist/components/doc-layout/doc-layout.d.ts +17 -0
- package/dist/components/doc-layout/doc-layout.d.ts.map +1 -0
- package/dist/components/doc-layout/doc-section-nav.d.ts +16 -0
- package/dist/components/doc-layout/doc-section-nav.d.ts.map +1 -0
- package/dist/components/doc-layout/doc-sidebar.d.ts +18 -0
- package/dist/components/doc-layout/doc-sidebar.d.ts.map +1 -0
- package/dist/components/doc-layout/index.d.ts +4 -0
- package/dist/components/doc-layout/index.d.ts.map +1 -0
- package/dist/components/doc-layout/index.js +6 -0
- package/dist/components/doc-layout/index.js.map +1 -0
- package/dist/components/drawer/drawer.d.ts +65 -0
- package/dist/components/drawer/drawer.d.ts.map +1 -0
- package/dist/components/drawer/index.d.ts +7 -0
- package/dist/components/drawer/index.d.ts.map +1 -0
- package/dist/components/duration-picker/duration-picker.d.ts +24 -0
- package/dist/components/duration-picker/duration-picker.d.ts.map +1 -0
- package/dist/components/duration-picker/index.d.ts +2 -0
- package/dist/components/duration-picker/index.d.ts.map +1 -0
- package/dist/components/editor/classes.d.ts +52 -0
- package/dist/components/editor/classes.d.ts.map +1 -0
- package/dist/components/editor/editor.d.ts +15 -0
- package/dist/components/editor/editor.d.ts.map +1 -0
- package/dist/components/editor/extensions/clear-format.d.ts +3 -0
- package/dist/components/editor/extensions/clear-format.d.ts.map +1 -0
- package/dist/components/editor/extensions/index.d.ts +3 -0
- package/dist/components/editor/extensions/index.d.ts.map +1 -0
- package/dist/components/editor/extensions/text-transform.d.ts +20 -0
- package/dist/components/editor/extensions/text-transform.d.ts.map +1 -0
- package/dist/components/editor/icons/index.d.ts +34 -0
- package/dist/components/editor/icons/index.d.ts.map +1 -0
- package/dist/components/editor/index.d.ts +41 -104
- package/dist/components/editor/index.d.ts.map +1 -0
- package/dist/components/editor/index.js +3 -2
- package/dist/components/editor/presets.d.ts +3 -0
- package/dist/components/editor/presets.d.ts.map +1 -0
- package/dist/components/editor/styles.d.ts +2 -0
- package/dist/components/editor/styles.d.ts.map +1 -0
- package/dist/components/editor/toolbar/bubble-toolbar.d.ts +9 -0
- package/dist/components/editor/toolbar/bubble-toolbar.d.ts.map +1 -0
- package/dist/components/editor/toolbar/code-highlight-block.d.ts +3 -0
- package/dist/components/editor/toolbar/code-highlight-block.d.ts.map +1 -0
- package/dist/components/editor/toolbar/heading-block.d.ts +11 -0
- package/dist/components/editor/toolbar/heading-block.d.ts.map +1 -0
- package/dist/components/editor/toolbar/image-block.d.ts +11 -0
- package/dist/components/editor/toolbar/image-block.d.ts.map +1 -0
- package/dist/components/editor/toolbar/link-block.d.ts +13 -0
- package/dist/components/editor/toolbar/link-block.d.ts.map +1 -0
- package/dist/components/editor/toolbar/toolbar-item.d.ts +3 -0
- package/dist/components/editor/toolbar/toolbar-item.d.ts.map +1 -0
- package/dist/components/editor/toolbar/toolbar.d.ts +3 -0
- package/dist/components/editor/toolbar/toolbar.d.ts.map +1 -0
- package/dist/components/editor/toolbar/use-toolbar-state.d.ts +24 -0
- package/dist/components/editor/toolbar/use-toolbar-state.d.ts.map +1 -0
- package/dist/components/editor/types.d.ts +130 -0
- package/dist/components/editor/types.d.ts.map +1 -0
- package/dist/components/emoji-picker/emoji-picker.d.ts +24 -0
- package/dist/components/emoji-picker/emoji-picker.d.ts.map +1 -0
- package/dist/components/emoji-picker/emoji-search.d.ts +22 -0
- package/dist/components/emoji-picker/emoji-search.d.ts.map +1 -0
- package/dist/components/emoji-picker/emoji.d.ts +19 -0
- package/dist/components/emoji-picker/emoji.d.ts.map +1 -0
- package/dist/components/emoji-picker/index.d.ts +14 -0
- package/dist/components/emoji-picker/index.d.ts.map +1 -0
- package/dist/components/emoji-picker/index.js +3 -0
- package/dist/components/emoji-picker/index.js.map +1 -0
- package/dist/components/emoji-picker/twemoji-url.d.ts +26 -0
- package/dist/components/emoji-picker/twemoji-url.d.ts.map +1 -0
- package/dist/components/emoji-picker/types.d.ts +96 -0
- package/dist/components/emoji-picker/types.d.ts.map +1 -0
- package/dist/components/emoji-picker/use-emoji-data.d.ts +26 -0
- package/dist/components/emoji-picker/use-emoji-data.d.ts.map +1 -0
- package/dist/components/emoji-picker/use-recent-emojis.d.ts +16 -0
- package/dist/components/emoji-picker/use-recent-emojis.d.ts.map +1 -0
- package/dist/components/empty-content/empty-content.d.ts +92 -0
- package/dist/components/empty-content/empty-content.d.ts.map +1 -0
- package/dist/components/empty-content/index.d.ts +7 -0
- package/dist/components/empty-content/index.d.ts.map +1 -0
- package/dist/components/error-boundary/error-boundary.d.ts +162 -0
- package/dist/components/error-boundary/error-boundary.d.ts.map +1 -0
- package/dist/components/error-boundary/index.d.ts +7 -0
- package/dist/components/error-boundary/index.d.ts.map +1 -0
- package/dist/components/field/field-autocomplete.d.ts +74 -0
- package/dist/components/field/field-autocomplete.d.ts.map +1 -0
- package/dist/components/field/field-checkbox.d.ts +42 -0
- package/dist/components/field/field-checkbox.d.ts.map +1 -0
- package/dist/components/field/field-code.d.ts +80 -0
- package/dist/components/field/field-code.d.ts.map +1 -0
- package/dist/components/field/field-country-select.d.ts +84 -0
- package/dist/components/field/field-country-select.d.ts.map +1 -0
- package/dist/components/field/field-date-picker.d.ts +58 -0
- package/dist/components/field/field-date-picker.d.ts.map +1 -0
- package/dist/components/field/field-datetime-picker.d.ts +96 -0
- package/dist/components/field/field-datetime-picker.d.ts.map +1 -0
- package/dist/components/field/field-editor.d.ts +218 -0
- package/dist/components/field/field-editor.d.ts.map +1 -0
- package/dist/components/field/field-multi-checkbox.d.ts +91 -0
- package/dist/components/field/field-multi-checkbox.d.ts.map +1 -0
- package/dist/components/field/field-multi-select.d.ts +85 -0
- package/dist/components/field/field-multi-select.d.ts.map +1 -0
- package/dist/components/field/field-multi-switch.d.ts +93 -0
- package/dist/components/field/field-multi-switch.d.ts.map +1 -0
- package/dist/components/field/field-number.d.ts +50 -0
- package/dist/components/field/field-number.d.ts.map +1 -0
- package/dist/components/field/field-phone.d.ts +82 -0
- package/dist/components/field/field-phone.d.ts.map +1 -0
- package/dist/components/field/field-radio.d.ts +64 -0
- package/dist/components/field/field-radio.d.ts.map +1 -0
- package/dist/components/field/field-rating.d.ts +43 -0
- package/dist/components/field/field-rating.d.ts.map +1 -0
- package/dist/components/field/field-select.d.ts +50 -0
- package/dist/components/field/field-select.d.ts.map +1 -0
- package/dist/components/field/field-slider.d.ts +56 -0
- package/dist/components/field/field-slider.d.ts.map +1 -0
- package/dist/components/field/field-switch.d.ts +44 -0
- package/dist/components/field/field-switch.d.ts.map +1 -0
- package/dist/components/field/field-text.d.ts +38 -0
- package/dist/components/field/field-text.d.ts.map +1 -0
- package/dist/components/field/field-time-picker.d.ts +79 -0
- package/dist/components/field/field-time-picker.d.ts.map +1 -0
- package/dist/components/field/field-upload.d.ts +120 -0
- package/dist/components/field/field-upload.d.ts.map +1 -0
- package/dist/components/field/index.d.ts +149 -0
- package/dist/components/field/index.d.ts.map +1 -0
- package/dist/components/image/image.d.ts +79 -0
- package/dist/components/image/image.d.ts.map +1 -0
- package/dist/components/image/index.d.ts +7 -0
- package/dist/components/image/index.d.ts.map +1 -0
- package/dist/components/index.css +4 -0
- package/dist/components/index.css.map +1 -1
- package/dist/components/index.d.ts +60 -7072
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +21 -11
- package/dist/components/knowledge-graph/edge-labels.d.ts +14 -0
- package/dist/components/knowledge-graph/edge-labels.d.ts.map +1 -0
- package/dist/components/knowledge-graph/graph.d.ts +56 -0
- package/dist/components/knowledge-graph/graph.d.ts.map +1 -0
- package/dist/components/knowledge-graph/index.css +176 -0
- package/dist/components/knowledge-graph/index.css.map +1 -0
- package/dist/components/knowledge-graph/index.d.ts +3 -0
- package/dist/components/knowledge-graph/index.d.ts.map +1 -0
- package/dist/components/knowledge-graph/index.js +795 -0
- package/dist/components/knowledge-graph/index.js.map +1 -0
- package/dist/components/knowledge-graph/label-layout.d.ts +28 -0
- package/dist/components/knowledge-graph/label-layout.d.ts.map +1 -0
- package/dist/components/knowledge-graph/label-store.d.ts +15 -0
- package/dist/components/knowledge-graph/label-store.d.ts.map +1 -0
- package/dist/components/knowledge-graph/model.d.ts +92 -0
- package/dist/components/knowledge-graph/model.d.ts.map +1 -0
- package/dist/components/label/index.d.ts +7 -0
- package/dist/components/label/index.d.ts.map +1 -0
- package/dist/components/label/label.d.ts +71 -0
- package/dist/components/label/label.d.ts.map +1 -0
- package/dist/components/lightbox/classes.d.ts +34 -0
- package/dist/components/lightbox/classes.d.ts.map +1 -0
- package/dist/components/lightbox/index.d.ts +11 -0
- package/dist/components/lightbox/index.d.ts.map +1 -0
- package/dist/components/lightbox/lightbox.d.ts +42 -0
- package/dist/components/lightbox/lightbox.d.ts.map +1 -0
- package/dist/components/lightbox/types.d.ts +233 -0
- package/dist/components/lightbox/types.d.ts.map +1 -0
- package/dist/components/lightbox/use-lightbox.d.ts +42 -0
- package/dist/components/lightbox/use-lightbox.d.ts.map +1 -0
- package/dist/components/loading-screen/index.d.ts +8 -0
- package/dist/components/loading-screen/index.d.ts.map +1 -0
- package/dist/components/loading-screen/loading-screen.d.ts +37 -0
- package/dist/components/loading-screen/loading-screen.d.ts.map +1 -0
- package/dist/components/loading-screen/splash-screen.d.ts +80 -0
- package/dist/components/loading-screen/splash-screen.d.ts.map +1 -0
- package/dist/components/map/Map.d.ts +39 -0
- package/dist/components/map/Map.d.ts.map +1 -0
- package/dist/components/map/MapCoverageLayer.d.ts +25 -0
- package/dist/components/map/MapCoverageLayer.d.ts.map +1 -0
- package/dist/components/map/MapMarker.d.ts +17 -0
- package/dist/components/map/MapMarker.d.ts.map +1 -0
- package/dist/components/map/MapPlaceSearch.d.ts +33 -0
- package/dist/components/map/MapPlaceSearch.d.ts.map +1 -0
- package/dist/components/map/MapPointPicker.d.ts +35 -0
- package/dist/components/map/MapPointPicker.d.ts.map +1 -0
- package/dist/components/map/coordinates.d.ts +10 -0
- package/dist/components/map/coordinates.d.ts.map +1 -0
- package/dist/components/map/index.css +4 -0
- package/dist/components/map/index.css.map +1 -0
- package/dist/components/map/index.d.ts +19 -0
- package/dist/components/map/index.d.ts.map +1 -0
- package/dist/components/map/index.js +3 -0
- package/dist/components/map/index.js.map +1 -0
- package/dist/components/mega-menu/index.d.ts +12 -0
- package/dist/components/mega-menu/index.d.ts.map +1 -0
- package/dist/components/mega-menu/mega-menu-horizontal.d.ts +41 -0
- package/dist/components/mega-menu/mega-menu-horizontal.d.ts.map +1 -0
- package/dist/components/mega-menu/mega-menu-mobile.d.ts +28 -0
- package/dist/components/mega-menu/mega-menu-mobile.d.ts.map +1 -0
- package/dist/components/mega-menu/mega-menu-vertical.d.ts +28 -0
- package/dist/components/mega-menu/mega-menu-vertical.d.ts.map +1 -0
- package/dist/components/mega-menu/styles.d.ts +18 -0
- package/dist/components/mega-menu/styles.d.ts.map +1 -0
- package/dist/components/mega-menu/types.d.ts +200 -0
- package/dist/components/mega-menu/types.d.ts.map +1 -0
- package/dist/components/menu/index.d.ts +7 -0
- package/dist/components/menu/index.d.ts.map +1 -0
- package/dist/components/menu/menu.d.ts +144 -0
- package/dist/components/menu/menu.d.ts.map +1 -0
- package/dist/components/nav-card/index.d.ts +8 -0
- package/dist/components/nav-card/index.d.ts.map +1 -0
- package/dist/components/nav-card/nav-card-grid.d.ts +57 -0
- package/dist/components/nav-card/nav-card-grid.d.ts.map +1 -0
- package/dist/components/nav-card/nav-card.d.ts +69 -0
- package/dist/components/nav-card/nav-card.d.ts.map +1 -0
- package/dist/components/nav-section/components.d.ts +143 -0
- package/dist/components/nav-section/components.d.ts.map +1 -0
- package/dist/components/nav-section/index.d.ts +15 -0
- package/dist/components/nav-section/index.d.ts.map +1 -0
- package/dist/components/nav-section/nav-context.d.ts +80 -0
- package/dist/components/nav-section/nav-context.d.ts.map +1 -0
- package/dist/components/nav-section/nav-item.d.ts +20 -0
- package/dist/components/nav-section/nav-item.d.ts.map +1 -0
- package/dist/components/nav-section/nav-list.d.ts +25 -0
- package/dist/components/nav-section/nav-list.d.ts.map +1 -0
- package/dist/components/nav-section/nav-section-horizontal.d.ts +29 -0
- package/dist/components/nav-section/nav-section-horizontal.d.ts.map +1 -0
- package/dist/components/nav-section/nav-section-mini.d.ts +30 -0
- package/dist/components/nav-section/nav-section-mini.d.ts.map +1 -0
- package/dist/components/nav-section/nav-section-vertical.d.ts +37 -0
- package/dist/components/nav-section/nav-section-vertical.d.ts.map +1 -0
- package/dist/components/nav-section/styles.d.ts +35 -0
- package/dist/components/nav-section/styles.d.ts.map +1 -0
- package/dist/components/nav-section/types.d.ts +178 -0
- package/dist/components/nav-section/types.d.ts.map +1 -0
- package/dist/components/navigation-progress/index.d.ts +7 -0
- package/dist/components/navigation-progress/index.d.ts.map +1 -0
- package/dist/components/navigation-progress/navigation-progress.d.ts +36 -0
- package/dist/components/navigation-progress/navigation-progress.d.ts.map +1 -0
- package/dist/components/page-content/index.d.ts +7 -0
- package/dist/components/page-content/index.d.ts.map +1 -0
- package/dist/components/page-content/page-content.d.ts +55 -0
- package/dist/components/page-content/page-content.d.ts.map +1 -0
- package/dist/components/popover/index.d.ts +7 -0
- package/dist/components/popover/index.d.ts.map +1 -0
- package/dist/{popover-Dmw7SJLR.d.ts → components/popover/popover.d.ts} +11 -14
- package/dist/components/popover/popover.d.ts.map +1 -0
- package/dist/components/progress/countdown-ring.d.ts +60 -0
- package/dist/components/progress/countdown-ring.d.ts.map +1 -0
- package/dist/components/progress/index.d.ts +8 -0
- package/dist/components/progress/index.d.ts.map +1 -0
- package/dist/components/progress/progress.d.ts +106 -0
- package/dist/components/progress/progress.d.ts.map +1 -0
- package/dist/components/rail/index.d.ts +7 -0
- package/dist/components/rail/index.d.ts.map +1 -0
- package/dist/components/rail/rail.d.ts +39 -0
- package/dist/components/rail/rail.d.ts.map +1 -0
- package/dist/components/research/diagram-image.d.ts +11 -0
- package/dist/components/research/diagram-image.d.ts.map +1 -0
- package/dist/components/research/diagram.d.ts +8 -0
- package/dist/components/research/diagram.d.ts.map +1 -0
- package/dist/components/research/document.d.ts +33 -0
- package/dist/components/research/document.d.ts.map +1 -0
- package/dist/components/research/frontmatter.d.ts +15 -0
- package/dist/components/research/frontmatter.d.ts.map +1 -0
- package/dist/components/research/index.css +51 -0
- package/dist/components/research/index.css.map +1 -0
- package/dist/components/research/index.d.ts +3 -0
- package/dist/components/research/index.d.ts.map +1 -0
- package/dist/components/research/index.js +6 -0
- package/dist/components/research/index.js.map +1 -0
- package/dist/components/research/parse.d.ts +29 -0
- package/dist/components/research/parse.d.ts.map +1 -0
- package/dist/components/research-editor/block-commands.d.ts +20 -0
- package/dist/components/research-editor/block-commands.d.ts.map +1 -0
- package/dist/components/research-editor/block-controls.d.ts +13 -0
- package/dist/components/research-editor/block-controls.d.ts.map +1 -0
- package/dist/components/research-editor/editor.d.ts +75 -0
- package/dist/components/research-editor/editor.d.ts.map +1 -0
- package/dist/components/research-editor/extensions.d.ts +14 -0
- package/dist/components/research-editor/extensions.d.ts.map +1 -0
- package/dist/components/research-editor/index.css +332 -0
- package/dist/components/research-editor/index.css.map +1 -0
- package/dist/components/research-editor/index.d.ts +5 -0
- package/dist/components/research-editor/index.d.ts.map +1 -0
- package/dist/components/research-editor/index.js +1592 -0
- package/dist/components/research-editor/index.js.map +1 -0
- package/dist/components/research-editor/math-input.d.ts +32 -0
- package/dist/components/research-editor/math-input.d.ts.map +1 -0
- package/dist/components/research-editor/math-markup.d.ts +4 -0
- package/dist/components/research-editor/math-markup.d.ts.map +1 -0
- package/dist/components/research-editor/math-navigation.d.ts +6 -0
- package/dist/components/research-editor/math-navigation.d.ts.map +1 -0
- package/dist/components/research-editor/math-node.d.ts +11 -0
- package/dist/components/research-editor/math-node.d.ts.map +1 -0
- package/dist/components/research-editor/source.d.ts +19 -0
- package/dist/components/research-editor/source.d.ts.map +1 -0
- package/dist/components/scroll-spy/index.d.ts +3 -0
- package/dist/components/scroll-spy/index.d.ts.map +1 -0
- package/dist/components/scroll-spy/scroll-spy-provider.d.ts +26 -0
- package/dist/components/scroll-spy/scroll-spy-provider.d.ts.map +1 -0
- package/dist/components/scroll-spy/scroll-spy-section.d.ts +10 -0
- package/dist/components/scroll-spy/scroll-spy-section.d.ts.map +1 -0
- package/dist/components/scroll-to-top/index.d.ts +7 -0
- package/dist/components/scroll-to-top/index.d.ts.map +1 -0
- package/dist/components/scroll-to-top/scroll-to-top.d.ts +25 -0
- package/dist/components/scroll-to-top/scroll-to-top.d.ts.map +1 -0
- package/dist/components/scrollbar/index.d.ts +7 -0
- package/dist/components/scrollbar/index.d.ts.map +1 -0
- package/dist/components/scrollbar/scrollbar.d.ts +61 -0
- package/dist/components/scrollbar/scrollbar.d.ts.map +1 -0
- package/dist/components/search-input/index.d.ts +2 -0
- package/dist/components/search-input/index.d.ts.map +1 -0
- package/dist/components/search-input/search-input.d.ts +36 -0
- package/dist/components/search-input/search-input.d.ts.map +1 -0
- package/dist/components/settings/index.d.ts +10 -0
- package/dist/components/settings/index.d.ts.map +1 -0
- package/dist/components/settings/settings-drawer.d.ts +39 -0
- package/dist/components/settings/settings-drawer.d.ts.map +1 -0
- package/dist/components/settings/settings-provider.d.ts +106 -0
- package/dist/components/settings/settings-provider.d.ts.map +1 -0
- package/dist/components/skeleton/index.d.ts +7 -0
- package/dist/components/skeleton/index.d.ts.map +1 -0
- package/dist/components/skeleton/skeleton.d.ts +77 -0
- package/dist/components/skeleton/skeleton.d.ts.map +1 -0
- package/dist/components/snackbar/index.d.ts +7 -0
- package/dist/components/snackbar/index.d.ts.map +1 -0
- package/dist/components/snackbar/snackbar.d.ts +120 -0
- package/dist/components/snackbar/snackbar.d.ts.map +1 -0
- package/dist/components/sponsored-slot/index.d.ts +3 -0
- package/dist/components/sponsored-slot/index.d.ts.map +1 -0
- package/dist/components/sponsored-slot/sponsored-slot.d.ts +16 -0
- package/dist/components/sponsored-slot/sponsored-slot.d.ts.map +1 -0
- package/dist/components/sponsored-slot/types.d.ts +45 -0
- package/dist/components/sponsored-slot/types.d.ts.map +1 -0
- package/dist/components/stepper/index.d.ts +7 -0
- package/dist/components/stepper/index.d.ts.map +1 -0
- package/dist/components/stepper/stepper.d.ts +145 -0
- package/dist/components/stepper/stepper.d.ts.map +1 -0
- package/dist/components/svg-color/index.d.ts +7 -0
- package/dist/components/svg-color/index.d.ts.map +1 -0
- package/dist/components/svg-color/svg-color.d.ts +80 -0
- package/dist/components/svg-color/svg-color.d.ts.map +1 -0
- package/dist/components/table/index.d.ts +7 -0
- package/dist/components/table/index.d.ts.map +1 -0
- package/dist/components/table/table.d.ts +184 -0
- package/dist/components/table/table.d.ts.map +1 -0
- package/dist/components/tabs/index.d.ts +7 -0
- package/dist/components/tabs/index.d.ts.map +1 -0
- package/dist/components/tabs/tabs.d.ts +146 -0
- package/dist/components/tabs/tabs.d.ts.map +1 -0
- package/dist/components/tag-cloud/index.d.ts +7 -0
- package/dist/components/tag-cloud/index.d.ts.map +1 -0
- package/dist/components/tag-cloud/tag-cloud.d.ts +58 -0
- package/dist/components/tag-cloud/tag-cloud.d.ts.map +1 -0
- package/dist/components/tiptap-renderer/index.d.ts +2 -0
- package/dist/components/tiptap-renderer/index.d.ts.map +1 -0
- package/dist/components/tiptap-renderer/tiptap-renderer.d.ts +46 -0
- package/dist/components/tiptap-renderer/tiptap-renderer.d.ts.map +1 -0
- package/dist/components/tooltip/index.d.ts +7 -0
- package/dist/components/tooltip/index.d.ts.map +1 -0
- package/dist/components/tooltip/tooltip.d.ts +38 -0
- package/dist/components/tooltip/tooltip.d.ts.map +1 -0
- package/dist/components/virtual-list/index.d.ts +7 -0
- package/dist/components/virtual-list/index.d.ts.map +1 -0
- package/dist/components/virtual-list/virtual-list.d.ts +64 -0
- package/dist/components/virtual-list/virtual-list.d.ts.map +1 -0
- package/dist/core/accessibility/index.d.ts +96 -0
- package/dist/core/accessibility/index.d.ts.map +1 -0
- package/dist/core/accessibility/skip-link.d.ts +31 -0
- package/dist/core/accessibility/skip-link.d.ts.map +1 -0
- package/dist/core/context.d.ts +99 -0
- package/dist/core/context.d.ts.map +1 -0
- package/dist/core/hooks/use-boolean.d.ts +54 -0
- package/dist/core/hooks/use-boolean.d.ts.map +1 -0
- package/dist/core/hooks/use-breakpoints.d.ts +87 -0
- package/dist/core/hooks/use-breakpoints.d.ts.map +1 -0
- package/dist/core/hooks/use-click-outside.d.ts +26 -0
- package/dist/core/hooks/use-click-outside.d.ts.map +1 -0
- package/dist/core/hooks/use-copy-to-clipboard.d.ts +66 -0
- package/dist/core/hooks/use-copy-to-clipboard.d.ts.map +1 -0
- package/dist/core/hooks/use-countdown.d.ts +105 -0
- package/dist/core/hooks/use-countdown.d.ts.map +1 -0
- package/dist/core/hooks/use-debounce.d.ts +64 -0
- package/dist/core/hooks/use-debounce.d.ts.map +1 -0
- package/dist/core/hooks/use-event-listener.d.ts +37 -0
- package/dist/core/hooks/use-event-listener.d.ts.map +1 -0
- package/dist/core/hooks/use-interval.d.ts +30 -0
- package/dist/core/hooks/use-interval.d.ts.map +1 -0
- package/dist/core/hooks/use-is-client.d.ts +24 -0
- package/dist/core/hooks/use-is-client.d.ts.map +1 -0
- package/dist/core/hooks/use-local-storage.d.ts +61 -0
- package/dist/core/hooks/use-local-storage.d.ts.map +1 -0
- package/dist/core/hooks/use-media-query.d.ts +107 -0
- package/dist/core/hooks/use-media-query.d.ts.map +1 -0
- package/dist/core/hooks/use-mounted.d.ts +33 -0
- package/dist/core/hooks/use-mounted.d.ts.map +1 -0
- package/dist/core/hooks/use-multi-select.d.ts +113 -0
- package/dist/core/hooks/use-multi-select.d.ts.map +1 -0
- package/dist/core/hooks/use-previous.d.ts +23 -0
- package/dist/core/hooks/use-previous.d.ts.map +1 -0
- package/dist/core/hooks/use-set-state.d.ts +56 -0
- package/dist/core/hooks/use-set-state.d.ts.map +1 -0
- package/dist/core/hooks/use-tabs.d.ts +74 -0
- package/dist/core/hooks/use-tabs.d.ts.map +1 -0
- package/dist/core/hooks/use-timeout.d.ts +37 -0
- package/dist/core/hooks/use-timeout.d.ts.map +1 -0
- package/dist/core/index.d.ts +36 -468
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +10 -7
- package/dist/core/provider-stack.d.ts +181 -0
- package/dist/core/provider-stack.d.ts.map +1 -0
- package/dist/core/provider.d.ts +72 -0
- package/dist/core/provider.d.ts.map +1 -0
- package/dist/forms/index.d.ts +6 -557
- package/dist/forms/index.d.ts.map +1 -0
- package/dist/forms/index.js +0 -1
- package/dist/forms/index.js.map +1 -1
- package/dist/forms/schema-provider.d.ts +282 -0
- package/dist/forms/schema-provider.d.ts.map +1 -0
- package/dist/forms/schema-utils.d.ts +286 -0
- package/dist/forms/schema-utils.d.ts.map +1 -0
- package/dist/hooks/index.d.ts +38 -8
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +12 -9
- package/dist/hooks/use-array.d.ts +126 -0
- package/dist/hooks/use-array.d.ts.map +1 -0
- package/dist/hooks/use-async.d.ts +88 -0
- package/dist/hooks/use-async.d.ts.map +1 -0
- package/dist/hooks/use-back-to-top.d.ts +57 -0
- package/dist/hooks/use-back-to-top.d.ts.map +1 -0
- package/dist/hooks/use-client-rect.d.ts +67 -0
- package/dist/hooks/use-client-rect.d.ts.map +1 -0
- package/dist/hooks/use-config-from-query.d.ts +98 -0
- package/dist/hooks/use-config-from-query.d.ts.map +1 -0
- package/dist/hooks/use-cookies.d.ts +62 -0
- package/dist/hooks/use-cookies.d.ts.map +1 -0
- package/dist/hooks/use-countdown-date.d.ts +47 -0
- package/dist/hooks/use-countdown-date.d.ts.map +1 -0
- package/dist/hooks/use-countdown-seconds.d.ts +83 -0
- package/dist/hooks/use-countdown-seconds.d.ts.map +1 -0
- package/dist/hooks/use-double-click.d.ts +67 -0
- package/dist/hooks/use-double-click.d.ts.map +1 -0
- package/dist/hooks/use-focus-trap.d.ts +66 -0
- package/dist/hooks/use-focus-trap.d.ts.map +1 -0
- package/dist/hooks/use-image-dimensions.d.ts +124 -0
- package/dist/hooks/use-image-dimensions.d.ts.map +1 -0
- package/dist/hooks/use-infinite-scroll.d.ts +204 -0
- package/dist/hooks/use-infinite-scroll.d.ts.map +1 -0
- package/dist/hooks/use-intersection-observer.d.ts +93 -0
- package/dist/hooks/use-intersection-observer.d.ts.map +1 -0
- package/dist/hooks/use-isomorphic-layout-effect.d.ts +34 -0
- package/dist/hooks/use-isomorphic-layout-effect.d.ts.map +1 -0
- package/dist/hooks/use-keyboard-shortcut.d.ts +112 -0
- package/dist/hooks/use-keyboard-shortcut.d.ts.map +1 -0
- package/dist/hooks/use-lazy-query.d.ts +132 -0
- package/dist/hooks/use-lazy-query.d.ts.map +1 -0
- package/dist/hooks/use-mutation.d.ts +141 -0
- package/dist/hooks/use-mutation.d.ts.map +1 -0
- package/dist/hooks/use-online-status.d.ts +56 -0
- package/dist/hooks/use-online-status.d.ts.map +1 -0
- package/dist/hooks/use-password-visibility.d.ts +83 -0
- package/dist/hooks/use-password-visibility.d.ts.map +1 -0
- package/dist/hooks/use-popover-hover.d.ts +78 -0
- package/dist/hooks/use-popover-hover.d.ts.map +1 -0
- package/dist/hooks/use-scroll-offset-top.d.ts +69 -0
- package/dist/hooks/use-scroll-offset-top.d.ts.map +1 -0
- package/dist/hooks/use-scroll-position.d.ts +96 -0
- package/dist/hooks/use-scroll-position.d.ts.map +1 -0
- package/dist/hooks/use-session-storage.d.ts +66 -0
- package/dist/hooks/use-session-storage.d.ts.map +1 -0
- package/dist/hooks/use-throttle.d.ts +67 -0
- package/dist/hooks/use-throttle.d.ts.map +1 -0
- package/dist/hooks/use-update-effect.d.ts +53 -0
- package/dist/hooks/use-update-effect.d.ts.map +1 -0
- package/dist/hooks/use-window-size.d.ts +132 -0
- package/dist/hooks/use-window-size.d.ts.map +1 -0
- package/dist/http/client.d.ts +74 -0
- package/dist/http/client.d.ts.map +1 -0
- package/dist/http/index.d.ts +6 -229
- package/dist/http/index.d.ts.map +1 -0
- package/dist/http/index.js +0 -2
- package/dist/http/index.js.map +1 -1
- package/dist/http/types.d.ts +158 -0
- package/dist/http/types.d.ts.map +1 -0
- package/dist/icons/context.d.ts +17 -0
- package/dist/icons/context.d.ts.map +1 -0
- package/dist/icons/controls.d.ts +51 -0
- package/dist/icons/controls.d.ts.map +1 -0
- package/dist/icons/index.d.ts +3 -0
- package/dist/icons/index.d.ts.map +1 -0
- package/dist/icons/index.js +4 -0
- package/dist/icons/index.js.map +1 -0
- package/dist/icons/theme.d.ts +4 -0
- package/dist/icons/theme.d.ts.map +1 -0
- package/dist/index.css +4 -0
- package/dist/index.css.map +1 -1
- package/dist/index.d.ts +19 -2758
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +46 -63
- package/dist/index.js.map +1 -1
- package/dist/layouts/auth/centered.d.ts +49 -0
- package/dist/layouts/auth/centered.d.ts.map +1 -0
- package/dist/layouts/auth/index.d.ts +12 -0
- package/dist/layouts/auth/index.d.ts.map +1 -0
- package/dist/layouts/auth/simple.d.ts +58 -0
- package/dist/layouts/auth/simple.d.ts.map +1 -0
- package/dist/layouts/auth/split.d.ts +81 -0
- package/dist/layouts/auth/split.d.ts.map +1 -0
- package/dist/layouts/core/context.d.ts +102 -0
- package/dist/layouts/core/context.d.ts.map +1 -0
- package/dist/layouts/core/css-vars.d.ts +43 -0
- package/dist/layouts/core/css-vars.d.ts.map +1 -0
- package/dist/layouts/core/header-section.d.ts +79 -0
- package/dist/layouts/core/header-section.d.ts.map +1 -0
- package/dist/layouts/core/index.d.ts +18 -0
- package/dist/layouts/core/index.d.ts.map +1 -0
- package/dist/layouts/core/layout-section.d.ts +64 -0
- package/dist/layouts/core/layout-section.d.ts.map +1 -0
- package/dist/layouts/core/user-menu.d.ts +88 -0
- package/dist/layouts/core/user-menu.d.ts.map +1 -0
- package/dist/layouts/dashboard/index.d.ts +10 -0
- package/dist/layouts/dashboard/index.d.ts.map +1 -0
- package/dist/layouts/dashboard/labels.d.ts +12 -0
- package/dist/layouts/dashboard/labels.d.ts.map +1 -0
- package/dist/layouts/dashboard/layout.d.ts +96 -0
- package/dist/layouts/dashboard/layout.d.ts.map +1 -0
- package/dist/layouts/dashboard/sidenav.d.ts +62 -0
- package/dist/layouts/dashboard/sidenav.d.ts.map +1 -0
- package/dist/layouts/dashboard/topnav.d.ts +41 -0
- package/dist/layouts/dashboard/topnav.d.ts.map +1 -0
- package/dist/layouts/index.d.ts +32 -850
- package/dist/layouts/index.d.ts.map +1 -0
- package/dist/layouts/index.js +8 -4
- package/dist/layouts/panel-layout.d.ts +35 -0
- package/dist/layouts/panel-layout.d.ts.map +1 -0
- package/dist/layouts/sidebar-toggle.d.ts +11 -0
- package/dist/layouts/sidebar-toggle.d.ts.map +1 -0
- package/dist/layouts/types.d.ts +317 -0
- package/dist/layouts/types.d.ts.map +1 -0
- package/dist/netron/context.d.ts +18 -0
- package/dist/netron/context.d.ts.map +1 -0
- package/dist/netron/hooks.d.ts +10 -0
- package/dist/netron/hooks.d.ts.map +1 -0
- package/dist/netron/index.d.ts +47 -4
- package/dist/netron/index.d.ts.map +1 -0
- package/dist/netron/index.js +1 -2
- package/dist/netron/types.d.ts +12 -0
- package/dist/netron/types.d.ts.map +1 -0
- package/dist/registry/index.d.ts +8 -341
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +1 -2
- package/dist/registry/installer.d.ts +137 -0
- package/dist/registry/installer.d.ts.map +1 -0
- package/dist/registry/manager.d.ts +196 -0
- package/dist/registry/manager.d.ts.map +1 -0
- package/dist/state/create-store.d.ts +164 -0
- package/dist/state/create-store.d.ts.map +1 -0
- package/dist/state/index.d.ts +12 -969
- package/dist/state/index.d.ts.map +1 -0
- package/dist/state/index.js +2 -3
- package/dist/state/settings-version.d.ts +255 -0
- package/dist/state/settings-version.d.ts.map +1 -0
- package/dist/state/stores/auth.d.ts +143 -0
- package/dist/state/stores/auth.d.ts.map +1 -0
- package/dist/state/stores/index.d.ts +10 -0
- package/dist/state/stores/index.d.ts.map +1 -0
- package/dist/state/stores/settings.d.ts +151 -0
- package/dist/state/stores/settings.d.ts.map +1 -0
- package/dist/state/stores/theme.d.ts +87 -0
- package/dist/state/stores/theme.d.ts.map +1 -0
- package/dist/state/stores/ui.d.ts +106 -0
- package/dist/state/stores/ui.d.ts.map +1 -0
- package/dist/theme/colors/base.d.ts +61 -0
- package/dist/theme/colors/base.d.ts.map +1 -0
- package/dist/theme/colors/index.d.ts +10 -0
- package/dist/theme/colors/index.d.ts.map +1 -0
- package/dist/theme/colors/luxury.d.ts +49 -0
- package/dist/theme/colors/luxury.d.ts.map +1 -0
- package/dist/theme/components/Autocomplete.d.ts +9 -0
- package/dist/theme/components/Autocomplete.d.ts.map +1 -0
- package/dist/theme/components/Button.d.ts +33 -0
- package/dist/theme/components/Button.d.ts.map +1 -0
- package/dist/theme/components/Card.d.ts +20 -0
- package/dist/theme/components/Card.d.ts.map +1 -0
- package/dist/theme/components/Chip.d.ts +29 -0
- package/dist/theme/components/Chip.d.ts.map +1 -0
- package/dist/theme/components/DataGrid.d.ts +15 -0
- package/dist/theme/components/DataGrid.d.ts.map +1 -0
- package/dist/theme/components/DatePicker.d.ts +19 -0
- package/dist/theme/components/DatePicker.d.ts.map +1 -0
- package/dist/theme/components/Dialog.d.ts +23 -0
- package/dist/theme/components/Dialog.d.ts.map +1 -0
- package/dist/theme/components/FormControls.d.ts +44 -0
- package/dist/theme/components/FormControls.d.ts.map +1 -0
- package/dist/theme/components/Tabs.d.ts +21 -0
- package/dist/theme/components/Tabs.d.ts.map +1 -0
- package/dist/theme/components/TextField.d.ts +87 -0
- package/dist/theme/components/TextField.d.ts.map +1 -0
- package/dist/theme/components/index.d.ts +27 -0
- package/dist/theme/components/index.d.ts.map +1 -0
- package/dist/theme/components/theme-utils.d.ts +42 -0
- package/dist/theme/components/theme-utils.d.ts.map +1 -0
- package/dist/theme/create-theme.d.ts +119 -0
- package/dist/theme/create-theme.d.ts.map +1 -0
- package/dist/theme/css-variables.d.ts +42 -0
- package/dist/theme/css-variables.d.ts.map +1 -0
- package/dist/theme/custom-shadows.d.ts +58 -0
- package/dist/theme/custom-shadows.d.ts.map +1 -0
- package/dist/theme/index.d.ts +23 -1045
- package/dist/theme/index.d.ts.map +1 -0
- package/dist/theme/index.js +6 -3
- package/dist/theme/mixins.d.ts +334 -0
- package/dist/theme/mixins.d.ts.map +1 -0
- package/dist/theme/opacity.d.ts +51 -0
- package/dist/theme/opacity.d.ts.map +1 -0
- package/dist/theme/palette/builder.d.ts +138 -0
- package/dist/theme/palette/builder.d.ts.map +1 -0
- package/dist/theme/palette/index.d.ts +7 -0
- package/dist/theme/palette/index.d.ts.map +1 -0
- package/dist/theme/palette/overrides.d.ts +23 -0
- package/dist/theme/palette/overrides.d.ts.map +1 -0
- package/dist/theme/palette.d.ts +43 -0
- package/dist/theme/palette.d.ts.map +1 -0
- package/dist/theme/presets/arctic.d.ts +13 -0
- package/dist/theme/presets/arctic.d.ts.map +1 -0
- package/dist/theme/presets/default.d.ts +13 -0
- package/dist/theme/presets/default.d.ts.map +1 -0
- package/dist/theme/presets/dracula.d.ts +27 -0
- package/dist/theme/presets/dracula.d.ts.map +1 -0
- package/dist/theme/presets/ember.d.ts +23 -0
- package/dist/theme/presets/ember.d.ts.map +1 -0
- package/dist/theme/presets/index.d.ts +39 -0
- package/dist/theme/presets/index.d.ts.map +1 -0
- package/dist/theme/presets/luxury.d.ts +13 -0
- package/dist/theme/presets/luxury.d.ts.map +1 -0
- package/dist/theme/presets/midnight.d.ts +23 -0
- package/dist/theme/presets/midnight.d.ts.map +1 -0
- package/dist/theme/presets/minimal.d.ts +23 -0
- package/dist/theme/presets/minimal.d.ts.map +1 -0
- package/dist/theme/presets/nature.d.ts +14 -0
- package/dist/theme/presets/nature.d.ts.map +1 -0
- package/dist/theme/presets/retro.d.ts +23 -0
- package/dist/theme/presets/retro.d.ts.map +1 -0
- package/dist/theme/shadows.d.ts +61 -0
- package/dist/theme/shadows.d.ts.map +1 -0
- package/dist/theme/typography.d.ts +24 -0
- package/dist/theme/typography.d.ts.map +1 -0
- package/dist/theme/utils/color.d.ts +295 -0
- package/dist/theme/utils/color.d.ts.map +1 -0
- package/dist/theme/utils/index.d.ts +7 -0
- package/dist/theme/utils/index.d.ts.map +1 -0
- package/dist/{registry-DQcIzW2s.d.ts → types/blocks.d.ts} +30 -191
- package/dist/types/blocks.d.ts.map +1 -0
- package/dist/{components-BCGZ-Rwt.d.ts → types/components.d.ts} +17 -20
- package/dist/types/components.d.ts.map +1 -0
- package/dist/{config-Pct0n_Kq.d.ts → types/config.d.ts} +14 -16
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/index.d.ts +13 -7
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +1 -2
- package/dist/types/registry.d.ts +158 -0
- package/dist/types/registry.d.ts.map +1 -0
- package/dist/{theme-B4Q3Bg5o.d.ts → types/theme.d.ts} +31 -34
- package/dist/types/theme.d.ts.map +1 -0
- package/dist/ui/index.d.ts +18 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +148 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/utils/async-lock.d.ts +169 -0
- package/dist/utils/async-lock.d.ts.map +1 -0
- package/dist/utils/cn.d.ts +80 -0
- package/dist/utils/cn.d.ts.map +1 -0
- package/dist/utils/cookies.d.ts +68 -0
- package/dist/utils/cookies.d.ts.map +1 -0
- package/dist/utils/create-classes.d.ts +90 -0
- package/dist/utils/create-classes.d.ts.map +1 -0
- package/dist/utils/errors.d.ts +201 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/fetch-interceptor.d.ts +230 -0
- package/dist/utils/fetch-interceptor.d.ts.map +1 -0
- package/dist/utils/font.d.ts +65 -0
- package/dist/utils/font.d.ts.map +1 -0
- package/dist/utils/format-crypto.d.ts +312 -0
- package/dist/utils/format-crypto.d.ts.map +1 -0
- package/dist/utils/format-date.d.ts +240 -0
- package/dist/utils/format-date.d.ts.map +1 -0
- package/dist/utils/format-number.d.ts +245 -0
- package/dist/utils/format-number.d.ts.map +1 -0
- package/dist/utils/i18n-text.d.ts +68 -0
- package/dist/utils/i18n-text.d.ts.map +1 -0
- package/dist/utils/index.d.ts +30 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/jwt.d.ts +227 -0
- package/dist/utils/jwt.d.ts.map +1 -0
- package/dist/utils/object.d.ts +96 -0
- package/dist/utils/object.d.ts.map +1 -0
- package/dist/utils/refs.d.ts +60 -0
- package/dist/utils/refs.d.ts.map +1 -0
- package/dist/utils/rtl.d.ts +75 -0
- package/dist/utils/rtl.d.ts.map +1 -0
- package/dist/utils/storage.d.ts +190 -0
- package/dist/utils/storage.d.ts.map +1 -0
- package/dist/utils/string.d.ts +216 -0
- package/dist/utils/string.d.ts.map +1 -0
- package/dist/utils/template-resolver.d.ts +12 -0
- package/dist/utils/template-resolver.d.ts.map +1 -0
- package/dist/utils/toast.d.ts +25 -0
- package/dist/utils/toast.d.ts.map +1 -0
- package/dist/utils/transform-number.d.ts +108 -0
- package/dist/utils/transform-number.d.ts.map +1 -0
- package/dist/utils/url.d.ts +198 -0
- package/dist/utils/url.d.ts.map +1 -0
- package/package.json +120 -63
- package/dist/chunk-2FYNRDXR.js.map +0 -1
- package/dist/chunk-77KIJLPP.js +0 -37
- package/dist/chunk-A2Z7NVGL.js.map +0 -1
- package/dist/chunk-BV32OJ2A.js.map +0 -1
- package/dist/chunk-DDY7TLUI.js.map +0 -1
- package/dist/chunk-HO2GKTWJ.js.map +0 -1
- package/dist/chunk-IZOIO7PA.js.map +0 -1
- package/dist/chunk-JDTC2SBY.js.map +0 -1
- package/dist/chunk-KTCWPGON.js.map +0 -1
- package/dist/chunk-MEFT6XPH.js.map +0 -1
- package/dist/chunk-SNKGGHBT.js.map +0 -1
- package/dist/chunk-VAAIHNWQ.js.map +0 -1
- package/dist/chunk-XQXGE2PW.js +0 -16793
- package/dist/chunk-XQXGE2PW.js.map +0 -1
- package/dist/chunk-XWL6J6IO.js.map +0 -1
- package/dist/chunk-XXP3ZGU6.js.map +0 -1
- package/dist/chunk-YJMAQL3S.js.map +0 -1
- package/dist/index-nmJ8Muwg.d.ts +0 -2368
- package/dist/settings-CAC0qFjS.d.ts +0 -455
- package/dist/text-transform-D6MzzF7V.d.ts +0 -165
- package/dist/use-timeout-D7U3EAtH.d.ts +0 -808
|
@@ -1,20 +1,22 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
1
|
+
import { contentClasses, ContentRoot, TipTapRenderer } from './chunk-GUGTDURV.js';
|
|
2
|
+
import { PRESET_NAMES, PRESET_DISPLAY_NAMES } from './chunk-KQ67XB6T.js';
|
|
3
|
+
import { useSettingsStore } from './chunk-XIXSSI3B.js';
|
|
4
|
+
import { SearchInput } from './chunk-GMIE6III.js';
|
|
5
|
+
import { useBoolean } from './chunk-BRDWQVRT.js';
|
|
6
|
+
import { FilterIcon, EmptyIcon, CloseIcon, ChevronDownIcon, ChevronRightIcon, ZoomOutIcon, ZoomInIcon, FullscreenExitIcon, FullscreenIcon, DownloadIcon, ShareIcon, ChevronLeftIcon, PlayIcon, ChevronUpIcon } from './chunk-PGHEP4JD.js';
|
|
7
|
+
import { createContext, lazy, useCallback, useState, useMemo, useTransition, useRef, useEffect, Fragment as Fragment$1, useId, Children, useContext, isValidElement, Suspense } from 'react';
|
|
6
8
|
import Stack from '@mui/material/Stack';
|
|
7
9
|
import TextField2 from '@mui/material/TextField';
|
|
8
10
|
import Chip from '@mui/material/Chip';
|
|
9
11
|
import MenuItem from '@mui/material/MenuItem';
|
|
10
|
-
import
|
|
12
|
+
import Box19 from '@mui/material/Box';
|
|
11
13
|
import Button from '@mui/material/Button';
|
|
12
14
|
import Typography5 from '@mui/material/Typography';
|
|
13
15
|
import Badge from '@mui/material/Badge';
|
|
14
16
|
import { styled, alpha, useTheme } from '@mui/material/styles';
|
|
15
17
|
import dayjs from 'dayjs';
|
|
16
18
|
import InputAdornment from '@mui/material/InputAdornment';
|
|
17
|
-
import
|
|
19
|
+
import IconButton4 from '@mui/material/IconButton';
|
|
18
20
|
import Dialog from '@mui/material/Dialog';
|
|
19
21
|
import DialogTitle from '@mui/material/DialogTitle';
|
|
20
22
|
import DialogActions from '@mui/material/DialogActions';
|
|
@@ -34,26 +36,27 @@ import TableSortLabel from '@mui/material/TableSortLabel';
|
|
|
34
36
|
import TablePagination from '@mui/material/TablePagination';
|
|
35
37
|
import Paper from '@mui/material/Paper';
|
|
36
38
|
import Checkbox from '@mui/material/Checkbox';
|
|
37
|
-
import
|
|
39
|
+
import Skeleton3 from '@mui/material/Skeleton';
|
|
38
40
|
import Autocomplete from '@mui/material/Autocomplete';
|
|
39
41
|
import { LazyMotion, domMax, useMotionValue, useAnimationFrame, useTransform, useMotionTemplate, m } from 'framer-motion';
|
|
40
42
|
import MuiAvatar from '@mui/material/Avatar';
|
|
41
43
|
import AvatarGroup from '@mui/material/AvatarGroup';
|
|
42
|
-
import
|
|
44
|
+
import Card2 from '@mui/material/Card';
|
|
43
45
|
import CardHeader from '@mui/material/CardHeader';
|
|
44
46
|
import CardContent from '@mui/material/CardContent';
|
|
45
47
|
import CardActions from '@mui/material/CardActions';
|
|
46
48
|
import DialogContentText from '@mui/material/DialogContentText';
|
|
49
|
+
import CardActionArea from '@mui/material/CardActionArea';
|
|
50
|
+
import Tooltip2 from '@mui/material/Tooltip';
|
|
47
51
|
import Grid from '@mui/material/Grid';
|
|
48
52
|
import Portal from '@mui/material/Portal';
|
|
49
53
|
import MuiLinearProgress from '@mui/material/LinearProgress';
|
|
50
54
|
import CircularProgress from '@mui/material/CircularProgress';
|
|
51
|
-
import
|
|
55
|
+
import List from '@mui/material/List';
|
|
52
56
|
import ListItemButton from '@mui/material/ListItemButton';
|
|
53
57
|
import ListItemText from '@mui/material/ListItemText';
|
|
54
58
|
import Snackbar from '@mui/material/Snackbar';
|
|
55
59
|
import MuiAlert from '@mui/material/Alert';
|
|
56
|
-
import CloseIcon3 from '@mui/icons-material/Close';
|
|
57
60
|
import { useVirtualizer } from '@tanstack/react-virtual';
|
|
58
61
|
import Divider3 from '@mui/material/Divider';
|
|
59
62
|
import MuiTabs from '@mui/material/Tabs';
|
|
@@ -61,43 +64,31 @@ import MuiTab from '@mui/material/Tab';
|
|
|
61
64
|
import MuiAccordion from '@mui/material/Accordion';
|
|
62
65
|
import MuiAccordionSummary from '@mui/material/AccordionSummary';
|
|
63
66
|
import MuiAccordionDetails from '@mui/material/AccordionDetails';
|
|
64
|
-
import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
|
|
65
67
|
import MuiMenu from '@mui/material/Menu';
|
|
66
68
|
import ListItemIcon from '@mui/material/ListItemIcon';
|
|
67
69
|
import NProgress from 'nprogress';
|
|
68
|
-
import Collapse from '@mui/material/Collapse';
|
|
69
|
-
import ContentCopyIcon from '@mui/icons-material/ContentCopy';
|
|
70
70
|
import Drawer from '@mui/material/Drawer';
|
|
71
|
-
import Tooltip from '@mui/material/Tooltip';
|
|
72
71
|
import Switch from '@mui/material/Switch';
|
|
73
72
|
import Slider from '@mui/material/Slider';
|
|
74
73
|
import ToggleButton from '@mui/material/ToggleButton';
|
|
75
74
|
import ToggleButtonGroup from '@mui/material/ToggleButtonGroup';
|
|
76
75
|
import FormControlLabel from '@mui/material/FormControlLabel';
|
|
77
76
|
import AlertTitle from '@mui/material/AlertTitle';
|
|
77
|
+
import { useForkRef } from '@mui/material/utils';
|
|
78
78
|
import MuiBreadcrumbs from '@mui/material/Breadcrumbs';
|
|
79
79
|
import Link from '@mui/material/Link';
|
|
80
80
|
import SvgIcon from '@mui/material/SvgIcon';
|
|
81
|
-
import ChevronRightIcon from '@mui/icons-material/ChevronRight';
|
|
82
81
|
import MuiStepper from '@mui/material/Stepper';
|
|
83
82
|
import Step from '@mui/material/Step';
|
|
84
83
|
import StepLabel from '@mui/material/StepLabel';
|
|
85
84
|
import StepContent from '@mui/material/StepContent';
|
|
86
85
|
import { clsx } from 'clsx';
|
|
87
|
-
import ChevronLeftIcon from '@mui/icons-material/ChevronLeft';
|
|
88
|
-
import ZoomInIcon from '@mui/icons-material/ZoomIn';
|
|
89
|
-
import ZoomOutIcon from '@mui/icons-material/ZoomOut';
|
|
90
|
-
import FullscreenIcon from '@mui/icons-material/Fullscreen';
|
|
91
|
-
import FullscreenExitIcon from '@mui/icons-material/FullscreenExit';
|
|
92
|
-
import DownloadIcon from '@mui/icons-material/Download';
|
|
93
|
-
import ShareIcon from '@mui/icons-material/Share';
|
|
94
|
-
import PlayArrowIcon from '@mui/icons-material/PlayArrow';
|
|
95
|
-
import KeyboardArrowUpIcon from '@mui/icons-material/KeyboardArrowUp';
|
|
96
|
-
import KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';
|
|
97
86
|
import ButtonBase from '@mui/material/ButtonBase';
|
|
87
|
+
import Collapse from '@mui/material/Collapse';
|
|
98
88
|
import Popover from '@mui/material/Popover';
|
|
99
89
|
import ReactMarkdown from 'react-markdown';
|
|
100
90
|
import rehypeRaw from 'rehype-raw';
|
|
91
|
+
import rehypeSanitize, { defaultSchema } from 'rehype-sanitize';
|
|
101
92
|
import rehypeHighlight from 'rehype-highlight';
|
|
102
93
|
import remarkGfm from 'remark-gfm';
|
|
103
94
|
import TurndownService from 'turndown';
|
|
@@ -129,7 +120,7 @@ function DateRangePicker({
|
|
|
129
120
|
const txTitle = translations?.title ?? title ?? "Select date range";
|
|
130
121
|
const txStart = translations?.startDate ?? "Start date";
|
|
131
122
|
const txEnd = translations?.endDate ?? "End date";
|
|
132
|
-
const txErrorRange = translations?.errorRange ?? "End date
|
|
123
|
+
const txErrorRange = translations?.errorRange ?? "End date cannot be earlier than start date";
|
|
133
124
|
const txCancel = translations?.cancel ?? "Cancel";
|
|
134
125
|
const txApply = translations?.apply ?? "Apply";
|
|
135
126
|
const mdUp = useMediaQuery((theme) => theme.breakpoints.up("md"));
|
|
@@ -277,6 +268,7 @@ function DateRangeInput({
|
|
|
277
268
|
const txPlaceholder = translations?.placeholder ?? "Select dates...";
|
|
278
269
|
const txFrom = translations?.from ?? "From";
|
|
279
270
|
const txTo = translations?.to ?? "To";
|
|
271
|
+
const txClear = translations?.clear ?? "Clear date range";
|
|
280
272
|
const displayLabel = useMemo(
|
|
281
273
|
() => formatLabel(startDate, endDate, txFrom, txTo),
|
|
282
274
|
[startDate, endDate, txFrom, txTo]
|
|
@@ -317,7 +309,7 @@ function DateRangeInput({
|
|
|
317
309
|
sx: { cursor: "pointer" },
|
|
318
310
|
startAdornment: /* @__PURE__ */ jsx(InputAdornment, { position: "start", sx: { color: "text.disabled" }, children: /* @__PURE__ */ jsx(CalendarIcon, {}) }),
|
|
319
311
|
...hasValue && {
|
|
320
|
-
endAdornment: /* @__PURE__ */ jsx(InputAdornment, { position: "end", children: /* @__PURE__ */ jsx(
|
|
312
|
+
endAdornment: /* @__PURE__ */ jsx(InputAdornment, { position: "end", children: /* @__PURE__ */ jsx(IconButton4, { size: "small", onClick: handleClear, "aria-label": txClear, sx: { p: 0.25 }, children: /* @__PURE__ */ jsx(ClearIcon, {}) }) })
|
|
321
313
|
}
|
|
322
314
|
},
|
|
323
315
|
inputLabel: { shrink: true }
|
|
@@ -356,22 +348,6 @@ function DateRangeInput({
|
|
|
356
348
|
)
|
|
357
349
|
] });
|
|
358
350
|
}
|
|
359
|
-
function FilterIcon() {
|
|
360
|
-
return /* @__PURE__ */ jsx(
|
|
361
|
-
"svg",
|
|
362
|
-
{
|
|
363
|
-
width: "16",
|
|
364
|
-
height: "16",
|
|
365
|
-
viewBox: "0 0 24 24",
|
|
366
|
-
fill: "none",
|
|
367
|
-
stroke: "currentColor",
|
|
368
|
-
strokeWidth: "2",
|
|
369
|
-
strokeLinecap: "round",
|
|
370
|
-
strokeLinejoin: "round",
|
|
371
|
-
children: /* @__PURE__ */ jsx("polygon", { points: "22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3" })
|
|
372
|
-
}
|
|
373
|
-
);
|
|
374
|
-
}
|
|
375
351
|
function useDebounce(value, delay) {
|
|
376
352
|
const [debouncedValue, setDebouncedValue] = useState(value);
|
|
377
353
|
useEffect(() => {
|
|
@@ -413,6 +389,12 @@ function FilterToolbar({
|
|
|
413
389
|
});
|
|
414
390
|
}
|
|
415
391
|
}, [debouncedSearch, searchFilter?.key, onChange, values]);
|
|
392
|
+
const searchValue = values[searchFilter?.key ?? "search"] ?? "";
|
|
393
|
+
useEffect(() => {
|
|
394
|
+
if (searchValue === prevDebouncedRef.current) return;
|
|
395
|
+
prevDebouncedRef.current = searchValue;
|
|
396
|
+
setLocalSearch(searchValue);
|
|
397
|
+
}, [searchValue]);
|
|
416
398
|
const activeCount = useMemo(
|
|
417
399
|
() => filters.filter((f) => f.type !== "search" && isFilterActive(f, values[f.key])).length,
|
|
418
400
|
[filters, values]
|
|
@@ -476,16 +458,23 @@ function FilterToolbar({
|
|
|
476
458
|
size: "small",
|
|
477
459
|
value: values[key] ?? "",
|
|
478
460
|
onChange: (e) => handleChange(key, e.target.value),
|
|
479
|
-
slotProps: { select: { displayEmpty: true } },
|
|
461
|
+
slotProps: { select: { displayEmpty: true, "aria-label": label } },
|
|
480
462
|
sx: {
|
|
481
463
|
minWidth: width ?? 150,
|
|
482
464
|
"& .MuiOutlinedInput-root": { borderRadius: 1 },
|
|
483
465
|
"& .MuiOutlinedInput-notchedOutline legend": { width: 0 }
|
|
484
466
|
},
|
|
485
467
|
children: [
|
|
486
|
-
/* @__PURE__ */ jsx(MenuItem, { value: "", children: /* @__PURE__ */ jsx(
|
|
487
|
-
|
|
488
|
-
|
|
468
|
+
/* @__PURE__ */ jsx(MenuItem, { value: "", children: /* @__PURE__ */ jsx(
|
|
469
|
+
Typography5,
|
|
470
|
+
{
|
|
471
|
+
variant: "body2",
|
|
472
|
+
sx: {
|
|
473
|
+
color: "text.secondary"
|
|
474
|
+
},
|
|
475
|
+
children: label
|
|
476
|
+
}
|
|
477
|
+
) }),
|
|
489
478
|
options?.map((opt) => /* @__PURE__ */ jsx(MenuItem, { value: opt.value, children: opt.label }, opt.value))
|
|
490
479
|
]
|
|
491
480
|
},
|
|
@@ -504,12 +493,23 @@ function FilterToolbar({
|
|
|
504
493
|
select: {
|
|
505
494
|
multiple: true,
|
|
506
495
|
displayEmpty: true,
|
|
496
|
+
// Same reason as the single select above: the label lives in
|
|
497
|
+
// `renderValue` as placeholder text, leaving the control
|
|
498
|
+
// without an accessible name.
|
|
499
|
+
"aria-label": label,
|
|
507
500
|
renderValue: (selected) => {
|
|
508
501
|
const sel = selected;
|
|
509
502
|
if (sel.length === 0) {
|
|
510
|
-
return /* @__PURE__ */ jsx(
|
|
511
|
-
|
|
512
|
-
|
|
503
|
+
return /* @__PURE__ */ jsx(
|
|
504
|
+
Typography5,
|
|
505
|
+
{
|
|
506
|
+
variant: "body2",
|
|
507
|
+
sx: {
|
|
508
|
+
color: "text.secondary"
|
|
509
|
+
},
|
|
510
|
+
children: label
|
|
511
|
+
}
|
|
512
|
+
);
|
|
513
513
|
}
|
|
514
514
|
return /* @__PURE__ */ jsx(Stack, { direction: "row", spacing: 0.5, sx: { overflow: "hidden" }, children: sel.map((val) => {
|
|
515
515
|
const opt = options?.find((o) => o.value === val);
|
|
@@ -574,43 +574,52 @@ function FilterToolbar({
|
|
|
574
574
|
key
|
|
575
575
|
);
|
|
576
576
|
case "number-range":
|
|
577
|
-
return /* @__PURE__ */ jsxs(
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
{
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
577
|
+
return /* @__PURE__ */ jsxs(
|
|
578
|
+
Stack,
|
|
579
|
+
{
|
|
580
|
+
direction: "row",
|
|
581
|
+
spacing: 1,
|
|
582
|
+
sx: {
|
|
583
|
+
alignItems: "center"
|
|
584
|
+
},
|
|
585
|
+
children: [
|
|
586
|
+
/* @__PURE__ */ jsx(
|
|
587
|
+
TextField2,
|
|
588
|
+
{
|
|
589
|
+
type: "number",
|
|
590
|
+
size: "small",
|
|
591
|
+
label: `${label} min`,
|
|
592
|
+
value: values[`${key}Min`] ?? "",
|
|
593
|
+
onChange: (e) => handleChange(`${key}Min`, e.target.value),
|
|
594
|
+
sx: { minWidth: width ?? 100 }
|
|
595
|
+
}
|
|
596
|
+
),
|
|
597
|
+
/* @__PURE__ */ jsx(
|
|
598
|
+
Typography5,
|
|
599
|
+
{
|
|
600
|
+
variant: "body2",
|
|
601
|
+
sx: {
|
|
602
|
+
color: "text.disabled",
|
|
603
|
+
px: 0.5
|
|
604
|
+
},
|
|
605
|
+
children: "\u2014"
|
|
606
|
+
}
|
|
607
|
+
),
|
|
608
|
+
/* @__PURE__ */ jsx(
|
|
609
|
+
TextField2,
|
|
610
|
+
{
|
|
611
|
+
type: "number",
|
|
612
|
+
size: "small",
|
|
613
|
+
label: `${label} max`,
|
|
614
|
+
value: values[`${key}Max`] ?? "",
|
|
615
|
+
onChange: (e) => handleChange(`${key}Max`, e.target.value),
|
|
616
|
+
sx: { minWidth: width ?? 100 }
|
|
617
|
+
}
|
|
618
|
+
)
|
|
619
|
+
]
|
|
620
|
+
},
|
|
621
|
+
key
|
|
622
|
+
);
|
|
614
623
|
default:
|
|
615
624
|
return null;
|
|
616
625
|
}
|
|
@@ -650,7 +659,7 @@ function FilterToolbar({
|
|
|
650
659
|
ml: "auto"
|
|
651
660
|
},
|
|
652
661
|
children: [
|
|
653
|
-
activeCount > 0 && /* @__PURE__ */ jsx(Badge, { badgeContent: activeCount, color: "primary", sx: { "& .MuiBadge-badge": { fontSize: "0.65rem" } }, children: /* @__PURE__ */ jsx(
|
|
662
|
+
activeCount > 0 && /* @__PURE__ */ jsx(Badge, { badgeContent: activeCount, color: "primary", sx: { "& .MuiBadge-badge": { fontSize: "0.65rem" } }, children: /* @__PURE__ */ jsx(Box19, { sx: { color: "text.secondary", display: "flex", alignItems: "center" }, children: /* @__PURE__ */ jsx(FilterIcon, {}) }) }),
|
|
654
663
|
hasAnyActive && /* @__PURE__ */ jsx(
|
|
655
664
|
Button,
|
|
656
665
|
{
|
|
@@ -708,7 +717,11 @@ var StyledTableRow = styled(TableRow)(({ theme }) => ({
|
|
|
708
717
|
transition: theme.transitions.create("background-color", {
|
|
709
718
|
duration: theme.transitions.duration.shortest
|
|
710
719
|
}),
|
|
711
|
-
|
|
720
|
+
// `:nth-child(even)` for zebra-striping — table rows are homogeneous
|
|
721
|
+
// siblings, so child-position is equivalent to of-type but doesn't
|
|
722
|
+
// assume the rendered tag never changes (e.g. a row replaced by a
|
|
723
|
+
// skeleton placeholder still alternates correctly).
|
|
724
|
+
"&:nth-child(even)": {
|
|
712
725
|
backgroundColor: alpha(theme.palette.grey[500], 0.02)
|
|
713
726
|
},
|
|
714
727
|
"&:hover": {
|
|
@@ -719,32 +732,12 @@ var StyledTableRow = styled(TableRow)(({ theme }) => ({
|
|
|
719
732
|
}
|
|
720
733
|
}));
|
|
721
734
|
var EMPTY_SELECTION = /* @__PURE__ */ new Set();
|
|
722
|
-
function EmptyIcon() {
|
|
723
|
-
return /* @__PURE__ */ jsxs(
|
|
724
|
-
"svg",
|
|
725
|
-
{
|
|
726
|
-
width: "48",
|
|
727
|
-
height: "48",
|
|
728
|
-
viewBox: "0 0 24 24",
|
|
729
|
-
fill: "none",
|
|
730
|
-
stroke: "currentColor",
|
|
731
|
-
strokeWidth: "1.5",
|
|
732
|
-
strokeLinecap: "round",
|
|
733
|
-
strokeLinejoin: "round",
|
|
734
|
-
opacity: "0.3",
|
|
735
|
-
children: [
|
|
736
|
-
/* @__PURE__ */ jsx("path", { d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z" }),
|
|
737
|
-
/* @__PURE__ */ jsx("polyline", { points: "14 2 14 8 20 8" }),
|
|
738
|
-
/* @__PURE__ */ jsx("line", { x1: "9", y1: "15", x2: "15", y2: "15" })
|
|
739
|
-
]
|
|
740
|
-
}
|
|
741
|
-
);
|
|
742
|
-
}
|
|
743
735
|
function AdminDataTable({
|
|
744
736
|
columns,
|
|
745
737
|
data,
|
|
746
738
|
total,
|
|
747
739
|
loading = false,
|
|
740
|
+
loadingRows = 5,
|
|
748
741
|
page,
|
|
749
742
|
pageSize,
|
|
750
743
|
onPageChange,
|
|
@@ -753,12 +746,17 @@ function AdminDataTable({
|
|
|
753
746
|
sortOrder = "asc",
|
|
754
747
|
onSort,
|
|
755
748
|
emptyMessage = "No data found",
|
|
749
|
+
loadError = null,
|
|
750
|
+
loadErrorLabels,
|
|
756
751
|
rowKey,
|
|
757
752
|
onRowClick,
|
|
753
|
+
rowSx,
|
|
754
|
+
renderExpanded,
|
|
758
755
|
pageSizeOptions = [10, 25, 50, 100],
|
|
759
756
|
stickyHeader = false,
|
|
760
757
|
dense = false,
|
|
761
758
|
maxHeight,
|
|
759
|
+
paginationLabels,
|
|
762
760
|
sx,
|
|
763
761
|
selectable = false,
|
|
764
762
|
selectedKeys,
|
|
@@ -770,9 +768,14 @@ function AdminDataTable({
|
|
|
770
768
|
if (rowKey) return rowKey(row);
|
|
771
769
|
const record = row;
|
|
772
770
|
if (record["id"] !== void 0) return String(record["id"]);
|
|
771
|
+
if (selectable && process.env["NODE_ENV"] !== "production") {
|
|
772
|
+
console.error(
|
|
773
|
+
"[AdminDataTable] `selectable` is on but rows have no stable key: pass `rowKey`, or give each row an `id`. Index-based keys make the selection positional, so sorting or paging silently re-targets it."
|
|
774
|
+
);
|
|
775
|
+
}
|
|
773
776
|
return String(index);
|
|
774
777
|
},
|
|
775
|
-
[rowKey]
|
|
778
|
+
[rowKey, selectable]
|
|
776
779
|
);
|
|
777
780
|
const selection = selectedKeys ?? EMPTY_SELECTION;
|
|
778
781
|
const pageRowKeys = useMemo(
|
|
@@ -820,11 +823,12 @@ function AdminDataTable({
|
|
|
820
823
|
},
|
|
821
824
|
[onPageSizeChange, onPageChange]
|
|
822
825
|
);
|
|
826
|
+
const skeletonRowCount = Math.max(1, Math.min(pageSize, loadingRows));
|
|
823
827
|
const skeletonRows = useMemo(
|
|
824
|
-
() => Array.from({ length:
|
|
825
|
-
selectable && /* @__PURE__ */ jsx(TableCell, { padding: "checkbox", children: /* @__PURE__ */ jsx(
|
|
828
|
+
() => Array.from({ length: skeletonRowCount }, (_, i) => /* @__PURE__ */ jsxs(TableRow, { children: [
|
|
829
|
+
selectable && /* @__PURE__ */ jsx(TableCell, { padding: "checkbox", children: /* @__PURE__ */ jsx(Skeleton3, { variant: "rectangular", width: 18, height: 18, sx: { borderRadius: 0.5 } }) }),
|
|
826
830
|
columns.map((col) => /* @__PURE__ */ jsx(TableCell, { align: col.align ?? "left", children: /* @__PURE__ */ jsx(
|
|
827
|
-
|
|
831
|
+
Skeleton3,
|
|
828
832
|
{
|
|
829
833
|
variant: "text",
|
|
830
834
|
width: col.align === "right" ? "60%" : "80%",
|
|
@@ -835,7 +839,7 @@ function AdminDataTable({
|
|
|
835
839
|
}
|
|
836
840
|
) }, col.key))
|
|
837
841
|
] }, `skeleton-${i}`)),
|
|
838
|
-
[
|
|
842
|
+
[skeletonRowCount, columns, selectable]
|
|
839
843
|
);
|
|
840
844
|
const showBulkBar = selectable && selection.size > 0 && !!bulkActions;
|
|
841
845
|
if (!loading && data.length === 0) {
|
|
@@ -845,7 +849,7 @@ function AdminDataTable({
|
|
|
845
849
|
columns.map((col) => /* @__PURE__ */ jsx(TableCell, { align: col.align ?? "left", style: { width: col.width }, children: col.header }, col.key))
|
|
846
850
|
] }) }) }),
|
|
847
851
|
/* @__PURE__ */ jsxs(
|
|
848
|
-
|
|
852
|
+
Box19,
|
|
849
853
|
{
|
|
850
854
|
sx: {
|
|
851
855
|
py: 6,
|
|
@@ -856,15 +860,41 @@ function AdminDataTable({
|
|
|
856
860
|
},
|
|
857
861
|
children: [
|
|
858
862
|
/* @__PURE__ */ jsx(EmptyIcon, {}),
|
|
859
|
-
/* @__PURE__ */ jsx(
|
|
860
|
-
|
|
861
|
-
|
|
863
|
+
/* @__PURE__ */ jsx(
|
|
864
|
+
Typography5,
|
|
865
|
+
{
|
|
866
|
+
variant: "body2",
|
|
867
|
+
sx: { color: loadError ? "text.secondary" : "text.disabled" },
|
|
868
|
+
children: loadError ? loadErrorLabels?.empty ?? "Could not load this data" : emptyMessage
|
|
869
|
+
}
|
|
870
|
+
),
|
|
871
|
+
loadError && /* @__PURE__ */ jsx(Typography5, { variant: "caption", sx: { color: "text.disabled", maxWidth: 420, textAlign: "center" }, children: loadError })
|
|
862
872
|
]
|
|
863
873
|
}
|
|
864
874
|
)
|
|
865
875
|
] });
|
|
866
876
|
}
|
|
867
877
|
return /* @__PURE__ */ jsxs(StyledTableContainer, { sx: { maxHeight, ...sx }, children: [
|
|
878
|
+
loadError && /* @__PURE__ */ jsxs(
|
|
879
|
+
Box19,
|
|
880
|
+
{
|
|
881
|
+
role: "status",
|
|
882
|
+
sx: {
|
|
883
|
+
display: "flex",
|
|
884
|
+
alignItems: "center",
|
|
885
|
+
gap: 1,
|
|
886
|
+
px: 2,
|
|
887
|
+
py: 1,
|
|
888
|
+
borderBottom: 1,
|
|
889
|
+
borderColor: "divider",
|
|
890
|
+
bgcolor: (theme) => alpha(theme.palette.warning.main, 0.12)
|
|
891
|
+
},
|
|
892
|
+
children: [
|
|
893
|
+
/* @__PURE__ */ jsx(Typography5, { variant: "body2", sx: { color: "warning.dark", fontWeight: 600 }, children: loadErrorLabels?.partial ?? "Some of this data could not be loaded" }),
|
|
894
|
+
/* @__PURE__ */ jsx(Typography5, { variant: "caption", sx: { color: "text.secondary" }, children: loadError })
|
|
895
|
+
]
|
|
896
|
+
}
|
|
897
|
+
),
|
|
868
898
|
showBulkBar && /* @__PURE__ */ jsxs(
|
|
869
899
|
Stack,
|
|
870
900
|
{
|
|
@@ -878,13 +908,20 @@ function AdminDataTable({
|
|
|
878
908
|
bgcolor: (theme) => alpha(theme.palette.primary.main, 0.06)
|
|
879
909
|
},
|
|
880
910
|
children: [
|
|
881
|
-
/* @__PURE__ */ jsxs(
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
911
|
+
/* @__PURE__ */ jsxs(
|
|
912
|
+
Typography5,
|
|
913
|
+
{
|
|
914
|
+
variant: "body2",
|
|
915
|
+
sx: {
|
|
916
|
+
fontWeight: 600
|
|
917
|
+
},
|
|
918
|
+
children: [
|
|
919
|
+
selection.size,
|
|
920
|
+
" selected"
|
|
921
|
+
]
|
|
922
|
+
}
|
|
923
|
+
),
|
|
924
|
+
/* @__PURE__ */ jsx(Box19, { sx: { flex: 1 } }),
|
|
888
925
|
bulkActions(selection)
|
|
889
926
|
]
|
|
890
927
|
}
|
|
@@ -926,13 +963,16 @@ function AdminDataTable({
|
|
|
926
963
|
/* @__PURE__ */ jsx(TableBody, { children: loading ? skeletonRows : data.map((row, index) => {
|
|
927
964
|
const key = getRowKey(row, index);
|
|
928
965
|
const isSelected = selectable && selection.has(key);
|
|
929
|
-
|
|
966
|
+
const body = /* @__PURE__ */ jsxs(
|
|
930
967
|
StyledTableRow,
|
|
931
968
|
{
|
|
932
969
|
hover: true,
|
|
933
970
|
selected: isSelected,
|
|
934
971
|
onClick: onRowClick ? () => onRowClick(row) : void 0,
|
|
935
|
-
sx: {
|
|
972
|
+
sx: {
|
|
973
|
+
cursor: onRowClick ? "pointer" : "default",
|
|
974
|
+
...rowSx?.(row, index)
|
|
975
|
+
},
|
|
936
976
|
children: [
|
|
937
977
|
selectable && /* @__PURE__ */ jsx(
|
|
938
978
|
TableCell,
|
|
@@ -957,6 +997,12 @@ function AdminDataTable({
|
|
|
957
997
|
},
|
|
958
998
|
key
|
|
959
999
|
);
|
|
1000
|
+
const detail = renderExpanded?.(row, index);
|
|
1001
|
+
if (detail == null) return body;
|
|
1002
|
+
return /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
1003
|
+
body,
|
|
1004
|
+
/* @__PURE__ */ jsx(TableRow, { children: /* @__PURE__ */ jsx(TableCell, { colSpan: columns.length + (selectable ? 1 : 0), sx: { py: 0, borderBottom: 0 }, children: detail }) })
|
|
1005
|
+
] }, `${key}-group`);
|
|
960
1006
|
}) })
|
|
961
1007
|
] }) }),
|
|
962
1008
|
/* @__PURE__ */ jsx(
|
|
@@ -969,6 +1015,8 @@ function AdminDataTable({
|
|
|
969
1015
|
rowsPerPageOptions: pageSizeOptions,
|
|
970
1016
|
onPageChange: handlePageChange,
|
|
971
1017
|
onRowsPerPageChange: handlePageSizeChange,
|
|
1018
|
+
...paginationLabels?.rowsPerPage != null && { labelRowsPerPage: paginationLabels.rowsPerPage },
|
|
1019
|
+
...paginationLabels?.displayedRows != null && { labelDisplayedRows: paginationLabels.displayedRows },
|
|
972
1020
|
sx: {
|
|
973
1021
|
borderTop: (theme) => `1px solid ${theme.palette.divider}`,
|
|
974
1022
|
"& .MuiTablePagination-displayedRows": {
|
|
@@ -1011,41 +1059,166 @@ var DEFAULT_COLOR_MAP = {
|
|
|
1011
1059
|
new: "info",
|
|
1012
1060
|
open: "info"
|
|
1013
1061
|
};
|
|
1014
|
-
function StatusChip({ status, colorMap, size = "small", sx }) {
|
|
1062
|
+
function StatusChip({ status, label, colorMap, size = "small", sx, ref, ...other }) {
|
|
1015
1063
|
const normalizedStatus = status.toLowerCase();
|
|
1016
1064
|
const mergedMap = colorMap ? { ...DEFAULT_COLOR_MAP, ...colorMap } : DEFAULT_COLOR_MAP;
|
|
1017
|
-
const
|
|
1018
|
-
const
|
|
1065
|
+
const mapped = Object.hasOwn(mergedMap, normalizedStatus) ? mergedMap[normalizedStatus] : void 0;
|
|
1066
|
+
const color = mapped ?? "default";
|
|
1067
|
+
const displayLabel = label ?? status.charAt(0).toUpperCase() + status.slice(1).toLowerCase();
|
|
1019
1068
|
return /* @__PURE__ */ jsx(
|
|
1020
1069
|
Chip,
|
|
1021
1070
|
{
|
|
1071
|
+
ref,
|
|
1072
|
+
...other,
|
|
1022
1073
|
label: displayLabel,
|
|
1023
1074
|
size,
|
|
1024
|
-
sx:
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
color
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
color
|
|
1037
|
-
|
|
1038
|
-
|
|
1075
|
+
sx: [
|
|
1076
|
+
{
|
|
1077
|
+
height: size === "small" ? 22 : 28,
|
|
1078
|
+
fontSize: size === "small" ? "0.7rem" : "0.775rem",
|
|
1079
|
+
fontWeight: 600,
|
|
1080
|
+
borderRadius: 0.75,
|
|
1081
|
+
letterSpacing: "0.01em",
|
|
1082
|
+
...color !== "default" && {
|
|
1083
|
+
color: (theme) => theme.palette[color].main,
|
|
1084
|
+
bgcolor: (theme) => alpha(theme.palette[color].main, 0.1),
|
|
1085
|
+
border: (theme) => `1px solid ${alpha(theme.palette[color].main, 0.2)}`
|
|
1086
|
+
},
|
|
1087
|
+
...color === "default" && {
|
|
1088
|
+
color: "text.secondary",
|
|
1089
|
+
bgcolor: (theme) => alpha(theme.palette.grey[500], 0.08),
|
|
1090
|
+
border: (theme) => `1px solid ${alpha(theme.palette.grey[500], 0.16)}`
|
|
1091
|
+
}
|
|
1039
1092
|
},
|
|
1040
|
-
...sx
|
|
1041
|
-
|
|
1093
|
+
...Array.isArray(sx) ? sx : sx ? [sx] : []
|
|
1094
|
+
]
|
|
1042
1095
|
}
|
|
1043
1096
|
);
|
|
1044
1097
|
}
|
|
1098
|
+
|
|
1099
|
+
// src/utils/format-crypto.ts
|
|
1100
|
+
var COIN_DISPLAY_DECIMALS = Object.freeze(
|
|
1101
|
+
// Prototype-free: a plain literal answers `COIN_DISPLAY_DECIMALS['constructor']`
|
|
1102
|
+
// with a function, which `?? FALLBACK_DECIMALS` accepts as a precision. That
|
|
1103
|
+
// produced `toFixed(NaN)` — silently formatting with zero decimals instead
|
|
1104
|
+
// of eight, for any coin code that collides with an Object.prototype key.
|
|
1105
|
+
Object.assign(/* @__PURE__ */ Object.create(null), { btc: 8, xmr: 8 })
|
|
1106
|
+
);
|
|
1107
|
+
var COIN_WIRE_DECIMALS = Object.freeze(
|
|
1108
|
+
Object.assign(/* @__PURE__ */ Object.create(null), { btc: 8, xmr: 12 })
|
|
1109
|
+
);
|
|
1110
|
+
var FALLBACK_DECIMALS = 8;
|
|
1111
|
+
var FALLBACK_WIRE_DECIMALS = 12;
|
|
1112
|
+
var DECIMAL = /^([+-]?)(\d*)(?:\.(\d*))?$/;
|
|
1113
|
+
function getCoinDecimals(coin) {
|
|
1114
|
+
const decimals = COIN_DISPLAY_DECIMALS[coin.toLowerCase()];
|
|
1115
|
+
return typeof decimals === "number" ? decimals : FALLBACK_DECIMALS;
|
|
1116
|
+
}
|
|
1117
|
+
function getCoinWireDecimals(coin) {
|
|
1118
|
+
const decimals = COIN_WIRE_DECIMALS[coin.toLowerCase()];
|
|
1119
|
+
return typeof decimals === "number" ? decimals : FALLBACK_WIRE_DECIMALS;
|
|
1120
|
+
}
|
|
1121
|
+
function formatDecimalString(raw, decimals, rounding = "down") {
|
|
1122
|
+
const scaled = toScaledInteger(raw, decimals, rounding);
|
|
1123
|
+
return scaled === null ? null : fromScaledInteger(scaled, decimals);
|
|
1124
|
+
}
|
|
1125
|
+
function toScaledInteger(raw, decimals, rounding = "half-up") {
|
|
1126
|
+
const match = DECIMAL.exec(raw.trim());
|
|
1127
|
+
if (!match) return null;
|
|
1128
|
+
const [, sign = "", intPart = "", fracPart = ""] = match;
|
|
1129
|
+
if (intPart === "" && fracPart === "") return null;
|
|
1130
|
+
const digits = `${intPart || "0"}${fracPart.slice(0, decimals).padEnd(decimals, "0")}`;
|
|
1131
|
+
const roundUp = rounding === "half-up" && (fracPart[decimals] ?? "0") >= "5";
|
|
1132
|
+
const magnitude = BigInt(digits) + (roundUp ? 1n : 0n);
|
|
1133
|
+
return sign === "-" ? -magnitude : magnitude;
|
|
1134
|
+
}
|
|
1135
|
+
function fromScaledInteger(scaled, decimals) {
|
|
1136
|
+
const negative = scaled < 0n;
|
|
1137
|
+
const asString = (negative ? -scaled : scaled).toString().padStart(decimals + 1, "0");
|
|
1138
|
+
const whole = asString.slice(0, asString.length - decimals) || "0";
|
|
1139
|
+
const fraction = decimals > 0 ? asString.slice(asString.length - decimals) : "";
|
|
1140
|
+
const magnitude = decimals > 0 ? `${whole}.${fraction}` : whole;
|
|
1141
|
+
return `${negative && scaled !== 0n ? "-" : ""}${magnitude}`;
|
|
1142
|
+
}
|
|
1143
|
+
function isNonZeroDecimal(raw) {
|
|
1144
|
+
const match = DECIMAL.exec(raw.trim());
|
|
1145
|
+
if (!match) return false;
|
|
1146
|
+
const [, , intPart = "", fracPart = ""] = match;
|
|
1147
|
+
if (intPart === "" && fracPart === "") return false;
|
|
1148
|
+
return /[1-9]/.test(intPart) || /[1-9]/.test(fracPart);
|
|
1149
|
+
}
|
|
1150
|
+
function sumDecimalStrings(values, decimals, options) {
|
|
1151
|
+
const rounding = options?.rounding ?? "half-up";
|
|
1152
|
+
let total = 0n;
|
|
1153
|
+
for (const value of values) {
|
|
1154
|
+
if (value === null || value === void 0 || value === "") continue;
|
|
1155
|
+
const scaled = toScaledInteger(
|
|
1156
|
+
typeof value === "number" ? String(value) : value,
|
|
1157
|
+
decimals,
|
|
1158
|
+
rounding
|
|
1159
|
+
);
|
|
1160
|
+
if (scaled !== null) total += scaled;
|
|
1161
|
+
}
|
|
1162
|
+
return fromScaledInteger(total, decimals);
|
|
1163
|
+
}
|
|
1164
|
+
function subtractDecimalStrings(minuend, subtrahends, decimals, options) {
|
|
1165
|
+
if (minuend === null || minuend === void 0 || minuend === "") return null;
|
|
1166
|
+
const rounding = options?.rounding ?? "half-up";
|
|
1167
|
+
let total = toScaledInteger(
|
|
1168
|
+
typeof minuend === "number" ? String(minuend) : minuend,
|
|
1169
|
+
decimals,
|
|
1170
|
+
rounding
|
|
1171
|
+
);
|
|
1172
|
+
if (total === null) return null;
|
|
1173
|
+
for (const value of subtrahends) {
|
|
1174
|
+
if (value === null || value === void 0 || value === "") continue;
|
|
1175
|
+
const scaled = toScaledInteger(
|
|
1176
|
+
typeof value === "number" ? String(value) : value,
|
|
1177
|
+
decimals,
|
|
1178
|
+
rounding
|
|
1179
|
+
);
|
|
1180
|
+
if (scaled !== null) total -= scaled;
|
|
1181
|
+
}
|
|
1182
|
+
if (options?.clampAtZero && total < 0n) total = 0n;
|
|
1183
|
+
return fromScaledInteger(total, decimals);
|
|
1184
|
+
}
|
|
1185
|
+
function formatCoinAmount(value, coin, options) {
|
|
1186
|
+
const code = coin.toLowerCase();
|
|
1187
|
+
const symbol = options?.symbol ?? coin.toUpperCase();
|
|
1188
|
+
const withSymbol = options?.withSymbol !== false;
|
|
1189
|
+
const decimals = Math.max(0, options?.precision ?? getCoinDecimals(code));
|
|
1190
|
+
const trim = options?.trim === true;
|
|
1191
|
+
const rounding = options?.rounding ?? "down";
|
|
1192
|
+
const markDust = options?.markDust !== false;
|
|
1193
|
+
const raw = typeof value === "string" ? value.trim() : typeof value === "number" && Number.isFinite(value) ? String(Object.is(value, -0) ? 0 : value) : "";
|
|
1194
|
+
let formatted = raw === "" ? null : formatDecimalString(raw, decimals, rounding);
|
|
1195
|
+
const exact = formatted !== null;
|
|
1196
|
+
if (formatted === null) {
|
|
1197
|
+
let n = typeof value === "number" ? value : Number(raw);
|
|
1198
|
+
if (!Number.isFinite(n)) n = 0;
|
|
1199
|
+
if (Object.is(n, -0)) n = 0;
|
|
1200
|
+
formatted = n.toFixed(decimals);
|
|
1201
|
+
}
|
|
1202
|
+
if (markDust && exact && !/[1-9]/.test(formatted) && isNonZeroDecimal(raw)) {
|
|
1203
|
+
const epsilon = fromScaledInteger(1n, decimals);
|
|
1204
|
+
const below = raw.startsWith("-");
|
|
1205
|
+
return withSymbol ? `${below ? ">" : "<"} ${below ? "-" : ""}${epsilon} ${symbol}` : `${below ? ">" : "<"} ${below ? "-" : ""}${epsilon}`;
|
|
1206
|
+
}
|
|
1207
|
+
if (trim && formatted.includes(".")) {
|
|
1208
|
+
formatted = formatted.replace(/\.?0+$/, "");
|
|
1209
|
+
if (formatted === "" || formatted === "-") formatted = "0";
|
|
1210
|
+
}
|
|
1211
|
+
return withSymbol ? `${formatted} ${symbol}` : formatted;
|
|
1212
|
+
}
|
|
1213
|
+
function formatCoinAmountList(totals, options) {
|
|
1214
|
+
const sep = options?.separator ?? " \xB7 ";
|
|
1215
|
+
return Object.keys(totals).sort().map((coin) => formatCoinAmount(totals[coin], coin, options)).join(sep);
|
|
1216
|
+
}
|
|
1045
1217
|
function formatAmount(amount, decimals) {
|
|
1046
1218
|
const num = parseFloat(amount);
|
|
1047
1219
|
if (Number.isNaN(num)) return amount;
|
|
1048
|
-
const
|
|
1220
|
+
const scaled = decimals !== void 0 ? formatDecimalString(amount, decimals) : null;
|
|
1221
|
+
const fixed = scaled ?? (decimals !== void 0 ? num.toFixed(decimals) : amount);
|
|
1049
1222
|
const [intPart, decPart] = fixed.split(".");
|
|
1050
1223
|
const absInt = intPart.replace("-", "");
|
|
1051
1224
|
const formatted = absInt.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
|
|
@@ -1326,7 +1499,7 @@ function CountrySelect({
|
|
|
1326
1499
|
const isWorldRow = worldwideValue !== void 0 && option.iso2 === worldwideValue;
|
|
1327
1500
|
const src = isWorldRow ? null : getFlagSrc?.(option.iso2.toLowerCase()) ?? null;
|
|
1328
1501
|
return /* @__PURE__ */ jsxs(
|
|
1329
|
-
|
|
1502
|
+
Box19,
|
|
1330
1503
|
{
|
|
1331
1504
|
component: "li",
|
|
1332
1505
|
...rest,
|
|
@@ -1531,7 +1704,7 @@ function AnimateBorder({ sx, children, duration, slotProps, className, ...other
|
|
|
1531
1704
|
}
|
|
1532
1705
|
);
|
|
1533
1706
|
return /* @__PURE__ */ jsxs(
|
|
1534
|
-
|
|
1707
|
+
Box19,
|
|
1535
1708
|
{
|
|
1536
1709
|
dir: "ltr",
|
|
1537
1710
|
ref: rootRef,
|
|
@@ -1589,7 +1762,7 @@ function MovingBorder({ sx, size, isHidden, rx = "30%", ry = "30%", duration = 8
|
|
|
1589
1762
|
const x = useTransform(progress, (val) => calculateTransform(val).x);
|
|
1590
1763
|
const y = useTransform(progress, (val) => calculateTransform(val).y);
|
|
1591
1764
|
const transform = useMotionTemplate`translateX(${x}px) translateY(${y}px) translateX(-50%) translateY(-50%)`;
|
|
1592
|
-
return /* @__PURE__ */ jsxs(
|
|
1765
|
+
return /* @__PURE__ */ jsxs(Box19, { component: "span", sx: [{ textAlign: "initial" }, ...Array.isArray(sx) ? sx : [sx]], ...other, children: [
|
|
1593
1766
|
/* @__PURE__ */ jsx(
|
|
1594
1767
|
"svg",
|
|
1595
1768
|
{
|
|
@@ -1603,7 +1776,7 @@ function MovingBorder({ sx, size, isHidden, rx = "30%", ry = "30%", duration = 8
|
|
|
1603
1776
|
}
|
|
1604
1777
|
),
|
|
1605
1778
|
/* @__PURE__ */ jsx(
|
|
1606
|
-
|
|
1779
|
+
Box19,
|
|
1607
1780
|
{
|
|
1608
1781
|
component: m.span,
|
|
1609
1782
|
style: { transform },
|
|
@@ -1772,7 +1945,7 @@ function AvatarWrapper({
|
|
|
1772
1945
|
badge && /* @__PURE__ */ jsx("span", { style: badgeStyle, children: badge })
|
|
1773
1946
|
] });
|
|
1774
1947
|
}
|
|
1775
|
-
|
|
1948
|
+
function Avatar({ size = "md", shape = "circular", name, src, alt, online, offline, badge, badgeColor, children, sx, ref, ...other }) {
|
|
1776
1949
|
const initials = useMemo(() => {
|
|
1777
1950
|
if (children) return null;
|
|
1778
1951
|
return name ? getInitials(name) : null;
|
|
@@ -1789,7 +1962,7 @@ var Avatar = forwardRef(function Avatar2({ size = "md", shape = "circular", name
|
|
|
1789
1962
|
};
|
|
1790
1963
|
const avatarContent = /* @__PURE__ */ jsx(StyledAvatar, { ref, src, alt: alt || name, ownerState, sx, ...other, children: children || initials });
|
|
1791
1964
|
return /* @__PURE__ */ jsx(AvatarWrapper, { online, offline, badge, badgeColor, size, children: avatarContent });
|
|
1792
|
-
}
|
|
1965
|
+
}
|
|
1793
1966
|
function CustomAvatarGroup({ avatars, size = "sm", max = 4, sx, ...other }) {
|
|
1794
1967
|
return /* @__PURE__ */ jsx(AvatarGroup, { max, sx, ...other, children: avatars.map((avatar, index) => /* @__PURE__ */ jsx(Avatar, { name: avatar.name, src: avatar.src, alt: avatar.alt || avatar.name, size }, index)) });
|
|
1795
1968
|
}
|
|
@@ -1859,7 +2032,7 @@ var StyledBadge = styled(Badge, {
|
|
|
1859
2032
|
}
|
|
1860
2033
|
};
|
|
1861
2034
|
});
|
|
1862
|
-
|
|
2035
|
+
function Badge2({ variant = "standard", color = "error", size = "medium", badgeContent, children, sx, ref, ...other }) {
|
|
1863
2036
|
const ownerState = { variant, color, size };
|
|
1864
2037
|
const isStatusVariant = variant === "online" || variant === "offline" || variant === "busy";
|
|
1865
2038
|
const isDotVariant = variant === "dot" || isStatusVariant;
|
|
@@ -1875,14 +2048,16 @@ var Badge2 = forwardRef(function Badge3({ variant = "standard", color = "error",
|
|
|
1875
2048
|
children
|
|
1876
2049
|
}
|
|
1877
2050
|
);
|
|
1878
|
-
}
|
|
2051
|
+
}
|
|
1879
2052
|
function CountBadge({
|
|
1880
2053
|
count,
|
|
1881
2054
|
max = 99,
|
|
1882
2055
|
showZero = false,
|
|
1883
2056
|
color = "error",
|
|
1884
2057
|
size = "medium",
|
|
1885
|
-
sx
|
|
2058
|
+
sx,
|
|
2059
|
+
ref,
|
|
2060
|
+
...other
|
|
1886
2061
|
}) {
|
|
1887
2062
|
if (!showZero && count === 0) {
|
|
1888
2063
|
return null;
|
|
@@ -1905,28 +2080,32 @@ function CountBadge({
|
|
|
1905
2080
|
};
|
|
1906
2081
|
const bgColor = colorMap[color];
|
|
1907
2082
|
return /* @__PURE__ */ jsx(
|
|
1908
|
-
|
|
2083
|
+
Box19,
|
|
1909
2084
|
{
|
|
1910
2085
|
component: "span",
|
|
1911
|
-
|
|
1912
|
-
|
|
1913
|
-
|
|
1914
|
-
|
|
1915
|
-
|
|
1916
|
-
|
|
1917
|
-
|
|
1918
|
-
|
|
1919
|
-
|
|
1920
|
-
|
|
1921
|
-
|
|
1922
|
-
|
|
1923
|
-
|
|
1924
|
-
|
|
2086
|
+
ref,
|
|
2087
|
+
...other,
|
|
2088
|
+
sx: [
|
|
2089
|
+
{
|
|
2090
|
+
display: "inline-flex",
|
|
2091
|
+
alignItems: "center",
|
|
2092
|
+
justifyContent: "center",
|
|
2093
|
+
minWidth,
|
|
2094
|
+
height,
|
|
2095
|
+
padding: "0 4px",
|
|
2096
|
+
borderRadius: height / 2,
|
|
2097
|
+
fontSize,
|
|
2098
|
+
fontWeight: 600,
|
|
2099
|
+
backgroundColor: bgColor,
|
|
2100
|
+
color: "white"
|
|
2101
|
+
},
|
|
2102
|
+
...Array.isArray(sx) ? sx : sx ? [sx] : []
|
|
2103
|
+
],
|
|
1925
2104
|
children: displayCount
|
|
1926
2105
|
}
|
|
1927
2106
|
);
|
|
1928
2107
|
}
|
|
1929
|
-
function StatusDot({ status, size = 8, pulse = true, sx }) {
|
|
2108
|
+
function StatusDot({ status, size = 8, pulse = true, sx, ref, ...other }) {
|
|
1930
2109
|
const statusColors = {
|
|
1931
2110
|
online: "#22c55e",
|
|
1932
2111
|
offline: "#9ca3af",
|
|
@@ -1935,24 +2114,28 @@ function StatusDot({ status, size = 8, pulse = true, sx }) {
|
|
|
1935
2114
|
};
|
|
1936
2115
|
const color = statusColors[status];
|
|
1937
2116
|
return /* @__PURE__ */ jsx(
|
|
1938
|
-
|
|
2117
|
+
Box19,
|
|
1939
2118
|
{
|
|
1940
2119
|
component: "span",
|
|
1941
|
-
|
|
1942
|
-
|
|
1943
|
-
|
|
1944
|
-
|
|
1945
|
-
|
|
1946
|
-
|
|
1947
|
-
|
|
1948
|
-
|
|
2120
|
+
ref,
|
|
2121
|
+
...other,
|
|
2122
|
+
sx: [
|
|
2123
|
+
{
|
|
2124
|
+
display: "inline-block",
|
|
2125
|
+
width: size,
|
|
2126
|
+
height: size,
|
|
2127
|
+
borderRadius: "50%",
|
|
2128
|
+
backgroundColor: color,
|
|
2129
|
+
...pulse && status === "online" && {
|
|
2130
|
+
animation: "pulse 2s infinite"
|
|
2131
|
+
}
|
|
1949
2132
|
},
|
|
1950
|
-
...sx
|
|
1951
|
-
|
|
2133
|
+
...Array.isArray(sx) ? sx : sx ? [sx] : []
|
|
2134
|
+
]
|
|
1952
2135
|
}
|
|
1953
2136
|
);
|
|
1954
2137
|
}
|
|
1955
|
-
var StyledCard = styled(
|
|
2138
|
+
var StyledCard = styled(Card2, {
|
|
1956
2139
|
shouldForwardProp: (prop) => prop !== "ownerState"
|
|
1957
2140
|
})(({ theme, ownerState }) => {
|
|
1958
2141
|
const { variant } = ownerState;
|
|
@@ -1971,7 +2154,7 @@ var StyledCard = styled(MuiCard, {
|
|
|
1971
2154
|
}
|
|
1972
2155
|
};
|
|
1973
2156
|
});
|
|
1974
|
-
|
|
2157
|
+
function Card({
|
|
1975
2158
|
variant = "elevation",
|
|
1976
2159
|
title,
|
|
1977
2160
|
subheader,
|
|
@@ -1983,8 +2166,9 @@ var Card = forwardRef(function Card2({
|
|
|
1983
2166
|
disablePadding,
|
|
1984
2167
|
children,
|
|
1985
2168
|
sx,
|
|
2169
|
+
ref,
|
|
1986
2170
|
...other
|
|
1987
|
-
}
|
|
2171
|
+
}) {
|
|
1988
2172
|
const ownerState = { variant };
|
|
1989
2173
|
const hasHeader = title || subheader || headerAction;
|
|
1990
2174
|
return /* @__PURE__ */ jsxs(
|
|
@@ -2011,9 +2195,9 @@ var Card = forwardRef(function Card2({
|
|
|
2011
2195
|
]
|
|
2012
2196
|
}
|
|
2013
2197
|
);
|
|
2014
|
-
}
|
|
2198
|
+
}
|
|
2015
2199
|
function CardSection({ title, description, children, sx }) {
|
|
2016
|
-
return /* @__PURE__ */ jsxs(
|
|
2200
|
+
return /* @__PURE__ */ jsxs(Box19, { sx: { mb: 3, ...sx }, children: [
|
|
2017
2201
|
title && /* @__PURE__ */ jsx(
|
|
2018
2202
|
Typography5,
|
|
2019
2203
|
{
|
|
@@ -2053,10 +2237,10 @@ function StatCard({
|
|
|
2053
2237
|
}) {
|
|
2054
2238
|
const isPositive = change && change > 0;
|
|
2055
2239
|
const isNegative = change && change < 0;
|
|
2056
|
-
return /* @__PURE__ */ jsx(Card, { variant, contentSx: { p: 2, "&:last-child": { pb: 2 } }, sx, ...other, children: /* @__PURE__ */ jsxs(
|
|
2057
|
-
/* @__PURE__ */ jsx(
|
|
2058
|
-
/* @__PURE__ */ jsx(
|
|
2059
|
-
/* @__PURE__ */ jsx(
|
|
2240
|
+
return /* @__PURE__ */ jsx(Card, { variant, contentSx: { p: 2, "&:last-child": { pb: 2 } }, sx, ...other, children: /* @__PURE__ */ jsxs(Box19, { sx: { display: "flex", justifyContent: "space-between", alignItems: "flex-start" }, children: [
|
|
2241
|
+
/* @__PURE__ */ jsx(Box19, { children: loading ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
2242
|
+
/* @__PURE__ */ jsx(Skeleton3, { width: 80, height: 16 }),
|
|
2243
|
+
/* @__PURE__ */ jsx(Skeleton3, { width: 50, height: 32, sx: { mt: 0.5 } })
|
|
2060
2244
|
] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
2061
2245
|
/* @__PURE__ */ jsx(
|
|
2062
2246
|
Typography5,
|
|
@@ -2104,7 +2288,7 @@ function StatCard({
|
|
|
2104
2288
|
color: "text.secondary"
|
|
2105
2289
|
}, children: subtitle })
|
|
2106
2290
|
] }) }),
|
|
2107
|
-
icon && !loading && /* @__PURE__ */ jsx(
|
|
2291
|
+
icon && !loading && /* @__PURE__ */ jsx(Box19, { sx: { color: `${color}.main` }, children: icon })
|
|
2108
2292
|
] }) });
|
|
2109
2293
|
}
|
|
2110
2294
|
function ConfirmDialog({
|
|
@@ -2123,18 +2307,21 @@ function ConfirmDialog({
|
|
|
2123
2307
|
}) {
|
|
2124
2308
|
const titleId = useId();
|
|
2125
2309
|
const descriptionId = useId();
|
|
2310
|
+
const [confirming, setConfirming] = useState(false);
|
|
2311
|
+
const busy = loading || confirming;
|
|
2126
2312
|
const handleConfirm = () => {
|
|
2313
|
+
if (busy) return;
|
|
2127
2314
|
const result = onConfirm();
|
|
2128
|
-
if (result instanceof Promise)
|
|
2129
|
-
|
|
2130
|
-
|
|
2131
|
-
}
|
|
2315
|
+
if (!(result instanceof Promise)) return;
|
|
2316
|
+
setConfirming(true);
|
|
2317
|
+
result.catch(() => {
|
|
2318
|
+
}).finally(() => setConfirming(false));
|
|
2132
2319
|
};
|
|
2133
2320
|
return /* @__PURE__ */ jsxs(
|
|
2134
2321
|
Dialog,
|
|
2135
2322
|
{
|
|
2136
2323
|
open,
|
|
2137
|
-
onClose:
|
|
2324
|
+
onClose: busy ? void 0 : onClose,
|
|
2138
2325
|
maxWidth,
|
|
2139
2326
|
fullWidth: true,
|
|
2140
2327
|
"aria-labelledby": titleId,
|
|
@@ -2144,8 +2331,8 @@ function ConfirmDialog({
|
|
|
2144
2331
|
/* @__PURE__ */ jsx(DialogTitle, { id: titleId, children: title }),
|
|
2145
2332
|
content && /* @__PURE__ */ jsx(DialogContent, { children: typeof content === "string" ? /* @__PURE__ */ jsx(DialogContentText, { id: descriptionId, children: content }) : /* @__PURE__ */ jsx("div", { id: descriptionId, children: content }) }),
|
|
2146
2333
|
/* @__PURE__ */ jsxs(DialogActions, { sx: { px: 3, pb: 2 }, children: [
|
|
2147
|
-
/* @__PURE__ */ jsx(Button, { onClick: onClose, color: "inherit", disabled:
|
|
2148
|
-
/* @__PURE__ */ jsx(Button, { onClick: handleConfirm, color: confirmColor, variant: "contained", loading, disabled, children: confirmLabel })
|
|
2334
|
+
/* @__PURE__ */ jsx(Button, { onClick: onClose, color: "inherit", disabled: busy, variant: "outlined", children: cancelLabel }),
|
|
2335
|
+
/* @__PURE__ */ jsx(Button, { onClick: handleConfirm, color: confirmColor, variant: "contained", loading: busy, disabled, children: confirmLabel })
|
|
2149
2336
|
] })
|
|
2150
2337
|
]
|
|
2151
2338
|
}
|
|
@@ -2163,184 +2350,85 @@ function DeleteDialog({ itemName, content, ...props }) {
|
|
|
2163
2350
|
}
|
|
2164
2351
|
);
|
|
2165
2352
|
}
|
|
2166
|
-
|
|
2167
|
-
|
|
2168
|
-
|
|
2353
|
+
|
|
2354
|
+
// src/components/sponsored-slot/types.ts
|
|
2355
|
+
var DEFAULT_SPONSORED_SLOT_LABELS = {
|
|
2356
|
+
sponsored: "Sponsored"
|
|
2357
|
+
};
|
|
2358
|
+
var TILE_IMAGE = { width: "100%", aspectRatio: "4 / 3" };
|
|
2359
|
+
var BANNER_IMAGE = { width: 160, minHeight: 120, flexShrink: 0 };
|
|
2360
|
+
function SponsoredSlot({
|
|
2361
|
+
content,
|
|
2362
|
+
variant = "tile",
|
|
2363
|
+
loading = false,
|
|
2364
|
+
labels: labelsProp,
|
|
2365
|
+
icon,
|
|
2366
|
+
link,
|
|
2367
|
+
onOpen,
|
|
2368
|
+
id
|
|
2369
|
+
}) {
|
|
2370
|
+
const labels = { ...DEFAULT_SPONSORED_SLOT_LABELS, ...labelsProp };
|
|
2371
|
+
const banner = variant === "banner";
|
|
2372
|
+
const imageBox = banner ? BANNER_IMAGE : TILE_IMAGE;
|
|
2373
|
+
if (!content) {
|
|
2374
|
+
if (!loading) return null;
|
|
2375
|
+
return /* @__PURE__ */ jsx(Card2, { variant: "outlined", sx: { height: "100%" }, "data-sponsored-pending": "", children: /* @__PURE__ */ jsxs(Box19, { sx: { display: "flex", flexDirection: banner ? "row" : "column", height: "100%" }, children: [
|
|
2376
|
+
/* @__PURE__ */ jsx(Skeleton3, { variant: "rectangular", sx: { ...imageBox, height: banner ? void 0 : "auto" } }),
|
|
2377
|
+
/* @__PURE__ */ jsxs(Box19, { sx: { p: 1.5, flex: 1 }, children: [
|
|
2378
|
+
/* @__PURE__ */ jsx(Skeleton3, { width: "40%" }),
|
|
2379
|
+
/* @__PURE__ */ jsx(Skeleton3, { width: "80%" })
|
|
2380
|
+
] })
|
|
2381
|
+
] }) });
|
|
2382
|
+
}
|
|
2383
|
+
const mark = /* @__PURE__ */ jsxs(
|
|
2384
|
+
Box19,
|
|
2169
2385
|
{
|
|
2170
|
-
|
|
2171
|
-
|
|
2172
|
-
|
|
2173
|
-
|
|
2174
|
-
|
|
2175
|
-
|
|
2176
|
-
justifyContent: "center",
|
|
2177
|
-
bgcolor: (theme) => {
|
|
2178
|
-
const parts = color.split(".");
|
|
2179
|
-
let resolved = theme.palette;
|
|
2180
|
-
for (const part of parts) {
|
|
2181
|
-
resolved = resolved?.[part];
|
|
2182
|
-
}
|
|
2183
|
-
return typeof resolved === "string" ? alpha(resolved, 0.08) : alpha(theme.palette.primary.main, 0.08);
|
|
2184
|
-
}
|
|
2185
|
-
},
|
|
2186
|
-
children: icon
|
|
2386
|
+
component: "span",
|
|
2387
|
+
sx: { display: "inline-flex", alignItems: "center", gap: 0.5, color: "text.secondary", typography: "caption" },
|
|
2388
|
+
children: [
|
|
2389
|
+
icon,
|
|
2390
|
+
content.byline || labels.sponsored
|
|
2391
|
+
]
|
|
2187
2392
|
}
|
|
2188
2393
|
);
|
|
2394
|
+
const body = /* @__PURE__ */ jsxs(Box19, { sx: { display: "flex", flexDirection: banner ? "row" : "column", height: "100%" }, children: [
|
|
2395
|
+
content.image && /* @__PURE__ */ jsx(
|
|
2396
|
+
Box19,
|
|
2397
|
+
{
|
|
2398
|
+
component: "img",
|
|
2399
|
+
src: content.image,
|
|
2400
|
+
alt: "",
|
|
2401
|
+
loading: "lazy",
|
|
2402
|
+
decoding: "async",
|
|
2403
|
+
sx: {
|
|
2404
|
+
display: "block",
|
|
2405
|
+
objectFit: content.imageFit ?? "cover",
|
|
2406
|
+
...content.imageFit === "contain" && { p: 2, boxSizing: "border-box" },
|
|
2407
|
+
bgcolor: "action.hover",
|
|
2408
|
+
...imageBox
|
|
2409
|
+
}
|
|
2410
|
+
}
|
|
2411
|
+
),
|
|
2412
|
+
/* @__PURE__ */ jsxs(Box19, { sx: { p: 1.5, display: "flex", flexDirection: "column", gap: 0.5, minWidth: 0 }, children: [
|
|
2413
|
+
content.because ? /* @__PURE__ */ jsx(Tooltip2, { title: content.because, children: mark }) : mark,
|
|
2414
|
+
/* @__PURE__ */ jsx(Typography5, { variant: "subtitle2", sx: { fontWeight: 600 }, noWrap: !banner, children: content.title }),
|
|
2415
|
+
content.body && /* @__PURE__ */ jsx(Typography5, { variant: "body2", sx: { color: "text.secondary" }, children: content.body }),
|
|
2416
|
+
link && content.cta && /* @__PURE__ */ jsx(Typography5, { variant: "caption", sx: { color: "primary.main", fontWeight: 600, mt: "auto" }, children: content.cta })
|
|
2417
|
+
] })
|
|
2418
|
+
] });
|
|
2419
|
+
return /* @__PURE__ */ jsx(Card2, { variant: "outlined", sx: { height: "100%" }, ...id !== void 0 && { "data-sponsored": id }, children: link ? /* @__PURE__ */ jsx(CardActionArea, { component: link.component, ...link.props, onClick: onOpen, sx: { height: "100%" }, children: body }) : body });
|
|
2189
2420
|
}
|
|
2190
|
-
|
|
2191
|
-
|
|
2192
|
-
|
|
2193
|
-
|
|
2194
|
-
|
|
2195
|
-
|
|
2196
|
-
description,
|
|
2197
|
-
action,
|
|
2198
|
-
actions,
|
|
2199
|
-
maxWidth = 400,
|
|
2200
|
-
filled = false,
|
|
2421
|
+
var PAGE_GAP = 3;
|
|
2422
|
+
var GRID_GAP = 3;
|
|
2423
|
+
function PageContent({
|
|
2424
|
+
children,
|
|
2425
|
+
gap = PAGE_GAP,
|
|
2426
|
+
fill,
|
|
2201
2427
|
sx,
|
|
2202
|
-
|
|
2203
|
-
|
|
2204
|
-
compact = false
|
|
2428
|
+
ref,
|
|
2429
|
+
...rest
|
|
2205
2430
|
}) {
|
|
2206
|
-
const visual = icon ? /* @__PURE__ */ jsx(IconWrapper, { icon, color: iconColor, size: iconSize }) : illustration ? /* @__PURE__ */ jsx(Box20, { sx: illustrationSx, children: illustration }) : null;
|
|
2207
|
-
const allActions = [...actions ?? [], ...action ? [action] : []];
|
|
2208
2431
|
return /* @__PURE__ */ jsx(
|
|
2209
|
-
Stack,
|
|
2210
|
-
{
|
|
2211
|
-
sx: {
|
|
2212
|
-
alignItems: "center",
|
|
2213
|
-
justifyContent: "center",
|
|
2214
|
-
textAlign: "center",
|
|
2215
|
-
py: compact ? 4 : 8,
|
|
2216
|
-
px: 2,
|
|
2217
|
-
// Default non-compact behavior: vertically center inside the
|
|
2218
|
-
// available "main content" area. Two complementary anchors:
|
|
2219
|
-
// * `flex: 1, alignSelf: 'stretch'` — when the parent IS a
|
|
2220
|
-
// flex column with explicit height (DashboardLayout main,
|
|
2221
|
-
// full-height page wrappers), EmptyContent grows to fill
|
|
2222
|
-
// the column and the inner `justifyContent: center` puts
|
|
2223
|
-
// the message in the middle of that column.
|
|
2224
|
-
// * `minHeight: calc(100vh - 240px)` — fallback for the
|
|
2225
|
-
// common case where the page wrapper is just a content-
|
|
2226
|
-
// sized `<Stack>` or `<Box>`. 240px is the typical
|
|
2227
|
-
// vertical chrome (header ~64 + breadcrumbs ~60 + page
|
|
2228
|
-
// padding ~80 + a small margin), so this leaves enough
|
|
2229
|
-
// space below the breadcrumbs for the message to sit at
|
|
2230
|
-
// the optical center of the visible viewport.
|
|
2231
|
-
//
|
|
2232
|
-
// `compact` keeps the inline-sized behavior for callers that
|
|
2233
|
-
// drop EmptyContent inside a card cell or sidebar.
|
|
2234
|
-
// `filled` is the explicit "fill my parent" mode and shares
|
|
2235
|
-
// the same fallback so the visual is consistent.
|
|
2236
|
-
...!compact && {
|
|
2237
|
-
flex: 1,
|
|
2238
|
-
alignSelf: "stretch",
|
|
2239
|
-
minHeight: "calc(100vh - 240px)"
|
|
2240
|
-
},
|
|
2241
|
-
...filled && { height: "100%" },
|
|
2242
|
-
...sx
|
|
2243
|
-
},
|
|
2244
|
-
children: /* @__PURE__ */ jsxs(
|
|
2245
|
-
Box20,
|
|
2246
|
-
{
|
|
2247
|
-
sx: {
|
|
2248
|
-
maxWidth,
|
|
2249
|
-
display: "flex",
|
|
2250
|
-
flexDirection: "column",
|
|
2251
|
-
alignItems: "center",
|
|
2252
|
-
gap: compact ? 1.5 : 2.5
|
|
2253
|
-
},
|
|
2254
|
-
children: [
|
|
2255
|
-
visual,
|
|
2256
|
-
/* @__PURE__ */ jsxs(Stack, { spacing: 0.5, sx: {
|
|
2257
|
-
alignItems: "center"
|
|
2258
|
-
}, children: [
|
|
2259
|
-
title && /* @__PURE__ */ jsx(
|
|
2260
|
-
Typography5,
|
|
2261
|
-
{
|
|
2262
|
-
variant: compact ? "subtitle1" : "h6",
|
|
2263
|
-
sx: {
|
|
2264
|
-
color: "text.secondary",
|
|
2265
|
-
fontWeight: 600,
|
|
2266
|
-
...slotProps?.title
|
|
2267
|
-
},
|
|
2268
|
-
children: title
|
|
2269
|
-
}
|
|
2270
|
-
),
|
|
2271
|
-
description && /* @__PURE__ */ jsx(
|
|
2272
|
-
Typography5,
|
|
2273
|
-
{
|
|
2274
|
-
variant: "body2",
|
|
2275
|
-
sx: {
|
|
2276
|
-
color: "text.disabled",
|
|
2277
|
-
lineHeight: 1.6,
|
|
2278
|
-
...slotProps?.description
|
|
2279
|
-
},
|
|
2280
|
-
children: description
|
|
2281
|
-
}
|
|
2282
|
-
)
|
|
2283
|
-
] }),
|
|
2284
|
-
allActions.length > 0 && /* @__PURE__ */ jsx(
|
|
2285
|
-
Stack,
|
|
2286
|
-
{
|
|
2287
|
-
direction: "row",
|
|
2288
|
-
spacing: 1,
|
|
2289
|
-
sx: { mt: compact ? 0.5 : 1, flexWrap: "wrap", justifyContent: "center", ...slotProps?.actions },
|
|
2290
|
-
children: allActions.map((a, i) => /* @__PURE__ */ jsx(Box20, { children: a }, i))
|
|
2291
|
-
}
|
|
2292
|
-
)
|
|
2293
|
-
]
|
|
2294
|
-
}
|
|
2295
|
-
)
|
|
2296
|
-
}
|
|
2297
|
-
);
|
|
2298
|
-
}
|
|
2299
|
-
function SearchEmptyContent({
|
|
2300
|
-
query,
|
|
2301
|
-
...props
|
|
2302
|
-
}) {
|
|
2303
|
-
return /* @__PURE__ */ jsx(
|
|
2304
|
-
EmptyContent,
|
|
2305
|
-
{
|
|
2306
|
-
title: "No results found",
|
|
2307
|
-
description: query ? `Your search for "${query}" did not match any results.` : "Try adjusting your search criteria.",
|
|
2308
|
-
...props
|
|
2309
|
-
}
|
|
2310
|
-
);
|
|
2311
|
-
}
|
|
2312
|
-
function LoadingEmptyContent({ ...props }) {
|
|
2313
|
-
return /* @__PURE__ */ jsx(
|
|
2314
|
-
EmptyContent,
|
|
2315
|
-
{
|
|
2316
|
-
title: "Loading...",
|
|
2317
|
-
illustration: /* @__PURE__ */ jsx(
|
|
2318
|
-
Box20,
|
|
2319
|
-
{
|
|
2320
|
-
sx: {
|
|
2321
|
-
width: 64,
|
|
2322
|
-
height: 64,
|
|
2323
|
-
borderRadius: "50%",
|
|
2324
|
-
border: "3px solid",
|
|
2325
|
-
borderColor: "divider",
|
|
2326
|
-
borderTopColor: "primary.main",
|
|
2327
|
-
animation: "spin 1s linear infinite",
|
|
2328
|
-
"@keyframes spin": {
|
|
2329
|
-
from: { transform: "rotate(0deg)" },
|
|
2330
|
-
to: { transform: "rotate(360deg)" }
|
|
2331
|
-
}
|
|
2332
|
-
}
|
|
2333
|
-
}
|
|
2334
|
-
),
|
|
2335
|
-
compact: true,
|
|
2336
|
-
...props
|
|
2337
|
-
}
|
|
2338
|
-
);
|
|
2339
|
-
}
|
|
2340
|
-
var PAGE_GAP = 3;
|
|
2341
|
-
var GRID_GAP = 3;
|
|
2342
|
-
var PageContent = forwardRef(
|
|
2343
|
-
({ children, gap = PAGE_GAP, fill, sx, ...rest }, ref) => /* @__PURE__ */ jsx(
|
|
2344
2432
|
Stack,
|
|
2345
2433
|
{
|
|
2346
2434
|
ref,
|
|
@@ -2349,9 +2437,8 @@ var PageContent = forwardRef(
|
|
|
2349
2437
|
...rest,
|
|
2350
2438
|
children
|
|
2351
2439
|
}
|
|
2352
|
-
)
|
|
2353
|
-
|
|
2354
|
-
PageContent.displayName = "PageContent";
|
|
2440
|
+
);
|
|
2441
|
+
}
|
|
2355
2442
|
var COLUMN_SIZE = {
|
|
2356
2443
|
1: { xs: 12, md: 12 },
|
|
2357
2444
|
2: { xs: 12, md: 6 },
|
|
@@ -2365,7 +2452,7 @@ function CardGrid({ children, columns = 2, gap = GRID_GAP, sx }) {
|
|
|
2365
2452
|
(child) => child != null ? /* @__PURE__ */ jsx(Grid, { size, sx: { display: "flex" }, children: child }) : null
|
|
2366
2453
|
) });
|
|
2367
2454
|
}
|
|
2368
|
-
var ImageRoot = styled(
|
|
2455
|
+
var ImageRoot = styled(Box19, {
|
|
2369
2456
|
shouldForwardProp: (prop) => prop !== "ownerState"
|
|
2370
2457
|
})(({ theme, ownerState }) => {
|
|
2371
2458
|
const { ratio, hasError } = ownerState;
|
|
@@ -2406,7 +2493,7 @@ var StyledImg = styled("img")(() => ({
|
|
|
2406
2493
|
objectFit: "cover",
|
|
2407
2494
|
display: "block"
|
|
2408
2495
|
}));
|
|
2409
|
-
var PlaceholderBox = styled(
|
|
2496
|
+
var PlaceholderBox = styled(Box19)(({ theme }) => ({
|
|
2410
2497
|
position: "absolute",
|
|
2411
2498
|
top: 0,
|
|
2412
2499
|
left: 0,
|
|
@@ -2431,7 +2518,7 @@ var PlaceholderBox = styled(Box20)(({ theme }) => ({
|
|
|
2431
2518
|
}
|
|
2432
2519
|
}
|
|
2433
2520
|
}));
|
|
2434
|
-
var OverlayBox = styled(
|
|
2521
|
+
var OverlayBox = styled(Box19)(() => ({
|
|
2435
2522
|
position: "absolute",
|
|
2436
2523
|
top: 0,
|
|
2437
2524
|
left: 0,
|
|
@@ -2441,7 +2528,7 @@ var OverlayBox = styled(Box20)(() => ({
|
|
|
2441
2528
|
alignItems: "center",
|
|
2442
2529
|
justifyContent: "center"
|
|
2443
2530
|
}));
|
|
2444
|
-
var FallbackBox = styled(
|
|
2531
|
+
var FallbackBox = styled(Box19)(({ theme }) => ({
|
|
2445
2532
|
width: "100%",
|
|
2446
2533
|
height: "100%",
|
|
2447
2534
|
minHeight: 100,
|
|
@@ -2450,7 +2537,7 @@ var FallbackBox = styled(Box20)(({ theme }) => ({
|
|
|
2450
2537
|
justifyContent: "center",
|
|
2451
2538
|
color: theme.palette.text.disabled
|
|
2452
2539
|
}));
|
|
2453
|
-
|
|
2540
|
+
function Image({
|
|
2454
2541
|
src,
|
|
2455
2542
|
alt,
|
|
2456
2543
|
ratio,
|
|
@@ -2464,8 +2551,9 @@ var Image = forwardRef(function Image2({
|
|
|
2464
2551
|
imgSx,
|
|
2465
2552
|
onLoad,
|
|
2466
2553
|
onError,
|
|
2554
|
+
ref,
|
|
2467
2555
|
...imgProps
|
|
2468
|
-
}
|
|
2556
|
+
}) {
|
|
2469
2557
|
const [isLoaded, setIsLoaded] = useState(false);
|
|
2470
2558
|
const [hasError, setHasError] = useState(false);
|
|
2471
2559
|
const [currentSrc, setCurrentSrc] = useState(src);
|
|
@@ -2511,9 +2599,9 @@ var Image = forwardRef(function Image2({
|
|
|
2511
2599
|
),
|
|
2512
2600
|
overlay && /* @__PURE__ */ jsx(OverlayBox, { children: overlay })
|
|
2513
2601
|
] });
|
|
2514
|
-
}
|
|
2602
|
+
}
|
|
2515
2603
|
function DefaultImageIcon() {
|
|
2516
|
-
return /* @__PURE__ */ jsx(
|
|
2604
|
+
return /* @__PURE__ */ jsx(Box19, { component: "svg", viewBox: "0 0 24 24", sx: { width: 48, height: 48, opacity: 0.5 }, children: /* @__PURE__ */ jsx(
|
|
2517
2605
|
"path",
|
|
2518
2606
|
{
|
|
2519
2607
|
fill: "currentColor",
|
|
@@ -2591,7 +2679,17 @@ var StyledLabel = styled("span", {
|
|
|
2591
2679
|
...variantStyles[variant]
|
|
2592
2680
|
};
|
|
2593
2681
|
});
|
|
2594
|
-
|
|
2682
|
+
function Label({
|
|
2683
|
+
children,
|
|
2684
|
+
color = "default",
|
|
2685
|
+
variant = "soft",
|
|
2686
|
+
startIcon,
|
|
2687
|
+
endIcon,
|
|
2688
|
+
sx,
|
|
2689
|
+
disabled,
|
|
2690
|
+
ref,
|
|
2691
|
+
...other
|
|
2692
|
+
}) {
|
|
2595
2693
|
const ownerState = {
|
|
2596
2694
|
color,
|
|
2597
2695
|
variant,
|
|
@@ -2604,11 +2702,11 @@ var Label = forwardRef(function Label2({ children, color = "default", variant =
|
|
|
2604
2702
|
"& svg, & img": { width: "100%", height: "100%" }
|
|
2605
2703
|
};
|
|
2606
2704
|
return /* @__PURE__ */ jsxs(StyledLabel, { ref, ownerState, sx, ...other, children: [
|
|
2607
|
-
startIcon && /* @__PURE__ */ jsx(
|
|
2705
|
+
startIcon && /* @__PURE__ */ jsx(Box19, { sx: { mr: 0.5, ...iconStyles }, children: startIcon }),
|
|
2608
2706
|
children,
|
|
2609
|
-
endIcon && /* @__PURE__ */ jsx(
|
|
2707
|
+
endIcon && /* @__PURE__ */ jsx(Box19, { sx: { ml: 0.5, ...iconStyles }, children: endIcon })
|
|
2610
2708
|
] });
|
|
2611
|
-
}
|
|
2709
|
+
}
|
|
2612
2710
|
function StatusLabel({
|
|
2613
2711
|
status,
|
|
2614
2712
|
...props
|
|
@@ -2631,6 +2729,155 @@ function BooleanLabel({
|
|
|
2631
2729
|
}) {
|
|
2632
2730
|
return /* @__PURE__ */ jsx(Label, { color: value ? "success" : "error", ...props, children: value ? trueText : falseText });
|
|
2633
2731
|
}
|
|
2732
|
+
var MINUTE = 6e4;
|
|
2733
|
+
var HOUR = 60 * MINUTE;
|
|
2734
|
+
var DAY = 24 * HOUR;
|
|
2735
|
+
function deadlineUrgency(leftMs, urgentWithinMs = HOUR, soonWithinMs = DAY) {
|
|
2736
|
+
if (leftMs <= 0) return "overdue";
|
|
2737
|
+
if (leftMs < urgentWithinMs) return "urgent";
|
|
2738
|
+
if (leftMs < soonWithinMs) return "soon";
|
|
2739
|
+
return "later";
|
|
2740
|
+
}
|
|
2741
|
+
function relativeTimeLeft(leftMs, locale) {
|
|
2742
|
+
const words = new Intl.RelativeTimeFormat(locale, { numeric: "always", style: "short" });
|
|
2743
|
+
const size = Math.abs(leftMs);
|
|
2744
|
+
const sign = leftMs < 0 ? -1 : 1;
|
|
2745
|
+
if (size < HOUR) return words.format(sign * Math.max(1, Math.round(size / MINUTE)), "minute");
|
|
2746
|
+
if (size < 2 * DAY) return words.format(sign * Math.round(size / HOUR), "hour");
|
|
2747
|
+
return words.format(sign * Math.round(size / DAY), "day");
|
|
2748
|
+
}
|
|
2749
|
+
var LOOK = {
|
|
2750
|
+
overdue: { color: "error", variant: "filled" },
|
|
2751
|
+
urgent: { color: "error", variant: "soft" },
|
|
2752
|
+
soon: { color: "warning", variant: "soft" },
|
|
2753
|
+
later: { color: "default", variant: "soft" }
|
|
2754
|
+
};
|
|
2755
|
+
function DeadlineChip({
|
|
2756
|
+
deadline,
|
|
2757
|
+
locale,
|
|
2758
|
+
overdueLabel,
|
|
2759
|
+
urgentWithinMs,
|
|
2760
|
+
soonWithinMs,
|
|
2761
|
+
now = Date.now,
|
|
2762
|
+
sx
|
|
2763
|
+
}) {
|
|
2764
|
+
const [at, setAt] = useState(now);
|
|
2765
|
+
useEffect(() => {
|
|
2766
|
+
const tick = setInterval(() => setAt(now()), 3e4);
|
|
2767
|
+
return () => clearInterval(tick);
|
|
2768
|
+
}, [now]);
|
|
2769
|
+
const due = new Date(deadline).getTime();
|
|
2770
|
+
if (Number.isNaN(due)) return null;
|
|
2771
|
+
const left = due - at;
|
|
2772
|
+
const urgency = deadlineUrgency(left, urgentWithinMs, soonWithinMs);
|
|
2773
|
+
const look = LOOK[urgency];
|
|
2774
|
+
const text = urgency === "overdue" && overdueLabel ? overdueLabel : relativeTimeLeft(left, locale);
|
|
2775
|
+
const exact = new Intl.DateTimeFormat(locale, { dateStyle: "medium", timeStyle: "short" }).format(due);
|
|
2776
|
+
return /* @__PURE__ */ jsx(
|
|
2777
|
+
Label,
|
|
2778
|
+
{
|
|
2779
|
+
color: look.color,
|
|
2780
|
+
variant: look.variant,
|
|
2781
|
+
"data-urgency": urgency,
|
|
2782
|
+
sx: [{ fontVariantNumeric: "tabular-nums" }, ...Array.isArray(sx) ? sx : [sx]],
|
|
2783
|
+
children: /* @__PURE__ */ jsx("time", { dateTime: new Date(due).toISOString(), title: exact, children: text })
|
|
2784
|
+
}
|
|
2785
|
+
);
|
|
2786
|
+
}
|
|
2787
|
+
var DEFAULT_ITEM_WIDTH = { xs: "78%", sm: "46%", md: "31%", lg: "23.5%" };
|
|
2788
|
+
function Chevron({ direction }) {
|
|
2789
|
+
return direction === "left" ? /* @__PURE__ */ jsx(ChevronLeftIcon, { fontSize: "small" }) : /* @__PURE__ */ jsx(ChevronRightIcon, { fontSize: "small" });
|
|
2790
|
+
}
|
|
2791
|
+
function Rail({
|
|
2792
|
+
children,
|
|
2793
|
+
"aria-label": ariaLabel,
|
|
2794
|
+
itemWidth = DEFAULT_ITEM_WIDTH,
|
|
2795
|
+
gap = 2,
|
|
2796
|
+
labels,
|
|
2797
|
+
sx
|
|
2798
|
+
}) {
|
|
2799
|
+
const track = useRef(null);
|
|
2800
|
+
const [reach, setReach] = useState({ back: false, forward: false });
|
|
2801
|
+
const measure = useCallback(() => {
|
|
2802
|
+
const el = track.current;
|
|
2803
|
+
if (!el) return;
|
|
2804
|
+
const max = el.scrollWidth - el.clientWidth;
|
|
2805
|
+
setReach({ back: el.scrollLeft > 1, forward: el.scrollLeft < max - 1 });
|
|
2806
|
+
}, []);
|
|
2807
|
+
useEffect(() => {
|
|
2808
|
+
measure();
|
|
2809
|
+
const el = track.current;
|
|
2810
|
+
if (!el || typeof ResizeObserver === "undefined") return void 0;
|
|
2811
|
+
const observer = new ResizeObserver(measure);
|
|
2812
|
+
observer.observe(el);
|
|
2813
|
+
return () => observer.disconnect();
|
|
2814
|
+
}, [measure]);
|
|
2815
|
+
const page = (direction) => {
|
|
2816
|
+
const el = track.current;
|
|
2817
|
+
if (el) el.scrollBy({ left: direction * el.clientWidth * 0.9, behavior: "smooth" });
|
|
2818
|
+
};
|
|
2819
|
+
const arrow = (direction, show, label) => show ? /* @__PURE__ */ jsx(
|
|
2820
|
+
IconButton4,
|
|
2821
|
+
{
|
|
2822
|
+
size: "small",
|
|
2823
|
+
"aria-label": label,
|
|
2824
|
+
onClick: () => page(direction),
|
|
2825
|
+
sx: {
|
|
2826
|
+
position: "absolute",
|
|
2827
|
+
top: "50%",
|
|
2828
|
+
transform: "translateY(-50%)",
|
|
2829
|
+
[direction === 1 ? "right" : "left"]: -8,
|
|
2830
|
+
zIndex: 1,
|
|
2831
|
+
bgcolor: "background.paper",
|
|
2832
|
+
boxShadow: 2,
|
|
2833
|
+
"&:hover": { bgcolor: "background.paper" },
|
|
2834
|
+
"@media (hover: none)": { display: "none" }
|
|
2835
|
+
},
|
|
2836
|
+
children: /* @__PURE__ */ jsx(Chevron, { direction: direction === 1 ? "right" : "left" })
|
|
2837
|
+
}
|
|
2838
|
+
) : null;
|
|
2839
|
+
return /* @__PURE__ */ jsxs(
|
|
2840
|
+
Box19,
|
|
2841
|
+
{
|
|
2842
|
+
component: "section",
|
|
2843
|
+
"aria-label": ariaLabel,
|
|
2844
|
+
"data-testid": "prism-rail",
|
|
2845
|
+
sx: [{ position: "relative" }, ...Array.isArray(sx) ? sx : [sx]],
|
|
2846
|
+
children: [
|
|
2847
|
+
arrow(-1, reach.back, labels?.previous ?? "Previous"),
|
|
2848
|
+
/* @__PURE__ */ jsx(
|
|
2849
|
+
Box19,
|
|
2850
|
+
{
|
|
2851
|
+
component: "ul",
|
|
2852
|
+
ref: track,
|
|
2853
|
+
tabIndex: 0,
|
|
2854
|
+
onScroll: measure,
|
|
2855
|
+
sx: {
|
|
2856
|
+
display: "grid",
|
|
2857
|
+
gridAutoFlow: "column",
|
|
2858
|
+
gridAutoColumns: itemWidth,
|
|
2859
|
+
gap,
|
|
2860
|
+
m: 0,
|
|
2861
|
+
p: 0,
|
|
2862
|
+
listStyle: "none",
|
|
2863
|
+
overflowX: "auto",
|
|
2864
|
+
overscrollBehaviorX: "contain",
|
|
2865
|
+
scrollSnapType: "x mandatory",
|
|
2866
|
+
scrollbarWidth: "none",
|
|
2867
|
+
"&::-webkit-scrollbar": { display: "none" },
|
|
2868
|
+
"&:focus-visible": { outline: "2px solid", outlineColor: "primary.main", outlineOffset: 2 }
|
|
2869
|
+
},
|
|
2870
|
+
children: Children.map(
|
|
2871
|
+
children,
|
|
2872
|
+
(child) => child == null || child === false ? null : /* @__PURE__ */ jsx(Box19, { component: "li", sx: { scrollSnapAlign: "start", minWidth: 0 }, children: child })
|
|
2873
|
+
)
|
|
2874
|
+
}
|
|
2875
|
+
),
|
|
2876
|
+
arrow(1, reach.forward, labels?.next ?? "Next")
|
|
2877
|
+
]
|
|
2878
|
+
}
|
|
2879
|
+
);
|
|
2880
|
+
}
|
|
2634
2881
|
var LoadingContent = styled("div")(({ theme }) => ({
|
|
2635
2882
|
flexGrow: 1,
|
|
2636
2883
|
width: "100%",
|
|
@@ -2655,7 +2902,7 @@ function LoadingScreen({ portal, slots, slotProps, sx, ...other }) {
|
|
|
2655
2902
|
}
|
|
2656
2903
|
) }) });
|
|
2657
2904
|
}
|
|
2658
|
-
var SplashContainer = styled(
|
|
2905
|
+
var SplashContainer = styled(Box19, {
|
|
2659
2906
|
shouldForwardProp: (prop) => prop !== "fullScreen"
|
|
2660
2907
|
})(({ theme, fullScreen }) => ({
|
|
2661
2908
|
display: "flex",
|
|
@@ -2767,7 +3014,7 @@ function TagCloud({
|
|
|
2767
3014
|
const theme = useTheme();
|
|
2768
3015
|
const visible = maxItems ? tags.slice(0, maxItems) : tags;
|
|
2769
3016
|
if (variant === "list") {
|
|
2770
|
-
return /* @__PURE__ */ jsx(
|
|
3017
|
+
return /* @__PURE__ */ jsx(List, { disablePadding: true, sx, children: visible.map((tag) => /* @__PURE__ */ jsxs(
|
|
2771
3018
|
ListItemButton,
|
|
2772
3019
|
{
|
|
2773
3020
|
onClick: onTagClick ? () => onTagClick(tag) : void 0,
|
|
@@ -2782,10 +3029,10 @@ function TagCloud({
|
|
|
2782
3029
|
/* @__PURE__ */ jsx(
|
|
2783
3030
|
ListItemText,
|
|
2784
3031
|
{
|
|
2785
|
-
primary: /* @__PURE__ */ jsxs(
|
|
3032
|
+
primary: /* @__PURE__ */ jsxs(Box19, { component: "span", sx: { display: "inline-flex", alignItems: "center", gap: 0.5 }, children: [
|
|
2786
3033
|
/* @__PURE__ */ jsx("span", { children: `#${tag.name}` }),
|
|
2787
3034
|
tag.trending && /* @__PURE__ */ jsx(
|
|
2788
|
-
|
|
3035
|
+
Box19,
|
|
2789
3036
|
{
|
|
2790
3037
|
component: "span",
|
|
2791
3038
|
sx: {
|
|
@@ -2851,7 +3098,7 @@ function TagCloud({
|
|
|
2851
3098
|
return /* @__PURE__ */ jsx(
|
|
2852
3099
|
Chip,
|
|
2853
3100
|
{
|
|
2854
|
-
label: /* @__PURE__ */ jsxs(
|
|
3101
|
+
label: /* @__PURE__ */ jsxs(Box19, { component: "span", sx: { display: "inline-flex", alignItems: "center", gap: 0.5 }, children: [
|
|
2855
3102
|
/* @__PURE__ */ jsx("span", { children: `#${tag.name}` }),
|
|
2856
3103
|
renderAdornment?.(tag)
|
|
2857
3104
|
] }),
|
|
@@ -2880,84 +3127,6 @@ function TagCloud({
|
|
|
2880
3127
|
}
|
|
2881
3128
|
);
|
|
2882
3129
|
}
|
|
2883
|
-
var ScrollbarRoot = styled(Box20, {
|
|
2884
|
-
shouldForwardProp: (prop) => prop !== "ownerState"
|
|
2885
|
-
})(({ theme, ownerState }) => {
|
|
2886
|
-
const { fillContent, hideScrollbar, axis } = ownerState;
|
|
2887
|
-
const scrollbarColor = alpha(theme.palette.text.disabled, 0.4);
|
|
2888
|
-
const scrollbarHoverColor = alpha(theme.palette.text.disabled, 0.6);
|
|
2889
|
-
const scrollbarTrackColor = alpha(theme.palette.grey[500], 0.08);
|
|
2890
|
-
const getOverflow = () => {
|
|
2891
|
-
if (axis === "x") return { overflowX: "auto", overflowY: "hidden" };
|
|
2892
|
-
if (axis === "y") return { overflowX: "hidden", overflowY: "auto" };
|
|
2893
|
-
return { overflow: "auto" };
|
|
2894
|
-
};
|
|
2895
|
-
return {
|
|
2896
|
-
minWidth: 0,
|
|
2897
|
-
minHeight: 0,
|
|
2898
|
-
...getOverflow(),
|
|
2899
|
-
...fillContent && {
|
|
2900
|
-
flexGrow: 1,
|
|
2901
|
-
display: "flex",
|
|
2902
|
-
flexDirection: "column"
|
|
2903
|
-
},
|
|
2904
|
-
// Custom scrollbar styles
|
|
2905
|
-
...!hideScrollbar && {
|
|
2906
|
-
scrollbarWidth: "thin",
|
|
2907
|
-
scrollbarColor: `${scrollbarColor} ${scrollbarTrackColor}`,
|
|
2908
|
-
// Webkit browsers
|
|
2909
|
-
"&::-webkit-scrollbar": {
|
|
2910
|
-
width: 8,
|
|
2911
|
-
height: 8
|
|
2912
|
-
},
|
|
2913
|
-
"&::-webkit-scrollbar-track": {
|
|
2914
|
-
backgroundColor: scrollbarTrackColor,
|
|
2915
|
-
borderRadius: 4
|
|
2916
|
-
},
|
|
2917
|
-
"&::-webkit-scrollbar-thumb": {
|
|
2918
|
-
backgroundColor: scrollbarColor,
|
|
2919
|
-
borderRadius: 4,
|
|
2920
|
-
"&:hover": {
|
|
2921
|
-
backgroundColor: scrollbarHoverColor
|
|
2922
|
-
}
|
|
2923
|
-
},
|
|
2924
|
-
"&::-webkit-scrollbar-corner": {
|
|
2925
|
-
backgroundColor: "transparent"
|
|
2926
|
-
}
|
|
2927
|
-
},
|
|
2928
|
-
...hideScrollbar && {
|
|
2929
|
-
scrollbarWidth: "none",
|
|
2930
|
-
msOverflowStyle: "none",
|
|
2931
|
-
"&::-webkit-scrollbar": {
|
|
2932
|
-
display: "none"
|
|
2933
|
-
}
|
|
2934
|
-
}
|
|
2935
|
-
};
|
|
2936
|
-
});
|
|
2937
|
-
var Scrollbar = forwardRef(function Scrollbar2({ children, sx, fillContent = false, hideScrollbar = false, axis = "y", maxHeight, minHeight, className, ...other }, ref) {
|
|
2938
|
-
const ownerState = {
|
|
2939
|
-
fillContent,
|
|
2940
|
-
hideScrollbar,
|
|
2941
|
-
axis
|
|
2942
|
-
};
|
|
2943
|
-
return /* @__PURE__ */ jsx(
|
|
2944
|
-
ScrollbarRoot,
|
|
2945
|
-
{
|
|
2946
|
-
ref,
|
|
2947
|
-
ownerState,
|
|
2948
|
-
className,
|
|
2949
|
-
sx: [
|
|
2950
|
-
{
|
|
2951
|
-
...maxHeight !== void 0 && { maxHeight },
|
|
2952
|
-
...minHeight !== void 0 && { minHeight }
|
|
2953
|
-
},
|
|
2954
|
-
...Array.isArray(sx) ? sx : [sx]
|
|
2955
|
-
],
|
|
2956
|
-
...other,
|
|
2957
|
-
children
|
|
2958
|
-
}
|
|
2959
|
-
);
|
|
2960
|
-
});
|
|
2961
3130
|
var SnackbarContext = createContext(null);
|
|
2962
3131
|
function useSnackbar() {
|
|
2963
3132
|
const context = useContext(SnackbarContext);
|
|
@@ -3061,7 +3230,7 @@ function SnackbarProvider({
|
|
|
3061
3230
|
severity: state.severity,
|
|
3062
3231
|
variant: "filled",
|
|
3063
3232
|
onClose: handleClose,
|
|
3064
|
-
action: state.action || /* @__PURE__ */ jsx(
|
|
3233
|
+
action: state.action || /* @__PURE__ */ jsx(IconButton4, { size: "small", "aria-label": "close", color: "inherit", onClick: close, children: /* @__PURE__ */ jsx(CloseIcon, { fontSize: "small" }) }),
|
|
3065
3234
|
sx: { width: "100%", alignItems: "center" },
|
|
3066
3235
|
children: state.message
|
|
3067
3236
|
}
|
|
@@ -3091,7 +3260,7 @@ var SvgRoot = styled("span")(() => ({
|
|
|
3091
3260
|
display: "inline-flex",
|
|
3092
3261
|
backgroundColor: "currentColor"
|
|
3093
3262
|
}));
|
|
3094
|
-
|
|
3263
|
+
function SvgColor({ src, color, size = 24, width, height, className, sx, ref }) {
|
|
3095
3264
|
const computedWidth = width ?? size;
|
|
3096
3265
|
const computedHeight = height ?? size;
|
|
3097
3266
|
return /* @__PURE__ */ jsx(
|
|
@@ -3111,7 +3280,7 @@ var SvgColor = forwardRef(function SvgColor2({ src, color, size = 24, width, hei
|
|
|
3111
3280
|
]
|
|
3112
3281
|
}
|
|
3113
3282
|
);
|
|
3114
|
-
}
|
|
3283
|
+
}
|
|
3115
3284
|
function createIconComponent(basePath) {
|
|
3116
3285
|
function Icon({ name, ...props }) {
|
|
3117
3286
|
return /* @__PURE__ */ jsx(SvgColor, { src: `${basePath}/${name}.svg`, ...props });
|
|
@@ -3141,7 +3310,7 @@ var StyledTableRow2 = styled(TableRow)(({ theme }) => ({
|
|
|
3141
3310
|
}
|
|
3142
3311
|
}
|
|
3143
3312
|
}));
|
|
3144
|
-
function
|
|
3313
|
+
function Table({
|
|
3145
3314
|
columns,
|
|
3146
3315
|
data,
|
|
3147
3316
|
rowKey = "id",
|
|
@@ -3161,14 +3330,16 @@ function TableInner({
|
|
|
3161
3330
|
rowsPerPageOptions = [5, 10, 25, 50],
|
|
3162
3331
|
emptyContent,
|
|
3163
3332
|
loading = false,
|
|
3333
|
+
loadingRows = 5,
|
|
3164
3334
|
dense = false,
|
|
3165
3335
|
stickyHeader = false,
|
|
3166
3336
|
maxHeight,
|
|
3167
3337
|
onRowClick,
|
|
3168
3338
|
containerSx,
|
|
3169
3339
|
sx,
|
|
3340
|
+
ref,
|
|
3170
3341
|
...other
|
|
3171
|
-
}
|
|
3342
|
+
}) {
|
|
3172
3343
|
const getRowKey = useCallback(
|
|
3173
3344
|
(row, index) => {
|
|
3174
3345
|
if (typeof rowKey === "function") {
|
|
@@ -3233,7 +3404,7 @@ function TableInner({
|
|
|
3233
3404
|
return data;
|
|
3234
3405
|
}, [data, paginated, page, rowsPerPage, totalRows]);
|
|
3235
3406
|
if (!loading && data.length === 0) {
|
|
3236
|
-
return /* @__PURE__ */ jsx(StyledTableContainer2, { sx: containerSx, children: /* @__PURE__ */ jsx(
|
|
3407
|
+
return /* @__PURE__ */ jsx(StyledTableContainer2, { sx: containerSx, children: /* @__PURE__ */ jsx(Box19, { sx: { p: 4, textAlign: "center" }, children: emptyContent || /* @__PURE__ */ jsx(Typography5, { sx: {
|
|
3237
3408
|
color: "text.secondary"
|
|
3238
3409
|
}, children: "No data available" }) }) });
|
|
3239
3410
|
}
|
|
@@ -3267,34 +3438,40 @@ function TableInner({
|
|
|
3267
3438
|
String(column.id)
|
|
3268
3439
|
))
|
|
3269
3440
|
] }) }),
|
|
3270
|
-
/* @__PURE__ */
|
|
3271
|
-
|
|
3272
|
-
|
|
3273
|
-
|
|
3274
|
-
|
|
3275
|
-
|
|
3276
|
-
|
|
3277
|
-
|
|
3278
|
-
|
|
3279
|
-
|
|
3280
|
-
|
|
3281
|
-
|
|
3282
|
-
|
|
3283
|
-
|
|
3284
|
-
|
|
3285
|
-
|
|
3286
|
-
|
|
3287
|
-
|
|
3288
|
-
|
|
3289
|
-
|
|
3290
|
-
|
|
3291
|
-
|
|
3292
|
-
|
|
3293
|
-
|
|
3294
|
-
|
|
3295
|
-
|
|
3296
|
-
|
|
3297
|
-
|
|
3441
|
+
/* @__PURE__ */ jsxs(TableBody, { children: [
|
|
3442
|
+
loading && Array.from({ length: Math.max(1, loadingRows) }, (_, rowIndex) => /* @__PURE__ */ jsxs(TableRow, { children: [
|
|
3443
|
+
selectable && /* @__PURE__ */ jsx(TableCell, { padding: "checkbox", children: /* @__PURE__ */ jsx(Skeleton3, { variant: "rectangular", width: 18, height: 18 }) }),
|
|
3444
|
+
columns.map((column) => /* @__PURE__ */ jsx(TableCell, { align: column.align || "left", children: /* @__PURE__ */ jsx(Skeleton3, { variant: "text", width: column.width ?? "80%" }) }, String(column.id)))
|
|
3445
|
+
] }, `loading-${rowIndex}`)),
|
|
3446
|
+
!loading && displayData.map((row, index) => {
|
|
3447
|
+
const key = getRowKey(row, index);
|
|
3448
|
+
const isSelected = selected.includes(key);
|
|
3449
|
+
return /* @__PURE__ */ jsxs(
|
|
3450
|
+
StyledTableRow2,
|
|
3451
|
+
{
|
|
3452
|
+
hover: true,
|
|
3453
|
+
selected: isSelected,
|
|
3454
|
+
onClick: () => onRowClick?.(row, index),
|
|
3455
|
+
sx: { cursor: onRowClick ? "pointer" : "default" },
|
|
3456
|
+
children: [
|
|
3457
|
+
selectable && /* @__PURE__ */ jsx(TableCell, { padding: "checkbox", children: /* @__PURE__ */ jsx(
|
|
3458
|
+
Checkbox,
|
|
3459
|
+
{
|
|
3460
|
+
checked: isSelected,
|
|
3461
|
+
onClick: (e) => e.stopPropagation(),
|
|
3462
|
+
onChange: () => handleSelectRow(key)
|
|
3463
|
+
}
|
|
3464
|
+
) }),
|
|
3465
|
+
columns.map((column) => {
|
|
3466
|
+
const value = row[column.id];
|
|
3467
|
+
return /* @__PURE__ */ jsx(TableCell, { align: column.align || "left", children: column.render ? column.render(row, index) : column.format ? column.format(value) : String(value ?? "") }, String(column.id));
|
|
3468
|
+
})
|
|
3469
|
+
]
|
|
3470
|
+
},
|
|
3471
|
+
key
|
|
3472
|
+
);
|
|
3473
|
+
})
|
|
3474
|
+
] })
|
|
3298
3475
|
] }),
|
|
3299
3476
|
paginated && /* @__PURE__ */ jsx(
|
|
3300
3477
|
TablePagination,
|
|
@@ -3312,7 +3489,6 @@ function TableInner({
|
|
|
3312
3489
|
}
|
|
3313
3490
|
);
|
|
3314
3491
|
}
|
|
3315
|
-
var Table = forwardRef(TableInner);
|
|
3316
3492
|
function useTable({
|
|
3317
3493
|
data,
|
|
3318
3494
|
defaultPage = 0,
|
|
@@ -3367,26 +3543,26 @@ function useTable({
|
|
|
3367
3543
|
reset
|
|
3368
3544
|
};
|
|
3369
3545
|
}
|
|
3370
|
-
function
|
|
3371
|
-
return /* @__PURE__ */ jsx(
|
|
3546
|
+
function Skeleton5({ variant = "text", ...props }) {
|
|
3547
|
+
return /* @__PURE__ */ jsx(Skeleton3, { variant, ...props });
|
|
3372
3548
|
}
|
|
3373
3549
|
function CardSkeleton({ hasAvatar = true, lines = 2, width = "100%" }) {
|
|
3374
|
-
return /* @__PURE__ */ jsxs(
|
|
3375
|
-
hasAvatar && /* @__PURE__ */ jsxs(
|
|
3376
|
-
/* @__PURE__ */ jsx(
|
|
3377
|
-
/* @__PURE__ */ jsxs(
|
|
3378
|
-
/* @__PURE__ */ jsx(
|
|
3379
|
-
/* @__PURE__ */ jsx(
|
|
3550
|
+
return /* @__PURE__ */ jsxs(Box19, { sx: { width, p: 2 }, children: [
|
|
3551
|
+
hasAvatar && /* @__PURE__ */ jsxs(Box19, { sx: { display: "flex", alignItems: "center", mb: 2 }, children: [
|
|
3552
|
+
/* @__PURE__ */ jsx(Skeleton5, { variant: "circular", width: 40, height: 40 }),
|
|
3553
|
+
/* @__PURE__ */ jsxs(Box19, { sx: { ml: 1, flex: 1 }, children: [
|
|
3554
|
+
/* @__PURE__ */ jsx(Skeleton5, { variant: "text", width: "60%" }),
|
|
3555
|
+
/* @__PURE__ */ jsx(Skeleton5, { variant: "text", width: "40%" })
|
|
3380
3556
|
] })
|
|
3381
3557
|
] }),
|
|
3382
|
-
/* @__PURE__ */ jsx(
|
|
3383
|
-
/* @__PURE__ */ jsx(
|
|
3558
|
+
/* @__PURE__ */ jsx(Skeleton5, { variant: "rectangular", width: "100%", height: 118, sx: { borderRadius: 1 } }),
|
|
3559
|
+
/* @__PURE__ */ jsx(Box19, { sx: { mt: 1 }, children: Array.from({ length: lines }, (_, i) => /* @__PURE__ */ jsx(Skeleton5, { variant: "text", width: i === lines - 1 ? "80%" : "100%" }, i)) })
|
|
3384
3560
|
] });
|
|
3385
3561
|
}
|
|
3386
3562
|
function TableSkeleton({ rows = 5, columns = 4, hasHeader = true }) {
|
|
3387
|
-
return /* @__PURE__ */ jsxs(
|
|
3388
|
-
hasHeader && /* @__PURE__ */ jsx(
|
|
3389
|
-
Array.from({ length: rows }, (_row, rowIndex) => /* @__PURE__ */ jsx(
|
|
3563
|
+
return /* @__PURE__ */ jsxs(Box19, { sx: { width: "100%" }, children: [
|
|
3564
|
+
hasHeader && /* @__PURE__ */ jsx(Box19, { sx: { display: "flex", gap: 2, mb: 1, pb: 1, borderBottom: 1, borderColor: "divider" }, children: Array.from({ length: columns }, (_, i) => /* @__PURE__ */ jsx(Skeleton5, { variant: "text", sx: { flex: 1 }, height: 24 }, i)) }),
|
|
3565
|
+
Array.from({ length: rows }, (_row, rowIndex) => /* @__PURE__ */ jsx(Box19, { sx: { display: "flex", gap: 2, py: 1 }, children: Array.from({ length: columns }, (_col, colIndex) => /* @__PURE__ */ jsx(Skeleton5, { variant: "text", sx: { flex: 1 } }, colIndex)) }, rowIndex))
|
|
3390
3566
|
] });
|
|
3391
3567
|
}
|
|
3392
3568
|
function LinearProgress3({
|
|
@@ -3404,7 +3580,7 @@ function LinearProgress3({
|
|
|
3404
3580
|
return /* @__PURE__ */ jsx(MuiLinearProgress, { variant, value, color, sx: { borderRadius: 1, ...sx }, ...props });
|
|
3405
3581
|
}
|
|
3406
3582
|
if (labelPosition === "below") {
|
|
3407
|
-
return /* @__PURE__ */ jsxs(
|
|
3583
|
+
return /* @__PURE__ */ jsxs(Box19, { sx: { width: "100%" }, children: [
|
|
3408
3584
|
/* @__PURE__ */ jsx(MuiLinearProgress, { variant, value, color, sx: { borderRadius: 1, ...sx }, ...props }),
|
|
3409
3585
|
/* @__PURE__ */ jsx(
|
|
3410
3586
|
Typography5,
|
|
@@ -3421,8 +3597,8 @@ function LinearProgress3({
|
|
|
3421
3597
|
)
|
|
3422
3598
|
] });
|
|
3423
3599
|
}
|
|
3424
|
-
return /* @__PURE__ */ jsxs(
|
|
3425
|
-
/* @__PURE__ */ jsx(
|
|
3600
|
+
return /* @__PURE__ */ jsxs(Box19, { sx: { display: "flex", alignItems: "center", gap: 1 }, children: [
|
|
3601
|
+
/* @__PURE__ */ jsx(Box19, { sx: { flex: 1 }, children: /* @__PURE__ */ jsx(MuiLinearProgress, { variant, value, color, sx: { borderRadius: 1, ...sx }, ...props }) }),
|
|
3426
3602
|
/* @__PURE__ */ jsx(
|
|
3427
3603
|
Typography5,
|
|
3428
3604
|
{
|
|
@@ -3449,10 +3625,10 @@ function CircularProgress2({
|
|
|
3449
3625
|
return /* @__PURE__ */ jsx(CircularProgress, { variant, value, color, size, ...props });
|
|
3450
3626
|
}
|
|
3451
3627
|
const label = formatLabel2 ? formatLabel2(value ?? 0) : `${Math.round(value ?? 0)}%`;
|
|
3452
|
-
return /* @__PURE__ */ jsxs(
|
|
3628
|
+
return /* @__PURE__ */ jsxs(Box19, { sx: { position: "relative", display: "inline-flex" }, children: [
|
|
3453
3629
|
/* @__PURE__ */ jsx(CircularProgress, { variant, value, color, size, ...props }),
|
|
3454
3630
|
/* @__PURE__ */ jsx(
|
|
3455
|
-
|
|
3631
|
+
Box19,
|
|
3456
3632
|
{
|
|
3457
3633
|
sx: {
|
|
3458
3634
|
position: "absolute",
|
|
@@ -3489,9 +3665,9 @@ function ProgressBar({ segments, height = 8, showLabels = false }) {
|
|
|
3489
3665
|
info: "info.main",
|
|
3490
3666
|
inherit: "text.primary"
|
|
3491
3667
|
};
|
|
3492
|
-
return /* @__PURE__ */ jsxs(
|
|
3668
|
+
return /* @__PURE__ */ jsxs(Box19, { sx: { width: "100%" }, children: [
|
|
3493
3669
|
/* @__PURE__ */ jsx(
|
|
3494
|
-
|
|
3670
|
+
Box19,
|
|
3495
3671
|
{
|
|
3496
3672
|
sx: {
|
|
3497
3673
|
display: "flex",
|
|
@@ -3501,7 +3677,7 @@ function ProgressBar({ segments, height = 8, showLabels = false }) {
|
|
|
3501
3677
|
bgcolor: "action.hover"
|
|
3502
3678
|
},
|
|
3503
3679
|
children: segments.map((segment, index) => /* @__PURE__ */ jsx(
|
|
3504
|
-
|
|
3680
|
+
Box19,
|
|
3505
3681
|
{
|
|
3506
3682
|
sx: {
|
|
3507
3683
|
width: `${segment.value}%`,
|
|
@@ -3513,9 +3689,9 @@ function ProgressBar({ segments, height = 8, showLabels = false }) {
|
|
|
3513
3689
|
))
|
|
3514
3690
|
}
|
|
3515
3691
|
),
|
|
3516
|
-
showLabels && /* @__PURE__ */ jsx(
|
|
3692
|
+
showLabels && /* @__PURE__ */ jsx(Box19, { sx: { display: "flex", gap: 2, mt: 1 }, children: segments.map((segment, index) => /* @__PURE__ */ jsxs(Box19, { sx: { display: "flex", alignItems: "center", gap: 0.5 }, children: [
|
|
3517
3693
|
/* @__PURE__ */ jsx(
|
|
3518
|
-
|
|
3694
|
+
Box19,
|
|
3519
3695
|
{
|
|
3520
3696
|
sx: {
|
|
3521
3697
|
width: 8,
|
|
@@ -3615,7 +3791,7 @@ function VirtualList({
|
|
|
3615
3791
|
}
|
|
3616
3792
|
}, [lastItem, virtualizer, items.length, loadMoreThreshold, onEndReached]);
|
|
3617
3793
|
return /* @__PURE__ */ jsx(
|
|
3618
|
-
|
|
3794
|
+
Box19,
|
|
3619
3795
|
{
|
|
3620
3796
|
ref: parentRef,
|
|
3621
3797
|
sx: {
|
|
@@ -3626,7 +3802,7 @@ function VirtualList({
|
|
|
3626
3802
|
...sx
|
|
3627
3803
|
},
|
|
3628
3804
|
children: /* @__PURE__ */ jsx(
|
|
3629
|
-
|
|
3805
|
+
Box19,
|
|
3630
3806
|
{
|
|
3631
3807
|
sx: {
|
|
3632
3808
|
height: virtualizer.getTotalSize() + paddingY * 2,
|
|
@@ -3637,7 +3813,7 @@ function VirtualList({
|
|
|
3637
3813
|
const item = items[virtualRow.index];
|
|
3638
3814
|
if (item === void 0) return null;
|
|
3639
3815
|
return /* @__PURE__ */ jsx(
|
|
3640
|
-
|
|
3816
|
+
Box19,
|
|
3641
3817
|
{
|
|
3642
3818
|
"data-index": virtualRow.index,
|
|
3643
3819
|
ref: virtualizer.measureElement,
|
|
@@ -3748,7 +3924,7 @@ function CommandPalette({
|
|
|
3748
3924
|
}
|
|
3749
3925
|
},
|
|
3750
3926
|
children: /* @__PURE__ */ jsxs(DialogContent, { sx: { p: 0 }, children: [
|
|
3751
|
-
/* @__PURE__ */ jsx(
|
|
3927
|
+
/* @__PURE__ */ jsx(Box19, { sx: { p: 2, pb: 1 }, children: /* @__PURE__ */ jsx(
|
|
3752
3928
|
TextField2,
|
|
3753
3929
|
{
|
|
3754
3930
|
inputRef,
|
|
@@ -3764,23 +3940,23 @@ function CommandPalette({
|
|
|
3764
3940
|
slotProps: {
|
|
3765
3941
|
input: {
|
|
3766
3942
|
disableUnderline: true,
|
|
3767
|
-
startAdornment: /* @__PURE__ */ jsx(InputAdornment, { position: "start", sx: { ml: 0.5, mr: 1 }, children: /* @__PURE__ */ jsx(
|
|
3943
|
+
startAdornment: /* @__PURE__ */ jsx(InputAdornment, { position: "start", sx: { ml: 0.5, mr: 1 }, children: /* @__PURE__ */ jsx(Box19, { component: "span", sx: { fontSize: 18, opacity: 0.6 }, children: "\u2318" }) })
|
|
3768
3944
|
}
|
|
3769
3945
|
}
|
|
3770
3946
|
}
|
|
3771
3947
|
) }),
|
|
3772
3948
|
/* @__PURE__ */ jsx(Divider3, {}),
|
|
3773
3949
|
/* @__PURE__ */ jsx(
|
|
3774
|
-
|
|
3950
|
+
Box19,
|
|
3775
3951
|
{
|
|
3776
3952
|
sx: {
|
|
3777
3953
|
maxHeight: 360,
|
|
3778
3954
|
overflowY: "auto",
|
|
3779
3955
|
py: 0.5
|
|
3780
3956
|
},
|
|
3781
|
-
children: filtered.length === 0 ? /* @__PURE__ */ jsx(
|
|
3957
|
+
children: filtered.length === 0 ? /* @__PURE__ */ jsx(Box19, { sx: { p: 3, textAlign: "center" }, children: /* @__PURE__ */ jsx(Typography5, { variant: "body2", sx: {
|
|
3782
3958
|
color: "text.secondary"
|
|
3783
|
-
}, children: emptyMessage }) }) : grouped.map((g) => /* @__PURE__ */ jsxs(
|
|
3959
|
+
}, children: emptyMessage }) }) : grouped.map((g) => /* @__PURE__ */ jsxs(Box19, { children: [
|
|
3784
3960
|
g.label ? /* @__PURE__ */ jsx(
|
|
3785
3961
|
Typography5,
|
|
3786
3962
|
{
|
|
@@ -3826,7 +4002,7 @@ function Row({
|
|
|
3826
4002
|
}
|
|
3827
4003
|
}, [selected]);
|
|
3828
4004
|
return /* @__PURE__ */ jsxs(
|
|
3829
|
-
|
|
4005
|
+
Box19,
|
|
3830
4006
|
{
|
|
3831
4007
|
ref,
|
|
3832
4008
|
onMouseEnter: onHover,
|
|
@@ -3845,8 +4021,8 @@ function Row({
|
|
|
3845
4021
|
}
|
|
3846
4022
|
}),
|
|
3847
4023
|
children: [
|
|
3848
|
-
action.icon ? /* @__PURE__ */ jsx(
|
|
3849
|
-
/* @__PURE__ */ jsx(
|
|
4024
|
+
action.icon ? /* @__PURE__ */ jsx(Box19, { sx: { display: "flex", alignItems: "center", width: 20, opacity: 0.8 }, children: action.icon }) : null,
|
|
4025
|
+
/* @__PURE__ */ jsx(Box19, { sx: { flex: 1, minWidth: 0 }, children: /* @__PURE__ */ jsxs(Stack, { direction: "row", spacing: 1, sx: {
|
|
3850
4026
|
alignItems: "baseline"
|
|
3851
4027
|
}, children: [
|
|
3852
4028
|
/* @__PURE__ */ jsx(Typography5, { variant: "body2", sx: { fontWeight: 500 }, noWrap: true, children: action.title }),
|
|
@@ -3945,9 +4121,9 @@ function Tabs({
|
|
|
3945
4121
|
return items;
|
|
3946
4122
|
}, [tabs, children]);
|
|
3947
4123
|
const hasAction = action !== void 0 && action !== null && action !== false;
|
|
3948
|
-
return /* @__PURE__ */ jsxs(
|
|
4124
|
+
return /* @__PURE__ */ jsxs(Box19, { sx: { width: "100%" }, children: [
|
|
3949
4125
|
/* @__PURE__ */ jsxs(
|
|
3950
|
-
|
|
4126
|
+
Box19,
|
|
3951
4127
|
{
|
|
3952
4128
|
sx: {
|
|
3953
4129
|
display: "flex",
|
|
@@ -3968,7 +4144,7 @@ function Tabs({
|
|
|
3968
4144
|
tab.value
|
|
3969
4145
|
)) }),
|
|
3970
4146
|
hasAction && /* @__PURE__ */ jsx(
|
|
3971
|
-
|
|
4147
|
+
Box19,
|
|
3972
4148
|
{
|
|
3973
4149
|
sx: {
|
|
3974
4150
|
display: "flex",
|
|
@@ -3987,7 +4163,7 @@ function Tabs({
|
|
|
3987
4163
|
if (!isActive && !keepMounted) return null;
|
|
3988
4164
|
if (tab.content === void 0) return null;
|
|
3989
4165
|
return /* @__PURE__ */ jsx(
|
|
3990
|
-
|
|
4166
|
+
Box19,
|
|
3991
4167
|
{
|
|
3992
4168
|
role: "tabpanel",
|
|
3993
4169
|
hidden: !isActive,
|
|
@@ -4060,7 +4236,6 @@ function Accordion({
|
|
|
4060
4236
|
return {
|
|
4061
4237
|
border: 1,
|
|
4062
4238
|
borderColor: "divider",
|
|
4063
|
-
"&:not(:last-child)": { borderBottom: 0 },
|
|
4064
4239
|
"&::before": { display: "none" },
|
|
4065
4240
|
boxShadow: "none"
|
|
4066
4241
|
};
|
|
@@ -4086,7 +4261,7 @@ function Accordion({
|
|
|
4086
4261
|
/* @__PURE__ */ jsxs(
|
|
4087
4262
|
MuiAccordionSummary,
|
|
4088
4263
|
{
|
|
4089
|
-
expandIcon: /* @__PURE__ */ jsx(
|
|
4264
|
+
expandIcon: /* @__PURE__ */ jsx(ChevronDownIcon, {}),
|
|
4090
4265
|
"aria-controls": `${item.id}-content`,
|
|
4091
4266
|
id: `${item.id}-header`,
|
|
4092
4267
|
children: [
|
|
@@ -4114,7 +4289,7 @@ function Accordion({
|
|
|
4114
4289
|
}
|
|
4115
4290
|
function SimpleAccordion({ title, subtitle, children, icon, ...props }) {
|
|
4116
4291
|
return /* @__PURE__ */ jsxs(MuiAccordion, { ...props, children: [
|
|
4117
|
-
/* @__PURE__ */ jsxs(MuiAccordionSummary, { expandIcon: /* @__PURE__ */ jsx(
|
|
4292
|
+
/* @__PURE__ */ jsxs(MuiAccordionSummary, { expandIcon: /* @__PURE__ */ jsx(ChevronDownIcon, {}), children: [
|
|
4118
4293
|
icon && /* @__PURE__ */ jsx(Typography5, { component: "span", sx: { mr: 1, display: "flex", alignItems: "center" }, children: icon }),
|
|
4119
4294
|
/* @__PURE__ */ jsx(Typography5, { component: "span", sx: { fontWeight: 500 }, children: title }),
|
|
4120
4295
|
subtitle && /* @__PURE__ */ jsx(
|
|
@@ -4455,281 +4630,6 @@ function ScrollToTop({ pathname }) {
|
|
|
4455
4630
|
}, [pathname]);
|
|
4456
4631
|
return null;
|
|
4457
4632
|
}
|
|
4458
|
-
function parseStackFrame(line) {
|
|
4459
|
-
const patterns = [
|
|
4460
|
-
// Named function with file: at functionName (file:line:col)
|
|
4461
|
-
/at\s+(?:async\s+)?([^\s(]+)\s+\((.+?):(\d+):(\d+)\)/,
|
|
4462
|
-
// Anonymous at file: at file:line:col
|
|
4463
|
-
/at\s+(.+?):(\d+):(\d+)/,
|
|
4464
|
-
// Webpack/Vite transformed: at Module.functionName (file?xxx:line:col)
|
|
4465
|
-
/at\s+(?:async\s+)?(?:Module\.)?([^\s(]+)\s+\((.+?)\?[^:]*:(\d+):(\d+)\)/
|
|
4466
|
-
];
|
|
4467
|
-
for (const pattern of patterns) {
|
|
4468
|
-
const match = line.match(pattern);
|
|
4469
|
-
if (match) {
|
|
4470
|
-
const [, funcOrFile, file, lineStr, colStr] = match;
|
|
4471
|
-
const hasFile = file !== void 0;
|
|
4472
|
-
const functionName = hasFile ? funcOrFile : null;
|
|
4473
|
-
const filePath = hasFile ? file : funcOrFile;
|
|
4474
|
-
const lineNumber = parseInt(hasFile ? lineStr : file, 10);
|
|
4475
|
-
const columnNumber = parseInt(hasFile ? colStr : lineStr, 10);
|
|
4476
|
-
const isAppCode = filePath.includes("/src/") || filePath.includes("src/") && !filePath.includes("node_modules");
|
|
4477
|
-
return {
|
|
4478
|
-
functionName: functionName || null,
|
|
4479
|
-
filePath: cleanFilePath(filePath),
|
|
4480
|
-
lineNumber: isNaN(lineNumber) ? null : lineNumber,
|
|
4481
|
-
columnNumber: isNaN(columnNumber) ? null : columnNumber,
|
|
4482
|
-
isAppCode
|
|
4483
|
-
};
|
|
4484
|
-
}
|
|
4485
|
-
}
|
|
4486
|
-
return null;
|
|
4487
|
-
}
|
|
4488
|
-
function cleanFilePath(path) {
|
|
4489
|
-
const cleaned = path.replace(/\?.*$/, "");
|
|
4490
|
-
const srcIndex = cleaned.indexOf("/src/");
|
|
4491
|
-
if (srcIndex !== -1) {
|
|
4492
|
-
return cleaned.slice(srcIndex + 1);
|
|
4493
|
-
}
|
|
4494
|
-
const parts = cleaned.split("/");
|
|
4495
|
-
if (parts.length > 3) {
|
|
4496
|
-
return parts.slice(-3).join("/");
|
|
4497
|
-
}
|
|
4498
|
-
return cleaned;
|
|
4499
|
-
}
|
|
4500
|
-
function parseStackTrace(stack) {
|
|
4501
|
-
if (!stack) {
|
|
4502
|
-
return { primary: null, frames: [], raw: "" };
|
|
4503
|
-
}
|
|
4504
|
-
const lines = stack.split("\n");
|
|
4505
|
-
const frames = [];
|
|
4506
|
-
for (const line of lines) {
|
|
4507
|
-
const frame = parseStackFrame(line.trim());
|
|
4508
|
-
if (frame) {
|
|
4509
|
-
frames.push(frame);
|
|
4510
|
-
}
|
|
4511
|
-
}
|
|
4512
|
-
const primary = frames.find((f) => f.isAppCode) ?? frames[0] ?? null;
|
|
4513
|
-
return { primary, frames, raw: stack };
|
|
4514
|
-
}
|
|
4515
|
-
function getErrorLocation(error) {
|
|
4516
|
-
const parsed = parseStackTrace(error.stack);
|
|
4517
|
-
const { primary } = parsed;
|
|
4518
|
-
if (!primary) {
|
|
4519
|
-
return "Unknown location";
|
|
4520
|
-
}
|
|
4521
|
-
const parts = [];
|
|
4522
|
-
if (primary.functionName) {
|
|
4523
|
-
parts.push(`in ${primary.functionName}`);
|
|
4524
|
-
}
|
|
4525
|
-
if (primary.filePath) {
|
|
4526
|
-
const location = primary.lineNumber ? `${primary.filePath}:${primary.lineNumber}` : primary.filePath;
|
|
4527
|
-
parts.push(`(${location})`);
|
|
4528
|
-
}
|
|
4529
|
-
return parts.join(" ") || "Unknown location";
|
|
4530
|
-
}
|
|
4531
|
-
function DefaultErrorFallback({
|
|
4532
|
-
error,
|
|
4533
|
-
parsedStack,
|
|
4534
|
-
resetErrorBoundary,
|
|
4535
|
-
sx,
|
|
4536
|
-
showDetails
|
|
4537
|
-
}) {
|
|
4538
|
-
const [expanded, setExpanded] = useState(false);
|
|
4539
|
-
const [copied, setCopied] = useState(false);
|
|
4540
|
-
const shouldShowDetails = showDetails ?? (typeof process !== "undefined" && process.env.NODE_ENV === "development");
|
|
4541
|
-
const handleCopyStack = async () => {
|
|
4542
|
-
try {
|
|
4543
|
-
const text = [
|
|
4544
|
-
`Error: ${error.message}`,
|
|
4545
|
-
`Location: ${getErrorLocation(error)}`,
|
|
4546
|
-
"",
|
|
4547
|
-
"Stack Trace:",
|
|
4548
|
-
parsedStack.raw
|
|
4549
|
-
].join("\n");
|
|
4550
|
-
await navigator.clipboard.writeText(text);
|
|
4551
|
-
setCopied(true);
|
|
4552
|
-
setTimeout(() => setCopied(false), 2e3);
|
|
4553
|
-
} catch {
|
|
4554
|
-
}
|
|
4555
|
-
};
|
|
4556
|
-
return /* @__PURE__ */ jsxs(
|
|
4557
|
-
Box20,
|
|
4558
|
-
{
|
|
4559
|
-
sx: {
|
|
4560
|
-
display: "flex",
|
|
4561
|
-
flexDirection: "column",
|
|
4562
|
-
alignItems: "center",
|
|
4563
|
-
justifyContent: "center",
|
|
4564
|
-
minHeight: 200,
|
|
4565
|
-
p: 3,
|
|
4566
|
-
textAlign: "center",
|
|
4567
|
-
...sx
|
|
4568
|
-
},
|
|
4569
|
-
children: [
|
|
4570
|
-
/* @__PURE__ */ jsx(Typography5, { variant: "h6", color: "error", gutterBottom: true, children: "Something went wrong" }),
|
|
4571
|
-
/* @__PURE__ */ jsx(
|
|
4572
|
-
Typography5,
|
|
4573
|
-
{
|
|
4574
|
-
variant: "body2",
|
|
4575
|
-
sx: {
|
|
4576
|
-
color: "text.secondary",
|
|
4577
|
-
mb: 1,
|
|
4578
|
-
maxWidth: 400
|
|
4579
|
-
},
|
|
4580
|
-
children: error.message || "An unexpected error occurred"
|
|
4581
|
-
}
|
|
4582
|
-
),
|
|
4583
|
-
shouldShowDetails && parsedStack.primary && /* @__PURE__ */ jsxs(
|
|
4584
|
-
Typography5,
|
|
4585
|
-
{
|
|
4586
|
-
variant: "caption",
|
|
4587
|
-
sx: {
|
|
4588
|
-
color: "text.secondary",
|
|
4589
|
-
mb: 2,
|
|
4590
|
-
fontFamily: "monospace"
|
|
4591
|
-
},
|
|
4592
|
-
children: [
|
|
4593
|
-
parsedStack.primary.filePath,
|
|
4594
|
-
parsedStack.primary.lineNumber && `:${parsedStack.primary.lineNumber}`,
|
|
4595
|
-
parsedStack.primary.functionName && ` (${parsedStack.primary.functionName})`
|
|
4596
|
-
]
|
|
4597
|
-
}
|
|
4598
|
-
),
|
|
4599
|
-
/* @__PURE__ */ jsxs(Box20, { sx: { display: "flex", gap: 1, mb: 2 }, children: [
|
|
4600
|
-
/* @__PURE__ */ jsx(Button, { variant: "outlined", onClick: resetErrorBoundary, children: "Try Again" }),
|
|
4601
|
-
shouldShowDetails && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
4602
|
-
/* @__PURE__ */ jsx(
|
|
4603
|
-
IconButton3,
|
|
4604
|
-
{
|
|
4605
|
-
size: "small",
|
|
4606
|
-
onClick: () => setExpanded(!expanded),
|
|
4607
|
-
sx: {
|
|
4608
|
-
transform: expanded ? "rotate(180deg)" : "rotate(0deg)",
|
|
4609
|
-
transition: "transform 0.2s"
|
|
4610
|
-
},
|
|
4611
|
-
children: /* @__PURE__ */ jsx(ExpandMoreIcon, {})
|
|
4612
|
-
}
|
|
4613
|
-
),
|
|
4614
|
-
/* @__PURE__ */ jsx(IconButton3, { size: "small", onClick: handleCopyStack, title: "Copy error details", children: /* @__PURE__ */ jsx(ContentCopyIcon, { fontSize: "small" }) }),
|
|
4615
|
-
copied && /* @__PURE__ */ jsx(
|
|
4616
|
-
Typography5,
|
|
4617
|
-
{
|
|
4618
|
-
variant: "caption",
|
|
4619
|
-
sx: {
|
|
4620
|
-
color: "success.main",
|
|
4621
|
-
alignSelf: "center"
|
|
4622
|
-
},
|
|
4623
|
-
children: "Copied!"
|
|
4624
|
-
}
|
|
4625
|
-
)
|
|
4626
|
-
] })
|
|
4627
|
-
] }),
|
|
4628
|
-
shouldShowDetails && /* @__PURE__ */ jsx(Collapse, { in: expanded, children: /* @__PURE__ */ jsx(
|
|
4629
|
-
Box20,
|
|
4630
|
-
{
|
|
4631
|
-
sx: {
|
|
4632
|
-
mt: 1,
|
|
4633
|
-
p: 2,
|
|
4634
|
-
bgcolor: "grey.100",
|
|
4635
|
-
borderRadius: 1,
|
|
4636
|
-
maxWidth: 600,
|
|
4637
|
-
maxHeight: 300,
|
|
4638
|
-
overflow: "auto",
|
|
4639
|
-
textAlign: "left"
|
|
4640
|
-
},
|
|
4641
|
-
children: /* @__PURE__ */ jsx(Typography5, { variant: "caption", component: "pre", sx: { fontFamily: "monospace", m: 0 }, children: parsedStack.frames.map((frame, i) => /* @__PURE__ */ jsxs(
|
|
4642
|
-
Box20,
|
|
4643
|
-
{
|
|
4644
|
-
component: "span",
|
|
4645
|
-
sx: {
|
|
4646
|
-
display: "block",
|
|
4647
|
-
color: frame.isAppCode ? "error.main" : "text.secondary",
|
|
4648
|
-
fontWeight: frame.isAppCode ? 600 : 400
|
|
4649
|
-
},
|
|
4650
|
-
children: [
|
|
4651
|
-
frame.functionName || "(anonymous)",
|
|
4652
|
-
" at ",
|
|
4653
|
-
frame.filePath || "unknown",
|
|
4654
|
-
frame.lineNumber && `:${frame.lineNumber}`
|
|
4655
|
-
]
|
|
4656
|
-
},
|
|
4657
|
-
i
|
|
4658
|
-
)) })
|
|
4659
|
-
}
|
|
4660
|
-
) })
|
|
4661
|
-
]
|
|
4662
|
-
}
|
|
4663
|
-
);
|
|
4664
|
-
}
|
|
4665
|
-
var ErrorBoundary = class extends Component {
|
|
4666
|
-
constructor(props) {
|
|
4667
|
-
super(props);
|
|
4668
|
-
this.state = {
|
|
4669
|
-
hasError: false,
|
|
4670
|
-
error: null,
|
|
4671
|
-
errorInfo: null
|
|
4672
|
-
};
|
|
4673
|
-
}
|
|
4674
|
-
static getDerivedStateFromError(error) {
|
|
4675
|
-
return {
|
|
4676
|
-
hasError: true,
|
|
4677
|
-
error
|
|
4678
|
-
};
|
|
4679
|
-
}
|
|
4680
|
-
componentDidCatch(error, errorInfo) {
|
|
4681
|
-
const parsedStack = parseStackTrace(error.stack);
|
|
4682
|
-
this.setState({ errorInfo });
|
|
4683
|
-
this.props.onError?.(error, errorInfo, parsedStack);
|
|
4684
|
-
}
|
|
4685
|
-
componentDidUpdate(prevProps) {
|
|
4686
|
-
const { resetKeys } = this.props;
|
|
4687
|
-
const { hasError } = this.state;
|
|
4688
|
-
if (hasError && resetKeys && prevProps.resetKeys) {
|
|
4689
|
-
const hasKeyChanged = resetKeys.some((key, index) => key !== prevProps.resetKeys?.[index]);
|
|
4690
|
-
if (hasKeyChanged) {
|
|
4691
|
-
this.resetErrorBoundary();
|
|
4692
|
-
}
|
|
4693
|
-
}
|
|
4694
|
-
}
|
|
4695
|
-
resetErrorBoundary = () => {
|
|
4696
|
-
this.props.onReset?.();
|
|
4697
|
-
this.setState({
|
|
4698
|
-
hasError: false,
|
|
4699
|
-
error: null,
|
|
4700
|
-
errorInfo: null
|
|
4701
|
-
});
|
|
4702
|
-
};
|
|
4703
|
-
render() {
|
|
4704
|
-
const { hasError, error, errorInfo } = this.state;
|
|
4705
|
-
const { children, fallback, sx, showDetails } = this.props;
|
|
4706
|
-
if (hasError && error) {
|
|
4707
|
-
const parsedStack = parseStackTrace(error.stack);
|
|
4708
|
-
const fallbackProps = {
|
|
4709
|
-
error,
|
|
4710
|
-
errorInfo,
|
|
4711
|
-
parsedStack,
|
|
4712
|
-
resetErrorBoundary: this.resetErrorBoundary
|
|
4713
|
-
};
|
|
4714
|
-
if (typeof fallback === "function") {
|
|
4715
|
-
return fallback(fallbackProps);
|
|
4716
|
-
}
|
|
4717
|
-
if (fallback) {
|
|
4718
|
-
return fallback;
|
|
4719
|
-
}
|
|
4720
|
-
return /* @__PURE__ */ jsx(DefaultErrorFallback, { ...fallbackProps, sx, showDetails });
|
|
4721
|
-
}
|
|
4722
|
-
return children;
|
|
4723
|
-
}
|
|
4724
|
-
};
|
|
4725
|
-
function useErrorBoundary() {
|
|
4726
|
-
const [, setError] = useState(null);
|
|
4727
|
-
return (error) => {
|
|
4728
|
-
setError(() => {
|
|
4729
|
-
throw error;
|
|
4730
|
-
});
|
|
4731
|
-
};
|
|
4732
|
-
}
|
|
4733
4633
|
var SettingsContext = createContext(null);
|
|
4734
4634
|
function SettingsProvider({ children, defaultOpen = false }) {
|
|
4735
4635
|
const [open, setOpen] = useState(defaultOpen);
|
|
@@ -4846,7 +4746,7 @@ var PRESET_COLORS = {
|
|
|
4846
4746
|
minimal: "#64748B"
|
|
4847
4747
|
};
|
|
4848
4748
|
function Section({ title, children }) {
|
|
4849
|
-
return /* @__PURE__ */ jsxs(
|
|
4749
|
+
return /* @__PURE__ */ jsxs(Box19, { sx: { mb: 3 }, children: [
|
|
4850
4750
|
/* @__PURE__ */ jsx(
|
|
4851
4751
|
Typography5,
|
|
4852
4752
|
{
|
|
@@ -4990,7 +4890,7 @@ function PresetsSection() {
|
|
|
4990
4890
|
const { settings, actions } = useSettings();
|
|
4991
4891
|
const theme = useTheme();
|
|
4992
4892
|
return /* @__PURE__ */ jsx(Section, { title: "Presets", children: /* @__PURE__ */ jsx(
|
|
4993
|
-
|
|
4893
|
+
Box19,
|
|
4994
4894
|
{
|
|
4995
4895
|
sx: {
|
|
4996
4896
|
display: "grid",
|
|
@@ -5000,8 +4900,8 @@ function PresetsSection() {
|
|
|
5000
4900
|
children: PRESET_NAMES.map((preset) => {
|
|
5001
4901
|
const isSelected = settings.preset === preset;
|
|
5002
4902
|
const color = PRESET_COLORS[preset] || "#666";
|
|
5003
|
-
return /* @__PURE__ */ jsx(
|
|
5004
|
-
|
|
4903
|
+
return /* @__PURE__ */ jsx(Tooltip2, { title: PRESET_DISPLAY_NAMES[preset], placement: "top", children: /* @__PURE__ */ jsx(
|
|
4904
|
+
Box19,
|
|
5005
4905
|
{
|
|
5006
4906
|
onClick: () => actions.setPreset(preset),
|
|
5007
4907
|
sx: {
|
|
@@ -5021,7 +4921,7 @@ function PresetsSection() {
|
|
|
5021
4921
|
}
|
|
5022
4922
|
},
|
|
5023
4923
|
children: isSelected && /* @__PURE__ */ jsx(
|
|
5024
|
-
|
|
4924
|
+
Box19,
|
|
5025
4925
|
{
|
|
5026
4926
|
sx: {
|
|
5027
4927
|
width: 8,
|
|
@@ -5050,11 +4950,11 @@ var COLOR_OPTIONS = [
|
|
|
5050
4950
|
function PrimaryColorSection() {
|
|
5051
4951
|
const { settings, actions } = useSettings();
|
|
5052
4952
|
const theme = useTheme();
|
|
5053
|
-
return /* @__PURE__ */ jsx(Section, { title: "Primary Color", children: /* @__PURE__ */ jsxs(
|
|
4953
|
+
return /* @__PURE__ */ jsx(Section, { title: "Primary Color", children: /* @__PURE__ */ jsxs(Box19, { sx: { display: "flex", gap: 1, flexWrap: "wrap" }, children: [
|
|
5054
4954
|
COLOR_OPTIONS.map((option) => {
|
|
5055
4955
|
const isSelected = settings.primaryColor === option.value;
|
|
5056
|
-
return /* @__PURE__ */ jsx(
|
|
5057
|
-
|
|
4956
|
+
return /* @__PURE__ */ jsx(Tooltip2, { title: option.label, placement: "top", children: /* @__PURE__ */ jsx(
|
|
4957
|
+
Box19,
|
|
5058
4958
|
{
|
|
5059
4959
|
onClick: () => actions.setPrimaryColor(option.value),
|
|
5060
4960
|
sx: {
|
|
@@ -5073,7 +4973,7 @@ function PrimaryColorSection() {
|
|
|
5073
4973
|
}
|
|
5074
4974
|
},
|
|
5075
4975
|
children: isSelected && /* @__PURE__ */ jsx(
|
|
5076
|
-
|
|
4976
|
+
Box19,
|
|
5077
4977
|
{
|
|
5078
4978
|
sx: {
|
|
5079
4979
|
width: 6,
|
|
@@ -5086,8 +4986,8 @@ function PrimaryColorSection() {
|
|
|
5086
4986
|
}
|
|
5087
4987
|
) }, option.value);
|
|
5088
4988
|
}),
|
|
5089
|
-
settings.primaryColor && /* @__PURE__ */ jsx(
|
|
5090
|
-
|
|
4989
|
+
settings.primaryColor && /* @__PURE__ */ jsx(Tooltip2, { title: "Reset to default", placement: "top", children: /* @__PURE__ */ jsx(
|
|
4990
|
+
Box19,
|
|
5091
4991
|
{
|
|
5092
4992
|
onClick: () => actions.setPrimaryColor(null),
|
|
5093
4993
|
sx: {
|
|
@@ -5177,10 +5077,10 @@ function NavLayoutSection() {
|
|
|
5177
5077
|
{ value: "horizontal", label: "Horizontal", icon: "\u25AC" },
|
|
5178
5078
|
{ value: "mini", label: "Mini", icon: "\u2502" }
|
|
5179
5079
|
];
|
|
5180
|
-
return /* @__PURE__ */ jsx(Section, { title: "Navigation Layout", children: /* @__PURE__ */ jsx(
|
|
5080
|
+
return /* @__PURE__ */ jsx(Section, { title: "Navigation Layout", children: /* @__PURE__ */ jsx(Box19, { sx: { display: "flex", gap: 1.5 }, children: layoutOptions.map((option) => {
|
|
5181
5081
|
const isSelected = settings.navLayout === option.value;
|
|
5182
5082
|
return /* @__PURE__ */ jsxs(
|
|
5183
|
-
|
|
5083
|
+
Box19,
|
|
5184
5084
|
{
|
|
5185
5085
|
onClick: () => actions.setNavLayout(option.value),
|
|
5186
5086
|
sx: {
|
|
@@ -5248,7 +5148,7 @@ function SettingsDrawer({ width = 300, sections = DEFAULT_SECTIONS }) {
|
|
|
5248
5148
|
},
|
|
5249
5149
|
children: [
|
|
5250
5150
|
/* @__PURE__ */ jsxs(
|
|
5251
|
-
|
|
5151
|
+
Box19,
|
|
5252
5152
|
{
|
|
5253
5153
|
sx: {
|
|
5254
5154
|
display: "flex",
|
|
@@ -5260,22 +5160,22 @@ function SettingsDrawer({ width = 300, sections = DEFAULT_SECTIONS }) {
|
|
|
5260
5160
|
children: [
|
|
5261
5161
|
/* @__PURE__ */ jsx(Typography5, { variant: "h6", sx: { fontWeight: 600 }, children: "Settings" }),
|
|
5262
5162
|
/* @__PURE__ */ jsxs(Stack, { direction: "row", spacing: 0.5, children: [
|
|
5263
|
-
canReset && /* @__PURE__ */ jsx(
|
|
5264
|
-
/* @__PURE__ */ jsx(
|
|
5163
|
+
canReset && /* @__PURE__ */ jsx(Tooltip2, { title: "Reset to defaults", children: /* @__PURE__ */ jsx(IconButton4, { size: "small", onClick: actions.reset, "aria-label": "Reset settings to defaults", children: /* @__PURE__ */ jsx(RefreshIcon, {}) }) }),
|
|
5164
|
+
/* @__PURE__ */ jsx(IconButton4, { size: "small", onClick: drawer.onClose, "aria-label": "Close settings", children: /* @__PURE__ */ jsx(CloseIcon2, {}) })
|
|
5265
5165
|
] })
|
|
5266
5166
|
]
|
|
5267
5167
|
}
|
|
5268
5168
|
),
|
|
5269
|
-
/* @__PURE__ */ jsx(
|
|
5169
|
+
/* @__PURE__ */ jsx(Box19, { sx: { p: 2.5, flex: 1, overflowY: "auto" }, children: sections.map((section) => {
|
|
5270
5170
|
const SectionComponent = SECTION_COMPONENTS[section];
|
|
5271
5171
|
return SectionComponent ? /* @__PURE__ */ jsx(SectionComponent, {}, section) : null;
|
|
5272
5172
|
}) }),
|
|
5273
|
-
/* @__PURE__ */ jsx(
|
|
5173
|
+
/* @__PURE__ */ jsx(Box19, { sx: { p: 2, borderTop: `1px solid ${theme.palette.divider}` }, children: /* @__PURE__ */ jsx(Button, { fullWidth: true, variant: "soft", color: "primary", onClick: drawer.onClose, children: "Close" }) })
|
|
5274
5174
|
]
|
|
5275
5175
|
}
|
|
5276
5176
|
);
|
|
5277
5177
|
}
|
|
5278
|
-
function
|
|
5178
|
+
function Tooltip3({
|
|
5279
5179
|
title,
|
|
5280
5180
|
children,
|
|
5281
5181
|
arrow = true,
|
|
@@ -5287,7 +5187,7 @@ function Tooltip2({
|
|
|
5287
5187
|
return children;
|
|
5288
5188
|
}
|
|
5289
5189
|
return /* @__PURE__ */ jsx(
|
|
5290
|
-
|
|
5190
|
+
Tooltip2,
|
|
5291
5191
|
{
|
|
5292
5192
|
title,
|
|
5293
5193
|
arrow,
|
|
@@ -5305,6 +5205,9 @@ function Tooltip2({
|
|
|
5305
5205
|
}
|
|
5306
5206
|
);
|
|
5307
5207
|
}
|
|
5208
|
+
function mergeSx(own, sx) {
|
|
5209
|
+
return [own, ...Array.isArray(sx) ? sx : sx ? [sx] : []];
|
|
5210
|
+
}
|
|
5308
5211
|
function Alert2({
|
|
5309
5212
|
severity = "info",
|
|
5310
5213
|
variant = "standard",
|
|
@@ -5314,27 +5217,31 @@ function Alert2({
|
|
|
5314
5217
|
closable = false,
|
|
5315
5218
|
icon,
|
|
5316
5219
|
action,
|
|
5317
|
-
sx
|
|
5220
|
+
sx,
|
|
5221
|
+
ref,
|
|
5222
|
+
...other
|
|
5318
5223
|
}) {
|
|
5319
5224
|
const muiVariant = variant === "soft" ? "standard" : variant;
|
|
5320
5225
|
return /* @__PURE__ */ jsxs(
|
|
5321
5226
|
MuiAlert,
|
|
5322
5227
|
{
|
|
5228
|
+
ref,
|
|
5229
|
+
...other,
|
|
5323
5230
|
severity,
|
|
5324
5231
|
variant: muiVariant,
|
|
5325
5232
|
onClose: closable ? onClose : void 0,
|
|
5326
5233
|
icon,
|
|
5327
5234
|
action,
|
|
5328
|
-
sx:
|
|
5329
|
-
|
|
5235
|
+
sx: mergeSx(
|
|
5236
|
+
variant === "soft" ? {
|
|
5330
5237
|
backgroundColor: (theme) => alpha(theme.palette[severity].main, theme.palette.mode === "light" ? 0.12 : 0.16),
|
|
5331
5238
|
color: (theme) => theme.palette.mode === "light" ? theme.palette[severity].dark : theme.palette[severity].light,
|
|
5332
5239
|
"& .MuiAlert-icon": {
|
|
5333
5240
|
color: "inherit"
|
|
5334
5241
|
}
|
|
5335
|
-
},
|
|
5336
|
-
|
|
5337
|
-
|
|
5242
|
+
} : {},
|
|
5243
|
+
sx
|
|
5244
|
+
),
|
|
5338
5245
|
children: [
|
|
5339
5246
|
title && /* @__PURE__ */ jsx(AlertTitle, { children: title }),
|
|
5340
5247
|
children
|
|
@@ -5342,19 +5249,24 @@ function Alert2({
|
|
|
5342
5249
|
}
|
|
5343
5250
|
);
|
|
5344
5251
|
}
|
|
5345
|
-
function InlineAlert({ severity = "info", message, icon }) {
|
|
5252
|
+
function InlineAlert({ severity = "info", message, icon, sx, ref, ...other }) {
|
|
5346
5253
|
return /* @__PURE__ */ jsx(
|
|
5347
5254
|
MuiAlert,
|
|
5348
5255
|
{
|
|
5256
|
+
ref,
|
|
5257
|
+
...other,
|
|
5349
5258
|
severity,
|
|
5350
5259
|
icon,
|
|
5351
|
-
sx:
|
|
5352
|
-
|
|
5353
|
-
|
|
5354
|
-
|
|
5355
|
-
|
|
5356
|
-
|
|
5357
|
-
|
|
5260
|
+
sx: mergeSx(
|
|
5261
|
+
{
|
|
5262
|
+
py: 0,
|
|
5263
|
+
px: 1,
|
|
5264
|
+
"& .MuiAlert-message": {
|
|
5265
|
+
py: 0.5
|
|
5266
|
+
}
|
|
5267
|
+
},
|
|
5268
|
+
sx
|
|
5269
|
+
),
|
|
5358
5270
|
children: message
|
|
5359
5271
|
}
|
|
5360
5272
|
);
|
|
@@ -5365,11 +5277,14 @@ function FormAlert({
|
|
|
5365
5277
|
children,
|
|
5366
5278
|
onClose,
|
|
5367
5279
|
autoScroll = true,
|
|
5368
|
-
sx
|
|
5280
|
+
sx,
|
|
5281
|
+
ref: outerRef,
|
|
5282
|
+
...other
|
|
5369
5283
|
}) {
|
|
5370
5284
|
const ref = useRef(null);
|
|
5285
|
+
const handleRef = useForkRef(ref, outerRef);
|
|
5371
5286
|
useEffect(() => {
|
|
5372
|
-
if (!autoScroll) return;
|
|
5287
|
+
if (!autoScroll) return void 0;
|
|
5373
5288
|
const id = requestAnimationFrame(() => {
|
|
5374
5289
|
ref.current?.scrollIntoView({ block: "nearest", behavior: "smooth" });
|
|
5375
5290
|
});
|
|
@@ -5378,17 +5293,20 @@ function FormAlert({
|
|
|
5378
5293
|
return /* @__PURE__ */ jsxs(
|
|
5379
5294
|
MuiAlert,
|
|
5380
5295
|
{
|
|
5381
|
-
ref,
|
|
5296
|
+
ref: handleRef,
|
|
5297
|
+
...other,
|
|
5382
5298
|
severity,
|
|
5383
5299
|
onClose,
|
|
5384
5300
|
role: "alert",
|
|
5385
5301
|
"aria-live": "assertive",
|
|
5386
5302
|
"aria-atomic": "true",
|
|
5387
|
-
sx:
|
|
5388
|
-
|
|
5389
|
-
|
|
5390
|
-
|
|
5391
|
-
|
|
5303
|
+
sx: mergeSx(
|
|
5304
|
+
{
|
|
5305
|
+
alignItems: "flex-start",
|
|
5306
|
+
mb: 2
|
|
5307
|
+
},
|
|
5308
|
+
sx
|
|
5309
|
+
),
|
|
5392
5310
|
children: [
|
|
5393
5311
|
title && /* @__PURE__ */ jsx(AlertTitle, { sx: { mb: 0.5 }, children: title }),
|
|
5394
5312
|
children
|
|
@@ -5443,7 +5361,12 @@ var ItemRoot = styled("div", {
|
|
|
5443
5361
|
}));
|
|
5444
5362
|
var ItemIcon = styled("span")({
|
|
5445
5363
|
display: "inherit",
|
|
5446
|
-
|
|
5364
|
+
// Constrain the icon (first real child) to 20×20. The previous
|
|
5365
|
+
// selector chain `:first-of-type:not(style):not(:first-of-type ~ *)`
|
|
5366
|
+
// was an obscure way to say "the first child that isn't a <style>
|
|
5367
|
+
// tag" — replaced with the modern `:first-child:not(style)` for
|
|
5368
|
+
// both readability and v9 lint compliance.
|
|
5369
|
+
"& > :first-child:not(style)": {
|
|
5447
5370
|
width: 20,
|
|
5448
5371
|
height: 20
|
|
5449
5372
|
}
|
|
@@ -5510,8 +5433,18 @@ function BreadcrumbLink({
|
|
|
5510
5433
|
}
|
|
5511
5434
|
return content;
|
|
5512
5435
|
}
|
|
5436
|
+
var SAFE_LINK_SCHEMES = /* @__PURE__ */ new Set(["http:", "https:", "mailto:", "tel:"]);
|
|
5437
|
+
function isSafeExternalLink(href) {
|
|
5438
|
+
const trimmed = href.trim();
|
|
5439
|
+
if (trimmed.startsWith("/") || trimmed.startsWith("#")) return true;
|
|
5440
|
+
try {
|
|
5441
|
+
return SAFE_LINK_SCHEMES.has(new URL(trimmed, "https://placeholder.invalid").protocol);
|
|
5442
|
+
} catch {
|
|
5443
|
+
return false;
|
|
5444
|
+
}
|
|
5445
|
+
}
|
|
5513
5446
|
function MoreLinks({ links, sx, ...other }) {
|
|
5514
|
-
return /* @__PURE__ */ jsx(MoreLinksRoot, { sx, ...other, children: links?.map((href) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(Link, { href, variant: "body2", target: "_blank", rel: "noopener noreferrer", children: href }) }, href)) });
|
|
5447
|
+
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)) });
|
|
5515
5448
|
}
|
|
5516
5449
|
function Breadcrumbs({
|
|
5517
5450
|
sx,
|
|
@@ -5573,7 +5506,7 @@ function NavCard({
|
|
|
5573
5506
|
const label = ariaLabel ?? (typeof title === "string" && typeof description === "string" ? `${title} \u2014 ${description}` : void 0);
|
|
5574
5507
|
const isVertical = orientation === "vertical";
|
|
5575
5508
|
return /* @__PURE__ */ jsx(
|
|
5576
|
-
|
|
5509
|
+
Card2,
|
|
5577
5510
|
{
|
|
5578
5511
|
variant: "outlined",
|
|
5579
5512
|
...linkProps,
|
|
@@ -5643,7 +5576,7 @@ function NavCard({
|
|
|
5643
5576
|
// arrow into a narrow tile just steals text space).
|
|
5644
5577
|
/* @__PURE__ */ jsxs(Fragment, { children: [
|
|
5645
5578
|
icon && /* @__PURE__ */ jsx(
|
|
5646
|
-
|
|
5579
|
+
Box19,
|
|
5647
5580
|
{
|
|
5648
5581
|
sx: {
|
|
5649
5582
|
width: 40,
|
|
@@ -5659,7 +5592,7 @@ function NavCard({
|
|
|
5659
5592
|
children: icon
|
|
5660
5593
|
}
|
|
5661
5594
|
),
|
|
5662
|
-
/* @__PURE__ */ jsxs(
|
|
5595
|
+
/* @__PURE__ */ jsxs(Box19, { sx: { display: "flex", alignItems: "center", gap: 1, flexWrap: "wrap" }, children: [
|
|
5663
5596
|
/* @__PURE__ */ jsx(
|
|
5664
5597
|
Typography5,
|
|
5665
5598
|
{
|
|
@@ -5699,10 +5632,10 @@ function NavCard({
|
|
|
5699
5632
|
}
|
|
5700
5633
|
)
|
|
5701
5634
|
] })
|
|
5702
|
-
) : /* @__PURE__ */ jsxs(
|
|
5703
|
-
/* @__PURE__ */ jsxs(
|
|
5635
|
+
) : /* @__PURE__ */ jsxs(Box19, { sx: { display: "flex", alignItems: "center", justifyContent: "space-between", width: "100%", gap: 1 }, children: [
|
|
5636
|
+
/* @__PURE__ */ jsxs(Box19, { sx: { display: "flex", alignItems: "center", gap: 2, minWidth: 0 }, children: [
|
|
5704
5637
|
icon && /* @__PURE__ */ jsx(
|
|
5705
|
-
|
|
5638
|
+
Box19,
|
|
5706
5639
|
{
|
|
5707
5640
|
sx: {
|
|
5708
5641
|
width: iconSize,
|
|
@@ -5718,8 +5651,8 @@ function NavCard({
|
|
|
5718
5651
|
children: icon
|
|
5719
5652
|
}
|
|
5720
5653
|
),
|
|
5721
|
-
/* @__PURE__ */ jsxs(
|
|
5722
|
-
/* @__PURE__ */ jsxs(
|
|
5654
|
+
/* @__PURE__ */ jsxs(Box19, { sx: { minWidth: 0, flex: 1 }, children: [
|
|
5655
|
+
/* @__PURE__ */ jsxs(Box19, { sx: { display: "flex", alignItems: "center", gap: 1, flexWrap: "wrap" }, children: [
|
|
5723
5656
|
/* @__PURE__ */ jsx(
|
|
5724
5657
|
Typography5,
|
|
5725
5658
|
{
|
|
@@ -5754,7 +5687,7 @@ function NavCard({
|
|
|
5754
5687
|
)
|
|
5755
5688
|
] })
|
|
5756
5689
|
] }),
|
|
5757
|
-
arrow !== false && /* @__PURE__ */ jsx(
|
|
5690
|
+
arrow !== false && /* @__PURE__ */ jsx(Box19, { sx: { display: "flex", alignItems: "center", flexShrink: 0, color: "text.secondary" }, children: arrow === true ? /* @__PURE__ */ jsx(ChevronRightIcon, {}) : arrow })
|
|
5758
5691
|
] })
|
|
5759
5692
|
}
|
|
5760
5693
|
)
|
|
@@ -5768,7 +5701,7 @@ function NavCardGrid({
|
|
|
5768
5701
|
sx
|
|
5769
5702
|
}) {
|
|
5770
5703
|
return /* @__PURE__ */ jsx(
|
|
5771
|
-
|
|
5704
|
+
Box19,
|
|
5772
5705
|
{
|
|
5773
5706
|
sx: {
|
|
5774
5707
|
display: "grid",
|
|
@@ -5830,7 +5763,7 @@ function Drawer2({
|
|
|
5830
5763
|
children: [
|
|
5831
5764
|
(title || showCloseButton || headerActions) && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
5832
5765
|
/* @__PURE__ */ jsxs(
|
|
5833
|
-
|
|
5766
|
+
Box19,
|
|
5834
5767
|
{
|
|
5835
5768
|
sx: {
|
|
5836
5769
|
display: "flex",
|
|
@@ -5841,9 +5774,9 @@ function Drawer2({
|
|
|
5841
5774
|
},
|
|
5842
5775
|
children: [
|
|
5843
5776
|
title && /* @__PURE__ */ jsx(Typography5, { variant: "h6", component: "div", children: title }),
|
|
5844
|
-
/* @__PURE__ */ jsxs(
|
|
5777
|
+
/* @__PURE__ */ jsxs(Box19, { sx: { display: "flex", alignItems: "center", gap: 1, ml: "auto" }, children: [
|
|
5845
5778
|
headerActions,
|
|
5846
|
-
showCloseButton && onClose && /* @__PURE__ */ jsx(
|
|
5779
|
+
showCloseButton && onClose && /* @__PURE__ */ jsx(IconButton4, { onClick: onClose, edge: "end", size: "small", "aria-label": "Close drawer", children: closeIcon ?? /* @__PURE__ */ jsx(DefaultCloseIcon, {}) })
|
|
5847
5780
|
] })
|
|
5848
5781
|
]
|
|
5849
5782
|
}
|
|
@@ -5851,7 +5784,7 @@ function Drawer2({
|
|
|
5851
5784
|
/* @__PURE__ */ jsx(Divider3, {})
|
|
5852
5785
|
] }),
|
|
5853
5786
|
/* @__PURE__ */ jsx(
|
|
5854
|
-
|
|
5787
|
+
Box19,
|
|
5855
5788
|
{
|
|
5856
5789
|
sx: {
|
|
5857
5790
|
flex: 1,
|
|
@@ -5863,7 +5796,7 @@ function Drawer2({
|
|
|
5863
5796
|
),
|
|
5864
5797
|
footer && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
5865
5798
|
/* @__PURE__ */ jsx(Divider3, {}),
|
|
5866
|
-
/* @__PURE__ */ jsx(
|
|
5799
|
+
/* @__PURE__ */ jsx(Box19, { sx: { p: 2 }, children: footer })
|
|
5867
5800
|
] })
|
|
5868
5801
|
]
|
|
5869
5802
|
}
|
|
@@ -5963,9 +5896,9 @@ function StepperActions({
|
|
|
5963
5896
|
disableNext = false,
|
|
5964
5897
|
actions
|
|
5965
5898
|
}) {
|
|
5966
|
-
return /* @__PURE__ */ jsxs(
|
|
5899
|
+
return /* @__PURE__ */ jsxs(Box19, { sx: { display: "flex", gap: 2, mt: 3 }, children: [
|
|
5967
5900
|
/* @__PURE__ */ jsx(Button, { variant: "outlined", onClick: stepper.prevStep, disabled: stepper.isFirstStep, children: backLabel }),
|
|
5968
|
-
/* @__PURE__ */ jsx(
|
|
5901
|
+
/* @__PURE__ */ jsx(Box19, { sx: { flex: 1 } }),
|
|
5969
5902
|
actions,
|
|
5970
5903
|
/* @__PURE__ */ jsx(Button, { variant: "contained", onClick: stepper.nextStep, disabled: disableNext, children: stepper.isLastStep ? finishLabel : nextLabel })
|
|
5971
5904
|
] });
|
|
@@ -6007,7 +5940,7 @@ var CIRCULAR_TYPES = ["donut", "radialBar", "pie", "polarArea"];
|
|
|
6007
5940
|
function ChartLoading({ sx, className, type, ...other }) {
|
|
6008
5941
|
const isCircular = type && CIRCULAR_TYPES.includes(type);
|
|
6009
5942
|
return /* @__PURE__ */ jsx(
|
|
6010
|
-
|
|
5943
|
+
Box19,
|
|
6011
5944
|
{
|
|
6012
5945
|
className: cn(chartClasses.loading, className),
|
|
6013
5946
|
sx: [
|
|
@@ -6029,7 +5962,7 @@ function ChartLoading({ sx, className, type, ...other }) {
|
|
|
6029
5962
|
],
|
|
6030
5963
|
...other,
|
|
6031
5964
|
children: /* @__PURE__ */ jsx(
|
|
6032
|
-
|
|
5965
|
+
Skeleton3,
|
|
6033
5966
|
{
|
|
6034
5967
|
variant: "circular",
|
|
6035
5968
|
sx: {
|
|
@@ -6378,6 +6311,17 @@ function deepMerge(target, source) {
|
|
|
6378
6311
|
return output;
|
|
6379
6312
|
}
|
|
6380
6313
|
|
|
6314
|
+
// src/components/lightbox/types.ts
|
|
6315
|
+
var DEFAULT_LIGHTBOX_LABELS = {
|
|
6316
|
+
zoomIn: "Zoom in",
|
|
6317
|
+
zoomOut: "Zoom out",
|
|
6318
|
+
download: "Download",
|
|
6319
|
+
share: "Share",
|
|
6320
|
+
close: "Close",
|
|
6321
|
+
previous: "Previous",
|
|
6322
|
+
next: "Next"
|
|
6323
|
+
};
|
|
6324
|
+
|
|
6381
6325
|
// src/components/lightbox/classes.ts
|
|
6382
6326
|
var lightboxClasses = {
|
|
6383
6327
|
root: createClasses("lightbox__root"),
|
|
@@ -6428,12 +6372,14 @@ function Lightbox({
|
|
|
6428
6372
|
closeOnBackdropClick = true,
|
|
6429
6373
|
closeOnEsc = true,
|
|
6430
6374
|
toolbar = { show: true, position: "top" },
|
|
6375
|
+
labels: labelOverrides,
|
|
6431
6376
|
sx,
|
|
6432
6377
|
slotProps,
|
|
6433
6378
|
className,
|
|
6434
6379
|
...dialogProps
|
|
6435
6380
|
}) {
|
|
6436
6381
|
const theme = useTheme();
|
|
6382
|
+
const labels = useMemo(() => ({ ...DEFAULT_LIGHTBOX_LABELS, ...labelOverrides }), [labelOverrides]);
|
|
6437
6383
|
const [currentIndex, setCurrentIndex] = useState(controlledIndex);
|
|
6438
6384
|
const [zoomLevel, setZoomLevel] = useState(MIN_ZOOM);
|
|
6439
6385
|
const [isFullscreen, setIsFullscreen] = useState(false);
|
|
@@ -6502,14 +6448,11 @@ function Lightbox({
|
|
|
6502
6448
|
setZoomLevel((prevZoom) => Math.min(prevZoom + ZOOM_STEP, MAX_ZOOM));
|
|
6503
6449
|
}, []);
|
|
6504
6450
|
const zoomOut = useCallback(() => {
|
|
6505
|
-
setZoomLevel((prevZoom) =>
|
|
6506
|
-
const newZoom = Math.max(prevZoom - ZOOM_STEP, MIN_ZOOM);
|
|
6507
|
-
if (newZoom === MIN_ZOOM) {
|
|
6508
|
-
setPosition({ x: 0, y: 0 });
|
|
6509
|
-
}
|
|
6510
|
-
return newZoom;
|
|
6511
|
-
});
|
|
6451
|
+
setZoomLevel((prevZoom) => Math.max(prevZoom - ZOOM_STEP, MIN_ZOOM));
|
|
6512
6452
|
}, []);
|
|
6453
|
+
useEffect(() => {
|
|
6454
|
+
if (zoomLevel === MIN_ZOOM) setPosition({ x: 0, y: 0 });
|
|
6455
|
+
}, [zoomLevel]);
|
|
6513
6456
|
const zoomReset = useCallback(() => {
|
|
6514
6457
|
setZoomLevel(MIN_ZOOM);
|
|
6515
6458
|
setPosition({ x: 0, y: 0 });
|
|
@@ -6710,14 +6653,14 @@ function Lightbox({
|
|
|
6710
6653
|
/* @__PURE__ */ jsx(Typography5, { component: "span", sx: { mx: 0.5, opacity: 0.5 }, children: "/" }),
|
|
6711
6654
|
totalSlides
|
|
6712
6655
|
] }),
|
|
6713
|
-
/* @__PURE__ */ jsx(
|
|
6714
|
-
zoom && /* @__PURE__ */ jsxs(
|
|
6656
|
+
/* @__PURE__ */ jsx(Box19, { sx: { flex: 1 } }),
|
|
6657
|
+
zoom && /* @__PURE__ */ jsxs(Box19, { sx: { display: "flex", alignItems: "center", gap: 0.25 }, children: [
|
|
6715
6658
|
/* @__PURE__ */ jsx(
|
|
6716
6659
|
GlassButton,
|
|
6717
6660
|
{
|
|
6718
6661
|
onClick: zoomOut,
|
|
6719
6662
|
disabled: zoomLevel <= MIN_ZOOM,
|
|
6720
|
-
"aria-label":
|
|
6663
|
+
"aria-label": labels.zoomOut,
|
|
6721
6664
|
className: lightboxClasses.toolbarButton,
|
|
6722
6665
|
size: "small",
|
|
6723
6666
|
children: /* @__PURE__ */ jsx(ZoomOutIcon, { fontSize: "small" })
|
|
@@ -6745,7 +6688,7 @@ function Lightbox({
|
|
|
6745
6688
|
{
|
|
6746
6689
|
onClick: zoomIn,
|
|
6747
6690
|
disabled: zoomLevel >= MAX_ZOOM,
|
|
6748
|
-
"aria-label":
|
|
6691
|
+
"aria-label": labels.zoomIn,
|
|
6749
6692
|
className: lightboxClasses.toolbarButton,
|
|
6750
6693
|
size: "small",
|
|
6751
6694
|
children: /* @__PURE__ */ jsx(ZoomInIcon, { fontSize: "small" })
|
|
@@ -6766,7 +6709,7 @@ function Lightbox({
|
|
|
6766
6709
|
GlassButton,
|
|
6767
6710
|
{
|
|
6768
6711
|
onClick: handleDownload,
|
|
6769
|
-
"aria-label":
|
|
6712
|
+
"aria-label": labels.download,
|
|
6770
6713
|
className: lightboxClasses.toolbarButton,
|
|
6771
6714
|
size: "small",
|
|
6772
6715
|
children: /* @__PURE__ */ jsx(DownloadIcon, { fontSize: "small" })
|
|
@@ -6776,14 +6719,23 @@ function Lightbox({
|
|
|
6776
6719
|
GlassButton,
|
|
6777
6720
|
{
|
|
6778
6721
|
onClick: handleShare,
|
|
6779
|
-
"aria-label":
|
|
6722
|
+
"aria-label": labels.share,
|
|
6780
6723
|
className: lightboxClasses.toolbarButton,
|
|
6781
6724
|
size: "small",
|
|
6782
6725
|
children: /* @__PURE__ */ jsx(ShareIcon, { fontSize: "small" })
|
|
6783
6726
|
}
|
|
6784
6727
|
),
|
|
6785
6728
|
toolbar?.buttons,
|
|
6786
|
-
/* @__PURE__ */ jsx(
|
|
6729
|
+
/* @__PURE__ */ jsx(
|
|
6730
|
+
GlassButton,
|
|
6731
|
+
{
|
|
6732
|
+
onClick: onClose,
|
|
6733
|
+
"aria-label": labels.close,
|
|
6734
|
+
className: lightboxClasses.toolbarButton,
|
|
6735
|
+
size: "small",
|
|
6736
|
+
children: /* @__PURE__ */ jsx(CloseIcon, { fontSize: "small" })
|
|
6737
|
+
}
|
|
6738
|
+
)
|
|
6787
6739
|
]
|
|
6788
6740
|
}
|
|
6789
6741
|
),
|
|
@@ -6897,7 +6849,7 @@ function Lightbox({
|
|
|
6897
6849
|
className: cn(lightboxClasses.navButton, lightboxClasses.navPrev),
|
|
6898
6850
|
side: "left",
|
|
6899
6851
|
onClick: prev,
|
|
6900
|
-
"aria-label":
|
|
6852
|
+
"aria-label": labels.previous,
|
|
6901
6853
|
sx: slotProps?.navButton,
|
|
6902
6854
|
children: /* @__PURE__ */ jsx(ChevronLeftIcon, { sx: { fontSize: 28 } })
|
|
6903
6855
|
}
|
|
@@ -6908,7 +6860,7 @@ function Lightbox({
|
|
|
6908
6860
|
className: cn(lightboxClasses.navButton, lightboxClasses.navNext),
|
|
6909
6861
|
side: "right",
|
|
6910
6862
|
onClick: next,
|
|
6911
|
-
"aria-label":
|
|
6863
|
+
"aria-label": labels.next,
|
|
6912
6864
|
sx: slotProps?.navButton,
|
|
6913
6865
|
children: /* @__PURE__ */ jsx(ChevronRightIcon, { sx: { fontSize: 28 } })
|
|
6914
6866
|
}
|
|
@@ -6933,7 +6885,7 @@ function Lightbox({
|
|
|
6933
6885
|
}
|
|
6934
6886
|
),
|
|
6935
6887
|
isThumbVideo && /* @__PURE__ */ jsx(
|
|
6936
|
-
|
|
6888
|
+
Box19,
|
|
6937
6889
|
{
|
|
6938
6890
|
sx: {
|
|
6939
6891
|
position: "absolute",
|
|
@@ -6943,7 +6895,7 @@ function Lightbox({
|
|
|
6943
6895
|
justifyContent: "center",
|
|
6944
6896
|
bgcolor: alpha(theme.palette.common.black, 0.35)
|
|
6945
6897
|
},
|
|
6946
|
-
children: /* @__PURE__ */ jsx(
|
|
6898
|
+
children: /* @__PURE__ */ jsx(PlayIcon, { sx: { fontSize: 18, color: "common.white", opacity: 0.9 } })
|
|
6947
6899
|
}
|
|
6948
6900
|
)
|
|
6949
6901
|
]
|
|
@@ -6963,8 +6915,8 @@ function Lightbox({
|
|
|
6963
6915
|
/* @__PURE__ */ jsx(Typography5, { component: "span", sx: { mx: 0.5, opacity: 0.5 }, children: "/" }),
|
|
6964
6916
|
totalSlides
|
|
6965
6917
|
] }),
|
|
6966
|
-
/* @__PURE__ */ jsx(
|
|
6967
|
-
/* @__PURE__ */ jsx(GlassButton, { onClick: onClose, "aria-label":
|
|
6918
|
+
/* @__PURE__ */ jsx(Box19, { sx: { flex: 1 } }),
|
|
6919
|
+
/* @__PURE__ */ jsx(GlassButton, { onClick: onClose, "aria-label": labels.close, size: "small", children: /* @__PURE__ */ jsx(CloseIcon, { fontSize: "small" }) })
|
|
6968
6920
|
]
|
|
6969
6921
|
}
|
|
6970
6922
|
)
|
|
@@ -6986,7 +6938,7 @@ var StyledDialog = styled(Dialog)(({ theme }) => ({
|
|
|
6986
6938
|
backdropFilter: "blur(8px)"
|
|
6987
6939
|
}
|
|
6988
6940
|
}));
|
|
6989
|
-
var LightboxContainer = styled(
|
|
6941
|
+
var LightboxContainer = styled(Box19)({
|
|
6990
6942
|
display: "flex",
|
|
6991
6943
|
flexDirection: "column",
|
|
6992
6944
|
width: "100vw",
|
|
@@ -6995,7 +6947,7 @@ var LightboxContainer = styled(Box20)({
|
|
|
6995
6947
|
overflow: "hidden",
|
|
6996
6948
|
userSelect: "none"
|
|
6997
6949
|
});
|
|
6998
|
-
var GlassToolbar = styled(
|
|
6950
|
+
var GlassToolbar = styled(Box19)(({ theme, placement }) => ({
|
|
6999
6951
|
display: "flex",
|
|
7000
6952
|
alignItems: "center",
|
|
7001
6953
|
gap: theme.spacing(0.5),
|
|
@@ -7009,7 +6961,7 @@ var GlassToolbar = styled(Box20)(({ theme, placement }) => ({
|
|
|
7009
6961
|
background: `linear-gradient(${placement === "top" ? "to bottom" : "to top"}, ${alpha(theme.palette.common.black, 0.55)} 0%, ${alpha(theme.palette.common.black, 0.2)} 60%, transparent 100%)`,
|
|
7010
6962
|
transition: "opacity 0.3s ease"
|
|
7011
6963
|
}));
|
|
7012
|
-
var GlassButton = styled(
|
|
6964
|
+
var GlassButton = styled(IconButton4)(({ theme }) => ({
|
|
7013
6965
|
color: alpha(theme.palette.common.white, 0.85),
|
|
7014
6966
|
borderRadius: Number(theme.shape.borderRadius) * 1.5,
|
|
7015
6967
|
padding: 6,
|
|
@@ -7042,7 +6994,7 @@ var CounterChip = styled(Typography5)(({ theme }) => ({
|
|
|
7042
6994
|
alignItems: "center",
|
|
7043
6995
|
letterSpacing: "0.02em"
|
|
7044
6996
|
}));
|
|
7045
|
-
var SlideContainer = styled(
|
|
6997
|
+
var SlideContainer = styled(Box19)({
|
|
7046
6998
|
flex: 1,
|
|
7047
6999
|
display: "flex",
|
|
7048
7000
|
alignItems: "center",
|
|
@@ -7050,7 +7002,7 @@ var SlideContainer = styled(Box20)({
|
|
|
7050
7002
|
position: "relative",
|
|
7051
7003
|
overflow: "hidden"
|
|
7052
7004
|
});
|
|
7053
|
-
var SlideLayer = styled(
|
|
7005
|
+
var SlideLayer = styled(Box19)({
|
|
7054
7006
|
position: "absolute",
|
|
7055
7007
|
inset: 0,
|
|
7056
7008
|
display: "flex",
|
|
@@ -7058,7 +7010,7 @@ var SlideLayer = styled(Box20)({
|
|
|
7058
7010
|
justifyContent: "center",
|
|
7059
7011
|
willChange: "opacity, transform"
|
|
7060
7012
|
});
|
|
7061
|
-
var LoadingOverlay = styled(
|
|
7013
|
+
var LoadingOverlay = styled(Box19)({
|
|
7062
7014
|
position: "absolute",
|
|
7063
7015
|
top: "50%",
|
|
7064
7016
|
left: "50%",
|
|
@@ -7072,7 +7024,7 @@ var StyledImage = styled("img")({
|
|
|
7072
7024
|
willChange: "transform, opacity",
|
|
7073
7025
|
borderRadius: 2
|
|
7074
7026
|
});
|
|
7075
|
-
var VideoWrapper = styled(
|
|
7027
|
+
var VideoWrapper = styled(Box19)({
|
|
7076
7028
|
position: "relative",
|
|
7077
7029
|
display: "flex",
|
|
7078
7030
|
alignItems: "center",
|
|
@@ -7096,7 +7048,7 @@ var StyledVideo = styled("video")(({ theme }) => ({
|
|
|
7096
7048
|
fontSize: 12
|
|
7097
7049
|
}
|
|
7098
7050
|
}));
|
|
7099
|
-
var GlassCaption = styled(
|
|
7051
|
+
var GlassCaption = styled(Box19)(({ theme }) => ({
|
|
7100
7052
|
position: "absolute",
|
|
7101
7053
|
bottom: theme.spacing(2.5),
|
|
7102
7054
|
left: "50%",
|
|
@@ -7116,7 +7068,7 @@ var GlassCaption = styled(Box20)(({ theme }) => ({
|
|
|
7116
7068
|
to: { opacity: 1, transform: "translateX(-50%) translateY(0)" }
|
|
7117
7069
|
}
|
|
7118
7070
|
}));
|
|
7119
|
-
var NavArrow = styled(
|
|
7071
|
+
var NavArrow = styled(IconButton4)(({ theme, side }) => ({
|
|
7120
7072
|
position: "absolute",
|
|
7121
7073
|
top: "50%",
|
|
7122
7074
|
transform: "translateY(-50%)",
|
|
@@ -7143,7 +7095,7 @@ var NavArrow = styled(IconButton3)(({ theme, side }) => ({
|
|
|
7143
7095
|
transform: "translateY(-50%) scale(0.95)"
|
|
7144
7096
|
}
|
|
7145
7097
|
}));
|
|
7146
|
-
var ThumbnailStrip = styled(
|
|
7098
|
+
var ThumbnailStrip = styled(Box19)(({ theme }) => ({
|
|
7147
7099
|
display: "flex",
|
|
7148
7100
|
gap: theme.spacing(0.75),
|
|
7149
7101
|
padding: theme.spacing(1, 2),
|
|
@@ -7158,7 +7110,7 @@ var ThumbnailStrip = styled(Box20)(({ theme }) => ({
|
|
|
7158
7110
|
display: "none"
|
|
7159
7111
|
}
|
|
7160
7112
|
}));
|
|
7161
|
-
var ThumbItem = styled(
|
|
7113
|
+
var ThumbItem = styled(Box19)(({ theme, active }) => ({
|
|
7162
7114
|
flexShrink: 0,
|
|
7163
7115
|
width: 56,
|
|
7164
7116
|
height: 56,
|
|
@@ -7187,18 +7139,14 @@ var ThumbItem = styled(Box20)(({ theme, active }) => ({
|
|
|
7187
7139
|
borderColor: active ? theme.palette.primary.main : alpha(theme.palette.common.white, 0.25)
|
|
7188
7140
|
}
|
|
7189
7141
|
}));
|
|
7190
|
-
var MIN_ZOOM2 = 1;
|
|
7191
|
-
var MAX_ZOOM2 = 4;
|
|
7192
|
-
var ZOOM_STEP2 = 0.5;
|
|
7193
7142
|
function useLightbox(options = {}) {
|
|
7194
7143
|
const { defaultOpen = false, defaultIndex = 0, totalSlides = 0, loop = false } = options;
|
|
7195
7144
|
const [open, setOpen] = useState(defaultOpen);
|
|
7196
7145
|
const [index, setIndex] = useState(defaultIndex);
|
|
7197
|
-
const [zoomLevel, setZoomLevel] = useState(MIN_ZOOM2);
|
|
7198
7146
|
const goTo = useCallback(
|
|
7199
7147
|
(newIndex) => {
|
|
7200
7148
|
if (totalSlides === 0) {
|
|
7201
|
-
setIndex(
|
|
7149
|
+
setIndex(0);
|
|
7202
7150
|
return;
|
|
7203
7151
|
}
|
|
7204
7152
|
if (loop) {
|
|
@@ -7206,7 +7154,6 @@ function useLightbox(options = {}) {
|
|
|
7206
7154
|
} else {
|
|
7207
7155
|
setIndex(Math.max(0, Math.min(newIndex, totalSlides - 1)));
|
|
7208
7156
|
}
|
|
7209
|
-
setZoomLevel(MIN_ZOOM2);
|
|
7210
7157
|
},
|
|
7211
7158
|
[totalSlides, loop]
|
|
7212
7159
|
);
|
|
@@ -7218,21 +7165,10 @@ function useLightbox(options = {}) {
|
|
|
7218
7165
|
}, [index, goTo]);
|
|
7219
7166
|
const onOpen = useCallback((slideIndex = 0) => {
|
|
7220
7167
|
setIndex(slideIndex);
|
|
7221
|
-
setZoomLevel(MIN_ZOOM2);
|
|
7222
7168
|
setOpen(true);
|
|
7223
7169
|
}, []);
|
|
7224
7170
|
const onClose = useCallback(() => {
|
|
7225
7171
|
setOpen(false);
|
|
7226
|
-
setZoomLevel(MIN_ZOOM2);
|
|
7227
|
-
}, []);
|
|
7228
|
-
const zoomIn = useCallback(() => {
|
|
7229
|
-
setZoomLevel((prevZoom) => Math.min(prevZoom + ZOOM_STEP2, MAX_ZOOM2));
|
|
7230
|
-
}, []);
|
|
7231
|
-
const zoomOut = useCallback(() => {
|
|
7232
|
-
setZoomLevel((prevZoom) => Math.max(prevZoom - ZOOM_STEP2, MIN_ZOOM2));
|
|
7233
|
-
}, []);
|
|
7234
|
-
const zoomReset = useCallback(() => {
|
|
7235
|
-
setZoomLevel(MIN_ZOOM2);
|
|
7236
7172
|
}, []);
|
|
7237
7173
|
const onIndexChange = useCallback(
|
|
7238
7174
|
(newIndex) => {
|
|
@@ -7257,10 +7193,6 @@ function useLightbox(options = {}) {
|
|
|
7257
7193
|
goTo,
|
|
7258
7194
|
next,
|
|
7259
7195
|
prev,
|
|
7260
|
-
zoomLevel,
|
|
7261
|
-
zoomIn,
|
|
7262
|
-
zoomOut,
|
|
7263
|
-
zoomReset,
|
|
7264
7196
|
getLightboxProps
|
|
7265
7197
|
};
|
|
7266
7198
|
}
|
|
@@ -7579,7 +7511,7 @@ function Carousel({
|
|
|
7579
7511
|
isHorizontal,
|
|
7580
7512
|
direction: "prev",
|
|
7581
7513
|
sx: slotProps?.arrow,
|
|
7582
|
-
children: isHorizontal ? /* @__PURE__ */ jsx(ChevronLeftIcon, {}) : /* @__PURE__ */ jsx(
|
|
7514
|
+
children: isHorizontal ? /* @__PURE__ */ jsx(ChevronLeftIcon, {}) : /* @__PURE__ */ jsx(ChevronUpIcon, {})
|
|
7583
7515
|
}
|
|
7584
7516
|
),
|
|
7585
7517
|
/* @__PURE__ */ jsx(
|
|
@@ -7594,7 +7526,7 @@ function Carousel({
|
|
|
7594
7526
|
isHorizontal,
|
|
7595
7527
|
direction: "next",
|
|
7596
7528
|
sx: slotProps?.arrow,
|
|
7597
|
-
children: isHorizontal ? /* @__PURE__ */ jsx(ChevronRightIcon, {}) : /* @__PURE__ */ jsx(
|
|
7529
|
+
children: isHorizontal ? /* @__PURE__ */ jsx(ChevronRightIcon, {}) : /* @__PURE__ */ jsx(ChevronDownIcon, {})
|
|
7598
7530
|
}
|
|
7599
7531
|
)
|
|
7600
7532
|
] }),
|
|
@@ -7628,31 +7560,31 @@ function Carousel({
|
|
|
7628
7560
|
}
|
|
7629
7561
|
);
|
|
7630
7562
|
}
|
|
7631
|
-
var CarouselRoot = styled(
|
|
7563
|
+
var CarouselRoot = styled(Box19)({
|
|
7632
7564
|
position: "relative",
|
|
7633
7565
|
width: "100%",
|
|
7634
7566
|
overflow: "hidden",
|
|
7635
7567
|
outline: "none"
|
|
7636
7568
|
});
|
|
7637
|
-
var CarouselContainer = styled(
|
|
7569
|
+
var CarouselContainer = styled(Box19)({
|
|
7638
7570
|
position: "relative",
|
|
7639
7571
|
width: "100%",
|
|
7640
7572
|
overflow: "hidden"
|
|
7641
7573
|
});
|
|
7642
|
-
var CarouselTrack = styled(
|
|
7574
|
+
var CarouselTrack = styled(Box19)({
|
|
7643
7575
|
display: "flex",
|
|
7644
7576
|
width: "100%",
|
|
7645
7577
|
willChange: "transform",
|
|
7646
7578
|
userSelect: "none"
|
|
7647
7579
|
});
|
|
7648
|
-
var CarouselSlide = styled(
|
|
7580
|
+
var CarouselSlide = styled(Box19)({
|
|
7649
7581
|
flexShrink: 0,
|
|
7650
7582
|
"& > *": {
|
|
7651
7583
|
width: "100%",
|
|
7652
7584
|
height: "100%"
|
|
7653
7585
|
}
|
|
7654
7586
|
});
|
|
7655
|
-
var ArrowButton = styled(
|
|
7587
|
+
var ArrowButton = styled(IconButton4)(
|
|
7656
7588
|
({ theme, isHorizontal, direction }) => ({
|
|
7657
7589
|
position: "absolute",
|
|
7658
7590
|
zIndex: 10,
|
|
@@ -7675,7 +7607,7 @@ var ArrowButton = styled(IconButton3)(
|
|
|
7675
7607
|
}
|
|
7676
7608
|
})
|
|
7677
7609
|
);
|
|
7678
|
-
var DotsContainer = styled(
|
|
7610
|
+
var DotsContainer = styled(Box19)(({ theme, dotsPosition }) => ({
|
|
7679
7611
|
display: "flex",
|
|
7680
7612
|
gap: theme.spacing(1),
|
|
7681
7613
|
position: "absolute",
|
|
@@ -7736,6 +7668,7 @@ function useCarousel(options) {
|
|
|
7736
7668
|
const [isPlaying, setIsPlaying] = useState(autoplay);
|
|
7737
7669
|
const carouselRef = useRef(null);
|
|
7738
7670
|
const autoplayRef = useRef(null);
|
|
7671
|
+
const currentIndexRef = useRef(currentIndex);
|
|
7739
7672
|
const maxIndex = Math.max(0, totalSlides - slidesToShow);
|
|
7740
7673
|
const canPrev = loop || currentIndex > 0;
|
|
7741
7674
|
const canNext = loop || currentIndex < maxIndex;
|
|
@@ -7751,6 +7684,8 @@ function useCarousel(options) {
|
|
|
7751
7684
|
} else {
|
|
7752
7685
|
newIndex = Math.max(0, Math.min(index, maxIndex));
|
|
7753
7686
|
}
|
|
7687
|
+
if (newIndex === currentIndexRef.current) return;
|
|
7688
|
+
currentIndexRef.current = newIndex;
|
|
7754
7689
|
setCurrentIndex(newIndex);
|
|
7755
7690
|
onSlideChange?.(newIndex);
|
|
7756
7691
|
},
|
|
@@ -7779,7 +7714,7 @@ function useCarousel(options) {
|
|
|
7779
7714
|
useEffect(() => {
|
|
7780
7715
|
if (isPlaying && totalSlides > slidesToShow) {
|
|
7781
7716
|
autoplayRef.current = setInterval(() => {
|
|
7782
|
-
goTo(
|
|
7717
|
+
goTo(currentIndexRef.current + slidesToScroll);
|
|
7783
7718
|
}, autoplayInterval);
|
|
7784
7719
|
return () => {
|
|
7785
7720
|
if (autoplayRef.current) {
|
|
@@ -7789,7 +7724,7 @@ function useCarousel(options) {
|
|
|
7789
7724
|
};
|
|
7790
7725
|
}
|
|
7791
7726
|
return void 0;
|
|
7792
|
-
}, [isPlaying,
|
|
7727
|
+
}, [isPlaying, slidesToScroll, autoplayInterval, totalSlides, slidesToShow, goTo]);
|
|
7793
7728
|
useEffect(
|
|
7794
7729
|
() => () => {
|
|
7795
7730
|
if (autoplayRef.current) {
|
|
@@ -7866,11 +7801,17 @@ var navSectionCssVars = {
|
|
|
7866
7801
|
"--nav-icon-active-color": theme.palette.primary.main,
|
|
7867
7802
|
// Colors - disabled
|
|
7868
7803
|
"--nav-item-disabled-color": theme.palette.text.disabled,
|
|
7869
|
-
// Subheader
|
|
7804
|
+
// Subheader. Asymmetric vertical padding (top < bottom) tightens
|
|
7805
|
+
// the gap to the previous section's last item while preserving
|
|
7806
|
+
// the visual grouping with the items belonging to THIS section.
|
|
7807
|
+
// Pre-fix `8px 8px 8px 12px` summed with the parent `gap: 4px`
|
|
7808
|
+
// and the previous item's `padding-bottom: 4px` to ~16px above
|
|
7809
|
+
// the title, which read as a disconnect rather than a section
|
|
7810
|
+
// boundary.
|
|
7870
7811
|
"--nav-subheader-font-size": "0.6875rem",
|
|
7871
7812
|
"--nav-subheader-font-weight": "700",
|
|
7872
7813
|
"--nav-subheader-color": theme.palette.text.disabled,
|
|
7873
|
-
"--nav-subheader-padding": "
|
|
7814
|
+
"--nav-subheader-padding": "4px 8px 8px 12px",
|
|
7874
7815
|
// Sub-item adjustments
|
|
7875
7816
|
"--nav-sub-item-padding": "4px 8px 4px 12px",
|
|
7876
7817
|
"--nav-sub-item-margin-left": "40px",
|
|
@@ -7949,9 +7890,9 @@ function getNavCssVars(theme, variant) {
|
|
|
7949
7890
|
return navSectionCssVars.vertical(theme);
|
|
7950
7891
|
}
|
|
7951
7892
|
}
|
|
7952
|
-
|
|
7893
|
+
function Nav({ className, sx, ref, ...other }) {
|
|
7953
7894
|
return /* @__PURE__ */ jsx(
|
|
7954
|
-
|
|
7895
|
+
Box19,
|
|
7955
7896
|
{
|
|
7956
7897
|
component: "nav",
|
|
7957
7898
|
ref,
|
|
@@ -7967,10 +7908,10 @@ var Nav = forwardRef(function Nav2({ className, sx, ...other }, ref) {
|
|
|
7967
7908
|
...other
|
|
7968
7909
|
}
|
|
7969
7910
|
);
|
|
7970
|
-
}
|
|
7971
|
-
|
|
7911
|
+
}
|
|
7912
|
+
function NavUl({ className, sx, ref, ...other }) {
|
|
7972
7913
|
return /* @__PURE__ */ jsx(
|
|
7973
|
-
|
|
7914
|
+
Box19,
|
|
7974
7915
|
{
|
|
7975
7916
|
component: "ul",
|
|
7976
7917
|
ref,
|
|
@@ -7988,10 +7929,10 @@ var NavUl = forwardRef(function NavUl2({ className, sx, ...other }, ref) {
|
|
|
7988
7929
|
...other
|
|
7989
7930
|
}
|
|
7990
7931
|
);
|
|
7991
|
-
}
|
|
7992
|
-
|
|
7932
|
+
}
|
|
7933
|
+
function NavLi({ className, ref, ...other }) {
|
|
7993
7934
|
return /* @__PURE__ */ jsx(
|
|
7994
|
-
|
|
7935
|
+
Box19,
|
|
7995
7936
|
{
|
|
7996
7937
|
component: "li",
|
|
7997
7938
|
ref,
|
|
@@ -8003,7 +7944,7 @@ var NavLi = forwardRef(function NavLi2({ className, ...other }, ref) {
|
|
|
8003
7944
|
...other
|
|
8004
7945
|
}
|
|
8005
7946
|
);
|
|
8006
|
-
}
|
|
7947
|
+
}
|
|
8007
7948
|
var StyledSubheader = styled(ButtonBase)(({ theme }) => ({
|
|
8008
7949
|
width: "100%",
|
|
8009
7950
|
cursor: "pointer",
|
|
@@ -8043,12 +7984,12 @@ var ArrowIcon = styled("span")(({ open }) => ({
|
|
|
8043
7984
|
transform: "rotate(-45deg)"
|
|
8044
7985
|
}
|
|
8045
7986
|
}));
|
|
8046
|
-
|
|
7987
|
+
function NavSubheader({ className, open, onClick, children, ref, ...other }) {
|
|
8047
7988
|
return /* @__PURE__ */ jsxs(StyledSubheader, { ref, className: cn(navSectionClasses.subheader, className), onClick, ...other, children: [
|
|
8048
7989
|
children,
|
|
8049
7990
|
onClick && /* @__PURE__ */ jsx(ArrowIcon, { open })
|
|
8050
7991
|
] });
|
|
8051
|
-
}
|
|
7992
|
+
}
|
|
8052
7993
|
var StyledNavItem = styled(ButtonBase, {
|
|
8053
7994
|
shouldForwardProp: (prop) => !["active", "open", "depth", "hasChild"].includes(prop)
|
|
8054
7995
|
})(
|
|
@@ -8087,7 +8028,7 @@ var StyledNavItem = styled(ButtonBase, {
|
|
|
8087
8028
|
}
|
|
8088
8029
|
})
|
|
8089
8030
|
);
|
|
8090
|
-
|
|
8031
|
+
function NavItemBase({ className, active, disabled, open, depth, hasChild, ref, ...other }) {
|
|
8091
8032
|
return /* @__PURE__ */ jsx(
|
|
8092
8033
|
StyledNavItem,
|
|
8093
8034
|
{
|
|
@@ -8107,8 +8048,8 @@ var NavItemBase = forwardRef(function NavItemBase2({ className, active, disabled
|
|
|
8107
8048
|
...other
|
|
8108
8049
|
}
|
|
8109
8050
|
);
|
|
8110
|
-
}
|
|
8111
|
-
var
|
|
8051
|
+
}
|
|
8052
|
+
var IconWrapper = styled("span")({
|
|
8112
8053
|
width: "var(--nav-icon-size, 24px)",
|
|
8113
8054
|
height: "var(--nav-icon-size, 24px)",
|
|
8114
8055
|
flexShrink: 0,
|
|
@@ -8124,7 +8065,7 @@ var IconWrapper2 = styled("span")({
|
|
|
8124
8065
|
});
|
|
8125
8066
|
function NavIcon({ icon, className }) {
|
|
8126
8067
|
if (!icon) return null;
|
|
8127
|
-
return /* @__PURE__ */ jsx(
|
|
8068
|
+
return /* @__PURE__ */ jsx(IconWrapper, { className: cn("nav-icon", navSectionClasses.icon, className), children: icon });
|
|
8128
8069
|
}
|
|
8129
8070
|
var TextsWrapper = styled("span")({
|
|
8130
8071
|
flex: "1 1 auto",
|
|
@@ -8351,11 +8292,12 @@ function resolveInfo(info, render) {
|
|
|
8351
8292
|
if (!info) return void 0;
|
|
8352
8293
|
if (Array.isArray(info) && render?.navInfo) {
|
|
8353
8294
|
const infoComponents = info.map((key) => render.navInfo?.(key));
|
|
8354
|
-
return /* @__PURE__ */ jsx(Fragment, { children: infoComponents.map((comp, idx) => /* @__PURE__ */ jsx(
|
|
8295
|
+
return /* @__PURE__ */ jsx(Fragment, { children: infoComponents.map((comp, idx) => /* @__PURE__ */ jsx(Box19, { component: "span", children: comp && Object.values(comp)[0] }, idx)) });
|
|
8355
8296
|
}
|
|
8356
8297
|
return info;
|
|
8357
8298
|
}
|
|
8358
|
-
|
|
8299
|
+
function NavItem(props) {
|
|
8300
|
+
const { ref } = props;
|
|
8359
8301
|
const {
|
|
8360
8302
|
// Data props
|
|
8361
8303
|
path,
|
|
@@ -8411,10 +8353,10 @@ var NavItem = forwardRef(function NavItem2(props, ref) {
|
|
|
8411
8353
|
}
|
|
8412
8354
|
);
|
|
8413
8355
|
if (caption && depth === 1) {
|
|
8414
|
-
return /* @__PURE__ */ jsx(
|
|
8356
|
+
return /* @__PURE__ */ jsx(Tooltip2, { title: caption, placement: "right", arrow: true, children: content });
|
|
8415
8357
|
}
|
|
8416
8358
|
return content;
|
|
8417
|
-
}
|
|
8359
|
+
}
|
|
8418
8360
|
var NavContext = createContext(void 0);
|
|
8419
8361
|
function useNavPathname() {
|
|
8420
8362
|
const context = useContext(NavContext);
|
|
@@ -8875,7 +8817,7 @@ function MiniNavList({
|
|
|
8875
8817
|
)
|
|
8876
8818
|
}
|
|
8877
8819
|
)
|
|
8878
|
-
] }) : /* @__PURE__ */ jsx(
|
|
8820
|
+
] }) : /* @__PURE__ */ jsx(Tooltip2, { title: data.title, placement: "right", arrow: true, children: content }) });
|
|
8879
8821
|
}
|
|
8880
8822
|
function MiniDropdown({
|
|
8881
8823
|
data,
|
|
@@ -9033,17 +8975,17 @@ function megaMenuCssVars(theme, variant) {
|
|
|
9033
8975
|
return commonVars;
|
|
9034
8976
|
}
|
|
9035
8977
|
}
|
|
9036
|
-
var
|
|
8978
|
+
var Nav2 = styled("nav")({
|
|
9037
8979
|
display: "flex",
|
|
9038
8980
|
flexShrink: 0
|
|
9039
8981
|
});
|
|
9040
|
-
var
|
|
8982
|
+
var NavUl2 = styled("ul")({
|
|
9041
8983
|
display: "flex",
|
|
9042
8984
|
listStyle: "none",
|
|
9043
8985
|
padding: 0,
|
|
9044
8986
|
margin: 0
|
|
9045
8987
|
});
|
|
9046
|
-
var
|
|
8988
|
+
var NavLi2 = styled("li")({
|
|
9047
8989
|
display: "flex"
|
|
9048
8990
|
});
|
|
9049
8991
|
var NavButton = styled("button")(({ theme, active, open }) => ({
|
|
@@ -9077,7 +9019,7 @@ var NavButton = styled("button")(({ theme, active, open }) => ({
|
|
|
9077
9019
|
cursor: "not-allowed"
|
|
9078
9020
|
}
|
|
9079
9021
|
}));
|
|
9080
|
-
var
|
|
9022
|
+
var IconWrapper2 = styled("span")({
|
|
9081
9023
|
width: "var(--nav-icon-size)",
|
|
9082
9024
|
height: "var(--nav-icon-size)",
|
|
9083
9025
|
marginRight: 8,
|
|
@@ -9145,7 +9087,7 @@ var SubItemLink = styled(Link, {
|
|
|
9145
9087
|
color: theme.palette.text.primary
|
|
9146
9088
|
}
|
|
9147
9089
|
}));
|
|
9148
|
-
var TagsContainer = styled(
|
|
9090
|
+
var TagsContainer = styled(Box19)(({ theme }) => ({
|
|
9149
9091
|
display: "flex",
|
|
9150
9092
|
flexWrap: "wrap",
|
|
9151
9093
|
gap: 8,
|
|
@@ -9209,7 +9151,7 @@ function MegaMenuList({ data, render, slotProps, slots, enabledRootRedirect }) {
|
|
|
9209
9151
|
handleClose();
|
|
9210
9152
|
}, [pathname, handleClose]);
|
|
9211
9153
|
const icon = typeof data.icon === "string" && render?.navIcon ? render.navIcon[data.icon] : data.icon;
|
|
9212
|
-
return /* @__PURE__ */ jsxs(
|
|
9154
|
+
return /* @__PURE__ */ jsxs(NavLi2, { className: megaMenuClasses.li, children: [
|
|
9213
9155
|
/* @__PURE__ */ jsxs(
|
|
9214
9156
|
NavButton,
|
|
9215
9157
|
{
|
|
@@ -9225,7 +9167,7 @@ function MegaMenuList({ data, render, slotProps, slots, enabledRootRedirect }) {
|
|
|
9225
9167
|
onMouseEnter: handleOpen,
|
|
9226
9168
|
onMouseLeave: handleClose,
|
|
9227
9169
|
children: [
|
|
9228
|
-
icon && /* @__PURE__ */ jsx(
|
|
9170
|
+
icon && /* @__PURE__ */ jsx(IconWrapper2, { className: megaMenuClasses.icon, children: icon }),
|
|
9229
9171
|
/* @__PURE__ */ jsx("span", { className: megaMenuClasses.title, children: data.title }),
|
|
9230
9172
|
hasChild && /* @__PURE__ */ jsx(ArrowIcon2, { open, className: megaMenuClasses.arrow })
|
|
9231
9173
|
]
|
|
@@ -9279,9 +9221,9 @@ function MegaMenuList({ data, render, slotProps, slots, enabledRootRedirect }) {
|
|
|
9279
9221
|
item.title
|
|
9280
9222
|
);
|
|
9281
9223
|
}) }),
|
|
9282
|
-
idx === 0 && data.moreLink && /* @__PURE__ */ jsx(
|
|
9224
|
+
idx === 0 && data.moreLink && /* @__PURE__ */ jsx(Box19, { sx: { mt: 2 }, children: /* @__PURE__ */ jsx(MoreLink, { href: data.moreLink.path, className: megaMenuClasses.moreLink, sx: slotProps?.moreLink, children: data.moreLink.title }) })
|
|
9283
9225
|
] }, section.subheader ?? idx)) }),
|
|
9284
|
-
data.tags && data.tags.length > 0 && /* @__PURE__ */ jsx(
|
|
9226
|
+
data.tags && data.tags.length > 0 && /* @__PURE__ */ jsx(Box19, { sx: { px: "var(--nav-dropdown-padding)", pb: "var(--nav-dropdown-padding)" }, children: /* @__PURE__ */ jsx(TagsContainer, { className: megaMenuClasses.tags, sx: slotProps?.tags, children: data.tags.map((tag) => /* @__PURE__ */ jsx(Tag, { href: tag.path, children: tag.title }, tag.title)) }) }),
|
|
9285
9227
|
slots?.bottomArea
|
|
9286
9228
|
]
|
|
9287
9229
|
}
|
|
@@ -9302,12 +9244,12 @@ function MegaMenuHorizontal({
|
|
|
9302
9244
|
const theme = useTheme();
|
|
9303
9245
|
const cssVars = { ...megaMenuCssVars(theme, "horizontal"), ...overridesVars };
|
|
9304
9246
|
return /* @__PURE__ */ jsx(
|
|
9305
|
-
|
|
9247
|
+
Nav2,
|
|
9306
9248
|
{
|
|
9307
9249
|
className: cn(megaMenuClasses.root, megaMenuClasses.horizontal, className),
|
|
9308
9250
|
sx: [{ ...cssVars }, ...Array.isArray(sx) ? sx : [sx]],
|
|
9309
9251
|
...other,
|
|
9310
|
-
children: /* @__PURE__ */ jsx(
|
|
9252
|
+
children: /* @__PURE__ */ jsx(NavUl2, { className: megaMenuClasses.ul, sx: { gap: "var(--nav-item-gap)" }, children: data.map((item) => /* @__PURE__ */ jsx(
|
|
9311
9253
|
MegaMenuList,
|
|
9312
9254
|
{
|
|
9313
9255
|
data: item,
|
|
@@ -9321,19 +9263,19 @@ function MegaMenuHorizontal({
|
|
|
9321
9263
|
}
|
|
9322
9264
|
);
|
|
9323
9265
|
}
|
|
9324
|
-
var
|
|
9266
|
+
var Nav3 = styled("nav")({
|
|
9325
9267
|
display: "flex",
|
|
9326
9268
|
flexDirection: "column",
|
|
9327
9269
|
flexShrink: 0
|
|
9328
9270
|
});
|
|
9329
|
-
var
|
|
9271
|
+
var NavUl3 = styled("ul")({
|
|
9330
9272
|
display: "flex",
|
|
9331
9273
|
flexDirection: "column",
|
|
9332
9274
|
listStyle: "none",
|
|
9333
9275
|
padding: 0,
|
|
9334
9276
|
margin: 0
|
|
9335
9277
|
});
|
|
9336
|
-
var
|
|
9278
|
+
var NavLi3 = styled("li")({
|
|
9337
9279
|
display: "flex",
|
|
9338
9280
|
flexDirection: "column"
|
|
9339
9281
|
});
|
|
@@ -9369,7 +9311,7 @@ var NavButton2 = styled("button")(({ theme, active, open }) => ({
|
|
|
9369
9311
|
cursor: "not-allowed"
|
|
9370
9312
|
}
|
|
9371
9313
|
}));
|
|
9372
|
-
var
|
|
9314
|
+
var IconWrapper3 = styled("span")({
|
|
9373
9315
|
width: "var(--nav-icon-size)",
|
|
9374
9316
|
height: "var(--nav-icon-size)",
|
|
9375
9317
|
marginRight: 12,
|
|
@@ -9415,7 +9357,10 @@ var SectionHeader2 = styled(Typography5)(({ theme }) => ({
|
|
|
9415
9357
|
letterSpacing: "0.08em",
|
|
9416
9358
|
marginBottom: 8,
|
|
9417
9359
|
marginTop: 16,
|
|
9418
|
-
|
|
9360
|
+
// `:first-child` — homogeneous list of subheaders; child-position
|
|
9361
|
+
// selector is equivalent to of-type but doesn't tie correctness
|
|
9362
|
+
// to tag-name uniqueness.
|
|
9363
|
+
"&:first-child": {
|
|
9419
9364
|
marginTop: 0
|
|
9420
9365
|
}
|
|
9421
9366
|
}));
|
|
@@ -9459,7 +9404,7 @@ function MegaMenuList2({ data, render, slotProps, slots, enabledRootRedirect })
|
|
|
9459
9404
|
handleClose();
|
|
9460
9405
|
}, [pathname, handleClose]);
|
|
9461
9406
|
const icon = typeof data.icon === "string" && render?.navIcon ? render.navIcon[data.icon] : data.icon;
|
|
9462
|
-
return /* @__PURE__ */ jsxs(
|
|
9407
|
+
return /* @__PURE__ */ jsxs(NavLi3, { className: megaMenuClasses.li, children: [
|
|
9463
9408
|
/* @__PURE__ */ jsxs(
|
|
9464
9409
|
NavButton2,
|
|
9465
9410
|
{
|
|
@@ -9475,7 +9420,7 @@ function MegaMenuList2({ data, render, slotProps, slots, enabledRootRedirect })
|
|
|
9475
9420
|
onMouseEnter: handleOpen,
|
|
9476
9421
|
onMouseLeave: handleClose,
|
|
9477
9422
|
children: [
|
|
9478
|
-
icon && /* @__PURE__ */ jsx(
|
|
9423
|
+
icon && /* @__PURE__ */ jsx(IconWrapper3, { className: megaMenuClasses.icon, children: icon }),
|
|
9479
9424
|
/* @__PURE__ */ jsx("span", { className: megaMenuClasses.title, children: data.title }),
|
|
9480
9425
|
hasChild && /* @__PURE__ */ jsx(ArrowIcon3, { open, className: megaMenuClasses.arrow })
|
|
9481
9426
|
]
|
|
@@ -9511,7 +9456,7 @@ function MegaMenuList2({ data, render, slotProps, slots, enabledRootRedirect })
|
|
|
9511
9456
|
disableRestoreFocus: true,
|
|
9512
9457
|
children: [
|
|
9513
9458
|
slots?.topArea,
|
|
9514
|
-
/* @__PURE__ */ jsx(DropdownContent2, { elevation: 0, className: megaMenuClasses.dropdown, children: data.children?.map((section, idx) => /* @__PURE__ */ jsxs(
|
|
9459
|
+
/* @__PURE__ */ jsx(DropdownContent2, { elevation: 0, className: megaMenuClasses.dropdown, children: data.children?.map((section, idx) => /* @__PURE__ */ jsxs(Box19, { children: [
|
|
9515
9460
|
section.subheader && /* @__PURE__ */ jsx(SectionHeader2, { className: megaMenuClasses.subheader, children: section.subheader }),
|
|
9516
9461
|
/* @__PURE__ */ jsx(Stack, { spacing: 0.5, children: section.items.map((item) => {
|
|
9517
9462
|
const itemActive = isActiveLink(pathname, item.path);
|
|
@@ -9551,12 +9496,12 @@ function MegaMenuVertical({
|
|
|
9551
9496
|
const theme = useTheme();
|
|
9552
9497
|
const cssVars = { ...megaMenuCssVars(theme, "vertical"), ...overridesVars };
|
|
9553
9498
|
return /* @__PURE__ */ jsx(
|
|
9554
|
-
|
|
9499
|
+
Nav3,
|
|
9555
9500
|
{
|
|
9556
9501
|
className: cn(megaMenuClasses.root, megaMenuClasses.vertical, className),
|
|
9557
9502
|
sx: [{ ...cssVars }, ...Array.isArray(sx) ? sx : [sx]],
|
|
9558
9503
|
...other,
|
|
9559
|
-
children: /* @__PURE__ */ jsx(
|
|
9504
|
+
children: /* @__PURE__ */ jsx(NavUl3, { className: megaMenuClasses.ul, sx: { gap: "var(--nav-item-gap)" }, children: data.map((item) => /* @__PURE__ */ jsx(
|
|
9560
9505
|
MegaMenuList2,
|
|
9561
9506
|
{
|
|
9562
9507
|
data: item,
|
|
@@ -9570,13 +9515,13 @@ function MegaMenuVertical({
|
|
|
9570
9515
|
}
|
|
9571
9516
|
);
|
|
9572
9517
|
}
|
|
9573
|
-
var
|
|
9518
|
+
var Nav4 = styled("nav")({
|
|
9574
9519
|
display: "flex",
|
|
9575
9520
|
flexDirection: "column",
|
|
9576
9521
|
flexShrink: 0,
|
|
9577
9522
|
width: "100%"
|
|
9578
9523
|
});
|
|
9579
|
-
var
|
|
9524
|
+
var NavUl4 = styled("ul")({
|
|
9580
9525
|
display: "flex",
|
|
9581
9526
|
flexDirection: "column",
|
|
9582
9527
|
listStyle: "none",
|
|
@@ -9584,7 +9529,7 @@ var NavUl5 = styled("ul")({
|
|
|
9584
9529
|
margin: 0,
|
|
9585
9530
|
width: "100%"
|
|
9586
9531
|
});
|
|
9587
|
-
var
|
|
9532
|
+
var NavLi4 = styled("li")({
|
|
9588
9533
|
display: "flex",
|
|
9589
9534
|
flexDirection: "column",
|
|
9590
9535
|
width: "100%"
|
|
@@ -9621,7 +9566,7 @@ var NavButton3 = styled("button")(({ theme, active }) => ({
|
|
|
9621
9566
|
}
|
|
9622
9567
|
}));
|
|
9623
9568
|
var NavLink = styled("a")(({ theme, active }) => navItemStyles(theme, active));
|
|
9624
|
-
var
|
|
9569
|
+
var IconWrapper4 = styled("span")({
|
|
9625
9570
|
width: "var(--nav-icon-size)",
|
|
9626
9571
|
height: "var(--nav-icon-size)",
|
|
9627
9572
|
marginRight: 12,
|
|
@@ -9653,7 +9598,7 @@ var ArrowIcon4 = styled("span")(({ open }) => ({
|
|
|
9653
9598
|
transform: "rotate(-45deg)"
|
|
9654
9599
|
}
|
|
9655
9600
|
}));
|
|
9656
|
-
var CollapseContent = styled(
|
|
9601
|
+
var CollapseContent = styled(Box19)(({ theme }) => ({
|
|
9657
9602
|
padding: "8px 0",
|
|
9658
9603
|
paddingLeft: 40,
|
|
9659
9604
|
backgroundColor: theme.palette.background.neutral
|
|
@@ -9701,7 +9646,7 @@ function MegaMenuList3({ data, render, slotProps, enabledRootRedirect }) {
|
|
|
9701
9646
|
const icon = typeof data.icon === "string" && render?.navIcon ? render.navIcon[data.icon] : data.icon;
|
|
9702
9647
|
if (!hasChild) {
|
|
9703
9648
|
const isExternal = isExternalLink(data.path);
|
|
9704
|
-
return /* @__PURE__ */ jsx(
|
|
9649
|
+
return /* @__PURE__ */ jsx(NavLi4, { className: megaMenuClasses.li, children: /* @__PURE__ */ jsxs(
|
|
9705
9650
|
NavLink,
|
|
9706
9651
|
{
|
|
9707
9652
|
href: data.path,
|
|
@@ -9710,13 +9655,13 @@ function MegaMenuList3({ data, render, slotProps, enabledRootRedirect }) {
|
|
|
9710
9655
|
target: isExternal ? "_blank" : void 0,
|
|
9711
9656
|
rel: isExternal ? "noopener noreferrer" : void 0,
|
|
9712
9657
|
children: [
|
|
9713
|
-
icon && /* @__PURE__ */ jsx(
|
|
9658
|
+
icon && /* @__PURE__ */ jsx(IconWrapper4, { className: megaMenuClasses.icon, children: icon }),
|
|
9714
9659
|
/* @__PURE__ */ jsx("span", { className: megaMenuClasses.title, children: data.title })
|
|
9715
9660
|
]
|
|
9716
9661
|
}
|
|
9717
9662
|
) });
|
|
9718
9663
|
}
|
|
9719
|
-
return /* @__PURE__ */ jsxs(
|
|
9664
|
+
return /* @__PURE__ */ jsxs(NavLi4, { className: megaMenuClasses.li, children: [
|
|
9720
9665
|
/* @__PURE__ */ jsxs(
|
|
9721
9666
|
NavButton3,
|
|
9722
9667
|
{
|
|
@@ -9730,13 +9675,13 @@ function MegaMenuList3({ data, render, slotProps, enabledRootRedirect }) {
|
|
|
9730
9675
|
disabled: data.disabled,
|
|
9731
9676
|
onClick: handleToggle,
|
|
9732
9677
|
children: [
|
|
9733
|
-
icon && /* @__PURE__ */ jsx(
|
|
9678
|
+
icon && /* @__PURE__ */ jsx(IconWrapper4, { className: megaMenuClasses.icon, children: icon }),
|
|
9734
9679
|
/* @__PURE__ */ jsx("span", { className: megaMenuClasses.title, children: data.title }),
|
|
9735
9680
|
/* @__PURE__ */ jsx(ArrowIcon4, { open, className: megaMenuClasses.arrow })
|
|
9736
9681
|
]
|
|
9737
9682
|
}
|
|
9738
9683
|
),
|
|
9739
|
-
/* @__PURE__ */ jsx(Collapse, { in: open, unmountOnExit: true, children: /* @__PURE__ */ jsx(CollapseContent, { children: data.children?.map((section, idx) => /* @__PURE__ */ jsxs(
|
|
9684
|
+
/* @__PURE__ */ jsx(Collapse, { in: open, unmountOnExit: true, children: /* @__PURE__ */ jsx(CollapseContent, { children: data.children?.map((section, idx) => /* @__PURE__ */ jsxs(Box19, { children: [
|
|
9740
9685
|
section.subheader && /* @__PURE__ */ jsx(SectionHeader3, { className: megaMenuClasses.subheader, children: section.subheader }),
|
|
9741
9686
|
/* @__PURE__ */ jsx(Stack, { children: section.items.map((item) => {
|
|
9742
9687
|
const itemActive = isActiveLink(pathname, item.path);
|
|
@@ -9771,12 +9716,12 @@ function MegaMenuMobile({
|
|
|
9771
9716
|
const theme = useTheme();
|
|
9772
9717
|
const cssVars = { ...megaMenuCssVars(theme, "mobile"), ...overridesVars };
|
|
9773
9718
|
return /* @__PURE__ */ jsx(
|
|
9774
|
-
|
|
9719
|
+
Nav4,
|
|
9775
9720
|
{
|
|
9776
9721
|
className: cn(megaMenuClasses.root, megaMenuClasses.mobile, className),
|
|
9777
9722
|
sx: [{ ...cssVars }, ...Array.isArray(sx) ? sx : [sx]],
|
|
9778
9723
|
...other,
|
|
9779
|
-
children: /* @__PURE__ */ jsx(
|
|
9724
|
+
children: /* @__PURE__ */ jsx(NavUl4, { className: megaMenuClasses.ul, children: data.map((item) => /* @__PURE__ */ jsx(
|
|
9780
9725
|
MegaMenuList3,
|
|
9781
9726
|
{
|
|
9782
9727
|
data: item,
|
|
@@ -9789,1101 +9734,6 @@ function MegaMenuMobile({
|
|
|
9789
9734
|
}
|
|
9790
9735
|
);
|
|
9791
9736
|
}
|
|
9792
|
-
var ScrollSpyContext = createContext({
|
|
9793
|
-
activeId: null,
|
|
9794
|
-
registerSection: () => {
|
|
9795
|
-
},
|
|
9796
|
-
unregisterSection: () => {
|
|
9797
|
-
}
|
|
9798
|
-
});
|
|
9799
|
-
function useScrollSpy() {
|
|
9800
|
-
return useContext(ScrollSpyContext);
|
|
9801
|
-
}
|
|
9802
|
-
function ScrollSpyProvider({
|
|
9803
|
-
children,
|
|
9804
|
-
offset = 80,
|
|
9805
|
-
root = null,
|
|
9806
|
-
headingSelector = "h1[id], h2[id], h3[id], h4[id], h5[id], h6[id]",
|
|
9807
|
-
containerRef
|
|
9808
|
-
}) {
|
|
9809
|
-
const [activeId, setActiveId] = useState(null);
|
|
9810
|
-
const sectionsRef = useRef(/* @__PURE__ */ new Map());
|
|
9811
|
-
const observerRef = useRef(null);
|
|
9812
|
-
const wrapperRef = useRef(null);
|
|
9813
|
-
const createObserver = useCallback(() => {
|
|
9814
|
-
observerRef.current?.disconnect();
|
|
9815
|
-
const observer = new IntersectionObserver(
|
|
9816
|
-
(entries) => {
|
|
9817
|
-
const visible = entries.filter((e) => e.isIntersecting).sort((a, b) => a.boundingClientRect.top - b.boundingClientRect.top);
|
|
9818
|
-
if (visible.length > 0) {
|
|
9819
|
-
setActiveId(visible[0].target.id);
|
|
9820
|
-
}
|
|
9821
|
-
},
|
|
9822
|
-
{
|
|
9823
|
-
root,
|
|
9824
|
-
rootMargin: `-${offset}px 0px -60% 0px`,
|
|
9825
|
-
threshold: 0
|
|
9826
|
-
}
|
|
9827
|
-
);
|
|
9828
|
-
sectionsRef.current.forEach((element) => observer.observe(element));
|
|
9829
|
-
observerRef.current = observer;
|
|
9830
|
-
}, [offset, root]);
|
|
9831
|
-
useEffect(() => {
|
|
9832
|
-
if (!headingSelector) return void 0;
|
|
9833
|
-
const timer = setTimeout(() => {
|
|
9834
|
-
const container = containerRef?.current ?? wrapperRef.current;
|
|
9835
|
-
if (!container) return;
|
|
9836
|
-
const headings = container.querySelectorAll(headingSelector);
|
|
9837
|
-
headings.forEach((heading) => {
|
|
9838
|
-
if (heading.id) {
|
|
9839
|
-
sectionsRef.current.set(heading.id, heading);
|
|
9840
|
-
}
|
|
9841
|
-
});
|
|
9842
|
-
createObserver();
|
|
9843
|
-
}, 100);
|
|
9844
|
-
return () => {
|
|
9845
|
-
clearTimeout(timer);
|
|
9846
|
-
observerRef.current?.disconnect();
|
|
9847
|
-
};
|
|
9848
|
-
}, [headingSelector, containerRef, createObserver]);
|
|
9849
|
-
useEffect(() => {
|
|
9850
|
-
if (!headingSelector) return void 0;
|
|
9851
|
-
const container = containerRef?.current ?? wrapperRef.current;
|
|
9852
|
-
if (!container) return void 0;
|
|
9853
|
-
const mutationObserver = new MutationObserver(() => {
|
|
9854
|
-
const headings = container.querySelectorAll(headingSelector);
|
|
9855
|
-
let changed = false;
|
|
9856
|
-
headings.forEach((heading) => {
|
|
9857
|
-
if (heading.id && !sectionsRef.current.has(heading.id)) {
|
|
9858
|
-
sectionsRef.current.set(heading.id, heading);
|
|
9859
|
-
changed = true;
|
|
9860
|
-
}
|
|
9861
|
-
});
|
|
9862
|
-
if (changed) {
|
|
9863
|
-
createObserver();
|
|
9864
|
-
}
|
|
9865
|
-
});
|
|
9866
|
-
mutationObserver.observe(container, { childList: true, subtree: true });
|
|
9867
|
-
return () => mutationObserver.disconnect();
|
|
9868
|
-
}, [headingSelector, containerRef, createObserver]);
|
|
9869
|
-
const registerSection = useCallback((id, element) => {
|
|
9870
|
-
sectionsRef.current.set(id, element);
|
|
9871
|
-
observerRef.current?.observe(element);
|
|
9872
|
-
}, []);
|
|
9873
|
-
const unregisterSection = useCallback((id) => {
|
|
9874
|
-
const element = sectionsRef.current.get(id);
|
|
9875
|
-
if (element) observerRef.current?.unobserve(element);
|
|
9876
|
-
sectionsRef.current.delete(id);
|
|
9877
|
-
}, []);
|
|
9878
|
-
return /* @__PURE__ */ jsx(ScrollSpyContext.Provider, { value: { activeId, registerSection, unregisterSection }, children: /* @__PURE__ */ jsx("div", { ref: wrapperRef, children }) });
|
|
9879
|
-
}
|
|
9880
|
-
function ScrollSpySection({ id, children, sx }) {
|
|
9881
|
-
const ref = useRef(null);
|
|
9882
|
-
const { registerSection, unregisterSection } = useScrollSpy();
|
|
9883
|
-
useEffect(() => {
|
|
9884
|
-
const element = ref.current;
|
|
9885
|
-
if (!element) return void 0;
|
|
9886
|
-
registerSection(id, element);
|
|
9887
|
-
return () => unregisterSection(id);
|
|
9888
|
-
}, [id, registerSection, unregisterSection]);
|
|
9889
|
-
return /* @__PURE__ */ jsx(Box20, { ref, id, sx, children });
|
|
9890
|
-
}
|
|
9891
|
-
function DocLayout({ sidebar, sectionNav, children, sx }) {
|
|
9892
|
-
return /* @__PURE__ */ jsxs(
|
|
9893
|
-
Box20,
|
|
9894
|
-
{
|
|
9895
|
-
sx: {
|
|
9896
|
-
display: "flex",
|
|
9897
|
-
width: "100%",
|
|
9898
|
-
...sx
|
|
9899
|
-
},
|
|
9900
|
-
children: [
|
|
9901
|
-
sidebar && /* @__PURE__ */ jsx(
|
|
9902
|
-
Box20,
|
|
9903
|
-
{
|
|
9904
|
-
component: "nav",
|
|
9905
|
-
sx: {
|
|
9906
|
-
width: 272,
|
|
9907
|
-
flexShrink: 0,
|
|
9908
|
-
display: { xs: "none", md: "block" },
|
|
9909
|
-
position: "sticky",
|
|
9910
|
-
top: 80,
|
|
9911
|
-
alignSelf: "flex-start",
|
|
9912
|
-
maxHeight: "calc(100vh - 100px)",
|
|
9913
|
-
overflowY: "auto",
|
|
9914
|
-
pr: 3,
|
|
9915
|
-
borderRight: 1,
|
|
9916
|
-
borderColor: "divider"
|
|
9917
|
-
},
|
|
9918
|
-
children: sidebar
|
|
9919
|
-
}
|
|
9920
|
-
),
|
|
9921
|
-
/* @__PURE__ */ jsx(
|
|
9922
|
-
Box20,
|
|
9923
|
-
{
|
|
9924
|
-
component: "main",
|
|
9925
|
-
sx: {
|
|
9926
|
-
flex: 1,
|
|
9927
|
-
minWidth: 0,
|
|
9928
|
-
px: { xs: 2, md: 4 }
|
|
9929
|
-
},
|
|
9930
|
-
children
|
|
9931
|
-
}
|
|
9932
|
-
),
|
|
9933
|
-
sectionNav && /* @__PURE__ */ jsx(
|
|
9934
|
-
Box20,
|
|
9935
|
-
{
|
|
9936
|
-
component: "aside",
|
|
9937
|
-
sx: {
|
|
9938
|
-
width: 240,
|
|
9939
|
-
flexShrink: 0,
|
|
9940
|
-
display: { xs: "none", lg: "block" },
|
|
9941
|
-
position: "sticky",
|
|
9942
|
-
top: 80,
|
|
9943
|
-
alignSelf: "flex-start",
|
|
9944
|
-
maxHeight: "calc(100vh - 100px)",
|
|
9945
|
-
overflowY: "auto",
|
|
9946
|
-
pl: 3
|
|
9947
|
-
},
|
|
9948
|
-
children: sectionNav
|
|
9949
|
-
}
|
|
9950
|
-
)
|
|
9951
|
-
]
|
|
9952
|
-
}
|
|
9953
|
-
);
|
|
9954
|
-
}
|
|
9955
|
-
function DocSidebar({ items, activeId, onItemClick, title }) {
|
|
9956
|
-
return /* @__PURE__ */ jsxs(Box20, { children: [
|
|
9957
|
-
title && /* @__PURE__ */ jsx(
|
|
9958
|
-
Typography5,
|
|
9959
|
-
{
|
|
9960
|
-
variant: "subtitle2",
|
|
9961
|
-
sx: {
|
|
9962
|
-
px: 1.5,
|
|
9963
|
-
pt: 0.5,
|
|
9964
|
-
pb: 2,
|
|
9965
|
-
fontWeight: 700,
|
|
9966
|
-
fontSize: "0.8125rem",
|
|
9967
|
-
color: "text.secondary",
|
|
9968
|
-
letterSpacing: "0.01em"
|
|
9969
|
-
},
|
|
9970
|
-
children: title
|
|
9971
|
-
}
|
|
9972
|
-
),
|
|
9973
|
-
/* @__PURE__ */ jsx(List2, { dense: true, disablePadding: true, children: items.map((item) => /* @__PURE__ */ jsx(SidebarNode, { item, activeId, onItemClick, depth: 0 }, item.id)) })
|
|
9974
|
-
] });
|
|
9975
|
-
}
|
|
9976
|
-
function SidebarNode({
|
|
9977
|
-
item,
|
|
9978
|
-
activeId,
|
|
9979
|
-
onItemClick,
|
|
9980
|
-
depth
|
|
9981
|
-
}) {
|
|
9982
|
-
const hasChildren = item.children && item.children.length > 0;
|
|
9983
|
-
const isActive = activeId === item.id;
|
|
9984
|
-
const [open, setOpen] = useState(true);
|
|
9985
|
-
const isCategory = hasChildren && !item.href;
|
|
9986
|
-
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
9987
|
-
/* @__PURE__ */ jsx(
|
|
9988
|
-
ListItemButton,
|
|
9989
|
-
{
|
|
9990
|
-
selected: isActive,
|
|
9991
|
-
onClick: () => {
|
|
9992
|
-
if (hasChildren) setOpen(!open);
|
|
9993
|
-
onItemClick?.(item);
|
|
9994
|
-
},
|
|
9995
|
-
sx: {
|
|
9996
|
-
pl: 1.5 + depth * 1.5,
|
|
9997
|
-
pr: 1,
|
|
9998
|
-
py: isCategory ? 0.75 : 0.5,
|
|
9999
|
-
borderRadius: 1,
|
|
10000
|
-
mx: 0.5,
|
|
10001
|
-
mb: 0.25,
|
|
10002
|
-
minHeight: 0,
|
|
10003
|
-
...isCategory && {
|
|
10004
|
-
mt: depth === 0 ? 1 : 0.5
|
|
10005
|
-
},
|
|
10006
|
-
...isActive && {
|
|
10007
|
-
bgcolor: (theme) => alpha(theme.palette.primary.main, 0.08),
|
|
10008
|
-
color: "primary.main"
|
|
10009
|
-
}
|
|
10010
|
-
},
|
|
10011
|
-
children: /* @__PURE__ */ jsx(
|
|
10012
|
-
ListItemText,
|
|
10013
|
-
{
|
|
10014
|
-
primary: item.label,
|
|
10015
|
-
slotProps: {
|
|
10016
|
-
primary: {
|
|
10017
|
-
variant: "body2",
|
|
10018
|
-
noWrap: true,
|
|
10019
|
-
sx: {
|
|
10020
|
-
fontWeight: isCategory ? 600 : isActive ? 600 : 400,
|
|
10021
|
-
fontSize: "0.8125rem",
|
|
10022
|
-
...isCategory && { color: "text.primary" }
|
|
10023
|
-
}
|
|
10024
|
-
}
|
|
10025
|
-
}
|
|
10026
|
-
}
|
|
10027
|
-
)
|
|
10028
|
-
}
|
|
10029
|
-
),
|
|
10030
|
-
hasChildren && /* @__PURE__ */ jsx(Collapse, { in: open, children: /* @__PURE__ */ jsx(List2, { dense: true, disablePadding: true, children: item.children.map((child) => /* @__PURE__ */ jsx(
|
|
10031
|
-
SidebarNode,
|
|
10032
|
-
{
|
|
10033
|
-
item: child,
|
|
10034
|
-
activeId,
|
|
10035
|
-
onItemClick,
|
|
10036
|
-
depth: depth + 1
|
|
10037
|
-
},
|
|
10038
|
-
child.id
|
|
10039
|
-
)) }) })
|
|
10040
|
-
] });
|
|
10041
|
-
}
|
|
10042
|
-
function DocSectionNav({ headings, title = "On this page" }) {
|
|
10043
|
-
const { activeId } = useScrollSpy();
|
|
10044
|
-
const handleClick = useCallback((e, id) => {
|
|
10045
|
-
e.preventDefault();
|
|
10046
|
-
const element = document.getElementById(id);
|
|
10047
|
-
if (element) {
|
|
10048
|
-
element.scrollIntoView({ behavior: "smooth", block: "start" });
|
|
10049
|
-
window.history.replaceState(null, "", `#${id}`);
|
|
10050
|
-
}
|
|
10051
|
-
}, []);
|
|
10052
|
-
if (headings.length === 0) return null;
|
|
10053
|
-
return /* @__PURE__ */ jsxs(Box20, { children: [
|
|
10054
|
-
/* @__PURE__ */ jsx(
|
|
10055
|
-
Typography5,
|
|
10056
|
-
{
|
|
10057
|
-
variant: "overline",
|
|
10058
|
-
sx: {
|
|
10059
|
-
display: "block",
|
|
10060
|
-
mb: 2,
|
|
10061
|
-
color: "text.secondary",
|
|
10062
|
-
fontSize: "0.6875rem",
|
|
10063
|
-
fontWeight: 700,
|
|
10064
|
-
letterSpacing: "0.08em"
|
|
10065
|
-
},
|
|
10066
|
-
children: title
|
|
10067
|
-
}
|
|
10068
|
-
),
|
|
10069
|
-
/* @__PURE__ */ jsx(
|
|
10070
|
-
Box20,
|
|
10071
|
-
{
|
|
10072
|
-
component: "nav",
|
|
10073
|
-
sx: {
|
|
10074
|
-
position: "relative",
|
|
10075
|
-
borderLeft: 1,
|
|
10076
|
-
borderColor: "divider"
|
|
10077
|
-
},
|
|
10078
|
-
children: headings.map((heading) => {
|
|
10079
|
-
const isActive = activeId === heading.id;
|
|
10080
|
-
const indent = (heading.level - 2) * 1.5;
|
|
10081
|
-
return /* @__PURE__ */ jsx(
|
|
10082
|
-
Box20,
|
|
10083
|
-
{
|
|
10084
|
-
component: "a",
|
|
10085
|
-
href: `#${heading.id}`,
|
|
10086
|
-
onClick: (e) => handleClick(e, heading.id),
|
|
10087
|
-
sx: {
|
|
10088
|
-
display: "block",
|
|
10089
|
-
py: 0.75,
|
|
10090
|
-
pl: indent + 2,
|
|
10091
|
-
pr: 1,
|
|
10092
|
-
ml: "-1px",
|
|
10093
|
-
fontSize: "0.8125rem",
|
|
10094
|
-
lineHeight: 1.5,
|
|
10095
|
-
textDecoration: "none",
|
|
10096
|
-
color: isActive ? "primary.main" : "text.disabled",
|
|
10097
|
-
fontWeight: isActive ? 600 : 400,
|
|
10098
|
-
borderLeft: 2,
|
|
10099
|
-
borderColor: isActive ? "primary.main" : "transparent",
|
|
10100
|
-
transition: "color 0.2s ease, border-color 0.2s ease",
|
|
10101
|
-
cursor: "pointer",
|
|
10102
|
-
"&:hover": {
|
|
10103
|
-
color: isActive ? "primary.main" : "text.primary",
|
|
10104
|
-
backgroundColor: (theme) => alpha(theme.palette.action.hover, 0.04),
|
|
10105
|
-
borderRadius: "0 6px 6px 0"
|
|
10106
|
-
}
|
|
10107
|
-
},
|
|
10108
|
-
children: heading.text
|
|
10109
|
-
},
|
|
10110
|
-
heading.id
|
|
10111
|
-
);
|
|
10112
|
-
})
|
|
10113
|
-
}
|
|
10114
|
-
)
|
|
10115
|
-
] });
|
|
10116
|
-
}
|
|
10117
|
-
|
|
10118
|
-
// src/components/content-renderer/classes.ts
|
|
10119
|
-
var PREFIX = "prism-content";
|
|
10120
|
-
var contentClasses = {
|
|
10121
|
-
root: `${PREFIX}__root`,
|
|
10122
|
-
compact: `${PREFIX}__compact`,
|
|
10123
|
-
tiptap: `${PREFIX}__tiptap`,
|
|
10124
|
-
markdown: `${PREFIX}__markdown`,
|
|
10125
|
-
image: `${PREFIX}__image`,
|
|
10126
|
-
link: `${PREFIX}__link`,
|
|
10127
|
-
checkbox: `${PREFIX}__checkbox`,
|
|
10128
|
-
codeBlock: `${PREFIX}__code-block`,
|
|
10129
|
-
codeBlockTitle: `${PREFIX}__code-block-title`,
|
|
10130
|
-
codeBlockCopy: `${PREFIX}__code-block-copy`,
|
|
10131
|
-
codeBlockHighlight: `${PREFIX}__code-block-highlight`,
|
|
10132
|
-
codeInline: `${PREFIX}__code-inline`,
|
|
10133
|
-
spoiler: `${PREFIX}__spoiler`,
|
|
10134
|
-
admonition: `${PREFIX}__admonition`,
|
|
10135
|
-
admonitionNote: `${PREFIX}__admonition-note`,
|
|
10136
|
-
admonitionTip: `${PREFIX}__admonition-tip`,
|
|
10137
|
-
admonitionWarning: `${PREFIX}__admonition-warning`,
|
|
10138
|
-
admonitionDanger: `${PREFIX}__admonition-danger`,
|
|
10139
|
-
admonitionInfo: `${PREFIX}__admonition-info`,
|
|
10140
|
-
admonitionCaution: `${PREFIX}__admonition-caution`,
|
|
10141
|
-
admonitionTitle: `${PREFIX}__admonition-title`,
|
|
10142
|
-
admonitionContent: `${PREFIX}__admonition-content`,
|
|
10143
|
-
tabs: `${PREFIX}__tabs`,
|
|
10144
|
-
tabsHeader: `${PREFIX}__tabs-header`,
|
|
10145
|
-
tabsTab: `${PREFIX}__tabs-tab`,
|
|
10146
|
-
tabsTabActive: `${PREFIX}__tabs-tab-active`,
|
|
10147
|
-
tabsPanel: `${PREFIX}__tabs-panel`,
|
|
10148
|
-
figure: `${PREFIX}__figure`,
|
|
10149
|
-
figcaption: `${PREFIX}__figcaption`,
|
|
10150
|
-
kbd: `${PREFIX}__kbd`
|
|
10151
|
-
};
|
|
10152
|
-
|
|
10153
|
-
// src/components/content-renderer/styles.ts
|
|
10154
|
-
var MARGIN = "0.75em";
|
|
10155
|
-
var CODE_FONT = "'JetBrains Mono', 'Fira Code', 'Cascadia Code', Menlo, Monaco, 'Courier New', monospace";
|
|
10156
|
-
var ContentRoot = styled("div")(({ theme }) => ({
|
|
10157
|
-
// General spacing between adjacent elements
|
|
10158
|
-
"> * + *": {
|
|
10159
|
-
marginTop: 0,
|
|
10160
|
-
marginBottom: MARGIN
|
|
10161
|
-
},
|
|
10162
|
-
// ─── Headings ───────────────────────────────────────────────
|
|
10163
|
-
"& h1, & h2, & h3, & h4, & h5, & h6": {
|
|
10164
|
-
scrollMarginTop: 100
|
|
10165
|
-
// Account for sticky header on anchor jump
|
|
10166
|
-
},
|
|
10167
|
-
// First heading in content should not have excessive top margin
|
|
10168
|
-
"& > h1:first-of-type, & > h2:first-of-type, & > h3:first-of-type": {
|
|
10169
|
-
marginTop: 0
|
|
10170
|
-
},
|
|
10171
|
-
h1: { ...theme.typography.h1, marginTop: 40, marginBottom: 12 },
|
|
10172
|
-
h2: { ...theme.typography.h2, marginTop: 40, marginBottom: 12 },
|
|
10173
|
-
h3: { ...theme.typography.h3, marginTop: 32, marginBottom: 8 },
|
|
10174
|
-
h4: { ...theme.typography.h4, marginTop: 24, marginBottom: 8 },
|
|
10175
|
-
h5: { ...theme.typography.h5, marginTop: 24, marginBottom: 8 },
|
|
10176
|
-
h6: { ...theme.typography.h6, marginTop: 24, marginBottom: 8 },
|
|
10177
|
-
// ─── Paragraph ──────────────────────────────────────────────
|
|
10178
|
-
p: {
|
|
10179
|
-
...theme.typography.body1,
|
|
10180
|
-
marginBottom: "1.25rem",
|
|
10181
|
-
lineHeight: 1.8
|
|
10182
|
-
},
|
|
10183
|
-
// ─── Horizontal rule ───────────────────────────────────────
|
|
10184
|
-
hr: {
|
|
10185
|
-
flexShrink: 0,
|
|
10186
|
-
borderWidth: 0,
|
|
10187
|
-
margin: "2em 0",
|
|
10188
|
-
borderStyle: "solid",
|
|
10189
|
-
borderBottomWidth: "thin",
|
|
10190
|
-
borderColor: theme.palette.divider
|
|
10191
|
-
},
|
|
10192
|
-
// ─── Images ─────────────────────────────────────────────────
|
|
10193
|
-
[`& .${contentClasses.image}`]: {
|
|
10194
|
-
width: "100%",
|
|
10195
|
-
height: "auto",
|
|
10196
|
-
maxWidth: "100%",
|
|
10197
|
-
margin: "auto auto 1.25em",
|
|
10198
|
-
borderRadius: Number(theme.shape.borderRadius) * 2
|
|
10199
|
-
},
|
|
10200
|
-
// Plain img fallback
|
|
10201
|
-
"& img:not([class])": {
|
|
10202
|
-
maxWidth: "100%",
|
|
10203
|
-
height: "auto",
|
|
10204
|
-
borderRadius: Number(theme.shape.borderRadius) * 2,
|
|
10205
|
-
marginBottom: "1.25em"
|
|
10206
|
-
},
|
|
10207
|
-
// ─── Links ──────────────────────────────────────────────────
|
|
10208
|
-
"& a": {
|
|
10209
|
-
color: theme.palette.primary.main,
|
|
10210
|
-
textDecoration: "none",
|
|
10211
|
-
"&:hover": {
|
|
10212
|
-
textDecoration: "underline"
|
|
10213
|
-
}
|
|
10214
|
-
},
|
|
10215
|
-
// ─── Lists ──────────────────────────────────────────────────
|
|
10216
|
-
"& ul": {
|
|
10217
|
-
listStyleType: "disc"
|
|
10218
|
-
},
|
|
10219
|
-
"& ul, & ol": {
|
|
10220
|
-
paddingLeft: 24,
|
|
10221
|
-
marginBottom: "1.25rem",
|
|
10222
|
-
"& > li": {
|
|
10223
|
-
lineHeight: 2,
|
|
10224
|
-
// Markdown wraps every list-item body in a `<p>`. With
|
|
10225
|
-
// `display: inline-block` (the previous setting), Chromium
|
|
10226
|
-
// refuses to render the `<li>`'s ::marker at all — the
|
|
10227
|
-
// disc/decimal vanishes and the list looks like a series of
|
|
10228
|
-
// bullet-less paragraphs. `display: inline` collapses the
|
|
10229
|
-
// `<p>` into inline flow so the marker positions normally;
|
|
10230
|
-
// `margin: 0` keeps the LI height tight against the marker
|
|
10231
|
-
// baseline. Multi-paragraph list items (rare here, but
|
|
10232
|
-
// possible) still render — subsequent `<p>` siblings get a
|
|
10233
|
-
// line break by the inline-flow rules.
|
|
10234
|
-
"& > p": {
|
|
10235
|
-
margin: 0,
|
|
10236
|
-
display: "inline"
|
|
10237
|
-
}
|
|
10238
|
-
}
|
|
10239
|
-
},
|
|
10240
|
-
// Nested lists
|
|
10241
|
-
"& ul ul, & ol ol, & ul ol, & ol ul": {
|
|
10242
|
-
marginBottom: 0
|
|
10243
|
-
},
|
|
10244
|
-
// ─── Task list (TipTap taskList / GFM checkboxes) ──────────
|
|
10245
|
-
'& ul[data-type="taskList"]': {
|
|
10246
|
-
listStyle: "none",
|
|
10247
|
-
paddingLeft: 4,
|
|
10248
|
-
"& li": {
|
|
10249
|
-
display: "flex",
|
|
10250
|
-
alignItems: "flex-start",
|
|
10251
|
-
gap: 8,
|
|
10252
|
-
"& > label": {
|
|
10253
|
-
marginTop: 4
|
|
10254
|
-
}
|
|
10255
|
-
}
|
|
10256
|
-
},
|
|
10257
|
-
// ─── Blockquote ─────────────────────────────────────────────
|
|
10258
|
-
"& blockquote": {
|
|
10259
|
-
lineHeight: 1.6,
|
|
10260
|
-
fontSize: "1em",
|
|
10261
|
-
margin: "24px 0",
|
|
10262
|
-
position: "relative",
|
|
10263
|
-
padding: theme.spacing(2.5, 3, 2.5, 7),
|
|
10264
|
-
color: theme.palette.text.secondary,
|
|
10265
|
-
borderLeft: `4px solid ${theme.palette.primary.main}`,
|
|
10266
|
-
borderRadius: Number(theme.shape.borderRadius) * 2,
|
|
10267
|
-
backgroundColor: alpha(theme.palette.primary.main, 0.04),
|
|
10268
|
-
"& p": {
|
|
10269
|
-
margin: 0,
|
|
10270
|
-
fontSize: "inherit"
|
|
10271
|
-
},
|
|
10272
|
-
"& p + p": {
|
|
10273
|
-
marginTop: 8
|
|
10274
|
-
},
|
|
10275
|
-
"&::before": {
|
|
10276
|
-
left: 16,
|
|
10277
|
-
top: 8,
|
|
10278
|
-
display: "block",
|
|
10279
|
-
fontSize: "2.5em",
|
|
10280
|
-
content: '"\\201C"',
|
|
10281
|
-
position: "absolute",
|
|
10282
|
-
color: alpha(theme.palette.primary.main, 0.3),
|
|
10283
|
-
lineHeight: 1
|
|
10284
|
-
}
|
|
10285
|
-
},
|
|
10286
|
-
// ─── Inline code ────────────────────────────────────────────
|
|
10287
|
-
[`& .${contentClasses.codeInline}`]: {
|
|
10288
|
-
padding: theme.spacing(0.25, 0.75),
|
|
10289
|
-
color: theme.palette.text.secondary,
|
|
10290
|
-
fontSize: theme.typography.body2.fontSize,
|
|
10291
|
-
borderRadius: Number(theme.shape.borderRadius) / 2,
|
|
10292
|
-
backgroundColor: alpha(theme.palette.grey[500], 0.2),
|
|
10293
|
-
fontFamily: CODE_FONT
|
|
10294
|
-
},
|
|
10295
|
-
// Fallback for code not inside pre
|
|
10296
|
-
"& :not(pre) > code:not([class])": {
|
|
10297
|
-
padding: theme.spacing(0.25, 0.75),
|
|
10298
|
-
color: theme.palette.text.secondary,
|
|
10299
|
-
fontSize: theme.typography.body2.fontSize,
|
|
10300
|
-
borderRadius: Number(theme.shape.borderRadius) / 2,
|
|
10301
|
-
backgroundColor: alpha(theme.palette.grey[500], 0.2),
|
|
10302
|
-
fontFamily: CODE_FONT
|
|
10303
|
-
},
|
|
10304
|
-
// ─── Code block ─────────────────────────────────────────────
|
|
10305
|
-
[`& .${contentClasses.codeBlock}`]: {
|
|
10306
|
-
position: "relative",
|
|
10307
|
-
marginBottom: "1.25rem",
|
|
10308
|
-
"& pre": {
|
|
10309
|
-
overflowX: "auto",
|
|
10310
|
-
padding: theme.spacing(3),
|
|
10311
|
-
color: theme.palette.common.white,
|
|
10312
|
-
borderRadius: Number(theme.shape.borderRadius) * 1.5,
|
|
10313
|
-
fontFamily: CODE_FONT,
|
|
10314
|
-
fontSize: theme.typography.body2.fontSize,
|
|
10315
|
-
lineHeight: 1.7,
|
|
10316
|
-
backgroundColor: theme.palette.grey[900],
|
|
10317
|
-
...theme.palette.mode === "dark" && {
|
|
10318
|
-
backgroundColor: alpha(theme.palette.grey[800], 0.9)
|
|
10319
|
-
},
|
|
10320
|
-
"& code": {
|
|
10321
|
-
fontSize: "inherit",
|
|
10322
|
-
fontFamily: "inherit",
|
|
10323
|
-
backgroundColor: "transparent",
|
|
10324
|
-
padding: 0,
|
|
10325
|
-
borderRadius: 0,
|
|
10326
|
-
color: "inherit"
|
|
10327
|
-
}
|
|
10328
|
-
}
|
|
10329
|
-
},
|
|
10330
|
-
// Fallback for bare pre blocks
|
|
10331
|
-
"& pre:not([class])": {
|
|
10332
|
-
overflowX: "auto",
|
|
10333
|
-
padding: theme.spacing(3),
|
|
10334
|
-
color: theme.palette.common.white,
|
|
10335
|
-
borderRadius: Number(theme.shape.borderRadius) * 1.5,
|
|
10336
|
-
fontFamily: CODE_FONT,
|
|
10337
|
-
fontSize: theme.typography.body2.fontSize,
|
|
10338
|
-
lineHeight: 1.7,
|
|
10339
|
-
backgroundColor: theme.palette.grey[900],
|
|
10340
|
-
marginBottom: "1.25rem",
|
|
10341
|
-
...theme.palette.mode === "dark" && {
|
|
10342
|
-
backgroundColor: alpha(theme.palette.grey[800], 0.9)
|
|
10343
|
-
},
|
|
10344
|
-
"& code": {
|
|
10345
|
-
fontSize: "inherit",
|
|
10346
|
-
fontFamily: "inherit",
|
|
10347
|
-
backgroundColor: "transparent",
|
|
10348
|
-
padding: 0,
|
|
10349
|
-
color: "inherit"
|
|
10350
|
-
}
|
|
10351
|
-
},
|
|
10352
|
-
// ─── Table ──────────────────────────────────────────────────
|
|
10353
|
-
"& table": {
|
|
10354
|
-
width: "100%",
|
|
10355
|
-
borderCollapse: "collapse",
|
|
10356
|
-
fontSize: theme.typography.body2.fontSize,
|
|
10357
|
-
border: `1px solid ${theme.palette.divider}`,
|
|
10358
|
-
marginBottom: "1.25rem",
|
|
10359
|
-
"& th, & td": {
|
|
10360
|
-
padding: theme.spacing(1, 1.5),
|
|
10361
|
-
border: `1px solid ${theme.palette.divider}`,
|
|
10362
|
-
verticalAlign: "top"
|
|
10363
|
-
},
|
|
10364
|
-
"& th": {
|
|
10365
|
-
fontWeight: 700,
|
|
10366
|
-
backgroundColor: alpha(theme.palette.grey[500], 0.08)
|
|
10367
|
-
},
|
|
10368
|
-
"& tbody tr:nth-of-type(odd)": {
|
|
10369
|
-
backgroundColor: alpha(theme.palette.grey[500], 0.04)
|
|
10370
|
-
}
|
|
10371
|
-
},
|
|
10372
|
-
// ─── Checkbox (GFM task lists) ──────────────────────────────
|
|
10373
|
-
[`& .${contentClasses.checkbox}`]: {
|
|
10374
|
-
cursor: "pointer",
|
|
10375
|
-
position: "relative",
|
|
10376
|
-
"&:before": {
|
|
10377
|
-
content: '""',
|
|
10378
|
-
top: -2,
|
|
10379
|
-
left: -2,
|
|
10380
|
-
width: 17,
|
|
10381
|
-
height: 17,
|
|
10382
|
-
borderRadius: 3,
|
|
10383
|
-
position: "absolute",
|
|
10384
|
-
backgroundColor: theme.palette.grey[300],
|
|
10385
|
-
...theme.palette.mode === "dark" && {
|
|
10386
|
-
backgroundColor: theme.palette.grey[700]
|
|
10387
|
-
}
|
|
10388
|
-
},
|
|
10389
|
-
"&:checked": {
|
|
10390
|
-
"&:before": {
|
|
10391
|
-
backgroundColor: theme.palette.primary.main
|
|
10392
|
-
},
|
|
10393
|
-
"&:after": {
|
|
10394
|
-
top: 1,
|
|
10395
|
-
left: 5,
|
|
10396
|
-
width: 4,
|
|
10397
|
-
height: 9,
|
|
10398
|
-
content: '""',
|
|
10399
|
-
position: "absolute",
|
|
10400
|
-
borderStyle: "solid",
|
|
10401
|
-
transform: "rotate(45deg)",
|
|
10402
|
-
borderWidth: "0 2px 2px 0",
|
|
10403
|
-
borderColor: theme.palette.common.white
|
|
10404
|
-
}
|
|
10405
|
-
}
|
|
10406
|
-
},
|
|
10407
|
-
// ─── Details / Summary ──────────────────────────────────────
|
|
10408
|
-
"& details": {
|
|
10409
|
-
marginBottom: "1rem",
|
|
10410
|
-
"& summary": {
|
|
10411
|
-
cursor: "pointer",
|
|
10412
|
-
fontWeight: 600,
|
|
10413
|
-
marginBottom: 8
|
|
10414
|
-
}
|
|
10415
|
-
},
|
|
10416
|
-
// ─── Definition list ────────────────────────────────────────
|
|
10417
|
-
"& dl": {
|
|
10418
|
-
marginBottom: "1.25rem",
|
|
10419
|
-
"& dt": {
|
|
10420
|
-
fontWeight: 700,
|
|
10421
|
-
marginTop: 12
|
|
10422
|
-
},
|
|
10423
|
-
"& dd": {
|
|
10424
|
-
marginLeft: 24,
|
|
10425
|
-
marginBottom: 4
|
|
10426
|
-
}
|
|
10427
|
-
},
|
|
10428
|
-
// ─── Kbd (keyboard shortcut) ────────────────────────────────
|
|
10429
|
-
"& kbd": {
|
|
10430
|
-
display: "inline-block",
|
|
10431
|
-
padding: theme.spacing(0.25, 0.5),
|
|
10432
|
-
fontSize: "0.8em",
|
|
10433
|
-
fontFamily: CODE_FONT,
|
|
10434
|
-
borderRadius: 4,
|
|
10435
|
-
border: `1px solid ${theme.palette.divider}`,
|
|
10436
|
-
boxShadow: `0 1px 0 ${alpha(theme.palette.grey[500], 0.1)}`,
|
|
10437
|
-
backgroundColor: alpha(theme.palette.grey[500], 0.06)
|
|
10438
|
-
},
|
|
10439
|
-
// ─── Mark (highlight) ──────────────────────────────────────
|
|
10440
|
-
"& mark": {
|
|
10441
|
-
padding: theme.spacing(0, 0.5),
|
|
10442
|
-
borderRadius: 2,
|
|
10443
|
-
backgroundColor: alpha(theme.palette.warning.main, 0.3)
|
|
10444
|
-
},
|
|
10445
|
-
// ─── Sup / Sub ──────────────────────────────────────────────
|
|
10446
|
-
"& sup, & sub": {
|
|
10447
|
-
fontSize: "0.75em"
|
|
10448
|
-
},
|
|
10449
|
-
// ─── Spoiler (||hidden text||) ────────────────────────────
|
|
10450
|
-
[`& .${contentClasses.spoiler}`]: {
|
|
10451
|
-
backgroundColor: theme.palette.text.primary,
|
|
10452
|
-
color: theme.palette.text.primary,
|
|
10453
|
-
borderRadius: 4,
|
|
10454
|
-
padding: theme.spacing(0, 0.5),
|
|
10455
|
-
cursor: "pointer",
|
|
10456
|
-
transition: "all 0.15s ease",
|
|
10457
|
-
userSelect: "none",
|
|
10458
|
-
'&:hover, &[data-revealed="true"]': {
|
|
10459
|
-
backgroundColor: "transparent",
|
|
10460
|
-
color: "inherit",
|
|
10461
|
-
userSelect: "auto"
|
|
10462
|
-
}
|
|
10463
|
-
},
|
|
10464
|
-
// ─── Admonition (callout) ─────────────────────────────────
|
|
10465
|
-
[`& .${contentClasses.admonition}`]: {
|
|
10466
|
-
margin: theme.spacing(2, 0),
|
|
10467
|
-
padding: theme.spacing(1.5, 2),
|
|
10468
|
-
borderRadius: theme.shape.borderRadius,
|
|
10469
|
-
borderLeft: `4px solid ${theme.palette.divider}`,
|
|
10470
|
-
backgroundColor: alpha(theme.palette.text.primary, 0.04),
|
|
10471
|
-
"& > :last-child": { marginBottom: 0 }
|
|
10472
|
-
},
|
|
10473
|
-
[`& .${contentClasses.admonitionTitle}`]: {
|
|
10474
|
-
fontWeight: 600,
|
|
10475
|
-
textTransform: "uppercase",
|
|
10476
|
-
fontSize: "0.75rem",
|
|
10477
|
-
letterSpacing: "0.05em",
|
|
10478
|
-
marginBottom: theme.spacing(0.75),
|
|
10479
|
-
opacity: 0.85
|
|
10480
|
-
},
|
|
10481
|
-
[`& .${contentClasses.admonitionContent}`]: {
|
|
10482
|
-
"& p:last-child": { marginBottom: 0 }
|
|
10483
|
-
},
|
|
10484
|
-
[`& .${contentClasses.admonitionNote}`]: {
|
|
10485
|
-
borderLeftColor: theme.palette.text.secondary,
|
|
10486
|
-
backgroundColor: alpha(theme.palette.text.primary, 0.04)
|
|
10487
|
-
},
|
|
10488
|
-
[`& .${contentClasses.admonitionTip}`]: {
|
|
10489
|
-
borderLeftColor: theme.palette.success.main,
|
|
10490
|
-
backgroundColor: alpha(theme.palette.success.main, 0.08)
|
|
10491
|
-
},
|
|
10492
|
-
[`& .${contentClasses.admonitionWarning}`]: {
|
|
10493
|
-
borderLeftColor: theme.palette.warning.main,
|
|
10494
|
-
backgroundColor: alpha(theme.palette.warning.main, 0.08)
|
|
10495
|
-
},
|
|
10496
|
-
[`& .${contentClasses.admonitionDanger}`]: {
|
|
10497
|
-
borderLeftColor: theme.palette.error.main,
|
|
10498
|
-
backgroundColor: alpha(theme.palette.error.main, 0.08)
|
|
10499
|
-
},
|
|
10500
|
-
[`& .${contentClasses.admonitionInfo}`]: {
|
|
10501
|
-
borderLeftColor: theme.palette.info.main,
|
|
10502
|
-
backgroundColor: alpha(theme.palette.info.main, 0.08)
|
|
10503
|
-
},
|
|
10504
|
-
[`& .${contentClasses.admonitionCaution}`]: {
|
|
10505
|
-
borderLeftColor: theme.palette.warning.dark,
|
|
10506
|
-
backgroundColor: alpha(theme.palette.warning.dark, 0.08)
|
|
10507
|
-
},
|
|
10508
|
-
// ─── Tabs ───────────────────────────────────────────────────
|
|
10509
|
-
[`& .${contentClasses.tabs}`]: {
|
|
10510
|
-
margin: theme.spacing(2, 0),
|
|
10511
|
-
border: `1px solid ${theme.palette.divider}`,
|
|
10512
|
-
borderRadius: theme.shape.borderRadius,
|
|
10513
|
-
overflow: "hidden"
|
|
10514
|
-
},
|
|
10515
|
-
[`& .${contentClasses.tabsHeader}`]: {
|
|
10516
|
-
display: "flex",
|
|
10517
|
-
gap: 0,
|
|
10518
|
-
borderBottom: `1px solid ${theme.palette.divider}`,
|
|
10519
|
-
backgroundColor: alpha(theme.palette.text.primary, 0.03)
|
|
10520
|
-
},
|
|
10521
|
-
[`& .${contentClasses.tabsTab}`]: {
|
|
10522
|
-
appearance: "none",
|
|
10523
|
-
background: "transparent",
|
|
10524
|
-
border: "none",
|
|
10525
|
-
padding: theme.spacing(1, 2),
|
|
10526
|
-
fontFamily: "inherit",
|
|
10527
|
-
fontSize: "0.8125rem",
|
|
10528
|
-
fontWeight: 500,
|
|
10529
|
-
color: theme.palette.text.secondary,
|
|
10530
|
-
cursor: "pointer",
|
|
10531
|
-
borderBottom: "2px solid transparent",
|
|
10532
|
-
transition: "all 0.15s ease",
|
|
10533
|
-
"&:hover": { color: theme.palette.text.primary }
|
|
10534
|
-
},
|
|
10535
|
-
[`& .${contentClasses.tabsTabActive}`]: {
|
|
10536
|
-
color: theme.palette.text.primary,
|
|
10537
|
-
borderBottomColor: theme.palette.primary.main
|
|
10538
|
-
},
|
|
10539
|
-
[`& .${contentClasses.tabsPanel}`]: {
|
|
10540
|
-
padding: theme.spacing(2),
|
|
10541
|
-
"& > :first-of-type": { marginTop: 0 },
|
|
10542
|
-
"& > :last-child": { marginBottom: 0 }
|
|
10543
|
-
},
|
|
10544
|
-
// ─── Code block — title + copy button ───────────────────────
|
|
10545
|
-
[`& .${contentClasses.codeBlockTitle}`]: {
|
|
10546
|
-
display: "flex",
|
|
10547
|
-
alignItems: "center",
|
|
10548
|
-
justifyContent: "space-between",
|
|
10549
|
-
gap: theme.spacing(1),
|
|
10550
|
-
padding: theme.spacing(0.75, 1.5),
|
|
10551
|
-
fontSize: "0.75rem",
|
|
10552
|
-
fontFamily: 'ui-monospace, "SF Mono", Menlo, Consolas, monospace',
|
|
10553
|
-
color: theme.palette.text.secondary,
|
|
10554
|
-
backgroundColor: alpha(theme.palette.text.primary, 0.06),
|
|
10555
|
-
borderTopLeftRadius: theme.shape.borderRadius,
|
|
10556
|
-
borderTopRightRadius: theme.shape.borderRadius
|
|
10557
|
-
},
|
|
10558
|
-
[`& .${contentClasses.codeBlockCopy}`]: {
|
|
10559
|
-
appearance: "none",
|
|
10560
|
-
background: "transparent",
|
|
10561
|
-
border: "none",
|
|
10562
|
-
color: "inherit",
|
|
10563
|
-
cursor: "pointer",
|
|
10564
|
-
padding: theme.spacing(0.25, 0.75),
|
|
10565
|
-
fontSize: "0.875rem",
|
|
10566
|
-
borderRadius: theme.shape.borderRadius,
|
|
10567
|
-
"&:hover": { backgroundColor: alpha(theme.palette.text.primary, 0.08) }
|
|
10568
|
-
},
|
|
10569
|
-
// ─── Figure ─────────────────────────────────────────────────
|
|
10570
|
-
[`& .${contentClasses.figure}`]: {
|
|
10571
|
-
margin: theme.spacing(2, 0),
|
|
10572
|
-
textAlign: "center"
|
|
10573
|
-
},
|
|
10574
|
-
[`& .${contentClasses.figcaption}`]: {
|
|
10575
|
-
fontSize: "0.8125rem",
|
|
10576
|
-
color: theme.palette.text.secondary,
|
|
10577
|
-
marginTop: theme.spacing(0.75)
|
|
10578
|
-
},
|
|
10579
|
-
// ─── kbd ────────────────────────────────────────────────────
|
|
10580
|
-
[`& .${contentClasses.kbd}`]: {
|
|
10581
|
-
display: "inline-block",
|
|
10582
|
-
padding: theme.spacing(0, 0.5),
|
|
10583
|
-
fontFamily: 'ui-monospace, "SF Mono", Menlo, Consolas, monospace',
|
|
10584
|
-
fontSize: "0.8em",
|
|
10585
|
-
color: theme.palette.text.primary,
|
|
10586
|
-
border: `1px solid ${theme.palette.divider}`,
|
|
10587
|
-
borderBottomWidth: 2,
|
|
10588
|
-
borderRadius: 4,
|
|
10589
|
-
backgroundColor: alpha(theme.palette.text.primary, 0.04),
|
|
10590
|
-
boxShadow: `0 1px 0 ${alpha(theme.palette.text.primary, 0.15)}`,
|
|
10591
|
-
minWidth: "1.5em",
|
|
10592
|
-
textAlign: "center"
|
|
10593
|
-
},
|
|
10594
|
-
// ─── Compact mode (chat messages, comments, etc.) ─────────
|
|
10595
|
-
[`&.${contentClasses.compact}`]: {
|
|
10596
|
-
"> * + *": { marginTop: 0, marginBottom: 2 },
|
|
10597
|
-
"& > :first-of-type:not(p)": { marginTop: 4 },
|
|
10598
|
-
"& h1, & h2, & h3, & h4, & h5, & h6": { marginTop: 0, marginBottom: 2 },
|
|
10599
|
-
h1: { fontSize: "1.25rem", fontWeight: 600, marginTop: 0, marginBottom: 2 },
|
|
10600
|
-
h2: { fontSize: "1.125rem", fontWeight: 600, marginTop: 0, marginBottom: 2 },
|
|
10601
|
-
h3: { fontSize: "1rem", fontWeight: 600, marginTop: 0, marginBottom: 2 },
|
|
10602
|
-
"h4, h5, h6": { fontSize: "0.875rem", fontWeight: 600, marginTop: 0, marginBottom: 2 },
|
|
10603
|
-
p: {
|
|
10604
|
-
fontSize: "0.8125rem",
|
|
10605
|
-
lineHeight: 1.5,
|
|
10606
|
-
marginBottom: 2,
|
|
10607
|
-
"&:last-child": { marginBottom: 0 }
|
|
10608
|
-
},
|
|
10609
|
-
hr: { margin: "4px 0" },
|
|
10610
|
-
"& blockquote": {
|
|
10611
|
-
margin: "4px 0",
|
|
10612
|
-
padding: theme.spacing(0.5, 0, 0.5, 1.5),
|
|
10613
|
-
borderRadius: 0,
|
|
10614
|
-
backgroundColor: "transparent",
|
|
10615
|
-
"&::before": { display: "none" }
|
|
10616
|
-
},
|
|
10617
|
-
"& ul, & ol": {
|
|
10618
|
-
paddingLeft: 20,
|
|
10619
|
-
marginBottom: 2,
|
|
10620
|
-
"& > li": { lineHeight: 1.5, fontSize: "0.8125rem" }
|
|
10621
|
-
},
|
|
10622
|
-
"& img:not([class])": { marginBottom: 4 },
|
|
10623
|
-
[`& .${contentClasses.codeBlock}`]: { marginBottom: 4 },
|
|
10624
|
-
[`& .${contentClasses.codeBlock} pre, & pre:not([class])`]: {
|
|
10625
|
-
padding: theme.spacing(1.5),
|
|
10626
|
-
fontSize: "0.75rem",
|
|
10627
|
-
lineHeight: 1.5,
|
|
10628
|
-
marginBottom: 4
|
|
10629
|
-
},
|
|
10630
|
-
[`& .${contentClasses.codeInline}, & :not(pre) > code:not([class])`]: {
|
|
10631
|
-
fontSize: "0.75rem"
|
|
10632
|
-
},
|
|
10633
|
-
"& table": {
|
|
10634
|
-
fontSize: "0.75rem",
|
|
10635
|
-
marginBottom: 4
|
|
10636
|
-
}
|
|
10637
|
-
}
|
|
10638
|
-
}));
|
|
10639
|
-
var customNodeRegistry = /* @__PURE__ */ new Map();
|
|
10640
|
-
function registerTipTapNode(type, component) {
|
|
10641
|
-
customNodeRegistry.set(type, component);
|
|
10642
|
-
}
|
|
10643
|
-
var TipTapContext = createContext({});
|
|
10644
|
-
function renderMarks(text, marks = [], ctx) {
|
|
10645
|
-
return marks.reduce((acc, mark) => {
|
|
10646
|
-
switch (mark.type) {
|
|
10647
|
-
case "bold":
|
|
10648
|
-
return /* @__PURE__ */ jsx("strong", { children: acc });
|
|
10649
|
-
case "italic":
|
|
10650
|
-
return /* @__PURE__ */ jsx("em", { children: acc });
|
|
10651
|
-
case "code":
|
|
10652
|
-
return /* @__PURE__ */ jsx("code", { className: contentClasses.codeInline, children: acc });
|
|
10653
|
-
case "underline":
|
|
10654
|
-
return /* @__PURE__ */ jsx("u", { children: acc });
|
|
10655
|
-
case "strike":
|
|
10656
|
-
return /* @__PURE__ */ jsx("s", { children: acc });
|
|
10657
|
-
case "link":
|
|
10658
|
-
return /* @__PURE__ */ jsx("a", { href: mark.attrs?.href, target: mark.attrs?.target ?? "_blank", rel: "noopener noreferrer", children: acc });
|
|
10659
|
-
case "internalLink": {
|
|
10660
|
-
const to = String(mark.attrs?.to ?? mark.attrs?.href ?? "#");
|
|
10661
|
-
const Link6 = ctx?.linkComponent;
|
|
10662
|
-
return Link6 ? /* @__PURE__ */ jsx(Link6, { to, className: contentClasses.link, children: acc }) : /* @__PURE__ */ jsx("a", { href: to, children: acc });
|
|
10663
|
-
}
|
|
10664
|
-
case "highlight":
|
|
10665
|
-
return /* @__PURE__ */ jsx("mark", { style: mark.attrs?.color ? { backgroundColor: mark.attrs.color } : void 0, children: acc });
|
|
10666
|
-
case "subscript":
|
|
10667
|
-
return /* @__PURE__ */ jsx("sub", { children: acc });
|
|
10668
|
-
case "superscript":
|
|
10669
|
-
return /* @__PURE__ */ jsx("sup", { children: acc });
|
|
10670
|
-
case "textStyle":
|
|
10671
|
-
return /* @__PURE__ */ jsx("span", { style: { color: mark.attrs?.color }, children: acc });
|
|
10672
|
-
case "kbd":
|
|
10673
|
-
return /* @__PURE__ */ jsx("kbd", { className: contentClasses.kbd, children: acc });
|
|
10674
|
-
default:
|
|
10675
|
-
return acc;
|
|
10676
|
-
}
|
|
10677
|
-
}, text);
|
|
10678
|
-
}
|
|
10679
|
-
function slugify(nodes) {
|
|
10680
|
-
if (!nodes) return void 0;
|
|
10681
|
-
const text = nodes.map((n) => n.text ?? "").join("");
|
|
10682
|
-
if (!text) return void 0;
|
|
10683
|
-
return text.toLowerCase().replace(/[^a-z0-9а-яё]+/gi, "-").replace(/^-|-$/g, "");
|
|
10684
|
-
}
|
|
10685
|
-
function CodeBlock({ node }) {
|
|
10686
|
-
const language = node.attrs?.language;
|
|
10687
|
-
const title = node.attrs?.title;
|
|
10688
|
-
const html = node.attrs?.html;
|
|
10689
|
-
const code = node.content?.map((n) => n.text ?? "").join("\n") ?? "";
|
|
10690
|
-
const [copied, setCopied] = useState(false);
|
|
10691
|
-
const onCopy = useCallback(() => {
|
|
10692
|
-
navigator.clipboard?.writeText(code).then(
|
|
10693
|
-
() => {
|
|
10694
|
-
setCopied(true);
|
|
10695
|
-
setTimeout(() => setCopied(false), 1500);
|
|
10696
|
-
},
|
|
10697
|
-
() => {
|
|
10698
|
-
}
|
|
10699
|
-
);
|
|
10700
|
-
}, [code]);
|
|
10701
|
-
return /* @__PURE__ */ jsxs("div", { className: contentClasses.codeBlock, "data-language": language ?? void 0, children: [
|
|
10702
|
-
(title || language) && /* @__PURE__ */ jsxs("div", { className: contentClasses.codeBlockTitle, children: [
|
|
10703
|
-
/* @__PURE__ */ jsx("span", { children: title ?? language }),
|
|
10704
|
-
/* @__PURE__ */ jsx("button", { type: "button", onClick: onCopy, className: contentClasses.codeBlockCopy, "aria-label": "Copy code", children: copied ? "\u2713" : "\u29C9" })
|
|
10705
|
-
] }),
|
|
10706
|
-
html ? (
|
|
10707
|
-
// Shiki-rendered HTML is pre-sanitised at build time and contains only
|
|
10708
|
-
// <pre>/<code>/<span> tags with style attributes. Safe to inject.
|
|
10709
|
-
/* @__PURE__ */ jsx("div", { dangerouslySetInnerHTML: { __html: html } })
|
|
10710
|
-
) : /* @__PURE__ */ jsx("pre", { children: /* @__PURE__ */ jsx("code", { className: language ? `language-${language}` : void 0, children: code }) })
|
|
10711
|
-
] });
|
|
10712
|
-
}
|
|
10713
|
-
var ADMONITION_LABEL = {
|
|
10714
|
-
note: "Note",
|
|
10715
|
-
tip: "Tip",
|
|
10716
|
-
warning: "Warning",
|
|
10717
|
-
danger: "Danger",
|
|
10718
|
-
info: "Info",
|
|
10719
|
-
caution: "Caution"
|
|
10720
|
-
};
|
|
10721
|
-
var ADMONITION_CLASS = {
|
|
10722
|
-
note: contentClasses.admonitionNote,
|
|
10723
|
-
tip: contentClasses.admonitionTip,
|
|
10724
|
-
warning: contentClasses.admonitionWarning,
|
|
10725
|
-
danger: contentClasses.admonitionDanger,
|
|
10726
|
-
info: contentClasses.admonitionInfo,
|
|
10727
|
-
caution: contentClasses.admonitionCaution
|
|
10728
|
-
};
|
|
10729
|
-
function Admonition({ node }) {
|
|
10730
|
-
const kind = String(node.attrs?.kind ?? "note");
|
|
10731
|
-
const title = node.attrs?.title ?? ADMONITION_LABEL[kind] ?? kind;
|
|
10732
|
-
const variantClass = ADMONITION_CLASS[kind] ?? contentClasses.admonitionNote;
|
|
10733
|
-
return /* @__PURE__ */ jsxs("aside", { className: `${contentClasses.admonition} ${variantClass}`, "data-kind": kind, children: [
|
|
10734
|
-
/* @__PURE__ */ jsx("div", { className: contentClasses.admonitionTitle, children: title }),
|
|
10735
|
-
/* @__PURE__ */ jsx("div", { className: contentClasses.admonitionContent, children: node.content?.map(renderNode) })
|
|
10736
|
-
] });
|
|
10737
|
-
}
|
|
10738
|
-
function Tabs2({ node }) {
|
|
10739
|
-
const items = (node.content ?? []).filter((c) => c.type === "tabItem");
|
|
10740
|
-
const [active, setActive] = useState(0);
|
|
10741
|
-
if (items.length === 0) return null;
|
|
10742
|
-
const safeActive = Math.min(active, items.length - 1);
|
|
10743
|
-
return /* @__PURE__ */ jsxs("div", { className: contentClasses.tabs, children: [
|
|
10744
|
-
/* @__PURE__ */ jsx("div", { className: contentClasses.tabsHeader, role: "tablist", children: items.map((item, i) => {
|
|
10745
|
-
const label = item.attrs?.label ?? item.attrs?.value ?? `Tab ${i + 1}`;
|
|
10746
|
-
const isActive = i === safeActive;
|
|
10747
|
-
return /* @__PURE__ */ jsx(
|
|
10748
|
-
"button",
|
|
10749
|
-
{
|
|
10750
|
-
type: "button",
|
|
10751
|
-
role: "tab",
|
|
10752
|
-
"aria-selected": isActive,
|
|
10753
|
-
className: `${contentClasses.tabsTab} ${isActive ? contentClasses.tabsTabActive : ""}`,
|
|
10754
|
-
onClick: () => setActive(i),
|
|
10755
|
-
children: label
|
|
10756
|
-
},
|
|
10757
|
-
i
|
|
10758
|
-
);
|
|
10759
|
-
}) }),
|
|
10760
|
-
/* @__PURE__ */ jsx("div", { className: contentClasses.tabsPanel, role: "tabpanel", children: items[safeActive]?.content?.map(renderNode) })
|
|
10761
|
-
] });
|
|
10762
|
-
}
|
|
10763
|
-
function renderNode(node, index) {
|
|
10764
|
-
const CustomRenderer = customNodeRegistry.get(node.type);
|
|
10765
|
-
if (CustomRenderer) return /* @__PURE__ */ jsx(CustomRenderer, { node }, index);
|
|
10766
|
-
switch (node.type) {
|
|
10767
|
-
case "text":
|
|
10768
|
-
return /* @__PURE__ */ jsx(TextNode, { node }, index);
|
|
10769
|
-
case "paragraph":
|
|
10770
|
-
return /* @__PURE__ */ jsx("p", { children: node.content?.map(renderNode) }, index);
|
|
10771
|
-
case "heading": {
|
|
10772
|
-
const level = Math.min(Math.max(node.attrs?.level ?? 2, 1), 6);
|
|
10773
|
-
const Tag2 = `h${level}`;
|
|
10774
|
-
const id = node.attrs?.id ?? slugify(node.content);
|
|
10775
|
-
return /* @__PURE__ */ jsx(Tag2, { id, children: node.content?.map(renderNode) }, index);
|
|
10776
|
-
}
|
|
10777
|
-
case "bulletList":
|
|
10778
|
-
return /* @__PURE__ */ jsx("ul", { children: node.content?.map(renderNode) }, index);
|
|
10779
|
-
case "orderedList":
|
|
10780
|
-
return /* @__PURE__ */ jsx("ol", { start: node.attrs?.start ?? 1, children: node.content?.map(renderNode) }, index);
|
|
10781
|
-
case "listItem":
|
|
10782
|
-
return /* @__PURE__ */ jsx("li", { children: node.content?.map(renderNode) }, index);
|
|
10783
|
-
case "taskList":
|
|
10784
|
-
return /* @__PURE__ */ jsx("ul", { "data-type": "taskList", children: node.content?.map(renderNode) }, index);
|
|
10785
|
-
case "taskItem": {
|
|
10786
|
-
const checked = node.attrs?.checked ?? false;
|
|
10787
|
-
return /* @__PURE__ */ jsxs("li", { "data-type": "taskItem", "data-checked": checked, children: [
|
|
10788
|
-
/* @__PURE__ */ jsx("label", { children: /* @__PURE__ */ jsx("input", { type: "checkbox", checked, readOnly: true, className: contentClasses.checkbox }) }),
|
|
10789
|
-
/* @__PURE__ */ jsx("div", { children: node.content?.map(renderNode) })
|
|
10790
|
-
] }, index);
|
|
10791
|
-
}
|
|
10792
|
-
case "blockquote":
|
|
10793
|
-
return /* @__PURE__ */ jsx("blockquote", { children: node.content?.map(renderNode) }, index);
|
|
10794
|
-
case "codeBlock":
|
|
10795
|
-
return /* @__PURE__ */ jsx(CodeBlock, { node }, index);
|
|
10796
|
-
case "horizontalRule":
|
|
10797
|
-
return /* @__PURE__ */ jsx("hr", {}, index);
|
|
10798
|
-
case "image":
|
|
10799
|
-
return /* @__PURE__ */ jsx(
|
|
10800
|
-
"img",
|
|
10801
|
-
{
|
|
10802
|
-
src: node.attrs?.src,
|
|
10803
|
-
alt: node.attrs?.alt ?? "",
|
|
10804
|
-
title: node.attrs?.title,
|
|
10805
|
-
className: contentClasses.image,
|
|
10806
|
-
loading: "lazy"
|
|
10807
|
-
},
|
|
10808
|
-
index
|
|
10809
|
-
);
|
|
10810
|
-
case "figure":
|
|
10811
|
-
return /* @__PURE__ */ jsx("figure", { className: contentClasses.figure, children: node.content?.map(renderNode) }, index);
|
|
10812
|
-
case "figcaption":
|
|
10813
|
-
return /* @__PURE__ */ jsx("figcaption", { className: contentClasses.figcaption, children: node.content?.map(renderNode) }, index);
|
|
10814
|
-
case "hardBreak":
|
|
10815
|
-
return /* @__PURE__ */ jsx("br", {}, index);
|
|
10816
|
-
// ─── Admonition / Tabs ──────────────────────────────────
|
|
10817
|
-
case "admonition":
|
|
10818
|
-
return /* @__PURE__ */ jsx(Admonition, { node }, index);
|
|
10819
|
-
case "tabs":
|
|
10820
|
-
return /* @__PURE__ */ jsx(Tabs2, { node }, index);
|
|
10821
|
-
case "tabItem":
|
|
10822
|
-
return /* @__PURE__ */ jsx("section", { "data-type": "tabItem", children: node.content?.map(renderNode) }, index);
|
|
10823
|
-
// ─── Table ──────────────────────────────────────────────
|
|
10824
|
-
case "table":
|
|
10825
|
-
return /* @__PURE__ */ jsx("div", { style: { overflowX: "auto" }, children: /* @__PURE__ */ jsx("table", { children: node.content?.map(renderNode) }) }, index);
|
|
10826
|
-
case "tableRow":
|
|
10827
|
-
return /* @__PURE__ */ jsx("tr", { children: node.content?.map(renderNode) }, index);
|
|
10828
|
-
case "tableCell":
|
|
10829
|
-
return /* @__PURE__ */ jsx("td", { colSpan: node.attrs?.colspan ?? 1, rowSpan: node.attrs?.rowspan ?? 1, children: node.content?.map(renderNode) }, index);
|
|
10830
|
-
case "tableHeader":
|
|
10831
|
-
return /* @__PURE__ */ jsx("th", { colSpan: node.attrs?.colspan ?? 1, rowSpan: node.attrs?.rowspan ?? 1, children: node.content?.map(renderNode) }, index);
|
|
10832
|
-
// ─── Details / Summary (collapsible) ────────────────────
|
|
10833
|
-
case "details":
|
|
10834
|
-
return /* @__PURE__ */ jsx("details", { open: node.attrs?.open, children: node.content?.map(renderNode) }, index);
|
|
10835
|
-
case "detailsSummary":
|
|
10836
|
-
return /* @__PURE__ */ jsx("summary", { children: node.content?.map(renderNode) }, index);
|
|
10837
|
-
case "detailsContent":
|
|
10838
|
-
return /* @__PURE__ */ jsx("div", { children: node.content?.map(renderNode) }, index);
|
|
10839
|
-
// ─── YouTube embed ──────────────────────────────────────
|
|
10840
|
-
case "youtube": {
|
|
10841
|
-
const src = node.attrs?.src;
|
|
10842
|
-
if (!src) return null;
|
|
10843
|
-
return /* @__PURE__ */ jsx("div", { style: { position: "relative", paddingBottom: "56.25%", height: 0, marginBottom: "1.25rem" }, children: /* @__PURE__ */ jsx(
|
|
10844
|
-
"iframe",
|
|
10845
|
-
{
|
|
10846
|
-
src,
|
|
10847
|
-
title: "YouTube video",
|
|
10848
|
-
allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",
|
|
10849
|
-
allowFullScreen: true,
|
|
10850
|
-
style: {
|
|
10851
|
-
position: "absolute",
|
|
10852
|
-
top: 0,
|
|
10853
|
-
left: 0,
|
|
10854
|
-
width: "100%",
|
|
10855
|
-
height: "100%",
|
|
10856
|
-
border: "none",
|
|
10857
|
-
borderRadius: 8
|
|
10858
|
-
}
|
|
10859
|
-
}
|
|
10860
|
-
) }, index);
|
|
10861
|
-
}
|
|
10862
|
-
default:
|
|
10863
|
-
if (node.content) {
|
|
10864
|
-
return /* @__PURE__ */ jsx(Fragment$1, { children: node.content.map(renderNode) }, index);
|
|
10865
|
-
}
|
|
10866
|
-
return null;
|
|
10867
|
-
}
|
|
10868
|
-
}
|
|
10869
|
-
function TextNode({ node }) {
|
|
10870
|
-
const ctx = useContext(TipTapContext);
|
|
10871
|
-
return /* @__PURE__ */ jsx(Fragment$1, { children: renderMarks(node.text ?? "", node.marks, ctx) });
|
|
10872
|
-
}
|
|
10873
|
-
function TipTapRenderer({ content, className, sx, compact, linkComponent }) {
|
|
10874
|
-
if (!content || !("content" in content) || !Array.isArray(content.content)) {
|
|
10875
|
-
return null;
|
|
10876
|
-
}
|
|
10877
|
-
const ctxValue = linkComponent ? { linkComponent } : {};
|
|
10878
|
-
return /* @__PURE__ */ jsx(TipTapContext.Provider, { value: ctxValue, children: /* @__PURE__ */ jsx(
|
|
10879
|
-
ContentRoot,
|
|
10880
|
-
{
|
|
10881
|
-
className: [contentClasses.root, contentClasses.tiptap, compact && contentClasses.compact, className].filter(Boolean).join(" "),
|
|
10882
|
-
sx,
|
|
10883
|
-
children: content.content.map(renderNode)
|
|
10884
|
-
}
|
|
10885
|
-
) });
|
|
10886
|
-
}
|
|
10887
9737
|
|
|
10888
9738
|
// src/components/content-renderer/html-tags.ts
|
|
10889
9739
|
var htmlTags = [
|
|
@@ -11139,7 +9989,21 @@ function escapeHtml(str) {
|
|
|
11139
9989
|
function isExternalLink2(href) {
|
|
11140
9990
|
return /^https?:\/\//.test(href) || href.startsWith("//");
|
|
11141
9991
|
}
|
|
11142
|
-
var
|
|
9992
|
+
var SAFE_CLASS_RE = /^(prism-content__[a-z0-9_-]+|hljs(-[a-z0-9-]+)?|language-[a-z0-9+#-]+)$/i;
|
|
9993
|
+
var spoilerSanitizeSchema = {
|
|
9994
|
+
...defaultSchema,
|
|
9995
|
+
attributes: {
|
|
9996
|
+
...defaultSchema.attributes,
|
|
9997
|
+
span: [...defaultSchema.attributes?.["span"] ?? [], ["className", SAFE_CLASS_RE]],
|
|
9998
|
+
code: [...defaultSchema.attributes?.["code"] ?? [], ["className", SAFE_CLASS_RE]],
|
|
9999
|
+
div: [...defaultSchema.attributes?.["div"] ?? [], ["className", SAFE_CLASS_RE]]
|
|
10000
|
+
}
|
|
10001
|
+
};
|
|
10002
|
+
var defaultRehypePlugins = [
|
|
10003
|
+
rehypeRaw,
|
|
10004
|
+
[rehypeSanitize, spoilerSanitizeSchema],
|
|
10005
|
+
rehypeHighlight
|
|
10006
|
+
];
|
|
11143
10007
|
var defaultRemarkPlugins = [
|
|
11144
10008
|
[remarkGfm, { singleTilde: false }],
|
|
11145
10009
|
remarkSpoiler
|
|
@@ -11205,6 +10069,16 @@ function CheckboxInput(props) {
|
|
|
11205
10069
|
function isTipTapDoc(value) {
|
|
11206
10070
|
return typeof value === "object" && value !== null && "type" in value && value.type === "doc" && "content" in value && Array.isArray(value.content);
|
|
11207
10071
|
}
|
|
10072
|
+
function tryParseTipTapJson(value) {
|
|
10073
|
+
const trimmed = value.trimStart();
|
|
10074
|
+
if (!trimmed.startsWith("{")) return null;
|
|
10075
|
+
try {
|
|
10076
|
+
const parsed = JSON.parse(trimmed);
|
|
10077
|
+
return isTipTapDoc(parsed) ? parsed : null;
|
|
10078
|
+
} catch {
|
|
10079
|
+
return null;
|
|
10080
|
+
}
|
|
10081
|
+
}
|
|
11208
10082
|
function ContentRenderer({
|
|
11209
10083
|
content,
|
|
11210
10084
|
className,
|
|
@@ -11222,6 +10096,10 @@ function ContentRenderer({
|
|
|
11222
10096
|
}
|
|
11223
10097
|
if (typeof content === "string") {
|
|
11224
10098
|
if (!content.trim()) return null;
|
|
10099
|
+
const docFromJson = tryParseTipTapJson(content);
|
|
10100
|
+
if (docFromJson) {
|
|
10101
|
+
return /* @__PURE__ */ jsx(TipTapRenderer, { content: docFromJson, className, sx, compact });
|
|
10102
|
+
}
|
|
11225
10103
|
return /* @__PURE__ */ jsx(
|
|
11226
10104
|
Markdown,
|
|
11227
10105
|
{
|
|
@@ -11236,20 +10114,20 @@ function ContentRenderer({
|
|
|
11236
10114
|
}
|
|
11237
10115
|
return null;
|
|
11238
10116
|
}
|
|
11239
|
-
var
|
|
11240
|
-
var
|
|
10117
|
+
var HOUR2 = 3600;
|
|
10118
|
+
var DAY2 = 86400;
|
|
11241
10119
|
var WEEK = 604800;
|
|
11242
10120
|
var PRESETS = [
|
|
11243
|
-
{ label: "1h", value:
|
|
11244
|
-
{ label: "6h", value: 6 *
|
|
11245
|
-
{ label: "1d", value:
|
|
11246
|
-
{ label: "7d", value: 7 *
|
|
11247
|
-
{ label: "30d", value: 30 *
|
|
10121
|
+
{ label: "1h", value: HOUR2, key: "1h" },
|
|
10122
|
+
{ label: "6h", value: 6 * HOUR2, key: "6h" },
|
|
10123
|
+
{ label: "1d", value: DAY2, key: "1d" },
|
|
10124
|
+
{ label: "7d", value: 7 * DAY2, key: "7d" },
|
|
10125
|
+
{ label: "30d", value: 30 * DAY2, key: "30d" },
|
|
11248
10126
|
{ label: "\u221E", value: null, key: "permanent" }
|
|
11249
10127
|
];
|
|
11250
10128
|
var UNIT_SECONDS = {
|
|
11251
|
-
hours:
|
|
11252
|
-
days:
|
|
10129
|
+
hours: HOUR2,
|
|
10130
|
+
days: DAY2,
|
|
11253
10131
|
weeks: WEEK
|
|
11254
10132
|
};
|
|
11255
10133
|
var CUSTOM_KEY = "custom";
|
|
@@ -11259,12 +10137,14 @@ function resolveActiveKey(value) {
|
|
|
11259
10137
|
}
|
|
11260
10138
|
function decomposeSeconds(seconds) {
|
|
11261
10139
|
if (seconds > 0 && seconds % WEEK === 0) return { amount: seconds / WEEK, unit: "weeks" };
|
|
11262
|
-
if (seconds > 0 && seconds %
|
|
11263
|
-
return { amount: Math.max(1, Math.round(seconds /
|
|
10140
|
+
if (seconds > 0 && seconds % DAY2 === 0) return { amount: seconds / DAY2, unit: "days" };
|
|
10141
|
+
return { amount: Math.max(1, Math.round(seconds / HOUR2)), unit: "hours" };
|
|
11264
10142
|
}
|
|
11265
10143
|
function DurationPicker({ value, onChange, size = "small", disabled = false, labels }) {
|
|
11266
10144
|
const theme = useTheme();
|
|
11267
|
-
const
|
|
10145
|
+
const presetKey = useMemo(() => resolveActiveKey(value), [value]);
|
|
10146
|
+
const [customChosen, setCustomChosen] = useState(() => presetKey === CUSTOM_KEY);
|
|
10147
|
+
const activeKey = customChosen || presetKey === CUSTOM_KEY ? CUSTOM_KEY : presetKey;
|
|
11268
10148
|
const [customAmount, setCustomAmount] = useState(() => {
|
|
11269
10149
|
if (activeKey === CUSTOM_KEY && value !== null && value > 0) {
|
|
11270
10150
|
return decomposeSeconds(value).amount;
|
|
@@ -11277,28 +10157,38 @@ function DurationPicker({ value, onChange, size = "small", disabled = false, lab
|
|
|
11277
10157
|
}
|
|
11278
10158
|
return "hours";
|
|
11279
10159
|
});
|
|
10160
|
+
const [customText, setCustomText] = useState(() => String(customAmount));
|
|
11280
10161
|
const isCustom = activeKey === CUSTOM_KEY;
|
|
11281
10162
|
const handlePresetChange = useCallback(
|
|
11282
10163
|
(_, newKey) => {
|
|
11283
10164
|
if (newKey === null) return;
|
|
11284
10165
|
if (newKey === CUSTOM_KEY) {
|
|
10166
|
+
setCustomChosen(true);
|
|
11285
10167
|
onChange(customAmount * UNIT_SECONDS[customUnit]);
|
|
11286
10168
|
return;
|
|
11287
10169
|
}
|
|
11288
10170
|
const preset = PRESETS.find((p) => p.key === newKey);
|
|
11289
|
-
if (preset)
|
|
10171
|
+
if (preset) {
|
|
10172
|
+
setCustomChosen(false);
|
|
10173
|
+
onChange(preset.value);
|
|
10174
|
+
}
|
|
11290
10175
|
},
|
|
11291
10176
|
[onChange, customAmount, customUnit]
|
|
11292
10177
|
);
|
|
11293
10178
|
const handleCustomAmountChange = useCallback(
|
|
11294
10179
|
(e) => {
|
|
11295
|
-
const
|
|
11296
|
-
|
|
11297
|
-
|
|
11298
|
-
|
|
10180
|
+
const text = e.target.value;
|
|
10181
|
+
setCustomText(text);
|
|
10182
|
+
const parsed = parseInt(text, 10);
|
|
10183
|
+
if (!Number.isFinite(parsed) || parsed <= 0) return;
|
|
10184
|
+
setCustomAmount(parsed);
|
|
10185
|
+
onChange(parsed * UNIT_SECONDS[customUnit]);
|
|
11299
10186
|
},
|
|
11300
10187
|
[onChange, customUnit]
|
|
11301
10188
|
);
|
|
10189
|
+
const handleCustomAmountBlur = useCallback(() => {
|
|
10190
|
+
setCustomText(String(customAmount));
|
|
10191
|
+
}, [customAmount]);
|
|
11302
10192
|
const handleCustomUnitChange = useCallback(
|
|
11303
10193
|
(e) => {
|
|
11304
10194
|
const unit = e.target.value;
|
|
@@ -11330,7 +10220,7 @@ function DurationPicker({ value, onChange, size = "small", disabled = false, lab
|
|
|
11330
10220
|
}
|
|
11331
10221
|
}
|
|
11332
10222
|
};
|
|
11333
|
-
return /* @__PURE__ */ jsxs(
|
|
10223
|
+
return /* @__PURE__ */ jsxs(Box19, { children: [
|
|
11334
10224
|
/* @__PURE__ */ jsx(
|
|
11335
10225
|
Typography5,
|
|
11336
10226
|
{
|
|
@@ -11348,7 +10238,7 @@ function DurationPicker({ value, onChange, size = "small", disabled = false, lab
|
|
|
11348
10238
|
ToggleButtonGroup,
|
|
11349
10239
|
{
|
|
11350
10240
|
exclusive: true,
|
|
11351
|
-
value:
|
|
10241
|
+
value: activeKey,
|
|
11352
10242
|
onChange: handlePresetChange,
|
|
11353
10243
|
size,
|
|
11354
10244
|
disabled,
|
|
@@ -11360,7 +10250,14 @@ function DurationPicker({ value, onChange, size = "small", disabled = false, lab
|
|
|
11360
10250
|
border: "1px solid",
|
|
11361
10251
|
borderRadius: "8px !important",
|
|
11362
10252
|
borderColor: alpha(theme.palette.divider, 0.2),
|
|
11363
|
-
|
|
10253
|
+
// Position-class selectors replace the deprecated
|
|
10254
|
+
// `:not(:first-of-type)` sibling pattern (MUI v9 tags
|
|
10255
|
+
// children with firstButton/middleButton/lastButton via
|
|
10256
|
+
// ToggleButtonGroupButtonContext). gap:0.5 above means
|
|
10257
|
+
// we want INDEPENDENT borders on every button (no
|
|
10258
|
+
// overlap/collapse), so restore left border + zero out
|
|
10259
|
+
// MUI's default `margin-left: -1px` on middle/last.
|
|
10260
|
+
"&.MuiToggleButtonGroup-middleButton, &.MuiToggleButtonGroup-lastButton": {
|
|
11364
10261
|
borderLeft: "1px solid",
|
|
11365
10262
|
borderColor: alpha(theme.palette.divider, 0.2),
|
|
11366
10263
|
marginLeft: 0
|
|
@@ -11374,7 +10271,7 @@ function DurationPicker({ value, onChange, size = "small", disabled = false, lab
|
|
|
11374
10271
|
}
|
|
11375
10272
|
),
|
|
11376
10273
|
isCustom && /* @__PURE__ */ jsxs(
|
|
11377
|
-
|
|
10274
|
+
Box19,
|
|
11378
10275
|
{
|
|
11379
10276
|
sx: {
|
|
11380
10277
|
mt: 1.25,
|
|
@@ -11387,8 +10284,9 @@ function DurationPicker({ value, onChange, size = "small", disabled = false, lab
|
|
|
11387
10284
|
TextField2,
|
|
11388
10285
|
{
|
|
11389
10286
|
type: "number",
|
|
11390
|
-
value:
|
|
10287
|
+
value: customText,
|
|
11391
10288
|
onChange: handleCustomAmountChange,
|
|
10289
|
+
onBlur: handleCustomAmountBlur,
|
|
11392
10290
|
disabled,
|
|
11393
10291
|
size,
|
|
11394
10292
|
slotProps: {
|
|
@@ -11419,7 +10317,7 @@ function DurationPicker({ value, onChange, size = "small", disabled = false, lab
|
|
|
11419
10317
|
}
|
|
11420
10318
|
function ChangelogTimeline({ children, sx }) {
|
|
11421
10319
|
return /* @__PURE__ */ jsx(
|
|
11422
|
-
|
|
10320
|
+
Box19,
|
|
11423
10321
|
{
|
|
11424
10322
|
sx: {
|
|
11425
10323
|
position: "relative",
|
|
@@ -11439,9 +10337,9 @@ function ChangelogTimeline({ children, sx }) {
|
|
|
11439
10337
|
);
|
|
11440
10338
|
}
|
|
11441
10339
|
function ChangelogEntry({ version, date, badge, children }) {
|
|
11442
|
-
return /* @__PURE__ */ jsxs(
|
|
10340
|
+
return /* @__PURE__ */ jsxs(Box19, { sx: { position: "relative", pl: { xs: 5, sm: 7 }, pb: 4 }, children: [
|
|
11443
10341
|
/* @__PURE__ */ jsx(
|
|
11444
|
-
|
|
10342
|
+
Box19,
|
|
11445
10343
|
{
|
|
11446
10344
|
sx: {
|
|
11447
10345
|
position: "absolute",
|
|
@@ -11457,7 +10355,7 @@ function ChangelogEntry({ version, date, badge, children }) {
|
|
|
11457
10355
|
}
|
|
11458
10356
|
}
|
|
11459
10357
|
),
|
|
11460
|
-
/* @__PURE__ */ jsxs(
|
|
10358
|
+
/* @__PURE__ */ jsxs(Card2, { variant: "outlined", sx: { p: 3 }, children: [
|
|
11461
10359
|
/* @__PURE__ */ jsxs(
|
|
11462
10360
|
Stack,
|
|
11463
10361
|
{
|
|
@@ -11491,6 +10389,6 @@ function ChangelogEntry({ version, date, badge, children }) {
|
|
|
11491
10389
|
] });
|
|
11492
10390
|
}
|
|
11493
10391
|
|
|
11494
|
-
export { Accordion, AdminDataTable, Alert2 as Alert, AmountCell, AnimateBorder, Avatar, Badge2 as Badge, BooleanLabel, Breadcrumbs, Card, CardGrid, CardSection, CardSkeleton, Carousel, ChangelogEntry, ChangelogTimeline, Chart, ChartLegends, ChartLoading, CircularProgress2 as CircularProgress, CommandPalette, ConfirmDialog, ContentRenderer,
|
|
11495
|
-
//# sourceMappingURL=chunk-
|
|
11496
|
-
//# sourceMappingURL=chunk-
|
|
10392
|
+
export { Accordion, AdminDataTable, Alert2 as Alert, AmountCell, AnimateBorder, Avatar, Badge2 as Badge, BooleanLabel, Breadcrumbs, COIN_DISPLAY_DECIMALS, COIN_WIRE_DECIMALS, Card, CardGrid, CardSection, CardSkeleton, Carousel, ChangelogEntry, ChangelogTimeline, Chart, ChartLegends, ChartLoading, CircularProgress2 as CircularProgress, CommandPalette, ConfirmDialog, ContentRenderer, ContextMenu, CountBadge, CountdownRing, CountrySelect, CustomAvatarGroup, DEFAULT_CLASS_PREFIX, DEFAULT_LIGHTBOX_LABELS, DEFAULT_SPONSORED_SLOT_LABELS, DateRangeInput, DateRangePicker, DeadlineChip, DeleteDialog, Drawer2 as Drawer, DurationPicker, FilterToolbar, FlagIcon, FormAlert, Image, ImageWithDefault, InlineAlert, Label, Lightbox, LinearProgress3 as LinearProgress, LoadingScreen, Markdown, MegaMenuHorizontal, MegaMenuMobile, MegaMenuVertical, Menu, MotionLazy, Nav, NavArrow2 as NavArrow, NavCard, NavCardGrid, NavIcon, NavInfo, NavItem, NavItemBase, NavLi, NavList, NavSectionHorizontal, NavSectionMini, NavSectionVertical, NavSubList, NavSubheader, NavTexts, NavUl, NavigationProgress, PageContent, ProgressBar, Rail, ScrollToTop, SettingsDrawer, SettingsProvider, SimpleAccordion, SimpleSnackbar, Skeleton5 as Skeleton, SnackbarProvider, Spinner, SplashScreen, SponsoredSlot, StatCard, StatusChip, StatusDot, StatusLabel, Stepper, StepperActions, SvgColor, TabPanel, Table, TableSkeleton, Tabs, TagCloud, Tooltip3 as Tooltip, VirtualList, animateBorderClasses, buildUrl, carouselClasses, chartClasses, cn, createClasses, createClassesObject, createComponentClasses, createIconComponent, deadlineUrgency, formatCoinAmount, formatCoinAmountList, formatDateString, formatDecimalString, fromScaledInteger, getClassPrefix, getCoinDecimals, getCoinWireDecimals, getNavCssVars, getQueryParam, hasParams, htmlToMarkdown, isActiveLink, isEqualPath, isExternalLink, isExternalUrl, isMarkdownContent, lightboxClasses, megaMenuClasses, megaMenuCssVars, mergeClasses, navSectionClasses, navSectionCssVars, parseDateString, parseQueryParams, relativeTimeLeft, removeLastSlash, removeParams, safeReturnUrl, setClassPrefix, subtractDecimalStrings, sumDecimalStrings, toScaledInteger, useAccordion, useCarousel, useChart, useDateRangePicker, useLightbox, useMenu, useSettings, useSettingsDrawer, useSnackbar, useStepper, useTable, useTabs };
|
|
10393
|
+
//# sourceMappingURL=chunk-LSPFFEJT.js.map
|
|
10394
|
+
//# sourceMappingURL=chunk-LSPFFEJT.js.map
|