@omnifyjp/ui 1.0.2 → 2.0.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/dist/{chunk-TJMK2KBE.js → chunk-2BRCVWXR.js} +3 -3
- package/dist/chunk-2BRCVWXR.js.map +1 -0
- package/dist/{chunk-RQNZDWY3.js → chunk-33QLY6GI.js} +2 -2
- package/dist/chunk-33QLY6GI.js.map +1 -0
- package/dist/{chunk-NPL2R5LD.js → chunk-3V6NS4EQ.js} +5 -5
- package/dist/chunk-3V6NS4EQ.js.map +1 -0
- package/dist/{chunk-G7HTZBUR.js → chunk-47TUWE63.js} +3 -3
- package/dist/chunk-47TUWE63.js.map +1 -0
- package/dist/{chunk-FRKG7JQY.js → chunk-5AGUCELC.js} +2 -2
- package/dist/chunk-5AGUCELC.js.map +1 -0
- package/dist/chunk-5K6RO5R3.js +71 -0
- package/dist/chunk-5K6RO5R3.js.map +1 -0
- package/dist/{chunk-A3BB5ZOC.js → chunk-5SAUUOCN.js} +2 -2
- package/dist/chunk-5SAUUOCN.js.map +1 -0
- package/dist/{chunk-2TUWDXAC.js → chunk-5WOCEAZG.js} +3 -3
- package/dist/chunk-5WOCEAZG.js.map +1 -0
- package/dist/{chunk-75WZR6HF.js → chunk-6S5AZCU6.js} +4 -4
- package/dist/chunk-6S5AZCU6.js.map +1 -0
- package/dist/{chunk-2C2HRGM7.js → chunk-6W5FYOXQ.js} +3 -3
- package/dist/chunk-6W5FYOXQ.js.map +1 -0
- package/dist/{chunk-ZHEKDP5X.js → chunk-6Z6NRIQ2.js} +3 -3
- package/dist/chunk-6Z6NRIQ2.js.map +1 -0
- package/dist/{chunk-BAQWGQJG.js → chunk-7KZ7CVRN.js} +3 -3
- package/dist/chunk-7KZ7CVRN.js.map +1 -0
- package/dist/{chunk-C34KSTWA.js → chunk-7NMNLY7F.js} +2 -2
- package/dist/chunk-7NMNLY7F.js.map +1 -0
- package/dist/{chunk-55E7D2HR.js → chunk-BOV3Q2JH.js} +2 -2
- package/dist/chunk-BOV3Q2JH.js.map +1 -0
- package/dist/{chunk-34ARZSNP.js → chunk-CECQY5LL.js} +2 -2
- package/dist/chunk-CECQY5LL.js.map +1 -0
- package/dist/{chunk-JRU2QX7T.js → chunk-CLYBVDEQ.js} +2 -2
- package/dist/chunk-CLYBVDEQ.js.map +1 -0
- package/dist/{chunk-TGYQ3AKH.js → chunk-CNS3OMZ7.js} +2 -2
- package/dist/chunk-CNS3OMZ7.js.map +1 -0
- package/dist/{chunk-C5NZAOA7.js → chunk-CSYH7P6N.js} +2 -2
- package/dist/chunk-CSYH7P6N.js.map +1 -0
- package/dist/{chunk-USIHM7FV.js → chunk-DEKVLLTL.js} +2 -2
- package/dist/chunk-DEKVLLTL.js.map +1 -0
- package/dist/chunk-DNPRGSOD.js +70 -0
- package/dist/chunk-DNPRGSOD.js.map +1 -0
- package/dist/{chunk-Z2QAABLM.js → chunk-DXKFFJIE.js} +2 -2
- package/dist/chunk-DXKFFJIE.js.map +1 -0
- package/dist/{chunk-IAWKX5W4.js → chunk-DXZZURPN.js} +2 -2
- package/dist/chunk-DXZZURPN.js.map +1 -0
- package/dist/{chunk-XOJJBNDX.js → chunk-EAY3QSID.js} +2 -2
- package/dist/chunk-EAY3QSID.js.map +1 -0
- package/dist/{chunk-P3M5TZD2.js → chunk-EYJ7TJIX.js} +2 -2
- package/dist/chunk-EYJ7TJIX.js.map +1 -0
- package/dist/{chunk-67YUL2ZS.js → chunk-FTNPOZGK.js} +2 -2
- package/dist/chunk-FTNPOZGK.js.map +1 -0
- package/dist/{chunk-JXGRW2MR.js → chunk-GR7T5QHL.js} +2 -2
- package/dist/chunk-GR7T5QHL.js.map +1 -0
- package/dist/{chunk-LMT327XH.js → chunk-HEQVBUJO.js} +2 -2
- package/dist/chunk-HEQVBUJO.js.map +1 -0
- package/dist/chunk-HXMY2NQ3.js +90 -0
- package/dist/chunk-HXMY2NQ3.js.map +1 -0
- package/dist/{chunk-VVYSAGB3.js → chunk-I6PJSYBI.js} +3 -3
- package/dist/chunk-I6PJSYBI.js.map +1 -0
- package/dist/{chunk-35DNN46W.js → chunk-ITTPI2Z3.js} +3 -3
- package/dist/chunk-ITTPI2Z3.js.map +1 -0
- package/dist/{chunk-JAJMM32I.js → chunk-IXEPDTUE.js} +3 -3
- package/dist/chunk-IXEPDTUE.js.map +1 -0
- package/dist/{chunk-PGWNOZDX.js → chunk-KCUSO3CK.js} +2 -2
- package/dist/chunk-KCUSO3CK.js.map +1 -0
- package/dist/{chunk-QB3UWRZH.js → chunk-KJAXKHJ2.js} +3 -3
- package/dist/chunk-KJAXKHJ2.js.map +1 -0
- package/dist/{chunk-7IRLBU2I.js → chunk-LA4L3QIK.js} +3 -3
- package/dist/chunk-LA4L3QIK.js.map +1 -0
- package/dist/{chunk-NNJTKHCE.js → chunk-LTGCKJX7.js} +2 -2
- package/dist/chunk-LTGCKJX7.js.map +1 -0
- package/dist/{chunk-JJSVA3TH.js → chunk-LUYTKHGS.js} +2 -2
- package/dist/chunk-LUYTKHGS.js.map +1 -0
- package/dist/{chunk-6GWVQB3Q.js → chunk-MVYSUWSD.js} +3 -3
- package/dist/chunk-MVYSUWSD.js.map +1 -0
- package/dist/{chunk-YBMEQZX7.js → chunk-N5BNNKBR.js} +2 -2
- package/dist/chunk-N5BNNKBR.js.map +1 -0
- package/dist/{chunk-35U6QG4P.js → chunk-N6OUJIQD.js} +2 -2
- package/dist/chunk-N6OUJIQD.js.map +1 -0
- package/dist/{chunk-R2CDE5DO.js → chunk-NWVMNWOH.js} +2 -2
- package/dist/chunk-NWVMNWOH.js.map +1 -0
- package/dist/{chunk-7XH3MGBR.js → chunk-O2KRH6BS.js} +2 -2
- package/dist/chunk-O2KRH6BS.js.map +1 -0
- package/dist/{chunk-NU56GKGM.js → chunk-ORTPKXBI.js} +2 -2
- package/dist/chunk-ORTPKXBI.js.map +1 -0
- package/dist/chunk-OUOGSSRT.js +71 -0
- package/dist/chunk-OUOGSSRT.js.map +1 -0
- package/dist/{chunk-FLWMT4DB.js → chunk-PJZ7D36X.js} +2 -2
- package/dist/chunk-PJZ7D36X.js.map +1 -0
- package/dist/{chunk-CUZR4JWM.js → chunk-PYB6RRA5.js} +3 -3
- package/dist/chunk-PYB6RRA5.js.map +1 -0
- package/dist/{chunk-BRSM3SZP.js → chunk-QGU4BRMO.js} +2 -2
- package/dist/chunk-QGU4BRMO.js.map +1 -0
- package/dist/{chunk-S6PDRGR5.js → chunk-RZZH57ZL.js} +2 -2
- package/dist/chunk-RZZH57ZL.js.map +1 -0
- package/dist/{chunk-EWBCV7VA.js → chunk-S73PGQD5.js} +2 -2
- package/dist/chunk-S73PGQD5.js.map +1 -0
- package/dist/{chunk-N47H4MHX.js → chunk-SAHHVJMQ.js} +3 -3
- package/dist/chunk-SAHHVJMQ.js.map +1 -0
- package/dist/{chunk-INLM7UJC.js → chunk-T65EBJUJ.js} +2 -2
- package/dist/chunk-T65EBJUJ.js.map +1 -0
- package/dist/{chunk-MJLFJPUG.js → chunk-TLQE77WF.js} +5 -5
- package/dist/chunk-TLQE77WF.js.map +1 -0
- package/dist/{chunk-ZPMXRW2A.js → chunk-TPBRGO4D.js} +3 -3
- package/dist/chunk-TPBRGO4D.js.map +1 -0
- package/dist/{chunk-WS6E7HBT.js → chunk-UTF42GJR.js} +3 -3
- package/dist/chunk-UTF42GJR.js.map +1 -0
- package/dist/{chunk-MZ2P566X.js → chunk-VATNOBZ2.js} +3 -3
- package/dist/chunk-VATNOBZ2.js.map +1 -0
- package/dist/{chunk-JLTBUACL.js → chunk-VOLR236J.js} +2 -2
- package/dist/chunk-VOLR236J.js.map +1 -0
- package/dist/{chunk-WL4ZO2H3.js → chunk-W477ZR6B.js} +2 -2
- package/dist/chunk-W477ZR6B.js.map +1 -0
- package/dist/{chunk-3EOHW4QN.js → chunk-WJX6NKKF.js} +3 -3
- package/dist/chunk-WJX6NKKF.js.map +1 -0
- package/dist/{chunk-LTTNCAAA.js → chunk-XNUFKQYL.js} +3 -3
- package/dist/chunk-XNUFKQYL.js.map +1 -0
- package/dist/{chunk-ZYEGBF7G.js → chunk-YU23NDE4.js} +3 -3
- package/dist/chunk-YU23NDE4.js.map +1 -0
- package/dist/chunk-YU55YBID.js +144 -0
- package/dist/chunk-YU55YBID.js.map +1 -0
- package/dist/{chunk-F2ZJLKDP.js → chunk-YVCLIOMM.js} +2 -2
- package/dist/chunk-YVCLIOMM.js.map +1 -0
- package/dist/{chunk-7RMTPT6O.js → chunk-YYJVVYFS.js} +2 -2
- package/dist/chunk-YYJVVYFS.js.map +1 -0
- package/dist/components/display/accordion.js +4 -0
- package/dist/components/display/aspect-ratio.js +3 -0
- package/dist/components/display/avatar.js +4 -0
- package/dist/components/{badge.d.ts → display/badge.d.ts} +1 -1
- package/dist/components/display/badge.js +4 -0
- package/dist/components/display/card.js +4 -0
- package/dist/components/{carousel.d.ts → display/carousel.d.ts} +2 -2
- package/dist/components/display/carousel.js +5 -0
- package/dist/components/{chart.js → display/chart.js} +1 -1
- package/dist/components/display/chart.js.map +1 -0
- package/dist/components/{collapsible.js → display/collapsible.js} +1 -1
- package/dist/components/display/resizable.js +4 -0
- package/dist/components/display/scroll-area.js +4 -0
- package/dist/components/display/separator.js +4 -0
- package/dist/components/display/table.js +4 -0
- package/dist/components/display/toggle-group.js +5 -0
- package/dist/components/display/toggle.js +4 -0
- package/dist/components/domain/calendar/calendar-category-badge.js +5 -0
- package/dist/components/{calendar-event-chip.js → domain/calendar/calendar-event-chip.js} +1 -1
- package/dist/components/domain/calendar/calendar-event-chip.js.map +1 -0
- package/dist/components/{calendar-event-sheet.js → domain/calendar/calendar-event-sheet.js} +6 -6
- package/dist/components/domain/calendar/calendar-event-sheet.js.map +1 -0
- package/dist/components/{calendar-mini.js → domain/calendar/calendar-mini.js} +3 -3
- package/dist/components/domain/calendar/calendar-mini.js.map +1 -0
- package/dist/components/{calendar-toolbar.js → domain/calendar/calendar-toolbar.js} +4 -4
- package/dist/components/domain/calendar/calendar-toolbar.js.map +1 -0
- package/dist/components/domain/calendar/calendar.js +5 -0
- package/dist/components/domain/rbac/permission-grid.js +5 -0
- package/dist/components/domain/rbac/scope-tree.js +5 -0
- package/dist/components/domain/rbac/scope-type-badge.js +5 -0
- package/dist/components/domain/workflow/stage-type-badge.js +5 -0
- package/dist/components/domain/workflow/workflow-category-badge.js +5 -0
- package/dist/components/domain/workflow/workflow-diagram.js +5 -0
- package/dist/components/domain/workflow/workflow-status-badge.js +5 -0
- package/dist/components/domain/workflow/workflow-stepper.js +4 -0
- package/dist/components/{alert.d.ts → feedback/alert.d.ts} +1 -1
- package/dist/components/feedback/alert.js +4 -0
- package/dist/components/feedback/progress.js +4 -0
- package/dist/components/feedback/skeleton.js +4 -0
- package/dist/components/{button.d.ts → inputs/button.d.ts} +2 -2
- package/dist/components/inputs/button.js +4 -0
- package/dist/components/inputs/checkbox.js +4 -0
- package/dist/components/inputs/color-picker.js +9 -0
- package/dist/components/inputs/combobox.js +8 -0
- package/dist/components/{date-picker.js → inputs/date-picker.js} +4 -4
- package/dist/components/inputs/date-picker.js.map +1 -0
- package/dist/components/inputs/file-upload.js +5 -0
- package/dist/components/{form.js → inputs/form.js} +2 -2
- package/dist/components/inputs/form.js.map +1 -0
- package/dist/components/inputs/input-otp.js +4 -0
- package/dist/components/inputs/input.d.ts +75 -0
- package/dist/components/inputs/input.js +6 -0
- package/dist/components/inputs/label.js +4 -0
- package/dist/components/{password-input.d.ts → inputs/password-input.d.ts} +2 -0
- package/dist/components/inputs/password-input.js +7 -0
- package/dist/components/inputs/radio-group.js +4 -0
- package/dist/components/inputs/rating.js +4 -0
- package/dist/components/{select.js → inputs/select.js} +2 -2
- package/dist/components/inputs/slider.js +4 -0
- package/dist/components/inputs/slug-input.js +8 -0
- package/dist/components/inputs/switch.js +4 -0
- package/dist/components/inputs/tag-input.js +5 -0
- package/dist/components/inputs/textarea.d.ts +67 -0
- package/dist/components/inputs/textarea.js +6 -0
- package/dist/{chunk-6DIDQ4TB.js → components/inputs/time-picker.js} +9 -7
- package/dist/components/inputs/time-picker.js.map +1 -0
- package/dist/components/inputs/translatable-field.d.ts +51 -0
- package/dist/components/inputs/translatable-field.js +4 -0
- package/dist/components/inputs/translatable-field.js.map +1 -0
- package/dist/components/layout/page-container.d.ts +96 -0
- package/dist/components/layout/page-container.js +5 -0
- package/dist/components/layout/page-container.js.map +1 -0
- package/dist/components/{breadcrumb.js → navigation/breadcrumb.js} +2 -2
- package/dist/components/{command.d.ts → navigation/command.d.ts} +1 -1
- package/dist/components/{command.js → navigation/command.js} +3 -3
- package/dist/components/{context-menu.js → navigation/context-menu.js} +2 -2
- package/dist/components/{dropdown-menu.js → navigation/dropdown-menu.js} +2 -2
- package/dist/components/{menubar.js → navigation/menubar.js} +2 -2
- package/dist/components/{navigation-menu.js → navigation/navigation-menu.js} +2 -2
- package/dist/components/{pagination.d.ts → navigation/pagination.d.ts} +2 -2
- package/dist/components/{pagination.js → navigation/pagination.js} +3 -3
- package/dist/components/navigation/tabs.js +4 -0
- package/dist/components/{alert-dialog.js → overlay/alert-dialog.js} +3 -3
- package/dist/components/{dialog.js → overlay/dialog.js} +2 -2
- package/dist/components/{drawer.js → overlay/drawer.js} +2 -2
- package/dist/components/{hover-card.js → overlay/hover-card.js} +2 -2
- package/dist/components/overlay/popover.js +4 -0
- package/dist/components/overlay/sheet.js +4 -0
- package/dist/components/overlay/sonner.js +3 -0
- package/dist/components/overlay/tooltip.js +4 -0
- package/dist/index.d.ts +84 -83
- package/dist/index.js +62 -60
- package/dist/providers/ui-provider.d.ts +80 -0
- package/dist/providers/ui-provider.js +3 -0
- package/dist/providers/ui-provider.js.map +1 -0
- package/package.json +22 -17
- package/dist/chunk-2C2HRGM7.js.map +0 -1
- package/dist/chunk-2TUWDXAC.js.map +0 -1
- package/dist/chunk-34ARZSNP.js.map +0 -1
- package/dist/chunk-35DNN46W.js.map +0 -1
- package/dist/chunk-35U6QG4P.js.map +0 -1
- package/dist/chunk-3EOHW4QN.js.map +0 -1
- package/dist/chunk-3VU56V66.js +0 -41
- package/dist/chunk-3VU56V66.js.map +0 -1
- package/dist/chunk-55E7D2HR.js.map +0 -1
- package/dist/chunk-67YUL2ZS.js.map +0 -1
- package/dist/chunk-6DIDQ4TB.js.map +0 -1
- package/dist/chunk-6GWVQB3Q.js.map +0 -1
- package/dist/chunk-75WZR6HF.js.map +0 -1
- package/dist/chunk-7IRLBU2I.js.map +0 -1
- package/dist/chunk-7RMTPT6O.js.map +0 -1
- package/dist/chunk-7XH3MGBR.js.map +0 -1
- package/dist/chunk-A3BB5ZOC.js.map +0 -1
- package/dist/chunk-BAQWGQJG.js.map +0 -1
- package/dist/chunk-BRSM3SZP.js.map +0 -1
- package/dist/chunk-C34KSTWA.js.map +0 -1
- package/dist/chunk-C5NZAOA7.js.map +0 -1
- package/dist/chunk-CUZR4JWM.js.map +0 -1
- package/dist/chunk-EWBCV7VA.js.map +0 -1
- package/dist/chunk-F2ZJLKDP.js.map +0 -1
- package/dist/chunk-FLWMT4DB.js.map +0 -1
- package/dist/chunk-FRKG7JQY.js.map +0 -1
- package/dist/chunk-G7HTZBUR.js.map +0 -1
- package/dist/chunk-IAWKX5W4.js.map +0 -1
- package/dist/chunk-INLM7UJC.js.map +0 -1
- package/dist/chunk-JAJMM32I.js.map +0 -1
- package/dist/chunk-JJSVA3TH.js.map +0 -1
- package/dist/chunk-JLTBUACL.js.map +0 -1
- package/dist/chunk-JRU2QX7T.js.map +0 -1
- package/dist/chunk-JXGRW2MR.js.map +0 -1
- package/dist/chunk-LMT327XH.js.map +0 -1
- package/dist/chunk-LTTNCAAA.js.map +0 -1
- package/dist/chunk-MJLFJPUG.js.map +0 -1
- package/dist/chunk-MZ2P566X.js.map +0 -1
- package/dist/chunk-N47H4MHX.js.map +0 -1
- package/dist/chunk-NNJTKHCE.js.map +0 -1
- package/dist/chunk-NPL2R5LD.js.map +0 -1
- package/dist/chunk-NU56GKGM.js.map +0 -1
- package/dist/chunk-P3M5TZD2.js.map +0 -1
- package/dist/chunk-PGWNOZDX.js.map +0 -1
- package/dist/chunk-QB3UWRZH.js.map +0 -1
- package/dist/chunk-R2CDE5DO.js.map +0 -1
- package/dist/chunk-RQNZDWY3.js.map +0 -1
- package/dist/chunk-S6PDRGR5.js.map +0 -1
- package/dist/chunk-TGYQ3AKH.js.map +0 -1
- package/dist/chunk-TJMK2KBE.js.map +0 -1
- package/dist/chunk-USIHM7FV.js.map +0 -1
- 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.map +0 -1
- package/dist/chunk-WS6E7HBT.js.map +0 -1
- package/dist/chunk-XOJJBNDX.js.map +0 -1
- package/dist/chunk-YBMEQZX7.js.map +0 -1
- package/dist/chunk-Z2QAABLM.js.map +0 -1
- package/dist/chunk-ZHEKDP5X.js.map +0 -1
- package/dist/chunk-ZPMXRW2A.js.map +0 -1
- package/dist/chunk-ZYEGBF7G.js.map +0 -1
- package/dist/components/accordion.js +0 -4
- package/dist/components/alert.js +0 -4
- package/dist/components/aspect-ratio.js +0 -3
- package/dist/components/avatar.js +0 -4
- package/dist/components/badge.js +0 -4
- package/dist/components/button.js +0 -4
- package/dist/components/calendar-category-badge.js +0 -5
- package/dist/components/calendar-event-chip.js.map +0 -1
- package/dist/components/calendar-event-sheet.js.map +0 -1
- package/dist/components/calendar-mini.js.map +0 -1
- package/dist/components/calendar-toolbar.js.map +0 -1
- package/dist/components/calendar.js +0 -5
- package/dist/components/card.js +0 -4
- package/dist/components/carousel.js +0 -5
- package/dist/components/chart.js.map +0 -1
- package/dist/components/checkbox.js +0 -4
- package/dist/components/color-picker.js +0 -7
- package/dist/components/combobox.js +0 -8
- package/dist/components/date-picker.js.map +0 -1
- package/dist/components/file-upload.js +0 -5
- package/dist/components/form.js.map +0 -1
- package/dist/components/input-otp.js +0 -4
- package/dist/components/input.d.ts +0 -38
- package/dist/components/input.js +0 -4
- package/dist/components/label.js +0 -4
- package/dist/components/password-input.js +0 -5
- package/dist/components/permission-grid.js +0 -5
- package/dist/components/popover.js +0 -4
- package/dist/components/progress.js +0 -4
- package/dist/components/radio-group.js +0 -4
- package/dist/components/rating.js +0 -4
- package/dist/components/resizable.js +0 -4
- package/dist/components/scope-tree.js +0 -5
- package/dist/components/scope-type-badge.js +0 -5
- package/dist/components/scroll-area.js +0 -4
- package/dist/components/separator.js +0 -4
- package/dist/components/sheet.js +0 -4
- package/dist/components/skeleton.js +0 -4
- package/dist/components/slider.js +0 -4
- package/dist/components/slug-input.js +0 -6
- package/dist/components/sonner.js +0 -3
- package/dist/components/stage-type-badge.js +0 -5
- package/dist/components/switch.js +0 -4
- package/dist/components/table.js +0 -4
- package/dist/components/tabs.js +0 -4
- package/dist/components/tag-input.js +0 -5
- package/dist/components/textarea.d.ts +0 -21
- package/dist/components/textarea.js +0 -4
- package/dist/components/time-picker.js +0 -8
- package/dist/components/time-picker.js.map +0 -1
- package/dist/components/toggle-group.js +0 -5
- package/dist/components/toggle.js +0 -4
- package/dist/components/tooltip.js +0 -4
- package/dist/components/workflow-category-badge.js +0 -5
- package/dist/components/workflow-diagram.js +0 -5
- package/dist/components/workflow-status-badge.js +0 -5
- package/dist/components/workflow-stepper.js +0 -4
- /package/dist/components/{accordion.d.ts → display/accordion.d.ts} +0 -0
- /package/dist/components/{accordion.js.map → display/accordion.js.map} +0 -0
- /package/dist/components/{aspect-ratio.d.ts → display/aspect-ratio.d.ts} +0 -0
- /package/dist/components/{aspect-ratio.js.map → display/aspect-ratio.js.map} +0 -0
- /package/dist/components/{avatar.d.ts → display/avatar.d.ts} +0 -0
- /package/dist/components/{avatar.js.map → display/avatar.js.map} +0 -0
- /package/dist/components/{badge.js.map → display/badge.js.map} +0 -0
- /package/dist/components/{card.d.ts → display/card.d.ts} +0 -0
- /package/dist/components/{card.js.map → display/card.js.map} +0 -0
- /package/dist/components/{carousel.js.map → display/carousel.js.map} +0 -0
- /package/dist/components/{chart.d.ts → display/chart.d.ts} +0 -0
- /package/dist/components/{collapsible.d.ts → display/collapsible.d.ts} +0 -0
- /package/dist/components/{collapsible.js.map → display/collapsible.js.map} +0 -0
- /package/dist/components/{resizable.d.ts → display/resizable.d.ts} +0 -0
- /package/dist/components/{resizable.js.map → display/resizable.js.map} +0 -0
- /package/dist/components/{scroll-area.d.ts → display/scroll-area.d.ts} +0 -0
- /package/dist/components/{scroll-area.js.map → display/scroll-area.js.map} +0 -0
- /package/dist/components/{separator.d.ts → display/separator.d.ts} +0 -0
- /package/dist/components/{separator.js.map → display/separator.js.map} +0 -0
- /package/dist/components/{table.d.ts → display/table.d.ts} +0 -0
- /package/dist/components/{table.js.map → display/table.js.map} +0 -0
- /package/dist/components/{toggle-group.d.ts → display/toggle-group.d.ts} +0 -0
- /package/dist/components/{toggle-group.js.map → display/toggle-group.js.map} +0 -0
- /package/dist/components/{toggle.d.ts → display/toggle.d.ts} +0 -0
- /package/dist/components/{toggle.js.map → display/toggle.js.map} +0 -0
- /package/dist/components/{calendar-category-badge.d.ts → domain/calendar/calendar-category-badge.d.ts} +0 -0
- /package/dist/components/{calendar-category-badge.js.map → domain/calendar/calendar-category-badge.js.map} +0 -0
- /package/dist/components/{calendar-event-chip.d.ts → domain/calendar/calendar-event-chip.d.ts} +0 -0
- /package/dist/components/{calendar-event-sheet.d.ts → domain/calendar/calendar-event-sheet.d.ts} +0 -0
- /package/dist/components/{calendar-mini.d.ts → domain/calendar/calendar-mini.d.ts} +0 -0
- /package/dist/components/{calendar-toolbar.d.ts → domain/calendar/calendar-toolbar.d.ts} +0 -0
- /package/dist/components/{calendar.d.ts → domain/calendar/calendar.d.ts} +0 -0
- /package/dist/components/{calendar.js.map → domain/calendar/calendar.js.map} +0 -0
- /package/dist/components/{permission-grid.d.ts → domain/rbac/permission-grid.d.ts} +0 -0
- /package/dist/components/{permission-grid.js.map → domain/rbac/permission-grid.js.map} +0 -0
- /package/dist/components/{scope-tree.d.ts → domain/rbac/scope-tree.d.ts} +0 -0
- /package/dist/components/{scope-tree.js.map → domain/rbac/scope-tree.js.map} +0 -0
- /package/dist/components/{scope-type-badge.d.ts → domain/rbac/scope-type-badge.d.ts} +0 -0
- /package/dist/components/{scope-type-badge.js.map → domain/rbac/scope-type-badge.js.map} +0 -0
- /package/dist/components/{stage-type-badge.d.ts → domain/workflow/stage-type-badge.d.ts} +0 -0
- /package/dist/components/{stage-type-badge.js.map → domain/workflow/stage-type-badge.js.map} +0 -0
- /package/dist/components/{workflow-category-badge.d.ts → domain/workflow/workflow-category-badge.d.ts} +0 -0
- /package/dist/components/{workflow-category-badge.js.map → domain/workflow/workflow-category-badge.js.map} +0 -0
- /package/dist/components/{workflow-diagram.d.ts → domain/workflow/workflow-diagram.d.ts} +0 -0
- /package/dist/components/{workflow-diagram.js.map → domain/workflow/workflow-diagram.js.map} +0 -0
- /package/dist/components/{workflow-status-badge.d.ts → domain/workflow/workflow-status-badge.d.ts} +0 -0
- /package/dist/components/{workflow-status-badge.js.map → domain/workflow/workflow-status-badge.js.map} +0 -0
- /package/dist/components/{workflow-stepper.d.ts → domain/workflow/workflow-stepper.d.ts} +0 -0
- /package/dist/components/{workflow-stepper.js.map → domain/workflow/workflow-stepper.js.map} +0 -0
- /package/dist/components/{alert.js.map → feedback/alert.js.map} +0 -0
- /package/dist/components/{progress.d.ts → feedback/progress.d.ts} +0 -0
- /package/dist/components/{progress.js.map → feedback/progress.js.map} +0 -0
- /package/dist/components/{skeleton.d.ts → feedback/skeleton.d.ts} +0 -0
- /package/dist/components/{skeleton.js.map → feedback/skeleton.js.map} +0 -0
- /package/dist/components/{button.js.map → inputs/button.js.map} +0 -0
- /package/dist/components/{checkbox.d.ts → inputs/checkbox.d.ts} +0 -0
- /package/dist/components/{checkbox.js.map → inputs/checkbox.js.map} +0 -0
- /package/dist/components/{color-picker.d.ts → inputs/color-picker.d.ts} +0 -0
- /package/dist/components/{color-picker.js.map → inputs/color-picker.js.map} +0 -0
- /package/dist/components/{combobox.d.ts → inputs/combobox.d.ts} +0 -0
- /package/dist/components/{combobox.js.map → inputs/combobox.js.map} +0 -0
- /package/dist/components/{date-picker.d.ts → inputs/date-picker.d.ts} +0 -0
- /package/dist/components/{file-upload.d.ts → inputs/file-upload.d.ts} +0 -0
- /package/dist/components/{file-upload.js.map → inputs/file-upload.js.map} +0 -0
- /package/dist/components/{form.d.ts → inputs/form.d.ts} +0 -0
- /package/dist/components/{input-otp.d.ts → inputs/input-otp.d.ts} +0 -0
- /package/dist/components/{input-otp.js.map → inputs/input-otp.js.map} +0 -0
- /package/dist/components/{input.js.map → inputs/input.js.map} +0 -0
- /package/dist/components/{label.d.ts → inputs/label.d.ts} +0 -0
- /package/dist/components/{label.js.map → inputs/label.js.map} +0 -0
- /package/dist/components/{password-input.js.map → inputs/password-input.js.map} +0 -0
- /package/dist/components/{radio-group.d.ts → inputs/radio-group.d.ts} +0 -0
- /package/dist/components/{radio-group.js.map → inputs/radio-group.js.map} +0 -0
- /package/dist/components/{rating.d.ts → inputs/rating.d.ts} +0 -0
- /package/dist/components/{rating.js.map → inputs/rating.js.map} +0 -0
- /package/dist/components/{select.d.ts → inputs/select.d.ts} +0 -0
- /package/dist/components/{select.js.map → inputs/select.js.map} +0 -0
- /package/dist/components/{slider.d.ts → inputs/slider.d.ts} +0 -0
- /package/dist/components/{slider.js.map → inputs/slider.js.map} +0 -0
- /package/dist/components/{slug-input.d.ts → inputs/slug-input.d.ts} +0 -0
- /package/dist/components/{slug-input.js.map → inputs/slug-input.js.map} +0 -0
- /package/dist/components/{switch.d.ts → inputs/switch.d.ts} +0 -0
- /package/dist/components/{switch.js.map → inputs/switch.js.map} +0 -0
- /package/dist/components/{tag-input.d.ts → inputs/tag-input.d.ts} +0 -0
- /package/dist/components/{tag-input.js.map → inputs/tag-input.js.map} +0 -0
- /package/dist/components/{textarea.js.map → inputs/textarea.js.map} +0 -0
- /package/dist/components/{time-picker.d.ts → inputs/time-picker.d.ts} +0 -0
- /package/dist/components/{breadcrumb.d.ts → navigation/breadcrumb.d.ts} +0 -0
- /package/dist/components/{breadcrumb.js.map → navigation/breadcrumb.js.map} +0 -0
- /package/dist/components/{command.js.map → navigation/command.js.map} +0 -0
- /package/dist/components/{context-menu.d.ts → navigation/context-menu.d.ts} +0 -0
- /package/dist/components/{context-menu.js.map → navigation/context-menu.js.map} +0 -0
- /package/dist/components/{dropdown-menu.d.ts → navigation/dropdown-menu.d.ts} +0 -0
- /package/dist/components/{dropdown-menu.js.map → navigation/dropdown-menu.js.map} +0 -0
- /package/dist/components/{menubar.d.ts → navigation/menubar.d.ts} +0 -0
- /package/dist/components/{menubar.js.map → navigation/menubar.js.map} +0 -0
- /package/dist/components/{navigation-menu.d.ts → navigation/navigation-menu.d.ts} +0 -0
- /package/dist/components/{navigation-menu.js.map → navigation/navigation-menu.js.map} +0 -0
- /package/dist/components/{pagination.js.map → navigation/pagination.js.map} +0 -0
- /package/dist/components/{tabs.d.ts → navigation/tabs.d.ts} +0 -0
- /package/dist/components/{tabs.js.map → navigation/tabs.js.map} +0 -0
- /package/dist/components/{alert-dialog.d.ts → overlay/alert-dialog.d.ts} +0 -0
- /package/dist/components/{alert-dialog.js.map → overlay/alert-dialog.js.map} +0 -0
- /package/dist/components/{dialog.d.ts → overlay/dialog.d.ts} +0 -0
- /package/dist/components/{dialog.js.map → overlay/dialog.js.map} +0 -0
- /package/dist/components/{drawer.d.ts → overlay/drawer.d.ts} +0 -0
- /package/dist/components/{drawer.js.map → overlay/drawer.js.map} +0 -0
- /package/dist/components/{hover-card.d.ts → overlay/hover-card.d.ts} +0 -0
- /package/dist/components/{hover-card.js.map → overlay/hover-card.js.map} +0 -0
- /package/dist/components/{popover.d.ts → overlay/popover.d.ts} +0 -0
- /package/dist/components/{popover.js.map → overlay/popover.js.map} +0 -0
- /package/dist/components/{sheet.d.ts → overlay/sheet.d.ts} +0 -0
- /package/dist/components/{sheet.js.map → overlay/sheet.js.map} +0 -0
- /package/dist/components/{sonner.d.ts → overlay/sonner.d.ts} +0 -0
- /package/dist/components/{sonner.js.map → overlay/sonner.js.map} +0 -0
- /package/dist/components/{tooltip.d.ts → overlay/tooltip.d.ts} +0 -0
- /package/dist/components/{tooltip.js.map → overlay/tooltip.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/overlay/hover-card.tsx"],"names":[],"mappings":";;;;AAqCA,SAAS,SAAA,CAAU;AAAA,EACjB,GAAG;AACL,CAAA,EAAyD;AACvD,EAAA,2BAA2B,kBAAA,CAAA,IAAA,EAAnB,EAAwB,WAAA,EAAU,YAAA,EAAc,GAAG,KAAA,EAAO,CAAA;AACpE;AAGA,SAAS,gBAAA,CAAiB;AAAA,EACxB,GAAG;AACL,CAAA,EAA4D;AAC1D,EAAA,2BACsB,kBAAA,CAAA,OAAA,EAAnB,EAA2B,WAAA,EAAU,oBAAA,EAAsB,GAAG,KAAA,EAAO,CAAA;AAE1E;AAGA,SAAS,gBAAA,CAAiB;AAAA,EACxB,SAAA;AAAA,EACA,KAAA,GAAQ,QAAA;AAAA,EACR,UAAA,GAAa,CAAA;AAAA,EACb,GAAG;AACL,CAAA,EAA4D;AAC1D,EAAA,uBACE,GAAA,CAAoB,kBAAA,CAAA,MAAA,EAAnB,EAA0B,WAAA,EAAU,mBAAA,EACnC,QAAA,kBAAA,GAAA;AAAA,IAAoB,kBAAA,CAAA,OAAA;AAAA,IAAnB;AAAA,MACC,WAAA,EAAU,oBAAA;AAAA,MACV,KAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,meAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN,EACF,CAAA;AAEJ","file":"chunk-CLYBVDEQ.js","sourcesContent":["import * as React from \"react\";\nimport * as HoverCardPrimitive from \"@radix-ui/react-hover-card\";\n\nimport { cn } from \"../../lib/utils\";\n\n/**\n * Hover-activated floating card built on Radix UI HoverCard.\n *\n * Displays a preview card when the user hovers over a trigger element.\n * Ideal for showing user profiles, link previews, or supplementary info\n * without requiring a click.\n *\n * @example\n * ```tsx\n * <HoverCard>\n * <HoverCardTrigger asChild>\n * <a href=\"/user/john\" className=\"underline\">\n * @john\n * </a>\n * </HoverCardTrigger>\n * <HoverCardContent>\n * <div className=\"flex gap-4\">\n * <Avatar>\n * <AvatarImage src=\"/avatars/john.png\" />\n * <AvatarFallback>JD</AvatarFallback>\n * </Avatar>\n * <div>\n * <h4 className=\"text-sm font-semibold\">John Doe</h4>\n * <p className=\"text-sm text-muted-foreground\">\n * Software Engineer\n * </p>\n * </div>\n * </div>\n * </HoverCardContent>\n * </HoverCard>\n * ```\n */\nfunction HoverCard({\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Root>) {\n return <HoverCardPrimitive.Root data-slot=\"hover-card\" {...props} />;\n}\n\n/** Element that shows the hover card on mouse enter. Use `asChild` to merge into your own element. */\nfunction HoverCardTrigger({\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Trigger>) {\n return (\n <HoverCardPrimitive.Trigger data-slot=\"hover-card-trigger\" {...props} />\n );\n}\n\n/** Floating content panel that appears on hover. */\nfunction HoverCardContent({\n className,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Content>) {\n return (\n <HoverCardPrimitive.Portal data-slot=\"hover-card-portal\">\n <HoverCardPrimitive.Content\n data-slot=\"hover-card-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-64 origin-(--radix-hover-card-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden\",\n className,\n )}\n {...props}\n />\n </HoverCardPrimitive.Portal>\n );\n}\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent };"]}
|
|
@@ -91,5 +91,5 @@ function AlertDescription({
|
|
|
91
91
|
}
|
|
92
92
|
|
|
93
93
|
export { Alert, AlertDescription, AlertTitle };
|
|
94
|
-
//# sourceMappingURL=chunk-
|
|
95
|
-
//# sourceMappingURL=chunk-
|
|
94
|
+
//# sourceMappingURL=chunk-CNS3OMZ7.js.map
|
|
95
|
+
//# sourceMappingURL=chunk-CNS3OMZ7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/feedback/alert.tsx"],"names":[],"mappings":"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","file":"chunk-CNS3OMZ7.js","sourcesContent":["import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\nimport type { UIColor } from \"../../lib/types\";\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current\",\n {\n variants: {\n variant: {\n // Bordered card style — color applied via compoundVariants\n default: \"\",\n // Legacy — maps to default + destructive color (backward compatible)\n destructive: \"\",\n // Filled background style — color applied via compoundVariants\n soft: \"\",\n },\n color: {\n primary: \"\",\n destructive: \"\",\n success: \"\",\n warning: \"\",\n info: \"\",\n },\n },\n compoundVariants: [\n // ── Default (bordered) × color ──\n { variant: \"default\", color: \"primary\", className: \"bg-card text-card-foreground\" },\n { variant: \"default\", color: \"destructive\", className: \"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90\" },\n { variant: \"default\", color: \"success\", className: \"text-success bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-success/90\" },\n { variant: \"default\", color: \"warning\", className: \"text-warning bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-warning/90\" },\n { variant: \"default\", color: \"info\", className: \"text-info bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-info/90\" },\n\n // ── Legacy destructive variant (backward compat) ──\n { variant: \"destructive\", className: \"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90\" },\n\n // ── Soft (filled bg) × color ──\n { variant: \"soft\", color: \"primary\", className: \"bg-primary/10 text-primary border-primary/20 [&>svg]:text-current *:data-[slot=alert-description]:text-primary/90\" },\n { variant: \"soft\", color: \"destructive\", className: \"bg-destructive/10 text-destructive border-destructive/20 [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90\" },\n { variant: \"soft\", color: \"success\", className: \"bg-success/10 text-success border-success/20 [&>svg]:text-current *:data-[slot=alert-description]:text-success/90\" },\n { variant: \"soft\", color: \"warning\", className: \"bg-warning/10 text-warning border-warning/20 [&>svg]:text-current *:data-[slot=alert-description]:text-warning/90\" },\n { variant: \"soft\", color: \"info\", className: \"bg-info/10 text-info border-info/20 [&>svg]:text-current *:data-[slot=alert-description]:text-info/90\" },\n ],\n defaultVariants: {\n variant: \"default\",\n color: \"primary\",\n },\n },\n);\n\ninterface AlertProps\n extends React.ComponentProps<\"div\">,\n Omit<VariantProps<typeof alertVariants>, \"color\"> {\n /**\n * Semantic color intent.\n *\n * @default \"primary\"\n * @example\n * ```tsx\n * <Alert color=\"success\">Operation completed</Alert>\n * <Alert color=\"warning\">Check your input</Alert>\n * <Alert variant=\"soft\" color=\"info\">Tip</Alert>\n * ```\n */\n color?: UIColor;\n}\n\n/**\n * Static alert banner for displaying important messages.\n *\n * Supports semantic colors via `color` prop and two visual styles: `default` (bordered)\n * and `soft` (filled background). All existing `variant=\"destructive\"` usage continues to work.\n *\n * @example\n * ```tsx\n * // Default (bordered)\n * <Alert>\n * <InfoIcon className=\"size-4\" />\n * <AlertTitle>Heads up!</AlertTitle>\n * <AlertDescription>You can add components using the CLI.</AlertDescription>\n * </Alert>\n *\n * // Semantic colors\n * <Alert color=\"success\">\n * <CheckIcon className=\"size-4\" />\n * <AlertTitle>Success</AlertTitle>\n * <AlertDescription>Changes saved successfully.</AlertDescription>\n * </Alert>\n *\n * // Soft variant (filled background)\n * <Alert variant=\"soft\" color=\"warning\">\n * <AlertTriangleIcon className=\"size-4\" />\n * <AlertTitle>Warning</AlertTitle>\n * <AlertDescription>This action cannot be undone.</AlertDescription>\n * </Alert>\n *\n * // Legacy (still works)\n * <Alert variant=\"destructive\">\n * <AlertCircleIcon className=\"size-4\" />\n * <AlertTitle>Error</AlertTitle>\n * <AlertDescription>Session expired.</AlertDescription>\n * </Alert>\n * ```\n */\nfunction Alert({\n className,\n variant,\n color,\n ...props\n}: AlertProps) {\n return (\n <div\n data-slot=\"alert\"\n role=\"alert\"\n className={cn(alertVariants({ variant, color }), className)}\n {...props}\n />\n );\n}\n\n/** Bold title text within an Alert. Rendered in the second grid column when an icon is present. */\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-title\"\n className={cn(\n \"col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Descriptive body text within an Alert, rendered below the title. */\nfunction AlertDescription({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn(\n \"text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Alert, AlertTitle, AlertDescription };\n"]}
|
|
@@ -50,5 +50,5 @@ function TooltipContent({
|
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };
|
|
53
|
-
//# sourceMappingURL=chunk-
|
|
54
|
-
//# sourceMappingURL=chunk-
|
|
53
|
+
//# sourceMappingURL=chunk-CSYH7P6N.js.map
|
|
54
|
+
//# sourceMappingURL=chunk-CSYH7P6N.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/overlay/tooltip.tsx"],"names":[],"mappings":";;;;AAMA,SAAS,eAAA,CAAgB;AAAA,EACvB,aAAA,GAAgB,CAAA;AAAA,EAChB,GAAG;AACL,CAAA,EAA2D;AACzD,EAAA,uBACE,GAAA;AAAA,IAAkB,gBAAA,CAAA,QAAA;AAAA,IAAjB;AAAA,MACC,WAAA,EAAU,kBAAA;AAAA,MACV,aAAA;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAuBA,SAAS,OAAA,CAAQ;AAAA,EACf,GAAG;AACL,CAAA,EAAuD;AACrD,EAAA,uBACE,GAAA,CAAC,mBACC,QAAA,kBAAA,GAAA,CAAkB,gBAAA,CAAA,IAAA,EAAjB,EAAsB,WAAA,EAAU,SAAA,EAAW,GAAG,KAAA,EAAO,CAAA,EACxD,CAAA;AAEJ;AAGA,SAAS,cAAA,CAAe;AAAA,EACtB,GAAG;AACL,CAAA,EAA0D;AACxD,EAAA,2BAAyB,gBAAA,CAAA,OAAA,EAAjB,EAAyB,WAAA,EAAU,iBAAA,EAAmB,GAAG,KAAA,EAAO,CAAA;AAC1E;AAGA,SAAS,cAAA,CAAe;AAAA,EACtB,SAAA;AAAA,EACA,UAAA,GAAa,CAAA;AAAA,EACb,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA0D;AACxD,EAAA,uBACE,GAAA,CAAkB,yBAAjB,EACC,QAAA,kBAAA,IAAA;AAAA,IAAkB,gBAAA,CAAA,OAAA;AAAA,IAAjB;AAAA,MACC,WAAA,EAAU,iBAAA;AAAA,MACV,UAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,waAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,wBACD,GAAA,CAAkB,gBAAA,CAAA,KAAA,EAAjB,EAAuB,SAAA,EAAU,8FAAA,EAA+F;AAAA;AAAA;AAAA,GACnI,EACF,CAAA;AAEJ","file":"chunk-CSYH7P6N.js","sourcesContent":["import * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\n\nimport { cn } from \"../../lib/utils\";\n\n/** Provider that configures shared tooltip settings like delay duration. */\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delayDuration={delayDuration}\n {...props}\n />\n );\n}\n\n/**\n * Tooltip component built on Radix UI Tooltip.\n *\n * Displays a short informational label when the user hovers over or focuses\n * an element. Includes a built-in `TooltipProvider` with zero delay.\n * Renders with an arrow pointer for visual anchoring.\n *\n * @example\n * ```tsx\n * <Tooltip>\n * <TooltipTrigger asChild>\n * <Button variant=\"ghost\" size=\"icon\">\n * <InfoIcon className=\"size-4\" />\n * </Button>\n * </TooltipTrigger>\n * <TooltipContent>\n * <p>This is a helpful tooltip</p>\n * </TooltipContent>\n * </Tooltip>\n * ```\n */\nfunction Tooltip({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return (\n <TooltipProvider>\n <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n </TooltipProvider>\n );\n}\n\n/** Element that shows the tooltip on hover/focus. Use `asChild` to merge into your own element. */\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />;\n}\n\n/** Floating label that appears near the trigger. Includes an arrow indicator. */\nfunction TooltipContent({\n className,\n sideOffset = 0,\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n \"bg-primary text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance\",\n className,\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]\" />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n );\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };"]}
|
|
@@ -207,5 +207,5 @@ function ContextMenuShortcut({
|
|
|
207
207
|
}
|
|
208
208
|
|
|
209
209
|
export { ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger };
|
|
210
|
-
//# sourceMappingURL=chunk-
|
|
211
|
-
//# sourceMappingURL=chunk-
|
|
210
|
+
//# sourceMappingURL=chunk-DEKVLLTL.js.map
|
|
211
|
+
//# sourceMappingURL=chunk-DEKVLLTL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/navigation/context-menu.tsx"],"names":[],"mappings":"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","file":"chunk-DEKVLLTL.js","sourcesContent":["import * as React from \"react\";\nimport * as ContextMenuPrimitive from \"@radix-ui/react-context-menu\";\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\n/**\n * Right-click context menu built on Radix UI ContextMenu.\n *\n * Displays a menu of actions when the user right-clicks (or long-presses)\n * on the trigger area. Supports items, checkbox items, radio items,\n * sub-menus, separators, labels, and shortcuts.\n *\n * @example\n * ```tsx\n * <ContextMenu>\n * <ContextMenuTrigger className=\"flex h-40 w-64 items-center justify-center rounded-md border border-dashed\">\n * Right click here\n * </ContextMenuTrigger>\n * <ContextMenuContent>\n * <ContextMenuItem>\n * Copy\n * <ContextMenuShortcut>Ctrl+C</ContextMenuShortcut>\n * </ContextMenuItem>\n * <ContextMenuItem>\n * Paste\n * <ContextMenuShortcut>Ctrl+V</ContextMenuShortcut>\n * </ContextMenuItem>\n * <ContextMenuSeparator />\n * <ContextMenuItem variant=\"destructive\">Delete</ContextMenuItem>\n * </ContextMenuContent>\n * </ContextMenu>\n * ```\n */\nfunction ContextMenu({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Root>) {\n return <ContextMenuPrimitive.Root data-slot=\"context-menu\" {...props} />;\n}\n\n/** Area that opens the context menu on right-click. */\nfunction ContextMenuTrigger({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Trigger>) {\n return (\n <ContextMenuPrimitive.Trigger data-slot=\"context-menu-trigger\" {...props} />\n );\n}\n\n/** Groups related context menu items together for accessibility. */\nfunction ContextMenuGroup({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Group>) {\n return (\n <ContextMenuPrimitive.Group data-slot=\"context-menu-group\" {...props} />\n );\n}\n\n/** Portal that renders context menu content outside the DOM hierarchy. */\nfunction ContextMenuPortal({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Portal>) {\n return (\n <ContextMenuPrimitive.Portal data-slot=\"context-menu-portal\" {...props} />\n );\n}\n\n/** Container for a nested sub-menu within the context menu. */\nfunction ContextMenuSub({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Sub>) {\n return <ContextMenuPrimitive.Sub data-slot=\"context-menu-sub\" {...props} />;\n}\n\n/** Container for radio context menu items where only one can be selected at a time. */\nfunction ContextMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup>) {\n return (\n <ContextMenuPrimitive.RadioGroup\n data-slot=\"context-menu-radio-group\"\n {...props}\n />\n );\n}\n\n/** Menu item that opens a sub-menu on hover. Displays a chevron indicator. */\nfunction ContextMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n}) {\n return (\n <ContextMenuPrimitive.SubTrigger\n data-slot=\"context-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto\" />\n </ContextMenuPrimitive.SubTrigger>\n );\n}\n\n/** Floating container for sub-menu items. */\nfunction ContextMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubContent>) {\n return (\n <ContextMenuPrimitive.SubContent\n data-slot=\"context-menu-sub-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Floating container for context menu items, positioned at the cursor location. */\nfunction ContextMenuContent({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Content>) {\n return (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Content\n data-slot=\"context-menu-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-context-menu-content-available-height) min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md\",\n className,\n )}\n {...props}\n />\n </ContextMenuPrimitive.Portal>\n );\n}\n\n/** Actionable menu item. Set `variant=\"destructive\"` for dangerous actions, `inset` for left-padding alignment. */\nfunction ContextMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Item> & {\n inset?: boolean;\n variant?: \"default\" | \"destructive\";\n}) {\n return (\n <ContextMenuPrimitive.Item\n data-slot=\"context-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Menu item with a checkbox indicator for toggling options. */\nfunction ContextMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem>) {\n return (\n <ContextMenuPrimitive.CheckboxItem\n data-slot=\"context-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n );\n}\n\n/** Menu item with a radio indicator for single-selection groups. */\nfunction ContextMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioItem>) {\n return (\n <ContextMenuPrimitive.RadioItem\n data-slot=\"context-menu-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n );\n}\n\n/** Non-interactive label used to title a group of menu items. */\nfunction ContextMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Label> & {\n inset?: boolean;\n}) {\n return (\n <ContextMenuPrimitive.Label\n data-slot=\"context-menu-label\"\n data-inset={inset}\n className={cn(\n \"text-foreground px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Visual divider between groups of menu items. */\nfunction ContextMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Separator>) {\n return (\n <ContextMenuPrimitive.Separator\n data-slot=\"context-menu-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n );\n}\n\n/** Keyboard shortcut hint displayed at the end of a menu item. */\nfunction ContextMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"context-menu-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n ContextMenu,\n ContextMenuTrigger,\n ContextMenuContent,\n ContextMenuItem,\n ContextMenuCheckboxItem,\n ContextMenuRadioItem,\n ContextMenuLabel,\n ContextMenuSeparator,\n ContextMenuShortcut,\n ContextMenuGroup,\n ContextMenuPortal,\n ContextMenuSub,\n ContextMenuSubContent,\n ContextMenuSubTrigger,\n ContextMenuRadioGroup,\n};"]}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { useUILocales, resolveTranslatableConfig } from './chunk-5K6RO5R3.js';
|
|
2
|
+
import { TranslatableField } from './chunk-YU55YBID.js';
|
|
3
|
+
import { cn } from './chunk-DGPY4WP3.js';
|
|
4
|
+
import * as React from 'react';
|
|
5
|
+
import { jsx } from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
var textareaClass = "resize-none border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-input-background px-3 py-2 text-base transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm";
|
|
8
|
+
var Textarea = React.forwardRef(
|
|
9
|
+
(props, ref) => {
|
|
10
|
+
const { className, translatable, ...rest } = props;
|
|
11
|
+
const providerLocales = useUILocales();
|
|
12
|
+
if (translatable !== void 0) {
|
|
13
|
+
const config = resolveTranslatableConfig(translatable, providerLocales);
|
|
14
|
+
if (!config) {
|
|
15
|
+
const { value: _v, onChange: _oc, ...textareaRest3 } = rest;
|
|
16
|
+
return /* @__PURE__ */ jsx(
|
|
17
|
+
"textarea",
|
|
18
|
+
{
|
|
19
|
+
ref,
|
|
20
|
+
"data-slot": "textarea",
|
|
21
|
+
className: cn(textareaClass, className),
|
|
22
|
+
...textareaRest3
|
|
23
|
+
}
|
|
24
|
+
);
|
|
25
|
+
}
|
|
26
|
+
const { value: value2 = {}, onChange: onChange2, errors, ...textareaRest2 } = rest;
|
|
27
|
+
return /* @__PURE__ */ jsx(
|
|
28
|
+
TranslatableField,
|
|
29
|
+
{
|
|
30
|
+
config,
|
|
31
|
+
value: value2,
|
|
32
|
+
onChange: onChange2 ?? (() => {
|
|
33
|
+
}),
|
|
34
|
+
errors,
|
|
35
|
+
children: ({ value: localeValue, onChange: localeChange, fallbackPlaceholder, hasError }) => /* @__PURE__ */ jsx(
|
|
36
|
+
"textarea",
|
|
37
|
+
{
|
|
38
|
+
ref,
|
|
39
|
+
"data-slot": "textarea",
|
|
40
|
+
"data-translatable": true,
|
|
41
|
+
className: cn(textareaClass, className),
|
|
42
|
+
value: localeValue,
|
|
43
|
+
placeholder: fallbackPlaceholder ?? textareaRest2.placeholder,
|
|
44
|
+
onChange: (e) => localeChange(e.target.value),
|
|
45
|
+
...textareaRest2,
|
|
46
|
+
"aria-invalid": hasError || textareaRest2["aria-invalid"] || void 0
|
|
47
|
+
}
|
|
48
|
+
)
|
|
49
|
+
}
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
const { value, onChange, ...textareaRest } = rest;
|
|
53
|
+
return /* @__PURE__ */ jsx(
|
|
54
|
+
"textarea",
|
|
55
|
+
{
|
|
56
|
+
ref,
|
|
57
|
+
"data-slot": "textarea",
|
|
58
|
+
className: cn(textareaClass, className),
|
|
59
|
+
value,
|
|
60
|
+
onChange,
|
|
61
|
+
...textareaRest
|
|
62
|
+
}
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
);
|
|
66
|
+
Textarea.displayName = "Textarea";
|
|
67
|
+
|
|
68
|
+
export { Textarea };
|
|
69
|
+
//# sourceMappingURL=chunk-DNPRGSOD.js.map
|
|
70
|
+
//# sourceMappingURL=chunk-DNPRGSOD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/inputs/textarea.tsx"],"names":["textareaRest","value","onChange"],"mappings":";;;;;;AAsDA,IAAM,aAAA,GACJ,4cAAA;AAyBF,IAAM,QAAA,GAAiB,KAAA,CAAA,UAAA;AAAA,EACrB,CAAC,OAAO,GAAA,KAAQ;AACd,IAAA,MAAM,EAAE,SAAA,EAAW,YAAA,EAAc,GAAG,MAAK,GAAI,KAAA;AAE7C,IAAA,MAAM,kBAAkB,YAAA,EAAa;AAGrC,IAAA,IAAI,iBAAiB,MAAA,EAAW;AAC9B,MAAA,MAAM,MAAA,GAAS,yBAAA,CAA0B,YAAA,EAAc,eAAe,CAAA;AAGtE,MAAA,IAAI,CAAC,MAAA,EAAQ;AACX,QAAA,MAAM,EAAE,KAAA,EAAO,EAAA,EAAI,UAAU,GAAA,EAAK,GAAGA,eAAa,GAAI,IAAA;AACtD,QAAA,uBACE,GAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,GAAA;AAAA,YACA,WAAA,EAAU,UAAA;AAAA,YACV,SAAA,EAAW,EAAA,CAAG,aAAA,EAAe,SAAS,CAAA;AAAA,YACrC,GAAIA;AAAA;AAAA,SACP;AAAA,MAEJ;AAEA,MAAA,MAAM,EAAE,KAAA,EAAAC,MAAAA,GAAQ,EAAC,EAAG,UAAAC,SAAAA,EAAU,MAAA,EAAQ,GAAGF,aAAAA,EAAa,GAAI,IAAA;AAE1D,MAAA,uBACE,GAAA;AAAA,QAAC,iBAAA;AAAA,QAAA;AAAA,UACC,MAAA;AAAA,UACA,KAAA,EAAOC,MAAAA;AAAA,UACP,QAAA,EAAUC,cAAa,MAAM;AAAA,UAAC,CAAA,CAAA;AAAA,UAC9B,MAAA;AAAA,UAEC,QAAA,EAAA,CAAC,EAAE,KAAA,EAAO,WAAA,EAAa,UAAU,YAAA,EAAc,mBAAA,EAAqB,UAAS,qBAC5E,GAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,GAAA;AAAA,cACA,WAAA,EAAU,UAAA;AAAA,cACV,mBAAA,EAAiB,IAAA;AAAA,cACjB,SAAA,EAAW,EAAA,CAAG,aAAA,EAAe,SAAS,CAAA;AAAA,cACtC,KAAA,EAAO,WAAA;AAAA,cACP,WAAA,EAAa,uBAAwBF,aAAAA,CAAmE,WAAA;AAAA,cACxG,UAAU,CAAC,CAAA,KAAM,YAAA,CAAa,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,cAC3C,GAAIA,aAAAA;AAAA,cACL,cAAA,EAAc,QAAA,IAAaA,aAAAA,CAAmE,cAAc,CAAA,IAAK;AAAA;AAAA;AACnH;AAAA,OAEJ;AAAA,IAEJ;AAGA,IAAA,MAAM,EAAE,KAAA,EAAO,QAAA,EAAU,GAAG,cAAa,GAAI,IAAA;AAC7C,IAAA,uBACE,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,WAAA,EAAU,UAAA;AAAA,QACV,SAAA,EAAW,EAAA,CAAG,aAAA,EAAe,SAAS,CAAA;AAAA,QACtC,KAAA;AAAA,QACA,QAAA;AAAA,QACC,GAAI;AAAA;AAAA,KACP;AAAA,EAEJ;AACF;AACA,QAAA,CAAS,WAAA,GAAc,UAAA","file":"chunk-DNPRGSOD.js","sourcesContent":["import * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\nimport { TranslatableField } from './translatable-field';\nimport { useUILocales, resolveTranslatableConfig } from '../../providers/ui-provider';\nimport type { TranslatableConfig, TranslatableValue } from '../../providers/ui-provider';\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\ntype NativeTextareaProps = Omit<React.ComponentProps<'textarea'>, 'value' | 'onChange'>;\n\ninterface StandardTextareaProps extends NativeTextareaProps {\n /** Translatable mode disabled (default). */\n translatable?: never;\n value?: string;\n onChange?: React.ChangeEventHandler<HTMLTextAreaElement>;\n}\n\ninterface TranslatableTextareaProps extends NativeTextareaProps {\n /**\n * Enable locale-switching tabs on this textarea.\n * - `true` — inherit UIProvider's locale config\n * - `object` — override locales/defaultLocale/fallbackLocale per field\n *\n * @example\n * ```tsx\n * // Uses UIProvider config\n * <Textarea translatable value={val} onChange={setVal} />\n *\n * // Custom per-field config\n * <Textarea\n * translatable={{ locales: { en: 'English', vi: 'Tiếng Việt' }, fallbackLocale: 'en' }}\n * value={val}\n * onChange={setVal}\n * />\n * ```\n */\n translatable: TranslatableConfig;\n value?: TranslatableValue;\n onChange?: (value: TranslatableValue) => void;\n /**\n * Per-locale validation errors. Truthy string = that locale is invalid.\n * The active locale's error is forwarded as `aria-invalid` on the textarea;\n * all locale tabs with errors show a red dot indicator.\n *\n * @example `{ en: 'Required', vi: 'Too long (120/100)' }`\n */\n errors?: Partial<Record<string, string>>;\n}\n\nexport type TextareaProps = StandardTextareaProps | TranslatableTextareaProps;\n\n// ─── Base class ───────────────────────────────────────────────────────────────\n\nconst textareaClass =\n \"resize-none border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-input-background px-3 py-2 text-base transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\";\n\n// ─── Component ────────────────────────────────────────────────────────────────\n\n/**\n * Multi-line text input with auto-sizing via `field-sizing-content`.\n * Supports translatable mode via the `translatable` prop.\n *\n * @example\n * ```tsx\n * // Standard\n * <Textarea placeholder=\"Enter a description...\" />\n * <Textarea value={content} onChange={(e) => setContent(e.target.value)} />\n *\n * // Translatable — uses UIProvider's locale config\n * <Textarea translatable value={val} onChange={setVal} />\n *\n * // Translatable — custom config\n * <Textarea\n * translatable={{ locales: { en: 'English', vi: 'Tiếng Việt' }, fallbackLocale: 'en' }}\n * value={val}\n * onChange={setVal}\n * />\n * ```\n */\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n (props, ref) => {\n const { className, translatable, ...rest } = props as TranslatableTextareaProps & { className?: string };\n\n const providerLocales = useUILocales();\n\n // ── Translatable mode ──────────────────────────────────────────────────\n if (translatable !== undefined) {\n const config = resolveTranslatableConfig(translatable, providerLocales);\n\n // Fallback: if no locale config available, render standard textarea\n if (!config) {\n const { value: _v, onChange: _oc, ...textareaRest } = rest as TranslatableTextareaProps;\n return (\n <textarea\n ref={ref}\n data-slot=\"textarea\"\n className={cn(textareaClass, className)}\n {...(textareaRest as NativeTextareaProps)}\n />\n );\n }\n\n const { value = {}, onChange, errors, ...textareaRest } = rest as TranslatableTextareaProps;\n\n return (\n <TranslatableField\n config={config}\n value={value as TranslatableValue}\n onChange={onChange ?? (() => {})}\n errors={errors}\n >\n {({ value: localeValue, onChange: localeChange, fallbackPlaceholder, hasError }) => (\n <textarea\n ref={ref}\n data-slot=\"textarea\"\n data-translatable\n className={cn(textareaClass, className)}\n value={localeValue}\n placeholder={fallbackPlaceholder ?? (textareaRest as React.TextareaHTMLAttributes<HTMLTextAreaElement>).placeholder}\n onChange={(e) => localeChange(e.target.value)}\n {...(textareaRest as React.TextareaHTMLAttributes<HTMLTextAreaElement>)}\n aria-invalid={hasError || (textareaRest as React.TextareaHTMLAttributes<HTMLTextAreaElement>)['aria-invalid'] || undefined}\n />\n )}\n </TranslatableField>\n );\n }\n\n // ── Standard mode ──────────────────────────────────────────────────────\n const { value, onChange, ...textareaRest } = rest as StandardTextareaProps;\n return (\n <textarea\n ref={ref}\n data-slot=\"textarea\"\n className={cn(textareaClass, className)}\n value={value}\n onChange={onChange}\n {...(textareaRest as NativeTextareaProps)}\n />\n );\n },\n);\nTextarea.displayName = \"Textarea\";\n\nexport { Textarea };\n"]}
|
|
@@ -82,5 +82,5 @@ function CardFooter({ className, ...props }) {
|
|
|
82
82
|
}
|
|
83
83
|
|
|
84
84
|
export { Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle };
|
|
85
|
-
//# sourceMappingURL=chunk-
|
|
86
|
-
//# sourceMappingURL=chunk-
|
|
85
|
+
//# sourceMappingURL=chunk-DXKFFJIE.js.map
|
|
86
|
+
//# sourceMappingURL=chunk-DXKFFJIE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/display/card.tsx"],"names":[],"mappings":";;;AA6BA,SAAS,IAAA,CAAK,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AAClE,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,MAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,uEAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAGA,SAAS,UAAA,CAAW,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AACxE,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,aAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,0KAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAGA,SAAS,SAAA,CAAU,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AACvE,EAAA,uBACE,GAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,YAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,cAAA,EAAgB,SAAS,CAAA;AAAA,MACtC,GAAG;AAAA;AAAA,GACN;AAEJ;AAGA,SAAS,eAAA,CAAgB,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AAC7E,EAAA,uBACE,GAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,kBAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,uBAAA,EAAyB,SAAS,CAAA;AAAA,MAC/C,GAAG;AAAA;AAAA,GACN;AAEJ;AAGA,SAAS,UAAA,CAAW,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AACxE,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,aAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,gEAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAGA,SAAS,WAAA,CAAY,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AACzE,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,cAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,gCAAA,EAAkC,SAAS,CAAA;AAAA,MACxD,GAAG;AAAA;AAAA,GACN;AAEJ;AAGA,SAAS,UAAA,CAAW,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AACxE,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,aAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,uDAAA,EAAyD,SAAS,CAAA;AAAA,MAC/E,GAAG;AAAA;AAAA,GACN;AAEJ","file":"chunk-DXKFFJIE.js","sourcesContent":["import * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\n/**\n * Styled card container with header, title, description, action, content, and footer sub-components.\n *\n * Uses density tokens (`px-card`, `pt-card`, `pb-card`, `gap-card`) for consistent\n * internal spacing that adapts to the design system.\n *\n * @example\n * ```tsx\n * <Card>\n * <CardHeader>\n * <CardTitle>Notifications</CardTitle>\n * <CardDescription>You have 3 unread messages.</CardDescription>\n * <CardAction>\n * <Button variant=\"outline\">Mark all read</Button>\n * </CardAction>\n * </CardHeader>\n * <CardContent>\n * <p>Your recent activity will appear here.</p>\n * </CardContent>\n * <CardFooter>\n * <Button>View all</Button>\n * </CardFooter>\n * </Card>\n * ```\n */\nfunction Card({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card\"\n className={cn(\n \"bg-card text-card-foreground flex flex-col gap-card rounded-lg border\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Card header section. Lays out title, description, and optional action in a grid. */\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-card pt-card has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-card\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Card title rendered as an `<h4>` element. */\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <h4\n data-slot=\"card-title\"\n className={cn(\"leading-none\", className)}\n {...props}\n />\n );\n}\n\n/** Card description text displayed in muted foreground color. */\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <p\n data-slot=\"card-description\"\n className={cn(\"text-muted-foreground\", className)}\n {...props}\n />\n );\n}\n\n/** Card action slot positioned at the top-right of `CardHeader`. Place buttons or menus here. */\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Card content area with horizontal padding. Bottom padding applied when last child. */\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"px-card [&:last-child]:pb-card\", className)}\n {...props}\n />\n );\n}\n\n/** Card footer with horizontal layout. Typically used for action buttons. */\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\"flex items-center px-card pb-card [.border-t]:pt-card\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n};\n"]}
|
|
@@ -215,5 +215,5 @@ function DropdownMenuSubContent({
|
|
|
215
215
|
}
|
|
216
216
|
|
|
217
217
|
export { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger };
|
|
218
|
-
//# sourceMappingURL=chunk-
|
|
219
|
-
//# sourceMappingURL=chunk-
|
|
218
|
+
//# sourceMappingURL=chunk-DXZZURPN.js.map
|
|
219
|
+
//# sourceMappingURL=chunk-DXZZURPN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/navigation/dropdown-menu.tsx"],"names":[],"mappings":"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","file":"chunk-DXZZURPN.js","sourcesContent":["import * as React from \"react\";\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\n/**\n * Dropdown menu component built on Radix UI DropdownMenu.\n *\n * Displays a menu of actions or options triggered by a button click.\n * Supports items, checkbox items, radio items, sub-menus, separators,\n * labels, shortcuts, and destructive variants.\n *\n * @example\n * ```tsx\n * <DropdownMenu>\n * <DropdownMenuTrigger asChild>\n * <Button variant=\"outline\">Actions</Button>\n * </DropdownMenuTrigger>\n * <DropdownMenuContent>\n * <DropdownMenuLabel>My Account</DropdownMenuLabel>\n * <DropdownMenuSeparator />\n * <DropdownMenuItem>\n * <UserIcon className=\"size-4\" />\n * Profile\n * <DropdownMenuShortcut>Ctrl+P</DropdownMenuShortcut>\n * </DropdownMenuItem>\n * <DropdownMenuItem>\n * <SettingsIcon className=\"size-4\" />\n * Settings\n * </DropdownMenuItem>\n * <DropdownMenuSeparator />\n * <DropdownMenuItem variant=\"destructive\">\n * <TrashIcon className=\"size-4\" />\n * Delete\n * </DropdownMenuItem>\n * </DropdownMenuContent>\n * </DropdownMenu>\n * ```\n */\nfunction DropdownMenu({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />;\n}\n\n/** Portal that renders dropdown content outside the DOM hierarchy. */\nfunction DropdownMenuPortal({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n return (\n <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n );\n}\n\n/** Element that opens the dropdown menu when clicked. Use `asChild` to merge into your own button. */\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return (\n <DropdownMenuPrimitive.Trigger\n data-slot=\"dropdown-menu-trigger\"\n {...props}\n />\n );\n}\n\n/** Floating container for menu items, positioned relative to the trigger. */\nfunction DropdownMenuContent({\n className,\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md\",\n className,\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n );\n}\n\n/** Groups related menu items together for accessibility. */\nfunction DropdownMenuGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n return (\n <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n );\n}\n\n/** Actionable menu item. Set `variant=\"destructive\"` for dangerous actions, `inset` for left-padding alignment. */\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean;\n variant?: \"default\" | \"destructive\";\n}) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-[var(--density-menu-item-py)] text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Menu item with a checkbox indicator for toggling options. */\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n );\n}\n\n/** Container for radio menu items where only one can be selected at a time. */\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n return (\n <DropdownMenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n );\n}\n\n/** Menu item with a radio indicator for single-selection groups. */\nfunction DropdownMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>) {\n return (\n <DropdownMenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n );\n}\n\n/** Non-interactive label used to title a group of menu items. */\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean;\n}) {\n return (\n <DropdownMenuPrimitive.Label\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\n \"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Visual divider between groups of menu items. */\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n );\n}\n\n/** Keyboard shortcut hint displayed at the end of a menu item. */\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Container for a nested sub-menu within the dropdown. */\nfunction DropdownMenuSub({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />;\n}\n\n/** Menu item that opens a sub-menu on hover. Displays a chevron indicator. */\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n}) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto size-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n );\n}\n\n/** Floating container for sub-menu items. */\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n return (\n <DropdownMenuPrimitive.SubContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n};"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/inputs/switch.tsx"],"names":[],"mappings":";;;;AAyBA,SAAS,MAAA,CAAO;AAAA,EACd,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAgB;AACd,EAAA,uBACE,GAAA;AAAA,IAAkB,gBAAA,CAAA,IAAA;AAAA,IAAjB;AAAA,MACC,WAAA,EAAU,QAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,6WAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAA,GAAA;AAAA,QAAkB,gBAAA,CAAA,KAAA;AAAA,QAAjB;AAAA,UACC,WAAA,EAAU,cAAA;AAAA,UACV,SAAA,EAAW,EAAA;AAAA,YACT;AAAA;AACF;AAAA;AACF;AAAA,GACF;AAEJ","file":"chunk-EAY3QSID.js","sourcesContent":["import * as React from \"react\";\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\";\n\nimport { cn } from \"../../lib/utils\";\n\ntype SwitchProps = React.ComponentProps<typeof SwitchPrimitives.Root>;\n\n/**\n * Toggle switch for boolean on/off states, styled as a sliding pill.\n *\n * @example\n * ```tsx\n * // Uncontrolled\n * <Switch defaultChecked />\n *\n * // Controlled\n * <Switch checked={enabled} onCheckedChange={setEnabled} />\n *\n * // With label\n * <div className=\"flex items-center gap-2\">\n * <Switch id=\"notifications\" />\n * <Label htmlFor=\"notifications\">Enable notifications</Label>\n * </div>\n * ```\n */\nfunction Switch({\n className,\n ...props\n}: SwitchProps) {\n return (\n <SwitchPrimitives.Root\n data-slot=\"switch\"\n className={cn(\n \"peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-switch-background focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n <SwitchPrimitives.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n \"bg-card dark:data-[state=unchecked]:bg-card-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0\",\n )}\n />\n </SwitchPrimitives.Root>\n );\n}\n\nexport { Switch };\nexport type { SwitchProps };\n"]}
|
|
@@ -20,5 +20,5 @@ var Label = React.forwardRef(({ className, ...props }, ref) => {
|
|
|
20
20
|
Label.displayName = LabelPrimitive.Root.displayName;
|
|
21
21
|
|
|
22
22
|
export { Label };
|
|
23
|
-
//# sourceMappingURL=chunk-
|
|
24
|
-
//# sourceMappingURL=chunk-
|
|
23
|
+
//# sourceMappingURL=chunk-EYJ7TJIX.js.map
|
|
24
|
+
//# sourceMappingURL=chunk-EYJ7TJIX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/inputs/label.tsx"],"names":[],"mappings":";;;;;AAoBA,IAAM,KAAA,GAAc,iBAGlB,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAAA,KAAQ;AAClC,EAAA,uBACE,GAAA;AAAA,IAAgB,cAAA,CAAA,IAAA;AAAA,IAAf;AAAA,MACC,GAAA;AAAA,MACA,WAAA,EAAU,OAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,qNAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC;AACD,KAAA,CAAM,cAA6B,cAAA,CAAA,IAAA,CAAK,WAAA","file":"chunk-EYJ7TJIX.js","sourcesContent":["import * as React from \"react\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\n\nimport { cn } from \"../../lib/utils\";\n\ntype LabelProps = React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>;\n\n/**\n * Accessible label for form controls, automatically associated via `htmlFor`.\n *\n * @example\n * ```tsx\n * // With an input\n * <Label htmlFor=\"email\">Email address</Label>\n * <Input id=\"email\" type=\"email\" />\n *\n * // Disabled state (responds to group/peer disabled)\n * <Label htmlFor=\"name\">Name</Label>\n * ```\n */\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n LabelProps\n>(({ className, ...props }, ref) => {\n return (\n <LabelPrimitive.Root\n ref={ref}\n data-slot=\"label\"\n className={cn(\n \"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n );\n});\nLabel.displayName = LabelPrimitive.Root.displayName;\n\nexport { Label };\nexport type { LabelProps };\n"]}
|
|
@@ -49,5 +49,5 @@ function AvatarFallback({
|
|
|
49
49
|
}
|
|
50
50
|
|
|
51
51
|
export { Avatar, AvatarFallback, AvatarImage };
|
|
52
|
-
//# sourceMappingURL=chunk-
|
|
53
|
-
//# sourceMappingURL=chunk-
|
|
52
|
+
//# sourceMappingURL=chunk-FTNPOZGK.js.map
|
|
53
|
+
//# sourceMappingURL=chunk-FTNPOZGK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/display/avatar.tsx"],"names":[],"mappings":";;;;AAyBA,SAAS,MAAA,CAAO;AAAA,EACd,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAgB;AACd,EAAA,uBACE,GAAA;AAAA,IAAiB,eAAA,CAAA,IAAA;AAAA,IAAhB;AAAA,MACC,WAAA,EAAU,QAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,6DAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAaA,SAAS,WAAA,CAAY;AAAA,EACnB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAqB;AACnB,EAAA,uBACE,GAAA;AAAA,IAAiB,eAAA,CAAA,KAAA;AAAA,IAAhB;AAAA,MACC,WAAA,EAAU,cAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,yBAAA,EAA2B,SAAS,CAAA;AAAA,MACjD,GAAG;AAAA;AAAA,GACN;AAEJ;AAaA,SAAS,cAAA,CAAe;AAAA,EACtB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAwB;AACtB,EAAA,uBACE,GAAA;AAAA,IAAiB,eAAA,CAAA,QAAA;AAAA,IAAhB;AAAA,MACC,WAAA,EAAU,iBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,kEAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ","file":"chunk-FTNPOZGK.js","sourcesContent":["import * as React from \"react\";\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\";\n\nimport { cn } from \"../../lib/utils\";\n\ntype AvatarProps = React.ComponentProps<typeof AvatarPrimitive.Root>;\n\n/**\n * Circular container for user profile images or initials.\n * Use with {@link AvatarImage} and {@link AvatarFallback} for graceful loading.\n *\n * @example\n * ```tsx\n * <Avatar>\n * <AvatarImage src=\"/avatar.jpg\" alt=\"User\" />\n * <AvatarFallback>JD</AvatarFallback>\n * </Avatar>\n *\n * // Custom size\n * <Avatar className=\"size-8\">\n * <AvatarImage src=\"/small.jpg\" alt=\"User\" />\n * <AvatarFallback>U</AvatarFallback>\n * </Avatar>\n * ```\n */\nfunction Avatar({\n className,\n ...props\n}: AvatarProps) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n className={cn(\n \"relative flex size-10 shrink-0 overflow-hidden rounded-full\",\n className,\n )}\n {...props}\n />\n );\n}\n\ntype AvatarImageProps = React.ComponentProps<typeof AvatarPrimitive.Image>;\n\n/**\n * Image element rendered inside an {@link Avatar}. Falls back to\n * {@link AvatarFallback} when the image fails to load.\n *\n * @example\n * ```tsx\n * <AvatarImage src=\"/photo.jpg\" alt=\"Jane Doe\" />\n * ```\n */\nfunction AvatarImage({\n className,\n ...props\n}: AvatarImageProps) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn(\"aspect-square size-full\", className)}\n {...props}\n />\n );\n}\n\ntype AvatarFallbackProps = React.ComponentProps<typeof AvatarPrimitive.Fallback>;\n\n/**\n * Fallback content displayed while the {@link AvatarImage} is loading or\n * if it fails. Typically shows user initials (max 2 characters).\n *\n * @example\n * ```tsx\n * <AvatarFallback>JD</AvatarFallback>\n * ```\n */\nfunction AvatarFallback({\n className,\n ...props\n}: AvatarFallbackProps) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n \"bg-muted flex size-full items-center justify-center rounded-full\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Avatar, AvatarImage, AvatarFallback };\nexport type { AvatarProps, AvatarImageProps, AvatarFallbackProps };"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/feedback/skeleton.tsx"],"names":[],"mappings":";;;AAuBA,SAAS,QAAA,CAAS,EAAE,SAAA,EAAW,GAAG,OAAM,EAAkB;AACxD,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,UAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,oCAAA,EAAsC,SAAS,CAAA;AAAA,MAC5D,GAAG;AAAA;AAAA,GACN;AAEJ","file":"chunk-GR7T5QHL.js","sourcesContent":["import { cn } from \"../../lib/utils\";\n\ntype SkeletonProps = React.ComponentProps<\"div\">;\n\n/**\n * Placeholder loading indicator with a pulse animation, used to represent\n * content that is being fetched or rendered.\n *\n * @example\n * ```tsx\n * // Text placeholder\n * <Skeleton className=\"h-4 w-48\" />\n *\n * // Circular avatar placeholder\n * <Skeleton className=\"size-10 rounded-full\" />\n *\n * // Card skeleton\n * <div className=\"space-y-2\">\n * <Skeleton className=\"h-4 w-full\" />\n * <Skeleton className=\"h-4 w-3/4\" />\n * </div>\n * ```\n */\nfunction Skeleton({ className, ...props }: SkeletonProps) {\n return (\n <div\n data-slot=\"skeleton\"\n className={cn(\"bg-accent animate-pulse rounded-md\", className)}\n {...props}\n />\n );\n}\n\nexport { Skeleton };\nexport type { SkeletonProps };\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/domain/workflow/workflow-stepper.tsx"],"names":[],"mappings":";;;;AAqDO,SAAS,eAAA,CAAgB;AAAA,EAC9B,MAAA;AAAA,EACA,OAAA;AAAA,EACA,cAAA;AAAA,EACA;AACF,CAAA,EAAyB;AACvB,EAAA,MAAM,YAAA,GAAe,CAAC,GAAG,MAAM,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,CAAE,KAAA,GAAQ,CAAA,CAAE,KAAK,CAAA;AACjE,EAAA,MAAM,iBAAA,GAAoB,IAAI,GAAA,CAAI,OAAA,CAAQ,IAAI,CAAC,CAAA,KAAM,CAAA,CAAE,OAAO,CAAC,CAAA;AAE/D,EAAA,uBACE,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,8CAAA,EAAgD,SAAS,CAAA,EACzE,QAAA,EAAA,YAAA,CAAa,GAAA,CAAI,CAAC,KAAA,EAAO,KAAA,KAAU;AAClC,IAAA,MAAM,WAAA,GAAc,iBAAA,CAAkB,GAAA,CAAI,KAAA,CAAM,EAAE,CAAA;AAClD,IAAA,MAAM,SAAA,GAAY,MAAM,EAAA,KAAO,cAAA;AAC/B,IAAA,MAAM,YAAA,GAAe,QAAQ,IAAA,CAAK,CAAC,MAAM,CAAA,CAAE,OAAA,KAAY,MAAM,EAAE,CAAA;AAC/D,IAAA,MAAM,UAAA,GAAa,cAAc,QAAA,KAAa,UAAA;AAE9C,IAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAmB,SAAA,EAAU,iCAAA,EAC5B,QAAA,EAAA;AAAA,sBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,kCAAA,EACb,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,EAAA;AAAA,cACT,sGAAA;AAAA,cACA,WAAA,GACI,UAAA,GACE,8CAAA,GACA,sCAAA,GACF,YACE,yDAAA,GACA;AAAA,aACR;AAAA,YAEC,wCAAc,GAAA,CAAC,KAAA,EAAA,EAAM,SAAA,EAAU,SAAA,EAAU,IAAK,KAAA,CAAM;AAAA;AAAA,SACvD;AAAA,wBACA,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,EAAA;AAAA,cACT,uCAAA;AAAA,cACA,YAAY,6BAAA,GAAgC;AAAA,aAC9C;AAAA,YAEC,QAAA,EAAA,KAAA,CAAM;AAAA;AAAA;AACT,OAAA,EACF,CAAA;AAAA,MACC,KAAA,GAAQ,YAAA,CAAa,MAAA,GAAS,CAAA,oBAC7B,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,EAAA;AAAA,YACT,4BAAA;AAAA,YACA,cAAc,YAAA,GAAe;AAAA;AAC/B;AAAA;AACF,KAAA,EAAA,EA/BM,MAAM,EAiChB,CAAA;AAAA,EAEJ,CAAC,CAAA,EACH,CAAA;AAEJ","file":"chunk-HEQVBUJO.js","sourcesContent":["import { Check } from 'lucide-react';\nimport { cn } from '../../../lib/utils';\n\n/** A single stage in the workflow stepper. */\nexport interface WorkflowStepperStage {\n /** Unique identifier for this stage. */\n id: string;\n /** Display name shown below the stage circle. */\n name: string;\n /** Numeric order used to sort stages left-to-right. */\n order: number;\n}\n\n/** A history entry representing a completed (or rejected) stage. */\nexport interface WorkflowStepperHistoryEntry {\n /** The stage ID this history entry applies to. */\n stageId: string;\n /** The decision made at this stage. \"rejected\" stages render in red. */\n decision: 'approved' | 'rejected' | 'skipped' | (string & {});\n}\n\nexport interface WorkflowStepperProps {\n /** Ordered list of stages to display. Will be sorted by `order`. */\n stages: WorkflowStepperStage[];\n /** History of completed stages. Used to determine which stages are done. */\n history: WorkflowStepperHistoryEntry[];\n /** The id of the currently active stage. */\n currentStageId: string;\n /** Optional additional className for the root container. */\n className?: string;\n}\n\n/**\n * WorkflowStepper displays a horizontal progression of workflow stages.\n *\n * Each stage is shown as a numbered circle. Completed stages show a checkmark\n * (green for approved, red for rejected). The current stage pulses with a blue\n * highlight. Stages are connected by a horizontal line that turns green once\n * the preceding stage is completed.\n *\n * @example\n * ```tsx\n * <WorkflowStepper\n * stages={[\n * { id: \"s1\", name: \"Submit\", order: 1 },\n * { id: \"s2\", name: \"Review\", order: 2 },\n * { id: \"s3\", name: \"Approve\", order: 3 },\n * ]}\n * history={[{ stageId: \"s1\", decision: \"approved\" }]}\n * currentStageId=\"s2\"\n * />\n * ```\n */\nexport function WorkflowStepper({\n stages,\n history,\n currentStageId,\n className,\n}: WorkflowStepperProps) {\n const sortedStages = [...stages].sort((a, b) => a.order - b.order);\n const completedStageIds = new Set(history.map((h) => h.stageId));\n\n return (\n <div className={cn('flex items-center gap-0 overflow-x-auto pb-2', className)}>\n {sortedStages.map((stage, index) => {\n const isCompleted = completedStageIds.has(stage.id);\n const isCurrent = stage.id === currentStageId;\n const historyEntry = history.find((h) => h.stageId === stage.id);\n const isRejected = historyEntry?.decision === 'rejected';\n\n return (\n <div key={stage.id} className=\"flex items-center flex-shrink-0\">\n <div className=\"flex flex-col items-center gap-1\">\n <div\n className={cn(\n 'w-8 h-8 rounded-full flex items-center justify-center text-sm font-medium border-2 transition-colors',\n isCompleted\n ? isRejected\n ? 'bg-destructive border-destructive text-white'\n : 'bg-success border-success text-white'\n : isCurrent\n ? 'border-primary bg-primary/10 text-primary animate-pulse'\n : 'border-border bg-muted text-muted-foreground',\n )}\n >\n {isCompleted ? <Check className=\"w-4 h-4\" /> : stage.order}\n </div>\n <span\n className={cn(\n 'text-xs max-w-20 text-center truncate',\n isCurrent ? 'font-medium text-foreground' : 'text-muted-foreground',\n )}\n >\n {stage.name}\n </span>\n </div>\n {index < sortedStages.length - 1 && (\n <div\n className={cn(\n 'w-12 h-0.5 mx-1 mt-[-12px]',\n isCompleted ? 'bg-success' : 'bg-border',\n )}\n />\n )}\n </div>\n );\n })}\n </div>\n );\n}\n"]}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { useUILocales, resolveTranslatableConfig } from './chunk-5K6RO5R3.js';
|
|
2
|
+
import { TranslatableField } from './chunk-YU55YBID.js';
|
|
3
|
+
import { cn } from './chunk-DGPY4WP3.js';
|
|
4
|
+
import * as React from 'react';
|
|
5
|
+
import { cva } from 'class-variance-authority';
|
|
6
|
+
import { jsx } from 'react/jsx-runtime';
|
|
7
|
+
|
|
8
|
+
var inputVariants = cva(
|
|
9
|
+
"file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input flex w-full min-w-0 rounded-md border bg-input-background transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
|
|
10
|
+
{
|
|
11
|
+
variants: {
|
|
12
|
+
size: {
|
|
13
|
+
xs: "h-element-xs px-2 text-xs",
|
|
14
|
+
sm: "h-element-sm px-2.5 text-sm",
|
|
15
|
+
default: "h-element px-3 py-1 text-base md:text-sm",
|
|
16
|
+
lg: "h-element-lg px-4 text-sm",
|
|
17
|
+
xl: "h-element-xl px-4 text-base"
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
defaultVariants: {
|
|
21
|
+
size: "default"
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
);
|
|
25
|
+
var Input = React.forwardRef(
|
|
26
|
+
(props, ref) => {
|
|
27
|
+
const { className, type, size, translatable, ...rest } = props;
|
|
28
|
+
const providerLocales = useUILocales();
|
|
29
|
+
if (translatable !== void 0) {
|
|
30
|
+
const config = resolveTranslatableConfig(translatable, providerLocales);
|
|
31
|
+
if (!config) {
|
|
32
|
+
const { value: _v, onChange: _oc, ...inputRest3 } = rest;
|
|
33
|
+
return /* @__PURE__ */ jsx(
|
|
34
|
+
"input",
|
|
35
|
+
{
|
|
36
|
+
type,
|
|
37
|
+
ref,
|
|
38
|
+
"data-slot": "input",
|
|
39
|
+
className: cn(inputVariants({ size, className })),
|
|
40
|
+
...inputRest3
|
|
41
|
+
}
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
const { value: value2 = {}, onChange: onChange2, errors, ...inputRest2 } = rest;
|
|
45
|
+
return /* @__PURE__ */ jsx(
|
|
46
|
+
TranslatableField,
|
|
47
|
+
{
|
|
48
|
+
config,
|
|
49
|
+
value: value2,
|
|
50
|
+
onChange: onChange2 ?? (() => {
|
|
51
|
+
}),
|
|
52
|
+
errors,
|
|
53
|
+
children: ({ value: localeValue, onChange: localeChange, fallbackPlaceholder, hasError }) => /* @__PURE__ */ jsx(
|
|
54
|
+
"input",
|
|
55
|
+
{
|
|
56
|
+
type,
|
|
57
|
+
ref,
|
|
58
|
+
"data-slot": "input",
|
|
59
|
+
"data-translatable": true,
|
|
60
|
+
className: cn(inputVariants({ size, className })),
|
|
61
|
+
value: localeValue,
|
|
62
|
+
placeholder: fallbackPlaceholder ?? inputRest2.placeholder,
|
|
63
|
+
onChange: (e) => localeChange(e.target.value),
|
|
64
|
+
...inputRest2,
|
|
65
|
+
"aria-invalid": hasError || inputRest2["aria-invalid"] || void 0
|
|
66
|
+
}
|
|
67
|
+
)
|
|
68
|
+
}
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
const { value, onChange, ...inputRest } = rest;
|
|
72
|
+
return /* @__PURE__ */ jsx(
|
|
73
|
+
"input",
|
|
74
|
+
{
|
|
75
|
+
type,
|
|
76
|
+
ref,
|
|
77
|
+
"data-slot": "input",
|
|
78
|
+
className: cn(inputVariants({ size, className })),
|
|
79
|
+
value,
|
|
80
|
+
onChange,
|
|
81
|
+
...inputRest
|
|
82
|
+
}
|
|
83
|
+
);
|
|
84
|
+
}
|
|
85
|
+
);
|
|
86
|
+
Input.displayName = "Input";
|
|
87
|
+
|
|
88
|
+
export { Input, inputVariants };
|
|
89
|
+
//# sourceMappingURL=chunk-HXMY2NQ3.js.map
|
|
90
|
+
//# sourceMappingURL=chunk-HXMY2NQ3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/inputs/input.tsx"],"names":["inputRest","value","onChange"],"mappings":"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","file":"chunk-HXMY2NQ3.js","sourcesContent":["import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\nimport { TranslatableField } from './translatable-field';\nimport { useUILocales, resolveTranslatableConfig } from '../../providers/ui-provider';\nimport type { TranslatableConfig, TranslatableValue } from '../../providers/ui-provider';\n\n// ─── Variants ─────────────────────────────────────────────────────────────────\n\nconst inputVariants = cva(\n \"file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input flex w-full min-w-0 rounded-md border bg-input-background transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n {\n variants: {\n size: {\n xs: \"h-element-xs px-2 text-xs\",\n sm: \"h-element-sm px-2.5 text-sm\",\n default: \"h-element px-3 py-1 text-base md:text-sm\",\n lg: \"h-element-lg px-4 text-sm\",\n xl: \"h-element-xl px-4 text-base\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n },\n);\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\ntype InputSize = VariantProps<typeof inputVariants>['size'];\ntype NativeInputProps = Omit<React.ComponentProps<'input'>, 'value' | 'onChange' | 'size'>;\n\ninterface StandardInputProps extends NativeInputProps {\n size?: InputSize;\n /** Translatable mode disabled (default). */\n translatable?: never;\n value?: string;\n onChange?: React.ChangeEventHandler<HTMLInputElement>;\n}\n\ninterface TranslatableInputProps extends NativeInputProps {\n size?: InputSize;\n /**\n * Enable locale-switching tabs on this input.\n * - `true` — inherit UIProvider's locale config\n * - `object` — override locales/defaultLocale/fallbackLocale per field\n *\n * @example\n * ```tsx\n * // Uses UIProvider config\n * <Input translatable value={val} onChange={setVal} />\n *\n * // Custom per-field config\n * <Input\n * translatable={{ locales: { en: 'English', vi: 'Tiếng Việt' }, fallbackLocale: 'en' }}\n * value={val}\n * onChange={setVal}\n * />\n * ```\n */\n translatable: TranslatableConfig;\n value?: TranslatableValue;\n onChange?: (value: TranslatableValue) => void;\n /**\n * Per-locale validation errors. Truthy string = that locale is invalid.\n * The active locale's error is forwarded as `aria-invalid` on the input;\n * all locale tabs with errors show a red dot indicator.\n *\n * @example `{ en: 'Required', vi: 'Too long (120/100)' }`\n */\n errors?: Partial<Record<string, string>>;\n}\n\nexport type InputProps = StandardInputProps | TranslatableInputProps;\n\n// ─── Component ────────────────────────────────────────────────────────────────\n\n/**\n * Text input component with multiple size variants.\n * Supports translatable mode via the `translatable` prop.\n *\n * @example\n * ```tsx\n * // Standard\n * <Input placeholder=\"Enter text...\" />\n * <Input size=\"sm\" value={val} onChange={(e) => setVal(e.target.value)} />\n *\n * // Translatable — uses UIProvider's locale config\n * <Input translatable value={val} onChange={setVal} />\n *\n * // Translatable — custom config\n * <Input\n * translatable={{ locales: { en: 'English', vi: 'Tiếng Việt' }, fallbackLocale: 'en' }}\n * value={val}\n * onChange={setVal}\n * />\n * ```\n */\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n (props, ref) => {\n const { className, type, size, translatable, ...rest } = props as TranslatableInputProps & { type?: string; className?: string };\n\n const providerLocales = useUILocales();\n\n // ── Translatable mode ──────────────────────────────────────────────────\n if (translatable !== undefined) {\n const config = resolveTranslatableConfig(translatable, providerLocales);\n\n // Fallback: if no locale config available, render standard input\n if (!config) {\n const { value: _v, onChange: _oc, ...inputRest } = rest as TranslatableInputProps;\n return (\n <input\n type={type}\n ref={ref}\n data-slot=\"input\"\n className={cn(inputVariants({ size, className }))}\n {...(inputRest as NativeInputProps)}\n />\n );\n }\n\n const { value = {}, onChange, errors, ...inputRest } = rest as TranslatableInputProps;\n\n return (\n <TranslatableField\n config={config}\n value={value as TranslatableValue}\n onChange={onChange ?? (() => {})}\n errors={errors}\n >\n {({ value: localeValue, onChange: localeChange, fallbackPlaceholder, hasError }) => (\n <input\n type={type}\n ref={ref}\n data-slot=\"input\"\n data-translatable\n className={cn(inputVariants({ size, className }))}\n value={localeValue}\n placeholder={fallbackPlaceholder ?? (inputRest as React.InputHTMLAttributes<HTMLInputElement>).placeholder}\n onChange={(e) => localeChange(e.target.value)}\n {...(inputRest as React.InputHTMLAttributes<HTMLInputElement>)}\n aria-invalid={hasError || (inputRest as React.InputHTMLAttributes<HTMLInputElement>)['aria-invalid'] || undefined}\n />\n )}\n </TranslatableField>\n );\n }\n\n // ── Standard mode ──────────────────────────────────────────────────────\n const { value, onChange, ...inputRest } = rest as StandardInputProps;\n return (\n <input\n type={type}\n ref={ref}\n data-slot=\"input\"\n className={cn(inputVariants({ size, className }))}\n value={value}\n onChange={onChange}\n {...(inputRest as NativeInputProps)}\n />\n );\n },\n);\nInput.displayName = \"Input\";\n\nexport { Input, inputVariants };\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Badge } from './chunk-
|
|
1
|
+
import { Badge } from './chunk-5SAUUOCN.js';
|
|
2
2
|
import { cn } from './chunk-DGPY4WP3.js';
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import { X } from 'lucide-react';
|
|
@@ -100,5 +100,5 @@ function TagInput({
|
|
|
100
100
|
}
|
|
101
101
|
|
|
102
102
|
export { TagInput };
|
|
103
|
-
//# sourceMappingURL=chunk-
|
|
104
|
-
//# sourceMappingURL=chunk-
|
|
103
|
+
//# sourceMappingURL=chunk-I6PJSYBI.js.map
|
|
104
|
+
//# sourceMappingURL=chunk-I6PJSYBI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/inputs/tag-input.tsx"],"names":[],"mappings":"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","file":"chunk-I6PJSYBI.js","sourcesContent":["import * as React from \"react\";\nimport { X } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport { Badge } from \"../display/badge\";\n\ninterface TagInputProps {\n /** Array of current tag strings. */\n value?: string[];\n /** Callback fired when the tags array changes. */\n onChange?: (tags: string[]) => void;\n /** Placeholder text shown when there are no tags. */\n placeholder?: string;\n /** Additional CSS class for the outer container. */\n className?: string;\n /** Whether the tag input is disabled. */\n disabled?: boolean;\n /** Maximum number of tags allowed. */\n maxTags?: number;\n /** Whether duplicate tag values are allowed. Defaults to `false`. */\n allowDuplicates?: boolean;\n /** Character or pattern used to split pasted text into tags. Defaults to `\",\"`. */\n delimiter?: string | RegExp;\n}\n\n/**\n * Tag input that lets users add and remove string tags.\n * Tags are added by pressing Enter or the delimiter key, and by pasting comma-separated text.\n * Backspace removes the last tag when the input is empty.\n *\n * @example\n * ```tsx\n * const [tags, setTags] = useState<string[]>([\"react\", \"typescript\"]);\n *\n * <TagInput\n * value={tags}\n * onChange={setTags}\n * placeholder=\"Add a tag...\"\n * maxTags={10}\n * />\n * ```\n */\nexport function TagInput({\n value = [],\n onChange,\n placeholder = \"Nhập và nhấn Enter...\",\n className,\n disabled,\n maxTags,\n allowDuplicates = false,\n delimiter = \",\",\n}: TagInputProps) {\n const [inputValue, setInputValue] = React.useState(\"\");\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setInputValue(e.target.value);\n };\n\n const addTag = (tag: string) => {\n const trimmedTag = tag.trim();\n\n if (!trimmedTag) return;\n\n if (maxTags && value.length >= maxTags) return;\n\n if (!allowDuplicates && value.includes(trimmedTag)) return;\n\n onChange?.([ ...value, trimmedTag]);\n setInputValue(\"\");\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\" || e.key === delimiter) {\n e.preventDefault();\n addTag(inputValue);\n } else if (e.key === \"Backspace\" && !inputValue && value.length > 0) {\n // Remove last tag on backspace if input is empty\n onChange?.(value.slice(0, -1));\n }\n };\n\n const handlePaste = (e: React.ClipboardEvent<HTMLInputElement>) => {\n e.preventDefault();\n const pastedText = e.clipboardData.getData(\"text\");\n const tags = pastedText.split(delimiter).map((tag) => tag.trim()).filter(Boolean);\n\n const newTags = allowDuplicates\n ? tags\n : tags.filter((tag) => !value.includes(tag));\n\n const tagsToAdd = maxTags\n ? newTags.slice(0, maxTags - value.length)\n : newTags;\n\n onChange?.([...value, ...tagsToAdd]);\n setInputValue(\"\");\n };\n\n const removeTag = (index: number) => {\n onChange?.(value.filter((_, i) => i !== index));\n };\n\n return (\n <div\n className={cn(\n \"flex flex-wrap gap-2 p-2 border rounded-lg bg-background min-h-[42px] cursor-text\",\n disabled && \"opacity-50 cursor-not-allowed bg-muted\",\n className\n )}\n onClick={() => !disabled && inputRef.current?.focus()}\n >\n {value.map((tag, index) => (\n <Badge\n key={index}\n variant=\"secondary\"\n className=\"gap-1 pl-2 pr-1 py-1 h-auto\"\n >\n <span>{tag}</span>\n {!disabled && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n removeTag(index);\n }}\n className=\"rounded-full hover:bg-muted-foreground/30 p-0.5 transition-colors\"\n >\n <X className=\"h-3 w-3\" />\n </button>\n )}\n </Badge>\n ))}\n\n <input\n ref={inputRef}\n type=\"text\"\n value={inputValue}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n onPaste={handlePaste}\n disabled={disabled || (maxTags ? value.length >= maxTags : false)}\n placeholder={value.length === 0 ? placeholder : \"\"}\n className=\"flex-1 outline-none bg-transparent min-w-[120px] text-sm disabled:cursor-not-allowed\"\n />\n </div>\n );\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as AspectRatioPrimitive from '@radix-ui/react-aspect-ratio';
|
|
2
2
|
import { jsx } from 'react/jsx-runtime';
|
|
3
3
|
|
|
4
|
-
// src/components/aspect-ratio.tsx
|
|
4
|
+
// src/components/display/aspect-ratio.tsx
|
|
5
5
|
function AspectRatio({
|
|
6
6
|
...props
|
|
7
7
|
}) {
|
|
@@ -9,5 +9,5 @@ function AspectRatio({
|
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
export { AspectRatio };
|
|
12
|
-
//# sourceMappingURL=chunk-
|
|
13
|
-
//# sourceMappingURL=chunk-
|
|
12
|
+
//# sourceMappingURL=chunk-ITTPI2Z3.js.map
|
|
13
|
+
//# sourceMappingURL=chunk-ITTPI2Z3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/display/aspect-ratio.tsx"],"names":[],"mappings":";;;;AAmBA,SAAS,WAAA,CAAY;AAAA,EACnB,GAAG;AACL,CAAA,EAA2D;AACzD,EAAA,2BAA6B,oBAAA,CAAA,IAAA,EAArB,EAA0B,WAAA,EAAU,cAAA,EAAgB,GAAG,KAAA,EAAO,CAAA;AACxE","file":"chunk-ITTPI2Z3.js","sourcesContent":["import * as AspectRatioPrimitive from \"@radix-ui/react-aspect-ratio\";\n\n/**\n * Maintains a consistent width-to-height ratio for its content.\n *\n * Useful for images, videos, and maps that need to preserve their aspect ratio\n * across different viewport sizes. Built on Radix AspectRatio.\n *\n * @example\n * ```tsx\n * <AspectRatio ratio={16 / 9}>\n * <img\n * src=\"/hero.jpg\"\n * alt=\"Hero image\"\n * className=\"h-full w-full rounded-md object-cover\"\n * />\n * </AspectRatio>\n * ```\n */\nfunction AspectRatio({\n ...props\n}: React.ComponentProps<typeof AspectRatioPrimitive.Root>) {\n return <AspectRatioPrimitive.Root data-slot=\"aspect-ratio\" {...props} />;\n}\n\nexport { AspectRatio };\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Badge } from './chunk-
|
|
1
|
+
import { Badge } from './chunk-5SAUUOCN.js';
|
|
2
2
|
import { jsx } from 'react/jsx-runtime';
|
|
3
3
|
|
|
4
4
|
var defaultCategoryStyles = {
|
|
@@ -14,5 +14,5 @@ function CalendarCategoryBadge({ category, label, styles }) {
|
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
export { CalendarCategoryBadge };
|
|
17
|
-
//# sourceMappingURL=chunk-
|
|
18
|
-
//# sourceMappingURL=chunk-
|
|
17
|
+
//# sourceMappingURL=chunk-IXEPDTUE.js.map
|
|
18
|
+
//# sourceMappingURL=chunk-IXEPDTUE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/domain/calendar/calendar-category-badge.tsx"],"names":[],"mappings":";;;AAEA,IAAM,qBAAA,GAAgD;AAAA,EACpD,OAAA,EAAS,yGAAA;AAAA,EACT,QAAA,EAAU,mGAAA;AAAA,EACV,QAAA,EAAU,+GAAA;AAAA,EACV,QAAA,EAAU,qHAAA;AAAA,EACV,OAAA,EAAS;AACX,CAAA;AAsBO,SAAS,qBAAA,CAAsB,EAAE,QAAA,EAAU,KAAA,EAAO,QAAO,EAA+B;AAC7F,EAAA,MAAM,SAAA,GAAY,EAAE,GAAG,qBAAA,EAAuB,GAAG,MAAA,EAAO;AACxD,EAAA,uBACE,GAAA,CAAC,KAAA,EAAA,EAAM,OAAA,EAAQ,SAAA,EAAU,SAAA,EAAW,UAAU,QAAQ,CAAA,IAAK,EAAA,EACxD,QAAA,EAAA,KAAA,IAAS,QAAA,EACZ,CAAA;AAEJ","file":"chunk-IXEPDTUE.js","sourcesContent":["import { Badge } from '../../display/badge';\n\nconst defaultCategoryStyles: Record<string, string> = {\n meeting: 'bg-blue-50 dark:bg-blue-500/15 text-blue-600 dark:text-blue-400 border-blue-200 dark:border-blue-500/30',\n deadline: 'bg-red-50 dark:bg-red-500/15 text-red-600 dark:text-red-400 border-red-200 dark:border-red-500/30',\n reminder: 'bg-amber-50 dark:bg-amber-500/15 text-amber-600 dark:text-amber-400 border-amber-200 dark:border-amber-500/30',\n personal: 'bg-purple-50 dark:bg-purple-500/15 text-purple-600 dark:text-purple-400 border-purple-200 dark:border-purple-500/30',\n holiday: 'bg-green-50 dark:bg-green-500/15 text-green-600 dark:text-green-400 border-green-200 dark:border-green-500/30',\n};\n\nexport interface CalendarCategoryBadgeProps {\n /** The category key (e.g. \"meeting\", \"deadline\"). Determines the badge color from built-in or custom styles. */\n category: string;\n /** Override display label. Defaults to the raw category key. */\n label?: string;\n /** Custom className styles per category key, merged with built-in defaults. */\n styles?: Record<string, string>;\n}\n\n/**\n * Color-coded badge for calendar event categories. Ships with built-in styles\n * for meeting (blue), deadline (red), reminder (amber), personal (purple), and\n * holiday (green). Custom categories can be styled via the `styles` prop.\n *\n * @example\n * ```tsx\n * <CalendarCategoryBadge category=\"meeting\" label=\"Meeting\" />\n * <CalendarCategoryBadge category=\"custom\" label=\"Custom\" styles={{ custom: \"bg-pink-50 text-pink-600\" }} />\n * ```\n */\nexport function CalendarCategoryBadge({ category, label, styles }: CalendarCategoryBadgeProps) {\n const allStyles = { ...defaultCategoryStyles, ...styles };\n return (\n <Badge variant=\"outline\" className={allStyles[category] ?? ''}>\n {label ?? category}\n </Badge>\n );\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/display/separator.tsx"],"names":[],"mappings":";;;;AAuBA,SAAS,SAAA,CAAU;AAAA,EACjB,SAAA;AAAA,EACA,WAAA,GAAc,YAAA;AAAA,EACd,UAAA,GAAa,IAAA;AAAA,EACb,GAAG;AACL,CAAA,EAAmB;AACjB,EAAA,uBACE,GAAA;AAAA,IAAoB,kBAAA,CAAA,IAAA;AAAA,IAAnB;AAAA,MACC,WAAA,EAAU,gBAAA;AAAA,MACV,UAAA;AAAA,MACA,WAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,gKAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ","file":"chunk-KCUSO3CK.js","sourcesContent":["import * as React from \"react\";\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\";\n\nimport { cn } from \"../../lib/utils\";\n\ntype SeparatorProps = React.ComponentProps<typeof SeparatorPrimitive.Root>;\n\n/**\n * Visual divider between content sections, rendered as a horizontal or vertical line.\n *\n * @example\n * ```tsx\n * // Horizontal (default)\n * <Separator />\n *\n * // Vertical divider in a flex row\n * <div className=\"flex items-center gap-4\">\n * <span>Left</span>\n * <Separator orientation=\"vertical\" className=\"h-4\" />\n * <span>Right</span>\n * </div>\n * ```\n */\nfunction Separator({\n className,\n orientation = \"horizontal\",\n decorative = true,\n ...props\n}: SeparatorProps) {\n return (\n <SeparatorPrimitive.Root\n data-slot=\"separator-root\"\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Separator };\nexport type { SeparatorProps };"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { buttonVariants } from './chunk-
|
|
1
|
+
import { buttonVariants } from './chunk-BOV3Q2JH.js';
|
|
2
2
|
import { cn } from './chunk-DGPY4WP3.js';
|
|
3
3
|
import { ChevronLeftIcon, ChevronRightIcon, ChevronDownIcon } from 'lucide-react';
|
|
4
4
|
import { getDefaultClassNames, DayPicker } from 'react-day-picker';
|
|
@@ -88,5 +88,5 @@ function Calendar({
|
|
|
88
88
|
}
|
|
89
89
|
|
|
90
90
|
export { Calendar };
|
|
91
|
-
//# sourceMappingURL=chunk-
|
|
92
|
-
//# sourceMappingURL=chunk-
|
|
91
|
+
//# sourceMappingURL=chunk-KJAXKHJ2.js.map
|
|
92
|
+
//# sourceMappingURL=chunk-KJAXKHJ2.js.map
|