@estiva-app/ui 0.13.0 → 0.14.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.
Files changed (76) hide show
  1. package/dist/Avatar.d.ts +1 -1
  2. package/dist/Avatar.d.ts.map +1 -1
  3. package/dist/AvatarGroup.d.ts.map +1 -1
  4. package/dist/Card.d.ts +7 -1
  5. package/dist/Card.d.ts.map +1 -1
  6. package/dist/Divider.d.ts +5 -2
  7. package/dist/Divider.d.ts.map +1 -1
  8. package/dist/EmptyState.d.ts +3 -0
  9. package/dist/EmptyState.d.ts.map +1 -1
  10. package/dist/Property.d.ts +7 -0
  11. package/dist/Property.d.ts.map +1 -1
  12. package/dist/Reaction.d.ts +12 -6
  13. package/dist/Reaction.d.ts.map +1 -1
  14. package/dist/TextInput.d.ts +10 -1
  15. package/dist/TextInput.d.ts.map +1 -1
  16. package/dist/Toast.d.ts +19 -6
  17. package/dist/Toast.d.ts.map +1 -1
  18. package/dist/Toolbar.d.ts +1 -1
  19. package/dist/Toolbar.d.ts.map +1 -1
  20. package/dist/index.js +283 -246
  21. package/dist/index.js.map +3 -3
  22. package/package.json +1 -1
  23. package/src/AttachmentCard.tsx +14 -14
  24. package/src/Avatar.mdx +7 -2
  25. package/src/Avatar.picture.test.tsx +60 -0
  26. package/src/Avatar.stories.tsx +1 -1
  27. package/src/Avatar.tsx +50 -14
  28. package/src/AvatarGroup.tsx +1 -0
  29. package/src/Breadcrumb.tsx +2 -2
  30. package/src/Card.mdx +9 -3
  31. package/src/Card.stories.tsx +3 -0
  32. package/src/Card.test.tsx +41 -0
  33. package/src/Card.tsx +19 -1
  34. package/src/Checkbox.tsx +1 -1
  35. package/src/Chip.tsx +1 -1
  36. package/src/DialogShell.stories.tsx +1 -1
  37. package/src/Divider.mdx +3 -2
  38. package/src/Divider.test.tsx +15 -0
  39. package/src/Divider.tsx +11 -9
  40. package/src/EditableText.stories.tsx +2 -2
  41. package/src/EmptyState.mdx +3 -2
  42. package/src/EmptyState.stories.tsx +7 -3
  43. package/src/EmptyState.test.tsx +15 -0
  44. package/src/EmptyState.tsx +4 -1
  45. package/src/IconButton.stories.tsx +1 -1
  46. package/src/Kbd.tsx +3 -3
  47. package/src/Menu.stories.tsx +2 -2
  48. package/src/Menu.tsx +3 -3
  49. package/src/Popover.stories.tsx +1 -1
  50. package/src/PreviewCard.stories.tsx +5 -5
  51. package/src/Property.mdx +8 -0
  52. package/src/Property.stories.tsx +4 -4
  53. package/src/Property.test.tsx +44 -0
  54. package/src/Property.tsx +23 -8
  55. package/src/RailItem.tsx +1 -1
  56. package/src/Reaction.mdx +14 -3
  57. package/src/Reaction.test.tsx +62 -0
  58. package/src/Reaction.tsx +21 -12
  59. package/src/ReactionPicker.tsx +1 -1
  60. package/src/SectionLabel.stories.tsx +1 -1
  61. package/src/SectionLabel.tsx +1 -1
  62. package/src/Select.tsx +3 -3
  63. package/src/TextInput.mdx +6 -0
  64. package/src/TextInput.stories.tsx +45 -0
  65. package/src/TextInput.test.tsx +38 -0
  66. package/src/TextInput.tsx +16 -4
  67. package/src/Textarea.tsx +1 -1
  68. package/src/Toast.mdx +28 -4
  69. package/src/Toast.stories.tsx +12 -1
  70. package/src/Toast.test.tsx +137 -0
  71. package/src/Toast.tsx +127 -83
  72. package/src/Toolbar.tsx +4 -2
  73. package/src/cn.ts +1 -1
  74. package/stories/Choosing.mdx +1 -0
  75. package/stories/TokensPage.tsx +6 -1
  76. package/tailwind-preset.js +7 -0
