@omnifyjp/ui 0.4.4 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +379 -133
- package/dist/chunk-2ZIFL2X3.js +189 -0
- package/dist/chunk-2ZIFL2X3.js.map +1 -0
- package/dist/chunk-5BL4VFRJ.js +57 -0
- package/dist/chunk-5BL4VFRJ.js.map +1 -0
- package/dist/chunk-5D3OAVOZ.js +91 -0
- package/dist/chunk-5D3OAVOZ.js.map +1 -0
- package/dist/chunk-DTM76EJD.js +235 -0
- package/dist/chunk-DTM76EJD.js.map +1 -0
- package/dist/chunk-EJEVW4RO.js +49 -0
- package/dist/chunk-EJEVW4RO.js.map +1 -0
- package/dist/chunk-JXFBHSPN.js +37 -0
- package/dist/chunk-JXFBHSPN.js.map +1 -0
- package/dist/chunk-O25D7DCP.js +72 -0
- package/dist/chunk-O25D7DCP.js.map +1 -0
- package/dist/chunk-OY3PSPA5.js +661 -0
- package/dist/chunk-OY3PSPA5.js.map +1 -0
- package/dist/chunk-SHHZRZMM.js +83 -0
- package/dist/chunk-SHHZRZMM.js.map +1 -0
- package/dist/chunk-X57K24P3.js +224 -0
- package/dist/chunk-X57K24P3.js.map +1 -0
- package/dist/chunk-XDXGUPCR.js +123 -0
- package/dist/chunk-XDXGUPCR.js.map +1 -0
- package/dist/components/AppShell.d.ts +27 -0
- package/dist/components/AppShell.js +11 -0
- package/dist/components/AppShell.js.map +1 -0
- package/dist/components/Header.d.ts +11 -0
- package/dist/components/Header.js +6 -0
- package/dist/components/Header.js.map +1 -0
- package/dist/components/OrganizationSelector.d.ts +8 -0
- package/dist/components/OrganizationSelector.js +4 -0
- package/dist/components/OrganizationSelector.js.map +1 -0
- package/dist/components/OrganizationSetupModal.d.ts +5 -0
- package/dist/components/OrganizationSetupModal.js +4 -0
- package/dist/components/OrganizationSetupModal.js.map +1 -0
- package/dist/components/PageContainer.d.ts +105 -0
- package/dist/components/PageContainer.js +3 -0
- package/dist/components/PageContainer.js.map +1 -0
- package/dist/components/ServiceMenu.d.ts +11 -0
- package/dist/components/ServiceMenu.js +3 -0
- package/dist/components/ServiceMenu.js.map +1 -0
- package/dist/components/Sidebar.d.ts +11 -0
- package/dist/components/Sidebar.js +5 -0
- package/dist/components/Sidebar.js.map +1 -0
- package/dist/contexts/OrganizationContext.d.ts +26 -0
- package/dist/contexts/OrganizationContext.js +3 -0
- package/dist/contexts/OrganizationContext.js.map +1 -0
- package/dist/contexts/ThemeContext.d.ts +14 -0
- package/dist/contexts/ThemeContext.js +3 -0
- package/dist/contexts/ThemeContext.js.map +1 -0
- package/dist/hooks/useDateFormat.d.ts +28 -0
- package/dist/hooks/useDateFormat.js +4 -0
- package/dist/hooks/useDateFormat.js.map +1 -0
- package/dist/i18n.d.ts +38 -0
- package/dist/i18n.js +3 -0
- package/dist/i18n.js.map +1 -0
- package/dist/index.d.ts +13 -109
- package/dist/index.js +11 -70
- package/dist/types.d.ts +89 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/package.json +23 -70
- package/dist/chunk-2C2HRGM7.js +0 -51
- package/dist/chunk-2C2HRGM7.js.map +0 -1
- package/dist/chunk-2TUWDXAC.js +0 -196
- package/dist/chunk-2TUWDXAC.js.map +0 -1
- package/dist/chunk-34ARZSNP.js +0 -63
- package/dist/chunk-34ARZSNP.js.map +0 -1
- package/dist/chunk-35DNN46W.js +0 -13
- package/dist/chunk-35DNN46W.js.map +0 -1
- package/dist/chunk-35U6QG4P.js +0 -116
- package/dist/chunk-35U6QG4P.js.map +0 -1
- package/dist/chunk-36YYHIJU.js +0 -52
- package/dist/chunk-36YYHIJU.js.map +0 -1
- package/dist/chunk-3EOHW4QN.js +0 -35
- package/dist/chunk-3EOHW4QN.js.map +0 -1
- package/dist/chunk-3UPBCOS4.js +0 -39
- package/dist/chunk-3UPBCOS4.js.map +0 -1
- package/dist/chunk-3VU56V66.js +0 -41
- package/dist/chunk-3VU56V66.js.map +0 -1
- package/dist/chunk-55E7D2HR.js +0 -99
- package/dist/chunk-55E7D2HR.js.map +0 -1
- package/dist/chunk-67YUL2ZS.js +0 -53
- package/dist/chunk-67YUL2ZS.js.map +0 -1
- package/dist/chunk-6DIDQ4TB.js +0 -131
- package/dist/chunk-6DIDQ4TB.js.map +0 -1
- package/dist/chunk-6GWVQB3Q.js +0 -155
- package/dist/chunk-6GWVQB3Q.js.map +0 -1
- package/dist/chunk-75WZR6HF.js +0 -44
- package/dist/chunk-75WZR6HF.js.map +0 -1
- package/dist/chunk-7IRLBU2I.js +0 -114
- package/dist/chunk-7IRLBU2I.js.map +0 -1
- package/dist/chunk-7RMTPT6O.js +0 -99
- package/dist/chunk-7RMTPT6O.js.map +0 -1
- package/dist/chunk-7XH3MGBR.js +0 -128
- package/dist/chunk-7XH3MGBR.js.map +0 -1
- package/dist/chunk-A3BB5ZOC.js +0 -77
- package/dist/chunk-A3BB5ZOC.js.map +0 -1
- package/dist/chunk-B434PORR.js +0 -239
- package/dist/chunk-B434PORR.js.map +0 -1
- package/dist/chunk-BAQWGQJG.js +0 -106
- package/dist/chunk-BAQWGQJG.js.map +0 -1
- package/dist/chunk-BRSM3SZP.js +0 -46
- package/dist/chunk-BRSM3SZP.js.map +0 -1
- package/dist/chunk-C34KSTWA.js +0 -43
- package/dist/chunk-C34KSTWA.js.map +0 -1
- package/dist/chunk-C5NZAOA7.js +0 -54
- package/dist/chunk-C5NZAOA7.js.map +0 -1
- package/dist/chunk-CUZR4JWM.js +0 -23
- package/dist/chunk-CUZR4JWM.js.map +0 -1
- package/dist/chunk-DGPY4WP3.js +0 -11
- package/dist/chunk-DGPY4WP3.js.map +0 -1
- package/dist/chunk-EWBCV7VA.js +0 -65
- package/dist/chunk-EWBCV7VA.js.map +0 -1
- package/dist/chunk-F2ZJLKDP.js +0 -119
- package/dist/chunk-F2ZJLKDP.js.map +0 -1
- package/dist/chunk-FLWMT4DB.js +0 -66
- package/dist/chunk-FLWMT4DB.js.map +0 -1
- package/dist/chunk-FRKG7JQY.js +0 -48
- package/dist/chunk-FRKG7JQY.js.map +0 -1
- package/dist/chunk-G7HTZBUR.js +0 -187
- package/dist/chunk-G7HTZBUR.js.map +0 -1
- package/dist/chunk-HWTW64R5.js +0 -90
- package/dist/chunk-HWTW64R5.js.map +0 -1
- package/dist/chunk-IAWKX5W4.js +0 -219
- package/dist/chunk-IAWKX5W4.js.map +0 -1
- package/dist/chunk-INLM7UJC.js +0 -238
- package/dist/chunk-INLM7UJC.js.map +0 -1
- package/dist/chunk-JAJMM32I.js +0 -18
- package/dist/chunk-JAJMM32I.js.map +0 -1
- package/dist/chunk-JJSVA3TH.js +0 -61
- package/dist/chunk-JJSVA3TH.js.map +0 -1
- package/dist/chunk-JLTBUACL.js +0 -121
- package/dist/chunk-JLTBUACL.js.map +0 -1
- package/dist/chunk-JRU2QX7T.js +0 -38
- package/dist/chunk-JRU2QX7T.js.map +0 -1
- package/dist/chunk-JXGRW2MR.js +0 -17
- package/dist/chunk-JXGRW2MR.js.map +0 -1
- package/dist/chunk-KTBOZ4NE.js +0 -93
- package/dist/chunk-KTBOZ4NE.js.map +0 -1
- package/dist/chunk-LMT327XH.js +0 -56
- package/dist/chunk-LMT327XH.js.map +0 -1
- package/dist/chunk-LTTNCAAA.js +0 -138
- package/dist/chunk-LTTNCAAA.js.map +0 -1
- package/dist/chunk-LVZNNIK4.js +0 -111
- package/dist/chunk-LVZNNIK4.js.map +0 -1
- package/dist/chunk-MJLFJPUG.js +0 -143
- package/dist/chunk-MJLFJPUG.js.map +0 -1
- package/dist/chunk-MZ2P566X.js +0 -65
- package/dist/chunk-MZ2P566X.js.map +0 -1
- package/dist/chunk-N47H4MHX.js +0 -41
- package/dist/chunk-N47H4MHX.js.map +0 -1
- package/dist/chunk-NNJTKHCE.js +0 -160
- package/dist/chunk-NNJTKHCE.js.map +0 -1
- package/dist/chunk-NPL2R5LD.js +0 -171
- package/dist/chunk-NPL2R5LD.js.map +0 -1
- package/dist/chunk-NU56GKGM.js +0 -44
- package/dist/chunk-NU56GKGM.js.map +0 -1
- package/dist/chunk-P3M5TZD2.js +0 -24
- package/dist/chunk-P3M5TZD2.js.map +0 -1
- package/dist/chunk-PGWNOZDX.js +0 -28
- package/dist/chunk-PGWNOZDX.js.map +0 -1
- package/dist/chunk-QB3UWRZH.js +0 -92
- package/dist/chunk-QB3UWRZH.js.map +0 -1
- package/dist/chunk-R2CDE5DO.js +0 -33
- package/dist/chunk-R2CDE5DO.js.map +0 -1
- package/dist/chunk-RQNZDWY3.js +0 -65
- package/dist/chunk-RQNZDWY3.js.map +0 -1
- package/dist/chunk-S6PDRGR5.js +0 -109
- package/dist/chunk-S6PDRGR5.js.map +0 -1
- package/dist/chunk-TGYQ3AKH.js +0 -95
- package/dist/chunk-TGYQ3AKH.js.map +0 -1
- package/dist/chunk-THQUH6WX.js +0 -81
- package/dist/chunk-THQUH6WX.js.map +0 -1
- package/dist/chunk-TJMK2KBE.js +0 -112
- package/dist/chunk-TJMK2KBE.js.map +0 -1
- package/dist/chunk-TTH7TWVX.js +0 -30
- package/dist/chunk-TTH7TWVX.js.map +0 -1
- package/dist/chunk-USIHM7FV.js +0 -211
- package/dist/chunk-USIHM7FV.js.map +0 -1
- package/dist/chunk-VVYSAGB3.js +0 -104
- package/dist/chunk-VVYSAGB3.js.map +0 -1
- package/dist/chunk-WD5KZE25.js +0 -25
- package/dist/chunk-WD5KZE25.js.map +0 -1
- package/dist/chunk-WL4ZO2H3.js +0 -33
- package/dist/chunk-WL4ZO2H3.js.map +0 -1
- package/dist/chunk-WRCHR4AK.js +0 -23
- package/dist/chunk-WRCHR4AK.js.map +0 -1
- package/dist/chunk-XOJJBNDX.js +0 -33
- package/dist/chunk-XOJJBNDX.js.map +0 -1
- package/dist/chunk-XUVLD65E.js +0 -617
- package/dist/chunk-XUVLD65E.js.map +0 -1
- package/dist/chunk-YBMEQZX7.js +0 -164
- package/dist/chunk-YBMEQZX7.js.map +0 -1
- package/dist/chunk-Z2QAABLM.js +0 -86
- package/dist/chunk-Z2QAABLM.js.map +0 -1
- package/dist/chunk-ZHEKDP5X.js +0 -41
- package/dist/chunk-ZHEKDP5X.js.map +0 -1
- package/dist/chunk-ZPMXRW2A.js +0 -63
- package/dist/chunk-ZPMXRW2A.js.map +0 -1
- package/dist/chunk-ZYEGBF7G.js +0 -25
- package/dist/chunk-ZYEGBF7G.js.map +0 -1
- package/dist/components/accordion.d.ts +0 -37
- package/dist/components/accordion.js +0 -4
- package/dist/components/accordion.js.map +0 -1
- package/dist/components/alert-dialog.d.ts +0 -56
- package/dist/components/alert-dialog.js +0 -5
- package/dist/components/alert-dialog.js.map +0 -1
- package/dist/components/alert.d.ts +0 -68
- package/dist/components/alert.js +0 -4
- package/dist/components/alert.js.map +0 -1
- package/dist/components/aspect-ratio.d.ts +0 -23
- package/dist/components/aspect-ratio.js +0 -3
- package/dist/components/aspect-ratio.js.map +0 -1
- package/dist/components/avatar.d.ts +0 -48
- package/dist/components/avatar.js +0 -4
- package/dist/components/avatar.js.map +0 -1
- package/dist/components/badge.d.ts +0 -52
- package/dist/components/badge.js +0 -4
- package/dist/components/badge.js.map +0 -1
- package/dist/components/breadcrumb.d.ts +0 -50
- package/dist/components/breadcrumb.js +0 -4
- package/dist/components/breadcrumb.js.map +0 -1
- package/dist/components/button.d.ts +0 -81
- package/dist/components/button.js +0 -4
- package/dist/components/button.js.map +0 -1
- package/dist/components/calendar-category-badge.d.ts +0 -24
- package/dist/components/calendar-category-badge.js +0 -5
- package/dist/components/calendar-category-badge.js.map +0 -1
- package/dist/components/calendar-event-chip.d.ts +0 -41
- package/dist/components/calendar-event-chip.js +0 -4
- package/dist/components/calendar-event-chip.js.map +0 -1
- package/dist/components/calendar-event-sheet.d.ts +0 -68
- package/dist/components/calendar-event-sheet.js +0 -9
- package/dist/components/calendar-event-sheet.js.map +0 -1
- package/dist/components/calendar-mini.d.ts +0 -65
- package/dist/components/calendar-mini.js +0 -6
- package/dist/components/calendar-mini.js.map +0 -1
- package/dist/components/calendar-toolbar.d.ts +0 -58
- package/dist/components/calendar-toolbar.js +0 -7
- package/dist/components/calendar-toolbar.js.map +0 -1
- package/dist/components/calendar.d.ts +0 -19
- package/dist/components/calendar.js +0 -5
- package/dist/components/calendar.js.map +0 -1
- package/dist/components/card.d.ts +0 -43
- package/dist/components/card.js +0 -4
- package/dist/components/card.js.map +0 -1
- package/dist/components/carousel.d.ts +0 -53
- package/dist/components/carousel.js +0 -5
- package/dist/components/carousel.js.map +0 -1
- package/dist/components/chart.d.ts +0 -103
- package/dist/components/chart.js +0 -4
- package/dist/components/chart.js.map +0 -1
- package/dist/components/checkbox.d.ts +0 -24
- package/dist/components/checkbox.js +0 -4
- package/dist/components/checkbox.js.map +0 -1
- package/dist/components/collapsible.d.ts +0 -28
- package/dist/components/collapsible.js +0 -3
- package/dist/components/collapsible.js.map +0 -1
- package/dist/components/color-picker.d.ts +0 -35
- package/dist/components/color-picker.js +0 -7
- package/dist/components/color-picker.js.map +0 -1
- package/dist/components/combobox.d.ts +0 -98
- package/dist/components/combobox.js +0 -8
- package/dist/components/combobox.js.map +0 -1
- package/dist/components/command.d.ts +0 -63
- package/dist/components/command.js +0 -5
- package/dist/components/command.js.map +0 -1
- package/dist/components/context-menu.d.ts +0 -70
- package/dist/components/context-menu.js +0 -4
- package/dist/components/context-menu.js.map +0 -1
- package/dist/components/date-picker.d.ts +0 -71
- package/dist/components/date-picker.js +0 -7
- package/dist/components/date-picker.js.map +0 -1
- package/dist/components/dialog.d.ts +0 -58
- package/dist/components/dialog.js +0 -4
- package/dist/components/dialog.js.map +0 -1
- package/dist/components/drawer.d.ts +0 -60
- package/dist/components/drawer.js +0 -4
- package/dist/components/drawer.js.map +0 -1
- package/dist/components/dropdown-menu.d.ts +0 -76
- package/dist/components/dropdown-menu.js +0 -4
- package/dist/components/dropdown-menu.js.map +0 -1
- package/dist/components/file-upload.d.ts +0 -44
- package/dist/components/file-upload.js +0 -5
- package/dist/components/file-upload.js.map +0 -1
- package/dist/components/form.d.ts +0 -67
- package/dist/components/form.js +0 -5
- package/dist/components/form.js.map +0 -1
- package/dist/components/hover-card.d.ts +0 -43
- package/dist/components/hover-card.js +0 -4
- package/dist/components/hover-card.js.map +0 -1
- package/dist/components/input-otp.d.ts +0 -38
- package/dist/components/input-otp.js +0 -4
- package/dist/components/input-otp.js.map +0 -1
- package/dist/components/input.d.ts +0 -38
- package/dist/components/input.js +0 -4
- package/dist/components/input.js.map +0 -1
- package/dist/components/label.d.ts +0 -20
- package/dist/components/label.js +0 -4
- package/dist/components/label.js.map +0 -1
- package/dist/components/menubar.d.ts +0 -82
- package/dist/components/menubar.js +0 -4
- package/dist/components/menubar.js.map +0 -1
- package/dist/components/navigation-menu.d.ts +0 -64
- package/dist/components/navigation-menu.js +0 -4
- package/dist/components/navigation-menu.js.map +0 -1
- package/dist/components/pagination.d.ts +0 -59
- package/dist/components/pagination.js +0 -5
- package/dist/components/pagination.js.map +0 -1
- package/dist/components/password-input.d.ts +0 -32
- package/dist/components/password-input.js +0 -5
- package/dist/components/password-input.js.map +0 -1
- package/dist/components/permission-grid.d.ts +0 -67
- package/dist/components/permission-grid.js +0 -5
- package/dist/components/permission-grid.js.map +0 -1
- package/dist/components/popover.d.ts +0 -37
- package/dist/components/popover.js +0 -4
- package/dist/components/popover.js.map +0 -1
- package/dist/components/progress.d.ts +0 -20
- package/dist/components/progress.js +0 -4
- package/dist/components/progress.js.map +0 -1
- package/dist/components/radio-group.d.ts +0 -38
- package/dist/components/radio-group.js +0 -4
- package/dist/components/radio-group.js.map +0 -1
- package/dist/components/rating.d.ts +0 -35
- package/dist/components/rating.js +0 -4
- package/dist/components/rating.js.map +0 -1
- package/dist/components/resizable.d.ts +0 -36
- package/dist/components/resizable.js +0 -4
- package/dist/components/resizable.js.map +0 -1
- package/dist/components/scope-tree.d.ts +0 -78
- package/dist/components/scope-tree.js +0 -5
- package/dist/components/scope-tree.js.map +0 -1
- package/dist/components/scope-type-badge.d.ts +0 -35
- package/dist/components/scope-type-badge.js +0 -5
- package/dist/components/scope-type-badge.js.map +0 -1
- package/dist/components/scroll-area.d.ts +0 -29
- package/dist/components/scroll-area.js +0 -4
- package/dist/components/scroll-area.js.map +0 -1
- package/dist/components/select.d.ts +0 -52
- package/dist/components/select.js +0 -4
- package/dist/components/select.js.map +0 -1
- package/dist/components/separator.d.ts +0 -24
- package/dist/components/separator.js +0 -4
- package/dist/components/separator.js.map +0 -1
- package/dist/components/sheet.d.ts +0 -51
- package/dist/components/sheet.js +0 -4
- package/dist/components/sheet.js.map +0 -1
- package/dist/components/sidebar.d.ts +0 -169
- package/dist/components/sidebar.js +0 -11
- package/dist/components/sidebar.js.map +0 -1
- package/dist/components/skeleton.d.ts +0 -25
- package/dist/components/skeleton.js +0 -4
- package/dist/components/skeleton.js.map +0 -1
- package/dist/components/slider.d.ts +0 -24
- package/dist/components/slider.js +0 -4
- package/dist/components/slider.js.map +0 -1
- package/dist/components/slug-input.d.ts +0 -50
- package/dist/components/slug-input.js +0 -6
- package/dist/components/slug-input.js.map +0 -1
- package/dist/components/sonner.d.ts +0 -22
- package/dist/components/sonner.js +0 -3
- package/dist/components/sonner.js.map +0 -1
- package/dist/components/stage-type-badge.d.ts +0 -30
- package/dist/components/stage-type-badge.js +0 -5
- package/dist/components/stage-type-badge.js.map +0 -1
- package/dist/components/switch.d.ts +0 -26
- package/dist/components/switch.js +0 -4
- package/dist/components/switch.js.map +0 -1
- package/dist/components/table.d.ts +0 -57
- package/dist/components/table.js +0 -4
- package/dist/components/table.js.map +0 -1
- package/dist/components/tabs.d.ts +0 -39
- package/dist/components/tabs.js +0 -4
- package/dist/components/tabs.js.map +0 -1
- package/dist/components/tag-input.d.ts +0 -40
- package/dist/components/tag-input.js +0 -5
- package/dist/components/tag-input.js.map +0 -1
- package/dist/components/textarea.d.ts +0 -21
- package/dist/components/textarea.js +0 -4
- package/dist/components/textarea.js.map +0 -1
- package/dist/components/time-picker.d.ts +0 -57
- package/dist/components/time-picker.js +0 -8
- package/dist/components/time-picker.js.map +0 -1
- package/dist/components/toggle-group.d.ts +0 -45
- package/dist/components/toggle-group.js +0 -5
- package/dist/components/toggle-group.js.map +0 -1
- package/dist/components/toggle.d.ts +0 -31
- package/dist/components/toggle.js +0 -4
- package/dist/components/toggle.js.map +0 -1
- package/dist/components/tooltip.d.ts +0 -34
- package/dist/components/tooltip.js +0 -4
- package/dist/components/tooltip.js.map +0 -1
- package/dist/components/workflow-category-badge.d.ts +0 -32
- package/dist/components/workflow-category-badge.js +0 -5
- package/dist/components/workflow-category-badge.js.map +0 -1
- package/dist/components/workflow-diagram.d.ts +0 -63
- package/dist/components/workflow-diagram.js +0 -5
- package/dist/components/workflow-diagram.js.map +0 -1
- package/dist/components/workflow-status-badge.d.ts +0 -30
- package/dist/components/workflow-status-badge.js +0 -5
- package/dist/components/workflow-status-badge.js.map +0 -1
- package/dist/components/workflow-stepper.d.ts +0 -52
- package/dist/components/workflow-stepper.js +0 -4
- package/dist/components/workflow-stepper.js.map +0 -1
- package/dist/hooks/use-mobile.d.ts +0 -3
- package/dist/hooks/use-mobile.js +0 -3
- package/dist/hooks/use-mobile.js.map +0 -1
- package/dist/lib/utils.d.ts +0 -5
- package/dist/lib/utils.js +0 -3
- package/dist/lib/utils.js.map +0 -1
- package/dist/types-CBVkScfB.d.ts +0 -84
- package/src/styles/fonts.css +0 -0
- package/src/styles/index.css +0 -3
- package/src/styles/tailwind.css +0 -4
- package/src/styles/theme.css +0 -461
package/README.md
CHANGED
|
@@ -1,218 +1,464 @@
|
|
|
1
1
|
# @omnifyjp/ui
|
|
2
2
|
|
|
3
|
-
A
|
|
3
|
+
A production-ready application shell framework for multi-tenant React apps. Provides a complete layout system with collapsible sidebar, header with organization switching, theme management, internationalization (vi/en/ja), and flexible page containers.
|
|
4
|
+
|
|
5
|
+
Built on top of [`@omnifyjp/ui-components`](https://www.npmjs.com/package/@omnifyjp/ui-components) components.
|
|
4
6
|
|
|
5
7
|
## Installation
|
|
6
8
|
|
|
7
9
|
```bash
|
|
8
10
|
npm install @omnifyjp/ui
|
|
9
|
-
#
|
|
10
|
-
pnpm add @omnifyjp/ui
|
|
11
|
+
# This automatically installs @omnifyjp/ui-components as a dependency
|
|
11
12
|
```
|
|
12
13
|
|
|
13
14
|
### Peer Dependencies
|
|
14
15
|
|
|
15
16
|
```bash
|
|
16
|
-
npm install react react-dom
|
|
17
|
+
npm install react react-dom react-router
|
|
17
18
|
```
|
|
18
19
|
|
|
19
|
-
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Quick Start
|
|
20
23
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
```tsx
|
|
25
|
+
import { createBrowserRouter, RouterProvider } from 'react-router';
|
|
26
|
+
import { AppShell, initOmnifyI18n } from '@omnifyjp/ui';
|
|
27
|
+
import type { ShellConfig } from '@omnifyjp/ui';
|
|
28
|
+
import { LayoutDashboard, Users, Settings } from 'lucide-react';
|
|
29
|
+
|
|
30
|
+
// 1. Initialize i18n with your service translations
|
|
31
|
+
import enLocale from './locales/en.json';
|
|
32
|
+
import viLocale from './locales/vi.json';
|
|
33
|
+
|
|
34
|
+
initOmnifyI18n({
|
|
35
|
+
namespaces: {
|
|
36
|
+
myapp: { en: enLocale, vi: viLocale },
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
// 2. Define shell configuration
|
|
41
|
+
const config: ShellConfig = {
|
|
42
|
+
app: {
|
|
43
|
+
name: 'My App',
|
|
44
|
+
key: 'myapp',
|
|
45
|
+
logo: { icon: LayoutDashboard, text: 'My App', color: 'text-blue-600' },
|
|
46
|
+
},
|
|
47
|
+
sidebar: {
|
|
48
|
+
menuItems: [
|
|
49
|
+
{ icon: LayoutDashboard, label: 'Dashboard', path: '/' },
|
|
50
|
+
{ icon: Users, label: 'Users', path: '/users' },
|
|
51
|
+
{ icon: Settings, label: 'Settings', path: '/settings' },
|
|
52
|
+
],
|
|
53
|
+
},
|
|
54
|
+
header: {
|
|
55
|
+
user: {
|
|
56
|
+
name: 'John Doe',
|
|
57
|
+
email: 'john@example.com',
|
|
58
|
+
onLogout: () => console.log('logout'),
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
organization: {
|
|
62
|
+
organizations: [
|
|
63
|
+
{ id: '1', name: 'Acme Corp', shortName: 'AC' },
|
|
64
|
+
],
|
|
65
|
+
branches: [
|
|
66
|
+
{ id: '1', name: 'Tokyo Office', organizationId: '1', location: 'Tokyo' },
|
|
67
|
+
{ id: '2', name: 'Hanoi Office', organizationId: '1', location: 'Hanoi' },
|
|
68
|
+
],
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
// 3. Set up routes with AppShell as the layout
|
|
73
|
+
const router = createBrowserRouter([
|
|
74
|
+
{
|
|
75
|
+
path: '/',
|
|
76
|
+
element: <AppShell config={config} />,
|
|
77
|
+
children: [
|
|
78
|
+
{ index: true, element: <Dashboard /> },
|
|
79
|
+
{ path: 'users', element: <Users /> },
|
|
80
|
+
{ path: 'settings', element: <Settings /> },
|
|
81
|
+
],
|
|
82
|
+
},
|
|
83
|
+
]);
|
|
84
|
+
|
|
85
|
+
function App() {
|
|
86
|
+
return <RouterProvider router={router} />;
|
|
87
|
+
}
|
|
88
|
+
```
|
|
26
89
|
|
|
27
90
|
---
|
|
28
91
|
|
|
29
|
-
##
|
|
92
|
+
## Core Components
|
|
93
|
+
|
|
94
|
+
### AppShell
|
|
30
95
|
|
|
31
|
-
|
|
96
|
+
The main application wrapper. Combines `ThemeProvider` + `I18nextProvider` + `OrganizationProvider`, then renders the sidebar, header, and a React Router `<Outlet />`.
|
|
32
97
|
|
|
33
98
|
```tsx
|
|
34
|
-
import {
|
|
35
|
-
|
|
36
|
-
|
|
99
|
+
import { AppShell } from '@omnifyjp/ui';
|
|
100
|
+
|
|
101
|
+
<AppShell config={config} extra={<ChatWidget />} />
|
|
37
102
|
```
|
|
38
103
|
|
|
39
|
-
|
|
104
|
+
| Prop | Type | Description |
|
|
105
|
+
|------|------|-------------|
|
|
106
|
+
| `config` | `ShellConfig` | Full shell configuration (see below) |
|
|
107
|
+
| `extra` | `ReactNode` | Optional floating elements (e.g., chat widget) |
|
|
40
108
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
109
|
+
### Sidebar
|
|
110
|
+
|
|
111
|
+
Collapsible left navigation with context switching, expandable groups, and tooltips when collapsed.
|
|
112
|
+
|
|
113
|
+
Features:
|
|
114
|
+
- Logo area with app icon
|
|
115
|
+
- Main menu items with nested groups
|
|
116
|
+
- Context switching popover (e.g., project switcher with search)
|
|
117
|
+
- Recent items section
|
|
118
|
+
- Collapse/expand toggle
|
|
119
|
+
- Organization selector badge
|
|
120
|
+
|
|
121
|
+
### Header
|
|
44
122
|
|
|
45
|
-
|
|
123
|
+
Top navigation bar with:
|
|
124
|
+
- Organization/branch selector
|
|
125
|
+
- Service menu (grid of available apps)
|
|
126
|
+
- Global search input
|
|
127
|
+
- Notification dropdown with count badge
|
|
128
|
+
- Custom action buttons
|
|
129
|
+
- User menu (profile, settings, logout)
|
|
130
|
+
|
|
131
|
+
### PageContainer
|
|
132
|
+
|
|
133
|
+
Flexible page layout wrapper with three variants:
|
|
46
134
|
|
|
47
135
|
```tsx
|
|
48
|
-
import {
|
|
136
|
+
import {
|
|
137
|
+
StandardPageContainer,
|
|
138
|
+
SplitPageContainer,
|
|
139
|
+
FullWidthPageContainer,
|
|
140
|
+
} from '@omnifyjp/ui';
|
|
141
|
+
|
|
142
|
+
// Standard — padded page with title bar
|
|
143
|
+
<StandardPageContainer title="Users" subtitle="Manage team members" extra={<Button>Add User</Button>}>
|
|
144
|
+
<UserTable />
|
|
145
|
+
</StandardPageContainer>
|
|
146
|
+
|
|
147
|
+
// Split — two-column layout with sidebar
|
|
148
|
+
<SplitPageContainer title="Settings" sidebar={<SettingsNav />} sidebarPosition="left">
|
|
149
|
+
<SettingsForm />
|
|
150
|
+
</SplitPageContainer>
|
|
151
|
+
|
|
152
|
+
// Full width — no padding (for Kanban boards, Gantt charts)
|
|
153
|
+
<FullWidthPageContainer>
|
|
154
|
+
<KanbanBoard />
|
|
155
|
+
</FullWidthPageContainer>
|
|
49
156
|
```
|
|
50
157
|
|
|
51
|
-
|
|
158
|
+
| Prop | Type | Default | Description |
|
|
159
|
+
|------|------|---------|-------------|
|
|
160
|
+
| `title` | `string` | — | Page heading |
|
|
161
|
+
| `subtitle` | `string` | — | Description text below title |
|
|
162
|
+
| `extra` | `ReactNode` | — | Header actions (buttons, etc.) |
|
|
163
|
+
| `children` | `ReactNode` | — | Main content |
|
|
164
|
+
| `footer` | `ReactNode` | — | Footer content |
|
|
165
|
+
| `variant` | `'standard' \| 'split' \| 'full'` | `'standard'` | Layout mode |
|
|
166
|
+
| `sidebar` | `ReactNode` | — | Sidebar content (split mode) |
|
|
167
|
+
| `sidebarPosition` | `'left' \| 'right'` | `'right'` | Sidebar placement |
|
|
168
|
+
| `sidebarWidth` | `string` | `'w-80'` | Sidebar Tailwind width class |
|
|
169
|
+
|
|
170
|
+
### OrganizationSelector
|
|
171
|
+
|
|
172
|
+
Two-step modal for switching organizations and branches:
|
|
173
|
+
|
|
174
|
+
1. **Step 1**: Select organization (shows description + branch count)
|
|
175
|
+
2. **Step 2**: Select branch (searchable, shows location)
|
|
52
176
|
|
|
53
177
|
```tsx
|
|
54
|
-
import {
|
|
178
|
+
import { OrganizationSelector } from '@omnifyjp/ui';
|
|
179
|
+
|
|
180
|
+
<OrganizationSelector variant="header" /> // in header
|
|
181
|
+
<OrganizationSelector variant="sidebar" /> // in sidebar
|
|
55
182
|
```
|
|
56
183
|
|
|
57
|
-
###
|
|
184
|
+
### ServiceMenu
|
|
58
185
|
|
|
59
|
-
|
|
60
|
-
|
|
186
|
+
Searchable dropdown grid listing all available services/apps:
|
|
187
|
+
|
|
188
|
+
```tsx
|
|
189
|
+
const config: ShellConfig = {
|
|
190
|
+
services: [
|
|
191
|
+
{
|
|
192
|
+
category: 'HR',
|
|
193
|
+
items: [
|
|
194
|
+
{ icon: Users, label: 'Attendance', url: '/attendance', color: 'bg-blue-600' },
|
|
195
|
+
{ icon: Calendar, label: 'Leave', url: '/leave', color: 'bg-green-600' },
|
|
196
|
+
],
|
|
197
|
+
},
|
|
198
|
+
],
|
|
199
|
+
};
|
|
61
200
|
```
|
|
62
201
|
|
|
63
202
|
---
|
|
64
203
|
|
|
65
|
-
##
|
|
66
|
-
|
|
67
|
-
|
|
204
|
+
## Configuration: `ShellConfig`
|
|
205
|
+
|
|
206
|
+
```typescript
|
|
207
|
+
interface ShellConfig {
|
|
208
|
+
app: {
|
|
209
|
+
name: string; // App display name
|
|
210
|
+
key: string; // App identifier
|
|
211
|
+
logo: {
|
|
212
|
+
icon: LucideIcon; // Logo icon
|
|
213
|
+
text: string; // Logo text
|
|
214
|
+
color?: string; // Icon color class
|
|
215
|
+
};
|
|
216
|
+
};
|
|
217
|
+
|
|
218
|
+
sidebar: {
|
|
219
|
+
menuItems: SidebarMenuItem[]; // Navigation items
|
|
220
|
+
contextMenu?: { // Context switcher (e.g., project selector)
|
|
221
|
+
paramName: string; // URL param name
|
|
222
|
+
getItems: () => ContextItem[];
|
|
223
|
+
getHeader?: () => ReactNode;
|
|
224
|
+
getFooterItems?: () => ContextItem[];
|
|
225
|
+
};
|
|
226
|
+
recentItems?: { // Recent items section
|
|
227
|
+
title: string;
|
|
228
|
+
items: { label: string; path: string; badge?: string; color?: string }[];
|
|
229
|
+
};
|
|
230
|
+
footer?: ReactNode; // Custom sidebar footer
|
|
231
|
+
};
|
|
232
|
+
|
|
233
|
+
services?: ServiceCategory[]; // Service menu grid
|
|
234
|
+
|
|
235
|
+
header?: {
|
|
236
|
+
searchPlaceholder?: string;
|
|
237
|
+
showSearch?: boolean; // Default: true
|
|
238
|
+
actions?: ReactNode; // Custom header buttons
|
|
239
|
+
notifications?: {
|
|
240
|
+
count: number;
|
|
241
|
+
content: ReactNode;
|
|
242
|
+
};
|
|
243
|
+
user?: {
|
|
244
|
+
name: string;
|
|
245
|
+
email?: string;
|
|
246
|
+
avatar?: string;
|
|
247
|
+
onLogout?: () => void;
|
|
248
|
+
};
|
|
249
|
+
};
|
|
250
|
+
|
|
251
|
+
organization?: {
|
|
252
|
+
organizations: Organization[];
|
|
253
|
+
branches: Branch[];
|
|
254
|
+
onOrganizationChange?: (org: Organization) => void;
|
|
255
|
+
onBranchChange?: (branch: Branch) => void;
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
```
|
|
68
259
|
|
|
69
|
-
|
|
260
|
+
### SidebarMenuItem
|
|
70
261
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
262
|
+
```typescript
|
|
263
|
+
interface SidebarMenuItem {
|
|
264
|
+
icon: LucideIcon;
|
|
265
|
+
label: string;
|
|
266
|
+
path?: string; // Omit for collapsible groups
|
|
267
|
+
badge?: number; // Notification count
|
|
268
|
+
children?: SidebarMenuItem[]; // Nested items
|
|
269
|
+
}
|
|
270
|
+
```
|
|
80
271
|
|
|
81
|
-
|
|
272
|
+
---
|
|
82
273
|
|
|
83
|
-
|
|
274
|
+
## Context Providers
|
|
84
275
|
|
|
85
|
-
|
|
276
|
+
### ThemeProvider
|
|
86
277
|
|
|
87
|
-
|
|
88
|
-
|-----------|-------------|
|
|
89
|
-
| `CalendarMini` | Compact month calendar with event dots |
|
|
90
|
-
| `CalendarEventChip` | Colored event bar for calendar grids |
|
|
91
|
-
| `CalendarEventSheet` | Side panel for event details |
|
|
92
|
-
| `CalendarToolbar` | Date navigation with view switcher (month/week/day) |
|
|
93
|
-
| `CalendarCategoryBadge` | Colored category label |
|
|
278
|
+
Dark mode management with system preference detection:
|
|
94
279
|
|
|
95
|
-
|
|
280
|
+
```tsx
|
|
281
|
+
import { useTheme } from '@omnifyjp/ui';
|
|
282
|
+
|
|
283
|
+
function ThemeToggle() {
|
|
284
|
+
const { theme, setTheme } = useTheme();
|
|
285
|
+
// theme: 'light' | 'dark' | 'system'
|
|
286
|
+
|
|
287
|
+
return (
|
|
288
|
+
<select value={theme} onChange={(e) => setTheme(e.target.value)}>
|
|
289
|
+
<option value="light">Light</option>
|
|
290
|
+
<option value="dark">Dark</option>
|
|
291
|
+
<option value="system">System</option>
|
|
292
|
+
</select>
|
|
293
|
+
);
|
|
294
|
+
}
|
|
295
|
+
```
|
|
96
296
|
|
|
97
|
-
|
|
98
|
-
|-----------|-------------|
|
|
99
|
-
| `WorkflowStepper` | Multi-step progress indicator |
|
|
100
|
-
| `WorkflowDiagram` | Visual flow diagram with stages |
|
|
101
|
-
| `WorkflowStatusBadge` | Status indicator (active/draft/archived) |
|
|
102
|
-
| `WorkflowCategoryBadge` | Category badge for workflows |
|
|
103
|
-
| `StageTypeBadge` | Stage type indicator (approval/action/notification) |
|
|
297
|
+
Persists selection to `localStorage.omnify_theme`.
|
|
104
298
|
|
|
105
|
-
|
|
299
|
+
### OrganizationProvider
|
|
106
300
|
|
|
107
|
-
|
|
108
|
-
|-----------|-------------|
|
|
109
|
-
| `PermissionGrid` | Module x Action permission matrix with checkboxes |
|
|
110
|
-
| `ScopeTree` | Hierarchical scope selector with inheritance |
|
|
111
|
-
| `ScopeTypeBadge` | Scope level indicator (global/org/branch/team) |
|
|
301
|
+
Multi-tenant organization/branch management:
|
|
112
302
|
|
|
113
|
-
|
|
303
|
+
```tsx
|
|
304
|
+
import { useOrganization } from '@omnifyjp/ui';
|
|
305
|
+
|
|
306
|
+
function OrgInfo() {
|
|
307
|
+
const {
|
|
308
|
+
selectedOrganization, // Organization | null
|
|
309
|
+
selectedBranch, // Branch | null
|
|
310
|
+
setSelectedOrganization,
|
|
311
|
+
setSelectedBranch,
|
|
312
|
+
getBranchesByOrg, // (orgId: string) => Branch[]
|
|
313
|
+
isSetupComplete, // true when both selected
|
|
314
|
+
} = useOrganization();
|
|
315
|
+
|
|
316
|
+
return <p>{selectedOrganization?.name} — {selectedBranch?.name}</p>;
|
|
317
|
+
}
|
|
318
|
+
```
|
|
114
319
|
|
|
115
|
-
|
|
116
|
-
|-----------|-------------|
|
|
117
|
-
| `SlugInput` | URL-friendly slug input with auto-generation |
|
|
320
|
+
Persists selections to `localStorage.selectedOrganizationId` and `localStorage.selectedBranchId`.
|
|
118
321
|
|
|
119
322
|
---
|
|
120
323
|
|
|
121
|
-
##
|
|
122
|
-
|
|
123
|
-
### CSS Design Tokens
|
|
324
|
+
## i18n (Internationalization)
|
|
124
325
|
|
|
125
|
-
|
|
326
|
+
### Supported Languages
|
|
126
327
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
328
|
+
| Code | Language |
|
|
329
|
+
|------|----------|
|
|
330
|
+
| `vi` | Tieng Viet (default, fallback) |
|
|
331
|
+
| `en` | English |
|
|
332
|
+
| `ja` | Japanese |
|
|
131
333
|
|
|
132
|
-
###
|
|
334
|
+
### Shell Namespace
|
|
133
335
|
|
|
134
|
-
|
|
336
|
+
The shell comes pre-loaded with translations for common UI strings: sidebar labels, header actions, status/priority names, settings pages, login forms, organization selection, date picker, etc.
|
|
135
337
|
|
|
136
|
-
|
|
137
|
-
|-------|-------|----------------|---------|
|
|
138
|
-
| `--density-page` | 16px | `p-page` | Page padding |
|
|
139
|
-
| `--density-section` | 16px | `gap-section` | Section gaps |
|
|
140
|
-
| `--density-element` | 32px | `h-element` | Button/Input height |
|
|
141
|
-
| `--density-element-sm` | 28px | `h-element-sm` | Small inputs |
|
|
142
|
-
| `--density-element-lg` | 36px | `h-element-lg` | Large buttons |
|
|
143
|
-
| `--density-card` | 16px | `px-card`, `pt-card` | Card padding |
|
|
144
|
-
| `--density-dialog` | 20px | `p-dialog` | Dialog padding |
|
|
145
|
-
| `--header-height` | 48px | `h-header` | App header height |
|
|
146
|
-
| `--density-page-title` | 20px | `text-page-title` | Page title font size |
|
|
338
|
+
### Adding Service Translations
|
|
147
339
|
|
|
148
|
-
|
|
340
|
+
```tsx
|
|
341
|
+
import { initOmnifyI18n } from '@omnifyjp/ui';
|
|
342
|
+
|
|
343
|
+
// Add your service namespace
|
|
344
|
+
initOmnifyI18n({
|
|
345
|
+
namespaces: {
|
|
346
|
+
myapp: {
|
|
347
|
+
en: { dashboard: { title: 'Dashboard' } },
|
|
348
|
+
vi: { dashboard: { title: 'Bang dieu khien' } },
|
|
349
|
+
ja: { dashboard: { title: 'dasshubodo' } },
|
|
350
|
+
},
|
|
351
|
+
},
|
|
352
|
+
});
|
|
353
|
+
|
|
354
|
+
// Use in components
|
|
355
|
+
import { useTranslation } from 'react-i18next';
|
|
356
|
+
|
|
357
|
+
function Dashboard() {
|
|
358
|
+
const { t } = useTranslation(['myapp', 'shell']);
|
|
359
|
+
return <h1>{t('dashboard.title')}</h1>;
|
|
360
|
+
// Falls back to 'shell' namespace for common keys
|
|
361
|
+
}
|
|
362
|
+
```
|
|
149
363
|
|
|
150
|
-
|
|
364
|
+
### Changing Language
|
|
151
365
|
|
|
152
366
|
```tsx
|
|
153
|
-
|
|
154
|
-
<div className="bg-background text-foreground border-border">
|
|
155
|
-
<p className="text-muted-foreground">Secondary text</p>
|
|
156
|
-
</div>
|
|
367
|
+
import { changeLanguage } from '@omnifyjp/ui';
|
|
157
368
|
|
|
158
|
-
|
|
159
|
-
<Badge className="bg-red-50 dark:bg-red-500/15 text-red-600 dark:text-red-400">
|
|
160
|
-
Urgent
|
|
161
|
-
</Badge>
|
|
369
|
+
await changeLanguage('en'); // Persists to localStorage
|
|
162
370
|
```
|
|
163
371
|
|
|
164
372
|
---
|
|
165
373
|
|
|
166
|
-
##
|
|
374
|
+
## Hooks
|
|
167
375
|
|
|
168
|
-
|
|
376
|
+
### useDateFormat
|
|
169
377
|
|
|
170
|
-
|
|
171
|
-
import { cn } from '@omnifyjp/ui/lib/utils';
|
|
378
|
+
Locale-aware date formatting with timezone support:
|
|
172
379
|
|
|
173
|
-
|
|
380
|
+
```tsx
|
|
381
|
+
import { useDateFormat } from '@omnifyjp/ui';
|
|
382
|
+
|
|
383
|
+
function EventDate({ date }: { date: Date }) {
|
|
384
|
+
const {
|
|
385
|
+
formatDate, // '01/15/2026' (locale-dependent)
|
|
386
|
+
formatDateTime, // '01/15/2026 14:30'
|
|
387
|
+
formatRelativeTime, // '5 minutes ago'
|
|
388
|
+
formatShortDate, // '01/15'
|
|
389
|
+
formatMonthYear, // 'January 2026'
|
|
390
|
+
formatDayOfWeek, // 'Mon'
|
|
391
|
+
formatDateLong, // 'January 15, 2026'
|
|
392
|
+
timezone, // 'Asia/Ho_Chi_Minh'
|
|
393
|
+
setTimezone, // Change timezone
|
|
394
|
+
dateFnsLocale, // date-fns Locale object
|
|
395
|
+
} = useDateFormat();
|
|
396
|
+
|
|
397
|
+
return <time>{formatDateTime(date)}</time>;
|
|
398
|
+
}
|
|
174
399
|
```
|
|
175
400
|
|
|
176
|
-
|
|
401
|
+
Supported timezones: `Asia/Ho_Chi_Minh`, `Asia/Tokyo`, `America/New_York`, `America/Los_Angeles`, `Europe/London`, `UTC`.
|
|
177
402
|
|
|
178
|
-
|
|
403
|
+
---
|
|
179
404
|
|
|
180
|
-
|
|
405
|
+
## Package Exports
|
|
181
406
|
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
407
|
+
```
|
|
408
|
+
@omnifyjp/ui → all exports (barrel)
|
|
409
|
+
@omnifyjp/ui/components/AppShell → AppShell
|
|
410
|
+
@omnifyjp/ui/components/Sidebar → Sidebar
|
|
411
|
+
@omnifyjp/ui/components/Header → Header
|
|
412
|
+
@omnifyjp/ui/components/PageContainer → PageContainer, Standard/Split/FullWidth variants
|
|
413
|
+
@omnifyjp/ui/components/ServiceMenu → ServiceMenu
|
|
414
|
+
@omnifyjp/ui/components/OrganizationSelector → OrganizationSelector
|
|
415
|
+
@omnifyjp/ui/contexts/ThemeContext → ThemeProvider, useTheme
|
|
416
|
+
@omnifyjp/ui/contexts/OrganizationContext → OrganizationProvider, useOrganization
|
|
417
|
+
@omnifyjp/ui/hooks/useDateFormat → useDateFormat, timezoneLabels
|
|
418
|
+
@omnifyjp/ui/i18n → i18n, initOmnifyI18n, changeLanguage
|
|
419
|
+
@omnifyjp/ui/types → ShellConfig, Organization, Branch, etc.
|
|
420
|
+
```
|
|
185
421
|
|
|
186
422
|
---
|
|
187
423
|
|
|
188
|
-
##
|
|
424
|
+
## TypeScript
|
|
189
425
|
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
426
|
+
Full type definitions are included. Key types:
|
|
427
|
+
|
|
428
|
+
```typescript
|
|
429
|
+
import type {
|
|
430
|
+
ShellConfig,
|
|
431
|
+
SidebarMenuItem,
|
|
432
|
+
ServiceCategory,
|
|
433
|
+
ServiceItem,
|
|
434
|
+
Organization,
|
|
435
|
+
Branch,
|
|
436
|
+
PageContainerProps,
|
|
437
|
+
} from '@omnifyjp/ui';
|
|
198
438
|
```
|
|
199
439
|
|
|
200
440
|
---
|
|
201
441
|
|
|
202
|
-
##
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
442
|
+
## Dependencies
|
|
443
|
+
|
|
444
|
+
This package depends on:
|
|
445
|
+
|
|
446
|
+
| Package | Purpose |
|
|
447
|
+
|---------|---------|
|
|
448
|
+
| `@omnifyjp/ui-components` | UI component primitives (auto-installed) |
|
|
449
|
+
| `i18next` | Internationalization core |
|
|
450
|
+
| `react-i18next` | React i18n bindings |
|
|
451
|
+
| `date-fns` | Date formatting |
|
|
452
|
+
| `lucide-react` | Icons |
|
|
453
|
+
| `sonner` | Toast notifications |
|
|
454
|
+
|
|
455
|
+
Peer dependencies (you provide):
|
|
456
|
+
|
|
457
|
+
| Package | Version |
|
|
458
|
+
|---------|---------|
|
|
459
|
+
| `react` | >=18 |
|
|
460
|
+
| `react-dom` | >=18 |
|
|
461
|
+
| `react-router` | >=7 |
|
|
216
462
|
|
|
217
463
|
---
|
|
218
464
|
|
|
@@ -220,7 +466,7 @@ The package is fully tree-shakeable:
|
|
|
220
466
|
|
|
221
467
|
| Package | Description |
|
|
222
468
|
|---------|-------------|
|
|
223
|
-
| [`@omnifyjp/
|
|
469
|
+
| [`@omnifyjp/ui-components`](https://www.npmjs.com/package/@omnifyjp/ui-components) | 53 Shadcn primitives + 14 domain components |
|
|
224
470
|
| [`@omnifyjp/editor`](https://www.npmjs.com/package/@omnifyjp/editor) | Rich text editors (Tiptap + BlockNote) |
|
|
225
471
|
|
|
226
472
|
---
|