@stevederico/skateboard-ui 3.12.0 → 4.1.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/CHANGELOG.md +25 -0
- package/README.md +37 -31
- package/dist/components/core/Command.js +33 -7
- package/dist/shadcn/ui/accordion.d.ts +1 -6
- package/dist/shadcn/ui/accordion.js +3 -17
- package/dist/shadcn/ui/alert-dialog.d.ts +1 -18
- package/dist/shadcn/ui/alert-dialog.js +3 -43
- package/dist/shadcn/ui/alert.d.ts +1 -13
- package/dist/shadcn/ui/alert.js +3 -28
- package/dist/shadcn/ui/aspect-ratio.d.ts +1 -4
- package/dist/shadcn/ui/aspect-ratio.js +3 -8
- package/dist/shadcn/ui/avatar.d.ts +1 -11
- package/dist/shadcn/ui/avatar.js +3 -24
- package/dist/shadcn/ui/badge.d.ts +1 -14
- package/dist/shadcn/ui/badge.js +3 -33
- package/dist/shadcn/ui/breadcrumb.d.ts +1 -10
- package/dist/shadcn/ui/breadcrumb.js +3 -37
- package/dist/shadcn/ui/button-group.d.ts +1 -13
- package/dist/shadcn/ui/button-group.js +3 -36
- package/dist/shadcn/ui/button.d.ts +1 -34
- package/dist/shadcn/ui/button.js +3 -53
- package/dist/shadcn/ui/calendar.d.ts +1 -13
- package/dist/shadcn/ui/calendar.js +3 -75
- package/dist/shadcn/ui/card.d.ts +1 -11
- package/dist/shadcn/ui/card.js +3 -25
- package/dist/shadcn/ui/checkbox.d.ts +1 -3
- package/dist/shadcn/ui/checkbox.js +3 -9
- package/dist/shadcn/ui/collapsible.d.ts +1 -5
- package/dist/shadcn/ui/collapsible.js +3 -13
- package/dist/shadcn/ui/command.d.ts +1 -19
- package/dist/shadcn/ui/command.js +3 -35
- package/dist/shadcn/ui/context-menu.d.ts +1 -29
- package/dist/shadcn/ui/context-menu.js +3 -52
- package/dist/shadcn/ui/dialog.d.ts +1 -17
- package/dist/shadcn/ui/dialog.js +3 -38
- package/dist/shadcn/ui/drawer.d.ts +1 -13
- package/dist/shadcn/ui/drawer.js +3 -196
- package/dist/shadcn/ui/dropdown-menu.d.ts +1 -29
- package/dist/shadcn/ui/dropdown-menu.js +3 -52
- package/dist/shadcn/ui/empty.d.ts +1 -14
- package/dist/shadcn/ui/empty.js +3 -33
- package/dist/shadcn/ui/field.d.ts +1 -28
- package/dist/shadcn/ui/field.js +3 -68
- package/dist/shadcn/ui/hover-card.d.ts +1 -5
- package/dist/shadcn/ui/hover-card.js +3 -14
- package/dist/shadcn/ui/input-group.d.ts +1 -28
- package/dist/shadcn/ui/input-group.js +3 -58
- package/dist/shadcn/ui/input.d.ts +1 -3
- package/dist/shadcn/ui/input.js +3 -8
- package/dist/shadcn/ui/item.d.ts +1 -34
- package/dist/shadcn/ui/item.js +3 -79
- package/dist/shadcn/ui/kbd.d.ts +1 -3
- package/dist/shadcn/ui/kbd.js +3 -9
- package/dist/shadcn/ui/label.d.ts +1 -3
- package/dist/shadcn/ui/label.js +3 -8
- package/dist/shadcn/ui/menubar.d.ts +1 -29
- package/dist/shadcn/ui/menubar.js +3 -57
- package/dist/shadcn/ui/navigation-menu.d.ts +1 -13
- package/dist/shadcn/ui/navigation-menu.js +3 -31
- package/dist/shadcn/ui/pagination.d.ts +1 -17
- package/dist/shadcn/ui/pagination.js +3 -27
- package/dist/shadcn/ui/popover.d.ts +1 -9
- package/dist/shadcn/ui/popover.js +3 -24
- package/dist/shadcn/ui/progress.d.ts +1 -7
- package/dist/shadcn/ui/progress.js +3 -20
- package/dist/shadcn/ui/radio-group.d.ts +1 -5
- package/dist/shadcn/ui/radio-group.js +3 -12
- package/dist/shadcn/ui/scroll-area.d.ts +1 -5
- package/dist/shadcn/ui/scroll-area.js +3 -12
- package/dist/shadcn/ui/select.d.ts +1 -15
- package/dist/shadcn/ui/select.js +3 -35
- package/dist/shadcn/ui/separator.d.ts +1 -3
- package/dist/shadcn/ui/separator.js +3 -8
- package/dist/shadcn/ui/sheet.d.ts +1 -14
- package/dist/shadcn/ui/sheet.js +3 -38
- package/dist/shadcn/ui/sidebar.d.ts +1 -70
- package/dist/shadcn/ui/sidebar.js +3 -256
- package/dist/shadcn/ui/skeleton.d.ts +1 -2
- package/dist/shadcn/ui/skeleton.js +3 -6
- package/dist/shadcn/ui/slider.d.ts +1 -3
- package/dist/shadcn/ui/slider.js +3 -12
- package/dist/shadcn/ui/spinner.d.ts +1 -2
- package/dist/shadcn/ui/spinner.js +3 -7
- package/dist/shadcn/ui/switch.d.ts +1 -5
- package/dist/shadcn/ui/switch.js +3 -8
- package/dist/shadcn/ui/table.d.ts +1 -10
- package/dist/shadcn/ui/table.js +3 -29
- package/dist/shadcn/ui/tabs.d.ts +1 -13
- package/dist/shadcn/ui/tabs.js +3 -29
- package/dist/shadcn/ui/textarea.d.ts +1 -3
- package/dist/shadcn/ui/textarea.js +3 -7
- package/dist/shadcn/ui/toggle-group.d.ts +1 -11
- package/dist/shadcn/ui/toggle-group.js +3 -25
- package/dist/shadcn/ui/toggle.d.ts +1 -15
- package/dist/shadcn/ui/toggle.js +3 -26
- package/dist/shadcn/ui/tooltip.d.ts +1 -6
- package/dist/shadcn/ui/tooltip.js +3 -17
- package/dist/ui/accordion.d.ts +21 -0
- package/dist/ui/accordion.js +67 -0
- package/dist/ui/alert-dialog.d.ts +32 -0
- package/dist/ui/alert-dialog.js +102 -0
- package/dist/ui/alert.d.ts +13 -0
- package/dist/ui/alert.js +28 -0
- package/dist/ui/aspect-ratio.d.ts +5 -0
- package/dist/ui/aspect-ratio.js +9 -0
- package/dist/ui/avatar.d.ts +14 -0
- package/dist/ui/avatar.js +49 -0
- package/dist/ui/badge.d.ts +22 -0
- package/dist/ui/badge.js +26 -0
- package/dist/ui/breadcrumb.d.ts +13 -0
- package/dist/ui/breadcrumb.js +29 -0
- package/dist/ui/button-group.d.ts +21 -0
- package/dist/ui/button-group.js +29 -0
- package/dist/ui/button.d.ts +38 -0
- package/dist/ui/button.js +49 -0
- package/dist/ui/calendar.d.ts +13 -0
- package/dist/ui/calendar.js +75 -0
- package/dist/ui/card.d.ts +11 -0
- package/dist/ui/card.js +25 -0
- package/dist/ui/checkbox.d.ts +17 -0
- package/dist/ui/checkbox.js +25 -0
- package/dist/ui/collapsible.d.ts +11 -0
- package/dist/ui/collapsible.js +40 -0
- package/dist/ui/command.d.ts +19 -0
- package/dist/ui/command.js +35 -0
- package/dist/ui/context-menu.d.ts +53 -0
- package/dist/ui/context-menu.js +372 -0
- package/dist/ui/dialog.d.ts +40 -0
- package/dist/ui/dialog.js +109 -0
- package/dist/ui/drawer.d.ts +36 -0
- package/dist/ui/drawer.js +243 -0
- package/dist/ui/dropdown-menu.d.ts +61 -0
- package/dist/ui/dropdown-menu.js +347 -0
- package/dist/ui/empty.d.ts +14 -0
- package/dist/ui/empty.js +33 -0
- package/dist/ui/field.d.ts +28 -0
- package/dist/ui/field.js +68 -0
- package/dist/ui/hover-card.d.ts +32 -0
- package/dist/ui/hover-card.js +119 -0
- package/dist/ui/input-group.d.ts +28 -0
- package/dist/ui/input-group.js +58 -0
- package/dist/ui/input.d.ts +3 -0
- package/dist/ui/input.js +7 -0
- package/dist/ui/item.d.ts +41 -0
- package/dist/ui/item.js +69 -0
- package/dist/ui/kbd.d.ts +4 -0
- package/dist/ui/kbd.js +10 -0
- package/dist/ui/label.d.ts +3 -0
- package/dist/ui/label.js +8 -0
- package/dist/ui/menubar.d.ts +59 -0
- package/dist/ui/menubar.js +397 -0
- package/dist/ui/navigation-menu.d.ts +24 -0
- package/dist/ui/navigation-menu.js +203 -0
- package/dist/ui/pagination.d.ts +17 -0
- package/dist/ui/pagination.js +36 -0
- package/dist/ui/popover.d.ts +25 -0
- package/dist/ui/popover.js +126 -0
- package/dist/ui/portal.d.ts +7 -0
- package/dist/ui/portal.js +12 -0
- package/dist/ui/progress.d.ts +15 -0
- package/dist/ui/progress.js +36 -0
- package/dist/ui/radio-group.d.ts +17 -0
- package/dist/ui/radio-group.js +66 -0
- package/dist/ui/scroll-area.d.ts +9 -0
- package/dist/ui/scroll-area.js +72 -0
- package/dist/ui/select.d.ts +37 -0
- package/dist/ui/select.js +226 -0
- package/dist/ui/separator.d.ts +14 -0
- package/dist/ui/separator.js +13 -0
- package/dist/ui/sheet.d.ts +31 -0
- package/dist/ui/sheet.js +121 -0
- package/dist/ui/sidebar.d.ts +86 -0
- package/dist/ui/sidebar.js +211 -0
- package/dist/ui/skeleton.d.ts +3 -0
- package/dist/ui/skeleton.js +7 -0
- package/dist/ui/slider.d.ts +18 -0
- package/dist/ui/slider.js +94 -0
- package/dist/ui/slot.d.ts +27 -0
- package/dist/ui/slot.js +62 -0
- package/dist/ui/spinner.d.ts +3 -0
- package/dist/ui/spinner.js +8 -0
- package/dist/ui/switch.d.ts +17 -0
- package/dist/ui/switch.js +23 -0
- package/dist/ui/table.d.ts +10 -0
- package/dist/ui/table.js +29 -0
- package/dist/ui/tabs.d.ts +29 -0
- package/dist/ui/tabs.js +96 -0
- package/dist/ui/textarea.d.ts +3 -0
- package/dist/ui/textarea.js +7 -0
- package/dist/ui/toggle-group.d.ts +23 -0
- package/dist/ui/toggle-group.js +52 -0
- package/dist/ui/toggle.d.ts +25 -0
- package/dist/ui/toggle.js +41 -0
- package/dist/ui/tooltip.d.ts +25 -0
- package/dist/ui/tooltip.js +90 -0
- package/dist/ui/use-controllable-state.d.ts +10 -0
- package/dist/ui/use-controllable-state.js +17 -0
- package/dist/ui/use-dismiss.d.ts +10 -0
- package/dist/ui/use-dismiss.js +51 -0
- package/dist/ui/use-floating.d.ts +42 -0
- package/dist/ui/use-floating.js +136 -0
- package/dist/ui/use-presence.d.ts +8 -0
- package/dist/ui/use-presence.js +48 -0
- package/dist/ui/use-typeahead.d.ts +19 -0
- package/dist/ui/use-typeahead.js +64 -0
- package/package.json +6 -1
- package/dist/shadcn/lib/base-ui/LICENSE +0 -21
- package/dist/shadcn/lib/base-ui/_chunk-000kmre8.js +0 -150
- package/dist/shadcn/lib/base-ui/_chunk-1vw45v38.js +0 -64
- package/dist/shadcn/lib/base-ui/_chunk-23rx7haq.js +0 -81
- package/dist/shadcn/lib/base-ui/_chunk-242gh8ph.js +0 -230
- package/dist/shadcn/lib/base-ui/_chunk-26cc610z.js +0 -6
- package/dist/shadcn/lib/base-ui/_chunk-2z044bba.js +0 -5890
- package/dist/shadcn/lib/base-ui/_chunk-3cpd1vjz.js +0 -13
- package/dist/shadcn/lib/base-ui/_chunk-3enq1vat.js +0 -82
- package/dist/shadcn/lib/base-ui/_chunk-3xpke33f.js +0 -23
- package/dist/shadcn/lib/base-ui/_chunk-451nqgsa.js +0 -6
- package/dist/shadcn/lib/base-ui/_chunk-4maf6pas.js +0 -11
- package/dist/shadcn/lib/base-ui/_chunk-4zhfq4d3.js +0 -16
- package/dist/shadcn/lib/base-ui/_chunk-5gaqyne5.js +0 -21
- package/dist/shadcn/lib/base-ui/_chunk-5tt5hk59.js +0 -4
- package/dist/shadcn/lib/base-ui/_chunk-5tze5c8q.js +0 -13
- package/dist/shadcn/lib/base-ui/_chunk-5xmdvndx.js +0 -225
- package/dist/shadcn/lib/base-ui/_chunk-6adaer33.js +0 -435
- package/dist/shadcn/lib/base-ui/_chunk-6ejf1z1r.js +0 -9
- package/dist/shadcn/lib/base-ui/_chunk-6kqramh9.js +0 -27
- package/dist/shadcn/lib/base-ui/_chunk-7b9dc493.js +0 -14
- package/dist/shadcn/lib/base-ui/_chunk-8a9vv8am.js +0 -89
- package/dist/shadcn/lib/base-ui/_chunk-8ctgmf06.js +0 -129
- package/dist/shadcn/lib/base-ui/_chunk-8ganmsbg.js +0 -54
- package/dist/shadcn/lib/base-ui/_chunk-8xaqxgck.js +0 -15
- package/dist/shadcn/lib/base-ui/_chunk-95tf2rxq.js +0 -62
- package/dist/shadcn/lib/base-ui/_chunk-9x63vfqj.js +0 -70
- package/dist/shadcn/lib/base-ui/_chunk-ase0ydtt.js +0 -9
- package/dist/shadcn/lib/base-ui/_chunk-b0nc8wq7.js +0 -34
- package/dist/shadcn/lib/base-ui/_chunk-b5ya6xds.js +0 -10
- package/dist/shadcn/lib/base-ui/_chunk-b6dkjkbw.js +0 -43
- package/dist/shadcn/lib/base-ui/_chunk-c2bz952e.js +0 -19
- package/dist/shadcn/lib/base-ui/_chunk-cdgfsr3q.js +0 -15
- package/dist/shadcn/lib/base-ui/_chunk-cdj8cpx5.js +0 -347
- package/dist/shadcn/lib/base-ui/_chunk-cgptgywc.js +0 -104
- package/dist/shadcn/lib/base-ui/_chunk-cwvtvwc7.js +0 -35
- package/dist/shadcn/lib/base-ui/_chunk-dan0mva4.js +0 -23
- package/dist/shadcn/lib/base-ui/_chunk-dzvjwv25.js +0 -0
- package/dist/shadcn/lib/base-ui/_chunk-e13rsb6b.js +0 -184
- package/dist/shadcn/lib/base-ui/_chunk-e56mpvk1.js +0 -118
- package/dist/shadcn/lib/base-ui/_chunk-e6k2ecs7.js +0 -48
- package/dist/shadcn/lib/base-ui/_chunk-ebyxgtb4.js +0 -29
- package/dist/shadcn/lib/base-ui/_chunk-f2wttwrf.js +0 -39
- package/dist/shadcn/lib/base-ui/_chunk-fdzctasg.js +0 -38
- package/dist/shadcn/lib/base-ui/_chunk-ffpjy0ta.js +0 -39
- package/dist/shadcn/lib/base-ui/_chunk-fqry7pew.js +0 -603
- package/dist/shadcn/lib/base-ui/_chunk-ghn1tzt8.js +0 -84
- package/dist/shadcn/lib/base-ui/_chunk-gy0bpkmx.js +0 -12
- package/dist/shadcn/lib/base-ui/_chunk-hm5h9vsk.js +0 -16
- package/dist/shadcn/lib/base-ui/_chunk-htdj1jps.js +0 -833
- package/dist/shadcn/lib/base-ui/_chunk-j29xjete.js +0 -146
- package/dist/shadcn/lib/base-ui/_chunk-j3qkyd10.js +0 -50
- package/dist/shadcn/lib/base-ui/_chunk-ktvsd5k6.js +0 -2386
- package/dist/shadcn/lib/base-ui/_chunk-kw8nnq00.js +0 -546
- package/dist/shadcn/lib/base-ui/_chunk-m307wpdj.js +0 -18
- package/dist/shadcn/lib/base-ui/_chunk-mnd0j7v9.js +0 -15
- package/dist/shadcn/lib/base-ui/_chunk-n11h505c.js +0 -32
- package/dist/shadcn/lib/base-ui/_chunk-p0e2qacz.js +0 -26
- package/dist/shadcn/lib/base-ui/_chunk-pv7b791x.js +0 -106
- package/dist/shadcn/lib/base-ui/_chunk-q5cg71p7.js +0 -83
- package/dist/shadcn/lib/base-ui/_chunk-qbezxj1g.js +0 -385
- package/dist/shadcn/lib/base-ui/_chunk-qmsqz6nt.js +0 -15
- package/dist/shadcn/lib/base-ui/_chunk-rrh8rt4v.js +0 -65
- package/dist/shadcn/lib/base-ui/_chunk-s5pwkz8v.js +0 -25
- package/dist/shadcn/lib/base-ui/_chunk-svxv97ph.js +0 -218
- package/dist/shadcn/lib/base-ui/_chunk-t7ppm3t0.js +0 -68
- package/dist/shadcn/lib/base-ui/_chunk-vg16xxmb.js +0 -52
- package/dist/shadcn/lib/base-ui/_chunk-vgkfmtbe.js +0 -21
- package/dist/shadcn/lib/base-ui/_chunk-watha94s.js +0 -14
- package/dist/shadcn/lib/base-ui/_chunk-wdqynnjf.js +0 -35
- package/dist/shadcn/lib/base-ui/_chunk-wx2nxg0p.js +0 -15
- package/dist/shadcn/lib/base-ui/_chunk-x11e1k9r.js +0 -0
- package/dist/shadcn/lib/base-ui/_chunk-x8xehj6d.js +0 -302
- package/dist/shadcn/lib/base-ui/_chunk-xcqbtm2f.js +0 -28
- package/dist/shadcn/lib/base-ui/_chunk-ytnp24gq.js +0 -328
- package/dist/shadcn/lib/base-ui/_chunk-yzr7eg4b.js +0 -6
- package/dist/shadcn/lib/base-ui/_chunk-zk4mtm9m.js +0 -9
- package/dist/shadcn/lib/base-ui/accordion.d.ts +0 -447
- package/dist/shadcn/lib/base-ui/accordion.js +0 -630
- package/dist/shadcn/lib/base-ui/alert-dialog.d.ts +0 -1467
- package/dist/shadcn/lib/base-ui/alert-dialog.js +0 -98
- package/dist/shadcn/lib/base-ui/avatar.d.ts +0 -123
- package/dist/shadcn/lib/base-ui/avatar.js +0 -235
- package/dist/shadcn/lib/base-ui/button.d.ts +0 -84
- package/dist/shadcn/lib/base-ui/button.js +0 -51
- package/dist/shadcn/lib/base-ui/checkbox.d.ts +0 -341
- package/dist/shadcn/lib/base-ui/checkbox.js +0 -501
- package/dist/shadcn/lib/base-ui/collapsible.d.ts +0 -291
- package/dist/shadcn/lib/base-ui/collapsible.js +0 -264
- package/dist/shadcn/lib/base-ui/context-menu.d.ts +0 -2213
- package/dist/shadcn/lib/base-ui/context-menu.js +0 -323
- package/dist/shadcn/lib/base-ui/dialog.d.ts +0 -1448
- package/dist/shadcn/lib/base-ui/dialog.js +0 -79
- package/dist/shadcn/lib/base-ui/input.d.ts +0 -506
- package/dist/shadcn/lib/base-ui/input.js +0 -1027
- package/dist/shadcn/lib/base-ui/menu.d.ts +0 -2275
- package/dist/shadcn/lib/base-ui/menu.js +0 -60
- package/dist/shadcn/lib/base-ui/menubar.d.ts +0 -48
- package/dist/shadcn/lib/base-ui/menubar.js +0 -156
- package/dist/shadcn/lib/base-ui/merge-props.d.ts +0 -70
- package/dist/shadcn/lib/base-ui/merge-props.js +0 -15
- package/dist/shadcn/lib/base-ui/navigation-menu.d.ts +0 -825
- package/dist/shadcn/lib/base-ui/navigation-menu.js +0 -1849
- package/dist/shadcn/lib/base-ui/popover.d.ts +0 -1743
- package/dist/shadcn/lib/base-ui/popover.js +0 -1089
- package/dist/shadcn/lib/base-ui/preview-card.d.ts +0 -1608
- package/dist/shadcn/lib/base-ui/preview-card.js +0 -919
- package/dist/shadcn/lib/base-ui/progress.d.ts +0 -172
- package/dist/shadcn/lib/base-ui/progress.js +0 -272
- package/dist/shadcn/lib/base-ui/radio-group.d.ts +0 -260
- package/dist/shadcn/lib/base-ui/radio-group.js +0 -239
- package/dist/shadcn/lib/base-ui/radio.d.ts +0 -176
- package/dist/shadcn/lib/base-ui/radio.js +0 -387
- package/dist/shadcn/lib/base-ui/scroll-area.d.ts +0 -241
- package/dist/shadcn/lib/base-ui/scroll-area.js +0 -1055
- package/dist/shadcn/lib/base-ui/select.d.ts +0 -1266
- package/dist/shadcn/lib/base-ui/select.js +0 -2450
- package/dist/shadcn/lib/base-ui/separator.d.ts +0 -76
- package/dist/shadcn/lib/base-ui/separator.js +0 -11
- package/dist/shadcn/lib/base-ui/slider.d.ts +0 -551
- package/dist/shadcn/lib/base-ui/slider.js +0 -1583
- package/dist/shadcn/lib/base-ui/switch.d.ts +0 -313
- package/dist/shadcn/lib/base-ui/switch.js +0 -326
- package/dist/shadcn/lib/base-ui/tabs.d.ts +0 -406
- package/dist/shadcn/lib/base-ui/tabs.js +0 -915
- package/dist/shadcn/lib/base-ui/toggle-group.d.ts +0 -235
- package/dist/shadcn/lib/base-ui/toggle-group.js +0 -145
- package/dist/shadcn/lib/base-ui/toggle.d.ts +0 -224
- package/dist/shadcn/lib/base-ui/toggle.js +0 -127
- package/dist/shadcn/lib/base-ui/tooltip.d.ts +0 -1656
- package/dist/shadcn/lib/base-ui/tooltip.js +0 -920
- package/dist/shadcn/lib/base-ui/use-render.d.ts +0 -87
- package/dist/shadcn/lib/base-ui/use-render.js +0 -15
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
# CHANGELOG
|
|
2
2
|
|
|
3
|
+
4.1.0
|
|
4
|
+
|
|
5
|
+
Add menu/select typeahead
|
|
6
|
+
Fix popover focus management
|
|
7
|
+
Fix navigation-menu keyboard entry
|
|
8
|
+
Fix Command combobox ARIA
|
|
9
|
+
Fix tabs first tab-stop
|
|
10
|
+
Fix radio single tab-stop
|
|
11
|
+
Set menu available-height
|
|
12
|
+
Fix sheet/drawer exit animations
|
|
13
|
+
Reset floating position on close
|
|
14
|
+
Add a11y regression tests
|
|
15
|
+
|
|
16
|
+
4.0.0
|
|
17
|
+
|
|
18
|
+
Self-contained ui/ component tier (47 components, zero base-ui)
|
|
19
|
+
Remove vendored base-ui bundle (~2MB / 31k lines)
|
|
20
|
+
Native dialog for dialog/alert-dialog/sheet/drawer
|
|
21
|
+
In-house floating positioner, dismiss, presence, focus
|
|
22
|
+
shadcn/ui/* now linker shims re-exporting ui/*
|
|
23
|
+
render= and nativeButton kept as asChild compat
|
|
24
|
+
SelectValue renders the real selected label
|
|
25
|
+
Fix Slot handler composition, Button type, Escape stacking
|
|
26
|
+
Fix avatar fallback, separator role, tabs ids, form integration
|
|
27
|
+
|
|
3
28
|
3.12.0
|
|
4
29
|
|
|
5
30
|
Fix asChild button
|
package/README.md
CHANGED
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
React component library for rapid application development. Built with TypeScript, TailwindCSS v4, and shadcn/ui.
|
|
4
4
|
|
|
5
|
-
**Zero runtime npm dependencies.** Only React, React-DOM, and React Router are peer-resolved. Everything else —
|
|
5
|
+
**Zero runtime npm dependencies.** Only React, React-DOM, and React Router are peer-resolved. Everything else — the 47 UI components, lucide icons, tailwind-merge, drag physics, command palette, date picker, theme provider — is authored, ported, or recreated inside the repo.
|
|
6
|
+
|
|
7
|
+
**Self-contained components (v4.0).** Every component is now hand-written with no primitive framework underneath — the previously-vendored `@base-ui/react` bundle (~31k lines) is gone. Floating positioning, focus trapping, dismiss layers, and animations are small in-house hooks; modals use the native `<dialog>` element. The legacy `shadcn/ui/*` import paths still work — they re-export the new `ui/*` components — so existing apps need no changes.
|
|
6
8
|
|
|
7
9
|
**TypeScript with full type declarations.** Source is TypeScript, compiled to plain JavaScript + `.d.ts` in `dist/` (`npm run build`). JavaScript apps consume the compiled JS exactly as before — import paths are unchanged — and TypeScript apps get real types for every export (`SkateboardConstants`, `User`, component props, `VariantProps`, typed icons).
|
|
8
10
|
|
|
@@ -37,7 +39,7 @@ That's it! You get routing, auth, layout, landing page, settings, and payments.
|
|
|
37
39
|
|
|
38
40
|
## Dependency Footprint
|
|
39
41
|
|
|
40
|
-
Across the v3.x series, every npm runtime dep was either vendored, recreated, or dropped. v3.5 finished the job by vendoring `@base-ui/react
|
|
42
|
+
Across the v3.x series, every npm runtime dep was either vendored, recreated, or dropped. v3.5 finished the job by vendoring `@base-ui/react`; **v4.0 removes that vendored bundle entirely** by rewriting every component to be self-contained.
|
|
41
43
|
|
|
42
44
|
| | Hard deps | Optional peer deps | Total |
|
|
43
45
|
|---|---|---|---|
|
|
@@ -48,7 +50,7 @@ Across the v3.x series, every npm runtime dep was either vendored, recreated, or
|
|
|
48
50
|
| v3.3 | 2 | 0 | 2 |
|
|
49
51
|
| v3.4 | 1 | 0 | 1 |
|
|
50
52
|
| v3.5 | 0 | 0 | 0 |
|
|
51
|
-
| **Now (
|
|
53
|
+
| **Now (v4.0+)** | **0** | **0** | **0** |
|
|
52
54
|
|
|
53
55
|
v3.10 converts the package to TypeScript — compiled JS + `.d.ts` ship in `dist/`; the dependency count is unchanged (`typescript` is a devDependency only).
|
|
54
56
|
|
|
@@ -60,15 +62,17 @@ Pre-built copies live in this repo so consumers don't pull them from npm. Refres
|
|
|
60
62
|
|
|
61
63
|
| Source | Lives at | Refresh script |
|
|
62
64
|
|---|---|---|
|
|
63
|
-
| `@base-ui/react` + 5 transitive deps (`@floating-ui/react-dom`, `@floating-ui/utils`, `@babel/runtime`, `use-sync-external-store`, `@base-ui/utils`) | `shadcn/lib/base-ui/*.js` + `*.d.ts` (28 entry points + shared chunks) | `node scripts/vendor-base-ui.js` (requires `bun`; bump `BASE_UI_VERSION`) |
|
|
64
65
|
| `lucide` icons (1700+) | `icons/*.tsx` | `node scripts/vendor-icons.js` (bump `LUCIDE_TAG`) |
|
|
65
66
|
| `tailwind-merge` | `shadcn/lib/tailwind-merge.js` | `node scripts/vendor-tailwind-merge.js` (bump `TM_VERSION`) |
|
|
66
67
|
|
|
68
|
+
`@base-ui/react` was vendored in v3.5 and **removed in v4.0** — the 47 components are now self-contained (see _Self-contained components_ above).
|
|
69
|
+
|
|
67
70
|
### Ported / recreated / inlined
|
|
68
71
|
|
|
69
72
|
| Replaces | Lives at | Approach |
|
|
70
73
|
|---|---|---|
|
|
71
|
-
| `
|
|
74
|
+
| `@base-ui/react` (behavior) | `ui/*.tsx` + `ui/{use-floating,use-dismiss,use-presence,use-controllable-state,slot,portal}.tsx` | rewritten — small in-house hooks for positioning, dismiss, presence, focus; native `<dialog>` for modals |
|
|
75
|
+
| `vaul` (drag gesture) | `ui/drawer.tsx` | ported — drag math copied from vaul `src/index.tsx` (MIT, Emil Kowalski) on a native `<dialog>` shell |
|
|
72
76
|
| `cmdk` | `components/core/Command.tsx` | rewritten drop-in |
|
|
73
77
|
| `react-day-picker` | `components/core/Calendar.tsx` | rewritten drop-in |
|
|
74
78
|
| `next-themes` | `components/core/ThemeProvider.tsx` | rewritten drop-in |
|
|
@@ -85,6 +89,7 @@ Pre-built copies live in this repo so consumers don't pull them from npm. Refres
|
|
|
85
89
|
| v3.3 | `Chart` | unused; consumers can install `recharts` directly |
|
|
86
90
|
| v3.4 | `vaul` | drag physics ported; `Drawer` rebuilt on base-ui Dialog |
|
|
87
91
|
| v3.5 | `@base-ui/react` | vendored; see table above |
|
|
92
|
+
| v4.0 | `@base-ui/react` (vendored bundle) | removed; components rewritten self-contained on `ui/*` |
|
|
88
93
|
|
|
89
94
|
## Migrating to 3.0
|
|
90
95
|
|
|
@@ -118,7 +123,6 @@ Each vendored library has a script that pins a version, fetches the upstream rel
|
|
|
118
123
|
|
|
119
124
|
| Library | Bump | Command | Host requirement |
|
|
120
125
|
|---|---|---|---|
|
|
121
|
-
| `@base-ui/react` | `BASE_UI_VERSION` in `scripts/vendor-base-ui.js` | `node scripts/vendor-base-ui.js` | [bun](https://bun.sh) |
|
|
122
126
|
| `lucide` icons | `LUCIDE_TAG` in `scripts/vendor-icons.js` | `node scripts/vendor-icons.js` | Node |
|
|
123
127
|
| `tailwind-merge` | `TM_VERSION` in `scripts/vendor-tailwind-merge.js` | `node scripts/vendor-tailwind-merge.js` | Node |
|
|
124
128
|
|
|
@@ -1230,56 +1234,58 @@ Import base theme and override as needed:
|
|
|
1230
1234
|
|
|
1231
1235
|
Dark mode is automatic via CSS custom properties and the in-house `ThemeProvider` (`components/core/ThemeProvider.tsx`).
|
|
1232
1236
|
|
|
1233
|
-
##
|
|
1237
|
+
## Components
|
|
1238
|
+
|
|
1239
|
+
47 self-contained components available at `@stevederico/skateboard-ui/ui/*`. The legacy `@stevederico/skateboard-ui/ui/*` paths still resolve to the same components (re-export shims), so existing imports keep working.
|
|
1234
1240
|
|
|
1235
|
-
|
|
1241
|
+
Components follow the shadcn API. `asChild` renders the styling onto a single child element; the old base-ui `render={<El/>}` / `nativeButton` props are still accepted for backward compatibility.
|
|
1236
1242
|
|
|
1237
1243
|
```javascript
|
|
1238
|
-
import { Button } from '@stevederico/skateboard-ui/
|
|
1239
|
-
import { Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter, CardAction } from '@stevederico/skateboard-ui/
|
|
1240
|
-
import { Input } from '@stevederico/skateboard-ui/
|
|
1241
|
-
import { Label } from '@stevederico/skateboard-ui/
|
|
1242
|
-
import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription } from '@stevederico/skateboard-ui/
|
|
1243
|
-
import { Avatar, AvatarFallback, AvatarImage } from '@stevederico/skateboard-ui/
|
|
1244
|
-
import { Badge } from '@stevederico/skateboard-ui/
|
|
1245
|
-
import { Separator } from '@stevederico/skateboard-ui/
|
|
1246
|
-
import { ScrollArea } from '@stevederico/skateboard-ui/
|
|
1247
|
-
import { Skeleton } from '@stevederico/skateboard-ui/
|
|
1248
|
-
import { Alert, AlertDescription, AlertTitle } from '@stevederico/skateboard-ui/
|
|
1249
|
-
import { Progress } from '@stevederico/skateboard-ui/
|
|
1250
|
-
import { Switch } from '@stevederico/skateboard-ui/
|
|
1251
|
-
import { Checkbox } from '@stevederico/skateboard-ui/
|
|
1252
|
-
import { Textarea } from '@stevederico/skateboard-ui/
|
|
1253
|
-
import { Tooltip, TooltipContent, TooltipTrigger } from '@stevederico/skateboard-ui/
|
|
1244
|
+
import { Button } from '@stevederico/skateboard-ui/ui/button';
|
|
1245
|
+
import { Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter, CardAction } from '@stevederico/skateboard-ui/ui/card';
|
|
1246
|
+
import { Input } from '@stevederico/skateboard-ui/ui/input';
|
|
1247
|
+
import { Label } from '@stevederico/skateboard-ui/ui/label';
|
|
1248
|
+
import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription } from '@stevederico/skateboard-ui/ui/dialog';
|
|
1249
|
+
import { Avatar, AvatarFallback, AvatarImage } from '@stevederico/skateboard-ui/ui/avatar';
|
|
1250
|
+
import { Badge } from '@stevederico/skateboard-ui/ui/badge';
|
|
1251
|
+
import { Separator } from '@stevederico/skateboard-ui/ui/separator';
|
|
1252
|
+
import { ScrollArea } from '@stevederico/skateboard-ui/ui/scroll-area';
|
|
1253
|
+
import { Skeleton } from '@stevederico/skateboard-ui/ui/skeleton';
|
|
1254
|
+
import { Alert, AlertDescription, AlertTitle } from '@stevederico/skateboard-ui/ui/alert';
|
|
1255
|
+
import { Progress } from '@stevederico/skateboard-ui/ui/progress';
|
|
1256
|
+
import { Switch } from '@stevederico/skateboard-ui/ui/switch';
|
|
1257
|
+
import { Checkbox } from '@stevederico/skateboard-ui/ui/checkbox';
|
|
1258
|
+
import { Textarea } from '@stevederico/skateboard-ui/ui/textarea';
|
|
1259
|
+
import { Tooltip, TooltipContent, TooltipTrigger } from '@stevederico/skateboard-ui/ui/tooltip';
|
|
1254
1260
|
```
|
|
1255
1261
|
|
|
1256
1262
|
```javascript
|
|
1257
1263
|
import {
|
|
1258
1264
|
Select, SelectContent, SelectItem, SelectTrigger, SelectValue,
|
|
1259
|
-
} from '@stevederico/skateboard-ui/
|
|
1265
|
+
} from '@stevederico/skateboard-ui/ui/select';
|
|
1260
1266
|
|
|
1261
1267
|
import {
|
|
1262
1268
|
DropdownMenu, DropdownMenuContent, DropdownMenuItem,
|
|
1263
1269
|
DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger,
|
|
1264
|
-
} from '@stevederico/skateboard-ui/
|
|
1270
|
+
} from '@stevederico/skateboard-ui/ui/dropdown-menu';
|
|
1265
1271
|
|
|
1266
1272
|
import {
|
|
1267
1273
|
AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent,
|
|
1268
1274
|
AlertDialogDescription, AlertDialogFooter, AlertDialogHeader,
|
|
1269
1275
|
AlertDialogTitle, AlertDialogTrigger,
|
|
1270
|
-
} from '@stevederico/skateboard-ui/
|
|
1276
|
+
} from '@stevederico/skateboard-ui/ui/alert-dialog';
|
|
1271
1277
|
|
|
1272
1278
|
import {
|
|
1273
1279
|
Accordion, AccordionContent, AccordionItem, AccordionTrigger,
|
|
1274
|
-
} from '@stevederico/skateboard-ui/
|
|
1280
|
+
} from '@stevederico/skateboard-ui/ui/accordion';
|
|
1275
1281
|
|
|
1276
1282
|
import {
|
|
1277
1283
|
Table, TableBody, TableCell, TableHead, TableHeader, TableRow,
|
|
1278
|
-
} from '@stevederico/skateboard-ui/
|
|
1284
|
+
} from '@stevederico/skateboard-ui/ui/table';
|
|
1279
1285
|
|
|
1280
1286
|
import {
|
|
1281
1287
|
Tabs, TabsContent, TabsList, TabsTrigger,
|
|
1282
|
-
} from '@stevederico/skateboard-ui/
|
|
1288
|
+
} from '@stevederico/skateboard-ui/ui/tabs';
|
|
1283
1289
|
```
|
|
1284
1290
|
|
|
1285
1291
|
### Utilities
|
|
@@ -1307,7 +1313,7 @@ All components support dark mode automatically and accept a `className` prop for
|
|
|
1307
1313
|
|
|
1308
1314
|
### Hard dependencies
|
|
1309
1315
|
|
|
1310
|
-
None. `@base-ui/react`
|
|
1316
|
+
None. As of v4.0 the components are self-contained — `@base-ui/react` is no longer vendored or required. See the dep-count table near the top of this README for the full history.
|
|
1311
1317
|
|
|
1312
1318
|
## Repository
|
|
1313
1319
|
|
|
@@ -10,6 +10,9 @@ function useCommand() {
|
|
|
10
10
|
export function Command({ className, children, ...props }) {
|
|
11
11
|
const [filter, setFilter] = useState('');
|
|
12
12
|
const [selectedId, setSelectedId] = useState(null);
|
|
13
|
+
// Stable base id shared by the listbox container and every option, so the
|
|
14
|
+
// input's aria-controls / aria-activedescendant can reference them.
|
|
15
|
+
const listboxId = useId();
|
|
13
16
|
const itemsRef = useRef(new Map()); // id -> { value, onSelect, disabled }
|
|
14
17
|
const register = useCallback((id, meta) => {
|
|
15
18
|
itemsRef.current.set(id, meta);
|
|
@@ -55,12 +58,18 @@ export function Command({ className, children, ...props }) {
|
|
|
55
58
|
}, [selectedId]);
|
|
56
59
|
const isVisible = useCallback((id) => visibleIds().includes(id), [visibleIds]);
|
|
57
60
|
const visibleCount = visibleIds().length;
|
|
58
|
-
const value = useMemo(() => ({ filter, setFilter, selectedId, setSelectedId, register, unregister, isVisible, visibleCount, move, triggerSelected }), [filter, selectedId, register, unregister, isVisible, visibleCount, move, triggerSelected]);
|
|
59
|
-
return (_jsx(CommandContext.Provider, { value: value, children: _jsx("div", {
|
|
61
|
+
const value = useMemo(() => ({ filter, setFilter, selectedId, setSelectedId, listboxId, register, unregister, isVisible, visibleCount, move, triggerSelected }), [filter, selectedId, listboxId, register, unregister, isVisible, visibleCount, move, triggerSelected]);
|
|
62
|
+
return (_jsx(CommandContext.Provider, { value: value, children: _jsx("div", { className: className, ...props, children: children }) }));
|
|
60
63
|
}
|
|
61
64
|
export function CommandInput({ className, placeholder, value: controlledValue, onValueChange, ...props }) {
|
|
62
|
-
const { filter, setFilter, move, triggerSelected } = useCommand();
|
|
65
|
+
const { filter, setFilter, move, triggerSelected, selectedId, listboxId, visibleCount } = useCommand();
|
|
63
66
|
const value = controlledValue ?? filter;
|
|
67
|
+
// The listbox is considered "shown"/expanded whenever it has visible options.
|
|
68
|
+
const isExpanded = visibleCount > 0;
|
|
69
|
+
// aria-activedescendant points at the DOM id of the active option (selectedId
|
|
70
|
+
// is rendered verbatim as each CommandItem's id). Undefined when nothing is
|
|
71
|
+
// active, so screen readers don't reference a missing element.
|
|
72
|
+
const activeDescendant = isExpanded && selectedId ? selectedId : undefined;
|
|
64
73
|
const handleChange = (e) => {
|
|
65
74
|
const v = e.target.value;
|
|
66
75
|
setFilter(v);
|
|
@@ -80,10 +89,16 @@ export function CommandInput({ className, placeholder, value: controlledValue, o
|
|
|
80
89
|
triggerSelected();
|
|
81
90
|
}
|
|
82
91
|
};
|
|
83
|
-
return (
|
|
92
|
+
return (
|
|
93
|
+
// The input is the combobox. Real DOM focus stays here during arrow
|
|
94
|
+
// navigation; only aria-activedescendant moves so screen readers announce
|
|
95
|
+
// the active option (WAI-ARIA combobox + activedescendant pattern).
|
|
96
|
+
_jsx("input", { role: "combobox", "aria-autocomplete": "list", "aria-expanded": isExpanded, "aria-controls": listboxId, "aria-activedescendant": activeDescendant, autoComplete: "off", autoCorrect: "off", spellCheck: "false", value: value, onChange: handleChange, onKeyDown: handleKeyDown, placeholder: placeholder, className: className, ...props }));
|
|
84
97
|
}
|
|
85
98
|
export function CommandList({ className, children, ...props }) {
|
|
86
|
-
|
|
99
|
+
const { listboxId } = useCommand();
|
|
100
|
+
// id matches the input's aria-controls so the combobox owns this listbox.
|
|
101
|
+
return (_jsx("div", { role: "listbox", id: listboxId, className: className, ...props, children: children }));
|
|
87
102
|
}
|
|
88
103
|
export function CommandEmpty({ className, children, ...props }) {
|
|
89
104
|
const { visibleCount } = useCommand();
|
|
@@ -95,23 +110,34 @@ export function CommandGroup({ className, heading, children, ...props }) {
|
|
|
95
110
|
return (_jsxs("div", { role: "group", className: className, ...props, children: [heading && (_jsx("div", { "cmdk-group-heading": "", role: "presentation", children: heading })), children] }));
|
|
96
111
|
}
|
|
97
112
|
export function CommandItem({ className, value, onSelect, disabled = false, children, ...props }) {
|
|
113
|
+
// This id is both the value tracked in selectedId and the option's DOM id,
|
|
114
|
+
// which is what the input's aria-activedescendant references.
|
|
98
115
|
const id = useId();
|
|
99
116
|
const { register, unregister, selectedId, setSelectedId, isVisible } = useCommand();
|
|
117
|
+
const optionRef = useRef(null);
|
|
100
118
|
// Resolve a usable value string — fall back to children text if no value prop
|
|
101
119
|
const resolvedValue = value ?? (typeof children === 'string' ? children : id);
|
|
102
120
|
useEffect(() => {
|
|
103
121
|
register(id, { value: String(resolvedValue), onSelect, disabled });
|
|
104
122
|
return () => unregister(id);
|
|
105
123
|
}, [id, resolvedValue, onSelect, disabled, register, unregister]);
|
|
124
|
+
const isSelected = selectedId === id;
|
|
125
|
+
// Focus stays on the input under the activedescendant model, so scroll the
|
|
126
|
+
// active option into view manually when it becomes active.
|
|
127
|
+
useEffect(() => {
|
|
128
|
+
if (isSelected)
|
|
129
|
+
optionRef.current?.scrollIntoView({ block: 'nearest' });
|
|
130
|
+
}, [isSelected]);
|
|
106
131
|
if (!isVisible(id))
|
|
107
132
|
return null;
|
|
108
|
-
const isSelected = selectedId === id;
|
|
109
133
|
const handleClick = () => {
|
|
110
134
|
if (disabled)
|
|
111
135
|
return;
|
|
112
136
|
onSelect?.(String(resolvedValue));
|
|
113
137
|
};
|
|
114
|
-
return (_jsx("div", {
|
|
138
|
+
return (_jsx("div", {
|
|
139
|
+
// Stable DOM id targeted by aria-activedescendant when this option is active.
|
|
140
|
+
id: id, ref: optionRef, role: "option", "aria-selected": isSelected, "data-selected": isSelected ? 'true' : undefined, "data-disabled": disabled ? 'true' : undefined, onMouseEnter: () => !disabled && setSelectedId(id), onClick: handleClick, className: className, ...props, children: children }));
|
|
115
141
|
}
|
|
116
142
|
export function CommandSeparator({ className, ...props }) {
|
|
117
143
|
return _jsx("div", { role: "separator", className: className, ...props });
|
|
@@ -1,6 +1 @@
|
|
|
1
|
-
|
|
2
|
-
declare function Accordion({ className, ...props }: AccordionPrimitive.Root.Props): import("react").JSX.Element;
|
|
3
|
-
declare function AccordionItem({ className, ...props }: AccordionPrimitive.Item.Props): import("react").JSX.Element;
|
|
4
|
-
declare function AccordionTrigger({ className, children, ...props }: AccordionPrimitive.Trigger.Props): import("react").JSX.Element;
|
|
5
|
-
declare function AccordionContent({ className, children, ...props }: AccordionPrimitive.Panel.Props): import("react").JSX.Element;
|
|
6
|
-
export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };
|
|
1
|
+
export * from "../../ui/accordion.js";
|
|
@@ -1,17 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import { ChevronDownIcon, ChevronUpIcon } from "../../icons/index.js";
|
|
5
|
-
function Accordion({ className, ...props }) {
|
|
6
|
-
return (_jsx(AccordionPrimitive.Root, { "data-slot": "accordion", className: cn("flex w-full flex-col", className), ...props }));
|
|
7
|
-
}
|
|
8
|
-
function AccordionItem({ className, ...props }) {
|
|
9
|
-
return (_jsx(AccordionPrimitive.Item, { "data-slot": "accordion-item", className: cn("not-last:border-b", className), ...props }));
|
|
10
|
-
}
|
|
11
|
-
function AccordionTrigger({ className, children, ...props }) {
|
|
12
|
-
return (_jsx(AccordionPrimitive.Header, { className: "flex", children: _jsxs(AccordionPrimitive.Trigger, { "data-slot": "accordion-trigger", className: cn("cursor-pointer group/accordion-trigger relative flex flex-1 items-start justify-between rounded-md border border-transparent py-4 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:after:border-ring aria-disabled:pointer-events-none aria-disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground", className), ...props, children: [children, _jsx(ChevronDownIcon, {}), _jsx(ChevronUpIcon, {})] }) }));
|
|
13
|
-
}
|
|
14
|
-
function AccordionContent({ className, children, ...props }) {
|
|
15
|
-
return (_jsx(AccordionPrimitive.Panel, { "data-slot": "accordion-content", className: "overflow-hidden text-sm data-open:animate-accordion-down data-closed:animate-accordion-up", ...props, children: _jsx("div", { className: cn("h-(--accordion-panel-height) pt-0 pb-4 data-ending-style:h-0 data-starting-style:h-0 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4", className), children: children }) }));
|
|
16
|
-
}
|
|
17
|
-
export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };
|
|
1
|
+
// Linker shim: this path now re-exports the self-contained component from
|
|
2
|
+
// `ui/accordion`. The legacy base-ui implementation was removed in 4.0.0.
|
|
3
|
+
export * from "../../ui/accordion.js";
|
|
@@ -1,18 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import { AlertDialog as AlertDialogPrimitive } from "../lib/base-ui/alert-dialog.js";
|
|
3
|
-
import { Button } from "./button.js";
|
|
4
|
-
declare function AlertDialog({ ...props }: AlertDialogPrimitive.Root.Props): React.JSX.Element;
|
|
5
|
-
declare function AlertDialogTrigger({ ...props }: AlertDialogPrimitive.Trigger.Props): React.JSX.Element;
|
|
6
|
-
declare function AlertDialogPortal({ ...props }: AlertDialogPrimitive.Portal.Props): React.JSX.Element;
|
|
7
|
-
declare function AlertDialogOverlay({ className, ...props }: AlertDialogPrimitive.Backdrop.Props): React.JSX.Element;
|
|
8
|
-
declare function AlertDialogContent({ className, size, ...props }: AlertDialogPrimitive.Popup.Props & {
|
|
9
|
-
size?: "default" | "sm";
|
|
10
|
-
}): React.JSX.Element;
|
|
11
|
-
declare function AlertDialogHeader({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
12
|
-
declare function AlertDialogFooter({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
13
|
-
declare function AlertDialogMedia({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
14
|
-
declare function AlertDialogTitle({ className, ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Title>): React.JSX.Element;
|
|
15
|
-
declare function AlertDialogDescription({ className, ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Description>): React.JSX.Element;
|
|
16
|
-
declare function AlertDialogAction({ className, ...props }: React.ComponentProps<typeof Button>): React.JSX.Element;
|
|
17
|
-
declare function AlertDialogCancel({ className, variant, size, ...props }: AlertDialogPrimitive.Close.Props & Pick<React.ComponentProps<typeof Button>, "variant" | "size">): React.JSX.Element;
|
|
18
|
-
export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, };
|
|
1
|
+
export * from "../../ui/alert-dialog.js";
|
|
@@ -1,43 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import { AlertDialog as AlertDialogPrimitive } from "../lib/base-ui/alert-dialog.js";
|
|
5
|
-
import { cn } from "../lib/utils.js";
|
|
6
|
-
import { Button } from "./button.js";
|
|
7
|
-
function AlertDialog({ ...props }) {
|
|
8
|
-
return _jsx(AlertDialogPrimitive.Root, { "data-slot": "alert-dialog", ...props });
|
|
9
|
-
}
|
|
10
|
-
function AlertDialogTrigger({ ...props }) {
|
|
11
|
-
return (_jsx(AlertDialogPrimitive.Trigger, { "data-slot": "alert-dialog-trigger", className: "cursor-pointer", ...props }));
|
|
12
|
-
}
|
|
13
|
-
function AlertDialogPortal({ ...props }) {
|
|
14
|
-
return (_jsx(AlertDialogPrimitive.Portal, { "data-slot": "alert-dialog-portal", ...props }));
|
|
15
|
-
}
|
|
16
|
-
function AlertDialogOverlay({ className, ...props }) {
|
|
17
|
-
return (_jsx(AlertDialogPrimitive.Backdrop, { "data-slot": "alert-dialog-overlay", className: cn("fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0", className), ...props }));
|
|
18
|
-
}
|
|
19
|
-
function AlertDialogContent({ className, size = "default", ...props }) {
|
|
20
|
-
return (_jsxs(AlertDialogPortal, { children: [_jsx(AlertDialogOverlay, {}), _jsx(AlertDialogPrimitive.Popup, { "data-slot": "alert-dialog-content", "data-size": size, className: cn("group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-6 rounded-xl bg-background p-6 text-foreground ring-1 ring-foreground/10 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-lg data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", className), ...props })] }));
|
|
21
|
-
}
|
|
22
|
-
function AlertDialogHeader({ className, ...props }) {
|
|
23
|
-
return (_jsx("div", { "data-slot": "alert-dialog-header", className: cn("grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-6 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]", className), ...props }));
|
|
24
|
-
}
|
|
25
|
-
function AlertDialogFooter({ className, ...props }) {
|
|
26
|
-
return (_jsx("div", { "data-slot": "alert-dialog-footer", className: cn("flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end", className), ...props }));
|
|
27
|
-
}
|
|
28
|
-
function AlertDialogMedia({ className, ...props }) {
|
|
29
|
-
return (_jsx("div", { "data-slot": "alert-dialog-media", className: cn("mb-2 inline-flex size-16 items-center justify-center rounded-md bg-muted sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-8", className), ...props }));
|
|
30
|
-
}
|
|
31
|
-
function AlertDialogTitle({ className, ...props }) {
|
|
32
|
-
return (_jsx(AlertDialogPrimitive.Title, { "data-slot": "alert-dialog-title", className: cn("text-lg font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2", className), ...props }));
|
|
33
|
-
}
|
|
34
|
-
function AlertDialogDescription({ className, ...props }) {
|
|
35
|
-
return (_jsx(AlertDialogPrimitive.Description, { "data-slot": "alert-dialog-description", className: cn("text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground", className), ...props }));
|
|
36
|
-
}
|
|
37
|
-
function AlertDialogAction({ className, ...props }) {
|
|
38
|
-
return (_jsx(Button, { "data-slot": "alert-dialog-action", className: cn(className), ...props }));
|
|
39
|
-
}
|
|
40
|
-
function AlertDialogCancel({ className, variant = "outline", size = "default", ...props }) {
|
|
41
|
-
return (_jsx(AlertDialogPrimitive.Close, { "data-slot": "alert-dialog-cancel", className: cn(className), render: _jsx(Button, { variant: variant, size: size }), ...props }));
|
|
42
|
-
}
|
|
43
|
-
export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, };
|
|
1
|
+
// Linker shim: this path now re-exports the self-contained component from
|
|
2
|
+
// `ui/alert-dialog`. The legacy base-ui implementation was removed in 4.0.0.
|
|
3
|
+
export * from "../../ui/alert-dialog.js";
|
|
@@ -1,13 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import { type VariantProps } from "../lib/cva.js";
|
|
3
|
-
declare const alertVariants: (props?: import("../lib/cva.js").CvaProps<{
|
|
4
|
-
variant: {
|
|
5
|
-
default: string;
|
|
6
|
-
destructive: string;
|
|
7
|
-
};
|
|
8
|
-
}> | undefined) => string;
|
|
9
|
-
declare function Alert({ className, variant, ...props }: React.ComponentProps<"div"> & VariantProps<typeof alertVariants>): React.JSX.Element;
|
|
10
|
-
declare function AlertTitle({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
11
|
-
declare function AlertDescription({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
12
|
-
declare function AlertAction({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
13
|
-
export { Alert, AlertTitle, AlertDescription, AlertAction };
|
|
1
|
+
export * from "../../ui/alert.js";
|
package/dist/shadcn/ui/alert.js
CHANGED
|
@@ -1,28 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import { cn } from "../lib/utils.js";
|
|
5
|
-
const alertVariants = cva("group/alert relative grid w-full gap-0.5 rounded-lg border px-4 py-3 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2.5 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4", {
|
|
6
|
-
variants: {
|
|
7
|
-
variant: {
|
|
8
|
-
default: "bg-card text-card-foreground",
|
|
9
|
-
destructive: "bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current",
|
|
10
|
-
},
|
|
11
|
-
},
|
|
12
|
-
defaultVariants: {
|
|
13
|
-
variant: "default",
|
|
14
|
-
},
|
|
15
|
-
});
|
|
16
|
-
function Alert({ className, variant, ...props }) {
|
|
17
|
-
return (_jsx("div", { "data-slot": "alert", role: "alert", className: cn(alertVariants({ variant }), className), ...props }));
|
|
18
|
-
}
|
|
19
|
-
function AlertTitle({ className, ...props }) {
|
|
20
|
-
return (_jsx("div", { "data-slot": "alert-title", className: cn("font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground", className), ...props }));
|
|
21
|
-
}
|
|
22
|
-
function AlertDescription({ className, ...props }) {
|
|
23
|
-
return (_jsx("div", { "data-slot": "alert-description", className: cn("text-sm text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4", className), ...props }));
|
|
24
|
-
}
|
|
25
|
-
function AlertAction({ className, ...props }) {
|
|
26
|
-
return (_jsx("div", { "data-slot": "alert-action", className: cn("absolute top-2.5 right-3", className), ...props }));
|
|
27
|
-
}
|
|
28
|
-
export { Alert, AlertTitle, AlertDescription, AlertAction };
|
|
1
|
+
// Linker shim: this path now re-exports the self-contained component from
|
|
2
|
+
// `ui/alert`. The legacy base-ui implementation was removed in 4.0.0.
|
|
3
|
+
export * from "../../ui/alert.js";
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
return (_jsx("div", { "data-slot": "aspect-ratio", style: {
|
|
5
|
-
"--ratio": ratio,
|
|
6
|
-
}, className: cn("relative aspect-(--ratio)", className), ...props }));
|
|
7
|
-
}
|
|
8
|
-
export { AspectRatio };
|
|
1
|
+
// Linker shim: this path now re-exports the self-contained component from
|
|
2
|
+
// `ui/aspect-ratio`. The legacy base-ui implementation was removed in 4.0.0.
|
|
3
|
+
export * from "../../ui/aspect-ratio.js";
|
|
@@ -1,11 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import { Avatar as AvatarPrimitive } from "../lib/base-ui/avatar.js";
|
|
3
|
-
declare function Avatar({ className, size, ...props }: AvatarPrimitive.Root.Props & {
|
|
4
|
-
size?: "default" | "sm" | "lg";
|
|
5
|
-
}): React.JSX.Element;
|
|
6
|
-
declare function AvatarImage({ className, ...props }: AvatarPrimitive.Image.Props): React.JSX.Element;
|
|
7
|
-
declare function AvatarFallback({ className, ...props }: AvatarPrimitive.Fallback.Props): React.JSX.Element;
|
|
8
|
-
declare function AvatarBadge({ className, ...props }: React.ComponentProps<"span">): React.JSX.Element;
|
|
9
|
-
declare function AvatarGroup({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
10
|
-
declare function AvatarGroupCount({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
11
|
-
export { Avatar, AvatarImage, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarBadge, };
|
|
1
|
+
export * from "../../ui/avatar.js";
|
package/dist/shadcn/ui/avatar.js
CHANGED
|
@@ -1,24 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import { Avatar as AvatarPrimitive } from "../lib/base-ui/avatar.js";
|
|
5
|
-
import { cn } from "../lib/utils.js";
|
|
6
|
-
function Avatar({ className, size = "default", ...props }) {
|
|
7
|
-
return (_jsx(AvatarPrimitive.Root, { "data-slot": "avatar", "data-size": size, className: cn("group/avatar relative flex size-8 shrink-0 rounded-full select-none after:absolute after:inset-0 after:rounded-full after:border after:border-border after:mix-blend-darken data-[size=lg]:size-10 data-[size=sm]:size-6 dark:after:mix-blend-lighten", className), ...props }));
|
|
8
|
-
}
|
|
9
|
-
function AvatarImage({ className, ...props }) {
|
|
10
|
-
return (_jsx(AvatarPrimitive.Image, { "data-slot": "avatar-image", className: cn("aspect-square size-full rounded-full object-cover", className), ...props }));
|
|
11
|
-
}
|
|
12
|
-
function AvatarFallback({ className, ...props }) {
|
|
13
|
-
return (_jsx(AvatarPrimitive.Fallback, { "data-slot": "avatar-fallback", className: cn("flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs", className), ...props }));
|
|
14
|
-
}
|
|
15
|
-
function AvatarBadge({ className, ...props }) {
|
|
16
|
-
return (_jsx("span", { "data-slot": "avatar-badge", className: cn("absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground bg-blend-color ring-2 ring-background select-none", "group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden", "group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2", "group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2", className), ...props }));
|
|
17
|
-
}
|
|
18
|
-
function AvatarGroup({ className, ...props }) {
|
|
19
|
-
return (_jsx("div", { "data-slot": "avatar-group", className: cn("group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background", className), ...props }));
|
|
20
|
-
}
|
|
21
|
-
function AvatarGroupCount({ className, ...props }) {
|
|
22
|
-
return (_jsx("div", { "data-slot": "avatar-group-count", className: cn("relative flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-sm text-muted-foreground ring-2 ring-background group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3", className), ...props }));
|
|
23
|
-
}
|
|
24
|
-
export { Avatar, AvatarImage, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarBadge, };
|
|
1
|
+
// Linker shim: this path now re-exports the self-contained component from
|
|
2
|
+
// `ui/avatar`. The legacy base-ui implementation was removed in 4.0.0.
|
|
3
|
+
export * from "../../ui/avatar.js";
|
|
@@ -1,14 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import { type VariantProps } from "../lib/cva.js";
|
|
3
|
-
declare const badgeVariants: (props?: import("../lib/cva.js").CvaProps<{
|
|
4
|
-
variant: {
|
|
5
|
-
default: string;
|
|
6
|
-
secondary: string;
|
|
7
|
-
destructive: string;
|
|
8
|
-
outline: string;
|
|
9
|
-
ghost: string;
|
|
10
|
-
link: string;
|
|
11
|
-
};
|
|
12
|
-
}> | undefined) => string;
|
|
13
|
-
declare function Badge({ className, variant, render, ...props }: useRender.ComponentProps<"span"> & VariantProps<typeof badgeVariants>): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
|
|
14
|
-
export { Badge, badgeVariants };
|
|
1
|
+
export * from "../../ui/badge.js";
|
package/dist/shadcn/ui/badge.js
CHANGED
|
@@ -1,33 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import { cn } from "../lib/utils.js";
|
|
5
|
-
const badgeVariants = cva("group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!", {
|
|
6
|
-
variants: {
|
|
7
|
-
variant: {
|
|
8
|
-
default: "bg-primary text-primary-foreground [a]:hover:bg-primary/80",
|
|
9
|
-
secondary: "bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",
|
|
10
|
-
destructive: "bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",
|
|
11
|
-
outline: "border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",
|
|
12
|
-
ghost: "hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",
|
|
13
|
-
link: "text-primary underline-offset-4 hover:underline",
|
|
14
|
-
},
|
|
15
|
-
},
|
|
16
|
-
defaultVariants: {
|
|
17
|
-
variant: "default",
|
|
18
|
-
},
|
|
19
|
-
});
|
|
20
|
-
function Badge({ className, variant = "default", render, ...props }) {
|
|
21
|
-
return useRender({
|
|
22
|
-
defaultTagName: "span",
|
|
23
|
-
props: mergeProps({
|
|
24
|
-
className: cn(badgeVariants({ variant }), className),
|
|
25
|
-
}, props),
|
|
26
|
-
render,
|
|
27
|
-
state: {
|
|
28
|
-
slot: "badge",
|
|
29
|
-
variant,
|
|
30
|
-
},
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
export { Badge, badgeVariants };
|
|
1
|
+
// Linker shim: this path now re-exports the self-contained component from
|
|
2
|
+
// `ui/badge`. The legacy base-ui implementation was removed in 4.0.0.
|
|
3
|
+
export * from "../../ui/badge.js";
|
|
@@ -1,10 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import { useRender } from "../lib/base-ui/use-render.js";
|
|
3
|
-
declare function Breadcrumb({ className, ...props }: React.ComponentProps<"nav">): React.JSX.Element;
|
|
4
|
-
declare function BreadcrumbList({ className, ...props }: React.ComponentProps<"ol">): React.JSX.Element;
|
|
5
|
-
declare function BreadcrumbItem({ className, ...props }: React.ComponentProps<"li">): React.JSX.Element;
|
|
6
|
-
declare function BreadcrumbLink({ className, render, ...props }: useRender.ComponentProps<"a">): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
|
|
7
|
-
declare function BreadcrumbPage({ className, ...props }: React.ComponentProps<"span">): React.JSX.Element;
|
|
8
|
-
declare function BreadcrumbSeparator({ children, className, ...props }: React.ComponentProps<"li">): React.JSX.Element;
|
|
9
|
-
declare function BreadcrumbEllipsis({ className, ...props }: React.ComponentProps<"span">): React.JSX.Element;
|
|
10
|
-
export { Breadcrumb, BreadcrumbList, BreadcrumbItem, BreadcrumbLink, BreadcrumbPage, BreadcrumbSeparator, BreadcrumbEllipsis, };
|
|
1
|
+
export * from "../../ui/breadcrumb.js";
|
|
@@ -1,37 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import { useRender } from "../lib/base-ui/use-render.js";
|
|
5
|
-
import { cn } from "../lib/utils.js";
|
|
6
|
-
import { ChevronRightIcon, MoreHorizontalIcon } from "../../icons/index.js";
|
|
7
|
-
function Breadcrumb({ className, ...props }) {
|
|
8
|
-
return (_jsx("nav", { "aria-label": "breadcrumb", "data-slot": "breadcrumb", className: cn(className), ...props }));
|
|
9
|
-
}
|
|
10
|
-
function BreadcrumbList({ className, ...props }) {
|
|
11
|
-
return (_jsx("ol", { "data-slot": "breadcrumb-list", className: cn("flex flex-wrap items-center gap-1.5 text-sm wrap-break-word text-muted-foreground sm:gap-2.5", className), ...props }));
|
|
12
|
-
}
|
|
13
|
-
function BreadcrumbItem({ className, ...props }) {
|
|
14
|
-
return (_jsx("li", { "data-slot": "breadcrumb-item", className: cn("inline-flex items-center gap-1.5", className), ...props }));
|
|
15
|
-
}
|
|
16
|
-
function BreadcrumbLink({ className, render, ...props }) {
|
|
17
|
-
return useRender({
|
|
18
|
-
defaultTagName: "a",
|
|
19
|
-
props: mergeProps({
|
|
20
|
-
className: cn("cursor-pointer transition-colors hover:text-foreground", className),
|
|
21
|
-
}, props),
|
|
22
|
-
render,
|
|
23
|
-
state: {
|
|
24
|
-
slot: "breadcrumb-link",
|
|
25
|
-
},
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
function BreadcrumbPage({ className, ...props }) {
|
|
29
|
-
return (_jsx("span", { "data-slot": "breadcrumb-page", role: "link", "aria-disabled": "true", "aria-current": "page", className: cn("font-normal text-foreground", className), ...props }));
|
|
30
|
-
}
|
|
31
|
-
function BreadcrumbSeparator({ children, className, ...props }) {
|
|
32
|
-
return (_jsx("li", { "data-slot": "breadcrumb-separator", role: "presentation", "aria-hidden": "true", className: cn("[&>svg]:size-3.5", className), ...props, children: children ?? (_jsx(ChevronRightIcon, {})) }));
|
|
33
|
-
}
|
|
34
|
-
function BreadcrumbEllipsis({ className, ...props }) {
|
|
35
|
-
return (_jsxs("span", { "data-slot": "breadcrumb-ellipsis", role: "presentation", "aria-hidden": "true", className: cn("flex size-5 items-center justify-center [&>svg]:size-4", className), ...props, children: [_jsx(MoreHorizontalIcon, {}), _jsx("span", { className: "sr-only", children: "More" })] }));
|
|
36
|
-
}
|
|
37
|
-
export { Breadcrumb, BreadcrumbList, BreadcrumbItem, BreadcrumbLink, BreadcrumbPage, BreadcrumbSeparator, BreadcrumbEllipsis, };
|
|
1
|
+
// Linker shim: this path now re-exports the self-contained component from
|
|
2
|
+
// `ui/breadcrumb`. The legacy base-ui implementation was removed in 4.0.0.
|
|
3
|
+
export * from "../../ui/breadcrumb.js";
|