@womp/kookie-ui 0.22.1 → 0.24.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 +247 -187
- package/dist/cjs/components/_internal/base-button.d.ts +11 -1
- package/dist/cjs/components/_internal/base-button.d.ts.map +1 -1
- package/dist/cjs/components/_internal/base-button.js +1 -1
- package/dist/cjs/components/_internal/base-button.js.map +4 -4
- package/dist/cjs/components/_internal/menu-context.d.ts +2 -0
- package/dist/cjs/components/_internal/menu-context.d.ts.map +1 -1
- package/dist/cjs/components/_internal/menu-context.js +1 -1
- package/dist/cjs/components/_internal/menu-context.js.map +3 -3
- package/dist/cjs/components/_internal/pane-chrome.d.ts +17 -2
- package/dist/cjs/components/_internal/pane-chrome.d.ts.map +1 -1
- package/dist/cjs/components/_internal/pane-chrome.js +1 -1
- package/dist/cjs/components/_internal/pane-chrome.js.map +4 -4
- 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/accordion.d.ts +2 -2
- package/dist/cjs/components/accordion.d.ts.map +1 -1
- package/dist/cjs/components/accordion.js +1 -1
- package/dist/cjs/components/accordion.js.map +4 -4
- package/dist/cjs/components/alert-dialog.d.ts.map +1 -1
- package/dist/cjs/components/alert-dialog.js +1 -1
- package/dist/cjs/components/alert-dialog.js.map +3 -3
- package/dist/cjs/components/avatar.d.ts +1 -1
- package/dist/cjs/components/avatar.d.ts.map +1 -1
- package/dist/cjs/components/avatar.js +1 -1
- package/dist/cjs/components/avatar.js.map +3 -3
- package/dist/cjs/components/avatar.props.d.ts +8 -0
- package/dist/cjs/components/avatar.props.d.ts.map +1 -1
- package/dist/cjs/components/avatar.props.js +1 -1
- package/dist/cjs/components/avatar.props.js.map +2 -2
- package/dist/cjs/components/blockquote.d.ts +1 -1
- package/dist/cjs/components/blockquote.d.ts.map +1 -1
- package/dist/cjs/components/blockquote.js +1 -1
- package/dist/cjs/components/blockquote.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.d.ts.map +1 -1
- package/dist/cjs/components/chatbar.js +1 -1
- package/dist/cjs/components/chatbar.js.map +4 -4
- package/dist/cjs/components/checkbox-group.d.ts.map +1 -1
- package/dist/cjs/components/checkbox-group.js +1 -1
- package/dist/cjs/components/checkbox-group.js.map +3 -3
- package/dist/cjs/components/checkbox-group.primitive.d.ts +12 -5
- package/dist/cjs/components/checkbox-group.primitive.d.ts.map +1 -1
- package/dist/cjs/components/checkbox-group.primitive.js +1 -1
- package/dist/cjs/components/checkbox-group.primitive.js.map +3 -3
- package/dist/cjs/components/checkbox.js +1 -1
- package/dist/cjs/components/checkbox.js.map +3 -3
- package/dist/cjs/components/chip.d.ts.map +1 -1
- package/dist/cjs/components/chip.js +1 -1
- package/dist/cjs/components/chip.js.map +3 -3
- package/dist/cjs/components/code.d.ts.map +1 -1
- package/dist/cjs/components/code.js +1 -1
- package/dist/cjs/components/code.js.map +2 -2
- package/dist/cjs/components/combobox.js +1 -1
- package/dist/cjs/components/combobox.js.map +3 -3
- package/dist/cjs/components/context-menu.d.ts.map +1 -1
- 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 +1 -1
- 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 +3 -3
- package/dist/cjs/components/dropdown-menu.d.ts.map +1 -1
- package/dist/cjs/components/dropdown-menu.js +1 -1
- package/dist/cjs/components/dropdown-menu.js.map +4 -4
- package/dist/cjs/components/icons.d.ts +3 -1
- package/dist/cjs/components/icons.d.ts.map +1 -1
- package/dist/cjs/components/icons.js +1 -1
- package/dist/cjs/components/icons.js.map +3 -3
- package/dist/cjs/components/image.d.ts +23 -0
- package/dist/cjs/components/image.d.ts.map +1 -0
- package/dist/cjs/components/image.js +2 -0
- package/dist/cjs/components/image.js.map +7 -0
- package/dist/cjs/components/image.props.d.ts +19 -0
- package/dist/cjs/components/image.props.d.ts.map +1 -0
- package/dist/cjs/components/image.props.js +2 -0
- package/dist/cjs/components/image.props.js.map +7 -0
- package/dist/cjs/components/index.d.ts +2 -1
- package/dist/cjs/components/index.d.ts.map +1 -1
- package/dist/cjs/components/index.js +2 -10
- package/dist/cjs/components/index.js.map +4 -4
- package/dist/cjs/components/message-scroller.d.ts.map +1 -1
- package/dist/cjs/components/message-scroller.js +1 -1
- package/dist/cjs/components/message-scroller.js.map +4 -4
- package/dist/cjs/components/navbar.d.ts.map +1 -1
- package/dist/cjs/components/navbar.js +1 -1
- package/dist/cjs/components/navbar.js.map +3 -3
- package/dist/cjs/components/notice.d.ts +4 -1
- package/dist/cjs/components/notice.d.ts.map +1 -1
- package/dist/cjs/components/notice.js +1 -1
- package/dist/cjs/components/notice.js.map +4 -4
- package/dist/cjs/components/progress.d.ts.map +1 -1
- package/dist/cjs/components/progress.js +1 -1
- package/dist/cjs/components/progress.js.map +3 -3
- package/dist/cjs/components/schemas/button.schema.d.ts +2 -2
- package/dist/cjs/components/schemas/toggle.schema.d.ts +1 -1
- package/dist/cjs/components/scroll-area.d.ts +3 -1
- package/dist/cjs/components/scroll-area.d.ts.map +1 -1
- package/dist/cjs/components/scroll-area.js +1 -1
- package/dist/cjs/components/scroll-area.js.map +4 -4
- package/dist/cjs/components/segmented-control.d.ts +3 -1
- package/dist/cjs/components/segmented-control.d.ts.map +1 -1
- package/dist/cjs/components/segmented-control.js +1 -1
- package/dist/cjs/components/segmented-control.js.map +3 -3
- package/dist/cjs/components/select.d.ts +1 -2
- package/dist/cjs/components/select.d.ts.map +1 -1
- package/dist/cjs/components/select.js +1 -1
- package/dist/cjs/components/select.js.map +3 -3
- package/dist/cjs/components/separator.d.ts.map +1 -1
- package/dist/cjs/components/separator.js +1 -1
- package/dist/cjs/components/separator.js.map +3 -3
- package/dist/cjs/components/sheet.d.ts +1 -0
- 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 +3 -3
- package/dist/cjs/components/shell.d.ts +12 -1
- 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.d.ts.map +1 -1
- package/dist/cjs/components/sidebar.js +1 -1
- package/dist/cjs/components/sidebar.js.map +4 -4
- package/dist/cjs/components/slider.d.ts.map +1 -1
- package/dist/cjs/components/slider.js +1 -1
- package/dist/cjs/components/slider.js.map +3 -3
- package/dist/cjs/components/spinner.d.ts.map +1 -1
- package/dist/cjs/components/spinner.js +1 -1
- package/dist/cjs/components/spinner.js.map +3 -3
- package/dist/cjs/components/table.d.ts.map +1 -1
- package/dist/cjs/components/table.js +1 -1
- package/dist/cjs/components/table.js.map +4 -4
- package/dist/cjs/components/tabs.d.ts.map +1 -1
- package/dist/cjs/components/tabs.js +1 -1
- package/dist/cjs/components/tabs.js.map +2 -2
- package/dist/cjs/components/text-area.js +1 -1
- package/dist/cjs/components/text-area.js.map +2 -2
- package/dist/cjs/components/text-field.js +2 -2
- package/dist/cjs/components/text-field.js.map +2 -2
- package/dist/cjs/components/toggle.d.ts +3 -2
- package/dist/cjs/components/toggle.d.ts.map +1 -1
- package/dist/cjs/components/toggle.js +1 -9
- package/dist/cjs/components/toggle.js.map +4 -4
- package/dist/cjs/components/toolbar.d.ts +80 -8
- 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/virtual-menu.d.ts +3 -5
- package/dist/cjs/components/virtual-menu.d.ts.map +1 -1
- package/dist/cjs/components/virtual-menu.js +1 -1
- package/dist/cjs/components/virtual-menu.js.map +3 -3
- package/dist/cjs/helpers/extract-margin-props.d.ts +7 -7
- package/dist/cjs/hooks/use-scroll-edges.d.ts +4 -2
- package/dist/cjs/hooks/use-scroll-edges.d.ts.map +1 -1
- package/dist/cjs/hooks/use-scroll-edges.js +1 -1
- package/dist/cjs/hooks/use-scroll-edges.js.map +3 -3
- package/dist/cjs/index.js +5 -5
- package/dist/cjs/index.js.map +4 -4
- package/dist/cjs/props/index.js +1 -1
- package/dist/cjs/props/index.js.map +2 -2
- package/dist/esm/chunk-3VTS4C63.js +2 -0
- package/dist/esm/chunk-3VTS4C63.js.map +7 -0
- package/dist/esm/chunk-3WE4E2WQ.js +2 -0
- package/dist/esm/chunk-3WE4E2WQ.js.map +7 -0
- package/dist/esm/chunk-3XUY5WFA.js +2 -0
- package/dist/esm/chunk-3XUY5WFA.js.map +7 -0
- package/dist/esm/chunk-3XZOE2IQ.js +2 -0
- package/dist/esm/chunk-3XZOE2IQ.js.map +7 -0
- package/dist/esm/chunk-432YLNB3.js +2 -0
- package/dist/esm/chunk-432YLNB3.js.map +7 -0
- package/dist/esm/chunk-4QKZYCCH.js +2 -0
- package/dist/esm/chunk-4QKZYCCH.js.map +7 -0
- package/dist/esm/chunk-4R5EMVB3.js +2 -0
- package/dist/esm/chunk-4R5EMVB3.js.map +7 -0
- package/dist/esm/chunk-4ZOVV3TY.js +2 -0
- package/dist/esm/chunk-4ZOVV3TY.js.map +7 -0
- package/dist/esm/{chunk-IX5HIHVI.js → chunk-62ZGP4ET.js} +2 -2
- package/dist/esm/{chunk-IX5HIHVI.js.map → chunk-62ZGP4ET.js.map} +3 -3
- package/dist/esm/chunk-BGAJ2MDF.js +2 -0
- package/dist/esm/chunk-BGAJ2MDF.js.map +7 -0
- package/dist/esm/chunk-CHPT42BY.js +2 -0
- package/dist/esm/{chunk-Y3JYEEFB.js.map → chunk-CHPT42BY.js.map} +2 -2
- package/dist/esm/{chunk-KS4U4VPH.js → chunk-CMHUK7OG.js} +2 -2
- package/dist/esm/{chunk-KS4U4VPH.js.map → chunk-CMHUK7OG.js.map} +2 -2
- package/dist/esm/chunk-CN6F4REJ.js +2 -0
- package/dist/esm/chunk-CN6F4REJ.js.map +7 -0
- package/dist/esm/chunk-DUTZUWZP.js +2 -0
- package/dist/esm/chunk-DUTZUWZP.js.map +7 -0
- package/dist/esm/chunk-EZYXYLR2.js +2 -0
- package/dist/esm/chunk-EZYXYLR2.js.map +7 -0
- package/dist/esm/chunk-FDJV5RXX.js +2 -0
- package/dist/esm/chunk-FDJV5RXX.js.map +7 -0
- package/dist/esm/chunk-G2JD52O5.js +2 -0
- package/dist/esm/{chunk-23KT3D2Z.js.map → chunk-G2JD52O5.js.map} +3 -3
- package/dist/esm/{chunk-PNAB6KCN.js → chunk-G4ETY2NP.js} +2 -2
- package/dist/esm/{chunk-PNAB6KCN.js.map → chunk-G4ETY2NP.js.map} +1 -1
- package/dist/esm/chunk-GPOCLDBR.js +2 -0
- package/dist/esm/chunk-GPOCLDBR.js.map +7 -0
- package/dist/esm/chunk-GYP66ZK2.js +2 -0
- package/dist/esm/chunk-GYP66ZK2.js.map +7 -0
- package/dist/esm/chunk-H5BYPX6V.js +2 -0
- package/dist/esm/chunk-H5BYPX6V.js.map +7 -0
- package/dist/esm/chunk-H5G7UECV.js +2 -0
- package/dist/esm/chunk-H5G7UECV.js.map +7 -0
- package/dist/esm/chunk-I4FLQELQ.js +2 -0
- package/dist/esm/chunk-I4FLQELQ.js.map +7 -0
- package/dist/esm/chunk-JYQGCXXI.js +2 -0
- package/dist/esm/chunk-JYQGCXXI.js.map +7 -0
- package/dist/esm/chunk-KA5UE2VN.js +2 -0
- package/dist/esm/chunk-KA5UE2VN.js.map +7 -0
- package/dist/esm/{chunk-T62PRLPN.js → chunk-KEGCX5VM.js} +2 -2
- package/dist/esm/chunk-KVHKPUZ2.js +2 -0
- package/dist/esm/chunk-KVHKPUZ2.js.map +7 -0
- package/dist/esm/chunk-M7I6ISPL.js +2 -0
- package/dist/esm/chunk-M7I6ISPL.js.map +7 -0
- package/dist/esm/chunk-MYYXOFU5.js +1 -0
- package/dist/esm/{chunk-FFG32ERA.js → chunk-N3WBEQWL.js} +3 -3
- package/dist/esm/chunk-N3WBEQWL.js.map +7 -0
- package/dist/esm/{chunk-HKPXDQ2B.js → chunk-NC3CJUE3.js} +2 -2
- package/dist/esm/chunk-P2MV6HLA.js +2 -0
- package/dist/esm/{chunk-7SS4UUJH.js.map → chunk-P2MV6HLA.js.map} +3 -3
- package/dist/esm/chunk-PALE5UWK.js +2 -0
- package/dist/esm/{chunk-DSPYHO3L.js.map → chunk-PALE5UWK.js.map} +2 -2
- package/dist/esm/chunk-PDMCLVYT.js +2 -0
- package/dist/esm/chunk-PDMCLVYT.js.map +7 -0
- package/dist/esm/chunk-PM6QY3JO.js +2 -0
- package/dist/esm/{chunk-TJL47GIO.js.map → chunk-PM6QY3JO.js.map} +3 -3
- package/dist/esm/chunk-RKZVXVBN.js +2 -0
- package/dist/esm/chunk-RKZVXVBN.js.map +7 -0
- package/dist/esm/chunk-TXQZ5HLV.js +2 -0
- package/dist/esm/chunk-TXQZ5HLV.js.map +7 -0
- package/dist/esm/chunk-UKASIY6M.js +2 -0
- package/dist/esm/chunk-UKASIY6M.js.map +7 -0
- package/dist/esm/{chunk-OJQNLROL.js → chunk-UY6WJUNA.js} +2 -2
- package/dist/esm/chunk-V5O3TF57.js +2 -0
- package/dist/esm/{chunk-3KQE2PSJ.js.map → chunk-V5O3TF57.js.map} +3 -3
- package/dist/esm/chunk-VUNCI6A6.js +2 -0
- package/dist/esm/chunk-VUNCI6A6.js.map +7 -0
- package/dist/esm/{chunk-JBHRV364.js → chunk-VUPIJNG2.js} +2 -2
- package/dist/esm/chunk-W6BN5QLH.js +2 -0
- package/dist/esm/{chunk-ZNDCZM5A.js.map → chunk-W6BN5QLH.js.map} +2 -2
- package/dist/esm/chunk-WG5ORTIW.js +2 -0
- package/dist/esm/chunk-WG5ORTIW.js.map +7 -0
- package/dist/esm/chunk-WMVR2XBR.js +2 -0
- package/dist/esm/{chunk-XKSU3NLG.js.map → chunk-WMVR2XBR.js.map} +2 -2
- package/dist/esm/{chunk-NNZTSXKH.js → chunk-WX7SX5BN.js} +2 -2
- package/dist/esm/chunk-XOACTIBL.js +2 -0
- package/dist/esm/chunk-XOACTIBL.js.map +7 -0
- package/dist/esm/components/_internal/base-button.d.ts +11 -1
- package/dist/esm/components/_internal/base-button.d.ts.map +1 -1
- package/dist/esm/components/_internal/base-button.js +1 -1
- package/dist/esm/components/_internal/menu-context.d.ts +2 -0
- package/dist/esm/components/_internal/menu-context.d.ts.map +1 -1
- package/dist/esm/components/_internal/menu-context.js +1 -1
- package/dist/esm/components/_internal/pane-chrome.d.ts +17 -2
- package/dist/esm/components/_internal/pane-chrome.d.ts.map +1 -1
- package/dist/esm/components/_internal/pane-chrome.js +1 -1
- package/dist/esm/components/_internal/shell-bottom.js +1 -1
- package/dist/esm/components/_internal/shell-inspector.js +1 -1
- package/dist/esm/components/_internal/shell-sidebar.js +1 -1
- package/dist/esm/components/accordion.d.ts +2 -2
- package/dist/esm/components/accordion.d.ts.map +1 -1
- package/dist/esm/components/accordion.js +1 -1
- package/dist/esm/components/alert-dialog.d.ts.map +1 -1
- package/dist/esm/components/alert-dialog.js +1 -1
- package/dist/esm/components/avatar.d.ts +1 -1
- package/dist/esm/components/avatar.d.ts.map +1 -1
- package/dist/esm/components/avatar.js +1 -1
- package/dist/esm/components/avatar.props.d.ts +8 -0
- package/dist/esm/components/avatar.props.d.ts.map +1 -1
- package/dist/esm/components/avatar.props.js +1 -1
- package/dist/esm/components/blockquote.d.ts +1 -1
- package/dist/esm/components/blockquote.d.ts.map +1 -1
- package/dist/esm/components/blockquote.js +1 -1
- package/dist/esm/components/button.js +1 -1
- package/dist/esm/components/chatbar.d.ts.map +1 -1
- package/dist/esm/components/chatbar.js +1 -1
- package/dist/esm/components/checkbox-group.d.ts.map +1 -1
- package/dist/esm/components/checkbox-group.js +1 -1
- package/dist/esm/components/checkbox-group.primitive.d.ts +12 -5
- package/dist/esm/components/checkbox-group.primitive.d.ts.map +1 -1
- package/dist/esm/components/checkbox-group.primitive.js +1 -1
- package/dist/esm/components/checkbox.js +1 -1
- package/dist/esm/components/chip.d.ts.map +1 -1
- package/dist/esm/components/chip.js +1 -1
- package/dist/esm/components/code.d.ts.map +1 -1
- package/dist/esm/components/code.js +1 -1
- package/dist/esm/components/combobox.js +1 -1
- package/dist/esm/components/context-menu.d.ts.map +1 -1
- package/dist/esm/components/context-menu.js +1 -1
- package/dist/esm/components/dialog.d.ts +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.d.ts.map +1 -1
- package/dist/esm/components/dropdown-menu.js +1 -1
- package/dist/esm/components/icons.d.ts +3 -1
- package/dist/esm/components/icons.d.ts.map +1 -1
- package/dist/esm/components/icons.js +1 -1
- package/dist/esm/components/image.d.ts +23 -0
- package/dist/esm/components/image.d.ts.map +1 -0
- package/dist/esm/components/image.js +2 -0
- package/dist/esm/components/image.js.map +7 -0
- package/dist/esm/components/image.props.d.ts +19 -0
- package/dist/esm/components/image.props.d.ts.map +1 -0
- package/dist/esm/components/image.props.js +2 -0
- package/dist/esm/components/image.props.js.map +7 -0
- package/dist/esm/components/index.d.ts +2 -1
- package/dist/esm/components/index.d.ts.map +1 -1
- package/dist/esm/components/index.js +1 -1
- package/dist/esm/components/message-scroller.d.ts.map +1 -1
- package/dist/esm/components/message-scroller.js +1 -1
- package/dist/esm/components/navbar.d.ts.map +1 -1
- package/dist/esm/components/navbar.js +1 -1
- package/dist/esm/components/notice.d.ts +4 -1
- package/dist/esm/components/notice.d.ts.map +1 -1
- package/dist/esm/components/notice.js +1 -1
- package/dist/esm/components/progress.d.ts.map +1 -1
- package/dist/esm/components/progress.js +1 -1
- package/dist/esm/components/schemas/button.schema.d.ts +2 -2
- package/dist/esm/components/schemas/toggle.schema.d.ts +1 -1
- package/dist/esm/components/scroll-area.d.ts +3 -1
- package/dist/esm/components/scroll-area.d.ts.map +1 -1
- package/dist/esm/components/scroll-area.js +1 -1
- package/dist/esm/components/segmented-control.d.ts +3 -1
- package/dist/esm/components/segmented-control.d.ts.map +1 -1
- package/dist/esm/components/segmented-control.js +1 -1
- package/dist/esm/components/select.d.ts +1 -2
- package/dist/esm/components/select.d.ts.map +1 -1
- package/dist/esm/components/select.js +1 -1
- package/dist/esm/components/separator.d.ts.map +1 -1
- package/dist/esm/components/separator.js +1 -1
- package/dist/esm/components/sheet.d.ts +1 -0
- 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 +12 -1
- package/dist/esm/components/shell.d.ts.map +1 -1
- package/dist/esm/components/shell.js +1 -1
- package/dist/esm/components/sidebar.d.ts.map +1 -1
- package/dist/esm/components/sidebar.js +1 -1
- package/dist/esm/components/slider.d.ts.map +1 -1
- package/dist/esm/components/slider.js +1 -1
- package/dist/esm/components/spinner.d.ts.map +1 -1
- package/dist/esm/components/spinner.js +1 -1
- package/dist/esm/components/table.d.ts.map +1 -1
- package/dist/esm/components/table.js +1 -1
- package/dist/esm/components/tabs.d.ts.map +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/toggle.d.ts +3 -2
- package/dist/esm/components/toggle.d.ts.map +1 -1
- package/dist/esm/components/toggle.js +1 -1
- package/dist/esm/components/toolbar.d.ts +80 -8
- package/dist/esm/components/toolbar.d.ts.map +1 -1
- package/dist/esm/components/toolbar.js +1 -1
- package/dist/esm/components/virtual-menu.d.ts +3 -5
- package/dist/esm/components/virtual-menu.d.ts.map +1 -1
- package/dist/esm/components/virtual-menu.js +1 -1
- package/dist/esm/helpers/extract-margin-props.d.ts +7 -7
- package/dist/esm/helpers/index.js +1 -1
- package/dist/esm/hooks/index.js +1 -1
- package/dist/esm/hooks/use-scroll-edges.d.ts +4 -2
- package/dist/esm/hooks/use-scroll-edges.d.ts.map +1 -1
- package/dist/esm/hooks/use-scroll-edges.js +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/props/index.js +1 -1
- package/package.json +1 -1
- package/src/components/_internal/base-button.css +6 -0
- package/src/components/_internal/base-button.tsx +56 -17
- package/src/components/_internal/base-sidebar-menu.css +8 -0
- package/src/components/_internal/menu-context.tsx +11 -0
- package/src/components/_internal/pane-chrome.tsx +45 -8
- package/src/components/accordion.css +35 -4
- package/src/components/accordion.tsx +12 -16
- package/src/components/alert-dialog.tsx +59 -161
- package/src/components/avatar.props.tsx +6 -0
- package/src/components/avatar.tsx +57 -71
- package/src/components/blockquote.tsx +8 -9
- package/src/components/chatbar.tsx +27 -20
- package/src/components/checkbox-group.primitive.tsx +40 -51
- package/src/components/checkbox-group.tsx +1 -9
- package/src/components/chip.css +18 -20
- package/src/components/chip.tsx +3 -4
- package/src/components/code.tsx +3 -2
- package/src/components/combobox.css +13 -0
- package/src/components/context-menu.tsx +23 -5
- package/src/components/dialog.tsx +59 -160
- package/src/components/dropdown-menu.tsx +8 -5
- package/src/components/icons.tsx +11 -1
- package/src/components/image.css +33 -0
- package/src/components/image.props.ts +18 -0
- package/src/components/image.tsx +71 -0
- package/src/components/index.css +1 -0
- package/src/components/index.tsx +8 -0
- package/src/components/message-scroller.tsx +48 -26
- package/src/components/navbar.tsx +34 -69
- package/src/components/notice.tsx +6 -3
- package/src/components/progress.tsx +6 -3
- package/src/components/scroll-area.css +28 -2
- package/src/components/scroll-area.tsx +49 -3
- package/src/components/segmented-control.css +8 -130
- package/src/components/segmented-control.tsx +36 -5
- package/src/components/select.tsx +100 -32
- package/src/components/separator.tsx +13 -1
- package/src/components/sheet.css +7 -6
- package/src/components/sheet.tsx +76 -143
- package/src/components/shell.css +26 -0
- package/src/components/shell.tsx +29 -8
- package/src/components/sidebar.tsx +27 -16
- package/src/components/slider.css +1 -0
- package/src/components/slider.tsx +54 -44
- package/src/components/spinner.css +19 -1
- package/src/components/spinner.tsx +21 -11
- package/src/components/table.tsx +18 -5
- package/src/components/tabs.css +34 -0
- package/src/components/tabs.tsx +0 -2
- package/src/components/text-area.css +2 -1
- package/src/components/text-area.tsx +1 -1
- package/src/components/text-field.tsx +1 -1
- package/src/components/toggle.tsx +21 -39
- package/src/components/toolbar.css +34 -0
- package/src/components/toolbar.tsx +432 -23
- package/src/components/virtual-menu.tsx +110 -37
- package/src/hooks/use-scroll-edges.ts +11 -2
- package/src/styles/tokens/color.css +1 -22
- package/src/styles/utilities/truncate.css +10 -0
- package/styles.css +252 -208
- package/tokens/base.css +0 -21
- package/tokens.css +0 -21
- package/utilities.css +5 -0
- package/dist/esm/chunk-23KT3D2Z.js +0 -2
- package/dist/esm/chunk-3JA7SJDT.js +0 -2
- package/dist/esm/chunk-3JA7SJDT.js.map +0 -7
- package/dist/esm/chunk-3KQE2PSJ.js +0 -2
- package/dist/esm/chunk-3YWVE5GL.js +0 -2
- package/dist/esm/chunk-3YWVE5GL.js.map +0 -7
- package/dist/esm/chunk-5BWLY27A.js +0 -2
- package/dist/esm/chunk-5BWLY27A.js.map +0 -7
- package/dist/esm/chunk-6CK7UTNH.js +0 -2
- package/dist/esm/chunk-6CK7UTNH.js.map +0 -7
- package/dist/esm/chunk-6RK26HIY.js +0 -2
- package/dist/esm/chunk-6RK26HIY.js.map +0 -7
- package/dist/esm/chunk-7ESWH773.js +0 -2
- package/dist/esm/chunk-7ESWH773.js.map +0 -7
- package/dist/esm/chunk-7SS4UUJH.js +0 -2
- package/dist/esm/chunk-A3YQIJDA.js +0 -2
- package/dist/esm/chunk-A3YQIJDA.js.map +0 -7
- package/dist/esm/chunk-AB3QCCUM.js +0 -2
- package/dist/esm/chunk-AB3QCCUM.js.map +0 -7
- package/dist/esm/chunk-BEP4AH5V.js +0 -2
- package/dist/esm/chunk-BEP4AH5V.js.map +0 -7
- package/dist/esm/chunk-D3U4MWDZ.js +0 -1
- package/dist/esm/chunk-DBROSD2J.js +0 -2
- package/dist/esm/chunk-DBROSD2J.js.map +0 -7
- package/dist/esm/chunk-DSPYHO3L.js +0 -2
- package/dist/esm/chunk-E2D2VWUI.js +0 -2
- package/dist/esm/chunk-E2D2VWUI.js.map +0 -7
- package/dist/esm/chunk-EMNSA65L.js +0 -2
- package/dist/esm/chunk-EMNSA65L.js.map +0 -7
- package/dist/esm/chunk-FFG32ERA.js.map +0 -7
- package/dist/esm/chunk-FHPHEIYJ.js +0 -2
- package/dist/esm/chunk-FHPHEIYJ.js.map +0 -7
- package/dist/esm/chunk-FJFBM7HW.js +0 -2
- package/dist/esm/chunk-FJFBM7HW.js.map +0 -7
- package/dist/esm/chunk-HIKMKGPT.js +0 -2
- package/dist/esm/chunk-HIKMKGPT.js.map +0 -7
- package/dist/esm/chunk-IJRBX6EV.js +0 -2
- package/dist/esm/chunk-IJRBX6EV.js.map +0 -7
- package/dist/esm/chunk-KMDXIZAG.js +0 -2
- package/dist/esm/chunk-KMDXIZAG.js.map +0 -7
- package/dist/esm/chunk-LC5AK2ZD.js +0 -2
- package/dist/esm/chunk-LC5AK2ZD.js.map +0 -7
- package/dist/esm/chunk-LHIS3UKQ.js +0 -2
- package/dist/esm/chunk-LHIS3UKQ.js.map +0 -7
- package/dist/esm/chunk-NLXJZJNN.js +0 -2
- package/dist/esm/chunk-NLXJZJNN.js.map +0 -7
- package/dist/esm/chunk-QOHJIF25.js +0 -2
- package/dist/esm/chunk-QOHJIF25.js.map +0 -7
- package/dist/esm/chunk-R4XJNQX5.js +0 -2
- package/dist/esm/chunk-R4XJNQX5.js.map +0 -7
- package/dist/esm/chunk-TJL47GIO.js +0 -2
- package/dist/esm/chunk-V32EP3S7.js +0 -2
- package/dist/esm/chunk-V32EP3S7.js.map +0 -7
- package/dist/esm/chunk-WKSXMFFF.js +0 -2
- package/dist/esm/chunk-WKSXMFFF.js.map +0 -7
- package/dist/esm/chunk-XKSU3NLG.js +0 -2
- package/dist/esm/chunk-Y3JYEEFB.js +0 -2
- package/dist/esm/chunk-YK3ZUMRQ.js +0 -2
- package/dist/esm/chunk-YK3ZUMRQ.js.map +0 -7
- package/dist/esm/chunk-YZM54IJE.js +0 -2
- package/dist/esm/chunk-YZM54IJE.js.map +0 -7
- package/dist/esm/chunk-ZJI2IK7C.js +0 -2
- package/dist/esm/chunk-ZJI2IK7C.js.map +0 -7
- package/dist/esm/chunk-ZNDCZM5A.js +0 -2
- /package/dist/esm/{chunk-T62PRLPN.js.map → chunk-KEGCX5VM.js.map} +0 -0
- /package/dist/esm/{chunk-D3U4MWDZ.js.map → chunk-MYYXOFU5.js.map} +0 -0
- /package/dist/esm/{chunk-HKPXDQ2B.js.map → chunk-NC3CJUE3.js.map} +0 -0
- /package/dist/esm/{chunk-OJQNLROL.js.map → chunk-UY6WJUNA.js.map} +0 -0
- /package/dist/esm/{chunk-JBHRV364.js.map → chunk-VUPIJNG2.js.map} +0 -0
- /package/dist/esm/{chunk-NNZTSXKH.js.map → chunk-WX7SX5BN.js.map} +0 -0
|
@@ -20,6 +20,11 @@ const avatarPropDefs = {
|
|
|
20
20
|
* Cannot be used together with `badge`.
|
|
21
21
|
*/
|
|
22
22
|
status: { type: 'enum', values: accentColors, default: undefined },
|
|
23
|
+
/**
|
|
24
|
+
* The words the status dot stands for, such as "Online". A screen reader reads them with the
|
|
25
|
+
* avatar. Without it the dot is hidden from screen readers.
|
|
26
|
+
*/
|
|
27
|
+
statusLabel: { type: 'string', default: undefined },
|
|
23
28
|
/**
|
|
24
29
|
* Custom badge content. Renders at the bottom-right corner.
|
|
25
30
|
* Cannot be used together with `status`.
|
|
@@ -36,6 +41,7 @@ const avatarPropDefs = {
|
|
|
36
41
|
variant: PropDef<(typeof variants)[number]>;
|
|
37
42
|
fallback: PropDef<React.ReactNode>;
|
|
38
43
|
status: PropDef<(typeof accentColors)[number] | undefined>;
|
|
44
|
+
statusLabel: PropDef<string | undefined>;
|
|
39
45
|
badge: PropDef<React.ReactNode>;
|
|
40
46
|
fit: PropDef<(typeof objectFitValues)[number]>;
|
|
41
47
|
};
|
|
@@ -13,43 +13,38 @@ import type { ComponentPropsWithout, RemovedProps } from '../helpers/component-p
|
|
|
13
13
|
import type { GetPropDefTypes } from '../props/prop-def.js';
|
|
14
14
|
|
|
15
15
|
interface AvatarProps extends AvatarImplProps {}
|
|
16
|
-
const Avatar = React.forwardRef<
|
|
16
|
+
const Avatar = React.forwardRef<AvatarElement, AvatarProps>((ownProps, forwardedRef) => {
|
|
17
17
|
// An unset size follows the Theme, like a control. Sizes above 4 are only explicit.
|
|
18
18
|
const props = useThemeSizeProps(ownProps, avatarPropDefs.size);
|
|
19
|
-
const {
|
|
20
|
-
asChild,
|
|
21
|
-
children,
|
|
22
|
-
className,
|
|
23
|
-
style,
|
|
24
|
-
color,
|
|
25
|
-
radius,
|
|
26
|
-
status,
|
|
27
|
-
badge,
|
|
28
|
-
...imageProps
|
|
29
|
-
} = extractProps(props, avatarPropDefs);
|
|
19
|
+
const { asChild, children, className, style, color, radius, status, statusLabel, badge, ...imageProps } = extractProps(props, avatarPropDefs);
|
|
30
20
|
|
|
31
21
|
if (process.env.NODE_ENV !== 'production') {
|
|
32
22
|
if (status !== undefined && badge !== undefined) {
|
|
33
|
-
console.warn(
|
|
34
|
-
'Avatar: Cannot use both `status` and `badge` props together. ' +
|
|
35
|
-
'The `badge` prop will be used and `status` will be ignored.'
|
|
36
|
-
);
|
|
23
|
+
console.warn('Avatar: Cannot use both `status` and `badge` props together. ' + 'The `badge` prop will be used and `status` will be ignored.');
|
|
37
24
|
}
|
|
38
25
|
}
|
|
39
26
|
|
|
40
27
|
// Cheap boolean checks — no memoization needed
|
|
41
|
-
const isDisabled =
|
|
42
|
-
asChild &&
|
|
43
|
-
children != null &&
|
|
44
|
-
React.isValidElement(children) &&
|
|
45
|
-
((children.props as any).disabled === true ||
|
|
46
|
-
(children.props as any)['data-disabled'] === true);
|
|
28
|
+
const isDisabled = asChild && children != null && React.isValidElement(children) && ((children.props as any).disabled === true || (children.props as any)['data-disabled'] === true);
|
|
47
29
|
|
|
48
30
|
const hasIndicator = badge !== undefined || status !== undefined;
|
|
49
31
|
|
|
32
|
+
const indicator =
|
|
33
|
+
badge !== undefined ? (
|
|
34
|
+
<span className="kui-AvatarBadge">{badge}</span>
|
|
35
|
+
) : status !== undefined ? (
|
|
36
|
+
<span
|
|
37
|
+
className="kui-AvatarStatus"
|
|
38
|
+
data-accent-color={status}
|
|
39
|
+
role={statusLabel ? 'img' : undefined}
|
|
40
|
+
aria-label={statusLabel || undefined}
|
|
41
|
+
aria-hidden={statusLabel ? undefined : true}
|
|
42
|
+
/>
|
|
43
|
+
) : null;
|
|
44
|
+
|
|
50
45
|
return (
|
|
51
|
-
// TODO as a rule, should we rather spread the props on root?
|
|
52
46
|
<AvatarPrimitive.Root
|
|
47
|
+
ref={forwardedRef}
|
|
53
48
|
data-accent-color={color}
|
|
54
49
|
data-radius={radius}
|
|
55
50
|
data-disabled={isDisabled || undefined}
|
|
@@ -58,67 +53,58 @@ const Avatar = React.forwardRef<AvatarImplElement, AvatarProps>((ownProps, forwa
|
|
|
58
53
|
style={style}
|
|
59
54
|
asChild={asChild}
|
|
60
55
|
>
|
|
61
|
-
{
|
|
62
|
-
{
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
56
|
+
{/* With asChild, Slot takes exactly one child, so the indicator goes inside it. */}
|
|
57
|
+
{getSubtree(
|
|
58
|
+
{ asChild, children },
|
|
59
|
+
<>
|
|
60
|
+
<AvatarImpl {...imageProps} />
|
|
61
|
+
{indicator}
|
|
62
|
+
</>,
|
|
63
|
+
)}
|
|
67
64
|
</AvatarPrimitive.Root>
|
|
68
65
|
);
|
|
69
66
|
});
|
|
70
67
|
Avatar.displayName = 'Avatar';
|
|
71
68
|
|
|
72
|
-
type
|
|
69
|
+
type AvatarElement = React.ElementRef<typeof AvatarPrimitive.Root>;
|
|
73
70
|
type AvatarOwnProps = GetPropDefTypes<typeof avatarPropDefs>;
|
|
74
71
|
|
|
75
|
-
interface AvatarImplProps
|
|
76
|
-
extends ComponentPropsWithout<typeof AvatarPrimitive.Image, RemovedProps>,
|
|
77
|
-
AvatarOwnProps {
|
|
72
|
+
interface AvatarImplProps extends ComponentPropsWithout<typeof AvatarPrimitive.Image, RemovedProps>, AvatarOwnProps {
|
|
78
73
|
// TODO: See if we can automate making prop defs with `required: true` non nullable
|
|
79
74
|
fallback: NonNullable<AvatarOwnProps['fallback']>;
|
|
80
75
|
}
|
|
81
76
|
|
|
82
|
-
const AvatarImpl = React.memo(
|
|
83
|
-
React.
|
|
84
|
-
({ fallback, onLoadingStatusChange, ...imageProps }, forwardedRef) => {
|
|
85
|
-
const [status, setStatus] = React.useState<'idle' | 'loading' | 'loaded' | 'error'>('idle');
|
|
77
|
+
const AvatarImpl = React.memo(({ fallback, onLoadingStatusChange, ...imageProps }: AvatarImplProps) => {
|
|
78
|
+
const [status, setStatus] = React.useState<'idle' | 'loading' | 'loaded' | 'error'>('idle');
|
|
86
79
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
},
|
|
92
|
-
[onLoadingStatusChange],
|
|
93
|
-
);
|
|
94
|
-
|
|
95
|
-
return (
|
|
96
|
-
<>
|
|
97
|
-
{status === 'idle' || status === 'loading' ? <span className="kui-AvatarFallback" /> : null}
|
|
98
|
-
|
|
99
|
-
{status === 'error' ? (
|
|
100
|
-
<AvatarPrimitive.Fallback
|
|
101
|
-
className={classNames('kui-AvatarFallback', {
|
|
102
|
-
'kui-one-letter': typeof fallback === 'string' && fallback.length === 1,
|
|
103
|
-
'kui-two-letters': typeof fallback === 'string' && fallback.length === 2,
|
|
104
|
-
})}
|
|
105
|
-
delayMs={0}
|
|
106
|
-
>
|
|
107
|
-
{fallback}
|
|
108
|
-
</AvatarPrimitive.Fallback>
|
|
109
|
-
) : null}
|
|
110
|
-
|
|
111
|
-
<AvatarPrimitive.Image
|
|
112
|
-
ref={forwardedRef}
|
|
113
|
-
className="kui-AvatarImage"
|
|
114
|
-
{...imageProps}
|
|
115
|
-
onLoadingStatusChange={handleLoadingStatusChange}
|
|
116
|
-
/>
|
|
117
|
-
</>
|
|
118
|
-
);
|
|
80
|
+
const handleLoadingStatusChange = React.useCallback(
|
|
81
|
+
(newStatus: 'idle' | 'loading' | 'loaded' | 'error') => {
|
|
82
|
+
onLoadingStatusChange?.(newStatus);
|
|
83
|
+
setStatus(newStatus);
|
|
119
84
|
},
|
|
120
|
-
|
|
121
|
-
);
|
|
85
|
+
[onLoadingStatusChange],
|
|
86
|
+
);
|
|
87
|
+
|
|
88
|
+
return (
|
|
89
|
+
<>
|
|
90
|
+
{status === 'idle' || status === 'loading' ? <span className="kui-AvatarFallback" /> : null}
|
|
91
|
+
|
|
92
|
+
{status === 'error' ? (
|
|
93
|
+
<AvatarPrimitive.Fallback
|
|
94
|
+
className={classNames('kui-AvatarFallback', {
|
|
95
|
+
'kui-one-letter': typeof fallback === 'string' && fallback.length === 1,
|
|
96
|
+
'kui-two-letters': typeof fallback === 'string' && fallback.length === 2,
|
|
97
|
+
})}
|
|
98
|
+
delayMs={0}
|
|
99
|
+
>
|
|
100
|
+
{fallback}
|
|
101
|
+
</AvatarPrimitive.Fallback>
|
|
102
|
+
) : null}
|
|
103
|
+
|
|
104
|
+
<AvatarPrimitive.Image className="kui-AvatarImage" {...imageProps} onLoadingStatusChange={handleLoadingStatusChange} />
|
|
105
|
+
</>
|
|
106
|
+
);
|
|
107
|
+
});
|
|
122
108
|
|
|
123
109
|
AvatarImpl.displayName = 'AvatarImpl';
|
|
124
110
|
|
|
@@ -2,9 +2,9 @@ import * as React from 'react';
|
|
|
2
2
|
import classNames from 'classnames';
|
|
3
3
|
import { Slot } from 'radix-ui';
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { blockquotePropDefs } from './blockquote.props.js';
|
|
6
|
+
import { extractProps } from '../helpers/extract-props.js';
|
|
6
7
|
|
|
7
|
-
import type { blockquotePropDefs } from './blockquote.props.js';
|
|
8
8
|
import type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';
|
|
9
9
|
import type { GetPropDefTypes } from '../props/prop-def.js';
|
|
10
10
|
|
|
@@ -14,17 +14,16 @@ interface BlockquoteProps
|
|
|
14
14
|
extends ComponentPropsWithout<'blockquote', RemovedProps>,
|
|
15
15
|
BlockQuoteOwnProps {}
|
|
16
16
|
const Blockquote = React.forwardRef<BlockquoteElement, BlockquoteProps>((props, forwardedRef) => {
|
|
17
|
-
|
|
17
|
+
// Only Blockquote's own props style it. It wears Text's classes, so it reads like Text.
|
|
18
|
+
const { asChild, className, color, ...blockquoteProps } = extractProps(props, blockquotePropDefs);
|
|
18
19
|
const Comp = asChild ? Slot.Root : 'blockquote';
|
|
19
20
|
return (
|
|
20
|
-
<
|
|
21
|
-
|
|
21
|
+
<Comp
|
|
22
|
+
data-accent-color={color}
|
|
22
23
|
{...blockquoteProps}
|
|
23
24
|
ref={forwardedRef}
|
|
24
|
-
className={classNames('kui-Blockquote', className)}
|
|
25
|
-
|
|
26
|
-
<Comp>{children}</Comp>
|
|
27
|
-
</Text>
|
|
25
|
+
className={classNames('kui-Text', 'kui-Blockquote', className)}
|
|
26
|
+
/>
|
|
28
27
|
);
|
|
29
28
|
});
|
|
30
29
|
Blockquote.displayName = 'Blockquote';
|
|
@@ -4,7 +4,7 @@ import { useComposedRefs } from 'radix-ui/internal';
|
|
|
4
4
|
import { useDropzone } from 'react-dropzone';
|
|
5
5
|
|
|
6
6
|
import { Button } from './button.js';
|
|
7
|
-
import { CloseIcon, FileTextIcon } from './icons.js';
|
|
7
|
+
import { CloseIcon, FileTextIcon, PaperclipIcon } from './icons.js';
|
|
8
8
|
import { Flex } from './flex.js';
|
|
9
9
|
import { ScrollArea } from './scroll-area.js';
|
|
10
10
|
import { Slot } from './slot.js';
|
|
@@ -1216,28 +1216,35 @@ interface AttachTriggerProps extends React.ComponentPropsWithoutRef<'button'> {
|
|
|
1216
1216
|
}
|
|
1217
1217
|
|
|
1218
1218
|
const AttachTrigger = React.forwardRef<HTMLButtonElement, AttachTriggerProps>((props, forwardedRef) => {
|
|
1219
|
-
|
|
1219
|
+
// The HTML `color` attribute is dropped: Button reads `color` as an accent colour.
|
|
1220
|
+
const { asChild, accept, multiple, disabled: disabledProp, onPointerDown, onClick, children, color: _color, ...buttonProps } = props;
|
|
1220
1221
|
const ctx = useChatbarContext();
|
|
1221
1222
|
const disabled = disabledProp || ctx.disabled || ctx.readOnly;
|
|
1222
|
-
const
|
|
1223
|
+
const triggerProps = {
|
|
1224
|
+
...buttonProps,
|
|
1225
|
+
ref: forwardedRef,
|
|
1226
|
+
className: classNames('kui-ChatbarAttachTrigger', buttonProps.className),
|
|
1227
|
+
type: buttonProps.type ?? 'button',
|
|
1228
|
+
'aria-label': buttonProps['aria-label'] ?? 'Add attachments',
|
|
1229
|
+
disabled,
|
|
1230
|
+
onPointerDown: (event: React.PointerEvent<HTMLButtonElement>) => {
|
|
1231
|
+
onPointerDown?.(event);
|
|
1232
|
+
if (!disabled && !event.defaultPrevented) ctx.beginFilePickerPress();
|
|
1233
|
+
},
|
|
1234
|
+
onClick: (event: React.MouseEvent<HTMLButtonElement>) => {
|
|
1235
|
+
onClick?.(event);
|
|
1236
|
+
if (disabled || event.defaultPrevented) return;
|
|
1237
|
+
ctx.openFilePicker({ accept, multiple });
|
|
1238
|
+
},
|
|
1239
|
+
} as const;
|
|
1240
|
+
|
|
1241
|
+
if (asChild) return <Slot {...triggerProps}>{children}</Slot>;
|
|
1242
|
+
|
|
1243
|
+
// Without asChild, the trigger is a quiet icon-only Button at the Chatbar's size.
|
|
1223
1244
|
return (
|
|
1224
|
-
<
|
|
1225
|
-
{
|
|
1226
|
-
|
|
1227
|
-
className={classNames('kui-ChatbarAttachTrigger', buttonProps.className)}
|
|
1228
|
-
type={buttonProps.type ?? 'button'}
|
|
1229
|
-
aria-label={buttonProps['aria-label'] ?? 'Add attachments'}
|
|
1230
|
-
disabled={disabled}
|
|
1231
|
-
onPointerDown={(event: React.PointerEvent<HTMLButtonElement>) => {
|
|
1232
|
-
onPointerDown?.(event);
|
|
1233
|
-
if (!disabled && !event.defaultPrevented) ctx.beginFilePickerPress();
|
|
1234
|
-
}}
|
|
1235
|
-
onClick={(event: React.MouseEvent<HTMLButtonElement>) => {
|
|
1236
|
-
onClick?.(event);
|
|
1237
|
-
if (disabled || event.defaultPrevented) return;
|
|
1238
|
-
ctx.openFilePicker({ accept, multiple });
|
|
1239
|
-
}}
|
|
1240
|
-
/>
|
|
1245
|
+
<Button iconOnly emphasis="quiet" color="gray" size={ctx.size} {...triggerProps}>
|
|
1246
|
+
{children ?? <PaperclipIcon aria-hidden />}
|
|
1247
|
+
</Button>
|
|
1241
1248
|
);
|
|
1242
1249
|
});
|
|
1243
1250
|
AttachTrigger.displayName = 'Chatbar.AttachTrigger';
|
|
@@ -2,13 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import { Checkbox as CheckboxPrimitive, Direction } from 'radix-ui';
|
|
5
|
-
import {
|
|
6
|
-
Context,
|
|
7
|
-
Primitive,
|
|
8
|
-
useComposedRefs,
|
|
9
|
-
RovingFocus,
|
|
10
|
-
useControllableState,
|
|
11
|
-
} from 'radix-ui/internal';
|
|
5
|
+
import { Context, Primitive, useControllableState } from 'radix-ui/internal';
|
|
12
6
|
|
|
13
7
|
const { useDirection } = Direction;
|
|
14
8
|
|
|
@@ -20,9 +14,8 @@ const CHECKBOX_GROUP_NAME = 'CheckboxGroup';
|
|
|
20
14
|
type ScopedProps<P> = P & { __scopeCheckboxGroup?: Context.Scope };
|
|
21
15
|
const [createCheckboxGroupContext, createCheckboxGroupScope] = Context.createContextScope(
|
|
22
16
|
CHECKBOX_GROUP_NAME,
|
|
23
|
-
[
|
|
17
|
+
[CheckboxPrimitive.createCheckboxScope],
|
|
24
18
|
);
|
|
25
|
-
const useRovingFocusGroupScope = RovingFocus.createRovingFocusGroupScope();
|
|
26
19
|
const useCheckboxScope = CheckboxPrimitive.createCheckboxScope();
|
|
27
20
|
|
|
28
21
|
type CheckboxGroupContextValue = {
|
|
@@ -38,15 +31,22 @@ const [CheckboxGroupProvider, useCheckboxGroupContext] =
|
|
|
38
31
|
createCheckboxGroupContext<CheckboxGroupContextValue>(CHECKBOX_GROUP_NAME);
|
|
39
32
|
|
|
40
33
|
type CheckboxGroupElement = React.ElementRef<typeof Primitive.div>;
|
|
41
|
-
type RovingFocusGroupProps = React.ComponentPropsWithoutRef<typeof RovingFocus.Root>;
|
|
42
34
|
type PrimitiveDivProps = React.ComponentPropsWithoutRef<typeof Primitive.div>;
|
|
43
35
|
interface CheckboxGroupProps extends PrimitiveDivProps {
|
|
44
36
|
name?: CheckboxGroupContextValue['name'];
|
|
45
37
|
required?: React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>['required'];
|
|
46
38
|
disabled?: React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>['disabled'];
|
|
47
|
-
dir?:
|
|
48
|
-
|
|
49
|
-
|
|
39
|
+
dir?: 'ltr' | 'rtl';
|
|
40
|
+
/**
|
|
41
|
+
* @deprecated Has no effect. Each checkbox is its own tab stop, as with native checkboxes,
|
|
42
|
+
* so there is no arrow-key navigation to orient.
|
|
43
|
+
*/
|
|
44
|
+
orientation?: 'horizontal' | 'vertical';
|
|
45
|
+
/**
|
|
46
|
+
* @deprecated Has no effect. Each checkbox is its own tab stop, as with native checkboxes,
|
|
47
|
+
* so there is no arrow-key navigation to loop.
|
|
48
|
+
*/
|
|
49
|
+
loop?: boolean;
|
|
50
50
|
defaultValue?: string[];
|
|
51
51
|
value?: CheckboxGroupContextValue['value'];
|
|
52
52
|
onValueChange?: (value: string[]) => void;
|
|
@@ -61,13 +61,12 @@ const CheckboxGroup = React.forwardRef<CheckboxGroupElement, CheckboxGroupProps>
|
|
|
61
61
|
value: valueProp,
|
|
62
62
|
required = false,
|
|
63
63
|
disabled = false,
|
|
64
|
-
orientation,
|
|
64
|
+
orientation: _orientation,
|
|
65
65
|
dir,
|
|
66
|
-
loop
|
|
66
|
+
loop: _loop,
|
|
67
67
|
onValueChange,
|
|
68
68
|
...groupProps
|
|
69
69
|
} = props;
|
|
70
|
-
const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeCheckboxGroup);
|
|
71
70
|
const direction = useDirection(dir);
|
|
72
71
|
const [value = [], setValue] = useControllableState({
|
|
73
72
|
prop: valueProp,
|
|
@@ -96,21 +95,13 @@ const CheckboxGroup = React.forwardRef<CheckboxGroupElement, CheckboxGroupProps>
|
|
|
96
95
|
onItemCheck={handleItemCheck}
|
|
97
96
|
onItemUncheck={handleItemUncheck}
|
|
98
97
|
>
|
|
99
|
-
<
|
|
100
|
-
|
|
101
|
-
{
|
|
102
|
-
orientation={orientation}
|
|
98
|
+
<Primitive.div
|
|
99
|
+
role="group"
|
|
100
|
+
data-disabled={disabled ? '' : undefined}
|
|
103
101
|
dir={direction}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
role="group"
|
|
108
|
-
data-disabled={disabled ? '' : undefined}
|
|
109
|
-
dir={direction}
|
|
110
|
-
{...groupProps}
|
|
111
|
-
ref={forwardedRef}
|
|
112
|
-
/>
|
|
113
|
-
</RovingFocus.Root>
|
|
102
|
+
{...groupProps}
|
|
103
|
+
ref={forwardedRef}
|
|
104
|
+
/>
|
|
114
105
|
</CheckboxGroupProvider>
|
|
115
106
|
);
|
|
116
107
|
},
|
|
@@ -136,31 +127,29 @@ const CheckboxGroupItem = React.forwardRef<CheckboxGroupItemElement, CheckboxGro
|
|
|
136
127
|
const { __scopeCheckboxGroup, disabled, ...itemProps } = props;
|
|
137
128
|
const context = useCheckboxGroupContext(ITEM_NAME, __scopeCheckboxGroup);
|
|
138
129
|
const isDisabled = context.disabled || disabled;
|
|
139
|
-
const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeCheckboxGroup);
|
|
140
130
|
const checkboxScope = useCheckboxScope(__scopeCheckboxGroup);
|
|
141
|
-
const ref = React.useRef<React.ElementRef<typeof CheckboxPrimitive.Root>>(null);
|
|
142
|
-
const composedRefs = useComposedRefs(forwardedRef, ref);
|
|
143
131
|
const checked = context.value?.includes(itemProps.value);
|
|
132
|
+
// A required group needs at least one box checked, not every box: the items are
|
|
133
|
+
// required only while none is checked.
|
|
134
|
+
const isRequired = context.required && (context.value?.length ?? 0) === 0;
|
|
144
135
|
|
|
145
136
|
return (
|
|
146
|
-
<
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
/>
|
|
163
|
-
</RovingFocus.Item>
|
|
137
|
+
<CheckboxPrimitive.Root
|
|
138
|
+
name={context.name}
|
|
139
|
+
disabled={isDisabled}
|
|
140
|
+
required={isRequired}
|
|
141
|
+
checked={checked}
|
|
142
|
+
{...checkboxScope}
|
|
143
|
+
{...itemProps}
|
|
144
|
+
ref={forwardedRef}
|
|
145
|
+
onCheckedChange={(checked) => {
|
|
146
|
+
if (checked) {
|
|
147
|
+
context.onItemCheck(props.value);
|
|
148
|
+
} else {
|
|
149
|
+
context.onItemUncheck(props.value);
|
|
150
|
+
}
|
|
151
|
+
}}
|
|
152
|
+
/>
|
|
164
153
|
);
|
|
165
154
|
},
|
|
166
155
|
);
|
|
@@ -76,21 +76,13 @@ const CheckboxGroupItem = React.forwardRef<CheckboxGroupItemElement, CheckboxGro
|
|
|
76
76
|
const { __scopeCheckboxGroup, children, className, style, ...props } = _props;
|
|
77
77
|
const { size } = useCheckboxGroupContext('CheckboxGroupItem', __scopeCheckboxGroup);
|
|
78
78
|
|
|
79
|
-
// Helper to safely convert size to Text-compatible size
|
|
80
|
-
const getTextSize = (sizeValue: any): '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' => {
|
|
81
|
-
if (typeof sizeValue === 'string' && /^[1-9]$/.test(sizeValue)) {
|
|
82
|
-
return sizeValue as any;
|
|
83
|
-
}
|
|
84
|
-
return '3';
|
|
85
|
-
};
|
|
86
|
-
|
|
87
79
|
// Render `<Text as="label">` if children are provided, otherwise render
|
|
88
80
|
// the solo checkbox to allow building out your custom layouts with it.
|
|
89
81
|
if (children) {
|
|
90
82
|
return (
|
|
91
83
|
<Text
|
|
92
84
|
as="label"
|
|
93
|
-
size={
|
|
85
|
+
size={size}
|
|
94
86
|
className={classNames('kui-CheckboxGroupItem', className)}
|
|
95
87
|
style={style}
|
|
96
88
|
>
|
package/src/components/chip.css
CHANGED
|
@@ -19,6 +19,20 @@
|
|
|
19
19
|
|
|
20
20
|
isolation: isolate;
|
|
21
21
|
|
|
22
|
+
/* An icon is one line tall, so it never changes the chip's height. */
|
|
23
|
+
/* stylelint-disable-next-line selector-max-type */
|
|
24
|
+
& :where(svg) {
|
|
25
|
+
flex: none;
|
|
26
|
+
width: var(--chip-icon-size);
|
|
27
|
+
height: var(--chip-icon-size);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/* A chip with a tooltip is focusable, and shows the ring every control does. */
|
|
31
|
+
&:where(:focus-visible) {
|
|
32
|
+
outline: var(--focus-ring-width) solid var(--focus-8);
|
|
33
|
+
outline-offset: var(--focus-ring-offset);
|
|
34
|
+
}
|
|
35
|
+
|
|
22
36
|
/* Forced colors support */
|
|
23
37
|
@media (forced-colors: active) {
|
|
24
38
|
border: 1px solid CanvasText;
|
|
@@ -37,6 +51,7 @@
|
|
|
37
51
|
@breakpoints {
|
|
38
52
|
.kui-Chip {
|
|
39
53
|
&:where(.kui-r-size-1) {
|
|
54
|
+
--chip-icon-size: var(--icon-size-1);
|
|
40
55
|
font-size: var(--font-size-1);
|
|
41
56
|
line-height: var(--line-height-1);
|
|
42
57
|
letter-spacing: var(--letter-spacing-1);
|
|
@@ -45,6 +60,7 @@
|
|
|
45
60
|
border-radius: max(calc(var(--radius-1) * var(--spacing-multiplier-medium)), var(--radius-full));
|
|
46
61
|
}
|
|
47
62
|
&:where(.kui-r-size-2) {
|
|
63
|
+
--chip-icon-size: var(--icon-size-2);
|
|
48
64
|
font-size: var(--font-size-1);
|
|
49
65
|
line-height: var(--line-height-1);
|
|
50
66
|
letter-spacing: var(--letter-spacing-1);
|
|
@@ -57,6 +73,7 @@
|
|
|
57
73
|
}
|
|
58
74
|
}
|
|
59
75
|
&:where(.kui-r-size-3) {
|
|
76
|
+
--chip-icon-size: var(--icon-size-3);
|
|
60
77
|
font-size: var(--font-size-2);
|
|
61
78
|
line-height: var(--line-height-2);
|
|
62
79
|
letter-spacing: var(--letter-spacing-2);
|
|
@@ -70,6 +87,7 @@
|
|
|
70
87
|
}
|
|
71
88
|
}
|
|
72
89
|
&:where(.kui-r-size-4) {
|
|
90
|
+
--chip-icon-size: var(--icon-size-4);
|
|
73
91
|
font-size: var(--font-size-3);
|
|
74
92
|
line-height: var(--line-height-3);
|
|
75
93
|
letter-spacing: var(--letter-spacing-3);
|
|
@@ -95,14 +113,6 @@
|
|
|
95
113
|
.kui-Chip:where(.kui-variant-solid) {
|
|
96
114
|
background-color: var(--accent-solid);
|
|
97
115
|
color: var(--accent-solid-contrast);
|
|
98
|
-
|
|
99
|
-
&:where([data-disabled]) {
|
|
100
|
-
color: var(--neutral-a8);
|
|
101
|
-
background-color: var(--neutral-a3);
|
|
102
|
-
outline: none;
|
|
103
|
-
filter: none;
|
|
104
|
-
cursor: default;
|
|
105
|
-
}
|
|
106
116
|
}
|
|
107
117
|
|
|
108
118
|
/* surface */
|
|
@@ -117,22 +127,10 @@
|
|
|
117
127
|
|
|
118
128
|
.kui-Chip:where(.kui-variant-soft, .kui-variant-ghost) {
|
|
119
129
|
color: var(--accent-ink);
|
|
120
|
-
|
|
121
|
-
&:where([data-disabled]) {
|
|
122
|
-
color: var(--neutral-a8);
|
|
123
|
-
background-color: var(--neutral-a3);
|
|
124
|
-
cursor: default;
|
|
125
|
-
}
|
|
126
130
|
}
|
|
127
131
|
|
|
128
132
|
.kui-Chip:where(.kui-variant-soft) {
|
|
129
133
|
background-color: var(--accent-3);
|
|
130
|
-
|
|
131
|
-
&:where([data-disabled]) {
|
|
132
|
-
color: var(--neutral-a8);
|
|
133
|
-
background-color: var(--neutral-a3);
|
|
134
|
-
cursor: default;
|
|
135
|
-
}
|
|
136
134
|
}
|
|
137
135
|
|
|
138
136
|
/* outline */
|
package/src/components/chip.tsx
CHANGED
|
@@ -41,15 +41,14 @@ const Chip = React.forwardRef<ChipElement, ChipProps>((props, forwardedRef) => {
|
|
|
41
41
|
...chipProps
|
|
42
42
|
} = extractProps(props, chipPropDefs);
|
|
43
43
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
// Memoize component variable to prevent unnecessary re-renders
|
|
47
|
-
const Comp = React.useMemo(() => (asChild ? Slot.Root : 'span'), [asChild]);
|
|
44
|
+
const Comp = asChild ? Slot.Root : 'span';
|
|
48
45
|
|
|
49
46
|
const chip = (
|
|
50
47
|
<Comp
|
|
51
48
|
data-accent-color={color}
|
|
52
49
|
data-radius={radius}
|
|
50
|
+
// A tooltip opens on focus, so a chip that has one joins the tab order.
|
|
51
|
+
tabIndex={tooltip ? 0 : undefined}
|
|
53
52
|
{...chipProps}
|
|
54
53
|
ref={forwardedRef}
|
|
55
54
|
className={classNames('kui-reset', 'kui-Chip', className)}
|
package/src/components/code.tsx
CHANGED
|
@@ -18,8 +18,9 @@ const Code = React.forwardRef<CodeElement, CodeProps>((props, forwardedRef) => {
|
|
|
18
18
|
props,
|
|
19
19
|
codePropDefs,
|
|
20
20
|
);
|
|
21
|
-
//
|
|
22
|
-
|
|
21
|
+
// A ghost Code has no fill, so it rests on the surrounding text colour: only a colour the caller
|
|
22
|
+
// set reaches it, never the gray default.
|
|
23
|
+
const resolvedColor = props.variant === 'ghost' && !props.color ? undefined : color;
|
|
23
24
|
const Comp = asChild ? Slot.Root : 'code';
|
|
24
25
|
return (
|
|
25
26
|
<Comp
|
|
@@ -12,6 +12,10 @@
|
|
|
12
12
|
.kui-ComboboxContent {
|
|
13
13
|
--combobox-list-max-height: calc(300px * var(--scale));
|
|
14
14
|
|
|
15
|
+
/* Stops the list's scroll chaining to the page. Not user-scrollable (overflow: hidden), so
|
|
16
|
+
Chromium does not composite it the way it does a scroller with this property. */
|
|
17
|
+
overscroll-behavior: contain;
|
|
18
|
+
|
|
15
19
|
min-width: var(--radix-popover-trigger-width);
|
|
16
20
|
max-height: var(--radix-popover-content-available-height);
|
|
17
21
|
transform-origin: var(--radix-popover-content-transform-origin);
|
|
@@ -55,6 +59,15 @@
|
|
|
55
59
|
scrollbar-color: var(--neutral-a8) transparent;
|
|
56
60
|
}
|
|
57
61
|
|
|
62
|
+
/* Chromium (the only engine with -webkit-app-region) composites a scroller whose
|
|
63
|
+
overscroll-behavior is not auto, even when the list fits: 2 layers. There the content above
|
|
64
|
+
stops the chain. WebKit ignores an ancestor that is not user-scrollable, so it keeps `contain`. */
|
|
65
|
+
@supports (-webkit-app-region: drag) {
|
|
66
|
+
.kui-ComboboxScrollArea {
|
|
67
|
+
overscroll-behavior: auto;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
58
71
|
.kui-ComboboxList {
|
|
59
72
|
outline: 0;
|
|
60
73
|
}
|
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
*/
|
|
5
5
|
'use client';
|
|
6
6
|
|
|
7
|
-
import { warnDeprecated } from '../helpers/warn-deprecated.js';
|
|
8
7
|
import * as React from 'react';
|
|
9
8
|
import { VirtualMenu } from './virtual-menu.js';
|
|
10
9
|
import classNames from 'classnames';
|
|
11
10
|
import { ContextMenu as ContextMenuPrimitive, Slot } from 'radix-ui';
|
|
11
|
+
import { useCallbackRef } from 'radix-ui/internal';
|
|
12
12
|
|
|
13
13
|
import { ScrollArea } from './scroll-area.js';
|
|
14
14
|
import {
|
|
@@ -23,7 +23,7 @@ import { ThickCheckIcon, ThickChevronRightIcon, ThickDotIcon } from './icons.js'
|
|
|
23
23
|
import { extractProps } from '../helpers/extract-props.js';
|
|
24
24
|
import { useThemeSizeProps } from '../helpers/theme-size.js';
|
|
25
25
|
import { requireReactElement } from '../helpers/require-react-element.js';
|
|
26
|
-
import { MenuProvider } from './_internal/menu-context.js';
|
|
26
|
+
import { MenuCloseProvider, MenuProvider } from './_internal/menu-context.js';
|
|
27
27
|
import {
|
|
28
28
|
MenuShortcut,
|
|
29
29
|
getMenuAlignOffset,
|
|
@@ -36,9 +36,27 @@ import type { GetPropDefTypes, Responsive } from '../props/prop-def.js';
|
|
|
36
36
|
|
|
37
37
|
interface ContextMenuRootProps
|
|
38
38
|
extends React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Root> {}
|
|
39
|
-
const ContextMenuRoot: React.FC<ContextMenuRootProps> = (props) =>
|
|
40
|
-
|
|
41
|
-
);
|
|
39
|
+
const ContextMenuRoot: React.FC<ContextMenuRootProps> = (props) => {
|
|
40
|
+
const { open: openProp, onOpenChange } = props;
|
|
41
|
+
const [uncontrolledOpen, setUncontrolledOpen] = React.useState(false);
|
|
42
|
+
const open = openProp ?? uncontrolledOpen;
|
|
43
|
+
|
|
44
|
+
const handleOpenChangeProp = useCallbackRef(onOpenChange);
|
|
45
|
+
const handleOpenChange = React.useCallback(
|
|
46
|
+
(next: boolean) => {
|
|
47
|
+
setUncontrolledOpen(next);
|
|
48
|
+
handleOpenChangeProp(next);
|
|
49
|
+
},
|
|
50
|
+
[handleOpenChangeProp],
|
|
51
|
+
);
|
|
52
|
+
const close = React.useCallback(() => handleOpenChange(false), [handleOpenChange]);
|
|
53
|
+
|
|
54
|
+
return (
|
|
55
|
+
<MenuCloseProvider value={close}>
|
|
56
|
+
<ContextMenuPrimitive.Root {...props} open={open} onOpenChange={handleOpenChange} />
|
|
57
|
+
</MenuCloseProvider>
|
|
58
|
+
);
|
|
59
|
+
};
|
|
42
60
|
ContextMenuRoot.displayName = 'ContextMenu.Root';
|
|
43
61
|
|
|
44
62
|
type ContextMenuTriggerElement = React.ElementRef<typeof ContextMenuPrimitive.Trigger>;
|