@sableui/react 0.13.2 → 0.15.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/AGENTS.md +2 -2
- package/CHANGELOG.md +172 -0
- package/CONTRIBUTING.md +6 -4
- package/DESIGN.md +10 -3
- package/dist/blocks/approval-block.js +93 -0
- package/dist/blocks/approval-block.meta.js +23 -0
- package/dist/blocks/index.d.ts +27 -1
- package/dist/blocks/index.js +8 -0
- package/dist/blocks/message-reactions-block.js +87 -0
- package/dist/blocks/message-reactions-block.meta.js +23 -0
- package/dist/components/accordion/accordion.meta.js +8 -2
- package/dist/components/area-chart/area-chart.meta.js +10 -3
- package/dist/components/attachment/attachment.meta.js +26 -0
- package/dist/components/bar-chart/bar-chart.meta.js +11 -4
- package/dist/components/bottom-nav/bottom-nav.js +3 -1
- package/dist/components/bottom-nav/bottom-nav.meta.js +32 -0
- package/dist/components/breadcrumbs/breadcrumbs.meta.js +26 -0
- package/dist/components/bubble/bubble.js +105 -5
- package/dist/components/bubble/bubble.meta.js +42 -6
- package/dist/components/bubble/bubble.variants.js +1 -1
- package/dist/components/bubble/index.js +2 -0
- package/dist/components/button/button.js +21 -4
- package/dist/components/button/button.meta.js +7 -7
- package/dist/components/calendar/calendar.js +18 -1
- package/dist/components/calendar/calendar.meta.js +38 -0
- package/dist/components/carousel/carousel.js +6 -4
- package/dist/components/carousel/carousel.meta.js +42 -0
- package/dist/components/chat-composer/chat-composer.js +21 -21
- package/dist/components/chat-composer/chat-composer.meta.js +38 -0
- package/dist/components/chat-composer/use-eased-growth.js +70 -0
- package/dist/components/checkbox/checkbox-mark.js +8 -1
- package/dist/components/checkbox/checkbox.js +3 -1
- package/dist/components/checkbox/checkbox.meta.js +32 -0
- package/dist/components/checkbox-card/checkbox-card.js +3 -0
- package/dist/components/checkbox-card/checkbox-card.meta.js +32 -0
- package/dist/components/code-block/code-block.js +14 -3
- package/dist/components/code-block/code-block.meta.js +28 -1
- package/dist/components/collapsible/collapsible.meta.js +32 -0
- package/dist/components/color-field/color-field.meta.js +26 -0
- package/dist/components/combobox/combobox.meta.js +44 -0
- package/dist/components/command-menu/command-menu.js +8 -3
- package/dist/components/command-menu/command-menu.meta.js +38 -0
- package/dist/components/confirm-button/confirm-button.js +179 -0
- package/dist/components/confirm-button/confirm-button.meta.js +143 -0
- package/dist/components/confirm-button/index.js +7 -0
- package/dist/components/data-table/data-table.js +6 -2
- package/dist/components/data-table/data-table.meta.js +32 -0
- package/dist/components/entity/entity.meta.js +26 -0
- package/dist/components/feedback/feedback.js +120 -47
- package/dist/components/feedback/feedback.meta.js +55 -4
- package/dist/components/input-group/input-group.meta.js +27 -1
- package/dist/components/like-button/index.js +7 -0
- package/dist/components/like-button/like-button.js +89 -0
- package/dist/components/like-button/like-button.meta.js +132 -0
- package/dist/components/line-chart/line-chart.meta.js +10 -3
- package/dist/components/middle-truncate/middle-truncate.meta.js +1 -1
- package/dist/components/note/note.meta.js +32 -0
- package/dist/components/notification-badge/notification-badge.js +17 -5
- package/dist/components/notification-badge/notification-badge.meta.js +34 -2
- package/dist/components/number-ticker/index.js +7 -0
- package/dist/components/number-ticker/number-ticker.js +246 -0
- package/dist/components/number-ticker/number-ticker.meta.js +159 -0
- package/dist/components/otp-field/otp-field.js +23 -3
- package/dist/components/otp-field/otp-field.meta.js +23 -2
- package/dist/components/panel-group/panel-group.meta.js +26 -0
- package/dist/components/panel-section/panel-section.js +37 -10
- package/dist/components/panel-section/panel-section.meta.js +32 -0
- package/dist/components/pie-chart/pie-chart.js +20 -11
- package/dist/components/pie-chart/pie-chart.meta.js +17 -4
- package/dist/components/pill/pill.meta.js +32 -0
- package/dist/components/radar-chart/radar-chart.js +4 -3
- package/dist/components/radar-chart/radar-chart.meta.js +10 -3
- package/dist/components/radial-chart/radial-chart.js +22 -22
- package/dist/components/radial-chart/radial-chart.meta.js +17 -4
- package/dist/components/radio/radio.meta.js +26 -0
- package/dist/components/radio-card/radio-card.meta.js +38 -0
- package/dist/components/reaction-picker/index.js +13 -0
- package/dist/components/reaction-picker/reaction-picker.js +104 -0
- package/dist/components/reaction-picker/reaction-picker.meta.js +156 -0
- package/dist/components/relative-time/relative-time.meta.js +32 -0
- package/dist/components/scroller/scroller.meta.js +32 -0
- package/dist/components/scrub-field/scrub-field.meta.js +32 -0
- package/dist/components/search-input/search-input.js +9 -7
- package/dist/components/search-input/search-input.meta.js +26 -0
- package/dist/components/show-more/show-more.js +1 -4
- package/dist/components/show-more/show-more.meta.js +38 -0
- package/dist/components/side-nav/side-nav.js +21 -1
- package/dist/components/side-nav/side-nav.meta.js +32 -0
- package/dist/components/side-nav/side-nav.variants.js +3 -1
- package/dist/components/sidebar/sidebar.js +31 -8
- package/dist/components/sidebar/sidebar.meta.js +38 -0
- package/dist/components/slider/slider.meta.js +26 -0
- package/dist/components/sparkline/sparkline.js +7 -4
- package/dist/components/sparkline/sparkline.meta.js +9 -2
- package/dist/components/table/table.meta.js +26 -0
- package/dist/components/tabs/tabs.js +27 -8
- package/dist/components/tabs/tabs.meta.js +46 -3
- package/dist/components/theme-selector/theme-selector.meta.js +32 -0
- package/dist/components/theme-switcher/theme-switcher.js +4 -1
- package/dist/components/theme-switcher/theme-switcher.meta.js +42 -0
- package/dist/components/toast/toast.js +25 -13
- package/dist/components/toast/toast.meta.js +7 -1
- package/dist/components/toggle/toggle.js +28 -5
- package/dist/components/toggle/toggle.meta.js +44 -2
- package/dist/components/tool-call/index.js +8 -0
- package/dist/components/tool-call/tool-call.js +117 -0
- package/dist/components/tool-call/tool-call.meta.js +147 -0
- package/dist/components/tool-call/tool-call.variants.js +33 -0
- package/dist/components/tooltip/index.js +3 -1
- package/dist/components/tooltip/tooltip.js +84 -0
- package/dist/components/tooltip/tooltip.meta.js +16 -1
- package/dist/components/tree/tree.js +71 -6
- package/dist/components/tree/tree.meta.js +32 -0
- package/dist/components/video/video.meta.js +32 -0
- package/dist/file-hashes.json +130 -104
- package/dist/foundations/motion.js +69 -3
- package/dist/icon-sets/reicon.js +11 -1
- package/dist/index.d.ts +907 -104
- package/dist/index.js +6 -1
- package/dist/lib/chart/cartesian.js +9 -10
- package/dist/lib/chart/chart-center.js +30 -0
- package/dist/lib/chart/chart-frame.js +15 -8
- package/dist/lib/chart/dim.js +13 -0
- package/dist/lib/chart/format.js +7 -1
- package/dist/lib/chart/motion.js +6 -4
- package/dist/lib/highlight-glide.js +68 -10
- package/dist/lib/taxonomy.js +5 -0
- package/dist/motion/Burst.js +79 -0
- package/dist/motion/MotionProvider.js +45 -3
- package/dist/motion/Reveal.js +1 -1
- package/dist/motion/TextReveal.js +1 -1
- package/dist/motion/index.js +17 -2
- package/dist/motion/useAutoSize.js +42 -0
- package/dist/motion/useShake.js +25 -0
- package/dist/styles.css +439 -5
- package/llms/blocks/approval-block.md +128 -0
- package/llms/blocks/message-reactions-block.md +116 -0
- package/llms/components/accordion.md +3 -2
- package/llms/components/area-chart.md +4 -3
- package/llms/components/attachment.md +7 -0
- package/llms/components/bar-chart.md +5 -4
- package/llms/components/bottom-nav.md +8 -0
- package/llms/components/breadcrumbs.md +7 -0
- package/llms/components/bubble.md +17 -7
- package/llms/components/button.md +6 -6
- package/llms/components/calendar.md +9 -0
- package/llms/components/carousel.md +17 -0
- package/llms/components/chat-composer.md +9 -0
- package/llms/components/checkbox-card.md +8 -0
- package/llms/components/checkbox.md +8 -0
- package/llms/components/code-block.md +8 -0
- package/llms/components/collapsible.md +8 -0
- package/llms/components/color-field.md +7 -0
- package/llms/components/combobox.md +10 -0
- package/llms/components/command-menu.md +9 -0
- package/llms/components/confirm-button.md +92 -0
- package/llms/components/data-table.md +8 -0
- package/llms/components/entity.md +7 -0
- package/llms/components/feedback.md +23 -3
- package/llms/components/input-group.md +8 -1
- package/llms/components/like-button.md +91 -0
- package/llms/components/line-chart.md +4 -3
- package/llms/components/middle-truncate.md +1 -1
- package/llms/components/note.md +8 -0
- package/llms/components/notification-badge.md +10 -2
- package/llms/components/number-ticker.md +86 -0
- package/llms/components/otp-field.md +15 -1
- package/llms/components/panel-group.md +7 -0
- package/llms/components/panel-section.md +8 -0
- package/llms/components/pie-chart.md +6 -4
- package/llms/components/pill.md +8 -0
- package/llms/components/radar-chart.md +4 -3
- package/llms/components/radial-chart.md +6 -4
- package/llms/components/radio-card.md +9 -0
- package/llms/components/radio.md +7 -0
- package/llms/components/reaction-picker.md +115 -0
- package/llms/components/relative-time.md +8 -0
- package/llms/components/scroller.md +8 -0
- package/llms/components/scrub-field.md +8 -0
- package/llms/components/search-input.md +7 -0
- package/llms/components/show-more.md +9 -0
- package/llms/components/side-nav.md +8 -0
- package/llms/components/sidebar.md +9 -0
- package/llms/components/slider.md +7 -0
- package/llms/components/sparkline.md +3 -2
- package/llms/components/table.md +7 -0
- package/llms/components/tabs.md +20 -2
- package/llms/components/theme-selector.md +8 -0
- package/llms/components/theme-switcher.md +17 -0
- package/llms/components/toast.md +2 -1
- package/llms/components/toggle.md +19 -2
- package/llms/components/tool-call.md +115 -0
- package/llms/components/tooltip.md +11 -1
- package/llms/components/tree.md +8 -0
- package/llms/components/video.md +8 -0
- package/llms/foundations/motion.md +64 -3
- package/llms/reference/utilities.md +26 -1
- package/llms/tasks/reviewing-motion.md +14 -0
- package/llms-full.txt +1337 -69
- package/llms.txt +19 -11
- package/package.json +1 -1
- package/registry.json +3040 -124
- package/targets/ios.json +45 -0
package/dist/index.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ export { AspectBox, AspectBoxProps, Bleed, BleedProps, Breakpoint, Center, Cente
|
|
|
9
9
|
export { Icon, IconContextValue, IconProps, IconProvider, IconProviderProps, composeIconSets, useIconSet } from './icon/index.js';
|
|
10
10
|
export { a as IconRenderProps, I as IconSet, b as IconVariant } from './registry-CyL28OzJ.js';
|
|
11
11
|
import * as react from 'react';
|
|
12
|
-
import { ReactNode, ComponentPropsWithoutRef, ElementType, ReactElement, Ref, ComponentPropsWithRef, MouseEvent, ComponentProps, AriaAttributes, FormEvent } from 'react';
|
|
12
|
+
import { ReactNode, AnimationEvent, ComponentPropsWithoutRef, ElementType, ReactElement, Ref, ComponentPropsWithRef, MouseEvent, ComponentProps, AriaAttributes, FormEvent } from 'react';
|
|
13
13
|
import { VariantProps } from 'class-variance-authority';
|
|
14
14
|
import { useRender } from '@base-ui/react/use-render';
|
|
15
15
|
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
@@ -144,10 +144,22 @@ declare function componentLabel(name: string): string;
|
|
|
144
144
|
*
|
|
145
145
|
* - `system` — defer to the OS `prefers-reduced-motion` preference (default).
|
|
146
146
|
* - `full` — force motion on (overrides the OS preference in-app).
|
|
147
|
+
* - `subtle` — essential motion only: feedback, overlays, disclosure and
|
|
148
|
+
* loaders play; expressive motion (glides, rolling numbers, drawn
|
|
149
|
+
* ticks, shakes, staggers, overshoot) resolves instantly. Follows
|
|
150
|
+
* the OS preference for everything else, so it never turns motion
|
|
151
|
+
* on for someone who asked for it off.
|
|
147
152
|
* - `reduced` — damp all token-driven motion to static.
|
|
148
153
|
* - `off` — synonym for `reduced`; motion is fully disabled.
|
|
149
154
|
*/
|
|
150
|
-
type MotionPolicy = "system" | "full" | "reduced" | "off";
|
|
155
|
+
type MotionPolicy = "system" | "full" | "subtle" | "reduced" | "off";
|
|
156
|
+
/**
|
|
157
|
+
* How much motion one component or region may use — the value of a
|
|
158
|
+
* component's `motion` prop and of `<MotionScope level>`. It can only turn
|
|
159
|
+
* motion DOWN from what the surroundings allow: `full` means "inherit", never
|
|
160
|
+
* "override the reader's reduce-motion setting".
|
|
161
|
+
*/
|
|
162
|
+
type MotionLevel = "full" | "subtle" | "off";
|
|
151
163
|
interface MotionContextValue {
|
|
152
164
|
policy: MotionPolicy;
|
|
153
165
|
setPolicy: (policy: MotionPolicy) => void;
|
|
@@ -155,6 +167,12 @@ interface MotionContextValue {
|
|
|
155
167
|
prefersReducedMotion: boolean;
|
|
156
168
|
/** Resolved: will token-driven motion play right now? Mirrors the CSS. */
|
|
157
169
|
enabled: boolean;
|
|
170
|
+
/**
|
|
171
|
+
* Resolved: will EXPRESSIVE motion play — glides, rolling numbers, drawn
|
|
172
|
+
* ticks, shakes, staggers? False under `subtle` as well as when motion is
|
|
173
|
+
* off. JS-driven flourishes read this; essential JS motion reads `enabled`.
|
|
174
|
+
*/
|
|
175
|
+
expressive: boolean;
|
|
158
176
|
}
|
|
159
177
|
interface MotionProviderProps {
|
|
160
178
|
children: ReactNode;
|
|
@@ -186,6 +204,49 @@ interface MotionProviderProps {
|
|
|
186
204
|
* then read/flip it anywhere via `useMotion()`.
|
|
187
205
|
*/
|
|
188
206
|
declare function MotionProvider({ children, defaultPolicy, policy: controlledPolicy, onPolicyChange, target, }: MotionProviderProps): react.JSX.Element;
|
|
207
|
+
/**
|
|
208
|
+
* The value `data-motion` should carry for a component's `motion` prop:
|
|
209
|
+
* nothing for `full` (inherit), the level otherwise. Spread it on the
|
|
210
|
+
* component's root element — the CSS policy does the rest.
|
|
211
|
+
*/
|
|
212
|
+
declare function motionAttribute(level: MotionLevel | undefined): MotionLevel | undefined;
|
|
213
|
+
/**
|
|
214
|
+
* A component's motion, from its own `motion` prop and everything around it
|
|
215
|
+
* (provider, scopes, the OS preference) — whichever is lower. Use the returned
|
|
216
|
+
* `enabled` / `expressive` to gate JS-driven motion, and spread `attribute`
|
|
217
|
+
* as the root's `data-motion` so the CSS recipes inside agree:
|
|
218
|
+
*
|
|
219
|
+
* const motion = useMotionLevel(props.motion)
|
|
220
|
+
* <div data-motion={motion.attribute}>…</div>
|
|
221
|
+
*/
|
|
222
|
+
declare function useMotionLevel(level?: MotionLevel): {
|
|
223
|
+
level: MotionLevel;
|
|
224
|
+
enabled: boolean;
|
|
225
|
+
expressive: boolean;
|
|
226
|
+
attribute: MotionLevel | undefined;
|
|
227
|
+
};
|
|
228
|
+
interface MotionScopeProps {
|
|
229
|
+
children: ReactNode;
|
|
230
|
+
/**
|
|
231
|
+
* How much motion this region may use. `subtle` keeps feedback, overlays
|
|
232
|
+
* and loaders and drops the flourishes; `off` stills everything. A scope
|
|
233
|
+
* can only turn motion down — it never overrides a reader's reduce-motion
|
|
234
|
+
* setting.
|
|
235
|
+
*/
|
|
236
|
+
level: Exclude<MotionLevel, "full">;
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Turns motion down for one region — a dense data view, an embedded widget, a
|
|
240
|
+
* screen a test captures — without touching the rest of the app. Renders a
|
|
241
|
+
* `display: contents` wrapper carrying `data-motion`, so it adds no box to the
|
|
242
|
+
* layout, and provides the same level to `useMotion()` / `useMotionLevel()`
|
|
243
|
+
* below it so JS-driven motion agrees with the CSS.
|
|
244
|
+
*
|
|
245
|
+
* Overlays portal out of the DOM subtree, so their CSS follows the app-level
|
|
246
|
+
* policy rather than the scope; set the level on <MotionProvider> to cover
|
|
247
|
+
* them too.
|
|
248
|
+
*/
|
|
249
|
+
declare function MotionScope({ children, level }: MotionScopeProps): react.JSX.Element;
|
|
189
250
|
/**
|
|
190
251
|
* Read and control the motion policy. Falls back to a provider-less default
|
|
191
252
|
* (follows the OS preference) so it's safe to call without a <MotionProvider> —
|
|
@@ -201,6 +262,64 @@ declare function useMotion(): MotionContextValue;
|
|
|
201
262
|
*/
|
|
202
263
|
declare function useReducedMotion(): boolean;
|
|
203
264
|
|
|
265
|
+
/**
|
|
266
|
+
* Drives the `motion-shake` recipe: call `shake()` when an answer is refused
|
|
267
|
+
* (a wrong code, a submit with invalid fields) and spread `shakeProps` on the
|
|
268
|
+
* element carrying `motion-shake`.
|
|
269
|
+
*
|
|
270
|
+
* const { shake, shakeProps } = useShake()
|
|
271
|
+
* <div className="motion-shake" {...shakeProps}>…</div>
|
|
272
|
+
*
|
|
273
|
+
* The attribute is cleared when the animation ends, so the next refusal plays
|
|
274
|
+
* it again. A refusal that lands mid-shake restarts it: the attribute is
|
|
275
|
+
* dropped for one frame and set again, which is the only way to replay a CSS
|
|
276
|
+
* animation without remounting the element.
|
|
277
|
+
*
|
|
278
|
+
* The recipe's duration is expressive, so under `subtle` and reduced motion it
|
|
279
|
+
* is 0 — the shake resolves instantly, and the field's own error colour and
|
|
280
|
+
* message carry the refusal. Never shake without one.
|
|
281
|
+
*/
|
|
282
|
+
declare function useShake(): {
|
|
283
|
+
shake: () => void;
|
|
284
|
+
shakeProps: {
|
|
285
|
+
"data-shake": "" | undefined;
|
|
286
|
+
onAnimationEnd: (event: AnimationEvent<HTMLElement>) => void;
|
|
287
|
+
};
|
|
288
|
+
};
|
|
289
|
+
|
|
290
|
+
/**
|
|
291
|
+
* Lets an element ease to its content's new size when the content changes in
|
|
292
|
+
* place — "Delete" becoming "Confirm delete?", "Copy" becoming "Copied".
|
|
293
|
+
*
|
|
294
|
+
* CSS cannot do this alone. A transition fires when a computed value changes,
|
|
295
|
+
* and a content-sized box computes `width: auto` before AND after the label
|
|
296
|
+
* swap, so there is nothing to interpolate; `interpolate-size` only helps
|
|
297
|
+
* between a keyword and a length. So the outer element gets an explicit pixel
|
|
298
|
+
* size, measured from an inner element that keeps sizing to its content, and
|
|
299
|
+
* `motion-size` on the outer one eases between the two pixel values.
|
|
300
|
+
*
|
|
301
|
+
* const size = useAutoSize<HTMLButtonElement, HTMLSpanElement>()
|
|
302
|
+
* <button ref={size.outerRef} className="motion-size">
|
|
303
|
+
* <span ref={size.innerRef} className="inline-flex w-max">{label}</span>
|
|
304
|
+
* </button>
|
|
305
|
+
*
|
|
306
|
+
* The outer element's own padding and border are added back, so the inner
|
|
307
|
+
* element is just the content. The first measurement is applied with
|
|
308
|
+
* transitions suppressed, so nothing animates on mount. Under `subtle` and
|
|
309
|
+
* reduced motion the recipe's size duration is 0 and the box simply resizes.
|
|
310
|
+
*
|
|
311
|
+
* Pass `enabled: false` when something else owns the size — a full-width
|
|
312
|
+
* stacked action, a caller's `w-*` class. The inline pixel size would win over
|
|
313
|
+
* any class, so the hook stands down and clears what it wrote.
|
|
314
|
+
*/
|
|
315
|
+
declare function useAutoSize<Outer extends HTMLElement = HTMLElement, Inner extends HTMLElement = HTMLElement>({ axis, enabled }?: {
|
|
316
|
+
axis?: "width" | "height" | "both";
|
|
317
|
+
enabled?: boolean;
|
|
318
|
+
}): {
|
|
319
|
+
outerRef: react.RefObject<Outer | null>;
|
|
320
|
+
innerRef: react.RefObject<Inner | null>;
|
|
321
|
+
};
|
|
322
|
+
|
|
204
323
|
interface UseInViewOptions {
|
|
205
324
|
/** Stop observing after the first time it enters view. @default true */
|
|
206
325
|
once?: boolean;
|
|
@@ -321,6 +440,118 @@ declare namespace Presence {
|
|
|
321
440
|
var displayName: string;
|
|
322
441
|
}
|
|
323
442
|
|
|
443
|
+
/**
|
|
444
|
+
* The palette: nine colour families and a scale under every tone, generated
|
|
445
|
+
* for whatever theme is painting. `scripts/build-palette.mjs` writes this into
|
|
446
|
+
* `src/palette.css`; `palette.test.ts` holds every built-in theme to it.
|
|
447
|
+
*
|
|
448
|
+
* The contract is roles, and roles are not enough for a product. Tags, avatars,
|
|
449
|
+
* labels and illustration need more colours than three tones, and raw Tailwind
|
|
450
|
+
* steps ignore the theme, so they were banned outright. These follow it:
|
|
451
|
+
*
|
|
452
|
+
* - A **family** (red, orange, yellow, green, teal, blue, purple, pink) keeps
|
|
453
|
+
* its own hue and leans toward the brand by half the gap, at most 15°, and
|
|
454
|
+
* only as far as the brand has colour to lean toward (an ink-black primary
|
|
455
|
+
* pulls nothing). Material 3's harmonize, the same lean the customizer gives
|
|
456
|
+
* status colours. Lightness and chroma are fixed per step, fitted inside sRGB
|
|
457
|
+
* across the whole lean, so no brand can push a step out of gamut.
|
|
458
|
+
* - **neutral** is the theme's own page and ink mixed in steps, so it carries
|
|
459
|
+
* whatever tint the theme's surfaces do.
|
|
460
|
+
* - Every **tone** (tone-1…3, info, warning, success, destructive) gets a scale
|
|
461
|
+
* on one shared ladder of depths, and the tone lands exactly on the step
|
|
462
|
+
* nearest its own lightness: a light status colour in dark mode is 800, a
|
|
463
|
+
* mid one is 500. The steps either side stretch to keep the ladder's ends,
|
|
464
|
+
* so a tone near one end does not crush five steps into the little room
|
|
465
|
+
* left past it, and tone-1-100 and success-100 are the same depth.
|
|
466
|
+
*
|
|
467
|
+
* Steps follow the mode rather than literal lightness: a low step is always
|
|
468
|
+
* near the page and a high step always far from it, so 800 text on a 100
|
|
469
|
+
* wash reads in both modes with no `dark:` (Sable has none).
|
|
470
|
+
*/
|
|
471
|
+
declare const PALETTE_STEPS: readonly [50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950];
|
|
472
|
+
type PaletteStep = (typeof PALETTE_STEPS)[number];
|
|
473
|
+
interface PaletteFamily {
|
|
474
|
+
name: string;
|
|
475
|
+
/** The family's own hue, before the lean. */
|
|
476
|
+
hue: number;
|
|
477
|
+
/** Step 500, per mode: lightness and the chroma the family is aiming for. */
|
|
478
|
+
light: {
|
|
479
|
+
l: number;
|
|
480
|
+
c: number;
|
|
481
|
+
};
|
|
482
|
+
dark: {
|
|
483
|
+
l: number;
|
|
484
|
+
c: number;
|
|
485
|
+
};
|
|
486
|
+
}
|
|
487
|
+
declare const PALETTE_FAMILIES: readonly PaletteFamily[];
|
|
488
|
+
/** The hue families by name — the values Badge, Pill and StatusDot take on `tone`. */
|
|
489
|
+
declare const PALETTE_COLORS: readonly ["red", "orange", "yellow", "green", "teal", "blue", "purple", "pink"];
|
|
490
|
+
type PaletteColor = (typeof PALETTE_COLORS)[number];
|
|
491
|
+
declare const isPaletteColor: (value: unknown) => value is PaletteColor;
|
|
492
|
+
/** Tokens that get a scale of their own, `--<token>-50` … `--<token>-950`. */
|
|
493
|
+
declare const PALETTE_TONES: readonly ["tone-1", "tone-2", "tone-3", "tone-info", "tone-warning", "success", "destructive"];
|
|
494
|
+
/** Everything the palette names: neutral, the families, then the tone scales. */
|
|
495
|
+
declare const PALETTE_SCALES: readonly ["neutral", ...string[], "tone-1", "tone-2", "tone-3", "tone-info", "tone-warning", "success", "destructive"];
|
|
496
|
+
|
|
497
|
+
interface BurstProps {
|
|
498
|
+
/**
|
|
499
|
+
* Plays the burst each time this value changes. Nothing plays on mount, so
|
|
500
|
+
* a page that loads with a post already liked stays still. A counter that
|
|
501
|
+
* goes up on each "on" is the usual trigger; leave it alone on "off" so
|
|
502
|
+
* un-liking is quiet.
|
|
503
|
+
*/
|
|
504
|
+
trigger: unknown;
|
|
505
|
+
/**
|
|
506
|
+
* The palette families the dots take in turn. The ring blooms in the host's
|
|
507
|
+
* `currentColor` and fades into the first. Families, not colours: the
|
|
508
|
+
* palette is generated from the active theme, so the confetti re-themes
|
|
509
|
+
* with everything else. @default ["pink", "purple", "blue", "orange"]
|
|
510
|
+
*/
|
|
511
|
+
palette?: readonly PaletteColor[];
|
|
512
|
+
/** How many places dots fly from; each throws a pair. @default 7 */
|
|
513
|
+
count?: number;
|
|
514
|
+
/**
|
|
515
|
+
* Throw this instead of dots: copies of the glyph being celebrated (an
|
|
516
|
+
* emoji reaction), larger than a dot and with no ring, the way a reaction
|
|
517
|
+
* sprays its own emoji. Text only — it is repeated once per piece.
|
|
518
|
+
*/
|
|
519
|
+
particle?: ReactNode;
|
|
520
|
+
/**
|
|
521
|
+
* Also play once when it mounts. For a glyph that arrives BECAUSE of the
|
|
522
|
+
* action — a reaction pill that did not exist until the reader chose it —
|
|
523
|
+
* where mounting is the change. Never for a page that loads.
|
|
524
|
+
* @default false
|
|
525
|
+
*/
|
|
526
|
+
playOnMount?: boolean;
|
|
527
|
+
/** Sizing (`[--burst-size:…]`) or placement. */
|
|
528
|
+
className?: string;
|
|
529
|
+
/**
|
|
530
|
+
* How much motion this component uses. A burst is pure flourish, so it
|
|
531
|
+
* renders only at `full`: `subtle` and `off` render nothing.
|
|
532
|
+
*/
|
|
533
|
+
motion?: MotionLevel;
|
|
534
|
+
}
|
|
535
|
+
/**
|
|
536
|
+
* Burst — the follow-through after a small celebratory toggle: a disc that
|
|
537
|
+
* hollows into a ring, then dots thrown outward that shrink as they go. Place
|
|
538
|
+
* it inside a `relative` wrapper around the glyph it celebrates, beside a
|
|
539
|
+
* `motion-bloom` on the glyph itself:
|
|
540
|
+
*
|
|
541
|
+
* <span className="relative inline-flex">
|
|
542
|
+
* <span key={likes} className={liked ? "motion-bloom" : undefined}><Icon name="heart" /></span>
|
|
543
|
+
* <Burst trigger={likes} />
|
|
544
|
+
* </span>
|
|
545
|
+
*
|
|
546
|
+
* It sizes from `--burst-size` (the ring's diameter, default 2.25em — about
|
|
547
|
+
* twice the glyph) and colours from the themed palette families. Decorative and
|
|
548
|
+
* `aria-hidden`; it draws outside its box and never takes pointer events.
|
|
549
|
+
* Use it for a moment of delight on an action a person chose — a like, a
|
|
550
|
+
* star, a finished task — never on something the system did, and never on
|
|
551
|
+
* every row of a list at once.
|
|
552
|
+
*/
|
|
553
|
+
declare function Burst({ trigger, palette, count, particle, playOnMount, className, motion, }: BurstProps): react.JSX.Element | null;
|
|
554
|
+
|
|
324
555
|
/** Is the cross-document/SPA View Transitions API available? */
|
|
325
556
|
declare function supportsViewTransitions(): boolean;
|
|
326
557
|
/**
|
|
@@ -367,7 +598,9 @@ interface ButtonProps extends Omit<ComponentPropsWithRef<"button">, "onClick">,
|
|
|
367
598
|
*/
|
|
368
599
|
render?: useRender.RenderProp;
|
|
369
600
|
/**
|
|
370
|
-
* Show a
|
|
601
|
+
* Show a Spinner while an action is in flight, and ignore presses. It takes
|
|
602
|
+
* the `iconStart` slot, or lays over a plain label (faded in place) so the
|
|
603
|
+
* button keeps its width.
|
|
371
604
|
* Sets `aria-busy` and `aria-disabled`, not the native `disabled`: disabling
|
|
372
605
|
* the focused button dropped focus to the page, so a sheet opened by the
|
|
373
606
|
* action had nowhere to return it. @default false
|
|
@@ -454,6 +687,135 @@ declare function ButtonGroup({ className, role, ...props }: ButtonGroupProps): r
|
|
|
454
687
|
|
|
455
688
|
declare const buttonGroupMeta: ComponentMeta;
|
|
456
689
|
|
|
690
|
+
type IconSize = "icon" | "icon-sm" | "icon-xs";
|
|
691
|
+
interface ConfirmButtonProps extends Omit<ButtonProps, "children" | "onClick" | "variant" | "size" | "loading" | "loadingLabel" | "iconStart" | "render" | "type"> {
|
|
692
|
+
/** The idle label — the action, e.g. "Delete". */
|
|
693
|
+
children: ReactNode;
|
|
694
|
+
/**
|
|
695
|
+
* The label while armed, waiting for the second press. Defaults to
|
|
696
|
+
* "Confirm <label>?" for a text label ("Delete" → "Confirm delete?") and
|
|
697
|
+
* "Confirm?" otherwise. Pass it to localise.
|
|
698
|
+
*/
|
|
699
|
+
confirmLabel?: ReactNode;
|
|
700
|
+
/**
|
|
701
|
+
* Called on the second press, while armed. May return a promise: the button
|
|
702
|
+
* then stays armed and shows its spinner until it settles.
|
|
703
|
+
*/
|
|
704
|
+
onConfirm: () => unknown;
|
|
705
|
+
/** How long it stays armed without a second press, in ms. @default 3000 */
|
|
706
|
+
timeout?: number;
|
|
707
|
+
/** The idle look. @default "secondary" */
|
|
708
|
+
variant?: ButtonProps["variant"];
|
|
709
|
+
/** The armed look. @default "destructive" */
|
|
710
|
+
confirmVariant?: ButtonProps["variant"];
|
|
711
|
+
/** A labelled size — the label is the whole interaction, so no icon-only sizes. @default "md" */
|
|
712
|
+
size?: Exclude<NonNullable<ButtonProps["size"]>, IconSize>;
|
|
713
|
+
/** A leading icon, kept through both states (e.g. `<Icon name="trash" />`). */
|
|
714
|
+
icon?: ReactNode;
|
|
715
|
+
/**
|
|
716
|
+
* What assistive tech hears when it arms, after the armed label.
|
|
717
|
+
* @default "Press again to confirm."
|
|
718
|
+
*/
|
|
719
|
+
confirmHint?: string;
|
|
720
|
+
/**
|
|
721
|
+
* How much motion this component uses: `full` (default) inherits the app's
|
|
722
|
+
* policy, `subtle` keeps feedback and drops the flourish, `off` stills it.
|
|
723
|
+
* It can only turn motion down — it never overrides a reader's reduce-motion
|
|
724
|
+
* setting. The width easing and the draining countdown are the flourish; the
|
|
725
|
+
* label cross-fade and colour change stay under `subtle`.
|
|
726
|
+
* @default "full"
|
|
727
|
+
*/
|
|
728
|
+
motion?: MotionLevel;
|
|
729
|
+
}
|
|
730
|
+
/**
|
|
731
|
+
* ConfirmButton — an inline two-step confirm for a low-stakes destructive or
|
|
732
|
+
* irreversible action, where a modal would be heavier than the decision.
|
|
733
|
+
*
|
|
734
|
+
* <ConfirmButton icon={<Icon name="trash" />} onConfirm={removeRow}>Delete</ConfirmButton>
|
|
735
|
+
*
|
|
736
|
+
* The first press ARMS it: the label becomes the question ("Confirm delete?"),
|
|
737
|
+
* the button turns destructive, and a thin line drains along its foot for the
|
|
738
|
+
* time it will wait. A second press inside that time runs `onConfirm`. Leaving
|
|
739
|
+
* it — the timeout, Escape, focus moving away, a press elsewhere — disarms it
|
|
740
|
+
* and the original label returns. Enter and Space work twice, like a click.
|
|
741
|
+
*
|
|
742
|
+
* Both labels stay mounted in one grid cell and cross-fade. The button's width
|
|
743
|
+
* eases to the new label (useAutoSize + motion-size), so it grows into the
|
|
744
|
+
* question instead of jumping, and the neighbours it pushes travel rather than
|
|
745
|
+
* teleport. CSS alone cannot do it: a content-sized button computes
|
|
746
|
+
* `width: auto` before and after the swap, so nothing changes to transition.
|
|
747
|
+
*
|
|
748
|
+
* Built on Button: variants are swapped, never restyled, so every theme's
|
|
749
|
+
* destructive tier is the armed look.
|
|
750
|
+
*/
|
|
751
|
+
declare function ConfirmButton({ children, confirmLabel, onConfirm, timeout, variant, confirmVariant, size, icon, confirmHint, motion, disabled, className, onBlur, onKeyDown, ref, ...props }: ConfirmButtonProps): react.JSX.Element;
|
|
752
|
+
declare namespace ConfirmButton {
|
|
753
|
+
var displayName: string;
|
|
754
|
+
}
|
|
755
|
+
|
|
756
|
+
declare const confirmButtonMeta: ComponentMeta;
|
|
757
|
+
|
|
758
|
+
type LabelledSize = "xs" | "sm" | "md";
|
|
759
|
+
interface LikeButtonProps extends Omit<ButtonProps, "children" | "variant" | "size" | "iconStart" | "iconEnd" | "badge" | "loading" | "loadingLabel" | "render" | "type"> {
|
|
760
|
+
/** Pressed (liked), controlled. */
|
|
761
|
+
pressed?: boolean;
|
|
762
|
+
/** Pressed (liked) at first, uncontrolled. @default false */
|
|
763
|
+
defaultPressed?: boolean;
|
|
764
|
+
/** Called when a press turns it on or off, with the new state. */
|
|
765
|
+
onPressedChange?: (pressed: boolean, event: MouseEvent<HTMLButtonElement>) => void;
|
|
766
|
+
/**
|
|
767
|
+
* The total, shown beside the glyph and rolled when it changes. Pressing
|
|
768
|
+
* adds or removes the viewer's like at once, before your handler has saved
|
|
769
|
+
* it, and the button goes back to showing `count` exactly whenever `count`
|
|
770
|
+
* changes — so pass the server's total and update it when the save lands.
|
|
771
|
+
* Omit it for a bare glyph.
|
|
772
|
+
*/
|
|
773
|
+
count?: number;
|
|
774
|
+
/** How to write the count — `{ notation: "compact" }` for 1.2K. Passed to `Intl.NumberFormat`. */
|
|
775
|
+
format?: Intl.NumberFormatOptions;
|
|
776
|
+
/** The glyph, by icon name. Its `solid` variant is shown while pressed. @default "heart" */
|
|
777
|
+
icon?: string;
|
|
778
|
+
/**
|
|
779
|
+
* The palette family the glyph fills with while pressed; the burst blooms
|
|
780
|
+
* from it. A family, not a colour, so it follows the theme. @default "red"
|
|
781
|
+
*/
|
|
782
|
+
tone?: PaletteColor;
|
|
783
|
+
/** The accessible name, read before the count. @default "Like" */
|
|
784
|
+
label?: string;
|
|
785
|
+
/** @default "ghost" */
|
|
786
|
+
variant?: "ghost" | "outline" | "secondary";
|
|
787
|
+
/** @default "sm" */
|
|
788
|
+
size?: LabelledSize;
|
|
789
|
+
/**
|
|
790
|
+
* How much motion this component uses: `full` (default) inherits the app's
|
|
791
|
+
* policy, `subtle` keeps feedback and drops the flourish, `off` stills it.
|
|
792
|
+
* It can only turn motion down — it never overrides a reader's reduce-motion
|
|
793
|
+
* setting. The bloom and burst are the flourish; the fill and the count
|
|
794
|
+
* changing stay.
|
|
795
|
+
*/
|
|
796
|
+
motion?: MotionLevel;
|
|
797
|
+
}
|
|
798
|
+
/**
|
|
799
|
+
* LikeButton — a pressed-or-not toggle for a like, a star, a save. Pressing
|
|
800
|
+
* it on fills the glyph, which blooms past its size and settles while a ring
|
|
801
|
+
* and a spray of dots burst from it, and the count rolls up a digit. Pressing
|
|
802
|
+
* it off is quiet: the glyph empties and the count rolls back.
|
|
803
|
+
*
|
|
804
|
+
* <LikeButton count={post.likes} defaultPressed={post.liked} onPressedChange={(on) => save(on)} />
|
|
805
|
+
* <LikeButton icon="star" tone="yellow" label="Star" count={repo.stars} />
|
|
806
|
+
*
|
|
807
|
+
* A Sable Button carrying `aria-pressed`, with Toggle's controlled/uncontrolled
|
|
808
|
+
* contract (`pressed` / `defaultPressed` / `onPressedChange`). It composes
|
|
809
|
+
* Button rather than Toggle: Toggle's pressed fill is the one thing a like
|
|
810
|
+
* must not show — its state is the glyph.
|
|
811
|
+
*/
|
|
812
|
+
declare function LikeButton({ className, count, format, icon, tone, label, variant, size, motion, pressed: pressedProp, defaultPressed, onPressedChange, onClick, ...props }: LikeButtonProps): react.JSX.Element;
|
|
813
|
+
declare namespace LikeButton {
|
|
814
|
+
var displayName: string;
|
|
815
|
+
}
|
|
816
|
+
|
|
817
|
+
declare const likeButtonMeta: ComponentMeta;
|
|
818
|
+
|
|
457
819
|
interface CardProps extends ComponentPropsWithRef<"div"> {
|
|
458
820
|
/** "default" = raised surface (bg-card + edge + soft shadow). "flat" = transparent. */
|
|
459
821
|
variant?: "default" | "flat";
|
|
@@ -1260,8 +1622,21 @@ type OtpFieldProps = Omit<BaseRootProps, "className" | "render" | "length" | "ch
|
|
|
1260
1622
|
* @default (index, length) => `Character ${index + 1} of ${length}`
|
|
1261
1623
|
*/
|
|
1262
1624
|
getSlotLabel?: (index: number, length: number) => string;
|
|
1263
|
-
/**
|
|
1625
|
+
/**
|
|
1626
|
+
* Marks every slot invalid: destructive border and digits, and — when it
|
|
1627
|
+
* turns on after mount — one short shake of the whole field. `<Field error>`
|
|
1628
|
+
* sets this for you.
|
|
1629
|
+
*/
|
|
1264
1630
|
"aria-invalid"?: boolean | "true" | "false";
|
|
1631
|
+
/**
|
|
1632
|
+
* How much motion this component uses: `full` (default) inherits the app's
|
|
1633
|
+
* policy, `subtle` keeps feedback and drops the flourish, `off` stills it.
|
|
1634
|
+
* It can only turn motion down — it never overrides a reader's reduce-motion
|
|
1635
|
+
* setting. The shake on a refused code is the flourish; the destructive
|
|
1636
|
+
* colour stays at every level.
|
|
1637
|
+
* @default "full"
|
|
1638
|
+
*/
|
|
1639
|
+
motion?: MotionLevel;
|
|
1265
1640
|
};
|
|
1266
1641
|
/**
|
|
1267
1642
|
* OtpField — a one-time-code entry over Base UI's OTP Field.
|
|
@@ -1278,8 +1653,13 @@ type OtpFieldProps = Omit<BaseRootProps, "className" | "render" | "length" | "ch
|
|
|
1278
1653
|
* Slots are `text-mono-lg` (20px) so iOS Safari never zooms on focus, and sit
|
|
1279
1654
|
* on the control ladder — `--control-md` wide, `--control-lg` tall — so a
|
|
1280
1655
|
* compact Workspace retunes them with everything else.
|
|
1656
|
+
*
|
|
1657
|
+
* A refused code shakes the field once (motion-shake) as it turns invalid, and
|
|
1658
|
+
* the digits take the destructive colour. The slots are NOT cleared: the wrong
|
|
1659
|
+
* digits are the evidence of which one was mistyped, and the error message
|
|
1660
|
+
* under the field says what to do next.
|
|
1281
1661
|
*/
|
|
1282
|
-
declare function OtpField({ className, length, groupSize, getSlotLabel, "aria-invalid": ariaInvalid, ...root }: OtpFieldProps): react.JSX.Element;
|
|
1662
|
+
declare function OtpField({ className, length, groupSize, getSlotLabel, "aria-invalid": ariaInvalid, motion, onAnimationEnd, ...root }: OtpFieldProps): react.JSX.Element;
|
|
1283
1663
|
declare namespace OtpField {
|
|
1284
1664
|
var displayName: string;
|
|
1285
1665
|
}
|
|
@@ -1431,7 +1811,7 @@ declare namespace Label {
|
|
|
1431
1811
|
|
|
1432
1812
|
declare const labelMeta: ComponentMeta;
|
|
1433
1813
|
|
|
1434
|
-
type RootProps$
|
|
1814
|
+
type RootProps$8 = Omit<ComponentProps<typeof Switch$1.Root>, "className"> & {
|
|
1435
1815
|
className?: string;
|
|
1436
1816
|
};
|
|
1437
1817
|
/**
|
|
@@ -1445,15 +1825,22 @@ type RootProps$7 = Omit<ComponentProps<typeof Switch$1.Root>, "className"> & {
|
|
|
1445
1825
|
* Use it for immediate-effect toggles. For deferred/form-submit choices that
|
|
1446
1826
|
* need a visible label and validation, reach for a checkbox instead.
|
|
1447
1827
|
*/
|
|
1448
|
-
declare function Switch({ className, ...props }: RootProps$
|
|
1828
|
+
declare function Switch({ className, ...props }: RootProps$8): react.JSX.Element;
|
|
1449
1829
|
declare namespace Switch {
|
|
1450
1830
|
var displayName: string;
|
|
1451
1831
|
}
|
|
1452
1832
|
|
|
1453
1833
|
declare const switchMeta: ComponentMeta;
|
|
1454
1834
|
|
|
1455
|
-
type RootProps$
|
|
1835
|
+
type RootProps$7 = Omit<ComponentProps<typeof Checkbox$1.Root>, "className"> & {
|
|
1456
1836
|
className?: string;
|
|
1837
|
+
/**
|
|
1838
|
+
* How much motion this component uses: `full` (default) inherits the app's
|
|
1839
|
+
* policy, `subtle` keeps feedback and drops the flourish, `off` stills it.
|
|
1840
|
+
* It can only turn motion down — it never overrides a reader's reduce-motion
|
|
1841
|
+
* setting. Under `subtle` the tick fades in instead of drawing itself.
|
|
1842
|
+
*/
|
|
1843
|
+
motion?: MotionLevel;
|
|
1457
1844
|
};
|
|
1458
1845
|
/**
|
|
1459
1846
|
* Checkbox — themed wrapper over Base UI's Checkbox (Root + Indicator).
|
|
@@ -1469,7 +1856,7 @@ type RootProps$6 = Omit<ComponentProps<typeof Checkbox$1.Root>, "className"> & {
|
|
|
1469
1856
|
* The box and its mark are shared with CheckboxCard (`CHECK_BOX` +
|
|
1470
1857
|
* `CheckboxMark`), so the standalone control and the card's box cannot drift.
|
|
1471
1858
|
*/
|
|
1472
|
-
declare function Checkbox({ className, children, ...props }: RootProps$
|
|
1859
|
+
declare function Checkbox({ className, children, motion, ...props }: RootProps$7): react.JSX.Element;
|
|
1473
1860
|
declare namespace Checkbox {
|
|
1474
1861
|
var displayName: string;
|
|
1475
1862
|
}
|
|
@@ -1494,23 +1881,47 @@ declare const checkboxMeta: ComponentMeta;
|
|
|
1494
1881
|
* no rule — the switcher idiom (Preview / Code, view modes inside a card),
|
|
1495
1882
|
* where a rule under a short row of two or three options reads as structure
|
|
1496
1883
|
* that is not there. The active tab reads from Base UI's `data-active`.
|
|
1884
|
+
*
|
|
1885
|
+
* In both styles the active mark is ONE element that travels: TabsList renders
|
|
1886
|
+
* Base UI's Tabs.Indicator for you, and it glides (`motion-glide`) to the new
|
|
1887
|
+
* tab and stretches to its width. See TabsList for the hand-off that keeps the
|
|
1888
|
+
* first paint right before it mounts.
|
|
1497
1889
|
*/
|
|
1498
|
-
|
|
1890
|
+
type RootProps$6 = ComponentProps<typeof Tabs$1.Root> & {
|
|
1891
|
+
/**
|
|
1892
|
+
* How much motion this component uses: `full` (default) inherits the app's
|
|
1893
|
+
* policy, `subtle` keeps feedback and drops the glide, `off` stills it. It
|
|
1894
|
+
* can only turn motion down — it never overrides a reader's reduce-motion
|
|
1895
|
+
* setting.
|
|
1896
|
+
* @default "full"
|
|
1897
|
+
*/
|
|
1898
|
+
motion?: MotionLevel;
|
|
1899
|
+
};
|
|
1900
|
+
declare function Tabs({ motion, ...props }: RootProps$6): react.JSX.Element;
|
|
1901
|
+
declare namespace Tabs {
|
|
1902
|
+
var displayName: string;
|
|
1903
|
+
}
|
|
1499
1904
|
type TabsVariant = "underline" | "pill";
|
|
1500
1905
|
type ListProps$1 = Omit<ComponentProps<typeof Tabs$1.List>, "className"> & {
|
|
1501
1906
|
className?: string;
|
|
1502
1907
|
/** `underline` (default) or `pill`. Triggers inside inherit it. */
|
|
1503
1908
|
variant?: TabsVariant;
|
|
1504
1909
|
};
|
|
1505
|
-
/**
|
|
1506
|
-
|
|
1910
|
+
/**
|
|
1911
|
+
* The tablist — a row of triggers, on a divider rule or as pills. It renders
|
|
1912
|
+
* the gliding indicator itself, so composing TabsList + TabsTrigger is all a
|
|
1913
|
+
* consumer writes.
|
|
1914
|
+
*/
|
|
1915
|
+
declare function TabsList({ className, variant, children, ...props }: ListProps$1): react.JSX.Element;
|
|
1507
1916
|
type TriggerProps$4 = Omit<ComponentProps<typeof Tabs$1.Tab>, "className"> & {
|
|
1508
1917
|
className?: string;
|
|
1509
1918
|
};
|
|
1510
1919
|
/**
|
|
1511
1920
|
* A single tab button (Base UI's Tabs.Tab). Underline: the active tab draws its
|
|
1512
1921
|
* rule via `data-active`, and `-mb-px` overlaps the list's divider. Pill: the
|
|
1513
|
-
* active tab takes a muted fill on the control ladder
|
|
1922
|
+
* active tab takes a muted fill on the control ladder. In both, that per-tab
|
|
1923
|
+
* mark is only the fallback until TabsList's gliding indicator is shown; the
|
|
1924
|
+
* tab is `relative` so it paints over the indicator. The pill label is trimmed
|
|
1514
1925
|
* to the cap height so it centres optically in the short pill. A pill tab is a
|
|
1515
1926
|
* button-shaped control, so it takes the theme's button shape (`--button-radius`,
|
|
1516
1927
|
* as Button does): a pill in Sable, rounded in Poppy, square in Meridian.
|
|
@@ -1521,7 +1932,22 @@ declare function TabsTrigger({ className, children, ...props }: TriggerProps$4):
|
|
|
1521
1932
|
type PanelProps$3 = Omit<ComponentProps<typeof Tabs$1.Panel>, "className"> & {
|
|
1522
1933
|
className?: string;
|
|
1523
1934
|
};
|
|
1524
|
-
/**
|
|
1935
|
+
/**
|
|
1936
|
+
* The panel shown when its matching trigger is active.
|
|
1937
|
+
*
|
|
1938
|
+
* A changed panel fades in (`animate-fade-in`, essential: it confirms the
|
|
1939
|
+
* click landed even when two panels look alike). Opacity only — a slide would
|
|
1940
|
+
* move the content the reader is about to read. Two guards keep it from
|
|
1941
|
+
* costing layout:
|
|
1942
|
+
*
|
|
1943
|
+
* - Not on first render. Base UI reports `data-activation-direction="none"`
|
|
1944
|
+
* until the selection has changed, so a page full of tabs does not fade in
|
|
1945
|
+
* on load.
|
|
1946
|
+
* - The outgoing panel leaves at once. Base UI keeps it mounted until its
|
|
1947
|
+
* animations finish (`data-ending-style`); left displayed, a switch made
|
|
1948
|
+
* mid-fade stacked both panels for a moment and the page jumped by a panel's
|
|
1949
|
+
* height. `hidden` while ending takes it out of layout immediately.
|
|
1950
|
+
*/
|
|
1525
1951
|
declare function TabsPanel({ className, ...props }: PanelProps$3): react.JSX.Element;
|
|
1526
1952
|
|
|
1527
1953
|
declare const tabsMeta: ComponentMeta;
|
|
@@ -1590,6 +2016,38 @@ type SimpleTooltipProps = Omit<ComponentProps<typeof Tooltip$1.Root>, "children"
|
|
|
1590
2016
|
* <TooltipProvider>; for arrows or richer content, use the composable parts.
|
|
1591
2017
|
*/
|
|
1592
2018
|
declare function SimpleTooltip({ content, children, side, align, sideOffset, ...root }: SimpleTooltipProps): react.JSX.Element;
|
|
2019
|
+
interface TooltipGroupProps {
|
|
2020
|
+
/** The triggers — `SimpleTooltip`s — that share the one tooltip. */
|
|
2021
|
+
children: ReactNode;
|
|
2022
|
+
/**
|
|
2023
|
+
* How much motion this component uses: `full` (default) inherits the app's
|
|
2024
|
+
* policy, `subtle` keeps feedback and drops the flourish, `off` stills it.
|
|
2025
|
+
* It can only turn motion down — it never overrides a reader's reduce-motion
|
|
2026
|
+
* setting. Under `subtle` the tooltip jumps between triggers and only
|
|
2027
|
+
* cross-fades its label.
|
|
2028
|
+
*/
|
|
2029
|
+
motion?: MotionLevel;
|
|
2030
|
+
}
|
|
2031
|
+
/**
|
|
2032
|
+
* TooltipGroup — one tooltip shared by every `SimpleTooltip` inside it, which
|
|
2033
|
+
* glides from trigger to trigger as the pointer moves along a toolbar instead
|
|
2034
|
+
* of closing and reopening:
|
|
2035
|
+
*
|
|
2036
|
+
* <TooltipGroup>
|
|
2037
|
+
* <SimpleTooltip content="Bold"><Button … /></SimpleTooltip>
|
|
2038
|
+
* <SimpleTooltip content="Italic"><Button … /></SimpleTooltip>
|
|
2039
|
+
* </TooltipGroup>
|
|
2040
|
+
*
|
|
2041
|
+
* Renders no element of its own, so it drops into any layout. Each
|
|
2042
|
+
* SimpleTooltip keeps its own `content`, `side`, `align` and `sideOffset`;
|
|
2043
|
+
* `disabled` still turns one trigger off. Root-level props a SimpleTooltip
|
|
2044
|
+
* would otherwise take (`open`, `onOpenChange`) belong to the shared tooltip
|
|
2045
|
+
* and are ignored inside a group. The composable Tooltip parts are unaffected.
|
|
2046
|
+
*/
|
|
2047
|
+
declare function TooltipGroup({ children, motion }: TooltipGroupProps): react.JSX.Element;
|
|
2048
|
+
declare namespace TooltipGroup {
|
|
2049
|
+
var displayName: string;
|
|
2050
|
+
}
|
|
1593
2051
|
|
|
1594
2052
|
declare const tooltipMeta: ComponentMeta;
|
|
1595
2053
|
|
|
@@ -1870,6 +2328,64 @@ declare namespace ThinkingOrb {
|
|
|
1870
2328
|
|
|
1871
2329
|
declare const thinkingOrbMeta: ComponentMeta;
|
|
1872
2330
|
|
|
2331
|
+
type ToolCallStatus = "running" | "awaiting" | "complete" | "error" | "denied";
|
|
2332
|
+
declare const TOOL_CALL_STATUS_LABELS: Record<ToolCallStatus, string>;
|
|
2333
|
+
interface ToolCallProps extends Omit<ComponentPropsWithRef<"div">, "title" | "children"> {
|
|
2334
|
+
/** The tool's own name, as the model called it (`search_docs`). Shown in mono. */
|
|
2335
|
+
name: string;
|
|
2336
|
+
/**
|
|
2337
|
+
* What the call does, in words a person reads ("Searched the docs"). Leads the
|
|
2338
|
+
* row, with `name` after it. Omit it and the row leads with `name`.
|
|
2339
|
+
*/
|
|
2340
|
+
title?: ReactNode;
|
|
2341
|
+
/**
|
|
2342
|
+
* Where the call is. `awaiting` is a call held for the person's approval;
|
|
2343
|
+
* `denied` is one they declined.
|
|
2344
|
+
* @default "running"
|
|
2345
|
+
*/
|
|
2346
|
+
status?: ToolCallStatus;
|
|
2347
|
+
/** Overrides the status word ("Running", "Done", …), for another language or a more specific phrase. */
|
|
2348
|
+
statusLabel?: string;
|
|
2349
|
+
/** The arguments. A string shows as is; anything else as formatted JSON. */
|
|
2350
|
+
input?: unknown;
|
|
2351
|
+
/** The result, shown the same way as `input`. `children` replaces it with a rendered result. */
|
|
2352
|
+
output?: unknown;
|
|
2353
|
+
/** What went wrong, for `status="error"`. Always visible, under the row, not behind the disclosure. */
|
|
2354
|
+
error?: ReactNode;
|
|
2355
|
+
/** A rendered result in place of `output`'s code view: a list of hits, a chart, a diff. */
|
|
2356
|
+
children?: ReactNode;
|
|
2357
|
+
/** Open the details on mount. @default false */
|
|
2358
|
+
defaultOpen?: boolean;
|
|
2359
|
+
/** Controlled open state of the details. */
|
|
2360
|
+
open?: boolean;
|
|
2361
|
+
onOpenChange?: (open: boolean) => void;
|
|
2362
|
+
}
|
|
2363
|
+
/**
|
|
2364
|
+
* ToolCall — one tool an agent called, inside its turn: what it did, where it
|
|
2365
|
+
* is, and the arguments and result one click away.
|
|
2366
|
+
*
|
|
2367
|
+
* <ToolCall
|
|
2368
|
+
* name="search_docs"
|
|
2369
|
+
* title="Searched the docs"
|
|
2370
|
+
* status="complete"
|
|
2371
|
+
* input={{ query: "date range" }}
|
|
2372
|
+
* output={{ hits: 3 }}
|
|
2373
|
+
* />
|
|
2374
|
+
*
|
|
2375
|
+
* The row is the summary, so a thread of ten calls stays scannable; the details
|
|
2376
|
+
* are a disclosure because almost nobody reads them and the person checking
|
|
2377
|
+
* one call needs all of it. The status glyph is the one thing that moves: the
|
|
2378
|
+
* spinner swaps for the outcome when the call settles, which is the moment
|
|
2379
|
+
* worth seeing. A status change is announced once, politely, after mount — a
|
|
2380
|
+
* thread loaded from history announces nothing.
|
|
2381
|
+
*/
|
|
2382
|
+
declare function ToolCall({ name, title, status, statusLabel, input, output, error, children, defaultOpen, open, onOpenChange, className, ...props }: ToolCallProps): react.JSX.Element;
|
|
2383
|
+
declare namespace ToolCall {
|
|
2384
|
+
var displayName: string;
|
|
2385
|
+
}
|
|
2386
|
+
|
|
2387
|
+
declare const toolCallMeta: ComponentMeta;
|
|
2388
|
+
|
|
1873
2389
|
interface StreamingTextProps extends Omit<ComponentPropsWithoutRef<"p">, "children"> {
|
|
1874
2390
|
/**
|
|
1875
2391
|
* The text received SO FAR. Grow it as tokens arrive; this component assumes
|
|
@@ -2195,6 +2711,51 @@ declare const meterTrackVariants: (props?: ({
|
|
|
2195
2711
|
|
|
2196
2712
|
declare const meterMeta: ComponentMeta;
|
|
2197
2713
|
|
|
2714
|
+
interface NumberTickerProps extends Omit<ComponentPropsWithRef<"span">, "children" | "prefix"> {
|
|
2715
|
+
/** The number to show. When it changes, the digits roll to it. */
|
|
2716
|
+
value: number;
|
|
2717
|
+
/** How to write the number — currency, percent, fraction digits, compact. Passed to `Intl.NumberFormat`. */
|
|
2718
|
+
format?: Intl.NumberFormatOptions;
|
|
2719
|
+
/** BCP 47 locale(s) for the formatting. @default the runtime locale */
|
|
2720
|
+
locales?: string | string[];
|
|
2721
|
+
/** Before the number. A string is part of the number's text (and rolls in or out with it); an element is rendered as given. */
|
|
2722
|
+
prefix?: ReactNode;
|
|
2723
|
+
/** After the number ("+", " pts"). A string is part of the number's text; an element is rendered as given. */
|
|
2724
|
+
suffix?: ReactNode;
|
|
2725
|
+
/**
|
|
2726
|
+
* Which way the digits roll. `auto` rolls up when the value grows and down
|
|
2727
|
+
* when it shrinks, like an odometer; `up` / `down` fix the direction (a
|
|
2728
|
+
* countdown, a score that only climbs). @default "auto"
|
|
2729
|
+
*/
|
|
2730
|
+
trend?: "auto" | "up" | "down";
|
|
2731
|
+
/**
|
|
2732
|
+
* How much motion this component uses: `full` (default) inherits the app's
|
|
2733
|
+
* policy, `subtle` keeps feedback and drops the flourish, `off` stills it. It
|
|
2734
|
+
* can only turn motion down — it never overrides a reader's reduce-motion
|
|
2735
|
+
* setting.
|
|
2736
|
+
*/
|
|
2737
|
+
motion?: MotionLevel;
|
|
2738
|
+
}
|
|
2739
|
+
/**
|
|
2740
|
+
* A number that rolls to its new value digit by digit, like an odometer —
|
|
2741
|
+
* for a figure that changes in place while someone watches it: a dashboard
|
|
2742
|
+
* total, a live count, a price as options change. Each digit is a column that
|
|
2743
|
+
* turns to its new place; separators, signs and units hold still; a digit that
|
|
2744
|
+
* appears or goes away eases its width, so the text around it never jumps.
|
|
2745
|
+
*
|
|
2746
|
+
* The first render is at rest — a number on first paint is content, not news.
|
|
2747
|
+
* Under `subtle` (or reduced motion) the value simply updates. The visible
|
|
2748
|
+
* columns are aria-hidden; the whole written number is real text for assistive
|
|
2749
|
+
* tech and for copying. It is not a live region — pass `aria-live` when a
|
|
2750
|
+
* change should be announced.
|
|
2751
|
+
*/
|
|
2752
|
+
declare function NumberTicker({ value, format, locales, prefix, suffix, trend, motion, className, ...props }: NumberTickerProps): react.JSX.Element;
|
|
2753
|
+
declare namespace NumberTicker {
|
|
2754
|
+
var displayName: string;
|
|
2755
|
+
}
|
|
2756
|
+
|
|
2757
|
+
declare const numberTickerMeta: ComponentMeta;
|
|
2758
|
+
|
|
2198
2759
|
/**
|
|
2199
2760
|
* One segment's fill. The decorative tones lead, because a breakdown names
|
|
2200
2761
|
* categories (kinds of sale, file types, teams), not good and bad; the status
|
|
@@ -2357,7 +2918,19 @@ interface CartesianBaseProps {
|
|
|
2357
2918
|
xAxis?: boolean;
|
|
2358
2919
|
/** The vertical axis. @default false for values (columns), true for categories (horizontal bars) */
|
|
2359
2920
|
yAxis?: boolean;
|
|
2360
|
-
/**
|
|
2921
|
+
/**
|
|
2922
|
+
* How much motion this component uses: `full` (default) inherits the app's
|
|
2923
|
+
* policy, `subtle` keeps feedback and drops the flourish, `off` stills it. It
|
|
2924
|
+
* can only turn motion down — it never overrides a reader's reduce-motion
|
|
2925
|
+
* setting. The arrival and the data-change morph are the flourish; the hover
|
|
2926
|
+
* dim and the gliding cursor are the feedback `subtle` keeps.
|
|
2927
|
+
*/
|
|
2928
|
+
motion?: MotionLevel;
|
|
2929
|
+
/**
|
|
2930
|
+
* Play the arrival when the chart scrolls into view. `animate={false}` is
|
|
2931
|
+
* `motion="subtle"`.
|
|
2932
|
+
* @deprecated Use `motion="subtle"` (what `animate={false}` now maps to: no arrival, hover kept) or `motion="off"`.
|
|
2933
|
+
*/
|
|
2361
2934
|
animate?: boolean;
|
|
2362
2935
|
/** The highlighted row (controlled). `null` for none. */
|
|
2363
2936
|
activeIndex?: number | null;
|
|
@@ -2466,7 +3039,19 @@ interface PieChartProps {
|
|
|
2466
3039
|
tooltip?: boolean | ChartTooltipOptions;
|
|
2467
3040
|
valueFormatter?: ChartValueFormatter;
|
|
2468
3041
|
locale?: string;
|
|
2469
|
-
/**
|
|
3042
|
+
/**
|
|
3043
|
+
* How much motion this component uses: `full` (default) inherits the app's
|
|
3044
|
+
* policy, `subtle` keeps feedback and drops the flourish, `off` stills it. It
|
|
3045
|
+
* can only turn motion down — it never overrides a reader's reduce-motion
|
|
3046
|
+
* setting. The sweep, the slice morph and the rolling centre number are the
|
|
3047
|
+
* flourish; the hover pull-out and dim are the feedback `subtle` keeps.
|
|
3048
|
+
*/
|
|
3049
|
+
motion?: MotionLevel;
|
|
3050
|
+
/**
|
|
3051
|
+
* Sweep the slices in clockwise when the chart scrolls into view.
|
|
3052
|
+
* `animate={false}` is `motion="subtle"`.
|
|
3053
|
+
* @deprecated Use `motion="subtle"` (what `animate={false}` now maps to: no arrival, hover kept) or `motion="off"`.
|
|
3054
|
+
*/
|
|
2470
3055
|
animate?: boolean;
|
|
2471
3056
|
/** The pulled-out slice (controlled). */
|
|
2472
3057
|
activeIndex?: number | null;
|
|
@@ -2481,7 +3066,7 @@ interface PieChartProps {
|
|
|
2481
3066
|
* clockwise from 12 o'clock as the chart scrolls into view, and the active
|
|
2482
3067
|
* slice pulls outward.
|
|
2483
3068
|
*/
|
|
2484
|
-
declare function PieChart({ data, index, valueKey, label, categories, className, donut, centerLabel, separator, labels, labelContent, legend, tooltip, valueFormatter, locale, animate, activeIndex, defaultActiveIndex, onActiveIndexChange, }: PieChartProps): react.JSX.Element;
|
|
3069
|
+
declare function PieChart({ data, index, valueKey, label, categories, className, donut, centerLabel, separator, labels, labelContent, legend, tooltip, valueFormatter, locale, motion, animate, activeIndex, defaultActiveIndex, onActiveIndexChange, }: PieChartProps): react.JSX.Element;
|
|
2485
3070
|
declare namespace PieChart {
|
|
2486
3071
|
var displayName: string;
|
|
2487
3072
|
}
|
|
@@ -2514,7 +3099,19 @@ interface RadarChartProps {
|
|
|
2514
3099
|
tooltip?: boolean | ChartTooltipOptions;
|
|
2515
3100
|
valueFormatter?: ChartValueFormatter;
|
|
2516
3101
|
locale?: string;
|
|
2517
|
-
/**
|
|
3102
|
+
/**
|
|
3103
|
+
* How much motion this component uses: `full` (default) inherits the app's
|
|
3104
|
+
* policy, `subtle` keeps feedback and drops the flourish, `off` stills it. It
|
|
3105
|
+
* can only turn motion down — it never overrides a reader's reduce-motion
|
|
3106
|
+
* setting. The polygons growing in and morphing are the flourish; the
|
|
3107
|
+
* hover dot is the feedback `subtle` keeps.
|
|
3108
|
+
*/
|
|
3109
|
+
motion?: MotionLevel;
|
|
3110
|
+
/**
|
|
3111
|
+
* Grow the polygons from the centre when the chart scrolls into view.
|
|
3112
|
+
* `animate={false}` is `motion="subtle"`.
|
|
3113
|
+
* @deprecated Use `motion="subtle"` (what `animate={false}` now maps to: no arrival, hover kept) or `motion="off"`.
|
|
3114
|
+
*/
|
|
2518
3115
|
animate?: boolean;
|
|
2519
3116
|
activeIndex?: number | null;
|
|
2520
3117
|
defaultActiveIndex?: number | null;
|
|
@@ -2526,7 +3123,7 @@ interface RadarChartProps {
|
|
|
2526
3123
|
* spokes and one to three series. Polygons grow out from the centre as the
|
|
2527
3124
|
* chart scrolls into view.
|
|
2528
3125
|
*/
|
|
2529
|
-
declare function RadarChart({ data, index, series: rawSeries, label, className, grid, gridFill, filled, dots, radiusAxis, legend, tooltip, valueFormatter, locale, animate, activeIndex, defaultActiveIndex, onActiveIndexChange, }: RadarChartProps): react.JSX.Element;
|
|
3126
|
+
declare function RadarChart({ data, index, series: rawSeries, label, className, grid, gridFill, filled, dots, radiusAxis, legend, tooltip, valueFormatter, locale, motion, animate, activeIndex, defaultActiveIndex, onActiveIndexChange, }: RadarChartProps): react.JSX.Element;
|
|
2530
3127
|
declare namespace RadarChart {
|
|
2531
3128
|
var displayName: string;
|
|
2532
3129
|
}
|
|
@@ -2563,7 +3160,19 @@ interface RadialChartProps {
|
|
|
2563
3160
|
tooltip?: boolean | ChartTooltipOptions;
|
|
2564
3161
|
valueFormatter?: ChartValueFormatter;
|
|
2565
3162
|
locale?: string;
|
|
2566
|
-
/**
|
|
3163
|
+
/**
|
|
3164
|
+
* How much motion this component uses: `full` (default) inherits the app's
|
|
3165
|
+
* policy, `subtle` keeps feedback and drops the flourish, `off` stills it. It
|
|
3166
|
+
* can only turn motion down — it never overrides a reader's reduce-motion
|
|
3167
|
+
* setting. The draw-on, the ring morph and the rolling centre number are the
|
|
3168
|
+
* flourish; the hover dim is the feedback `subtle` keeps.
|
|
3169
|
+
*/
|
|
3170
|
+
motion?: MotionLevel;
|
|
3171
|
+
/**
|
|
3172
|
+
* Draw the rings round from their start when the chart scrolls into view.
|
|
3173
|
+
* `animate={false}` is `motion="subtle"`.
|
|
3174
|
+
* @deprecated Use `motion="subtle"` (what `animate={false}` now maps to: no arrival, hover kept) or `motion="off"`.
|
|
3175
|
+
*/
|
|
2567
3176
|
animate?: boolean;
|
|
2568
3177
|
activeIndex?: number | null;
|
|
2569
3178
|
defaultActiveIndex?: number | null;
|
|
@@ -2575,7 +3184,7 @@ interface RadialChartProps {
|
|
|
2575
3184
|
* gauge and `stacked` splits one ring between rows. Rings draw round from 12
|
|
2576
3185
|
* o'clock (or the gauge's left) as the chart scrolls into view.
|
|
2577
3186
|
*/
|
|
2578
|
-
declare function RadialChart({ data, index, valueKey, label, categories, className, max, sweep, stacked, track, labels, centerLabel, legend, tooltip, valueFormatter, locale, animate, activeIndex, defaultActiveIndex, onActiveIndexChange, }: RadialChartProps): react.JSX.Element;
|
|
3187
|
+
declare function RadialChart({ data, index, valueKey, label, categories, className, max, sweep, stacked, track, labels, centerLabel, legend, tooltip, valueFormatter, locale, motion, animate, activeIndex, defaultActiveIndex, onActiveIndexChange, }: RadialChartProps): react.JSX.Element;
|
|
2579
3188
|
declare namespace RadialChart {
|
|
2580
3189
|
var displayName: string;
|
|
2581
3190
|
}
|
|
@@ -2591,7 +3200,19 @@ interface SparklineProps extends Omit<ComponentPropsWithRef<"svg">, "children" |
|
|
|
2591
3200
|
variant?: "line" | "area" | "bar";
|
|
2592
3201
|
/** Colour by role. @default "primary" */
|
|
2593
3202
|
tone?: ChartTone;
|
|
2594
|
-
/**
|
|
3203
|
+
/**
|
|
3204
|
+
* How much motion this component uses: `full` (default) inherits the app's
|
|
3205
|
+
* policy, `subtle` keeps feedback and drops the flourish, `off` stills it. It
|
|
3206
|
+
* can only turn motion down — it never overrides a reader's reduce-motion
|
|
3207
|
+
* setting. Drawing on (or rising) as it scrolls into view is the
|
|
3208
|
+
* flourish, so `subtle` shows the finished line.
|
|
3209
|
+
*/
|
|
3210
|
+
motion?: MotionLevel;
|
|
3211
|
+
/**
|
|
3212
|
+
* Draw on (or rise) when it scrolls into view. `animate={false}` is
|
|
3213
|
+
* `motion="subtle"`.
|
|
3214
|
+
* @deprecated Use `motion="subtle"` (what `animate={false}` now maps to) or `motion="off"`.
|
|
3215
|
+
*/
|
|
2595
3216
|
animate?: boolean;
|
|
2596
3217
|
/** BCP 47 locale for the spoken numbers. */
|
|
2597
3218
|
locale?: string;
|
|
@@ -2602,7 +3223,7 @@ interface SparklineProps extends Omit<ComponentPropsWithRef<"svg">, "children" |
|
|
|
2602
3223
|
* stretched to fit, so it follows its container. For values a reader needs
|
|
2603
3224
|
* to look up, use AreaChart or LineChart.
|
|
2604
3225
|
*/
|
|
2605
|
-
declare function Sparkline({ data, label, variant, tone, animate, locale, className, ...props }: SparklineProps): react.JSX.Element;
|
|
3226
|
+
declare function Sparkline({ data, label, variant, tone, motion, animate, locale, className, ...props }: SparklineProps): react.JSX.Element;
|
|
2606
3227
|
declare namespace Sparkline {
|
|
2607
3228
|
var displayName: string;
|
|
2608
3229
|
}
|
|
@@ -2753,8 +3374,16 @@ type ToggleGroupProps = Omit<ComponentProps<typeof ToggleGroup$1>, "className">
|
|
|
2753
3374
|
* @default "default"
|
|
2754
3375
|
*/
|
|
2755
3376
|
appearance?: ToggleGroupAppearance;
|
|
3377
|
+
/**
|
|
3378
|
+
* How much motion this component uses: `full` (default) inherits the app's
|
|
3379
|
+
* policy, `subtle` keeps feedback and drops the glide, `off` stills it. It
|
|
3380
|
+
* can only turn motion down — it never overrides a reader's reduce-motion
|
|
3381
|
+
* setting.
|
|
3382
|
+
* @default "full"
|
|
3383
|
+
*/
|
|
3384
|
+
motion?: MotionLevel;
|
|
2756
3385
|
};
|
|
2757
|
-
declare function ToggleGroup({ className, appearance, ...props }: ToggleGroupProps): react.JSX.Element;
|
|
3386
|
+
declare function ToggleGroup({ className, appearance, motion, children, ...props }: ToggleGroupProps): react.JSX.Element;
|
|
2758
3387
|
declare namespace ToggleGroup {
|
|
2759
3388
|
var displayName: string;
|
|
2760
3389
|
}
|
|
@@ -3509,6 +4138,13 @@ interface NotificationBadgeProps extends ComponentPropsWithRef<"span">, Omit<Var
|
|
|
3509
4138
|
* corner. @default false
|
|
3510
4139
|
*/
|
|
3511
4140
|
overlay?: boolean;
|
|
4141
|
+
/**
|
|
4142
|
+
* How much motion this component uses: `full` (default) inherits the app's
|
|
4143
|
+
* policy, `subtle` keeps feedback and drops the flourish, `off` stills it. It
|
|
4144
|
+
* can only turn motion down — it never overrides a reader's reduce-motion
|
|
4145
|
+
* setting.
|
|
4146
|
+
*/
|
|
4147
|
+
motion?: MotionLevel;
|
|
3512
4148
|
}
|
|
3513
4149
|
/**
|
|
3514
4150
|
* An unread indicator. Two modes: a bare `dot`, or a `count` pill that shows
|
|
@@ -3516,11 +4152,15 @@ interface NotificationBadgeProps extends ComponentPropsWithRef<"span">, Omit<Var
|
|
|
3516
4152
|
* picks the fill (destructive default; primary/neutral for non-alarming counts),
|
|
3517
4153
|
* `size` scales it, and `overlay` pins it to the corner of a `relative` host.
|
|
3518
4154
|
*
|
|
4155
|
+
* A count that changes rolls to its new number (NumberTicker), and a badge that
|
|
4156
|
+
* shows up after being empty pops in (motion-appear) — but never on first
|
|
4157
|
+
* paint, so a page that loads with three unread does not perform them.
|
|
4158
|
+
*
|
|
3519
4159
|
* Decorative: it is `aria-hidden`, so the count reaches assistive tech through
|
|
3520
4160
|
* the host's own name ("Notifications, 3 unread"). Pass `aria-hidden={false}`
|
|
3521
4161
|
* only when the badge stands alone and its number is the information.
|
|
3522
4162
|
*/
|
|
3523
|
-
declare function NotificationBadge({ dot, count, max, tone, size, overlay, className, ...props }: NotificationBadgeProps): react.JSX.Element | null;
|
|
4163
|
+
declare function NotificationBadge({ dot, count, max, tone, size, overlay, motion, className, ...props }: NotificationBadgeProps): react.JSX.Element | null;
|
|
3524
4164
|
declare namespace NotificationBadge {
|
|
3525
4165
|
var displayName: string;
|
|
3526
4166
|
}
|
|
@@ -3559,6 +4199,14 @@ type CalendarProps = DayPickerProps & {
|
|
|
3559
4199
|
* @default false
|
|
3560
4200
|
*/
|
|
3561
4201
|
bare?: boolean;
|
|
4202
|
+
/**
|
|
4203
|
+
* How much motion this component uses: `full` (default) inherits the app's
|
|
4204
|
+
* policy, `subtle` keeps feedback and drops the month slide, `off` stills
|
|
4205
|
+
* it. It can only turn motion down — it never overrides a reader's
|
|
4206
|
+
* reduce-motion setting.
|
|
4207
|
+
* @default "full"
|
|
4208
|
+
*/
|
|
4209
|
+
motion?: MotionLevel;
|
|
3562
4210
|
};
|
|
3563
4211
|
/**
|
|
3564
4212
|
* Calendar — an owned wrapper over react-day-picker v9, themed entirely with
|
|
@@ -3571,7 +4219,7 @@ type CalendarProps = DayPickerProps & {
|
|
|
3571
4219
|
* const [date, setDate] = useState<Date>()
|
|
3572
4220
|
* <Calendar mode="single" selected={date} onSelect={setDate} />
|
|
3573
4221
|
*/
|
|
3574
|
-
declare function Calendar({ className, classNames, showOutsideDays, components, bare, ...props }: CalendarProps): react.JSX.Element;
|
|
4222
|
+
declare function Calendar({ className, classNames, showOutsideDays, components, bare, motion, animate, ...props }: CalendarProps): react.JSX.Element;
|
|
3575
4223
|
declare namespace Calendar {
|
|
3576
4224
|
var displayName: string;
|
|
3577
4225
|
}
|
|
@@ -3702,7 +4350,7 @@ declare const datePickerMeta: ComponentMeta;
|
|
|
3702
4350
|
* binds it via Base UI's `toastManager` prop.
|
|
3703
4351
|
*/
|
|
3704
4352
|
declare const toastManager: _base_ui_react.ToastManager<any>;
|
|
3705
|
-
/** Visual/semantic type of a toast — drives the
|
|
4353
|
+
/** Visual/semantic type of a toast — drives the status glyph and (for loading) a spinner. */
|
|
3706
4354
|
type ToastType = "success" | "error" | "warning" | "info" | "loading";
|
|
3707
4355
|
/** Screen anchor for the toast stack. */
|
|
3708
4356
|
type ToastPosition = "top-left" | "top-center" | "top-right" | "bottom-left" | "bottom-center" | "bottom-right";
|
|
@@ -3913,7 +4561,7 @@ type TriggerProps$1 = Omit<ComponentProps<typeof Accordion$1.Trigger>, "classNam
|
|
|
3913
4561
|
* e.g. a plus-becomes-an-× FAQ toggle:
|
|
3914
4562
|
*
|
|
3915
4563
|
* indicator={
|
|
3916
|
-
* <Icon name="plus" className="text-xs text-muted-foreground
|
|
4564
|
+
* <Icon name="plus" className="text-xs text-muted-foreground motion-interactive [[data-panel-open]_&]:rotate-45" />
|
|
3917
4565
|
* }
|
|
3918
4566
|
*
|
|
3919
4567
|
* When omitted, the default chevron (rotating 180° on open) is used.
|
|
@@ -5101,7 +5749,7 @@ type GroupProps$1 = Omit<ComponentProps<typeof Collapsible>, "children" | "class
|
|
|
5101
5749
|
* <PropertyRow label="Tint">…</PropertyRow>
|
|
5102
5750
|
* </PropertyGroup>
|
|
5103
5751
|
*/
|
|
5104
|
-
declare function PropertyGroup({ label, summary, className, children, ...props }: GroupProps$1): react.JSX.Element;
|
|
5752
|
+
declare function PropertyGroup({ label, summary, className, children, open: openProp, defaultOpen, onOpenChange, ...props }: GroupProps$1): react.JSX.Element;
|
|
5105
5753
|
declare namespace PropertyGroup {
|
|
5106
5754
|
var displayName: string;
|
|
5107
5755
|
}
|
|
@@ -5221,7 +5869,16 @@ declare function treeIndent(depth: number): string;
|
|
|
5221
5869
|
* `className="min-h-0 flex-1 overflow-y-auto scrollbar-quiet"` when the tree is
|
|
5222
5870
|
* the scrolling region itself.
|
|
5223
5871
|
*/
|
|
5224
|
-
|
|
5872
|
+
type TreeProps = ComponentProps<"div"> & {
|
|
5873
|
+
/**
|
|
5874
|
+
* How much motion this component uses: `full` (default) inherits the app's
|
|
5875
|
+
* policy, `subtle` keeps feedback and drops the flourish, `off` stills it.
|
|
5876
|
+
* It can only turn motion down — it never overrides a reader's reduce-motion
|
|
5877
|
+
* setting. Under `subtle` expanded rows appear at once instead of unfolding.
|
|
5878
|
+
*/
|
|
5879
|
+
motion?: MotionLevel;
|
|
5880
|
+
};
|
|
5881
|
+
declare function Tree({ className, children, onKeyDown, motion, ...props }: TreeProps): react.JSX.Element;
|
|
5225
5882
|
declare namespace Tree {
|
|
5226
5883
|
var displayName: string;
|
|
5227
5884
|
}
|
|
@@ -5547,10 +6204,23 @@ declare const appShellMeta: ComponentMeta;
|
|
|
5547
6204
|
type SidebarContextValue = {
|
|
5548
6205
|
collapsed: boolean;
|
|
5549
6206
|
icons: boolean;
|
|
6207
|
+
/**
|
|
6208
|
+
* The rail has been collapsed at some point in this mount, so labels that
|
|
6209
|
+
* mount now are coming back on a reopen and may fade in. False on first
|
|
6210
|
+
* paint, so an expanded rail's labels are simply there on load.
|
|
6211
|
+
*/
|
|
6212
|
+
reopened?: boolean;
|
|
5550
6213
|
};
|
|
5551
|
-
/** Read the rail's collapsed state — e.g. to swap a full wordmark for a mark. */
|
|
5552
6214
|
declare function useSidebar(): SidebarContextValue;
|
|
5553
6215
|
interface SidebarProps extends ComponentPropsWithRef<"aside"> {
|
|
6216
|
+
/**
|
|
6217
|
+
* How much motion this component uses: `full` (default) inherits the app's
|
|
6218
|
+
* policy, `subtle` keeps feedback and drops the collapse ease and the
|
|
6219
|
+
* current-page glide, `off` stills it. It can only turn motion down — it
|
|
6220
|
+
* never overrides a reader's reduce-motion setting.
|
|
6221
|
+
* @default "full"
|
|
6222
|
+
*/
|
|
6223
|
+
motion?: MotionLevel;
|
|
5554
6224
|
/**
|
|
5555
6225
|
* Collapse the rail to an icon-only width. Controlled — drive it from app
|
|
5556
6226
|
* state and wire a toggle (e.g. a Button in the header or footer). Collapsed,
|
|
@@ -5587,7 +6257,7 @@ interface SidebarProps extends ComponentPropsWithRef<"aside"> {
|
|
|
5587
6257
|
*/
|
|
5588
6258
|
surface?: "rail" | "page";
|
|
5589
6259
|
}
|
|
5590
|
-
declare function Sidebar({ collapsed, icons, variant, surface, className, children, ...props }: SidebarProps): react.JSX.Element;
|
|
6260
|
+
declare function Sidebar({ collapsed, icons, variant, surface, motion, className, children, ...props }: SidebarProps): react.JSX.Element;
|
|
5591
6261
|
declare namespace Sidebar {
|
|
5592
6262
|
var displayName: string;
|
|
5593
6263
|
}
|
|
@@ -5623,8 +6293,16 @@ declare function SidebarBrand({ mark, label, render, className, "aria-label": ar
|
|
|
5623
6293
|
declare namespace SidebarBrand {
|
|
5624
6294
|
var displayName: string;
|
|
5625
6295
|
}
|
|
5626
|
-
/**
|
|
5627
|
-
|
|
6296
|
+
/**
|
|
6297
|
+
* The scrollable nav region — grows to fill the rail between header and footer.
|
|
6298
|
+
*
|
|
6299
|
+
* The current-page fill is ONE element that glides to the active item (the
|
|
6300
|
+
* same engine and hand-off as SideNav), so a page change inside a persistent
|
|
6301
|
+
* layout reads as the marker moving rather than one row dimming and another
|
|
6302
|
+
* lighting. Each item keeps its own `data-[active]` fill as the server-render
|
|
6303
|
+
* fallback until the glide mounts.
|
|
6304
|
+
*/
|
|
6305
|
+
declare function SidebarNav({ className, children, ...props }: ComponentPropsWithRef<"nav">): react.JSX.Element;
|
|
5628
6306
|
declare namespace SidebarNav {
|
|
5629
6307
|
var displayName: string;
|
|
5630
6308
|
}
|
|
@@ -5674,6 +6352,14 @@ interface SideNavProps extends ComponentPropsWithRef<"nav"> {
|
|
|
5674
6352
|
* local rails; `sidebar` matches the app Sidebar for sub-navs inside chrome.
|
|
5675
6353
|
*/
|
|
5676
6354
|
activeVariant?: SideNavActiveVariant;
|
|
6355
|
+
/**
|
|
6356
|
+
* How much motion this component uses: `full` (default) inherits the app's
|
|
6357
|
+
* policy, `subtle` keeps feedback and drops the glide, `off` stills it. It
|
|
6358
|
+
* can only turn motion down — it never overrides a reader's reduce-motion
|
|
6359
|
+
* setting.
|
|
6360
|
+
* @default "full"
|
|
6361
|
+
*/
|
|
6362
|
+
motion?: MotionLevel;
|
|
5677
6363
|
}
|
|
5678
6364
|
/**
|
|
5679
6365
|
* SideNav — a lightweight, in-content vertical navigation list: the settings /
|
|
@@ -5689,7 +6375,7 @@ interface SideNavProps extends ComponentPropsWithRef<"nav"> {
|
|
|
5689
6375
|
* <SideNavItem label="Account" render={<Link to="/settings/account" />} />
|
|
5690
6376
|
* </SideNav>
|
|
5691
6377
|
*/
|
|
5692
|
-
declare function SideNav({ className, size, activeVariant, ...props }: SideNavProps): react.JSX.Element;
|
|
6378
|
+
declare function SideNav({ className, size, activeVariant, motion, children, ...props }: SideNavProps): react.JSX.Element;
|
|
5693
6379
|
declare namespace SideNav {
|
|
5694
6380
|
var displayName: string;
|
|
5695
6381
|
}
|
|
@@ -6363,6 +7049,13 @@ type CheckboxCardProps = Omit<ComponentProps<typeof Checkbox$1.Root>, "className
|
|
|
6363
7049
|
* and icon. Defaults to "neutral" (the primary/accent treatment).
|
|
6364
7050
|
*/
|
|
6365
7051
|
tone?: CheckboxCardTone;
|
|
7052
|
+
/**
|
|
7053
|
+
* How much motion this component uses: `full` (default) inherits the app's
|
|
7054
|
+
* policy, `subtle` keeps feedback and drops the flourish, `off` stills it.
|
|
7055
|
+
* It can only turn motion down — it never overrides a reader's reduce-motion
|
|
7056
|
+
* setting. Under `subtle` the tick fades in instead of drawing itself.
|
|
7057
|
+
*/
|
|
7058
|
+
motion?: MotionLevel;
|
|
6366
7059
|
};
|
|
6367
7060
|
/**
|
|
6368
7061
|
* CheckboxCard — a multi-select selection card: a card-sized Base UI Checkbox
|
|
@@ -6375,7 +7068,7 @@ type CheckboxCardProps = Omit<ComponentProps<typeof Checkbox$1.Root>, "className
|
|
|
6375
7068
|
* {REASONS.map((r) => <CheckboxCard key={r} value={r} title={r} />)}
|
|
6376
7069
|
* </CheckboxGroup>
|
|
6377
7070
|
*/
|
|
6378
|
-
declare function CheckboxCard({ className, title, description, icon, tone, ...props }: CheckboxCardProps): react.JSX.Element;
|
|
7071
|
+
declare function CheckboxCard({ className, title, description, icon, tone, motion, ...props }: CheckboxCardProps): react.JSX.Element;
|
|
6379
7072
|
declare namespace CheckboxCard {
|
|
6380
7073
|
var displayName: string;
|
|
6381
7074
|
}
|
|
@@ -6808,6 +7501,14 @@ interface ThemeSwitcherProps extends Omit<ComponentPropsWithRef<"div">, "onChang
|
|
|
6808
7501
|
onValueChange: (value: ThemeMode) => void;
|
|
6809
7502
|
/** Accessible label for the group. @default "Theme" */
|
|
6810
7503
|
label?: string;
|
|
7504
|
+
/**
|
|
7505
|
+
* How much motion this component uses: `full` (default) inherits the app's
|
|
7506
|
+
* policy, `subtle` keeps feedback and drops the glide, `off` stills it. It
|
|
7507
|
+
* can only turn motion down — it never overrides a reader's reduce-motion
|
|
7508
|
+
* setting.
|
|
7509
|
+
* @default "full"
|
|
7510
|
+
*/
|
|
7511
|
+
motion?: MotionLevel;
|
|
6811
7512
|
}
|
|
6812
7513
|
/**
|
|
6813
7514
|
* ThemeSwitcher — a segmented light / dark / system switch. Presentational:
|
|
@@ -6824,7 +7525,7 @@ interface ThemeSwitcherProps extends Omit<ComponentPropsWithRef<"div">, "onChang
|
|
|
6824
7525
|
*
|
|
6825
7526
|
* Requires a `desktop` icon in the active IconSet (alongside `sun` + `moon`).
|
|
6826
7527
|
*/
|
|
6827
|
-
declare function ThemeSwitcher({ value, onValueChange, label, className, ref, ...props }: ThemeSwitcherProps): react.JSX.Element;
|
|
7528
|
+
declare function ThemeSwitcher({ value, onValueChange, label, motion, className, ref, ...props }: ThemeSwitcherProps): react.JSX.Element;
|
|
6828
7529
|
declare namespace ThemeSwitcher {
|
|
6829
7530
|
var displayName: string;
|
|
6830
7531
|
}
|
|
@@ -7321,16 +8022,32 @@ interface FeedbackProps extends Omit<ComponentPropsWithRef<"form">, "onSubmit">
|
|
|
7321
8022
|
ratings?: FeedbackRating[];
|
|
7322
8023
|
/** Called with the rating + message when the form is submitted. */
|
|
7323
8024
|
onSubmit?: (data: FeedbackData) => void;
|
|
8025
|
+
/** The line shown, and read out, once the feedback is sent. @default "Thanks for the feedback." */
|
|
8026
|
+
successMessage?: string;
|
|
8027
|
+
/**
|
|
8028
|
+
* How much motion this component uses: `full` (default) inherits the app's
|
|
8029
|
+
* policy, `subtle` keeps feedback and drops the flourish, `off` stills it.
|
|
8030
|
+
* It can only turn motion down — it never overrides a reader's reduce-motion
|
|
8031
|
+
* setting. The drawn check is the flourish; the thanks line stays.
|
|
8032
|
+
* @default "full"
|
|
8033
|
+
*/
|
|
8034
|
+
motion?: MotionLevel;
|
|
7324
8035
|
}
|
|
7325
8036
|
/**
|
|
7326
8037
|
* Feedback — a compact feedback popover. Composes our Popover + Textarea +
|
|
7327
8038
|
* Button + Toggle. A secondary trigger opens a small form with a row of rating
|
|
7328
|
-
* toggles and a message field; submitting calls `onSubmit
|
|
7329
|
-
* popover. Rating and message are managed internally:
|
|
8039
|
+
* toggles and a message field; submitting calls `onSubmit`, says thanks for a
|
|
8040
|
+
* moment, then closes the popover. Rating and message are managed internally:
|
|
7330
8041
|
*
|
|
7331
8042
|
* <Feedback onSubmit={({ rating, message }) => report(rating, message)} />
|
|
8043
|
+
*
|
|
8044
|
+
* The thanks used to be missing: the popover simply vanished on submit, which
|
|
8045
|
+
* looks exactly like the form being dismissed or the message being lost. Now
|
|
8046
|
+
* the form gives way to a drawn check and a line in the same box (the two
|
|
8047
|
+
* share one grid cell, so the popover does not resize), and the popover closes
|
|
8048
|
+
* on its own after a short read.
|
|
7332
8049
|
*/
|
|
7333
|
-
declare function Feedback({ label, heading, placeholder, submitLabel, ratings, onSubmit, className, ...props }: FeedbackProps): react.JSX.Element;
|
|
8050
|
+
declare function Feedback({ label, heading, placeholder, submitLabel, ratings, successMessage, onSubmit, motion, className, ...props }: FeedbackProps): react.JSX.Element;
|
|
7334
8051
|
declare namespace Feedback {
|
|
7335
8052
|
var displayName: string;
|
|
7336
8053
|
}
|
|
@@ -7729,6 +8446,16 @@ interface CarouselProps {
|
|
|
7729
8446
|
* the arrows only; the dots and the autoplay toggle keep their own shells.
|
|
7730
8447
|
*/
|
|
7731
8448
|
arrowClassName?: string;
|
|
8449
|
+
/**
|
|
8450
|
+
* How much motion this component uses: `full` (default) inherits the app's
|
|
8451
|
+
* policy, `subtle` keeps feedback and drops the glide, `off` stills it. It
|
|
8452
|
+
* can only turn motion down — it never overrides a reader's reduce-motion
|
|
8453
|
+
* setting. Under `subtle` the slides still travel (that is the answer to
|
|
8454
|
+
* "next") and the active dot snaps; `off` also makes the slides cut and
|
|
8455
|
+
* pauses autoplay, as reduced motion does.
|
|
8456
|
+
* @default "full"
|
|
8457
|
+
*/
|
|
8458
|
+
motion?: MotionLevel;
|
|
7732
8459
|
}
|
|
7733
8460
|
/**
|
|
7734
8461
|
* Carousel — a generic, accessible, zero-dependency slide carousel. Transform
|
|
@@ -7744,7 +8471,7 @@ interface CarouselProps {
|
|
|
7744
8471
|
*
|
|
7745
8472
|
* Motion is token-driven, so transitions go instant under the motion policy.
|
|
7746
8473
|
*/
|
|
7747
|
-
declare function Carousel({ children, slidesToShow, gap, loop, autoplay, arrows, dots, counter, draggable, index: controlledIndex, defaultIndex, onIndexChange, label, className, slideClassName, arrowClassName, }: CarouselProps): react.JSX.Element | null;
|
|
8474
|
+
declare function Carousel({ children, slidesToShow, gap, loop, autoplay, arrows, dots, counter, draggable, index: controlledIndex, defaultIndex, onIndexChange, label, className, slideClassName, arrowClassName, motion, }: CarouselProps): react.JSX.Element | null;
|
|
7748
8475
|
declare namespace Carousel {
|
|
7749
8476
|
var displayName: string;
|
|
7750
8477
|
}
|
|
@@ -8170,6 +8897,14 @@ interface ChatComposerProps extends Omit<ComponentPropsWithRef<"form">, "onSubmi
|
|
|
8170
8897
|
}) => ReactNode);
|
|
8171
8898
|
/** Ref to the underlying textarea — for focusing after a send, or on mount. */
|
|
8172
8899
|
fieldRef?: ComponentPropsWithRef<"textarea">["ref"];
|
|
8900
|
+
/**
|
|
8901
|
+
* How much motion this component uses: `full` (default) inherits the app's
|
|
8902
|
+
* policy, `subtle` keeps feedback and drops the flourish, `off` stills it.
|
|
8903
|
+
* It can only turn motion down — it never overrides a reader's reduce-motion
|
|
8904
|
+
* setting. Under `subtle` the field snaps to its new height and the send and
|
|
8905
|
+
* stop glyphs fade rather than morph.
|
|
8906
|
+
*/
|
|
8907
|
+
motion?: MotionLevel;
|
|
8173
8908
|
}
|
|
8174
8909
|
/**
|
|
8175
8910
|
* ChatComposer — the input half of a conversation.
|
|
@@ -8203,7 +8938,7 @@ interface ChatComposerProps extends Omit<ComponentPropsWithRef<"form">, "onSubmi
|
|
|
8203
8938
|
* Interrupting a long generation is the most common thing a reader wants
|
|
8204
8939
|
* during one, and it belongs where their cursor already is.
|
|
8205
8940
|
*/
|
|
8206
|
-
declare function ChatComposer({ value, defaultValue, onValueChange, onSend, allowEmpty, placeholder, sendOn, busy, onStop, disabled, invalid, attachments, leading, actions, onAttach, label, sendLabel, stopLabel, footer, fieldRef, className, children, ...props }: ChatComposerProps): react.JSX.Element;
|
|
8941
|
+
declare function ChatComposer({ value, defaultValue, onValueChange, onSend, allowEmpty, placeholder, sendOn, busy, onStop, disabled, invalid, attachments, leading, actions, onAttach, label, sendLabel, stopLabel, footer, fieldRef, motion, className, children, ...props }: ChatComposerProps): react.JSX.Element;
|
|
8207
8942
|
declare namespace ChatComposer {
|
|
8208
8943
|
var displayName: string;
|
|
8209
8944
|
}
|
|
@@ -8375,6 +9110,68 @@ declare namespace Message {
|
|
|
8375
9110
|
|
|
8376
9111
|
declare const messageMeta: ComponentMeta;
|
|
8377
9112
|
|
|
9113
|
+
/** One choice in a reaction picker: the emoji and the name a screen reader says for it. */
|
|
9114
|
+
interface Reaction {
|
|
9115
|
+
emoji: string;
|
|
9116
|
+
/** The accessible name, e.g. "Heart". An emoji's own spoken name varies by platform. */
|
|
9117
|
+
label: string;
|
|
9118
|
+
}
|
|
9119
|
+
/** The quick set a picker offers when you pass none — the reactions most chats lead with. */
|
|
9120
|
+
declare const DEFAULT_REACTIONS: readonly Reaction[];
|
|
9121
|
+
interface ReactionChoiceProps {
|
|
9122
|
+
/** The choices, in order. @default DEFAULT_REACTIONS */
|
|
9123
|
+
reactions?: readonly Reaction[];
|
|
9124
|
+
/** The emoji the reader has already reacted with: shown pressed, and choosing one again removes it. */
|
|
9125
|
+
selected?: readonly string[];
|
|
9126
|
+
/** Called with the emoji the reader chose. Toggle it in or out of `selected`. */
|
|
9127
|
+
onSelect?: (emoji: string) => void;
|
|
9128
|
+
/**
|
|
9129
|
+
* How much motion this component uses: `full` (default) inherits the app's
|
|
9130
|
+
* policy, `subtle` keeps the press and drops the wave of emoji blooming in,
|
|
9131
|
+
* `off` stills it. It can only turn motion down.
|
|
9132
|
+
*/
|
|
9133
|
+
motion?: MotionLevel;
|
|
9134
|
+
}
|
|
9135
|
+
interface ReactionPickerProps extends ReactionChoiceProps, Omit<ToolbarProps, "children" | "onSelect"> {
|
|
9136
|
+
/** Trailing controls after the emoji — a "more" button that opens a full picker. */
|
|
9137
|
+
children?: ReactNode;
|
|
9138
|
+
}
|
|
9139
|
+
/**
|
|
9140
|
+
* ReactionPicker — the quick row of emoji you react to a message with. A
|
|
9141
|
+
* toolbar: one stop in the tab order, the arrow keys move along it, and each
|
|
9142
|
+
* emoji is a toggle reporting `aria-pressed`. Opening it plays a short wave as
|
|
9143
|
+
* the emoji bloom in one after another, and the one under the pointer
|
|
9144
|
+
* magnifies. Put it in a Popover from an add-reaction control — or use
|
|
9145
|
+
* `BubbleReactionAdd`, which is exactly that — and use `MenuReactions` for the
|
|
9146
|
+
* same row inside a right-click menu.
|
|
9147
|
+
*
|
|
9148
|
+
* <ReactionPicker selected={mine} onSelect={(emoji) => toggle(message.id, emoji)} />
|
|
9149
|
+
*/
|
|
9150
|
+
declare function ReactionPicker({ reactions, selected, onSelect, motion, className, children, "aria-label": ariaLabel, ...props }: ReactionPickerProps): react.JSX.Element;
|
|
9151
|
+
declare namespace ReactionPicker {
|
|
9152
|
+
var displayName: string;
|
|
9153
|
+
}
|
|
9154
|
+
interface MenuReactionsProps extends ReactionChoiceProps, Omit<ComponentProps<typeof Menu$1.Group>, "className" | "children" | "onSelect"> {
|
|
9155
|
+
className?: string;
|
|
9156
|
+
}
|
|
9157
|
+
/**
|
|
9158
|
+
* The same quick row as the first group of a menu — the reactions above Reply
|
|
9159
|
+
* and Copy when a message is right-clicked or long-pressed. Each emoji is a
|
|
9160
|
+
* checkbox menu item (checked when the reader has reacted with it), so the
|
|
9161
|
+
* arrow keys and typeahead reach it like any other row, and choosing one
|
|
9162
|
+
* closes the menu. Works in `MenuContent` and `ContextMenuContent` alike.
|
|
9163
|
+
*
|
|
9164
|
+
* <ContextMenuContent>
|
|
9165
|
+
* <MenuReactions selected={mine} onSelect={toggle} />
|
|
9166
|
+
* <ContextMenuSeparator />
|
|
9167
|
+
* <ContextMenuItem>Reply</ContextMenuItem>
|
|
9168
|
+
* </ContextMenuContent>
|
|
9169
|
+
*/
|
|
9170
|
+
declare function MenuReactions({ reactions, selected, onSelect, motion, className, "aria-label": ariaLabel, ...props }: MenuReactionsProps): react.JSX.Element;
|
|
9171
|
+
declare namespace MenuReactions {
|
|
9172
|
+
var displayName: string;
|
|
9173
|
+
}
|
|
9174
|
+
|
|
8378
9175
|
interface BubbleProps extends ComponentPropsWithRef<"div"> {
|
|
8379
9176
|
/**
|
|
8380
9177
|
* Surface treatment. `muted` for the other party, `primary` for the reader's
|
|
@@ -8409,8 +9206,9 @@ interface BubbleProps extends ComponentPropsWithRef<"div"> {
|
|
|
8409
9206
|
* <Message>
|
|
8410
9207
|
* <Bubble>Shipping it now.</Bubble>
|
|
8411
9208
|
* <BubbleReactions>
|
|
8412
|
-
* <BubbleReaction emoji="🎉" count={3} active onClick={() => toggle("🎉")} />
|
|
8413
|
-
* <BubbleReaction emoji="👀" count={1} onClick={() => toggle("👀")} />
|
|
9209
|
+
* <BubbleReaction emoji="🎉" label="Party" count={3} active onClick={() => toggle("🎉")} />
|
|
9210
|
+
* <BubbleReaction emoji="👀" label="Eyes" count={1} onClick={() => toggle("👀")} />
|
|
9211
|
+
* <BubbleReactionAdd selected={mine} onSelect={toggle} />
|
|
8414
9212
|
* </BubbleReactions>
|
|
8415
9213
|
* </Message>
|
|
8416
9214
|
*
|
|
@@ -8427,31 +9225,82 @@ interface BubbleReactionsProps extends ComponentPropsWithRef<"div"> {
|
|
|
8427
9225
|
/** Match the enclosing `<Bubble align>` so the row hangs off the right edge. @default "start" */
|
|
8428
9226
|
align?: "start" | "end";
|
|
8429
9227
|
}
|
|
8430
|
-
/**
|
|
8431
|
-
|
|
9228
|
+
/**
|
|
9229
|
+
* The row of reaction pills belonging to one bubble. Render it for every
|
|
9230
|
+
* message, even one with no reactions yet: it hides itself while empty, and
|
|
9231
|
+
* staying mounted is how it knows the first reaction someone adds is new
|
|
9232
|
+
* (and so celebrates) rather than one the page loaded with.
|
|
9233
|
+
*/
|
|
9234
|
+
declare function BubbleReactions({ align, className, children, ...props }: BubbleReactionsProps): react.JSX.Element;
|
|
8432
9235
|
declare namespace BubbleReactions {
|
|
8433
9236
|
var displayName: string;
|
|
8434
9237
|
}
|
|
8435
9238
|
interface BubbleReactionProps extends Omit<ComponentPropsWithRef<"button">, "children"> {
|
|
8436
9239
|
/** The reaction glyph. Rendered as text, so any emoji works with no icon mapping. */
|
|
8437
9240
|
emoji: ReactNode;
|
|
9241
|
+
/**
|
|
9242
|
+
* What the emoji means, for the accessible name ("Party, 3"). An emoji's own
|
|
9243
|
+
* spoken name varies by platform; without a label the pill is named by its
|
|
9244
|
+
* count alone.
|
|
9245
|
+
*/
|
|
9246
|
+
label?: string;
|
|
8438
9247
|
/** How many people reacted this way. Hidden at 1 — the pill already says "one". */
|
|
8439
9248
|
count?: number;
|
|
8440
9249
|
/** The reader reacted this way. Drives `aria-pressed`, not just the styling. */
|
|
8441
9250
|
active?: boolean;
|
|
9251
|
+
/**
|
|
9252
|
+
* How much motion this component uses: `full` (default) inherits the app's
|
|
9253
|
+
* policy, `subtle` keeps the tint and the count changing and drops the
|
|
9254
|
+
* bloom and the spray of emoji, `off` stills it. It can only turn motion down.
|
|
9255
|
+
*/
|
|
9256
|
+
motion?: MotionLevel;
|
|
8442
9257
|
}
|
|
8443
9258
|
/**
|
|
8444
9259
|
* One reaction pill — a toggle, not a label. It reports `aria-pressed` because
|
|
8445
9260
|
* "did I react to this" is state a screen-reader user needs before deciding
|
|
8446
9261
|
* whether pressing it adds or removes their reaction.
|
|
9262
|
+
*
|
|
9263
|
+
* When it becomes the reader's own — pressed on, or added from a picker — the
|
|
9264
|
+
* emoji blooms and a spray of copies of it bursts out, the way a chat app
|
|
9265
|
+
* answers a reaction, and the count rolls. Pressing it off is quiet. A pill
|
|
9266
|
+
* the page loads with never plays.
|
|
8447
9267
|
*/
|
|
8448
|
-
declare function BubbleReaction({ emoji, count, active, className, ...props }: BubbleReactionProps): react.JSX.Element;
|
|
9268
|
+
declare function BubbleReaction({ emoji, label, count, active, motion, className, ...props }: BubbleReactionProps): react.JSX.Element;
|
|
8449
9269
|
declare namespace BubbleReaction {
|
|
8450
9270
|
var displayName: string;
|
|
8451
9271
|
}
|
|
9272
|
+
interface BubbleReactionAddProps extends Omit<ComponentPropsWithRef<"button">, "children" | "onSelect"> {
|
|
9273
|
+
/** The choices the picker offers. @default DEFAULT_REACTIONS */
|
|
9274
|
+
reactions?: readonly Reaction[];
|
|
9275
|
+
/** The emoji the reader has already reacted with, shown pressed in the picker. */
|
|
9276
|
+
selected?: readonly string[];
|
|
9277
|
+
/** Called with the emoji the reader chose; the picker closes. Toggle it in or out of `selected`. */
|
|
9278
|
+
onSelect?: (emoji: string) => void;
|
|
9279
|
+
/** The accessible name. @default "Add reaction" */
|
|
9280
|
+
label?: string;
|
|
9281
|
+
/** Passed to the picker: how much motion it uses. */
|
|
9282
|
+
motion?: MotionLevel;
|
|
9283
|
+
}
|
|
9284
|
+
/**
|
|
9285
|
+
* The add-reaction pill at the end of a reaction row: a smiley that opens a
|
|
9286
|
+
* ReactionPicker above it. Choosing an emoji closes the picker and hands the
|
|
9287
|
+
* emoji to `onSelect`; add it to the row and the new pill celebrates as it
|
|
9288
|
+
* arrives.
|
|
9289
|
+
*
|
|
9290
|
+
* <BubbleReactions>
|
|
9291
|
+
* {pills}
|
|
9292
|
+
* <BubbleReactionAdd selected={mine} onSelect={toggle} />
|
|
9293
|
+
* </BubbleReactions>
|
|
9294
|
+
*/
|
|
9295
|
+
declare function BubbleReactionAdd({ reactions, selected, onSelect, label, motion, className, ...props }: BubbleReactionAddProps): react.JSX.Element;
|
|
9296
|
+
declare namespace BubbleReactionAdd {
|
|
9297
|
+
var displayName: string;
|
|
9298
|
+
}
|
|
8452
9299
|
|
|
8453
9300
|
declare const bubbleMeta: ComponentMeta;
|
|
8454
9301
|
|
|
9302
|
+
declare const reactionPickerMeta: ComponentMeta;
|
|
9303
|
+
|
|
8455
9304
|
interface AttachmentProps extends Omit<ComponentPropsWithRef<"div">, "onClick"> {
|
|
8456
9305
|
/**
|
|
8457
9306
|
* File name. When it runs out of room the stem truncates and the extension
|
|
@@ -8854,8 +9703,16 @@ type CopySource = string | (() => string | Promise<string>);
|
|
|
8854
9703
|
*
|
|
8855
9704
|
* const { copy, copied } = useCopy(address)
|
|
8856
9705
|
* <Button variant="ghost" size="icon-sm" aria-label="Copy address" onClick={copy}>
|
|
8857
|
-
* <
|
|
9706
|
+
* <span aria-hidden="true" className="motion-icon-swap">
|
|
9707
|
+
* <span data-active={!copied} className="inline-flex"><Icon name="copy" /></span>
|
|
9708
|
+
* <span data-active={copied} className="inline-flex"><Icon name="check" /></span>
|
|
9709
|
+
* </span>
|
|
8858
9710
|
* </Button>
|
|
9711
|
+
* <span role="status" className="sr-only">{copied ? "Copied" : ""}</span>
|
|
9712
|
+
*
|
|
9713
|
+
* Both glyphs stay mounted so the copy mark cross-fades into the check (a
|
|
9714
|
+
* ternary swap snaps between frames); the status line says it to a screen
|
|
9715
|
+
* reader, which a glyph change does not. CodeBlock is the reference.
|
|
8859
9716
|
*
|
|
8860
9717
|
* Text that costs something to produce (a file to fetch, a document to
|
|
8861
9718
|
* serialise) is passed as a function, called only on click:
|
|
@@ -8915,60 +9772,6 @@ interface SmoothWheelOptions {
|
|
|
8915
9772
|
*/
|
|
8916
9773
|
declare function useSmoothWheel({ axis, mapVertical, smooth, }?: SmoothWheelOptions): (node: HTMLElement | null) => void;
|
|
8917
9774
|
|
|
8918
|
-
|
|
8919
|
-
* The palette: nine colour families and a scale under every tone, generated
|
|
8920
|
-
* for whatever theme is painting. `scripts/build-palette.mjs` writes this into
|
|
8921
|
-
* `src/palette.css`; `palette.test.ts` holds every built-in theme to it.
|
|
8922
|
-
*
|
|
8923
|
-
* The contract is roles, and roles are not enough for a product. Tags, avatars,
|
|
8924
|
-
* labels and illustration need more colours than three tones, and raw Tailwind
|
|
8925
|
-
* steps ignore the theme, so they were banned outright. These follow it:
|
|
8926
|
-
*
|
|
8927
|
-
* - A **family** (red, orange, yellow, green, teal, blue, purple, pink) keeps
|
|
8928
|
-
* its own hue and leans toward the brand by half the gap, at most 15°, and
|
|
8929
|
-
* only as far as the brand has colour to lean toward (an ink-black primary
|
|
8930
|
-
* pulls nothing). Material 3's harmonize, the same lean the customizer gives
|
|
8931
|
-
* status colours. Lightness and chroma are fixed per step, fitted inside sRGB
|
|
8932
|
-
* across the whole lean, so no brand can push a step out of gamut.
|
|
8933
|
-
* - **neutral** is the theme's own page and ink mixed in steps, so it carries
|
|
8934
|
-
* whatever tint the theme's surfaces do.
|
|
8935
|
-
* - Every **tone** (tone-1…3, info, warning, success, destructive) gets a scale
|
|
8936
|
-
* on one shared ladder of depths, and the tone lands exactly on the step
|
|
8937
|
-
* nearest its own lightness: a light status colour in dark mode is 800, a
|
|
8938
|
-
* mid one is 500. The steps either side stretch to keep the ladder's ends,
|
|
8939
|
-
* so a tone near one end does not crush five steps into the little room
|
|
8940
|
-
* left past it, and tone-1-100 and success-100 are the same depth.
|
|
8941
|
-
*
|
|
8942
|
-
* Steps follow the mode rather than literal lightness: a low step is always
|
|
8943
|
-
* near the page and a high step always far from it, so 800 text on a 100
|
|
8944
|
-
* wash reads in both modes with no `dark:` (Sable has none).
|
|
8945
|
-
*/
|
|
8946
|
-
declare const PALETTE_STEPS: readonly [50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950];
|
|
8947
|
-
type PaletteStep = (typeof PALETTE_STEPS)[number];
|
|
8948
|
-
interface PaletteFamily {
|
|
8949
|
-
name: string;
|
|
8950
|
-
/** The family's own hue, before the lean. */
|
|
8951
|
-
hue: number;
|
|
8952
|
-
/** Step 500, per mode: lightness and the chroma the family is aiming for. */
|
|
8953
|
-
light: {
|
|
8954
|
-
l: number;
|
|
8955
|
-
c: number;
|
|
8956
|
-
};
|
|
8957
|
-
dark: {
|
|
8958
|
-
l: number;
|
|
8959
|
-
c: number;
|
|
8960
|
-
};
|
|
8961
|
-
}
|
|
8962
|
-
declare const PALETTE_FAMILIES: readonly PaletteFamily[];
|
|
8963
|
-
/** The hue families by name — the values Badge, Pill and StatusDot take on `tone`. */
|
|
8964
|
-
declare const PALETTE_COLORS: readonly ["red", "orange", "yellow", "green", "teal", "blue", "purple", "pink"];
|
|
8965
|
-
type PaletteColor = (typeof PALETTE_COLORS)[number];
|
|
8966
|
-
declare const isPaletteColor: (value: unknown) => value is PaletteColor;
|
|
8967
|
-
/** Tokens that get a scale of their own, `--<token>-50` … `--<token>-950`. */
|
|
8968
|
-
declare const PALETTE_TONES: readonly ["tone-1", "tone-2", "tone-3", "tone-info", "tone-warning", "success", "destructive"];
|
|
8969
|
-
/** Everything the palette names: neutral, the families, then the tone scales. */
|
|
8970
|
-
declare const PALETTE_SCALES: readonly ["neutral", ...string[], "tone-1", "tone-2", "tone-3", "tone-info", "tone-warning", "success", "destructive"];
|
|
8971
|
-
|
|
8972
|
-
declare const SABLE_UI_VERSION: "0.13.2";
|
|
9775
|
+
declare const SABLE_UI_VERSION: "0.15.0";
|
|
8973
9776
|
|
|
8974
|
-
export { Accordion, AccordionItem, AccordionPanel, AccordionTrigger, AlertDialog, AlertDialogClose, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogTitle, AlertDialogTrigger, AppHeader, type AppHeaderProps, AppShell, type AppShellProps, AreaChart, type AreaChartProps, type ArtTone, Attachment, type AttachmentProps, Avatar, AvatarFallback, AvatarGroup, AvatarGroupCount, type AvatarGroupCountProps, type AvatarGroupProps, AvatarImage, type AvatarProps, AvatarRoot, BADGE_APPEARANCES, BADGE_TONES, Badge, type BadgeAppearance, type BadgeProps, type BadgeTone, Banner, type BannerProps, BarChart, type BarChartProps, BottomNav, BottomNavItem, type BottomNavItemProps, BreadcrumbItem, type BreadcrumbItemProps, BreadcrumbLink, type BreadcrumbLinkProps, BreadcrumbPage, type BreadcrumbPageProps, BreadcrumbSeparator, type BreadcrumbSeparatorProps, Breadcrumbs, type BreadcrumbsProps, Browser, type BrowserProps, Bubble, type BubbleProps, BubbleReaction, type BubbleReactionProps, BubbleReactions, type BubbleReactionsProps, Button, type ButtonBleed, ButtonGroup, type ButtonGroupProps, type ButtonProps, CHART_SERIES_COUNT, COMPONENT_GROUPS, COMPONENT_TAXONOMY, Calendar, type CalendarProps, Card, CardAction, CardContent, type CardContentProps, CardDescription, CardFooter, type CardFooterProps, CardHeader, CardList, type CardProps, CardTitle, type CardTitleProps, CaretMenu, CaretMenuItem, type CaretMenuItemProps, type CaretMenuProps, type CaretTrigger, type CaretTriggerField, type CaretTriggerMatch, Carousel, type CarouselProps, type CarouselSlidesToShow, type ChartCategories, type ChartCenterLabel, type ChartCurve, type ChartDatum, type ChartSeries, type ChartTone, type ChartTooltipIndicator, type ChartTooltipOptions, type ChartValueFormatter, ChatComposer, type ChatComposerProps, Checkbox, CheckboxCard, type CheckboxCardProps, type CheckboxCardTone, CheckboxGroup, type CheckboxGroupProps, Code, CodeBlock, type CodeBlockProps, CodeHighlightProvider, type CodeHighlighter, type CodeProps, Collapsible, CollapsibleIndicator, CollapsiblePanel, CollapsibleTrigger, ColorField, type ColorFieldProps, Combobox, ComboboxChips, ComboboxClear, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxGroupLabel, ComboboxInput, ComboboxItem, type ComboboxItemGroup, ComboboxItemIndicator, ComboboxList, ComboboxPortal, type ComboboxProps, ComboboxValue, ComboboxVirtualList, type ComboboxVirtualListProps, type CommandFilter, type CommandItem, CommandMenu, CommandMenuGroup, type CommandMenuGroupProps, CommandMenuItem, type CommandMenuItemProps, CommandMenuPanel, type CommandMenuPanelProps, type CommandMenuProps, CommandMenuTrigger, type CommandMenuTriggerProps, type ComponentGroup, type ComponentGuidance, ComponentMeta, type ComponentRegister, type ConstraintFlag, ContextCard, ContextCardArrow, ContextCardContent, ContextCardPortal, ContextCardTrigger, ContextMenu, ContextMenuContent, ContextMenuGroup, ContextMenuGroupLabel, ContextMenuItem, ContextMenuPortal, ContextMenuSeparator, ContextMenuTrigger, type CopySource, DataTable, type DataTableColumn, type DataTableProps, type DataTableRowKey, DatePicker, type DatePickerProps, DateTile, type DateTileProps, Density, DensityProvider, Density as DensityValue, DestructiveActionModal, type DestructiveActionModalProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, type DialogSize, DialogTitle, DialogTrigger, DisclosurePicker, DisclosurePickerEmpty, DisclosurePickerList, type DisclosurePickerListProps, DisclosurePickerOption, type DisclosurePickerOptionProps, DisclosurePickerPanel, type DisclosurePickerPanelProps, type DisclosurePickerProps, type DisclosurePickerSearch, DisclosurePickerTrigger, type DisclosurePickerTriggerProps, EmptyState, type EmptyStateProps, Entity, type EntityProps, Feedback, type FeedbackData, type FeedbackProps, type FeedbackRating, Field, type FieldProps, Fieldset, FieldsetContent, FieldsetDescription, FieldsetFooter, FieldsetLegend, type FieldsetVariant, FileDropzone, type FileDropzoneProps, type FileRejection, type FileRejectionCode, FontPicker, type FontPickerFont, type FontPickerOption, type FontPickerProps, Form, type FormProps, GlidingHighlight, type GlidingHighlightProps, GradientArt, type GradientArtProps, type Hsv, InlineStatus, type InlineStatusProps, type StatusTone as InlineTone, Input, InputGroup, type InputGroupProps, type InputProps$1 as InputProps, Kbd, KbdGroup, type KbdGroupProps, type KbdProps, Label, type LabelProps$2 as LabelProps, LineChart, type LineChartProps, Marker, type MarkerProps, Marquee, type MarqueeProps, MediaImage, type MediaImageProps, MediaTile, type MediaTileProps, Menu, MenuCheckboxItem, MenuContent, MenuGroup, MenuGroupLabel, MenuItem, MenuLinkItem, MenuPortal, MenuRadioGroup, MenuRadioItem, MenuSeparator, MenuSubmenu, MenuSubmenuTrigger, MenuTrigger, Menubar, type MenubarProps, MenubarTrigger, type MenubarTriggerProps, Message, type MessageProps, MessageScroller, type MessageScrollerHandle, type MessageScrollerProps, Meter, MeterIndicator, MeterLabel, type MeterSize, type MeterTone, MeterTrack, MeterValue, MiddleTruncate, type MiddleTruncateProps, type MotionPolicy, MotionProvider, type MotionProviderProps, NavigationMenu, NavigationMenuContent, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, Note, type NoteAction, type NoteProps, NotificationBadge, type NotificationBadgeProps, NumberField, type NumberFieldProps, type OrbMode, type OrbSize, OtpField, type OtpFieldProps, OverflowMenu, type OverflowMenuProps, PALETTE_COLORS, PALETTE_FAMILIES, PALETTE_SCALES, PALETTE_STEPS, PALETTE_TONES, PageHeader, type PageHeaderProps, PageLoader, type PageLoaderProps, Pagination, type PaginationProps, type PaletteColor, type PaletteFamily, type PaletteStep, Panel, PanelGroup, PanelResizer, type PanelResizerProps, PanelSection, type PanelWidthBounds, Phone, type PhoneProps, PieChart, type PieChartProps, Pill, type PillProps, Popover, PopoverArrow, PopoverClose, PopoverContent, PopoverDescription, PopoverPortal, PopoverTitle, PopoverTrigger, Presence, type PresenceProps, type Presentation, PresentationProvider, Progress, ProgressIndicator, ProgressLabel, type ProgressSize, ProgressTrack, ProgressValue, PropertyGroup, PropertyPair, PropertyRow, RadarChart, type RadarChartProps, RadialChart, type RadialChartProps, Radio, RadioCard, type RadioCardProps, type RadioCardTone, RadioGroup, RelativeTime, type RelativeTimeProps, Reveal, type RevealProps, type Rgb, SABLE_UI_VERSION, SEGMENTED_BAR_TONES, STATUS_TONES, STATUS_TONE_ICON, type ScrollCommandOptions, Scroller, type ScrollerProps, ScrubField, type ScrubFieldProps, SearchInput, type SearchInputProps, SectionHeader, type SectionHeaderProps, SegmentedBar, type SegmentedBarProps, type SegmentedBarSegment, type SegmentedBarTone, Select, SelectContent, SelectGroup, SelectGroupLabel, SelectItem, SelectPortal, SelectSeparator, SelectTrigger, SelectValue, Separator, type SeparatorProps$2 as SeparatorProps, SettingsMenu, type SettingsMenuProps, SettingsRow, type SettingsRowProps, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetList, SheetPortal, type SheetProps, type SheetSnapPoint, SheetTitle, SheetTrigger, ShowMore, type ShowMoreProps, SideNav, type SideNavActiveVariant, SideNavGroup, type SideNavGroupProps, SideNavItem, type SideNavItemProps, type SideNavProps, type SideNavSize, Sidebar, SidebarBrand, type SidebarBrandProps, SidebarFooter, SidebarHeader, SidebarItem, type SidebarItemProps, SidebarNav, type SidebarProps, SimpleTooltip, Skeleton, SkipLink, Slider, SliderControl, SliderIndicator, SliderRoot, SliderThumb, SliderTrack, SliderValue, type SmoothWheelOptions, Sparkline, type SparklineProps, Spinner, type SpinnerProps, StatusBar, StatusBarGroup, StatusBarSeparator, StatusDot, type StatusDotProps, type StatusTone, type StepStatus, Stepper, StepperItem, type StepperItemProps, type StepperOrientation, type StepperProps, StreamingText, type StreamingTextProps, Switch, TRANSPARENT, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsPanel as TabsContent, TabsList, TabsPanel, TabsTrigger, TextReveal, type TextRevealProps, Textarea, type TextareaProps, ThemeId, ThemeManifest, ThemeMode$1 as ThemeManifestMode, type ThemeMode, ThemePreview, type ThemePreviewProps, ThemeSelector, type ThemeSelectorProps, ThemeSwitcher, type ThemeSwitcherProps, ThinkingOrb, type ThinkingOrbProps, ToastAction, type ToastApi, ToastClose, ToastContent, ToastDescription, type ToastManagerApi, type ToastOptions, type ToastPosition, ToastProvider, type ToastProviderProps, ToastRoot, ToastTitle, type ToastType, ToastViewport, Toggle, ToggleGroup, type ToggleGroupAppearance, Toggle as ToggleGroupItem, Toolbar, ToolbarButton, type ToolbarButtonProps, ToolbarGroup, type ToolbarGroupProps, ToolbarInput, type ToolbarInputProps, ToolbarLink, type ToolbarLinkProps, type ToolbarProps, ToolbarSeparator, type ToolbarSeparatorProps, Tooltip, TooltipArrow, TooltipContent, TooltipPortal, TooltipProvider, TooltipTrigger, Tree, TreeAddRow, TreeEmpty, TreeRow, TreeSection, type UseCaretTriggerOptions, type UseCaretTriggerResult, type UseCopyOptions, type UseCopyResult, type UseInViewOptions, type UsePanelWidthOptions, Video, type VideoProps, ViewTransitionName, type ViewTransitionNameProps, Workspace, WorkspaceBar, WorkspaceCanvas, accordionMeta, appHeaderMeta, appShellMeta, areaChartMeta, attachmentMeta, avatarGroupVariants, avatarMeta, avatarVariants, badgeMeta, badgeVariants, bannerMeta, bannerVariants, barChartMeta, bottomNavMeta, breadcrumbsMeta, browserMeta, bubbleMeta, buttonGroupMeta, buttonMeta, buttonVariants, calendarMeta, cardMeta, caretMenuMeta, carouselMeta, chartColor, toneColor as chartToneColor, chatComposerMeta, checkboxCardMeta, checkboxMeta, cn, codeBlockMeta, codeMeta, collapsibleMeta, colorFieldMeta, comboboxMeta, commandMenuMeta, componentGuidance, componentLabel, componentSlug, componentsInGroup, contextCardMeta, contextMenuMeta, dataTableMeta, datePickerMeta, dateTileMeta, destructiveActionModalMeta, dialogMeta, disclosurePickerMeta, emptyStateMeta, entityMeta, feedbackMeta, fieldsetMeta, fileDropzoneMeta, fileDropzoneVariants, fontPickerMeta, formMeta, formatFileSize, formatHex, glidingHighlightMeta, gradientArtMeta, hsvToRgb, hueColor, inlineStatusMeta, inputGroupMeta, inputMeta, isPaletteColor, isTransparent, kbdMeta, labelMeta, lineChartMeta, markerMeta, marqueeMeta, mediaImageMeta, mediaTileMeta, menuMeta, menubarMeta, messageMeta, messageScrollerMeta, meterIndicatorVariants, meterMeta, meterTrackVariants, middleTruncateMeta, navigationMenuMeta, noteMeta, noteVariants, notificationBadgeMeta, notificationCountVariants, notificationDotVariants, numberFieldMeta, otpFieldMeta, overflowMenuMeta, pageHeaderMeta, pageLoaderMeta, paginationMeta, panelGroupMeta, panelSectionMeta, parseHex, phoneMeta, pieChartMeta, pillMeta, pillVariants, popoverMeta, progressMeta, progressTrackVariants, radarChartMeta, radialChartMeta, radioCardMeta, radioMeta, relativeTimeMeta, rgbToHsv, scrollerMeta, scrubFieldMeta, searchInputMeta, sectionHeaderMeta, segmentedBarMeta, segmentedBarSegmentVariants, segmentedBarVariants, selectMeta, separatorMeta, settingsMenuMeta, sheetMeta, sheetVariants, showMoreMeta, sideNavMeta, sidebarMeta, skeletonMeta, sliderMeta, sparklineMeta, spinnerMeta, startViewTransition, statusBarMeta, statusDotMeta, statusDotVariants, stepperConnectorVariants, stepperIndicatorVariants, stepperMeta, streamingTextMeta, supportsViewTransitions, switchMeta, tableMeta, tabsMeta, textareaMeta, themeSelectorMeta, themeSwitcherMeta, thinkingOrbMeta, toast, toastMeta, toggleMeta, toolbarGroupVariants, toolbarMeta, toolbarSeparatorVariants, toolbarVariants, tooltipMeta, treeIndent, treeMeta, useAnchoredDensity, useCaretTrigger, useComboboxFilteredItems, useCommandMenuShortcut, useCopy, useDensity, useDisclosurePicker, useInView, useMotion, usePanelWidth, usePresentation, useReducedMotion, useScrollActivity, useSidebar, useSmoothWheel, useToast, useToastManager, useTypeTier, videoMeta, workspaceMeta };
|
|
9777
|
+
export { Accordion, AccordionItem, AccordionPanel, AccordionTrigger, AlertDialog, AlertDialogClose, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogTitle, AlertDialogTrigger, AppHeader, type AppHeaderProps, AppShell, type AppShellProps, AreaChart, type AreaChartProps, type ArtTone, Attachment, type AttachmentProps, Avatar, AvatarFallback, AvatarGroup, AvatarGroupCount, type AvatarGroupCountProps, type AvatarGroupProps, AvatarImage, type AvatarProps, AvatarRoot, BADGE_APPEARANCES, BADGE_TONES, Badge, type BadgeAppearance, type BadgeProps, type BadgeTone, Banner, type BannerProps, BarChart, type BarChartProps, BottomNav, BottomNavItem, type BottomNavItemProps, BreadcrumbItem, type BreadcrumbItemProps, BreadcrumbLink, type BreadcrumbLinkProps, BreadcrumbPage, type BreadcrumbPageProps, BreadcrumbSeparator, type BreadcrumbSeparatorProps, Breadcrumbs, type BreadcrumbsProps, Browser, type BrowserProps, Bubble, type BubbleProps, BubbleReaction, BubbleReactionAdd, type BubbleReactionAddProps, type BubbleReactionProps, BubbleReactions, type BubbleReactionsProps, Burst, type BurstProps, Button, type ButtonBleed, ButtonGroup, type ButtonGroupProps, type ButtonProps, CHART_SERIES_COUNT, COMPONENT_GROUPS, COMPONENT_TAXONOMY, Calendar, type CalendarProps, Card, CardAction, CardContent, type CardContentProps, CardDescription, CardFooter, type CardFooterProps, CardHeader, CardList, type CardProps, CardTitle, type CardTitleProps, CaretMenu, CaretMenuItem, type CaretMenuItemProps, type CaretMenuProps, type CaretTrigger, type CaretTriggerField, type CaretTriggerMatch, Carousel, type CarouselProps, type CarouselSlidesToShow, type ChartCategories, type ChartCenterLabel, type ChartCurve, type ChartDatum, type ChartSeries, type ChartTone, type ChartTooltipIndicator, type ChartTooltipOptions, type ChartValueFormatter, ChatComposer, type ChatComposerProps, Checkbox, CheckboxCard, type CheckboxCardProps, type CheckboxCardTone, CheckboxGroup, type CheckboxGroupProps, Code, CodeBlock, type CodeBlockProps, CodeHighlightProvider, type CodeHighlighter, type CodeProps, Collapsible, CollapsibleIndicator, CollapsiblePanel, CollapsibleTrigger, ColorField, type ColorFieldProps, Combobox, ComboboxChips, ComboboxClear, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxGroupLabel, ComboboxInput, ComboboxItem, type ComboboxItemGroup, ComboboxItemIndicator, ComboboxList, ComboboxPortal, type ComboboxProps, ComboboxValue, ComboboxVirtualList, type ComboboxVirtualListProps, type CommandFilter, type CommandItem, CommandMenu, CommandMenuGroup, type CommandMenuGroupProps, CommandMenuItem, type CommandMenuItemProps, CommandMenuPanel, type CommandMenuPanelProps, type CommandMenuProps, CommandMenuTrigger, type CommandMenuTriggerProps, type ComponentGroup, type ComponentGuidance, ComponentMeta, type ComponentRegister, ConfirmButton, type ConfirmButtonProps, type ConstraintFlag, ContextCard, ContextCardArrow, ContextCardContent, ContextCardPortal, ContextCardTrigger, ContextMenu, ContextMenuContent, ContextMenuGroup, ContextMenuGroupLabel, ContextMenuItem, ContextMenuPortal, ContextMenuSeparator, ContextMenuTrigger, type CopySource, DEFAULT_REACTIONS, DataTable, type DataTableColumn, type DataTableProps, type DataTableRowKey, DatePicker, type DatePickerProps, DateTile, type DateTileProps, Density, DensityProvider, Density as DensityValue, DestructiveActionModal, type DestructiveActionModalProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, type DialogSize, DialogTitle, DialogTrigger, DisclosurePicker, DisclosurePickerEmpty, DisclosurePickerList, type DisclosurePickerListProps, DisclosurePickerOption, type DisclosurePickerOptionProps, DisclosurePickerPanel, type DisclosurePickerPanelProps, type DisclosurePickerProps, type DisclosurePickerSearch, DisclosurePickerTrigger, type DisclosurePickerTriggerProps, EmptyState, type EmptyStateProps, Entity, type EntityProps, Feedback, type FeedbackData, type FeedbackProps, type FeedbackRating, Field, type FieldProps, Fieldset, FieldsetContent, FieldsetDescription, FieldsetFooter, FieldsetLegend, type FieldsetVariant, FileDropzone, type FileDropzoneProps, type FileRejection, type FileRejectionCode, FontPicker, type FontPickerFont, type FontPickerOption, type FontPickerProps, Form, type FormProps, GlidingHighlight, type GlidingHighlightProps, GradientArt, type GradientArtProps, type Hsv, InlineStatus, type InlineStatusProps, type StatusTone as InlineTone, Input, InputGroup, type InputGroupProps, type InputProps$1 as InputProps, Kbd, KbdGroup, type KbdGroupProps, type KbdProps, Label, type LabelProps$2 as LabelProps, LikeButton, type LikeButtonProps, LineChart, type LineChartProps, Marker, type MarkerProps, Marquee, type MarqueeProps, MediaImage, type MediaImageProps, MediaTile, type MediaTileProps, Menu, MenuCheckboxItem, MenuContent, MenuGroup, MenuGroupLabel, MenuItem, MenuLinkItem, MenuPortal, MenuRadioGroup, MenuRadioItem, MenuReactions, type MenuReactionsProps, MenuSeparator, MenuSubmenu, MenuSubmenuTrigger, MenuTrigger, Menubar, type MenubarProps, MenubarTrigger, type MenubarTriggerProps, Message, type MessageProps, MessageScroller, type MessageScrollerHandle, type MessageScrollerProps, Meter, MeterIndicator, MeterLabel, type MeterSize, type MeterTone, MeterTrack, MeterValue, MiddleTruncate, type MiddleTruncateProps, type MotionLevel, type MotionPolicy, MotionProvider, type MotionProviderProps, MotionScope, type MotionScopeProps, NavigationMenu, NavigationMenuContent, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, Note, type NoteAction, type NoteProps, NotificationBadge, type NotificationBadgeProps, NumberField, type NumberFieldProps, NumberTicker, type NumberTickerProps, type OrbMode, type OrbSize, OtpField, type OtpFieldProps, OverflowMenu, type OverflowMenuProps, PALETTE_COLORS, PALETTE_FAMILIES, PALETTE_SCALES, PALETTE_STEPS, PALETTE_TONES, PageHeader, type PageHeaderProps, PageLoader, type PageLoaderProps, Pagination, type PaginationProps, type PaletteColor, type PaletteFamily, type PaletteStep, Panel, PanelGroup, PanelResizer, type PanelResizerProps, PanelSection, type PanelWidthBounds, Phone, type PhoneProps, PieChart, type PieChartProps, Pill, type PillProps, Popover, PopoverArrow, PopoverClose, PopoverContent, PopoverDescription, PopoverPortal, PopoverTitle, PopoverTrigger, Presence, type PresenceProps, type Presentation, PresentationProvider, Progress, ProgressIndicator, ProgressLabel, type ProgressSize, ProgressTrack, ProgressValue, PropertyGroup, PropertyPair, PropertyRow, RadarChart, type RadarChartProps, RadialChart, type RadialChartProps, Radio, RadioCard, type RadioCardProps, type RadioCardTone, RadioGroup, type Reaction, ReactionPicker, type ReactionPickerProps, RelativeTime, type RelativeTimeProps, Reveal, type RevealProps, type Rgb, SABLE_UI_VERSION, SEGMENTED_BAR_TONES, STATUS_TONES, STATUS_TONE_ICON, type ScrollCommandOptions, Scroller, type ScrollerProps, ScrubField, type ScrubFieldProps, SearchInput, type SearchInputProps, SectionHeader, type SectionHeaderProps, SegmentedBar, type SegmentedBarProps, type SegmentedBarSegment, type SegmentedBarTone, Select, SelectContent, SelectGroup, SelectGroupLabel, SelectItem, SelectPortal, SelectSeparator, SelectTrigger, SelectValue, Separator, type SeparatorProps$2 as SeparatorProps, SettingsMenu, type SettingsMenuProps, SettingsRow, type SettingsRowProps, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetList, SheetPortal, type SheetProps, type SheetSnapPoint, SheetTitle, SheetTrigger, ShowMore, type ShowMoreProps, SideNav, type SideNavActiveVariant, SideNavGroup, type SideNavGroupProps, SideNavItem, type SideNavItemProps, type SideNavProps, type SideNavSize, Sidebar, SidebarBrand, type SidebarBrandProps, SidebarFooter, SidebarHeader, SidebarItem, type SidebarItemProps, SidebarNav, type SidebarProps, SimpleTooltip, Skeleton, SkipLink, Slider, SliderControl, SliderIndicator, SliderRoot, SliderThumb, SliderTrack, SliderValue, type SmoothWheelOptions, Sparkline, type SparklineProps, Spinner, type SpinnerProps, StatusBar, StatusBarGroup, StatusBarSeparator, StatusDot, type StatusDotProps, type StatusTone, type StepStatus, Stepper, StepperItem, type StepperItemProps, type StepperOrientation, type StepperProps, StreamingText, type StreamingTextProps, Switch, TOOL_CALL_STATUS_LABELS, TRANSPARENT, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsPanel as TabsContent, TabsList, TabsPanel, TabsTrigger, TextReveal, type TextRevealProps, Textarea, type TextareaProps, ThemeId, ThemeManifest, ThemeMode$1 as ThemeManifestMode, type ThemeMode, ThemePreview, type ThemePreviewProps, ThemeSelector, type ThemeSelectorProps, ThemeSwitcher, type ThemeSwitcherProps, ThinkingOrb, type ThinkingOrbProps, ToastAction, type ToastApi, ToastClose, ToastContent, ToastDescription, type ToastManagerApi, type ToastOptions, type ToastPosition, ToastProvider, type ToastProviderProps, ToastRoot, ToastTitle, type ToastType, ToastViewport, Toggle, ToggleGroup, type ToggleGroupAppearance, Toggle as ToggleGroupItem, ToolCall, type ToolCallProps, type ToolCallStatus, Toolbar, ToolbarButton, type ToolbarButtonProps, ToolbarGroup, type ToolbarGroupProps, ToolbarInput, type ToolbarInputProps, ToolbarLink, type ToolbarLinkProps, type ToolbarProps, ToolbarSeparator, type ToolbarSeparatorProps, Tooltip, TooltipArrow, TooltipContent, TooltipGroup, type TooltipGroupProps, TooltipPortal, TooltipProvider, TooltipTrigger, Tree, TreeAddRow, TreeEmpty, TreeRow, TreeSection, type UseCaretTriggerOptions, type UseCaretTriggerResult, type UseCopyOptions, type UseCopyResult, type UseInViewOptions, type UsePanelWidthOptions, Video, type VideoProps, ViewTransitionName, type ViewTransitionNameProps, Workspace, WorkspaceBar, WorkspaceCanvas, accordionMeta, appHeaderMeta, appShellMeta, areaChartMeta, attachmentMeta, avatarGroupVariants, avatarMeta, avatarVariants, badgeMeta, badgeVariants, bannerMeta, bannerVariants, barChartMeta, bottomNavMeta, breadcrumbsMeta, browserMeta, bubbleMeta, buttonGroupMeta, buttonMeta, buttonVariants, calendarMeta, cardMeta, caretMenuMeta, carouselMeta, chartColor, toneColor as chartToneColor, chatComposerMeta, checkboxCardMeta, checkboxMeta, cn, codeBlockMeta, codeMeta, collapsibleMeta, colorFieldMeta, comboboxMeta, commandMenuMeta, componentGuidance, componentLabel, componentSlug, componentsInGroup, confirmButtonMeta, contextCardMeta, contextMenuMeta, dataTableMeta, datePickerMeta, dateTileMeta, destructiveActionModalMeta, dialogMeta, disclosurePickerMeta, emptyStateMeta, entityMeta, feedbackMeta, fieldsetMeta, fileDropzoneMeta, fileDropzoneVariants, fontPickerMeta, formMeta, formatFileSize, formatHex, glidingHighlightMeta, gradientArtMeta, hsvToRgb, hueColor, inlineStatusMeta, inputGroupMeta, inputMeta, isPaletteColor, isTransparent, kbdMeta, labelMeta, likeButtonMeta, lineChartMeta, markerMeta, marqueeMeta, mediaImageMeta, mediaTileMeta, menuMeta, menubarMeta, messageMeta, messageScrollerMeta, meterIndicatorVariants, meterMeta, meterTrackVariants, middleTruncateMeta, motionAttribute, navigationMenuMeta, noteMeta, noteVariants, notificationBadgeMeta, notificationCountVariants, notificationDotVariants, numberFieldMeta, numberTickerMeta, otpFieldMeta, overflowMenuMeta, pageHeaderMeta, pageLoaderMeta, paginationMeta, panelGroupMeta, panelSectionMeta, parseHex, phoneMeta, pieChartMeta, pillMeta, pillVariants, popoverMeta, progressMeta, progressTrackVariants, radarChartMeta, radialChartMeta, radioCardMeta, radioMeta, reactionPickerMeta, relativeTimeMeta, rgbToHsv, scrollerMeta, scrubFieldMeta, searchInputMeta, sectionHeaderMeta, segmentedBarMeta, segmentedBarSegmentVariants, segmentedBarVariants, selectMeta, separatorMeta, settingsMenuMeta, sheetMeta, sheetVariants, showMoreMeta, sideNavMeta, sidebarMeta, skeletonMeta, sliderMeta, sparklineMeta, spinnerMeta, startViewTransition, statusBarMeta, statusDotMeta, statusDotVariants, stepperConnectorVariants, stepperIndicatorVariants, stepperMeta, streamingTextMeta, supportsViewTransitions, switchMeta, tableMeta, tabsMeta, textareaMeta, themeSelectorMeta, themeSwitcherMeta, thinkingOrbMeta, toast, toastMeta, toggleMeta, toolCallMeta, toolbarGroupVariants, toolbarMeta, toolbarSeparatorVariants, toolbarVariants, tooltipMeta, treeIndent, treeMeta, useAnchoredDensity, useAutoSize, useCaretTrigger, useComboboxFilteredItems, useCommandMenuShortcut, useCopy, useDensity, useDisclosurePicker, useInView, useMotion, useMotionLevel, usePanelWidth, usePresentation, useReducedMotion, useScrollActivity, useShake, useSidebar, useSmoothWheel, useToast, useToastManager, useTypeTier, videoMeta, workspaceMeta };
|