@womp/kookie-ui 0.14.0 → 0.14.1
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 +185 -71
- package/dist/cjs/components/_internal/pane-chrome.d.ts +47 -0
- package/dist/cjs/components/_internal/pane-chrome.d.ts.map +1 -0
- package/dist/cjs/components/_internal/pane-chrome.js +2 -0
- package/dist/cjs/components/_internal/pane-chrome.js.map +7 -0
- package/dist/cjs/components/_internal/shell-sidebar.d.ts +2 -1
- package/dist/cjs/components/_internal/shell-sidebar.d.ts.map +1 -1
- package/dist/cjs/components/_internal/shell-sidebar.js +1 -1
- package/dist/cjs/components/_internal/shell-sidebar.js.map +4 -4
- package/dist/cjs/components/index.js +5 -5
- package/dist/cjs/components/index.js.map +4 -4
- package/dist/cjs/components/shell.d.ts +5 -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 +4 -0
- 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/sidebar.props.d.ts +1 -0
- package/dist/cjs/components/sidebar.props.d.ts.map +1 -1
- package/dist/cjs/components/sidebar.props.js.map +2 -2
- package/dist/cjs/index.js +7 -7
- package/dist/cjs/index.js.map +4 -4
- package/dist/esm/{chunk-GSBKR7G3.js → chunk-3DEZMXFF.js} +2 -2
- package/dist/esm/{chunk-NSFH3PJ4.js → chunk-3HGHPAH4.js} +2 -2
- package/dist/esm/{chunk-NFBZUINB.js → chunk-3M73GWN5.js} +2 -2
- package/dist/esm/{chunk-EKYRZ54E.js → chunk-3Q3EOUGJ.js} +2 -2
- package/dist/esm/{chunk-4ME6O27S.js → chunk-3UZHKW6I.js} +2 -2
- package/dist/esm/{chunk-B2MGVXYL.js → chunk-45AMHIBO.js} +2 -2
- package/dist/esm/{chunk-BUV4ZVEQ.js → chunk-4BPRLR6C.js} +2 -2
- package/dist/esm/{chunk-3QCRDSYU.js → chunk-4D5LR4H6.js} +2 -2
- package/dist/esm/{chunk-77NDG5HJ.js → chunk-4JNHUPIM.js} +2 -2
- package/dist/esm/{chunk-4WSSOS2W.js → chunk-4WLDX7WZ.js} +2 -2
- package/dist/esm/{chunk-53IGKC4E.js → chunk-5JS7ADWX.js} +2 -2
- package/dist/esm/{chunk-AGNIFHOE.js → chunk-62CJL5G7.js} +2 -2
- package/dist/esm/{chunk-GRZ77YNL.js → chunk-7B6CIVAF.js} +2 -2
- package/dist/esm/{chunk-NTVCOEJE.js → chunk-BKES3M4Y.js} +2 -2
- package/dist/esm/{chunk-DWB4PFIW.js → chunk-BOFVKXUV.js} +2 -2
- package/dist/esm/{chunk-VX6ARMWP.js → chunk-C7UXUTUF.js} +2 -2
- package/dist/esm/{chunk-GQDDJK4N.js → chunk-CIKDGYX3.js} +2 -2
- package/dist/esm/{chunk-MNEUC27U.js → chunk-CL6P54QT.js} +2 -2
- package/dist/esm/{chunk-LWIIIPSF.js → chunk-DJA5MCJA.js} +2 -2
- package/dist/esm/{chunk-4YFJWXL2.js → chunk-EUSMN3K7.js} +2 -2
- package/dist/esm/{chunk-AYAKS3DT.js → chunk-GLKN32J3.js} +2 -2
- package/dist/esm/{chunk-COWZAUZR.js → chunk-GONBMSRL.js} +2 -2
- package/dist/esm/{chunk-FKFCOVSW.js → chunk-H7LHGT44.js} +2 -2
- package/dist/esm/{chunk-QUM2TSRR.js → chunk-HFVD7W6R.js} +2 -2
- package/dist/esm/{chunk-P7FYIMYU.js → chunk-HIBX2EXV.js} +2 -2
- package/dist/esm/{chunk-NLJIXW5S.js → chunk-HJLBVNQE.js} +2 -2
- package/dist/esm/{chunk-5ADGYTG5.js → chunk-HNO4X33C.js} +2 -2
- package/dist/esm/{chunk-KFLQI2CP.js → chunk-IHRLGR6J.js} +2 -2
- package/dist/esm/{chunk-QC2UOUUI.js → chunk-IPHKKZYE.js} +2 -2
- package/dist/esm/{chunk-FLO6QCGB.js → chunk-IQU6EELI.js} +3 -3
- package/dist/esm/{chunk-LBJEAC2S.js → chunk-IV4YJRVR.js} +2 -2
- package/dist/esm/{chunk-S5C5YRBS.js → chunk-IVBKTHDM.js} +2 -2
- package/dist/esm/{chunk-3QJED5UA.js → chunk-IY3GKGDZ.js} +2 -2
- package/dist/esm/{chunk-V7BPRUNP.js → chunk-JXVUTFQN.js} +2 -2
- package/dist/esm/{chunk-HSLP2HVS.js → chunk-K7BWSYVP.js} +2 -2
- package/dist/esm/{chunk-QUAPA57G.js → chunk-KJC32RWT.js} +1 -1
- package/dist/esm/{chunk-QUAPA57G.js.map → chunk-KJC32RWT.js.map} +2 -2
- package/dist/esm/{chunk-YS74SW5S.js → chunk-KJTEZVOF.js} +2 -2
- package/dist/esm/{chunk-OGXZHAQL.js → chunk-KXSMY4ZF.js} +2 -2
- package/dist/esm/{chunk-4QHJ7P3D.js → chunk-LJXP6K5Y.js} +2 -2
- package/dist/esm/{chunk-CSKZZOI2.js → chunk-N6Q3L64W.js} +2 -2
- package/dist/esm/{chunk-64GJCQFX.js → chunk-O2WPAUQN.js} +2 -2
- package/dist/esm/{chunk-27YQS6MM.js → chunk-OB3MHLQL.js} +2 -2
- package/dist/esm/chunk-OJSDBLP7.js +2 -0
- package/dist/esm/chunk-OJSDBLP7.js.map +7 -0
- package/dist/esm/chunk-OUSDYZDE.js +2 -0
- package/dist/esm/chunk-OUSDYZDE.js.map +7 -0
- package/dist/esm/{chunk-HF5WY5YE.js → chunk-PAEHH3WS.js} +2 -2
- package/dist/esm/{chunk-FHOCUZDR.js → chunk-PXUQEA77.js} +2 -2
- package/dist/esm/{chunk-GZG35274.js → chunk-R2MQMCND.js} +2 -2
- package/dist/esm/{chunk-JW3FRP5N.js → chunk-RAVFUI7W.js} +2 -2
- package/dist/esm/{chunk-DKRNQAU6.js → chunk-ROGC7K5N.js} +2 -2
- package/dist/esm/{chunk-NMXERIOL.js → chunk-RUOOCYK4.js} +2 -2
- package/dist/esm/{chunk-36A5BYCN.js → chunk-RUPET4E7.js} +2 -2
- package/dist/esm/chunk-RWN22S44.js +2 -0
- package/dist/esm/{chunk-LVPWM7CC.js → chunk-S3GZZXQ7.js} +2 -2
- package/dist/esm/{chunk-3IUDPNGP.js → chunk-SGUTNJUO.js} +2 -2
- package/dist/esm/{chunk-AVV55MFY.js → chunk-SIBSXKFF.js} +2 -2
- package/dist/esm/{chunk-QYU2HSGF.js → chunk-SQ4BU4GH.js} +2 -2
- package/dist/esm/chunk-SQZ5O7QS.js +2 -0
- package/dist/esm/chunk-SQZ5O7QS.js.map +7 -0
- package/dist/esm/{chunk-DSSF6SEA.js → chunk-SURYYF7I.js} +2 -2
- package/dist/esm/{chunk-DJJ6UGT2.js → chunk-TZ5MZQUB.js} +2 -2
- package/dist/esm/{chunk-4TBUUGR4.js → chunk-UE2OBZIS.js} +2 -2
- package/dist/esm/{chunk-WCQ2VRQU.js → chunk-UK3BFTI2.js} +2 -2
- package/dist/esm/chunk-UTHTSYSL.js +2 -0
- package/dist/esm/chunk-UTHTSYSL.js.map +7 -0
- package/dist/esm/{chunk-QINRF3V2.js → chunk-V3QVAXH3.js} +2 -2
- package/dist/esm/{chunk-AFOJ6OL3.js → chunk-VBAXORVV.js} +2 -2
- package/dist/esm/{chunk-IHK3H2OM.js → chunk-VUKTURU4.js} +2 -2
- package/dist/esm/{chunk-3O7A3XQ7.js → chunk-VV67KTKA.js} +2 -2
- package/dist/esm/{chunk-3LMC3CZW.js → chunk-WXBTPEFO.js} +2 -2
- package/dist/esm/{chunk-ADDXOZRI.js → chunk-YBS2IB7Z.js} +2 -2
- package/dist/esm/{chunk-7IFCYZHG.js → chunk-YDPCJO5G.js} +2 -2
- package/dist/esm/{chunk-EH7LNNGU.js → chunk-YLLCCUC7.js} +2 -2
- package/dist/esm/{chunk-E7ZXB36J.js → chunk-ZE2GWHPY.js} +2 -2
- package/dist/esm/{chunk-YAQBIO2B.js → chunk-ZQVYY7UT.js} +2 -2
- package/dist/esm/components/_internal/base-button.js +1 -1
- package/dist/esm/components/_internal/base-menu.utils.js +1 -1
- package/dist/esm/components/_internal/menu-context.js +1 -1
- package/dist/esm/components/_internal/pane-chrome.d.ts +47 -0
- package/dist/esm/components/_internal/pane-chrome.d.ts.map +1 -0
- package/dist/esm/components/_internal/pane-chrome.js +2 -0
- package/dist/esm/components/_internal/pane-chrome.js.map +7 -0
- 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.d.ts +2 -1
- package/dist/esm/components/_internal/shell-sidebar.d.ts.map +1 -1
- package/dist/esm/components/_internal/shell-sidebar.js +1 -1
- package/dist/esm/components/alert-dialog.js +1 -1
- package/dist/esm/components/app-bar.js +1 -1
- package/dist/esm/components/avatar.js +1 -1
- package/dist/esm/components/badge.js +1 -1
- package/dist/esm/components/blockquote.js +1 -1
- package/dist/esm/components/blockquote.props.js +1 -1
- package/dist/esm/components/box.js +1 -1
- package/dist/esm/components/button.js +1 -1
- package/dist/esm/components/callout.js +1 -1
- package/dist/esm/components/card.js +1 -1
- package/dist/esm/components/chatbar.js +1 -1
- package/dist/esm/components/checkbox-cards.js +1 -1
- package/dist/esm/components/checkbox-group.js +1 -1
- package/dist/esm/components/checkbox.js +1 -1
- package/dist/esm/components/code.js +1 -1
- package/dist/esm/components/code.props.js +1 -1
- package/dist/esm/components/combobox.js +1 -1
- package/dist/esm/components/container.js +1 -1
- package/dist/esm/components/context-menu.js +1 -1
- package/dist/esm/components/data-list.js +1 -1
- package/dist/esm/components/dialog.js +1 -1
- package/dist/esm/components/dropdown-menu.js +1 -1
- package/dist/esm/components/flex.js +1 -1
- package/dist/esm/components/grid.js +1 -1
- package/dist/esm/components/heading.js +1 -1
- package/dist/esm/components/heading.props.js +1 -1
- package/dist/esm/components/icon-button.js +1 -1
- package/dist/esm/components/image.js +1 -1
- package/dist/esm/components/index.js +1 -1
- package/dist/esm/components/inset.js +1 -1
- package/dist/esm/components/kbd.js +1 -1
- package/dist/esm/components/link.js +1 -1
- package/dist/esm/components/message-scroller.js +1 -1
- package/dist/esm/components/navbar.js +1 -1
- package/dist/esm/components/notice.js +1 -1
- package/dist/esm/components/progress.js +1 -1
- package/dist/esm/components/radio-cards.js +1 -1
- package/dist/esm/components/radio-group.js +1 -1
- package/dist/esm/components/radio.js +1 -1
- package/dist/esm/components/schemas/index.js +1 -1
- package/dist/esm/components/scroll-area.js +1 -1
- package/dist/esm/components/section.js +1 -1
- package/dist/esm/components/segmented-control.js +1 -1
- package/dist/esm/components/select.js +1 -1
- package/dist/esm/components/separator.js +1 -1
- package/dist/esm/components/sheet.js +1 -1
- package/dist/esm/components/shell.d.ts +5 -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 +4 -0
- package/dist/esm/components/sidebar.d.ts.map +1 -1
- package/dist/esm/components/sidebar.js +1 -1
- package/dist/esm/components/sidebar.props.d.ts +1 -0
- package/dist/esm/components/sidebar.props.d.ts.map +1 -1
- package/dist/esm/components/sidebar.props.js +1 -1
- package/dist/esm/components/skeleton.js +1 -1
- package/dist/esm/components/slider.js +1 -1
- package/dist/esm/components/spinner.js +1 -1
- package/dist/esm/components/switch.js +1 -1
- package/dist/esm/components/tab-nav.js +1 -1
- package/dist/esm/components/table.js +1 -1
- package/dist/esm/components/tabs.js +1 -1
- package/dist/esm/components/text-area.js +1 -1
- package/dist/esm/components/text-field.js +1 -1
- package/dist/esm/components/text.js +1 -1
- package/dist/esm/components/text.props.js +1 -1
- package/dist/esm/components/theme-panel.js +1 -1
- package/dist/esm/components/toggle-button.js +1 -1
- package/dist/esm/components/toggle-icon-button.js +1 -1
- package/dist/esm/components/toolbar.js +1 -1
- package/dist/esm/components/tooltip.js +1 -1
- package/dist/esm/components/user-card.js +1 -1
- package/dist/esm/components/virtual-menu.js +1 -1
- package/dist/esm/helpers/index.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/pane-chrome.tsx +90 -0
- package/src/components/_internal/shell-sidebar.tsx +13 -2
- package/src/components/shell.css +6 -0
- package/src/components/shell.tsx +24 -3
- package/src/components/sidebar.css +185 -62
- package/src/components/sidebar.props.tsx +1 -0
- package/src/components/sidebar.tsx +19 -13
- package/styles.css +185 -71
- package/dist/esm/chunk-F4VC2WAU.js +0 -2
- package/dist/esm/chunk-F4VC2WAU.js.map +0 -7
- package/dist/esm/chunk-MJOXEUBT.js +0 -2
- package/dist/esm/chunk-MJOXEUBT.js.map +0 -7
- package/dist/esm/chunk-ROSWI2CL.js +0 -2
- package/dist/esm/chunk-ROSWI2CL.js.map +0 -7
- package/dist/esm/chunk-UYKEBIUD.js +0 -2
- /package/dist/esm/{chunk-GSBKR7G3.js.map → chunk-3DEZMXFF.js.map} +0 -0
- /package/dist/esm/{chunk-NSFH3PJ4.js.map → chunk-3HGHPAH4.js.map} +0 -0
- /package/dist/esm/{chunk-NFBZUINB.js.map → chunk-3M73GWN5.js.map} +0 -0
- /package/dist/esm/{chunk-EKYRZ54E.js.map → chunk-3Q3EOUGJ.js.map} +0 -0
- /package/dist/esm/{chunk-4ME6O27S.js.map → chunk-3UZHKW6I.js.map} +0 -0
- /package/dist/esm/{chunk-B2MGVXYL.js.map → chunk-45AMHIBO.js.map} +0 -0
- /package/dist/esm/{chunk-BUV4ZVEQ.js.map → chunk-4BPRLR6C.js.map} +0 -0
- /package/dist/esm/{chunk-3QCRDSYU.js.map → chunk-4D5LR4H6.js.map} +0 -0
- /package/dist/esm/{chunk-77NDG5HJ.js.map → chunk-4JNHUPIM.js.map} +0 -0
- /package/dist/esm/{chunk-4WSSOS2W.js.map → chunk-4WLDX7WZ.js.map} +0 -0
- /package/dist/esm/{chunk-53IGKC4E.js.map → chunk-5JS7ADWX.js.map} +0 -0
- /package/dist/esm/{chunk-AGNIFHOE.js.map → chunk-62CJL5G7.js.map} +0 -0
- /package/dist/esm/{chunk-GRZ77YNL.js.map → chunk-7B6CIVAF.js.map} +0 -0
- /package/dist/esm/{chunk-NTVCOEJE.js.map → chunk-BKES3M4Y.js.map} +0 -0
- /package/dist/esm/{chunk-DWB4PFIW.js.map → chunk-BOFVKXUV.js.map} +0 -0
- /package/dist/esm/{chunk-VX6ARMWP.js.map → chunk-C7UXUTUF.js.map} +0 -0
- /package/dist/esm/{chunk-GQDDJK4N.js.map → chunk-CIKDGYX3.js.map} +0 -0
- /package/dist/esm/{chunk-MNEUC27U.js.map → chunk-CL6P54QT.js.map} +0 -0
- /package/dist/esm/{chunk-LWIIIPSF.js.map → chunk-DJA5MCJA.js.map} +0 -0
- /package/dist/esm/{chunk-4YFJWXL2.js.map → chunk-EUSMN3K7.js.map} +0 -0
- /package/dist/esm/{chunk-AYAKS3DT.js.map → chunk-GLKN32J3.js.map} +0 -0
- /package/dist/esm/{chunk-COWZAUZR.js.map → chunk-GONBMSRL.js.map} +0 -0
- /package/dist/esm/{chunk-FKFCOVSW.js.map → chunk-H7LHGT44.js.map} +0 -0
- /package/dist/esm/{chunk-QUM2TSRR.js.map → chunk-HFVD7W6R.js.map} +0 -0
- /package/dist/esm/{chunk-P7FYIMYU.js.map → chunk-HIBX2EXV.js.map} +0 -0
- /package/dist/esm/{chunk-NLJIXW5S.js.map → chunk-HJLBVNQE.js.map} +0 -0
- /package/dist/esm/{chunk-5ADGYTG5.js.map → chunk-HNO4X33C.js.map} +0 -0
- /package/dist/esm/{chunk-KFLQI2CP.js.map → chunk-IHRLGR6J.js.map} +0 -0
- /package/dist/esm/{chunk-QC2UOUUI.js.map → chunk-IPHKKZYE.js.map} +0 -0
- /package/dist/esm/{chunk-FLO6QCGB.js.map → chunk-IQU6EELI.js.map} +0 -0
- /package/dist/esm/{chunk-LBJEAC2S.js.map → chunk-IV4YJRVR.js.map} +0 -0
- /package/dist/esm/{chunk-S5C5YRBS.js.map → chunk-IVBKTHDM.js.map} +0 -0
- /package/dist/esm/{chunk-3QJED5UA.js.map → chunk-IY3GKGDZ.js.map} +0 -0
- /package/dist/esm/{chunk-V7BPRUNP.js.map → chunk-JXVUTFQN.js.map} +0 -0
- /package/dist/esm/{chunk-HSLP2HVS.js.map → chunk-K7BWSYVP.js.map} +0 -0
- /package/dist/esm/{chunk-YS74SW5S.js.map → chunk-KJTEZVOF.js.map} +0 -0
- /package/dist/esm/{chunk-OGXZHAQL.js.map → chunk-KXSMY4ZF.js.map} +0 -0
- /package/dist/esm/{chunk-4QHJ7P3D.js.map → chunk-LJXP6K5Y.js.map} +0 -0
- /package/dist/esm/{chunk-CSKZZOI2.js.map → chunk-N6Q3L64W.js.map} +0 -0
- /package/dist/esm/{chunk-64GJCQFX.js.map → chunk-O2WPAUQN.js.map} +0 -0
- /package/dist/esm/{chunk-27YQS6MM.js.map → chunk-OB3MHLQL.js.map} +0 -0
- /package/dist/esm/{chunk-HF5WY5YE.js.map → chunk-PAEHH3WS.js.map} +0 -0
- /package/dist/esm/{chunk-FHOCUZDR.js.map → chunk-PXUQEA77.js.map} +0 -0
- /package/dist/esm/{chunk-GZG35274.js.map → chunk-R2MQMCND.js.map} +0 -0
- /package/dist/esm/{chunk-JW3FRP5N.js.map → chunk-RAVFUI7W.js.map} +0 -0
- /package/dist/esm/{chunk-DKRNQAU6.js.map → chunk-ROGC7K5N.js.map} +0 -0
- /package/dist/esm/{chunk-NMXERIOL.js.map → chunk-RUOOCYK4.js.map} +0 -0
- /package/dist/esm/{chunk-36A5BYCN.js.map → chunk-RUPET4E7.js.map} +0 -0
- /package/dist/esm/{chunk-UYKEBIUD.js.map → chunk-RWN22S44.js.map} +0 -0
- /package/dist/esm/{chunk-LVPWM7CC.js.map → chunk-S3GZZXQ7.js.map} +0 -0
- /package/dist/esm/{chunk-3IUDPNGP.js.map → chunk-SGUTNJUO.js.map} +0 -0
- /package/dist/esm/{chunk-AVV55MFY.js.map → chunk-SIBSXKFF.js.map} +0 -0
- /package/dist/esm/{chunk-QYU2HSGF.js.map → chunk-SQ4BU4GH.js.map} +0 -0
- /package/dist/esm/{chunk-DSSF6SEA.js.map → chunk-SURYYF7I.js.map} +0 -0
- /package/dist/esm/{chunk-DJJ6UGT2.js.map → chunk-TZ5MZQUB.js.map} +0 -0
- /package/dist/esm/{chunk-4TBUUGR4.js.map → chunk-UE2OBZIS.js.map} +0 -0
- /package/dist/esm/{chunk-WCQ2VRQU.js.map → chunk-UK3BFTI2.js.map} +0 -0
- /package/dist/esm/{chunk-QINRF3V2.js.map → chunk-V3QVAXH3.js.map} +0 -0
- /package/dist/esm/{chunk-AFOJ6OL3.js.map → chunk-VBAXORVV.js.map} +0 -0
- /package/dist/esm/{chunk-IHK3H2OM.js.map → chunk-VUKTURU4.js.map} +0 -0
- /package/dist/esm/{chunk-3O7A3XQ7.js.map → chunk-VV67KTKA.js.map} +0 -0
- /package/dist/esm/{chunk-3LMC3CZW.js.map → chunk-WXBTPEFO.js.map} +0 -0
- /package/dist/esm/{chunk-ADDXOZRI.js.map → chunk-YBS2IB7Z.js.map} +0 -0
- /package/dist/esm/{chunk-7IFCYZHG.js.map → chunk-YDPCJO5G.js.map} +0 -0
- /package/dist/esm/{chunk-EH7LNNGU.js.map → chunk-YLLCCUC7.js.map} +0 -0
- /package/dist/esm/{chunk-E7ZXB36J.js.map → chunk-ZE2GWHPY.js.map} +0 -0
- /package/dist/esm/{chunk-YAQBIO2B.js.map → chunk-ZQVYY7UT.js.map} +0 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* A pane's own chrome: a header row, a scrolling region and a footer row.
|
|
5
|
+
*
|
|
6
|
+
* Shell.Sidebar and Shell.Panel render these as `Shell.PaneHeader`, `Shell.Scroll` and
|
|
7
|
+
* `Shell.PaneFooter`. The pane renders anything; with these parts it is the presentation, so
|
|
8
|
+
* Sidebar's menu parts work inside it with no `Sidebar.Root`. The index comes from the nearest
|
|
9
|
+
* Shell (`Shell.Root size`), or from a deprecated `Sidebar.Root` that still wraps them.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import * as React from 'react';
|
|
13
|
+
import classNames from 'classnames';
|
|
14
|
+
|
|
15
|
+
import { ScrollArea } from '../scroll-area.js';
|
|
16
|
+
|
|
17
|
+
type PaneSize = '1' | '2' | '3';
|
|
18
|
+
|
|
19
|
+
type SidebarVisualContextValue = {
|
|
20
|
+
size: PaneSize;
|
|
21
|
+
menuVariant: 'solid' | 'soft';
|
|
22
|
+
presentation?: 'thin' | 'expanded';
|
|
23
|
+
color?: string;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
/** Size, menu highlight and presentation for the Sidebar parts. Internal: not exported. */
|
|
27
|
+
const SidebarVisualContext = React.createContext<SidebarVisualContextValue | null>(null);
|
|
28
|
+
|
|
29
|
+
function useSidebarVisual() {
|
|
30
|
+
return React.useContext(SidebarVisualContext);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/** The Shell's index. `Shell.Root size` sets it; panes hand it to their chrome. */
|
|
34
|
+
const ShellSizeContext = React.createContext<PaneSize>('2');
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Gives a Shell pane's children the Shell's index, so Sidebar parts size themselves. In a Rail
|
|
38
|
+
* the rows are `thin`: icon tiles with a small label, sub-menus as dropdowns.
|
|
39
|
+
*/
|
|
40
|
+
function PaneChromeScope({ children, presentation }: { children: React.ReactNode; presentation?: 'thin' }) {
|
|
41
|
+
const size = React.useContext(ShellSizeContext);
|
|
42
|
+
const value = React.useMemo<SidebarVisualContextValue>(() => ({ size, menuVariant: 'soft', presentation }), [size, presentation]);
|
|
43
|
+
return <SidebarVisualContext.Provider value={value}>{children}</SidebarVisualContext.Provider>;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function useChromeClasses() {
|
|
47
|
+
const visual = useSidebarVisual();
|
|
48
|
+
const size = visual?.size ?? '2';
|
|
49
|
+
const menuVariant = visual?.menuVariant ?? 'soft';
|
|
50
|
+
return ['rt-ShellPaneChrome', `rt-r-size-${size}`, `rt-menu-variant-${menuVariant}`];
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
interface PaneHeaderProps extends React.ComponentPropsWithoutRef<'div'> {}
|
|
54
|
+
|
|
55
|
+
/** A pane's header row, pinned above its scrolling region. */
|
|
56
|
+
const PaneHeader = React.forwardRef<HTMLDivElement, PaneHeaderProps>(({ className, ...props }, forwardedRef) => {
|
|
57
|
+
const chrome = useChromeClasses();
|
|
58
|
+
return <div {...props} ref={forwardedRef} className={classNames('rt-ShellPaneHeader', 'rt-SidebarHeader', 'rt-SidebarHeader--container', ...chrome, className)} />;
|
|
59
|
+
});
|
|
60
|
+
PaneHeader.displayName = 'Shell.PaneHeader';
|
|
61
|
+
|
|
62
|
+
interface PaneFooterProps extends React.ComponentPropsWithoutRef<'div'> {}
|
|
63
|
+
|
|
64
|
+
/** A pane's footer row, pinned below its scrolling region. */
|
|
65
|
+
const PaneFooter = React.forwardRef<HTMLDivElement, PaneFooterProps>(({ className, ...props }, forwardedRef) => {
|
|
66
|
+
const chrome = useChromeClasses();
|
|
67
|
+
return <div {...props} ref={forwardedRef} className={classNames('rt-ShellPaneFooter', 'rt-SidebarFooter', 'rt-SidebarFooter--container', ...chrome, className)} />;
|
|
68
|
+
});
|
|
69
|
+
PaneFooter.displayName = 'Shell.PaneFooter';
|
|
70
|
+
|
|
71
|
+
interface ScrollProps extends React.ComponentPropsWithoutRef<'div'> {}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* The one region of a pane that scrolls; it takes the room the header and footer leave.
|
|
75
|
+
* It is not a landmark: for navigation, pass `role="navigation"` and an `aria-label`.
|
|
76
|
+
*/
|
|
77
|
+
const Scroll = React.forwardRef<HTMLDivElement, ScrollProps>(({ className, children, ...props }, forwardedRef) => {
|
|
78
|
+
const chrome = useChromeClasses();
|
|
79
|
+
return (
|
|
80
|
+
<ScrollArea type="hover" className="rt-ShellScroll">
|
|
81
|
+
<div {...props} ref={forwardedRef} className={classNames('rt-BaseMenuContent', 'rt-SidebarContent', ...chrome, className)}>
|
|
82
|
+
<div className="rt-BaseMenuViewport">{children}</div>
|
|
83
|
+
</div>
|
|
84
|
+
</ScrollArea>
|
|
85
|
+
);
|
|
86
|
+
});
|
|
87
|
+
Scroll.displayName = 'Shell.Scroll';
|
|
88
|
+
|
|
89
|
+
export { SidebarVisualContext, useSidebarVisual, ShellSizeContext, PaneChromeScope, PaneHeader, PaneFooter, Scroll };
|
|
90
|
+
export type { SidebarVisualContextValue, PaneSize, PaneHeaderProps, PaneFooterProps, ScrollProps };
|
|
@@ -10,14 +10,17 @@ import { splitHandles, useResizablePane, type SizeChangeMeta } from './shell-res
|
|
|
10
10
|
import { useInsetRegistration, warnOnce, type PaneValue } from './shell-store.js';
|
|
11
11
|
import { navigationRest, startAnchoredGrowth, withoutRemovedPaneProps } from './shell-rest.js';
|
|
12
12
|
import { readBreakpoint } from '../../hooks/use-breakpoint.js';
|
|
13
|
+
import { warnDeprecated } from '../../helpers/warn-deprecated.js';
|
|
14
|
+
import { PaneChromeScope } from './pane-chrome.js';
|
|
13
15
|
import type { Breakpoint, CSSPropertiesWithVars, PaneBaseProps, Responsive, SidebarMode } from '../shell.types.js';
|
|
14
16
|
|
|
15
17
|
type SidebarStateChangeMeta = { reason: 'init' | 'toggle' | 'responsive' | 'dismiss' };
|
|
16
18
|
type SidebarControlledProps = { state: Responsive<SidebarMode>; onStateChange?: (state: SidebarMode, meta: SidebarStateChangeMeta) => void; defaultState?: never };
|
|
17
19
|
type SidebarUncontrolledProps = { defaultState?: SidebarMode | Partial<Record<Breakpoint, SidebarMode>>; onStateChange?: (state: SidebarMode, meta: SidebarStateChangeMeta) => void; state?: never };
|
|
18
20
|
type SidebarPublicProps = PaneBaseProps & {
|
|
21
|
+
/** @deprecated Thin mode is removed in 0.15.0. Use `Shell.Rail`. */
|
|
19
22
|
thinSize?: number;
|
|
20
|
-
/** `both` toggles through collapsed, thin and expanded; `single` between collapsed and the default. */
|
|
23
|
+
/** `both` (deprecated with thin mode; `single` is the 0.15.0 behaviour) toggles through collapsed, thin and expanded; `single` between collapsed and the default. */
|
|
21
24
|
toggleModes?: 'both' | 'single';
|
|
22
25
|
size?: number | string;
|
|
23
26
|
defaultSize?: number | string;
|
|
@@ -109,6 +112,12 @@ export const Sidebar = React.forwardRef<HTMLDivElement, SidebarPublicProps>((pro
|
|
|
109
112
|
});
|
|
110
113
|
useInsetRegistration('sidebar', inset);
|
|
111
114
|
|
|
115
|
+
if (props.thinSize !== undefined || pane.value === 'thin') {
|
|
116
|
+
warnDeprecated(
|
|
117
|
+
"Shell.Sidebar's thin mode is deprecated and will be removed in 0.15.0. Put the rows in Shell.Rail, which draws them as tiles, and use toggleModes=\"single\" so the toggle skips thin.",
|
|
118
|
+
);
|
|
119
|
+
}
|
|
120
|
+
|
|
112
121
|
React.useEffect(() => {
|
|
113
122
|
if (snapPoints !== undefined || collapseThreshold !== undefined || paneId !== undefined || persistence !== undefined) {
|
|
114
123
|
warnOnce('Shell.Sidebar: `snapPoints`, `collapseThreshold`, `paneId` and `persistence` are deprecated and are removed in 1.0. Keep the size in your own state with `size`/`onSizeChange`.');
|
|
@@ -184,7 +193,9 @@ export const Sidebar = React.forwardRef<HTMLDivElement, SidebarPublicProps>((pro
|
|
|
184
193
|
} as CSSPropertiesWithVars
|
|
185
194
|
}
|
|
186
195
|
>
|
|
187
|
-
<div className="rt-ShellSidebarContent">
|
|
196
|
+
<div className="rt-ShellSidebarContent">
|
|
197
|
+
<PaneChromeScope>{content}</PaneChromeScope>
|
|
198
|
+
</div>
|
|
188
199
|
{handle}
|
|
189
200
|
</div>
|
|
190
201
|
);
|
package/src/components/shell.css
CHANGED
|
@@ -207,6 +207,12 @@
|
|
|
207
207
|
gap: var(--space-2);
|
|
208
208
|
}
|
|
209
209
|
|
|
210
|
+
/* Shell.Scroll takes the room a pane's header and footer leave, and scrolls inside it. */
|
|
211
|
+
.rt-ShellScroll {
|
|
212
|
+
flex: 1;
|
|
213
|
+
min-height: 0;
|
|
214
|
+
}
|
|
215
|
+
|
|
210
216
|
/* Closed is closed, in every posture: out of the layout, the tab order and the accessibility tree. */
|
|
211
217
|
.rt-ShellPane[data-state='closed'] {
|
|
212
218
|
display: none;
|
package/src/components/shell.tsx
CHANGED
|
@@ -47,6 +47,8 @@ import { navigationRest, detailRest, toPaneValue, startAnchoredGrowth, withoutRe
|
|
|
47
47
|
import { useShell, useSidebarMode } from './shell.context.js';
|
|
48
48
|
import { useResponsivePresentation } from './shell.hooks.js';
|
|
49
49
|
import { readBreakpoint } from '../hooks/use-breakpoint.js';
|
|
50
|
+
import { PaneChromeScope, PaneFooter, PaneHeader, Scroll, ShellSizeContext } from './_internal/pane-chrome.js';
|
|
51
|
+
import type { PaneSize } from './_internal/pane-chrome.js';
|
|
50
52
|
import type { Breakpoint, CSSPropertiesWithVars, PaneBaseProps, PaneMode, PaneName, PaneTarget, ResponsivePresentation, SidebarMode } from './shell.types.js';
|
|
51
53
|
|
|
52
54
|
/* ── Root ──────────────────────────────────────────────────────────────────── */
|
|
@@ -54,6 +56,8 @@ import type { Breakpoint, CSSPropertiesWithVars, PaneBaseProps, PaneMode, PaneNa
|
|
|
54
56
|
export interface ShellRootProps extends React.ComponentPropsWithoutRef<'div'> {
|
|
55
57
|
children: React.ReactNode;
|
|
56
58
|
height?: 'full' | 'auto' | string | number;
|
|
59
|
+
/** The index the panes' chrome takes: `Shell.PaneHeader`, `Shell.Scroll`, `Shell.PaneFooter` and the Sidebar rows in them. Default `2`. */
|
|
60
|
+
size?: PaneSize;
|
|
57
61
|
}
|
|
58
62
|
|
|
59
63
|
/**
|
|
@@ -92,7 +96,7 @@ function triggerFor(doc: Document, id: string, within?: HTMLElement[]): HTMLElem
|
|
|
92
96
|
|
|
93
97
|
type LivePane = { name: PaneName; id: string; el: HTMLElement };
|
|
94
98
|
|
|
95
|
-
const Root = React.forwardRef<HTMLDivElement, ShellRootProps>(({ className, children, height = 'full', style, onKeyDown, onFocus, ...props }, ref) => {
|
|
99
|
+
const Root = React.forwardRef<HTMLDivElement, ShellRootProps>(({ className, children, height = 'full', size = '2', style, onKeyDown, onFocus, ...props }, ref) => {
|
|
96
100
|
const [store] = React.useState(createShellStore);
|
|
97
101
|
const subscribe = React.useCallback((listener: () => void) => subscribeShellStore(store, listener), [store]);
|
|
98
102
|
// Subscribed for the re-render, not for a value: a pane opening or closing
|
|
@@ -354,6 +358,7 @@ const Root = React.forwardRef<HTMLDivElement, ShellRootProps>(({ className, chil
|
|
|
354
358
|
|
|
355
359
|
return (
|
|
356
360
|
<ShellStoreContext.Provider value={store}>
|
|
361
|
+
<ShellSizeContext.Provider value={size}>
|
|
357
362
|
<ShellInsetContext.Provider value={insetContext}>
|
|
358
363
|
{/* The Root is not a widget: it hears Escape bubbling up from the panes,
|
|
359
364
|
after their own handlers, to close the overlays. */}
|
|
@@ -376,6 +381,7 @@ const Root = React.forwardRef<HTMLDivElement, ShellRootProps>(({ className, chil
|
|
|
376
381
|
<div className="rt-ShellScrim" aria-hidden onClick={closeOverlays} />
|
|
377
382
|
</div>
|
|
378
383
|
</ShellInsetContext.Provider>
|
|
384
|
+
</ShellSizeContext.Provider>
|
|
379
385
|
</ShellStoreContext.Provider>
|
|
380
386
|
);
|
|
381
387
|
});
|
|
@@ -480,12 +486,22 @@ const Rail = React.forwardRef<HTMLDivElement, RailProps>((props, ref) => {
|
|
|
480
486
|
tabIndex={pane.overlaying ? -1 : domProps.tabIndex}
|
|
481
487
|
style={{ ...style, '--rail-size': `${expandedSize}px` } as CSSPropertiesWithVars}
|
|
482
488
|
>
|
|
483
|
-
<
|
|
489
|
+
<RailContent>{children}</RailContent>
|
|
484
490
|
</div>
|
|
485
491
|
);
|
|
486
492
|
});
|
|
487
493
|
Rail.displayName = 'Shell.Rail';
|
|
488
494
|
|
|
495
|
+
/** The Rail's content carries the index, so the thin row styles can size themselves by it. */
|
|
496
|
+
function RailContent({ children }: { children: React.ReactNode }) {
|
|
497
|
+
const size = React.useContext(ShellSizeContext);
|
|
498
|
+
return (
|
|
499
|
+
<div className={classNames('rt-ShellRailContent', `rt-r-size-${size}`)}>
|
|
500
|
+
<PaneChromeScope presentation="thin">{children}</PaneChromeScope>
|
|
501
|
+
</div>
|
|
502
|
+
);
|
|
503
|
+
}
|
|
504
|
+
|
|
489
505
|
/* ── Panel ─────────────────────────────────────────────────────────────────── */
|
|
490
506
|
|
|
491
507
|
type HandleComponent = React.ForwardRefExoticComponent<React.ComponentPropsWithoutRef<'div'> & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -640,7 +656,9 @@ const Panel = React.forwardRef<HTMLDivElement, PanelPublicProps>((props, ref) =>
|
|
|
640
656
|
} as CSSPropertiesWithVars
|
|
641
657
|
}
|
|
642
658
|
>
|
|
643
|
-
<div className="rt-ShellPanelContent">
|
|
659
|
+
<div className="rt-ShellPanelContent">
|
|
660
|
+
<PaneChromeScope>{content}</PaneChromeScope>
|
|
661
|
+
</div>
|
|
644
662
|
{handle}
|
|
645
663
|
</div>
|
|
646
664
|
);
|
|
@@ -750,6 +768,9 @@ export {
|
|
|
750
768
|
Inspector,
|
|
751
769
|
Bottom,
|
|
752
770
|
Trigger,
|
|
771
|
+
PaneHeader,
|
|
772
|
+
PaneFooter,
|
|
773
|
+
Scroll,
|
|
753
774
|
useShell,
|
|
754
775
|
useSidebarMode,
|
|
755
776
|
useResponsivePresentation,
|