@womp/kookie-ui 0.29.2 → 0.31.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/components.css +127 -0
- package/dist/cjs/components/_internal/navigator-host.d.ts +21 -0
- package/dist/cjs/components/_internal/navigator-host.d.ts.map +1 -0
- package/dist/cjs/components/_internal/navigator-host.js +3 -0
- package/dist/cjs/components/_internal/navigator-host.js.map +7 -0
- package/dist/cjs/components/_internal/page-scope.d.ts +48 -0
- package/dist/cjs/components/_internal/page-scope.d.ts.map +1 -0
- package/dist/cjs/components/_internal/page-scope.js +3 -0
- package/dist/cjs/components/_internal/page-scope.js.map +7 -0
- package/dist/cjs/components/_internal/portal-theme.d.ts +2 -1
- package/dist/cjs/components/_internal/portal-theme.d.ts.map +1 -1
- package/dist/cjs/components/_internal/portal-theme.js +1 -1
- package/dist/cjs/components/_internal/portal-theme.js.map +4 -4
- package/dist/cjs/components/_internal/shell-bottom.d.ts.map +1 -1
- package/dist/cjs/components/_internal/shell-bottom.js +1 -1
- package/dist/cjs/components/_internal/shell-bottom.js.map +4 -4
- package/dist/cjs/components/_internal/shell-inspector.d.ts.map +1 -1
- package/dist/cjs/components/_internal/shell-inspector.js +1 -1
- package/dist/cjs/components/_internal/shell-inspector.js.map +4 -4
- package/dist/cjs/components/_internal/shell-sidebar.d.ts.map +1 -1
- package/dist/cjs/components/_internal/shell-sidebar.js +1 -1
- package/dist/cjs/components/_internal/shell-sidebar.js.map +4 -4
- package/dist/cjs/components/alert-dialog.js +1 -1
- package/dist/cjs/components/alert-dialog.js.map +4 -4
- package/dist/cjs/components/button.js +1 -1
- package/dist/cjs/components/button.js.map +4 -4
- package/dist/cjs/components/chatbar.js +1 -1
- package/dist/cjs/components/chatbar.js.map +4 -4
- package/dist/cjs/components/chip.js +1 -1
- package/dist/cjs/components/chip.js.map +4 -4
- package/dist/cjs/components/combobox.js +1 -1
- package/dist/cjs/components/combobox.js.map +4 -4
- package/dist/cjs/components/context-menu.js +1 -1
- package/dist/cjs/components/context-menu.js.map +4 -4
- package/dist/cjs/components/dialog.d.ts.map +1 -1
- package/dist/cjs/components/dialog.js +1 -1
- package/dist/cjs/components/dialog.js.map +4 -4
- package/dist/cjs/components/dropdown-menu.js +1 -1
- package/dist/cjs/components/dropdown-menu.js.map +4 -4
- package/dist/cjs/components/index.d.ts +2 -0
- package/dist/cjs/components/index.d.ts.map +1 -1
- package/dist/cjs/components/index.js +2 -2
- package/dist/cjs/components/index.js.map +4 -4
- package/dist/cjs/components/message-scroller.js +1 -1
- package/dist/cjs/components/message-scroller.js.map +4 -4
- package/dist/cjs/components/navigator.d.ts +103 -0
- package/dist/cjs/components/navigator.d.ts.map +1 -0
- package/dist/cjs/components/navigator.js +3 -0
- package/dist/cjs/components/navigator.js.map +7 -0
- package/dist/cjs/components/notice.js +1 -1
- package/dist/cjs/components/notice.js.map +4 -4
- package/dist/cjs/components/page.d.ts +31 -0
- package/dist/cjs/components/page.d.ts.map +1 -0
- package/dist/cjs/components/page.js +3 -0
- package/dist/cjs/components/page.js.map +7 -0
- package/dist/cjs/components/popover.d.ts.map +1 -1
- package/dist/cjs/components/popover.js +1 -1
- package/dist/cjs/components/popover.js.map +4 -4
- package/dist/cjs/components/select.js +1 -1
- package/dist/cjs/components/select.js.map +4 -4
- package/dist/cjs/components/sheet.d.ts.map +1 -1
- package/dist/cjs/components/sheet.js +1 -1
- package/dist/cjs/components/sheet.js.map +4 -4
- package/dist/cjs/components/shell.d.ts.map +1 -1
- package/dist/cjs/components/shell.js +1 -1
- package/dist/cjs/components/shell.js.map +4 -4
- package/dist/cjs/components/sidebar.js +1 -1
- package/dist/cjs/components/sidebar.js.map +4 -4
- package/dist/cjs/components/toggle.js +1 -1
- package/dist/cjs/components/toggle.js.map +4 -4
- package/dist/cjs/components/toolbar.d.ts +5 -1
- package/dist/cjs/components/toolbar.d.ts.map +1 -1
- package/dist/cjs/components/toolbar.js +1 -1
- package/dist/cjs/components/toolbar.js.map +4 -4
- package/dist/cjs/components/tooltip.js +1 -1
- package/dist/cjs/components/tooltip.js.map +4 -4
- package/dist/cjs/index.js +5 -5
- package/dist/cjs/index.js.map +4 -4
- package/dist/esm/{chunk-HBO7W7SS.js → chunk-26O4RBOJ.js} +2 -2
- package/dist/esm/{chunk-FYTLUDL3.js → chunk-3M5ZM67R.js} +2 -2
- package/dist/esm/chunk-4B3S2DM7.js +3 -0
- package/dist/esm/chunk-4B3S2DM7.js.map +7 -0
- package/dist/esm/chunk-4KBKS3ZE.js +3 -0
- package/dist/esm/chunk-4KBKS3ZE.js.map +7 -0
- package/dist/esm/{chunk-2FYUM6TA.js → chunk-4ZHBNYXM.js} +2 -2
- package/dist/esm/{chunk-TSS4K2U5.js → chunk-5VYQDA5S.js} +2 -2
- package/dist/esm/chunk-65URNXF2.js +3 -0
- package/dist/esm/chunk-65URNXF2.js.map +7 -0
- package/dist/esm/chunk-6SGJWML7.js +3 -0
- package/dist/esm/chunk-6SGJWML7.js.map +7 -0
- package/dist/esm/{chunk-WAXRIARV.js → chunk-6WHKGVWY.js} +2 -2
- package/dist/esm/{chunk-7V6M3MIR.js → chunk-7YXHLU4C.js} +2 -2
- package/dist/esm/chunk-AKMRPGNP.js +3 -0
- package/dist/esm/chunk-AKMRPGNP.js.map +7 -0
- package/dist/esm/{chunk-ENQV6SEA.js → chunk-AKSAKP35.js} +2 -2
- package/dist/esm/{chunk-C67MM24U.js → chunk-B7STVZPU.js} +2 -2
- package/dist/esm/{chunk-2E57H3NH.js → chunk-BQOFHLDP.js} +2 -2
- package/dist/esm/{chunk-324VC67W.js → chunk-COLJWVN7.js} +2 -2
- package/dist/esm/{chunk-K3GDM26A.js → chunk-D42VCLKH.js} +2 -2
- package/dist/esm/{chunk-MGWGD6KI.js → chunk-DFQIIYLD.js} +2 -2
- package/dist/esm/{chunk-NWXODCTD.js → chunk-EERKYRYI.js} +2 -2
- package/dist/esm/{chunk-4MNRLB57.js → chunk-FICBVI4M.js} +2 -2
- package/dist/esm/chunk-HGF4CKRY.js +3 -0
- package/dist/esm/chunk-HGF4CKRY.js.map +7 -0
- package/dist/esm/{chunk-JD4KR6VZ.js → chunk-HVMRB3AH.js} +2 -2
- package/dist/esm/{chunk-HLIOHDEX.js → chunk-IFHBMTFX.js} +2 -2
- package/dist/esm/{chunk-J54GYD7A.js → chunk-JFJV4HL3.js} +2 -2
- package/dist/esm/{chunk-KJZSXLIX.js → chunk-JQMWNI62.js} +2 -2
- package/dist/esm/chunk-K35JUIUT.js +3 -0
- package/dist/esm/chunk-K35JUIUT.js.map +7 -0
- package/dist/esm/{chunk-67UEMB4K.js → chunk-KBSH6CBD.js} +2 -2
- package/dist/esm/{chunk-SUQJ7DD4.js → chunk-L7PRLW6A.js} +2 -2
- package/dist/esm/{chunk-D2C2A2ZK.js → chunk-LFAUMDU5.js} +2 -2
- package/dist/esm/{chunk-LABMK6Q7.js → chunk-LG5DPQ46.js} +2 -2
- package/dist/esm/{chunk-MJROOEPE.js → chunk-NFSW36RG.js} +2 -2
- package/dist/esm/{chunk-6YWHNLSC.js → chunk-NJ7RQYLX.js} +2 -2
- package/dist/esm/{chunk-WD66RYF6.js → chunk-NYIYRILR.js} +2 -2
- package/dist/esm/{chunk-JP36JSNP.js → chunk-OBSZOD5M.js} +2 -2
- package/dist/esm/{chunk-DP7MPGR7.js → chunk-OMPLFDS6.js} +2 -2
- package/dist/esm/{chunk-H2J25HXP.js → chunk-OPYTQ34H.js} +2 -2
- package/dist/esm/{chunk-REORAMUH.js → chunk-QBONJMSE.js} +2 -2
- package/dist/esm/chunk-QDAM2I6O.js +3 -0
- package/dist/esm/chunk-QDAM2I6O.js.map +7 -0
- package/dist/esm/chunk-RSG4XWHU.js +2 -0
- package/dist/esm/{chunk-2ZKEQS76.js → chunk-SGKLJDA3.js} +2 -2
- package/dist/esm/{chunk-676Y7ZUT.js → chunk-TMINGBSQ.js} +2 -2
- package/dist/esm/{chunk-2S7HPQVX.js → chunk-TRJAVWCK.js} +2 -2
- package/dist/esm/chunk-TUZ665BA.js +3 -0
- package/dist/esm/chunk-TUZ665BA.js.map +7 -0
- package/dist/esm/{chunk-JKQN6QCP.js → chunk-VBF3XALY.js} +2 -2
- package/dist/esm/chunk-VWRPVM5K.js +3 -0
- package/dist/esm/chunk-VWRPVM5K.js.map +7 -0
- package/dist/esm/{chunk-B6OFKABP.js → chunk-VYF6KKYM.js} +2 -2
- package/dist/esm/chunk-W35ZKQMQ.js +3 -0
- package/dist/esm/chunk-W35ZKQMQ.js.map +7 -0
- package/dist/esm/{chunk-EPGIYTFK.js → chunk-X7DGYRAY.js} +2 -2
- package/dist/esm/{chunk-X7JHZ3HA.js → chunk-XF6Z5NKE.js} +2 -2
- package/dist/esm/{chunk-K5V53KTJ.js → chunk-Y44DYJA5.js} +2 -2
- package/dist/esm/{chunk-MMDZBPSX.js → chunk-YOTTLPJ3.js} +2 -2
- package/dist/esm/chunk-ZBSGH74F.js +3 -0
- package/dist/esm/chunk-ZBSGH74F.js.map +7 -0
- package/dist/esm/chunk-ZHXEEOGI.js +3 -0
- package/dist/esm/chunk-ZHXEEOGI.js.map +7 -0
- package/dist/esm/{chunk-FMVOB367.js → chunk-ZLGOZKB3.js} +2 -2
- package/dist/esm/components/_internal/base-button.js +1 -1
- package/dist/esm/components/_internal/base-menu.utils.js +1 -1
- package/dist/esm/components/_internal/menu-context.js +1 -1
- package/dist/esm/components/_internal/navigator-host.d.ts +21 -0
- package/dist/esm/components/_internal/navigator-host.d.ts.map +1 -0
- package/dist/esm/components/_internal/navigator-host.js +3 -0
- package/dist/esm/components/_internal/navigator-host.js.map +7 -0
- package/dist/esm/components/_internal/page-scope.d.ts +48 -0
- package/dist/esm/components/_internal/page-scope.d.ts.map +1 -0
- package/dist/esm/components/_internal/page-scope.js +3 -0
- package/dist/esm/components/_internal/page-scope.js.map +7 -0
- package/dist/esm/components/_internal/pane-chrome.js +1 -1
- package/dist/esm/components/_internal/portal-theme.d.ts +2 -1
- package/dist/esm/components/_internal/portal-theme.d.ts.map +1 -1
- package/dist/esm/components/_internal/portal-theme.js +1 -1
- package/dist/esm/components/_internal/shell-bottom.d.ts.map +1 -1
- package/dist/esm/components/_internal/shell-bottom.js +1 -1
- package/dist/esm/components/_internal/shell-inspector.d.ts.map +1 -1
- package/dist/esm/components/_internal/shell-inspector.js +1 -1
- package/dist/esm/components/_internal/shell-sidebar.d.ts.map +1 -1
- package/dist/esm/components/_internal/shell-sidebar.js +1 -1
- package/dist/esm/components/accordion.js +1 -1
- package/dist/esm/components/alert-dialog.js +1 -1
- package/dist/esm/components/avatar.js +1 -1
- package/dist/esm/components/blockquote.js +1 -1
- package/dist/esm/components/button.js +1 -1
- package/dist/esm/components/card.js +1 -1
- package/dist/esm/components/chatbar.js +1 -1
- package/dist/esm/components/checkbox-group.js +1 -1
- package/dist/esm/components/checkbox.js +1 -1
- package/dist/esm/components/chip.js +1 -1
- package/dist/esm/components/code.js +1 -1
- package/dist/esm/components/combobox.js +1 -1
- package/dist/esm/components/context-menu.js +1 -1
- package/dist/esm/components/dialog.d.ts.map +1 -1
- package/dist/esm/components/dialog.js +1 -1
- package/dist/esm/components/dropdown-menu.js +1 -1
- package/dist/esm/components/heading.js +1 -1
- package/dist/esm/components/image.js +1 -1
- package/dist/esm/components/index.d.ts +2 -0
- package/dist/esm/components/index.d.ts.map +1 -1
- package/dist/esm/components/index.js +1 -1
- package/dist/esm/components/link.js +1 -1
- package/dist/esm/components/message-scroller.js +1 -1
- package/dist/esm/components/navbar.js +1 -1
- package/dist/esm/components/navigator.d.ts +103 -0
- package/dist/esm/components/navigator.d.ts.map +1 -0
- package/dist/esm/components/navigator.js +3 -0
- package/dist/esm/components/navigator.js.map +7 -0
- package/dist/esm/components/notice.js +1 -1
- package/dist/esm/components/page.d.ts +31 -0
- package/dist/esm/components/page.d.ts.map +1 -0
- package/dist/esm/components/page.js +3 -0
- package/dist/esm/components/page.js.map +7 -0
- package/dist/esm/components/popover.d.ts.map +1 -1
- package/dist/esm/components/popover.js +1 -1
- package/dist/esm/components/progress.js +1 -1
- package/dist/esm/components/radio-group.js +1 -1
- package/dist/esm/components/radio.js +1 -1
- package/dist/esm/components/schemas/index.js +1 -1
- package/dist/esm/components/scroll-area.js +1 -1
- package/dist/esm/components/segmented-control.js +1 -1
- package/dist/esm/components/select.js +1 -1
- package/dist/esm/components/separator.js +1 -1
- package/dist/esm/components/sheet.d.ts.map +1 -1
- package/dist/esm/components/sheet.js +1 -1
- package/dist/esm/components/shell.d.ts.map +1 -1
- package/dist/esm/components/shell.js +1 -1
- package/dist/esm/components/sidebar.js +1 -1
- package/dist/esm/components/slider.js +1 -1
- package/dist/esm/components/switch.js +1 -1
- package/dist/esm/components/table.js +1 -1
- package/dist/esm/components/tabs.js +1 -1
- package/dist/esm/components/text-area.js +1 -1
- package/dist/esm/components/text-field.js +1 -1
- package/dist/esm/components/text.js +1 -1
- package/dist/esm/components/toggle.js +1 -1
- package/dist/esm/components/toolbar.d.ts +5 -1
- package/dist/esm/components/toolbar.d.ts.map +1 -1
- package/dist/esm/components/toolbar.js +1 -1
- package/dist/esm/components/tooltip.js +1 -1
- package/dist/esm/components/virtual-menu.js +1 -1
- package/dist/esm/hooks/index.js +1 -1
- package/dist/esm/index.js +1 -1
- package/package.json +1 -1
- package/src/components/_internal/navigator-host.ts +17 -0
- package/src/components/_internal/page-scope.tsx +119 -0
- package/src/components/_internal/portal-theme.tsx +6 -2
- package/src/components/_internal/shell-bottom.tsx +4 -1
- package/src/components/_internal/shell-inspector.tsx +4 -1
- package/src/components/_internal/shell-sidebar.tsx +4 -1
- package/src/components/dialog.tsx +8 -0
- package/src/components/index.css +2 -0
- package/src/components/index.tsx +15 -0
- package/src/components/navigator.css +85 -0
- package/src/components/navigator.tsx +415 -0
- package/src/components/page.css +38 -0
- package/src/components/page.tsx +93 -0
- package/src/components/popover.tsx +18 -1
- package/src/components/sheet.tsx +8 -0
- package/src/components/shell.tsx +8 -2
- package/src/components/toolbar.css +11 -0
- package/src/components/toolbar.tsx +17 -5
- package/styles.css +127 -0
- package/dist/esm/chunk-4LV37PHM.js +0 -3
- package/dist/esm/chunk-4LV37PHM.js.map +0 -7
- package/dist/esm/chunk-5BX2YZV6.js +0 -3
- package/dist/esm/chunk-5BX2YZV6.js.map +0 -7
- package/dist/esm/chunk-AQKSO3SW.js +0 -3
- package/dist/esm/chunk-AQKSO3SW.js.map +0 -7
- package/dist/esm/chunk-AS2STDGA.js +0 -3
- package/dist/esm/chunk-AS2STDGA.js.map +0 -7
- package/dist/esm/chunk-HR2VHGJ5.js +0 -3
- package/dist/esm/chunk-HR2VHGJ5.js.map +0 -7
- package/dist/esm/chunk-JTMLFTNZ.js +0 -3
- package/dist/esm/chunk-JTMLFTNZ.js.map +0 -7
- package/dist/esm/chunk-MJKVVGGV.js +0 -3
- package/dist/esm/chunk-MJKVVGGV.js.map +0 -7
- package/dist/esm/chunk-NG54K6FL.js +0 -2
- package/dist/esm/chunk-QRV32INS.js +0 -3
- package/dist/esm/chunk-QRV32INS.js.map +0 -7
- package/dist/esm/chunk-YMUERC2J.js +0 -3
- package/dist/esm/chunk-YMUERC2J.js.map +0 -7
- /package/dist/esm/{chunk-HBO7W7SS.js.map → chunk-26O4RBOJ.js.map} +0 -0
- /package/dist/esm/{chunk-FYTLUDL3.js.map → chunk-3M5ZM67R.js.map} +0 -0
- /package/dist/esm/{chunk-2FYUM6TA.js.map → chunk-4ZHBNYXM.js.map} +0 -0
- /package/dist/esm/{chunk-TSS4K2U5.js.map → chunk-5VYQDA5S.js.map} +0 -0
- /package/dist/esm/{chunk-WAXRIARV.js.map → chunk-6WHKGVWY.js.map} +0 -0
- /package/dist/esm/{chunk-7V6M3MIR.js.map → chunk-7YXHLU4C.js.map} +0 -0
- /package/dist/esm/{chunk-ENQV6SEA.js.map → chunk-AKSAKP35.js.map} +0 -0
- /package/dist/esm/{chunk-C67MM24U.js.map → chunk-B7STVZPU.js.map} +0 -0
- /package/dist/esm/{chunk-2E57H3NH.js.map → chunk-BQOFHLDP.js.map} +0 -0
- /package/dist/esm/{chunk-324VC67W.js.map → chunk-COLJWVN7.js.map} +0 -0
- /package/dist/esm/{chunk-K3GDM26A.js.map → chunk-D42VCLKH.js.map} +0 -0
- /package/dist/esm/{chunk-MGWGD6KI.js.map → chunk-DFQIIYLD.js.map} +0 -0
- /package/dist/esm/{chunk-NWXODCTD.js.map → chunk-EERKYRYI.js.map} +0 -0
- /package/dist/esm/{chunk-4MNRLB57.js.map → chunk-FICBVI4M.js.map} +0 -0
- /package/dist/esm/{chunk-JD4KR6VZ.js.map → chunk-HVMRB3AH.js.map} +0 -0
- /package/dist/esm/{chunk-HLIOHDEX.js.map → chunk-IFHBMTFX.js.map} +0 -0
- /package/dist/esm/{chunk-J54GYD7A.js.map → chunk-JFJV4HL3.js.map} +0 -0
- /package/dist/esm/{chunk-KJZSXLIX.js.map → chunk-JQMWNI62.js.map} +0 -0
- /package/dist/esm/{chunk-67UEMB4K.js.map → chunk-KBSH6CBD.js.map} +0 -0
- /package/dist/esm/{chunk-SUQJ7DD4.js.map → chunk-L7PRLW6A.js.map} +0 -0
- /package/dist/esm/{chunk-D2C2A2ZK.js.map → chunk-LFAUMDU5.js.map} +0 -0
- /package/dist/esm/{chunk-LABMK6Q7.js.map → chunk-LG5DPQ46.js.map} +0 -0
- /package/dist/esm/{chunk-MJROOEPE.js.map → chunk-NFSW36RG.js.map} +0 -0
- /package/dist/esm/{chunk-6YWHNLSC.js.map → chunk-NJ7RQYLX.js.map} +0 -0
- /package/dist/esm/{chunk-WD66RYF6.js.map → chunk-NYIYRILR.js.map} +0 -0
- /package/dist/esm/{chunk-JP36JSNP.js.map → chunk-OBSZOD5M.js.map} +0 -0
- /package/dist/esm/{chunk-DP7MPGR7.js.map → chunk-OMPLFDS6.js.map} +0 -0
- /package/dist/esm/{chunk-H2J25HXP.js.map → chunk-OPYTQ34H.js.map} +0 -0
- /package/dist/esm/{chunk-REORAMUH.js.map → chunk-QBONJMSE.js.map} +0 -0
- /package/dist/esm/{chunk-NG54K6FL.js.map → chunk-RSG4XWHU.js.map} +0 -0
- /package/dist/esm/{chunk-2ZKEQS76.js.map → chunk-SGKLJDA3.js.map} +0 -0
- /package/dist/esm/{chunk-676Y7ZUT.js.map → chunk-TMINGBSQ.js.map} +0 -0
- /package/dist/esm/{chunk-2S7HPQVX.js.map → chunk-TRJAVWCK.js.map} +0 -0
- /package/dist/esm/{chunk-JKQN6QCP.js.map → chunk-VBF3XALY.js.map} +0 -0
- /package/dist/esm/{chunk-B6OFKABP.js.map → chunk-VYF6KKYM.js.map} +0 -0
- /package/dist/esm/{chunk-EPGIYTFK.js.map → chunk-X7DGYRAY.js.map} +0 -0
- /package/dist/esm/{chunk-X7JHZ3HA.js.map → chunk-XF6Z5NKE.js.map} +0 -0
- /package/dist/esm/{chunk-K5V53KTJ.js.map → chunk-Y44DYJA5.js.map} +0 -0
- /package/dist/esm/{chunk-MMDZBPSX.js.map → chunk-YOTTLPJ3.js.map} +0 -0
- /package/dist/esm/{chunk-FMVOB367.js.map → chunk-ZLGOZKB3.js.map} +0 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{a as p,b as s,c as m,d as c}from"./chunk-UJ7JERJ5.js";import{c as
|
|
3
|
-
//# sourceMappingURL=chunk-
|
|
2
|
+
import{a as p,b as s,c as m,d as c}from"./chunk-UJ7JERJ5.js";import{c as t}from"./chunk-HBWBPBSA.js";import{c as r}from"./chunk-OKQAVYW4.js";import{a as e}from"./chunk-CLJ6SEGP.js";import*as o from"react";import D from"classnames";import{Slot as y}from"radix-ui";var q=["1","2","3","4","5","6","7","8","9"],f={...e,size:{type:"enum",className:"kui-r-size",values:q,responsive:!0},...c,...t,...p,...m,...s};var d=o.forwardRef((i,l)=>{let{asChild:a,className:u,color:n,...P}=r(i,f),k=a?y.Root:"blockquote";return o.createElement(k,{"data-accent-color":n,...P,ref:l,className:D("kui-Text","kui-Blockquote",u)})});d.displayName="Blockquote";export{d as a};
|
|
3
|
+
//# sourceMappingURL=chunk-IFHBMTFX.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{b as a}from"./chunk-
|
|
3
|
-
//# sourceMappingURL=chunk-
|
|
2
|
+
import{b as a}from"./chunk-NJ7RQYLX.js";import{e as r}from"./chunk-HBWBPBSA.js";import{b as i}from"./chunk-XU74PNM2.js";import{c as s}from"./chunk-OKQAVYW4.js";import{a as p}from"./chunk-CLJ6SEGP.js";import*as o from"react";import g from"classnames";import{Slot as x}from"radix-ui";var R=["1","2","3","4"],N=["raised","solid","soft","surface","outline","ghost"],n={...p,size:{type:"enum",className:"kui-r-size",values:R,default:"2",responsive:!0},variant:{type:"enum",className:"kui-variant",values:N,default:"raised"},...r,...i};var T=o.forwardRef((l,m)=>{let{asChild:f,className:c,children:d,color:h,radius:u,tooltip:e,tooltipSide:P="top",tooltipAlign:C="center",tooltipDelayDuration:y,tooltipDisableHoverableContent:D,...b}=s(l,n),v=f?x.Root:"span",t=o.createElement(v,{"data-accent-color":h,"data-radius":u,tabIndex:e?0:void 0,...b,ref:m,className:g("kui-reset","kui-Chip",c)},d);return e?o.createElement(a,{content:e,side:P,align:C,delayDuration:y,disableHoverableContent:D},t):t});T.displayName="Chip";export{T as a};
|
|
3
|
+
//# sourceMappingURL=chunk-JFJV4HL3.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{a as c}from"./chunk-Y2DBXOLT.js";import{b as p}from"./chunk-
|
|
3
|
-
//# sourceMappingURL=chunk-
|
|
2
|
+
import{a as c}from"./chunk-Y2DBXOLT.js";import{b as p}from"./chunk-NJ7RQYLX.js";import{a as u}from"./chunk-SGKLJDA3.js";import*as t from"react";import O from"classnames";var C={loud:"solid",medium:"raised",quiet:"ghost"};function T(e){if(e["aria-label"]||e["aria-labelledby"])return;console.error("Button: an `iconOnly` button must have an accessible name. Pass `aria-label`, or `aria-labelledby` referencing a label element.")}var w=t.forwardRef(({className:e,style:a,tooltip:r,tooltipSide:d="top",tooltipAlign:m="center",tooltipDelayDuration:B,tooltipDisableHoverableContent:b,iconOnly:s=!1,emphasis:n,variant:i,...o},y)=>{let{tooltipId:f,hasTooltip:P,accessibilityProps:R}=c(r);s&&(T(o),o.fullWidth=!1);let h=n!==void 0?C[n]:i,g=o["aria-describedby"],v=R["aria-describedby"],E=[g,v].filter(Boolean).join(" ")||void 0,l=t.createElement(u,{...o,variant:h,"aria-describedby":E,ref:y,"data-icon-only":s||void 0,className:O("kui-Button",e),style:a});return P?t.createElement(p,{content:r,side:d,align:m,delayDuration:B,disableHoverableContent:b,id:f},l):l});w.displayName="Button";export{w as a};
|
|
3
|
+
//# sourceMappingURL=chunk-JQMWNI62.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import{a as g}from"./chunk-FATCGZZE.js";import{a as C}from"./chunk-7VJF6EXN.js";import{a}from"./chunk-TGRHRMQI.js";import{a as f}from"./chunk-OBSZOD5M.js";import{a as d}from"./chunk-FICBVI4M.js";import{a as h}from"./chunk-HGF4CKRY.js";import{c}from"./chunk-5ON3XLRD.js";import{a as P}from"./chunk-4KBKS3ZE.js";import{c as m}from"./chunk-OKQAVYW4.js";import{a as W}from"./chunk-VQPANPMI.js";var j={};W(j,{Close:()=>E,Content:()=>y,Description:()=>T,Root:()=>S,Title:()=>D,Trigger:()=>R});import*as e from"react";import k from"classnames";import{Dialog as i}from"radix-ui";var S=t=>e.createElement(i.Root,{...t,modal:!0});S.displayName="Sheet.Root";var R=e.forwardRef(({children:t,...o},r)=>e.createElement(i.Trigger,{...o,ref:r,asChild:!0},a(t)));R.displayName="Sheet.Trigger";var{align:Y,...w}=g,u=w,B={Title:({children:t})=>e.createElement(i.Title,{asChild:!0},t),Close:({children:t})=>e.createElement(i.Close,{asChild:!0},t)},v=e.createContext(null),y=e.forwardRef((t,o)=>{let{side:r="start",forceMount:s,container:n,className:N,...x}=t,b=c(x,u.size),H={left:"start",right:"end",start:"start",end:"end",top:"top",bottom:"bottom"}[r],{className:O,...l}=m(b,u),z=e.useRef(0),M=e.useCallback(p=>{typeof o=="function"?o(p):o&&(o.current=p)},[o]);return C(),e.createElement(i.Portal,{container:n,forceMount:s},e.createElement(v.Provider,{value:z},e.createElement(h,{asChild:!0},e.createElement(i.Overlay,{className:"kui-BaseDialogOverlay kui-DialogOverlay kui-SheetOverlay"},e.createElement(i.Content,{...l,ref:M,className:k("kui-BaseDialogContent","kui-SheetContent",N,O),"data-side":H,"aria-modal":"true",children:e.createElement(P.Provider,{value:B},l.children)})))))});y.displayName="Sheet.Content";var D=e.forwardRef(({size:t="4",weight:o="medium",...r},s)=>{let n=e.useContext(v);return e.useLayoutEffect(()=>{if(n)return n.current+=1,()=>{n.current-=1}},[n]),e.createElement(i.Title,{asChild:!0},e.createElement(f,{ref:s,size:t,weight:o,...r}))});D.displayName="Sheet.Title";var T=e.forwardRef(({size:t="2",emphasis:o="medium",...r},s)=>e.createElement(i.Description,{asChild:!0},e.createElement(d,{ref:s,size:t,emphasis:o,...r})));T.displayName="Sheet.Description";var E=e.forwardRef(({children:t,...o},r)=>e.createElement(i.Close,{...o,ref:r,asChild:!0},a(t)));E.displayName="Sheet.Close";export{S as a,R as b,y as c,D as d,T as e,E as f,j as g};
|
|
3
|
+
//# sourceMappingURL=chunk-K35JUIUT.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/components/sheet.tsx"],
|
|
4
|
+
"sourcesContent": ["'use client';\n\n/**\n * Sheet\n *\n * A side-placed overlay built on top of Radix Dialog. It inherits accessibility,\n * focus management, overlay behavior, and sizing scales from the base dialog, and\n * adds side placement and slide motion suited for navigation panels and drawers.\n *\n * Structure mirrors Dialog:\n * - Root, Trigger, Content, Title, Description, Close\n *\n * Notes\n * - Side: set with `side` on `Sheet.Content`. Aliases: `left` \u2192 `start`, `right` \u2192 `end`.\n * - Sizing: reuses Dialog content prop defs (width/min/max/height/size). Size follows the\n * Theme size; start/end sheets cap at the size's overlay width unless maxWidth is set.\n * - A11y: provide an accessible name via `Sheet.Title` or `aria-label` on `Sheet.Content`.\n * Radix owns the focus trap, initial focus and the return of focus to the trigger.\n *\n * Example\n * <Sheet.Root>\n * <Sheet.Trigger>\n * <Button>Open</Button>\n * </Sheet.Trigger>\n * <Sheet.Content side=\"end\" width={{ initial: '280px', md: '360px' }}>\n * <Sheet.Title>Details</Sheet.Title>\n * ...\n * <Sheet.Close>\n * <Button>Close</Button>\n * </Sheet.Close>\n * </Sheet.Content>\n * </Sheet.Root>\n */\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { Dialog as DialogPrimitive } from 'radix-ui';\n\nimport { dialogContentPropDefs } from './dialog.props.js';\nimport type { DialogContentOwnProps } from './dialog.props.js';\nimport { PortalTheme } from './_internal/portal-theme.js';\nimport { NavigatorHostContext, type NavigatorHost } from './_internal/navigator-host.js';\nimport { Heading } from './heading.js';\nimport { Text } from './text.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { useThemeSizeProps } from '../hooks/theme-size.js';\nimport { requireReactElement } from '../helpers/require-react-element.js';\nimport { useBodyPointerEventsCleanup } from '../hooks/use-body-pointer-events-cleanup.js';\n\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { HeadingProps } from './heading.js';\n\n/**\n * Supported sides for the Sheet.\n * Aliases are normalized RTL-aware: `left` \u2192 `start`, `right` \u2192 `end`.\n */\ntype SheetSide = 'start' | 'end' | 'top' | 'bottom' | 'left' | 'right';\n\n/**\n * Sheet is a side-placed overlay built on the Dialog primitive.\n * It reuses Dialog's accessibility, focus, overlay, and size scales, while adding side placement and slide motion.\n */\n\n// Root\n/**\n * Props for `Sheet.Root` (Radix Dialog root with `modal` forced on).\n */\ninterface SheetRootProps extends ComponentPropsWithout<typeof DialogPrimitive.Root, 'modal'> {}\nconst Root: React.FC<SheetRootProps> = (props) => <DialogPrimitive.Root {...props} modal />;\nRoot.displayName = 'Sheet.Root';\n\n// Trigger\n/** Element type for `Sheet.Trigger`. */\ntype SheetTriggerElement = React.ElementRef<typeof DialogPrimitive.Trigger>;\n/** Props for `Sheet.Trigger` (expects a single element child). */\ninterface SheetTriggerProps extends ComponentPropsWithout<typeof DialogPrimitive.Trigger, RemovedProps> {}\nconst Trigger = React.forwardRef<SheetTriggerElement, SheetTriggerProps>(({ children, ...props }, ref) => (\n <DialogPrimitive.Trigger {...props} ref={ref} asChild>\n {requireReactElement(children)}\n </DialogPrimitive.Trigger>\n));\nTrigger.displayName = 'Sheet.Trigger';\n\n// Content\n/** Element type for `Sheet.Content`. */\n// Reuse dialog content prop defs for size/width/height tokens.\n// Built once at module scope: `extractProps` memoises on the identity of the\n// prop def objects it is handed, so rebuilding these per render would recompile\n// them every time a sheet renders.\nconst { align: _alignPropDef, ...dialogPropDefsForSheet } = dialogContentPropDefs;\nconst sheetPropDefs = dialogPropDefsForSheet;\n\n/** What a Navigator screen in this panel uses: its title names the sheet, its close closes it. */\nconst sheetNavigatorHost: NavigatorHost = {\n Title: ({ children }) => <DialogPrimitive.Title asChild>{children}</DialogPrimitive.Title>,\n Close: ({ children }) => <DialogPrimitive.Close asChild>{children}</DialogPrimitive.Close>,\n};\n\n/** Counts the Sheet.Title elements mounted inside a Sheet.Content, for the dev-only name check. */\nconst SheetTitleCountContext = React.createContext<React.MutableRefObject<number> | null>(null);\n\ntype SheetContentElement = React.ElementRef<typeof DialogPrimitive.Content>;\ninterface SheetContentProps\n extends ComponentPropsWithout<typeof DialogPrimitive.Content, RemovedProps>,\n Omit<DialogContentOwnProps, 'align'> {\n /** Side where the Sheet should appear. `left`/`right` alias to `start`/`end`. */\n side?: SheetSide;\n /** Optional DOM container to portal into. Defaults to `document.body`. */\n container?: React.ComponentPropsWithoutRef<typeof DialogPrimitive.Portal>['container'];\n}\n\n/**\n * Renders the Sheet panel. Normalizes left/right to logical start/end and\n * forwards dialog sizing props. Provide an accessible name via `Sheet.Title`\n * or `aria-label`.\n */\nconst Content = React.forwardRef<SheetContentElement, SheetContentProps>((allProps, forwardedRef) => {\n const { side = 'start', forceMount, container, className, ...ownProps } = allProps;\n const restProps = useThemeSizeProps(ownProps, sheetPropDefs.size);\n const normalizedSideMap: Record<SheetSide, 'start' | 'end' | 'top' | 'bottom'> = {\n left: 'start',\n right: 'end',\n start: 'start',\n end: 'end',\n top: 'top',\n bottom: 'bottom',\n };\n const normalizedSide = normalizedSideMap[side];\n // Size/width/height class names come from the dialog defs \u2014 see `sheetPropDefs`.\n const { className: extractedClassName, ...contentProps } = extractProps(restProps, sheetPropDefs);\n\n // Dev-only a11y guard: the panel needs a name. A Sheet.Title anywhere inside counts it\n // in a layout effect, which runs before this ref is attached, so nesting doesn't matter.\n const titleCountRef = React.useRef(0);\n const combinedRef = React.useCallback(\n (node: HTMLDivElement | null) => {\n if (typeof forwardedRef === 'function') {\n forwardedRef(node);\n } else if (forwardedRef) {\n forwardedRef.current = node;\n }\n if (process.env.NODE_ENV !== 'production' && node) {\n const hasName = titleCountRef.current > 0 || Boolean(node.getAttribute('aria-label')) || Boolean(node.getAttribute('aria-labelledby'));\n if (!hasName) {\n console.warn('Sheet.Content: Missing accessible name. Include Sheet.Title inside it or provide aria-label.');\n }\n }\n },\n [forwardedRef],\n );\n\n useBodyPointerEventsCleanup();\n\n return (\n <DialogPrimitive.Portal container={container} forceMount={forceMount}>\n <SheetTitleCountContext.Provider value={titleCountRef}>\n <PortalTheme asChild>\n <DialogPrimitive.Overlay className=\"kui-BaseDialogOverlay kui-DialogOverlay kui-SheetOverlay\">\n <DialogPrimitive.Content\n {...contentProps}\n ref={combinedRef}\n className={classNames('kui-BaseDialogContent', 'kui-SheetContent', className, extractedClassName)}\n data-side={normalizedSide}\n aria-modal=\"true\"\n children={<NavigatorHostContext.Provider value={sheetNavigatorHost}>{contentProps.children}</NavigatorHostContext.Provider>}\n />\n </DialogPrimitive.Overlay>\n </PortalTheme>\n </SheetTitleCountContext.Provider>\n </DialogPrimitive.Portal>\n );\n});\nContent.displayName = 'Sheet.Content';\n\n// Title - renders as Heading with sensible defaults\ntype SheetTitleElement = React.ElementRef<typeof Heading>;\ntype SheetTitleProps = HeadingProps;\n/** Accessible title for the Sheet. Renders as Heading with sensible defaults. */\nconst Title = React.forwardRef<SheetTitleElement, SheetTitleProps>(({ size = '4', weight = 'medium', ...props }, ref) => {\n const titleCountRef = React.useContext(SheetTitleCountContext);\n React.useLayoutEffect(() => {\n if (!titleCountRef) return;\n titleCountRef.current += 1;\n return () => {\n titleCountRef.current -= 1;\n };\n }, [titleCountRef]);\n return (\n <DialogPrimitive.Title asChild>\n <Heading ref={ref} size={size} weight={weight} {...props} />\n </DialogPrimitive.Title>\n );\n});\nTitle.displayName = 'Sheet.Title';\n\n// Description - renders as Text with sensible defaults\ntype SheetDescriptionElement = React.ElementRef<typeof Text>;\ntype SheetDescriptionProps = React.ComponentPropsWithoutRef<typeof Text>;\n/** Supplementary description text for Sheet content. Renders as Text with sensible defaults. */\nconst Description = React.forwardRef<SheetDescriptionElement, SheetDescriptionProps>(({ size = '2', emphasis = 'medium', ...rest }, ref) => (\n <DialogPrimitive.Description asChild>\n <Text ref={ref} size={size} emphasis={emphasis} {...rest} />\n </DialogPrimitive.Description>\n));\nDescription.displayName = 'Sheet.Description';\n\ntype SheetCloseElement = React.ElementRef<typeof DialogPrimitive.Close>;\ninterface SheetCloseProps extends ComponentPropsWithout<typeof DialogPrimitive.Close, RemovedProps> {}\n/** Close button for the Sheet. Expects a single element child rendered via `asChild`. */\nconst Close = React.forwardRef<SheetCloseElement, SheetCloseProps>(({ children, ...props }, ref) => (\n <DialogPrimitive.Close {...props} ref={ref} asChild>\n {requireReactElement(children)}\n </DialogPrimitive.Close>\n));\nClose.displayName = 'Sheet.Close';\n\nexport { Root, Trigger, Content, Title, Description, Close };\nexport type {\n SheetRootProps as RootProps,\n SheetTriggerProps as TriggerProps,\n SheetContentProps as ContentProps,\n SheetTitleProps as TitleProps,\n SheetDescriptionProps as DescriptionProps,\n SheetCloseProps as CloseProps,\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["sheet_exports", "__export", "Close", "Content", "Description", "Root", "Title", "Trigger", "React", "classNames", "DialogPrimitive", "Root", "props", "DialogPrimitive", "Trigger", "children", "ref", "requireReactElement", "_alignPropDef", "dialogPropDefsForSheet", "dialogContentPropDefs", "sheetPropDefs", "sheetNavigatorHost", "SheetTitleCountContext", "Content", "allProps", "forwardedRef", "side", "forceMount", "container", "className", "ownProps", "restProps", "useThemeSizeProps", "normalizedSide", "extractedClassName", "contentProps", "extractProps", "titleCountRef", "combinedRef", "node", "useBodyPointerEventsCleanup", "PortalTheme", "classNames", "NavigatorHostContext", "Title", "size", "weight", "Heading", "Description", "emphasis", "rest", "Text", "Close"]
|
|
7
|
+
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{a as I,b as y,c as z,d as _,e as K}from"./chunk-2ACVWLFA.js";import{a as te}from"./chunk-TGRHRMQI.js";import{b as H,c as U,d as k,e as Y,f as q}from"./chunk-GKDGNPBD.js";import{a as M,b as v,c as J,d as Q,e as E,f as Z,g as ee,h as N}from"./chunk-5JYSYTHA.js";import{c as B,e as oe,g,h as O,i as ne}from"./chunk-ISCZ57VL.js";import{b as h,c as $,d as T,e as x}from"./chunk-EB4AG3OL.js";import{a as L}from"./chunk-MGWGD6KI.js";import{c as S}from"./chunk-OKQAVYW4.js";import{a as G}from"./chunk-AQKSO3SW.js";import{b as re}from"./chunk-FVRVBB6O.js";import{c as X}from"./chunk-5ON3XLRD.js";import{a as he}from"./chunk-VQPANPMI.js";var Oe={};he(Oe,{CheckboxItem:()=>Me,Content:()=>de,Group:()=>me,Item:()=>ce,Label:()=>le,RadioGroup:()=>De,RadioItem:()=>we,Root:()=>ue,Separator:()=>be,Sub:()=>fe,SubContent:()=>Re,SubTrigger:()=>Pe,Trigger:()=>se,TriggerIcon:()=>Ie});import*as e from"react";import l from"classnames";import{DropdownMenu as s,Slot as W}from"radix-ui";import{useCallbackRef as ie}from"radix-ui/internal";var ae=e.createContext(!1),ue=o=>{let{open:n,defaultOpen:t=!1,onOpenChange:u}=o,[i,r]=e.useState(t),a=n??i,c=ie(u),p=e.useCallback(D=>{r(D),c(D)},[c]),m=e.useCallback(()=>p(!1),[p]);return e.createElement(ae.Provider,{value:a},e.createElement(oe,{value:m},e.createElement(s.Root,{...o,open:a,onOpenChange:p})))};ue.displayName="DropdownMenu.Root";var se=e.forwardRef(({children:o,...n},t)=>e.createElement(s.Trigger,{...n,ref:t,asChild:!0},te(o)));se.displayName="DropdownMenu.Trigger";var V=e.createContext({}),Te={ltr:"ArrowLeft",rtl:"ArrowRight"},xe={ltr:"ArrowRight",rtl:"ArrowLeft"};function Ee(o){return o instanceof HTMLElement&&(o.isContentEditable||o.tagName==="INPUT"||o.tagName==="TEXTAREA")}function pe(o){return o?.closest("[dir]")?.getAttribute("dir")==="rtl"?"rtl":"ltr"}var de=e.forwardRef((o,n)=>{let t=X(o,I.size),u=re(),{size:i=I.size.default}=t,{className:r,children:a,color:c,container:p,forceMount:m,submenuBehavior:D,virtualized:d=!1,onEscapeKeyDown:P,onKeyDown:R,...f}=S(t,I),b=c||u.accentColor,A=h(D,"cascade"),F=A==="drill-down",ge=e.useContext(ae),C=J(),ye=w=>{P?.(w),!(w.defaultPrevented||!F||C.getDepth()===0)&&(w.preventDefault(),C.pop("keyboard"))},Se=w=>{R?.(w),!(w.defaultPrevented||!F||C.getDepth()===0)&&(Ee(w.target)||w.key===Te[pe(w.currentTarget)]&&(w.preventDefault(),C.pop("keyboard")))},ke=e.useMemo(()=>({size:i,color:b}),[i,b]),j=e.createElement(B,{size:i},e.createElement(V.Provider,{value:ke},e.createElement(Q,{store:C,behavior:A,open:ge},a)));return e.createElement(s.Portal,{container:p,forceMount:m},e.createElement(G,{asChild:!0},e.createElement(s.Content,{"data-accent-color":b,align:"start",sideOffset:4,collisionPadding:10,...f,onEscapeKeyDown:ye,onKeyDown:Se,asChild:!1,ref:n,className:l("kui-PopperContent","kui-BaseMenuContent","kui-variant-soft","kui-DropdownMenuContent",r)},d?e.createElement("div",{className:l("kui-BaseMenuViewport","kui-DropdownMenuViewport","kui-virtualized")},j):e.createElement(L,{type:"auto",scrollbars:"vertical"},e.createElement("div",{className:l("kui-BaseMenuViewport","kui-DropdownMenuViewport")},j)))))});de.displayName="DropdownMenu.Content";var le=e.forwardRef(({className:o,id:n,...t},u)=>{let i=e.useContext(M),r=ne(n,i);return i?e.createElement(s.Label,{...t,id:r,asChild:!1,ref:u,className:l("kui-BaseMenuLabel","kui-DropdownMenuLabel",o)}):null});le.displayName="DropdownMenu.Label";var ce=e.forwardRef((o,n)=>{let{className:t,children:u,color:i=z.color.default,shortcut:r,...a}=o;return e.useContext(M)?e.createElement(s.Item,{"data-accent-color":i,"aria-keyshortcuts":r?T(r):void 0,...a,ref:n,className:l("kui-reset","kui-BaseMenuItem","kui-DropdownMenuItem",t)},e.createElement(W.Slottable,null,u),r&&e.createElement(x,{shortcut:r,className:"kui-DropdownMenuShortcut"})):null});ce.displayName="DropdownMenu.Item";var me=e.forwardRef(({className:o,"aria-labelledby":n,...t},u)=>{let[i,r]=O(n),a=e.useContext(M);return e.createElement(g,{value:r},e.createElement(s.Group,{...a?{"aria-labelledby":i}:{role:"none"},...t,asChild:!1,ref:u,className:l("kui-BaseMenuGroup","kui-DropdownMenuGroup",o)}))});me.displayName="DropdownMenu.Group";var De=e.forwardRef(({className:o,"aria-labelledby":n,...t},u)=>{let[i,r]=O(n),a=e.useContext(M);return e.createElement(g,{value:r},e.createElement(s.RadioGroup,{...a?{"aria-labelledby":i}:{role:"none"},...t,asChild:!1,ref:u,className:l("kui-BaseMenuRadioGroup","kui-DropdownMenuRadioGroup",o)}))});De.displayName="DropdownMenu.RadioGroup";var we=e.forwardRef((o,n)=>{let{children:t,className:u,color:i=K.color.default,...r}=o;return e.useContext(M)?e.createElement(s.RadioItem,{...r,asChild:!1,ref:n,"data-accent-color":i,className:l("kui-BaseMenuItem","kui-BaseMenuRadioItem","kui-DropdownMenuItem","kui-DropdownMenuRadioItem",u)},e.createElement(W.Slottable,null,t),e.createElement(s.ItemIndicator,{className:"kui-BaseMenuItemIndicator kui-DropdownMenuItemIndicator"},e.createElement(q,{className:"kui-BaseMenuItemIndicatorIcon kui-DropdownMenuItemIndicatorIcon"}))):null});we.displayName="DropdownMenu.RadioItem";var Me=e.forwardRef((o,n)=>{let{children:t,className:u,shortcut:i,color:r=_.color.default,...a}=o;return e.useContext(M)?e.createElement(s.CheckboxItem,{"aria-keyshortcuts":i?T(i):void 0,...a,asChild:!1,ref:n,"data-accent-color":r,className:l("kui-BaseMenuItem","kui-BaseMenuCheckboxItem","kui-DropdownMenuItem","kui-DropdownMenuCheckboxItem",u)},e.createElement(W.Slottable,null,t),e.createElement(s.ItemIndicator,{className:"kui-BaseMenuItemIndicator kui-DropdownMenuItemIndicator"},e.createElement(H,{className:"kui-BaseMenuItemIndicatorIcon kui-DropdownMenuItemIndicatorIcon"})),i&&e.createElement(x,{shortcut:i,className:"kui-DropdownMenuShortcut"})):null});Me.displayName="DropdownMenu.CheckboxItem";var fe=({label:o="Back",open:n,defaultOpen:t,onOpenChange:u,children:i})=>{let r=v(),a=e.useId(),c=e.useMemo(()=>({id:a,label:o}),[a,o]),p=E(r,a)!=="closed",m=ie(u),D=n!==void 0;e.useLayoutEffect(()=>{if(!(!r||!D))return r.setController(a,m),()=>r.setController(a,null)},[r,D,a,m]),e.useLayoutEffect(()=>{!r||n===void 0||(n&&!r.isOpen(a)?r.open(a,r.takePendingModality(a)):!n&&r.isOpen(a)&&r.close(a,r.takePendingModality(a)))},[r,n,a]);let d=e.useRef(n===void 0&&!!t);e.useLayoutEffect(()=>{r&&d.current?r.open(a):d.current=!1},[]);let P=e.useRef(p);return e.useEffect(()=>{if(!(!r||P.current===p)){if(P.current=p,p&&d.current){d.current=!1;return}n!==void 0&&n===p||m(p)}},[r,p,m,n]),e.createElement(ee.Provider,{value:c},e.createElement(s.Sub,{open:n,defaultOpen:t,onOpenChange:r?void 0:u},i))};fe.displayName="DropdownMenu.Sub";var Pe=e.forwardRef((o,n)=>{let{className:t,children:u,onKeyDown:i,...r}=o,a=v(),c=N(),p=e.useContext(M);if(a&&c){if(!p)return null;let m=d=>{d.preventDefault(),a.push(c.id)},D=d=>{i?.(d),!(d.defaultPrevented||r.disabled)&&d.key===xe[pe(d.currentTarget)]&&(d.preventDefault(),a.push(c.id,"keyboard"))};return e.createElement(s.Item,{...r,"data-drill-down-trigger":c.id,"data-drill-down-name":r.textValue,onSelect:m,onKeyDown:D,ref:n,className:l("kui-reset","kui-BaseMenuItem","kui-BaseMenuSubTrigger","kui-DropdownMenuItem","kui-DropdownMenuSubTrigger","kui-DropdownMenuDrillDownSubTrigger",t)},u,e.createElement("div",{className:"kui-BaseMenuShortcut kui-DropdownMenuShortcut"},e.createElement(k,{className:"kui-BaseMenuSubTriggerIcon kui-DropdownMenuSubTriggerIcon"})))}return e.createElement(s.SubTrigger,{...r,onKeyDown:i,asChild:!1,ref:n,className:l("kui-BaseMenuItem","kui-BaseMenuSubTrigger","kui-DropdownMenuItem","kui-DropdownMenuSubTrigger",t)},u,e.createElement("div",{className:"kui-BaseMenuShortcut kui-DropdownMenuShortcut"},e.createElement(k,{className:"kui-BaseMenuSubTriggerIcon kui-DropdownMenuSubTriggerIcon"})))});Pe.displayName="DropdownMenu.SubTrigger";var be=e.forwardRef(({className:o,...n},t)=>e.useContext(M)?e.createElement(s.Separator,{...n,asChild:!1,ref:t,className:l("kui-BaseMenuSeparator","kui-DropdownMenuSeparator",o)}):null);be.displayName="DropdownMenu.Separator";function Ne({label:o,name:n}){let t=v(),u=e.useCallback(a=>{a.preventDefault(),t?.pop()},[t]),i=typeof o=="string"?o:n,r=i&&i!=="Back"?`Back from ${i}`:void 0;return e.createElement(s.Item,{"aria-label":r,textValue:i||"Back",onSelect:u,className:l("kui-reset","kui-BaseMenuItem","kui-DropdownMenuItem","kui-DropdownMenuDrillDownBackItem")},e.createElement(Y,{className:"kui-BaseMenuSubTriggerIcon kui-DropdownMenuDrillDownBackIcon"}),e.createElement("span",{className:"kui-DropdownMenuDrillDownBackLabel"},o))}function Be(o){let{loop:n,onEscapeKeyDown:t,onPointerDownOutside:u,onFocusOutside:i,onInteractOutside:r,sideOffset:a,alignOffset:c,avoidCollisions:p,collisionBoundary:m,collisionPadding:D,arrowPadding:d,sticky:P,hideWhenDetached:R,updatePositionStrategy:f,...b}=o;return b}var Re=e.forwardRef((o,n)=>{let t=v(),u=N();return t&&u?e.createElement(ve,{...o,ref:n,store:t,sub:u}):e.createElement(Ce,{...o,ref:n})});Re.displayName="DropdownMenu.SubContent";var Ce=e.forwardRef((o,n)=>{let t=e.useContext(V),u=o.size??t.size,i=o.color??t.color,{className:r,children:a,container:c,forceMount:p,color:m,virtualized:D=!1,...d}=S({...o,size:u},y),P=h(u,y.size.default),R=e.useMemo(()=>({size:u,color:i}),[u,i]),f=e.createElement(B,{size:u},e.createElement(V.Provider,{value:R},a));return e.createElement(s.Portal,{container:c,forceMount:p},e.createElement(G,{asChild:!0},e.createElement(s.SubContent,{"data-accent-color":i,alignOffset:$(P),sideOffset:1,collisionPadding:10,...d,asChild:!1,ref:n,className:l("kui-PopperContent","kui-BaseMenuContent","kui-variant-soft","kui-BaseMenuSubContent","kui-DropdownMenuContent","kui-DropdownMenuSubContent",r)},D?e.createElement("div",{className:l("kui-BaseMenuViewport","kui-DropdownMenuViewport","kui-virtualized")},f):e.createElement(L,{type:"auto",scrollbars:"vertical"},e.createElement("div",{className:l("kui-BaseMenuViewport","kui-DropdownMenuViewport")},f)))))});Ce.displayName="DropdownMenu.CascadeSubContent";var ve=e.forwardRef(({store:o,sub:n,...t},u)=>{let i=E(o,n.id),r=Z(o,n.id);if(i==="closed")return null;let{className:a,children:c,container:p,forceMount:m,virtualized:D,size:d,color:P,...R}=Be(t),f=i==="top",b=r?.name||(typeof n.label=="string"?n.label:"");return e.createElement("div",{role:"group","aria-label":b||void 0,...R,ref:u,"data-drill-down-panel":n.id,"data-drill-down-active":f?!0:void 0,className:l("kui-DropdownMenuDrillDownPanel",a)},f&&e.createElement(e.Fragment,null,e.createElement(Ne,{label:n.label,name:b}),e.createElement(s.Separator,{className:"kui-BaseMenuSeparator kui-DropdownMenuSeparator"})),e.createElement(g,{value:null},e.createElement(M.Provider,{value:f},c)))});ve.displayName="DropdownMenu.DrillDownPanel";var Ie=e.forwardRef(({className:o,...n},t)=>e.createElement(U,{...n,ref:t,className:l("kui-DropdownMenuTriggerIcon",o)}));Ie.displayName="DropdownMenu.TriggerIcon";export{ue as a,se as b,de as c,le as d,ce as e,me as f,De as g,we as h,Me as i,fe as j,Pe as k,be as l,Re as m,Ie as n,Oe as o};
|
|
3
|
-
//# sourceMappingURL=chunk-
|
|
2
|
+
import{a as I,b as y,c as z,d as _,e as K}from"./chunk-2ACVWLFA.js";import{a as te}from"./chunk-TGRHRMQI.js";import{a as G}from"./chunk-HGF4CKRY.js";import{b as re}from"./chunk-FVRVBB6O.js";import{b as H,c as U,d as k,e as Y,f as q}from"./chunk-GKDGNPBD.js";import{c as X}from"./chunk-5ON3XLRD.js";import{a as M,b as v,c as J,d as Q,e as E,f as Z,g as ee,h as N}from"./chunk-5JYSYTHA.js";import{c as B,e as oe,g,h as O,i as ne}from"./chunk-ISCZ57VL.js";import{b as h,c as $,d as T,e as x}from"./chunk-EB4AG3OL.js";import{a as L}from"./chunk-DFQIIYLD.js";import{c as S}from"./chunk-OKQAVYW4.js";import{a as he}from"./chunk-VQPANPMI.js";var Oe={};he(Oe,{CheckboxItem:()=>Me,Content:()=>de,Group:()=>me,Item:()=>ce,Label:()=>le,RadioGroup:()=>De,RadioItem:()=>we,Root:()=>ue,Separator:()=>be,Sub:()=>fe,SubContent:()=>Re,SubTrigger:()=>Pe,Trigger:()=>se,TriggerIcon:()=>Ie});import*as e from"react";import l from"classnames";import{DropdownMenu as s,Slot as W}from"radix-ui";import{useCallbackRef as ie}from"radix-ui/internal";var ae=e.createContext(!1),ue=o=>{let{open:n,defaultOpen:t=!1,onOpenChange:u}=o,[i,r]=e.useState(t),a=n??i,c=ie(u),p=e.useCallback(D=>{r(D),c(D)},[c]),m=e.useCallback(()=>p(!1),[p]);return e.createElement(ae.Provider,{value:a},e.createElement(oe,{value:m},e.createElement(s.Root,{...o,open:a,onOpenChange:p})))};ue.displayName="DropdownMenu.Root";var se=e.forwardRef(({children:o,...n},t)=>e.createElement(s.Trigger,{...n,ref:t,asChild:!0},te(o)));se.displayName="DropdownMenu.Trigger";var V=e.createContext({}),Te={ltr:"ArrowLeft",rtl:"ArrowRight"},xe={ltr:"ArrowRight",rtl:"ArrowLeft"};function Ee(o){return o instanceof HTMLElement&&(o.isContentEditable||o.tagName==="INPUT"||o.tagName==="TEXTAREA")}function pe(o){return o?.closest("[dir]")?.getAttribute("dir")==="rtl"?"rtl":"ltr"}var de=e.forwardRef((o,n)=>{let t=X(o,I.size),u=re(),{size:i=I.size.default}=t,{className:r,children:a,color:c,container:p,forceMount:m,submenuBehavior:D,virtualized:d=!1,onEscapeKeyDown:P,onKeyDown:R,...f}=S(t,I),b=c||u.accentColor,A=h(D,"cascade"),F=A==="drill-down",ge=e.useContext(ae),C=J(),ye=w=>{P?.(w),!(w.defaultPrevented||!F||C.getDepth()===0)&&(w.preventDefault(),C.pop("keyboard"))},Se=w=>{R?.(w),!(w.defaultPrevented||!F||C.getDepth()===0)&&(Ee(w.target)||w.key===Te[pe(w.currentTarget)]&&(w.preventDefault(),C.pop("keyboard")))},ke=e.useMemo(()=>({size:i,color:b}),[i,b]),j=e.createElement(B,{size:i},e.createElement(V.Provider,{value:ke},e.createElement(Q,{store:C,behavior:A,open:ge},a)));return e.createElement(s.Portal,{container:p,forceMount:m},e.createElement(G,{asChild:!0},e.createElement(s.Content,{"data-accent-color":b,align:"start",sideOffset:4,collisionPadding:10,...f,onEscapeKeyDown:ye,onKeyDown:Se,asChild:!1,ref:n,className:l("kui-PopperContent","kui-BaseMenuContent","kui-variant-soft","kui-DropdownMenuContent",r)},d?e.createElement("div",{className:l("kui-BaseMenuViewport","kui-DropdownMenuViewport","kui-virtualized")},j):e.createElement(L,{type:"auto",scrollbars:"vertical"},e.createElement("div",{className:l("kui-BaseMenuViewport","kui-DropdownMenuViewport")},j)))))});de.displayName="DropdownMenu.Content";var le=e.forwardRef(({className:o,id:n,...t},u)=>{let i=e.useContext(M),r=ne(n,i);return i?e.createElement(s.Label,{...t,id:r,asChild:!1,ref:u,className:l("kui-BaseMenuLabel","kui-DropdownMenuLabel",o)}):null});le.displayName="DropdownMenu.Label";var ce=e.forwardRef((o,n)=>{let{className:t,children:u,color:i=z.color.default,shortcut:r,...a}=o;return e.useContext(M)?e.createElement(s.Item,{"data-accent-color":i,"aria-keyshortcuts":r?T(r):void 0,...a,ref:n,className:l("kui-reset","kui-BaseMenuItem","kui-DropdownMenuItem",t)},e.createElement(W.Slottable,null,u),r&&e.createElement(x,{shortcut:r,className:"kui-DropdownMenuShortcut"})):null});ce.displayName="DropdownMenu.Item";var me=e.forwardRef(({className:o,"aria-labelledby":n,...t},u)=>{let[i,r]=O(n),a=e.useContext(M);return e.createElement(g,{value:r},e.createElement(s.Group,{...a?{"aria-labelledby":i}:{role:"none"},...t,asChild:!1,ref:u,className:l("kui-BaseMenuGroup","kui-DropdownMenuGroup",o)}))});me.displayName="DropdownMenu.Group";var De=e.forwardRef(({className:o,"aria-labelledby":n,...t},u)=>{let[i,r]=O(n),a=e.useContext(M);return e.createElement(g,{value:r},e.createElement(s.RadioGroup,{...a?{"aria-labelledby":i}:{role:"none"},...t,asChild:!1,ref:u,className:l("kui-BaseMenuRadioGroup","kui-DropdownMenuRadioGroup",o)}))});De.displayName="DropdownMenu.RadioGroup";var we=e.forwardRef((o,n)=>{let{children:t,className:u,color:i=K.color.default,...r}=o;return e.useContext(M)?e.createElement(s.RadioItem,{...r,asChild:!1,ref:n,"data-accent-color":i,className:l("kui-BaseMenuItem","kui-BaseMenuRadioItem","kui-DropdownMenuItem","kui-DropdownMenuRadioItem",u)},e.createElement(W.Slottable,null,t),e.createElement(s.ItemIndicator,{className:"kui-BaseMenuItemIndicator kui-DropdownMenuItemIndicator"},e.createElement(q,{className:"kui-BaseMenuItemIndicatorIcon kui-DropdownMenuItemIndicatorIcon"}))):null});we.displayName="DropdownMenu.RadioItem";var Me=e.forwardRef((o,n)=>{let{children:t,className:u,shortcut:i,color:r=_.color.default,...a}=o;return e.useContext(M)?e.createElement(s.CheckboxItem,{"aria-keyshortcuts":i?T(i):void 0,...a,asChild:!1,ref:n,"data-accent-color":r,className:l("kui-BaseMenuItem","kui-BaseMenuCheckboxItem","kui-DropdownMenuItem","kui-DropdownMenuCheckboxItem",u)},e.createElement(W.Slottable,null,t),e.createElement(s.ItemIndicator,{className:"kui-BaseMenuItemIndicator kui-DropdownMenuItemIndicator"},e.createElement(H,{className:"kui-BaseMenuItemIndicatorIcon kui-DropdownMenuItemIndicatorIcon"})),i&&e.createElement(x,{shortcut:i,className:"kui-DropdownMenuShortcut"})):null});Me.displayName="DropdownMenu.CheckboxItem";var fe=({label:o="Back",open:n,defaultOpen:t,onOpenChange:u,children:i})=>{let r=v(),a=e.useId(),c=e.useMemo(()=>({id:a,label:o}),[a,o]),p=E(r,a)!=="closed",m=ie(u),D=n!==void 0;e.useLayoutEffect(()=>{if(!(!r||!D))return r.setController(a,m),()=>r.setController(a,null)},[r,D,a,m]),e.useLayoutEffect(()=>{!r||n===void 0||(n&&!r.isOpen(a)?r.open(a,r.takePendingModality(a)):!n&&r.isOpen(a)&&r.close(a,r.takePendingModality(a)))},[r,n,a]);let d=e.useRef(n===void 0&&!!t);e.useLayoutEffect(()=>{r&&d.current?r.open(a):d.current=!1},[]);let P=e.useRef(p);return e.useEffect(()=>{if(!(!r||P.current===p)){if(P.current=p,p&&d.current){d.current=!1;return}n!==void 0&&n===p||m(p)}},[r,p,m,n]),e.createElement(ee.Provider,{value:c},e.createElement(s.Sub,{open:n,defaultOpen:t,onOpenChange:r?void 0:u},i))};fe.displayName="DropdownMenu.Sub";var Pe=e.forwardRef((o,n)=>{let{className:t,children:u,onKeyDown:i,...r}=o,a=v(),c=N(),p=e.useContext(M);if(a&&c){if(!p)return null;let m=d=>{d.preventDefault(),a.push(c.id)},D=d=>{i?.(d),!(d.defaultPrevented||r.disabled)&&d.key===xe[pe(d.currentTarget)]&&(d.preventDefault(),a.push(c.id,"keyboard"))};return e.createElement(s.Item,{...r,"data-drill-down-trigger":c.id,"data-drill-down-name":r.textValue,onSelect:m,onKeyDown:D,ref:n,className:l("kui-reset","kui-BaseMenuItem","kui-BaseMenuSubTrigger","kui-DropdownMenuItem","kui-DropdownMenuSubTrigger","kui-DropdownMenuDrillDownSubTrigger",t)},u,e.createElement("div",{className:"kui-BaseMenuShortcut kui-DropdownMenuShortcut"},e.createElement(k,{className:"kui-BaseMenuSubTriggerIcon kui-DropdownMenuSubTriggerIcon"})))}return e.createElement(s.SubTrigger,{...r,onKeyDown:i,asChild:!1,ref:n,className:l("kui-BaseMenuItem","kui-BaseMenuSubTrigger","kui-DropdownMenuItem","kui-DropdownMenuSubTrigger",t)},u,e.createElement("div",{className:"kui-BaseMenuShortcut kui-DropdownMenuShortcut"},e.createElement(k,{className:"kui-BaseMenuSubTriggerIcon kui-DropdownMenuSubTriggerIcon"})))});Pe.displayName="DropdownMenu.SubTrigger";var be=e.forwardRef(({className:o,...n},t)=>e.useContext(M)?e.createElement(s.Separator,{...n,asChild:!1,ref:t,className:l("kui-BaseMenuSeparator","kui-DropdownMenuSeparator",o)}):null);be.displayName="DropdownMenu.Separator";function Ne({label:o,name:n}){let t=v(),u=e.useCallback(a=>{a.preventDefault(),t?.pop()},[t]),i=typeof o=="string"?o:n,r=i&&i!=="Back"?`Back from ${i}`:void 0;return e.createElement(s.Item,{"aria-label":r,textValue:i||"Back",onSelect:u,className:l("kui-reset","kui-BaseMenuItem","kui-DropdownMenuItem","kui-DropdownMenuDrillDownBackItem")},e.createElement(Y,{className:"kui-BaseMenuSubTriggerIcon kui-DropdownMenuDrillDownBackIcon"}),e.createElement("span",{className:"kui-DropdownMenuDrillDownBackLabel"},o))}function Be(o){let{loop:n,onEscapeKeyDown:t,onPointerDownOutside:u,onFocusOutside:i,onInteractOutside:r,sideOffset:a,alignOffset:c,avoidCollisions:p,collisionBoundary:m,collisionPadding:D,arrowPadding:d,sticky:P,hideWhenDetached:R,updatePositionStrategy:f,...b}=o;return b}var Re=e.forwardRef((o,n)=>{let t=v(),u=N();return t&&u?e.createElement(ve,{...o,ref:n,store:t,sub:u}):e.createElement(Ce,{...o,ref:n})});Re.displayName="DropdownMenu.SubContent";var Ce=e.forwardRef((o,n)=>{let t=e.useContext(V),u=o.size??t.size,i=o.color??t.color,{className:r,children:a,container:c,forceMount:p,color:m,virtualized:D=!1,...d}=S({...o,size:u},y),P=h(u,y.size.default),R=e.useMemo(()=>({size:u,color:i}),[u,i]),f=e.createElement(B,{size:u},e.createElement(V.Provider,{value:R},a));return e.createElement(s.Portal,{container:c,forceMount:p},e.createElement(G,{asChild:!0},e.createElement(s.SubContent,{"data-accent-color":i,alignOffset:$(P),sideOffset:1,collisionPadding:10,...d,asChild:!1,ref:n,className:l("kui-PopperContent","kui-BaseMenuContent","kui-variant-soft","kui-BaseMenuSubContent","kui-DropdownMenuContent","kui-DropdownMenuSubContent",r)},D?e.createElement("div",{className:l("kui-BaseMenuViewport","kui-DropdownMenuViewport","kui-virtualized")},f):e.createElement(L,{type:"auto",scrollbars:"vertical"},e.createElement("div",{className:l("kui-BaseMenuViewport","kui-DropdownMenuViewport")},f)))))});Ce.displayName="DropdownMenu.CascadeSubContent";var ve=e.forwardRef(({store:o,sub:n,...t},u)=>{let i=E(o,n.id),r=Z(o,n.id);if(i==="closed")return null;let{className:a,children:c,container:p,forceMount:m,virtualized:D,size:d,color:P,...R}=Be(t),f=i==="top",b=r?.name||(typeof n.label=="string"?n.label:"");return e.createElement("div",{role:"group","aria-label":b||void 0,...R,ref:u,"data-drill-down-panel":n.id,"data-drill-down-active":f?!0:void 0,className:l("kui-DropdownMenuDrillDownPanel",a)},f&&e.createElement(e.Fragment,null,e.createElement(Ne,{label:n.label,name:b}),e.createElement(s.Separator,{className:"kui-BaseMenuSeparator kui-DropdownMenuSeparator"})),e.createElement(g,{value:null},e.createElement(M.Provider,{value:f},c)))});ve.displayName="DropdownMenu.DrillDownPanel";var Ie=e.forwardRef(({className:o,...n},t)=>e.createElement(U,{...n,ref:t,className:l("kui-DropdownMenuTriggerIcon",o)}));Ie.displayName="DropdownMenu.TriggerIcon";export{ue as a,se as b,de as c,le as d,ce as e,me as f,De as g,we as h,Me as i,fe as j,Pe as k,be as l,Re as m,Ie as n,Oe as o};
|
|
3
|
+
//# sourceMappingURL=chunk-KBSH6CBD.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{
|
|
3
|
-
//# sourceMappingURL=chunk-
|
|
2
|
+
import{c as y}from"./chunk-5ON3XLRD.js";import{a as m,e as v}from"./chunk-HBWBPBSA.js";import{a as b}from"./chunk-YOSLXJI5.js";import{b as P}from"./chunk-XU74PNM2.js";import{c as g}from"./chunk-OKQAVYW4.js";import{a as f}from"./chunk-CLJ6SEGP.js";import*as e from"react";import A from"classnames";import{Avatar as u}from"radix-ui";var q=["1","2","3","4","5","6","7","8","9"],B=["raised","solid","soft","surface","outline"],U=["cover","contain","fill","scale-down","none"],c={...f,size:{type:"enum",className:"kui-r-size",values:q,default:"2",responsive:!0},variant:{type:"enum",className:"kui-variant",values:B,default:"raised"},...v,...P,fallback:{type:"ReactNode",required:!0},status:{type:"enum",values:m,default:void 0},statusLabel:{type:"string",default:void 0},badge:{type:"ReactNode",default:void 0},fit:{type:"enum",className:"kui-r-fit",values:U,default:"cover",responsive:!0}};var _=e.forwardRef((a,s)=>{let o=y(a,c.size),{asChild:t,children:r,className:n,style:i,color:h,radius:N,status:d,statusLabel:l,badge:p,fallback:k,onLoadingStatusChange:D,src:C,alt:I,srcSet:z,sizes:S,crossOrigin:w,referrerPolicy:E,loading:L,decoding:x,onLoad:F,onError:O,...j}=g(o,c),T={fallback:k,onLoadingStatusChange:D,src:C,alt:I,srcSet:z,sizes:S,crossOrigin:w,referrerPolicy:E,loading:L,decoding:x,onLoad:F,onError:O},V=t&&r!=null&&e.isValidElement(r)&&(r.props.disabled===!0||r.props["data-disabled"]===!0),W=p!==void 0||d!==void 0,G=p!==void 0?e.createElement("span",{className:"kui-AvatarBadge"},p):d!==void 0?e.createElement("span",{className:"kui-AvatarStatus","data-accent-color":d,role:l?"img":void 0,"aria-label":l||void 0,"aria-hidden":l?void 0:!0}):null;return e.createElement(u.Root,{...j,ref:s,"data-accent-color":h,"data-radius":N,"data-disabled":V||void 0,"data-has-indicator":W||void 0,className:A("kui-reset","kui-AvatarRoot",n),style:i,asChild:t},b({asChild:t,children:r},e.createElement(e.Fragment,null,e.createElement(R,{...T}),G)))});_.displayName="Avatar";var R=e.memo(({fallback:a,onLoadingStatusChange:s,...o})=>{let[t,r]=e.useState("idle"),n=e.useCallback(i=>{s?.(i),r(i)},[s]);return e.createElement(e.Fragment,null,t==="idle"||t==="loading"?e.createElement("span",{className:"kui-AvatarFallback"}):null,t==="error"?e.createElement(u.Fallback,{className:A("kui-AvatarFallback",{"kui-one-letter":typeof a=="string"&&a.length===1,"kui-two-letters":typeof a=="string"&&a.length===2}),...o.alt?{role:"img","aria-label":o.alt}:{"aria-hidden":!0}},a):null,e.createElement(u.Image,{className:"kui-AvatarImage",...o,onLoadingStatusChange:n}))});R.displayName="AvatarImpl";export{_ as a};
|
|
3
|
+
//# sourceMappingURL=chunk-L7PRLW6A.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{
|
|
3
|
-
//# sourceMappingURL=chunk-
|
|
2
|
+
import{c as t}from"./chunk-HBWBPBSA.js";import{b as p}from"./chunk-XU74PNM2.js";import{b as a,c as i}from"./chunk-OKQAVYW4.js";import*as r from"react";import R from"classnames";import{Progress as n}from"radix-ui";var v=["surface","soft","outline"],m={variant:{type:"enum",className:"kui-variant",values:v,default:"surface"},...t,...p,duration:{type:"string"}};var D=r.forwardRef((f,P)=>{let{className:u,style:c,color:d,radius:g,duration:l,...e}=i(f,m),{value:o,max:y}=e,s=o!=null&&o>=0&&o<=(y??100);return r.createElement(n.Root,{"data-accent-color":d,"data-radius":g,ref:P,className:R("kui-ProgressRoot",u),style:a({"--progress-duration":s?void 0:l,"--progress-value":s?o:void 0,"--progress-max":e.max??void 0},c),...e,asChild:!1},r.createElement(n.Indicator,{className:"kui-ProgressIndicator"}))});D.displayName="Progress";export{D as a};
|
|
3
|
+
//# sourceMappingURL=chunk-LFAUMDU5.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{a as nt}from"./chunk-7V6M3MIR.js";import{a as Be}from"./chunk-WUCBFB25.js";import{a as we}from"./chunk-KJZSXLIX.js";import{a as Ae}from"./chunk-4MNRLB57.js";import{a as De}from"./chunk-BUXK5VGR.js";import{a as ze}from"./chunk-KVVRFWGQ.js";import{g as Qe,h as Ze,j as et}from"./chunk-GKDGNPBD.js";import{b as U}from"./chunk-5KMEUZWN.js";import{a as at}from"./chunk-MGWGD6KI.js";import{b as tt}from"./chunk-5ON3XLRD.js";import{a as Ht}from"./chunk-VQPANPMI.js";var Wt={};Ht(Wt,{AttachTrigger:()=>Rt,Attachment:()=>$e,AttachmentsRow:()=>pt,InlineEnd:()=>mt,InlineStart:()=>dt,Item:()=>bt,Root:()=>lt,Row:()=>Ct,RowEnd:()=>vt,RowStart:()=>gt,Send:()=>yt,Textarea:()=>ut});import*as e from"react";import E from"classnames";import{useComposedRefs as st,useLayoutEffect as je}from"radix-ui/internal";import{useDropzone as Ft}from"react-dropzone";function ot(t,r){let{placeholder:a}=t;if(!a){r();return}t.placeholder="";try{r()}finally{t.placeholder=a}}var It={values:["1","2","3"]},it=e.createContext(null),We=e.createContext(""),I=()=>{let t=e.useContext(it);if(!t)throw new Error("Chatbar context not found. Wrap parts in <Chatbar.Root>.");return t},me=t=>Array.isArray(t)?t:typeof t=="string"?t.split(",").map(r=>r.trim()).filter(Boolean):[],zt=(t,r)=>{if(r.length===0)return!0;let a=t.type.toLowerCase(),i=t.name.toLowerCase();for(let c of r){let l=c.toLowerCase();if(l.includes("/")){let[u,d]=l.split("/"),[g,y]=a.split("/");if(u==="*"||u===g&&(d==="*"||d===y))return!0}else if(l.startsWith(".")&&i.endsWith(l))return!0}return!1},Dt=/\.(png|jpe?g|gif|webp|bmp|svg|avif)$/i,ct=(t,r)=>(r||"").toLowerCase().startsWith("image/")||Dt.test(t),Ve=t=>t.trim().length>0,rt=(t,r)=>`${t} ${r}${t===1?"":"s"}`,Bt=0,jt=()=>`chatbar-attachment-${Date.now()}-${++Bt}`,lt=e.forwardRef((t,r)=>{let{className:a,style:i,children:c,value:l,defaultValue:u="",onValueChange:d,open:g,defaultOpen:y=!1,onOpenChange:R,expandOn:p="both",minLines:v=3,maxLines:x=6,sendMode:w="whenDirty",disabled:b,readOnly:S,onSubmit:D,size:O,variant:z,color:H,radius:F,width:Q,maxWidth:f,attachments:_,defaultAttachments:B,onAttachmentsChange:se,accept:A,multiple:L=!0,maxAttachments:Z,maxFileSize:G,paste:j=!0,pasteAccept:q,clearOnSubmit:V=!0,onAttachmentReject:N,dropzone:M=!0,apiRef:ke,onBlurCapture:pe,notices:he,context:fe,...Se}=t,W=tt(O,It),Ee=l!=null,[n,C]=e.useState(u),k=Ee?l:n,ee=g!=null,[X,te]=e.useState(y),ie=ee?g:X,Y="attachments"in t,[ce,be]=e.useState(()=>B??[]),le=e.useMemo(()=>Y?_??[]:ce,[Y,_,ce]),[Ke,xt]=e.useState({text:"",id:0}),ue=e.useCallback(o=>xt(s=>({text:o,id:s.id+1})),[]),Ue=e.useRef(null),Pt=st(r,Ue),Te=e.useRef(null),Le=e.useRef(null),de=e.useRef(!1),Re=e.useRef(!1),Ce=e.useRef(void 0),Ne=e.useRef(null),_e=me(A).join(","),Me=me(q).join(","),Oe=e.useMemo(()=>me(_e),[_e]),At=e.useMemo(()=>Me?me(Me):Oe,[Me,Oe]),Ge={value:k,attachments:le,accepts:Oe,pasteAccepts:At,multiple:L,maxAttachments:Z,maxFileSize:G,disabled:b,readOnly:S,expandOn:p,isValueControlled:Ee,isOpenControlled:ee,isAttachmentsControlled:Y,onValueChange:d,onOpenChange:R,onAttachmentsChange:se,onAttachmentReject:N,onSubmit:D},P=e.useRef(Ge);P.current=Ge;let He=e.useRef(null),$=e.useCallback(()=>He.current??P.current.attachments,[]),ae=e.useCallback(o=>{P.current.isOpenControlled||te(o),P.current.onOpenChange?.(o)},[]),ge=e.useCallback(o=>{P.current.isValueControlled||C(o),P.current.onValueChange?.(o)},[]),ne=e.useCallback(o=>{He.current=o,queueMicrotask(()=>{He.current=null}),P.current.isAttachmentsControlled||be(o),P.current.onAttachmentsChange?.(o)},[]),ve=e.useRef(new Set),oe=e.useCallback((o,s,m=P.current.multiple)=>{let h=P.current;if(h.disabled||h.readOnly||o.length===0)return 0;let K=$(),J=[],re=[],Mt=typeof h.maxAttachments=="number"?Math.max(h.maxAttachments-K.length,0):1/0,Ot=m?1/0:1;for(let T of o){if(J.length>=Mt||J.length>=Ot){re.push({file:T,reason:"count"});continue}if(typeof h.maxFileSize=="number"&&T.size>h.maxFileSize){re.push({file:T,reason:"size"});continue}if(!zt(T,s)){re.push({file:T,reason:"type"});continue}let Ie=ct(T.name,T.type)?URL.createObjectURL(T):void 0;Ie&&ve.current.add(Ie),J.push({id:jt(),name:T.name,size:T.size,type:T.type,file:T,url:Ie,status:"idle"})}let Pe=[];return J.length>0&&(ne(K.concat(J)),h.expandOn!=="none"&&ae(!0),Pe.push(`${rt(J.length,"file")} attached.`)),re.length>0&&(h.onAttachmentReject?.(re),Pe.push(`${rt(re.length,"file")} could not be attached.`)),Pe.length>0&&ue(Pe.join(" ")),J.length},[$,ne,ae,ue]),ye=e.useCallback(o=>oe(o,P.current.accepts),[oe]),qe=e.useCallback(o=>oe(o,P.current.pasteAccepts),[oe]),Xe=e.useCallback(o=>{let s=$(),m=s.find(h=>h.id===o);m&&(ne(s.filter(h=>h.id!==o)),ue(`Removed ${m.name}.`))},[$,ne,ue]),Ye=e.useCallback(o=>{let s=P.current;if(s.disabled||s.readOnly)return!1;let m=$();if(!Ve(s.value)&&m.length===0)return!1;let h={value:s.value,attachments:m};if(o&&s.onSubmit)for(let K of m)K.url&&ve.current.delete(K.url);return s.onSubmit?.(h),o&&(ge(""),ne([])),!0},[$,ge,ne]);e.useEffect(()=>{let o=ve.current;if(o.size===0)return;let s=new Set(le.map(m=>m.url));for(let m of Array.from(o))s.has(m)||(URL.revokeObjectURL(m),o.delete(m))},[le]),e.useEffect(()=>{let o=ve.current;return()=>{if(!P.current.isAttachmentsControlled){for(let s of Array.from(o))URL.revokeObjectURL(s);o.clear()}}},[]);let xe=e.useCallback(o=>{let s=P.current,m=Le.current;if(clearTimeout(Ce.current),Re.current=!1,!m||s.disabled||s.readOnly)return;let h=o?.accept!=null?me(o.accept):s.accepts,K=o?.multiple??s.multiple;Ne.current={patterns:h,multiple:K},m.accept=h.join(","),m.multiple=K,de.current=!0,m.click(),setTimeout(()=>{document.hasFocus()&&(de.current=!1)},1e3)},[]),Je=e.useCallback(()=>{Re.current=!0,clearTimeout(Ce.current),Ce.current=setTimeout(()=>{Re.current=!1},800)},[]);e.useEffect(()=>()=>clearTimeout(Ce.current),[]),e.useEffect(()=>{let o=Le.current,s=()=>{de.current=!1};return window.addEventListener("focus",s),o?.addEventListener("cancel",s),()=>{window.removeEventListener("focus",s),o?.removeEventListener("cancel",s)}},[]);let wt=e.useCallback(o=>{let s=o.currentTarget,m=Array.from(s.files??[]),h=Ne.current;oe(m,h?.patterns??P.current.accepts,h?.multiple),de.current=!1,Ne.current=null,s.value=""},[oe]),kt=e.useCallback(o=>{pe?.(o);let s=P.current,m=Ue.current;if(!m||s.expandOn==="none")return;let h=o.relatedTarget;h&&m.contains(h)||de.current||Re.current||!Ve(s.value)&&$().length===0&&ae(!1)},[pe,ae,$]),St=e.useCallback(o=>{ye(o)},[ye]),{getRootProps:Et,isDragActive:Tt}=Ft({onDrop:St,onDragEnter:()=>ue(""),noClick:!0,noKeyboard:!0,noPaste:!0,disabled:!M||b||S}),Fe=M&&Tt;e.useImperativeHandle(ke,()=>({focusTextarea:()=>Te.current?.focus({preventScroll:!0}),openFilePicker:()=>xe()}),[xe]);let Lt=e.useCallback(o=>{if(b||o.pointerType==="mouse"&&o.button!==0)return;let s=o.target;s instanceof Element&&s.closest('button, [role="button"], a[href], input, textarea, select, [contenteditable], [tabindex]:not([tabindex="-1"])')||(o.preventDefault(),Te.current?.focus({preventScroll:!0}))},[b]),Nt=e.useMemo(()=>({open:ie,setOpen:ae,setValue:ge,size:W,expandOn:p,minLines:v,maxLines:x,sendMode:w,disabled:b,readOnly:S,paste:j,clearOnSubmit:V,multiple:L,textareaRef:Te,attachments:le,removeAttachment:Xe,submit:Ye,appendFiles:ye,appendFilesFromPaste:qe,openFilePicker:xe,beginFilePickerPress:Je}),[ie,ae,ge,W,p,v,x,w,b,S,j,V,L,le,Xe,Ye,ye,qe,xe,Je]);return e.createElement(it.Provider,{value:Nt},e.createElement(We.Provider,{value:k},e.createElement(e.Fragment,null,e.createElement("div",{...Se,ref:Pt,className:E("kui-ChatbarRoot",`kui-r-size-${W}`,a),style:{position:"relative",width:Q,maxWidth:f,...i},"data-state":ie?"open":"closed","data-disabled":b?"":void 0,"data-readonly":S?"":void 0,"data-drop-active":Fe?"":void 0,"data-accent-color":H,"data-radius":F,onBlurCapture:kt},e.createElement("input",{ref:Le,type:"file",tabIndex:-1,"aria-hidden":!0,style:{display:"none"},onChange:wt}),he?e.createElement("div",{className:"kui-ChatbarNotices"},e.createElement(nt.Provider,{value:W},he)):null,e.createElement("div",{...M?Et():{},style:{width:"100%",flex:"1 1 auto",minHeight:0},onPointerDown:Lt},e.createElement("div",{className:E("kui-ChatbarBox",`kui-variant-${z??"raised"}`),style:{position:"relative"},"data-accent-color":H,"data-radius":F},e.createElement("div",{className:"kui-ChatbarGrid"},c),Fe&&e.createElement("div",{className:"kui-ChatbarDropOverlay","aria-hidden":!0},e.createElement("div",{className:"kui-ChatbarDropContent"},e.createElement(Ae,{emphasis:"medium",size:W,weight:"medium"},"Drop files here to attach"))))),fe?e.createElement(Ae,{as:"div",size:W==="3"?"2":"1",emphasis:"medium",className:"kui-ChatbarContext"},fe):null,e.createElement(Be,{role:"status","aria-live":"polite"},Fe?"Drop files here to attach.":e.createElement("span",{key:Ke.id},Ke.text))))))});lt.displayName="Chatbar.Root";var ut=e.forwardRef((t,r)=>{let{className:a,style:i,asChild:c,onFocus:l,onChange:u,onPaste:d,onKeyDown:g,onCompositionStart:y,onCompositionEnd:R,submitOnEnter:p=!1,...v}=t,x=I(),w=e.useContext(We),{open:b,minLines:S,maxLines:D,expandOn:O,disabled:z,readOnly:H,setOpen:F,setValue:Q,textareaRef:f,paste:_,appendFilesFromPaste:B,size:se,submit:A,clearOnSubmit:L}=x,Z=st(r,f),G=e.useRef(0),j=e.useRef(0),q=e.useRef(!1),V=e.useRef({open:b,minLines:S,maxLines:D});je(()=>{V.current={open:b,minLines:S,maxLines:D}},[b,S,D]);let N=e.useCallback(()=>{let n=f.current;if(!n)return;let C=window.getComputedStyle(n);G.current=parseFloat(C.lineHeight)||20,j.current=(parseFloat(C.paddingTop)||0)+(parseFloat(C.paddingBottom)||0)},[f]),M=e.useCallback((n,C)=>{let{minLines:k,maxLines:ee}=V.current,X=G.current,te=j.current,ie=Math.ceil((C?k:1)*X)+te,Y=Math.ceil((C?ee:1)*X)+te,ce=Math.max(n.scrollHeight,ie);n.style.height=`${Math.min(ce,Y)}px`;let be=ce>Y;n.style.overflowY=be?"auto":"hidden",n.style.maxHeight=be?`${Y}px`:"none"},[]);je(()=>{N()},[N,se]),je(()=>{let n=f.current;n&&(G.current===0&&N(),ot(n,()=>{n.style.height="auto";let C=b;if(!b&&(O==="overflow"||O==="both")){let k=Math.ceil(G.current)+j.current;n.scrollHeight>k+1&&(C=!0,F(!0))}M(n,C)}))},[w,b,O,S,D,se,F,f,N,M]),e.useEffect(()=>{let n=f.current;if(!n||typeof ResizeObserver>"u")return;let C=-1,k=new ResizeObserver(ee=>{let X=ee[0]?.contentRect.width??0;if(X===C)return;let te=C===-1;C=X,!te&&(N(),ot(n,()=>{n.style.height="auto",M(n,V.current.open)}))});return k.observe(n),()=>k.disconnect()},[f,N,M]),e.useEffect(()=>{},[]);let ke=e.useCallback(n=>{l?.(n),!(z||H)&&(O==="focus"||O==="both")&&!b&&F(!0)},[z,H,O,b,F,l]),pe=e.useCallback(n=>{Q(n.currentTarget.value),u?.(n)},[Q,u]),he=e.useCallback(n=>{if(d?.(n),n.defaultPrevented||!_||z||H)return;let C=Array.from(n.clipboardData?.items??[]).filter(k=>k.kind==="file").map(k=>k.getAsFile()).filter(k=>!!k);C.length!==0&&B(C)>0&&n.preventDefault()},[_,z,H,d,B]),fe=e.useCallback(n=>{q.current=!0,y?.(n)},[y]),Se=e.useCallback(n=>{q.current=!1,R?.(n)},[R]),W=e.useCallback(n=>{g?.(n),!(n.defaultPrevented||!p)&&(n.key!=="Enter"||n.shiftKey||n.altKey||n.ctrlKey||n.metaKey||q.current||n.nativeEvent.isComposing||n.nativeEvent.keyCode===229||(n.preventDefault(),A(L)))},[p,g,A,L]);return e.createElement("div",{className:"kui-ChatbarField kui-ChatbarTextarea"},e.createElement(c?U:"textarea",{...v,ref:Z,className:E("kui-ChatbarInput",a),value:w,onChange:pe,onFocus:ke,onPaste:he,onKeyDown:W,onCompositionStart:fe,onCompositionEnd:Se,disabled:z,readOnly:H,rows:b?S:1,spellCheck:v.spellCheck??!0,autoCorrect:v.autoCorrect??"on",style:i}))});ut.displayName="Chatbar.Textarea";var dt=e.forwardRef((t,r)=>{let{children:a,asChild:i,className:c,...l}=t;return I().open?null:e.createElement(i?U:"div",{...l,ref:r,className:E("kui-ChatbarInlineStart",c)},a)});dt.displayName="Chatbar.InlineStart";var mt=e.forwardRef((t,r)=>{let{children:a,asChild:i,className:c,...l}=t;return I().open?null:e.createElement(i?U:"div",{...l,ref:r,className:E("kui-ChatbarInlineEnd",c)},a)});mt.displayName="Chatbar.InlineEnd";var pt=e.forwardRef((t,r)=>{let{asChild:a,forceMount:i,renderAttachment:c,className:l,children:u,...d}=t,g=I(),y=e.Children.toArray(u).length>0;return g.attachments.length===0&&!y&&!i?null:e.createElement("div",null,e.createElement(a?U:"div",{...d,ref:r,className:E("kui-ChatbarAttachmentsRow",l),role:"list","aria-label":d["aria-label"]??"Attachments"},e.createElement(at,{className:"kui-ChatbarScrollArea",scrollbars:"horizontal"},e.createElement(ze,{align:"center",gap:"3",minWidth:"fit-content"},g.attachments.map(p=>e.createElement($e,{key:p.id,attachment:p,asChild:!!c},c?.(p))),u))))});pt.displayName="Chatbar.AttachmentsRow";function ht(t,r){let a=t.closest('[role="listitem"]'),i=a?.parentElement?Array.from(a.parentElement.children):[],c=a?i.indexOf(a):-1,u=(i[c+1]??i[c-1])?.querySelector(".kui-ChatbarItemRemove");u?u.focus():r.current?.focus({preventScroll:!0})}var ft=({lead:t,leadKind:r,label:a,detail:i,removeLabel:c,onRemove:l})=>{let u=I();return e.createElement(e.Fragment,null,e.createElement("span",{className:"kui-ChatbarItemLead","data-kind":r,"aria-hidden":!0},t),e.createElement(Ae,{className:"kui-ChatbarItemLabel",size:u.size,truncate:!0},a,i?e.createElement(Be,null,", ",i):null),l&&e.createElement(we,{iconOnly:!0,className:"kui-ChatbarItemRemove","aria-label":c,size:"1",variant:"ghost",color:"gray",onClick:l},e.createElement(Qe,null)))},Vt={uploading:"uploading",error:"failed to upload"},$e=e.forwardRef((t,r)=>{let{attachment:a,asChild:i,className:c,children:l,...u}=t,d=I(),g=i?U:"div",y=!!a.url&&ct(a.name,a.type),R=`${Math.ceil(a.size/1024)} KB`,p=a.status?Vt[a.status]:void 0,v=d.disabled||d.readOnly,x=b=>{ht(b.currentTarget,d.textareaRef),d.removeAttachment(a.id)},w=a.status==="uploading"?e.createElement(De,null):y?e.createElement("img",{className:"kui-ChatbarAttachmentImage",src:a.url,alt:""}):e.createElement(et,null);return e.createElement(g,{...u,ref:r,className:E(l?"kui-ChatbarAttachment":"kui-ChatbarAttachment kui-ChatbarItem",c),role:"listitem","data-kind":y?"image":"file","data-status":a.status,title:a.name},l??e.createElement(ft,{lead:w,leadKind:y&&a.status!=="uploading"?"image":"icon",label:a.name,detail:p?`${R}, ${p}`:R,removeLabel:`Remove ${a.name}`,onRemove:v?void 0:x}))});$e.displayName="Chatbar.Attachment";var bt=e.forwardRef((t,r)=>{let{children:a,icon:i,image:c,color:l,onRemove:u,removeLabel:d,className:g,...y}=t,R=I(),p=R.disabled||R.readOnly,v=u?x=>{ht(x.currentTarget,R.textareaRef),u()}:void 0;return e.createElement("div",{...y,ref:r,className:E("kui-ChatbarItem",g),role:"listitem","data-accent-color":c?void 0:l??"gray",title:a},e.createElement(ft,{lead:c?e.createElement("img",{className:"kui-ChatbarAttachmentImage",src:c,alt:""}):i,leadKind:c?"image":"icon",label:a,removeLabel:d??`Remove ${a}`,onRemove:p?void 0:v}))});bt.displayName="Chatbar.Item";var Rt=e.forwardRef((t,r)=>{let{asChild:a,accept:i,multiple:c,disabled:l,onPointerDown:u,onClick:d,children:g,color:y,...R}=t,p=I(),v=l||p.disabled||p.readOnly,x={...R,ref:r,className:E("kui-ChatbarAttachTrigger",R.className),type:R.type??"button","aria-label":R["aria-label"]??"Add attachments",disabled:v,onPointerDown:w=>{u?.(w),!v&&!w.defaultPrevented&&p.beginFilePickerPress()},onClick:w=>{d?.(w),!(v||w.defaultPrevented)&&p.openFilePicker({accept:i,multiple:c})}};return a?e.createElement(U,{...x},g):e.createElement(we,{iconOnly:!0,emphasis:"quiet",color:"gray",size:p.size,...x},g??e.createElement(Ze,{"aria-hidden":!0}))});Rt.displayName="Chatbar.AttachTrigger";var Ct=e.forwardRef((t,r)=>{let{asChild:a,children:i,className:c,...l}=t;return I().open?e.createElement("div",null,e.createElement(a?U:"div",{...l,ref:r,className:E("kui-ChatbarRow",c)},e.createElement(ze,{align:"center",justify:"between",width:"100%"},i))):null});Ct.displayName="Chatbar.Row";var gt=e.forwardRef((t,r)=>{let{className:a,...i}=t;return e.createElement("div",{...i,ref:r,className:E("kui-ChatbarRowStart",a)})});gt.displayName="Chatbar.RowStart";var vt=e.forwardRef((t,r)=>{let{className:a,...i}=t;return e.createElement("div",{...i,ref:r,className:E("kui-ChatbarRowEnd",a)})});vt.displayName="Chatbar.RowEnd";var yt=e.forwardRef((t,r)=>{let{asChild:a,clearOnSend:i,disabled:c,children:l,style:u,className:d,size:g,variant:y,emphasis:R,tabIndex:p,onClick:v,status:x="ready",onStop:w,onRetry:b,stopLabel:S="Stop",retryLabel:D="Retry",stopIcon:O,retryIcon:z,"aria-label":H,"aria-labelledby":F,...Q}=t,f=I(),_=e.useContext(We),B=Ve(_)||f.attachments.length>0,A=B?"send":x==="submitted"||x==="streaming"?"stop":x==="error"?"retry":"send";if(f.sendMode==="never"&&A==="send")return null;let L=A!=="send"||f.sendMode==="always"||B,Z=A==="send"?c||f.disabled||f.readOnly||!B:c||f.disabled,j=A==="stop"?{"aria-label":S}:A==="retry"?{"aria-label":D}:F?{"aria-labelledby":F}:{"aria-label":H??"Send"},q=N=>{if(v?.(N),N.defaultPrevented||Z)return;if(A==="stop"){w?.();return}if(A==="retry"){b?.();return}let M=i??f.clearOnSubmit;f.submit(M)&&M&&f.textareaRef.current?.focus({preventScroll:!0})},V=A==="stop"?O??(x==="submitted"?e.createElement(De,null):e.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":!0},e.createElement("rect",{x:"7",y:"7",width:"10",height:"10",rx:"2"}))):A==="retry"?z??e.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":!0},e.createElement("path",{d:"M3 12a9 9 0 1 0 3-6.7L3 8"}),e.createElement("path",{d:"M3 3v5h5"})):l??e.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":!0},e.createElement("path",{d:"M5 12h14"}),e.createElement("path",{d:"m12 5 7 7-7 7"}));return e.createElement(we,{iconOnly:!0,...Q,ref:r,size:g??f.size,...R?{emphasis:R}:{variant:y??(f.open||A!=="send"?"solid":"ghost")},disabled:Z,className:E("kui-ChatbarSend",d),style:{opacity:L?1:0,pointerEvents:L?void 0:"none",...u},"aria-hidden":L?void 0:!0,tabIndex:L?p:-1,asChild:a,onClick:q,"data-status":x,"data-mode":A,...j},V)});yt.displayName="Chatbar.Send";export{lt as a,ut as b,dt as c,mt as d,pt as e,$e as f,bt as g,Rt as h,Ct as i,gt as j,vt as k,yt as l,Wt as m};
|
|
3
|
-
//# sourceMappingURL=chunk-
|
|
2
|
+
import{a as nt}from"./chunk-7YXHLU4C.js";import{a as Be}from"./chunk-WUCBFB25.js";import{a as we}from"./chunk-JQMWNI62.js";import{a as Ae}from"./chunk-FICBVI4M.js";import{a as De}from"./chunk-BUXK5VGR.js";import{a as ze}from"./chunk-KVVRFWGQ.js";import{b as U}from"./chunk-5KMEUZWN.js";import{g as Qe,h as Ze,j as et}from"./chunk-GKDGNPBD.js";import{b as tt}from"./chunk-5ON3XLRD.js";import{a as at}from"./chunk-DFQIIYLD.js";import{a as Ht}from"./chunk-VQPANPMI.js";var Wt={};Ht(Wt,{AttachTrigger:()=>Rt,Attachment:()=>$e,AttachmentsRow:()=>pt,InlineEnd:()=>mt,InlineStart:()=>dt,Item:()=>bt,Root:()=>lt,Row:()=>Ct,RowEnd:()=>vt,RowStart:()=>gt,Send:()=>yt,Textarea:()=>ut});import*as e from"react";import E from"classnames";import{useComposedRefs as st,useLayoutEffect as je}from"radix-ui/internal";import{useDropzone as Ft}from"react-dropzone";function ot(t,r){let{placeholder:a}=t;if(!a){r();return}t.placeholder="";try{r()}finally{t.placeholder=a}}var It={values:["1","2","3"]},it=e.createContext(null),We=e.createContext(""),I=()=>{let t=e.useContext(it);if(!t)throw new Error("Chatbar context not found. Wrap parts in <Chatbar.Root>.");return t},me=t=>Array.isArray(t)?t:typeof t=="string"?t.split(",").map(r=>r.trim()).filter(Boolean):[],zt=(t,r)=>{if(r.length===0)return!0;let a=t.type.toLowerCase(),i=t.name.toLowerCase();for(let c of r){let l=c.toLowerCase();if(l.includes("/")){let[u,d]=l.split("/"),[g,y]=a.split("/");if(u==="*"||u===g&&(d==="*"||d===y))return!0}else if(l.startsWith(".")&&i.endsWith(l))return!0}return!1},Dt=/\.(png|jpe?g|gif|webp|bmp|svg|avif)$/i,ct=(t,r)=>(r||"").toLowerCase().startsWith("image/")||Dt.test(t),Ve=t=>t.trim().length>0,rt=(t,r)=>`${t} ${r}${t===1?"":"s"}`,Bt=0,jt=()=>`chatbar-attachment-${Date.now()}-${++Bt}`,lt=e.forwardRef((t,r)=>{let{className:a,style:i,children:c,value:l,defaultValue:u="",onValueChange:d,open:g,defaultOpen:y=!1,onOpenChange:R,expandOn:p="both",minLines:v=3,maxLines:x=6,sendMode:w="whenDirty",disabled:b,readOnly:S,onSubmit:D,size:O,variant:z,color:H,radius:F,width:Q,maxWidth:f,attachments:_,defaultAttachments:B,onAttachmentsChange:se,accept:A,multiple:L=!0,maxAttachments:Z,maxFileSize:G,paste:j=!0,pasteAccept:q,clearOnSubmit:V=!0,onAttachmentReject:N,dropzone:M=!0,apiRef:ke,onBlurCapture:pe,notices:he,context:fe,...Se}=t,W=tt(O,It),Ee=l!=null,[n,C]=e.useState(u),k=Ee?l:n,ee=g!=null,[X,te]=e.useState(y),ie=ee?g:X,Y="attachments"in t,[ce,be]=e.useState(()=>B??[]),le=e.useMemo(()=>Y?_??[]:ce,[Y,_,ce]),[Ke,xt]=e.useState({text:"",id:0}),ue=e.useCallback(o=>xt(s=>({text:o,id:s.id+1})),[]),Ue=e.useRef(null),Pt=st(r,Ue),Te=e.useRef(null),Le=e.useRef(null),de=e.useRef(!1),Re=e.useRef(!1),Ce=e.useRef(void 0),Ne=e.useRef(null),_e=me(A).join(","),Me=me(q).join(","),Oe=e.useMemo(()=>me(_e),[_e]),At=e.useMemo(()=>Me?me(Me):Oe,[Me,Oe]),Ge={value:k,attachments:le,accepts:Oe,pasteAccepts:At,multiple:L,maxAttachments:Z,maxFileSize:G,disabled:b,readOnly:S,expandOn:p,isValueControlled:Ee,isOpenControlled:ee,isAttachmentsControlled:Y,onValueChange:d,onOpenChange:R,onAttachmentsChange:se,onAttachmentReject:N,onSubmit:D},P=e.useRef(Ge);P.current=Ge;let He=e.useRef(null),$=e.useCallback(()=>He.current??P.current.attachments,[]),ae=e.useCallback(o=>{P.current.isOpenControlled||te(o),P.current.onOpenChange?.(o)},[]),ge=e.useCallback(o=>{P.current.isValueControlled||C(o),P.current.onValueChange?.(o)},[]),ne=e.useCallback(o=>{He.current=o,queueMicrotask(()=>{He.current=null}),P.current.isAttachmentsControlled||be(o),P.current.onAttachmentsChange?.(o)},[]),ve=e.useRef(new Set),oe=e.useCallback((o,s,m=P.current.multiple)=>{let h=P.current;if(h.disabled||h.readOnly||o.length===0)return 0;let K=$(),J=[],re=[],Mt=typeof h.maxAttachments=="number"?Math.max(h.maxAttachments-K.length,0):1/0,Ot=m?1/0:1;for(let T of o){if(J.length>=Mt||J.length>=Ot){re.push({file:T,reason:"count"});continue}if(typeof h.maxFileSize=="number"&&T.size>h.maxFileSize){re.push({file:T,reason:"size"});continue}if(!zt(T,s)){re.push({file:T,reason:"type"});continue}let Ie=ct(T.name,T.type)?URL.createObjectURL(T):void 0;Ie&&ve.current.add(Ie),J.push({id:jt(),name:T.name,size:T.size,type:T.type,file:T,url:Ie,status:"idle"})}let Pe=[];return J.length>0&&(ne(K.concat(J)),h.expandOn!=="none"&&ae(!0),Pe.push(`${rt(J.length,"file")} attached.`)),re.length>0&&(h.onAttachmentReject?.(re),Pe.push(`${rt(re.length,"file")} could not be attached.`)),Pe.length>0&&ue(Pe.join(" ")),J.length},[$,ne,ae,ue]),ye=e.useCallback(o=>oe(o,P.current.accepts),[oe]),qe=e.useCallback(o=>oe(o,P.current.pasteAccepts),[oe]),Xe=e.useCallback(o=>{let s=$(),m=s.find(h=>h.id===o);m&&(ne(s.filter(h=>h.id!==o)),ue(`Removed ${m.name}.`))},[$,ne,ue]),Ye=e.useCallback(o=>{let s=P.current;if(s.disabled||s.readOnly)return!1;let m=$();if(!Ve(s.value)&&m.length===0)return!1;let h={value:s.value,attachments:m};if(o&&s.onSubmit)for(let K of m)K.url&&ve.current.delete(K.url);return s.onSubmit?.(h),o&&(ge(""),ne([])),!0},[$,ge,ne]);e.useEffect(()=>{let o=ve.current;if(o.size===0)return;let s=new Set(le.map(m=>m.url));for(let m of Array.from(o))s.has(m)||(URL.revokeObjectURL(m),o.delete(m))},[le]),e.useEffect(()=>{let o=ve.current;return()=>{if(!P.current.isAttachmentsControlled){for(let s of Array.from(o))URL.revokeObjectURL(s);o.clear()}}},[]);let xe=e.useCallback(o=>{let s=P.current,m=Le.current;if(clearTimeout(Ce.current),Re.current=!1,!m||s.disabled||s.readOnly)return;let h=o?.accept!=null?me(o.accept):s.accepts,K=o?.multiple??s.multiple;Ne.current={patterns:h,multiple:K},m.accept=h.join(","),m.multiple=K,de.current=!0,m.click(),setTimeout(()=>{document.hasFocus()&&(de.current=!1)},1e3)},[]),Je=e.useCallback(()=>{Re.current=!0,clearTimeout(Ce.current),Ce.current=setTimeout(()=>{Re.current=!1},800)},[]);e.useEffect(()=>()=>clearTimeout(Ce.current),[]),e.useEffect(()=>{let o=Le.current,s=()=>{de.current=!1};return window.addEventListener("focus",s),o?.addEventListener("cancel",s),()=>{window.removeEventListener("focus",s),o?.removeEventListener("cancel",s)}},[]);let wt=e.useCallback(o=>{let s=o.currentTarget,m=Array.from(s.files??[]),h=Ne.current;oe(m,h?.patterns??P.current.accepts,h?.multiple),de.current=!1,Ne.current=null,s.value=""},[oe]),kt=e.useCallback(o=>{pe?.(o);let s=P.current,m=Ue.current;if(!m||s.expandOn==="none")return;let h=o.relatedTarget;h&&m.contains(h)||de.current||Re.current||!Ve(s.value)&&$().length===0&&ae(!1)},[pe,ae,$]),St=e.useCallback(o=>{ye(o)},[ye]),{getRootProps:Et,isDragActive:Tt}=Ft({onDrop:St,onDragEnter:()=>ue(""),noClick:!0,noKeyboard:!0,noPaste:!0,disabled:!M||b||S}),Fe=M&&Tt;e.useImperativeHandle(ke,()=>({focusTextarea:()=>Te.current?.focus({preventScroll:!0}),openFilePicker:()=>xe()}),[xe]);let Lt=e.useCallback(o=>{if(b||o.pointerType==="mouse"&&o.button!==0)return;let s=o.target;s instanceof Element&&s.closest('button, [role="button"], a[href], input, textarea, select, [contenteditable], [tabindex]:not([tabindex="-1"])')||(o.preventDefault(),Te.current?.focus({preventScroll:!0}))},[b]),Nt=e.useMemo(()=>({open:ie,setOpen:ae,setValue:ge,size:W,expandOn:p,minLines:v,maxLines:x,sendMode:w,disabled:b,readOnly:S,paste:j,clearOnSubmit:V,multiple:L,textareaRef:Te,attachments:le,removeAttachment:Xe,submit:Ye,appendFiles:ye,appendFilesFromPaste:qe,openFilePicker:xe,beginFilePickerPress:Je}),[ie,ae,ge,W,p,v,x,w,b,S,j,V,L,le,Xe,Ye,ye,qe,xe,Je]);return e.createElement(it.Provider,{value:Nt},e.createElement(We.Provider,{value:k},e.createElement(e.Fragment,null,e.createElement("div",{...Se,ref:Pt,className:E("kui-ChatbarRoot",`kui-r-size-${W}`,a),style:{position:"relative",width:Q,maxWidth:f,...i},"data-state":ie?"open":"closed","data-disabled":b?"":void 0,"data-readonly":S?"":void 0,"data-drop-active":Fe?"":void 0,"data-accent-color":H,"data-radius":F,onBlurCapture:kt},e.createElement("input",{ref:Le,type:"file",tabIndex:-1,"aria-hidden":!0,style:{display:"none"},onChange:wt}),he?e.createElement("div",{className:"kui-ChatbarNotices"},e.createElement(nt.Provider,{value:W},he)):null,e.createElement("div",{...M?Et():{},style:{width:"100%",flex:"1 1 auto",minHeight:0},onPointerDown:Lt},e.createElement("div",{className:E("kui-ChatbarBox",`kui-variant-${z??"raised"}`),style:{position:"relative"},"data-accent-color":H,"data-radius":F},e.createElement("div",{className:"kui-ChatbarGrid"},c),Fe&&e.createElement("div",{className:"kui-ChatbarDropOverlay","aria-hidden":!0},e.createElement("div",{className:"kui-ChatbarDropContent"},e.createElement(Ae,{emphasis:"medium",size:W,weight:"medium"},"Drop files here to attach"))))),fe?e.createElement(Ae,{as:"div",size:W==="3"?"2":"1",emphasis:"medium",className:"kui-ChatbarContext"},fe):null,e.createElement(Be,{role:"status","aria-live":"polite"},Fe?"Drop files here to attach.":e.createElement("span",{key:Ke.id},Ke.text))))))});lt.displayName="Chatbar.Root";var ut=e.forwardRef((t,r)=>{let{className:a,style:i,asChild:c,onFocus:l,onChange:u,onPaste:d,onKeyDown:g,onCompositionStart:y,onCompositionEnd:R,submitOnEnter:p=!1,...v}=t,x=I(),w=e.useContext(We),{open:b,minLines:S,maxLines:D,expandOn:O,disabled:z,readOnly:H,setOpen:F,setValue:Q,textareaRef:f,paste:_,appendFilesFromPaste:B,size:se,submit:A,clearOnSubmit:L}=x,Z=st(r,f),G=e.useRef(0),j=e.useRef(0),q=e.useRef(!1),V=e.useRef({open:b,minLines:S,maxLines:D});je(()=>{V.current={open:b,minLines:S,maxLines:D}},[b,S,D]);let N=e.useCallback(()=>{let n=f.current;if(!n)return;let C=window.getComputedStyle(n);G.current=parseFloat(C.lineHeight)||20,j.current=(parseFloat(C.paddingTop)||0)+(parseFloat(C.paddingBottom)||0)},[f]),M=e.useCallback((n,C)=>{let{minLines:k,maxLines:ee}=V.current,X=G.current,te=j.current,ie=Math.ceil((C?k:1)*X)+te,Y=Math.ceil((C?ee:1)*X)+te,ce=Math.max(n.scrollHeight,ie);n.style.height=`${Math.min(ce,Y)}px`;let be=ce>Y;n.style.overflowY=be?"auto":"hidden",n.style.maxHeight=be?`${Y}px`:"none"},[]);je(()=>{N()},[N,se]),je(()=>{let n=f.current;n&&(G.current===0&&N(),ot(n,()=>{n.style.height="auto";let C=b;if(!b&&(O==="overflow"||O==="both")){let k=Math.ceil(G.current)+j.current;n.scrollHeight>k+1&&(C=!0,F(!0))}M(n,C)}))},[w,b,O,S,D,se,F,f,N,M]),e.useEffect(()=>{let n=f.current;if(!n||typeof ResizeObserver>"u")return;let C=-1,k=new ResizeObserver(ee=>{let X=ee[0]?.contentRect.width??0;if(X===C)return;let te=C===-1;C=X,!te&&(N(),ot(n,()=>{n.style.height="auto",M(n,V.current.open)}))});return k.observe(n),()=>k.disconnect()},[f,N,M]),e.useEffect(()=>{},[]);let ke=e.useCallback(n=>{l?.(n),!(z||H)&&(O==="focus"||O==="both")&&!b&&F(!0)},[z,H,O,b,F,l]),pe=e.useCallback(n=>{Q(n.currentTarget.value),u?.(n)},[Q,u]),he=e.useCallback(n=>{if(d?.(n),n.defaultPrevented||!_||z||H)return;let C=Array.from(n.clipboardData?.items??[]).filter(k=>k.kind==="file").map(k=>k.getAsFile()).filter(k=>!!k);C.length!==0&&B(C)>0&&n.preventDefault()},[_,z,H,d,B]),fe=e.useCallback(n=>{q.current=!0,y?.(n)},[y]),Se=e.useCallback(n=>{q.current=!1,R?.(n)},[R]),W=e.useCallback(n=>{g?.(n),!(n.defaultPrevented||!p)&&(n.key!=="Enter"||n.shiftKey||n.altKey||n.ctrlKey||n.metaKey||q.current||n.nativeEvent.isComposing||n.nativeEvent.keyCode===229||(n.preventDefault(),A(L)))},[p,g,A,L]);return e.createElement("div",{className:"kui-ChatbarField kui-ChatbarTextarea"},e.createElement(c?U:"textarea",{...v,ref:Z,className:E("kui-ChatbarInput",a),value:w,onChange:pe,onFocus:ke,onPaste:he,onKeyDown:W,onCompositionStart:fe,onCompositionEnd:Se,disabled:z,readOnly:H,rows:b?S:1,spellCheck:v.spellCheck??!0,autoCorrect:v.autoCorrect??"on",style:i}))});ut.displayName="Chatbar.Textarea";var dt=e.forwardRef((t,r)=>{let{children:a,asChild:i,className:c,...l}=t;return I().open?null:e.createElement(i?U:"div",{...l,ref:r,className:E("kui-ChatbarInlineStart",c)},a)});dt.displayName="Chatbar.InlineStart";var mt=e.forwardRef((t,r)=>{let{children:a,asChild:i,className:c,...l}=t;return I().open?null:e.createElement(i?U:"div",{...l,ref:r,className:E("kui-ChatbarInlineEnd",c)},a)});mt.displayName="Chatbar.InlineEnd";var pt=e.forwardRef((t,r)=>{let{asChild:a,forceMount:i,renderAttachment:c,className:l,children:u,...d}=t,g=I(),y=e.Children.toArray(u).length>0;return g.attachments.length===0&&!y&&!i?null:e.createElement("div",null,e.createElement(a?U:"div",{...d,ref:r,className:E("kui-ChatbarAttachmentsRow",l),role:"list","aria-label":d["aria-label"]??"Attachments"},e.createElement(at,{className:"kui-ChatbarScrollArea",scrollbars:"horizontal"},e.createElement(ze,{align:"center",gap:"3",minWidth:"fit-content"},g.attachments.map(p=>e.createElement($e,{key:p.id,attachment:p,asChild:!!c},c?.(p))),u))))});pt.displayName="Chatbar.AttachmentsRow";function ht(t,r){let a=t.closest('[role="listitem"]'),i=a?.parentElement?Array.from(a.parentElement.children):[],c=a?i.indexOf(a):-1,u=(i[c+1]??i[c-1])?.querySelector(".kui-ChatbarItemRemove");u?u.focus():r.current?.focus({preventScroll:!0})}var ft=({lead:t,leadKind:r,label:a,detail:i,removeLabel:c,onRemove:l})=>{let u=I();return e.createElement(e.Fragment,null,e.createElement("span",{className:"kui-ChatbarItemLead","data-kind":r,"aria-hidden":!0},t),e.createElement(Ae,{className:"kui-ChatbarItemLabel",size:u.size,truncate:!0},a,i?e.createElement(Be,null,", ",i):null),l&&e.createElement(we,{iconOnly:!0,className:"kui-ChatbarItemRemove","aria-label":c,size:"1",variant:"ghost",color:"gray",onClick:l},e.createElement(Qe,null)))},Vt={uploading:"uploading",error:"failed to upload"},$e=e.forwardRef((t,r)=>{let{attachment:a,asChild:i,className:c,children:l,...u}=t,d=I(),g=i?U:"div",y=!!a.url&&ct(a.name,a.type),R=`${Math.ceil(a.size/1024)} KB`,p=a.status?Vt[a.status]:void 0,v=d.disabled||d.readOnly,x=b=>{ht(b.currentTarget,d.textareaRef),d.removeAttachment(a.id)},w=a.status==="uploading"?e.createElement(De,null):y?e.createElement("img",{className:"kui-ChatbarAttachmentImage",src:a.url,alt:""}):e.createElement(et,null);return e.createElement(g,{...u,ref:r,className:E(l?"kui-ChatbarAttachment":"kui-ChatbarAttachment kui-ChatbarItem",c),role:"listitem","data-kind":y?"image":"file","data-status":a.status,title:a.name},l??e.createElement(ft,{lead:w,leadKind:y&&a.status!=="uploading"?"image":"icon",label:a.name,detail:p?`${R}, ${p}`:R,removeLabel:`Remove ${a.name}`,onRemove:v?void 0:x}))});$e.displayName="Chatbar.Attachment";var bt=e.forwardRef((t,r)=>{let{children:a,icon:i,image:c,color:l,onRemove:u,removeLabel:d,className:g,...y}=t,R=I(),p=R.disabled||R.readOnly,v=u?x=>{ht(x.currentTarget,R.textareaRef),u()}:void 0;return e.createElement("div",{...y,ref:r,className:E("kui-ChatbarItem",g),role:"listitem","data-accent-color":c?void 0:l??"gray",title:a},e.createElement(ft,{lead:c?e.createElement("img",{className:"kui-ChatbarAttachmentImage",src:c,alt:""}):i,leadKind:c?"image":"icon",label:a,removeLabel:d??`Remove ${a}`,onRemove:p?void 0:v}))});bt.displayName="Chatbar.Item";var Rt=e.forwardRef((t,r)=>{let{asChild:a,accept:i,multiple:c,disabled:l,onPointerDown:u,onClick:d,children:g,color:y,...R}=t,p=I(),v=l||p.disabled||p.readOnly,x={...R,ref:r,className:E("kui-ChatbarAttachTrigger",R.className),type:R.type??"button","aria-label":R["aria-label"]??"Add attachments",disabled:v,onPointerDown:w=>{u?.(w),!v&&!w.defaultPrevented&&p.beginFilePickerPress()},onClick:w=>{d?.(w),!(v||w.defaultPrevented)&&p.openFilePicker({accept:i,multiple:c})}};return a?e.createElement(U,{...x},g):e.createElement(we,{iconOnly:!0,emphasis:"quiet",color:"gray",size:p.size,...x},g??e.createElement(Ze,{"aria-hidden":!0}))});Rt.displayName="Chatbar.AttachTrigger";var Ct=e.forwardRef((t,r)=>{let{asChild:a,children:i,className:c,...l}=t;return I().open?e.createElement("div",null,e.createElement(a?U:"div",{...l,ref:r,className:E("kui-ChatbarRow",c)},e.createElement(ze,{align:"center",justify:"between",width:"100%"},i))):null});Ct.displayName="Chatbar.Row";var gt=e.forwardRef((t,r)=>{let{className:a,...i}=t;return e.createElement("div",{...i,ref:r,className:E("kui-ChatbarRowStart",a)})});gt.displayName="Chatbar.RowStart";var vt=e.forwardRef((t,r)=>{let{className:a,...i}=t;return e.createElement("div",{...i,ref:r,className:E("kui-ChatbarRowEnd",a)})});vt.displayName="Chatbar.RowEnd";var yt=e.forwardRef((t,r)=>{let{asChild:a,clearOnSend:i,disabled:c,children:l,style:u,className:d,size:g,variant:y,emphasis:R,tabIndex:p,onClick:v,status:x="ready",onStop:w,onRetry:b,stopLabel:S="Stop",retryLabel:D="Retry",stopIcon:O,retryIcon:z,"aria-label":H,"aria-labelledby":F,...Q}=t,f=I(),_=e.useContext(We),B=Ve(_)||f.attachments.length>0,A=B?"send":x==="submitted"||x==="streaming"?"stop":x==="error"?"retry":"send";if(f.sendMode==="never"&&A==="send")return null;let L=A!=="send"||f.sendMode==="always"||B,Z=A==="send"?c||f.disabled||f.readOnly||!B:c||f.disabled,j=A==="stop"?{"aria-label":S}:A==="retry"?{"aria-label":D}:F?{"aria-labelledby":F}:{"aria-label":H??"Send"},q=N=>{if(v?.(N),N.defaultPrevented||Z)return;if(A==="stop"){w?.();return}if(A==="retry"){b?.();return}let M=i??f.clearOnSubmit;f.submit(M)&&M&&f.textareaRef.current?.focus({preventScroll:!0})},V=A==="stop"?O??(x==="submitted"?e.createElement(De,null):e.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":!0},e.createElement("rect",{x:"7",y:"7",width:"10",height:"10",rx:"2"}))):A==="retry"?z??e.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":!0},e.createElement("path",{d:"M3 12a9 9 0 1 0 3-6.7L3 8"}),e.createElement("path",{d:"M3 3v5h5"})):l??e.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":!0},e.createElement("path",{d:"M5 12h14"}),e.createElement("path",{d:"m12 5 7 7-7 7"}));return e.createElement(we,{iconOnly:!0,...Q,ref:r,size:g??f.size,...R?{emphasis:R}:{variant:y??(f.open||A!=="send"?"solid":"ghost")},disabled:Z,className:E("kui-ChatbarSend",d),style:{opacity:L?1:0,pointerEvents:L?void 0:"none",...u},"aria-hidden":L?void 0:!0,tabIndex:L?p:-1,asChild:a,onClick:q,"data-status":x,"data-mode":A,...j},V)});yt.displayName="Chatbar.Send";export{lt as a,ut as b,dt as c,mt as d,pt as e,$e as f,bt as g,Rt as h,Ct as i,gt as j,vt as k,yt as l,Wt as m};
|
|
3
|
+
//# sourceMappingURL=chunk-LG5DPQ46.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{a as d}from"./chunk-
|
|
3
|
-
//# sourceMappingURL=chunk-
|
|
2
|
+
import{a as d}from"./chunk-DFQIIYLD.js";import{b as p}from"./chunk-QEDKL23P.js";import{j as C}from"./chunk-GHWEXMF6.js";import{a as s}from"./chunk-ANQLWGFN.js";import*as e from"react";import c from"classnames";var v=e.createContext(null);function u(){return e.useContext(v)}var S=e.createContext("2"),B=e.createContext(!1),N=e.createContext(!1);function W({children:t,presentation:n}){let a=e.useContext(S),o=e.useMemo(()=>({size:a,menuVariant:"soft",presentation:n}),[a,n]);return e.createElement(v.Provider,{value:o},t)}function P(){let t=u(),n=e.useContext(S),a=t?.size??n,o=t?.menuVariant??"soft";return["kui-ShellPaneChrome",`kui-r-size-${a}`,`kui-menu-variant-${o}`]}var H={1:"2",2:"3",3:"4",4:"4"};function f(){let t=u(),n=e.useContext(S);return H[t?.size??n]}function g(){let t=e.useContext(s),n=e.useContext(C)!==null,a=f();return t!==void 0?t:n?a:null}var y=e.forwardRef(({className:t,float:n,children:a,...o},i)=>{let l=P(),r=f();return e.createElement("div",{...o,ref:i,"data-float":n||void 0,className:c("kui-ShellPaneHeader","kui-SidebarHeader","kui-SidebarHeader--container",...l,t)},e.createElement(s.Provider,{value:r},a))});y.displayName="Shell.PaneHeader";var F=e.forwardRef(({className:t,float:n,children:a,...o},i)=>{let l=P(),r=f();return e.createElement("div",{...o,ref:i,"data-float":n||void 0,className:c("kui-ShellPaneFooter","kui-SidebarFooter","kui-SidebarFooter--container",...l,t)},e.createElement(s.Provider,{value:r},a))});F.displayName="Shell.PaneFooter";var M=e.forwardRef(({className:t,style:n,dir:a,children:o,fade:i=!1,pane:l=!1,...r},m)=>{let x=P(),h=e.useContext(B),R=u(),z=h&&R===null&&!l,b=e.useContext(N),V=p();if(z){let k=r.tabIndex??(b&&V?-1:void 0);return e.createElement(d,{...r,tabIndex:k,ref:m,type:"hover",fade:i,className:"kui-ShellScroll"},e.createElement("div",{style:n,dir:a,className:c("kui-ShellScrollContent",t)},o))}return e.createElement(d,{...r,ref:m,type:"hover",fade:i,className:"kui-ShellScroll"},e.createElement("div",{style:n,dir:a,className:c("kui-BaseMenuContent","kui-SidebarContent",...x,t)},e.createElement(s.Provider,{value:null},e.createElement("div",{className:"kui-BaseMenuViewport"},o))))});M.displayName="Shell.Scroll";export{v as a,u as b,S as c,B as d,N as e,W as f,H as g,g as h,y as i,F as j,M as k};
|
|
3
|
+
//# sourceMappingURL=chunk-NFSW36RG.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{a as P}from"./chunk-
|
|
3
|
-
//# sourceMappingURL=chunk-
|
|
2
|
+
import{a as P}from"./chunk-FICBVI4M.js";import{a as l}from"./chunk-HGF4CKRY.js";import{a as e}from"./chunk-L54FWKJE.js";import{c as s}from"./chunk-OKQAVYW4.js";import*as o from"react";import W from"classnames";import{Tooltip as t}from"radix-ui";var a={content:{type:"ReactNode",required:!0},width:e.width,minWidth:e.minWidth,maxWidth:{...e.maxWidth,default:"360px"}};var m=200,f=o.createContext(!1);function N({delayDuration:i=m,children:r,...p}){return o.createElement(f.Provider,{value:!0},o.createElement(t.Provider,{delayDuration:i,...p},r))}N.displayName="TooltipProvider";var g=o.forwardRef((i,r)=>{let{children:p,className:d,open:T,defaultOpen:c,onOpenChange:v,delayDuration:y,disableHoverableContent:h,content:u,container:R,forceMount:C,...D}=s(i,a),x={open:T,defaultOpen:c,onOpenChange:v,delayDuration:y,disableHoverableContent:h},w=o.useContext(f),n=o.createElement(t.Root,{...x},o.createElement(t.Trigger,{asChild:!0},p),o.createElement(t.Portal,{container:R,forceMount:C},o.createElement(l,{asChild:!0},o.createElement(t.Content,{sideOffset:4,collisionPadding:10,...D,asChild:!1,ref:r,className:W("kui-TooltipContent",d)},o.createElement(P,{as:"p",className:"kui-TooltipText",size:"1"},u),o.createElement(t.Arrow,{className:"kui-TooltipArrow"})))));return w?n:o.createElement(t.Provider,{delayDuration:m},n)});g.displayName="Tooltip";export{N as a,g as b};
|
|
3
|
+
//# sourceMappingURL=chunk-NJ7RQYLX.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{a as p,b as m,c as a,d as f}from"./chunk-UJ7JERJ5.js";import{
|
|
3
|
-
//# sourceMappingURL=chunk-
|
|
2
|
+
import{a as p,b as m,c as a,d as f}from"./chunk-UJ7JERJ5.js";import{e as t}from"./chunk-HBWBPBSA.js";import{c as s}from"./chunk-OKQAVYW4.js";import{a as r}from"./chunk-CLJ6SEGP.js";import*as o from"react";import v from"classnames";import{Slot as h}from"radix-ui";var y=["1","2","3","4","5","6","7","8","9"],D=["solid","soft","outline","ghost"],i={...r,size:{type:"enum",className:"kui-r-size",values:y,responsive:!0},variant:{type:"enum",className:"kui-variant",values:D,default:"soft"},...f,...t,...p,...a,...m};var R=o.forwardRef((e,n)=>{let{asChild:c,className:d,color:P,...l}=s(e,i),u=e.variant==="ghost"&&!e.color?void 0:P,C=c?h.Root:"code";return o.createElement(C,{"data-accent-color":u,...l,ref:n,className:v("kui-reset","kui-Code",d)})});R.displayName="Code";export{R as a};
|
|
3
|
+
//# sourceMappingURL=chunk-NYIYRILR.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{a as d,b as f,c as g}from"./chunk-BQC2P3SN.js";import{a as P,b as H,c as h,d as c}from"./chunk-UJ7JERJ5.js";import{c as
|
|
3
|
-
//# sourceMappingURL=chunk-
|
|
2
|
+
import{a as d,b as f,c as g}from"./chunk-BQC2P3SN.js";import{a as P,b as H,c as h,d as c}from"./chunk-UJ7JERJ5.js";import{c as i}from"./chunk-HBWBPBSA.js";import{c as m}from"./chunk-OKQAVYW4.js";import{a as n}from"./chunk-CLJ6SEGP.js";import*as e from"react";import{Slot as v}from"radix-ui";var R=["h1","h2","h3","h4","h5","h6"],C=["1","2","3","4","5","6","7","8","9"],l={as:{type:"enum",values:R,default:"h2"},...n,size:{type:"enum",className:"kui-r-size",values:C,default:"6",responsive:!0},...g,...c,...f,...d,...h,...H,...i,...P};var W=e.memo(e.forwardRef((u,o)=>{let{children:r,className:p,asChild:y,as:D="h2",color:t,...s}=m(u,l),a=p?`kui-Heading ${p}`:"kui-Heading";return y?e.createElement(v.Root,{"data-accent-color":t,...s,ref:o,className:a},r):e.createElement(D,{"data-accent-color":t,...s,ref:o,className:a},r)}));W.displayName="Heading";export{W as a};
|
|
3
|
+
//# sourceMappingURL=chunk-OBSZOD5M.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{c as
|
|
3
|
-
//# sourceMappingURL=chunk-
|
|
2
|
+
import{c as l}from"./chunk-5KMEUZWN.js";import{c as A}from"./chunk-GKDGNPBD.js";import{c as R}from"./chunk-5ON3XLRD.js";import{c as P}from"./chunk-HBWBPBSA.js";import{b as f}from"./chunk-XU74PNM2.js";import{c}from"./chunk-OKQAVYW4.js";import{a as n}from"./chunk-CLJ6SEGP.js";import{a as x}from"./chunk-VQPANPMI.js";var b={};x(b,{Content:()=>I,Header:()=>w,Item:()=>h,Root:()=>v,Trigger:()=>D});import*as o from"react";import a from"classnames";import{Accordion as d}from"radix-ui";var H=["1","2","3","4"],O=["raised","soft","surface","outline","ghost"],m={...n,size:{type:"enum",className:"kui-r-size",values:H,default:"2",responsive:!0},variant:{type:"enum",className:"kui-variant",values:O,default:"raised"},...P,...f},g={...n},u={...n},C={...n},y={...n};var v=o.forwardRef((e,r)=>{let t=R(e,m.size),{className:i,radius:s,color:N,...T}=c(t,m),p=T;return p.type==="single"&&p.collapsible===void 0&&(p.collapsible=!0),o.createElement(d.Root,{...p,ref:r,className:a("kui-AccordionRoot",i),"data-accent-color":N,"data-radius":s})});v.displayName="Accordion.Root";var h=o.forwardRef((e,r)=>{let{className:t,...i}=c(e,g);return o.createElement(d.Item,{...i,ref:r,className:a("kui-AccordionItem",t)})});h.displayName="Accordion.Item";var w=o.forwardRef((e,r)=>{let{className:t,...i}=c(e,u);return o.createElement(d.Header,{...i,ref:r,className:a("kui-AccordionHeader",t)})});w.displayName="Accordion.Header";var D=o.forwardRef(({children:e,...r},t)=>{let{className:i,...s}=c(r,C);return o.createElement(d.Trigger,{...s,ref:t,className:a("kui-AccordionTrigger",i)},o.createElement(l,null,e),o.createElement(A,{className:"kui-AccordionChevron","aria-hidden":!0}))});D.displayName="Accordion.Trigger";var I=o.forwardRef((e,r)=>{let{className:t,children:i,...s}=c(e,y);return o.createElement(d.Content,{...s,ref:r,className:a("kui-AccordionContent",t)},o.createElement("div",{className:"kui-AccordionContentInner"},i))});I.displayName="Accordion.Content";export{v as a,h as b,w as c,D as d,I as e,b as f};
|
|
3
|
+
//# sourceMappingURL=chunk-OMPLFDS6.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{c as
|
|
3
|
-
//# sourceMappingURL=chunk-
|
|
2
|
+
import{c as p}from"./chunk-5ON3XLRD.js";import{c as r}from"./chunk-HBWBPBSA.js";import{c as t}from"./chunk-OKQAVYW4.js";import*as e from"react";import R from"classnames";import{composeEventHandlers as P}from"radix-ui/internal";var c=["1","2","3","4"],o={size:{type:"enum",className:"kui-r-size",values:c,default:"2",responsive:!0},...r};var y=e.forwardRef((s,a)=>{let i=p(s,o.size),{className:n,color:m,onChange:f,onValueChange:u,...d}=t(i,o);return e.createElement("input",{type:"radio","data-accent-color":m,...d,onChange:P(f,l=>u?.(l.currentTarget.value)),ref:a,className:R("kui-reset","kui-BaseRadioRoot","kui-RadioRoot",n)})});y.displayName="Radio";export{y as a};
|
|
3
|
+
//# sourceMappingURL=chunk-OPYTQ34H.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{c
|
|
3
|
-
//# sourceMappingURL=chunk-
|
|
2
|
+
import{c}from"./chunk-5ON3XLRD.js";import{c as b}from"./chunk-HBWBPBSA.js";import{c as P}from"./chunk-OKQAVYW4.js";import{a as f}from"./chunk-CLJ6SEGP.js";import{a as R}from"./chunk-VQPANPMI.js";var v={};R(v,{Content:()=>g,List:()=>u,Root:()=>l,Trigger:()=>y});import*as e from"react";import p from"classnames";import{Tabs as i}from"radix-ui";var d=["1","2","3","4"],C=["nowrap","wrap","wrap-reverse"],L=["start","center","end"],a={size:{type:"enum",className:"kui-r-size",values:d,default:"2",responsive:!0},wrap:{type:"enum",className:"kui-r-fw",values:C,responsive:!0},justify:{type:"enum",className:"kui-r-jc",values:L,responsive:!0},...b};var k={...f},h={...f};var l=e.forwardRef((t,o)=>{let{className:r,...s}=t;return e.createElement(i.Root,{...s,ref:o,className:p("kui-TabsRoot",r)})});l.displayName="Tabs.Root";var u=e.forwardRef((t,o)=>{let r=c(t,a.size),{className:s,color:n,...m}=P(r,a);return e.createElement(i.List,{"data-accent-color":n,...m,asChild:!1,ref:o,className:p("kui-BaseTabList","kui-TabsList",s)})});u.displayName="Tabs.List";var y=e.forwardRef((t,o)=>{let{className:r,children:s,...n}=t,m=e.Children.toArray(s).every(T=>typeof T=="string"||typeof T=="number");return e.createElement(i.Trigger,{...n,asChild:!1,ref:o,className:p("kui-reset","kui-BaseTabListTrigger","kui-TabsTrigger",r)},e.createElement("span",{className:"kui-BaseTabListTriggerInner kui-TabsTriggerInner"},s),m?e.createElement("span",{className:"kui-BaseTabListTriggerInnerHidden kui-TabsTriggerInnerHidden","aria-hidden":!0},s):null)});y.displayName="Tabs.Trigger";var g=e.forwardRef((t,o)=>{let{className:r,...s}=t;return e.createElement(i.Content,{...s,ref:o,className:p("kui-TabsContent",r)})});g.displayName="Tabs.Content";export{l as a,u as b,y as c,g as d,v as e};
|
|
3
|
+
//# sourceMappingURL=chunk-QBONJMSE.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import{a as to,b as ro,c as no,e as W,f as ao,i as so,l as io}from"./chunk-KBSH6CBD.js";import{a as B}from"./chunk-JQMWNI62.js";import{a as eo}from"./chunk-FICBVI4M.js";import{a as q}from"./chunk-7N2Q5WOM.js";import{b as L}from"./chunk-5ON3XLRD.js";import{d as J,f as Q,g as X}from"./chunk-VWRPVM5K.js";import{h as oo}from"./chunk-NFSW36RG.js";import{c as U}from"./chunk-OKQAVYW4.js";import*as o from"react";import{useComposedRefs as vo,useLayoutEffect as D}from"radix-ui/internal";import g from"classnames";import{Toolbar as N}from"radix-ui";var Po=["1","2","3","4"],Ro=["horizontal","vertical"],x={size:{type:"enum",className:"kui-r-size",values:Po,default:"2"},orientation:{type:"enum",values:Ro,default:"horizontal"}};var M=o.createContext(null),F=o.createContext(null),E=o.createContext(!1);function Ho(){return o.useContext(E)}var H=o.forwardRef((e,t)=>{let r=oo(),a=L(e.size??r??void 0,x.size),s=e.orientation??x.orientation.default,{className:i,orientation:n,backdrop:l=!1,children:c,...d}=U({...e,size:a},x,q),u=o.useMemo(()=>({size:a,orientation:s,backdrop:l}),[a,s,l]);return o.createElement(N.Root,{...d,ref:t,orientation:s,"data-backdrop":l||void 0,className:g("kui-Toolbar",i)},o.createElement(M.Provider,{value:u},c))});H.displayName="Toolbar";var co=o.forwardRef(({className:e,disabled:t=!1,children:r,...a},s)=>{let i=o.useContext(M),n=o.useContext(E),l=o.useMemo(()=>({disabled:t}),[t]);return n?o.createElement(ao,{...a,ref:s,className:e},o.createElement(F.Provider,{value:l},r)):o.createElement("div",{role:"group","data-orientation":i?.orientation??"horizontal","data-disabled":t||void 0,...a,ref:s,className:g("kui-ToolbarGroup",e)},o.createElement(F.Provider,{value:l},r))});co.displayName="Toolbar.Group";var yo=new Set(["id","className","style","title"]);function lo(e){return e===!0||e==="true"}function wo(e){return o.isValidElement(e)&&e.type==="button"}var A=o.forwardRef((e,t)=>{let r=o.useContext(M),a=o.useContext(F),s=o.useContext(E),{iconOnly:i,size:n,variant:l,emphasis:c,color:d,disabled:u,asChild:f,onKeyDown:b,...y}=e,h=u||a?.disabled||void 0;if(s){let P={};for(let R of Object.keys(y))(/^on[A-Z]/.test(R)||R.startsWith("aria-")||R.startsWith("data-")||yo.has(R))&&(P[R]=y[R]);return b&&(P.onKeyDown=b),o.createElement(uo,{...P,ref:t,asChild:f,iconOnly:i,disabled:h,color:d,pressed:e["aria-pressed"]===void 0?void 0:lo(e["aria-pressed"])},y.children)}let O=r?.orientation==="vertical"&&b?P=>{P.key==="ArrowDown"||P.key==="ArrowUp"||b(P)}:b,I=lo(e["aria-pressed"]),p="data-state"in e||e["aria-pressed"]===void 0?{}:{"data-state":I?"on":"off"},m={size:n??r?.size,...c!==void 0?{emphasis:c}:{variant:l??(a?"ghost":r?.backdrop?"raised":"soft")},color:d??(l||c?void 0:"gray"),...p},T={...y,...i?{iconOnly:!0}:{},...f?{asChild:!0}:{},...O?{onKeyDown:O}:{},...m};return r?f&&!wo(y.children)?o.createElement(N.Link,{asChild:!0,ref:t},o.createElement(B,{...T,disabled:h})):o.createElement(N.Button,{asChild:!0,ref:t,disabled:h},o.createElement(B,{...T})):o.createElement(B,{...T,ref:t,disabled:h})});A.displayName="Toolbar.Button";var uo=o.forwardRef(({asChild:e,iconOnly:t,disabled:r,color:a,pressed:s,children:i,"aria-label":n,...l},c)=>{let d=t?n:void 0,u={...l,...t?{}:n?{"aria-label":n}:{},disabled:r,...a?{color:a}:{}};if(e&&o.isValidElement(i)){let f=d?o.cloneElement(i,void 0,i.props.children,o.createElement("span",null,d)):i;return o.createElement(W,{...u,ref:c,asChild:!0},f)}return s!==void 0?o.createElement(so,{...u,ref:c,checked:s},i,d):o.createElement(W,{...u,ref:c},i,d)});uo.displayName="Toolbar.OverflowItem";function ho(){return o.createElement("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"currentcolor","aria-hidden":!0,xmlns:"http://www.w3.org/2000/svg"},o.createElement("circle",{cx:"3.25",cy:"8",r:"1.25"}),o.createElement("circle",{cx:"8",cy:"8",r:"1.25"}),o.createElement("circle",{cx:"12.75",cy:"8",r:"1.25"}))}var po=o.forwardRef(({label:e="More",className:t,children:r,...a},s)=>{let i=o.Children.toArray(r),n=i.length,l=o.useRef(null),c=o.useRef([]),d=o.useRef(0),[u,f]=o.useState(n),[b,y]=o.useState(0),[h,O]=o.useState(n);h!==n&&(O(n),f(n)),D(()=>{c.current=[]},[n]),D(()=>{let p=l.current;if(!p)return;let m=Array.from(p.children),T=Math.min(u,n);for(let v=0;v<T;v++){let w=m[v];w&&(c.current[v]=w.offsetWidth)}let P=m[T];P&&(d.current=P.offsetWidth);let R=Number.parseFloat(getComputedStyle(p).columnGap)||0,K=p.clientWidth,V=0,_=0;for(let v=0;v<n;v++){let w=c.current[v];if(w===void 0)return;w!==0&&(V+=w+(_>0?R:0),_+=1)}let k=n;if(V>K){let v=K-(d.current||p.clientHeight)-R,w=0,Y=0;k=0;for(let G=0;G<n;G++){let Z=c.current[G];if(Z>0){let $=Z+(Y>0?R:0);if(w+$>v)break;w+=$,Y+=1}k+=1}}k!==u&&f(k)},[u,n,b]),o.useEffect(()=>{let p=l.current;if(!p||typeof ResizeObserver>"u")return;let m=new ResizeObserver(()=>y(T=>T+1));m.observe(p);for(let T of Array.from(p.children))m.observe(T);return()=>m.disconnect()},[u,n]);let I=o.useCallback(p=>{l.current=p,typeof s=="function"?s(p):s&&(s.current=p)},[s]);return o.createElement("div",{...a,ref:I,className:g("kui-ToolbarOverflow",t)},i.slice(0,u).map((p,m)=>o.createElement("div",{key:m,className:"kui-ToolbarOverflowSeat"},p)),u<n?o.createElement(to,null,o.createElement(ro,null,o.createElement(A,{iconOnly:!0,"aria-label":e},o.createElement(ho,null))),o.createElement(no,{align:"end"},o.createElement(E.Provider,{value:!0},i.slice(u)))):null)});po.displayName="Toolbar.Overflow";var j=[],S=new Map,z=new Set,C=new Map;function So(e){return z.add(e),()=>{z.delete(e)}}function go(e,t,r){let a=S.get(e)??j,i=a.findIndex(n=>n.id===t)===-1?[...a,{id:t,node:r}]:a.map(n=>n.id===t?{id:t,node:r}:n);S.set(e,i),z.forEach(n=>n())}function xo(e,t){let r=S.get(e);if(!r)return;let a=r.filter(s=>s.id!==t);a.length===0?S.delete(e):S.set(e,a),z.forEach(s=>s())}function fo({name:e="default"}){D(()=>{let r=(C.get(e)??0)+1;return C.set(e,r),r>1,()=>{let a=(C.get(e)??1)-1;a>0?C.set(e,a):C.delete(e)}},[e]);let t=o.useSyncExternalStore(So,()=>S.get(e)??j,()=>j);return o.createElement(o.Fragment,null,t.map(r=>o.createElement(o.Fragment,{key:r.id},r.node)))}fo.displayName="Toolbar.Slot";function bo({name:e="default",children:t}){let r=o.useId();return D(()=>{go(e,r,t)},[e,r,t]),D(()=>()=>xo(e,r),[e,r]),null}bo.displayName="Toolbar.Fill";var mo=o.forwardRef(({className:e,...t},r)=>{let a=o.useContext(M);return o.useContext(E)?o.createElement(io,{...t,ref:r,className:e}):a?o.createElement(N.Separator,{...t,ref:r,className:g("kui-ToolbarSeparator",e)}):o.createElement("div",{role:"separator","aria-orientation":"vertical","data-orientation":"vertical",...t,ref:r,className:g("kui-ToolbarSeparator",e)})});mo.displayName="Toolbar.Separator";var Co={1:"2",2:"3",3:"4",4:"5"},To=o.forwardRef(({className:e,children:t,style:r,id:a},s)=>{let i=o.useContext(M),n=L(void 0,x.size),l=i?.size??n,c=J(),d=Q(c),u=X(c),f=t==null||t===!1,b=f?d:t,y=vo(s,f?u:void 0);return b==null?null:o.createElement(eo,{ref:y,as:"span",size:Co[l],weight:"medium",truncate:!0,id:a,style:r,className:g("kui-ToolbarTitle",e),"data-mirror":f||void 0},b)});To.displayName="Toolbar.Title";var jo=Object.assign(H,{Root:H,Group:co,Button:A,Separator:mo,Title:To,Overflow:po,Slot:fo,Fill:bo});export{Ho as a,H as b,co as c,A as d,po as e,fo as f,bo as g,mo as h,To as i,jo as j};
|
|
3
|
+
//# sourceMappingURL=chunk-QDAM2I6O.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/components/toolbar.tsx", "../../src/components/toolbar.props.tsx"],
|
|
4
|
+
"sourcesContent": ["'use client';\n\nimport * as React from 'react';\nimport { useComposedRefs, useLayoutEffect } from 'radix-ui/internal';\nimport classNames from 'classnames';\nimport { Toolbar as ToolbarPrimitive } from 'radix-ui';\n\nimport { toolbarRootPropDefs } from './toolbar.props.js';\nimport { Button } from './button.js';\nimport * as DropdownMenu from './dropdown-menu.js';\nimport { Text } from './text.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { useThemeSize } from '../hooks/theme-size.js';\nimport { layoutPropDefs } from '../props/layout.props.js';\nimport { usePaneBandSize } from './_internal/pane-chrome.js';\nimport { usePageMirror, usePageScope, usePageTitle } from './_internal/page-scope.js';\n\nimport type { ButtonProps } from './button.js';\nimport type { LayoutProps } from '../props/layout.props.js';\nimport type { TextProps } from './text.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\nimport type { ButtonRankProps } from './button.js';\n\n/*\n * Toolbar takes Kookie UI v2's contract (v2: components/toolbar), built on Radix instead of\n * Base UI. A toolbar is a row of controls with ONE tab stop: `role=\"toolbar\"`, and the arrow\n * keys move focus between its controls. That keyboard is the reason it is a component.\n *\n * Its `size` reaches every control inside it that does not state its own. The row itself paints\n * nothing; a `ToolbarGroup` draws a quiet well around controls that belong together, and a\n * `ToolbarSeparator` draws a gray hairline between clusters. Use a `Flex` to cluster controls\n * without a well: the row spaces the clusters with `space-between`.\n */\n\ntype ToolbarSize = NonNullable<GetPropDefTypes<typeof toolbarRootPropDefs>['size']>;\ntype ToolbarOrientation = NonNullable<GetPropDefTypes<typeof toolbarRootPropDefs>['orientation']>;\n\ninterface ToolbarContextValue {\n size: ToolbarSize;\n orientation: ToolbarOrientation;\n backdrop: boolean;\n}\n\nconst ToolbarContext = React.createContext<ToolbarContextValue | null>(null);\n\n/** Set by a `ToolbarGroup`: its children rest quiet, and `disabled` turns them all off. */\nconst ToolbarGroupContext = React.createContext<{ disabled: boolean } | null>(null);\n\n/**\n * True while a subtree is drawn into a `ToolbarOverflow`'s menu instead of into the row (v2\n * `InOverflow`). The parts answer it themselves: a `ToolbarButton` renders a menu item, a\n * `ToolbarGroup` a menu group, a `ToolbarSeparator` a menu separator.\n */\nconst InOverflowContext = React.createContext(false);\n\n/**\n * True while this subtree is drawn into a `ToolbarOverflow`'s \"More\" menu instead of the row.\n *\n * The toolbar's own parts handle this already. Use it in your own component inside a\n * `ToolbarOverflow` to render a different form in the menu.\n */\nfunction useToolbarOverflow(): boolean {\n return React.useContext(InOverflowContext);\n}\n\n// ============================================================================\n// Toolbar (root)\n// ============================================================================\n\ntype ToolbarOwnProps = GetPropDefTypes<typeof toolbarRootPropDefs>;\n\ninterface ToolbarProps\n extends ComponentPropsWithout<typeof ToolbarPrimitive.Root, RemovedProps | 'orientation'>,\n ToolbarOwnProps,\n LayoutProps {\n /**\n * Gives every control a surface of its own, for a row that content passes behind, such as\n * `Shell.PaneHeader float`. Buttons rest `raised` instead of `soft`, and a group's well is\n * solid and raised.\n */\n backdrop?: boolean;\n}\n\n/**\n * A row of controls with one keyboard tab stop. The arrow keys move focus between the controls.\n *\n * Give it an `aria-label` (or `aria-labelledby`) that says what the controls act on.\n *\n * @example\n * ```tsx\n * <Toolbar aria-label=\"Formatting\">\n * <ToolbarGroup>\n * <ToolbarButton iconOnly aria-label=\"Bold\" aria-pressed={bold} onClick={toggleBold}>\n * <HugeiconsIcon icon={TextBoldIcon} strokeWidth={1.75} />\n * </ToolbarButton>\n * </ToolbarGroup>\n * <ToolbarSeparator />\n * <ToolbarButton>Share</ToolbarButton>\n * </Toolbar>\n * ```\n */\nconst ToolbarRoot = React.forwardRef<HTMLDivElement, ToolbarProps>((props, forwardedRef) => {\n // Inside a Shell (a pane's header or footer, or the content area), a toolbar with no size\n // rests one step above the Shell's. A pane's scrolling list has no band.\n const band = usePaneBandSize();\n // Elsewhere it takes the nearest Theme's size.\n const size: ToolbarSize = useThemeSize(props.size ?? band ?? undefined, toolbarRootPropDefs.size);\n const orientation: ToolbarOrientation = props.orientation ?? toolbarRootPropDefs.orientation.default;\n const { className, orientation: _orientation, backdrop = false, children, ...rootProps } = extractProps(\n { ...props, size },\n toolbarRootPropDefs,\n layoutPropDefs,\n );\n\n const context = React.useMemo(() => ({ size, orientation, backdrop }), [size, orientation, backdrop]);\n\n return (\n <ToolbarPrimitive.Root\n {...rootProps}\n ref={forwardedRef}\n orientation={orientation}\n data-backdrop={backdrop || undefined}\n className={classNames('kui-Toolbar', className)}\n >\n <ToolbarContext.Provider value={context}>{children}</ToolbarContext.Provider>\n </ToolbarPrimitive.Root>\n );\n});\nToolbarRoot.displayName = 'Toolbar';\n\n// ============================================================================\n// ToolbarGroup\n// ============================================================================\n\ninterface ToolbarGroupProps extends ComponentPropsWithout<'div', RemovedProps> {\n /** Turns every control in the group off at once. */\n disabled?: boolean;\n}\n\n/**\n * Controls that belong together, drawn as one quiet well that stands level with a button\n * beside it. Buttons inside it rest as `ghost` unless they state a `variant`.\n * To cluster controls without a well, use a `Flex`.\n *\n * In a `ToolbarOverflow`'s menu it is a menu group. Outside a `Toolbar` (rendered through a\n * portal, for example) it still draws its well, as a horizontal group.\n */\nconst ToolbarGroup = React.forwardRef<HTMLDivElement, ToolbarGroupProps>(\n ({ className, disabled = false, children, ...props }, forwardedRef) => {\n const toolbar = React.useContext(ToolbarContext);\n const overflow = React.useContext(InOverflowContext);\n const group = React.useMemo(() => ({ disabled }), [disabled]);\n\n if (overflow) {\n return (\n <DropdownMenu.Group {...props} ref={forwardedRef} className={className}>\n <ToolbarGroupContext.Provider value={group}>{children}</ToolbarGroupContext.Provider>\n </DropdownMenu.Group>\n );\n }\n\n return (\n <div\n role=\"group\"\n data-orientation={toolbar?.orientation ?? 'horizontal'}\n data-disabled={disabled || undefined}\n {...props}\n ref={forwardedRef}\n className={classNames('kui-ToolbarGroup', className)}\n >\n <ToolbarGroupContext.Provider value={group}>{children}</ToolbarGroupContext.Provider>\n </div>\n );\n },\n);\nToolbarGroup.displayName = 'Toolbar.Group';\n\n// ============================================================================\n// ToolbarButton\n// ============================================================================\n\ntype ToolbarButtonBaseProps = Omit<ButtonProps, 'as' | 'variant' | 'emphasis'>;\n\n/** A labelled button: takes every `Button` prop. */\ntype ToolbarTextButtonProps = ToolbarButtonBaseProps &\n ButtonRankProps & {\n iconOnly?: false;\n};\n\n/** An icon-only button: renders `Button iconOnly`, and the type requires an `aria-label`. */\ntype ToolbarIconButtonProps = Omit<ToolbarButtonBaseProps, 'aria-label' | 'aria-labelledby' | 'fullWidth'> &\n ButtonRankProps & {\n iconOnly: true;\n /** The control's accessible name. An icon has no words of its own, so this is required. */\n 'aria-label': string;\n};\n\ntype ToolbarButtonProps = ToolbarTextButtonProps | ToolbarIconButtonProps;\n\n/** The plain DOM props, besides handlers, ARIA and data attributes, a menu row takes from a ToolbarButton. */\nconst OVERFLOW_ITEM_KEYS = new Set(['id', 'className', 'style', 'title']);\n\nfunction isPressed(value: React.AriaAttributes['aria-pressed']) {\n return value === true || value === 'true';\n}\n\n/** Does an `asChild` child render a native `<button>`? Only then is it a Radix Toolbar.Button. */\nfunction isButtonElement(children: React.ReactNode) {\n return React.isValidElement(children) && children.type === 'button';\n}\n\n/**\n * A `Button` that joins the toolbar's keyboard navigation, so a row of them is one tab stop.\n *\n * Set `iconOnly` (with an `aria-label`) for a symbol-only control. Set `aria-pressed` for a\n * control that toggles; a pressed button wears Button's pressed look. Set `asChild` to render\n * your own element, such as a link: `<ToolbarButton asChild><a href=\"/docs\">Docs</a></ToolbarButton>`.\n * A link stays in the arrow-key row and gets no `type` attribute.\n *\n * It takes the toolbar's `size`, and rests as a gray `soft` button (`raised` in a toolbar with\n * `backdrop`, gray `ghost` inside a `ToolbarGroup`). A stated `size`, `variant` or `color` wins; a\n * stated `variant` without a `color` takes Button's own default colour.\n *\n * In a `ToolbarOverflow`'s menu it renders a menu item; an icon-only button uses its\n * `aria-label` as the item's text. Outside a `Toolbar` (rendered through a React portal, for\n * example) it renders a plain Button with the same rest look, as its own tab stop. Use\n * `ToolbarSlot` and `ToolbarFill` for a control that should join the row's arrow keys.\n */\nconst ToolbarButton = React.forwardRef<HTMLButtonElement, ToolbarButtonProps>((props, forwardedRef) => {\n const toolbar = React.useContext(ToolbarContext);\n const group = React.useContext(ToolbarGroupContext);\n const overflow = React.useContext(InOverflowContext);\n const { iconOnly, size, variant, emphasis, color, disabled, asChild, onKeyDown, ...rest } = props;\n const off = disabled || group?.disabled || undefined;\n\n if (overflow) {\n // Only what a menu row means comes across: handlers, ARIA, data attributes, id, class and\n // style. Button's box props (size, loading, tooltip, fullWidth and the rest) would land on the\n // DOM as unknown attributes. A wrapping menu trigger hands its open handlers (onPointerDown,\n // onKeyDown), aria-expanded/haspopup/controls and data-state in through these, so it still\n // opens from the row.\n const passed: Record<string, unknown> = {};\n for (const key of Object.keys(rest)) {\n if (/^on[A-Z]/.test(key) || key.startsWith('aria-') || key.startsWith('data-') || OVERFLOW_ITEM_KEYS.has(key)) {\n passed[key] = (rest as Record<string, unknown>)[key];\n }\n }\n if (onKeyDown) passed.onKeyDown = onKeyDown;\n return (\n <ToolbarOverflowItem\n {...(passed as React.ComponentPropsWithoutRef<'div'>)}\n ref={forwardedRef as unknown as React.Ref<HTMLDivElement>}\n asChild={asChild}\n iconOnly={iconOnly}\n disabled={off}\n color={color}\n pressed={props['aria-pressed'] === undefined ? undefined : isPressed(props['aria-pressed'])}\n >\n {rest.children}\n </ToolbarOverflowItem>\n );\n }\n\n // In a vertical toolbar, Up and Down belong to the toolbar. A menu trigger rendering this\n // hands its open-on-arrow handler in through `onKeyDown`; those two keys skip it (v2).\n const handleKeyDown =\n toolbar?.orientation === 'vertical' && onKeyDown\n ? (event: React.KeyboardEvent<HTMLButtonElement>) => {\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') return;\n onKeyDown(event);\n }\n : onKeyDown;\n\n const pressed = isPressed(props['aria-pressed']);\n const stateProps =\n 'data-state' in props || props['aria-pressed'] === undefined ? {} : { 'data-state': pressed ? 'on' : 'off' };\n\n const shared = {\n size: size ?? toolbar?.size,\n // A caller states the look by `variant` or the rank by `emphasis`, never both.\n ...(emphasis !== undefined\n ? { emphasis }\n : { variant: variant ?? (group ? 'ghost' : toolbar?.backdrop ? 'raised' : 'soft') }),\n // The gray rest is a pair with the default variant: a caller who states a variant or an\n // emphasis gets Button's own colour for it unless they state a colour too.\n color: color ?? (variant || emphasis ? undefined : 'gray'),\n ...stateProps,\n } as const;\n\n // The text and icon-only branches share every prop but the name; one Button renders both.\n const buttonProps = {\n ...rest,\n ...(iconOnly ? { iconOnly: true } : {}),\n ...(asChild ? { asChild: true } : {}),\n ...(handleKeyDown ? { onKeyDown: handleKeyDown } : {}),\n ...shared,\n } as ButtonProps;\n\n // Outside a toolbar there is no row to join: a plain Button, not a throw.\n if (!toolbar) {\n return <Button {...buttonProps} ref={forwardedRef} disabled={off} />;\n }\n\n // A link (or any non-button child) joins the row as a Radix Toolbar.Link, which sets no\n // `type`. Toolbar.Button would stamp `type=\"button\"` on it.\n if (asChild && !isButtonElement(rest.children)) {\n return (\n <ToolbarPrimitive.Link asChild ref={forwardedRef as unknown as React.Ref<HTMLAnchorElement>}>\n <Button {...buttonProps} disabled={off} />\n </ToolbarPrimitive.Link>\n );\n }\n\n return (\n <ToolbarPrimitive.Button asChild ref={forwardedRef} disabled={off}>\n <Button {...buttonProps} />\n </ToolbarPrimitive.Button>\n );\n});\nToolbarButton.displayName = 'Toolbar.Button';\n\ninterface ToolbarOverflowItemProps extends Omit<React.ComponentPropsWithoutRef<'div'>, 'onSelect' | 'color'> {\n asChild?: boolean;\n iconOnly?: boolean;\n disabled?: boolean;\n color?: ButtonProps['color'];\n /** A toggle's pressed state. A toggle becomes a checkbox item, so the menu still says whether it is on. */\n pressed?: boolean;\n}\n\n/**\n * A ToolbarButton drawn into the overflow menu: the same element, as a menu item. An icon-only\n * button's `aria-label` becomes the item's text beside its icon, since a menu row has room for\n * words. What prices a box (size, variant, emphasis, iconOnly) does not come across.\n */\nconst ToolbarOverflowItem = React.forwardRef<HTMLDivElement, ToolbarOverflowItemProps>(\n ({ asChild, iconOnly, disabled, color, pressed, children, 'aria-label': label, ...props }, forwardedRef) => {\n const words = iconOnly ? label : undefined;\n const itemProps = {\n ...props,\n ...(iconOnly ? {} : label ? { 'aria-label': label } : {}),\n disabled,\n ...(color ? { color: color as DropdownMenu.ItemProps['color'] } : {}),\n };\n if (asChild && React.isValidElement<{ children?: React.ReactNode }>(children)) {\n const child = words\n ? React.cloneElement(children, undefined, children.props.children, <span>{words}</span>)\n : children;\n return (\n <DropdownMenu.Item {...itemProps} ref={forwardedRef} asChild>\n {child}\n </DropdownMenu.Item>\n );\n }\n if (pressed !== undefined) {\n return (\n <DropdownMenu.CheckboxItem {...itemProps} ref={forwardedRef} checked={pressed}>\n {children}\n {words}\n </DropdownMenu.CheckboxItem>\n );\n }\n return (\n <DropdownMenu.Item {...itemProps} ref={forwardedRef}>\n {children}\n {words}\n </DropdownMenu.Item>\n );\n },\n);\nToolbarOverflowItem.displayName = 'Toolbar.OverflowItem';\n\n// ============================================================================\n// ToolbarOverflow\n// ============================================================================\n\ninterface ToolbarOverflowProps extends ComponentPropsWithout<'div', RemovedProps> {\n /** The accessible name of the \"More\" button. Defaults to `More`. */\n label?: string;\n /** The controls in the cluster, in order. The ones that don't fit move into the \"More\" menu. */\n children?: React.ReactNode;\n}\n\n/** Three filled dots for the \"More\" button. Internal, so the library carries no icon set. */\nfunction MoreIcon() {\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentcolor\" aria-hidden xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"3.25\" cy=\"8\" r=\"1.25\" />\n <circle cx=\"8\" cy=\"8\" r=\"1.25\" />\n <circle cx=\"12.75\" cy=\"8\" r=\"1.25\" />\n </svg>\n );\n}\n\n/**\n * A cluster of controls that collapses into a \"More\" menu when the row runs out of room.\n *\n * It takes the room the row leaves, and when its controls don't fit, they move into the menu\n * from the end of the cluster. A `ToolbarButton` shows as a menu item there, and a\n * `ToolbarGroup` as a menu group. Use `useToolbarOverflow()` in your own components to render a\n * different form in the menu.\n *\n * It measures on mount and on resize (v2 ToolbarOverflow): each control's width is cached while\n * it is in the row, since a hidden control has no width to measure.\n */\nconst ToolbarOverflow = React.forwardRef<HTMLDivElement, ToolbarOverflowProps>(\n ({ label = 'More', className, children, ...props }, forwardedRef) => {\n const items = React.Children.toArray(children);\n const count = items.length;\n\n const rootRef = React.useRef<HTMLDivElement | null>(null);\n const widths = React.useRef<number[]>([]);\n const triggerWidth = React.useRef(0);\n const [shown, setShown] = React.useState(count);\n const [tick, setTick] = React.useState(0);\n\n // A different set of children is a different set of widths: show them all and measure again.\n const [measuredCount, setMeasuredCount] = React.useState(count);\n if (measuredCount !== count) {\n setMeasuredCount(count);\n setShown(count);\n }\n useLayoutEffect(() => {\n widths.current = [];\n }, [count]);\n\n useLayoutEffect(() => {\n const root = rootRef.current;\n if (!root) return;\n\n // The root's children are one seat per visible child, then the trigger.\n const kids = Array.from(root.children) as HTMLElement[];\n const visible = Math.min(shown, count);\n for (let i = 0; i < visible; i++) {\n const el = kids[i];\n if (el) widths.current[i] = el.offsetWidth;\n }\n const trigger = kids[visible];\n if (trigger) triggerWidth.current = trigger.offsetWidth;\n\n const gap = Number.parseFloat(getComputedStyle(root).columnGap) || 0;\n const available = root.clientWidth;\n\n let total = 0;\n let counted = 0;\n for (let i = 0; i < count; i++) {\n const width = widths.current[i];\n // Never seen in the row, so there is nothing to decide with yet.\n if (width === undefined) return;\n // An empty seat leaves the layout, so it spends no gap.\n if (width === 0) continue;\n total += width + (counted > 0 ? gap : 0);\n counted += 1;\n }\n\n let next = count;\n if (total > available) {\n // Before the trigger exists, the row's height stands in for its width: an icon-only\n // button is square. The next pass, before paint, corrects it.\n const budget = available - (triggerWidth.current || root.clientHeight) - gap;\n let used = 0;\n let drawn = 0;\n next = 0;\n for (let i = 0; i < count; i++) {\n const own = widths.current[i]!;\n if (own > 0) {\n const width = own + (drawn > 0 ? gap : 0);\n if (used + width > budget) break;\n used += width;\n drawn += 1;\n }\n next += 1;\n }\n }\n if (next !== shown) setShown(next);\n }, [shown, count, tick]);\n\n // Watch the row and every seat in it: a control whose content changes (a page's actions\n // arriving after navigation) changes its width without the row's width changing.\n React.useEffect(() => {\n const root = rootRef.current;\n if (!root || typeof ResizeObserver === 'undefined') return;\n const observer = new ResizeObserver(() => setTick((n) => n + 1));\n observer.observe(root);\n for (const seat of Array.from(root.children)) observer.observe(seat);\n return () => observer.disconnect();\n }, [shown, count]);\n\n const attach = React.useCallback(\n (node: HTMLDivElement | null) => {\n rootRef.current = node;\n if (typeof forwardedRef === 'function') forwardedRef(node);\n else if (forwardedRef) forwardedRef.current = node;\n },\n [forwardedRef],\n );\n\n return (\n <div {...props} ref={attach} className={classNames('kui-ToolbarOverflow', className)}>\n {items.slice(0, shown).map((item, i) => (\n // The seat is a position in the row, so its key is the index.\n <div key={i} className=\"kui-ToolbarOverflowSeat\">\n {item}\n </div>\n ))}\n {shown < count ? (\n <DropdownMenu.Root>\n <DropdownMenu.Trigger>\n <ToolbarButton iconOnly aria-label={label}>\n <MoreIcon />\n </ToolbarButton>\n </DropdownMenu.Trigger>\n <DropdownMenu.Content align=\"end\">\n <InOverflowContext.Provider value>{items.slice(shown)}</InOverflowContext.Provider>\n </DropdownMenu.Content>\n </DropdownMenu.Root>\n ) : null}\n </div>\n );\n },\n);\nToolbarOverflow.displayName = 'Toolbar.Overflow';\n\n// ============================================================================\n// ToolbarSlot and ToolbarFill\n// ============================================================================\n\ntype SlotEntry = { id: string; node: React.ReactNode };\n\nconst EMPTY_ENTRIES: readonly SlotEntry[] = [];\nconst slotEntries = new Map<string, readonly SlotEntry[]>();\nconst slotListeners = new Set<() => void>();\n/** How many ToolbarSlots of each name are mounted, to warn when one Fill would render twice. */\nconst mountedSlots = new Map<string, number>();\n\nfunction subscribeSlots(listener: () => void) {\n slotListeners.add(listener);\n return () => {\n slotListeners.delete(listener);\n };\n}\n\nfunction setSlotEntry(name: string, id: string, node: React.ReactNode) {\n const list = slotEntries.get(name) ?? EMPTY_ENTRIES;\n const index = list.findIndex((entry) => entry.id === id);\n const next = index === -1 ? [...list, { id, node }] : list.map((entry) => (entry.id === id ? { id, node } : entry));\n slotEntries.set(name, next);\n slotListeners.forEach((listener) => listener());\n}\n\nfunction removeSlotEntry(name: string, id: string) {\n const list = slotEntries.get(name);\n if (!list) return;\n const next = list.filter((entry) => entry.id !== id);\n if (next.length === 0) slotEntries.delete(name);\n else slotEntries.set(name, next);\n slotListeners.forEach((listener) => listener());\n}\n\ninterface ToolbarSlotProps {\n /**\n * Which `ToolbarFill` renders here. Defaults to `default`. Names are global to the page: mount one\n * slot per name, or the fill renders in each of them (development builds warn).\n */\n name?: string;\n}\n\n/**\n * A place in a toolbar that content elsewhere in the app fills, such as a page adding its own\n * actions to a header toolbar the layout owns.\n *\n * It renders whatever the `ToolbarFill` with the same `name` holds, as if it were written here:\n * the controls take the toolbar's size and join its arrow-key row. It adds no element.\n */\nfunction ToolbarSlot({ name = 'default' }: ToolbarSlotProps) {\n useLayoutEffect(() => {\n const count = (mountedSlots.get(name) ?? 0) + 1;\n mountedSlots.set(name, count);\n if (count > 1 && process.env.NODE_ENV !== 'production') {\n console.warn(`[kookie-ui] ToolbarSlot: ${count} slots named \"${name}\" are mounted. Each renders the ToolbarFill's controls, so they appear more than once. Give each slot its own name.`);\n }\n return () => {\n const left = (mountedSlots.get(name) ?? 1) - 1;\n if (left > 0) mountedSlots.set(name, left);\n else mountedSlots.delete(name);\n };\n }, [name]);\n const entries = React.useSyncExternalStore(\n subscribeSlots,\n () => slotEntries.get(name) ?? EMPTY_ENTRIES,\n () => EMPTY_ENTRIES,\n );\n return (\n <>\n {entries.map((entry) => (\n <React.Fragment key={entry.id}>{entry.node}</React.Fragment>\n ))}\n </>\n );\n}\nToolbarSlot.displayName = 'Toolbar.Slot';\n\ninterface ToolbarFillProps {\n /** The `ToolbarSlot` to render into. Defaults to `default`. */\n name?: string;\n /** The controls to show in the slot, such as `ToolbarButton`s. */\n children?: React.ReactNode;\n}\n\n/**\n * Sends its children to the `ToolbarSlot` with the same `name`, and renders nothing where it\n * is written. Use it instead of a React portal: a portal keeps the page's React tree, so a\n * ToolbarButton in it can't join the toolbar's arrow keys.\n *\n * The children render inside the toolbar, so they read the toolbar's context, not the page's.\n * They appear after the page mounts on the client, not in server-rendered HTML.\n */\nfunction ToolbarFill({ name = 'default', children }: ToolbarFillProps) {\n const id = React.useId();\n useLayoutEffect(() => {\n setSlotEntry(name, id, children);\n }, [name, id, children]);\n useLayoutEffect(() => () => removeSlotEntry(name, id), [name, id]);\n return null;\n}\nToolbarFill.displayName = 'Toolbar.Fill';\n\n// ============================================================================\n// ToolbarSeparator\n// ============================================================================\n\ntype ToolbarSeparatorProps = ComponentPropsWithout<typeof ToolbarPrimitive.Separator, RemovedProps | 'orientation'>;\n\n/**\n * A gray hairline between two clusters, announced as a separator. Its direction is always\n * opposite to the toolbar's. In a `ToolbarOverflow`'s menu it is a menu separator.\n */\nconst ToolbarSeparator = React.forwardRef<HTMLDivElement, ToolbarSeparatorProps>(\n ({ className, ...props }, forwardedRef) => {\n const toolbar = React.useContext(ToolbarContext);\n const overflow = React.useContext(InOverflowContext);\n if (overflow) return <DropdownMenu.Separator {...props} ref={forwardedRef} className={className} />;\n if (!toolbar) {\n return (\n <div\n role=\"separator\"\n aria-orientation=\"vertical\"\n data-orientation=\"vertical\"\n {...props}\n ref={forwardedRef}\n className={classNames('kui-ToolbarSeparator', className)}\n />\n );\n }\n return (\n <ToolbarPrimitive.Separator\n {...props}\n ref={forwardedRef}\n className={classNames('kui-ToolbarSeparator', className)}\n />\n );\n },\n);\nToolbarSeparator.displayName = 'Toolbar.Separator';\n\n// ============================================================================\n// ToolbarTitle\n// ============================================================================\n\n/** The title's text step: one step above the label of a button at the same size. */\nconst TITLE_SIZE = { '1': '2', '2': '3', '3': '4', '4': '5' } as const satisfies Record<ToolbarSize, TextProps['size']>;\n\ninterface ToolbarTitleProps {\n /**\n * The title text. With none, the title mirrors the page in this Shell pane: it shows the\n * `Page`'s title once that title has scrolled behind the band. Outside a pane with a page, it\n * renders nothing.\n */\n children?: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n /** The id of the title, so that the toolbar's `aria-labelledby` can point at it. */\n id?: string;\n}\n\n/**\n * What the row is about, at its leading edge. One line: it truncates rather than wrapping.\n * Its text step follows the toolbar's `size`, and it takes more air from the controls beside it\n * than they take from each other.\n */\nconst ToolbarTitle = React.forwardRef<HTMLSpanElement, ToolbarTitleProps>(\n ({ className, children, style, id }, forwardedRef) => {\n const toolbar = React.useContext(ToolbarContext);\n const themeSize = useThemeSize<ToolbarSize>(undefined, toolbarRootPropDefs.size);\n const size = toolbar?.size ?? themeSize;\n const store = usePageScope();\n const pageTitle = usePageTitle(store);\n const mirrorRef = usePageMirror(store);\n const mirroring = children === undefined || children === null || children === false;\n const words = mirroring ? pageTitle : children;\n const ref = useComposedRefs(forwardedRef, mirroring ? mirrorRef : undefined);\n if (words === undefined || words === null) return null;\n return (\n <Text\n ref={ref}\n as=\"span\"\n size={TITLE_SIZE[size]}\n weight=\"medium\"\n truncate\n id={id}\n style={style}\n className={classNames('kui-ToolbarTitle', className)}\n data-mirror={mirroring || undefined}\n >\n {words}\n </Text>\n );\n },\n);\nToolbarTitle.displayName = 'Toolbar.Title';\n\n// ============================================================================\n// Exports\n// ============================================================================\n\nconst Toolbar = Object.assign(ToolbarRoot, {\n Root: ToolbarRoot,\n Group: ToolbarGroup,\n Button: ToolbarButton,\n Separator: ToolbarSeparator,\n Title: ToolbarTitle,\n Overflow: ToolbarOverflow,\n Slot: ToolbarSlot,\n Fill: ToolbarFill,\n});\n\nexport {\n Toolbar,\n ToolbarGroup,\n ToolbarButton,\n ToolbarSeparator,\n ToolbarTitle,\n ToolbarOverflow,\n ToolbarSlot,\n ToolbarFill,\n useToolbarOverflow,\n ToolbarRoot as Root,\n ToolbarGroup as Group,\n ToolbarButton as Button,\n ToolbarSeparator as Separator,\n ToolbarTitle as Title,\n ToolbarOverflow as Overflow,\n ToolbarSlot as Slot,\n ToolbarFill as Fill,\n};\nexport type {\n ToolbarProps,\n ToolbarGroupProps,\n ToolbarButtonProps,\n ToolbarSeparatorProps,\n ToolbarTitleProps,\n ToolbarOverflowProps,\n ToolbarSlotProps,\n ToolbarFillProps,\n ToolbarProps as RootProps,\n ToolbarGroupProps as GroupProps,\n ToolbarButtonProps as ButtonProps,\n ToolbarSeparatorProps as SeparatorProps,\n ToolbarTitleProps as TitleProps,\n ToolbarOverflowProps as OverflowProps,\n ToolbarSlotProps as SlotProps,\n ToolbarFillProps as FillProps,\n};\n", "import type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3', '4'] as const;\nconst orientations = ['horizontal', 'vertical'] as const;\n\n/**\n * Toolbar prop definitions.\n *\n * `size` is one value for the whole row (not responsive): the row hands it to every control\n * inside it that does not state its own, through context, so it has to be a single index.\n */\nconst toolbarRootPropDefs = {\n /**\n * Size step of the row and of every control in it that doesn't set its own `size`.\n * Matches Button's sizes: 1 (28px) to 4 (48px). Unset inside a Shell, it rests one step above\n * the Shell's `size`, except in a pane's `Shell.Scroll` list and in a Popover, Dialog, Sheet or\n * menu. Elsewhere it takes Theme size, else 2.\n */\n size: { type: 'enum', className: 'kui-r-size', values: sizes, default: '2' },\n /**\n * Direction of the row and of the arrow keys. Use `vertical` for a strip of tools along an edge.\n */\n orientation: { type: 'enum', values: orientations, default: 'horizontal' },\n} satisfies {\n size: PropDef<(typeof sizes)[number]>;\n orientation: PropDef<(typeof orientations)[number]>;\n};\n\nexport { toolbarRootPropDefs };\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["React", "useComposedRefs", "useLayoutEffect", "classNames", "ToolbarPrimitive", "sizes", "orientations", "toolbarRootPropDefs", "ToolbarContext", "ToolbarGroupContext", "InOverflowContext", "useToolbarOverflow", "ToolbarRoot", "props", "forwardedRef", "band", "usePaneBandSize", "size", "useThemeSize", "toolbarRootPropDefs", "orientation", "className", "_orientation", "backdrop", "children", "rootProps", "extractProps", "layoutPropDefs", "context", "ToolbarPrimitive", "classNames", "ToolbarGroup", "disabled", "toolbar", "overflow", "group", "DropdownMenuGroup", "OVERFLOW_ITEM_KEYS", "isPressed", "value", "isButtonElement", "ToolbarButton", "iconOnly", "variant", "emphasis", "color", "asChild", "onKeyDown", "rest", "off", "passed", "key", "ToolbarOverflowItem", "handleKeyDown", "event", "pressed", "stateProps", "shared", "buttonProps", "Button", "label", "words", "itemProps", "child", "DropdownMenuItem", "DropdownMenuCheckboxItem", "MoreIcon", "ToolbarOverflow", "items", "count", "rootRef", "widths", "triggerWidth", "shown", "setShown", "tick", "setTick", "measuredCount", "setMeasuredCount", "useLayoutEffect", "root", "kids", "visible", "i", "el", "trigger", "gap", "available", "total", "counted", "width", "next", "budget", "used", "drawn", "own", "observer", "n", "seat", "attach", "node", "item", "DropdownMenuRoot", "DropdownMenuTrigger", "DropdownMenuContent", "EMPTY_ENTRIES", "slotEntries", "slotListeners", "mountedSlots", "subscribeSlots", "listener", "setSlotEntry", "name", "id", "list", "entry", "removeSlotEntry", "ToolbarSlot", "left", "entries", "ToolbarFill", "ToolbarSeparator", "DropdownMenuSeparator", "TITLE_SIZE", "ToolbarTitle", "style", "themeSize", "store", "usePageScope", "pageTitle", "usePageTitle", "mirrorRef", "usePageMirror", "mirroring", "ref", "useComposedRefs", "Text", "Toolbar"]
|
|
7
|
+
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{a as W}from"./chunk-BUXK5VGR.js";import{a as F}from"./chunk-KVVRFWGQ.js";import{k as _}from"./chunk-GKDGNPBD.js";import{c as
|
|
3
|
-
//# sourceMappingURL=chunk-
|
|
2
|
+
import{a as W}from"./chunk-BUXK5VGR.js";import{a as F}from"./chunk-KVVRFWGQ.js";import{k as _}from"./chunk-GKDGNPBD.js";import{c as A}from"./chunk-5ON3XLRD.js";import{d as z}from"./chunk-HBWBPBSA.js";import{b as H}from"./chunk-XU74PNM2.js";import{c as j}from"./chunk-OKQAVYW4.js";import{a as V}from"./chunk-CLJ6SEGP.js";import*as e from"react";import le from"classnames";import{Slot as de}from"radix-ui";import{useComposedRefs as pe,useLayoutEffect as ue}from"radix-ui/internal";var ie=["1","2","3","4"],ce=["raised","solid","soft","surface","outline","ghost"],C={...V,size:{type:"enum",className:"kui-r-size",values:ie,default:"2",responsive:!0},variant:{type:"enum",className:"kui-variant",values:ce,default:"solid"},...z,...H,loading:{type:"boolean",className:"kui-loading",default:!1},fullWidth:{type:"boolean",className:"kui-full-width",default:!1}};var me=e.forwardRef((i,n)=>{let a=A(i,C.size),{className:T,children:o,asChild:s,as:R,color:X,radius:q,disabled:y,done:b=!1,...u}=j(a,C),p=!!a.loading,D=a.loading!==void 0,m=!!y||p,{onClick:v,"aria-describedby":M}=u,K=e.useCallback(t=>{if(m){t.preventDefault();return}v?.(t)},[m,v]),Q=e.useMemo(()=>{let t=s&&e.isValidElement(o)?o.props.children:o,c=k(t),l=r=>e.isValidElement(r)&&(r.type==="svg"||typeof r.type!="string"&&r.type!==e.Fragment&&!fe.has(P(r.type)));return{iconStart:l(c[0]),iconEnd:l(c[c.length-1])}},[s,o]),[E,$]=e.useState(null),S=e.useRef(null),J=pe(n,S);ue(()=>{let t=S.current;if(!t||p||b)return;let c=t.querySelector(":scope > .kui-BaseButtonContent")??t,l=G(c,"start"),r=G(c,"end");$(d=>d&&d.iconStart===l&&d.iconEnd===r?d:{iconStart:l,iconEnd:r})});let{iconStart:h,iconEnd:U}=E??Q,x=!!u["data-icon-only"],f=e.useMemo(()=>{if(!b)return o;let t=e.createElement(_,{key:"kui-done-tick",className:"kui-BaseButtonTick","aria-hidden":!0}),c=l=>{if(x)return t;let r=k(l),d=r.findIndex(B=>!(typeof B=="string"&&!B.trim())),I=r[d];return d!==-1&&h&&(E!==null||e.isValidElement(I)&&I.type==="svg")?r.map((B,re)=>re===d?t:B):[t,...r]};if(s&&e.isValidElement(o)){let l=o;return e.cloneElement(l,void 0,c(l.props.children))}return c(o)},[b,o,x,h,E,s]),Y=s?de.Root:R||"button",Z=["button","input","textarea","select"],w=s?e.isValidElement(o)?o.type:void 0:R||"button",N=typeof w=="string"&&Z.includes(w),{onClickCapture:L}=u,ee=e.useCallback(t=>{if(s&&m){t.preventDefault(),t.stopPropagation();return}L?.(t)},[s,m,L]),te=!s&&(!R||R==="button"),ne="type"in u,oe=e.useId(),g=p?`${oe}-loading`:void 0,ae=e.useMemo(()=>p?{"aria-busy":!0,"aria-disabled":!0,"aria-describedby":[M,g].filter(Boolean).join(" ")}:y&&(!N||s)?{"aria-disabled":!0}:{},[p,g,M,y,N,s]),O=(t,c)=>D?e.createElement(e.Fragment,null,e.createElement("span",{className:"kui-BaseButtonContent","aria-hidden":p||void 0},t),p?e.createElement(e.Fragment,null,e.createElement("span",{className:"kui-sr-only"},e.createElement("span",{id:g,"aria-hidden":!0},"Loading"),c),e.createElement(F,{asChild:!0,align:"center",justify:"center",position:"absolute",inset:"0"},e.createElement("span",null,e.createElement(W,{"aria-hidden":"true"})))):null):t,se=s&&D&&e.isValidElement(f)?e.cloneElement(f,void 0,O(f.props.children,e.isValidElement(o)?o.props.children:null)):f;return e.createElement(Y,{"data-accent-color":X,"data-radius":q,"data-icon-start":h||void 0,"data-icon-end":U||void 0,"data-done":b||void 0,...u,...ae,"data-disabled":m||void 0,onClick:K,onClickCapture:ee,ref:J,className:le("kui-reset","kui-BaseButton",T),...N&&{disabled:y},...te&&!ne?{type:"button"}:{}},s?se:O(f,o))});me.displayName="BaseButton";var fe=new Set(["Text","Kbd","Code","Link","Em","Strong","Quote","Badge","Trans"]);function P(i){if(!i||typeof i!="function"&&typeof i!="object")return"";let n=i;return n.displayName||n.name||P(n.render)||P(n.type)}function k(i){return e.Children.toArray(i).flatMap(n=>e.isValidElement(n)&&n.type===e.Fragment?k(n.props.children):[n])}function G(i,n){let a=n==="start"?i.firstChild:i.lastChild;for(;a&&(a.nodeType===Node.COMMENT_NODE||a.nodeType===Node.TEXT_NODE&&!a.textContent?.trim());)a=n==="start"?a.nextSibling:a.previousSibling;return a?.nodeType===Node.ELEMENT_NODE&&a.localName==="svg"}export{me as a};
|
|
3
|
+
//# sourceMappingURL=chunk-SGKLJDA3.js.map
|