@flamingo-stack/openframe-frontend-core 0.0.703 → 0.0.704-snapshot.20261006133653
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-3L7KCOGO.cjs → chunk-2QEUFXNS.cjs} +30 -30
- package/dist/{chunk-BMJUKS6S.cjs → chunk-3256UJXS.cjs} +47 -47
- package/dist/{chunk-GZYLZ4MB.js → chunk-4S7TJYRQ.js} +3 -3
- package/dist/{chunk-ENGBNKUJ.js → chunk-5EFZO5EB.js} +675 -569
- package/dist/{chunk-TCZCMD5Q.js → chunk-5HBHO5TB.js} +1 -1
- package/dist/{chunk-BOUPNYUV.js → chunk-64HOMVYC.js} +5 -5
- package/dist/{chunk-YR6JPJF4.js → chunk-6XIF2Z7I.js} +4 -4
- package/dist/{chunk-NU724ZVN.cjs → chunk-7GHB2IK6.cjs} +121 -121
- package/dist/{chunk-GX3OUTFO.cjs → chunk-7ZYIC7NA.cjs} +69 -55
- package/dist/{chunk-53AC23ZN.js → chunk-A6WVQKOZ.js} +24 -24
- package/dist/{chunk-4OGAXAEG.cjs → chunk-ABU3TGXA.cjs} +3 -3
- package/dist/{chunk-RTXTGLGB.cjs → chunk-ACV4DFQ3.cjs} +4 -4
- package/dist/{chunk-RLDAYA2A.cjs → chunk-BH6PJP66.cjs} +29 -29
- package/dist/{chunk-BRXOGCH3.cjs → chunk-BIZNSF3U.cjs} +3 -3
- package/dist/{chunk-2A4XES7R.cjs → chunk-BM5MVGH3.cjs} +3 -3
- package/dist/{chunk-6YCXA7CN.js → chunk-CH5232HV.js} +20 -19
- package/dist/{chunk-UIBSSVON.cjs → chunk-D7BTSVMS.cjs} +2 -2
- package/dist/{chunk-YBGEPKC2.cjs → chunk-F7Y2ZS5U.cjs} +6 -6
- package/dist/{chunk-5V6O73EH.js → chunk-FLKJYMVB.js} +3 -3
- package/dist/{chunk-NMGX2ZTU.js → chunk-IFUQVZF4.js} +17 -17
- package/dist/{chunk-2NE3DNXY.js → chunk-IKCQK67U.js} +2 -2
- package/dist/{chunk-KFDP3DUL.cjs → chunk-IXPUM3AW.cjs} +98 -98
- package/dist/{chunk-QGTDWFT6.js → chunk-IZHZMBIX.js} +2469 -1928
- package/dist/{chunk-67CXGPTW.cjs → chunk-JKEEFQOX.cjs} +505 -72
- package/dist/{chunk-NYSYSKSH.cjs → chunk-M6HTJTFH.cjs} +15 -15
- package/dist/{chunk-OGLCD3UL.js → chunk-MFFCUVWG.js} +6 -6
- package/dist/{chunk-KJ5LWATV.js → chunk-MKXO4Q5P.js} +7 -7
- package/dist/{chunk-EMCQGFXD.cjs → chunk-MMOODW57.cjs} +28 -27
- package/dist/{chunk-Q76ZTHNV.js → chunk-MP2C3LJ4.js} +1 -1
- package/dist/{chunk-J4K5JOLI.js → chunk-MV4HYG3B.js} +25 -11
- package/dist/{chunk-2T6QWNXU.js → chunk-NDESEPW5.js} +99 -11
- package/dist/{chunk-HHFPQNP3.js → chunk-NJDHFC55.js} +15 -15
- package/dist/{chunk-HUOLB7ZN.cjs → chunk-OHFS7VOU.cjs} +9 -9
- package/dist/{chunk-7632TNE7.js → chunk-OSNIZNVH.js} +7 -7
- package/dist/{chunk-UTW4SQDI.js → chunk-OUHMD6EU.js} +10 -10
- package/dist/{chunk-MXHJROXJ.cjs → chunk-P23CRLU4.cjs} +1245 -1139
- package/dist/{chunk-64O4L7WN.js → chunk-PDWVPI3S.js} +11 -55
- package/dist/{chunk-DAW6TDZB.js → chunk-PFC2HWQA.js} +30 -16
- package/dist/{chunk-G55W76S6.js → chunk-POZ7F77D.js} +12 -13
- package/dist/{chunk-PJP5SMOU.js → chunk-PPEZGUL7.js} +500 -67
- package/dist/{chunk-SFGXIFYO.cjs → chunk-QC7Q3XCE.cjs} +24 -24
- package/dist/{chunk-MDBHZBW7.cjs → chunk-RKV5B7EU.cjs} +92 -4
- package/dist/{chunk-5VPIC5MD.cjs → chunk-SAAZEWUR.cjs} +12 -12
- package/dist/{chunk-IIMICN7L.cjs → chunk-TYWLNCNH.cjs} +4 -48
- package/dist/{chunk-HYLIQMZH.cjs → chunk-UBP5RNGK.cjs} +33 -33
- package/dist/{chunk-HUMWQMCU.js → chunk-UT4YHQZW.js} +3 -3
- package/dist/{chunk-BSEIEWM5.cjs → chunk-V3H26CNS.cjs} +28 -14
- package/dist/{chunk-NGJCWEYX.cjs → chunk-VHCACDKP.cjs} +46 -46
- package/dist/{chunk-SL2FOFT2.js → chunk-VMAZCLX4.js} +7 -7
- package/dist/{chunk-5FFNNJM7.js → chunk-VR2ZLFCP.js} +1 -1
- package/dist/{chunk-NCTYD7HL.js → chunk-VYWMEL5F.js} +14 -14
- package/dist/{chunk-HY5YL3U5.cjs → chunk-XBWE423R.cjs} +1994 -1453
- package/dist/{chunk-XCIFHW4E.cjs → chunk-XOYH2YQE.cjs} +2 -2
- package/dist/{chunk-S6V7A5FS.cjs → chunk-ZQZFIE2K.cjs} +32 -33
- package/dist/components/case-studies/index.cjs +24 -24
- package/dist/components/case-studies/index.js +10 -10
- package/dist/components/chat/chat-archive-page.d.ts +3 -3
- package/dist/components/chat/chat-archive-page.d.ts.map +1 -1
- package/dist/components/chat/chat-input.d.ts.map +1 -1
- package/dist/components/chat/chat-nav-sidebar.d.ts +4 -0
- package/dist/components/chat/chat-nav-sidebar.d.ts.map +1 -1
- package/dist/components/chat/chat-panel-header.d.ts +3 -2
- package/dist/components/chat/chat-panel-header.d.ts.map +1 -1
- package/dist/components/chat/embeddable-chat.d.ts +36 -2
- package/dist/components/chat/embeddable-chat.d.ts.map +1 -1
- package/dist/components/chat/index.cjs +14 -6
- package/dist/components/chat/index.d.ts +4 -1
- package/dist/components/chat/index.d.ts.map +1 -1
- package/dist/components/chat/index.js +13 -5
- package/dist/components/chat/mingo-archive-list.d.ts +17 -0
- package/dist/components/chat/mingo-archive-list.d.ts.map +1 -0
- package/dist/components/chat/mingo-chat-header.d.ts +31 -0
- package/dist/components/chat/mingo-chat-header.d.ts.map +1 -0
- package/dist/components/chat/mingo-chat-rail.d.ts +54 -0
- package/dist/components/chat/mingo-chat-rail.d.ts.map +1 -0
- package/dist/components/chat/model-display.d.ts.map +1 -1
- package/dist/components/contact/contact-form.d.ts.map +1 -1
- package/dist/components/contact/index.cjs +11 -11
- package/dist/components/contact/index.js +10 -10
- package/dist/components/content-loading-container.d.ts +1 -1
- package/dist/components/content-loading-container.d.ts.map +1 -1
- package/dist/components/docs/index.cjs +14 -14
- package/dist/components/docs/index.js +13 -13
- package/dist/components/docs/skeletons.d.ts.map +1 -1
- package/dist/components/embeds/index.cjs +11 -11
- package/dist/components/embeds/index.js +10 -10
- package/dist/components/faq/index.cjs +12 -12
- package/dist/components/faq/index.js +11 -11
- package/dist/components/features/figma-prototype-viewer.d.ts.map +1 -1
- package/dist/components/features/index.cjs +10 -10
- package/dist/components/features/index.js +9 -9
- package/dist/components/features/media-gallery-manager.d.ts.map +1 -1
- package/dist/components/features/parallax-image-showcase.d.ts.map +1 -1
- package/dist/components/features/policy-configuration-panel.d.ts.map +1 -1
- package/dist/components/features/section-selector.d.ts.map +1 -1
- package/dist/components/help-center-pages/index.cjs +119 -119
- package/dist/components/help-center-pages/index.js +39 -39
- package/dist/components/help-center-pages/trust-center-sections.d.ts +2 -2
- package/dist/components/help-center-pages/trust-center-sections.d.ts.map +1 -1
- package/dist/components/index.cjs +94 -86
- package/dist/components/index.js +32 -24
- package/dist/components/layout/article-detail-layout.d.ts +1 -1
- package/dist/components/layout/article-detail-layout.d.ts.map +1 -1
- package/dist/components/layout/page-container.d.ts.map +1 -1
- package/dist/components/layout/title-block.d.ts +2 -2
- package/dist/components/layout/title-block.d.ts.map +1 -1
- package/dist/components/loading/page-layout-skeleton.d.ts.map +1 -1
- package/dist/components/loading/unified-skeleton.d.ts.map +1 -1
- package/dist/components/meeting-scheduler/booking-form.d.ts +4 -4
- package/dist/components/meeting-scheduler/booking-form.d.ts.map +1 -1
- package/dist/components/meeting-scheduler/context-panel.d.ts.map +1 -1
- package/dist/components/meeting-scheduler/index.cjs +127 -127
- package/dist/components/meeting-scheduler/index.d.ts +2 -2
- package/dist/components/meeting-scheduler/index.d.ts.map +1 -1
- package/dist/components/meeting-scheduler/index.js +50 -50
- package/dist/components/navigation/app-header.d.ts +4 -0
- package/dist/components/navigation/app-header.d.ts.map +1 -1
- package/dist/components/navigation/app-layout-side-panel.d.ts +142 -0
- package/dist/components/navigation/app-layout-side-panel.d.ts.map +1 -0
- package/dist/components/navigation/app-layout.d.ts +11 -1
- package/dist/components/navigation/app-layout.d.ts.map +1 -1
- package/dist/components/navigation/header-mingo-button.d.ts +4 -1
- package/dist/components/navigation/header-mingo-button.d.ts.map +1 -1
- package/dist/components/navigation/index.cjs +13 -13
- package/dist/components/navigation/index.d.ts +1 -0
- package/dist/components/navigation/index.d.ts.map +1 -1
- package/dist/components/navigation/index.js +12 -12
- package/dist/components/navigation/navigation-sidebar.d.ts +8 -1
- package/dist/components/navigation/navigation-sidebar.d.ts.map +1 -1
- package/dist/components/navigation/sliding-sidebar.d.ts.map +1 -1
- package/dist/components/onboarding-guides/index.cjs +14 -14
- package/dist/components/onboarding-guides/index.js +13 -13
- package/dist/components/persistent-filter-controls.d.ts.map +1 -1
- package/dist/components/related-content/index.cjs +7 -7
- package/dist/components/related-content/index.js +6 -6
- package/dist/components/shared/detail-page-skeleton.d.ts.map +1 -1
- package/dist/components/tickets/help-center-create-form.d.ts +4 -4
- package/dist/components/tickets/index.cjs +15 -15
- package/dist/components/tickets/index.js +14 -14
- package/dist/components/ui/announcement-bar-view.d.ts.map +1 -1
- package/dist/components/ui/breadcrumb.d.ts.map +1 -1
- package/dist/components/ui/checkbox-block.d.ts.map +1 -1
- package/dist/components/ui/dashboard-info-card.d.ts +1 -1
- package/dist/components/ui/dashboard-info-card.d.ts.map +1 -1
- package/dist/components/ui/data-table/data-table-body.d.ts +2 -2
- package/dist/components/ui/data-table/data-table-skeleton.d.ts +2 -2
- package/dist/components/ui/data-table/data-table-skeleton.d.ts.map +1 -1
- package/dist/components/ui/data-table/utils.d.ts +2 -2
- package/dist/components/ui/dialog.d.ts.map +1 -1
- package/dist/components/ui/drawer.d.ts.map +1 -1
- package/dist/components/ui/entity-image.d.ts +2 -2
- package/dist/components/ui/file-manager/index.cjs +36 -36
- package/dist/components/ui/file-manager/index.js +3 -3
- package/dist/components/ui/filter-modal.d.ts.map +1 -1
- package/dist/components/ui/index.cjs +18 -10
- package/dist/components/ui/index.js +17 -9
- package/dist/components/ui/info-card-row.d.ts.map +1 -1
- package/dist/components/ui/menubar.d.ts +1 -1
- package/dist/components/ui/menubar.d.ts.map +1 -1
- package/dist/components/ui/modal-v2.d.ts.map +1 -1
- package/dist/components/ui/modal.d.ts.map +1 -1
- package/dist/components/ui/no-data/no-data-actions.d.ts.map +1 -1
- package/dist/components/ui/no-data/no-data-styles.d.ts +1 -1
- package/dist/components/ui/no-data/no-data-styles.d.ts.map +1 -1
- package/dist/components/ui/page-actions.d.ts.map +1 -1
- package/dist/components/ui/sheet.d.ts.map +1 -1
- package/dist/components/ui/table/table-skeleton.d.ts +1 -1
- package/dist/components/ui/table/table-skeleton.d.ts.map +1 -1
- package/dist/hooks/index.cjs +23 -9
- package/dist/hooks/index.js +24 -10
- package/dist/hooks/ui/index.d.ts +1 -0
- package/dist/hooks/ui/index.d.ts.map +1 -1
- package/dist/hooks/ui/use-content-breakpoint.d.ts +32 -0
- package/dist/hooks/ui/use-content-breakpoint.d.ts.map +1 -0
- package/dist/hooks/ui/use-isomorphic-layout-effect.d.ts +2 -2
- package/dist/hooks/ui/use-isomorphic-layout-effect.d.ts.map +1 -1
- package/dist/hooks/ui/use-media-query.d.ts.map +1 -1
- package/dist/index.cjs +39 -17
- package/dist/index.js +41 -19
- package/dist/styles/layout-steps.d.ts +30 -0
- package/dist/styles/layout-steps.d.ts.map +1 -0
- package/dist/tailwind.config.cjs +36 -11
- package/dist/tailwind.config.js +36 -11
- package/eslint-config/README.md +9 -0
- package/eslint-config/base.js +17 -1
- package/eslint-config/layout-variants.js +57 -0
- package/package.json +3 -1
- package/src/ODS_TOKEN_RULES.md +40 -0
- package/src/components/chat/chat-archive-page.tsx +9 -7
- package/src/components/chat/chat-input.tsx +5 -1
- package/src/components/chat/chat-nav-sidebar.tsx +10 -4
- package/src/components/chat/chat-panel-header.tsx +8 -5
- package/src/components/chat/embeddable-chat.tsx +675 -485
- package/src/components/chat/index.ts +4 -0
- package/src/components/chat/mingo-archive-list.tsx +108 -0
- package/src/components/chat/mingo-chat-header.tsx +104 -0
- package/src/components/chat/mingo-chat-rail.tsx +361 -0
- package/src/components/chat/model-display.tsx +8 -1
- package/src/components/contact/contact-form.tsx +11 -9
- package/src/components/content-loading-container.tsx +4 -2
- package/src/components/docs/doc-viewer.tsx +7 -7
- package/src/components/docs/skeletons.tsx +7 -4
- package/src/components/dynamic-skeleton.tsx +1 -1
- package/src/components/embeds/claude-embed.tsx +1 -1
- package/src/components/embeds/embed-viewer-frame.tsx +4 -4
- package/src/components/embeds/figma-embed.tsx +2 -2
- package/src/components/embeds/google-sheets-viewer.tsx +1 -1
- package/src/components/embeds/pdf-viewer.tsx +3 -3
- package/src/components/empty-state.tsx +6 -6
- package/src/components/faq/faq-section.tsx +2 -2
- package/src/components/faq-accordion.tsx +1 -1
- package/src/components/features/board/board-column-header.tsx +1 -1
- package/src/components/features/command-box.tsx +3 -3
- package/src/components/features/entity-video-section.tsx +2 -2
- package/src/components/features/figma-prototype-viewer.tsx +4 -1
- package/src/components/features/media-gallery-manager.tsx +3 -1
- package/src/components/features/parallax-image-showcase.tsx +9 -6
- package/src/components/features/policy-configuration-panel.tsx +9 -7
- package/src/components/features/provider-button.tsx +1 -1
- package/src/components/features/section-selector.tsx +11 -6
- package/src/components/features/select-button.tsx +4 -4
- package/src/components/features/seo-editor-preview.tsx +2 -2
- package/src/components/features/video-ratio-tabs.tsx +3 -3
- package/src/components/features/waitlist-form.tsx +1 -1
- package/src/components/help-center-pages/trust-center-page.tsx +1 -1
- package/src/components/help-center-pages/trust-center-sections.tsx +14 -14
- package/src/components/icon-display.tsx +1 -1
- package/src/components/layout/article-detail-layout.tsx +4 -2
- package/src/components/layout/list-page-layout.tsx +2 -2
- package/src/components/layout/page-container.tsx +26 -14
- package/src/components/layout/page-heading.tsx +1 -1
- package/src/components/layout/page-layout.tsx +1 -1
- package/src/components/layout/title-block.tsx +13 -13
- package/src/components/loading/card-skeleton.tsx +11 -11
- package/src/components/loading/category-vendor-selector-skeleton.tsx +1 -1
- package/src/components/loading/content-skeleton.tsx +6 -6
- package/src/components/loading/device-card-skeleton.tsx +1 -1
- package/src/components/loading/margin-report-skeleton.tsx +7 -7
- package/src/components/loading/msp-profile-form-skeleton.tsx +3 -3
- package/src/components/loading/organization-card-skeleton.tsx +2 -2
- package/src/components/loading/page-layout-skeleton.tsx +80 -68
- package/src/components/loading/unified-skeleton.tsx +16 -6
- package/src/components/media-carousel.tsx +3 -3
- package/src/components/meeting-scheduler/booking-form.tsx +9 -8
- package/src/components/meeting-scheduler/context-panel.tsx +8 -6
- package/src/components/meeting-scheduler/directory.tsx +4 -4
- package/src/components/meeting-scheduler/index.tsx +15 -15
- package/src/components/meeting-scheduler/slot-picker.tsx +12 -12
- package/src/components/navigation/app-header.tsx +6 -0
- package/src/components/navigation/app-layout-side-panel.tsx +594 -0
- package/src/components/navigation/app-layout.tsx +69 -4
- package/src/components/navigation/header-mingo-button.tsx +13 -3
- package/src/components/navigation/index.ts +5 -0
- package/src/components/navigation/navigation-sidebar.tsx +17 -3
- package/src/components/navigation/sliding-sidebar.tsx +2 -1
- package/src/components/pagination.tsx +3 -3
- package/src/components/persistent-filter-controls.tsx +6 -2
- package/src/components/platform/ScriptArguments.tsx +1 -1
- package/src/components/platform/ScriptInfoSection.tsx +4 -4
- package/src/components/platform/SoftwareSourceBadge.tsx +1 -1
- package/src/components/shared/article-author-byline.tsx +1 -1
- package/src/components/shared/delivery/delivery-lists.tsx +2 -2
- package/src/components/shared/delivery/delivery-row.tsx +7 -7
- package/src/components/shared/delivery/delivery-table.tsx +3 -3
- package/src/components/shared/detail-page-skeleton.tsx +11 -5
- package/src/components/shared/dev-section/dev-card-row.tsx +6 -6
- package/src/components/shared/dev-section/dev-section-view.tsx +1 -1
- package/src/components/shared/product-release/product-release-card-skeleton.tsx +8 -8
- package/src/components/shared/product-release/product-release-card.tsx +9 -9
- package/src/components/shared/product-release/product-releases-view.tsx +1 -1
- package/src/components/shared/product-release/release-detail-page.tsx +5 -5
- package/src/components/shared/roadmap/roadmap-grid-skeleton.tsx +1 -1
- package/src/components/shared/roadmap/roadmap-grid.tsx +3 -3
- package/src/components/tickets/help-center-card.tsx +1 -1
- package/src/components/tickets/help-center-create-form.tsx +12 -12
- package/src/components/ui/announcement-bar-view.tsx +2 -10
- package/src/components/ui/benefit-card.tsx +18 -18
- package/src/components/ui/brand-association-grid.tsx +4 -4
- package/src/components/ui/breadcrumb.tsx +4 -1
- package/src/components/ui/card.tsx +1 -1
- package/src/components/ui/checkbox-block.tsx +9 -7
- package/src/components/ui/content-loader.tsx +3 -3
- package/src/components/ui/cursor-pagination.tsx +3 -3
- package/src/components/ui/dashboard-info-card.tsx +13 -9
- package/src/components/ui/data-attribution.tsx +2 -2
- package/src/components/ui/data-table/data-table-body.tsx +2 -2
- package/src/components/ui/data-table/data-table-header.tsx +15 -15
- package/src/components/ui/data-table/data-table-skeleton.tsx +6 -6
- package/src/components/ui/data-table/utils.ts +5 -5
- package/src/components/ui/dialog.tsx +4 -1
- package/src/components/ui/drawer.tsx +2 -1
- package/src/components/ui/duration-input.tsx +1 -1
- package/src/components/ui/entity-image.tsx +3 -3
- package/src/components/ui/feature-card.tsx +10 -10
- package/src/components/ui/file-manager/file-manager-action-bar.tsx +1 -1
- package/src/components/ui/file-manager/file-manager.tsx +1 -1
- package/src/components/ui/filter-modal.tsx +8 -1
- package/src/components/ui/highlight-card.tsx +7 -7
- package/src/components/ui/info-card-row.tsx +10 -6
- package/src/components/ui/modal-v2.tsx +7 -2
- package/src/components/ui/modal.tsx +3 -2
- package/src/components/ui/no-data/no-data-actions.tsx +10 -4
- package/src/components/ui/no-data/no-data-styles.ts +1 -1
- package/src/components/ui/no-data/no-data.tsx +1 -1
- package/src/components/ui/organization-card.tsx +1 -1
- package/src/components/ui/page-actions.tsx +34 -5
- package/src/components/ui/progress-bar.tsx +2 -2
- package/src/components/ui/query-report-table/query-report-table.tsx +1 -1
- package/src/components/ui/search-input.tsx +2 -2
- package/src/components/ui/service-card.tsx +2 -2
- package/src/components/ui/sheet.tsx +2 -1
- package/src/components/ui/skeleton.tsx +3 -3
- package/src/components/ui/stacked-rows-panel.tsx +4 -4
- package/src/components/ui/tab-navigation.tsx +2 -2
- package/src/components/ui/tab-selector.tsx +2 -2
- package/src/components/ui/table/table-header.tsx +3 -3
- package/src/components/ui/table/table-skeleton.tsx +3 -3
- package/src/components/ui/table/utils.ts +5 -5
- package/src/components/ui/tag-search-input.tsx +3 -3
- package/src/components/ui/tags-manager.tsx +5 -5
- package/src/components/ui/test-run.tsx +2 -2
- package/src/components/ui/ticket-info-section.tsx +1 -1
- package/src/components/ui/ticket-notes-section.tsx +1 -1
- package/src/components/ui/ticket-status-config-row.tsx +15 -15
- package/src/hooks/ui/index.ts +1 -0
- package/src/hooks/ui/use-content-breakpoint.ts +58 -0
- package/src/hooks/ui/use-media-query.ts +3 -2
- package/src/styles/app-globals.css +13 -0
- package/src/styles/index.css +2 -0
- package/src/styles/layout-steps.ts +14 -0
- package/src/styles/ods-colors.css +15 -0
- package/src/styles/ods-content-area-tokens.css +27 -0
- package/src/styles/ods-content-area.css +31 -0
- package/src/styles/ods-effects.css +4 -2
- package/src/styles/ods-responsive-tokens.css +14 -4
- package/tailwind.config.ts +42 -7
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
3
|
useOptionalTicketLive
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-4S7TJYRQ.js";
|
|
5
5
|
import {
|
|
6
6
|
AppLayoutDrawerContainerContext,
|
|
7
7
|
AppLayoutDrawerCoordinationContext,
|
|
@@ -13,20 +13,18 @@ import {
|
|
|
13
13
|
UnreadDot,
|
|
14
14
|
buildTicketOpenHref,
|
|
15
15
|
useOptionalNotifications
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-5EFZO5EB.js";
|
|
17
17
|
import {
|
|
18
18
|
useFocusTrap,
|
|
19
19
|
useLocalStorage
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-MKXO4Q5P.js";
|
|
21
21
|
import {
|
|
22
22
|
OVERLAY_BACKDROP_CLASS,
|
|
23
23
|
useIsHydrated
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-IZHZMBIX.js";
|
|
25
25
|
import {
|
|
26
|
-
useHeaderHeight
|
|
27
|
-
|
|
28
|
-
useMdUp
|
|
29
|
-
} from "./chunk-64O4L7WN.js";
|
|
26
|
+
useHeaderHeight
|
|
27
|
+
} from "./chunk-PDWVPI3S.js";
|
|
30
28
|
import {
|
|
31
29
|
LogOutIcon,
|
|
32
30
|
MingoIcon,
|
|
@@ -47,10 +45,15 @@ import {
|
|
|
47
45
|
import {
|
|
48
46
|
SquareAvatar,
|
|
49
47
|
Tag
|
|
50
|
-
} from "./chunk-
|
|
48
|
+
} from "./chunk-CH5232HV.js";
|
|
51
49
|
import {
|
|
52
|
-
|
|
53
|
-
|
|
50
|
+
ContentAreaWidthContext,
|
|
51
|
+
breakpoints,
|
|
52
|
+
useIsomorphicLayoutEffect,
|
|
53
|
+
useLgUp,
|
|
54
|
+
useMdUp,
|
|
55
|
+
useMediaQuery
|
|
56
|
+
} from "./chunk-NDESEPW5.js";
|
|
54
57
|
import {
|
|
55
58
|
OpenFrameLogo
|
|
56
59
|
} from "./chunk-O43V3EOS.js";
|
|
@@ -59,7 +62,7 @@ import {
|
|
|
59
62
|
DropdownMenuContent,
|
|
60
63
|
DropdownMenuItem,
|
|
61
64
|
DropdownMenuTrigger
|
|
62
|
-
} from "./chunk-
|
|
65
|
+
} from "./chunk-FLKJYMVB.js";
|
|
63
66
|
import {
|
|
64
67
|
SearchIcon
|
|
65
68
|
} from "./chunk-INS7KZJB.js";
|
|
@@ -851,7 +854,8 @@ function SlidingSidebar({ config }) {
|
|
|
851
854
|
role: config.isOpen ? "dialog" : void 0,
|
|
852
855
|
"aria-label": config.isOpen ? "Navigation sidebar" : void 0,
|
|
853
856
|
className: cn(
|
|
854
|
-
|
|
857
|
+
// Window chrome: the window's tokens even when opened from a narrow content area.
|
|
858
|
+
"ods-viewport-layer fixed bottom-0 top-0 z-[46] flex w-72 flex-col border-ods-border bg-ods-card shadow-xl",
|
|
855
859
|
config.position === "right" ? "right-0 border-l" : "left-0 border-r",
|
|
856
860
|
config.className
|
|
857
861
|
),
|
|
@@ -1056,7 +1060,7 @@ var SIDEBAR_GEOMETRY_CLASSES = [
|
|
|
1056
1060
|
].join(" ");
|
|
1057
1061
|
var SIDEBAR_TABLET_WIDTH = { rail: "md:w-14", overlay: "md:w-56" };
|
|
1058
1062
|
var isModifiedClick = (event) => !!event && (event.metaKey || event.ctrlKey || event.shiftKey || event.altKey || event.button !== 0);
|
|
1059
|
-
function NavigationSidebar({ config, disabled = false }) {
|
|
1063
|
+
function NavigationSidebar({ config, disabled = false, pushOnTablet = false }) {
|
|
1060
1064
|
const isMdUp = useMdUp() ?? false;
|
|
1061
1065
|
const isLgUp = useLgUp() ?? false;
|
|
1062
1066
|
const isTablet = isMdUp && !isLgUp;
|
|
@@ -1152,13 +1156,23 @@ function NavigationSidebar({ config, disabled = false }) {
|
|
|
1152
1156
|
"fixed inset-0 z-[40] bg-ods-overlay",
|
|
1153
1157
|
"hidden md:block lg:hidden",
|
|
1154
1158
|
"transition-opacity duration-300",
|
|
1155
|
-
isOverlayOpen ? "opacity-100" : "pointer-events-none opacity-0"
|
|
1159
|
+
isOverlayOpen && !pushOnTablet ? "opacity-100" : "pointer-events-none opacity-0"
|
|
1156
1160
|
),
|
|
1157
1161
|
onClick: closeOverlay,
|
|
1158
1162
|
"aria-hidden": "true"
|
|
1159
1163
|
}
|
|
1160
1164
|
),
|
|
1161
|
-
/* @__PURE__ */ jsx13(
|
|
1165
|
+
/* @__PURE__ */ jsx13(
|
|
1166
|
+
"div",
|
|
1167
|
+
{
|
|
1168
|
+
className: cn(
|
|
1169
|
+
"hidden h-full flex-shrink-0 md:block lg:hidden",
|
|
1170
|
+
isOverlayOpen && pushOnTablet ? "w-56" : "w-14",
|
|
1171
|
+
transitionsEnabled && "transition-[width] duration-300"
|
|
1172
|
+
),
|
|
1173
|
+
"aria-hidden": "true"
|
|
1174
|
+
}
|
|
1175
|
+
),
|
|
1162
1176
|
/* @__PURE__ */ jsxs11(
|
|
1163
1177
|
"aside",
|
|
1164
1178
|
{
|
|
@@ -1282,12 +1296,19 @@ function HeaderGlobalSearch({
|
|
|
1282
1296
|
|
|
1283
1297
|
// src/components/navigation/header-mingo-button.tsx
|
|
1284
1298
|
import { jsx as jsx15, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
1285
|
-
function HeaderMingoButton({
|
|
1299
|
+
function HeaderMingoButton({
|
|
1300
|
+
isActive = false,
|
|
1301
|
+
iconOnly = false,
|
|
1302
|
+
closeWhenActive = false,
|
|
1303
|
+
className,
|
|
1304
|
+
...props
|
|
1305
|
+
}) {
|
|
1306
|
+
const showClose = isActive && (iconOnly || closeWhenActive);
|
|
1286
1307
|
return /* @__PURE__ */ jsxs13(
|
|
1287
1308
|
"button",
|
|
1288
1309
|
{
|
|
1289
1310
|
type: "button",
|
|
1290
|
-
"aria-label":
|
|
1311
|
+
"aria-label": showClose ? "Close Mingo AI" : "Mingo AI",
|
|
1291
1312
|
"aria-pressed": isActive,
|
|
1292
1313
|
className: cn(
|
|
1293
1314
|
"flex h-full shrink-0 items-center gap-2 px-4",
|
|
@@ -1305,7 +1326,7 @@ function HeaderMingoButton({ isActive = false, iconOnly = false, className, ...p
|
|
|
1305
1326
|
),
|
|
1306
1327
|
...props,
|
|
1307
1328
|
children: [
|
|
1308
|
-
|
|
1329
|
+
showClose ? (
|
|
1309
1330
|
// Mobile, drawer open: the icon-only button doubles as the close
|
|
1310
1331
|
// affordance, so swap the Mingo logo for an X. Match the other header
|
|
1311
1332
|
// icons (e.g. notifications): secondary color, w-4 h-4 → md:w-6 h-6.
|
|
@@ -1390,6 +1411,7 @@ var AppHeader = React3.memo(function AppHeaderImpl({
|
|
|
1390
1411
|
showMingoAI = false,
|
|
1391
1412
|
onMingoAI,
|
|
1392
1413
|
isMingoAIActive = false,
|
|
1414
|
+
mingoAICloseWhenActive = false,
|
|
1393
1415
|
showUser,
|
|
1394
1416
|
userName,
|
|
1395
1417
|
userEmail,
|
|
@@ -1573,6 +1595,7 @@ var AppHeader = React3.memo(function AppHeaderImpl({
|
|
|
1573
1595
|
{
|
|
1574
1596
|
onClick: onMingoAI,
|
|
1575
1597
|
isActive: isMingoAIActive,
|
|
1598
|
+
closeWhenActive: mingoAICloseWhenActive,
|
|
1576
1599
|
iconOnly: !isMdUp,
|
|
1577
1600
|
disabled: disabled || !onMingoAI,
|
|
1578
1601
|
className: cn(cellDivider, dimmedClass)
|
|
@@ -1647,12 +1670,375 @@ function AppHeaderSkeleton({
|
|
|
1647
1670
|
}
|
|
1648
1671
|
|
|
1649
1672
|
// src/components/navigation/app-layout.tsx
|
|
1650
|
-
import { useCallback as useCallback3, useEffect as
|
|
1673
|
+
import { useCallback as useCallback3, useEffect as useEffect4, useMemo as useMemo2, useRef as useRef6, useState as useState5 } from "react";
|
|
1674
|
+
|
|
1675
|
+
// src/components/navigation/app-layout-side-panel.tsx
|
|
1676
|
+
import {
|
|
1677
|
+
useEffect as useEffect3,
|
|
1678
|
+
useId,
|
|
1679
|
+
useRef as useRef4,
|
|
1680
|
+
useState as useState4,
|
|
1681
|
+
useSyncExternalStore
|
|
1682
|
+
} from "react";
|
|
1683
|
+
import { jsx as jsx18, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
1684
|
+
var SIDE_PANEL_INSET = 16;
|
|
1685
|
+
var MOBILE_QUERY = `not all and ${breakpoints.md}`;
|
|
1686
|
+
var REDUCED_MOTION_QUERY = "(prefers-reduced-motion: reduce)";
|
|
1687
|
+
var MORPH_MS = 300;
|
|
1688
|
+
var STORAGE_EVENT = "of:side-panel-size";
|
|
1689
|
+
function resolveSidePanelLayout({
|
|
1690
|
+
rowWidth,
|
|
1691
|
+
isMobile,
|
|
1692
|
+
isOpen,
|
|
1693
|
+
size,
|
|
1694
|
+
minWidth,
|
|
1695
|
+
minContentWidth
|
|
1696
|
+
}) {
|
|
1697
|
+
const measured = rowWidth > 0;
|
|
1698
|
+
const room = rowWidth - minContentWidth - SIDE_PANEL_INSET;
|
|
1699
|
+
const canDock = !isMobile && (!measured || room >= minWidth);
|
|
1700
|
+
const maxDockedWidth = measured ? Math.max(minWidth, room) : Number.POSITIVE_INFINITY;
|
|
1701
|
+
let mode;
|
|
1702
|
+
if (isMobile) mode = isOpen ? "overlay" : "hidden";
|
|
1703
|
+
else if (!canDock) mode = isOpen ? "full" : "hidden";
|
|
1704
|
+
else mode = size.expanded ? "full" : "docked";
|
|
1705
|
+
const dockedWidth = Math.min(Math.max(size.width, minWidth), maxDockedWidth);
|
|
1706
|
+
let width;
|
|
1707
|
+
if (mode === "docked") width = dockedWidth;
|
|
1708
|
+
else if (mode === "overlay") width = rowWidth;
|
|
1709
|
+
else width = Math.max(0, rowWidth - 2 * SIDE_PANEL_INSET);
|
|
1710
|
+
return { mode, width, canDock, maxDockedWidth, dockedWidth };
|
|
1711
|
+
}
|
|
1712
|
+
function parseSize(raw) {
|
|
1713
|
+
if (!raw) return null;
|
|
1714
|
+
try {
|
|
1715
|
+
const parsed = JSON.parse(raw);
|
|
1716
|
+
if (!parsed || typeof parsed.width !== "number" || !Number.isFinite(parsed.width)) return null;
|
|
1717
|
+
return { width: parsed.width, expanded: parsed.expanded === true };
|
|
1718
|
+
} catch {
|
|
1719
|
+
return null;
|
|
1720
|
+
}
|
|
1721
|
+
}
|
|
1722
|
+
function subscribeToStoredSize(onChange) {
|
|
1723
|
+
window.addEventListener("storage", onChange);
|
|
1724
|
+
window.addEventListener(STORAGE_EVENT, onChange);
|
|
1725
|
+
return () => {
|
|
1726
|
+
window.removeEventListener("storage", onChange);
|
|
1727
|
+
window.removeEventListener(STORAGE_EVENT, onChange);
|
|
1728
|
+
};
|
|
1729
|
+
}
|
|
1730
|
+
function useStoredSize(storageKey, fallback) {
|
|
1731
|
+
const raw = useSyncExternalStore(
|
|
1732
|
+
subscribeToStoredSize,
|
|
1733
|
+
() => {
|
|
1734
|
+
if (!storageKey) return null;
|
|
1735
|
+
try {
|
|
1736
|
+
return window.localStorage.getItem(storageKey);
|
|
1737
|
+
} catch {
|
|
1738
|
+
return null;
|
|
1739
|
+
}
|
|
1740
|
+
},
|
|
1741
|
+
() => null
|
|
1742
|
+
);
|
|
1743
|
+
const [sessionSize, setSessionSize] = useState4(null);
|
|
1744
|
+
const size = (storageKey ? parseSize(raw) : sessionSize) ?? fallback;
|
|
1745
|
+
const setSize = (next) => {
|
|
1746
|
+
if (!storageKey) {
|
|
1747
|
+
setSessionSize(next);
|
|
1748
|
+
return;
|
|
1749
|
+
}
|
|
1750
|
+
try {
|
|
1751
|
+
window.localStorage.setItem(storageKey, JSON.stringify(next));
|
|
1752
|
+
} catch {
|
|
1753
|
+
setSessionSize(next);
|
|
1754
|
+
}
|
|
1755
|
+
window.dispatchEvent(new Event(STORAGE_EVENT));
|
|
1756
|
+
};
|
|
1757
|
+
return [size, setSize];
|
|
1758
|
+
}
|
|
1759
|
+
function useAppLayoutSidePanel(config, row) {
|
|
1760
|
+
const enabled = config !== void 0;
|
|
1761
|
+
const minWidth = config?.minWidth ?? 0;
|
|
1762
|
+
const minContentWidth = config?.minContentWidth ?? 400;
|
|
1763
|
+
const collapsed = config?.collapsed ?? false;
|
|
1764
|
+
const minimum = { width: minWidth, expanded: false };
|
|
1765
|
+
const [rowWidth, setRowWidth] = useState4(0);
|
|
1766
|
+
useIsomorphicLayoutEffect(() => {
|
|
1767
|
+
if (!enabled || !row) return void 0;
|
|
1768
|
+
const update = () => setRowWidth(row.clientWidth);
|
|
1769
|
+
update();
|
|
1770
|
+
const observer = new ResizeObserver(update);
|
|
1771
|
+
observer.observe(row);
|
|
1772
|
+
return () => observer.disconnect();
|
|
1773
|
+
}, [enabled, row]);
|
|
1774
|
+
const isMobile = useMediaQuery(MOBILE_QUERY) === true;
|
|
1775
|
+
const reduceMotion = useMediaQuery(REDUCED_MOTION_QUERY) === true;
|
|
1776
|
+
const [morph, setMorph] = useState4(null);
|
|
1777
|
+
const [liveWidth, setLiveWidth] = useState4(null);
|
|
1778
|
+
const [storedSize, setStoredSize] = useStoredSize(config?.storageKey, minimum);
|
|
1779
|
+
const [ownIsOpen, setOwnIsOpen] = useState4(false);
|
|
1780
|
+
const isOpen = config?.open ?? ownIsOpen;
|
|
1781
|
+
const onOpenChange = config?.onOpenChange;
|
|
1782
|
+
const setIsOpen = (next) => {
|
|
1783
|
+
if (config?.open === void 0) setOwnIsOpen(next);
|
|
1784
|
+
onOpenChange?.(next);
|
|
1785
|
+
};
|
|
1786
|
+
const [collapsedSize, setCollapsedSize] = useState4(null);
|
|
1787
|
+
const [prevCollapsed, setPrevCollapsed] = useState4(collapsed);
|
|
1788
|
+
if (collapsed !== prevCollapsed) {
|
|
1789
|
+
setPrevCollapsed(collapsed);
|
|
1790
|
+
setCollapsedSize(null);
|
|
1791
|
+
}
|
|
1792
|
+
const size = collapsed ? collapsedSize ?? minimum : storedSize;
|
|
1793
|
+
const setSize = collapsed ? setCollapsedSize : setStoredSize;
|
|
1794
|
+
const layout = resolveSidePanelLayout({ rowWidth, isMobile, isOpen, size, minWidth, minContentWidth });
|
|
1795
|
+
const [prevCanDock, setPrevCanDock] = useState4(layout.canDock);
|
|
1796
|
+
if (layout.canDock !== prevCanDock) {
|
|
1797
|
+
setPrevCanDock(layout.canDock);
|
|
1798
|
+
setOwnIsOpen(false);
|
|
1799
|
+
}
|
|
1800
|
+
const prevCanDockRef = useRef4(layout.canDock);
|
|
1801
|
+
useEffect3(() => {
|
|
1802
|
+
const couldDock = prevCanDockRef.current;
|
|
1803
|
+
prevCanDockRef.current = layout.canDock;
|
|
1804
|
+
if (!couldDock && layout.canDock && config?.open) onOpenChange?.(false);
|
|
1805
|
+
}, [layout.canDock, config?.open, onOpenChange]);
|
|
1806
|
+
if (!enabled) return null;
|
|
1807
|
+
const animate = (next) => {
|
|
1808
|
+
if (!reduceMotion) setMorph(next);
|
|
1809
|
+
};
|
|
1810
|
+
const fullWidth = Math.max(0, rowWidth - 2 * SIDE_PANEL_INSET);
|
|
1811
|
+
const peekWidth = layout.canDock ? liveWidth : null;
|
|
1812
|
+
const dock = (next) => setSize({ width: Math.max(minWidth, Math.round(next)), expanded: false });
|
|
1813
|
+
const resize = (next) => {
|
|
1814
|
+
const expand = next > layout.maxDockedWidth;
|
|
1815
|
+
if (layout.canDock) {
|
|
1816
|
+
if (expand && layout.mode === "docked") animate("expand");
|
|
1817
|
+
else if (!expand && layout.mode === "full") animate("collapse");
|
|
1818
|
+
}
|
|
1819
|
+
if (expand) setSize({ width: size.width, expanded: true });
|
|
1820
|
+
else dock(next);
|
|
1821
|
+
};
|
|
1822
|
+
let collapsesTo = null;
|
|
1823
|
+
if (layout.mode === "full" && layout.canDock) collapsesTo = layout.dockedWidth > minWidth ? "column" : "minimum";
|
|
1824
|
+
else if (layout.mode === "docked" && layout.width > minWidth) collapsesTo = "minimum";
|
|
1825
|
+
return {
|
|
1826
|
+
...layout,
|
|
1827
|
+
minWidth,
|
|
1828
|
+
isOpen,
|
|
1829
|
+
morph,
|
|
1830
|
+
peekWidth,
|
|
1831
|
+
coversContent: layout.mode === "full" && morph !== "expand" && peekWidth === null,
|
|
1832
|
+
overlapsContent: morph !== null || peekWidth !== null,
|
|
1833
|
+
endMorph: () => setMorph(null),
|
|
1834
|
+
collapsesTo,
|
|
1835
|
+
collapse: () => {
|
|
1836
|
+
if (collapsesTo === null) return;
|
|
1837
|
+
if (layout.mode === "full") {
|
|
1838
|
+
animate("collapse");
|
|
1839
|
+
setSize({ width: size.width, expanded: false });
|
|
1840
|
+
} else {
|
|
1841
|
+
animate("narrow");
|
|
1842
|
+
setSize({ width: minWidth, expanded: false });
|
|
1843
|
+
}
|
|
1844
|
+
},
|
|
1845
|
+
toggle: () => setIsOpen(!isOpen),
|
|
1846
|
+
close: () => setIsOpen(false),
|
|
1847
|
+
resize,
|
|
1848
|
+
drag: (next) => {
|
|
1849
|
+
if (next > layout.maxDockedWidth) {
|
|
1850
|
+
if (size.expanded || size.width !== layout.maxDockedWidth) dock(layout.maxDockedWidth);
|
|
1851
|
+
setLiveWidth(Math.min(Math.round(next), fullWidth));
|
|
1852
|
+
return;
|
|
1853
|
+
}
|
|
1854
|
+
setLiveWidth(null);
|
|
1855
|
+
dock(next);
|
|
1856
|
+
},
|
|
1857
|
+
release: (next) => {
|
|
1858
|
+
setLiveWidth(null);
|
|
1859
|
+
if (next <= layout.maxDockedWidth) return;
|
|
1860
|
+
if (next > (layout.maxDockedWidth + fullWidth) / 2) {
|
|
1861
|
+
if (next < fullWidth) animate("expand");
|
|
1862
|
+
setSize({ width: layout.maxDockedWidth, expanded: true });
|
|
1863
|
+
} else {
|
|
1864
|
+
animate("narrow");
|
|
1865
|
+
dock(layout.maxDockedWidth);
|
|
1866
|
+
}
|
|
1867
|
+
}
|
|
1868
|
+
};
|
|
1869
|
+
}
|
|
1870
|
+
function SidePanelResizeHandle({ state, label, controls }) {
|
|
1871
|
+
const { width, minWidth, maxDockedWidth, mode, peekWidth, resize, drag, release } = state;
|
|
1872
|
+
const startRef = useRef4(null);
|
|
1873
|
+
const frameRef = useRef4(null);
|
|
1874
|
+
const pendingRef = useRef4(null);
|
|
1875
|
+
const measured = Number.isFinite(maxDockedWidth);
|
|
1876
|
+
const current = peekWidth ?? (mode === "full" && measured ? maxDockedWidth + 1 : width);
|
|
1877
|
+
useEffect3(
|
|
1878
|
+
() => () => {
|
|
1879
|
+
if (frameRef.current !== null) cancelAnimationFrame(frameRef.current);
|
|
1880
|
+
},
|
|
1881
|
+
[]
|
|
1882
|
+
);
|
|
1883
|
+
const scheduleDrag = (next) => {
|
|
1884
|
+
pendingRef.current = next;
|
|
1885
|
+
if (frameRef.current !== null) return;
|
|
1886
|
+
frameRef.current = requestAnimationFrame(() => {
|
|
1887
|
+
frameRef.current = null;
|
|
1888
|
+
if (pendingRef.current !== null) drag(pendingRef.current);
|
|
1889
|
+
});
|
|
1890
|
+
};
|
|
1891
|
+
const handlePointerDown = (event) => {
|
|
1892
|
+
if (event.button !== 0 && event.pointerType === "mouse") return;
|
|
1893
|
+
event.preventDefault();
|
|
1894
|
+
startRef.current = { x: event.clientX, width: mode === "full" && measured ? width : current };
|
|
1895
|
+
pendingRef.current = null;
|
|
1896
|
+
event.currentTarget.setPointerCapture(event.pointerId);
|
|
1897
|
+
document.body.style.cursor = "col-resize";
|
|
1898
|
+
document.body.style.userSelect = "none";
|
|
1899
|
+
};
|
|
1900
|
+
const handlePointerMove = (event) => {
|
|
1901
|
+
const start = startRef.current;
|
|
1902
|
+
if (!start) return;
|
|
1903
|
+
scheduleDrag(start.width - (event.clientX - start.x));
|
|
1904
|
+
};
|
|
1905
|
+
const endDrag = (event) => {
|
|
1906
|
+
const start = startRef.current;
|
|
1907
|
+
if (!start) return;
|
|
1908
|
+
startRef.current = null;
|
|
1909
|
+
if (frameRef.current !== null) {
|
|
1910
|
+
cancelAnimationFrame(frameRef.current);
|
|
1911
|
+
frameRef.current = null;
|
|
1912
|
+
if (pendingRef.current !== null) drag(pendingRef.current);
|
|
1913
|
+
}
|
|
1914
|
+
if (pendingRef.current !== null) release(pendingRef.current);
|
|
1915
|
+
pendingRef.current = null;
|
|
1916
|
+
try {
|
|
1917
|
+
event.currentTarget.releasePointerCapture(event.pointerId);
|
|
1918
|
+
} catch {
|
|
1919
|
+
}
|
|
1920
|
+
document.body.style.cursor = "";
|
|
1921
|
+
document.body.style.userSelect = "";
|
|
1922
|
+
};
|
|
1923
|
+
const handleKeyDown = (event) => {
|
|
1924
|
+
const step = event.shiftKey ? 40 : 16;
|
|
1925
|
+
let next = null;
|
|
1926
|
+
if (event.key === "ArrowLeft") next = current + step;
|
|
1927
|
+
else if (event.key === "ArrowRight") next = Math.min(current, maxDockedWidth) - step;
|
|
1928
|
+
else if (event.key === "Home") next = minWidth;
|
|
1929
|
+
else if (event.key === "End" && measured) next = maxDockedWidth + 1;
|
|
1930
|
+
if (next === null) return;
|
|
1931
|
+
event.preventDefault();
|
|
1932
|
+
resize(next);
|
|
1933
|
+
};
|
|
1934
|
+
return /* @__PURE__ */ jsx18(
|
|
1935
|
+
"div",
|
|
1936
|
+
{
|
|
1937
|
+
role: "separator",
|
|
1938
|
+
tabIndex: 0,
|
|
1939
|
+
"aria-controls": controls,
|
|
1940
|
+
"aria-orientation": "vertical",
|
|
1941
|
+
"aria-label": label,
|
|
1942
|
+
"aria-valuenow": Math.round(current),
|
|
1943
|
+
"aria-valuemin": minWidth,
|
|
1944
|
+
"aria-valuemax": measured ? Math.round(maxDockedWidth + 1) : void 0,
|
|
1945
|
+
"aria-valuetext": mode === "full" ? "Full width" : `${Math.round(width)} pixels`,
|
|
1946
|
+
onPointerDown: handlePointerDown,
|
|
1947
|
+
onPointerMove: handlePointerMove,
|
|
1948
|
+
onPointerUp: endDrag,
|
|
1949
|
+
onPointerCancel: endDrag,
|
|
1950
|
+
onKeyDown: handleKeyDown,
|
|
1951
|
+
className: "group absolute inset-y-0 left-0 z-10 flex w-4 -translate-x-1/2 cursor-col-resize touch-none select-none items-center justify-center outline-none",
|
|
1952
|
+
children: /* @__PURE__ */ jsx18(
|
|
1953
|
+
"span",
|
|
1954
|
+
{
|
|
1955
|
+
"aria-hidden": true,
|
|
1956
|
+
className: "flex h-8 w-4 items-center justify-center rounded-sm border border-ods-border bg-ods-card text-ods-text-secondary transition-colors group-hover:border-ods-border-hover group-focus-visible:border-ods-accent group-focus-visible:text-ods-accent",
|
|
1957
|
+
children: /* @__PURE__ */ jsx18(Menu01Icon, { size: 12 })
|
|
1958
|
+
}
|
|
1959
|
+
)
|
|
1960
|
+
}
|
|
1961
|
+
);
|
|
1962
|
+
}
|
|
1963
|
+
function AppLayoutSidePanel({ config, state }) {
|
|
1964
|
+
const panelId = useId();
|
|
1965
|
+
const { mode, width, dockedWidth, canDock, isOpen, close, morph, endMorph, peekWidth } = state;
|
|
1966
|
+
useEffect3(() => {
|
|
1967
|
+
if (!morph) return void 0;
|
|
1968
|
+
const timer = window.setTimeout(endMorph, MORPH_MS * 3);
|
|
1969
|
+
return () => window.clearTimeout(timer);
|
|
1970
|
+
}, [morph, endMorph]);
|
|
1971
|
+
if (mode === "hidden") return null;
|
|
1972
|
+
const label = config.label ?? "Side panel";
|
|
1973
|
+
const inColumn = mode === "docked" || morph === "expand" || peekWidth !== null;
|
|
1974
|
+
const handleKeyDown = (event) => {
|
|
1975
|
+
if (event.key !== "Escape" || !isOpen || event.defaultPrevented) return;
|
|
1976
|
+
event.preventDefault();
|
|
1977
|
+
close();
|
|
1978
|
+
};
|
|
1979
|
+
return /* @__PURE__ */ jsx18(
|
|
1980
|
+
"aside",
|
|
1981
|
+
{
|
|
1982
|
+
id: panelId,
|
|
1983
|
+
"aria-label": label,
|
|
1984
|
+
onKeyDown: handleKeyDown,
|
|
1985
|
+
className: cn(
|
|
1986
|
+
"relative min-w-0",
|
|
1987
|
+
// Docked is decided before the viewport is known (server render, first
|
|
1988
|
+
// paint): keep it off phones until JS says otherwise.
|
|
1989
|
+
mode !== "overlay" && inColumn && "hidden shrink-0 md:block",
|
|
1990
|
+
mode !== "overlay" && !inColumn && "flex-1",
|
|
1991
|
+
// z-[99]: above the page's own layers (sticky headers, the z-50 bottom
|
|
1992
|
+
// action bar), BELOW the mobile burger menu (backdrop z-[100], panel
|
|
1993
|
+
// z-[101]), so the menu opens over a panel covering the content.
|
|
1994
|
+
mode === "overlay" && "absolute inset-0 z-[99] bg-ods-bg"
|
|
1995
|
+
),
|
|
1996
|
+
style: mode !== "overlay" && inColumn ? { width: dockedWidth + SIDE_PANEL_INSET } : void 0,
|
|
1997
|
+
children: /* @__PURE__ */ jsxs16(
|
|
1998
|
+
"div",
|
|
1999
|
+
{
|
|
2000
|
+
onTransitionEnd: (event) => {
|
|
2001
|
+
if (event.target === event.currentTarget) endMorph();
|
|
2002
|
+
},
|
|
2003
|
+
onTransitionCancel: (event) => {
|
|
2004
|
+
if (event.target === event.currentTarget) endMorph();
|
|
2005
|
+
},
|
|
2006
|
+
className: cn(
|
|
2007
|
+
"absolute flex",
|
|
2008
|
+
mode === "overlay" ? "inset-0" : "inset-y-[var(--spacing-system-mf)] right-[var(--spacing-system-mf)] z-[1]",
|
|
2009
|
+
morph && "transition-[width] duration-300 ease-in-out motion-reduce:transition-none"
|
|
2010
|
+
),
|
|
2011
|
+
style: mode === "overlay" ? void 0 : { width: peekWidth ?? width },
|
|
2012
|
+
children: [
|
|
2013
|
+
canDock && /* @__PURE__ */ jsx18(SidePanelResizeHandle, { state, label: `Resize ${label}`, controls: panelId }),
|
|
2014
|
+
/* @__PURE__ */ jsx18(
|
|
2015
|
+
"div",
|
|
2016
|
+
{
|
|
2017
|
+
className: cn(
|
|
2018
|
+
"flex min-h-0 min-w-0 flex-1 overflow-hidden bg-ods-bg",
|
|
2019
|
+
mode !== "overlay" && "rounded-md border border-ods-border"
|
|
2020
|
+
),
|
|
2021
|
+
children: config.children({
|
|
2022
|
+
width: peekWidth ?? width,
|
|
2023
|
+
mode,
|
|
2024
|
+
canClose: mode === "overlay" || mode === "full" && !canDock,
|
|
2025
|
+
close,
|
|
2026
|
+
collapsesTo: state.collapsesTo,
|
|
2027
|
+
collapse: state.collapse
|
|
2028
|
+
})
|
|
2029
|
+
}
|
|
2030
|
+
)
|
|
2031
|
+
]
|
|
2032
|
+
}
|
|
2033
|
+
)
|
|
2034
|
+
}
|
|
2035
|
+
);
|
|
2036
|
+
}
|
|
1651
2037
|
|
|
1652
2038
|
// src/components/navigation/mobile-burger-menu.tsx
|
|
1653
2039
|
import { usePreventScroll as usePreventScroll3 } from "@react-aria/overlays";
|
|
1654
|
-
import React4, { useCallback as useCallback2, useRef as
|
|
1655
|
-
import { Fragment as Fragment8, jsx as
|
|
2040
|
+
import React4, { useCallback as useCallback2, useRef as useRef5 } from "react";
|
|
2041
|
+
import { Fragment as Fragment8, jsx as jsx19, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
1656
2042
|
var HEADER_HEIGHT = 56;
|
|
1657
2043
|
var MobileBurgerMenu = React4.memo(function MobileBurgerMenuImpl({
|
|
1658
2044
|
isOpen,
|
|
@@ -1664,7 +2050,7 @@ var MobileBurgerMenu = React4.memo(function MobileBurgerMenuImpl({
|
|
|
1664
2050
|
onLogout,
|
|
1665
2051
|
disabled = false
|
|
1666
2052
|
}) {
|
|
1667
|
-
const panelRef =
|
|
2053
|
+
const panelRef = useRef5(null);
|
|
1668
2054
|
usePreventScroll3({ isDisabled: !isOpen });
|
|
1669
2055
|
useFocusTrap(panelRef, isOpen, { onEscape: onClose });
|
|
1670
2056
|
const handleItemClick = useCallback2(
|
|
@@ -1682,7 +2068,7 @@ var MobileBurgerMenu = React4.memo(function MobileBurgerMenuImpl({
|
|
|
1682
2068
|
const secondaryItems = config.items.filter((item) => item.section === "secondary");
|
|
1683
2069
|
const renderNavigationItem = (item, isGridItem = false) => {
|
|
1684
2070
|
const isActive = item.isActive ?? false;
|
|
1685
|
-
return /* @__PURE__ */
|
|
2071
|
+
return /* @__PURE__ */ jsxs17(
|
|
1686
2072
|
"button",
|
|
1687
2073
|
{
|
|
1688
2074
|
onClick: () => handleItemClick(item),
|
|
@@ -1702,12 +2088,12 @@ var MobileBurgerMenu = React4.memo(function MobileBurgerMenuImpl({
|
|
|
1702
2088
|
"aria-current": isActive ? "page" : void 0,
|
|
1703
2089
|
"aria-label": item.badge ? `${item.label} (${item.badge})` : void 0,
|
|
1704
2090
|
children: [
|
|
1705
|
-
item.icon && /* @__PURE__ */
|
|
2091
|
+
item.icon && /* @__PURE__ */ jsx19("div", { className: "flex size-4 flex-shrink-0 items-center justify-center", children: React4.cloneElement(item.icon, {
|
|
1706
2092
|
size: 16,
|
|
1707
2093
|
color: isActive && !disabled ? "var(--color-accent-primary)" : "var(--color-text-secondary)"
|
|
1708
2094
|
}) }),
|
|
1709
|
-
/* @__PURE__ */
|
|
1710
|
-
/* @__PURE__ */
|
|
2095
|
+
/* @__PURE__ */ jsxs17("span", { className: "flex min-w-0 flex-1 items-center gap-[var(--spacing-system-xxs)]", children: [
|
|
2096
|
+
/* @__PURE__ */ jsx19(
|
|
1711
2097
|
"span",
|
|
1712
2098
|
{
|
|
1713
2099
|
className: cn(
|
|
@@ -1717,16 +2103,16 @@ var MobileBurgerMenu = React4.memo(function MobileBurgerMenuImpl({
|
|
|
1717
2103
|
children: item.label
|
|
1718
2104
|
}
|
|
1719
2105
|
),
|
|
1720
|
-
item.badge && /* @__PURE__ */
|
|
2106
|
+
item.badge && /* @__PURE__ */ jsx19(NavigationItemBadge, { compact: true, label: item.badge })
|
|
1721
2107
|
] })
|
|
1722
2108
|
]
|
|
1723
2109
|
},
|
|
1724
2110
|
item.id
|
|
1725
2111
|
);
|
|
1726
2112
|
};
|
|
1727
|
-
const renderNavigationGrid = (items) => /* @__PURE__ */
|
|
1728
|
-
return /* @__PURE__ */
|
|
1729
|
-
/* @__PURE__ */
|
|
2113
|
+
const renderNavigationGrid = (items) => /* @__PURE__ */ jsx19("div", { className: "grid grid-cols-2 gap-3", children: items.map((item) => /* @__PURE__ */ jsx19(React4.Fragment, { children: renderNavigationItem(item, true) }, item.id)) });
|
|
2114
|
+
return /* @__PURE__ */ jsxs17(Fragment8, { children: [
|
|
2115
|
+
/* @__PURE__ */ jsx19(
|
|
1730
2116
|
"div",
|
|
1731
2117
|
{
|
|
1732
2118
|
className: cn(
|
|
@@ -1740,7 +2126,7 @@ var MobileBurgerMenu = React4.memo(function MobileBurgerMenuImpl({
|
|
|
1740
2126
|
"aria-hidden": "true"
|
|
1741
2127
|
}
|
|
1742
2128
|
),
|
|
1743
|
-
/* @__PURE__ */
|
|
2129
|
+
/* @__PURE__ */ jsx19(
|
|
1744
2130
|
"div",
|
|
1745
2131
|
{
|
|
1746
2132
|
ref: panelRef,
|
|
@@ -1761,8 +2147,8 @@ var MobileBurgerMenu = React4.memo(function MobileBurgerMenuImpl({
|
|
|
1761
2147
|
"aria-label": "Mobile navigation menu",
|
|
1762
2148
|
tabIndex: -1,
|
|
1763
2149
|
inert: !isOpen || void 0,
|
|
1764
|
-
children: /* @__PURE__ */
|
|
1765
|
-
user && /* @__PURE__ */
|
|
2150
|
+
children: /* @__PURE__ */ jsxs17("div", { className: "flex flex-1 flex-col gap-4 overflow-y-auto overflow-x-hidden overscroll-contain p-4", children: [
|
|
2151
|
+
user && /* @__PURE__ */ jsxs17(
|
|
1766
2152
|
"div",
|
|
1767
2153
|
{
|
|
1768
2154
|
className: cn(
|
|
@@ -1771,7 +2157,7 @@ var MobileBurgerMenu = React4.memo(function MobileBurgerMenuImpl({
|
|
|
1771
2157
|
),
|
|
1772
2158
|
"aria-disabled": disabled || void 0,
|
|
1773
2159
|
children: [
|
|
1774
|
-
/* @__PURE__ */
|
|
2160
|
+
/* @__PURE__ */ jsx19(
|
|
1775
2161
|
SquareAvatar,
|
|
1776
2162
|
{
|
|
1777
2163
|
src: user.userAvatarUrl || void 0,
|
|
@@ -1782,24 +2168,24 @@ var MobileBurgerMenu = React4.memo(function MobileBurgerMenuImpl({
|
|
|
1782
2168
|
className: "h-14 w-14 shrink-0"
|
|
1783
2169
|
}
|
|
1784
2170
|
),
|
|
1785
|
-
/* @__PURE__ */
|
|
1786
|
-
/* @__PURE__ */
|
|
1787
|
-
/* @__PURE__ */
|
|
1788
|
-
user.userRole && /* @__PURE__ */
|
|
2171
|
+
/* @__PURE__ */ jsxs17("div", { className: "flex min-w-0 flex-1 flex-col", children: [
|
|
2172
|
+
/* @__PURE__ */ jsxs17("div", { className: "flex items-center gap-2", children: [
|
|
2173
|
+
/* @__PURE__ */ jsx19("span", { className: "truncate text-ods-text-primary text-h6", children: user.userName || "User" }),
|
|
2174
|
+
user.userRole && /* @__PURE__ */ jsx19("span", { className: "shrink-0 rounded-md border border-ods-border bg-ods-card px-2 py-0.5 uppercase text-ods-text-primary text-h6", children: user.userRole })
|
|
1789
2175
|
] }),
|
|
1790
|
-
user.userEmail && /* @__PURE__ */
|
|
2176
|
+
user.userEmail && /* @__PURE__ */ jsx19("span", { className: "truncate text-ods-text-secondary text-h6", children: user.userEmail })
|
|
1791
2177
|
] }),
|
|
1792
|
-
/* @__PURE__ */
|
|
1793
|
-
onSearchUser && /* @__PURE__ */
|
|
1794
|
-
onEditProfile && /* @__PURE__ */
|
|
2178
|
+
/* @__PURE__ */ jsxs17("div", { className: "flex shrink-0 items-center gap-2", children: [
|
|
2179
|
+
onSearchUser && /* @__PURE__ */ jsx19(Button, { size: "icon", onClick: onSearchUser, variant: "outline", "aria-label": "Search users", children: /* @__PURE__ */ jsx19(UserSearchIcon, { className: "size-4 text-ods-text-primary" }) }),
|
|
2180
|
+
onEditProfile && /* @__PURE__ */ jsx19(Button, { size: "icon", onClick: onEditProfile, variant: "outline", "aria-label": "Edit profile", children: /* @__PURE__ */ jsx19(PenEditIcon, { className: "size-4 text-ods-text-primary" }) })
|
|
1795
2181
|
] })
|
|
1796
2182
|
]
|
|
1797
2183
|
}
|
|
1798
2184
|
),
|
|
1799
2185
|
config.topSlot?.({ minimized: false }),
|
|
1800
|
-
/* @__PURE__ */
|
|
1801
|
-
secondaryItems.length > 0 && /* @__PURE__ */
|
|
1802
|
-
onLogout && /* @__PURE__ */
|
|
2186
|
+
/* @__PURE__ */ jsx19("nav", { "aria-label": "Primary navigation", children: renderNavigationGrid(primaryItems) }),
|
|
2187
|
+
secondaryItems.length > 0 && /* @__PURE__ */ jsx19("nav", { "aria-label": "Secondary navigation", className: "flex flex-col gap-3", children: secondaryItems.map((item) => /* @__PURE__ */ jsx19(React4.Fragment, { children: renderNavigationItem(item, false) }, item.id)) }),
|
|
2188
|
+
onLogout && /* @__PURE__ */ jsxs17(
|
|
1803
2189
|
"button",
|
|
1804
2190
|
{
|
|
1805
2191
|
onClick: onLogout,
|
|
@@ -1810,8 +2196,8 @@ var MobileBurgerMenu = React4.memo(function MobileBurgerMenuImpl({
|
|
|
1810
2196
|
disabled && "cursor-not-allowed opacity-50"
|
|
1811
2197
|
),
|
|
1812
2198
|
children: [
|
|
1813
|
-
/* @__PURE__ */
|
|
1814
|
-
/* @__PURE__ */
|
|
2199
|
+
/* @__PURE__ */ jsx19(Logout02Icon, { className: "size-4 text-ods-error" }),
|
|
2200
|
+
/* @__PURE__ */ jsx19("span", { className: "flex-1 text-left text-ods-text-primary text-h6", children: "Log Out" })
|
|
1815
2201
|
]
|
|
1816
2202
|
}
|
|
1817
2203
|
)
|
|
@@ -1822,7 +2208,7 @@ var MobileBurgerMenu = React4.memo(function MobileBurgerMenuImpl({
|
|
|
1822
2208
|
});
|
|
1823
2209
|
|
|
1824
2210
|
// src/components/navigation/app-layout.tsx
|
|
1825
|
-
import { jsx as
|
|
2211
|
+
import { jsx as jsx20, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
1826
2212
|
function AppLayout({
|
|
1827
2213
|
children,
|
|
1828
2214
|
sidebarConfig,
|
|
@@ -1832,15 +2218,36 @@ function AppLayout({
|
|
|
1832
2218
|
mobileBurgerMenuProps,
|
|
1833
2219
|
disabled = false,
|
|
1834
2220
|
drawer,
|
|
1835
|
-
topBar
|
|
2221
|
+
topBar,
|
|
2222
|
+
sidePanel
|
|
1836
2223
|
}) {
|
|
1837
|
-
const [mobileMenuOpen, setMobileMenuOpen] =
|
|
1838
|
-
const [drawerContainer, setDrawerContainer] =
|
|
1839
|
-
const
|
|
1840
|
-
|
|
2224
|
+
const [mobileMenuOpen, setMobileMenuOpen] = useState5(false);
|
|
2225
|
+
const [drawerContainer, setDrawerContainer] = useState5(null);
|
|
2226
|
+
const [mainElement, setMainElement] = useState5(null);
|
|
2227
|
+
const [contentWidth, setContentWidth] = useState5(null);
|
|
2228
|
+
const hasSidePanel = sidePanel !== void 0;
|
|
2229
|
+
const sidePanelState = useAppLayoutSidePanel(sidePanel, drawerContainer);
|
|
2230
|
+
useIsomorphicLayoutEffect(() => {
|
|
2231
|
+
if (!hasSidePanel || !mainElement) return void 0;
|
|
2232
|
+
const update = () => setContentWidth(mainElement.clientWidth);
|
|
2233
|
+
update();
|
|
2234
|
+
const observer = new ResizeObserver(update);
|
|
2235
|
+
observer.observe(mainElement);
|
|
2236
|
+
return () => observer.disconnect();
|
|
2237
|
+
}, [hasSidePanel, mainElement]);
|
|
2238
|
+
const resolvedHeaderProps = sidePanelState === null ? headerProps : {
|
|
2239
|
+
...headerProps,
|
|
2240
|
+
showMingoAI: !sidePanelState.canDock,
|
|
2241
|
+
onMingoAI: sidePanelState.toggle,
|
|
2242
|
+
isMingoAIActive: sidePanelState.isOpen,
|
|
2243
|
+
mingoAICloseWhenActive: true
|
|
2244
|
+
};
|
|
2245
|
+
const contentCovered = sidePanelState?.coversContent === true;
|
|
2246
|
+
const mobileMenuOpenRef = useRef6(mobileMenuOpen);
|
|
2247
|
+
useEffect4(() => {
|
|
1841
2248
|
mobileMenuOpenRef.current = mobileMenuOpen;
|
|
1842
2249
|
});
|
|
1843
|
-
const drawerHandlesRef =
|
|
2250
|
+
const drawerHandlesRef = useRef6(/* @__PURE__ */ new Set());
|
|
1844
2251
|
const handleToggleMobileMenu = useCallback3(() => {
|
|
1845
2252
|
const opening = !mobileMenuOpenRef.current;
|
|
1846
2253
|
if (opening) {
|
|
@@ -1866,11 +2273,11 @@ function AppLayout({
|
|
|
1866
2273
|
}),
|
|
1867
2274
|
[]
|
|
1868
2275
|
);
|
|
1869
|
-
return /* @__PURE__ */
|
|
2276
|
+
return /* @__PURE__ */ jsx20(AppLayoutDrawerContainerContext.Provider, { value: drawerContainer, children: /* @__PURE__ */ jsx20(AppLayoutDrawerCoordinationContext.Provider, { value: drawerCoordination, children: /* @__PURE__ */ jsxs18("div", { className: cn("flex h-screen flex-col bg-ods-bg", className), children: [
|
|
1870
2277
|
topBar,
|
|
1871
|
-
/* @__PURE__ */
|
|
1872
|
-
/* @__PURE__ */
|
|
1873
|
-
/* @__PURE__ */
|
|
2278
|
+
/* @__PURE__ */ jsxs18("div", { className: "relative flex min-h-0 flex-1", children: [
|
|
2279
|
+
/* @__PURE__ */ jsx20(NavigationSidebar, { config: sidebarConfig, disabled, pushOnTablet: hasSidePanel }),
|
|
2280
|
+
/* @__PURE__ */ jsx20(
|
|
1874
2281
|
MobileBurgerMenu,
|
|
1875
2282
|
{
|
|
1876
2283
|
...mobileBurgerMenuProps,
|
|
@@ -1880,21 +2287,47 @@ function AppLayout({
|
|
|
1880
2287
|
disabled
|
|
1881
2288
|
}
|
|
1882
2289
|
),
|
|
1883
|
-
/* @__PURE__ */
|
|
1884
|
-
/* @__PURE__ */
|
|
2290
|
+
/* @__PURE__ */ jsxs18("div", { className: "flex flex-1 flex-col overflow-hidden", children: [
|
|
2291
|
+
/* @__PURE__ */ jsx20(
|
|
1885
2292
|
AppHeader,
|
|
1886
2293
|
{
|
|
1887
|
-
...
|
|
2294
|
+
...resolvedHeaderProps,
|
|
1888
2295
|
isMobileMenuOpen: mobileMenuOpen,
|
|
1889
2296
|
onToggleMobileMenu: handleToggleMobileMenu,
|
|
1890
2297
|
disabled
|
|
1891
2298
|
}
|
|
1892
2299
|
),
|
|
1893
|
-
/* @__PURE__ */
|
|
1894
|
-
/* @__PURE__ */
|
|
1895
|
-
|
|
1896
|
-
|
|
1897
|
-
|
|
2300
|
+
/* @__PURE__ */ jsx20(NotificationDrawer, {}),
|
|
2301
|
+
/* @__PURE__ */ jsxs18(
|
|
2302
|
+
"div",
|
|
2303
|
+
{
|
|
2304
|
+
ref: setDrawerContainer,
|
|
2305
|
+
className: cn("relative flex flex-1 overflow-hidden", sidePanel ? "flex-row" : "flex-col"),
|
|
2306
|
+
children: [
|
|
2307
|
+
sidePanel ? (
|
|
2308
|
+
// `hidden` while the panel covers the area: the page stays
|
|
2309
|
+
// mounted, it just takes no room.
|
|
2310
|
+
/* @__PURE__ */ jsx20(
|
|
2311
|
+
"main",
|
|
2312
|
+
{
|
|
2313
|
+
ref: setMainElement,
|
|
2314
|
+
className: cn(
|
|
2315
|
+
"ods-content-area min-w-0 flex-1 overflow-y-auto",
|
|
2316
|
+
contentCovered && "hidden",
|
|
2317
|
+
// While the panel is drawn over the page, keep the page's own
|
|
2318
|
+
// z-indexed layers (sticky headers, fixed bars) under it.
|
|
2319
|
+
sidePanelState?.overlapsContent && "isolate",
|
|
2320
|
+
mainClassName
|
|
2321
|
+
),
|
|
2322
|
+
children: /* @__PURE__ */ jsx20(ContentAreaWidthContext.Provider, { value: contentWidth, children: /* @__PURE__ */ jsx20("div", { className: "ods-content-scope", children }) })
|
|
2323
|
+
}
|
|
2324
|
+
)
|
|
2325
|
+
) : /* @__PURE__ */ jsx20("main", { className: cn("flex-1 overflow-y-auto", mainClassName), children }),
|
|
2326
|
+
sidePanel && sidePanelState && /* @__PURE__ */ jsx20(AppLayoutSidePanel, { config: sidePanel, state: sidePanelState }),
|
|
2327
|
+
drawer
|
|
2328
|
+
]
|
|
2329
|
+
}
|
|
2330
|
+
)
|
|
1898
2331
|
] })
|
|
1899
2332
|
] })
|
|
1900
2333
|
] }) }) });
|