@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,25 +1,25 @@
1
1
  import './combobox.css';// src/components/combobox-field/combobox.module.scss
2
- var control = "_control_u8epf_3";
3
- var content = "_content_u8epf_84";
4
- var trigger = "_trigger_u8epf_99";
5
- var spokenValue = "_spokenValue_u8epf_110";
6
- var icon = "_icon_u8epf_118";
7
- var tags = "_tags_u8epf_122";
8
- var tagList = "_tagList_u8epf_125";
9
- var tag = "_tag_u8epf_122";
10
- var tagRemove = "_tagRemove_u8epf_242";
11
- var positioner = "_positioner_u8epf_276";
12
- var popup = "_popup_u8epf_290";
13
- var search = "_search_u8epf_318";
14
- var statusArea = "_statusArea_u8epf_394";
15
- var status = "_status_u8epf_394";
16
- var empty = "_empty_u8epf_404";
17
- var list = "_list_u8epf_420";
18
- var option = "_option_u8epf_428";
19
- var indicator = "_indicator_u8epf_475";
20
- var checkbox = "_checkbox_u8epf_480";
21
- var checkboxIndicator = "_checkboxIndicator_u8epf_505";
22
- var optionText = "_optionText_u8epf_534";
2
+ var control = "_control_siwfv_3";
3
+ var content = "_content_siwfv_177";
4
+ var trigger = "_trigger_siwfv_192";
5
+ var spokenValue = "_spokenValue_siwfv_203";
6
+ var icon = "_icon_siwfv_211";
7
+ var tags = "_tags_siwfv_224";
8
+ var tagList = "_tagList_siwfv_227";
9
+ var tag = "_tag_siwfv_224";
10
+ var tagRemove = "_tagRemove_siwfv_344";
11
+ var positioner = "_positioner_siwfv_378";
12
+ var popup = "_popup_siwfv_392";
13
+ var search = "_search_siwfv_420";
14
+ var statusArea = "_statusArea_siwfv_589";
15
+ var status = "_status_siwfv_589";
16
+ var empty = "_empty_siwfv_599";
17
+ var list = "_list_siwfv_615";
18
+ var option = "_option_siwfv_623";
19
+ var indicator = "_indicator_siwfv_675";
20
+ var checkbox = "_checkbox_siwfv_680";
21
+ var checkboxIndicator = "_checkboxIndicator_siwfv_720";
22
+ var optionText = "_optionText_siwfv_749";
23
23
  var combobox_module_default = {
24
24
  control,
25
25
  content,
@@ -1,20 +1,20 @@
1
1
  @layer kit.reset, kit.base, kit.components;
2
2
  @layer kit.components {
3
- ._muted_1bwba_3 {
3
+ ._muted_1lmaa_3 {
4
4
  display: inline-flex;
5
5
  align-items: center;
6
- gap: var(--sys-unit-2);
6
+ gap: var(--combobox-unavailable-gap, var(--sys-unit-2));
7
7
  min-inline-size: 0;
8
8
  color: var(--combobox-unavailable-fg, var(--sys-color-text-muted));
9
9
  }
10
- ._item_1bwba_10 {
10
+ ._item_1lmaa_10 {
11
11
  min-inline-size: 0;
12
12
  }
13
- ._icon_1bwba_13 {
13
+ ._icon_1lmaa_13 {
14
14
  display: inline-flex;
15
15
  flex-shrink: 0;
16
16
  }
17
- ._name_1bwba_17 {
17
+ ._name_1lmaa_17 {
18
18
  position: absolute;
19
19
  overflow: hidden;
20
20
  clip-path: inset(50%);
@@ -1,8 +1,8 @@
1
1
  import './value-state-view.css';// src/components/combobox-field/value-state-view.module.scss
2
- var muted = "_muted_1bwba_3";
3
- var item = "_item_1bwba_10";
4
- var icon = "_icon_1bwba_13";
5
- var name = "_name_1bwba_17";
2
+ var muted = "_muted_1lmaa_3";
3
+ var item = "_item_1lmaa_10";
4
+ var icon = "_icon_1lmaa_13";
5
+ var name = "_name_1lmaa_17";
6
6
  var value_state_view_module_default = {
7
7
  muted,
8
8
  item,
@@ -1,4 +1,5 @@
1
1
  import type { ReactNode } from "react";
2
+ import { type ComposerAttachment } from "./composer.context.ts";
2
3
  export type ComposerAttachButtonProps = Readonly<{
3
4
  /** The button's accessible name and tooltip, such as "Add attachment". */
4
5
  label: string;
@@ -10,24 +11,42 @@ export type ComposerAttachButtonProps = Readonly<{
10
11
  }>;
11
12
  /** An icon button, its children the glyph, that opens the file picker and stages what is picked. */
12
13
  export declare const ComposerAttachButton: ({ label, accept, children, className, }: ComposerAttachButtonProps) => ReactNode;
14
+ /** What a staged file's tile renders from, besides the file. */
15
+ export type ComposerAttachmentState = Readonly<{
16
+ /** Whether the file is over `maxFileSize`, and blocks sending. */
17
+ oversized: boolean;
18
+ /** The file's size, formatted for the locale, such as "12 kB". */
19
+ size: string;
20
+ /** Whether the composer is disabled. */
21
+ disabled: boolean;
22
+ }>;
13
23
  export type ComposerAttachmentsProps = Readonly<{
14
24
  /** The tile list's accessible name, such as "Attachments". */
15
25
  label: string;
16
- /** Each tile's remove button's accessible name, such as "Remove". */
17
- removeLabel: string;
18
- /** Each tile's remove glyph. */
19
- removeIcon: ReactNode;
20
- /** A tile's file-type glyph. Left out, a tile that is not an image shows only the file's extension. */
21
- fileIcon?: ReactNode;
22
- /** A tile's tooltip, from the file's name and formatted size. */
23
- fileHint: (name: string, size: string) => string;
26
+ /** The tile for one staged file, such as an `AttachmentTile` with the attachment's `id`. */
27
+ children: (attachment: ComposerAttachment, state: ComposerAttachmentState) => ReactNode;
24
28
  className?: string;
25
29
  }>;
26
30
  /**
27
- * The staged files as removable tiles. Removing the last one returns focus to
28
- * the editor. Renders nothing while no file is staged.
31
+ * The staged files, each as the tile `children` returns. Removing the last one
32
+ * returns focus to the editor. Renders nothing while no file is staged.
33
+ *
34
+ * @example
35
+ * <Composer.Attachments label="Attachments">
36
+ * {(attachment, { oversized, size, disabled }) => (
37
+ * <AttachmentTile
38
+ * id={attachment.id}
39
+ * file={attachment.file}
40
+ * hint={`${attachment.file.name} (${size})`}
41
+ * removeLabel="Remove"
42
+ * removeIcon={<CloseIcon />}
43
+ * invalid={oversized}
44
+ * disabled={disabled}
45
+ * />
46
+ * )}
47
+ * </Composer.Attachments>
29
48
  */
30
- export declare const ComposerAttachments: ({ label, removeLabel, removeIcon, fileIcon, fileHint, className, }: ComposerAttachmentsProps) => ReactNode;
49
+ export declare const ComposerAttachments: ({ label, children, className, }: ComposerAttachmentsProps) => ReactNode;
31
50
  export type ComposerAttachmentsErrorProps = Readonly<{
32
51
  /** The alert, from the formatted `maxFileSize`, such as "Files over 5 MB must be removed before sending." */
33
52
  tooLargeError: (maxSize: string) => string;
@@ -1,6 +1,5 @@
1
1
  import { formatBytes } from "../../lib/format-bytes.js";
2
- import { AttachmentTile } from "../attachment-tile/attachment-tile.js";
3
- import { Button as Button$1 } from "../button/button.js";
2
+ import { IconButton } from "../button/button.js";
4
3
  import { useLocale } from "../locale-provider/locale-provider.js";
5
4
  import { useComposerContext } from "./composer.context.js";
6
5
  import composer_module_default from "./composer.module.js";
@@ -31,15 +30,14 @@ var ComposerAttachButton = (t0) => {
31
30
  } else t2 = $[3];
32
31
  let t3;
33
32
  if ($[4] !== children || $[5] !== className || $[6] !== disabled || $[7] !== label || $[8] !== t2) {
34
- t3 = /* @__PURE__ */ jsx(Button$1, {
33
+ t3 = /* @__PURE__ */ jsx(IconButton, {
35
34
  className,
36
35
  variant: "tertiary",
37
36
  size: "md",
38
- iconOnly: true,
39
- icon: children,
40
37
  disabled,
41
38
  label,
42
- render: t2
39
+ render: t2,
40
+ children
43
41
  });
44
42
  $[4] = children;
45
43
  $[5] = className;
@@ -64,12 +62,27 @@ var ComposerAttachButton = (t0) => {
64
62
  return t4;
65
63
  };
66
64
  /**
67
- * The staged files as removable tiles. Removing the last one returns focus to
68
- * the editor. Renders nothing while no file is staged.
65
+ * The staged files, each as the tile `children` returns. Removing the last one
66
+ * returns focus to the editor. Renders nothing while no file is staged.
67
+ *
68
+ * @example
69
+ * <Composer.Attachments label="Attachments">
70
+ * {(attachment, { oversized, size, disabled }) => (
71
+ * <AttachmentTile
72
+ * id={attachment.id}
73
+ * file={attachment.file}
74
+ * hint={`${attachment.file.name} (${size})`}
75
+ * removeLabel="Remove"
76
+ * removeIcon={<CloseIcon />}
77
+ * invalid={oversized}
78
+ * disabled={disabled}
79
+ * />
80
+ * )}
81
+ * </Composer.Attachments>
69
82
  */
70
83
  var ComposerAttachments = (t0) => {
71
- const $ = c(22);
72
- const { label, removeLabel, removeIcon, fileIcon, fileHint, className } = t0;
84
+ const $ = c(19);
85
+ const { label, children, className } = t0;
73
86
  const locale = useLocale();
74
87
  const { attachments, removeAttachment, focusEditor, disabled, maxFileSize } = useComposerContext();
75
88
  if (attachments.length === 0) return null;
@@ -93,50 +106,42 @@ var ComposerAttachments = (t0) => {
93
106
  $[5] = t2;
94
107
  } else t2 = $[5];
95
108
  let t3;
96
- if ($[6] !== disabled || $[7] !== fileHint || $[8] !== fileIcon || $[9] !== locale || $[10] !== maxFileSize || $[11] !== removeIcon || $[12] !== removeLabel) {
97
- t3 = (attachment_1) => /* @__PURE__ */ jsx(AttachmentTile, {
98
- id: attachment_1.id,
99
- file: attachment_1.file,
100
- hint: fileHint(attachment_1.file.name, formatBytes(attachment_1.file.size, locale)),
101
- removeLabel,
102
- removeIcon,
103
- icon: fileIcon,
104
- invalid: isOversized(attachment_1.file, maxFileSize),
109
+ if ($[6] !== children || $[7] !== disabled || $[8] !== locale || $[9] !== maxFileSize) {
110
+ t3 = (attachment_1) => children(attachment_1, {
111
+ oversized: isOversized(attachment_1.file, maxFileSize),
112
+ size: formatBytes(attachment_1.file.size, locale),
105
113
  disabled
106
114
  });
107
- $[6] = disabled;
108
- $[7] = fileHint;
109
- $[8] = fileIcon;
110
- $[9] = locale;
111
- $[10] = maxFileSize;
112
- $[11] = removeIcon;
113
- $[12] = removeLabel;
114
- $[13] = t3;
115
- } else t3 = $[13];
115
+ $[6] = children;
116
+ $[7] = disabled;
117
+ $[8] = locale;
118
+ $[9] = maxFileSize;
119
+ $[10] = t3;
120
+ } else t3 = $[10];
116
121
  let t4;
117
- if ($[14] !== attachments || $[15] !== t2 || $[16] !== t3) {
122
+ if ($[11] !== attachments || $[12] !== t2 || $[13] !== t3) {
118
123
  t4 = /* @__PURE__ */ jsx(TagList, {
119
124
  items: attachments,
120
125
  className: t2,
121
126
  children: t3
122
127
  });
123
- $[14] = attachments;
124
- $[15] = t2;
125
- $[16] = t3;
126
- $[17] = t4;
127
- } else t4 = $[17];
128
+ $[11] = attachments;
129
+ $[12] = t2;
130
+ $[13] = t3;
131
+ $[14] = t4;
132
+ } else t4 = $[14];
128
133
  let t5;
129
- if ($[18] !== label || $[19] !== remove || $[20] !== t4) {
134
+ if ($[15] !== label || $[16] !== remove || $[17] !== t4) {
130
135
  t5 = /* @__PURE__ */ jsx(TagGroup, {
131
136
  "aria-label": label,
132
137
  onRemove: remove,
133
138
  children: t4
134
139
  });
135
- $[18] = label;
136
- $[19] = remove;
137
- $[20] = t4;
138
- $[21] = t5;
139
- } else t5 = $[21];
140
+ $[15] = label;
141
+ $[16] = remove;
142
+ $[17] = t4;
143
+ $[18] = t5;
144
+ } else t5 = $[18];
140
145
  return t5;
141
146
  };
142
147
  /**
@@ -1,12 +1,12 @@
1
1
  @layer kit.reset, kit.base, kit.components;
2
2
  @layer kit.components {
3
- ._editor_1wstb_3 {
3
+ ._editor_1emww_3 {
4
4
  position: relative;
5
5
  flex: 1;
6
6
  min-inline-size: 0;
7
7
  overflow: hidden auto;
8
8
  }
9
- ._content_1wstb_9 {
9
+ ._content_1emww_9 {
10
10
  outline: none;
11
11
  padding: var(--composer-editor-pad, var(--sys-unit-6));
12
12
  min-block-size: calc(var(--composer-min-lines) * 1lh + var(--composer-editor-pad, var(--sys-unit-6)));
@@ -14,7 +14,7 @@
14
14
  white-space: pre-wrap;
15
15
  overflow-wrap: anywhere;
16
16
  }
17
- ._placeholder_1wstb_17 {
17
+ ._placeholder_1emww_17 {
18
18
  position: absolute;
19
19
  inset-block-start: var(--composer-editor-pad, var(--sys-unit-6));
20
20
  inset-inline-start: var(--composer-editor-pad, var(--sys-unit-6));
@@ -22,52 +22,53 @@
22
22
  pointer-events: none;
23
23
  user-select: none;
24
24
  }
25
- ._menu_1wstb_25 {
25
+ ._menu_1emww_25 {
26
26
  box-sizing: border-box;
27
27
  border: none;
28
- border-radius: var(--sys-radius-md);
29
- background: var(--sys-color-surface-overlay);
30
- padding: var(--sys-unit-4);
31
- color: var(--sys-color-text);
28
+ border-radius: var(--popup-radius, var(--sys-radius-md));
29
+ background: var(--popup-bg, var(--sys-color-surface-overlay));
30
+ padding: var(--popup-pad, var(--sys-unit-4));
31
+ color: var(--popup-fg, var(--sys-color-text));
32
32
  transform-origin: var(--transform-origin);
33
33
  scrollbar-width: thin;
34
- scrollbar-color: var(--sys-color-outline) transparent;
35
- box-shadow: var(--sys-elevation-1);
34
+ scrollbar-color: var(--popup-scrollbar-fg, var(--sys-color-outline)) transparent;
35
+ box-shadow: var(--popup-shadow, var(--sys-elevation-1));
36
36
  }
37
37
  @media not (prefers-reduced-motion) {
38
- ._menu_1wstb_25 {
38
+ ._menu_1emww_25 {
39
39
  transition: opacity var(--sys-motion-instant) var(--sys-motion-standard), transform var(--sys-motion-instant) var(--sys-motion-standard);
40
40
  }
41
41
  }
42
- ._menu_1wstb_25[data-starting-style], ._menu_1wstb_25[data-ending-style] {
42
+ ._menu_1emww_25[data-starting-style], ._menu_1emww_25[data-ending-style] {
43
43
  opacity: 0;
44
44
  transform: scale(0.96);
45
45
  }
46
- ._menu_1wstb_25 {
46
+ ._menu_1emww_25 {
47
47
  inline-size: max-content;
48
- min-inline-size: 16rem;
49
- max-inline-size: 24rem;
50
- max-block-size: 20rem;
48
+ min-inline-size: var(--composer-menu-min-inline-size, 16rem);
49
+ max-inline-size: var(--composer-menu-max-inline-size, 24rem);
50
+ max-block-size: var(--composer-menu-max-block-size, 20rem);
51
51
  margin: 0;
52
52
  overflow: hidden auto;
53
53
  }
54
- ._menuItem_1wstb_54 {
54
+ ._menuItem_1emww_54 {
55
55
  display: flex;
56
56
  align-items: center;
57
- gap: var(--sys-unit-6);
57
+ gap: var(--popup-item-gap, var(--sys-unit-6));
58
58
  box-sizing: border-box;
59
- min-block-size: var(--sys-unit-20);
60
- border-radius: var(--sys-radius-sm);
61
- padding: var(--sys-unit-4) var(--sys-unit-6);
62
- color: var(--sys-color-text);
63
- font: var(--sys-font-body-medium);
59
+ min-block-size: var(--popup-item-min-block-size, var(--sys-unit-20));
60
+ border-radius: var(--popup-item-radius, var(--sys-radius-sm));
61
+ background: var(--popup-item-bg, transparent);
62
+ padding: var(--popup-item-pad-y, var(--sys-unit-4)) var(--popup-item-pad-x, var(--sys-unit-6));
63
+ color: var(--popup-item-fg, var(--popup-fg, var(--sys-color-text)));
64
+ font: var(--popup-item-font, var(--sys-font-body-medium));
64
65
  user-select: none;
65
66
  }
66
- ._menuItem_1wstb_54 {
67
+ ._menuItem_1emww_54 {
67
68
  position: relative;
68
69
  isolation: isolate;
69
70
  }
70
- ._menuItem_1wstb_54::after {
71
+ ._menuItem_1emww_54::after {
71
72
  content: "";
72
73
  position: absolute;
73
74
  z-index: -1;
@@ -78,27 +79,31 @@
78
79
  pointer-events: none;
79
80
  }
80
81
  @media not (prefers-reduced-motion) {
81
- ._menuItem_1wstb_54::after {
82
+ ._menuItem_1emww_54::after {
82
83
  transition: opacity var(--sys-motion-instant) var(--sys-motion-standard);
83
84
  }
84
85
  }
85
- ._menuItem_1wstb_54:hover:not(:disabled, [data-disabled])::after {
86
+ ._menuItem_1emww_54:hover:not(:disabled, [data-disabled])::after {
86
87
  opacity: var(--sys-state-hover);
87
88
  }
88
- ._menuItem_1wstb_54:active:not(:disabled, [data-disabled])::after {
89
+ ._menuItem_1emww_54:active:not(:disabled, [data-disabled])::after {
89
90
  opacity: var(--sys-state-pressed);
90
91
  }
91
- ._menuItem_1wstb_54 {
92
+ ._menuItem_1emww_54 {
92
93
  outline: none;
93
94
  }
94
- ._menuItem_1wstb_54[data-highlighted] {
95
- background: var(--sys-color-primary-container);
96
- color: var(--sys-color-on-primary-container);
95
+ ._menuItem_1emww_54[data-selected] {
96
+ background: var(--popup-item-selected-bg, var(--popup-item-bg, transparent));
97
+ color: var(--popup-item-selected-fg, var(--popup-item-fg, var(--popup-fg, var(--sys-color-text))));
97
98
  }
98
- ._menuItem_1wstb_54[data-disabled] {
99
- color: var(--sys-color-disabled-fg);
99
+ ._menuItem_1emww_54[data-highlighted] {
100
+ background: var(--popup-item-highlighted-bg, var(--sys-color-primary-container));
101
+ color: var(--popup-item-highlighted-fg, var(--sys-color-on-primary-container));
100
102
  }
101
- ._menuItem_1wstb_54 {
103
+ ._menuItem_1emww_54[data-disabled] {
104
+ color: var(--popup-item-disabled-fg, var(--sys-color-disabled-fg));
105
+ }
106
+ ._menuItem_1emww_54 {
102
107
  list-style: none;
103
108
  }
104
109
  }
@@ -1,9 +1,8 @@
1
- import { type ReactNode } from "react";
1
+ import { useRender } from "@base-ui/react/use-render";
2
+ import { type ReactElement, type ReactNode } from "react";
2
3
  export type ComposerEditorProps = Readonly<{
3
4
  /** The editor's accessible name, such as "Comment". */
4
5
  label: string;
5
- /** Shown while the draft is empty, and describes the editor. */
6
- placeholder?: string;
7
6
  /** Lines of height while short. @default 3 */
8
7
  minLines?: number;
9
8
  /** Lines of height before it scrolls. */
@@ -13,4 +12,15 @@ export type ComposerEditorProps = Readonly<{
13
12
  className?: string;
14
13
  }>;
15
14
  /** The composer's plain-text editor, with mentions and Enter to send. */
16
- export declare const ComposerEditor: ({ label, placeholder, minLines, maxLines, children, className, }: ComposerEditorProps) => ReactNode;
15
+ export declare const ComposerEditor: ({ label, minLines, maxLines, children, className, }: ComposerEditorProps) => ReactNode;
16
+ export type ComposerPlaceholderProps = useRender.ComponentProps<"div">;
17
+ /**
18
+ * What the editor shows while the draft is empty, inside the `Editor`. It also
19
+ * describes the editor.
20
+ *
21
+ * @example
22
+ * <Composer.Editor label="Comment">
23
+ * <Composer.Placeholder>Write a comment</Composer.Placeholder>
24
+ * </Composer.Editor>
25
+ */
26
+ export declare const ComposerPlaceholder: ({ render, className, ref, ...props }: ComposerPlaceholderProps) => ReactElement;