@igne-agency/react-web-ui 0.5.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 (254) hide show
  1. package/dist/components/accordion/accordion.css +21 -21
  2. package/dist/components/accordion/accordion.d.ts +17 -4
  3. package/dist/components/accordion/accordion.js +83 -36
  4. package/dist/components/accordion/accordion.module.js +6 -6
  5. package/dist/components/attachment-tile/attachment-preview.d.ts +56 -13
  6. package/dist/components/attachment-tile/attachment-preview.js +388 -119
  7. package/dist/components/attachment-tile/attachment-tile.css +31 -25
  8. package/dist/components/attachment-tile/attachment-tile.d.ts +32 -10
  9. package/dist/components/attachment-tile/attachment-tile.js +160 -43
  10. package/dist/components/attachment-tile/attachment-tile.module.js +8 -8
  11. package/dist/components/attachment-tile/index.d.ts +1 -1
  12. package/dist/components/avatar/avatar.css +9 -9
  13. package/dist/components/avatar/avatar.d.ts +50 -5
  14. package/dist/components/avatar/avatar.js +178 -64
  15. package/dist/components/avatar/avatar.module.js +3 -3
  16. package/dist/components/avatar-group/avatar-group-context.d.ts +2 -4
  17. package/dist/components/avatar-group/avatar-group-context.js +2 -2
  18. package/dist/components/avatar-group/avatar-group.css +26 -20
  19. package/dist/components/avatar-group/avatar-group.d.ts +85 -27
  20. package/dist/components/avatar-group/avatar-group.js +400 -246
  21. package/dist/components/avatar-group/avatar-group.module.js +8 -8
  22. package/dist/components/breadcrumbs/breadcrumbs.css +12 -12
  23. package/dist/components/breadcrumbs/breadcrumbs.d.ts +69 -23
  24. package/dist/components/breadcrumbs/breadcrumbs.js +299 -248
  25. package/dist/components/breadcrumbs/breadcrumbs.module.js +8 -8
  26. package/dist/components/button/button.css +29 -31
  27. package/dist/components/button/button.d.ts +20 -16
  28. package/dist/components/button/button.js +140 -145
  29. package/dist/components/button/button.module.js +1 -1
  30. package/dist/components/button/index.js +1 -1
  31. package/dist/components/checkbox-field/checkbox-field.js +63 -49
  32. package/dist/components/checkbox-field/checkbox.css +105 -56
  33. package/dist/components/checkbox-field/checkbox.d.ts +3 -2
  34. package/dist/components/checkbox-field/checkbox.js +12 -9
  35. package/dist/components/checkbox-field/checkbox.module.js +4 -4
  36. package/dist/components/checkbox-group-field/checkbox-group-field.js +78 -72
  37. package/dist/components/checkbox-group-field/checkbox-group.css +14 -10
  38. package/dist/components/checkbox-group-field/checkbox-group.d.ts +2 -2
  39. package/dist/components/checkbox-group-field/checkbox-group.js +2 -2
  40. package/dist/components/checkbox-group-field/checkbox-group.module.js +2 -2
  41. package/dist/components/collapsible/collapsible.css +20 -20
  42. package/dist/components/collapsible/collapsible.d.ts +17 -4
  43. package/dist/components/collapsible/collapsible.js +83 -36
  44. package/dist/components/collapsible/collapsible.module.js +5 -5
  45. package/dist/components/combobox-field/combobox-field.js +206 -158
  46. package/dist/components/combobox-field/combobox.css +492 -277
  47. package/dist/components/combobox-field/combobox.d.ts +148 -39
  48. package/dist/components/combobox-field/combobox.js +506 -206
  49. package/dist/components/combobox-field/combobox.module.js +21 -21
  50. package/dist/components/combobox-field/value-state-view.css +5 -5
  51. package/dist/components/combobox-field/value-state-view.module.js +4 -4
  52. package/dist/components/composer/composer-attachments.d.ts +30 -11
  53. package/dist/components/composer/composer-attachments.js +45 -40
  54. package/dist/components/composer/composer-editor.css +40 -35
  55. package/dist/components/composer/composer-editor.d.ts +14 -4
  56. package/dist/components/composer/composer-editor.js +134 -44
  57. package/dist/components/composer/composer-editor.module.js +5 -5
  58. package/dist/components/composer/composer.css +22 -22
  59. package/dist/components/composer/composer.d.ts +13 -2
  60. package/dist/components/composer/composer.js +78 -63
  61. package/dist/components/composer/composer.module.js +5 -5
  62. package/dist/components/composer/index.d.ts +2 -2
  63. package/dist/components/composer/mention-text.css +5 -5
  64. package/dist/components/composer/mention-text.module.js +1 -1
  65. package/dist/components/confirm-dialog/confirm-dialog.css +29 -29
  66. package/dist/components/confirm-dialog/confirm-dialog.d.ts +57 -3
  67. package/dist/components/confirm-dialog/confirm-dialog.js +266 -108
  68. package/dist/components/confirm-dialog/confirm-dialog.module.js +5 -5
  69. package/dist/components/conversation/conversation.css +52 -52
  70. package/dist/components/conversation/conversation.d.ts +43 -18
  71. package/dist/components/conversation/conversation.js +120 -78
  72. package/dist/components/conversation/conversation.module.js +15 -15
  73. package/dist/components/date-field/date-field.d.ts +1 -1
  74. package/dist/components/date-field/date-field.js +202 -100
  75. package/dist/components/date-field/date-input.d.ts +73 -37
  76. package/dist/components/date-field/date-input.js +72 -45
  77. package/dist/components/date-field/index.d.ts +1 -1
  78. package/dist/components/date-range-field/date-range-field.d.ts +1 -1
  79. package/dist/components/date-range-field/date-range-field.js +219 -107
  80. package/dist/components/date-range-field/date-range-input.d.ts +84 -40
  81. package/dist/components/date-range-field/date-range-input.js +83 -48
  82. package/dist/components/dialog/dialog.css +32 -32
  83. package/dist/components/dialog/dialog.d.ts +8 -7
  84. package/dist/components/dialog/dialog.js +8 -26
  85. package/dist/components/dialog/dialog.module.js +6 -6
  86. package/dist/components/divider/divider.css +6 -6
  87. package/dist/components/divider/divider.d.ts +36 -2
  88. package/dist/components/divider/divider.js +195 -29
  89. package/dist/components/divider/divider.module.js +3 -3
  90. package/dist/components/drawer/drawer.css +55 -56
  91. package/dist/components/drawer/drawer.d.ts +8 -7
  92. package/dist/components/drawer/drawer.js +8 -26
  93. package/dist/components/drawer/drawer.module.js +6 -6
  94. package/dist/components/field/field.css +34 -24
  95. package/dist/components/field/field.d.ts +60 -37
  96. package/dist/components/field/field.js +242 -157
  97. package/dist/components/field/field.module.js +12 -10
  98. package/dist/components/field/input-parts.d.ts +11 -13
  99. package/dist/components/field/input-parts.js +23 -42
  100. package/dist/components/field-placeholder/field-placeholder.css +6 -6
  101. package/dist/components/field-placeholder/field-placeholder.module.js +4 -4
  102. package/dist/components/fieldset/field-group.d.ts +1 -1
  103. package/dist/components/fieldset/field-group.js +48 -42
  104. package/dist/components/fieldset/fieldset-root.d.ts +1 -1
  105. package/dist/components/fieldset/fieldset-root.js +19 -17
  106. package/dist/components/fieldset/fieldset.d.ts +2 -2
  107. package/dist/components/fieldset/fieldset.js +2 -2
  108. package/dist/components/file-field/file-field.css +126 -60
  109. package/dist/components/file-field/file-field.js +201 -109
  110. package/dist/components/file-field/file-field.module.js +4 -4
  111. package/dist/components/file-field/file-input.d.ts +66 -40
  112. package/dist/components/file-field/file-input.js +188 -132
  113. package/dist/components/filter-bar/filter-bar.css +8 -8
  114. package/dist/components/filter-bar/filter-bar.d.ts +12 -3
  115. package/dist/components/filter-bar/filter-bar.js +23 -25
  116. package/dist/components/filter-bar/filter-bar.module.js +5 -5
  117. package/dist/components/form/form.d.ts +19 -7
  118. package/dist/components/form/form.js +80 -29
  119. package/dist/components/icon/icon.css +2 -2
  120. package/dist/components/icon/icon.module.js +1 -1
  121. package/dist/components/link/link.css +6 -5
  122. package/dist/components/link/link.module.js +1 -1
  123. package/dist/components/menu/menu.css +52 -47
  124. package/dist/components/menu/menu.d.ts +32 -25
  125. package/dist/components/menu/menu.js +75 -124
  126. package/dist/components/menu/menu.module.js +8 -8
  127. package/dist/components/nav/nav-context.d.ts +1 -1
  128. package/dist/components/nav/nav-item-view.d.ts +10 -13
  129. package/dist/components/nav/nav-item-view.js +42 -54
  130. package/dist/components/nav/nav.css +150 -119
  131. package/dist/components/nav/nav.d.ts +61 -17
  132. package/dist/components/nav/nav.js +271 -176
  133. package/dist/components/nav/nav.module.js +17 -15
  134. package/dist/components/number-field/number-field.css +153 -64
  135. package/dist/components/number-field/number-field.d.ts +2 -2
  136. package/dist/components/number-field/number-field.js +112 -91
  137. package/dist/components/number-field/number-field.module.js +6 -6
  138. package/dist/components/number-field/number-input.d.ts +43 -23
  139. package/dist/components/number-field/number-input.js +179 -125
  140. package/dist/components/otp-field/otp-field.css +153 -60
  141. package/dist/components/otp-field/otp-field.d.ts +2 -2
  142. package/dist/components/otp-field/otp-field.js +62 -46
  143. package/dist/components/otp-field/otp-field.module.js +4 -4
  144. package/dist/components/otp-field/otp-input.d.ts +8 -6
  145. package/dist/components/otp-field/otp-input.js +92 -92
  146. package/dist/components/pagination/pagination.d.ts +46 -15
  147. package/dist/components/pagination/pagination.js +217 -224
  148. package/dist/components/password-field/password-field.css +23 -23
  149. package/dist/components/password-field/password-field.js +107 -85
  150. package/dist/components/password-field/password-field.module.js +8 -8
  151. package/dist/components/password-field/password-strength.d.ts +107 -3
  152. package/dist/components/password-field/password-strength.js +569 -92
  153. package/dist/components/photo-field/photo-field.js +137 -112
  154. package/dist/components/photo-field/photo-input.css +67 -44
  155. package/dist/components/photo-field/photo-input.d.ts +59 -15
  156. package/dist/components/photo-field/photo-input.js +173 -86
  157. package/dist/components/photo-field/photo-input.module.js +10 -8
  158. package/dist/components/popover/popover.css +41 -41
  159. package/dist/components/popover/popover.d.ts +66 -25
  160. package/dist/components/popover/popover.js +332 -217
  161. package/dist/components/popover/popover.module.js +15 -19
  162. package/dist/components/radio-group-field/radio-group-field.js +80 -71
  163. package/dist/components/radio-group-field/radio-group.css +112 -60
  164. package/dist/components/radio-group-field/radio-group.d.ts +19 -3
  165. package/dist/components/radio-group-field/radio-group.js +66 -23
  166. package/dist/components/radio-group-field/radio-group.module.js +4 -4
  167. package/dist/components/segmented-control-field/segmented-control-field.d.ts +1 -1
  168. package/dist/components/segmented-control-field/segmented-control-field.js +111 -96
  169. package/dist/components/segmented-control-field/segmented-control.css +132 -79
  170. package/dist/components/segmented-control-field/segmented-control.d.ts +39 -15
  171. package/dist/components/segmented-control-field/segmented-control.js +124 -41
  172. package/dist/components/segmented-control-field/segmented-control.module.js +4 -4
  173. package/dist/components/select-field/select.css +214 -101
  174. package/dist/components/select-field/select.d.ts +43 -11
  175. package/dist/components/select-field/select.js +194 -109
  176. package/dist/components/select-field/select.module.js +14 -14
  177. package/dist/components/skeleton/skeleton.css +4 -4
  178. package/dist/components/skeleton/skeleton.module.js +3 -3
  179. package/dist/components/stale/stale.css +15 -15
  180. package/dist/components/stale/stale.d.ts +27 -3
  181. package/dist/components/stale/stale.js +147 -66
  182. package/dist/components/stale/stale.module.js +6 -6
  183. package/dist/components/status-message/status-message.css +22 -22
  184. package/dist/components/status-message/status-message.module.js +6 -6
  185. package/dist/components/switch-field/switch-field.js +77 -57
  186. package/dist/components/switch-field/switch.css +112 -63
  187. package/dist/components/switch-field/switch.d.ts +20 -3
  188. package/dist/components/switch-field/switch.js +70 -27
  189. package/dist/components/switch-field/switch.module.js +4 -4
  190. package/dist/components/tabs/tabs.css +32 -32
  191. package/dist/components/tabs/tabs.d.ts +21 -7
  192. package/dist/components/tabs/tabs.js +73 -14
  193. package/dist/components/tabs/tabs.module.js +7 -7
  194. package/dist/components/tag/tag.css +84 -84
  195. package/dist/components/tag/tag.module.js +3 -3
  196. package/dist/components/tag-group/tag-group.css +94 -94
  197. package/dist/components/tag-group/tag-group.module.js +4 -4
  198. package/dist/components/text-field/text-field.css +159 -82
  199. package/dist/components/text-field/text-field.d.ts +1 -1
  200. package/dist/components/text-field/text-field.js +139 -110
  201. package/dist/components/text-field/text-field.module.js +9 -9
  202. package/dist/components/text-field/text-input.d.ts +81 -45
  203. package/dist/components/text-field/text-input.js +366 -217
  204. package/dist/components/textarea-field/textarea-field.css +7 -2
  205. package/dist/components/textarea-field/textarea-field.js +72 -56
  206. package/dist/components/textarea-field/textarea-field.module.js +2 -2
  207. package/dist/components/time-field/time-field.js +153 -60
  208. package/dist/components/time-field/time-input.d.ts +21 -10
  209. package/dist/components/time-field/time-input.js +22 -11
  210. package/dist/components/toast/toast-provider.css +34 -31
  211. package/dist/components/toast/toast-provider.d.ts +63 -14
  212. package/dist/components/toast/toast-provider.js +174 -111
  213. package/dist/components/toast/toast-provider.module.js +7 -7
  214. package/dist/components/toggle-group-field/toggle-group-field.d.ts +1 -1
  215. package/dist/components/toggle-group-field/toggle-group-field.js +95 -89
  216. package/dist/components/toggle-group-field/toggle-group.css +117 -67
  217. package/dist/components/toggle-group-field/toggle-group.d.ts +2 -2
  218. package/dist/components/toggle-group-field/toggle-group.js +2 -2
  219. package/dist/components/toggle-group-field/toggle-group.module.js +2 -2
  220. package/dist/components/tooltip/tooltip.css +4 -4
  221. package/dist/components/tooltip/tooltip.module.js +1 -1
  222. package/dist/data-table/data-table-content.js +6 -5
  223. package/dist/data-table/data-table-parts.d.ts +41 -13
  224. package/dist/data-table/data-table-parts.js +213 -172
  225. package/dist/data-table/data-table-selection.d.ts +105 -3
  226. package/dist/data-table/data-table-selection.js +654 -145
  227. package/dist/data-table/data-table.css +125 -128
  228. package/dist/data-table/data-table.d.ts +21 -26
  229. package/dist/data-table/data-table.js +20 -23
  230. package/dist/data-table/data-table.module.js +32 -34
  231. package/dist/data-table/index.d.ts +2 -2
  232. package/dist/index.js +3 -3
  233. package/dist/lib/calendar/calendar-navigation.d.ts +39 -5
  234. package/dist/lib/calendar/calendar-navigation.js +185 -118
  235. package/dist/lib/calendar/calendar-parts.d.ts +143 -0
  236. package/dist/lib/calendar/calendar-parts.js +540 -0
  237. package/dist/lib/calendar/calendar-prefab.d.ts +52 -0
  238. package/dist/lib/calendar/calendar-prefab.js +311 -0
  239. package/dist/lib/calendar/calendar-year.d.ts +3 -1
  240. package/dist/lib/calendar/calendar-year.js +139 -131
  241. package/dist/lib/calendar/temporal.css +325 -232
  242. package/dist/lib/calendar/temporal.d.ts +67 -82
  243. package/dist/lib/calendar/temporal.js +258 -569
  244. package/dist/lib/calendar/temporal.module.js +38 -38
  245. package/dist/lib/forms/use-connected-field.d.ts +1 -1
  246. package/dist/lib/forms/use-connected-field.js +1 -1
  247. package/dist/lib/render-as.d.ts +13 -0
  248. package/dist/lib/render-as.js +46 -0
  249. package/dist/tokens.css +6 -3
  250. package/package.json +1 -1
  251. package/tokens/dark.tokens.json +6 -0
  252. package/tokens/sys.tokens.json +7 -0
  253. package/dist/components/button/close-button.d.ts +0 -16
  254. package/dist/components/button/close-button.js +0 -30
