@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,276 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Local addition (not part of Fluid Functionalism): a confirm dialog that must
|
|
3
|
-
* be answered. Base UI's AlertDialog root (`role="alertdialog"`, always modal,
|
|
4
|
-
* no outside-press dismissal) under Dialog's own parts, which Base UI shares
|
|
5
|
-
* between the two, so the panel morphs exactly like Dialog's. `Action` runs a
|
|
6
|
-
* confirm that may return a promise: the button folds into Button's loading
|
|
7
|
-
* circle, and the dialog cannot be dismissed until it settles. `Cancel` is a
|
|
8
|
-
* Close that steps aside while the action runs. `onOpenChange` gets Base
|
|
9
|
-
* UI's change details like Dialog's (an action's own close reports
|
|
10
|
-
* `'imperative-action'`), and `details.cancel()` keeps it open.
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
import { AlertDialog as AlertDialogPrimitive } from '@base-ui/react/alert-dialog'
|
|
14
|
-
import {
|
|
15
|
-
cloneElement,
|
|
16
|
-
createContext,
|
|
17
|
-
forwardRef,
|
|
18
|
-
type MouseEvent,
|
|
19
|
-
type ReactElement,
|
|
20
|
-
type ReactNode,
|
|
21
|
-
useCallback,
|
|
22
|
-
useContext,
|
|
23
|
-
useEffect,
|
|
24
|
-
useMemo,
|
|
25
|
-
useRef,
|
|
26
|
-
useState,
|
|
27
|
-
} from 'react'
|
|
28
|
-
import { type SlotProps, slotRender } from '../../../lib/slot'
|
|
29
|
-
import Button, { type ButtonProps } from '../../button'
|
|
30
|
-
import {
|
|
31
|
-
createDialogChangeDetails,
|
|
32
|
-
DialogClose,
|
|
33
|
-
DialogContent,
|
|
34
|
-
type DialogContentProps,
|
|
35
|
-
DialogDescription,
|
|
36
|
-
DialogFooter,
|
|
37
|
-
DialogHeader,
|
|
38
|
-
DialogState,
|
|
39
|
-
DialogTitle,
|
|
40
|
-
DialogTrigger,
|
|
41
|
-
} from '../dialog'
|
|
42
|
-
|
|
43
|
-
type ButtonVariant = NonNullable<ButtonProps['variant']>
|
|
44
|
-
|
|
45
|
-
interface AlertDialogPending {
|
|
46
|
-
/** True while the confirm action runs. */
|
|
47
|
-
pending: boolean
|
|
48
|
-
setPending: (pending: boolean) => void
|
|
49
|
-
/** Closes the dialog, past the pending lock. */
|
|
50
|
-
close: () => void
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
const AlertDialogPendingContext = createContext<AlertDialogPending>({
|
|
54
|
-
pending: false,
|
|
55
|
-
setPending: () => {},
|
|
56
|
-
close: () => {},
|
|
57
|
-
})
|
|
58
|
-
|
|
59
|
-
// No ✕ by default: the way out is one of the dialog's own actions.
|
|
60
|
-
const AlertDialogContent = forwardRef<HTMLDivElement, DialogContentProps>(
|
|
61
|
-
({ showCloseButton = false, ...props }, ref) => (
|
|
62
|
-
<DialogContent ref={ref} showCloseButton={showCloseButton} {...props} />
|
|
63
|
-
),
|
|
64
|
-
)
|
|
65
|
-
AlertDialogContent.displayName = 'AlertDialogContent'
|
|
66
|
-
|
|
67
|
-
interface AlertDialogActionProps extends Omit<SlotProps, 'onClick'> {
|
|
68
|
-
/** The confirm. Return a promise to keep the dialog open, the button loading and every way out locked until it settles: it closes on resolve and stays open on reject. A plain return closes it at once, or, with `pending` set, once `pending` turns true and back to false. Call `event.preventDefault()` to keep it open after a plain return. */
|
|
69
|
-
onClick?: (event: MouseEvent<HTMLButtonElement>) => unknown
|
|
70
|
-
/** Called with the reason when the promise `onClick` returned rejects; the dialog stays open. */
|
|
71
|
-
onError?: (error: unknown) => void
|
|
72
|
-
/** Holds the pending state from outside (a mutation's `isPending`): loading, and the dialog locked, while true. Once set, a plain `onClick` (`() => mutate()`) leaves the dialog open until `pending` goes true and back to false, then closes it — on failure too; return the promise (`mutateAsync`) to stay open when it rejects. */
|
|
73
|
-
pending?: boolean
|
|
74
|
-
/** The Button's variant when there is no `render` element. Defaults to `"primary"`. */
|
|
75
|
-
variant?: ButtonVariant
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
const isThenable = (value: unknown): value is PromiseLike<unknown> =>
|
|
79
|
-
typeof value === 'object' && value !== null && typeof (value as PromiseLike<unknown>).then === 'function'
|
|
80
|
-
|
|
81
|
-
/** The confirm button: runs `onClick`, waits on the promise it returns, then closes. */
|
|
82
|
-
const AlertDialogAction = forwardRef<HTMLButtonElement, AlertDialogActionProps>(
|
|
83
|
-
(
|
|
84
|
-
{
|
|
85
|
-
onClick,
|
|
86
|
-
onError,
|
|
87
|
-
pending: pendingProp,
|
|
88
|
-
variant = 'primary',
|
|
89
|
-
render,
|
|
90
|
-
asChild,
|
|
91
|
-
children,
|
|
92
|
-
disabled,
|
|
93
|
-
// The element is the control itself (cloned, no Base UI button), so there is nothing to tell.
|
|
94
|
-
nativeButton: _nativeButton,
|
|
95
|
-
...props
|
|
96
|
-
},
|
|
97
|
-
ref,
|
|
98
|
-
) => {
|
|
99
|
-
const { setPending, close } = useContext(AlertDialogPendingContext)
|
|
100
|
-
const [running, setRunning] = useState(false)
|
|
101
|
-
const busy = Boolean(pendingProp) || running
|
|
102
|
-
// A plain onClick under a controlled `pending` waits for it to go true and back to false.
|
|
103
|
-
const awaiting = useRef(false)
|
|
104
|
-
const wasPending = useRef(pendingProp)
|
|
105
|
-
|
|
106
|
-
useEffect(() => {
|
|
107
|
-
if (wasPending.current && !pendingProp && awaiting.current) {
|
|
108
|
-
awaiting.current = false
|
|
109
|
-
close()
|
|
110
|
-
}
|
|
111
|
-
wasPending.current = pendingProp
|
|
112
|
-
}, [pendingProp, close])
|
|
113
|
-
|
|
114
|
-
useEffect(() => {
|
|
115
|
-
setPending(busy)
|
|
116
|
-
}, [busy, setPending])
|
|
117
|
-
useEffect(() => () => setPending(false), [setPending])
|
|
118
|
-
|
|
119
|
-
const press = (event: MouseEvent<HTMLButtonElement>) => {
|
|
120
|
-
if (busy) return
|
|
121
|
-
const result = onClick?.(event)
|
|
122
|
-
if (!isThenable(result)) {
|
|
123
|
-
if (event.defaultPrevented) return
|
|
124
|
-
if (pendingProp === undefined) close()
|
|
125
|
-
else awaiting.current = true
|
|
126
|
-
return
|
|
127
|
-
}
|
|
128
|
-
// Lock at once, not a render later: an Escape in between must not slip through.
|
|
129
|
-
setPending(true)
|
|
130
|
-
setRunning(true)
|
|
131
|
-
Promise.resolve(result).then(
|
|
132
|
-
() => {
|
|
133
|
-
setRunning(false)
|
|
134
|
-
setPending(false)
|
|
135
|
-
close()
|
|
136
|
-
},
|
|
137
|
-
(error: unknown) => {
|
|
138
|
-
setRunning(false)
|
|
139
|
-
setPending(false)
|
|
140
|
-
onError?.(error)
|
|
141
|
-
},
|
|
142
|
-
)
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
const el = slotRender(render, asChild, children)
|
|
146
|
-
if (!el) {
|
|
147
|
-
return (
|
|
148
|
-
<Button ref={ref} variant={variant} loading={busy} disabled={disabled} onClick={press} {...props}>
|
|
149
|
-
{children}
|
|
150
|
-
</Button>
|
|
151
|
-
)
|
|
152
|
-
}
|
|
153
|
-
// Button folds into its spinner; any other element is disabled and marked busy.
|
|
154
|
-
const state = (el as ReactElement).type === Button ? { loading: busy } : { 'aria-busy': busy || undefined }
|
|
155
|
-
return cloneElement(el as ReactElement<Record<string, unknown>>, {
|
|
156
|
-
...props,
|
|
157
|
-
...state,
|
|
158
|
-
ref,
|
|
159
|
-
disabled: disabled || busy,
|
|
160
|
-
onClick: press,
|
|
161
|
-
})
|
|
162
|
-
},
|
|
163
|
-
)
|
|
164
|
-
AlertDialogAction.displayName = 'AlertDialogAction'
|
|
165
|
-
|
|
166
|
-
interface AlertDialogCancelProps extends SlotProps {
|
|
167
|
-
/** The Button's variant when there is no `render` element. Defaults to `"ghost"`. */
|
|
168
|
-
variant?: ButtonVariant
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
/** Closes without confirming; disabled while the action runs. */
|
|
172
|
-
const AlertDialogCancel = forwardRef<HTMLButtonElement, AlertDialogCancelProps>(
|
|
173
|
-
({ variant = 'ghost', render, asChild, children, disabled, ...props }, ref) => {
|
|
174
|
-
const { pending } = useContext(AlertDialogPendingContext)
|
|
175
|
-
const el = slotRender(render, asChild, children) ?? <Button variant={variant}>{children}</Button>
|
|
176
|
-
return <DialogClose ref={ref} render={el} disabled={disabled || pending} {...props} />
|
|
177
|
-
},
|
|
178
|
-
)
|
|
179
|
-
AlertDialogCancel.displayName = 'AlertDialogCancel'
|
|
180
|
-
|
|
181
|
-
/** What `onOpenChange` receives besides the open state: Base UI's AlertDialog change details. */
|
|
182
|
-
type AlertDialogOpenChangeDetails = AlertDialogPrimitive.Root.ChangeEventDetails
|
|
183
|
-
|
|
184
|
-
interface AlertDialogProps {
|
|
185
|
-
/** Controlled open state. */
|
|
186
|
-
open?: boolean
|
|
187
|
-
/** Initial open state, for an uncontrolled alert dialog. Defaults to `false`. */
|
|
188
|
-
defaultOpen?: boolean
|
|
189
|
-
/** Called when the dialog opens or closes, with Base UI's change details: `reason` (`'escape-key'`, `'close-press'`, `'imperative-action'` for an action's own close, …), the `event`, and `cancel()` to keep it as it is. Not called for a dismissal blocked while an action runs. */
|
|
190
|
-
onOpenChange?: (open: boolean, details: AlertDialogOpenChangeDetails) => void
|
|
191
|
-
/** The trigger and the content — `AlertDialog.Trigger` plus an `AlertDialog.Content`. */
|
|
192
|
-
children?: ReactNode
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
/**
|
|
196
|
-
* A dialog that asks before something happens and waits for an answer.
|
|
197
|
-
*
|
|
198
|
-
* It is always modal, and a press outside does not close it: only its own
|
|
199
|
-
* actions (and Escape) do, so a destructive step is never confirmed or
|
|
200
|
-
* skipped by accident. Screen readers announce it as an alert. Everything
|
|
201
|
-
* else is Dialog's: the panel grows out of its trigger with the goo neck by
|
|
202
|
-
* default (see Morph), takes the same `size`, `position` and morph options,
|
|
203
|
-
* and lifts 4 surface levels. Unlike Dialog it has no ✕ unless
|
|
204
|
-
* `showCloseButton` asks for one.
|
|
205
|
-
*
|
|
206
|
-
* `AlertDialog.Action` is the confirm. When its `onClick` returns a promise,
|
|
207
|
-
* the button folds into a spinner and the dialog holds still: Cancel greys
|
|
208
|
-
* out, and Escape and every close are ignored until the promise settles. It
|
|
209
|
-
* closes when the promise resolves and stays open when it rejects, handing
|
|
210
|
-
* the reason to `onError`, so the person can try again or cancel. With a
|
|
211
|
-
* mutation's state in `pending` instead, a plain `onClick={() => mutate()}`
|
|
212
|
-
* keeps the dialog open, locked while `pending` is true, and closes it once
|
|
213
|
-
* `pending` falls back to false.
|
|
214
|
-
*
|
|
215
|
-
* Statics:
|
|
216
|
-
* - `AlertDialog.Action` — the confirm button: `onClick` (may return a
|
|
217
|
-
* promise), `onError`, `pending`, `variant`, or `render` / `asChild`.
|
|
218
|
-
* - `AlertDialog.Cancel` — closes without confirming, disabled while the
|
|
219
|
-
* action runs: `variant` (ghost), or `render` / `asChild`.
|
|
220
|
-
* - The same parts as Dialog — `AlertDialog.Trigger`, `AlertDialog.Content`,
|
|
221
|
-
* `AlertDialog.Header`, `AlertDialog.Footer`, `AlertDialog.Title`,
|
|
222
|
-
* `AlertDialog.Description` and `AlertDialog.Close`.
|
|
223
|
-
*
|
|
224
|
-
* @example {@include ./examples.mdx}
|
|
225
|
-
*/
|
|
226
|
-
function AlertDialog({ children, open, defaultOpen, onOpenChange }: AlertDialogProps) {
|
|
227
|
-
const [pending, setPendingState] = useState(false)
|
|
228
|
-
// Read synchronously by the dismissal guard, ahead of the next render.
|
|
229
|
-
const pendingRef = useRef(false)
|
|
230
|
-
const setPending = useCallback((next: boolean) => {
|
|
231
|
-
pendingRef.current = next
|
|
232
|
-
setPendingState(next)
|
|
233
|
-
}, [])
|
|
234
|
-
const closeRef = useRef<() => void>(() => {})
|
|
235
|
-
const close = useCallback(() => closeRef.current(), [])
|
|
236
|
-
const ctx = useMemo(() => ({ pending, setPending, close }), [pending, setPending, close])
|
|
237
|
-
|
|
238
|
-
return (
|
|
239
|
-
<DialogState open={open} defaultOpen={defaultOpen} onOpenChange={onOpenChange}>
|
|
240
|
-
{root => {
|
|
241
|
-
closeRef.current = () => root.onOpenChange(false, createDialogChangeDetails('imperative-action'))
|
|
242
|
-
return (
|
|
243
|
-
<AlertDialogPendingContext.Provider value={ctx}>
|
|
244
|
-
<AlertDialogPrimitive.Root
|
|
245
|
-
open={root.open}
|
|
246
|
-
onOpenChange={(next, details) => {
|
|
247
|
-
if (!next && pendingRef.current) {
|
|
248
|
-
details.cancel()
|
|
249
|
-
return
|
|
250
|
-
}
|
|
251
|
-
root.onOpenChange(next, details)
|
|
252
|
-
}}
|
|
253
|
-
>
|
|
254
|
-
{children}
|
|
255
|
-
</AlertDialogPrimitive.Root>
|
|
256
|
-
</AlertDialogPendingContext.Provider>
|
|
257
|
-
)
|
|
258
|
-
}}
|
|
259
|
-
</DialogState>
|
|
260
|
-
)
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
AlertDialog.Trigger = DialogTrigger
|
|
264
|
-
AlertDialog.Content = AlertDialogContent
|
|
265
|
-
AlertDialog.Header = DialogHeader
|
|
266
|
-
AlertDialog.Footer = DialogFooter
|
|
267
|
-
AlertDialog.Title = DialogTitle
|
|
268
|
-
AlertDialog.Description = DialogDescription
|
|
269
|
-
AlertDialog.Close = DialogClose
|
|
270
|
-
AlertDialog.Action = AlertDialogAction
|
|
271
|
-
AlertDialog.Cancel = AlertDialogCancel
|
|
272
|
-
|
|
273
|
-
export type { AlertDialogActionProps, AlertDialogCancelProps, AlertDialogOpenChangeDetails, AlertDialogProps }
|
|
274
|
-
export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent }
|
|
275
|
-
|
|
276
|
-
export default AlertDialog
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Local addition (not part of Fluid Functionalism): the docs stage of the
|
|
3
|
-
* AlertDialog page's controlled `pending`. A fake mutation (`mutate` +
|
|
4
|
-
* `isPending`, the shape TanStack Query hands out) drives the confirm, so
|
|
5
|
-
* the example stays hook-free.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import { useState } from 'react'
|
|
9
|
-
import Button from '../../button'
|
|
10
|
-
import AlertDialog from './index'
|
|
11
|
-
|
|
12
|
-
export default function PendingDemo() {
|
|
13
|
-
const [isPending, setPending] = useState(false)
|
|
14
|
-
const mutate = () => {
|
|
15
|
-
setPending(true)
|
|
16
|
-
setTimeout(() => setPending(false), 1600)
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
return (
|
|
20
|
-
<AlertDialog>
|
|
21
|
-
<AlertDialog.Trigger render={<Button variant="secondary">Revoke access</Button>} />
|
|
22
|
-
<AlertDialog.Content>
|
|
23
|
-
<AlertDialog.Header>
|
|
24
|
-
<AlertDialog.Title>Revoke this key?</AlertDialog.Title>
|
|
25
|
-
<AlertDialog.Description>Apps using it stop working at once.</AlertDialog.Description>
|
|
26
|
-
</AlertDialog.Header>
|
|
27
|
-
<AlertDialog.Footer>
|
|
28
|
-
<AlertDialog.Cancel>Cancel</AlertDialog.Cancel>
|
|
29
|
-
<AlertDialog.Action variant="destructive" pending={isPending} onClick={() => mutate()}>
|
|
30
|
-
Revoke
|
|
31
|
-
</AlertDialog.Action>
|
|
32
|
-
</AlertDialog.Footer>
|
|
33
|
-
</AlertDialog.Content>
|
|
34
|
-
</AlertDialog>
|
|
35
|
-
)
|
|
36
|
-
}
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
import Command from './index'
|
|
2
|
-
import Button from '../../button'
|
|
3
|
-
import Elevated from '../../../primitives/surface'
|
|
4
|
-
import { Calculator, Calendar, CreditCard, Moon, Settings, Smile, Sun, User } from 'lucide-react'
|
|
5
|
-
|
|
6
|
-
# Basic
|
|
7
|
-
|
|
8
|
-
Press the button or ⌘K (Ctrl+K): the panel oozes out of the button. Type to filter, move with the arrows, and Enter or a press runs the command.
|
|
9
|
-
|
|
10
|
-
<Command>
|
|
11
|
-
<Command.Trigger
|
|
12
|
-
render={
|
|
13
|
-
<Button variant="secondary">
|
|
14
|
-
Search commands
|
|
15
|
-
<Command.Shortcut className="ml-3">⌘K</Command.Shortcut>
|
|
16
|
-
</Button>
|
|
17
|
-
}
|
|
18
|
-
/>
|
|
19
|
-
<Command.Content
|
|
20
|
-
items={[
|
|
21
|
-
{
|
|
22
|
-
label: 'Suggestions',
|
|
23
|
-
items: [
|
|
24
|
-
{ label: 'Calendar', icon: Calendar, keywords: ['events', 'schedule'] },
|
|
25
|
-
{ label: 'Search emoji', icon: Smile },
|
|
26
|
-
{ label: 'Calculator', icon: Calculator, disabled: true },
|
|
27
|
-
],
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
label: 'Settings',
|
|
31
|
-
items: [
|
|
32
|
-
{ label: 'Profile', icon: User, shortcut: '⌘P' },
|
|
33
|
-
{ label: 'Billing', icon: CreditCard, shortcut: '⌘B', keywords: ['money', 'invoice'] },
|
|
34
|
-
{ label: 'Settings', icon: Settings, shortcut: '⌘S' },
|
|
35
|
-
],
|
|
36
|
-
},
|
|
37
|
-
]}
|
|
38
|
-
/>
|
|
39
|
-
</Command>
|
|
40
|
-
|
|
41
|
-
# Flat list
|
|
42
|
-
|
|
43
|
-
Items without groups are one list. Keywords match too: try "dark".
|
|
44
|
-
|
|
45
|
-
<Command hotkey={false}>
|
|
46
|
-
<Command.Trigger render={<Button variant="tertiary">Change theme</Button>} />
|
|
47
|
-
<Command.Content
|
|
48
|
-
placeholder="Pick a theme…"
|
|
49
|
-
label="Theme"
|
|
50
|
-
items={[
|
|
51
|
-
{ label: 'Light', icon: Sun, keywords: ['day', 'bright'] },
|
|
52
|
-
{ label: 'Dark', icon: Moon, keywords: ['night', 'dim'] },
|
|
53
|
-
{ label: 'System', icon: Settings, keywords: ['auto', 'os'] },
|
|
54
|
-
]}
|
|
55
|
-
/>
|
|
56
|
-
</Command>
|
|
57
|
-
|
|
58
|
-
# Morph sources
|
|
59
|
-
|
|
60
|
-
`from` and `effect` are Dialog's: the panel can grow from the press point, or unfold in place without the goo neck.
|
|
61
|
-
|
|
62
|
-
<div className="flex flex-wrap items-center justify-center gap-3">
|
|
63
|
-
<Command hotkey={false}>
|
|
64
|
-
<Command.Trigger render={<Button variant="secondary">From the pointer</Button>} />
|
|
65
|
-
<Command.Content
|
|
66
|
-
from="pointer"
|
|
67
|
-
effect="morph"
|
|
68
|
-
items={[
|
|
69
|
-
{ label: 'Calendar', icon: Calendar },
|
|
70
|
-
{ label: 'Profile', icon: User },
|
|
71
|
-
{ label: 'Settings', icon: Settings },
|
|
72
|
-
]}
|
|
73
|
-
/>
|
|
74
|
-
</Command>
|
|
75
|
-
<Command hotkey={false}>
|
|
76
|
-
<Command.Trigger render={<Button variant="secondary">From its center</Button>} />
|
|
77
|
-
<Command.Content
|
|
78
|
-
from="center"
|
|
79
|
-
effect="morph"
|
|
80
|
-
items={[
|
|
81
|
-
{ label: 'Calendar', icon: Calendar },
|
|
82
|
-
{ label: 'Profile', icon: User },
|
|
83
|
-
{ label: 'Settings', icon: Settings },
|
|
84
|
-
]}
|
|
85
|
-
/>
|
|
86
|
-
</Command>
|
|
87
|
-
</div>
|
|
88
|
-
|
|
89
|
-
# In the page
|
|
90
|
-
|
|
91
|
-
`Command.Palette` is the field and the list without the dialog, for a palette that stays on the page. It brings no surface of its own.
|
|
92
|
-
|
|
93
|
-
<Elevated offset={2} className="w-full max-w-md overflow-hidden rounded-xl">
|
|
94
|
-
<Command.Palette
|
|
95
|
-
placeholder="Search settings…"
|
|
96
|
-
items={[
|
|
97
|
-
{
|
|
98
|
-
label: 'Account',
|
|
99
|
-
items: [
|
|
100
|
-
{ label: 'Profile', icon: User, shortcut: '⌘P' },
|
|
101
|
-
{ label: 'Billing', icon: CreditCard, shortcut: '⌘B' },
|
|
102
|
-
],
|
|
103
|
-
},
|
|
104
|
-
{
|
|
105
|
-
label: 'Appearance',
|
|
106
|
-
items: [
|
|
107
|
-
{ label: 'Light theme', icon: Sun },
|
|
108
|
-
{ label: 'Dark theme', icon: Moon },
|
|
109
|
-
],
|
|
110
|
-
},
|
|
111
|
-
]}
|
|
112
|
-
/>
|
|
113
|
-
</Elevated>
|