@igne-agency/react-web-ui 0.4.0 → 0.6.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 (257) hide show
  1. package/dist/base.css +3 -0
  2. package/dist/components/accordion/accordion.css +21 -21
  3. package/dist/components/accordion/accordion.d.ts +17 -4
  4. package/dist/components/accordion/accordion.js +83 -36
  5. package/dist/components/accordion/accordion.module.js +6 -6
  6. package/dist/components/attachment-tile/attachment-preview.d.ts +56 -13
  7. package/dist/components/attachment-tile/attachment-preview.js +388 -119
  8. package/dist/components/attachment-tile/attachment-tile.css +31 -25
  9. package/dist/components/attachment-tile/attachment-tile.d.ts +32 -10
  10. package/dist/components/attachment-tile/attachment-tile.js +160 -43
  11. package/dist/components/attachment-tile/attachment-tile.module.js +8 -8
  12. package/dist/components/attachment-tile/index.d.ts +1 -1
  13. package/dist/components/avatar/avatar.css +9 -9
  14. package/dist/components/avatar/avatar.d.ts +50 -5
  15. package/dist/components/avatar/avatar.js +178 -64
  16. package/dist/components/avatar/avatar.module.js +3 -3
  17. package/dist/components/avatar-group/avatar-group-context.d.ts +2 -4
  18. package/dist/components/avatar-group/avatar-group-context.js +2 -2
  19. package/dist/components/avatar-group/avatar-group.css +26 -20
  20. package/dist/components/avatar-group/avatar-group.d.ts +85 -27
  21. package/dist/components/avatar-group/avatar-group.js +400 -246
  22. package/dist/components/avatar-group/avatar-group.module.js +8 -8
  23. package/dist/components/breadcrumbs/breadcrumbs.css +12 -12
  24. package/dist/components/breadcrumbs/breadcrumbs.d.ts +69 -23
  25. package/dist/components/breadcrumbs/breadcrumbs.js +299 -248
  26. package/dist/components/breadcrumbs/breadcrumbs.module.js +8 -8
  27. package/dist/components/button/button.css +29 -31
  28. package/dist/components/button/button.d.ts +20 -16
  29. package/dist/components/button/button.js +140 -145
  30. package/dist/components/button/button.module.js +1 -1
  31. package/dist/components/button/index.js +1 -1
  32. package/dist/components/checkbox-field/checkbox-field.js +63 -49
  33. package/dist/components/checkbox-field/checkbox.css +105 -56
  34. package/dist/components/checkbox-field/checkbox.d.ts +3 -2
  35. package/dist/components/checkbox-field/checkbox.js +12 -9
  36. package/dist/components/checkbox-field/checkbox.module.js +4 -4
  37. package/dist/components/checkbox-group-field/checkbox-group-field.js +78 -72
  38. package/dist/components/checkbox-group-field/checkbox-group.css +14 -10
  39. package/dist/components/checkbox-group-field/checkbox-group.d.ts +2 -2
  40. package/dist/components/checkbox-group-field/checkbox-group.js +2 -2
  41. package/dist/components/checkbox-group-field/checkbox-group.module.js +2 -2
  42. package/dist/components/collapsible/collapsible.css +20 -20
  43. package/dist/components/collapsible/collapsible.d.ts +17 -4
  44. package/dist/components/collapsible/collapsible.js +83 -36
  45. package/dist/components/collapsible/collapsible.module.js +5 -5
  46. package/dist/components/combobox-field/combobox-field.js +206 -158
  47. package/dist/components/combobox-field/combobox.css +492 -277
  48. package/dist/components/combobox-field/combobox.d.ts +148 -39
  49. package/dist/components/combobox-field/combobox.js +506 -206
  50. package/dist/components/combobox-field/combobox.module.js +21 -21
  51. package/dist/components/combobox-field/value-state-view.css +5 -5
  52. package/dist/components/combobox-field/value-state-view.module.js +4 -4
  53. package/dist/components/composer/composer-attachments.d.ts +30 -11
  54. package/dist/components/composer/composer-attachments.js +45 -40
  55. package/dist/components/composer/composer-editor.css +40 -35
  56. package/dist/components/composer/composer-editor.d.ts +14 -4
  57. package/dist/components/composer/composer-editor.js +134 -44
  58. package/dist/components/composer/composer-editor.module.js +5 -5
  59. package/dist/components/composer/composer.css +22 -22
  60. package/dist/components/composer/composer.d.ts +13 -2
  61. package/dist/components/composer/composer.js +78 -63
  62. package/dist/components/composer/composer.module.js +5 -5
  63. package/dist/components/composer/index.d.ts +2 -2
  64. package/dist/components/composer/mention-text.css +5 -5
  65. package/dist/components/composer/mention-text.module.js +1 -1
  66. package/dist/components/confirm-dialog/confirm-dialog.css +29 -29
  67. package/dist/components/confirm-dialog/confirm-dialog.d.ts +57 -3
  68. package/dist/components/confirm-dialog/confirm-dialog.js +266 -108
  69. package/dist/components/confirm-dialog/confirm-dialog.module.js +5 -5
  70. package/dist/components/conversation/conversation.css +52 -52
  71. package/dist/components/conversation/conversation.d.ts +43 -18
  72. package/dist/components/conversation/conversation.js +120 -78
  73. package/dist/components/conversation/conversation.module.js +15 -15
  74. package/dist/components/date-field/date-field.d.ts +1 -1
  75. package/dist/components/date-field/date-field.js +202 -100
  76. package/dist/components/date-field/date-input.d.ts +73 -37
  77. package/dist/components/date-field/date-input.js +72 -45
  78. package/dist/components/date-field/index.d.ts +1 -1
  79. package/dist/components/date-range-field/date-range-field.d.ts +1 -1
  80. package/dist/components/date-range-field/date-range-field.js +219 -107
  81. package/dist/components/date-range-field/date-range-input.d.ts +84 -40
  82. package/dist/components/date-range-field/date-range-input.js +83 -48
  83. package/dist/components/dialog/dialog.css +32 -32
  84. package/dist/components/dialog/dialog.d.ts +8 -7
  85. package/dist/components/dialog/dialog.js +8 -26
  86. package/dist/components/dialog/dialog.module.js +6 -6
  87. package/dist/components/divider/divider.css +6 -6
  88. package/dist/components/divider/divider.d.ts +36 -2
  89. package/dist/components/divider/divider.js +195 -29
  90. package/dist/components/divider/divider.module.js +3 -3
  91. package/dist/components/drawer/drawer.css +55 -56
  92. package/dist/components/drawer/drawer.d.ts +8 -7
  93. package/dist/components/drawer/drawer.js +8 -26
  94. package/dist/components/drawer/drawer.module.js +6 -6
  95. package/dist/components/field/field.css +34 -24
  96. package/dist/components/field/field.d.ts +60 -37
  97. package/dist/components/field/field.js +242 -157
  98. package/dist/components/field/field.module.js +12 -10
  99. package/dist/components/field/input-parts.d.ts +11 -13
  100. package/dist/components/field/input-parts.js +23 -42
  101. package/dist/components/field-placeholder/field-placeholder.css +6 -6
  102. package/dist/components/field-placeholder/field-placeholder.module.js +4 -4
  103. package/dist/components/fieldset/field-group.d.ts +1 -1
  104. package/dist/components/fieldset/field-group.js +48 -42
  105. package/dist/components/fieldset/fieldset-root.d.ts +1 -1
  106. package/dist/components/fieldset/fieldset-root.js +19 -17
  107. package/dist/components/fieldset/fieldset.d.ts +2 -2
  108. package/dist/components/fieldset/fieldset.js +2 -2
  109. package/dist/components/file-field/file-field.css +126 -60
  110. package/dist/components/file-field/file-field.js +201 -109
  111. package/dist/components/file-field/file-field.module.js +4 -4
  112. package/dist/components/file-field/file-input.d.ts +66 -40
  113. package/dist/components/file-field/file-input.js +188 -132
  114. package/dist/components/filter-bar/filter-bar.css +8 -8
  115. package/dist/components/filter-bar/filter-bar.d.ts +12 -3
  116. package/dist/components/filter-bar/filter-bar.js +23 -25
  117. package/dist/components/filter-bar/filter-bar.module.js +5 -5
  118. package/dist/components/form/form.d.ts +19 -7
  119. package/dist/components/form/form.js +80 -29
  120. package/dist/components/icon/icon.css +2 -2
  121. package/dist/components/icon/icon.module.js +1 -1
  122. package/dist/components/link/link.css +6 -5
  123. package/dist/components/link/link.module.js +1 -1
  124. package/dist/components/menu/menu.css +52 -47
  125. package/dist/components/menu/menu.d.ts +32 -25
  126. package/dist/components/menu/menu.js +75 -124
  127. package/dist/components/menu/menu.module.js +8 -8
  128. package/dist/components/nav/nav-context.d.ts +1 -1
  129. package/dist/components/nav/nav-item-view.d.ts +10 -13
  130. package/dist/components/nav/nav-item-view.js +42 -54
  131. package/dist/components/nav/nav.css +150 -119
  132. package/dist/components/nav/nav.d.ts +61 -17
  133. package/dist/components/nav/nav.js +271 -176
  134. package/dist/components/nav/nav.module.js +17 -15
  135. package/dist/components/number-field/number-field.css +153 -64
  136. package/dist/components/number-field/number-field.d.ts +2 -2
  137. package/dist/components/number-field/number-field.js +112 -91
  138. package/dist/components/number-field/number-field.module.js +6 -6
  139. package/dist/components/number-field/number-input.d.ts +43 -23
  140. package/dist/components/number-field/number-input.js +179 -125
  141. package/dist/components/otp-field/otp-field.css +153 -60
  142. package/dist/components/otp-field/otp-field.d.ts +2 -2
  143. package/dist/components/otp-field/otp-field.js +62 -46
  144. package/dist/components/otp-field/otp-field.module.js +4 -4
  145. package/dist/components/otp-field/otp-input.d.ts +8 -6
  146. package/dist/components/otp-field/otp-input.js +92 -92
  147. package/dist/components/pagination/pagination.d.ts +46 -15
  148. package/dist/components/pagination/pagination.js +217 -224
  149. package/dist/components/password-field/password-field.css +23 -23
  150. package/dist/components/password-field/password-field.js +107 -85
  151. package/dist/components/password-field/password-field.module.js +8 -8
  152. package/dist/components/password-field/password-strength.d.ts +107 -3
  153. package/dist/components/password-field/password-strength.js +569 -92
  154. package/dist/components/photo-field/photo-field.js +137 -112
  155. package/dist/components/photo-field/photo-input.css +67 -44
  156. package/dist/components/photo-field/photo-input.d.ts +59 -15
  157. package/dist/components/photo-field/photo-input.js +173 -86
  158. package/dist/components/photo-field/photo-input.module.js +10 -8
  159. package/dist/components/popover/popover.css +41 -41
  160. package/dist/components/popover/popover.d.ts +66 -25
  161. package/dist/components/popover/popover.js +332 -217
  162. package/dist/components/popover/popover.module.js +15 -19
  163. package/dist/components/radio-group-field/radio-group-field.js +80 -71
  164. package/dist/components/radio-group-field/radio-group.css +112 -60
  165. package/dist/components/radio-group-field/radio-group.d.ts +19 -3
  166. package/dist/components/radio-group-field/radio-group.js +66 -23
  167. package/dist/components/radio-group-field/radio-group.module.js +4 -4
  168. package/dist/components/segmented-control-field/segmented-control-field.d.ts +1 -1
  169. package/dist/components/segmented-control-field/segmented-control-field.js +111 -96
  170. package/dist/components/segmented-control-field/segmented-control.css +132 -79
  171. package/dist/components/segmented-control-field/segmented-control.d.ts +39 -15
  172. package/dist/components/segmented-control-field/segmented-control.js +124 -41
  173. package/dist/components/segmented-control-field/segmented-control.module.js +4 -4
  174. package/dist/components/select-field/select.css +214 -101
  175. package/dist/components/select-field/select.d.ts +43 -11
  176. package/dist/components/select-field/select.js +194 -109
  177. package/dist/components/select-field/select.module.js +14 -14
  178. package/dist/components/skeleton/skeleton.css +4 -4
  179. package/dist/components/skeleton/skeleton.module.js +3 -3
  180. package/dist/components/stale/stale.css +15 -15
  181. package/dist/components/stale/stale.d.ts +27 -3
  182. package/dist/components/stale/stale.js +147 -66
  183. package/dist/components/stale/stale.module.js +6 -6
  184. package/dist/components/status-message/status-message.css +22 -22
  185. package/dist/components/status-message/status-message.module.js +6 -6
  186. package/dist/components/switch-field/switch-field.js +77 -57
  187. package/dist/components/switch-field/switch.css +112 -63
  188. package/dist/components/switch-field/switch.d.ts +20 -3
  189. package/dist/components/switch-field/switch.js +70 -27
  190. package/dist/components/switch-field/switch.module.js +4 -4
  191. package/dist/components/tabs/tabs.css +32 -32
  192. package/dist/components/tabs/tabs.d.ts +21 -7
  193. package/dist/components/tabs/tabs.js +73 -14
  194. package/dist/components/tabs/tabs.module.js +7 -7
  195. package/dist/components/tag/tag.css +84 -84
  196. package/dist/components/tag/tag.module.js +3 -3
  197. package/dist/components/tag-group/tag-group.css +94 -94
  198. package/dist/components/tag-group/tag-group.module.js +4 -4
  199. package/dist/components/text-field/text-field.css +159 -82
  200. package/dist/components/text-field/text-field.d.ts +1 -1
  201. package/dist/components/text-field/text-field.js +139 -110
  202. package/dist/components/text-field/text-field.module.js +9 -9
  203. package/dist/components/text-field/text-input.d.ts +81 -45
  204. package/dist/components/text-field/text-input.js +366 -217
  205. package/dist/components/textarea-field/textarea-field.css +7 -2
  206. package/dist/components/textarea-field/textarea-field.js +72 -56
  207. package/dist/components/textarea-field/textarea-field.module.js +2 -2
  208. package/dist/components/time-field/time-field.js +153 -60
  209. package/dist/components/time-field/time-input.d.ts +21 -10
  210. package/dist/components/time-field/time-input.js +22 -11
  211. package/dist/components/toast/toast-provider.css +34 -31
  212. package/dist/components/toast/toast-provider.d.ts +63 -14
  213. package/dist/components/toast/toast-provider.js +174 -111
  214. package/dist/components/toast/toast-provider.module.js +7 -7
  215. package/dist/components/toggle-group-field/toggle-group-field.d.ts +1 -1
  216. package/dist/components/toggle-group-field/toggle-group-field.js +95 -89
  217. package/dist/components/toggle-group-field/toggle-group.css +117 -67
  218. package/dist/components/toggle-group-field/toggle-group.d.ts +2 -2
  219. package/dist/components/toggle-group-field/toggle-group.js +2 -2
  220. package/dist/components/toggle-group-field/toggle-group.module.js +2 -2
  221. package/dist/components/tooltip/tooltip.css +4 -4
  222. package/dist/components/tooltip/tooltip.module.js +1 -1
  223. package/dist/data-table/data-table-content.js +6 -5
  224. package/dist/data-table/data-table-parts.d.ts +41 -13
  225. package/dist/data-table/data-table-parts.js +213 -172
  226. package/dist/data-table/data-table-selection.d.ts +105 -3
  227. package/dist/data-table/data-table-selection.js +654 -145
  228. package/dist/data-table/data-table.css +125 -128
  229. package/dist/data-table/data-table.d.ts +21 -26
  230. package/dist/data-table/data-table.js +20 -23
  231. package/dist/data-table/data-table.module.js +32 -34
  232. package/dist/data-table/index.d.ts +2 -2
  233. package/dist/index.js +3 -3
  234. package/dist/lib/calendar/calendar-navigation.d.ts +39 -5
  235. package/dist/lib/calendar/calendar-navigation.js +185 -118
  236. package/dist/lib/calendar/calendar-parts.d.ts +143 -0
  237. package/dist/lib/calendar/calendar-parts.js +540 -0
  238. package/dist/lib/calendar/calendar-prefab.d.ts +52 -0
  239. package/dist/lib/calendar/calendar-prefab.js +311 -0
  240. package/dist/lib/calendar/calendar-year.d.ts +3 -1
  241. package/dist/lib/calendar/calendar-year.js +139 -131
  242. package/dist/lib/calendar/temporal.css +325 -232
  243. package/dist/lib/calendar/temporal.d.ts +67 -82
  244. package/dist/lib/calendar/temporal.js +258 -569
  245. package/dist/lib/calendar/temporal.module.js +38 -38
  246. package/dist/lib/forms/use-connected-field.d.ts +1 -1
  247. package/dist/lib/forms/use-connected-field.js +1 -1
  248. package/dist/lib/render-as.d.ts +13 -0
  249. package/dist/lib/render-as.js +46 -0
  250. package/dist/terrazzo/index.d.ts +4 -3
  251. package/dist/terrazzo/index.js +17 -6
  252. package/dist/tokens.css +28 -4
  253. package/package.json +2 -2
  254. package/tokens/dark.tokens.json +6 -0
  255. package/tokens/sys.tokens.json +7 -0
  256. package/dist/components/button/close-button.d.ts +0 -16
  257. package/dist/components/button/close-button.js +0 -30