package/dist/Avatar.d.ts CHANGED
@@ -7,7 +7,7 @@ export declare const hueFor: (key: string) => string;
7
7
  */
8
8
  export declare const initialsFor: (name: string) => string;
9
9
  export interface AvatarProps {
10
- /** The picture URL, resolved by the caller. A picture that fails to load falls back to the initials. */
10
+ /** The picture URL, resolved by the caller. Until it arrives, and if it fails, the initials show. */
11
11
  src?: string;
12
12
  /** The person's name — where the initials and the colour come from. */
13
13
  name?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../src/Avatar.tsx"],"names":[],"mappings":"AA2BA,eAAO,MAAM,MAAM,GAAI,KAAK,MAAM,WAIjC,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,WAIvC,CAAA;AAED,MAAM,WAAW,WAAW;IAC1B,wGAAwG;IACxG,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,uEAAuE;IACvE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,uGAAuG;IACvG,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;;;;;;;;OAUG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,MAAM,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAQ,EAAE,IAAS,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,WAAW,+BAiD/F"}
1
+ {"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../src/Avatar.tsx"],"names":[],"mappings":"AA+BA,eAAO,MAAM,MAAM,GAAI,KAAK,MAAM,WAIjC,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,WAIvC,CAAA;AAED,MAAM,WAAW,WAAW;IAC1B,qGAAqG;IACrG,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,uEAAuE;IACvE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,uGAAuG;IACvG,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;;;;;;;;OAUG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,MAAM,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAQ,EAAE,IAAS,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,WAAW,+BAiF/F"}
@@ -1 +1 @@
1
- {"version":3,"file":"AvatarGroup.d.ts","sourceRoot":"","sources":["../src/AvatarGroup.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,iBAAiB,EAAE,CAAA;IAC5B;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,IAAS,EAAE,EAAE,gBAAgB,+BAiCnE"}
1
+ {"version":3,"file":"AvatarGroup.d.ts","sourceRoot":"","sources":["../src/AvatarGroup.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,iBAAiB,EAAE,CAAA;IAC5B;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,IAAS,EAAE,EAAE,gBAAgB,+BAkCnE"}
package/dist/Card.d.ts CHANGED
@@ -34,6 +34,12 @@ export interface CardProps extends ComponentPropsWithRef<'div'> {
34
34
  hover?: CardHover;
35
35
  /** No hairline until it is pointed at — a row in a feed that shows its edge only when you are on it. */
36
36
  quietUntilHover?: boolean;
37
+ /**
38
+ * Draw the hover look now, whatever the pointer does. For a card whose own menu or picker is open: the menu
39
+ * opens outside the card, so the pointer on it leaves the card, and the card would go dark under its own menu.
40
+ * Ignored while `selected` or `active`, like the pointer.
41
+ */
42
+ hovered?: boolean;
37
43
  /** The one you are on: the selected fill, a subtle hairline, and no hover. */
38
44
  selected?: boolean;
39
45
  /** Being changed in place: the selected fill with the accent hairline, and no hover. */
@@ -44,5 +50,5 @@ export interface CardProps extends ComponentPropsWithRef<'div'> {
44
50
  unreadable?: boolean;
45
51
  children: ReactNode;
46
52
  }
47
- export declare function Card({ fill, href, hover, quietUntilHover, selected, active, attention, unreadable, className, children, ...props }: CardProps): import("react").JSX.Element;
53
+ export declare function Card({ fill, href, hover, quietUntilHover, hovered, selected, active, attention, unreadable, className, children, ...props }: CardProps): import("react").JSX.Element;
48
54
  //# sourceMappingURL=Card.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../src/Card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAI7D;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,CAAA;AAChE,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,CAAA;AACpD,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,CAAA;AAsBhD,MAAM,WAAW,SAAU,SAAQ,qBAAqB,CAAC,KAAK,CAAC;IAC7D,gDAAgD;IAChD,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,6HAA6H;IAC7H,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,qFAAqF;IACrF,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,wGAAwG;IACxG,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,wFAAwF;IACxF,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,8FAA8F;IAC9F,SAAS,CAAC,EAAE,aAAa,CAAA;IACzB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED,wBAAgB,IAAI,CAAC,EACnB,IAAgB,EAChB,IAAI,EACJ,KAAkC,EAClC,eAAuB,EACvB,QAAgB,EAChB,MAAc,EACd,SAAS,EACT,UAAkB,EAClB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,SAAS,+BA+BX"}
1
+ {"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../src/Card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAI7D;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,CAAA;AAChE,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,CAAA;AACpD,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,CAAA;AA8BhD,MAAM,WAAW,SAAU,SAAQ,qBAAqB,CAAC,KAAK,CAAC;IAC7D,gDAAgD;IAChD,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,6HAA6H;IAC7H,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,qFAAqF;IACrF,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,wGAAwG;IACxG,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,wFAAwF;IACxF,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,8FAA8F;IAC9F,SAAS,CAAC,EAAE,aAAa,CAAA;IACzB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED,wBAAgB,IAAI,CAAC,EACnB,IAAgB,EAChB,IAAI,EACJ,KAAkC,EAClC,eAAuB,EACvB,OAAe,EACf,QAAgB,EAChB,MAAc,EACd,SAAS,EACT,UAAkB,EAClB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,SAAS,+BAkCX"}
package/dist/Divider.d.ts CHANGED
@@ -1,8 +1,11 @@
1
1
  /**
2
2
  * Peek's Divider (2026-08-28): a hairline in `border-subtle`, inset 12px each
3
3
  * side. Plus what Ship added: `orientation="vertical"` — the same hairline
4
- * standing up, stretching to its row's height, no inset — and the separator
5
- * role for assistive tech.
4
+ * standing up, stretching to its row's height, no inset.
5
+ *
6
+ * On Base UI's `Separator` since stage 6 of the migration (2026-09-14). It
7
+ * writes the `separator` role and `aria-orientation` this component used to
8
+ * write by hand, and adds `data-orientation`. Nothing it draws changed.
6
9
  */
7
10
  export interface DividerProps {
8
11
  orientation?: 'horizontal' | 'vertical';
@@ -1 +1 @@
1
- {"version":3,"file":"Divider.d.ts","sourceRoot":"","sources":["../src/Divider.tsx"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAA;IACvC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,CAAA;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,OAAO,CAAC,EAAE,WAA0B,EAAE,KAAK,EAAE,IAAgB,EAAE,SAAS,EAAE,EAAE,YAAY,+BA2BvG"}
1
+ {"version":3,"file":"Divider.d.ts","sourceRoot":"","sources":["../src/Divider.tsx"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AACH,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAA;IACvC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,CAAA;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,OAAO,CAAC,EAAE,WAA0B,EAAE,KAAK,EAAE,IAAgB,EAAE,SAAS,EAAE,EAAE,YAAY,+BAyBvG"}
@@ -12,6 +12,9 @@ import type { ReactNode } from 'react';
12
12
  * - `section` — one section of a page is empty, and the page has other
13
13
  * things on it: the line alone, left-aligned, no icon. A section's
14
14
  * emptiness is a line among the page's content, not a stage of its own.
15
+ * It is the quiet line — caption size in the muted colour, as a Field's
16
+ * helper line is — so beside rows it reads as "nothing here", not as one
17
+ * more row (Katerina, 2026-09-15: "not that intense", "smaller font").
15
18
  *
16
19
  * The message is the caller's — a shared component has no words of its own
17
20
  * for what is missing.
@@ -1 +1 @@
1
- {"version":3,"file":"EmptyState.d.ts","sourceRoot":"","sources":["../src/EmptyState.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAItC;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,eAAe;IAC9B,8EAA8E;IAC9E,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAc,EAAE,SAAS,EAAE,EAAE,eAAe,+BAUvF"}
1
+ {"version":3,"file":"EmptyState.d.ts","sourceRoot":"","sources":["../src/EmptyState.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAItC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,eAAe;IAC9B,8EAA8E;IAC9E,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAc,EAAE,SAAS,EAAE,EAAE,eAAe,+BAUvF"}
@@ -13,6 +13,13 @@ import type { ReactNode } from 'react';
13
13
  * is the `menu` token (9px / 115% / 500), uppercase and letter-spaced —
14
14
  * its own voice, deliberately not SectionLabel's (unmerged, Katerina
15
15
  * 2026-09-01). A literal string, not merged, so the token size survives.
16
+ *
17
+ * **A name and its value, in the markup made for it** (stage 6 of the
18
+ * migration, 2026-09-14). Base UI has no part for this, so it is HTML's own:
19
+ * a `<dl>` holding one `<dt>` (the label) and one `<dd>` (the value), so a
20
+ * screen reader hears the label as the name of what follows rather than as a
21
+ * loose word beside it. Each property is a list of one, which needs no
22
+ * wrapper from the caller.
16
23
  */
17
24
  export interface PropertyProps {
18
25
  label: string;
@@ -1 +1 @@
1
- {"version":3,"file":"Property.d.ts","sourceRoot":"","sources":["../src/Property.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAGtC;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,KAAK,GAAG,SAAS,CAAA;IAC1B,QAAQ,EAAE,SAAS,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,MAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,aAAa,+BAkBrF"}
1
+ {"version":3,"file":"Property.d.ts","sourceRoot":"","sources":["../src/Property.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAGtC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,KAAK,GAAG,SAAS,CAAA;IAC1B,QAAQ,EAAE,SAAS,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAUD,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,MAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,aAAa,+BAkBrF"}
@@ -20,8 +20,10 @@ import type { ButtonHTMLAttributes, ReactNode } from 'react';
20
20
  * 1px hairline against no border at all — which is legible and is not the
21
21
  * signal Peek's accent fill gives.
22
22
  *
23
- * It is a real `<button>` with `aria-pressed`, so the state reaches assistive
24
- * tech as a toggle rather than as a colour.
23
+ * On Base UI's `Toggle` since stage 6 of the migration (2026-09-14): a native
24
+ * `<button>` with `aria-pressed` and `data-pressed`, so the state reaches
25
+ * assistive tech as a toggle rather than as a colour. Base UI writes both;
26
+ * this component used to write the first by hand.
25
27
  *
26
28
  * ## `aria-label` is required, and the reason is specific
27
29
  *
@@ -37,12 +39,16 @@ import type { ButtonHTMLAttributes, ReactNode } from 'react';
37
39
  * `small`, the same 8px horizontal padding, the `chip` type token for the
38
40
  * count so it sits at 11px/500 like every other count in the system.
39
41
  */
40
- export interface ReactionProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {
42
+ export interface ReactionProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children' | 'type' | 'value'> {
41
43
  /** The emoji, drawn decoratively — name the control with `aria-label`. */
42
44
  emoji: ReactNode;
43
- /** How many people reacted. Drawn as-is; `0` is not a reaction and is not drawn. */
45
+ /** How many people reacted. Drawn as it is. A count of `0` is not a reaction: do not render one. */
44
46
  count: number;
45
- /** You are one of them: the accent tint and edge, and `aria-pressed`. */
47
+ /**
48
+ * You are one of them: the accent tint and edge, and `aria-pressed`. The
49
+ * caller owns it — a press calls `onClick` and the pill keeps showing this
50
+ * value until the caller changes it.
51
+ */
46
52
  pressed?: boolean;
47
53
  /**
48
54
  * Names the control. **Required** — the emoji is decorative and the count is
@@ -50,5 +56,5 @@ export interface ReactionProps extends Omit<ButtonHTMLAttributes<HTMLButtonEleme
50
56
  */
51
57
  'aria-label': string;
52
58
  }
53
- export declare function Reaction({ emoji, count, pressed, className, type, ...props }: ReactionProps): import("react").JSX.Element;
59
+ export declare function Reaction({ emoji, count, pressed, className, ...props }: ReactionProps): import("react").JSX.Element;
54
60
  //# sourceMappingURL=Reaction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Reaction.d.ts","sourceRoot":"","sources":["../src/Reaction.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAG5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,UAAU,CAAC;IAC9F,0EAA0E;IAC1E,KAAK,EAAE,SAAS,CAAA;IAChB,oFAAoF;IACpF,KAAK,EAAE,MAAM,CAAA;IACb,yEAAyE;IACzE,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB;;;OAGG;IACH,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,OAAe,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,+BAqCnG"}
1
+ {"version":3,"file":"Reaction.d.ts","sourceRoot":"","sources":["../src/Reaction.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAI5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC;IACjH,0EAA0E;IAC1E,KAAK,EAAE,SAAS,CAAA;IAChB,oGAAoG;IACpG,KAAK,EAAE,MAAM,CAAA;IACb;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB;;;OAGG;IACH,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,OAAe,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,+BAuC7F"}
@@ -12,6 +12,15 @@ import { type InputHTMLAttributes } from 'react';
12
12
  * context behind it — is gone. Outside a `Field` it behaves as before: the
13
13
  * field context has a default, so nothing has to be wrapped.
14
14
  */
15
- export type TextInputProps = InputHTMLAttributes<HTMLInputElement>;
15
+ export interface TextInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size'> {
16
+ /**
17
+ * `small` is 24px tall with 12px text — the small `Select`'s size, so a
18
+ * field can share a dense row with small selects (D67, 2026-09-13: Peek's
19
+ * reference widget hand-built one because this was 38px). Replaces the
20
+ * native `size` attribute, which counts characters and which no caller
21
+ * used; set a width with the layout instead.
22
+ */
23
+ size?: 'default' | 'small';
24
+ }
16
25
  export declare const TextInput: import("react").ForwardRefExoticComponent<TextInputProps & import("react").RefAttributes<HTMLInputElement>>;
17
26
  //# sourceMappingURL=TextInput.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TextInput.d.ts","sourceRoot":"","sources":["../src/TextInput.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,mBAAmB,EAAE,MAAM,OAAO,CAAA;AAI5D;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,cAAc,GAAG,mBAAmB,CAAC,gBAAgB,CAAC,CAAA;AAElE,eAAO,MAAM,SAAS,6GAgBpB,CAAA"}
1
+ {"version":3,"file":"TextInput.d.ts","sourceRoot":"","sources":["../src/TextInput.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,mBAAmB,EAAE,MAAM,OAAO,CAAA;AAI5D;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,cAAe,SAAQ,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACzF;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,CAAA;CAC3B;AAED,eAAO,MAAM,SAAS,6GAmBpB,CAAA"}
package/dist/Toast.d.ts CHANGED
@@ -8,9 +8,12 @@ import { type ReactNode } from 'react';
8
8
  * the same dark overlay pill; the type lives in the icon's colour and glow,
9
9
  * not the surface.
10
10
  *
11
- * The provider owns positioning (bottom-left), the portal, and auto-dismiss
12
- * (5 s; pass `durationMs: 0` to keep one up). One toast at a time — a new
13
- * one replaces the standing one, it does not queue.
11
+ * The provider sits on Base UI's `Toast` since stage 6 of the migration
12
+ * (2026-09-14). Base UI owns the portal, the timers, the stack and what a
13
+ * screen reader hears; this file owns how a toast looks and where the stack
14
+ * stands (bottom-left). **Up to three show at once** (D7): the newest nearest
15
+ * the corner, a fourth hides the oldest until one of the three closes. Before
16
+ * stage 6 a new toast replaced the standing one, and nothing announced either.
14
17
  */
15
18
  export type ToastType = 'success' | 'brand' | 'neutral' | 'warning' | 'error';
16
19
  export interface ToastProps {
@@ -33,12 +36,20 @@ export interface ToastProps {
33
36
  onAction?: () => void;
34
37
  className?: string;
35
38
  }
39
+ /**
40
+ * One toast, drawn in place. What the provider shows is this pill; draw it
41
+ * yourself only where a page needs a toast's look without its timing — a
42
+ * story, a picture of the set.
43
+ */
36
44
  export declare function Toast({ label, type, leadingIcon, actionLabel, onAction, className }: ToastProps): import("react").JSX.Element;
37
45
  export interface ToastOptions {
38
46
  label: string;
39
47
  /** Which of the five this is — it decides the surface and the leading icon. Defaults to 'neutral'. */
40
48
  type?: ToastType;
41
- /** When set, renders a clickable action on the right side. */
49
+ /**
50
+ * Renders an action on the right side. Pressing it runs `onAction`, if
51
+ * given, and closes this toast — so a Dismiss needs only its label.
52
+ */
42
53
  actionLabel?: string;
43
54
  onAction?: () => void;
44
55
  /** Show the leading icon — a check, a `!` or an `×`, per `type`. Defaults to true. */
@@ -47,8 +58,10 @@ export interface ToastOptions {
47
58
  durationMs?: number;
48
59
  }
49
60
  interface ToastValue {
50
- showToast: (opts: ToastOptions) => void;
51
- dismissToast: () => void;
61
+ /** Shows a toast and returns its id, for `dismissToast`. */
62
+ showToast: (opts: ToastOptions) => string;
63
+ /** Closes the toast with this id; with no id, closes every toast on screen. */
64
+ dismissToast: (id?: string) => void;
52
65
  }
53
66
  export declare function ToastProvider({ children }: {
54
67
  children: ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../src/Toast.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAwE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAK5G;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAA;AAE7E,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAA;IACb;;;;;;;;;OASG;IACH,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,sFAAsF;IACtF,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,qFAAqF;IACrF,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AA8CD,wBAAgB,KAAK,CAAC,EAAE,KAAK,EAAE,IAAgB,EAAE,WAAkB,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,UAAU,+BAiClH;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,sGAAsG;IACtG,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,8DAA8D;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,sFAAsF;IACtF,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,4EAA4E;IAC5E,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAMD,UAAU,UAAU;IAClB,SAAS,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAA;IACvC,YAAY,EAAE,MAAM,IAAI,CAAA;CACzB;AAMD,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,+BAiDlE;AAED,wBAAgB,QAAQ,IAAI,UAAU,CAIrC"}
1
+ {"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../src/Toast.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAsC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAK1E;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAA;AAE7E,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAA;IACb;;;;;;;;;OASG;IACH,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,sFAAsF;IACtF,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,qFAAqF;IACrF,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAwED;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,EAAE,KAAK,EAAE,IAAgB,EAAE,WAAkB,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,UAAU,+BAelH;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,sGAAsG;IACtG,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,sFAAsF;IACtF,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,4EAA4E;IAC5E,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,UAAU,UAAU;IAClB,4DAA4D;IAC5D,SAAS,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,MAAM,CAAA;IACzC,+EAA+E;IAC/E,YAAY,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;CACpC;AAcD,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,+BAgClE;AAsCD,wBAAgB,QAAQ,IAAI,UAAU,CAIrC"}
package/dist/Toolbar.d.ts CHANGED
@@ -83,7 +83,7 @@ export declare function ToolbarButton({ ref, disabled, disabledReason, ...props
83
83
  * a `TextInput` dropped in the row.
84
84
  */
85
85
  export type ToolbarInputProps = TextInputProps;
86
- export declare function ToolbarInput(props: ToolbarInputProps): import("react").JSX.Element;
86
+ export declare function ToolbarInput({ size, ...props }: ToolbarInputProps): import("react").JSX.Element;
87
87
  /**
88
88
  * The hairline between two groups of controls. It is `Divider`'s rule and
89
89
  * `Toolbar.Separator`'s role, so a screen reader hears the grouping a sighted
@@ -1 +1 @@
1
- {"version":3,"file":"Toolbar.d.ts","sourceRoot":"","sources":["../src/Toolbar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAG3C,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,cAAc,CAAA;AAE/D,OAAO,EAAa,KAAK,cAAc,EAAE,MAAM,aAAa,CAAA;AAE5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,YAAY,EAAE,MAAM,CAAA;IACpB,4EAA4E;IAC5E,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAA;IACvC,2EAA2E;IAC3E,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,QAAQ,EAAE,SAAS,CAAA;IACnB,iEAAiE;IACjE,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,OAAO,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,WAA0B,EAAE,SAAgB,EAAE,OAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,YAAY,+BAwBnJ;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,kBAAmB,SAAQ,eAAe;IACzD,GAAG,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAA;CAC7B;AAED,wBAAgB,aAAa,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,KAAK,EAAE,EAAE,kBAAkB,+BAqB5F;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,iBAAiB,GAAG,cAAc,CAAA;AAE9C,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,+BAEpD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,+BASrE"}
1
+ {"version":3,"file":"Toolbar.d.ts","sourceRoot":"","sources":["../src/Toolbar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAG3C,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,cAAc,CAAA;AAE/D,OAAO,EAAa,KAAK,cAAc,EAAE,MAAM,aAAa,CAAA;AAE5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,YAAY,EAAE,MAAM,CAAA;IACpB,4EAA4E;IAC5E,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAA;IACvC,2EAA2E;IAC3E,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,QAAQ,EAAE,SAAS,CAAA;IACnB,iEAAiE;IACjE,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,OAAO,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,WAA0B,EAAE,SAAgB,EAAE,OAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,YAAY,+BAwBnJ;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,kBAAmB,SAAQ,eAAe;IACzD,GAAG,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAA;CAC7B;AAED,wBAAgB,aAAa,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,KAAK,EAAE,EAAE,kBAAkB,+BAqB5F;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,iBAAiB,GAAG,cAAc,CAAA;AAE9C,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,iBAAiB,+BAIjE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,+BASrE"}