@@ -1,12 +1,14 @@
1
+ import { useRequiredContext } from "../../lib/use-required-context.js";
1
2
  import { useComposerContext } from "./composer.context.js";
2
3
  import composer_editor_module_default from "./composer-editor.module.js";
3
4
  import { EditorBehaviorPlugin } from "./editor-behavior.js";
4
5
  import { $createMentionNode, MentionExtension } from "./mention-node.js";
5
6
  import { parseMentionString } from "./mention-text.js";
6
7
  import { c } from "react/compiler-runtime";
8
+ import { useRender } from "@base-ui/react/use-render";
7
9
  import { clsx } from "clsx";
8
10
  import { jsx, jsxs } from "react/jsx-runtime";
9
- import { useId, useState } from "react";
11
+ import { createContext, useEffect, useId, useState } from "react";
10
12
  import { HistoryExtension } from "@lexical/history";
11
13
  import { PlainTextExtension } from "@lexical/plain-text";
12
14
  import { ContentEditable } from "@lexical/react/LexicalContentEditable";
@@ -30,13 +32,15 @@ var seedEditorState = (value) => () => {
30
32
  }
31
33
  root.append(paragraph);
32
34
  };
35
+ var PlaceholderContext = createContext(null);
33
36
  /** The composer's plain-text editor, with mentions and Enter to send. */
