@omnifyjp/ui 0.5.3 → 1.0.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 +3 -6
- package/dist/chunk-2C2HRGM7.js +51 -0
- package/dist/chunk-2C2HRGM7.js.map +1 -0
- package/dist/chunk-2TUWDXAC.js +196 -0
- package/dist/chunk-2TUWDXAC.js.map +1 -0
- package/dist/chunk-34ARZSNP.js +63 -0
- package/dist/chunk-34ARZSNP.js.map +1 -0
- package/dist/chunk-35DNN46W.js +13 -0
- package/dist/chunk-35DNN46W.js.map +1 -0
- package/dist/chunk-35U6QG4P.js +116 -0
- package/dist/chunk-35U6QG4P.js.map +1 -0
- package/dist/chunk-3EOHW4QN.js +35 -0
- package/dist/chunk-3EOHW4QN.js.map +1 -0
- package/dist/chunk-3VU56V66.js +41 -0
- package/dist/chunk-3VU56V66.js.map +1 -0
- package/dist/chunk-55E7D2HR.js +99 -0
- package/dist/chunk-55E7D2HR.js.map +1 -0
- package/dist/chunk-67YUL2ZS.js +53 -0
- package/dist/chunk-67YUL2ZS.js.map +1 -0
- package/dist/chunk-6DIDQ4TB.js +131 -0
- package/dist/chunk-6DIDQ4TB.js.map +1 -0
- package/dist/chunk-6GWVQB3Q.js +155 -0
- package/dist/chunk-6GWVQB3Q.js.map +1 -0
- package/dist/chunk-75WZR6HF.js +44 -0
- package/dist/chunk-75WZR6HF.js.map +1 -0
- package/dist/chunk-7IRLBU2I.js +114 -0
- package/dist/chunk-7IRLBU2I.js.map +1 -0
- package/dist/chunk-7RMTPT6O.js +99 -0
- package/dist/chunk-7RMTPT6O.js.map +1 -0
- package/dist/chunk-7XH3MGBR.js +128 -0
- package/dist/chunk-7XH3MGBR.js.map +1 -0
- package/dist/chunk-A3BB5ZOC.js +77 -0
- package/dist/chunk-A3BB5ZOC.js.map +1 -0
- package/dist/chunk-BAQWGQJG.js +106 -0
- package/dist/chunk-BAQWGQJG.js.map +1 -0
- package/dist/chunk-BRSM3SZP.js +46 -0
- package/dist/chunk-BRSM3SZP.js.map +1 -0
- package/dist/chunk-C34KSTWA.js +43 -0
- package/dist/chunk-C34KSTWA.js.map +1 -0
- package/dist/chunk-C5NZAOA7.js +54 -0
- package/dist/chunk-C5NZAOA7.js.map +1 -0
- package/dist/chunk-CUZR4JWM.js +23 -0
- package/dist/chunk-CUZR4JWM.js.map +1 -0
- package/dist/chunk-DGPY4WP3.js +11 -0
- package/dist/chunk-DGPY4WP3.js.map +1 -0
- package/dist/chunk-EWBCV7VA.js +65 -0
- package/dist/chunk-EWBCV7VA.js.map +1 -0
- package/dist/chunk-F2ZJLKDP.js +119 -0
- package/dist/chunk-F2ZJLKDP.js.map +1 -0
- package/dist/chunk-FLWMT4DB.js +66 -0
- package/dist/chunk-FLWMT4DB.js.map +1 -0
- package/dist/chunk-FRKG7JQY.js +48 -0
- package/dist/chunk-FRKG7JQY.js.map +1 -0
- package/dist/chunk-G7HTZBUR.js +187 -0
- package/dist/chunk-G7HTZBUR.js.map +1 -0
- package/dist/chunk-IAWKX5W4.js +219 -0
- package/dist/chunk-IAWKX5W4.js.map +1 -0
- package/dist/chunk-INLM7UJC.js +238 -0
- package/dist/chunk-INLM7UJC.js.map +1 -0
- package/dist/chunk-JAJMM32I.js +18 -0
- package/dist/chunk-JAJMM32I.js.map +1 -0
- package/dist/chunk-JJSVA3TH.js +61 -0
- package/dist/chunk-JJSVA3TH.js.map +1 -0
- package/dist/chunk-JLTBUACL.js +121 -0
- package/dist/chunk-JLTBUACL.js.map +1 -0
- package/dist/chunk-JRU2QX7T.js +38 -0
- package/dist/chunk-JRU2QX7T.js.map +1 -0
- package/dist/chunk-JXGRW2MR.js +17 -0
- package/dist/chunk-JXGRW2MR.js.map +1 -0
- package/dist/chunk-LMT327XH.js +56 -0
- package/dist/chunk-LMT327XH.js.map +1 -0
- package/dist/chunk-LTTNCAAA.js +138 -0
- package/dist/chunk-LTTNCAAA.js.map +1 -0
- package/dist/chunk-MJLFJPUG.js +143 -0
- package/dist/chunk-MJLFJPUG.js.map +1 -0
- package/dist/chunk-MZ2P566X.js +65 -0
- package/dist/chunk-MZ2P566X.js.map +1 -0
- package/dist/chunk-N47H4MHX.js +41 -0
- package/dist/chunk-N47H4MHX.js.map +1 -0
- package/dist/chunk-NNJTKHCE.js +160 -0
- package/dist/chunk-NNJTKHCE.js.map +1 -0
- package/dist/chunk-NPL2R5LD.js +171 -0
- package/dist/chunk-NPL2R5LD.js.map +1 -0
- package/dist/chunk-NU56GKGM.js +44 -0
- package/dist/chunk-NU56GKGM.js.map +1 -0
- package/dist/chunk-P3M5TZD2.js +24 -0
- package/dist/chunk-P3M5TZD2.js.map +1 -0
- package/dist/chunk-PGWNOZDX.js +28 -0
- package/dist/chunk-PGWNOZDX.js.map +1 -0
- package/dist/chunk-QB3UWRZH.js +92 -0
- package/dist/chunk-QB3UWRZH.js.map +1 -0
- package/dist/chunk-R2CDE5DO.js +33 -0
- package/dist/chunk-R2CDE5DO.js.map +1 -0
- package/dist/chunk-RQNZDWY3.js +65 -0
- package/dist/chunk-RQNZDWY3.js.map +1 -0
- package/dist/chunk-S6PDRGR5.js +109 -0
- package/dist/chunk-S6PDRGR5.js.map +1 -0
- package/dist/chunk-TGYQ3AKH.js +95 -0
- package/dist/chunk-TGYQ3AKH.js.map +1 -0
- package/dist/chunk-TJMK2KBE.js +112 -0
- package/dist/chunk-TJMK2KBE.js.map +1 -0
- package/dist/chunk-USIHM7FV.js +211 -0
- package/dist/chunk-USIHM7FV.js.map +1 -0
- package/dist/chunk-VVYSAGB3.js +104 -0
- package/dist/chunk-VVYSAGB3.js.map +1 -0
- package/dist/chunk-WD5KZE25.js +25 -0
- package/dist/chunk-WD5KZE25.js.map +1 -0
- package/dist/chunk-WL4ZO2H3.js +33 -0
- package/dist/chunk-WL4ZO2H3.js.map +1 -0
- package/dist/chunk-WRCHR4AK.js +23 -0
- package/dist/chunk-WRCHR4AK.js.map +1 -0
- package/dist/chunk-WS6E7HBT.js +39 -0
- package/dist/chunk-WS6E7HBT.js.map +1 -0
- package/dist/chunk-XOJJBNDX.js +33 -0
- package/dist/chunk-XOJJBNDX.js.map +1 -0
- package/dist/chunk-YBMEQZX7.js +164 -0
- package/dist/chunk-YBMEQZX7.js.map +1 -0
- package/dist/chunk-Z2QAABLM.js +86 -0
- package/dist/chunk-Z2QAABLM.js.map +1 -0
- package/dist/chunk-ZHEKDP5X.js +41 -0
- package/dist/chunk-ZHEKDP5X.js.map +1 -0
- package/dist/chunk-ZPMXRW2A.js +63 -0
- package/dist/chunk-ZPMXRW2A.js.map +1 -0
- package/dist/chunk-ZYEGBF7G.js +25 -0
- package/dist/chunk-ZYEGBF7G.js.map +1 -0
- package/dist/components/accordion.d.ts +37 -0
- package/dist/components/accordion.js +4 -0
- package/dist/components/accordion.js.map +1 -0
- package/dist/components/alert-dialog.d.ts +56 -0
- package/dist/components/alert-dialog.js +5 -0
- package/dist/components/alert-dialog.js.map +1 -0
- package/dist/components/alert.d.ts +68 -0
- package/dist/components/alert.js +4 -0
- package/dist/components/alert.js.map +1 -0
- package/dist/components/aspect-ratio.d.ts +23 -0
- package/dist/components/aspect-ratio.js +3 -0
- package/dist/components/aspect-ratio.js.map +1 -0
- package/dist/components/avatar.d.ts +48 -0
- package/dist/components/avatar.js +4 -0
- package/dist/components/avatar.js.map +1 -0
- package/dist/components/badge.d.ts +52 -0
- package/dist/components/badge.js +4 -0
- package/dist/components/badge.js.map +1 -0
- package/dist/components/breadcrumb.d.ts +50 -0
- package/dist/components/breadcrumb.js +4 -0
- package/dist/components/breadcrumb.js.map +1 -0
- package/dist/components/button.d.ts +81 -0
- package/dist/components/button.js +4 -0
- package/dist/components/button.js.map +1 -0
- package/dist/components/calendar-category-badge.d.ts +24 -0
- package/dist/components/calendar-category-badge.js +5 -0
- package/dist/components/calendar-category-badge.js.map +1 -0
- package/dist/components/calendar-event-chip.d.ts +41 -0
- package/dist/components/calendar-event-chip.js +30 -0
- package/dist/components/calendar-event-chip.js.map +1 -0
- package/dist/components/calendar-event-sheet.d.ts +68 -0
- package/dist/components/calendar-event-sheet.js +83 -0
- package/dist/components/calendar-event-sheet.js.map +1 -0
- package/dist/components/calendar-mini.d.ts +65 -0
- package/dist/components/calendar-mini.js +93 -0
- package/dist/components/calendar-mini.js.map +1 -0
- package/dist/components/calendar-toolbar.d.ts +58 -0
- package/dist/components/calendar-toolbar.js +54 -0
- package/dist/components/calendar-toolbar.js.map +1 -0
- package/dist/components/calendar.d.ts +19 -0
- package/dist/components/calendar.js +5 -0
- package/dist/components/calendar.js.map +1 -0
- package/dist/components/card.d.ts +43 -0
- package/dist/components/card.js +4 -0
- package/dist/components/card.js.map +1 -0
- package/dist/components/carousel.d.ts +53 -0
- package/dist/components/carousel.js +5 -0
- package/dist/components/carousel.js.map +1 -0
- package/dist/components/chart.d.ts +125 -0
- package/dist/components/chart.js +239 -0
- package/dist/components/chart.js.map +1 -0
- package/dist/components/checkbox.d.ts +24 -0
- package/dist/components/checkbox.js +4 -0
- package/dist/components/checkbox.js.map +1 -0
- package/dist/components/collapsible.d.ts +28 -0
- package/dist/components/collapsible.js +3 -0
- package/dist/components/collapsible.js.map +1 -0
- package/dist/components/color-picker.d.ts +35 -0
- package/dist/components/color-picker.js +7 -0
- package/dist/components/color-picker.js.map +1 -0
- package/dist/components/combobox.d.ts +98 -0
- package/dist/components/combobox.js +8 -0
- package/dist/components/combobox.js.map +1 -0
- package/dist/components/command.d.ts +63 -0
- package/dist/components/command.js +5 -0
- package/dist/components/command.js.map +1 -0
- package/dist/components/context-menu.d.ts +70 -0
- package/dist/components/context-menu.js +4 -0
- package/dist/components/context-menu.js.map +1 -0
- package/dist/components/date-picker.d.ts +71 -0
- package/dist/components/date-picker.js +90 -0
- package/dist/components/date-picker.js.map +1 -0
- package/dist/components/dialog.d.ts +58 -0
- package/dist/components/dialog.js +4 -0
- package/dist/components/dialog.js.map +1 -0
- package/dist/components/drawer.d.ts +60 -0
- package/dist/components/drawer.js +4 -0
- package/dist/components/drawer.js.map +1 -0
- package/dist/components/dropdown-menu.d.ts +76 -0
- package/dist/components/dropdown-menu.js +4 -0
- package/dist/components/dropdown-menu.js.map +1 -0
- package/dist/components/file-upload.d.ts +44 -0
- package/dist/components/file-upload.js +5 -0
- package/dist/components/file-upload.js.map +1 -0
- package/dist/components/form.d.ts +67 -0
- package/dist/components/form.js +111 -0
- package/dist/components/form.js.map +1 -0
- package/dist/components/hover-card.d.ts +43 -0
- package/dist/components/hover-card.js +4 -0
- package/dist/components/hover-card.js.map +1 -0
- package/dist/components/input-otp.d.ts +38 -0
- package/dist/components/input-otp.js +4 -0
- package/dist/components/input-otp.js.map +1 -0
- package/dist/components/input.d.ts +38 -0
- package/dist/components/input.js +4 -0
- package/dist/components/input.js.map +1 -0
- package/dist/components/label.d.ts +20 -0
- package/dist/components/label.js +4 -0
- package/dist/components/label.js.map +1 -0
- package/dist/components/menubar.d.ts +82 -0
- package/dist/components/menubar.js +4 -0
- package/dist/components/menubar.js.map +1 -0
- package/dist/components/navigation-menu.d.ts +64 -0
- package/dist/components/navigation-menu.js +4 -0
- package/dist/components/navigation-menu.js.map +1 -0
- package/dist/components/pagination.d.ts +59 -0
- package/dist/components/pagination.js +5 -0
- package/dist/components/pagination.js.map +1 -0
- package/dist/components/password-input.d.ts +32 -0
- package/dist/components/password-input.js +5 -0
- package/dist/components/password-input.js.map +1 -0
- package/dist/components/permission-grid.d.ts +67 -0
- package/dist/components/permission-grid.js +5 -0
- package/dist/components/permission-grid.js.map +1 -0
- package/dist/components/popover.d.ts +37 -0
- package/dist/components/popover.js +4 -0
- package/dist/components/popover.js.map +1 -0
- package/dist/components/progress.d.ts +20 -0
- package/dist/components/progress.js +4 -0
- package/dist/components/progress.js.map +1 -0
- package/dist/components/radio-group.d.ts +38 -0
- package/dist/components/radio-group.js +4 -0
- package/dist/components/radio-group.js.map +1 -0
- package/dist/components/rating.d.ts +35 -0
- package/dist/components/rating.js +4 -0
- package/dist/components/rating.js.map +1 -0
- package/dist/components/resizable.d.ts +36 -0
- package/dist/components/resizable.js +4 -0
- package/dist/components/resizable.js.map +1 -0
- package/dist/components/scope-tree.d.ts +78 -0
- package/dist/components/scope-tree.js +5 -0
- package/dist/components/scope-tree.js.map +1 -0
- package/dist/components/scope-type-badge.d.ts +35 -0
- package/dist/components/scope-type-badge.js +5 -0
- package/dist/components/scope-type-badge.js.map +1 -0
- package/dist/components/scroll-area.d.ts +29 -0
- package/dist/components/scroll-area.js +4 -0
- package/dist/components/scroll-area.js.map +1 -0
- package/dist/components/select.d.ts +52 -0
- package/dist/components/select.js +4 -0
- package/dist/components/select.js.map +1 -0
- package/dist/components/separator.d.ts +24 -0
- package/dist/components/separator.js +4 -0
- package/dist/components/separator.js.map +1 -0
- package/dist/components/sheet.d.ts +51 -0
- package/dist/components/sheet.js +4 -0
- package/dist/components/sheet.js.map +1 -0
- package/dist/components/skeleton.d.ts +25 -0
- package/dist/components/skeleton.js +4 -0
- package/dist/components/skeleton.js.map +1 -0
- package/dist/components/slider.d.ts +24 -0
- package/dist/components/slider.js +4 -0
- package/dist/components/slider.js.map +1 -0
- package/dist/components/slug-input.d.ts +50 -0
- package/dist/components/slug-input.js +6 -0
- package/dist/components/slug-input.js.map +1 -0
- package/dist/components/sonner.d.ts +22 -0
- package/dist/components/sonner.js +3 -0
- package/dist/components/sonner.js.map +1 -0
- package/dist/components/stage-type-badge.d.ts +30 -0
- package/dist/components/stage-type-badge.js +5 -0
- package/dist/components/stage-type-badge.js.map +1 -0
- package/dist/components/switch.d.ts +26 -0
- package/dist/components/switch.js +4 -0
- package/dist/components/switch.js.map +1 -0
- package/dist/components/table.d.ts +57 -0
- package/dist/components/table.js +4 -0
- package/dist/components/table.js.map +1 -0
- package/dist/components/tabs.d.ts +39 -0
- package/dist/components/tabs.js +4 -0
- package/dist/components/tabs.js.map +1 -0
- package/dist/components/tag-input.d.ts +40 -0
- package/dist/components/tag-input.js +5 -0
- package/dist/components/tag-input.js.map +1 -0
- package/dist/components/textarea.d.ts +21 -0
- package/dist/components/textarea.js +4 -0
- package/dist/components/textarea.js.map +1 -0
- package/dist/components/time-picker.d.ts +57 -0
- package/dist/components/time-picker.js +8 -0
- package/dist/components/time-picker.js.map +1 -0
- package/dist/components/toggle-group.d.ts +45 -0
- package/dist/components/toggle-group.js +5 -0
- package/dist/components/toggle-group.js.map +1 -0
- package/dist/components/toggle.d.ts +31 -0
- package/dist/components/toggle.js +4 -0
- package/dist/components/toggle.js.map +1 -0
- package/dist/components/tooltip.d.ts +34 -0
- package/dist/components/tooltip.js +4 -0
- package/dist/components/tooltip.js.map +1 -0
- package/dist/components/workflow-category-badge.d.ts +32 -0
- package/dist/components/workflow-category-badge.js +5 -0
- package/dist/components/workflow-category-badge.js.map +1 -0
- package/dist/components/workflow-diagram.d.ts +63 -0
- package/dist/components/workflow-diagram.js +5 -0
- package/dist/components/workflow-diagram.js.map +1 -0
- package/dist/components/workflow-status-badge.d.ts +30 -0
- package/dist/components/workflow-status-badge.js +5 -0
- package/dist/components/workflow-status-badge.js.map +1 -0
- package/dist/components/workflow-stepper.d.ts +52 -0
- package/dist/components/workflow-stepper.js +4 -0
- package/dist/components/workflow-stepper.js.map +1 -0
- package/dist/hooks/use-mobile.d.ts +3 -3
- package/dist/hooks/use-mobile.js +1 -1
- package/dist/hooks/use-mobile.js.map +1 -1
- package/dist/index.d.ts +98 -16
- package/dist/index.js +62 -13
- package/dist/lib/types.d.ts +84 -1
- package/dist/lib/types.js +1 -1
- package/dist/lib/types.js.map +1 -1
- package/dist/lib/utils.d.ts +5 -1
- package/dist/lib/utils.js +1 -1
- package/dist/lib/utils.js.map +1 -1
- package/package.json +68 -31
- package/src/styles/fonts.css +0 -0
- package/src/styles/index.css +3 -1
- package/src/styles/tailwind.css +4 -0
- package/src/styles/theme.css +461 -0
- package/dist/chunk-2GN4WIOV.js +0 -240
- package/dist/chunk-2GN4WIOV.js.map +0 -1
- package/dist/chunk-5BL4VFRJ.js +0 -57
- package/dist/chunk-5BL4VFRJ.js.map +0 -1
- package/dist/chunk-735JNJJO.js +0 -27
- package/dist/chunk-735JNJJO.js.map +0 -1
- package/dist/chunk-EJEVW4RO.js +0 -49
- package/dist/chunk-EJEVW4RO.js.map +0 -1
- package/dist/chunk-FVOQZTHE.js +0 -191
- package/dist/chunk-FVOQZTHE.js.map +0 -1
- package/dist/chunk-ITXOZ4IR.js +0 -85
- package/dist/chunk-ITXOZ4IR.js.map +0 -1
- package/dist/chunk-NVPNMQSR.js +0 -30
- package/dist/chunk-NVPNMQSR.js.map +0 -1
- package/dist/chunk-O25D7DCP.js +0 -72
- package/dist/chunk-O25D7DCP.js.map +0 -1
- package/dist/chunk-O2ADW2GC.js +0 -224
- package/dist/chunk-O2ADW2GC.js.map +0 -1
- package/dist/chunk-OY3PSPA5.js +0 -661
- package/dist/chunk-OY3PSPA5.js.map +0 -1
- package/dist/chunk-UASABUQA.js +0 -39
- package/dist/chunk-UASABUQA.js.map +0 -1
- package/dist/chunk-UR2QLIS2.js +0 -93
- package/dist/chunk-UR2QLIS2.js.map +0 -1
- package/dist/chunk-XDXGUPCR.js +0 -123
- package/dist/chunk-XDXGUPCR.js.map +0 -1
- package/dist/components/AppShell.d.ts +0 -27
- package/dist/components/AppShell.js +0 -13
- package/dist/components/AppShell.js.map +0 -1
- package/dist/components/Header.d.ts +0 -11
- package/dist/components/Header.js +0 -9
- package/dist/components/Header.js.map +0 -1
- package/dist/components/LanguageSelector.d.ts +0 -11
- package/dist/components/LanguageSelector.js +0 -5
- package/dist/components/LanguageSelector.js.map +0 -1
- package/dist/components/OrganizationSelector.d.ts +0 -8
- package/dist/components/OrganizationSelector.js +0 -4
- package/dist/components/OrganizationSelector.js.map +0 -1
- package/dist/components/OrganizationSetupModal.d.ts +0 -5
- package/dist/components/OrganizationSetupModal.js +0 -4
- package/dist/components/OrganizationSetupModal.js.map +0 -1
- package/dist/components/PageContainer.d.ts +0 -105
- package/dist/components/PageContainer.js +0 -3
- package/dist/components/PageContainer.js.map +0 -1
- package/dist/components/ServiceMenu.d.ts +0 -11
- package/dist/components/ServiceMenu.js +0 -3
- package/dist/components/ServiceMenu.js.map +0 -1
- package/dist/components/Sidebar.d.ts +0 -11
- package/dist/components/Sidebar.js +0 -5
- package/dist/components/Sidebar.js.map +0 -1
- package/dist/contexts/LanguageContext.d.ts +0 -17
- package/dist/contexts/LanguageContext.js +0 -4
- package/dist/contexts/LanguageContext.js.map +0 -1
- package/dist/contexts/OrganizationContext.d.ts +0 -28
- package/dist/contexts/OrganizationContext.js +0 -3
- package/dist/contexts/OrganizationContext.js.map +0 -1
- package/dist/contexts/ThemeContext.d.ts +0 -14
- package/dist/contexts/ThemeContext.js +0 -3
- package/dist/contexts/ThemeContext.js.map +0 -1
- package/dist/hooks/useDateFormat.d.ts +0 -28
- package/dist/hooks/useDateFormat.js +0 -4
- package/dist/hooks/useDateFormat.js.map +0 -1
- package/dist/i18n.d.ts +0 -38
- package/dist/i18n.js +0 -3
- package/dist/i18n.js.map +0 -1
- package/dist/types.d.ts +0 -91
- package/dist/types.js +0 -3
- package/dist/types.js.map +0 -1
package/dist/chunk-O25D7DCP.js
DELETED
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
import { Separator } from '@omnifyjp/ui-components/components/separator';
|
|
2
|
-
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
3
|
-
|
|
4
|
-
// src/components/PageContainer.tsx
|
|
5
|
-
function PageContainer({
|
|
6
|
-
title,
|
|
7
|
-
subtitle,
|
|
8
|
-
extra,
|
|
9
|
-
children,
|
|
10
|
-
footer,
|
|
11
|
-
sidebar,
|
|
12
|
-
sidebarPosition = "right",
|
|
13
|
-
sidebarWidth = "w-80",
|
|
14
|
-
variant = "standard",
|
|
15
|
-
className = "",
|
|
16
|
-
contentClassName = "",
|
|
17
|
-
showHeaderSeparator = true
|
|
18
|
-
}) {
|
|
19
|
-
if (variant === "full") {
|
|
20
|
-
return /* @__PURE__ */ jsxs("div", { className: `h-full flex flex-col ${className}`, children: [
|
|
21
|
-
children,
|
|
22
|
-
footer && /* @__PURE__ */ jsx("div", { className: "border-t border-border", children: footer })
|
|
23
|
-
] });
|
|
24
|
-
}
|
|
25
|
-
if (variant === "split") {
|
|
26
|
-
return /* @__PURE__ */ jsxs("div", { className: `h-full flex flex-col ${className}`, children: [
|
|
27
|
-
(title || extra) && /* @__PURE__ */ jsx("div", { className: "px-page py-4 border-b border-border", children: /* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-4", children: [
|
|
28
|
-
/* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0", children: [
|
|
29
|
-
title && /* @__PURE__ */ jsx("h1", { className: "text-page-title font-semibold mb-2", children: title }),
|
|
30
|
-
subtitle && /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: subtitle })
|
|
31
|
-
] }),
|
|
32
|
-
extra && /* @__PURE__ */ jsx("div", { className: "flex-shrink-0", children: extra })
|
|
33
|
-
] }) }),
|
|
34
|
-
/* @__PURE__ */ jsxs("div", { className: "flex-1 flex overflow-hidden", children: [
|
|
35
|
-
sidebar && sidebarPosition === "left" && /* @__PURE__ */ jsx("aside", { className: `${sidebarWidth} border-r border-border overflow-y-auto flex-shrink-0`, children: sidebar }),
|
|
36
|
-
/* @__PURE__ */ jsx("main", { className: `flex-1 overflow-y-auto ${contentClassName}`, children }),
|
|
37
|
-
sidebar && sidebarPosition === "right" && /* @__PURE__ */ jsx("aside", { className: `${sidebarWidth} border-l border-border overflow-y-auto flex-shrink-0`, children: sidebar })
|
|
38
|
-
] }),
|
|
39
|
-
footer && /* @__PURE__ */ jsx("div", { className: "border-t border-border", children: footer })
|
|
40
|
-
] });
|
|
41
|
-
}
|
|
42
|
-
return /* @__PURE__ */ jsxs("div", { className: `h-full flex flex-col ${className}`, children: [
|
|
43
|
-
(title || extra) && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
44
|
-
/* @__PURE__ */ jsx("div", { className: "px-page py-4", children: /* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-4", children: [
|
|
45
|
-
/* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0", children: [
|
|
46
|
-
title && /* @__PURE__ */ jsx("h1", { className: "text-page-title font-semibold mb-2", children: title }),
|
|
47
|
-
subtitle && /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: subtitle })
|
|
48
|
-
] }),
|
|
49
|
-
extra && /* @__PURE__ */ jsx("div", { className: "flex-shrink-0", children: extra })
|
|
50
|
-
] }) }),
|
|
51
|
-
showHeaderSeparator && /* @__PURE__ */ jsx(Separator, {})
|
|
52
|
-
] }),
|
|
53
|
-
/* @__PURE__ */ jsx("main", { className: `flex-1 overflow-y-auto p-page ${contentClassName}`, children }),
|
|
54
|
-
footer && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
55
|
-
/* @__PURE__ */ jsx(Separator, {}),
|
|
56
|
-
/* @__PURE__ */ jsx("div", { className: "px-page py-4", children: footer })
|
|
57
|
-
] })
|
|
58
|
-
] });
|
|
59
|
-
}
|
|
60
|
-
function StandardPageContainer(props) {
|
|
61
|
-
return /* @__PURE__ */ jsx(PageContainer, { ...props, variant: "standard" });
|
|
62
|
-
}
|
|
63
|
-
function SplitPageContainer(props) {
|
|
64
|
-
return /* @__PURE__ */ jsx(PageContainer, { ...props, variant: "split" });
|
|
65
|
-
}
|
|
66
|
-
function FullWidthPageContainer(props) {
|
|
67
|
-
return /* @__PURE__ */ jsx(PageContainer, { ...props, variant: "full" });
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
export { FullWidthPageContainer, PageContainer, SplitPageContainer, StandardPageContainer };
|
|
71
|
-
//# sourceMappingURL=chunk-O25D7DCP.js.map
|
|
72
|
-
//# sourceMappingURL=chunk-O25D7DCP.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/PageContainer.tsx"],"names":[],"mappings":"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","file":"chunk-O25D7DCP.js","sourcesContent":["import { ReactNode } from 'react';\nimport { Separator } from '@omnifyjp/ui-components/components/separator';\n\nexport interface PageContainerProps {\n /**\n * Page title\n */\n title?: string;\n\n /**\n * Subtitle or description below title\n */\n subtitle?: string;\n\n /**\n * Extra content (buttons, actions) displayed on the right side of header\n */\n extra?: ReactNode;\n\n /**\n * Main page content\n */\n children: ReactNode;\n\n /**\n * Footer content displayed at the bottom\n */\n footer?: ReactNode;\n\n /**\n * Sidebar content displayed on left or right\n */\n sidebar?: ReactNode;\n\n /**\n * Sidebar position\n * @default 'right'\n */\n sidebarPosition?: 'left' | 'right';\n\n /**\n * Sidebar width\n * @default 'w-80'\n */\n sidebarWidth?: string;\n\n /**\n * Layout variant\n * - 'standard': Default padded layout with header\n * - 'full': Full width, no padding (for boards, gantt)\n * - 'split': Layout with sidebar inside page\n * @default 'standard'\n */\n variant?: 'standard' | 'full' | 'split';\n\n /**\n * Custom container className\n */\n className?: string;\n\n /**\n * Custom content className\n */\n contentClassName?: string;\n\n /**\n * Show separator below header\n * @default true for standard variant\n */\n showHeaderSeparator?: boolean;\n}\n\n/**\n * PageContainer - Flexible page layout component\n *\n * @example\n * // Standard layout with title and actions\n * <PageContainer\n * title=\"Dashboard\"\n * subtitle=\"Overview of all projects\"\n * extra={<Button>Create</Button>}\n * >\n * <div>Content here</div>\n * </PageContainer>\n *\n * @example\n * // Split layout with right sidebar\n * <PageContainer\n * title=\"Task Detail\"\n * variant=\"split\"\n * sidebar={<CommentSection />}\n * sidebarPosition=\"right\"\n * >\n * <div>Main content</div>\n * </PageContainer>\n *\n * @example\n * // Full width layout (no padding)\n * <PageContainer variant=\"full\">\n * <KanbanBoard />\n * </PageContainer>\n */\nexport function PageContainer({\n title,\n subtitle,\n extra,\n children,\n footer,\n sidebar,\n sidebarPosition = 'right',\n sidebarWidth = 'w-80',\n variant = 'standard',\n className = '',\n contentClassName = '',\n showHeaderSeparator = true,\n}: PageContainerProps) {\n // Full width variant - no padding, no header\n if (variant === 'full') {\n return (\n <div className={`h-full flex flex-col ${className}`}>\n {children}\n {footer && <div className=\"border-t border-border\">{footer}</div>}\n </div>\n );\n }\n\n // Split variant - with sidebar\n if (variant === 'split') {\n return (\n <div className={`h-full flex flex-col ${className}`}>\n {/* Header */}\n {(title || extra) && (\n <div className=\"px-page py-4 border-b border-border\">\n <div className=\"flex items-start justify-between gap-4\">\n <div className=\"flex-1 min-w-0\">\n {title && <h1 className=\"text-page-title font-semibold mb-2\">{title}</h1>}\n {subtitle && <p className=\"text-sm text-muted-foreground\">{subtitle}</p>}\n </div>\n {extra && <div className=\"flex-shrink-0\">{extra}</div>}\n </div>\n </div>\n )}\n\n {/* Content with sidebar */}\n <div className=\"flex-1 flex overflow-hidden\">\n {sidebar && sidebarPosition === 'left' && (\n <aside className={`${sidebarWidth} border-r border-border overflow-y-auto flex-shrink-0`}>\n {sidebar}\n </aside>\n )}\n\n <main className={`flex-1 overflow-y-auto ${contentClassName}`}>\n {children}\n </main>\n\n {sidebar && sidebarPosition === 'right' && (\n <aside className={`${sidebarWidth} border-l border-border overflow-y-auto flex-shrink-0`}>\n {sidebar}\n </aside>\n )}\n </div>\n\n {footer && (\n <div className=\"border-t border-border\">\n {footer}\n </div>\n )}\n </div>\n );\n }\n\n // Standard variant - default padded layout\n return (\n <div className={`h-full flex flex-col ${className}`}>\n {/* Header */}\n {(title || extra) && (\n <>\n <div className=\"px-page py-4\">\n <div className=\"flex items-start justify-between gap-4\">\n <div className=\"flex-1 min-w-0\">\n {title && <h1 className=\"text-page-title font-semibold mb-2\">{title}</h1>}\n {subtitle && <p className=\"text-sm text-muted-foreground\">{subtitle}</p>}\n </div>\n {extra && <div className=\"flex-shrink-0\">{extra}</div>}\n </div>\n </div>\n {showHeaderSeparator && <Separator />}\n </>\n )}\n\n {/* Content */}\n <main className={`flex-1 overflow-y-auto p-page ${contentClassName}`}>\n {children}\n </main>\n\n {/* Footer */}\n {footer && (\n <>\n <Separator />\n <div className=\"px-page py-4\">\n {footer}\n </div>\n </>\n )}\n </div>\n );\n}\n\n/**\n * Convenience wrapper for standard layout\n */\nexport function StandardPageContainer(props: Omit<PageContainerProps, 'variant'>) {\n return <PageContainer {...props} variant=\"standard\" />;\n}\n\n/**\n * Convenience wrapper for split layout with sidebar\n */\nexport function SplitPageContainer(props: Omit<PageContainerProps, 'variant'>) {\n return <PageContainer {...props} variant=\"split\" />;\n}\n\n/**\n * Convenience wrapper for full width layout\n */\nexport function FullWidthPageContainer(props: Omit<PageContainerProps, 'variant' | 'title' | 'subtitle' | 'extra'>) {\n return <PageContainer {...props} variant=\"full\" />;\n}\n"]}
|
package/dist/chunk-O2ADW2GC.js
DELETED
|
@@ -1,224 +0,0 @@
|
|
|
1
|
-
import { OrganizationSelector } from './chunk-2GN4WIOV.js';
|
|
2
|
-
import { useOrganization } from './chunk-ITXOZ4IR.js';
|
|
3
|
-
import { useState } from 'react';
|
|
4
|
-
import { useLocation, useParams, Link } from 'react-router';
|
|
5
|
-
import { useTranslation } from 'react-i18next';
|
|
6
|
-
import { Button } from '@omnifyjp/ui-components/components/button';
|
|
7
|
-
import { Separator } from '@omnifyjp/ui-components/components/separator';
|
|
8
|
-
import { Popover, PopoverTrigger, PopoverContent } from '@omnifyjp/ui-components/components/popover';
|
|
9
|
-
import { TooltipProvider, Tooltip, TooltipTrigger, TooltipContent } from '@omnifyjp/ui-components/components/tooltip';
|
|
10
|
-
import { ChevronsUpDown, Search, ChevronsRight, ChevronsLeft, ChevronRight } from 'lucide-react';
|
|
11
|
-
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
12
|
-
|
|
13
|
-
function Sidebar({ config }) {
|
|
14
|
-
const location = useLocation();
|
|
15
|
-
const params = useParams();
|
|
16
|
-
const [collapsed, setCollapsed] = useState(false);
|
|
17
|
-
const [contextSwitcherOpen, setContextSwitcherOpen] = useState(false);
|
|
18
|
-
const [contextSearch, setContextSearch] = useState("");
|
|
19
|
-
const [expandedGroups, setExpandedGroups] = useState(/* @__PURE__ */ new Set());
|
|
20
|
-
const { t } = useTranslation("shell");
|
|
21
|
-
const { selectedOrganization, selectedBranch } = useOrganization();
|
|
22
|
-
const { app, sidebar } = config;
|
|
23
|
-
const contextParamValue = sidebar.contextMenu ? params[sidebar.contextMenu.paramName] : void 0;
|
|
24
|
-
const isInContext = !!contextParamValue;
|
|
25
|
-
const isActive = (path) => {
|
|
26
|
-
return location.pathname === path || location.pathname.startsWith(path + "/");
|
|
27
|
-
};
|
|
28
|
-
const renderMenuItem = (item, active) => {
|
|
29
|
-
const Icon = item.icon;
|
|
30
|
-
const path = item.path;
|
|
31
|
-
const content = /* @__PURE__ */ jsxs(
|
|
32
|
-
Link,
|
|
33
|
-
{
|
|
34
|
-
to: path,
|
|
35
|
-
className: `flex items-center ${collapsed ? "justify-center" : "gap-2"} px-3 py-2 rounded-md text-sm transition-colors ${active ? "bg-sidebar-primary/10 text-sidebar-primary font-medium" : "text-sidebar-foreground hover:bg-sidebar-accent"}`,
|
|
36
|
-
children: [
|
|
37
|
-
/* @__PURE__ */ jsx(Icon, { className: "w-4 h-4 flex-shrink-0" }),
|
|
38
|
-
!collapsed && /* @__PURE__ */ jsx("span", { children: item.label }),
|
|
39
|
-
!collapsed && item.badge !== void 0 && item.badge > 0 && /* @__PURE__ */ jsx("span", { className: "ml-auto text-xs bg-muted text-muted-foreground px-1.5 py-0.5 rounded-full", children: item.badge })
|
|
40
|
-
]
|
|
41
|
-
}
|
|
42
|
-
);
|
|
43
|
-
if (collapsed) {
|
|
44
|
-
return /* @__PURE__ */ jsx(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ jsxs(Tooltip, { children: [
|
|
45
|
-
/* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: content }),
|
|
46
|
-
/* @__PURE__ */ jsx(TooltipContent, { side: "right", className: "font-medium", children: item.label })
|
|
47
|
-
] }) }, path);
|
|
48
|
-
}
|
|
49
|
-
return /* @__PURE__ */ jsx("div", { children: content }, path);
|
|
50
|
-
};
|
|
51
|
-
const isGroupActive = (item) => {
|
|
52
|
-
if (item.children) {
|
|
53
|
-
return item.children.some((child) => child.path ? isActive(child.path) : false);
|
|
54
|
-
}
|
|
55
|
-
return item.path ? isActive(item.path) : false;
|
|
56
|
-
};
|
|
57
|
-
const toggleGroup = (label) => {
|
|
58
|
-
setExpandedGroups((prev) => {
|
|
59
|
-
const next = new Set(prev);
|
|
60
|
-
if (next.has(label)) {
|
|
61
|
-
next.delete(label);
|
|
62
|
-
} else {
|
|
63
|
-
next.add(label);
|
|
64
|
-
}
|
|
65
|
-
return next;
|
|
66
|
-
});
|
|
67
|
-
};
|
|
68
|
-
const renderMenuItemOrGroup = (item) => {
|
|
69
|
-
if (!item.children) {
|
|
70
|
-
return renderMenuItem(item, item.path ? isActive(item.path) : false);
|
|
71
|
-
}
|
|
72
|
-
const groupActive = isGroupActive(item);
|
|
73
|
-
const isExpanded = expandedGroups.has(item.label) || groupActive;
|
|
74
|
-
const Icon = item.icon;
|
|
75
|
-
if (collapsed) {
|
|
76
|
-
return /* @__PURE__ */ jsx(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ jsxs(Tooltip, { children: [
|
|
77
|
-
/* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
|
|
78
|
-
"button",
|
|
79
|
-
{
|
|
80
|
-
onClick: () => toggleGroup(item.label),
|
|
81
|
-
className: `flex items-center justify-center w-full px-3 py-2 rounded-md text-sm transition-colors ${groupActive ? "bg-sidebar-primary/10 text-sidebar-primary font-medium" : "text-sidebar-foreground hover:bg-sidebar-accent"}`,
|
|
82
|
-
children: /* @__PURE__ */ jsx(Icon, { className: "w-4 h-4 flex-shrink-0" })
|
|
83
|
-
}
|
|
84
|
-
) }),
|
|
85
|
-
/* @__PURE__ */ jsx(TooltipContent, { side: "right", className: "font-medium", children: item.label })
|
|
86
|
-
] }) }, item.label);
|
|
87
|
-
}
|
|
88
|
-
return /* @__PURE__ */ jsxs("div", { children: [
|
|
89
|
-
/* @__PURE__ */ jsxs(
|
|
90
|
-
"button",
|
|
91
|
-
{
|
|
92
|
-
onClick: () => toggleGroup(item.label),
|
|
93
|
-
className: `flex items-center gap-2 w-full px-3 py-2 rounded-md text-sm transition-colors ${groupActive ? "text-sidebar-primary font-medium" : "text-sidebar-foreground hover:bg-sidebar-accent"}`,
|
|
94
|
-
children: [
|
|
95
|
-
/* @__PURE__ */ jsx(Icon, { className: "w-4 h-4 flex-shrink-0" }),
|
|
96
|
-
/* @__PURE__ */ jsx("span", { children: item.label }),
|
|
97
|
-
/* @__PURE__ */ jsx(ChevronRight, { className: `w-3.5 h-3.5 ml-auto text-muted-foreground transition-transform duration-200 ${isExpanded ? "rotate-90" : ""}` })
|
|
98
|
-
]
|
|
99
|
-
}
|
|
100
|
-
),
|
|
101
|
-
isExpanded && /* @__PURE__ */ jsx("div", { className: "ml-4 pl-2 border-l border-sidebar-border space-y-0.5 mt-0.5", children: item.children.map((child) => renderMenuItem(child, child.path ? isActive(child.path) : false)) })
|
|
102
|
-
] }, item.label);
|
|
103
|
-
};
|
|
104
|
-
const contextMenuItems = isInContext && sidebar.contextMenu ? sidebar.contextMenu.getItems(contextParamValue) : [];
|
|
105
|
-
const contextHeader = isInContext && sidebar.contextMenu?.getHeader ? sidebar.contextMenu.getHeader(contextParamValue) : null;
|
|
106
|
-
const footerItems = isInContext && sidebar.contextMenu?.getFooterItems ? sidebar.contextMenu.getFooterItems() : [];
|
|
107
|
-
return /* @__PURE__ */ jsxs("aside", { className: `${collapsed ? "w-16" : "w-64"} bg-sidebar border-r border-sidebar-border flex flex-col transition-all duration-300`, children: [
|
|
108
|
-
/* @__PURE__ */ jsx("div", { className: `h-header border-b border-sidebar-border flex items-center ${collapsed ? "justify-center" : "px-4"} transition-all duration-300`, children: /* @__PURE__ */ jsxs(Link, { to: "/", className: "flex items-center gap-2", children: [
|
|
109
|
-
/* @__PURE__ */ jsx("div", { className: `w-8 h-8 rounded-lg flex items-center justify-center flex-shrink-0 ${app.logo.color ? "" : "bg-primary"}`, style: app.logo.color ? { backgroundColor: app.logo.color } : void 0, children: /* @__PURE__ */ jsx(app.logo.icon, { className: "w-4 h-4 text-white" }) }),
|
|
110
|
-
!collapsed && /* @__PURE__ */ jsx("span", { className: "font-bold text-sm", children: app.logo.text })
|
|
111
|
-
] }) }),
|
|
112
|
-
/* @__PURE__ */ jsx("nav", { className: "flex-1 px-3 py-3 overflow-y-auto", children: isInContext ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
113
|
-
contextHeader && !collapsed ? /* @__PURE__ */ jsxs(Popover, { open: contextSwitcherOpen, onOpenChange: (open) => {
|
|
114
|
-
setContextSwitcherOpen(open);
|
|
115
|
-
if (!open) setContextSearch("");
|
|
116
|
-
}, children: [
|
|
117
|
-
/* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs("button", { className: "w-full mb-3 px-3 py-2 flex items-center gap-2 rounded-md hover:bg-sidebar-accent transition-colors text-left", children: [
|
|
118
|
-
contextHeader,
|
|
119
|
-
/* @__PURE__ */ jsx(ChevronsUpDown, { className: "w-3.5 h-3.5 text-muted-foreground flex-shrink-0" })
|
|
120
|
-
] }) }),
|
|
121
|
-
/* @__PURE__ */ jsx(PopoverContent, { side: "right", align: "start", className: "w-72 p-0", children: /* @__PURE__ */ jsx("div", { className: "p-2 border-b", children: /* @__PURE__ */ jsxs("div", { className: "relative", children: [
|
|
122
|
-
/* @__PURE__ */ jsx(Search, { className: "absolute left-2.5 top-1/2 -translate-y-1/2 w-3.5 h-3.5 text-muted-foreground" }),
|
|
123
|
-
/* @__PURE__ */ jsx(
|
|
124
|
-
"input",
|
|
125
|
-
{
|
|
126
|
-
className: "w-full pl-8 pr-3 py-1.5 text-sm border rounded-md outline-none focus:ring-1 focus:ring-ring bg-background",
|
|
127
|
-
placeholder: t("sidebar.searchProject"),
|
|
128
|
-
value: contextSearch,
|
|
129
|
-
onChange: (e) => setContextSearch(e.target.value),
|
|
130
|
-
autoFocus: true
|
|
131
|
-
}
|
|
132
|
-
)
|
|
133
|
-
] }) }) })
|
|
134
|
-
] }) : contextHeader && collapsed ? /* @__PURE__ */ jsx("div", { className: "mb-3 w-full flex justify-center py-1 rounded-md hover:bg-sidebar-accent transition-colors", children: contextHeader }) : null,
|
|
135
|
-
!collapsed && contextHeader && /* @__PURE__ */ jsx(Separator, { className: "my-3" }),
|
|
136
|
-
/* @__PURE__ */ jsx("div", { className: "space-y-1", children: contextMenuItems.map((item) => {
|
|
137
|
-
const active = item.path ? isActive(item.path) : false;
|
|
138
|
-
return renderMenuItem(item, active);
|
|
139
|
-
}) }),
|
|
140
|
-
footerItems.length > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
141
|
-
!collapsed && /* @__PURE__ */ jsx(Separator, { className: "my-3" }),
|
|
142
|
-
/* @__PURE__ */ jsx("div", { className: "space-y-1", children: footerItems.map((item) => renderMenuItem(item, false)) })
|
|
143
|
-
] })
|
|
144
|
-
] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
145
|
-
/* @__PURE__ */ jsx("div", { className: "space-y-1", children: sidebar.menuItems.map((item) => renderMenuItemOrGroup(item)) }),
|
|
146
|
-
sidebar.recentItems && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
147
|
-
!collapsed && /* @__PURE__ */ jsx(Separator, { className: "my-3" }),
|
|
148
|
-
!collapsed ? /* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
|
|
149
|
-
/* @__PURE__ */ jsx("h3", { className: "px-3 py-1 text-xs font-medium text-muted-foreground uppercase tracking-wider", children: sidebar.recentItems.title }),
|
|
150
|
-
/* @__PURE__ */ jsx("div", { className: "space-y-0.5", children: sidebar.recentItems.items.map((item) => /* @__PURE__ */ jsxs(
|
|
151
|
-
Link,
|
|
152
|
-
{
|
|
153
|
-
to: item.path,
|
|
154
|
-
className: "flex items-center gap-2 px-3 py-2 rounded-md text-sm text-sidebar-foreground hover:bg-sidebar-accent",
|
|
155
|
-
children: [
|
|
156
|
-
item.color && /* @__PURE__ */ jsx(
|
|
157
|
-
"div",
|
|
158
|
-
{
|
|
159
|
-
className: "w-5 h-5 rounded flex items-center justify-center text-white text-[9px] font-bold flex-shrink-0",
|
|
160
|
-
style: { backgroundColor: item.color },
|
|
161
|
-
children: item.badge
|
|
162
|
-
}
|
|
163
|
-
),
|
|
164
|
-
/* @__PURE__ */ jsx("span", { className: "truncate", children: item.label })
|
|
165
|
-
]
|
|
166
|
-
},
|
|
167
|
-
item.path
|
|
168
|
-
)) })
|
|
169
|
-
] }) : /* @__PURE__ */ jsx("div", { className: "space-y-0.5 mt-3", children: sidebar.recentItems.items.map((item) => /* @__PURE__ */ jsx(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ jsxs(Tooltip, { children: [
|
|
170
|
-
/* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
|
|
171
|
-
Link,
|
|
172
|
-
{
|
|
173
|
-
to: item.path,
|
|
174
|
-
className: "flex justify-center px-3 py-2 rounded-md text-sidebar-foreground hover:bg-sidebar-accent",
|
|
175
|
-
children: item.color && /* @__PURE__ */ jsx(
|
|
176
|
-
"div",
|
|
177
|
-
{
|
|
178
|
-
className: "w-5 h-5 rounded flex items-center justify-center text-white text-[9px] font-bold",
|
|
179
|
-
style: { backgroundColor: item.color },
|
|
180
|
-
children: item.badge
|
|
181
|
-
}
|
|
182
|
-
)
|
|
183
|
-
}
|
|
184
|
-
) }),
|
|
185
|
-
/* @__PURE__ */ jsx(TooltipContent, { side: "right", children: /* @__PURE__ */ jsx("p", { className: "font-medium text-sm", children: item.label }) })
|
|
186
|
-
] }) }, item.path)) })
|
|
187
|
-
] })
|
|
188
|
-
] }) }),
|
|
189
|
-
/* @__PURE__ */ jsx("div", { className: "px-3 py-2 border-t border-sidebar-border", children: /* @__PURE__ */ jsx(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ jsxs(Tooltip, { children: [
|
|
190
|
-
/* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
|
|
191
|
-
Button,
|
|
192
|
-
{
|
|
193
|
-
variant: "ghost",
|
|
194
|
-
size: "sm",
|
|
195
|
-
onClick: () => setCollapsed(!collapsed),
|
|
196
|
-
className: `w-full h-8 ${collapsed ? "px-0 justify-center" : "justify-start"} hover:bg-sidebar-accent`,
|
|
197
|
-
children: collapsed ? /* @__PURE__ */ jsx(ChevronsRight, { className: "w-3.5 h-3.5 text-muted-foreground" }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
198
|
-
/* @__PURE__ */ jsx(ChevronsLeft, { className: "w-3.5 h-3.5 text-muted-foreground mr-2" }),
|
|
199
|
-
/* @__PURE__ */ jsx("span", { className: "text-xs text-muted-foreground", children: t("sidebar.collapse") })
|
|
200
|
-
] })
|
|
201
|
-
}
|
|
202
|
-
) }),
|
|
203
|
-
/* @__PURE__ */ jsx(TooltipContent, { side: "right", children: collapsed ? t("sidebar.expandSidebar") : t("sidebar.collapseSidebar") })
|
|
204
|
-
] }) }) }),
|
|
205
|
-
!collapsed ? /* @__PURE__ */ jsx("div", { className: "border-t border-sidebar-border", children: /* @__PURE__ */ jsx(OrganizationSelector, { variant: "sidebar" }) }) : selectedOrganization && /* @__PURE__ */ jsx(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ jsxs(Tooltip, { children: [
|
|
206
|
-
/* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx("div", { className: "px-3 py-3 border-t border-sidebar-border flex justify-center cursor-pointer hover:bg-sidebar-accent transition-colors", children: /* @__PURE__ */ jsx(
|
|
207
|
-
"div",
|
|
208
|
-
{
|
|
209
|
-
className: "w-8 h-8 rounded-lg flex items-center justify-center text-white font-bold text-xs",
|
|
210
|
-
style: { backgroundColor: selectedOrganization.color },
|
|
211
|
-
children: selectedOrganization.shortName
|
|
212
|
-
}
|
|
213
|
-
) }) }),
|
|
214
|
-
/* @__PURE__ */ jsxs(TooltipContent, { side: "right", children: [
|
|
215
|
-
/* @__PURE__ */ jsx("p", { className: "font-semibold text-sm", children: selectedOrganization.name }),
|
|
216
|
-
selectedBranch && /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: selectedBranch.name })
|
|
217
|
-
] })
|
|
218
|
-
] }) })
|
|
219
|
-
] });
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
export { Sidebar };
|
|
223
|
-
//# sourceMappingURL=chunk-O2ADW2GC.js.map
|
|
224
|
-
//# sourceMappingURL=chunk-O2ADW2GC.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/Sidebar.tsx"],"names":[],"mappings":"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","file":"chunk-O2ADW2GC.js","sourcesContent":["import { useState } from 'react';\nimport { useLocation, useParams, Link } from 'react-router';\nimport { useTranslation } from 'react-i18next';\nimport { Button } from '@omnifyjp/ui-components/components/button';\nimport { Separator } from '@omnifyjp/ui-components/components/separator';\nimport { Popover, PopoverContent, PopoverTrigger } from '@omnifyjp/ui-components/components/popover';\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from '@omnifyjp/ui-components/components/tooltip';\nimport {\n ChevronsLeft,\n ChevronsRight,\n ChevronsUpDown,\n ChevronRight,\n Search,\n} from 'lucide-react';\nimport { useOrganization } from '../contexts/OrganizationContext';\nimport { OrganizationSelector } from './OrganizationSelector';\nimport type { ShellConfig, SidebarMenuItem } from '../types';\n\ninterface SidebarProps {\n config: ShellConfig;\n}\n\nexport function Sidebar({ config }: SidebarProps) {\n const location = useLocation();\n const params = useParams();\n const [collapsed, setCollapsed] = useState(false);\n const [contextSwitcherOpen, setContextSwitcherOpen] = useState(false);\n const [contextSearch, setContextSearch] = useState('');\n const [expandedGroups, setExpandedGroups] = useState<Set<string>>(new Set());\n const { t } = useTranslation('shell');\n const { selectedOrganization, selectedBranch } = useOrganization();\n\n const { app, sidebar } = config;\n\n // Determine if we're in context mode (e.g., inside a project)\n const contextParamValue = sidebar.contextMenu\n ? params[sidebar.contextMenu.paramName] as string | undefined\n : undefined;\n const isInContext = !!contextParamValue;\n\n const isActive = (path: string) => {\n return location.pathname === path || location.pathname.startsWith(path + '/');\n };\n\n const renderMenuItem = (item: SidebarMenuItem, active: boolean) => {\n const Icon = item.icon;\n const path = item.path!;\n const content = (\n <Link\n to={path}\n className={`flex items-center ${collapsed ? 'justify-center' : 'gap-2'} px-3 py-2 rounded-md text-sm transition-colors ${\n active\n ? 'bg-sidebar-primary/10 text-sidebar-primary font-medium'\n : 'text-sidebar-foreground hover:bg-sidebar-accent'\n }`}\n >\n <Icon className=\"w-4 h-4 flex-shrink-0\" />\n {!collapsed && <span>{item.label}</span>}\n {!collapsed && item.badge !== undefined && item.badge > 0 && (\n <span className=\"ml-auto text-xs bg-muted text-muted-foreground px-1.5 py-0.5 rounded-full\">\n {item.badge}\n </span>\n )}\n </Link>\n );\n\n if (collapsed) {\n return (\n <TooltipProvider key={path} delayDuration={0}>\n <Tooltip>\n <TooltipTrigger asChild>\n {content}\n </TooltipTrigger>\n <TooltipContent side=\"right\" className=\"font-medium\">\n {item.label}\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n }\n\n return <div key={path}>{content}</div>;\n };\n\n const isGroupActive = (item: SidebarMenuItem): boolean => {\n if (item.children) {\n return item.children.some(child => child.path ? isActive(child.path) : false);\n }\n return item.path ? isActive(item.path) : false;\n };\n\n const toggleGroup = (label: string) => {\n setExpandedGroups(prev => {\n const next = new Set(prev);\n if (next.has(label)) {\n next.delete(label);\n } else {\n next.add(label);\n }\n return next;\n });\n };\n\n const renderMenuItemOrGroup = (item: SidebarMenuItem) => {\n if (!item.children) {\n return renderMenuItem(item, item.path ? isActive(item.path) : false);\n }\n\n const groupActive = isGroupActive(item);\n const isExpanded = expandedGroups.has(item.label) || groupActive;\n const Icon = item.icon;\n\n if (collapsed) {\n return (\n <TooltipProvider key={item.label} delayDuration={0}>\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n onClick={() => toggleGroup(item.label)}\n className={`flex items-center justify-center w-full px-3 py-2 rounded-md text-sm transition-colors ${\n groupActive\n ? 'bg-sidebar-primary/10 text-sidebar-primary font-medium'\n : 'text-sidebar-foreground hover:bg-sidebar-accent'\n }`}\n >\n <Icon className=\"w-4 h-4 flex-shrink-0\" />\n </button>\n </TooltipTrigger>\n <TooltipContent side=\"right\" className=\"font-medium\">\n {item.label}\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n }\n\n return (\n <div key={item.label}>\n <button\n onClick={() => toggleGroup(item.label)}\n className={`flex items-center gap-2 w-full px-3 py-2 rounded-md text-sm transition-colors ${\n groupActive\n ? 'text-sidebar-primary font-medium'\n : 'text-sidebar-foreground hover:bg-sidebar-accent'\n }`}\n >\n <Icon className=\"w-4 h-4 flex-shrink-0\" />\n <span>{item.label}</span>\n <ChevronRight className={`w-3.5 h-3.5 ml-auto text-muted-foreground transition-transform duration-200 ${isExpanded ? 'rotate-90' : ''}`} />\n </button>\n {isExpanded && (\n <div className=\"ml-4 pl-2 border-l border-sidebar-border space-y-0.5 mt-0.5\">\n {item.children.map(child => renderMenuItem(child, child.path ? isActive(child.path) : false))}\n </div>\n )}\n </div>\n );\n };\n\n // Get context menu items if in context mode\n const contextMenuItems = isInContext && sidebar.contextMenu\n ? sidebar.contextMenu.getItems(contextParamValue!)\n : [];\n\n const contextHeader = isInContext && sidebar.contextMenu?.getHeader\n ? sidebar.contextMenu.getHeader(contextParamValue!)\n : null;\n\n const footerItems = isInContext && sidebar.contextMenu?.getFooterItems\n ? sidebar.contextMenu.getFooterItems()\n : [];\n\n return (\n <aside className={`${collapsed ? 'w-16' : 'w-64'} bg-sidebar border-r border-sidebar-border flex flex-col transition-all duration-300`}>\n {/* Logo */}\n <div className={`h-header border-b border-sidebar-border flex items-center ${collapsed ? 'justify-center' : 'px-4'} transition-all duration-300`}>\n <Link to=\"/\" className=\"flex items-center gap-2\">\n <div className={`w-8 h-8 rounded-lg flex items-center justify-center flex-shrink-0 ${app.logo.color ? '' : 'bg-primary'}`} style={app.logo.color ? { backgroundColor: app.logo.color } : undefined}>\n <app.logo.icon className=\"w-4 h-4 text-white\" />\n </div>\n {!collapsed && <span className=\"font-bold text-sm\">{app.logo.text}</span>}\n </Link>\n </div>\n\n {/* Menu */}\n <nav className=\"flex-1 px-3 py-3 overflow-y-auto\">\n {isInContext ? (\n <>\n {/* Context Switcher (e.g., project switcher) */}\n {contextHeader && !collapsed ? (\n <Popover open={contextSwitcherOpen} onOpenChange={(open) => { setContextSwitcherOpen(open); if (!open) setContextSearch(''); }}>\n <PopoverTrigger asChild>\n <button className=\"w-full mb-3 px-3 py-2 flex items-center gap-2 rounded-md hover:bg-sidebar-accent transition-colors text-left\">\n {contextHeader}\n <ChevronsUpDown className=\"w-3.5 h-3.5 text-muted-foreground flex-shrink-0\" />\n </button>\n </PopoverTrigger>\n <PopoverContent side=\"right\" align=\"start\" className=\"w-72 p-0\">\n <div className=\"p-2 border-b\">\n <div className=\"relative\">\n <Search className=\"absolute left-2.5 top-1/2 -translate-y-1/2 w-3.5 h-3.5 text-muted-foreground\" />\n <input\n className=\"w-full pl-8 pr-3 py-1.5 text-sm border rounded-md outline-none focus:ring-1 focus:ring-ring bg-background\"\n placeholder={t('sidebar.searchProject')}\n value={contextSearch}\n onChange={(e) => setContextSearch(e.target.value)}\n autoFocus\n />\n </div>\n </div>\n </PopoverContent>\n </Popover>\n ) : contextHeader && collapsed ? (\n <div className=\"mb-3 w-full flex justify-center py-1 rounded-md hover:bg-sidebar-accent transition-colors\">\n {contextHeader}\n </div>\n ) : null}\n\n {!collapsed && contextHeader && <Separator className=\"my-3\" />}\n\n {/* Context Menu Items */}\n <div className=\"space-y-1\">\n {contextMenuItems.map((item) => {\n const active = item.path ? isActive(item.path) : false;\n return renderMenuItem(item, active);\n })}\n </div>\n\n {footerItems.length > 0 && (\n <>\n {!collapsed && <Separator className=\"my-3\" />}\n <div className=\"space-y-1\">\n {footerItems.map((item) => renderMenuItem(item, false))}\n </div>\n </>\n )}\n </>\n ) : (\n <>\n {/* Main Menu Items */}\n <div className=\"space-y-1\">\n {sidebar.menuItems.map((item) => renderMenuItemOrGroup(item))}\n </div>\n\n {sidebar.recentItems && (\n <>\n {!collapsed && <Separator className=\"my-3\" />}\n\n {!collapsed ? (\n <div className=\"space-y-1\">\n <h3 className=\"px-3 py-1 text-xs font-medium text-muted-foreground uppercase tracking-wider\">\n {sidebar.recentItems.title}\n </h3>\n <div className=\"space-y-0.5\">\n {sidebar.recentItems.items.map((item) => (\n <Link\n key={item.path}\n to={item.path}\n className=\"flex items-center gap-2 px-3 py-2 rounded-md text-sm text-sidebar-foreground hover:bg-sidebar-accent\"\n >\n {item.color && (\n <div\n className=\"w-5 h-5 rounded flex items-center justify-center text-white text-[9px] font-bold flex-shrink-0\"\n style={{ backgroundColor: item.color }}\n >\n {item.badge}\n </div>\n )}\n <span className=\"truncate\">{item.label}</span>\n </Link>\n ))}\n </div>\n </div>\n ) : (\n <div className=\"space-y-0.5 mt-3\">\n {sidebar.recentItems.items.map((item) => (\n <TooltipProvider key={item.path} delayDuration={0}>\n <Tooltip>\n <TooltipTrigger asChild>\n <Link\n to={item.path}\n className=\"flex justify-center px-3 py-2 rounded-md text-sidebar-foreground hover:bg-sidebar-accent\"\n >\n {item.color && (\n <div\n className=\"w-5 h-5 rounded flex items-center justify-center text-white text-[9px] font-bold\"\n style={{ backgroundColor: item.color }}\n >\n {item.badge}\n </div>\n )}\n </Link>\n </TooltipTrigger>\n <TooltipContent side=\"right\">\n <p className=\"font-medium text-sm\">{item.label}</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n ))}\n </div>\n )}\n </>\n )}\n </>\n )}\n </nav>\n\n {/* Collapse Toggle Button */}\n <div className=\"px-3 py-2 border-t border-sidebar-border\">\n <TooltipProvider delayDuration={0}>\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => setCollapsed(!collapsed)}\n className={`w-full h-8 ${collapsed ? 'px-0 justify-center' : 'justify-start'} hover:bg-sidebar-accent`}\n >\n {collapsed ? (\n <ChevronsRight className=\"w-3.5 h-3.5 text-muted-foreground\" />\n ) : (\n <>\n <ChevronsLeft className=\"w-3.5 h-3.5 text-muted-foreground mr-2\" />\n <span className=\"text-xs text-muted-foreground\">{t('sidebar.collapse')}</span>\n </>\n )}\n </Button>\n </TooltipTrigger>\n <TooltipContent side=\"right\">\n {collapsed ? t('sidebar.expandSidebar') : t('sidebar.collapseSidebar')}\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n </div>\n\n {/* Organization & Branch selector */}\n {!collapsed ? (\n <div className=\"border-t border-sidebar-border\">\n <OrganizationSelector variant=\"sidebar\" />\n </div>\n ) : (\n selectedOrganization && (\n <TooltipProvider delayDuration={0}>\n <Tooltip>\n <TooltipTrigger asChild>\n <div className=\"px-3 py-3 border-t border-sidebar-border flex justify-center cursor-pointer hover:bg-sidebar-accent transition-colors\">\n <div\n className=\"w-8 h-8 rounded-lg flex items-center justify-center text-white font-bold text-xs\"\n style={{ backgroundColor: selectedOrganization.color }}\n >\n {selectedOrganization.shortName}\n </div>\n </div>\n </TooltipTrigger>\n <TooltipContent side=\"right\">\n <p className=\"font-semibold text-sm\">{selectedOrganization.name}</p>\n {selectedBranch && (\n <p className=\"text-xs text-muted-foreground\">{selectedBranch.name}</p>\n )}\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n )\n )}\n </aside>\n );\n}\n"]}
|