@omnifyjp/ui 0.1.6 → 0.2.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-XKVHX75G.js → chunk-2C2HRGM7.js} +3 -3
- package/dist/chunk-2C2HRGM7.js.map +1 -0
- package/dist/{chunk-CF2MMEOS.js → chunk-2TUWDXAC.js} +3 -3
- package/dist/chunk-2TUWDXAC.js.map +1 -0
- package/dist/{chunk-DZENMCRL.js → chunk-34ARZSNP.js} +2 -2
- package/dist/chunk-34ARZSNP.js.map +1 -0
- package/dist/{chunk-DIS42JLG.js → chunk-35DNN46W.js} +2 -2
- package/dist/chunk-35DNN46W.js.map +1 -0
- package/dist/{chunk-UCEUTKTQ.js → chunk-35U6QG4P.js} +5 -5
- package/dist/chunk-35U6QG4P.js.map +1 -0
- package/dist/{chunk-74K7VSEO.js → chunk-36YYHIJU.js} +4 -4
- package/dist/chunk-36YYHIJU.js.map +1 -0
- package/dist/{chunk-ANTYNEUU.js → chunk-3EOHW4QN.js} +2 -2
- package/dist/chunk-3EOHW4QN.js.map +1 -0
- package/dist/{chunk-EMHO6GT6.js → chunk-4MHIUUAW.js} +3 -3
- package/dist/chunk-4MHIUUAW.js.map +1 -0
- package/dist/chunk-55E7D2HR.js +99 -0
- package/dist/chunk-55E7D2HR.js.map +1 -0
- package/dist/{chunk-Z47W426M.js → chunk-67YUL2ZS.js} +2 -2
- package/dist/chunk-67YUL2ZS.js.map +1 -0
- package/dist/{chunk-XRGGZOD5.js → chunk-6DIDQ4TB.js} +10 -10
- package/dist/chunk-6DIDQ4TB.js.map +1 -0
- package/dist/{chunk-7ZFYPC74.js → chunk-6GWVQB3Q.js} +3 -3
- package/dist/chunk-6GWVQB3Q.js.map +1 -0
- package/dist/{chunk-DR4GGX45.js → chunk-75WZR6HF.js} +3 -3
- package/dist/chunk-75WZR6HF.js.map +1 -0
- package/dist/{chunk-QMABUSSD.js → chunk-7IRLBU2I.js} +3 -3
- package/dist/chunk-7IRLBU2I.js.map +1 -0
- package/dist/{chunk-WAPGZIAL.js → chunk-7RMTPT6O.js} +2 -2
- package/dist/chunk-7RMTPT6O.js.map +1 -0
- package/dist/{chunk-JPTN62BV.js → chunk-7XH3MGBR.js} +2 -2
- package/dist/chunk-7XH3MGBR.js.map +1 -0
- package/dist/chunk-A3BB5ZOC.js +77 -0
- package/dist/chunk-A3BB5ZOC.js.map +1 -0
- package/dist/{chunk-NFAXCC73.js → chunk-B434PORR.js} +2 -2
- package/dist/chunk-B434PORR.js.map +1 -0
- package/dist/{chunk-MNAT3ZF6.js → chunk-BAQWGQJG.js} +3 -3
- package/dist/chunk-BAQWGQJG.js.map +1 -0
- package/dist/{chunk-6GCAG5FH.js → chunk-BRSM3SZP.js} +2 -2
- package/dist/chunk-BRSM3SZP.js.map +1 -0
- package/dist/{chunk-AZARDPXB.js → chunk-C34KSTWA.js} +2 -2
- package/dist/chunk-C34KSTWA.js.map +1 -0
- package/dist/{chunk-4CT5SCAH.js → chunk-C5NZAOA7.js} +2 -2
- package/dist/chunk-C5NZAOA7.js.map +1 -0
- package/dist/{chunk-4Q2FLTAW.js → chunk-CUZR4JWM.js} +2 -2
- package/dist/chunk-CUZR4JWM.js.map +1 -0
- package/dist/{chunk-QMAMDYRD.js → chunk-EWBCV7VA.js} +2 -2
- package/dist/chunk-EWBCV7VA.js.map +1 -0
- package/dist/{chunk-4N357E44.js → chunk-F2ZJLKDP.js} +2 -2
- package/dist/chunk-F2ZJLKDP.js.map +1 -0
- package/dist/{chunk-KABLXGWK.js → chunk-FLWMT4DB.js} +2 -2
- package/dist/chunk-FLWMT4DB.js.map +1 -0
- package/dist/{chunk-IJIGJGL5.js → chunk-FRKG7JQY.js} +2 -2
- package/dist/chunk-FRKG7JQY.js.map +1 -0
- package/dist/{chunk-KRDWVQZ6.js → chunk-G7HTZBUR.js} +13 -13
- package/dist/chunk-G7HTZBUR.js.map +1 -0
- package/dist/{chunk-23SALQ3G.js → chunk-IAWKX5W4.js} +2 -2
- package/dist/chunk-IAWKX5W4.js.map +1 -0
- package/dist/{chunk-SABAKV4J.js → chunk-INLM7UJC.js} +2 -2
- package/dist/chunk-INLM7UJC.js.map +1 -0
- package/dist/{chunk-TEYOLOZY.js → chunk-JAJMM32I.js} +3 -3
- package/dist/chunk-JAJMM32I.js.map +1 -0
- package/dist/{chunk-TMFQJ7E3.js → chunk-JJSVA3TH.js} +2 -2
- package/dist/chunk-JJSVA3TH.js.map +1 -0
- package/dist/{chunk-KOGOYUEE.js → chunk-JLTBUACL.js} +2 -2
- package/dist/chunk-JLTBUACL.js.map +1 -0
- package/dist/{chunk-EIF6WZAZ.js → chunk-JRU2QX7T.js} +2 -2
- package/dist/chunk-JRU2QX7T.js.map +1 -0
- package/dist/{chunk-VGQC333M.js → chunk-JXGRW2MR.js} +2 -2
- package/dist/chunk-JXGRW2MR.js.map +1 -0
- package/dist/{chunk-CESZTYQQ.js → chunk-KTBOZ4NE.js} +4 -4
- package/dist/chunk-KTBOZ4NE.js.map +1 -0
- package/dist/{chunk-7ALADSN3.js → chunk-LMT327XH.js} +4 -4
- package/dist/chunk-LMT327XH.js.map +1 -0
- package/dist/{chunk-ZPWGR4CM.js → chunk-LTTNCAAA.js} +3 -3
- package/dist/chunk-LTTNCAAA.js.map +1 -0
- package/dist/{chunk-BJO5JCFB.js → chunk-LVZNNIK4.js} +3 -3
- package/dist/chunk-LVZNNIK4.js.map +1 -0
- package/dist/{chunk-YMZJ2RYW.js → chunk-MJLFJPUG.js} +9 -9
- package/dist/chunk-MJLFJPUG.js.map +1 -0
- package/dist/{chunk-3TV2IR7L.js → chunk-MZ2P566X.js} +4 -4
- package/dist/chunk-MZ2P566X.js.map +1 -0
- package/dist/{chunk-4D6FDXCG.js → chunk-N47H4MHX.js} +3 -3
- package/dist/chunk-N47H4MHX.js.map +1 -0
- package/dist/{chunk-BOYSXIM3.js → chunk-NNJTKHCE.js} +2 -2
- package/dist/chunk-NNJTKHCE.js.map +1 -0
- package/dist/{chunk-4OQTTPY4.js → chunk-NPL2R5LD.js} +5 -5
- package/dist/chunk-NPL2R5LD.js.map +1 -0
- package/dist/{chunk-725ICC47.js → chunk-NU56GKGM.js} +2 -2
- package/dist/{chunk-725ICC47.js.map → chunk-NU56GKGM.js.map} +1 -1
- package/dist/{chunk-KXZ7IND6.js → chunk-P3M5TZD2.js} +2 -2
- package/dist/chunk-P3M5TZD2.js.map +1 -0
- package/dist/{chunk-ONAUEREV.js → chunk-PGWNOZDX.js} +2 -2
- package/dist/chunk-PGWNOZDX.js.map +1 -0
- package/dist/{chunk-L46XUK4O.js → chunk-R2CDE5DO.js} +2 -2
- package/dist/chunk-R2CDE5DO.js.map +1 -0
- package/dist/{chunk-LI7CKURD.js → chunk-RQNZDWY3.js} +2 -2
- package/dist/chunk-RQNZDWY3.js.map +1 -0
- package/dist/{chunk-YKJZV2JK.js → chunk-S6PDRGR5.js} +2 -2
- package/dist/chunk-S6PDRGR5.js.map +1 -0
- package/dist/chunk-TGYQ3AKH.js +95 -0
- package/dist/chunk-TGYQ3AKH.js.map +1 -0
- package/dist/{chunk-RIIADVOV.js → chunk-THQUH6WX.js} +6 -6
- package/dist/chunk-THQUH6WX.js.map +1 -0
- package/dist/{chunk-RVJDDGQW.js → chunk-TJMK2KBE.js} +3 -3
- package/dist/chunk-TJMK2KBE.js.map +1 -0
- package/dist/{chunk-5WCL47ZW.js → chunk-TTH7TWVX.js} +2 -2
- package/dist/chunk-TTH7TWVX.js.map +1 -0
- package/dist/{chunk-LW5PTU7D.js → chunk-USIHM7FV.js} +2 -2
- package/dist/chunk-USIHM7FV.js.map +1 -0
- package/dist/{chunk-PCQSHXOQ.js → chunk-VVYSAGB3.js} +6 -6
- package/dist/chunk-VVYSAGB3.js.map +1 -0
- package/dist/{chunk-CDARHMTL.js → chunk-WD5KZE25.js} +2 -2
- package/dist/chunk-WD5KZE25.js.map +1 -0
- package/dist/{chunk-PPZSGU2L.js → chunk-WL4ZO2H3.js} +2 -2
- package/dist/chunk-WL4ZO2H3.js.map +1 -0
- package/dist/{chunk-5M67ZEPM.js → chunk-XOJJBNDX.js} +2 -2
- package/dist/chunk-XOJJBNDX.js.map +1 -0
- package/dist/{chunk-JJHKFW6P.js → chunk-XUVLD65E.js} +7 -7
- package/dist/chunk-XUVLD65E.js.map +1 -0
- package/dist/{chunk-KXT75MXF.js → chunk-YBMEQZX7.js} +2 -2
- package/dist/chunk-YBMEQZX7.js.map +1 -0
- package/dist/{chunk-GJCHZAJO.js → chunk-YS3PMGYC.js} +5 -5
- package/dist/chunk-YS3PMGYC.js.map +1 -0
- package/dist/{chunk-OXQNDQJW.js → chunk-Z2QAABLM.js} +2 -2
- package/dist/chunk-Z2QAABLM.js.map +1 -0
- package/dist/{chunk-YF6WRCTG.js → chunk-ZHEKDP5X.js} +3 -3
- package/dist/chunk-ZHEKDP5X.js.map +1 -0
- package/dist/{chunk-OHBCYKNT.js → chunk-ZPMXRW2A.js} +3 -3
- package/dist/chunk-ZPMXRW2A.js.map +1 -0
- package/dist/{chunk-QCGYYBDZ.js → chunk-ZYEGBF7G.js} +3 -3
- package/dist/chunk-ZYEGBF7G.js.map +1 -0
- package/dist/components/accordion.d.ts +27 -0
- package/dist/components/accordion.js +1 -1
- package/dist/components/alert-dialog.d.ts +39 -0
- package/dist/components/alert-dialog.js +2 -2
- package/dist/components/alert.d.ts +57 -2
- package/dist/components/alert.js +1 -1
- package/dist/components/aspect-ratio.d.ts +17 -0
- package/dist/components/aspect-ratio.js +1 -1
- package/dist/components/avatar.d.ts +43 -4
- package/dist/components/avatar.js +1 -1
- package/dist/components/badge.d.ts +43 -4
- package/dist/components/badge.js +1 -1
- package/dist/components/breadcrumb.d.ts +36 -0
- package/dist/components/breadcrumb.js +1 -1
- package/dist/components/button.d.ts +43 -19
- package/dist/components/button.js +1 -1
- package/dist/components/calendar-category-badge.d.ts +14 -0
- package/dist/components/calendar-category-badge.js +2 -2
- package/dist/components/calendar-event-chip.d.ts +23 -0
- package/dist/components/calendar-event-chip.js +1 -1
- package/dist/components/calendar-event-sheet.d.ts +37 -0
- package/dist/components/calendar-event-sheet.js +6 -6
- package/dist/components/calendar-mini.d.ts +36 -0
- package/dist/components/calendar-mini.js +3 -3
- package/dist/components/calendar-toolbar.d.ts +34 -1
- package/dist/components/calendar-toolbar.js +4 -4
- package/dist/components/calendar.d.ts +12 -0
- package/dist/components/calendar.js +2 -2
- package/dist/components/card.d.ts +31 -0
- package/dist/components/card.js +1 -1
- package/dist/components/carousel.d.ts +29 -0
- package/dist/components/carousel.js +2 -2
- package/dist/components/chart.d.ts +61 -1
- package/dist/components/chart.js +1 -1
- package/dist/components/checkbox.d.ts +19 -1
- package/dist/components/checkbox.js +1 -1
- package/dist/components/collapsible.d.ts +20 -0
- package/dist/components/collapsible.js +1 -1
- package/dist/components/color-picker.d.ts +22 -0
- package/dist/components/color-picker.js +3 -3
- package/dist/components/combobox.d.ts +65 -0
- package/dist/components/combobox.js +5 -5
- package/dist/components/command.d.ts +43 -0
- package/dist/components/command.js +2 -2
- package/dist/components/context-menu.d.ts +42 -0
- package/dist/components/context-menu.js +1 -1
- package/dist/components/date-picker.d.ts +42 -2
- package/dist/components/date-picker.js +4 -4
- package/dist/components/dialog.d.ts +42 -0
- package/dist/components/dialog.js +1 -1
- package/dist/components/drawer.d.ts +43 -0
- package/dist/components/drawer.js +1 -1
- package/dist/components/dropdown-menu.d.ts +48 -0
- package/dist/components/dropdown-menu.js +1 -1
- package/dist/components/file-upload.d.ts +27 -0
- package/dist/components/file-upload.js +2 -2
- package/dist/components/form.d.ts +39 -0
- package/dist/components/form.js +2 -2
- package/dist/components/hover-card.d.ts +34 -0
- package/dist/components/hover-card.js +1 -1
- package/dist/components/input-otp.d.ts +24 -0
- package/dist/components/input-otp.js +1 -1
- package/dist/components/label.d.ts +15 -1
- package/dist/components/label.js +1 -1
- package/dist/components/menubar.d.ts +53 -0
- package/dist/components/menubar.js +1 -1
- package/dist/components/navigation-menu.d.ts +46 -0
- package/dist/components/navigation-menu.js +1 -1
- package/dist/components/pagination.d.ts +41 -0
- package/dist/components/pagination.js +2 -2
- package/dist/components/permission-grid.d.ts +37 -0
- package/dist/components/permission-grid.js +2 -2
- package/dist/components/popover.d.ts +27 -0
- package/dist/components/popover.js +1 -1
- package/dist/components/progress.d.ts +15 -2
- package/dist/components/progress.js +1 -1
- package/dist/components/radio-group.d.ts +33 -3
- package/dist/components/radio-group.js +1 -1
- package/dist/components/rating.d.ts +21 -0
- package/dist/components/rating.js +1 -1
- package/dist/components/resizable.d.ts +25 -0
- package/dist/components/resizable.js +1 -1
- package/dist/components/scope-tree.d.ts +45 -2
- package/dist/components/scope-tree.js +2 -2
- package/dist/components/scope-type-badge.d.ts +15 -0
- package/dist/components/scope-type-badge.js +2 -2
- package/dist/components/scroll-area.d.ts +21 -0
- package/dist/components/scroll-area.js +1 -1
- package/dist/components/select.d.ts +34 -0
- package/dist/components/select.js +1 -1
- package/dist/components/separator.d.ts +19 -2
- package/dist/components/separator.js +1 -1
- package/dist/components/sheet.d.ts +35 -0
- package/dist/components/sheet.js +1 -1
- package/dist/components/sidebar.d.ts +94 -0
- package/dist/components/sidebar.js +6 -6
- package/dist/components/skeleton.d.ts +22 -2
- package/dist/components/skeleton.js +1 -1
- package/dist/components/slider.d.ts +19 -2
- package/dist/components/slider.js +1 -1
- package/dist/components/slug-input.d.ts +28 -0
- package/dist/components/slug-input.js +2 -2
- package/dist/components/sonner.d.ts +16 -0
- package/dist/components/sonner.js +1 -1
- package/dist/components/stage-type-badge.d.ts +6 -0
- package/dist/components/stage-type-badge.js +2 -2
- package/dist/components/switch.d.ts +21 -2
- package/dist/components/switch.js +1 -1
- package/dist/components/table.d.ts +44 -0
- package/dist/components/table.js +1 -1
- package/dist/components/tabs.d.ts +29 -0
- package/dist/components/tabs.js +1 -1
- package/dist/components/tag-input.d.ts +25 -0
- package/dist/components/tag-input.js +2 -2
- package/dist/components/textarea.d.ts +17 -1
- package/dist/components/textarea.js +1 -1
- package/dist/components/time-picker.d.ts +37 -0
- package/dist/components/time-picker.js +4 -4
- package/dist/components/toggle-group.d.ts +36 -3
- package/dist/components/toggle-group.js +2 -2
- package/dist/components/toggle.d.ts +20 -2
- package/dist/components/toggle.js +1 -1
- package/dist/components/tooltip.d.ts +24 -0
- package/dist/components/tooltip.js +1 -1
- package/dist/components/workflow-category-badge.d.ts +6 -0
- package/dist/components/workflow-category-badge.js +2 -2
- package/dist/components/workflow-diagram.d.ts +21 -1
- package/dist/components/workflow-diagram.js +2 -2
- package/dist/components/workflow-status-badge.d.ts +6 -0
- package/dist/components/workflow-status-badge.js +2 -2
- package/dist/components/workflow-stepper.d.ts +18 -0
- package/dist/components/workflow-stepper.js +1 -1
- package/dist/index.d.ts +14 -13
- package/dist/index.js +66 -66
- package/dist/types-CBVkScfB.d.ts +84 -0
- package/package.json +23 -13
- package/src/styles/theme.css +10 -0
- package/dist/chunk-23SALQ3G.js.map +0 -1
- package/dist/chunk-3TGN2DFB.js +0 -41
- package/dist/chunk-3TGN2DFB.js.map +0 -1
- package/dist/chunk-3TV2IR7L.js.map +0 -1
- package/dist/chunk-4CT5SCAH.js.map +0 -1
- package/dist/chunk-4D6FDXCG.js.map +0 -1
- package/dist/chunk-4N357E44.js.map +0 -1
- package/dist/chunk-4OQTTPY4.js.map +0 -1
- package/dist/chunk-4Q2FLTAW.js.map +0 -1
- package/dist/chunk-5M67ZEPM.js.map +0 -1
- package/dist/chunk-5WCL47ZW.js.map +0 -1
- package/dist/chunk-6GCAG5FH.js.map +0 -1
- package/dist/chunk-74K7VSEO.js.map +0 -1
- package/dist/chunk-7ALADSN3.js.map +0 -1
- package/dist/chunk-7ZFYPC74.js.map +0 -1
- package/dist/chunk-ANTYNEUU.js.map +0 -1
- package/dist/chunk-AZARDPXB.js.map +0 -1
- package/dist/chunk-BJO5JCFB.js.map +0 -1
- package/dist/chunk-BOYSXIM3.js.map +0 -1
- package/dist/chunk-CDARHMTL.js.map +0 -1
- package/dist/chunk-CESZTYQQ.js.map +0 -1
- package/dist/chunk-CF2MMEOS.js.map +0 -1
- package/dist/chunk-DIS42JLG.js.map +0 -1
- package/dist/chunk-DR4GGX45.js.map +0 -1
- package/dist/chunk-DZENMCRL.js.map +0 -1
- package/dist/chunk-EIF6WZAZ.js.map +0 -1
- package/dist/chunk-EMHO6GT6.js.map +0 -1
- package/dist/chunk-FBNG2KGO.js +0 -66
- package/dist/chunk-FBNG2KGO.js.map +0 -1
- package/dist/chunk-GJCHZAJO.js.map +0 -1
- package/dist/chunk-IJIGJGL5.js.map +0 -1
- package/dist/chunk-JJHKFW6P.js.map +0 -1
- package/dist/chunk-JPTN62BV.js.map +0 -1
- package/dist/chunk-KABLXGWK.js.map +0 -1
- package/dist/chunk-KOGOYUEE.js.map +0 -1
- package/dist/chunk-KRDWVQZ6.js.map +0 -1
- package/dist/chunk-KXT75MXF.js.map +0 -1
- package/dist/chunk-KXZ7IND6.js.map +0 -1
- package/dist/chunk-L46XUK4O.js.map +0 -1
- package/dist/chunk-LI7CKURD.js.map +0 -1
- package/dist/chunk-LW5PTU7D.js.map +0 -1
- package/dist/chunk-MNAT3ZF6.js.map +0 -1
- package/dist/chunk-NFAXCC73.js.map +0 -1
- package/dist/chunk-OHBCYKNT.js.map +0 -1
- package/dist/chunk-ONAUEREV.js.map +0 -1
- package/dist/chunk-OXQNDQJW.js.map +0 -1
- package/dist/chunk-PCQSHXOQ.js.map +0 -1
- package/dist/chunk-PPZSGU2L.js.map +0 -1
- package/dist/chunk-QCGYYBDZ.js.map +0 -1
- package/dist/chunk-QMABUSSD.js.map +0 -1
- package/dist/chunk-QMAMDYRD.js.map +0 -1
- package/dist/chunk-RIIADVOV.js.map +0 -1
- package/dist/chunk-RVJDDGQW.js.map +0 -1
- package/dist/chunk-SABAKV4J.js.map +0 -1
- package/dist/chunk-TEYOLOZY.js.map +0 -1
- package/dist/chunk-TMFQJ7E3.js.map +0 -1
- package/dist/chunk-UCEUTKTQ.js.map +0 -1
- package/dist/chunk-VGQC333M.js.map +0 -1
- package/dist/chunk-WAPGZIAL.js.map +0 -1
- package/dist/chunk-XKVHX75G.js.map +0 -1
- package/dist/chunk-XRGGZOD5.js.map +0 -1
- package/dist/chunk-Y65FNGEE.js +0 -52
- package/dist/chunk-Y65FNGEE.js.map +0 -1
- package/dist/chunk-YF6WRCTG.js.map +0 -1
- package/dist/chunk-YKJZV2JK.js.map +0 -1
- package/dist/chunk-YMZJ2RYW.js.map +0 -1
- package/dist/chunk-Z47W426M.js.map +0 -1
- package/dist/chunk-ZPWGR4CM.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/toggle.tsx"],"names":[],"mappings":";;;;;AAMA,IAAM,cAAA,GAAiB,GAAA;AAAA,EACrB,+iBAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,gBAAA;AAAA,QACT,OAAA,EACE;AAAA,OACJ;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,OAAA,EAAS,kBAAA;AAAA,QACT,EAAA,EAAI,oBAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACR;AAEJ;
|
|
1
|
+
{"version":3,"sources":["../src/components/toggle.tsx"],"names":[],"mappings":";;;;;AAMA,IAAM,cAAA,GAAiB,GAAA;AAAA,EACrB,+iBAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,gBAAA;AAAA,QACT,OAAA,EACE;AAAA,OACJ;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,OAAA,EAAS,kBAAA;AAAA,QACT,EAAA,EAAI,oBAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACR;AAEJ;AAsBA,SAAS,MAAA,CAAO;AAAA,EACd,SAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;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,GAAG,cAAA,CAAe,EAAE,SAAS,IAAA,EAAM,SAAA,EAAW,CAAC,CAAA;AAAA,MACzD,GAAG;AAAA;AAAA,GACN;AAEJ","file":"chunk-NU56GKGM.js","sourcesContent":["import * as React from \"react\";\nimport * as TogglePrimitive from \"@radix-ui/react-toggle\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/utils\";\n\nconst toggleVariants = cva(\n \"inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium hover:bg-muted hover:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive whitespace-nowrap\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n outline:\n \"border border-input bg-transparent hover:bg-accent hover:text-accent-foreground\",\n },\n size: {\n default: \"h-9 px-2 min-w-9\",\n sm: \"h-8 px-1.5 min-w-8\",\n lg: \"h-10 px-2.5 min-w-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\ninterface ToggleProps\n extends React.ComponentProps<typeof TogglePrimitive.Root>,\n VariantProps<typeof toggleVariants> {}\n\n/**\n * Two-state button that can be toggled on or off, with variant and size options.\n *\n * @example\n * ```tsx\n * // Basic toggle\n * <Toggle aria-label=\"Toggle bold\">\n * <BoldIcon className=\"size-4\" />\n * </Toggle>\n *\n * // Outline variant, small size\n * <Toggle variant=\"outline\" size=\"sm\">\n * <ItalicIcon className=\"size-4\" />\n * </Toggle>\n * ```\n */\nfunction Toggle({\n className,\n variant,\n size,\n ...props\n}: ToggleProps) {\n return (\n <TogglePrimitive.Root\n data-slot=\"toggle\"\n className={cn(toggleVariants({ variant, size, className }))}\n {...props}\n />\n );\n}\n\nexport { Toggle, toggleVariants };\nexport type { ToggleProps };"]}
|
|
@@ -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-P3M5TZD2.js.map
|
|
24
|
+
//# sourceMappingURL=chunk-P3M5TZD2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/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-P3M5TZD2.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"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/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-PGWNOZDX.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 };"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/progress.tsx"],"names":[],"mappings":";;;;AAmBA,SAAS,QAAA,CAAS;AAAA,EAChB,SAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAkB;AAChB,EAAA,uBACE,GAAA;AAAA,IAAmB,iBAAA,CAAA,IAAA;AAAA,IAAlB;AAAA,MACC,WAAA,EAAU,UAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,gEAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAA,GAAA;AAAA,QAAmB,iBAAA,CAAA,SAAA;AAAA,QAAlB;AAAA,UACC,WAAA,EAAU,oBAAA;AAAA,UACV,SAAA,EAAU,gDAAA;AAAA,UACV,OAAO,EAAE,SAAA,EAAW,eAAe,GAAA,IAAO,KAAA,IAAS,EAAE,CAAA,EAAA,CAAA;AAAK;AAAA;AAC5D;AAAA,GACF;AAEJ","file":"chunk-R2CDE5DO.js","sourcesContent":["import * as React from \"react\";\nimport * as ProgressPrimitive from \"@radix-ui/react-progress\";\n\nimport { cn } from \"../lib/utils\";\n\ntype ProgressProps = React.ComponentProps<typeof ProgressPrimitive.Root>;\n\n/**\n * Horizontal bar that indicates the completion progress of a task or operation.\n *\n * @example\n * ```tsx\n * // Basic usage (65% complete)\n * <Progress value={65} />\n *\n * // With custom styling\n * <Progress value={40} className=\"h-3\" />\n * ```\n */\nfunction Progress({\n className,\n value,\n ...props\n}: ProgressProps) {\n return (\n <ProgressPrimitive.Root\n data-slot=\"progress\"\n className={cn(\n \"bg-primary/20 relative h-2 w-full overflow-hidden rounded-full\",\n className,\n )}\n {...props}\n >\n <ProgressPrimitive.Indicator\n data-slot=\"progress-indicator\"\n className=\"bg-primary h-full w-full flex-1 transition-all\"\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n />\n </ProgressPrimitive.Root>\n );\n}\n\nexport { Progress };\nexport type { ProgressProps };"]}
|
|
@@ -61,5 +61,5 @@ function InputOTPSeparator({ ...props }) {
|
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
export { InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot };
|
|
64
|
-
//# sourceMappingURL=chunk-
|
|
65
|
-
//# sourceMappingURL=chunk-
|
|
64
|
+
//# sourceMappingURL=chunk-RQNZDWY3.js.map
|
|
65
|
+
//# sourceMappingURL=chunk-RQNZDWY3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/input-otp.tsx"],"names":[],"mappings":";;;;;;AA2BA,SAAS,QAAA,CAAS;AAAA,EAChB,SAAA;AAAA,EACA,kBAAA;AAAA,EACA,GAAG;AACL,CAAA,EAEG;AACD,EAAA,uBACE,GAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,WAAA;AAAA,MACV,kBAAA,EAAoB,EAAA;AAAA,QAClB,iDAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,6BAAA,EAA+B,SAAS,CAAA;AAAA,MACrD,GAAG;AAAA;AAAA,GACN;AAEJ;AAGA,SAAS,aAAA,CAAc,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AAC3E,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,iBAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,yBAAA,EAA2B,SAAS,CAAA;AAAA,MACjD,GAAG;AAAA;AAAA,GACN;AAEJ;AAGA,SAAS,YAAA,CAAa;AAAA,EACpB,KAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAEG;AACD,EAAA,MAAM,eAAA,GAAwB,iBAAW,eAAe,CAAA;AACxD,EAAA,MAAM,EAAE,MAAM,YAAA,EAAc,QAAA,KAAa,eAAA,EAAiB,KAAA,CAAM,KAAK,CAAA,IAAK,EAAC;AAE3E,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,gBAAA;AAAA,MACV,aAAA,EAAa,QAAA;AAAA,MACb,SAAA,EAAW,EAAA;AAAA,QACT,ogBAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,IAAA;AAAA,QACA,YAAA,wBACE,KAAA,EAAA,EAAI,SAAA,EAAU,yEACb,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0DAAA,EAA2D,CAAA,EAC5E;AAAA;AAAA;AAAA,GAEJ;AAEJ;AAGA,SAAS,iBAAA,CAAkB,EAAE,GAAG,KAAA,EAAM,EAAgC;AACpE,EAAA,uBACE,GAAA,CAAC,KAAA,EAAA,EAAI,WAAA,EAAU,qBAAA,EAAsB,IAAA,EAAK,aAAa,GAAG,KAAA,EACxD,QAAA,kBAAA,GAAA,CAAC,SAAA,EAAA,EAAU,CAAA,EACb,CAAA;AAEJ","file":"chunk-RQNZDWY3.js","sourcesContent":["import * as React from \"react\";\nimport { OTPInput, OTPInputContext } from \"input-otp\";\nimport { MinusIcon } from \"lucide-react\";\n\nimport { cn } from \"../lib/utils\";\n\n/**\n * One-time password input component built on the `input-otp` library.\n * Renders a segmented input for entering verification codes.\n *\n * @example\n * ```tsx\n * <InputOTP maxLength={6} value={otp} onChange={setOtp}>\n * <InputOTPGroup>\n * <InputOTPSlot index={0} />\n * <InputOTPSlot index={1} />\n * <InputOTPSlot index={2} />\n * </InputOTPGroup>\n * <InputOTPSeparator />\n * <InputOTPGroup>\n * <InputOTPSlot index={3} />\n * <InputOTPSlot index={4} />\n * <InputOTPSlot index={5} />\n * </InputOTPGroup>\n * </InputOTP>\n * ```\n */\nfunction InputOTP({\n className,\n containerClassName,\n ...props\n}: React.ComponentProps<typeof OTPInput> & {\n containerClassName?: string;\n}) {\n return (\n <OTPInput\n data-slot=\"input-otp\"\n containerClassName={cn(\n \"flex items-center gap-2 has-disabled:opacity-50\",\n containerClassName,\n )}\n className={cn(\"disabled:cursor-not-allowed\", className)}\n {...props}\n />\n );\n}\n\n/** Groups adjacent OTP slots together visually. */\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-otp-group\"\n className={cn(\"flex items-center gap-1\", className)}\n {...props}\n />\n );\n}\n\n/** Individual character slot within an OTP group. */\nfunction InputOTPSlot({\n index,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n index: number;\n}) {\n const inputOTPContext = React.useContext(OTPInputContext);\n const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {};\n\n return (\n <div\n data-slot=\"input-otp-slot\"\n data-active={isActive}\n className={cn(\n \"data-[active=true]:border-ring data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:ring-destructive/20 dark:data-[active=true]:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive dark:bg-input/30 border-input relative flex h-9 w-9 items-center justify-center border-y border-r text-sm bg-input-background transition-all outline-none first:rounded-l-md first:border-l last:rounded-r-md data-[active=true]:z-10 data-[active=true]:ring-[3px]\",\n className,\n )}\n {...props}\n >\n {char}\n {hasFakeCaret && (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"animate-caret-blink bg-foreground h-4 w-px duration-1000\" />\n </div>\n )}\n </div>\n );\n}\n\n/** Visual separator (dash) between OTP groups. */\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<\"div\">) {\n return (\n <div data-slot=\"input-otp-separator\" role=\"separator\" {...props}>\n <MinusIcon />\n </div>\n );\n}\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator };"]}
|
|
@@ -105,5 +105,5 @@ function TableCaption({
|
|
|
105
105
|
}
|
|
106
106
|
|
|
107
107
|
export { Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow };
|
|
108
|
-
//# sourceMappingURL=chunk-
|
|
109
|
-
//# sourceMappingURL=chunk-
|
|
108
|
+
//# sourceMappingURL=chunk-S6PDRGR5.js.map
|
|
109
|
+
//# sourceMappingURL=chunk-S6PDRGR5.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/table.tsx"],"names":[],"mappings":";;;AAyCA,SAAS,KAAA,CAAM,EAAE,SAAA,EAAW,GAAG,OAAM,EAAkC;AACrE,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,iBAAA;AAAA,MACV,SAAA,EAAU,iCAAA;AAAA,MAEV,QAAA,kBAAA,GAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,WAAA,EAAU,OAAA;AAAA,UACV,SAAA,EAAW,EAAA,CAAG,+BAAA,EAAiC,SAAS,CAAA;AAAA,UACvD,GAAG;AAAA;AAAA;AACN;AAAA,GACF;AAEJ;AAGA,SAAS,WAAA,CAAY,EAAE,SAAA,EAAW,GAAG,OAAM,EAAkC;AAC3E,EAAA,uBACE,GAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,cAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,iBAAA,EAAmB,SAAS,CAAA;AAAA,MACzC,GAAG;AAAA;AAAA,GACN;AAEJ;AAGA,SAAS,SAAA,CAAU,EAAE,SAAA,EAAW,GAAG,OAAM,EAAkC;AACzE,EAAA,uBACE,GAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,YAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,4BAAA,EAA8B,SAAS,CAAA;AAAA,MACpD,GAAG;AAAA;AAAA,GACN;AAEJ;AAGA,SAAS,WAAA,CAAY,EAAE,SAAA,EAAW,GAAG,OAAM,EAAkC;AAC3E,EAAA,uBACE,GAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,cAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,yDAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAGA,SAAS,QAAA,CAAS,EAAE,SAAA,EAAW,GAAG,OAAM,EAA+B;AACrE,EAAA,uBACE,GAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,WAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,6EAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAGA,SAAS,SAAA,CAAU,EAAE,SAAA,EAAW,GAAG,OAAM,EAA+B;AACtE,EAAA,uBACE,GAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,YAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,4JAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAGA,SAAS,SAAA,CAAU,EAAE,SAAA,EAAW,GAAG,OAAM,EAA+B;AACtE,EAAA,uBACE,GAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,YAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,wGAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAGA,SAAS,YAAA,CAAa;AAAA,EACpB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAoC;AAClC,EAAA,uBACE,GAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,eAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,oCAAA,EAAsC,SAAS,CAAA;AAAA,MAC5D,GAAG;AAAA;AAAA,GACN;AAEJ","file":"chunk-S6PDRGR5.js","sourcesContent":["import * as React from \"react\";\n\nimport { cn } from \"../lib/utils\";\n\n/**\n * Data table component with header, body, footer, row, head, cell, and caption sub-components.\n *\n * Renders inside a horizontally scrollable container. Uses density tokens for\n * consistent header height (`h-table-head`) and cell padding.\n *\n * @example\n * ```tsx\n * <Table>\n * <TableHeader>\n * <TableRow>\n * <TableHead>Name</TableHead>\n * <TableHead>Email</TableHead>\n * <TableHead>Role</TableHead>\n * </TableRow>\n * </TableHeader>\n * <TableBody>\n * <TableRow>\n * <TableCell>Alice</TableCell>\n * <TableCell>alice@example.com</TableCell>\n * <TableCell>Admin</TableCell>\n * </TableRow>\n * <TableRow>\n * <TableCell>Bob</TableCell>\n * <TableCell>bob@example.com</TableCell>\n * <TableCell>Member</TableCell>\n * </TableRow>\n * </TableBody>\n * <TableFooter>\n * <TableRow>\n * <TableCell colSpan={3}>2 users total</TableCell>\n * </TableRow>\n * </TableFooter>\n * <TableCaption>A list of team members.</TableCaption>\n * </Table>\n * ```\n */\nfunction Table({ className, ...props }: React.ComponentProps<\"table\">) {\n return (\n <div\n data-slot=\"table-container\"\n className=\"relative w-full overflow-x-auto\"\n >\n <table\n data-slot=\"table\"\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n );\n}\n\n/** Table header container. Groups `TableRow` elements for column headings. */\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n return (\n <thead\n data-slot=\"table-header\"\n className={cn(\"[&_tr]:border-b\", className)}\n {...props}\n />\n );\n}\n\n/** Table body container. Groups `TableRow` elements for data rows. */\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n <tbody\n data-slot=\"table-body\"\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n );\n}\n\n/** Table footer container. Renders with a muted background and top border. */\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\n \"bg-muted/50 border-t font-medium [&>tr]:last:border-b-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Table row with hover highlight and selected state support via `data-state=\"selected\"`. */\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn(\n \"hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Table head cell. Renders as a `<th>` with density-based height (`h-table-head`). */\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\n \"text-foreground h-table-head px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Table data cell. Renders as a `<td>` with consistent padding and alignment. */\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\n \"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Table caption displayed below the table in muted text. */\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<\"caption\">) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn(\"text-muted-foreground mt-4 text-sm\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n};"]}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { cn } from './chunk-DGPY4WP3.js';
|
|
2
|
+
import { cva } from 'class-variance-authority';
|
|
3
|
+
import { jsx } from 'react/jsx-runtime';
|
|
4
|
+
|
|
5
|
+
var alertVariants = cva(
|
|
6
|
+
"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",
|
|
7
|
+
{
|
|
8
|
+
variants: {
|
|
9
|
+
variant: {
|
|
10
|
+
// Bordered card style — color applied via compoundVariants
|
|
11
|
+
default: "",
|
|
12
|
+
// Legacy — maps to default + destructive color (backward compatible)
|
|
13
|
+
destructive: "",
|
|
14
|
+
// Filled background style — color applied via compoundVariants
|
|
15
|
+
soft: ""
|
|
16
|
+
},
|
|
17
|
+
color: {
|
|
18
|
+
primary: "",
|
|
19
|
+
destructive: "",
|
|
20
|
+
success: "",
|
|
21
|
+
warning: "",
|
|
22
|
+
info: ""
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
compoundVariants: [
|
|
26
|
+
// ── Default (bordered) × color ──
|
|
27
|
+
{ variant: "default", color: "primary", className: "bg-card text-card-foreground" },
|
|
28
|
+
{ variant: "default", color: "destructive", className: "text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90" },
|
|
29
|
+
{ variant: "default", color: "success", className: "text-success bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-success/90" },
|
|
30
|
+
{ variant: "default", color: "warning", className: "text-warning bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-warning/90" },
|
|
31
|
+
{ variant: "default", color: "info", className: "text-info bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-info/90" },
|
|
32
|
+
// ── Legacy destructive variant (backward compat) ──
|
|
33
|
+
{ variant: "destructive", className: "text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90" },
|
|
34
|
+
// ── Soft (filled bg) × color ──
|
|
35
|
+
{ variant: "soft", color: "primary", className: "bg-primary/10 text-primary border-primary/20 [&>svg]:text-current *:data-[slot=alert-description]:text-primary/90" },
|
|
36
|
+
{ variant: "soft", color: "destructive", className: "bg-destructive/10 text-destructive border-destructive/20 [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90" },
|
|
37
|
+
{ variant: "soft", color: "success", className: "bg-success/10 text-success border-success/20 [&>svg]:text-current *:data-[slot=alert-description]:text-success/90" },
|
|
38
|
+
{ variant: "soft", color: "warning", className: "bg-warning/10 text-warning border-warning/20 [&>svg]:text-current *:data-[slot=alert-description]:text-warning/90" },
|
|
39
|
+
{ variant: "soft", color: "info", className: "bg-info/10 text-info border-info/20 [&>svg]:text-current *:data-[slot=alert-description]:text-info/90" }
|
|
40
|
+
],
|
|
41
|
+
defaultVariants: {
|
|
42
|
+
variant: "default",
|
|
43
|
+
color: "primary"
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
);
|
|
47
|
+
function Alert({
|
|
48
|
+
className,
|
|
49
|
+
variant,
|
|
50
|
+
color,
|
|
51
|
+
...props
|
|
52
|
+
}) {
|
|
53
|
+
return /* @__PURE__ */ jsx(
|
|
54
|
+
"div",
|
|
55
|
+
{
|
|
56
|
+
"data-slot": "alert",
|
|
57
|
+
role: "alert",
|
|
58
|
+
className: cn(alertVariants({ variant, color }), className),
|
|
59
|
+
...props
|
|
60
|
+
}
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
function AlertTitle({ className, ...props }) {
|
|
64
|
+
return /* @__PURE__ */ jsx(
|
|
65
|
+
"div",
|
|
66
|
+
{
|
|
67
|
+
"data-slot": "alert-title",
|
|
68
|
+
className: cn(
|
|
69
|
+
"col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight",
|
|
70
|
+
className
|
|
71
|
+
),
|
|
72
|
+
...props
|
|
73
|
+
}
|
|
74
|
+
);
|
|
75
|
+
}
|
|
76
|
+
function AlertDescription({
|
|
77
|
+
className,
|
|
78
|
+
...props
|
|
79
|
+
}) {
|
|
80
|
+
return /* @__PURE__ */ jsx(
|
|
81
|
+
"div",
|
|
82
|
+
{
|
|
83
|
+
"data-slot": "alert-description",
|
|
84
|
+
className: cn(
|
|
85
|
+
"text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed",
|
|
86
|
+
className
|
|
87
|
+
),
|
|
88
|
+
...props
|
|
89
|
+
}
|
|
90
|
+
);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export { Alert, AlertDescription, AlertTitle };
|
|
94
|
+
//# sourceMappingURL=chunk-TGYQ3AKH.js.map
|
|
95
|
+
//# sourceMappingURL=chunk-TGYQ3AKH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/alert.tsx"],"names":[],"mappings":"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","file":"chunk-TGYQ3AKH.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"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Sheet, SheetContent, SheetHeader, SheetTitle } from './chunk-
|
|
2
|
-
import { CalendarCategoryBadge } from './chunk-
|
|
3
|
-
import { Separator } from './chunk-
|
|
4
|
-
import { Button } from './chunk-
|
|
1
|
+
import { Sheet, SheetContent, SheetHeader, SheetTitle } from './chunk-JLTBUACL.js';
|
|
2
|
+
import { CalendarCategoryBadge } from './chunk-JAJMM32I.js';
|
|
3
|
+
import { Separator } from './chunk-PGWNOZDX.js';
|
|
4
|
+
import { Button } from './chunk-55E7D2HR.js';
|
|
5
5
|
import { format } from 'date-fns';
|
|
6
6
|
import { Clock, MapPin, Users, Trash2 } from 'lucide-react';
|
|
7
7
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
@@ -77,5 +77,5 @@ function CalendarEventSheet({
|
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
export { CalendarEventSheet };
|
|
80
|
-
//# sourceMappingURL=chunk-
|
|
81
|
-
//# sourceMappingURL=chunk-
|
|
80
|
+
//# sourceMappingURL=chunk-THQUH6WX.js.map
|
|
81
|
+
//# sourceMappingURL=chunk-THQUH6WX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/calendar-event-sheet.tsx"],"names":[],"mappings":"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","file":"chunk-THQUH6WX.js","sourcesContent":["import { format } from 'date-fns';\nimport { Clock, MapPin, Users, Trash2 } from 'lucide-react';\nimport { Sheet, SheetContent, SheetHeader, SheetTitle } from './sheet';\nimport { Button } from './button';\nimport { Separator } from './separator';\nimport { CalendarCategoryBadge } from './calendar-category-badge';\n\n/** Extended event data shape for the detail sheet, including description, location, and attendees. */\nexport interface CalendarEventSheetEvent {\n /** Unique event identifier. */\n id: string;\n /** Display title of the event. */\n title: string;\n /** Optional long description or notes for the event. */\n description?: string;\n /** Event start date/time. */\n start: Date;\n /** Event end date/time. */\n end: Date;\n /** Whether this is an all-day event. */\n allDay?: boolean;\n /** CSS color string for the event. */\n color: string;\n /** Category key (e.g. \"meeting\", \"deadline\") used by CalendarCategoryBadge. */\n category: string;\n /** Optional location string. */\n location?: string;\n /** Optional list of attendee email addresses. */\n attendees?: string[];\n}\n\n/** Localizable labels for the event detail sheet. All have English defaults. */\nexport interface CalendarEventSheetLabels {\n /** Text displayed for all-day events instead of a time range. */\n allDay?: string;\n /** Heading text for the attendees section. */\n attendees?: string;\n /** Label for the delete button. */\n delete?: string;\n}\n\nconst defaultLabels: Required<CalendarEventSheetLabels> = {\n allDay: 'All Day',\n attendees: 'Attendees',\n delete: 'Delete',\n};\n\nexport interface CalendarEventSheetProps {\n /** The event to display, or `null` to render nothing. */\n event: CalendarEventSheetEvent | null;\n /** Whether the sheet is open. */\n open: boolean;\n /** Callback to toggle the sheet open state. */\n onOpenChange: (open: boolean) => void;\n /** Optional callback when the delete button is clicked. Receives the event id. */\n onDelete?: (id: string) => void;\n /** Override display label for the category badge. */\n categoryLabel?: string;\n /** Custom className styles per category key for the CalendarCategoryBadge. */\n categoryStyles?: Record<string, string>;\n /** Localizable UI labels with English defaults. */\n labels?: CalendarEventSheetLabels;\n}\n\n/**\n * Side sheet that displays full event details including title, category badge,\n * description, date/time, location, attendees, and a delete action.\n * Built on top of the Sheet component.\n *\n * @example\n * ```tsx\n * <CalendarEventSheet\n * event={selectedEvent}\n * open={sheetOpen}\n * onOpenChange={setSheetOpen}\n * onDelete={(id) => removeEvent(id)}\n * />\n * ```\n */\nexport function CalendarEventSheet({\n event,\n open,\n onOpenChange,\n onDelete,\n categoryLabel,\n categoryStyles,\n labels: labelsProp,\n}: CalendarEventSheetProps) {\n const labels = { ...defaultLabels, ...labelsProp };\n\n if (!event) return null;\n\n const timeDisplay = event.allDay\n ? labels.allDay\n : `${format(event.start, 'HH:mm')} - ${format(event.end, 'HH:mm')}`;\n\n return (\n <Sheet open={open} onOpenChange={onOpenChange}>\n <SheetContent className=\"sm:max-w-md\">\n <SheetHeader>\n <SheetTitle>{event.title}</SheetTitle>\n </SheetHeader>\n <div className=\"mt-4 space-y-4\">\n <CalendarCategoryBadge\n category={event.category}\n label={categoryLabel}\n styles={categoryStyles}\n />\n\n {event.description && (\n <p className=\"text-sm text-muted-foreground\">{event.description}</p>\n )}\n\n <Separator />\n\n <div className=\"space-y-3\">\n <div className=\"flex items-center gap-3 text-sm\">\n <Clock className=\"w-4 h-4 text-muted-foreground flex-shrink-0\" />\n <div>\n <p className=\"font-medium\">{format(event.start, 'EEEE, MMMM d, yyyy')}</p>\n <p className=\"text-muted-foreground\">{timeDisplay}</p>\n </div>\n </div>\n\n {event.location && (\n <div className=\"flex items-center gap-3 text-sm\">\n <MapPin className=\"w-4 h-4 text-muted-foreground flex-shrink-0\" />\n <span>{event.location}</span>\n </div>\n )}\n\n {event.attendees && event.attendees.length > 0 && (\n <div className=\"flex items-start gap-3 text-sm\">\n <Users className=\"w-4 h-4 text-muted-foreground flex-shrink-0 mt-0.5\" />\n <div>\n <p className=\"font-medium mb-1\">{labels.attendees}</p>\n <div className=\"space-y-1\">\n {event.attendees.map(email => (\n <p key={email} className=\"text-muted-foreground\">{email}</p>\n ))}\n </div>\n </div>\n </div>\n )}\n </div>\n\n <Separator />\n\n <div className=\"flex justify-end\">\n <Button\n variant=\"destructive\"\n size=\"sm\"\n onClick={() => {\n onDelete?.(event.id);\n onOpenChange(false);\n }}\n >\n <Trash2 className=\"w-4 h-4\" />\n {labels.delete}\n </Button>\n </div>\n </div>\n </SheetContent>\n </Sheet>\n );\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Checkbox } from './chunk-
|
|
1
|
+
import { Checkbox } from './chunk-WL4ZO2H3.js';
|
|
2
2
|
import { cn } from './chunk-DGPY4WP3.js';
|
|
3
3
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
4
4
|
|
|
@@ -108,5 +108,5 @@ function PermissionGrid({
|
|
|
108
108
|
}
|
|
109
109
|
|
|
110
110
|
export { PermissionGrid, buildPermissionId };
|
|
111
|
-
//# sourceMappingURL=chunk-
|
|
112
|
-
//# sourceMappingURL=chunk-
|
|
111
|
+
//# sourceMappingURL=chunk-TJMK2KBE.js.map
|
|
112
|
+
//# sourceMappingURL=chunk-TJMK2KBE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/permission-grid.tsx"],"names":[],"mappings":"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","file":"chunk-TJMK2KBE.js","sourcesContent":["import { Checkbox } from './checkbox';\nimport { cn } from '../lib/utils';\n\n/** A single permission action (e.g. \"view\", \"create\", \"delete\"). */\nexport interface PermissionDefinition {\n /** Unique key for this permission (e.g. \"view\", \"create\"). Used to build `module:action` IDs. */\n key: string;\n /** Display label shown in the column header. */\n label: string;\n}\n\n/** A module (row) in the permission grid containing its available permission actions. */\nexport interface PermissionModule {\n /** Unique key for this module (e.g. \"users\", \"projects\"). Used to build `module:action` IDs. */\n key: string;\n /** Display label shown in the first column. */\n label: string;\n /** List of permission actions available for this module. */\n permissions: PermissionDefinition[];\n}\n\n/** Localizable labels for the permission grid. */\nexport interface PermissionGridLabels {\n /** Header text for the module name column. */\n moduleHeader: string;\n /** Header text for the \"Select All\" column. */\n selectAll: string;\n}\n\nexport interface PermissionGridProps {\n /** List of modules (rows) to display, each with its available permission actions. */\n modules: PermissionModule[];\n /** Currently selected permission IDs in `module:action` format (e.g. `[\"users:view\", \"users:create\"]`). */\n selectedIds: string[];\n /** Callback with the updated list of selected permission IDs when checkboxes change. */\n onChange?: (ids: string[]) => void;\n /** When true, all checkboxes are disabled and the \"Select All\" column is hidden. Defaults to `false`. */\n readOnly?: boolean;\n /** Localizable UI labels with English defaults. */\n labels?: Partial<PermissionGridLabels>;\n}\n\nconst defaultLabels: PermissionGridLabels = {\n moduleHeader: 'Module',\n selectAll: 'Select All',\n};\n\n/**\n * Builds a permission ID from module key and permission key.\n * Used internally and exposed for consumers to construct IDs.\n */\nexport function buildPermissionId(moduleKey: string, permissionKey: string): string {\n return `${moduleKey}:${permissionKey}`;\n}\n\n/**\n * Collects all unique permission keys across all modules (preserving order).\n */\nfunction collectColumns(modules: PermissionModule[]): string[] {\n const seen = new Set<string>();\n const columns: string[] = [];\n for (const mod of modules) {\n for (const perm of mod.permissions) {\n if (!seen.has(perm.key)) {\n seen.add(perm.key);\n columns.push(perm.key);\n }\n }\n }\n return columns;\n}\n\n/**\n * Gets the label for a column key from the first module that defines it.\n */\nfunction getColumnLabel(modules: PermissionModule[], key: string): string {\n for (const mod of modules) {\n const perm = mod.permissions.find(p => p.key === key);\n if (perm) return perm.label;\n }\n return key;\n}\n\n/**\n * Table-based permission matrix with modules as rows and permission actions\n * as columns. Each cell is a checkbox. Permission IDs use `module:action`\n * format (built via {@link buildPermissionId}). Includes per-row \"Select All\"\n * toggles. Supports read-only mode.\n *\n * @example\n * ```tsx\n * const modules: PermissionModule[] = [\n * { key: \"users\", label: \"Users\", permissions: [\n * { key: \"view\", label: \"View\" },\n * { key: \"create\", label: \"Create\" },\n * ]},\n * ];\n *\n * <PermissionGrid\n * modules={modules}\n * selectedIds={[\"users:view\"]}\n * onChange={(ids) => setPermissions(ids)}\n * />\n * ```\n */\nexport function PermissionGrid({\n modules,\n selectedIds,\n onChange,\n readOnly = false,\n labels: labelOverrides,\n}: PermissionGridProps) {\n const labels = { ...defaultLabels, ...labelOverrides };\n const columns = collectColumns(modules);\n\n const togglePermission = (permId: string) => {\n if (readOnly || !onChange) return;\n if (selectedIds.includes(permId)) {\n onChange(selectedIds.filter(id => id !== permId));\n } else {\n onChange([...selectedIds, permId]);\n }\n };\n\n const toggleModule = (mod: PermissionModule) => {\n if (readOnly || !onChange) return;\n const modulePermIds = mod.permissions.map(p => buildPermissionId(mod.key, p.key));\n const allSelected = modulePermIds.every(id => selectedIds.includes(id));\n\n if (allSelected) {\n onChange(selectedIds.filter(id => !modulePermIds.includes(id)));\n } else {\n const newIds = new Set([...selectedIds, ...modulePermIds]);\n onChange(Array.from(newIds));\n }\n };\n\n const isModuleAllSelected = (mod: PermissionModule): boolean => {\n const modulePermIds = mod.permissions.map(p => buildPermissionId(mod.key, p.key));\n return modulePermIds.length > 0 && modulePermIds.every(id => selectedIds.includes(id));\n };\n\n return (\n <div className=\"border border-border rounded-lg overflow-hidden\">\n <table className=\"w-full\">\n <thead>\n <tr className=\"bg-muted/50\">\n <th className=\"text-left text-xs font-medium text-muted-foreground uppercase tracking-wider px-4 h-table-head\">\n {labels.moduleHeader}\n </th>\n {columns.map(colKey => (\n <th\n key={colKey}\n className=\"text-center text-xs font-medium text-muted-foreground uppercase tracking-wider px-2 h-table-head w-20\"\n >\n {getColumnLabel(modules, colKey)}\n </th>\n ))}\n {!readOnly && (\n <th className=\"text-center text-xs font-medium text-muted-foreground uppercase tracking-wider px-2 h-table-head w-20\">\n {labels.selectAll}\n </th>\n )}\n </tr>\n </thead>\n <tbody>\n {modules.map((mod, idx) => {\n const modPermKeys = new Set(mod.permissions.map(p => p.key));\n return (\n <tr key={mod.key} className={cn(idx % 2 === 0 ? 'bg-background' : 'bg-muted/20')}>\n <td className=\"px-4 py-3 text-sm font-medium\">{mod.label}</td>\n {columns.map(colKey => {\n if (!modPermKeys.has(colKey)) {\n return (\n <td key={colKey} className=\"text-center px-2 py-3\">\n <span className=\"text-muted-foreground\">-</span>\n </td>\n );\n }\n const permId = buildPermissionId(mod.key, colKey);\n const checked = selectedIds.includes(permId);\n return (\n <td key={colKey} className=\"text-center px-2 py-3\">\n <Checkbox\n checked={checked}\n onCheckedChange={() => togglePermission(permId)}\n disabled={readOnly}\n className=\"mx-auto\"\n />\n </td>\n );\n })}\n {!readOnly && (\n <td className=\"text-center px-2 py-3\">\n <Checkbox\n checked={isModuleAllSelected(mod)}\n onCheckedChange={() => toggleModule(mod)}\n className=\"mx-auto\"\n />\n </td>\n )}\n </tr>\n );\n })}\n </tbody>\n </table>\n </div>\n );\n}\n"]}
|
|
@@ -26,5 +26,5 @@ function CalendarEventChip({ event, compact = false, onClick }) {
|
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
export { CalendarEventChip };
|
|
29
|
-
//# sourceMappingURL=chunk-
|
|
30
|
-
//# sourceMappingURL=chunk-
|
|
29
|
+
//# sourceMappingURL=chunk-TTH7TWVX.js.map
|
|
30
|
+
//# sourceMappingURL=chunk-TTH7TWVX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/calendar-event-chip.tsx"],"names":[],"mappings":";;;;AAyCO,SAAS,kBAAkB,EAAE,KAAA,EAAO,OAAA,GAAU,KAAA,EAAO,SAAQ,EAA2B;AAC7F,EAAA,uBACE,IAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,QAAA;AAAA,MACL,OAAA,EAAS,MAAM,OAAA,GAAU,KAAK,CAAA;AAAA,MAC9B,SAAA,EAAW,EAAA;AAAA,QACT,wHAAA;AAAA,QACA,UAAU,eAAA,GAAkB;AAAA,OAC9B;AAAA,MACA,KAAA,EAAO;AAAA,QACL,eAAA,EAAiB,CAAA,EAAG,KAAA,CAAM,KAAK,CAAA,EAAA,CAAA;AAAA,QAC/B,OAAO,KAAA,CAAM,KAAA;AAAA,QACb,UAAA,EAAY,CAAA,UAAA,EAAa,KAAA,CAAM,KAAK,CAAA;AAAA,OACtC;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,CAAC,KAAA,CAAM,MAAA,IAAU,CAAC,OAAA,oBACjB,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,iBAAA,EAAmB,QAAA,EAAA,MAAA,CAAO,KAAA,CAAM,KAAA,EAAO,OAAO,CAAA,EAAE,CAAA;AAAA,QAEjE,KAAA,CAAM;AAAA;AAAA;AAAA,GACT;AAEJ","file":"chunk-TTH7TWVX.js","sourcesContent":["import { format } from 'date-fns';\nimport { cn } from '../lib/utils';\n\n/** Event data shape required by CalendarEventChip. */\nexport interface CalendarEventChipEvent {\n /** Unique event identifier. */\n id: string;\n /** Display title of the event. */\n title: string;\n /** Event start date/time. */\n start: Date;\n /** Event end date/time. */\n end: Date;\n /** Whether this is an all-day event. When true, time is not displayed. */\n allDay?: boolean;\n /** CSS color string used for the chip background, text, and left border. */\n color: string;\n}\n\nexport interface CalendarEventChipProps {\n /** The event to display. */\n event: CalendarEventChipEvent;\n /** Use compact layout with tighter line-height. Defaults to `false`. */\n compact?: boolean;\n /** Callback when the chip is clicked. */\n onClick?: (event: CalendarEventChipEvent) => void;\n}\n\n/**\n * Small colored chip representing a calendar event. Shows the event title\n * with a colored left border and tinted background. Optionally displays\n * the start time for non-all-day events.\n *\n * @example\n * ```tsx\n * <CalendarEventChip\n * event={{ id: \"1\", title: \"Standup\", start: new Date(), end: new Date(), color: \"#3b82f6\" }}\n * onClick={(e) => openDetail(e.id)}\n * />\n * ```\n */\nexport function CalendarEventChip({ event, compact = false, onClick }: CalendarEventChipProps) {\n return (\n <button\n type=\"button\"\n onClick={() => onClick?.(event)}\n className={cn(\n 'w-full text-left rounded px-1.5 py-0.5 text-xs font-medium truncate transition-opacity hover:opacity-80 cursor-pointer',\n compact ? 'leading-tight' : 'leading-normal'\n )}\n style={{\n backgroundColor: `${event.color}20`,\n color: event.color,\n borderLeft: `2px solid ${event.color}`,\n }}\n >\n {!event.allDay && !compact && (\n <span className=\"opacity-75 mr-1\">{format(event.start, 'HH:mm')}</span>\n )}\n {event.title}\n </button>\n );\n}\n"]}
|
|
@@ -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-USIHM7FV.js.map
|
|
211
|
+
//# sourceMappingURL=chunk-USIHM7FV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/context-menu.tsx"],"names":[],"mappings":"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","file":"chunk-USIHM7FV.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};"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Badge } from './chunk-
|
|
1
|
+
import { Badge } from './chunk-A3BB5ZOC.js';
|
|
2
2
|
import { cn } from './chunk-DGPY4WP3.js';
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import { X } from 'lucide-react';
|
|
@@ -51,8 +51,8 @@ function TagInput({
|
|
|
51
51
|
"div",
|
|
52
52
|
{
|
|
53
53
|
className: cn(
|
|
54
|
-
"flex flex-wrap gap-2 p-2 border rounded-lg bg-
|
|
55
|
-
disabled && "opacity-50 cursor-not-allowed bg-
|
|
54
|
+
"flex flex-wrap gap-2 p-2 border rounded-lg bg-background min-h-[42px] cursor-text",
|
|
55
|
+
disabled && "opacity-50 cursor-not-allowed bg-muted",
|
|
56
56
|
className
|
|
57
57
|
),
|
|
58
58
|
onClick: () => !disabled && inputRef.current?.focus(),
|
|
@@ -72,7 +72,7 @@ function TagInput({
|
|
|
72
72
|
e.stopPropagation();
|
|
73
73
|
removeTag(index);
|
|
74
74
|
},
|
|
75
|
-
className: "rounded-full hover:bg-
|
|
75
|
+
className: "rounded-full hover:bg-muted-foreground/30 p-0.5 transition-colors",
|
|
76
76
|
children: /* @__PURE__ */ jsx(X, { className: "h-3 w-3" })
|
|
77
77
|
}
|
|
78
78
|
)
|
|
@@ -100,5 +100,5 @@ function TagInput({
|
|
|
100
100
|
}
|
|
101
101
|
|
|
102
102
|
export { TagInput };
|
|
103
|
-
//# sourceMappingURL=chunk-
|
|
104
|
-
//# sourceMappingURL=chunk-
|
|
103
|
+
//# sourceMappingURL=chunk-VVYSAGB3.js.map
|
|
104
|
+
//# sourceMappingURL=chunk-VVYSAGB3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/tag-input.tsx"],"names":[],"mappings":"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","file":"chunk-VVYSAGB3.js","sourcesContent":["import * as React from \"react\";\nimport { X } from \"lucide-react\";\nimport { cn } from \"../lib/utils\";\nimport { Badge } from \"./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"]}
|
|
@@ -21,5 +21,5 @@ var Textarea = React.forwardRef(
|
|
|
21
21
|
Textarea.displayName = "Textarea";
|
|
22
22
|
|
|
23
23
|
export { Textarea };
|
|
24
|
-
//# sourceMappingURL=chunk-
|
|
25
|
-
//# sourceMappingURL=chunk-
|
|
24
|
+
//# sourceMappingURL=chunk-WD5KZE25.js.map
|
|
25
|
+
//# sourceMappingURL=chunk-WD5KZE25.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/textarea.tsx"],"names":[],"mappings":";;;;AAqBA,IAAM,QAAA,GAAiB,KAAA,CAAA,UAAA;AAAA,EACrB,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,IAAS,GAAA,KAAQ;AAChC,IAAA,uBACE,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,WAAA,EAAU,UAAA;AAAA,QACV,SAAA,EAAW,EAAA;AAAA,UACT,4cAAA;AAAA,UACA;AAAA,SACF;AAAA,QACC,GAAG;AAAA;AAAA,KACN;AAAA,EAEJ;AACF;AACA,QAAA,CAAS,WAAA,GAAc,UAAA","file":"chunk-WD5KZE25.js","sourcesContent":["import * as React from \"react\";\n\nimport { cn } from \"../lib/utils\";\n\ntype TextareaProps = React.ComponentProps<\"textarea\">;\n\n/**\n * Multi-line text input with auto-sizing via `field-sizing-content`.\n *\n * @example\n * ```tsx\n * // Basic usage\n * <Textarea placeholder=\"Enter a description...\" />\n *\n * // Controlled\n * <Textarea value={content} onChange={(e) => setContent(e.target.value)} />\n *\n * // With rows constraint\n * <Textarea rows={5} placeholder=\"Feedback\" />\n * ```\n */\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, ...props }, ref) => {\n return (\n <textarea\n ref={ref}\n data-slot=\"textarea\"\n className={cn(\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 className,\n )}\n {...props}\n />\n );\n }\n);\nTextarea.displayName = \"Textarea\";\n\nexport { Textarea };\nexport type { TextareaProps };"]}
|
|
@@ -29,5 +29,5 @@ var Checkbox = React.forwardRef(({ className, ...props }, ref) => {
|
|
|
29
29
|
Checkbox.displayName = CheckboxPrimitive.Root.displayName;
|
|
30
30
|
|
|
31
31
|
export { Checkbox };
|
|
32
|
-
//# sourceMappingURL=chunk-
|
|
33
|
-
//# sourceMappingURL=chunk-
|
|
32
|
+
//# sourceMappingURL=chunk-WL4ZO2H3.js.map
|
|
33
|
+
//# sourceMappingURL=chunk-WL4ZO2H3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/checkbox.tsx"],"names":[],"mappings":";;;;;;AAyBA,IAAM,QAAA,GAAiB,iBAGrB,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAAA,KAAQ;AAClC,EAAA,uBACE,GAAA;AAAA,IAAmB,iBAAA,CAAA,IAAA;AAAA,IAAlB;AAAA,MACC,GAAA;AAAA,MACA,WAAA,EAAU,UAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,2fAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAA,GAAA;AAAA,QAAmB,iBAAA,CAAA,SAAA;AAAA,QAAlB;AAAA,UACC,WAAA,EAAU,oBAAA;AAAA,UACV,SAAA,EAAU,+DAAA;AAAA,UAEV,QAAA,kBAAA,GAAA,CAAC,SAAA,EAAA,EAAU,SAAA,EAAU,UAAA,EAAW;AAAA;AAAA;AAClC;AAAA,GACF;AAEJ,CAAC;AACD,QAAA,CAAS,cAAgC,iBAAA,CAAA,IAAA,CAAK,WAAA","file":"chunk-WL4ZO2H3.js","sourcesContent":["import * as React from \"react\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { CheckIcon } from \"lucide-react\";\n\nimport { cn } from \"../lib/utils\";\n\ntype CheckboxProps = React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>;\n\n/**\n * Checkable input that allows selecting one or more options from a set.\n * Supports checked, unchecked, and indeterminate states.\n *\n * @example\n * ```tsx\n * // Basic usage\n * <Checkbox id=\"terms\" />\n * <Label htmlFor=\"terms\">Accept terms</Label>\n *\n * // Controlled\n * <Checkbox checked={accepted} onCheckedChange={setAccepted} />\n *\n * // Indeterminate (partial selection)\n * <Checkbox checked=\"indeterminate\" />\n * ```\n */\nconst Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n CheckboxProps\n>(({ className, ...props }, ref) => {\n return (\n <CheckboxPrimitive.Root\n ref={ref}\n data-slot=\"checkbox\"\n className={cn(\n \"peer border bg-input-background dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"flex items-center justify-center text-current transition-none\"\n >\n <CheckIcon className=\"size-3.5\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n});\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\n\nexport { Checkbox };\nexport type { CheckboxProps };\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/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-XOJJBNDX.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"]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { TooltipProvider, Tooltip, TooltipTrigger, TooltipContent } from './chunk-
|
|
1
|
+
import { TooltipProvider, Tooltip, TooltipTrigger, TooltipContent } from './chunk-C5NZAOA7.js';
|
|
2
2
|
import { useIsMobile } from './chunk-WRCHR4AK.js';
|
|
3
|
-
import { Skeleton } from './chunk-
|
|
3
|
+
import { Skeleton } from './chunk-JXGRW2MR.js';
|
|
4
4
|
import { Input } from './chunk-3VU56V66.js';
|
|
5
|
-
import { Sheet, SheetContent, SheetHeader, SheetTitle, SheetDescription } from './chunk-
|
|
6
|
-
import { Separator } from './chunk-
|
|
7
|
-
import { Button } from './chunk-
|
|
5
|
+
import { Sheet, SheetContent, SheetHeader, SheetTitle, SheetDescription } from './chunk-JLTBUACL.js';
|
|
6
|
+
import { Separator } from './chunk-PGWNOZDX.js';
|
|
7
|
+
import { Button } from './chunk-55E7D2HR.js';
|
|
8
8
|
import { cn } from './chunk-DGPY4WP3.js';
|
|
9
9
|
import * as React from 'react';
|
|
10
10
|
import { PanelLeftIcon } from 'lucide-react';
|
|
@@ -613,5 +613,5 @@ function SidebarMenuSubButton({
|
|
|
613
613
|
}
|
|
614
614
|
|
|
615
615
|
export { Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, useSidebar };
|
|
616
|
-
//# sourceMappingURL=chunk-
|
|
617
|
-
//# sourceMappingURL=chunk-
|
|
616
|
+
//# sourceMappingURL=chunk-XUVLD65E.js.map
|
|
617
|
+
//# sourceMappingURL=chunk-XUVLD65E.js.map
|