@sableui/react 0.14.0 → 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/CHANGELOG.md +58 -0
- package/DESIGN.md +3 -1
- package/dist/blocks/index.d.ts +12 -1
- package/dist/blocks/index.js +4 -0
- package/dist/blocks/message-reactions-block.js +87 -0
- package/dist/blocks/message-reactions-block.meta.js +23 -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/feedback/feedback.js +8 -1
- package/dist/components/feedback/feedback.meta.js +6 -0
- 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/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/toast/toast.js +25 -13
- package/dist/components/toast/toast.meta.js +7 -1
- package/dist/file-hashes.json +26 -17
- package/dist/foundations/motion.js +21 -1
- package/dist/icon-sets/reicon.js +11 -1
- package/dist/index.d.ts +295 -62
- package/dist/index.js +3 -1
- package/dist/lib/taxonomy.js +2 -0
- package/dist/motion/Burst.js +79 -0
- package/dist/motion/index.js +2 -0
- package/dist/styles.css +141 -0
- package/llms/blocks/message-reactions-block.md +116 -0
- package/llms/components/bubble.md +17 -7
- package/llms/components/feedback.md +1 -0
- package/llms/components/like-button.md +91 -0
- package/llms/components/reaction-picker.md +115 -0
- package/llms/components/toast.md +2 -1
- package/llms/foundations/motion.md +18 -2
- package/llms/reference/utilities.md +4 -1
- package/llms-full.txt +374 -12
- package/llms.txt +9 -6
- package/package.json +1 -1
- package/registry.json +573 -12
- package/targets/ios.json +18 -0
|
@@ -31,6 +31,8 @@ var motion = {
|
|
|
31
31
|
{ name: "motion-appear", value: "fast fade + base scale", use: "A small control mounting in place: a clear button, a send arrow, a badge. @starting-style, no JS." },
|
|
32
32
|
{ name: "motion-arrive", value: "base \xB7 decelerate \xB7 staggered \xB7 expressive", use: "Items a user action brings into a list: a folder's children on expand, a row just added. Never on every render." },
|
|
33
33
|
{ name: "motion-size", value: "base \xB7 emphasized \xB7 expressive", use: "An element easing between intrinsic sizes when its label changes: a two-step confirm, Copy \u2192 Copied." },
|
|
34
|
+
{ name: "motion-bloom", value: "slower \xB7 0 \u2192 1.2 \u2192 1 \xB7 expressive", use: "A small glyph landing in its on state: a liked heart, a picked rating, a toast's status icon. Remount it (key) to replay; never on the resting state." },
|
|
35
|
+
{ name: "<Burst>", value: "slower ring + thrown dots \xB7 expressive", use: "The follow-through behind a bloom, in the theme's palette families. Only on a choice a person made: a like, a star, a finished task." },
|
|
34
36
|
{ name: "motion-draw", value: "slower \xB7 decelerate", use: 'SVG line art drawing on when a <Reveal> scrolls in. The path needs pathLength="1"; stagger siblings with --motion-draw-delay.' },
|
|
35
37
|
{ name: "motion-spin \xB7 pulse \xB7 shimmer \xB7 dot-bounce \xB7 ping", value: "loops", use: "Activity. Scale-aware, so reduced motion freezes them." }
|
|
36
38
|
]
|
|
@@ -50,7 +52,7 @@ var motion = {
|
|
|
50
52
|
note: "Essential motion answers the user; expressive motion narrates continuity. Expressive durations are also multiplied by --motion-expressive, which `subtle` sets to 0. Each level can only turn motion down from what surrounds it.",
|
|
51
53
|
terms: [
|
|
52
54
|
{ name: "essential", value: "always, unless off", use: "Colour and focus feedback, press, overlay arrival, disclosure height, loaders, chart hover." },
|
|
53
|
-
{ name: "expressive", value: "full only", use: "Glides, rolling numbers (NumberTicker), drawn ticks, shakes, staggers, chart arrival and morph, scroll reveals, spring overshoot." },
|
|
55
|
+
{ name: "expressive", value: "full only", use: "Glides, rolling numbers (NumberTicker), drawn ticks, blooms and bursts, shakes, staggers, chart arrival and morph, scroll reveals, spring overshoot." },
|
|
54
56
|
{ name: "full", value: "default", use: "Both levels play. The crafted default." },
|
|
55
57
|
{ name: "subtle", value: 'data-motion="subtle"', use: "Essential only; nothing overshoots. For dense tools, embedded widgets, readers who want calm without stillness." },
|
|
56
58
|
{ name: "off", value: 'data-motion="off" \xB7 reduce-motion', use: "Nothing moves; every state still changes." },
|
|
@@ -112,6 +114,18 @@ var motion = {
|
|
|
112
114
|
rule: "A state change finishes its story: refused shakes and says why, success confirms in place, armed asks again.",
|
|
113
115
|
why: "Motion that starts a change and leaves the outcome to a snap reads as unfinished. ConfirmButton, OtpField's invalid shake and the copy-to-check swap are the reference cases."
|
|
114
116
|
},
|
|
117
|
+
{
|
|
118
|
+
rule: "Amplitude scales with smallness. A 16px glyph that turns on grows from nothing past its size; a surface travels from 0.96 and a press settles to 0.97.",
|
|
119
|
+
why: "The same 4% that is right for a dialog is invisible on an icon, which is why a state change on a small control used to read as a colour swap with no life in it. A dialog that overshot 20% would lurch. Size, not importance, sets how far a thing moves."
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
rule: "Stage a moment: the main object lands first, the follow-through after it.",
|
|
123
|
+
why: "A ring that opens, a glyph that blooms 90ms later, dots thrown 60ms after that read as one event with a cause and an effect. Everything starting on the same frame reads as a flash. LikeButton and the toast's status glyph are the reference cases."
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
rule: "Celebrate only what a person chose, and only at full motion.",
|
|
127
|
+
why: "A burst is a reply. On a like it is delight; on a system event, on load, or on every row of a list it is a notification wearing confetti. Under subtle the fill alone answers."
|
|
128
|
+
},
|
|
115
129
|
{
|
|
116
130
|
rule: "Component motion props and MotionScope only turn motion down.",
|
|
117
131
|
why: "`full` on a component means inherit. Nothing below the provider can switch motion back on for a reader who asked for it off."
|
|
@@ -166,6 +180,12 @@ var motion = {
|
|
|
166
180
|
after: '<NumberTicker value={total} format={{ style: "currency", currency: "USD" }} />',
|
|
167
181
|
why: "The digits that changed roll; the ones that did not stay still, so the eye goes straight to the difference."
|
|
168
182
|
},
|
|
183
|
+
{
|
|
184
|
+
title: "A glyph that lands",
|
|
185
|
+
before: '<Icon name="heart" variant={liked ? "solid" : "regular"} />',
|
|
186
|
+
after: "<LikeButton count={likes} defaultPressed={liked} />",
|
|
187
|
+
why: "The heart used to swap fill in one frame. Now it blooms past its size and settles while a ring and dots burst from it, and the count rolls: the same state, told as an event."
|
|
188
|
+
},
|
|
169
189
|
{
|
|
170
190
|
title: "Faster exits",
|
|
171
191
|
before: "transition: opacity 200ms ease-in-out; /* in and out */",
|
package/dist/icon-sets/reicon.js
CHANGED
|
@@ -72,6 +72,9 @@ import { Pause } from "reicon-react/icons/Pause";
|
|
|
72
72
|
import { Play } from "reicon-react/icons/Play";
|
|
73
73
|
import { Previous } from "reicon-react/icons/Previous";
|
|
74
74
|
import { Refresh } from "reicon-react/icons/Refresh";
|
|
75
|
+
import { Restart } from "reicon-react/icons/Restart";
|
|
76
|
+
import { EmojiHappy } from "reicon-react/icons/EmojiHappy";
|
|
77
|
+
import { PlaybackSpeed } from "reicon-react/icons/PlaybackSpeed";
|
|
75
78
|
import { Send } from "reicon-react/icons/Send";
|
|
76
79
|
import { Star } from "reicon-react/icons/Star";
|
|
77
80
|
import { Trash } from "reicon-react/icons/Trash";
|
|
@@ -181,7 +184,14 @@ var ICONS = {
|
|
|
181
184
|
paperclip: Paperclip,
|
|
182
185
|
chart: ChartBar,
|
|
183
186
|
flag: Flag,
|
|
184
|
-
"at-sign": AtSign
|
|
187
|
+
"at-sign": AtSign,
|
|
188
|
+
// Added when the docs' preview controls borrowed `sparkles` (which reads
|
|
189
|
+
// as AI) for a motion level and `refresh` (which reads as fetching again)
|
|
190
|
+
// for watching an animation from its first frame.
|
|
191
|
+
replay: Restart,
|
|
192
|
+
motion: PlaybackSpeed,
|
|
193
|
+
// Added for the add-reaction pill under a chat bubble.
|
|
194
|
+
emoji: EmojiHappy
|
|
185
195
|
};
|
|
186
196
|
var WEIGHTS = {
|
|
187
197
|
regular: "Outline",
|
package/dist/index.d.ts
CHANGED
|
@@ -440,6 +440,118 @@ declare namespace Presence {
|
|
|
440
440
|
var displayName: string;
|
|
441
441
|
}
|
|
442
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
|
+
|
|
443
555
|
/** Is the cross-document/SPA View Transitions API available? */
|
|
444
556
|
declare function supportsViewTransitions(): boolean;
|
|
445
557
|
/**
|
|
@@ -643,6 +755,67 @@ declare namespace ConfirmButton {
|
|
|
643
755
|
|
|
644
756
|
declare const confirmButtonMeta: ComponentMeta;
|
|
645
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
|
+
|
|
646
819
|
interface CardProps extends ComponentPropsWithRef<"div"> {
|
|
647
820
|
/** "default" = raised surface (bg-card + edge + soft shadow). "flat" = transparent. */
|
|
648
821
|
variant?: "default" | "flat";
|
|
@@ -4177,7 +4350,7 @@ declare const datePickerMeta: ComponentMeta;
|
|
|
4177
4350
|
* binds it via Base UI's `toastManager` prop.
|
|
4178
4351
|
*/
|
|
4179
4352
|
declare const toastManager: _base_ui_react.ToastManager<any>;
|
|
4180
|
-
/** Visual/semantic type of a toast — drives the
|
|
4353
|
+
/** Visual/semantic type of a toast — drives the status glyph and (for loading) a spinner. */
|
|
4181
4354
|
type ToastType = "success" | "error" | "warning" | "info" | "loading";
|
|
4182
4355
|
/** Screen anchor for the toast stack. */
|
|
4183
4356
|
type ToastPosition = "top-left" | "top-center" | "top-right" | "bottom-left" | "bottom-center" | "bottom-right";
|
|
@@ -8937,6 +9110,68 @@ declare namespace Message {
|
|
|
8937
9110
|
|
|
8938
9111
|
declare const messageMeta: ComponentMeta;
|
|
8939
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
|
+
|
|
8940
9175
|
interface BubbleProps extends ComponentPropsWithRef<"div"> {
|
|
8941
9176
|
/**
|
|
8942
9177
|
* Surface treatment. `muted` for the other party, `primary` for the reader's
|
|
@@ -8971,8 +9206,9 @@ interface BubbleProps extends ComponentPropsWithRef<"div"> {
|
|
|
8971
9206
|
* <Message>
|
|
8972
9207
|
* <Bubble>Shipping it now.</Bubble>
|
|
8973
9208
|
* <BubbleReactions>
|
|
8974
|
-
* <BubbleReaction emoji="🎉" count={3} active onClick={() => toggle("🎉")} />
|
|
8975
|
-
* <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} />
|
|
8976
9212
|
* </BubbleReactions>
|
|
8977
9213
|
* </Message>
|
|
8978
9214
|
*
|
|
@@ -8989,31 +9225,82 @@ interface BubbleReactionsProps extends ComponentPropsWithRef<"div"> {
|
|
|
8989
9225
|
/** Match the enclosing `<Bubble align>` so the row hangs off the right edge. @default "start" */
|
|
8990
9226
|
align?: "start" | "end";
|
|
8991
9227
|
}
|
|
8992
|
-
/**
|
|
8993
|
-
|
|
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;
|
|
8994
9235
|
declare namespace BubbleReactions {
|
|
8995
9236
|
var displayName: string;
|
|
8996
9237
|
}
|
|
8997
9238
|
interface BubbleReactionProps extends Omit<ComponentPropsWithRef<"button">, "children"> {
|
|
8998
9239
|
/** The reaction glyph. Rendered as text, so any emoji works with no icon mapping. */
|
|
8999
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;
|
|
9000
9247
|
/** How many people reacted this way. Hidden at 1 — the pill already says "one". */
|
|
9001
9248
|
count?: number;
|
|
9002
9249
|
/** The reader reacted this way. Drives `aria-pressed`, not just the styling. */
|
|
9003
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;
|
|
9004
9257
|
}
|
|
9005
9258
|
/**
|
|
9006
9259
|
* One reaction pill — a toggle, not a label. It reports `aria-pressed` because
|
|
9007
9260
|
* "did I react to this" is state a screen-reader user needs before deciding
|
|
9008
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.
|
|
9009
9267
|
*/
|
|
9010
|
-
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;
|
|
9011
9269
|
declare namespace BubbleReaction {
|
|
9012
9270
|
var displayName: string;
|
|
9013
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
|
+
}
|
|
9014
9299
|
|
|
9015
9300
|
declare const bubbleMeta: ComponentMeta;
|
|
9016
9301
|
|
|
9302
|
+
declare const reactionPickerMeta: ComponentMeta;
|
|
9303
|
+
|
|
9017
9304
|
interface AttachmentProps extends Omit<ComponentPropsWithRef<"div">, "onClick"> {
|
|
9018
9305
|
/**
|
|
9019
9306
|
* File name. When it runs out of room the stem truncates and the extension
|
|
@@ -9485,60 +9772,6 @@ interface SmoothWheelOptions {
|
|
|
9485
9772
|
*/
|
|
9486
9773
|
declare function useSmoothWheel({ axis, mapVertical, smooth, }?: SmoothWheelOptions): (node: HTMLElement | null) => void;
|
|
9487
9774
|
|
|
9488
|
-
|
|
9489
|
-
* The palette: nine colour families and a scale under every tone, generated
|
|
9490
|
-
* for whatever theme is painting. `scripts/build-palette.mjs` writes this into
|
|
9491
|
-
* `src/palette.css`; `palette.test.ts` holds every built-in theme to it.
|
|
9492
|
-
*
|
|
9493
|
-
* The contract is roles, and roles are not enough for a product. Tags, avatars,
|
|
9494
|
-
* labels and illustration need more colours than three tones, and raw Tailwind
|
|
9495
|
-
* steps ignore the theme, so they were banned outright. These follow it:
|
|
9496
|
-
*
|
|
9497
|
-
* - A **family** (red, orange, yellow, green, teal, blue, purple, pink) keeps
|
|
9498
|
-
* its own hue and leans toward the brand by half the gap, at most 15°, and
|
|
9499
|
-
* only as far as the brand has colour to lean toward (an ink-black primary
|
|
9500
|
-
* pulls nothing). Material 3's harmonize, the same lean the customizer gives
|
|
9501
|
-
* status colours. Lightness and chroma are fixed per step, fitted inside sRGB
|
|
9502
|
-
* across the whole lean, so no brand can push a step out of gamut.
|
|
9503
|
-
* - **neutral** is the theme's own page and ink mixed in steps, so it carries
|
|
9504
|
-
* whatever tint the theme's surfaces do.
|
|
9505
|
-
* - Every **tone** (tone-1…3, info, warning, success, destructive) gets a scale
|
|
9506
|
-
* on one shared ladder of depths, and the tone lands exactly on the step
|
|
9507
|
-
* nearest its own lightness: a light status colour in dark mode is 800, a
|
|
9508
|
-
* mid one is 500. The steps either side stretch to keep the ladder's ends,
|
|
9509
|
-
* so a tone near one end does not crush five steps into the little room
|
|
9510
|
-
* left past it, and tone-1-100 and success-100 are the same depth.
|
|
9511
|
-
*
|
|
9512
|
-
* Steps follow the mode rather than literal lightness: a low step is always
|
|
9513
|
-
* near the page and a high step always far from it, so 800 text on a 100
|
|
9514
|
-
* wash reads in both modes with no `dark:` (Sable has none).
|
|
9515
|
-
*/
|
|
9516
|
-
declare const PALETTE_STEPS: readonly [50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950];
|
|
9517
|
-
type PaletteStep = (typeof PALETTE_STEPS)[number];
|
|
9518
|
-
interface PaletteFamily {
|
|
9519
|
-
name: string;
|
|
9520
|
-
/** The family's own hue, before the lean. */
|
|
9521
|
-
hue: number;
|
|
9522
|
-
/** Step 500, per mode: lightness and the chroma the family is aiming for. */
|
|
9523
|
-
light: {
|
|
9524
|
-
l: number;
|
|
9525
|
-
c: number;
|
|
9526
|
-
};
|
|
9527
|
-
dark: {
|
|
9528
|
-
l: number;
|
|
9529
|
-
c: number;
|
|
9530
|
-
};
|
|
9531
|
-
}
|
|
9532
|
-
declare const PALETTE_FAMILIES: readonly PaletteFamily[];
|
|
9533
|
-
/** The hue families by name — the values Badge, Pill and StatusDot take on `tone`. */
|
|
9534
|
-
declare const PALETTE_COLORS: readonly ["red", "orange", "yellow", "green", "teal", "blue", "purple", "pink"];
|
|
9535
|
-
type PaletteColor = (typeof PALETTE_COLORS)[number];
|
|
9536
|
-
declare const isPaletteColor: (value: unknown) => value is PaletteColor;
|
|
9537
|
-
/** Tokens that get a scale of their own, `--<token>-50` … `--<token>-950`. */
|
|
9538
|
-
declare const PALETTE_TONES: readonly ["tone-1", "tone-2", "tone-3", "tone-info", "tone-warning", "success", "destructive"];
|
|
9539
|
-
/** Everything the palette names: neutral, the families, then the tone scales. */
|
|
9540
|
-
declare const PALETTE_SCALES: readonly ["neutral", ...string[], "tone-1", "tone-2", "tone-3", "tone-info", "tone-warning", "success", "destructive"];
|
|
9541
|
-
|
|
9542
|
-
declare const SABLE_UI_VERSION: "0.14.0";
|
|
9775
|
+
declare const SABLE_UI_VERSION: "0.15.0";
|
|
9543
9776
|
|
|
9544
|
-
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, ConfirmButton, type ConfirmButtonProps, 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 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, 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, 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, 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 };
|
|
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 };
|
package/dist/index.js
CHANGED
|
@@ -44,6 +44,7 @@ export * from "./motion/index.js";
|
|
|
44
44
|
export * from "./components/button/index.js";
|
|
45
45
|
export * from "./components/button-group/index.js";
|
|
46
46
|
export * from "./components/confirm-button/index.js";
|
|
47
|
+
export * from "./components/like-button/index.js";
|
|
47
48
|
export * from "./components/card/index.js";
|
|
48
49
|
export * from "./components/caret-menu/index.js";
|
|
49
50
|
export * from "./components/badge/index.js";
|
|
@@ -163,6 +164,7 @@ export * from "./components/chat-composer/index.js";
|
|
|
163
164
|
export * from "./components/settings-menu/index.js";
|
|
164
165
|
export * from "./components/message/index.js";
|
|
165
166
|
export * from "./components/bubble/index.js";
|
|
167
|
+
export * from "./components/reaction-picker/index.js";
|
|
166
168
|
export * from "./components/attachment/index.js";
|
|
167
169
|
export * from "./components/marker/index.js";
|
|
168
170
|
import { Density, DensityProvider, useDensity, useAnchoredDensity, useTypeTier } from "./lib/density.js";
|
|
@@ -175,7 +177,7 @@ import {
|
|
|
175
177
|
} from "./lib/use-caret-trigger.js";
|
|
176
178
|
import { STATUS_TONES, STATUS_TONE_ICON } from "./lib/status-tone.js";
|
|
177
179
|
import { PALETTE_COLORS, PALETTE_FAMILIES, PALETTE_SCALES, PALETTE_STEPS, PALETTE_TONES, isPaletteColor } from "./lib/palette.js";
|
|
178
|
-
var SABLE_UI_VERSION = "0.
|
|
180
|
+
var SABLE_UI_VERSION = "0.15.0";
|
|
179
181
|
export {
|
|
180
182
|
ART_TOKENS,
|
|
181
183
|
CHART_SERIES_COUNT,
|
package/dist/lib/taxonomy.js
CHANGED
|
@@ -26,8 +26,10 @@ var COMPONENT_TAXONOMY = {
|
|
|
26
26
|
Button: ["Actions", "either"],
|
|
27
27
|
ButtonGroup: ["Actions", "either"],
|
|
28
28
|
ConfirmButton: ["Actions", "either"],
|
|
29
|
+
LikeButton: ["Actions", "either"],
|
|
29
30
|
Menubar: ["Actions", "either"],
|
|
30
31
|
OverflowMenu: ["Actions", "either"],
|
|
32
|
+
ReactionPicker: ["Actions", "either"],
|
|
31
33
|
Toolbar: ["Actions", "either"],
|
|
32
34
|
/* ── Forms ────────────────────────────────────────────────────────────────
|
|
33
35
|
Typing or entering a value, and the structure a form is built from.
|