@justanarthur/modo-ui 0.6.0-canary.8 → 0.6.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/README.md +66 -164
- package/dist/base.css +4 -141
- package/dist/blocks/sidebar-app/index.js +26 -40
- package/dist/components/AI/input-message/index.js +16 -23
- package/dist/components/AI/thinking-indicator/index.js +6 -9
- package/dist/components/accordion/index.d.ts +11 -39
- package/dist/components/accordion/index.js +13 -18
- package/dist/components/badge/index.d.ts +11 -18
- package/dist/components/badge/index.js +7 -12
- package/dist/components/button/index.d.ts +17 -53
- package/dist/components/button/index.js +6 -11
- package/dist/components/card/index.d.ts +9 -32
- package/dist/components/card/index.js +11 -17
- package/dist/components/copy/index.d.ts +8 -41
- package/dist/components/copy/index.js +9 -15
- package/dist/components/inputs/checkbox/index.d.ts +9 -28
- package/dist/components/inputs/checkbox/index.js +13 -18
- package/dist/components/inputs/color-picker/index.d.ts +14 -22
- package/dist/components/inputs/color-picker/index.js +18 -26
- package/dist/components/inputs/combobox/index.d.ts +20 -85
- package/dist/components/inputs/combobox/index.js +18 -27
- package/dist/components/inputs/date-time/calendar/index.d.ts +18 -24
- package/dist/components/inputs/date-time/calendar/index.js +11 -15
- package/dist/components/inputs/date-time/date-picker/index.d.ts +16 -105
- package/dist/components/inputs/date-time/date-picker/index.js +25 -35
- package/dist/components/inputs/date-time/date-range-picker/index.d.ts +12 -106
- package/dist/components/inputs/date-time/date-range-picker/index.js +24 -35
- package/dist/components/inputs/date-time/duration-picker/index.d.ts +13 -66
- package/dist/components/inputs/date-time/duration-picker/index.js +24 -33
- package/dist/components/inputs/date-time/month-picker/index.d.ts +10 -60
- package/dist/components/inputs/date-time/month-picker/index.js +23 -32
- package/dist/components/inputs/date-time/time-picker/index.d.ts +10 -58
- package/dist/components/inputs/date-time/time-picker/index.js +24 -33
- package/dist/components/inputs/input/index.d.ts +13 -95
- package/dist/components/inputs/input/index.js +9 -18
- package/dist/components/inputs/radio/index.d.ts +5 -20
- package/dist/components/inputs/radio/index.js +12 -16
- package/dist/components/inputs/search/index.d.ts +3 -3
- package/dist/components/inputs/search/index.js +18 -26
- package/dist/components/inputs/select/index.d.ts +23 -99
- package/dist/components/inputs/select/index.js +14 -29
- package/dist/components/inputs/slider/index.d.ts +0 -9
- package/dist/components/inputs/slider/index.js +5 -8
- package/dist/components/inputs/switch/index.d.ts +2 -8
- package/dist/components/inputs/switch/index.js +12 -15
- package/dist/components/inputs/textarea/index.d.ts +1 -20
- package/dist/components/inputs/textarea/index.js +6 -9
- package/dist/components/navigation/sidebar/index.d.ts +21 -44
- package/dist/components/navigation/sidebar/index.js +31 -42
- package/dist/components/navigation/tabs/index.d.ts +2 -8
- package/dist/components/navigation/tabs/index.js +10 -15
- package/dist/components/navigation/tabs-subtle/index.js +10 -13
- package/dist/components/overlays/alert-dialog/index.d.ts +16 -135
- package/dist/components/overlays/alert-dialog/index.js +13 -23
- package/dist/components/overlays/command/index.d.ts +20 -25
- package/dist/components/overlays/command/index.js +17 -25
- package/dist/components/overlays/context-menu/index.d.ts +17 -39
- package/dist/components/overlays/context-menu/index.js +18 -29
- package/dist/components/overlays/dialog/index.d.ts +16 -42
- package/dist/components/overlays/dialog/index.js +12 -20
- package/dist/components/overlays/dropdown/index.d.ts +34 -304
- package/dist/components/overlays/dropdown/index.js +17 -44
- package/dist/components/overlays/popover/index.d.ts +12 -38
- package/dist/components/overlays/popover/index.js +9 -13
- package/dist/components/overlays/preview-card/index.js +8 -12
- package/dist/components/overlays/sheet/index.d.ts +8 -25
- package/dist/components/overlays/sheet/index.js +13 -19
- package/dist/components/overlays/toast/index.d.ts +50 -209
- package/dist/components/overlays/toast/index.js +10 -23
- package/dist/components/overlays/tooltip/index.d.ts +21 -123
- package/dist/components/overlays/tooltip/index.js +6 -16
- package/dist/components/table/index.d.ts +8 -63
- package/dist/components/table/index.js +9 -20
- package/dist/index.d.ts +1048 -2999
- package/dist/index.js +82 -231
- package/dist/preset.d.ts +0 -22
- package/dist/preset.js +2 -24
- package/dist/primitives/code/index.js +5 -8
- package/dist/primitives/craft/index.js +6 -10
- package/dist/primitives/fluid-hover/index.js +8 -10
- package/dist/primitives/morph/index.js +10 -16
- package/dist/primitives/motion/index.js +8 -11
- package/dist/primitives/scroll-area/index.js +3 -5
- package/dist/primitives/sizes/index.js +4 -6
- package/dist/primitives/surface/index.js +4 -6
- package/dist/shared/{components-4y816hwp.js → components-0q0sqfh4.js} +49 -27
- package/dist/shared/components-0sn7ypjw.js +61 -0
- package/dist/shared/{components-vc864c51.js → components-11da9ajg.js} +5 -8
- package/dist/shared/components-1434p1mh.js +123 -0
- package/dist/shared/{components-t2a3qmy9.js → components-1z6tdadk.js} +24 -40
- package/dist/shared/{components-qs4rkqsj.js → components-27nnvrwe.js} +14 -15
- package/dist/shared/{components-av5t26rc.js → components-2dxkv6zm.js} +7 -8
- package/dist/shared/{components-wqrvqq5p.js → components-2ecg8svx.js} +152 -234
- package/dist/shared/{components-3ydr2fqe.js → components-2ph6t61s.js} +34 -37
- package/dist/shared/{components-6gk118w3.js → components-39jq9va1.js} +24 -29
- package/dist/shared/components-3ky44908.js +9 -0
- package/dist/shared/{components-y1qvbawa.js → components-3mkepka5.js} +25 -28
- package/dist/shared/{components-xqszvkj4.js → components-4700p9kz.js} +22 -24
- package/dist/shared/{components-yhgq0qxx.js → components-59efxjd9.js} +12 -13
- package/dist/shared/{components-9j9abkct.js → components-5vgpnxgy.js} +27 -51
- package/dist/shared/{components-8tt3xbb5.js → components-5xc2j8jz.js} +18 -19
- package/dist/shared/{components-jymmaevv.js → components-6p8tfcd6.js} +29 -57
- package/dist/shared/{components-4nck8acq.js → components-7r3etddy.js} +54 -19
- package/dist/shared/{components-skfd7kff.js → components-8snj490h.js} +32 -78
- package/dist/shared/{components-ctqmge8t.js → components-b0eac83j.js} +30 -9
- package/dist/shared/{components-9sttq78t.js → components-b2wyq2cq.js} +59 -41
- package/dist/shared/{components-vkwq2k96.js → components-b3c5et5b.js} +38 -49
- package/dist/shared/{components-rrbpmfx4.js → components-c6s6b43g.js} +2 -3
- package/dist/shared/{components-pw06rbxq.js → components-chacnk61.js} +19 -19
- package/dist/shared/{components-71nbt03m.js → components-cv16mryv.js} +7 -26
- package/dist/shared/{components-eqze3y30.js → components-d6xtjht3.js} +30 -35
- package/dist/shared/{components-5y5shqfd.js → components-dk0gjr5a.js} +18 -19
- package/dist/shared/{components-khspp26b.js → components-fzrq6tr3.js} +34 -37
- package/dist/shared/{components-km7fhgbk.js → components-gc5vtq2f.js} +30 -66
- package/dist/shared/components-gf5s6ap9.js +42 -0
- package/dist/shared/{components-qqcmtrbv.js → components-gz8zf3ec.js} +55 -56
- package/dist/shared/{components-mattt5jp.js → components-h2ajmhwn.js} +35 -107
- package/dist/shared/{components-awra5sff.js → components-hqeq3w9q.js} +16 -24
- package/dist/shared/{components-5tzhqbcw.js → components-hw9yk32z.js} +24 -36
- package/dist/shared/components-hyq23phv.js +310 -0
- package/dist/shared/{components-8mt5bsv6.js → components-jbbmdr74.js} +22 -41
- package/dist/shared/{components-dcc02hs2.js → components-jjw69c4c.js} +4 -7
- package/dist/shared/{components-2syq4mwc.js → components-jthe1pwb.js} +420 -139
- package/dist/shared/{components-r7q1zm7r.js → components-jwst3vtj.js} +76 -224
- package/dist/shared/{components-qdm3yh26.js → components-kvr7f9hy.js} +10 -19
- package/dist/shared/{components-s8yqk2dc.js → components-kwa6mrf9.js} +11 -46
- package/dist/shared/{components-de99ykt7.js → components-men63rwj.js} +2 -3
- package/dist/shared/{components-6b0zb8z3.js → components-mjthm1kf.js} +9 -13
- package/dist/shared/{components-2c64r8c9.js → components-n42c79bz.js} +22 -23
- package/dist/shared/{components-tz1fv35x.js → components-n7mjr357.js} +2 -3
- package/dist/shared/components-ng72k97e.js +128 -0
- package/dist/shared/{components-dyae0y7h.js → components-pbmqctfa.js} +65 -169
- package/dist/shared/{components-px2zm7dc.js → components-q5xj5c16.js} +8 -9
- package/dist/shared/components-raknhppb.js +64 -0
- package/dist/shared/{components-8rb25gbe.js → components-rr7a6ja9.js} +27 -59
- package/dist/shared/{components-5012r6gr.js → components-s083f38z.js} +34 -164
- package/dist/shared/components-s5ngg32c.js +267 -0
- package/dist/shared/components-sn1rxx1d.js +143 -0
- package/dist/shared/{components-r8eqs7gz.js → components-ta7shw28.js} +4 -4
- package/dist/shared/{components-9as3rf68.js → components-vc7vq5nz.js} +3 -6
- package/dist/shared/{components-ft3zdc79.js → components-vfbhxf5r.js} +5 -6
- package/dist/shared/components-vynjtrk6.js +19 -0
- package/dist/shared/{components-w0xq6q9k.js → components-w1r67ag9.js} +149 -294
- package/dist/shared/{components-z0bqtvcp.js → components-w90endve.js} +72 -71
- package/dist/shared/{components-t5pk5nmc.js → components-wvp1m52g.js} +102 -149
- package/dist/shared/components-wy9jpqny.js +146 -0
- package/dist/shared/{components-5sxjeh6h.js → components-y9y0g8er.js} +28 -52
- package/dist/shared/components-ypp01w3p.js +986 -0
- package/dist/shared/{components-t50hrswb.js → components-zfnmn5d4.js} +36 -82
- package/dist/shared/{components-jqpefjsn.js → components-zrkzcayz.js} +6 -54
- package/dist/shared/{components-vf45j12c.js → components-zx6b6yby.js} +18 -4
- package/dist/styles.css +32 -320
- package/dist/tailwind.css +0 -16
- package/dist/tokens.css +0 -67
- package/package.json +4 -227
- package/DESIGN.md +0 -623
- package/blocks/sidebar-app/examples.mdx +0 -33
- package/blocks/sidebar-app/index.tsx +0 -218
- package/blocks/sidebar-app/inset-topbar.tsx +0 -25
- package/blocks/sidebar-app/menu-grid.ts +0 -26
- package/blocks/sidebar-app/nav-data.ts +0 -36
- package/blocks/sidebar-app/search-field.tsx +0 -48
- package/blocks/sidebar-app/user-footer.tsx +0 -67
- package/blocks/sidebar-app/workspace-header.tsx +0 -129
- package/components/AI/input-message/examples.mdx +0 -130
- package/components/AI/input-message/file-thumbnail.tsx +0 -173
- package/components/AI/input-message/index.tsx +0 -1385
- package/components/AI/thinking-indicator/examples.mdx +0 -27
- package/components/AI/thinking-indicator/index.tsx +0 -210
- package/components/accordion/examples.mdx +0 -233
- package/components/accordion/index.tsx +0 -1071
- package/components/avatar/examples.mdx +0 -95
- package/components/avatar/index.tsx +0 -129
- package/components/badge/change-demo.tsx +0 -29
- package/components/badge/examples.mdx +0 -124
- package/components/badge/index.tsx +0 -225
- package/components/badge/variants.ts +0 -73
- package/components/button/examples.mdx +0 -168
- package/components/button/index.tsx +0 -424
- package/components/button/loading-demo.tsx +0 -25
- package/components/button/variants.ts +0 -168
- package/components/card/examples.mdx +0 -251
- package/components/card/index.tsx +0 -1070
- package/components/copy/examples.mdx +0 -125
- package/components/copy/index.tsx +0 -662
- package/components/inputs/checkbox/examples.mdx +0 -87
- package/components/inputs/checkbox/index.tsx +0 -611
- package/components/inputs/checkbox/select-all-demo.tsx +0 -48
- package/components/inputs/color-picker/examples.mdx +0 -111
- package/components/inputs/color-picker/index.tsx +0 -1981
- package/components/inputs/color-picker/variants.ts +0 -401
- package/components/inputs/combobox/examples.mdx +0 -366
- package/components/inputs/combobox/index.tsx +0 -1527
- package/components/inputs/combobox/remote-demo.tsx +0 -105
- package/components/inputs/date-time/calendar/examples.mdx +0 -45
- package/components/inputs/date-time/calendar/index.tsx +0 -370
- package/components/inputs/date-time/calendar/use-month-window.ts +0 -173
- package/components/inputs/date-time/date-picker/examples.mdx +0 -243
- package/components/inputs/date-time/date-picker/index.tsx +0 -476
- package/components/inputs/date-time/date-picker/masked-date-input.tsx +0 -348
- package/components/inputs/date-time/date-range-picker/examples.mdx +0 -93
- package/components/inputs/date-time/date-range-picker/index.tsx +0 -525
- package/components/inputs/date-time/duration-picker/examples.mdx +0 -40
- package/components/inputs/date-time/duration-picker/index.tsx +0 -253
- package/components/inputs/date-time/month-picker/examples.mdx +0 -45
- package/components/inputs/date-time/month-picker/index.tsx +0 -254
- package/components/inputs/date-time/picker-shell.tsx +0 -581
- package/components/inputs/date-time/time-columns.tsx +0 -94
- package/components/inputs/date-time/time-picker/examples.mdx +0 -57
- package/components/inputs/date-time/time-picker/index.tsx +0 -227
- package/components/inputs/field/examples.mdx +0 -117
- package/components/inputs/field/index.tsx +0 -268
- package/components/inputs/file-dropzone/examples.mdx +0 -83
- package/components/inputs/file-dropzone/file-row.tsx +0 -201
- package/components/inputs/file-dropzone/index.tsx +0 -316
- package/components/inputs/file-dropzone/upload-demo.tsx +0 -67
- package/components/inputs/file-dropzone/variants.ts +0 -94
- package/components/inputs/input/examples.mdx +0 -166
- package/components/inputs/input/index.tsx +0 -494
- package/components/inputs/input/password-demo.tsx +0 -30
- package/components/inputs/label/examples.mdx +0 -67
- package/components/inputs/label/index.tsx +0 -85
- package/components/inputs/number-input/examples.mdx +0 -69
- package/components/inputs/number-input/index.tsx +0 -221
- package/components/inputs/radio/examples.mdx +0 -77
- package/components/inputs/radio/index.tsx +0 -636
- package/components/inputs/search/examples.mdx +0 -74
- package/components/inputs/search/index.tsx +0 -333
- package/components/inputs/select/examples.mdx +0 -296
- package/components/inputs/select/index.tsx +0 -1044
- package/components/inputs/select/variants.ts +0 -32
- package/components/inputs/slider/examples.mdx +0 -153
- package/components/inputs/slider/index.tsx +0 -1867
- package/components/inputs/switch/examples.mdx +0 -96
- package/components/inputs/switch/index.tsx +0 -504
- package/components/inputs/textarea/examples.mdx +0 -126
- package/components/inputs/textarea/index.tsx +0 -207
- package/components/navigation/navigation-menu/examples.mdx +0 -136
- package/components/navigation/navigation-menu/index.tsx +0 -704
- package/components/navigation/pagination/examples.mdx +0 -74
- package/components/navigation/pagination/index.tsx +0 -401
- package/components/navigation/sidebar/examples.mdx +0 -325
- package/components/navigation/sidebar/index.tsx +0 -453
- package/components/navigation/sidebar/sidebar-core.tsx +0 -1408
- package/components/navigation/sidebar/sidebar-menu.tsx +0 -1495
- package/components/navigation/sidebar/sidebar.css +0 -74
- package/components/navigation/sidebar/variants.ts +0 -55
- package/components/navigation/tabs/examples.mdx +0 -89
- package/components/navigation/tabs/index.tsx +0 -494
- package/components/navigation/tabs-subtle/examples.mdx +0 -49
- package/components/navigation/tabs-subtle/index.tsx +0 -512
- package/components/overlays/alert-dialog/examples.mdx +0 -123
- package/components/overlays/alert-dialog/index.tsx +0 -276
- package/components/overlays/alert-dialog/pending-demo.tsx +0 -36
- package/components/overlays/command/examples.mdx +0 -113
- package/components/overlays/command/index.tsx +0 -425
- package/components/overlays/context-menu/examples.mdx +0 -56
- package/components/overlays/context-menu/index.tsx +0 -279
- package/components/overlays/dialog/examples.mdx +0 -165
- package/components/overlays/dialog/index.tsx +0 -451
- package/components/overlays/dropdown/dropdown-search.tsx +0 -395
- package/components/overlays/dropdown/examples.mdx +0 -444
- package/components/overlays/dropdown/index.tsx +0 -1241
- package/components/overlays/dropdown/menu-item.tsx +0 -510
- package/components/overlays/dropdown/menu-parts.tsx +0 -725
- package/components/overlays/popover/anchored-demo.tsx +0 -59
- package/components/overlays/popover/examples.mdx +0 -203
- package/components/overlays/popover/index.tsx +0 -317
- package/components/overlays/preview-card/examples.mdx +0 -61
- package/components/overlays/preview-card/index.tsx +0 -204
- package/components/overlays/sheet/examples.mdx +0 -101
- package/components/overlays/sheet/index.tsx +0 -307
- package/components/overlays/toast/examples.mdx +0 -85
- package/components/overlays/toast/global-demo.tsx +0 -72
- package/components/overlays/toast/index.tsx +0 -544
- package/components/overlays/toast/manager.ts +0 -193
- package/components/overlays/tooltip/examples.mdx +0 -106
- package/components/overlays/tooltip/index.tsx +0 -539
- package/components/progress/examples.mdx +0 -59
- package/components/progress/index.tsx +0 -174
- package/components/progress/progress.css +0 -49
- package/components/progress/step-demo.tsx +0 -27
- package/components/table/examples.mdx +0 -188
- package/components/table/index.tsx +0 -535
- package/components/table/sort-demo.tsx +0 -61
- package/dist/components/avatar/index.d.ts +0 -46
- package/dist/components/avatar/index.js +0 -19
- package/dist/components/badge/variants.d.ts +0 -33
- package/dist/components/badge/variants.js +0 -10
- package/dist/components/button/variants.d.ts +0 -39
- package/dist/components/button/variants.js +0 -8
- package/dist/components/inputs/color-picker/variants.d.ts +0 -61
- package/dist/components/inputs/color-picker/variants.js +0 -28
- package/dist/components/inputs/field/index.d.ts +0 -116
- package/dist/components/inputs/field/index.js +0 -29
- package/dist/components/inputs/file-dropzone/index.d.ts +0 -167
- package/dist/components/inputs/file-dropzone/index.js +0 -33
- package/dist/components/inputs/file-dropzone/variants.d.ts +0 -35
- package/dist/components/inputs/file-dropzone/variants.js +0 -12
- package/dist/components/inputs/label/index.d.ts +0 -32
- package/dist/components/inputs/label/index.js +0 -11
- package/dist/components/inputs/number-input/index.d.ts +0 -87
- package/dist/components/inputs/number-input/index.js +0 -21
- package/dist/components/inputs/select/variants.d.ts +0 -5
- package/dist/components/inputs/select/variants.js +0 -6
- package/dist/components/navigation/navigation-menu/index.d.ts +0 -126
- package/dist/components/navigation/navigation-menu/index.js +0 -41
- package/dist/components/navigation/pagination/index.d.ts +0 -75
- package/dist/components/navigation/pagination/index.js +0 -41
- package/dist/components/navigation/sidebar/variants.d.ts +0 -25
- package/dist/components/navigation/sidebar/variants.js +0 -28
- package/dist/components/progress/index.d.ts +0 -56
- package/dist/components/progress/index.js +0 -15
- package/dist/docs/index.d.ts +0 -83
- package/dist/docs/index.js +0 -288
- package/dist/docs/vite.d.ts +0 -31
- package/dist/docs/vite.js +0 -45
- package/dist/lib/date-locale.d.ts +0 -26
- package/dist/lib/date-locale.js +0 -24
- package/dist/lib/field-classes.d.ts +0 -149
- package/dist/lib/field-classes.js +0 -41
- package/dist/lib/field-variants.d.ts +0 -47
- package/dist/lib/field-variants.js +0 -26
- package/dist/lib/fluid-hover-highlight.d.ts +0 -112
- package/dist/lib/fluid-hover-highlight.js +0 -17
- package/dist/lib/focus-ring.d.ts +0 -18
- package/dist/lib/focus-ring.js +0 -11
- package/dist/lib/goo-indicator.d.ts +0 -46
- package/dist/lib/goo-indicator.js +0 -14
- package/dist/lib/icon-context.d.ts +0 -30
- package/dist/lib/icon-context.js +0 -12
- package/dist/lib/inert.d.ts +0 -9
- package/dist/lib/inert.js +0 -8
- package/dist/lib/morph-layers.d.ts +0 -93
- package/dist/lib/morph-layers.js +0 -13
- package/dist/lib/morph-part.d.ts +0 -21
- package/dist/lib/morph-part.js +0 -12
- package/dist/lib/popup.d.ts +0 -20
- package/dist/lib/popup.js +0 -12
- package/dist/lib/reduced-motion.d.ts +0 -9
- package/dist/lib/reduced-motion.js +0 -6
- package/dist/lib/row-index.d.ts +0 -10
- package/dist/lib/row-index.js +0 -8
- package/dist/lib/row-order.d.ts +0 -28
- package/dist/lib/row-order.js +0 -10
- package/dist/lib/scroll-column.d.ts +0 -31
- package/dist/lib/scroll-column.js +0 -19
- package/dist/lib/shape-context.d.ts +0 -30
- package/dist/lib/shape-context.js +0 -13
- package/dist/lib/shape-radius.d.ts +0 -19
- package/dist/lib/shape-radius.js +0 -6
- package/dist/lib/size-context.d.ts +0 -94
- package/dist/lib/size-context.js +0 -20
- package/dist/lib/size-scale.d.ts +0 -79
- package/dist/lib/size-scale.js +0 -8
- package/dist/lib/slot.d.ts +0 -39
- package/dist/lib/slot.js +0 -14
- package/dist/lib/springs.d.ts +0 -44
- package/dist/lib/springs.js +0 -8
- package/dist/lib/surface-classes.d.ts +0 -19
- package/dist/lib/surface-classes.js +0 -10
- package/dist/lib/surface-context.d.ts +0 -9
- package/dist/lib/surface-context.js +0 -8
- package/dist/lib/use-controllable-state.d.ts +0 -2
- package/dist/lib/use-controllable-state.js +0 -6
- package/dist/lib/use-fluid-hover.d.ts +0 -138
- package/dist/lib/use-fluid-hover.js +0 -14
- package/dist/lib/use-is-mobile.d.ts +0 -2
- package/dist/lib/use-is-mobile.js +0 -6
- package/dist/lib/use-keyboard-nav-gate.d.ts +0 -20
- package/dist/lib/use-keyboard-nav-gate.js +0 -7
- package/dist/lib/use-merge-split.d.ts +0 -47
- package/dist/lib/use-merge-split.js +0 -15
- package/dist/lib/use-morph.d.ts +0 -101
- package/dist/lib/use-morph.js +0 -20
- package/dist/lib/use-touch-primary.d.ts +0 -2
- package/dist/lib/use-touch-primary.js +0 -6
- package/dist/lib/utils.d.ts +0 -3
- package/dist/lib/utils.js +0 -6
- package/dist/primitives/separator/index.d.ts +0 -25
- package/dist/primitives/separator/index.js +0 -9
- package/dist/primitives/skeleton/index.d.ts +0 -35
- package/dist/primitives/skeleton/index.js +0 -13
- package/dist/shared/components-124epb7f.js +0 -53
- package/dist/shared/components-1kab3j44.js +0 -337
- package/dist/shared/components-26snnbs9.js +0 -322
- package/dist/shared/components-34txk9rj.js +0 -35
- package/dist/shared/components-3h92d94m.js +0 -23
- package/dist/shared/components-4vfm04wq.js +0 -82
- package/dist/shared/components-54nq988h.js +0 -123
- package/dist/shared/components-7s7pykk5.js +0 -281
- package/dist/shared/components-7zkhz3r8.js +0 -399
- package/dist/shared/components-8v644a0s.js +0 -298
- package/dist/shared/components-a4evvq8h.js +0 -271
- package/dist/shared/components-adkarj8n.js +0 -35
- package/dist/shared/components-b1e239g3.js +0 -28
- package/dist/shared/components-b94t6qtj.js +0 -143
- package/dist/shared/components-c9yr4ed1.js +0 -44
- package/dist/shared/components-cwg1d0w6.js +0 -254
- package/dist/shared/components-d3shbwqq.js +0 -95
- package/dist/shared/components-dhgk6mbt.js +0 -16
- package/dist/shared/components-drxrtnp2.js +0 -25
- package/dist/shared/components-ej4r7wmj.js +0 -482
- package/dist/shared/components-f7h57m6t.js +0 -59
- package/dist/shared/components-fejdzvqc.js +0 -448
- package/dist/shared/components-gx4h5rbb.js +0 -40
- package/dist/shared/components-gyt7my41.js +0 -328
- package/dist/shared/components-h6p86be3.js +0 -19
- package/dist/shared/components-h83az0bz.js +0 -33
- package/dist/shared/components-hdzrqqpx.js +0 -55
- package/dist/shared/components-krtx3m5b.js +0 -84
- package/dist/shared/components-kswxnm3h.js +0 -24
- package/dist/shared/components-mpa2y6x8.js +0 -277
- package/dist/shared/components-mrbaxt8q.js +0 -62
- package/dist/shared/components-pt5ftm4p.js +0 -38
- package/dist/shared/components-rpw4md2b.js +0 -179
- package/dist/shared/components-rtadhd9j.js +0 -64
- package/dist/shared/components-tz4gaf1v.js +0 -23
- package/dist/shared/components-wbbckbw8.js +0 -34
- package/dist/shared/components-xdqmt6ed.js +0 -20
- package/dist/shared/components-xjkdvnbg.js +0 -107
- package/dist/shared/components-z3v0n0de.js +0 -11
- package/dist/shared/components-z6dfqtyt.js +0 -1545
- package/dist/tokens/colors.css +0 -230
- package/dist/tokens/motion.css +0 -40
- package/dist/tokens/radius.css +0 -10
- package/dist/tokens/spacing.css +0 -9
- package/dist/tokens/typography.css +0 -119
- package/docs/chrome.css +0 -120
- package/docs/chrome.tsx +0 -283
- package/docs/index.ts +0 -9
- package/docs/vite.ts +0 -85
- package/index.ts +0 -60
- package/lib/date-locale.ts +0 -195
- package/lib/field-classes.ts +0 -121
- package/lib/field-variants.ts +0 -117
- package/lib/fluid-hover-highlight.tsx +0 -139
- package/lib/focus-ring.tsx +0 -46
- package/lib/goo-indicator.tsx +0 -261
- package/lib/icon-context.tsx +0 -310
- package/lib/inert.ts +0 -22
- package/lib/morph-layers.tsx +0 -102
- package/lib/morph-part.tsx +0 -49
- package/lib/popup.ts +0 -52
- package/lib/reduced-motion.ts +0 -19
- package/lib/row-index.tsx +0 -29
- package/lib/row-order.tsx +0 -126
- package/lib/scroll-column.tsx +0 -273
- package/lib/shape-context.tsx +0 -138
- package/lib/shape-radius.ts +0 -67
- package/lib/size-context.tsx +0 -66
- package/lib/size-scale.ts +0 -115
- package/lib/slot.ts +0 -115
- package/lib/springs.ts +0 -62
- package/lib/surface-classes.ts +0 -58
- package/lib/surface-context.tsx +0 -21
- package/lib/use-controllable-state.ts +0 -44
- package/lib/use-fluid-hover.ts +0 -541
- package/lib/use-is-mobile.ts +0 -25
- package/lib/use-keyboard-nav-gate.ts +0 -45
- package/lib/use-merge-split.tsx +0 -209
- package/lib/use-morph.ts +0 -557
- package/lib/use-touch-primary.tsx +0 -43
- package/lib/utils.ts +0 -37
- package/preset.ts +0 -199
- package/primitives/code/examples.mdx +0 -27
- package/primitives/code/index.tsx +0 -80
- package/primitives/craft/demos.tsx +0 -173
- package/primitives/craft/examples.mdx +0 -142
- package/primitives/craft/index.tsx +0 -76
- package/primitives/fluid-hover/examples.mdx +0 -84
- package/primitives/fluid-hover/index.tsx +0 -316
- package/primitives/morph/examples.mdx +0 -139
- package/primitives/morph/index.tsx +0 -192
- package/primitives/motion/examples.mdx +0 -100
- package/primitives/motion/index.tsx +0 -160
- package/primitives/scroll-area/examples.mdx +0 -58
- package/primitives/scroll-area/index.tsx +0 -204
- package/primitives/separator/examples.mdx +0 -30
- package/primitives/separator/index.tsx +0 -53
- package/primitives/sizes/examples.mdx +0 -167
- package/primitives/sizes/index.tsx +0 -89
- package/primitives/skeleton/examples.mdx +0 -51
- package/primitives/skeleton/index.tsx +0 -72
- package/primitives/skeleton/skeleton.css +0 -15
- package/primitives/surface/examples.mdx +0 -173
- package/primitives/surface/index.tsx +0 -109
- package/primitives/surface/surface.css +0 -176
- /package/dist/shared/{components-3ey0hzpb.js → components-1v7rxytx.js} +0 -0
- /package/dist/shared/{components-jcnjay5g.js → components-ezxhrmer.js} +0 -0
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Local addition (not part of Fluid Functionalism): progress on Base UI's
|
|
3
|
-
* Progress (the `progressbar` role and its values). The determinate fill is a
|
|
4
|
-
* full-width bar slid in with `translateX` on `spring.moderate`, after
|
|
5
|
-
* upstream FF's CarouselDots fill (never scaled, so its rounded end keeps its
|
|
6
|
-
* shape); the indeterminate bar sweeps a segment across the track and the
|
|
7
|
-
* spinner draws Button's figure-eight loading glyph, both on `--duration-loop`
|
|
8
|
-
* (`progress.css`).
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
import { Progress as ProgressPrimitive } from '@base-ui/react/progress'
|
|
12
|
-
import { motion } from 'motion/react'
|
|
13
|
-
import {
|
|
14
|
-
type ComponentPropsWithoutRef,
|
|
15
|
-
type ForwardRefExoticComponent,
|
|
16
|
-
forwardRef,
|
|
17
|
-
type ReactNode,
|
|
18
|
-
type Ref,
|
|
19
|
-
type RefAttributes,
|
|
20
|
-
} from 'react'
|
|
21
|
-
import { useReduceMotion } from '../../lib/reduced-motion'
|
|
22
|
-
import { type SizeVariant, useSize } from '../../lib/size-context'
|
|
23
|
-
import { spring } from '../../lib/springs'
|
|
24
|
-
import { cn } from '../../lib/utils'
|
|
25
|
-
|
|
26
|
-
// Literal tables: UnoCSS only generates the classes it can read whole.
|
|
27
|
-
const SPINNER_BOX = { default: 'size-9', compact: 'size-7' }
|
|
28
|
-
const CAPTION = { default: 'text-caption', compact: 'text-caption-compact' }
|
|
29
|
-
|
|
30
|
-
interface SpinnerProps extends Omit<ComponentPropsWithoutRef<'span'>, 'children'> {
|
|
31
|
-
/** Pins the spinner to one step of the size ladder: one control tall (36px default, 28px compact), like a loading Button's. Defaults to the surrounding SizeProvider. */
|
|
32
|
-
size?: SizeVariant
|
|
33
|
-
/** What is loading, read to assistive tech. Defaults to `"Loading"`. */
|
|
34
|
-
label?: string
|
|
35
|
-
/** Classes for the box: a size off the ladder (`size-5` inline in text), a color. */
|
|
36
|
-
className?: string
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
/** An indeterminate wait in a small space: Button's loading glyph on its own. */
|
|
40
|
-
const Spinner = forwardRef<HTMLSpanElement, SpinnerProps>(
|
|
41
|
-
({ size: sizeProp, label = 'Loading', className, ...props }, ref) => {
|
|
42
|
-
const size = useSize(sizeProp)
|
|
43
|
-
const reduced = useReduceMotion()
|
|
44
|
-
return (
|
|
45
|
-
<ProgressPrimitive.Root
|
|
46
|
-
// The root renders a span (render below); Base UI types its ref as a div's.
|
|
47
|
-
ref={ref as unknown as Ref<HTMLDivElement>}
|
|
48
|
-
value={null}
|
|
49
|
-
aria-label={label}
|
|
50
|
-
render={<span />}
|
|
51
|
-
{...props}
|
|
52
|
-
className={cn('inline-flex shrink-0 text-current', SPINNER_BOX[size.variant], className)}
|
|
53
|
-
>
|
|
54
|
-
<svg className="size-full" viewBox="0 0 24 24" fill="none" aria-hidden>
|
|
55
|
-
<path
|
|
56
|
-
d="M 12 12 C 14 8.5 19 8.5 19 12 C 19 15.5 14 15.5 12 12 C 10 8.5 5 8.5 5 12 C 5 15.5 10 15.5 12 12 Z"
|
|
57
|
-
stroke="currentColor"
|
|
58
|
-
strokeWidth="1.125"
|
|
59
|
-
strokeLinecap="round"
|
|
60
|
-
pathLength="100"
|
|
61
|
-
className={reduced ? 'progress-breathe' : 'progress-spin'}
|
|
62
|
-
/>
|
|
63
|
-
</svg>
|
|
64
|
-
</ProgressPrimitive.Root>
|
|
65
|
-
)
|
|
66
|
-
},
|
|
67
|
-
)
|
|
68
|
-
|
|
69
|
-
Spinner.displayName = 'Spinner'
|
|
70
|
-
|
|
71
|
-
interface ProgressProps extends Omit<ComponentPropsWithoutRef<'div'>, 'children'> {
|
|
72
|
-
/** How far along the task is, between `min` and `max`. `null` is an indeterminate bar: a segment sweeping the track while the amount is unknown. Defaults to `null`. */
|
|
73
|
-
value?: number | null
|
|
74
|
-
/** The value of an empty bar. Defaults to `0`. */
|
|
75
|
-
min?: number
|
|
76
|
-
/** The value of a full bar. Defaults to `100`. */
|
|
77
|
-
max?: number
|
|
78
|
-
/** A label above the bar, also its accessible name. Without one, give the bar an `aria-label`. */
|
|
79
|
-
label?: ReactNode
|
|
80
|
-
/** Shows the value, formatted as a percentage, at the end of the label row. Defaults to `false`. */
|
|
81
|
-
showValue?: boolean
|
|
82
|
-
/** Number format for the shown value and for assistive tech, as `Intl.NumberFormat` options. Defaults to a percentage. */
|
|
83
|
-
format?: Intl.NumberFormatOptions
|
|
84
|
-
/** Pins the label row to one step of the size ladder. Defaults to the surrounding SizeProvider. */
|
|
85
|
-
size?: SizeVariant
|
|
86
|
-
/** Classes for the root: a width, or `absolute inset-x-0 top-0` for a loading line along a region's top edge. */
|
|
87
|
-
className?: string
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
type ProgressComponent = ForwardRefExoticComponent<ProgressProps & RefAttributes<HTMLDivElement>> & {
|
|
91
|
-
Spinner: typeof Spinner
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
/**
|
|
95
|
-
* Shows how far along a task is, or that something is still working when
|
|
96
|
-
* nobody knows how far.
|
|
97
|
-
*
|
|
98
|
-
* A determinate bar (`value`) slides its fill to the new amount on the
|
|
99
|
-
* indicator spring, never stretching it, so the rounded end keeps its shape;
|
|
100
|
-
* an indeterminate one (`value={null}`) sweeps an ink segment along a recessed
|
|
101
|
-
* track. The fill is ink, not the brand blue: progress is information, not a
|
|
102
|
-
* selection. Base UI's Progress gives the bar its `progressbar` role, its
|
|
103
|
-
* values and their text for assistive tech; `label` names it and `showValue`
|
|
104
|
-
* prints the formatted value beside the label. Under reduced motion the fill
|
|
105
|
-
* jumps to its amount and the indeterminate bar breathes in place instead of
|
|
106
|
-
* travelling.
|
|
107
|
-
*
|
|
108
|
-
* Statics:
|
|
109
|
-
* - `Progress.Spinner` — the same wait in a small space: Button's loading
|
|
110
|
-
* glyph on its own, one control tall (`size`), `label` for assistive tech.
|
|
111
|
-
* Also exported as `Spinner`.
|
|
112
|
-
*
|
|
113
|
-
* @example {@include ./examples.mdx}
|
|
114
|
-
*/
|
|
115
|
-
const Progress = forwardRef<HTMLDivElement, ProgressProps>(
|
|
116
|
-
(
|
|
117
|
-
{ value = null, min = 0, max = 100, label, showValue = false, format, size: sizeProp, className, ...props },
|
|
118
|
-
ref,
|
|
119
|
-
) => {
|
|
120
|
-
const size = useSize(sizeProp)
|
|
121
|
-
const reduced = useReduceMotion()
|
|
122
|
-
const share = value === null ? null : Math.min(Math.max((value - min) / (max - min), 0), 1)
|
|
123
|
-
const { exit: _exit, ...enter } = spring.moderate
|
|
124
|
-
|
|
125
|
-
return (
|
|
126
|
-
<ProgressPrimitive.Root
|
|
127
|
-
ref={ref}
|
|
128
|
-
value={value}
|
|
129
|
-
min={min}
|
|
130
|
-
max={max}
|
|
131
|
-
format={format}
|
|
132
|
-
{...props}
|
|
133
|
-
className={cn('flex w-full flex-col gap-2', className)}
|
|
134
|
-
>
|
|
135
|
-
{(label || showValue) && (
|
|
136
|
-
<div className={cn('flex items-baseline justify-between gap-3', CAPTION[size.variant])}>
|
|
137
|
-
{label && (
|
|
138
|
-
<ProgressPrimitive.Label className="min-w-0 truncate text-foreground">{label}</ProgressPrimitive.Label>
|
|
139
|
-
)}
|
|
140
|
-
{showValue && value !== null && (
|
|
141
|
-
<ProgressPrimitive.Value className="ml-auto shrink-0 tabular-nums text-muted-foreground" />
|
|
142
|
-
)}
|
|
143
|
-
</div>
|
|
144
|
-
)}
|
|
145
|
-
<ProgressPrimitive.Track className="relative h-1 w-full overflow-hidden rounded-full bg-progress-track">
|
|
146
|
-
{share === null ? (
|
|
147
|
-
<span
|
|
148
|
-
className={cn(
|
|
149
|
-
'absolute inset-y-0 left-0 rounded-full bg-foreground',
|
|
150
|
-
reduced ? 'w-full progress-breathe' : 'w-2/5 progress-sweep',
|
|
151
|
-
)}
|
|
152
|
-
/>
|
|
153
|
-
) : (
|
|
154
|
-
<motion.span
|
|
155
|
-
className="absolute inset-0 rounded-full bg-foreground"
|
|
156
|
-
initial={false}
|
|
157
|
-
animate={{ x: `${(share - 1) * 100}%` }}
|
|
158
|
-
transition={reduced ? { duration: 0 } : enter}
|
|
159
|
-
/>
|
|
160
|
-
)}
|
|
161
|
-
</ProgressPrimitive.Track>
|
|
162
|
-
</ProgressPrimitive.Root>
|
|
163
|
-
)
|
|
164
|
-
},
|
|
165
|
-
) as ProgressComponent
|
|
166
|
-
|
|
167
|
-
Progress.displayName = 'Progress'
|
|
168
|
-
|
|
169
|
-
Object.assign(Progress, { Spinner })
|
|
170
|
-
|
|
171
|
-
export type { ProgressProps, SpinnerProps }
|
|
172
|
-
export { Progress, Spinner }
|
|
173
|
-
|
|
174
|
-
export default Progress
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Local addition (not part of Fluid Functionalism): Progress's loops. The
|
|
3
|
-
* indeterminate bar sweeps a segment across the track (transform only); the
|
|
4
|
-
* spinner reuses Button's figure-eight keyframes from base.css. Both run on
|
|
5
|
-
* `--duration-loop`. Under reduced motion (Progress swaps the classes through
|
|
6
|
-
* useReduceMotion; the media query covers the first paint) nothing travels:
|
|
7
|
-
* the fill breathes in opacity instead.
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
@keyframes progress-sweep {
|
|
11
|
-
from {
|
|
12
|
-
transform: translateX(-100%);
|
|
13
|
-
}
|
|
14
|
-
to {
|
|
15
|
-
transform: translateX(250%);
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
@keyframes progress-breathe {
|
|
20
|
-
50% {
|
|
21
|
-
opacity: 0.4;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
.progress-sweep {
|
|
26
|
-
animation: progress-sweep var(--duration-loop) ease-in-out infinite;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
.progress-spin {
|
|
30
|
-
stroke-dasharray: 15 85;
|
|
31
|
-
animation:
|
|
32
|
-
spinner-move var(--duration-loop) linear infinite,
|
|
33
|
-
spinner-dash calc(var(--duration-loop) * 2) ease-in-out infinite;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
.progress-breathe {
|
|
37
|
-
animation: progress-breathe var(--duration-loop) ease-in-out infinite;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
@media (prefers-reduced-motion: reduce) {
|
|
41
|
-
.progress-sweep {
|
|
42
|
-
width: 100%;
|
|
43
|
-
animation: progress-breathe var(--duration-loop) ease-in-out infinite;
|
|
44
|
-
}
|
|
45
|
-
.progress-spin {
|
|
46
|
-
stroke-dasharray: none;
|
|
47
|
-
animation: progress-breathe var(--duration-loop) ease-in-out infinite;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Local addition (not part of Fluid Functionalism): the docs stage of the
|
|
3
|
-
* Progress page's fill. A Progress whose value steps through a list each time
|
|
4
|
-
* its button is pressed, so the example stays hook-free.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import { useState } from 'react'
|
|
8
|
-
import Button from '../button'
|
|
9
|
-
import Progress, { type ProgressProps } from './index'
|
|
10
|
-
|
|
11
|
-
interface StepDemoProps extends Omit<ProgressProps, 'value'> {
|
|
12
|
-
/** The values, one per press; after the last it starts over. */
|
|
13
|
-
values: number[]
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export default function StepDemo({ values, ...props }: StepDemoProps) {
|
|
17
|
-
const [at, setAt] = useState(0)
|
|
18
|
-
|
|
19
|
-
return (
|
|
20
|
-
<div className="flex w-80 items-end gap-3">
|
|
21
|
-
<Progress {...props} value={values[at]} />
|
|
22
|
-
<Button variant="tertiary" size="compact" onClick={() => setAt((at + 1) % values.length)}>
|
|
23
|
-
Step
|
|
24
|
-
</Button>
|
|
25
|
-
</div>
|
|
26
|
-
)
|
|
27
|
-
}
|
|
@@ -1,188 +0,0 @@
|
|
|
1
|
-
import Table from './index'
|
|
2
|
-
import SortDemo from './sort-demo'
|
|
3
|
-
|
|
4
|
-
# Basics
|
|
5
|
-
|
|
6
|
-
## Basic
|
|
7
|
-
|
|
8
|
-
Body rows join the fluid hover highlight in document order, so they need no
|
|
9
|
-
`index`; the header row stays out.
|
|
10
|
-
|
|
11
|
-
<div className="w-full">
|
|
12
|
-
<Table>
|
|
13
|
-
<Table.Header>
|
|
14
|
-
<Table.Row>
|
|
15
|
-
<Table.Head>Name</Table.Head>
|
|
16
|
-
<Table.Head>Role</Table.Head>
|
|
17
|
-
<Table.Head>Status</Table.Head>
|
|
18
|
-
</Table.Row>
|
|
19
|
-
</Table.Header>
|
|
20
|
-
<Table.Body>
|
|
21
|
-
<Table.Row>
|
|
22
|
-
<Table.Cell>Alice</Table.Cell>
|
|
23
|
-
<Table.Cell>Engineer</Table.Cell>
|
|
24
|
-
<Table.Cell>Active</Table.Cell>
|
|
25
|
-
</Table.Row>
|
|
26
|
-
<Table.Row>
|
|
27
|
-
<Table.Cell>Bob</Table.Cell>
|
|
28
|
-
<Table.Cell>Designer</Table.Cell>
|
|
29
|
-
<Table.Cell>Away</Table.Cell>
|
|
30
|
-
</Table.Row>
|
|
31
|
-
<Table.Row>
|
|
32
|
-
<Table.Cell>Carol</Table.Cell>
|
|
33
|
-
<Table.Cell>Manager</Table.Cell>
|
|
34
|
-
<Table.Cell>Active</Table.Cell>
|
|
35
|
-
</Table.Row>
|
|
36
|
-
</Table.Body>
|
|
37
|
-
</Table>
|
|
38
|
-
</div>
|
|
39
|
-
|
|
40
|
-
## Compact
|
|
41
|
-
|
|
42
|
-
`size="compact"` lands every row on the 28px step with 12px text, for
|
|
43
|
-
dense data.
|
|
44
|
-
|
|
45
|
-
<div className="w-full">
|
|
46
|
-
<Table size="compact">
|
|
47
|
-
<Table.Header>
|
|
48
|
-
<Table.Row>
|
|
49
|
-
<Table.Head>Name</Table.Head>
|
|
50
|
-
<Table.Head>Role</Table.Head>
|
|
51
|
-
<Table.Head>Status</Table.Head>
|
|
52
|
-
</Table.Row>
|
|
53
|
-
</Table.Header>
|
|
54
|
-
<Table.Body>
|
|
55
|
-
{[['Alice', 'Engineer', 'Active'], ['Bob', 'Designer', 'Away'], ['Carol', 'Manager', 'Active'], ['Dan', 'Researcher', 'Offline']].map((row, i) => (
|
|
56
|
-
<Table.Row key={row[0]} index={i}>
|
|
57
|
-
{row.map((cell) => (
|
|
58
|
-
<Table.Cell key={cell}>{cell}</Table.Cell>
|
|
59
|
-
))}
|
|
60
|
-
</Table.Row>
|
|
61
|
-
))}
|
|
62
|
-
</Table.Body>
|
|
63
|
-
</Table>
|
|
64
|
-
</div>
|
|
65
|
-
|
|
66
|
-
## Footer and caption
|
|
67
|
-
|
|
68
|
-
`Table.Footer` holds totals: its rows render semibold, stay out of the hover and keep their bottom border while the first body row is lit. `Table.Caption` adds a muted line below.
|
|
69
|
-
|
|
70
|
-
<div className="w-full">
|
|
71
|
-
<Table>
|
|
72
|
-
<Table.Caption>Invoices issued in March.</Table.Caption>
|
|
73
|
-
<Table.Header>
|
|
74
|
-
<Table.Row>
|
|
75
|
-
<Table.Head>Invoice</Table.Head>
|
|
76
|
-
<Table.Head>Customer</Table.Head>
|
|
77
|
-
<Table.Head className="text-right">Amount</Table.Head>
|
|
78
|
-
</Table.Row>
|
|
79
|
-
</Table.Header>
|
|
80
|
-
<Table.Body>
|
|
81
|
-
<Table.Row index={0}>
|
|
82
|
-
<Table.Cell>INV-001</Table.Cell>
|
|
83
|
-
<Table.Cell>Northwind</Table.Cell>
|
|
84
|
-
<Table.Cell className="text-right tabular-nums">€250.00</Table.Cell>
|
|
85
|
-
</Table.Row>
|
|
86
|
-
<Table.Row index={1}>
|
|
87
|
-
<Table.Cell>INV-002</Table.Cell>
|
|
88
|
-
<Table.Cell>Contoso</Table.Cell>
|
|
89
|
-
<Table.Cell className="text-right tabular-nums">€150.00</Table.Cell>
|
|
90
|
-
</Table.Row>
|
|
91
|
-
<Table.Row index={2}>
|
|
92
|
-
<Table.Cell>INV-003</Table.Cell>
|
|
93
|
-
<Table.Cell>Fabrikam</Table.Cell>
|
|
94
|
-
<Table.Cell className="text-right tabular-nums">€350.00</Table.Cell>
|
|
95
|
-
</Table.Row>
|
|
96
|
-
</Table.Body>
|
|
97
|
-
<Table.Footer>
|
|
98
|
-
<Table.Row>
|
|
99
|
-
<Table.Cell colSpan={2}>Total</Table.Cell>
|
|
100
|
-
<Table.Cell className="text-right tabular-nums">€750.00</Table.Cell>
|
|
101
|
-
</Table.Row>
|
|
102
|
-
</Table.Footer>
|
|
103
|
-
</Table>
|
|
104
|
-
</div>
|
|
105
|
-
|
|
106
|
-
## Empty
|
|
107
|
-
|
|
108
|
-
`Table.Empty` spans every column with a message, or a loading indicator while rows arrive.
|
|
109
|
-
|
|
110
|
-
<div className="w-full">
|
|
111
|
-
<Table>
|
|
112
|
-
<Table.Header>
|
|
113
|
-
<Table.Row>
|
|
114
|
-
<Table.Head>Name</Table.Head>
|
|
115
|
-
<Table.Head>Role</Table.Head>
|
|
116
|
-
<Table.Head>Status</Table.Head>
|
|
117
|
-
</Table.Row>
|
|
118
|
-
</Table.Header>
|
|
119
|
-
<Table.Body>
|
|
120
|
-
<Table.Empty colSpan={3}>No people yet.</Table.Empty>
|
|
121
|
-
</Table.Body>
|
|
122
|
-
</Table>
|
|
123
|
-
</div>
|
|
124
|
-
|
|
125
|
-
## Stacked on small screens
|
|
126
|
-
|
|
127
|
-
`stacked` turns every row into a two-column card below the `md` breakpoint: the header hides and each cell is led by its muted `label` and its value reads in the primary text colour. Narrow the window to see it; `stacked={false}` on a header or row keeps it tabular.
|
|
128
|
-
|
|
129
|
-
<div className="w-full">
|
|
130
|
-
<Table stacked>
|
|
131
|
-
<Table.Header>
|
|
132
|
-
<Table.Row>
|
|
133
|
-
<Table.Head>Name</Table.Head>
|
|
134
|
-
<Table.Head>Role</Table.Head>
|
|
135
|
-
<Table.Head>Team</Table.Head>
|
|
136
|
-
<Table.Head>Status</Table.Head>
|
|
137
|
-
</Table.Row>
|
|
138
|
-
</Table.Header>
|
|
139
|
-
<Table.Body>
|
|
140
|
-
{[['Alice', 'Engineer', 'Platform', 'Active'], ['Bob', 'Designer', 'Brand', 'Away'], ['Carol', 'Manager', 'Platform', 'Active']].map(row => (
|
|
141
|
-
<Table.Row key={row[0]}>
|
|
142
|
-
<Table.Cell label="Name">{row[0]}</Table.Cell>
|
|
143
|
-
<Table.Cell label="Role">{row[1]}</Table.Cell>
|
|
144
|
-
<Table.Cell label="Team">{row[2]}</Table.Cell>
|
|
145
|
-
<Table.Cell label="Status">{row[3]}</Table.Cell>
|
|
146
|
-
</Table.Row>
|
|
147
|
-
))}
|
|
148
|
-
</Table.Body>
|
|
149
|
-
</Table>
|
|
150
|
-
</div>
|
|
151
|
-
|
|
152
|
-
# Sorting
|
|
153
|
-
|
|
154
|
-
## Sortable
|
|
155
|
-
|
|
156
|
-
A head with `sortDirection` and `onSort` becomes a sort button: a press cycles ascending, descending and unsorted, and its arrow crossfades into the new direction. Here a small stage sorts the rows.
|
|
157
|
-
|
|
158
|
-
<div className="w-full">
|
|
159
|
-
<SortDemo />
|
|
160
|
-
</div>
|
|
161
|
-
|
|
162
|
-
## Sort without state
|
|
163
|
-
|
|
164
|
-
`defaultSortDirection` lets a head keep its own direction, for a table that sorts elsewhere (a server, TanStack) and only listens to `onSort`.
|
|
165
|
-
|
|
166
|
-
<div className="w-full">
|
|
167
|
-
<Table>
|
|
168
|
-
<Table.Header>
|
|
169
|
-
<Table.Row>
|
|
170
|
-
<Table.Head defaultSortDirection="desc">Invoice</Table.Head>
|
|
171
|
-
<Table.Head defaultSortDirection={false}>Customer</Table.Head>
|
|
172
|
-
<Table.Head>Status</Table.Head>
|
|
173
|
-
</Table.Row>
|
|
174
|
-
</Table.Header>
|
|
175
|
-
<Table.Body>
|
|
176
|
-
<Table.Row index={0}>
|
|
177
|
-
<Table.Cell>INV-003</Table.Cell>
|
|
178
|
-
<Table.Cell>Northwind</Table.Cell>
|
|
179
|
-
<Table.Cell>Paid</Table.Cell>
|
|
180
|
-
</Table.Row>
|
|
181
|
-
<Table.Row index={1}>
|
|
182
|
-
<Table.Cell>INV-002</Table.Cell>
|
|
183
|
-
<Table.Cell>Contoso</Table.Cell>
|
|
184
|
-
<Table.Cell>Pending</Table.Cell>
|
|
185
|
-
</Table.Row>
|
|
186
|
-
</Table.Body>
|
|
187
|
-
</Table>
|
|
188
|
-
</div>
|