34
37
  var ComposerEditor = (t0) => {
35
38
  const $ = c(34);
36
- const { label, placeholder, minLines: t1, maxLines, children, className } = t0;
39
+ const { label, minLines: t1, maxLines, children, className } = t0;
37
40
  const minLines = t1 === void 0 ? 3 : t1;
38
- const { value, initialValue, disabled, setValue, mentionsListboxId, mentionsOpen, mentionsActiveOptionId } = useComposerContext();
41
+ const { initialValue, disabled, setValue, mentionsListboxId, mentionsOpen, mentionsActiveOptionId } = useComposerContext();
39
42
  const placeholderId = useId();
43
+ const [described, setDescribed] = useState(false);
40
44
  let t2;
41
45
  if ($[0] !== disabled || $[1] !== initialValue) {
42
46
  t2 = () => defineExtension({
@@ -72,7 +76,7 @@ var ComposerEditor = (t0) => {
72
76
  $[6] = minLines;
73
77
  $[7] = t4;
74
78
  } else t4 = $[7];
75
- const t5 = placeholder === void 0 ? void 0 : placeholderId;
79
+ const t5 = described ? placeholderId : void 0;
76
80
  const t6 = disabled || void 0;
77
81
  let t7;
78
82
  if ($[8] !== mentionsActiveOptionId || $[9] !== mentionsListboxId || $[10] !== mentionsOpen) {
@@ -106,68 +110,154 @@ var ComposerEditor = (t0) => {
106
110
  $[16] = t8;
107
111
  } else t8 = $[16];
108
112
  let t9;
109
- if ($[17] !== placeholder || $[18] !== placeholderId || $[19] !== value) {
110
- t9 = placeholder === void 0 ? null : /* @__PURE__ */ jsx("div", {
111
- id: placeholderId,
112
- className: composer_editor_module_default.placeholder,
113
- hidden: value !== "",
114
- "aria-hidden": "true",
115
- children: placeholder
116
- });
117
- $[17] = placeholder;
118
- $[18] = placeholderId;
119
- $[19] = value;
120
- $[20] = t9;
121
- } else t9 = $[20];
122
- let t10;
123
- if ($[21] !== setValue) {
124
- t10 = /* @__PURE__ */ jsx(OnChangePlugin, {
113
+ if ($[17] !== setValue) {
114
+ t9 = /* @__PURE__ */ jsx(OnChangePlugin, {
125
115
  ignoreSelectionChange: true,
126
116
  onChange: (editorState) => editorState.read(() => setValue($getRoot().getTextContent()))
127
117
  });
128
- $[21] = setValue;
129
- $[22] = t10;
130
- } else t10 = $[22];
118
+ $[17] = setValue;
119
+ $[18] = t9;
120
+ } else t9 = $[18];
121
+ let t10;
122
+ if ($[19] === Symbol.for("react.memo_cache_sentinel")) {
123
+ t10 = /* @__PURE__ */ jsx(EditorBehaviorPlugin, {});
124
+ $[19] = t10;
125
+ } else t10 = $[19];
131
126
  let t11;
132
- if ($[23] === Symbol.for("react.memo_cache_sentinel")) {
133
- t11 = /* @__PURE__ */ jsx(EditorBehaviorPlugin, {});
134
- $[23] = t11;
135
- } else t11 = $[23];
127
+ if ($[20] !== placeholderId) {
128
+ t11 = {
129
+ id: placeholderId,
130
+ register: setDescribed
131
+ };
132
+ $[20] = placeholderId;
133
+ $[21] = t11;
134
+ } else t11 = $[21];
136
135
  let t12;
137
- if ($[24] !== children || $[25] !== t10 || $[26] !== t3 || $[27] !== t4 || $[28] !== t8 || $[29] !== t9) {
138
- t12 = /* @__PURE__ */ jsxs("div", {
136
+ if ($[22] !== children || $[23] !== t11) {
137
+ t12 = /* @__PURE__ */ jsx(PlaceholderContext, {
138
+ value: t11,
139
+ children
140
+ });
141
+ $[22] = children;
142
+ $[23] = t11;
143
+ $[24] = t12;
144
+ } else t12 = $[24];
145
+ let t13;
146
+ if ($[25] !== t12 || $[26] !== t3 || $[27] !== t4 || $[28] !== t8 || $[29] !== t9) {
147
+ t13 = /* @__PURE__ */ jsxs("div", {
139
148
  className: t3,
140
149
  style: t4,
141
150
  children: [
142
151
  t8,
143
152
  t9,
144
153
  t10,
145
- t11,
146
- children
154
+ t12
147
155
  ]
148
156
  });
149
- $[24] = children;
150
- $[25] = t10;
157
+ $[25] = t12;
151
158
  $[26] = t3;
152
159
  $[27] = t4;
153
160
  $[28] = t8;
154
161
  $[29] = t9;
155
- $[30] = t12;
156
- } else t12 = $[30];
157
- let t13;
158
- if ($[31] !== extension || $[32] !== t12) {
159
- t13 = /* @__PURE__ */ jsx(LexicalExtensionComposer, {
162
+ $[30] = t13;
163
+ } else t13 = $[30];
164
+ let t14;
165
+ if ($[31] !== extension || $[32] !== t13) {
166
+ t14 = /* @__PURE__ */ jsx(LexicalExtensionComposer, {
160
167
  extension,
161
168
  contentEditable: null,
162
- children: t12
169
+ children: t13
163
170
  });
164
171
  $[31] = extension;
165
- $[32] = t12;
166
- $[33] = t13;
167
- } else t13 = $[33];
168
- return t13;
172
+ $[32] = t13;
173
+ $[33] = t14;
174
+ } else t14 = $[33];
175
+ return t14;
176
+ };
177
+ /**
178
+ * What the editor shows while the draft is empty, inside the `Editor`. It also
179
+ * describes the editor.
180
+ *
181
+ * @example
182
+ * <Composer.Editor label="Comment">
183
+ * <Composer.Placeholder>Write a comment</Composer.Placeholder>
184
+ * </Composer.Editor>
185
+ */
186
+ var ComposerPlaceholder = (t0) => {
187
+ const $ = c(19);
188
+ let className;
189
+ let props;
190
+ let ref;
191
+ let render;
192
+ if ($[0] !== t0) {
193
+ ({render, className, ref, ...props} = t0);
194
+ $[0] = t0;
195
+ $[1] = className;
196
+ $[2] = props;
197
+ $[3] = ref;
198
+ $[4] = render;
199
+ } else {
200
+ className = $[1];
201
+ props = $[2];
202
+ ref = $[3];
203
+ render = $[4];
204
+ }
205
+ const { value } = useComposerContext();
206
+ const { id, register } = useRequiredContext(PlaceholderContext, "Composer.Placeholder must be rendered within <Composer.Editor>.");
207
+ let t1;
208
+ let t2;
209
+ if ($[5] !== register) {
210
+ t1 = () => {
211
+ register(true);
212
+ return () => register(false);
213
+ };
214
+ t2 = [register];
215
+ $[5] = register;
216
+ $[6] = t1;
217
+ $[7] = t2;
218
+ } else {
219
+ t1 = $[6];
220
+ t2 = $[7];
221
+ }
222
+ useEffect(t1, t2);
223
+ const t3 = value !== "";
224
+ let t4;
225
+ if ($[8] !== className) {
226
+ t4 = clsx(composer_editor_module_default.placeholder, className);
227
+ $[8] = className;
228
+ $[9] = t4;
229
+ } else t4 = $[9];
230
+ let t5;
231
+ if ($[10] !== id || $[11] !== props || $[12] !== t3 || $[13] !== t4) {
232
+ t5 = {
233
+ "aria-hidden": true,
234
+ ...props,
235
+ id,
236
+ hidden: t3,
237
+ className: t4
238
+ };
239
+ $[10] = id;
240
+ $[11] = props;
241
+ $[12] = t3;
242
+ $[13] = t4;
243
+ $[14] = t5;
244
+ } else t5 = $[14];
245
+ let t6;
246
+ if ($[15] !== ref || $[16] !== render || $[17] !== t5) {
247
+ t6 = {
248
+ defaultTagName: "div",
249
+ render,
250
+ ref,
251
+ props: t5
252
+ };
253
+ $[15] = ref;
254
+ $[16] = render;
255
+ $[17] = t5;
256
+ $[18] = t6;
257
+ } else t6 = $[18];
258
+ return useRender(t6);
169
259
  };
170
260
  function _temp(error) {
171
261
  throw error;
172
262
  }
173
- export { ComposerEditor };
263
+ export { ComposerEditor, ComposerPlaceholder };
@@ -1,9 +1,9 @@
1
1
  import './composer-editor.css';// src/components/composer/composer-editor.module.scss
2
- var editor = "_editor_1wstb_3";
3
- var content = "_content_1wstb_9";
4
- var placeholder = "_placeholder_1wstb_17";
5
- var menu = "_menu_1wstb_25";
6
- var menuItem = "_menuItem_1wstb_54";
2
+ var editor = "_editor_1emww_3";
3
+ var content = "_content_1emww_9";
4
+ var placeholder = "_placeholder_1emww_17";
5
+ var menu = "_menu_1emww_25";
6
+ var menuItem = "_menuItem_1emww_54";
7
7
  var composer_editor_module_default = {
8
8
  editor,
9
9
  content,
@@ -1,6 +1,6 @@
1
1
  @layer kit.reset, kit.base, kit.components;
2
2
  @layer kit.components {
3
- ._composer_buzyv_3 {
3
+ ._composer_1x0sk_3 {
4
4
  --_composer-border: var(
5
5
  --composer-border,
6
6
  var(--sys-color-border)
@@ -16,37 +16,37 @@
16
16
  display: flex;
17
17
  flex-direction: column;
18
18
  min-inline-size: 0;
19
- border: 1px solid var(--_composer-border);
19
+ border: var(--composer-border-width, 1px) solid var(--_composer-border);
20
20
  border-radius: var(--composer-radius, var(--sys-radius-sm));
21
21
  background: var(--composer-bg, var(--sys-color-surface));
22
22
  color: var(--composer-fg, var(--sys-color-text));
23
- font: var(--sys-font-body-medium);
23
+ font: var(--composer-font, var(--sys-font-body-medium));
24
24
  cursor: text;
25
25
  }
26
- ._composer_buzyv_3 {
26
+ ._composer_1x0sk_3 {
27
27
  outline: 0 solid var(--sys-color-focus-ring);
28
28
  outline-offset: var(--sys-focus-ring-offset);
29
29
  }
30
- ._composer_buzyv_3[data-focus-visible] {
30
+ ._composer_1x0sk_3[data-focus-visible] {
31
31
  outline-width: var(--sys-focus-ring-width);
32
32
  }
33
33
  @media not (prefers-reduced-motion) {
34
- ._composer_buzyv_3 {
34
+ ._composer_1x0sk_3 {
35
35
  transition: border-color var(--sys-motion-instant) var(--sys-motion-standard);
36
36
  }
37
37
  }
38
- ._composer_buzyv_3:hover:not([data-disabled]), ._composer_buzyv_3[data-focused] {
38
+ ._composer_1x0sk_3:hover:not([data-disabled]), ._composer_1x0sk_3[data-focused] {
39
39
  --_composer-border: var(
40
- --composer-border-active,
40
+ --composer-active-border,
41
41
  var(--sys-color-primary)
42
42
  );
43
43
  }
44
- ._composer_buzyv_3[data-disabled] {
44
+ ._composer_1x0sk_3[data-disabled] {
45
45
  background: var(--composer-disabled-bg, var(--sys-color-disabled-bg));
46
46
  color: var(--composer-disabled-fg, var(--sys-color-disabled-fg));
47
47
  cursor: not-allowed;
48
48
  }
49
- ._toolbar_buzyv_49 {
49
+ ._toolbar_1x0sk_49 {
50
50
  display: flex;
51
51
  flex-direction: row;
52
52
  align-items: center;
@@ -54,28 +54,28 @@
54
54
  gap: var(--composer-gap, var(--sys-unit-4));
55
55
  padding: var(--_composer-pad-y) var(--_composer-pad-x);
56
56
  }
57
- ._counter_buzyv_57 {
58
- color: var(--sys-color-text-muted);
59
- font: var(--sys-font-label-small);
57
+ ._counter_1x0sk_57 {
58
+ color: var(--composer-counter-fg, var(--sys-color-text-muted));
59
+ font: var(--composer-counter-font, var(--sys-font-label-small));
60
60
  }
61
- ._counter_buzyv_57[data-tone=warning] {
62
- color: var(--sys-color-warning-fg);
61
+ ._counter_1x0sk_57[data-tone=warning] {
62
+ color: var(--composer-counter-warning-fg, var(--sys-color-warning-fg));
63
63
  }
64
- ._counter_buzyv_57[data-tone=error] {
65
- color: var(--sys-color-error-fg);
64
+ ._counter_1x0sk_57[data-tone=error] {
65
+ color: var(--composer-counter-error-fg, var(--sys-color-error-fg));
66
66
  }
67
- ._attachments_buzyv_67 {
67
+ ._attachments_1x0sk_67 {
68
68
  display: flex;
69
69
  flex-direction: row;
70
70
  flex-wrap: wrap;
71
71
  align-items: center;
72
- gap: var(--sys-unit-8);
72
+ gap: var(--composer-attachments-gap, var(--sys-unit-8));
73
73
  min-inline-size: 0;
74
74
  padding: var(--_composer-pad-x) var(--_composer-pad-x) 0;
75
75
  }
76
- ._attachmentsError_buzyv_76 {
76
+ ._attachmentsError_1x0sk_76 {
77
77
  padding: var(--_composer-pad-y) var(--_composer-pad-x) 0;
78
- color: var(--sys-color-error-fg);
79
- font: var(--sys-font-label-small);
78
+ color: var(--composer-attachments-error-fg, var(--sys-color-error-fg));
79
+ font: var(--composer-attachments-error-font, var(--sys-font-label-small));
80
80
  }
81
81
  }
@@ -2,7 +2,7 @@ import { type ComponentProps, type ComponentPropsWithRef, type ReactNode } from
2
2
  import { type ComposerContent, type ComposerSendPayload } from "./composer.context.ts";
3
3
  import { type ComposerHandle, createComposerHandle } from "./composer.handle.ts";
4
4
  import { ComposerAttachButton, type ComposerAttachButtonProps, ComposerAttachments, ComposerAttachmentsError, type ComposerAttachmentsErrorProps, type ComposerAttachmentsProps } from "./composer-attachments.tsx";
5
- import { ComposerEditor, type ComposerEditorProps } from "./composer-editor.tsx";
5
+ import { ComposerEditor, type ComposerEditorProps, ComposerPlaceholder } from "./composer-editor.tsx";
6
6
  import { ComposerMentions, type ComposerMentionsProps } from "./composer-mentions.tsx";
7
7
  export type ComposerRootProps = Readonly<{
8
8
  children: ReactNode;
@@ -47,7 +47,15 @@ export type ComposerSendButtonProps = Readonly<{
47
47
  /** The icon button that sends the message, its children the glyph; disabled while it can't be sent. */
48
48
  declare const SendButton: ({ label, variant, children, ...props }: ComposerSendButtonProps) => ReactNode;
49
49
  /** The attachment controls the `Composer` prefab renders, and what they say. */
50
- export type ComposerAttachmentOptions = Omit<ComposerAttachmentsProps, "className"> & ComposerAttachmentsErrorProps & Readonly<{
50
+ export type ComposerAttachmentOptions = Pick<ComposerAttachmentsProps, "label"> & ComposerAttachmentsErrorProps & Readonly<{
51
+ /** Each tile's remove button's accessible name, such as "Remove". */
52
+ removeLabel: string;
53
+ /** Each tile's remove glyph. */
54
+ removeIcon: ReactNode;
55
+ /** A tile's file-type glyph. Left out, a tile that is not an image shows only the file's extension. */
56
+ fileIcon?: ReactNode;
57
+ /** A tile's tooltip, from the file's name and formatted size. */
58
+ fileHint: (name: string, size: string) => string;
51
59
  /** The attach button's accessible name and tooltip, such as "Add attachment". */
52
60
  attachLabel: string;
53
61
  /** The attach button's glyph. */
@@ -55,6 +63,8 @@ export type ComposerAttachmentOptions = Omit<ComposerAttachmentsProps, "classNam
55
63
  accept?: ComposerAttachButtonProps["accept"];
56
64
  }>;
57
65
  export type ComposerProps = Omit<ComposerRootProps, "children"> & Omit<ComposerEditorProps, "children" | "className"> & Readonly<{
66
+ /** Shown while the draft is empty, and describes the editor. */
67
+ placeholder?: string;
58
68
  /** The `@` typeahead, where the composer takes mentions. */
59
69
  mentions?: ComposerMentionsProps;
60
70
  /** The staged files and the button that adds them, where the composer takes attachments. */
@@ -69,6 +79,7 @@ declare const Prefab: ({ label, placeholder, minLines, maxLines, mentions, attac
69
79
  export type ComposerParts = typeof Prefab & Readonly<{
70
80
  Root: typeof Root;
71
81
  Editor: typeof ComposerEditor;
82
+ Placeholder: typeof ComposerPlaceholder;
72
83
  Mentions: typeof ComposerMentions;
73
84
  Toolbar: typeof Toolbar;
74
85
  Attachments: typeof ComposerAttachments;
@@ -1,12 +1,13 @@
1
1
  import { lengthTone } from "../../lib/text-length.js";
2
- import { Button } from "../button/button.js";
2
+ import { AttachmentTile } from "../attachment-tile/attachment-tile.js";
3
+ import { IconButton } from "../button/button.js";
3
4
  import { fieldStateAttributes } from "../field/field-state.js";
4
5
  import { useFieldFocus } from "../field/use-field-focus.js";
5
6
  import { ComposerContext, useComposerContext } from "./composer.context.js";
6
7
  import { createComposerHandle } from "./composer.handle.js";
7
8
  import composer_module_default from "./composer.module.js";
8
9
  import { ComposerAttachButton, ComposerAttachments, ComposerAttachmentsError } from "./composer-attachments.js";
9
- import { ComposerEditor } from "./composer-editor.js";
10
+ import { ComposerEditor, ComposerPlaceholder } from "./composer-editor.js";
10
11
  import { ComposerMentions } from "./composer-mentions.js";
11
12
  import { parseMentionString, toPlainText } from "./mention-text.js";
12
13
  import { c } from "react/compiler-runtime";
@@ -389,15 +390,14 @@ var SendButton = (t0) => {
389
390
  } else t3 = $[6];
390
391
  let t4;
391
392
  if ($[7] !== children || $[8] !== label || $[9] !== props || $[10] !== t2 || $[11] !== t3 || $[12] !== variant) {
392
- t4 = /* @__PURE__ */ jsx(Button, {
393
+ t4 = /* @__PURE__ */ jsx(IconButton, {
393
394
  variant,
394
395
  size: "md",
395
- iconOnly: true,
396
- icon: children,
397
396
  label,
398
397
  disabled: t2,
399
398
  onClick: t3,
400
- ...props
399
+ ...props,
400
+ children
401
401
  });
402
402
  $[7] = children;
403
403
  $[8] = label;
@@ -410,7 +410,7 @@ var SendButton = (t0) => {
410
410
  return t4;
411
411
  };
412
412
  var Prefab = (t0) => {
413
- const $ = c(34);
413
+ const $ = c(36);
414
414
  let attachments;
415
415
  let label;
416
416
  let maxLines;
@@ -447,89 +447,103 @@ var Prefab = (t0) => {
447
447
  if ($[10] !== attachments) {
448
448
  t1 = attachments === void 0 ? null : /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(ComposerAttachments, {
449
449
  label: attachments.label,
450
- removeLabel: attachments.removeLabel,
451
- removeIcon: attachments.removeIcon,
452
- fileIcon: attachments.fileIcon,
453
- fileHint: attachments.fileHint
450
+ children: (attachment, t2) => {
451
+ const { oversized, size, disabled } = t2;
452
+ return /* @__PURE__ */ jsx(AttachmentTile, {
453
+ id: attachment.id,
454
+ file: attachment.file,
455
+ hint: attachments.fileHint(attachment.file.name, size),
456
+ removeLabel: attachments.removeLabel,
457
+ removeIcon: attachments.removeIcon,
458
+ icon: attachments.fileIcon,
459
+ invalid: oversized,
460
+ disabled
461
+ });
462
+ }
454
463
  }), /* @__PURE__ */ jsx(ComposerAttachmentsError, { tooLargeError: attachments.tooLargeError })] });
455
464
  $[10] = attachments;
456
465
  $[11] = t1;
457
466
  } else t1 = $[11];
458
467
  let t2;
459
- if ($[12] !== mentions) {
460
- t2 = mentions === void 0 ? null : /* @__PURE__ */ jsx(ComposerMentions, { ...mentions });
461
- $[12] = mentions;
468
+ if ($[12] !== placeholder) {
469
+ t2 = placeholder === void 0 ? null : /* @__PURE__ */ jsx(ComposerPlaceholder, { children: placeholder });
470
+ $[12] = placeholder;
462
471
  $[13] = t2;
463
472
  } else t2 = $[13];
464
473
  let t3;
465
- if ($[14] !== label || $[15] !== maxLines || $[16] !== minLines || $[17] !== placeholder || $[18] !== t2) {
466
- t3 = /* @__PURE__ */ jsx(ComposerEditor, {
474
+ if ($[14] !== mentions) {
475
+ t3 = mentions === void 0 ? null : /* @__PURE__ */ jsx(ComposerMentions, { ...mentions });
476
+ $[14] = mentions;
477
+ $[15] = t3;
478
+ } else t3 = $[15];
479
+ let t4;
480
+ if ($[16] !== label || $[17] !== maxLines || $[18] !== minLines || $[19] !== t2 || $[20] !== t3) {
481
+ t4 = /* @__PURE__ */ jsxs(ComposerEditor, {
467
482
  label,
468
- placeholder,
469
483
  minLines,
470
484
  maxLines,
471
- children: t2
485
+ children: [t2, t3]
472
486
  });
473
- $[14] = label;
474
- $[15] = maxLines;
475
- $[16] = minLines;
476
- $[17] = placeholder;
477
- $[18] = t2;
478
- $[19] = t3;
479
- } else t3 = $[19];
480
- let t4;
481
- if ($[20] === Symbol.for("react.memo_cache_sentinel")) {
482
- t4 = /* @__PURE__ */ jsx(MaxLength, {});
483
- $[20] = t4;
484
- } else t4 = $[20];
487
+ $[16] = label;
488
+ $[17] = maxLines;
489
+ $[18] = minLines;
490
+ $[19] = t2;
491
+ $[20] = t3;
492
+ $[21] = t4;
493
+ } else t4 = $[21];
485
494
  let t5;
486
- if ($[21] !== attachments) {
487
- t5 = attachments === void 0 ? null : /* @__PURE__ */ jsx(ComposerAttachButton, {
495
+ if ($[22] === Symbol.for("react.memo_cache_sentinel")) {
496
+ t5 = /* @__PURE__ */ jsx(MaxLength, {});
497
+ $[22] = t5;
498
+ } else t5 = $[22];
499
+ let t6;
500
+ if ($[23] !== attachments) {
501
+ t6 = attachments === void 0 ? null : /* @__PURE__ */ jsx(ComposerAttachButton, {
488
502
  label: attachments.attachLabel,
489
503
  accept: attachments.accept,
490
504
  children: attachments.attachIcon
491
505
  });
492
- $[21] = attachments;
493
- $[22] = t5;
494
- } else t5 = $[22];
495
- let t6;
496
- if ($[23] !== sendIcon || $[24] !== sendLabel) {
497
- t6 = /* @__PURE__ */ jsx(SendButton, {
506
+ $[23] = attachments;
507
+ $[24] = t6;
508
+ } else t6 = $[24];
509
+ let t7;
510
+ if ($[25] !== sendIcon || $[26] !== sendLabel) {
511
+ t7 = /* @__PURE__ */ jsx(SendButton, {
498
512
  label: sendLabel,
499
513
  children: sendIcon
500
514
  });
501
- $[23] = sendIcon;
502
- $[24] = sendLabel;
503
- $[25] = t6;
504
- } else t6 = $[25];
505
- let t7;
506
- if ($[26] !== t5 || $[27] !== t6) {
507
- t7 = /* @__PURE__ */ jsxs(Toolbar, { children: [
508
- t4,
515
+ $[25] = sendIcon;
516
+ $[26] = sendLabel;
517
+ $[27] = t7;
518
+ } else t7 = $[27];
519
+ let t8;
520
+ if ($[28] !== t6 || $[29] !== t7) {
521
+ t8 = /* @__PURE__ */ jsxs(Toolbar, { children: [
509
522
  t5,
510
- t6
523
+ t6,
524
+ t7
511
525
  ] });
512
- $[26] = t5;
513
- $[27] = t6;
514
- $[28] = t7;
515
- } else t7 = $[28];
516
- let t8;
517
- if ($[29] !== props || $[30] !== t1 || $[31] !== t3 || $[32] !== t7) {
518
- t8 = /* @__PURE__ */ jsxs(Root, {
526
+ $[28] = t6;
527
+ $[29] = t7;
528
+ $[30] = t8;
529
+ } else t8 = $[30];
530
+ let t9;
531
+ if ($[31] !== props || $[32] !== t1 || $[33] !== t4 || $[34] !== t8) {
532
+ t9 = /* @__PURE__ */ jsxs(Root, {
519
533
  ...props,
520
534
  children: [
521
535
  t1,
522
- t3,
523
- t7
536
+ t4,
537
+ t8
524
538
  ]
525
539
  });
526
- $[29] = props;
527
- $[30] = t1;
528
- $[31] = t3;
529
- $[32] = t7;
530
- $[33] = t8;
531
- } else t8 = $[33];
532
- return t8;
540
+ $[31] = props;
541
+ $[32] = t1;
542
+ $[33] = t4;
543
+ $[34] = t8;
544
+ $[35] = t9;
545
+ } else t9 = $[35];
546
+ return t9;
533
547
  };
534
548
  /**
535
549
  * A message composer: a plain-text editor with `@` mentions, staged
@@ -550,6 +564,7 @@ var Prefab = (t0) => {
550
564
  var Composer = Object.assign(Prefab, {
551
565
  Root,
552
566
  Editor: ComposerEditor,
567
+ Placeholder: ComposerPlaceholder,
553
568
  Mentions: ComposerMentions,
554
569
  Toolbar,
555
570
  Attachments: ComposerAttachments,
@@ -1,9 +1,9 @@
1
1
  import './composer.css';// src/components/composer/composer.module.scss
2
- var composer = "_composer_buzyv_3";
3
- var toolbar = "_toolbar_buzyv_49";
4
- var counter = "_counter_buzyv_57";
5
- var attachments = "_attachments_buzyv_67";
6
- var attachmentsError = "_attachmentsError_buzyv_76";
2
+ var composer = "_composer_1x0sk_3";
3
+ var toolbar = "_toolbar_1x0sk_49";
4
+ var counter = "_counter_1x0sk_57";
5
+ var attachments = "_attachments_1x0sk_67";
6
+ var attachmentsError = "_attachmentsError_1x0sk_76";
7
7
  var composer_module_default = {
8
8
  composer,
9
9
  toolbar,
@@ -1,8 +1,8 @@
1
1
  export type { ComposerAttachment, ComposerContent, ComposerSendPayload, } from "./composer.context.ts";
2
2
  export type { ComposerHandle } from "./composer.handle.ts";
3
3
  export * from "./composer.tsx";
4
- export type { ComposerAttachButtonProps, ComposerAttachmentsErrorProps, ComposerAttachmentsProps, } from "./composer-attachments.tsx";
5
- export type { ComposerEditorProps } from "./composer-editor.tsx";
4
+ export type { ComposerAttachButtonProps, ComposerAttachmentState, ComposerAttachmentsErrorProps, ComposerAttachmentsProps, } from "./composer-attachments.tsx";
5
+ export type { ComposerEditorProps, ComposerPlaceholderProps, } from "./composer-editor.tsx";
6
6
  export type { ComposerMentionsProps } from "./composer-mentions.tsx";
7
7
  export type { MentionCandidate, MentionSource, } from "./mention-sources.ts";
8
8
  export * from "./mention-text.tsx";
@@ -1,13 +1,13 @@
1
1
  @layer kit.reset, kit.base, kit.components;
2
2
  @layer kit.components {
3
- ._mention_dh4ag_3 {
4
- border-radius: var(--sys-radius-full);
3
+ ._mention_1uofn_3 {
4
+ border-radius: var(--mention-radius, var(--sys-radius-full));
5
5
  background: var(--mention-bg, var(--sys-color-neutral-bg));
6
- padding: var(--sys-unit-1) var(--sys-unit-4);
6
+ padding: var(--mention-pad-y, var(--sys-unit-1)) var(--mention-pad-x, var(--sys-unit-4));
7
7
  color: var(--mention-fg, var(--sys-color-neutral-fg));
8
- font: var(--sys-font-label-small);
8
+ font: var(--mention-font, var(--sys-font-label-small));
9
9
  }
10
- ._mention_dh4ag_3[data-you] {
10
+ ._mention_1uofn_3[data-you] {
11
11
  background: var(--mention-you-bg, var(--sys-color-primary-container));
12
12
  color: var(--mention-you-fg, var(--sys-color-on-primary-container));
13
13
  }
@@ -1,4 +1,4 @@
1
1
  import './mention-text.css';// src/components/composer/mention-text.module.scss
2
- var mention = "_mention_dh4ag_3";
2
+ var mention = "_mention_1uofn_3";
3
3
  var mention_text_module_default = { mention };
4
4
  export { mention_text_module_default as default, mention };