@justanarthur/modo-ui 0.5.0 → 0.6.0-canary.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/DESIGN.md +608 -0
- package/README.md +61 -39
- package/blocks/sidebar-app/examples.mdx +33 -0
- package/blocks/sidebar-app/index.tsx +218 -0
- package/blocks/sidebar-app/inset-topbar.tsx +25 -0
- package/blocks/sidebar-app/menu-grid.ts +26 -0
- package/blocks/sidebar-app/nav-data.ts +36 -0
- package/blocks/sidebar-app/search-field.tsx +48 -0
- package/blocks/sidebar-app/user-footer.tsx +67 -0
- package/blocks/sidebar-app/workspace-header.tsx +129 -0
- package/components/AI/input-message/examples.mdx +124 -0
- package/components/AI/input-message/file-thumbnail.tsx +173 -0
- package/components/AI/input-message/index.tsx +1383 -0
- package/components/AI/thinking-indicator/examples.mdx +27 -0
- package/components/AI/thinking-indicator/index.tsx +210 -0
- package/components/accordion/examples.mdx +148 -0
- package/components/accordion/index.tsx +1034 -0
- package/components/avatar/examples.mdx +95 -0
- package/components/avatar/index.tsx +129 -0
- package/components/badge/change-demo.tsx +29 -0
- package/components/badge/examples.mdx +120 -0
- package/components/badge/index.tsx +225 -0
- package/components/badge/variants.ts +73 -0
- package/components/button/examples.mdx +164 -0
- package/components/button/index.tsx +416 -0
- package/components/button/loading-demo.tsx +25 -0
- package/components/button/variants.ts +166 -0
- package/components/card/examples.mdx +212 -0
- package/components/card/index.tsx +1037 -0
- package/components/copy/examples.mdx +87 -0
- package/components/copy/index.tsx +482 -0
- package/components/inputs/checkbox/examples.mdx +83 -0
- package/components/inputs/checkbox/index.tsx +611 -0
- package/components/inputs/checkbox/select-all-demo.tsx +48 -0
- package/components/inputs/color-picker/examples.mdx +72 -0
- package/components/inputs/color-picker/index.tsx +1955 -0
- package/components/inputs/color-picker/variants.ts +401 -0
- package/components/inputs/combobox/examples.mdx +273 -0
- package/components/inputs/combobox/index.tsx +1436 -0
- package/components/inputs/combobox/remote-demo.tsx +101 -0
- package/components/inputs/date-time/calendar/examples.mdx +34 -0
- package/components/inputs/date-time/calendar/index.tsx +351 -0
- package/components/inputs/date-time/calendar/use-month-window.ts +163 -0
- package/components/inputs/date-time/date-picker/examples.mdx +166 -0
- package/components/inputs/date-time/date-picker/index.tsx +385 -0
- package/components/inputs/date-time/date-picker/masked-date-input.tsx +336 -0
- package/components/inputs/date-time/date-range-picker/examples.mdx +29 -0
- package/components/inputs/date-time/date-range-picker/index.tsx +217 -0
- package/components/inputs/date-time/duration-picker/examples.mdx +16 -0
- package/components/inputs/date-time/duration-picker/index.tsx +189 -0
- package/components/inputs/date-time/month-picker/examples.mdx +16 -0
- package/components/inputs/date-time/month-picker/index.tsx +190 -0
- package/components/inputs/date-time/picker-shell.tsx +395 -0
- package/components/inputs/date-time/time-columns.tsx +91 -0
- package/components/inputs/date-time/time-picker/examples.mdx +26 -0
- package/components/inputs/date-time/time-picker/index.tsx +166 -0
- package/components/inputs/field/examples.mdx +113 -0
- package/components/inputs/field/index.tsx +267 -0
- package/components/inputs/file-dropzone/examples.mdx +73 -0
- package/components/inputs/file-dropzone/file-row.tsx +201 -0
- package/components/inputs/file-dropzone/index.tsx +296 -0
- package/components/inputs/file-dropzone/upload-demo.tsx +67 -0
- package/components/inputs/file-dropzone/variants.ts +94 -0
- package/components/inputs/input/examples.mdx +135 -0
- package/components/inputs/input/index.tsx +494 -0
- package/components/inputs/input/password-demo.tsx +30 -0
- package/components/inputs/label/examples.mdx +67 -0
- package/components/inputs/label/index.tsx +85 -0
- package/components/inputs/number-input/examples.mdx +56 -0
- package/components/inputs/number-input/index.tsx +214 -0
- package/components/inputs/radio/examples.mdx +77 -0
- package/components/inputs/radio/index.tsx +636 -0
- package/components/inputs/search/examples.mdx +74 -0
- package/components/inputs/search/index.tsx +333 -0
- package/components/inputs/select/examples.mdx +218 -0
- package/components/inputs/select/index.tsx +862 -0
- package/components/inputs/select/variants.ts +32 -0
- package/components/inputs/slider/examples.mdx +127 -0
- package/components/inputs/slider/index.tsx +1725 -0
- package/components/inputs/switch/examples.mdx +94 -0
- package/components/inputs/switch/index.tsx +504 -0
- package/components/inputs/textarea/examples.mdx +88 -0
- package/components/inputs/textarea/index.tsx +161 -0
- package/components/navigation/navigation-menu/examples.mdx +109 -0
- package/components/navigation/navigation-menu/index.tsx +613 -0
- package/components/navigation/pagination/examples.mdx +64 -0
- package/components/navigation/pagination/index.tsx +395 -0
- package/components/navigation/sidebar/examples.mdx +319 -0
- package/components/navigation/sidebar/index.tsx +453 -0
- package/components/navigation/sidebar/sidebar-core.tsx +1408 -0
- package/components/navigation/sidebar/sidebar-menu.tsx +1495 -0
- package/components/navigation/sidebar/sidebar.css +74 -0
- package/components/navigation/sidebar/variants.ts +55 -0
- package/components/navigation/tabs/examples.mdx +89 -0
- package/components/navigation/tabs/index.tsx +494 -0
- package/components/navigation/tabs-subtle/examples.mdx +49 -0
- package/components/navigation/tabs-subtle/index.tsx +512 -0
- package/components/overlays/alert-dialog/examples.mdx +123 -0
- package/components/overlays/alert-dialog/index.tsx +258 -0
- package/components/overlays/alert-dialog/pending-demo.tsx +36 -0
- package/components/overlays/command/examples.mdx +113 -0
- package/components/overlays/command/index.tsx +416 -0
- package/components/overlays/context-menu/examples.mdx +56 -0
- package/components/overlays/context-menu/index.tsx +279 -0
- package/components/overlays/dialog/examples.mdx +144 -0
- package/components/overlays/dialog/index.tsx +366 -0
- package/components/overlays/dropdown/dropdown-search.tsx +395 -0
- package/components/overlays/dropdown/examples.mdx +294 -0
- package/components/overlays/dropdown/index.tsx +1168 -0
- package/components/overlays/dropdown/menu-item.tsx +464 -0
- package/components/overlays/dropdown/menu-parts.tsx +660 -0
- package/components/overlays/popover/anchored-demo.tsx +59 -0
- package/components/overlays/popover/examples.mdx +180 -0
- package/components/overlays/popover/index.tsx +315 -0
- package/components/overlays/preview-card/examples.mdx +61 -0
- package/components/overlays/preview-card/index.tsx +204 -0
- package/components/overlays/sheet/examples.mdx +89 -0
- package/components/overlays/sheet/index.tsx +247 -0
- package/components/overlays/toast/examples.mdx +68 -0
- package/components/overlays/toast/global-demo.tsx +72 -0
- package/components/overlays/toast/index.tsx +474 -0
- package/components/overlays/toast/manager.ts +193 -0
- package/components/overlays/tooltip/examples.mdx +106 -0
- package/components/overlays/tooltip/index.tsx +519 -0
- package/components/progress/examples.mdx +59 -0
- package/components/progress/index.tsx +174 -0
- package/components/progress/progress.css +49 -0
- package/components/progress/step-demo.tsx +27 -0
- package/components/table/examples.mdx +184 -0
- package/components/table/index.tsx +510 -0
- package/components/table/sort-demo.tsx +61 -0
- package/dist/base.css +100 -0
- package/dist/blocks/sidebar-app/index.js +39 -26
- package/dist/components/AI/input-message/index.js +22 -16
- package/dist/components/AI/thinking-indicator/index.js +9 -6
- package/dist/components/accordion/index.js +16 -13
- package/dist/components/avatar/index.d.ts +46 -0
- package/dist/components/avatar/index.js +18 -0
- package/dist/components/badge/index.d.ts +18 -11
- package/dist/components/badge/index.js +11 -7
- package/dist/components/badge/variants.d.ts +33 -0
- package/dist/components/badge/variants.js +10 -0
- package/dist/components/button/index.d.ts +53 -17
- package/dist/components/button/index.js +10 -6
- package/dist/components/button/variants.d.ts +39 -0
- package/dist/components/button/variants.js +8 -0
- package/dist/components/card/index.d.ts +16 -3
- package/dist/components/card/index.js +16 -11
- package/dist/components/copy/index.js +13 -9
- package/dist/components/inputs/checkbox/index.d.ts +28 -9
- package/dist/components/inputs/checkbox/index.js +17 -13
- package/dist/components/inputs/color-picker/index.d.ts +13 -13
- package/dist/components/inputs/color-picker/index.js +25 -18
- package/dist/components/inputs/color-picker/variants.d.ts +61 -0
- package/dist/components/inputs/color-picker/variants.js +28 -0
- package/dist/components/inputs/combobox/index.d.ts +60 -17
- package/dist/components/inputs/combobox/index.js +26 -18
- package/dist/components/inputs/date-time/calendar/index.js +14 -11
- package/dist/components/inputs/date-time/date-picker/index.d.ts +53 -11
- package/dist/components/inputs/date-time/date-picker/index.js +33 -25
- package/dist/components/inputs/date-time/date-range-picker/index.d.ts +3 -3
- package/dist/components/inputs/date-time/date-range-picker/index.js +32 -24
- package/dist/components/inputs/date-time/duration-picker/index.d.ts +3 -3
- package/dist/components/inputs/date-time/duration-picker/index.js +32 -24
- package/dist/components/inputs/date-time/month-picker/index.d.ts +3 -3
- package/dist/components/inputs/date-time/month-picker/index.js +31 -23
- package/dist/components/inputs/date-time/time-picker/index.d.ts +3 -3
- package/dist/components/inputs/date-time/time-picker/index.js +32 -24
- package/dist/components/inputs/field/index.d.ts +116 -0
- package/dist/components/inputs/field/index.js +28 -0
- package/dist/components/inputs/file-dropzone/index.d.ts +165 -0
- package/dist/components/inputs/file-dropzone/index.js +32 -0
- package/dist/components/inputs/file-dropzone/variants.d.ts +35 -0
- package/dist/components/inputs/file-dropzone/variants.js +12 -0
- package/dist/components/inputs/input/index.d.ts +95 -13
- package/dist/components/inputs/input/index.js +17 -9
- package/dist/components/inputs/label/index.d.ts +32 -0
- package/dist/components/inputs/label/index.js +11 -0
- package/dist/components/inputs/number-input/index.d.ts +84 -0
- package/dist/components/inputs/number-input/index.js +20 -0
- package/dist/components/inputs/radio/index.d.ts +20 -5
- package/dist/components/inputs/radio/index.js +15 -12
- package/dist/components/inputs/search/index.js +25 -18
- package/dist/components/inputs/select/index.d.ts +41 -11
- package/dist/components/inputs/select/index.js +27 -14
- package/dist/components/inputs/select/variants.d.ts +5 -0
- package/dist/components/inputs/select/variants.js +6 -0
- package/dist/components/inputs/slider/index.js +7 -5
- package/dist/components/inputs/switch/index.d.ts +8 -2
- package/dist/components/inputs/switch/index.js +14 -12
- package/dist/components/inputs/textarea/index.d.ts +4 -0
- package/dist/components/inputs/textarea/index.js +8 -6
- package/dist/components/navigation/navigation-menu/index.d.ts +114 -0
- package/dist/components/navigation/navigation-menu/index.js +40 -0
- package/dist/components/navigation/pagination/index.d.ts +73 -0
- package/dist/components/navigation/pagination/index.js +39 -0
- package/dist/components/navigation/sidebar/index.d.ts +44 -21
- package/dist/components/navigation/sidebar/index.js +41 -31
- package/dist/components/navigation/sidebar/variants.d.ts +25 -0
- package/dist/components/navigation/sidebar/variants.js +28 -0
- package/dist/components/navigation/tabs/index.d.ts +8 -2
- package/dist/components/navigation/tabs/index.js +14 -10
- package/dist/components/navigation/tabs-subtle/index.js +12 -10
- package/dist/components/overlays/alert-dialog/index.d.ts +121 -15
- package/dist/components/overlays/alert-dialog/index.js +22 -13
- package/dist/components/overlays/command/index.js +24 -17
- package/dist/components/overlays/context-menu/index.d.ts +33 -17
- package/dist/components/overlays/context-menu/index.js +27 -18
- package/dist/components/overlays/dialog/index.js +17 -12
- package/dist/components/overlays/dropdown/index.d.ts +257 -31
- package/dist/components/overlays/dropdown/index.js +42 -17
- package/dist/components/overlays/popover/index.d.ts +31 -9
- package/dist/components/overlays/popover/index.js +12 -9
- package/dist/components/overlays/preview-card/index.js +11 -8
- package/dist/components/overlays/sheet/index.js +18 -13
- package/dist/components/overlays/toast/index.d.ts +123 -47
- package/dist/components/overlays/toast/index.js +18 -10
- package/dist/components/overlays/tooltip/index.d.ts +113 -21
- package/dist/components/overlays/tooltip/index.js +15 -6
- package/dist/components/progress/index.d.ts +56 -0
- package/dist/components/progress/index.js +15 -0
- package/dist/components/table/index.d.ts +63 -8
- package/dist/components/table/index.js +19 -9
- package/dist/index.d.ts +2201 -736
- package/dist/index.js +223 -82
- package/dist/lib/date-locale.d.ts +14 -0
- package/dist/lib/date-locale.js +16 -0
- package/dist/lib/field-classes.d.ts +144 -0
- package/dist/lib/field-classes.js +40 -0
- package/dist/lib/field-variants.d.ts +47 -0
- package/dist/lib/field-variants.js +26 -0
- package/dist/lib/fluid-hover-highlight.d.ts +112 -0
- package/dist/lib/fluid-hover-highlight.js +17 -0
- package/dist/lib/focus-ring.d.ts +18 -0
- package/dist/lib/focus-ring.js +10 -0
- package/dist/lib/goo-indicator.d.ts +46 -0
- package/dist/lib/goo-indicator.js +14 -0
- package/dist/lib/icon-context.d.ts +30 -0
- package/dist/lib/icon-context.js +12 -0
- package/dist/lib/inert.d.ts +9 -0
- package/dist/lib/inert.js +8 -0
- package/dist/lib/morph-layers.d.ts +93 -0
- package/dist/lib/morph-layers.js +13 -0
- package/dist/lib/morph-part.d.ts +21 -0
- package/dist/lib/morph-part.js +12 -0
- package/dist/lib/popup.d.ts +20 -0
- package/dist/lib/popup.js +12 -0
- package/dist/lib/reduced-motion.d.ts +9 -0
- package/dist/lib/reduced-motion.js +6 -0
- package/dist/lib/row-index.d.ts +10 -0
- package/dist/lib/row-index.js +8 -0
- package/dist/lib/row-order.d.ts +28 -0
- package/dist/lib/row-order.js +10 -0
- package/dist/lib/scroll-column.d.ts +27 -0
- package/dist/lib/scroll-column.js +18 -0
- package/dist/lib/shape-context.d.ts +30 -0
- package/dist/lib/shape-context.js +12 -0
- package/dist/lib/size-context.d.ts +94 -0
- package/dist/lib/size-context.js +20 -0
- package/dist/lib/size-scale.d.ts +79 -0
- package/dist/lib/size-scale.js +8 -0
- package/dist/lib/slot.d.ts +12 -0
- package/dist/lib/slot.js +6 -0
- package/dist/lib/springs.d.ts +44 -0
- package/dist/lib/springs.js +8 -0
- package/dist/lib/surface-classes.d.ts +19 -0
- package/dist/lib/surface-classes.js +10 -0
- package/dist/lib/surface-context.d.ts +9 -0
- package/dist/lib/surface-context.js +8 -0
- package/dist/lib/use-controllable-state.d.ts +2 -0
- package/dist/lib/use-controllable-state.js +6 -0
- package/dist/lib/use-fluid-hover.d.ts +138 -0
- package/dist/lib/use-fluid-hover.js +14 -0
- package/dist/lib/use-is-mobile.d.ts +2 -0
- package/dist/lib/use-is-mobile.js +6 -0
- package/dist/lib/use-keyboard-nav-gate.d.ts +20 -0
- package/dist/lib/use-keyboard-nav-gate.js +7 -0
- package/dist/lib/use-merge-split.d.ts +47 -0
- package/dist/lib/use-merge-split.js +15 -0
- package/dist/lib/use-morph.d.ts +101 -0
- package/dist/lib/use-morph.js +20 -0
- package/dist/lib/use-touch-primary.d.ts +2 -0
- package/dist/lib/use-touch-primary.js +6 -0
- package/dist/lib/utils.d.ts +3 -0
- package/dist/lib/utils.js +6 -0
- package/dist/preset.d.ts +17 -0
- package/dist/preset.js +22 -2
- package/dist/primitives/code/index.js +7 -5
- package/dist/primitives/craft/index.js +9 -6
- package/dist/primitives/fluid-hover/index.js +9 -8
- package/dist/primitives/morph/index.js +15 -10
- package/dist/primitives/motion/index.js +10 -8
- package/dist/primitives/scroll-area/index.js +4 -3
- package/dist/primitives/separator/index.d.ts +25 -0
- package/dist/primitives/separator/index.js +9 -0
- package/dist/primitives/sizes/index.js +6 -4
- package/dist/primitives/skeleton/index.d.ts +35 -0
- package/dist/primitives/skeleton/index.js +12 -0
- package/dist/primitives/surface/index.js +6 -4
- package/dist/shared/{components-3mkepka5.js → components-0jmqhx2k.js} +28 -25
- package/dist/shared/components-124epb7f.js +53 -0
- package/dist/shared/{components-gz8zf3ec.js → components-1k0wv53d.js} +15 -43
- package/dist/shared/components-26snnbs9.js +322 -0
- package/dist/shared/{components-2dxkv6zm.js → components-2c0qcfx4.js} +8 -7
- package/dist/shared/{components-473g814w.js → components-2mt9te6d.js} +243 -137
- package/dist/shared/{components-hawvy2qz.js → components-2z48g4fp.js} +9 -30
- package/dist/shared/components-34txk9rj.js +35 -0
- package/dist/shared/components-3h92d94m.js +23 -0
- package/dist/shared/{components-zfnmn5d4.js → components-3sp623ae.js} +36 -31
- package/dist/shared/{components-jwst3vtj.js → components-3wxkjgqn.js} +186 -76
- package/dist/shared/{components-s2bz1xpk.js → components-49bsynbw.js} +8 -5
- package/dist/shared/components-4bwsd46w.js +71 -0
- package/dist/shared/components-4n4f5m3e.js +297 -0
- package/dist/shared/{components-0q0sqfh4.js → components-4y816hwp.js} +27 -49
- package/dist/shared/components-52ngsgca.js +399 -0
- package/dist/shared/{components-y9y0g8er.js → components-52r5763g.js} +22 -19
- package/dist/shared/components-559tf7yb.js +28 -0
- package/dist/shared/components-5mkga9hj.js +440 -0
- package/dist/shared/{components-kwa6mrf9.js → components-5s0nfqvw.js} +14 -9
- package/dist/shared/{components-dk0gjr5a.js → components-60atskhp.js} +19 -18
- package/dist/shared/{components-rr7a6ja9.js → components-658b26nb.js} +21 -18
- package/dist/shared/{components-xxvdw7k1.js → components-65vwfjs6.js} +37 -34
- package/dist/shared/{components-frw34b65.js → components-6j2fh74k.js} +114 -123
- package/dist/shared/components-6zg1yft7.js +167 -0
- package/dist/shared/components-6zng858q.js +53 -0
- package/dist/shared/components-72w4ge68.js +64 -0
- package/dist/shared/{components-cv16mryv.js → components-78x40gee.js} +13 -7
- package/dist/shared/{components-b2wyq2cq.js → components-7d4r7hh1.js} +39 -57
- package/dist/shared/components-7ntvvegr.js +316 -0
- package/dist/shared/components-8nwsqjn8.js +34 -0
- package/dist/shared/{components-5xc2j8jz.js → components-8tt3xbb5.js} +19 -18
- package/dist/shared/{components-vc7vq5nz.js → components-9as3rf68.js} +6 -3
- package/dist/shared/components-9mys9jna.js +255 -0
- package/dist/shared/components-adkarj8n.js +35 -0
- package/dist/shared/{components-b3c5et5b.js → components-ae9fncz4.js} +32 -31
- package/dist/shared/{components-hqeq3w9q.js → components-awra5sff.js} +24 -16
- package/dist/shared/components-b1e239g3.js +28 -0
- package/dist/shared/{components-q5xj5c16.js → components-b1f2bjf1.js} +9 -8
- package/dist/shared/{components-qmmjx1qw.js → components-bn42vq6d.js} +71 -72
- package/dist/shared/components-c96g82th.js +1444 -0
- package/dist/shared/components-c9yr4ed1.js +44 -0
- package/dist/shared/components-d3shbwqq.js +95 -0
- package/dist/shared/{components-jjw69c4c.js → components-dcc02hs2.js} +7 -4
- package/dist/shared/{components-men63rwj.js → components-de99ykt7.js} +3 -2
- package/dist/shared/components-dhgk6mbt.js +16 -0
- package/dist/shared/components-drxrtnp2.js +25 -0
- package/dist/shared/{components-6p8tfcd6.js → components-ds9fqat9.js} +21 -18
- package/dist/shared/{components-mjthm1kf.js → components-egy4tyjt.js} +11 -8
- package/dist/shared/components-f0xfpkhh.js +82 -0
- package/dist/shared/components-f7h57m6t.js +59 -0
- package/dist/shared/{components-d6xtjht3.js → components-fjkpbg6n.js} +33 -30
- package/dist/shared/{components-gc5vtq2f.js → components-gh0qeey3.js} +63 -29
- package/dist/shared/{components-39jq9va1.js → components-gvbapfen.js} +29 -24
- package/dist/shared/{components-5vgpnxgy.js → components-gzesg7hy.js} +19 -16
- package/dist/shared/components-h6p86be3.js +19 -0
- package/dist/shared/components-h83az0bz.js +33 -0
- package/dist/shared/components-jjrj6ymn.js +104 -0
- package/dist/shared/{components-wvp1m52g.js → components-jp5v0m0f.js} +15 -14
- package/dist/shared/{components-zrkzcayz.js → components-jqpefjsn.js} +54 -6
- package/dist/shared/{components-1z6tdadk.js → components-k74j4hwh.js} +20 -17
- package/dist/shared/components-kswxnm3h.js +24 -0
- package/dist/shared/{components-jbbmdr74.js → components-mkkbbgb7.js} +36 -17
- package/dist/shared/{components-pbmqctfa.js → components-mpw667rb.js} +169 -65
- package/dist/shared/{components-s5ngg32c.js → components-paa08427.js} +121 -47
- package/dist/shared/{components-vfbhxf5r.js → components-pd42emw3.js} +6 -5
- package/dist/shared/{components-hw9yk32z.js → components-pmfszv7a.js} +35 -23
- package/dist/shared/{components-chacnk61.js → components-pw06rbxq.js} +19 -19
- package/dist/shared/components-q03cktx8.js +246 -0
- package/dist/shared/{components-kvr7f9hy.js → components-qdm3yh26.js} +19 -10
- package/dist/shared/{components-27nnvrwe.js → components-qs4rkqsj.js} +15 -14
- package/dist/shared/{components-s083f38z.js → components-r6gbmkew.js} +22 -21
- package/dist/shared/{components-ta7shw28.js → components-r8eqs7gz.js} +4 -4
- package/dist/shared/{components-sn1rxx1d.js → components-rm02h9nt.js} +12 -11
- package/dist/shared/{components-c6s6b43g.js → components-rrbpmfx4.js} +3 -2
- package/dist/shared/{components-n7mjr357.js → components-tz1fv35x.js} +3 -2
- package/dist/shared/components-tz4gaf1v.js +23 -0
- package/dist/shared/{components-zx6b6yby.js → components-vf45j12c.js} +4 -18
- package/dist/shared/{components-3ky44908.js → components-vfjc9jzz.js} +2 -3
- package/dist/shared/{components-39vmfq9s.js → components-vsa625vk.js} +21 -20
- package/dist/shared/components-wawnmkph.js +500 -0
- package/dist/shared/components-wktrrb4m.js +38 -0
- package/dist/shared/{components-8snj490h.js → components-wwd363me.js} +78 -32
- package/dist/shared/{components-5pnw8183.js → components-xcwvgcrd.js} +23 -22
- package/dist/shared/components-xdqmt6ed.js +20 -0
- package/dist/shared/{components-h2ajmhwn.js → components-y1w3a6wx.js} +107 -35
- package/dist/shared/{components-ar66gnt0.js → components-y6578b8h.js} +37 -34
- package/dist/shared/{components-59efxjd9.js → components-yhgq0qxx.js} +13 -12
- package/dist/shared/{components-jthe1pwb.js → components-yz84gpkq.js} +101 -404
- package/dist/shared/components-z3v0n0de.js +11 -0
- package/dist/shared/{components-7r3etddy.js → components-z9n19fyk.js} +19 -54
- package/dist/shared/components-zbvjzh1p.js +141 -0
- package/dist/styles.css +241 -16
- package/dist/tailwind.css +13 -0
- package/dist/tokens.css +34 -0
- package/index.ts +60 -0
- package/lib/date-locale.ts +50 -0
- package/lib/field-classes.ts +115 -0
- package/lib/field-variants.ts +117 -0
- package/lib/fluid-hover-highlight.tsx +139 -0
- package/lib/focus-ring.tsx +46 -0
- package/lib/goo-indicator.tsx +261 -0
- package/lib/icon-context.tsx +310 -0
- package/lib/inert.ts +22 -0
- package/lib/morph-layers.tsx +102 -0
- package/lib/morph-part.tsx +49 -0
- package/lib/popup.ts +52 -0
- package/lib/reduced-motion.ts +19 -0
- package/lib/row-index.tsx +29 -0
- package/lib/row-order.tsx +115 -0
- package/lib/scroll-column.tsx +244 -0
- package/lib/shape-context.tsx +124 -0
- package/lib/size-context.tsx +66 -0
- package/lib/size-scale.ts +115 -0
- package/lib/slot.ts +25 -0
- package/lib/springs.ts +62 -0
- package/lib/surface-classes.ts +58 -0
- package/lib/surface-context.tsx +21 -0
- package/lib/use-controllable-state.ts +44 -0
- package/lib/use-fluid-hover.ts +541 -0
- package/lib/use-is-mobile.ts +25 -0
- package/lib/use-keyboard-nav-gate.ts +45 -0
- package/lib/use-merge-split.tsx +209 -0
- package/lib/use-morph.ts +557 -0
- package/lib/use-touch-primary.tsx +43 -0
- package/lib/utils.ts +37 -0
- package/package.json +177 -4
- package/preset.ts +196 -0
- package/primitives/code/examples.mdx +27 -0
- package/primitives/code/index.tsx +80 -0
- package/primitives/craft/demos.tsx +173 -0
- package/primitives/craft/examples.mdx +138 -0
- package/primitives/craft/index.tsx +76 -0
- package/primitives/fluid-hover/examples.mdx +84 -0
- package/primitives/fluid-hover/index.tsx +316 -0
- package/primitives/morph/examples.mdx +135 -0
- package/primitives/morph/index.tsx +192 -0
- package/primitives/motion/examples.mdx +100 -0
- package/primitives/motion/index.tsx +160 -0
- package/primitives/scroll-area/examples.mdx +58 -0
- package/primitives/scroll-area/index.tsx +200 -0
- package/primitives/separator/examples.mdx +30 -0
- package/primitives/separator/index.tsx +53 -0
- package/primitives/sizes/examples.mdx +167 -0
- package/primitives/sizes/index.tsx +89 -0
- package/primitives/skeleton/examples.mdx +51 -0
- package/primitives/skeleton/index.tsx +72 -0
- package/primitives/skeleton/skeleton.css +15 -0
- package/primitives/surface/examples.mdx +173 -0
- package/primitives/surface/index.tsx +109 -0
- package/primitives/surface/surface.css +176 -0
- package/dist/shared/components-0sn7ypjw.js +0 -61
- package/dist/shared/components-1434p1mh.js +0 -123
- package/dist/shared/components-a86dytt0.js +0 -986
- package/dist/shared/components-gf5s6ap9.js +0 -42
- package/dist/shared/components-hyq23phv.js +0 -310
- package/dist/shared/components-ng72k97e.js +0 -128
- package/dist/shared/components-raknhppb.js +0 -64
- package/dist/shared/components-vynjtrk6.js +0 -19
- package/dist/shared/components-wy9jpqny.js +0 -146
- /package/dist/shared/{components-1v7rxytx.js → components-3ey0hzpb.js} +0 -0
- /package/dist/shared/{components-ezxhrmer.js → components-jcnjay5g.js} +0 -0
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
import { Brain, Calendar, Check, Clock, CornerDownRight, Globe, Link, MessageCircle, MoreVertical, Pencil, Play, Plus, Search, SlidersHorizontal, SquareLibrary, Star, X } from 'lucide-react'
|
|
2
|
+
import Sidebar from './index'
|
|
3
|
+
import { DropdownContent, DropdownMenu, DropdownTrigger, MenuItem } from '../../overlays/dropdown'
|
|
4
|
+
import Tooltip from '../../overlays/tooltip'
|
|
5
|
+
import { SidebarInsetTopbar } from '../../../blocks/sidebar-app/inset-topbar'
|
|
6
|
+
import { SidebarSearchField } from '../../../blocks/sidebar-app/search-field'
|
|
7
|
+
import { SidebarUserFooter } from '../../../blocks/sidebar-app/user-footer'
|
|
8
|
+
import { SidebarWorkspaceHeader, WorkspaceTile } from '../../../blocks/sidebar-app/workspace-header'
|
|
9
|
+
|
|
10
|
+
# Sidebar
|
|
11
|
+
|
|
12
|
+
The default layout sits flush with an inner border. Pick a row: the active background melts across to it, and the hover highlight drips from row to row.
|
|
13
|
+
|
|
14
|
+
<div className="flex h-[480px] w-full overflow-hidden rounded-xl border border-border bg-background">
|
|
15
|
+
<Sidebar.Provider className="h-full min-h-0" persist={false} mobileBreakpoint={0}>
|
|
16
|
+
<Sidebar className="h-full" defaultValue="Chat">
|
|
17
|
+
<Sidebar.Content>
|
|
18
|
+
<Sidebar.Group collapsible>
|
|
19
|
+
<Sidebar.GroupLabel>Workspace</Sidebar.GroupLabel>
|
|
20
|
+
<Sidebar.Menu>
|
|
21
|
+
<Sidebar.MenuItem><Sidebar.MenuButton icon={MessageCircle} value="Chat">Chat</Sidebar.MenuButton></Sidebar.MenuItem>
|
|
22
|
+
<Sidebar.MenuItem><Sidebar.MenuButton icon={Brain} value="Agents">Agents</Sidebar.MenuButton></Sidebar.MenuItem>
|
|
23
|
+
<Sidebar.MenuItem><Sidebar.MenuButton icon={SquareLibrary} value="Knowledge">Knowledge</Sidebar.MenuButton></Sidebar.MenuItem>
|
|
24
|
+
<Sidebar.MenuItem><Sidebar.MenuButton icon={Play} value="Runs">Runs</Sidebar.MenuButton></Sidebar.MenuItem>
|
|
25
|
+
<Sidebar.MenuItem><Sidebar.MenuButton icon={Check} value="Evals">Evals</Sidebar.MenuButton></Sidebar.MenuItem>
|
|
26
|
+
</Sidebar.Menu>
|
|
27
|
+
</Sidebar.Group>
|
|
28
|
+
</Sidebar.Content>
|
|
29
|
+
</Sidebar>
|
|
30
|
+
<Sidebar.Inset className="min-h-0">
|
|
31
|
+
<SidebarInsetTopbar />
|
|
32
|
+
</Sidebar.Inset>
|
|
33
|
+
</Sidebar.Provider>
|
|
34
|
+
</div>
|
|
35
|
+
|
|
36
|
+
# Floating
|
|
37
|
+
|
|
38
|
+
`variant="floating"` lifts the sidebar onto its own card, one surface level up.
|
|
39
|
+
|
|
40
|
+
<div className="flex h-[480px] w-full overflow-hidden rounded-xl border border-border bg-background">
|
|
41
|
+
<Sidebar.Provider className="h-full min-h-0" persist={false} mobileBreakpoint={0}>
|
|
42
|
+
<Sidebar variant="floating" className="h-full" defaultValue="Chat">
|
|
43
|
+
<Sidebar.Content>
|
|
44
|
+
<Sidebar.Group collapsible>
|
|
45
|
+
<Sidebar.GroupLabel>Workspace</Sidebar.GroupLabel>
|
|
46
|
+
<Sidebar.Menu>
|
|
47
|
+
<Sidebar.MenuItem><Sidebar.MenuButton icon={MessageCircle} value="Chat">Chat</Sidebar.MenuButton></Sidebar.MenuItem>
|
|
48
|
+
<Sidebar.MenuItem><Sidebar.MenuButton icon={Brain} value="Agents">Agents</Sidebar.MenuButton></Sidebar.MenuItem>
|
|
49
|
+
<Sidebar.MenuItem><Sidebar.MenuButton icon={SquareLibrary} value="Knowledge">Knowledge</Sidebar.MenuButton></Sidebar.MenuItem>
|
|
50
|
+
<Sidebar.MenuItem><Sidebar.MenuButton icon={Play} value="Runs">Runs</Sidebar.MenuButton></Sidebar.MenuItem>
|
|
51
|
+
<Sidebar.MenuItem><Sidebar.MenuButton icon={Check} value="Evals">Evals</Sidebar.MenuButton></Sidebar.MenuItem>
|
|
52
|
+
</Sidebar.Menu>
|
|
53
|
+
</Sidebar.Group>
|
|
54
|
+
</Sidebar.Content>
|
|
55
|
+
</Sidebar>
|
|
56
|
+
<Sidebar.Inset className="min-h-0 pt-2">
|
|
57
|
+
<SidebarInsetTopbar />
|
|
58
|
+
</Sidebar.Inset>
|
|
59
|
+
</Sidebar.Provider>
|
|
60
|
+
</div>
|
|
61
|
+
|
|
62
|
+
# Inset
|
|
63
|
+
|
|
64
|
+
`variant="inset"` makes your content stand out: the main region becomes the card, and the sidebar sits on the page around it.
|
|
65
|
+
|
|
66
|
+
<div className="flex h-[480px] w-full overflow-hidden rounded-xl border border-border bg-background">
|
|
67
|
+
<Sidebar.Provider className="h-full min-h-0" persist={false} mobileBreakpoint={0}>
|
|
68
|
+
<Sidebar variant="inset" className="h-full" defaultValue="Chat">
|
|
69
|
+
<Sidebar.Content>
|
|
70
|
+
<Sidebar.Group collapsible>
|
|
71
|
+
<Sidebar.GroupLabel>Workspace</Sidebar.GroupLabel>
|
|
72
|
+
<Sidebar.Menu>
|
|
73
|
+
<Sidebar.MenuItem><Sidebar.MenuButton icon={MessageCircle} value="Chat">Chat</Sidebar.MenuButton></Sidebar.MenuItem>
|
|
74
|
+
<Sidebar.MenuItem><Sidebar.MenuButton icon={Brain} value="Agents">Agents</Sidebar.MenuButton></Sidebar.MenuItem>
|
|
75
|
+
<Sidebar.MenuItem><Sidebar.MenuButton icon={SquareLibrary} value="Knowledge">Knowledge</Sidebar.MenuButton></Sidebar.MenuItem>
|
|
76
|
+
<Sidebar.MenuItem><Sidebar.MenuButton icon={Play} value="Runs">Runs</Sidebar.MenuButton></Sidebar.MenuItem>
|
|
77
|
+
<Sidebar.MenuItem><Sidebar.MenuButton icon={Check} value="Evals">Evals</Sidebar.MenuButton></Sidebar.MenuItem>
|
|
78
|
+
</Sidebar.Menu>
|
|
79
|
+
</Sidebar.Group>
|
|
80
|
+
</Sidebar.Content>
|
|
81
|
+
</Sidebar>
|
|
82
|
+
<Sidebar.Inset className="min-h-0">
|
|
83
|
+
<SidebarInsetTopbar />
|
|
84
|
+
</Sidebar.Inset>
|
|
85
|
+
</Sidebar.Provider>
|
|
86
|
+
</div>
|
|
87
|
+
|
|
88
|
+
# Nesting
|
|
89
|
+
|
|
90
|
+
Two levels below the sections: a `collapsible` row folds its sub-menu, and the hover highlight flows from a parent into its children. Private starts folded to its label, Shared open with its rows closed, Recent open all the way down.
|
|
91
|
+
|
|
92
|
+
<div className="flex h-[560px] w-full overflow-hidden rounded-xl border border-border bg-background">
|
|
93
|
+
<Sidebar.Provider className="h-full min-h-0" persist={false} mobileBreakpoint={0}>
|
|
94
|
+
<Sidebar className="h-full" defaultValue="API guidelines">
|
|
95
|
+
<Sidebar.Content>
|
|
96
|
+
<Sidebar.Group collapsible defaultOpen={false}>
|
|
97
|
+
<Sidebar.GroupLabel>Private</Sidebar.GroupLabel>
|
|
98
|
+
<Sidebar.Menu>
|
|
99
|
+
<Sidebar.MenuItem collapsible>
|
|
100
|
+
<Sidebar.MenuButton icon={Pencil}>Drafts</Sidebar.MenuButton>
|
|
101
|
+
<Sidebar.MenuSub>
|
|
102
|
+
<Sidebar.MenuSubItem><Sidebar.MenuSubButton icon={Star} value="Onboarding revamp">Onboarding revamp</Sidebar.MenuSubButton></Sidebar.MenuSubItem>
|
|
103
|
+
<Sidebar.MenuSubItem><Sidebar.MenuSubButton icon={Search} value="Competitor teardown">Competitor teardown</Sidebar.MenuSubButton></Sidebar.MenuSubItem>
|
|
104
|
+
</Sidebar.MenuSub>
|
|
105
|
+
</Sidebar.MenuItem>
|
|
106
|
+
<Sidebar.MenuItem collapsible>
|
|
107
|
+
<Sidebar.MenuButton icon={Calendar}>Weekly notes</Sidebar.MenuButton>
|
|
108
|
+
<Sidebar.MenuSub>
|
|
109
|
+
<Sidebar.MenuSubItem><Sidebar.MenuSubButton icon={Clock} value="Week 35 — planning">Week 35 — planning</Sidebar.MenuSubButton></Sidebar.MenuSubItem>
|
|
110
|
+
<Sidebar.MenuSubItem><Sidebar.MenuSubButton icon={MessageCircle} value="Week 34 — retro">Week 34 — retro</Sidebar.MenuSubButton></Sidebar.MenuSubItem>
|
|
111
|
+
</Sidebar.MenuSub>
|
|
112
|
+
</Sidebar.MenuItem>
|
|
113
|
+
</Sidebar.Menu>
|
|
114
|
+
</Sidebar.Group>
|
|
115
|
+
<Sidebar.Group collapsible>
|
|
116
|
+
<Sidebar.GroupLabel>Shared</Sidebar.GroupLabel>
|
|
117
|
+
<Sidebar.Menu>
|
|
118
|
+
<Sidebar.MenuItem collapsible>
|
|
119
|
+
<Sidebar.MenuButton icon={Brain}>Engineering</Sidebar.MenuButton>
|
|
120
|
+
<Sidebar.MenuSub>
|
|
121
|
+
<Sidebar.MenuSubItem><Sidebar.MenuSubButton icon={Link} value="API guidelines">API guidelines</Sidebar.MenuSubButton></Sidebar.MenuSubItem>
|
|
122
|
+
<Sidebar.MenuSubItem><Sidebar.MenuSubButton icon={Play} value="Release process">Release process</Sidebar.MenuSubButton></Sidebar.MenuSubItem>
|
|
123
|
+
</Sidebar.MenuSub>
|
|
124
|
+
</Sidebar.MenuItem>
|
|
125
|
+
<Sidebar.MenuItem collapsible>
|
|
126
|
+
<Sidebar.MenuButton icon={Globe}>Product hub</Sidebar.MenuButton>
|
|
127
|
+
<Sidebar.MenuSub>
|
|
128
|
+
<Sidebar.MenuSubItem><Sidebar.MenuSubButton icon={MessageCircle} value="Customer interviews">Customer interviews</Sidebar.MenuSubButton></Sidebar.MenuSubItem>
|
|
129
|
+
<Sidebar.MenuSubItem><Sidebar.MenuSubButton icon={Star} value="Roadmap">Roadmap</Sidebar.MenuSubButton></Sidebar.MenuSubItem>
|
|
130
|
+
</Sidebar.MenuSub>
|
|
131
|
+
</Sidebar.MenuItem>
|
|
132
|
+
</Sidebar.Menu>
|
|
133
|
+
</Sidebar.Group>
|
|
134
|
+
<Sidebar.Group collapsible>
|
|
135
|
+
<Sidebar.GroupLabel>Recent</Sidebar.GroupLabel>
|
|
136
|
+
<Sidebar.Menu>
|
|
137
|
+
<Sidebar.MenuItem collapsible defaultOpen>
|
|
138
|
+
<Sidebar.MenuButton icon={Clock}>Today</Sidebar.MenuButton>
|
|
139
|
+
<Sidebar.MenuSub>
|
|
140
|
+
<Sidebar.MenuSubItem><Sidebar.MenuSubButton icon={Star} value="Onboarding revamp">Onboarding revamp</Sidebar.MenuSubButton></Sidebar.MenuSubItem>
|
|
141
|
+
<Sidebar.MenuSubItem><Sidebar.MenuSubButton icon={Link} value="API guidelines">API guidelines</Sidebar.MenuSubButton></Sidebar.MenuSubItem>
|
|
142
|
+
</Sidebar.MenuSub>
|
|
143
|
+
</Sidebar.MenuItem>
|
|
144
|
+
<Sidebar.MenuItem collapsible defaultOpen>
|
|
145
|
+
<Sidebar.MenuButton icon={Calendar}>Yesterday</Sidebar.MenuButton>
|
|
146
|
+
<Sidebar.MenuSub>
|
|
147
|
+
<Sidebar.MenuSubItem><Sidebar.MenuSubButton icon={MessageCircle} value="Customer interviews">Customer interviews</Sidebar.MenuSubButton></Sidebar.MenuSubItem>
|
|
148
|
+
<Sidebar.MenuSubItem><Sidebar.MenuSubButton icon={Play} value="Release process">Release process</Sidebar.MenuSubButton></Sidebar.MenuSubItem>
|
|
149
|
+
</Sidebar.MenuSub>
|
|
150
|
+
</Sidebar.MenuItem>
|
|
151
|
+
</Sidebar.Menu>
|
|
152
|
+
</Sidebar.Group>
|
|
153
|
+
</Sidebar.Content>
|
|
154
|
+
</Sidebar>
|
|
155
|
+
</Sidebar.Provider>
|
|
156
|
+
</div>
|
|
157
|
+
|
|
158
|
+
# Actions and badges
|
|
159
|
+
|
|
160
|
+
A badge and up to three actions per row. The actions show on hover, so the label keeps the room at rest; the row menu grows out of its button. Section labels carry their own actions.
|
|
161
|
+
|
|
162
|
+
<div className="flex h-[560px] w-full overflow-hidden rounded-xl border border-border bg-background">
|
|
163
|
+
<Sidebar.Provider className="h-full min-h-0" persist={false} mobileBreakpoint={0}>
|
|
164
|
+
<Sidebar className="h-full">
|
|
165
|
+
<Sidebar.Content>
|
|
166
|
+
<Sidebar.Group collapsible>
|
|
167
|
+
<Sidebar.GroupLabel>Threads</Sidebar.GroupLabel>
|
|
168
|
+
<Sidebar.GroupActions>
|
|
169
|
+
<Tooltip content="New thread" side="top">
|
|
170
|
+
<Sidebar.GroupAction aria-label="New thread"><Plus /></Sidebar.GroupAction>
|
|
171
|
+
</Tooltip>
|
|
172
|
+
<Tooltip content="Filter threads" side="top">
|
|
173
|
+
<Sidebar.GroupAction aria-label="Filter threads"><SlidersHorizontal /></Sidebar.GroupAction>
|
|
174
|
+
</Tooltip>
|
|
175
|
+
</Sidebar.GroupActions>
|
|
176
|
+
<Sidebar.Menu>
|
|
177
|
+
{[
|
|
178
|
+
['Summarise the Q3 board deck', 'unread', '12'],
|
|
179
|
+
['Migration plan for Postgres 16', 'unread', '4'],
|
|
180
|
+
['Why does retrieval miss the changelog?', 'idle', '6'],
|
|
181
|
+
['Rewrite the onboarding emails', 'idle', '8'],
|
|
182
|
+
['Debug the eval harness timeout', 'unread', '9'],
|
|
183
|
+
['Draft the launch announcement', 'idle', '5'],
|
|
184
|
+
].map(([label, status, badge]) => (
|
|
185
|
+
<Sidebar.MenuItem key={label}>
|
|
186
|
+
<Sidebar.MenuButton status={status}>{label}</Sidebar.MenuButton>
|
|
187
|
+
<Sidebar.MenuBadge>{badge}</Sidebar.MenuBadge>
|
|
188
|
+
<Sidebar.MenuActions showOnHover>
|
|
189
|
+
<Tooltip content="Branch thread" side="top">
|
|
190
|
+
<Sidebar.MenuAction aria-label="Branch thread"><CornerDownRight /></Sidebar.MenuAction>
|
|
191
|
+
</Tooltip>
|
|
192
|
+
<Tooltip content="Share thread" side="top">
|
|
193
|
+
<Sidebar.MenuAction aria-label="Share thread"><Link /></Sidebar.MenuAction>
|
|
194
|
+
</Tooltip>
|
|
195
|
+
<DropdownMenu>
|
|
196
|
+
<DropdownTrigger render={<Sidebar.MenuAction aria-label="More options"><MoreVertical /></Sidebar.MenuAction>} />
|
|
197
|
+
<DropdownContent className="min-w-0 w-[240px]" align="start" sideOffset={4}>
|
|
198
|
+
<MenuItem index={0} icon={Pencil} label="Rename" />
|
|
199
|
+
<MenuItem index={1} icon={X} label="Delete" />
|
|
200
|
+
</DropdownContent>
|
|
201
|
+
</DropdownMenu>
|
|
202
|
+
</Sidebar.MenuActions>
|
|
203
|
+
</Sidebar.MenuItem>
|
|
204
|
+
))}
|
|
205
|
+
</Sidebar.Menu>
|
|
206
|
+
</Sidebar.Group>
|
|
207
|
+
</Sidebar.Content>
|
|
208
|
+
</Sidebar>
|
|
209
|
+
</Sidebar.Provider>
|
|
210
|
+
</div>
|
|
211
|
+
|
|
212
|
+
# Header and footer
|
|
213
|
+
|
|
214
|
+
The two ends of the rail: a workspace switcher and search on top, the user row at the bottom. Both menus grow out of their rows.
|
|
215
|
+
|
|
216
|
+
<div className="flex h-[560px] w-full overflow-hidden rounded-xl border border-border bg-background">
|
|
217
|
+
<Sidebar.Provider className="h-full min-h-0" persist={false} mobileBreakpoint={0}>
|
|
218
|
+
<Sidebar className="h-full" defaultValue="Chat">
|
|
219
|
+
<Sidebar.Header>
|
|
220
|
+
<SidebarWorkspaceHeader
|
|
221
|
+
name="Aurora AI"
|
|
222
|
+
tile={<WorkspaceTile>A</WorkspaceTile>}
|
|
223
|
+
defaultCheckedIndex={0}
|
|
224
|
+
menu={
|
|
225
|
+
<>
|
|
226
|
+
<MenuItem index={0} label="Aurora AI" />
|
|
227
|
+
<MenuItem index={1} label="Personal" />
|
|
228
|
+
<MenuItem index={2} icon={Plus} label="New workspace" />
|
|
229
|
+
</>
|
|
230
|
+
}
|
|
231
|
+
/>
|
|
232
|
+
<SidebarSearchField />
|
|
233
|
+
</Sidebar.Header>
|
|
234
|
+
<Sidebar.Content>
|
|
235
|
+
<Sidebar.Group>
|
|
236
|
+
<Sidebar.GroupLabel>Workspace</Sidebar.GroupLabel>
|
|
237
|
+
<Sidebar.Menu>
|
|
238
|
+
<Sidebar.MenuItem><Sidebar.MenuButton icon={MessageCircle} value="Chat">Chat</Sidebar.MenuButton></Sidebar.MenuItem>
|
|
239
|
+
<Sidebar.MenuItem><Sidebar.MenuButton icon={Brain} value="Agents">Agents</Sidebar.MenuButton></Sidebar.MenuItem>
|
|
240
|
+
<Sidebar.MenuItem><Sidebar.MenuButton icon={SquareLibrary} value="Knowledge">Knowledge</Sidebar.MenuButton></Sidebar.MenuItem>
|
|
241
|
+
</Sidebar.Menu>
|
|
242
|
+
</Sidebar.Group>
|
|
243
|
+
</Sidebar.Content>
|
|
244
|
+
<Sidebar.Footer>
|
|
245
|
+
<SidebarUserFooter
|
|
246
|
+
name="Micka Touillaud"
|
|
247
|
+
avatar={<span className="flex size-5 items-center justify-center rounded-full bg-muted-foreground text-micro-compact text-background">M</span>}
|
|
248
|
+
menu={
|
|
249
|
+
<>
|
|
250
|
+
<MenuItem index={0} label="Profile" />
|
|
251
|
+
<MenuItem index={1} label="Settings" />
|
|
252
|
+
<MenuItem index={2} label="Log out" />
|
|
253
|
+
</>
|
|
254
|
+
}
|
|
255
|
+
/>
|
|
256
|
+
</Sidebar.Footer>
|
|
257
|
+
</Sidebar>
|
|
258
|
+
<Sidebar.Inset className="min-h-0">
|
|
259
|
+
<SidebarInsetTopbar />
|
|
260
|
+
</Sidebar.Inset>
|
|
261
|
+
</Sidebar.Provider>
|
|
262
|
+
</div>
|
|
263
|
+
|
|
264
|
+
# Resize, collapse and open on hover
|
|
265
|
+
|
|
266
|
+
Drag the rail on the inner edge to resize, click it or press `[` to collapse. With `openOnHover`, collapsing leaves the sidebar on hover: it opens when the pointer reaches the edge or the trigger beside it, and closes when it leaves. The trigger's dashed glyph shows the mode; press it to keep the sidebar open again.
|
|
267
|
+
|
|
268
|
+
<div className="flex h-[480px] w-full overflow-hidden rounded-xl border border-border bg-background">
|
|
269
|
+
<Sidebar.Provider className="h-full min-h-0" persist={false} mobileBreakpoint={0} openOnHover>
|
|
270
|
+
<Sidebar variant="inset" className="h-full" defaultValue="Summarise the Q3 board deck">
|
|
271
|
+
<Sidebar.Content>
|
|
272
|
+
<Sidebar.Group>
|
|
273
|
+
<Sidebar.GroupLabel>Threads</Sidebar.GroupLabel>
|
|
274
|
+
<Sidebar.Menu>
|
|
275
|
+
{[
|
|
276
|
+
['Summarise the Q3 board deck', 'active', '12'],
|
|
277
|
+
['Migration plan for Postgres 16', 'unread', '4'],
|
|
278
|
+
['Why does retrieval miss the changelog?', 'idle', '6'],
|
|
279
|
+
['Rewrite the onboarding emails', 'idle', '8'],
|
|
280
|
+
['Debug the eval harness timeout', 'unread', '9'],
|
|
281
|
+
].map(([label, status, badge]) => (
|
|
282
|
+
<Sidebar.MenuItem key={label}>
|
|
283
|
+
<Sidebar.MenuButton status={status} value={label}>{label}</Sidebar.MenuButton>
|
|
284
|
+
<Sidebar.MenuBadge>{badge}</Sidebar.MenuBadge>
|
|
285
|
+
</Sidebar.MenuItem>
|
|
286
|
+
))}
|
|
287
|
+
</Sidebar.Menu>
|
|
288
|
+
</Sidebar.Group>
|
|
289
|
+
</Sidebar.Content>
|
|
290
|
+
</Sidebar>
|
|
291
|
+
<Sidebar.Inset className="min-h-0">
|
|
292
|
+
<SidebarInsetTopbar />
|
|
293
|
+
</Sidebar.Inset>
|
|
294
|
+
</Sidebar.Provider>
|
|
295
|
+
</div>
|
|
296
|
+
|
|
297
|
+
# Mobile drawer
|
|
298
|
+
|
|
299
|
+
Below `mobileBreakpoint` (768px by default) the sidebar is a Sheet: it grows out of the window's edge with the goo neck and swipes away. This one's breakpoint is set past any window, so the trigger always opens the drawer.
|
|
300
|
+
|
|
301
|
+
<div className="flex h-[240px] w-full overflow-hidden rounded-xl border border-border bg-background">
|
|
302
|
+
<Sidebar.Provider className="h-full min-h-0" persist={false} mobileBreakpoint={100000}>
|
|
303
|
+
<Sidebar defaultValue="Chat">
|
|
304
|
+
<Sidebar.Content>
|
|
305
|
+
<Sidebar.Group>
|
|
306
|
+
<Sidebar.GroupLabel>Workspace</Sidebar.GroupLabel>
|
|
307
|
+
<Sidebar.Menu>
|
|
308
|
+
<Sidebar.MenuItem><Sidebar.MenuButton icon={MessageCircle} value="Chat">Chat</Sidebar.MenuButton></Sidebar.MenuItem>
|
|
309
|
+
<Sidebar.MenuItem><Sidebar.MenuButton icon={Brain} value="Agents">Agents</Sidebar.MenuButton></Sidebar.MenuItem>
|
|
310
|
+
<Sidebar.MenuItem><Sidebar.MenuButton icon={SquareLibrary} value="Knowledge">Knowledge</Sidebar.MenuButton></Sidebar.MenuItem>
|
|
311
|
+
</Sidebar.Menu>
|
|
312
|
+
</Sidebar.Group>
|
|
313
|
+
</Sidebar.Content>
|
|
314
|
+
</Sidebar>
|
|
315
|
+
<Sidebar.Inset className="min-h-0">
|
|
316
|
+
<SidebarInsetTopbar />
|
|
317
|
+
</Sidebar.Inset>
|
|
318
|
+
</Sidebar.Provider>
|
|
319
|
+
</div>
|