@@ -1,103 +1,106 @@
1
1
  @layer kit.reset, kit.base, kit.components;
2
2
  @layer kit.components {
3
- ._viewport_x67qw_3 {
3
+ ._viewport_1majn_3 {
4
4
  position: fixed;
5
5
  inset-block: auto var(--toast-viewport-inset, var(--sys-unit-16));
6
6
  inset-inline: auto var(--toast-viewport-inset, var(--sys-unit-16));
7
7
  display: flex;
8
8
  flex-direction: column;
9
- gap: var(--sys-unit-8);
9
+ gap: var(--toast-viewport-gap, var(--sys-unit-8));
10
10
  inline-size: var(--toast-width, min(24rem, 100vw - 2rem));
11
11
  }
12
- ._viewport_x67qw_3 {
12
+ ._viewport_1majn_3 {
13
13
  outline: 0 solid var(--sys-color-focus-ring);
14
14
  outline-offset: var(--sys-focus-ring-offset);
15
15
  }
16
- ._viewport_x67qw_3:focus-visible {
16
+ ._viewport_1majn_3:focus-visible {
17
17
  outline-width: var(--sys-focus-ring-width);
18
18
  }
19
- ._toast_x67qw_19 {
19
+ ._toast_1majn_19 {
20
20
  --_toast-fg: var(--sys-color-text);
21
21
  --_toast-bg: var(--sys-color-surface-overlay-high);
22
22
  display: grid;
23
23
  grid-template-columns: auto minmax(0, 1fr) auto;
24
24
  align-items: center;
25
- row-gap: var(--sys-unit-6);
25
+ row-gap: var(--toast-gap, var(--sys-unit-6));
26
26
  box-sizing: border-box;
27
27
  border-radius: var(--toast-radius, var(--sys-radius-md));
28
28
  background: var(--toast-bg, var(--_toast-bg));
29
- box-shadow: var(--sys-elevation-2);
30
- padding: var(--sys-unit-8);
29
+ box-shadow: var(--toast-shadow, var(--sys-elevation-2));
30
+ padding: var(--toast-pad, var(--sys-unit-8));
31
31
  color: var(--toast-fg, var(--_toast-fg));
32
- font: var(--sys-font-body-medium);
32
+ font: var(--toast-font, var(--sys-font-body-medium));
33
33
  }
34
34
  @media not (prefers-reduced-motion) {
35
- ._toast_x67qw_19 {
35
+ ._toast_1majn_19 {
36
36
  transition: opacity var(--sys-motion-short) var(--sys-motion-standard), scale var(--sys-motion-short) var(--sys-motion-emphasized);
37
37
  }
38
38
  }
39
- ._toast_x67qw_19[data-starting-style], ._toast_x67qw_19[data-ending-style] {
39
+ ._toast_1majn_19[data-starting-style], ._toast_1majn_19[data-ending-style] {
40
40
  opacity: 0;
41
41
  scale: 0.8;
42
42
  }
43
- ._toast_x67qw_19[data-tone=success] {
43
+ ._toast_1majn_19[data-tone=success] {
44
44
  --_toast-fg: var(--sys-color-success-fg);
45
45
  --_toast-bg: var(--sys-color-success-bg);
46
46
  }
47
- ._toast_x67qw_19[data-tone=error] {
47
+ ._toast_1majn_19[data-tone=error] {
48
48
  --_toast-fg: var(--sys-color-error-fg);
49
49
  --_toast-bg: var(--sys-color-error-bg);
50
50
  }
51
- ._toast_x67qw_19[data-tone=warning] {
51
+ ._toast_1majn_19[data-tone=warning] {
52
52
  --_toast-fg: var(--sys-color-warning-fg);
53
53
  --_toast-bg: var(--sys-color-warning-bg);
54
54
  }
55
- ._toast_x67qw_19[data-tone=info] {
55
+ ._toast_1majn_19[data-tone=info] {
56
56
  --_toast-fg: var(--sys-color-info-fg);
57
57
  --_toast-bg: var(--sys-color-info-bg);
58
58
  }
59
- ._icon_x67qw_59 {
59
+ ._icon_1majn_59 {
60
60
  display: inline-flex;
61
61
  flex-shrink: 0;
62
62
  grid-area: 1/1;
63
- margin-inline-end: var(--sys-unit-4);
63
+ margin-inline-end: var(--toast-icon-space, var(--sys-unit-4));
64
64
  font-size: var(--toast-icon-size, 1.2em);
65
65
  }
66
- ._icon_x67qw_59 > svg {
66
+ ._icon_1majn_59 > svg {
67
67
  inline-size: 1em;
68
68
  block-size: 1em;
69
69
  fill: currentcolor;
70
70
  }
71
- ._title_x67qw_71 {
71
+ ._title_1majn_71 {
72
72
  grid-area: 1/2;
73
73
  min-inline-size: 0;
74
- font: var(--sys-font-label-medium);
74
+ font: var(--toast-title-font, var(--sys-font-label-medium));
75
75
  }
76
- ._close_x67qw_76 {
76
+ ._close_1majn_76 {
77
77
  --btn-fg: var(--toast-fg, var(--_toast-fg));
78
78
  grid-area: 1/3;
79
- margin-inline-start: var(--sys-unit-6);
79
+ margin-inline-start: var(--toast-close-space, var(--sys-unit-6));
80
80
  }
81
- ._description_x67qw_81 {
81
+ ._description_1majn_81 {
82
82
  grid-column: 1/-1;
83
- font: var(--sys-font-body-medium);
83
+ font: var(--toast-description-font, var(--toast-font, var(--sys-font-body-medium)));
84
84
  text-wrap: pretty;
85
85
  }
86
- ._actions_x67qw_86 {
86
+ ._actions_1majn_86 {
87
87
  display: flex;
88
88
  grid-column: 1/-1;
89
- gap: var(--sys-unit-4);
90
- margin-block-start: var(--sys-unit-2);
89
+ gap: var(--toast-actions-gap, var(--sys-unit-4));
90
+ margin-block-start: var(--toast-actions-space, var(--sys-unit-2));
91
91
  }
92
- ._actions_x67qw_86 > [data-variant=primary] {
92
+ ._actions_1majn_86 > [data-variant=primary] {
93
93
  --btn-bg: var(--toast-fg, var(--_toast-fg));
94
94
  --btn-fg: var(--toast-bg, var(--_toast-bg));
95
95
  }
96
- ._actions_x67qw_86 > [data-variant=secondary] {
97
- --btn-bg: var(--sys-color-surface-overlay-high);
96
+ ._actions_1majn_86 > [data-variant=secondary] {
97
+ --btn-bg: var(
98
+ --toast-action-secondary-bg,
99
+ var(--sys-color-surface-overlay-high)
100
+ );
98
101
  --btn-fg: var(--toast-fg, var(--_toast-fg));
99
102
  }
100
- ._actions_x67qw_86 > [data-variant=tertiary] {
103
+ ._actions_1majn_86 > [data-variant=tertiary] {
101
104
  --btn-fg: var(--toast-fg, var(--_toast-fg));
102
105
  }
103
106
  }
@@ -8,7 +8,41 @@ export type ToastRootProps = Omit<BaseToast.Root.Props, "toast" | "className"> &
8
8
  toast: ToastObject;
9
9
  className?: string;
10
10
  }>;
11
- /** A toast's frame, in its tone: a dialog that holds the other parts. */
11
+ export type ToastProviderPartProps = Readonly<{
12
+ /** The app, and the `Portal` holding the `Viewport`. */
13
+ children: ReactNode;
14
+ }>;
15
+ /**
16
+ * Provides the global {@link toastManager} to the parts inside it. It renders
17
+ * no element of its own.
18
+ *
19
+ * @example
20
+ * <Toast.Provider>
21
+ * <App />
22
+ * <Toast.Portal>
23
+ * <Toast.Viewport aria-label="Notifications">…</Toast.Viewport>
24
+ * </Toast.Portal>
25
+ * </Toast.Provider>
26
+ */
27
+ declare const Provider: ({ children, }: ToastProviderPartProps) => ReactNode;
28
+ export type ToastViewportProps = Omit<BaseToast.Viewport.Props, "className" | "aria-label"> & Readonly<{
29
+ /** The region's name, reached with F6, such as "Notifications". */
30
+ "aria-label": string;
31
+ className?: string;
32
+ }>;
33
+ /**
34
+ * The region the toasts stack in, at the corner of the screen.
35
+ *
36
+ * @example
37
+ * <Toast.Viewport aria-label="Notifications">{toasts}</Toast.Viewport>
38
+ */
39
+ declare const Viewport: ({ className, ...props }: ToastViewportProps) => ReactNode;
40
+ /**
41
+ * A toast's frame, in its tone: a dialog that holds the other parts.
42
+ *
43
+ * @example
44
+ * <Toast.Root toast={toast}>…</Toast.Root>
45
+ */
12
46
  declare const Root: ({ toast, className, ...props }: ToastRootProps) => ReactNode;
13
47
  export type ToastIconProps = ComponentPropsWithRef<"span">;
14
48
  /** The caller's glyph before the title, sized and coloured by the toast. Renders nothing without children. */
@@ -26,17 +60,24 @@ declare const Description: ({ className, ...props }: ToastDescriptionProps) => R
26
60
  export type ToastActionsProps = ComponentPropsWithRef<"div">;
27
61
  /** The row of buttons under the text, re-coloured for the toast's tone. */
28
62
  declare const Actions: ({ className, ...props }: ToastActionsProps) => ReactNode;
29
- export type ToastCloseProps = Readonly<{
30
- /** Accessible name, such as "Close", surfaced as the tooltip hint and the `aria-label`. */
31
- label: string;
32
- /** The close glyph. */
33
- children: ReactNode;
63
+ export type ToastCloseProps = Omit<BaseToast.Close.Props, "className" | "render"> & Readonly<{
64
+ /** The button to render, such as `<IconButton label="Close" variant="tertiary" size="sm"><CloseIcon /></IconButton>`. */
65
+ render: NonNullable<BaseToast.Close.Props["render"]>;
34
66
  className?: string;
35
67
  }>;
36
- /** The icon-only button that closes the toast, named for every input. */
37
- declare const Close: ({ label, children, className, }: ToastCloseProps) => ReactNode;
38
- /** The parts of a toast, for `ToastProvider`'s `renderToast`. */
68
+ /**
69
+ * The button that closes the toast, exposed to assistive tech whether or not
70
+ * the stack is expanded. It renders whichever button it is given.
71
+ *
72
+ * @example
73
+ * <Toast.Close render={<IconButton label="Close" variant="tertiary" size="sm"><CloseIcon /></IconButton>} />
74
+ */
75
+ declare const Close: ({ className, ...props }: ToastCloseProps) => ReactNode;
76
+ /** The parts of a toast, for `ToastProvider`'s `renderToast` or a viewport of the app's own. */
39
77
  export type ToastParts = Readonly<{
78
+ Provider: typeof Provider;
79
+ Portal: typeof BaseToast.Portal;
80
+ Viewport: typeof Viewport;
40
81
  Root: typeof Root;
41
82
  Icon: typeof Icon;
42
83
  Title: typeof Title;
@@ -45,13 +86,21 @@ export type ToastParts = Readonly<{
45
86
  Close: typeof Close;
46
87
  }>;
47
88
  /**
48
- * The parts of one toast: the `Root` frame in its tone, the `Icon`, `Title`,
49
- * `Description` and `Actions`, and the `Close` button.
89
+ * The parts of the toast system: the `Provider`, the `Portal` and the
90
+ * `Viewport` the toasts stack in, and for one toast the `Root` frame in its
91
+ * tone, the `Icon`, `Title`, `Description` and `Actions`, and the `Close`
92
+ * button. `ToastProvider` assembles the first three.
50
93
  *
51
94
  * @example
52
95
  * <Toast.Root toast={toast}>
53
96
  * <Toast.Title>{toast.data?.body}</Toast.Title>
54
- * <Toast.Close label="Close"><CloseIcon /></Toast.Close>
97
+ * <Toast.Close
98
+ * render={
99
+ * <IconButton label="Close" variant="tertiary" size="sm">
100
+ * <CloseIcon />
101
+ * </IconButton>
102
+ * }
103
+ * />
55
104
  * </Toast.Root>
56
105
  */
57
106
  export declare const Toast: ToastParts;
@@ -68,8 +117,8 @@ export type ToastProviderProps = Readonly<{
68
117
  children: ReactNode;
69
118
  }>;
70
119
  /**
71
- * Mounts the toast system once at the app root: provides the global
72
- * {@link toastManager} to base-ui and renders the viewport alongside the app.
120
+ * Mounts the toast system once at the app root: the `Toast.Provider`, and the
121
+ * `Toast.Viewport` in its `Toast.Portal` alongside the app, drawing each toast.
73
122
  *
74
123
  * @example
75
124
  * <ToastProvider closeLabel="Close" closeIcon={<CloseIcon />} viewportLabel="Notifications">
@@ -1,17 +1,89 @@
1
- import { useRequiredContext } from "../../lib/use-required-context.js";
2
- import { Button } from "../button/button.js";
1
+ import { Button, IconButton } from "../button/button.js";
3
2
  import { flushBufferedToasts, toastManager } from "./toast.js";
4
3
  import toast_provider_module_default from "./toast-provider.module.js";
5
4
  import { c } from "react/compiler-runtime";
6
5
  import { clsx } from "clsx";
7
6
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
8
- import { Fragment as Fragment$1, createContext, useEffect } from "react";
7
+ import { Fragment as Fragment$1, useEffect } from "react";
9
8
  import { Toast } from "@base-ui/react/toast";
10
9
  // src/components/toast/toast-provider.tsx
11
- var ToastIdContext = createContext(null);
12
- /** A toast's frame, in its tone: a dialog that holds the other parts. */
10
+ /**
11
+ * Provides the global {@link toastManager} to the parts inside it. It renders
12
+ * no element of its own.
13
+ *
14
+ * @example
15
+ * <Toast.Provider>
16
+ * <App />
17
+ * <Toast.Portal>
18
+ * <Toast.Viewport aria-label="Notifications">…</Toast.Viewport>
19
+ * </Toast.Portal>
20
+ * </Toast.Provider>
21
+ */
22
+ var Provider = (t0) => {
23
+ const $ = c(3);
24
+ const { children } = t0;
25
+ let t1;
26
+ if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
27
+ t1 = [];
28
+ $[0] = t1;
29
+ } else t1 = $[0];
30
+ useEffect(flushBufferedToasts, t1);
31
+ let t2;
32
+ if ($[1] !== children) {
33
+ t2 = /* @__PURE__ */ jsx(Toast.Provider, {
34
+ toastManager,
35
+ children
36
+ });
37
+ $[1] = children;
38
+ $[2] = t2;
39
+ } else t2 = $[2];
40
+ return t2;
41
+ };
42
+ /**
43
+ * The region the toasts stack in, at the corner of the screen.
44
+ *
45
+ * @example
46
+ * <Toast.Viewport aria-label="Notifications">{toasts}</Toast.Viewport>
47
+ */
48
+ var Viewport = (t0) => {
49
+ const $ = c(8);
50
+ let className;
51
+ let props;
52
+ if ($[0] !== t0) {
53
+ ({className, ...props} = t0);
54
+ $[0] = t0;
55
+ $[1] = className;
56
+ $[2] = props;
57
+ } else {
58
+ className = $[1];
59
+ props = $[2];
60
+ }
61
+ let t1;
62
+ if ($[3] !== className) {
63
+ t1 = clsx(toast_provider_module_default.viewport, className);
64
+ $[3] = className;
65
+ $[4] = t1;
66
+ } else t1 = $[4];
67
+ let t2;
68
+ if ($[5] !== props || $[6] !== t1) {
69
+ t2 = /* @__PURE__ */ jsx(Toast.Viewport, {
70
+ ...props,
71
+ className: t1
72
+ });
73
+ $[5] = props;
74
+ $[6] = t1;
75
+ $[7] = t2;
76
+ } else t2 = $[7];
77
+ return t2;
78
+ };
79
+ /**
80
+ * A toast's frame, in its tone: a dialog that holds the other parts.
81
+ *
82
+ * @example
83
+ * <Toast.Root toast={toast}>…</Toast.Root>
84
+ */
13
85
  var Root = (t0) => {
14
- const $ = c(14);
86
+ const $ = c(11);
15
87
  let className;
16
88
  let props;
17
89
  let toast;
@@ -26,39 +98,28 @@ var Root = (t0) => {
26
98
  props = $[2];
27
99
  toast = $[3];
28
100
  }
29
- const t1 = toast.id;
30
- const t2 = toast.data?.tone;
31
- let t3;
101
+ const t1 = toast.data?.tone;
102
+ let t2;
32
103
  if ($[4] !== className) {
33
- t3 = clsx(toast_provider_module_default.toast, className);
104
+ t2 = clsx(toast_provider_module_default.toast, className);
34
105
  $[4] = className;
35
- $[5] = t3;
36
- } else t3 = $[5];
37
- let t4;
38
- if ($[6] !== props || $[7] !== t2 || $[8] !== t3 || $[9] !== toast) {
39
- t4 = /* @__PURE__ */ jsx(Toast.Root, {
106
+ $[5] = t2;
107
+ } else t2 = $[5];
108
+ let t3;
109
+ if ($[6] !== props || $[7] !== t1 || $[8] !== t2 || $[9] !== toast) {
110
+ t3 = /* @__PURE__ */ jsx(Toast.Root, {
40
111
  toast,
41
- "data-tone": t2,
112
+ "data-tone": t1,
42
113
  ...props,
43
- className: t3
114
+ className: t2
44
115
  });
45
116
  $[6] = props;
46
- $[7] = t2;
47
- $[8] = t3;
117
+ $[7] = t1;
118
+ $[8] = t2;
48
119
  $[9] = toast;
49
- $[10] = t4;
50
- } else t4 = $[10];
51
- let t5;
52
- if ($[11] !== t4 || $[12] !== toast.id) {
53
- t5 = /* @__PURE__ */ jsx(ToastIdContext, {
54
- value: t1,
55
- children: t4
56
- });
57
- $[11] = t4;
58
- $[12] = toast.id;
59
- $[13] = t5;
60
- } else t5 = $[13];
61
- return t5;
120
+ $[10] = t3;
121
+ } else t3 = $[10];
122
+ return t3;
62
123
  };
63
124
  /** The caller's glyph before the title, sized and coloured by the toast. Renders nothing without children. */
64
125
  var Icon = (t0) => {
@@ -188,57 +249,67 @@ var Actions = (t0) => {
188
249
  } else t2 = $[7];
189
250
  return t2;
190
251
  };
191
- /** The icon-only button that closes the toast, named for every input. */
252
+ /**
253
+ * The button that closes the toast, exposed to assistive tech whether or not
254
+ * the stack is expanded. It renders whichever button it is given.
255
+ *
256
+ * @example
257
+ * <Toast.Close render={<IconButton label="Close" variant="tertiary" size="sm"><CloseIcon /></IconButton>} />
258
+ */
192
259
  var Close = (t0) => {
193
- const $ = c(10);
194
- const { label, children, className } = t0;
195
- const id = useRequiredContext(ToastIdContext, "Toast.Close must be rendered inside <Toast.Root>.");
196
- const { close } = Toast.useToastManager();
260
+ const $ = c(8);
261
+ let className;
262
+ let props;
263
+ if ($[0] !== t0) {
264
+ ({className, ...props} = t0);
265
+ $[0] = t0;
266
+ $[1] = className;
267
+ $[2] = props;
268
+ } else {
269
+ className = $[1];
270
+ props = $[2];
271
+ }
197
272
  let t1;
198
- if ($[0] !== className) {
273
+ if ($[3] !== className) {
199
274
  t1 = clsx(toast_provider_module_default.close, className);
200
- $[0] = className;
201
- $[1] = t1;
202
- } else t1 = $[1];
275
+ $[3] = className;
276
+ $[4] = t1;
277
+ } else t1 = $[4];
203
278
  let t2;
204
- if ($[2] !== close || $[3] !== id) {
205
- t2 = () => {
206
- close(id);
207
- };
208
- $[2] = close;
209
- $[3] = id;
210
- $[4] = t2;
211
- } else t2 = $[4];
212
- let t3;
213
- if ($[5] !== children || $[6] !== label || $[7] !== t1 || $[8] !== t2) {
214
- t3 = /* @__PURE__ */ jsx(Button, {
215
- className: t1,
216
- variant: "tertiary",
217
- size: "sm",
218
- iconOnly: true,
219
- icon: children,
220
- label,
221
- onClick: t2
279
+ if ($[5] !== props || $[6] !== t1) {
280
+ t2 = /* @__PURE__ */ jsx(Toast.Close, {
281
+ "aria-hidden": void 0,
282
+ ...props,
283
+ className: t1
222
284
  });
223
- $[5] = children;
224
- $[6] = label;
225
- $[7] = t1;
226
- $[8] = t2;
227
- $[9] = t3;
228
- } else t3 = $[9];
229
- return t3;
285
+ $[5] = props;
286
+ $[6] = t1;
287
+ $[7] = t2;
288
+ } else t2 = $[7];
289
+ return t2;
230
290
  };
231
291
  /**
232
- * The parts of one toast: the `Root` frame in its tone, the `Icon`, `Title`,
233
- * `Description` and `Actions`, and the `Close` button.
292
+ * The parts of the toast system: the `Provider`, the `Portal` and the
293
+ * `Viewport` the toasts stack in, and for one toast the `Root` frame in its
294
+ * tone, the `Icon`, `Title`, `Description` and `Actions`, and the `Close`
295
+ * button. `ToastProvider` assembles the first three.
234
296
  *
235
297
  * @example
236
298
  * <Toast.Root toast={toast}>
237
299
  * <Toast.Title>{toast.data?.body}</Toast.Title>
238
- * <Toast.Close label="Close"><CloseIcon /></Toast.Close>
300
+ * <Toast.Close
301
+ * render={
302
+ * <IconButton label="Close" variant="tertiary" size="sm">
303
+ * <CloseIcon />
304
+ * </IconButton>
305
+ * }
306
+ * />
239
307
  * </Toast.Root>
240
308
  */
241
309
  var Toast$1 = {
310
+ Provider,
311
+ Portal: Toast.Portal,
312
+ Viewport,
242
313
  Root,
243
314
  Icon,
244
315
  Title,
@@ -255,10 +326,12 @@ var DefaultToast = (t0) => {
255
326
  t1 = data === void 0 ? null : /* @__PURE__ */ jsxs(Fragment, { children: [
256
327
  /* @__PURE__ */ jsx(Icon, { children: data.icon }),
257
328
  /* @__PURE__ */ jsx(Title, { children: data.title ?? data.body }),
258
- /* @__PURE__ */ jsx(Close, {
329
+ /* @__PURE__ */ jsx(Close, { render: /* @__PURE__ */ jsx(IconButton, {
330
+ variant: "tertiary",
331
+ size: "sm",
259
332
  label: closeLabel,
260
333
  children: closeIcon
261
- }),
334
+ }) }),
262
335
  data.title === void 0 ? null : /* @__PURE__ */ jsx(Description, { children: data.body }),
263
336
  data.actions && data.actions.length > 0 ? /* @__PURE__ */ jsx(Actions, { children: data.actions.map(_temp) }) : null
264
337
  ] });
@@ -299,8 +372,8 @@ var ToastList = (t0) => {
299
372
  return t1;
300
373
  };
301
374
  /**
302
- * Mounts the toast system once at the app root: provides the global
303
- * {@link toastManager} to base-ui and renders the viewport alongside the app.
375
+ * Mounts the toast system once at the app root: the `Toast.Provider`, and the
376
+ * `Toast.Viewport` in its `Toast.Portal` alongside the app, drawing each toast.
304
377
  *
305
378
  * @example
306
379
  * <ToastProvider closeLabel="Close" closeIcon={<CloseIcon />} viewportLabel="Notifications">
@@ -308,54 +381,44 @@ var ToastList = (t0) => {
308
381
  * </ToastProvider>
309
382
  */
310
383
  var ToastProvider = (t0) => {
311
- const $ = c(13);
384
+ const $ = c(12);
312
385
  const { closeLabel, closeIcon, viewportLabel, renderToast, children } = t0;
313
386
  let t1;
314
- if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
315
- t1 = [];
316
- $[0] = t1;
317
- } else t1 = $[0];
318
- useEffect(flushBufferedToasts, t1);
319
- let t2;
320
- if ($[1] !== closeIcon || $[2] !== closeLabel || $[3] !== renderToast) {
321
- t2 = renderToast ?? ((toast) => /* @__PURE__ */ jsx(DefaultToast, {
387
+ if ($[0] !== closeIcon || $[1] !== closeLabel || $[2] !== renderToast) {
388
+ t1 = renderToast ?? ((toast) => /* @__PURE__ */ jsx(DefaultToast, {
322
389
  toast,
323
390
  closeLabel,
324
391
  closeIcon
325
392
  }));
326
- $[1] = closeIcon;
327
- $[2] = closeLabel;
328
- $[3] = renderToast;
329
- $[4] = t2;
330
- } else t2 = $[4];
331
- let t3;
332
- if ($[5] !== t2) {
333
- t3 = /* @__PURE__ */ jsx(ToastList, { renderToast: t2 });
393
+ $[0] = closeIcon;
394
+ $[1] = closeLabel;
395
+ $[2] = renderToast;
396
+ $[3] = t1;
397
+ } else t1 = $[3];
398
+ let t2;
399
+ if ($[4] !== t1) {
400
+ t2 = /* @__PURE__ */ jsx(ToastList, { renderToast: t1 });
401
+ $[4] = t1;
334
402
  $[5] = t2;
335
- $[6] = t3;
336
- } else t3 = $[6];
337
- let t4;
338
- if ($[7] !== t3 || $[8] !== viewportLabel) {
339
- t4 = /* @__PURE__ */ jsx(Toast.Portal, { children: /* @__PURE__ */ jsx(Toast.Viewport, {
340
- className: toast_provider_module_default.viewport,
403
+ } else t2 = $[5];
404
+ let t3;
405
+ if ($[6] !== t2 || $[7] !== viewportLabel) {
406
+ t3 = /* @__PURE__ */ jsx(Toast.Portal, { children: /* @__PURE__ */ jsx(Viewport, {
341
407
  "aria-label": viewportLabel,
342
- children: t3
408
+ children: t2
343
409
  }) });
344
- $[7] = t3;
345
- $[8] = viewportLabel;
346
- $[9] = t4;
347
- } else t4 = $[9];
348
- let t5;
349
- if ($[10] !== children || $[11] !== t4) {
350
- t5 = /* @__PURE__ */ jsxs(Toast.Provider, {
351
- toastManager,
352
- children: [children, t4]
353
- });
354
- $[10] = children;
410
+ $[6] = t2;
411
+ $[7] = viewportLabel;
412
+ $[8] = t3;
413
+ } else t3 = $[8];
414
+ let t4;
415
+ if ($[9] !== children || $[10] !== t3) {
416
+ t4 = /* @__PURE__ */ jsxs(Provider, { children: [children, t3] });
417
+ $[9] = children;
418
+ $[10] = t3;
355
419
  $[11] = t4;
356
- $[12] = t5;
357
- } else t5 = $[12];
358
- return t5;
420
+ } else t4 = $[11];
421
+ return t4;
359
422
  };
360
423
  function _temp(action) {
361
424
  return /* @__PURE__ */ jsx(Button, {
@@ -1,11 +1,11 @@
1
1
  import './toast-provider.css';// src/components/toast/toast-provider.module.scss
2
- var viewport = "_viewport_x67qw_3";
3
- var toast = "_toast_x67qw_19";
4
- var icon = "_icon_x67qw_59";
5
- var title = "_title_x67qw_71";
6
- var close = "_close_x67qw_76";
7
- var description = "_description_x67qw_81";
8
- var actions = "_actions_x67qw_86";
2
+ var viewport = "_viewport_1majn_3";
3
+ var toast = "_toast_1majn_19";
4
+ var icon = "_icon_1majn_59";
5
+ var title = "_title_1majn_71";
6
+ var close = "_close_1majn_76";
7
+ var description = "_description_1majn_81";
8
+ var actions = "_actions_1majn_86";
9
9
  var toast_provider_module_default = {
10
10
  viewport,
11
11
  toast,
@@ -1,6 +1,6 @@
1
1
  import type { ToggleGroup as BaseToggleGroup } from "@base-ui/react/toggle-group";
2
2
  import type { ReactNode } from "react";
3
- import type { FieldBlurHandler, ChoiceOption, FieldProps } from "../field/index.ts";
3
+ import { type FieldBlurHandler, type ChoiceOption, type FieldProps } from "../field/index.ts";
4
4
  export type ToggleGroupFieldProps = FieldProps & Readonly<{
5
5
  /** The choices, in the order they read. */
6
6
  options: readonly ChoiceOption[];