@womp/kookie-ui 0.34.0 → 0.34.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/components.css +15 -4
- package/dist/cjs/components/_internal/pane-chrome.d.ts +1 -2
- package/dist/cjs/components/_internal/pane-chrome.d.ts.map +1 -1
- package/dist/cjs/components/_internal/pane-chrome.js.map +2 -2
- package/dist/cjs/components/_internal/shell-bottom.js +1 -1
- package/dist/cjs/components/_internal/shell-bottom.js.map +3 -3
- package/dist/cjs/components/_internal/shell-handles.d.ts.map +1 -1
- package/dist/cjs/components/_internal/shell-handles.js +1 -1
- package/dist/cjs/components/_internal/shell-handles.js.map +3 -3
- package/dist/cjs/components/_internal/shell-inspector.js +1 -1
- package/dist/cjs/components/_internal/shell-inspector.js.map +3 -3
- package/dist/cjs/components/_internal/shell-resizable.d.ts.map +1 -1
- package/dist/cjs/components/_internal/shell-resizable.js +1 -1
- package/dist/cjs/components/_internal/shell-resizable.js.map +3 -3
- package/dist/cjs/components/_internal/shell-resize.d.ts +2 -0
- package/dist/cjs/components/_internal/shell-resize.d.ts.map +1 -1
- package/dist/cjs/components/_internal/shell-resize.js.map +2 -2
- package/dist/cjs/components/_internal/shell-sidebar.js +1 -1
- package/dist/cjs/components/_internal/shell-sidebar.js.map +3 -3
- 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 +2 -2
- package/dist/cjs/components/button.js +1 -1
- package/dist/cjs/components/button.js.map +3 -3
- 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 +3 -3
- package/dist/cjs/components/combobox.d.ts +16 -0
- package/dist/cjs/components/combobox.d.ts.map +1 -1
- package/dist/cjs/components/combobox.js +1 -1
- package/dist/cjs/components/combobox.js.map +2 -2
- package/dist/cjs/components/index.js +2 -2
- package/dist/cjs/components/index.js.map +3 -3
- package/dist/cjs/components/message-scroller.js +1 -1
- package/dist/cjs/components/message-scroller.js.map +3 -3
- 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/navigator.js +1 -1
- package/dist/cjs/components/navigator.js.map +3 -3
- package/dist/cjs/components/notice.js +1 -1
- package/dist/cjs/components/notice.js.map +3 -3
- package/dist/cjs/components/schemas/base-button.schema.d.ts +7 -0
- package/dist/cjs/components/schemas/base-button.schema.d.ts.map +1 -1
- package/dist/cjs/components/schemas/base-button.schema.js +1 -1
- package/dist/cjs/components/schemas/base-button.schema.js.map +2 -2
- package/dist/cjs/components/schemas/button.schema.d.ts +14 -0
- package/dist/cjs/components/schemas/button.schema.d.ts.map +1 -1
- package/dist/cjs/components/schemas/button.schema.js +1 -1
- package/dist/cjs/components/schemas/button.schema.js.map +2 -2
- package/dist/cjs/components/schemas/index.js +1 -1
- package/dist/cjs/components/schemas/index.js.map +2 -2
- package/dist/cjs/components/schemas/shell.schema.d.ts +7 -6
- package/dist/cjs/components/schemas/shell.schema.d.ts.map +1 -1
- package/dist/cjs/components/schemas/shell.schema.js +1 -1
- package/dist/cjs/components/schemas/shell.schema.js.map +2 -2
- package/dist/cjs/components/schemas/toggle.schema.d.ts +83 -77
- package/dist/cjs/components/schemas/toggle.schema.d.ts.map +1 -1
- package/dist/cjs/components/schemas/toggle.schema.js +1 -1
- package/dist/cjs/components/schemas/toggle.schema.js.map +2 -2
- 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.js +1 -1
- package/dist/cjs/components/select.js.map +2 -2
- package/dist/cjs/components/sheet.d.ts +2 -2
- package/dist/cjs/components/sheet.js.map +1 -1
- package/dist/cjs/components/shell.context.js.map +1 -1
- package/dist/cjs/components/shell.js +1 -1
- package/dist/cjs/components/shell.js.map +3 -3
- package/dist/cjs/components/sidebar.d.ts +1 -1
- 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 +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 +3 -3
- package/dist/cjs/components/text-field.d.ts.map +1 -1
- package/dist/cjs/components/text-field.js +2 -2
- package/dist/cjs/components/text-field.js.map +3 -3
- package/dist/cjs/components/toggle.js +1 -1
- package/dist/cjs/components/toggle.js.map +3 -3
- package/dist/cjs/components/toolbar.js +1 -1
- package/dist/cjs/components/toolbar.js.map +3 -3
- 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/index.js +3 -3
- package/dist/cjs/helpers/index.js.map +2 -2
- package/dist/cjs/helpers/map-prop-values.d.ts.map +1 -1
- package/dist/cjs/helpers/map-prop-values.js +1 -1
- package/dist/cjs/helpers/map-prop-values.js.map +2 -2
- package/dist/cjs/index.js +4 -4
- package/dist/cjs/index.js.map +3 -3
- package/dist/cjs/props/index.d.ts +6 -0
- package/dist/cjs/props/index.d.ts.map +1 -1
- package/dist/cjs/props/index.js +1 -1
- package/dist/cjs/props/index.js.map +4 -4
- package/dist/esm/chunk-25FNCKUM.js +2 -0
- package/dist/esm/chunk-25FNCKUM.js.map +7 -0
- package/dist/esm/{chunk-KDJM4NQQ.js → chunk-2WFN4D52.js} +2 -2
- package/dist/esm/chunk-4OJRLS5N.js +3 -0
- package/dist/esm/chunk-4OJRLS5N.js.map +7 -0
- package/dist/esm/chunk-4TTRPCGG.js +3 -0
- package/dist/esm/{chunk-QKCNGEX4.js.map → chunk-4TTRPCGG.js.map} +3 -3
- package/dist/esm/chunk-4X64QOAR.js +3 -0
- package/dist/esm/chunk-4X64QOAR.js.map +7 -0
- package/dist/esm/{chunk-L7PRLW6A.js → chunk-5APRBJRR.js} +2 -2
- package/dist/esm/{chunk-L7PRLW6A.js.map → chunk-5APRBJRR.js.map} +2 -2
- package/dist/esm/chunk-7HD5LS3M.js +3 -0
- package/dist/esm/chunk-7HD5LS3M.js.map +7 -0
- package/dist/esm/chunk-7ZOGH5NT.js +2 -0
- package/dist/esm/chunk-7ZOGH5NT.js.map +7 -0
- package/dist/esm/chunk-BJA75XKG.js +2 -0
- package/dist/esm/chunk-BJA75XKG.js.map +7 -0
- package/dist/esm/{chunk-NO2JCJWI.js → chunk-BJVXB3PN.js} +2 -2
- package/dist/esm/{chunk-BR6Z2CAE.js → chunk-C6VGCYFQ.js} +2 -2
- package/dist/esm/chunk-EZYXYLR2.js +2 -0
- package/dist/esm/chunk-EZYXYLR2.js.map +7 -0
- package/dist/esm/chunk-FTNZWAPB.js +3 -0
- package/dist/esm/{chunk-7QBNXNEN.js.map → chunk-FTNZWAPB.js.map} +3 -3
- package/dist/esm/{chunk-ZLGOZKB3.js → chunk-FYZXC7AL.js} +2 -2
- package/dist/esm/{chunk-XD676L6S.js → chunk-HQT32HQ6.js} +2 -2
- package/dist/esm/{chunk-XKYPJTRN.js → chunk-I5TPDYJO.js} +2 -2
- package/dist/esm/chunk-I77CYEBT.js +2 -0
- package/dist/esm/chunk-I77CYEBT.js.map +7 -0
- package/dist/esm/{chunk-API4DAPY.js → chunk-J7MIXG6M.js} +1 -1
- package/dist/esm/chunk-J7MIXG6M.js.map +7 -0
- package/dist/esm/{chunk-UMQOTGJC.js → chunk-M26LLCQC.js} +2 -2
- package/dist/esm/{chunk-WN3WMFAM.js → chunk-MLHS2GWL.js} +2 -2
- package/dist/esm/chunk-MPLBIPJ6.js +3 -0
- package/dist/esm/chunk-MPLBIPJ6.js.map +7 -0
- package/dist/esm/{chunk-WEBNIUEX.js → chunk-MXEOE4LA.js} +1 -1
- package/dist/esm/chunk-MXEOE4LA.js.map +7 -0
- package/dist/esm/chunk-OGVKMDO7.js +3 -0
- package/dist/esm/chunk-OGVKMDO7.js.map +7 -0
- package/dist/esm/{chunk-ODHCDJ3Y.js → chunk-PMXIQ5B4.js} +1 -1
- package/dist/esm/chunk-PMXIQ5B4.js.map +7 -0
- package/dist/esm/{chunk-LG5DPQ46.js → chunk-R4DMVTM3.js} +2 -2
- package/dist/esm/{chunk-LG5DPQ46.js.map → chunk-R4DMVTM3.js.map} +3 -3
- package/dist/esm/chunk-S6SEWECR.js +3 -0
- package/dist/esm/{chunk-5VYQDA5S.js.map → chunk-S6SEWECR.js.map} +3 -3
- package/dist/esm/{chunk-7YXHLU4C.js → chunk-TANYRHGP.js} +2 -2
- package/dist/esm/{chunk-INGT6DB6.js → chunk-TS4QCDSI.js} +1 -1
- package/dist/esm/chunk-TS4QCDSI.js.map +7 -0
- package/dist/esm/chunk-WYLIU3Q6.js +2 -0
- package/dist/esm/chunk-WYLIU3Q6.js.map +7 -0
- package/dist/esm/chunk-X4PWBFOT.js +3 -0
- package/dist/esm/chunk-X4PWBFOT.js.map +7 -0
- package/dist/esm/chunk-XFMAA4MD.js +3 -0
- package/dist/esm/chunk-XFMAA4MD.js.map +7 -0
- package/dist/esm/chunk-XGV7KNSE.js +3 -0
- package/dist/esm/chunk-XGV7KNSE.js.map +7 -0
- package/dist/esm/chunk-XOAOSRTH.js +3 -0
- package/dist/esm/chunk-XOAOSRTH.js.map +7 -0
- package/dist/esm/{chunk-YOTTLPJ3.js → chunk-Y5ITMKC6.js} +2 -2
- package/dist/esm/chunk-YLGIP3A5.js +6 -0
- package/dist/esm/chunk-YLGIP3A5.js.map +7 -0
- package/dist/esm/chunk-YLPCYCYA.js +3 -0
- package/dist/esm/chunk-YLPCYCYA.js.map +7 -0
- package/dist/esm/components/_internal/pane-chrome.d.ts +1 -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-handles.d.ts.map +1 -1
- package/dist/esm/components/_internal/shell-handles.js +1 -1
- package/dist/esm/components/_internal/shell-inspector.js +1 -1
- package/dist/esm/components/_internal/shell-resizable.d.ts.map +1 -1
- package/dist/esm/components/_internal/shell-resizable.js +1 -1
- package/dist/esm/components/_internal/shell-resize.d.ts +2 -0
- package/dist/esm/components/_internal/shell-resize.d.ts.map +1 -1
- package/dist/esm/components/_internal/shell-resize.js +1 -1
- package/dist/esm/components/_internal/shell-sidebar.js +1 -1
- package/dist/esm/components/accordion.props.js +1 -1
- package/dist/esm/components/accordion.props.js.map +4 -4
- package/dist/esm/components/avatar.d.ts.map +1 -1
- package/dist/esm/components/avatar.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/combobox.d.ts +16 -0
- package/dist/esm/components/combobox.d.ts.map +1 -1
- package/dist/esm/components/combobox.js +1 -1
- package/dist/esm/components/combobox.props.js +1 -1
- package/dist/esm/components/combobox.props.js.map +4 -4
- package/dist/esm/components/image.props.js +1 -1
- package/dist/esm/components/image.props.js.map +4 -4
- package/dist/esm/components/index.js +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/navbar.props.js +1 -1
- package/dist/esm/components/navbar.props.js.map +4 -4
- package/dist/esm/components/navigator.js +1 -1
- package/dist/esm/components/notice.js +1 -1
- package/dist/esm/components/schemas/base-button.schema.d.ts +7 -0
- package/dist/esm/components/schemas/base-button.schema.d.ts.map +1 -1
- package/dist/esm/components/schemas/base-button.schema.js +1 -1
- package/dist/esm/components/schemas/button.schema.d.ts +14 -0
- package/dist/esm/components/schemas/button.schema.d.ts.map +1 -1
- package/dist/esm/components/schemas/button.schema.js +1 -1
- package/dist/esm/components/schemas/index.js +1 -1
- package/dist/esm/components/schemas/shell.schema.d.ts +7 -6
- package/dist/esm/components/schemas/shell.schema.d.ts.map +1 -1
- package/dist/esm/components/schemas/shell.schema.js +1 -1
- package/dist/esm/components/schemas/toggle.schema.d.ts +83 -77
- package/dist/esm/components/schemas/toggle.schema.d.ts.map +1 -1
- package/dist/esm/components/schemas/toggle.schema.js +1 -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.js +1 -1
- package/dist/esm/components/sheet.d.ts +2 -2
- package/dist/esm/components/sheet.js +1 -1
- package/dist/esm/components/shell.context.js +1 -1
- package/dist/esm/components/shell.js +1 -1
- package/dist/esm/components/sidebar.d.ts +1 -1
- package/dist/esm/components/sidebar.d.ts.map +1 -1
- package/dist/esm/components/sidebar.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/text-field.d.ts.map +1 -1
- package/dist/esm/components/text-field.js +1 -1
- package/dist/esm/components/toggle.js +1 -1
- package/dist/esm/components/toolbar.js +1 -1
- package/dist/esm/components/toolbar.props.js +1 -1
- package/dist/esm/components/toolbar.props.js.map +4 -4
- package/dist/esm/components/virtual-menu.d.ts.map +1 -1
- package/dist/esm/components/virtual-menu.js +1 -1
- package/dist/esm/helpers/index.js +1 -1
- package/dist/esm/helpers/map-prop-values.d.ts.map +1 -1
- package/dist/esm/helpers/map-prop-values.js +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/props/index.d.ts +6 -0
- package/dist/esm/props/index.d.ts.map +1 -1
- package/dist/esm/props/index.js +1 -1
- package/layout/utilities.css +810 -0
- package/layout.css +810 -0
- package/package.json +3 -4
- package/schemas/base-button.json +13 -0
- package/schemas/button.json +13 -0
- package/schemas/index.json +51 -12
- package/schemas/shell-bottom.json +2 -2
- package/schemas/shell-content.json +2 -2
- package/schemas/shell-header.json +4 -0
- package/schemas/shell-inspector.json +2 -2
- package/schemas/shell-panel.json +2 -2
- package/schemas/shell-rail.json +2 -2
- package/schemas/shell-sidebar.json +2 -2
- package/schemas/toggle.json +9 -0
- package/src/components/_internal/base-dialog.css +1 -1
- package/src/components/_internal/pane-chrome.tsx +2 -3
- package/src/components/_internal/shell-handles.tsx +3 -0
- package/src/components/_internal/shell-resizable.tsx +9 -0
- package/src/components/_internal/shell-resize.tsx +2 -0
- package/src/components/avatar.tsx +3 -1
- package/src/components/button.tsx +1 -1
- package/src/components/chatbar.tsx +2 -1
- package/src/components/combobox.tsx +2 -3
- package/src/components/navbar.tsx +3 -4
- package/src/components/navigator.css +4 -4
- package/src/components/schemas/base-button.schema.ts +7 -0
- package/src/components/schemas/shell.schema.ts +3 -2
- package/src/components/schemas/toggle.schema.ts +2 -1
- package/src/components/segmented-control.css +13 -0
- package/src/components/segmented-control.tsx +10 -2
- package/src/components/select.tsx +2 -2
- package/src/components/sheet.tsx +2 -2
- package/src/components/shell.context.tsx +1 -1
- package/src/components/sidebar.tsx +1 -1
- package/src/components/table.tsx +4 -1
- package/src/components/text-field.css +2 -2
- package/src/components/text-field.tsx +11 -4
- package/src/components/virtual-menu.tsx +8 -1
- package/src/helpers/map-prop-values.ts +0 -1
- package/src/props/index.ts +6 -0
- package/src/styles/utilities/inset.css +135 -0
- package/styles.css +825 -4
- package/utilities.css +810 -0
- package/dist/esm/chunk-3QWGSRYC.js +0 -3
- package/dist/esm/chunk-3QWGSRYC.js.map +0 -7
- package/dist/esm/chunk-5KQCG7AV.js +0 -3
- package/dist/esm/chunk-5KQCG7AV.js.map +0 -7
- package/dist/esm/chunk-5VYQDA5S.js +0 -3
- package/dist/esm/chunk-7QBNXNEN.js +0 -3
- package/dist/esm/chunk-API4DAPY.js.map +0 -7
- package/dist/esm/chunk-BQOFHLDP.js +0 -3
- package/dist/esm/chunk-BQOFHLDP.js.map +0 -7
- package/dist/esm/chunk-CZ24FOFS.js +0 -3
- package/dist/esm/chunk-CZ24FOFS.js.map +0 -7
- package/dist/esm/chunk-EERKYRYI.js +0 -3
- package/dist/esm/chunk-EERKYRYI.js.map +0 -7
- package/dist/esm/chunk-HZYE46V2.js +0 -2
- package/dist/esm/chunk-HZYE46V2.js.map +0 -7
- package/dist/esm/chunk-IN2WND4B.js +0 -3
- package/dist/esm/chunk-IN2WND4B.js.map +0 -7
- package/dist/esm/chunk-INGT6DB6.js.map +0 -7
- package/dist/esm/chunk-J6B7UCZN.js +0 -3
- package/dist/esm/chunk-J6B7UCZN.js.map +0 -7
- package/dist/esm/chunk-JQMWNI62.js +0 -3
- package/dist/esm/chunk-JQMWNI62.js.map +0 -7
- package/dist/esm/chunk-ODHCDJ3Y.js.map +0 -7
- package/dist/esm/chunk-QKCNGEX4.js +0 -3
- package/dist/esm/chunk-TMINGBSQ.js +0 -3
- package/dist/esm/chunk-TMINGBSQ.js.map +0 -7
- package/dist/esm/chunk-WEBNIUEX.js.map +0 -7
- package/dist/esm/chunk-XF6Z5NKE.js +0 -3
- package/dist/esm/chunk-XF6Z5NKE.js.map +0 -7
- package/dist/esm/chunk-Y44DYJA5.js +0 -6
- package/dist/esm/chunk-Y44DYJA5.js.map +0 -7
- /package/dist/esm/{chunk-KDJM4NQQ.js.map → chunk-2WFN4D52.js.map} +0 -0
- /package/dist/esm/{chunk-NO2JCJWI.js.map → chunk-BJVXB3PN.js.map} +0 -0
- /package/dist/esm/{chunk-BR6Z2CAE.js.map → chunk-C6VGCYFQ.js.map} +0 -0
- /package/dist/esm/{chunk-ZLGOZKB3.js.map → chunk-FYZXC7AL.js.map} +0 -0
- /package/dist/esm/{chunk-XD676L6S.js.map → chunk-HQT32HQ6.js.map} +0 -0
- /package/dist/esm/{chunk-XKYPJTRN.js.map → chunk-I5TPDYJO.js.map} +0 -0
- /package/dist/esm/{chunk-UMQOTGJC.js.map → chunk-M26LLCQC.js.map} +0 -0
- /package/dist/esm/{chunk-WN3WMFAM.js.map → chunk-MLHS2GWL.js.map} +0 -0
- /package/dist/esm/{chunk-7YXHLU4C.js.map → chunk-TANYRHGP.js.map} +0 -0
- /package/dist/esm/{chunk-YOTTLPJ3.js.map → chunk-Y5ITMKC6.js.map} +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@womp/kookie-ui",
|
|
3
|
-
"version": "0.34.
|
|
3
|
+
"version": "0.34.2",
|
|
4
4
|
"description": "Kookie UI v1: a React component library with design tokens, flexible theming, a full layout shell, and comprehensive documentation.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"copyright": "Copyright (c) 2024-2026 Womp 3D Inc. Sole author: Kushagra Dhawan.",
|
|
21
21
|
"license": "MIT",
|
|
22
22
|
"engines": {
|
|
23
|
-
"node": ">=
|
|
23
|
+
"node": ">=22"
|
|
24
24
|
},
|
|
25
25
|
"type": "commonjs",
|
|
26
26
|
"main": "./dist/cjs/index.js",
|
|
@@ -161,14 +161,13 @@
|
|
|
161
161
|
},
|
|
162
162
|
"dependencies": {
|
|
163
163
|
"@radix-ui/colors": "^3.0.0",
|
|
164
|
-
"@radix-ui/react-accordion": "^1.2.20",
|
|
165
164
|
"@shadcn/react": "0.3.1",
|
|
166
165
|
"@tanstack/react-virtual": "^3.14.13",
|
|
167
166
|
"classnames": "^2.5.1",
|
|
168
167
|
"cmdk": "^1.1.1",
|
|
169
168
|
"radix-ui": "^1.6.7",
|
|
170
169
|
"react-dropzone": "^20.1.2",
|
|
171
|
-
"zod": "^4.6.
|
|
170
|
+
"zod": "^4.6.7"
|
|
172
171
|
},
|
|
173
172
|
"peerDependencies": {
|
|
174
173
|
"@types/react": "*",
|
package/schemas/base-button.json
CHANGED
|
@@ -37,6 +37,15 @@
|
|
|
37
37
|
"4"
|
|
38
38
|
]
|
|
39
39
|
},
|
|
40
|
+
"xs": {
|
|
41
|
+
"type": "string",
|
|
42
|
+
"enum": [
|
|
43
|
+
"1",
|
|
44
|
+
"2",
|
|
45
|
+
"3",
|
|
46
|
+
"4"
|
|
47
|
+
]
|
|
48
|
+
},
|
|
40
49
|
"sm": {
|
|
41
50
|
"type": "string",
|
|
42
51
|
"enum": [
|
|
@@ -144,6 +153,10 @@
|
|
|
144
153
|
"description": "Disabled state",
|
|
145
154
|
"type": "boolean"
|
|
146
155
|
},
|
|
156
|
+
"done": {
|
|
157
|
+
"description": "Shows a tick in place of the icon to say the action finished",
|
|
158
|
+
"type": "boolean"
|
|
159
|
+
},
|
|
147
160
|
"type": {
|
|
148
161
|
"description": "Type attribute for form buttons",
|
|
149
162
|
"type": "string",
|
package/schemas/button.json
CHANGED
|
@@ -37,6 +37,15 @@
|
|
|
37
37
|
"4"
|
|
38
38
|
]
|
|
39
39
|
},
|
|
40
|
+
"xs": {
|
|
41
|
+
"type": "string",
|
|
42
|
+
"enum": [
|
|
43
|
+
"1",
|
|
44
|
+
"2",
|
|
45
|
+
"3",
|
|
46
|
+
"4"
|
|
47
|
+
]
|
|
48
|
+
},
|
|
40
49
|
"sm": {
|
|
41
50
|
"type": "string",
|
|
42
51
|
"enum": [
|
|
@@ -144,6 +153,10 @@
|
|
|
144
153
|
"description": "Disabled state",
|
|
145
154
|
"type": "boolean"
|
|
146
155
|
},
|
|
156
|
+
"done": {
|
|
157
|
+
"description": "Shows a tick in place of the icon to say the action finished",
|
|
158
|
+
"type": "boolean"
|
|
159
|
+
},
|
|
147
160
|
"type": {
|
|
148
161
|
"description": "Type attribute for form buttons",
|
|
149
162
|
"type": "string",
|
package/schemas/index.json
CHANGED
|
@@ -44,6 +44,15 @@
|
|
|
44
44
|
"4"
|
|
45
45
|
]
|
|
46
46
|
},
|
|
47
|
+
"xs": {
|
|
48
|
+
"type": "string",
|
|
49
|
+
"enum": [
|
|
50
|
+
"1",
|
|
51
|
+
"2",
|
|
52
|
+
"3",
|
|
53
|
+
"4"
|
|
54
|
+
]
|
|
55
|
+
},
|
|
47
56
|
"sm": {
|
|
48
57
|
"type": "string",
|
|
49
58
|
"enum": [
|
|
@@ -151,6 +160,10 @@
|
|
|
151
160
|
"description": "Disabled state",
|
|
152
161
|
"type": "boolean"
|
|
153
162
|
},
|
|
163
|
+
"done": {
|
|
164
|
+
"description": "Shows a tick in place of the icon to say the action finished",
|
|
165
|
+
"type": "boolean"
|
|
166
|
+
},
|
|
154
167
|
"type": {
|
|
155
168
|
"description": "Type attribute for form buttons",
|
|
156
169
|
"type": "string",
|
|
@@ -301,6 +314,15 @@
|
|
|
301
314
|
"4"
|
|
302
315
|
]
|
|
303
316
|
},
|
|
317
|
+
"xs": {
|
|
318
|
+
"type": "string",
|
|
319
|
+
"enum": [
|
|
320
|
+
"1",
|
|
321
|
+
"2",
|
|
322
|
+
"3",
|
|
323
|
+
"4"
|
|
324
|
+
]
|
|
325
|
+
},
|
|
304
326
|
"sm": {
|
|
305
327
|
"type": "string",
|
|
306
328
|
"enum": [
|
|
@@ -408,6 +430,10 @@
|
|
|
408
430
|
"description": "Disabled state",
|
|
409
431
|
"type": "boolean"
|
|
410
432
|
},
|
|
433
|
+
"done": {
|
|
434
|
+
"description": "Shows a tick in place of the icon to say the action finished",
|
|
435
|
+
"type": "boolean"
|
|
436
|
+
},
|
|
411
437
|
"type": {
|
|
412
438
|
"description": "Type attribute for form buttons",
|
|
413
439
|
"type": "string",
|
|
@@ -611,6 +637,15 @@
|
|
|
611
637
|
"4"
|
|
612
638
|
]
|
|
613
639
|
},
|
|
640
|
+
"xs": {
|
|
641
|
+
"type": "string",
|
|
642
|
+
"enum": [
|
|
643
|
+
"1",
|
|
644
|
+
"2",
|
|
645
|
+
"3",
|
|
646
|
+
"4"
|
|
647
|
+
]
|
|
648
|
+
},
|
|
614
649
|
"sm": {
|
|
615
650
|
"type": "string",
|
|
616
651
|
"enum": [
|
|
@@ -972,6 +1007,10 @@
|
|
|
972
1007
|
"description": "Height of the header, in pixels",
|
|
973
1008
|
"type": "number"
|
|
974
1009
|
},
|
|
1010
|
+
"flush": {
|
|
1011
|
+
"description": "Whether the header joins the app frame. Defaults to true. `false` makes it a card off the frame.",
|
|
1012
|
+
"type": "boolean"
|
|
1013
|
+
},
|
|
975
1014
|
"className": {
|
|
976
1015
|
"description": "Additional CSS class name",
|
|
977
1016
|
"type": "string"
|
|
@@ -1092,8 +1131,8 @@
|
|
|
1092
1131
|
"description": "Width in pixels",
|
|
1093
1132
|
"type": "number"
|
|
1094
1133
|
},
|
|
1095
|
-
"
|
|
1096
|
-
"description": "
|
|
1134
|
+
"flush": {
|
|
1135
|
+
"description": "Whether the pane joins the app frame. Defaults to true. `false` pulls it off the frame as a card.",
|
|
1097
1136
|
"type": "boolean"
|
|
1098
1137
|
},
|
|
1099
1138
|
"className": {
|
|
@@ -1296,8 +1335,8 @@
|
|
|
1296
1335
|
"description": "Open width in pixels",
|
|
1297
1336
|
"type": "number"
|
|
1298
1337
|
},
|
|
1299
|
-
"
|
|
1300
|
-
"description": "
|
|
1338
|
+
"flush": {
|
|
1339
|
+
"description": "Whether the pane joins the app frame. Defaults to true. `false` pulls it off the frame as a card.",
|
|
1301
1340
|
"type": "boolean"
|
|
1302
1341
|
},
|
|
1303
1342
|
"className": {
|
|
@@ -1571,8 +1610,8 @@
|
|
|
1571
1610
|
"description": "Open width in pixels",
|
|
1572
1611
|
"type": "number"
|
|
1573
1612
|
},
|
|
1574
|
-
"
|
|
1575
|
-
"description": "
|
|
1613
|
+
"flush": {
|
|
1614
|
+
"description": "Whether the pane joins the app frame. Defaults to true. `false` pulls it off the frame as a card.",
|
|
1576
1615
|
"type": "boolean"
|
|
1577
1616
|
},
|
|
1578
1617
|
"className": {
|
|
@@ -1826,8 +1865,8 @@
|
|
|
1826
1865
|
"Shell-contentSchema": {
|
|
1827
1866
|
"type": "object",
|
|
1828
1867
|
"properties": {
|
|
1829
|
-
"
|
|
1830
|
-
"description": "
|
|
1868
|
+
"flush": {
|
|
1869
|
+
"description": "Whether the work area joins the app frame. Defaults to true. `false` makes it a card on the Shell background.",
|
|
1831
1870
|
"type": "boolean"
|
|
1832
1871
|
},
|
|
1833
1872
|
"className": {
|
|
@@ -1953,8 +1992,8 @@
|
|
|
1953
1992
|
"description": "Open width in pixels",
|
|
1954
1993
|
"type": "number"
|
|
1955
1994
|
},
|
|
1956
|
-
"
|
|
1957
|
-
"description": "
|
|
1995
|
+
"flush": {
|
|
1996
|
+
"description": "Whether the pane joins the app frame. Defaults to true. `false` pulls it off the frame as a card.",
|
|
1958
1997
|
"type": "boolean"
|
|
1959
1998
|
},
|
|
1960
1999
|
"className": {
|
|
@@ -2225,8 +2264,8 @@
|
|
|
2225
2264
|
"description": "Open height in pixels",
|
|
2226
2265
|
"type": "number"
|
|
2227
2266
|
},
|
|
2228
|
-
"
|
|
2229
|
-
"description": "
|
|
2267
|
+
"flush": {
|
|
2268
|
+
"description": "Whether the pane joins the app frame. Defaults to true. `false` pulls it off the frame as a card.",
|
|
2230
2269
|
"type": "boolean"
|
|
2231
2270
|
},
|
|
2232
2271
|
"className": {
|
|
@@ -88,8 +88,8 @@
|
|
|
88
88
|
"description": "Open height in pixels",
|
|
89
89
|
"type": "number"
|
|
90
90
|
},
|
|
91
|
-
"
|
|
92
|
-
"description": "
|
|
91
|
+
"flush": {
|
|
92
|
+
"description": "Whether the pane joins the app frame. Defaults to true. `false` pulls it off the frame as a card.",
|
|
93
93
|
"type": "boolean"
|
|
94
94
|
},
|
|
95
95
|
"className": {
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
"Shell-contentSchema": {
|
|
5
5
|
"type": "object",
|
|
6
6
|
"properties": {
|
|
7
|
-
"
|
|
8
|
-
"description": "
|
|
7
|
+
"flush": {
|
|
8
|
+
"description": "Whether the work area joins the app frame. Defaults to true. `false` makes it a card on the Shell background.",
|
|
9
9
|
"type": "boolean"
|
|
10
10
|
},
|
|
11
11
|
"className": {
|
|
@@ -9,6 +9,10 @@
|
|
|
9
9
|
"description": "Height of the header, in pixels",
|
|
10
10
|
"type": "number"
|
|
11
11
|
},
|
|
12
|
+
"flush": {
|
|
13
|
+
"description": "Whether the header joins the app frame. Defaults to true. `false` makes it a card off the frame.",
|
|
14
|
+
"type": "boolean"
|
|
15
|
+
},
|
|
12
16
|
"className": {
|
|
13
17
|
"description": "Additional CSS class name",
|
|
14
18
|
"type": "string"
|
|
@@ -91,8 +91,8 @@
|
|
|
91
91
|
"description": "Open width in pixels",
|
|
92
92
|
"type": "number"
|
|
93
93
|
},
|
|
94
|
-
"
|
|
95
|
-
"description": "
|
|
94
|
+
"flush": {
|
|
95
|
+
"description": "Whether the pane joins the app frame. Defaults to true. `false` pulls it off the frame as a card.",
|
|
96
96
|
"type": "boolean"
|
|
97
97
|
},
|
|
98
98
|
"className": {
|
package/schemas/shell-panel.json
CHANGED
|
@@ -87,8 +87,8 @@
|
|
|
87
87
|
"description": "Open width in pixels",
|
|
88
88
|
"type": "number"
|
|
89
89
|
},
|
|
90
|
-
"
|
|
91
|
-
"description": "
|
|
90
|
+
"flush": {
|
|
91
|
+
"description": "Whether the pane joins the app frame. Defaults to true. `false` pulls it off the frame as a card.",
|
|
92
92
|
"type": "boolean"
|
|
93
93
|
},
|
|
94
94
|
"className": {
|
package/schemas/shell-rail.json
CHANGED
|
@@ -88,8 +88,8 @@
|
|
|
88
88
|
"description": "Width in pixels",
|
|
89
89
|
"type": "number"
|
|
90
90
|
},
|
|
91
|
-
"
|
|
92
|
-
"description": "
|
|
91
|
+
"flush": {
|
|
92
|
+
"description": "Whether the pane joins the app frame. Defaults to true. `false` pulls it off the frame as a card.",
|
|
93
93
|
"type": "boolean"
|
|
94
94
|
},
|
|
95
95
|
"className": {
|
|
@@ -91,8 +91,8 @@
|
|
|
91
91
|
"description": "Open width in pixels",
|
|
92
92
|
"type": "number"
|
|
93
93
|
},
|
|
94
|
-
"
|
|
95
|
-
"description": "
|
|
94
|
+
"flush": {
|
|
95
|
+
"description": "Whether the pane joins the app frame. Defaults to true. `false` pulls it off the frame as a card.",
|
|
96
96
|
"type": "boolean"
|
|
97
97
|
},
|
|
98
98
|
"className": {
|
package/schemas/toggle.json
CHANGED
|
@@ -5,8 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Shell.Sidebar and Shell.Panel render these as `Shell.PaneHeader`, `Shell.Scroll` and
|
|
7
7
|
* `Shell.PaneFooter`. The pane renders anything; with these parts it is the presentation, so
|
|
8
|
-
* Sidebar's menu parts work inside it
|
|
9
|
-
* Shell (`Shell.Root size`), or from a deprecated `Sidebar.Root` that still wraps them.
|
|
8
|
+
* Sidebar's menu parts work inside it. The index comes from the nearest Shell (`Shell.Root size`).
|
|
10
9
|
*/
|
|
11
10
|
|
|
12
11
|
import * as React from 'react';
|
|
@@ -166,7 +165,7 @@ interface ScrollProps extends React.ComponentPropsWithoutRef<'div'> {
|
|
|
166
165
|
*/
|
|
167
166
|
const Scroll = React.forwardRef<HTMLDivElement, ScrollProps>(({ className, style, dir, children, fade = false, pane = false, ...props }, forwardedRef) => {
|
|
168
167
|
const chrome = useChromeClasses();
|
|
169
|
-
//
|
|
168
|
+
// Pane chrome nested inside the content (a pane portalled into it) still gets a menu.
|
|
170
169
|
const contentPane = React.useContext(ShellContentContext);
|
|
171
170
|
const visual = useSidebarVisual();
|
|
172
171
|
const inContent = contentPane && visual === null && !pane;
|
|
@@ -20,6 +20,7 @@ export const PaneHandle = React.forwardRef<HTMLDivElement, React.ComponentPropsW
|
|
|
20
20
|
minSize,
|
|
21
21
|
maxSize,
|
|
22
22
|
defaultSize,
|
|
23
|
+
startSize,
|
|
23
24
|
orientation,
|
|
24
25
|
edge,
|
|
25
26
|
growth,
|
|
@@ -118,6 +119,8 @@ export const PaneHandle = React.forwardRef<HTMLDivElement, React.ComponentPropsW
|
|
|
118
119
|
aria-label={`Resize ${targetLabel} pane`}
|
|
119
120
|
aria-controls={controls}
|
|
120
121
|
aria-orientation={orientation}
|
|
122
|
+
// A focusable separator must state its value. The effects keep it current after mount.
|
|
123
|
+
aria-valuenow={Math.round(startSize)}
|
|
121
124
|
aria-valuemin={minSize}
|
|
122
125
|
aria-valuemax={maxSize}
|
|
123
126
|
{...props}
|
|
@@ -213,6 +213,13 @@ export function useResizablePane(options: ResizableOptions): PaneResizeContextVa
|
|
|
213
213
|
};
|
|
214
214
|
}, [resizable, adapter, options.overlaying, writeSize, minSize, maxSize, name]);
|
|
215
215
|
|
|
216
|
+
// What the handle announces before any effect has run: the same starting size the pane's
|
|
217
|
+
// first render uses, so the server HTML already states a value.
|
|
218
|
+
const [startSize] = React.useState(() => {
|
|
219
|
+
const value = size ?? defaultSize;
|
|
220
|
+
return typeof value === 'number' && Number.isFinite(value) ? clampTo(value, minSize, maxSize) : options.expandedSize;
|
|
221
|
+
});
|
|
222
|
+
|
|
216
223
|
const onResize = React.useCallback((value: number) => latest.current.onResize?.(value), []);
|
|
217
224
|
const onResizeStart = React.useCallback((value: number) => {
|
|
218
225
|
// A resize makes the size the user's: a new expandedSize no longer moves it.
|
|
@@ -238,6 +245,7 @@ export function useResizablePane(options: ResizableOptions): PaneResizeContextVa
|
|
|
238
245
|
minSize,
|
|
239
246
|
maxSize,
|
|
240
247
|
defaultSize: options.expandedSize,
|
|
248
|
+
startSize,
|
|
241
249
|
orientation,
|
|
242
250
|
edge: options.edge,
|
|
243
251
|
growth: options.growth,
|
|
@@ -259,6 +267,7 @@ export function useResizablePane(options: ResizableOptions): PaneResizeContextVa
|
|
|
259
267
|
minSize,
|
|
260
268
|
maxSize,
|
|
261
269
|
options.expandedSize,
|
|
270
|
+
startSize,
|
|
262
271
|
orientation,
|
|
263
272
|
options.edge,
|
|
264
273
|
options.growth,
|
|
@@ -9,6 +9,8 @@ export interface PaneResizeContextValue {
|
|
|
9
9
|
minSize: number;
|
|
10
10
|
maxSize: number;
|
|
11
11
|
defaultSize: number;
|
|
12
|
+
/** The size the pane starts at, for the handle's first `aria-valuenow`. */
|
|
13
|
+
startSize: number;
|
|
12
14
|
orientation: 'vertical' | 'horizontal';
|
|
13
15
|
edge: 'start' | 'end';
|
|
14
16
|
/**
|
|
@@ -107,7 +107,9 @@ type AvatarImageProps = Pick<
|
|
|
107
107
|
>;
|
|
108
108
|
|
|
109
109
|
const AvatarImpl = React.memo(({ fallback, onLoadingStatusChange, ...imageProps }: AvatarImageProps) => {
|
|
110
|
-
|
|
110
|
+
// With no picture to wait for, the fallback is the avatar from the first render, so it is in
|
|
111
|
+
// the server HTML. With one, the box stays empty until the picture loads or fails.
|
|
112
|
+
const [status, setStatus] = React.useState<'idle' | 'loading' | 'loaded' | 'error'>(() => (imageProps.src ? 'idle' : 'error'));
|
|
111
113
|
|
|
112
114
|
const handleLoadingStatusChange = React.useCallback(
|
|
113
115
|
(newStatus: 'idle' | 'loading' | 'loaded' | 'error') => {
|
|
@@ -92,7 +92,7 @@ type ButtonComponent = <C extends React.ElementType = 'button'>(props: ButtonPro
|
|
|
92
92
|
* still loading (an empty `aria-label` while a translation loads) must not crash the tree.
|
|
93
93
|
*/
|
|
94
94
|
function validateIconButtonName(props: Record<string, unknown>) {
|
|
95
|
-
if (props['aria-label'] || props['aria-labelledby']) return;
|
|
95
|
+
if (process.env.NODE_ENV === 'production' || props['aria-label'] || props['aria-labelledby']) return;
|
|
96
96
|
const errorMessage =
|
|
97
97
|
'Button: an `iconOnly` button must have an accessible name. Pass `aria-label`, or ' +
|
|
98
98
|
'`aria-labelledby` referencing a label element.';
|
|
@@ -1114,7 +1114,8 @@ const Attachment = React.forwardRef<HTMLDivElement, AttachmentProps>((props, for
|
|
|
1114
1114
|
const ctx = useChatbarContext();
|
|
1115
1115
|
const Comp = asChild ? Slot : 'div';
|
|
1116
1116
|
const isImage = !!attachment.url && isImageLike(attachment.name, attachment.type);
|
|
1117
|
-
const
|
|
1117
|
+
const kilobytes = Math.ceil(attachment.size / 1024);
|
|
1118
|
+
const sizeLabel = kilobytes >= 1024 ? `${Math.round((kilobytes / 1024) * 10) / 10} MB` : `${kilobytes} KB`;
|
|
1118
1119
|
const statusLabel = attachment.status ? STATUS_LABEL[attachment.status] : undefined;
|
|
1119
1120
|
const locked = ctx.disabled || ctx.readOnly;
|
|
1120
1121
|
|
|
@@ -17,7 +17,6 @@
|
|
|
17
17
|
* items are never lit at once and Enter always picks the lit item.
|
|
18
18
|
*/
|
|
19
19
|
|
|
20
|
-
import { warnDeprecated } from '../helpers/warn-deprecated.js';
|
|
21
20
|
import * as React from 'react';
|
|
22
21
|
import classNames from 'classnames';
|
|
23
22
|
import { Popover as PopoverPrimitive } from 'radix-ui';
|
|
@@ -396,8 +395,8 @@ const ComboboxTrigger = React.forwardRef<ComboboxTriggerElement, ComboboxTrigger
|
|
|
396
395
|
<button
|
|
397
396
|
data-accent-color={resolvedColor}
|
|
398
397
|
data-radius={radius}
|
|
399
|
-
data-error={error}
|
|
400
|
-
data-loading={loading}
|
|
398
|
+
data-error={error || undefined}
|
|
399
|
+
data-loading={loading || undefined}
|
|
401
400
|
data-disabled={isDisabled || undefined}
|
|
402
401
|
data-read-only={readOnly || undefined}
|
|
403
402
|
data-placeholder={isPlaceholder ? '' : undefined}
|
|
@@ -41,14 +41,13 @@ interface NavbarRootProps
|
|
|
41
41
|
const NavbarRoot = React.forwardRef<NavbarRootElement, NavbarRootProps>(
|
|
42
42
|
(ownProps, forwardedRef) => {
|
|
43
43
|
const props = useThemeSizeProps(ownProps, navbarRootPropDefs.size);
|
|
44
|
-
|
|
44
|
+
// `position` and `size` are written as data attributes below. They are taken out here so the
|
|
45
|
+
// spread does not also write them on the <header> as attributes it does not have.
|
|
46
|
+
const { children, className, position = 'fixed', size = '2', ...rootProps } = extractProps(
|
|
45
47
|
props,
|
|
46
48
|
navbarRootPropDefs,
|
|
47
49
|
);
|
|
48
50
|
|
|
49
|
-
const position = props.position ?? 'fixed';
|
|
50
|
-
const size = props.size ?? '2';
|
|
51
|
-
|
|
52
51
|
return (
|
|
53
52
|
<header
|
|
54
53
|
{...rootProps}
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
min-block-size: var(--control-height-3);
|
|
50
50
|
padding-inline: var(--layout-space-3);
|
|
51
51
|
border-radius: var(--radius-control-3);
|
|
52
|
-
color: var(--
|
|
52
|
+
color: var(--neutral-12);
|
|
53
53
|
font-size: var(--font-size-3);
|
|
54
54
|
line-height: var(--line-height-3);
|
|
55
55
|
text-align: start;
|
|
@@ -66,17 +66,17 @@
|
|
|
66
66
|
|
|
67
67
|
.kui-NavigatorLinkGlyph {
|
|
68
68
|
flex-shrink: 0;
|
|
69
|
-
color: var(--
|
|
69
|
+
color: var(--neutral-a10);
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
@media (hover: hover) {
|
|
73
73
|
.kui-NavigatorLink:where(:hover) {
|
|
74
|
-
background-color: var(--
|
|
74
|
+
background-color: var(--neutral-a3);
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
77
|
|
|
78
78
|
.kui-NavigatorLink:where(:active) {
|
|
79
|
-
background-color: var(--
|
|
79
|
+
background-color: var(--neutral-a4);
|
|
80
80
|
}
|
|
81
81
|
|
|
82
82
|
.kui-NavigatorLink:where(:focus-visible) {
|
|
@@ -46,6 +46,7 @@ export const BaseButtonSchema = z
|
|
|
46
46
|
z.enum(['1', '2', '3', '4']),
|
|
47
47
|
z.object({
|
|
48
48
|
initial: z.enum(['1', '2', '3', '4']).optional(),
|
|
49
|
+
xs: z.enum(['1', '2', '3', '4']).optional(),
|
|
49
50
|
sm: z.enum(['1', '2', '3', '4']).optional(),
|
|
50
51
|
md: z.enum(['1', '2', '3', '4']).optional(),
|
|
51
52
|
lg: z.enum(['1', '2', '3', '4']).optional(),
|
|
@@ -124,6 +125,12 @@ export const BaseButtonSchema = z
|
|
|
124
125
|
*/
|
|
125
126
|
disabled: z.boolean().optional().default(false).describe('Disabled state'),
|
|
126
127
|
|
|
128
|
+
/**
|
|
129
|
+
* Shows a tick in place of the icon to say the action finished
|
|
130
|
+
* @default false
|
|
131
|
+
*/
|
|
132
|
+
done: z.boolean().optional().describe('Shows a tick in place of the icon to say the action finished'),
|
|
133
|
+
|
|
127
134
|
/**
|
|
128
135
|
* Type attribute for form buttons
|
|
129
136
|
* @default 'button'
|
|
@@ -79,7 +79,7 @@ const PaneBaseShape = {
|
|
|
79
79
|
id: z.string().optional().describe('The pane id. A Trigger points `aria-controls` at it.'),
|
|
80
80
|
presentation: ResponsivePresentationSchema.optional(),
|
|
81
81
|
expandedSize: z.number().optional(),
|
|
82
|
-
|
|
82
|
+
flush: z.boolean().optional().describe('Whether the pane joins the app frame. Defaults to true. `false` pulls it off the frame as a card.'),
|
|
83
83
|
onExpand: z.function({ output: z.void() }).optional().describe('Deprecated: use `onOpenChange`'),
|
|
84
84
|
onCollapse: z.function({ output: z.void() }).optional().describe('Deprecated: use `onOpenChange`'),
|
|
85
85
|
className: z.string().optional().describe('Additional CSS class name'),
|
|
@@ -139,6 +139,7 @@ export const ShellRootSchema = z
|
|
|
139
139
|
export const ShellHeaderSchema = z
|
|
140
140
|
.object({
|
|
141
141
|
height: z.number().default(64).describe('Height of the header, in pixels'),
|
|
142
|
+
flush: z.boolean().optional().describe('Whether the header joins the app frame. Defaults to true. `false` makes it a card off the frame.'),
|
|
142
143
|
className: z.string().optional().describe('Additional CSS class name'),
|
|
143
144
|
style: StyleSchema,
|
|
144
145
|
children: z.any().optional().describe('Header content'),
|
|
@@ -202,7 +203,7 @@ export const ShellSidebarSchema = z
|
|
|
202
203
|
*/
|
|
203
204
|
export const ShellContentSchema = z
|
|
204
205
|
.object({
|
|
205
|
-
|
|
206
|
+
flush: z.boolean().optional().describe('Whether the work area joins the app frame. Defaults to true. `false` makes it a card on the Shell background.'),
|
|
206
207
|
className: z.string().optional().describe('Additional CSS class name'),
|
|
207
208
|
style: StyleSchema,
|
|
208
209
|
children: z.any().optional().describe('Main content'),
|
|
@@ -14,7 +14,8 @@ import { ButtonObjectSchema } from './button.schema.js';
|
|
|
14
14
|
* const iconProps = ToggleSchema.parse({ iconOnly: true, 'aria-label': 'Bold' });
|
|
15
15
|
* ```
|
|
16
16
|
*/
|
|
17
|
-
|
|
17
|
+
// A toggle's state is `pressed`, so it does not take Button's `done`.
|
|
18
|
+
export const ToggleSchema = ButtonObjectSchema.omit({ done: true }).extend({
|
|
18
19
|
/**
|
|
19
20
|
* Controlled pressed state
|
|
20
21
|
* When provided, the component is controlled and the pressed state is managed externally
|
|
@@ -118,6 +118,19 @@
|
|
|
118
118
|
}
|
|
119
119
|
}
|
|
120
120
|
|
|
121
|
+
/* A segment that holds more than text draws one label: always shown, at its state's weight. */
|
|
122
|
+
.kui-SegmentedControlItemLabelActive:where([data-single]) {
|
|
123
|
+
opacity: 1;
|
|
124
|
+
font-weight: var(--font-weight-regular);
|
|
125
|
+
letter-spacing: var(--tab-inactive-letter-spacing);
|
|
126
|
+
word-spacing: var(--tab-inactive-word-spacing);
|
|
127
|
+
:where(.kui-SegmentedControlItem[data-state='on']) & {
|
|
128
|
+
font-weight: var(--font-weight-medium);
|
|
129
|
+
letter-spacing: var(--tab-active-letter-spacing);
|
|
130
|
+
word-spacing: var(--tab-active-word-spacing);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
121
134
|
.kui-SegmentedControlItemSeparator {
|
|
122
135
|
/*
|
|
123
136
|
* Place the separator below the indicator.
|
|
@@ -135,6 +135,10 @@ interface SegmentedControlItemProps extends ComponentPropsWithout<typeof ToggleG
|
|
|
135
135
|
|
|
136
136
|
const SegmentedControlItem = React.forwardRef<HTMLButtonElement, SegmentedControlItemProps>(({ children, className, iconOnly, onFocus, ...props }, forwardedRef) => {
|
|
137
137
|
const context = React.useContext(SegmentedControlContext);
|
|
138
|
+
// The label is drawn twice, at both weights, so selecting a segment never changes its width.
|
|
139
|
+
// Only plain text is copied, as in Tabs: copying an element would duplicate its id and mount
|
|
140
|
+
// it twice. A segment holding an icon draws once and takes the weight of its state.
|
|
141
|
+
const isText = React.Children.toArray(children).every((child) => typeof child === 'string' || typeof child === 'number');
|
|
138
142
|
return (
|
|
139
143
|
<ToggleGroupPrimitive.Item
|
|
140
144
|
ref={forwardedRef}
|
|
@@ -149,10 +153,14 @@ const SegmentedControlItem = React.forwardRef<HTMLButtonElement, SegmentedContro
|
|
|
149
153
|
>
|
|
150
154
|
<span className="kui-SegmentedControlItemSeparator" />
|
|
151
155
|
<span className="kui-SegmentedControlItemLabel">
|
|
152
|
-
<span className="kui-SegmentedControlItemLabelActive"
|
|
153
|
-
<span className="kui-SegmentedControlItemLabelInactive" aria-hidden>
|
|
156
|
+
<span className="kui-SegmentedControlItemLabelActive" data-single={isText ? undefined : ''}>
|
|
154
157
|
{children}
|
|
155
158
|
</span>
|
|
159
|
+
{isText ? (
|
|
160
|
+
<span className="kui-SegmentedControlItemLabelInactive" aria-hidden>
|
|
161
|
+
{children}
|
|
162
|
+
</span>
|
|
163
|
+
) : null}
|
|
156
164
|
</span>
|
|
157
165
|
</ToggleGroupPrimitive.Item>
|
|
158
166
|
);
|