@expokit/cli 0.2.0 → 0.3.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 +14 -0
- package/bin/expo-kit.js +86 -24
- package/bin/mcp.mjs +8 -1
- package/package.json +8 -3
- package/registry/_docs/accordion.json +16 -0
- package/registry/_docs/action-sheet.json +28 -0
- package/registry/_docs/alert.json +28 -0
- package/registry/_docs/avatar.json +24 -0
- package/registry/_docs/badge.json +35 -4
- package/registry/_docs/bottom-nav.json +24 -0
- package/registry/_docs/bottom-sheet.json +28 -0
- package/registry/_docs/bullet.json +3 -0
- package/registry/_docs/button-3d.json +16 -0
- package/registry/_docs/button.json +16 -0
- package/registry/_docs/calendar.json +16 -0
- package/registry/_docs/card-stack.json +16 -0
- package/registry/_docs/card.json +20 -0
- package/registry/_docs/carousel.json +20 -0
- package/registry/_docs/chat.json +184 -0
- package/registry/_docs/checkbox.json +16 -0
- package/registry/_docs/checkout.json +3 -0
- package/registry/_docs/chip-group.json +16 -0
- package/registry/_docs/color-swatch.json +16 -0
- package/registry/_docs/confetti.json +20 -0
- package/registry/_docs/coupon.json +16 -0
- package/registry/_docs/cube-pager.json +16 -0
- package/registry/_docs/dashboard.json +3 -0
- package/registry/_docs/date-picker.json +20 -0
- package/registry/_docs/dialog.json +24 -0
- package/registry/_docs/drawer.json +28 -0
- package/registry/_docs/fab.json +24 -0
- package/registry/_docs/flip-card.json +16 -0
- package/registry/_docs/floating-input.json +20 -0
- package/registry/_docs/gift-card.json +16 -0
- package/registry/_docs/glass-button.json +24 -0
- package/registry/_docs/glass-nav-bar.json +24 -0
- package/registry/_docs/glass-search-bar.json +24 -0
- package/registry/_docs/glass-segmented.json +28 -0
- package/registry/_docs/glass-sheet.json +28 -0
- package/registry/_docs/glass-tab-bar.json +24 -0
- package/registry/_docs/glass.json +16 -0
- package/registry/_docs/inbox.json +3 -0
- package/registry/_docs/isometric-bar.json +3 -0
- package/registry/_docs/kit.json +3 -0
- package/registry/_docs/kpi-card.json +3 -0
- package/registry/_docs/like-button.json +20 -0
- package/registry/_docs/liquidglass-tab.json +3 -0
- package/registry/_docs/list-item.json +16 -0
- package/registry/_docs/loyalty-card.json +16 -0
- package/registry/_docs/morph-button.json +20 -0
- package/registry/_docs/number-ticker.json +16 -0
- package/registry/_docs/offers.json +3 -0
- package/registry/_docs/onboarding.json +3 -0
- package/registry/_docs/otp-input.json +24 -0
- package/registry/_docs/pagination-dots.json +20 -0
- package/registry/_docs/parallax-layers.json +20 -0
- package/registry/_docs/parallax-scroll.json +24 -0
- package/registry/_docs/password-input.json +20 -0
- package/registry/_docs/payment-card.json +16 -0
- package/registry/_docs/pixel-bar.json +3 -0
- package/registry/_docs/polar-area.json +3 -0
- package/registry/_docs/profile.json +3 -0
- package/registry/_docs/progress-steps.json +24 -0
- package/registry/_docs/progress.json +20 -0
- package/registry/_docs/radio-group.json +20 -0
- package/registry/_docs/rating.json +24 -0
- package/registry/_docs/ring-carousel.json +20 -0
- package/registry/_docs/scratch-card.json +20 -0
- package/registry/_docs/search-bar.json +20 -0
- package/registry/_docs/search-results.json +3 -0
- package/registry/_docs/segmented-control.json +20 -0
- package/registry/_docs/select.json +26 -1
- package/registry/_docs/settings.json +3 -0
- package/registry/_docs/shimmer-button.json +20 -0
- package/registry/_docs/sign-in.json +3 -0
- package/registry/_docs/skeleton.json +20 -0
- package/registry/_docs/slide-to-confirm.json +24 -0
- package/registry/_docs/slider.json +21 -1
- package/registry/_docs/spin-wheel.json +24 -0
- package/registry/_docs/spinner.json +41 -11
- package/registry/_docs/stateful-button.json +184 -0
- package/registry/_docs/stepper.json +16 -0
- package/registry/_docs/swipe-deck.json +16 -0
- package/registry/_docs/swipeable-row.json +24 -1
- package/registry/_docs/switch.json +20 -0
- package/registry/_docs/tabs.json +24 -0
- package/registry/_docs/tag-input.json +20 -0
- package/registry/_docs/text-animation.json +141 -0
- package/registry/_docs/textarea.json +16 -0
- package/registry/_docs/ticket-card.json +20 -0
- package/registry/_docs/ticket-shape.json +3 -0
- package/registry/_docs/tilt-card.json +16 -0
- package/registry/_docs/time-picker.json +16 -0
- package/registry/_docs/timeline-chart.json +3 -0
- package/registry/_docs/timeline.json +16 -0
- package/registry/_docs/toast.json +24 -0
- package/registry/_docs/treemap.json +3 -0
- package/registry/_docs/waterfall.json +3 -0
- package/registry/_docs/wheel-list.json +20 -0
- package/registry/badge/files/src/components/ui/badge.tsx +327 -17
- package/registry/badge.json +1 -1
- package/registry/chat.json +18 -0
- package/registry/spinner/files/src/components/ui/spinner.tsx +435 -22
- package/registry/spinner.json +1 -1
- package/registry/stateful-button/files/src/components/ui/stateful-button.tsx +532 -0
- package/registry/stateful-button/files/src/lib/kit.tsx +219 -0
- package/registry/stateful-button.json +18 -0
- package/registry/text-animation/files/src/components/ui/text-animation.tsx +650 -0
- package/registry/text-animation/files/src/lib/kit.tsx +219 -0
- package/registry/text-animation.json +15 -0
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
"files": [
|
|
7
7
|
"src/components/ui/dialog.tsx"
|
|
8
8
|
],
|
|
9
|
+
"summary": "A centred alert whose card springs up from 0.92 while its tone icon draws itself.",
|
|
9
10
|
"props": [
|
|
10
11
|
[
|
|
11
12
|
"open / defaultOpen",
|
|
@@ -122,6 +123,29 @@
|
|
|
122
123
|
"Card style."
|
|
123
124
|
]
|
|
124
125
|
],
|
|
126
|
+
"behavior": [
|
|
127
|
+
[
|
|
128
|
+
"Motion",
|
|
129
|
+
"The scrim fades in while the card springs to full size. A confirm that returns false keeps it open and shakes it."
|
|
130
|
+
],
|
|
131
|
+
[
|
|
132
|
+
"Reduced motion",
|
|
133
|
+
"The card fades in without the scale spring, and the tone icon appears fully drawn instead of animating. The shake is skipped."
|
|
134
|
+
],
|
|
135
|
+
[
|
|
136
|
+
"Haptics",
|
|
137
|
+
"A warning tick on open for destructive, warning and danger dialogs, success for the success tone, and an error buzz on shake."
|
|
138
|
+
],
|
|
139
|
+
[
|
|
140
|
+
"Screen readers",
|
|
141
|
+
"The title is a header; destructive, warning and danger dialogs use the alert role. Buttons report disabled and busy, and the error text is a polite live region."
|
|
142
|
+
],
|
|
143
|
+
[
|
|
144
|
+
"Keyboard",
|
|
145
|
+
"Escape closes it on web, and Return submits a prompt field."
|
|
146
|
+
]
|
|
147
|
+
],
|
|
148
|
+
"usage": "import { useState } from 'react';\nimport { Dialog } from '@/components/ui/dialog';\n\nconst [open, setOpen] = useState(false);\n<Dialog\n open={open} onOpenChange={setOpen}\n variant=\"destructive\"\n title=\"Delete this project?\"\n confirmLabel=\"Delete\"\n/>",
|
|
125
149
|
"examples": [
|
|
126
150
|
{
|
|
127
151
|
"name": "Basic",
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
"files": [
|
|
7
7
|
"src/components/ui/drawer.tsx"
|
|
8
8
|
],
|
|
9
|
+
"summary": "A side drawer that follows your finger, or pushes the screen aside as a card.",
|
|
9
10
|
"props": [
|
|
10
11
|
[
|
|
11
12
|
"content",
|
|
@@ -146,6 +147,33 @@
|
|
|
146
147
|
"Control the surrounding Drawer from inside it."
|
|
147
148
|
]
|
|
148
149
|
],
|
|
150
|
+
"behavior": [
|
|
151
|
+
[
|
|
152
|
+
"Touch",
|
|
153
|
+
"Swipe in from the screen edge to open and drag the panel or scrim to close. Release velocity decides where it settles, and it rubber-bands past fully open."
|
|
154
|
+
],
|
|
155
|
+
[
|
|
156
|
+
"Motion",
|
|
157
|
+
"The panel springs in over a fading scrim; variant 'push' shrinks the screen into a rounded card and slides it aside. Active items spring in an accent pill and badges pop."
|
|
158
|
+
],
|
|
159
|
+
[
|
|
160
|
+
"Reduced motion",
|
|
161
|
+
"Opening and closing use a short timing instead of a spring, the push variant no longer scales the screen, and item and badge pops are skipped."
|
|
162
|
+
],
|
|
163
|
+
[
|
|
164
|
+
"Haptics",
|
|
165
|
+
"A light impact when the drawer opens and a selection tick when a DrawerItem is pressed."
|
|
166
|
+
],
|
|
167
|
+
[
|
|
168
|
+
"Screen readers",
|
|
169
|
+
"The open panel is marked modal and hides itself when closed. DrawerItems are menu items with selected and disabled states, and the badge is read with the label."
|
|
170
|
+
],
|
|
171
|
+
[
|
|
172
|
+
"Keyboard",
|
|
173
|
+
"Escape closes it on web; Android back closes it when it is rendered inline."
|
|
174
|
+
]
|
|
175
|
+
],
|
|
176
|
+
"usage": "import { useState } from 'react';\nimport { Drawer, DrawerItem } from '@/components/ui/drawer';\n\nconst [open, setOpen] = useState(false);\n<Drawer open={open} onOpenChange={setOpen} content={<DrawerItem label=\"Inbox\" icon=\"inbox\" active />}>\n <InboxScreen onMenuPress={() => setOpen(true)} />\n</Drawer>",
|
|
149
177
|
"examples": [
|
|
150
178
|
{
|
|
151
179
|
"name": "AppNavigation",
|
package/registry/_docs/fab.json
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
"files": [
|
|
7
7
|
"src/components/ui/fab.tsx"
|
|
8
8
|
],
|
|
9
|
+
"summary": "A floating action button that fans out a staggered speed dial as its plus turns to ×.",
|
|
9
10
|
"props": [
|
|
10
11
|
[
|
|
11
12
|
"actions",
|
|
@@ -116,5 +117,28 @@
|
|
|
116
117
|
"Style for the absolutely positioned stack holding the main button and list actions."
|
|
117
118
|
]
|
|
118
119
|
],
|
|
120
|
+
"behavior": [
|
|
121
|
+
[
|
|
122
|
+
"Touch",
|
|
123
|
+
"Tapping the button opens the speed dial over an optional dimmed backdrop; tapping the backdrop closes it. Without actions it just calls onPress."
|
|
124
|
+
],
|
|
125
|
+
[
|
|
126
|
+
"Motion",
|
|
127
|
+
"Actions spring out one after another as a labelled list or an arc. An extended FAB springs between a pill and a circle, and pulse loops a ring around it."
|
|
128
|
+
],
|
|
129
|
+
[
|
|
130
|
+
"Reduced motion",
|
|
131
|
+
"The pulse ring stays off when reduce motion is on."
|
|
132
|
+
],
|
|
133
|
+
[
|
|
134
|
+
"Haptics",
|
|
135
|
+
"A light impact when the button opens or closes the dial, or fires onPress."
|
|
136
|
+
],
|
|
137
|
+
[
|
|
138
|
+
"Screen readers",
|
|
139
|
+
"The main button and each action are buttons; the main button reads \"Open actions\" / \"Close actions\" with an expanded state when it has a dial."
|
|
140
|
+
]
|
|
141
|
+
],
|
|
142
|
+
"usage": null,
|
|
119
143
|
"examples": []
|
|
120
144
|
}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
"files": [
|
|
7
7
|
"src/components/ui/flip-card.tsx"
|
|
8
8
|
],
|
|
9
|
+
"summary": "A two-sided card that turns over in 3D, lifting toward you half-way through.",
|
|
9
10
|
"props": [
|
|
10
11
|
[
|
|
11
12
|
"front",
|
|
@@ -86,6 +87,21 @@
|
|
|
86
87
|
"Style for the root (width, margins)."
|
|
87
88
|
]
|
|
88
89
|
],
|
|
90
|
+
"behavior": [
|
|
91
|
+
[
|
|
92
|
+
"Touch",
|
|
93
|
+
"Tap to flip. With trigger 'none' it only turns when you change flipped from outside."
|
|
94
|
+
],
|
|
95
|
+
[
|
|
96
|
+
"Motion",
|
|
97
|
+
"A gentle spring turns the card around its vertical or horizontal axis while the shadow beneath narrows as it goes edge-on. Faces swap exactly at 90° so Android never flickers."
|
|
98
|
+
],
|
|
99
|
+
[
|
|
100
|
+
"Screen readers",
|
|
101
|
+
"The card is a button whose hint says which side is showing, with an expanded state when flipped. The hidden face is hidden from screen readers."
|
|
102
|
+
]
|
|
103
|
+
],
|
|
104
|
+
"usage": "import { FlipCard } from '@/components/ui/flip-card';\n\n<FlipCard\n accessibilityLabel=\"Boarding pass\"\n front={<PassFront flight=\"LH 402\" />}\n back={<PassBarcode code=\"ZK7Q2P\" />}\n/>",
|
|
89
105
|
"examples": [
|
|
90
106
|
{
|
|
91
107
|
"name": "Polaroid",
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
"files": [
|
|
7
7
|
"src/components/ui/floating-input.tsx"
|
|
8
8
|
],
|
|
9
|
+
"summary": "A text field whose label glides onto the border as an accent halo blooms.",
|
|
9
10
|
"props": [
|
|
10
11
|
[
|
|
11
12
|
"label",
|
|
@@ -146,6 +147,25 @@
|
|
|
146
147
|
"Everything TextInput accepts."
|
|
147
148
|
]
|
|
148
149
|
],
|
|
150
|
+
"behavior": [
|
|
151
|
+
[
|
|
152
|
+
"Touch",
|
|
153
|
+
"Tapping anywhere on the field focuses the input. With clearable, a × springs in once there is text and empties the field."
|
|
154
|
+
],
|
|
155
|
+
[
|
|
156
|
+
"Motion",
|
|
157
|
+
"The label springs onto the border on focus or when filled, and a soft halo blooms around the field. An error shakes it once; a success check springs in."
|
|
158
|
+
],
|
|
159
|
+
[
|
|
160
|
+
"Screen readers",
|
|
161
|
+
"The input is labelled with your label and the clear button reads \"Clear\" plus the label. Helper, error and success messages are polite live regions."
|
|
162
|
+
],
|
|
163
|
+
[
|
|
164
|
+
"Web",
|
|
165
|
+
"Browser autofill floats the label too, and the field keeps its own background instead of the autofill blue."
|
|
166
|
+
]
|
|
167
|
+
],
|
|
168
|
+
"usage": "import { useState } from 'react';\nimport { FloatingInput } from '@/components/ui/floating-input';\n\nconst [email, setEmail] = useState('');\n<FloatingInput label=\"Email\" value={email} onChangeText={setEmail} keyboardType=\"email-address\" clearable />",
|
|
149
169
|
"examples": [
|
|
150
170
|
{
|
|
151
171
|
"name": "SignUp",
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
"files": [
|
|
7
7
|
"src/components/ui/gift-card.tsx"
|
|
8
8
|
],
|
|
9
|
+
"summary": "A photo gift card that tilts toward your finger and flips to reveal its code.",
|
|
9
10
|
"props": [
|
|
10
11
|
[
|
|
11
12
|
"amount",
|
|
@@ -104,5 +105,20 @@
|
|
|
104
105
|
"Style for the root."
|
|
105
106
|
]
|
|
106
107
|
],
|
|
108
|
+
"behavior": [
|
|
109
|
+
[
|
|
110
|
+
"Touch",
|
|
111
|
+
"Tap the card to flip it over to the redeem code. The copy button calls onCopy and reads \"Copied ✓\" for a moment."
|
|
112
|
+
],
|
|
113
|
+
[
|
|
114
|
+
"Motion",
|
|
115
|
+
"With tilt on (the default) the card leans toward your finger with a moving reflection, then turns over in 3D on a spring."
|
|
116
|
+
],
|
|
117
|
+
[
|
|
118
|
+
"Screen readers",
|
|
119
|
+
"The card is a button labelled with the brand, amount and redeemed state; the code is added to the label once it is flipped."
|
|
120
|
+
]
|
|
121
|
+
],
|
|
122
|
+
"usage": null,
|
|
107
123
|
"examples": []
|
|
108
124
|
}
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"files": [
|
|
11
11
|
"src/components/ui/glass-button.tsx"
|
|
12
12
|
],
|
|
13
|
+
"summary": "Liquid Glass buttons and toolbars that spring down under your finger.",
|
|
13
14
|
"props": [
|
|
14
15
|
[
|
|
15
16
|
"label",
|
|
@@ -114,5 +115,28 @@
|
|
|
114
115
|
"As on GlassButton; accessibilityLabel names the toolbar."
|
|
115
116
|
]
|
|
116
117
|
],
|
|
118
|
+
"behavior": [
|
|
119
|
+
[
|
|
120
|
+
"Motion",
|
|
121
|
+
"Buttons spring down to 0.94 and toolbar icons to 0.86 while pressed, and an active toolbar item springs in a soft bubble. On iOS 26 a GlassButton lets the native glass bounce instead."
|
|
122
|
+
],
|
|
123
|
+
[
|
|
124
|
+
"Reduced motion",
|
|
125
|
+
"Press springs are skipped and the active bubble appears without a spring."
|
|
126
|
+
],
|
|
127
|
+
[
|
|
128
|
+
"Haptics",
|
|
129
|
+
"A light impact on every press, unless haptics is false."
|
|
130
|
+
],
|
|
131
|
+
[
|
|
132
|
+
"Screen readers",
|
|
133
|
+
"Each button has the button role with its label and disabled state; toolbar items also report selected. The toolbar itself has the toolbar role."
|
|
134
|
+
],
|
|
135
|
+
[
|
|
136
|
+
"Platforms",
|
|
137
|
+
"iOS 26 shows real interactive Liquid Glass, tinted natively, and floating toolbar circles melt together. Elsewhere it is blurred glass with a stronger colour wash for tinted buttons."
|
|
138
|
+
]
|
|
139
|
+
],
|
|
140
|
+
"usage": null,
|
|
117
141
|
"examples": []
|
|
118
142
|
}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
"files": [
|
|
7
7
|
"src/components/ui/glass-nav-bar.tsx"
|
|
8
8
|
],
|
|
9
|
+
"summary": "An iOS 26 glass top bar that fades in as content scrolls under it.",
|
|
9
10
|
"props": [
|
|
10
11
|
[
|
|
11
12
|
"title",
|
|
@@ -74,5 +75,28 @@
|
|
|
74
75
|
"Bar row height, and the full height the bar covers — use it as your content's paddingTop."
|
|
75
76
|
]
|
|
76
77
|
],
|
|
78
|
+
"behavior": [
|
|
79
|
+
[
|
|
80
|
+
"Motion",
|
|
81
|
+
"With scrollY the bar starts transparent and its glass fades in as content passes under it. A large title scrolls away while the small centred title fades in, all on the native driver."
|
|
82
|
+
],
|
|
83
|
+
[
|
|
84
|
+
"Touch",
|
|
85
|
+
"Back and action buttons spring down under the finger on emulated glass; on iOS 26 the interactive glass bounces natively."
|
|
86
|
+
],
|
|
87
|
+
[
|
|
88
|
+
"Reduced motion",
|
|
89
|
+
"The large title no longer scales on pull-down or collapse, and the button press springs are off."
|
|
90
|
+
],
|
|
91
|
+
[
|
|
92
|
+
"Screen readers",
|
|
93
|
+
"The title is a header, with the small title hidden while the large one shows. The back button reads backLabel or \"Back\", and actions use their accessibilityLabel."
|
|
94
|
+
],
|
|
95
|
+
[
|
|
96
|
+
"Platforms",
|
|
97
|
+
"Real Liquid Glass on iOS 26, where the action buttons merge together. Blur on older iOS, Android and web."
|
|
98
|
+
]
|
|
99
|
+
],
|
|
100
|
+
"usage": null,
|
|
77
101
|
"examples": []
|
|
78
102
|
}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
"files": [
|
|
7
7
|
"src/components/ui/glass-search-bar.tsx"
|
|
8
8
|
],
|
|
9
|
+
"summary": "A floating glass search pill that swells on focus as a cancel button splits off.",
|
|
9
10
|
"props": [
|
|
10
11
|
[
|
|
11
12
|
"value / defaultValue / onChangeText",
|
|
@@ -86,5 +87,28 @@
|
|
|
86
87
|
"editable, returnKeyType, onFocus, onBlur, onSubmitEditing, … (ref forwards to the TextInput)."
|
|
87
88
|
]
|
|
88
89
|
],
|
|
90
|
+
"behavior": [
|
|
91
|
+
[
|
|
92
|
+
"Motion",
|
|
93
|
+
"The pill swells a touch on focus and a clear button pops in once there is text. With showCancel, a glass cancel button springs in beside it while searching."
|
|
94
|
+
],
|
|
95
|
+
[
|
|
96
|
+
"Reduced motion",
|
|
97
|
+
"The pill no longer swells, and the clear and cancel buttons fade in with a short timing instead of a spring."
|
|
98
|
+
],
|
|
99
|
+
[
|
|
100
|
+
"Keyboard",
|
|
101
|
+
"The return key reads Search and calls onSubmit with the query. Cancel clears the text and dismisses the keyboard."
|
|
102
|
+
],
|
|
103
|
+
[
|
|
104
|
+
"Screen readers",
|
|
105
|
+
"The field has the search role and is labelled by its placeholder. The clear and cancel buttons read \"Clear search\" and cancelLabel (or \"Cancel search\")."
|
|
106
|
+
],
|
|
107
|
+
[
|
|
108
|
+
"Platforms",
|
|
109
|
+
"Real Liquid Glass on iOS 26, where the pill and cancel button melt together. Blur or frosted glass everywhere else."
|
|
110
|
+
]
|
|
111
|
+
],
|
|
112
|
+
"usage": null,
|
|
89
113
|
"examples": []
|
|
90
114
|
}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
"files": [
|
|
7
7
|
"src/components/ui/glass-segmented.tsx"
|
|
8
8
|
],
|
|
9
|
+
"summary": "A glass segmented control whose thumb stretches toward the new segment like a drop.",
|
|
9
10
|
"props": [
|
|
10
11
|
[
|
|
11
12
|
"options",
|
|
@@ -62,5 +63,32 @@
|
|
|
62
63
|
"Style for the glass track."
|
|
63
64
|
]
|
|
64
65
|
],
|
|
66
|
+
"behavior": [
|
|
67
|
+
[
|
|
68
|
+
"Touch",
|
|
69
|
+
"Tap a segment, or press the thumb and drag it across. It follows your finger and snaps to the nearest segment on release."
|
|
70
|
+
],
|
|
71
|
+
[
|
|
72
|
+
"Motion",
|
|
73
|
+
"The thumb springs to the new segment, stretching in the direction of travel before it settles. It lifts slightly while you drag it."
|
|
74
|
+
],
|
|
75
|
+
[
|
|
76
|
+
"Reduced motion",
|
|
77
|
+
"The thumb slides over in a short timing with no stretch, and does not lift when dragged."
|
|
78
|
+
],
|
|
79
|
+
[
|
|
80
|
+
"Haptics",
|
|
81
|
+
"A selection tick on change and each time a drag crosses into another segment."
|
|
82
|
+
],
|
|
83
|
+
[
|
|
84
|
+
"Screen readers",
|
|
85
|
+
"The control is a tablist and each segment a tab with its label and selected state."
|
|
86
|
+
],
|
|
87
|
+
[
|
|
88
|
+
"Platforms",
|
|
89
|
+
"Built on Glass: real Liquid Glass on iOS 26, blurred or frosted glass elsewhere."
|
|
90
|
+
]
|
|
91
|
+
],
|
|
92
|
+
"usage": null,
|
|
65
93
|
"examples": []
|
|
66
94
|
}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
"files": [
|
|
7
7
|
"src/components/ui/glass-sheet.tsx"
|
|
8
8
|
],
|
|
9
|
+
"summary": "A floating glass bottom sheet that follows your finger and snaps with velocity.",
|
|
9
10
|
"props": [
|
|
10
11
|
[
|
|
11
12
|
"open",
|
|
@@ -104,5 +105,32 @@
|
|
|
104
105
|
"Sheet content; scrolls at the top snap when taller than the sheet."
|
|
105
106
|
]
|
|
106
107
|
],
|
|
108
|
+
"behavior": [
|
|
109
|
+
[
|
|
110
|
+
"Touch",
|
|
111
|
+
"Drag from the grabber or the content. Release velocity picks the snap point, and a fling down or a backdrop tap dismisses it."
|
|
112
|
+
],
|
|
113
|
+
[
|
|
114
|
+
"Motion",
|
|
115
|
+
"It springs up over a fading dim and the grabber widens while held. Without snapPoints it sizes to its content, and taller content scrolls."
|
|
116
|
+
],
|
|
117
|
+
[
|
|
118
|
+
"Reduced motion",
|
|
119
|
+
"Snapping, opening and closing use short timings instead of springs."
|
|
120
|
+
],
|
|
121
|
+
[
|
|
122
|
+
"Haptics",
|
|
123
|
+
"A light tap on open and a selection tick each time it settles on a snap point."
|
|
124
|
+
],
|
|
125
|
+
[
|
|
126
|
+
"Screen readers",
|
|
127
|
+
"The sheet is modal and the escape gesture closes it. The grabber is adjustable: increment and decrement step between snap points, and decrement from the lowest one closes it."
|
|
128
|
+
],
|
|
129
|
+
[
|
|
130
|
+
"Platforms",
|
|
131
|
+
"Real Liquid Glass on iOS 26, material blur on older iOS and web, and a frosted surface on Android. Android back closes it."
|
|
132
|
+
]
|
|
133
|
+
],
|
|
134
|
+
"usage": null,
|
|
107
135
|
"examples": []
|
|
108
136
|
}
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"files": [
|
|
11
11
|
"src/components/ui/glass-tab-bar.tsx"
|
|
12
12
|
],
|
|
13
|
+
"summary": "A floating glass tab bar whose selection bubble stretches as it springs between tabs.",
|
|
13
14
|
"props": [
|
|
14
15
|
[
|
|
15
16
|
"tabs",
|
|
@@ -72,5 +73,28 @@
|
|
|
72
73
|
"Exported height of the bar (and the trailing circle) — pad your scroll content by it."
|
|
73
74
|
]
|
|
74
75
|
],
|
|
76
|
+
"behavior": [
|
|
77
|
+
[
|
|
78
|
+
"Motion",
|
|
79
|
+
"The lighter bubble springs to the selected tab, stretching as it travels and settling when it lands. The selected icon lifts, and buttons spring down while pressed."
|
|
80
|
+
],
|
|
81
|
+
[
|
|
82
|
+
"Reduced motion",
|
|
83
|
+
"The bubble jumps to the new tab without stretching, icons switch without a spring and press springs are off."
|
|
84
|
+
],
|
|
85
|
+
[
|
|
86
|
+
"Haptics",
|
|
87
|
+
"A selection tick when the tab changes and a light tap on the trailing button."
|
|
88
|
+
],
|
|
89
|
+
[
|
|
90
|
+
"Screen readers",
|
|
91
|
+
"The bar is a tablist; each tab is a tab with its selected state, and the badge count is read after the label."
|
|
92
|
+
],
|
|
93
|
+
[
|
|
94
|
+
"Platforms",
|
|
95
|
+
"Real Liquid Glass on iOS 26, where the trailing button melts into the bar. Blur everywhere else."
|
|
96
|
+
]
|
|
97
|
+
],
|
|
98
|
+
"usage": null,
|
|
75
99
|
"examples": []
|
|
76
100
|
}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
"files": [
|
|
7
7
|
"src/components/ui/glass.tsx"
|
|
8
8
|
],
|
|
9
|
+
"summary": "A Liquid Glass surface: native on iOS 26, emulated with blur and a rim elsewhere.",
|
|
9
10
|
"props": [
|
|
10
11
|
[
|
|
11
12
|
"variant",
|
|
@@ -74,5 +75,20 @@
|
|
|
74
75
|
"Size, padding and layout."
|
|
75
76
|
]
|
|
76
77
|
],
|
|
78
|
+
"behavior": [
|
|
79
|
+
[
|
|
80
|
+
"Touch",
|
|
81
|
+
"With interactive, iOS 26 glass shimmers and bounces under the finger. Elsewhere the prop is ignored."
|
|
82
|
+
],
|
|
83
|
+
[
|
|
84
|
+
"Platforms",
|
|
85
|
+
"iOS 26 renders real Liquid Glass that GlassGroup can merge; older iOS uses a system material blur. Android blurs inside GlassProvider + GlassBackdrop and falls back to a frosted fill."
|
|
86
|
+
],
|
|
87
|
+
[
|
|
88
|
+
"Web",
|
|
89
|
+
"Blurs what is behind it with a CSS backdrop blur. Wherever glass is emulated it adds a specular rim, a hairline edge and a soft shadow."
|
|
90
|
+
]
|
|
91
|
+
],
|
|
92
|
+
"usage": null,
|
|
77
93
|
"examples": []
|
|
78
94
|
}
|
package/registry/_docs/kit.json
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
"files": [
|
|
7
7
|
"src/components/ui/like-button.tsx"
|
|
8
8
|
],
|
|
9
|
+
"summary": "A heart, star or bookmark that pops and bursts into particles when liked.",
|
|
9
10
|
"props": [
|
|
10
11
|
[
|
|
11
12
|
"liked / onChange",
|
|
@@ -68,5 +69,24 @@
|
|
|
68
69
|
"Style for the pressable row holding the icon and counter."
|
|
69
70
|
]
|
|
70
71
|
],
|
|
72
|
+
"behavior": [
|
|
73
|
+
[
|
|
74
|
+
"Motion",
|
|
75
|
+
"Liking pops the icon, fills it on a bouncy spring and throws a ring and a burst of coloured dots. The counter rolls up or down to the new number."
|
|
76
|
+
],
|
|
77
|
+
[
|
|
78
|
+
"Haptics",
|
|
79
|
+
"A light impact when it is liked; un-liking is silent."
|
|
80
|
+
],
|
|
81
|
+
[
|
|
82
|
+
"Screen readers",
|
|
83
|
+
"A button labelled \"Like\", \"Favourite\" or \"Bookmark\" (or your label), with a selected state and the count as its value."
|
|
84
|
+
],
|
|
85
|
+
[
|
|
86
|
+
"Touch",
|
|
87
|
+
"Small icons get a hitSlop that brings the target up to 44pt."
|
|
88
|
+
]
|
|
89
|
+
],
|
|
90
|
+
"usage": null,
|
|
71
91
|
"examples": []
|
|
72
92
|
}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
"files": [
|
|
7
7
|
"src/components/ui/list-item.tsx"
|
|
8
8
|
],
|
|
9
|
+
"summary": "Settings, contact and inbox rows with a press highlight that fades in fast, out slow.",
|
|
9
10
|
"props": [
|
|
10
11
|
[
|
|
11
12
|
"title",
|
|
@@ -170,6 +171,21 @@
|
|
|
170
171
|
"Draw the inset hairline under the last row too."
|
|
171
172
|
]
|
|
172
173
|
],
|
|
174
|
+
"behavior": [
|
|
175
|
+
[
|
|
176
|
+
"Touch",
|
|
177
|
+
"Pressable rows get a UIKit-style highlight that fades in fast and out slowly, and a chevron by default. onLongPress is supported too."
|
|
178
|
+
],
|
|
179
|
+
[
|
|
180
|
+
"Screen readers",
|
|
181
|
+
"Pressable rows are buttons labelled with the title, subtitle, value and badge count, with disabled and checked states. ListGroup and ListSection headers are headers."
|
|
182
|
+
],
|
|
183
|
+
[
|
|
184
|
+
"Platforms",
|
|
185
|
+
"Plain React Native views, so rows look the same on iOS, Android and web. ListGroup gives the iOS inset-grouped card on every platform."
|
|
186
|
+
]
|
|
187
|
+
],
|
|
188
|
+
"usage": "import { ListGroup, ListItem } from '@/components/ui/list-item';\n\n<ListGroup header=\"Account\">\n <ListItem icon=\"user\" title=\"Profile\" value=\"Amelia Hart\" onPress={openProfile} />\n <ListItem icon=\"bell\" title=\"Notifications\" badge={3} onPress={openNotifications} />\n</ListGroup>",
|
|
173
189
|
"examples": [
|
|
174
190
|
{
|
|
175
191
|
"name": "Settings",
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
"files": [
|
|
7
7
|
"src/components/ui/loyalty-card.tsx"
|
|
8
8
|
],
|
|
9
|
+
"summary": "A points or stamp card on a shop photo that tilts and flips to a member code.",
|
|
9
10
|
"props": [
|
|
10
11
|
[
|
|
11
12
|
"brand",
|
|
@@ -104,5 +105,20 @@
|
|
|
104
105
|
"Style for the root."
|
|
105
106
|
]
|
|
106
107
|
],
|
|
108
|
+
"behavior": [
|
|
109
|
+
[
|
|
110
|
+
"Touch",
|
|
111
|
+
"Tap the card to flip it to the member code for the till, and tap again to turn it back."
|
|
112
|
+
],
|
|
113
|
+
[
|
|
114
|
+
"Motion",
|
|
115
|
+
"With tilt on (the default) the card leans toward your finger with a moving reflection, then turns over in 3D on a spring."
|
|
116
|
+
],
|
|
117
|
+
[
|
|
118
|
+
"Screen readers",
|
|
119
|
+
"The card is a button labelled with the brand, member and their points or stamp count."
|
|
120
|
+
]
|
|
121
|
+
],
|
|
122
|
+
"usage": null,
|
|
107
123
|
"examples": []
|
|
108
124
|
}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
"files": [
|
|
7
7
|
"src/components/ui/morph-button.tsx"
|
|
8
8
|
],
|
|
9
|
+
"summary": "An async button that shrinks to a spinner, then draws a tick or shakes a cross.",
|
|
9
10
|
"props": [
|
|
10
11
|
[
|
|
11
12
|
"onPress",
|
|
@@ -104,5 +105,24 @@
|
|
|
104
105
|
"Style for the outer animated wrapper (margins, alignment)."
|
|
105
106
|
]
|
|
106
107
|
],
|
|
108
|
+
"behavior": [
|
|
109
|
+
[
|
|
110
|
+
"Motion",
|
|
111
|
+
"While the promise runs the button springs into a circle with a spinner. A resolve draws a success tick, a reject shakes with an error cross, then it springs back to its label."
|
|
112
|
+
],
|
|
113
|
+
[
|
|
114
|
+
"Touch",
|
|
115
|
+
"Presses are ignored while it is busy, and the spinner shows for at least minLoading so fast requests still register."
|
|
116
|
+
],
|
|
117
|
+
[
|
|
118
|
+
"Haptics",
|
|
119
|
+
"A light impact on start, then a success or error notification when the promise settles."
|
|
120
|
+
],
|
|
121
|
+
[
|
|
122
|
+
"Screen readers",
|
|
123
|
+
"A button with busy and disabled states; while not idle its value reads \"Working\", \"Done\" or \"Failed\"."
|
|
124
|
+
]
|
|
125
|
+
],
|
|
126
|
+
"usage": null,
|
|
107
127
|
"examples": []
|
|
108
128
|
}
|