@igne-agency/react-web-ui 0.3.1 → 0.4.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 (290) hide show
  1. package/README.md +32 -1
  2. package/dist/components/accordion/accordion.css +24 -19
  3. package/dist/components/accordion/accordion.d.ts +19 -3
  4. package/dist/components/accordion/accordion.js +86 -32
  5. package/dist/components/accordion/accordion.module.js +8 -8
  6. package/dist/components/active-filters/active-filter-describers.d.ts +1 -1
  7. package/dist/components/active-filters/active-filter-describers.js +1 -1
  8. package/dist/components/active-filters/active-filters.d.ts +35 -2
  9. package/dist/components/active-filters/active-filters.js +57 -52
  10. package/dist/components/active-filters/index.js +2 -2
  11. package/dist/components/attachment-tile/attachment-preview.d.ts +11 -9
  12. package/dist/components/attachment-tile/attachment-preview.js +102 -68
  13. package/dist/components/attachment-tile/attachment-tile.css +22 -13
  14. package/dist/components/attachment-tile/attachment-tile.d.ts +51 -6
  15. package/dist/components/attachment-tile/attachment-tile.js +209 -85
  16. package/dist/components/attachment-tile/attachment-tile.module.js +10 -10
  17. package/dist/components/attachment-tile/index.d.ts +1 -1
  18. package/dist/components/attachment-tile/index.js +2 -2
  19. package/dist/components/avatar/avatar.d.ts +5 -5
  20. package/dist/components/avatar/avatar.js +64 -37
  21. package/dist/components/avatar-group/avatar-group.js +2 -2
  22. package/dist/components/badge/badge.js +1 -1
  23. package/dist/components/breadcrumbs/breadcrumbs.d.ts +22 -7
  24. package/dist/components/breadcrumbs/breadcrumbs.js +189 -170
  25. package/dist/components/button/button.d.ts +2 -3
  26. package/dist/components/button/button.js +58 -77
  27. package/dist/components/button/close-button.d.ts +4 -2
  28. package/dist/components/button/close-button.js +9 -9
  29. package/dist/components/checkbox-field/checkbox-field.d.ts +17 -3
  30. package/dist/components/checkbox-field/checkbox-field.js +108 -131
  31. package/dist/components/checkbox-field/checkbox.css +26 -34
  32. package/dist/components/checkbox-field/checkbox.d.ts +51 -8
  33. package/dist/components/checkbox-field/checkbox.js +221 -57
  34. package/dist/components/checkbox-field/checkbox.module.js +6 -8
  35. package/dist/components/checkbox-field/index.d.ts +0 -1
  36. package/dist/components/checkbox-field/index.js +1 -2
  37. package/dist/components/checkbox-field/tsf-checkbox-field.d.ts +2 -2
  38. package/dist/components/checkbox-group-field/checkbox-group-field.d.ts +4 -1
  39. package/dist/components/checkbox-group-field/checkbox-group-field.js +54 -50
  40. package/dist/components/checkbox-group-field/checkbox-group.d.ts +7 -2
  41. package/dist/components/checkbox-group-field/checkbox-group.js +8 -3
  42. package/dist/components/collapsible/collapsible.css +23 -18
  43. package/dist/components/collapsible/collapsible.d.ts +18 -3
  44. package/dist/components/collapsible/collapsible.js +85 -32
  45. package/dist/components/collapsible/collapsible.module.js +7 -7
  46. package/dist/components/combobox-field/combobox-field.d.ts +9 -1
  47. package/dist/components/combobox-field/combobox-field.js +195 -175
  48. package/dist/components/combobox-field/combobox-items.d.ts +2 -2
  49. package/dist/components/combobox-field/combobox-items.js +4 -4
  50. package/dist/components/combobox-field/combobox.css +99 -96
  51. package/dist/components/combobox-field/combobox.d.ts +94 -15
  52. package/dist/components/combobox-field/combobox.js +484 -159
  53. package/dist/components/combobox-field/combobox.module.js +21 -21
  54. package/dist/components/combobox-field/index.d.ts +0 -1
  55. package/dist/components/combobox-field/selection.d.ts +4 -1
  56. package/dist/components/combobox-field/value-state-view.css +7 -3
  57. package/dist/components/combobox-field/value-state-view.d.ts +4 -2
  58. package/dist/components/combobox-field/value-state-view.js +15 -15
  59. package/dist/components/combobox-field/value-state-view.module.js +6 -4
  60. package/dist/components/composer/composer-attachments.d.ts +11 -3
  61. package/dist/components/composer/composer-attachments.js +61 -47
  62. package/dist/components/composer/composer-editor.d.ts +2 -1
  63. package/dist/components/composer/composer-editor.js +79 -71
  64. package/dist/components/composer/composer-mentions.js +2 -2
  65. package/dist/components/composer/composer.d.ts +42 -21
  66. package/dist/components/composer/composer.js +201 -58
  67. package/dist/components/composer/mention-text.js +3 -3
  68. package/dist/components/confirm-dialog/confirm-dialog.d.ts +8 -7
  69. package/dist/components/confirm-dialog/confirm-dialog.js +10 -9
  70. package/dist/components/conversation/conversation.context.d.ts +0 -5
  71. package/dist/components/conversation/conversation.d.ts +63 -29
  72. package/dist/components/conversation/conversation.js +193 -82
  73. package/dist/components/conversation/index.d.ts +1 -1
  74. package/dist/components/date-field/date-field.d.ts +10 -4
  75. package/dist/components/date-field/date-field.js +57 -43
  76. package/dist/components/date-field/date-input.d.ts +20 -3
  77. package/dist/components/date-field/date-input.js +28 -13
  78. package/dist/components/date-field/index.d.ts +1 -1
  79. package/dist/components/date-field/tsf-date-field.d.ts +1 -1
  80. package/dist/components/date-field/tsf-date-field.js +1 -1
  81. package/dist/components/date-range-field/date-range-field.d.ts +8 -4
  82. package/dist/components/date-range-field/date-range-field.js +57 -45
  83. package/dist/components/date-range-field/date-range-input.d.ts +20 -3
  84. package/dist/components/date-range-field/date-range-input.js +27 -12
  85. package/dist/components/date-range-field/tsf-date-range-field.d.ts +1 -1
  86. package/dist/components/date-range-field/tsf-date-range-field.js +1 -1
  87. package/dist/components/detail-list/detail-list.d.ts +28 -27
  88. package/dist/components/detail-list/detail-list.js +177 -121
  89. package/dist/components/dialog/dialog.d.ts +47 -27
  90. package/dist/components/dialog/dialog.js +101 -38
  91. package/dist/components/divider/divider.js +1 -1
  92. package/dist/components/drawer/drawer.d.ts +48 -30
  93. package/dist/components/drawer/drawer.js +113 -41
  94. package/dist/components/email-field/email-field.d.ts +5 -3
  95. package/dist/components/email-field/email-field.js +1 -3
  96. package/dist/components/email-field/tsf-email-field.d.ts +3 -2
  97. package/dist/components/empty-message/empty-message.d.ts +3 -3
  98. package/dist/components/empty-message/empty-message.js +3 -3
  99. package/dist/components/error-boundary/error-boundary.d.ts +5 -2
  100. package/dist/components/error-boundary/error-boundary.js +2 -3
  101. package/dist/components/error-message/error-message.d.ts +1 -1
  102. package/dist/components/error-message/error-message.js +1 -1
  103. package/dist/components/error-text/error-text.js +3 -3
  104. package/dist/components/field/field.d.ts +5 -5
  105. package/dist/components/field/field.js +9 -9
  106. package/dist/components/field/index.js +2 -2
  107. package/dist/components/field/input-parts.js +1 -1
  108. package/dist/components/field-placeholder/field-placeholder.d.ts +4 -1
  109. package/dist/components/field-placeholder/field-placeholder.js +41 -26
  110. package/dist/components/fieldset/field-group.js +1 -1
  111. package/dist/components/fieldset/fieldset-root.js +1 -1
  112. package/dist/components/fieldset/fieldset.js +1 -1
  113. package/dist/components/file-field/file-field.css +19 -15
  114. package/dist/components/file-field/file-field.d.ts +10 -1
  115. package/dist/components/file-field/file-field.js +130 -109
  116. package/dist/components/file-field/file-field.module.js +6 -4
  117. package/dist/components/file-field/file-input.d.ts +32 -9
  118. package/dist/components/file-field/file-input.js +94 -74
  119. package/dist/components/filter-bar/filter-bar.d.ts +79 -51
  120. package/dist/components/filter-bar/filter-bar.js +552 -216
  121. package/dist/components/form/form.d.ts +4 -6
  122. package/dist/components/form/form.js +6 -8
  123. package/dist/components/icon/icon.d.ts +5 -10
  124. package/dist/components/icon/icon.js +4 -6
  125. package/dist/components/link/link.js +1 -1
  126. package/dist/components/link-button/link-button.d.ts +1 -2
  127. package/dist/components/link-button/link-button.js +12 -22
  128. package/dist/components/loading-message/loading-message.d.ts +2 -2
  129. package/dist/components/loading-message/loading-message.js +1 -1
  130. package/dist/components/locale-provider/locale-provider.js +1 -1
  131. package/dist/components/menu/menu.d.ts +40 -22
  132. package/dist/components/menu/menu.js +100 -40
  133. package/dist/components/nav/nav-context.d.ts +0 -1
  134. package/dist/components/nav/nav-context.js +1 -2
  135. package/dist/components/nav/nav-item-view.d.ts +7 -7
  136. package/dist/components/nav/nav-item-view.js +27 -51
  137. package/dist/components/nav/nav.css +72 -60
  138. package/dist/components/nav/nav.d.ts +15 -8
  139. package/dist/components/nav/nav.js +105 -52
  140. package/dist/components/nav/nav.module.js +14 -14
  141. package/dist/components/number-field/number-field.d.ts +7 -1
  142. package/dist/components/number-field/number-field.js +98 -82
  143. package/dist/components/number-field/number-input.d.ts +53 -4
  144. package/dist/components/number-field/number-input.js +68 -21
  145. package/dist/components/number-field/tsf-number-field.d.ts +1 -1
  146. package/dist/components/number-field/tsf-number-field.js +1 -1
  147. package/dist/components/otp-field/otp-input.d.ts +25 -0
  148. package/dist/components/otp-field/otp-input.js +26 -1
  149. package/dist/components/pagination/pagination.d.ts +82 -23
  150. package/dist/components/pagination/pagination.js +656 -229
  151. package/dist/components/password-field/password-field.d.ts +7 -1
  152. package/dist/components/password-field/password-field.js +117 -126
  153. package/dist/components/password-field/password-strength.js +1 -1
  154. package/dist/components/password-field/tsf-password-field.d.ts +1 -1
  155. package/dist/components/password-field/tsf-password-field.js +1 -1
  156. package/dist/components/photo-field/photo-field.d.ts +17 -3
  157. package/dist/components/photo-field/photo-field.js +168 -89
  158. package/dist/components/photo-field/photo-input-context.d.ts +25 -0
  159. package/dist/components/photo-field/photo-input-context.js +14 -0
  160. package/dist/components/photo-field/photo-input.d.ts +58 -23
  161. package/dist/components/photo-field/photo-input.js +459 -261
  162. package/dist/components/popover/popover.d.ts +55 -23
  163. package/dist/components/popover/popover.js +205 -61
  164. package/dist/components/radio-group-field/radio-group.js +1 -1
  165. package/dist/components/search-field/search-field.d.ts +7 -5
  166. package/dist/components/search-field/search-field.js +4 -6
  167. package/dist/components/search-field/tsf-search-field.d.ts +1 -1
  168. package/dist/components/search-field/tsf-search-field.js +1 -1
  169. package/dist/components/segmented-control-field/segmented-control.js +1 -1
  170. package/dist/components/select-field/select-field.d.ts +7 -1
  171. package/dist/components/select-field/select-field.js +151 -139
  172. package/dist/components/select-field/select.d.ts +28 -6
  173. package/dist/components/select-field/select.js +234 -149
  174. package/dist/components/skeleton/skeleton.js +1 -1
  175. package/dist/components/spinner/spinner.css +47 -1
  176. package/dist/components/spinner/spinner.js +28 -11
  177. package/dist/components/spinner/spinner.module.js +18 -3
  178. package/dist/components/stale/stale.d.ts +17 -21
  179. package/dist/components/stale/stale.js +307 -129
  180. package/dist/components/status-message/status-message.css +22 -21
  181. package/dist/components/status-message/status-message.d.ts +10 -5
  182. package/dist/components/status-message/status-message.js +20 -24
  183. package/dist/components/status-message/status-message.module.js +6 -6
  184. package/dist/components/status-message/status-preset.d.ts +4 -5
  185. package/dist/components/status-message/status-preset.js +3 -3
  186. package/dist/components/switch-field/switch.js +1 -1
  187. package/dist/components/tabs/tabs.d.ts +51 -28
  188. package/dist/components/tabs/tabs.js +219 -144
  189. package/dist/components/tag/tag.css +23 -21
  190. package/dist/components/tag/tag.d.ts +17 -15
  191. package/dist/components/tag/tag.js +140 -65
  192. package/dist/components/tag/tag.module.js +3 -3
  193. package/dist/components/tag-group/tag-group.css +30 -27
  194. package/dist/components/tag-group/tag-group.d.ts +10 -4
  195. package/dist/components/tag-group/tag-group.js +47 -35
  196. package/dist/components/tag-group/tag-group.module.js +4 -4
  197. package/dist/components/text-field/text-field.d.ts +14 -3
  198. package/dist/components/text-field/text-field.js +154 -133
  199. package/dist/components/text-field/text-input.d.ts +89 -3
  200. package/dist/components/text-field/text-input.js +184 -70
  201. package/dist/components/textarea-field/textarea.js +1 -1
  202. package/dist/components/time-field/time-input.d.ts +6 -0
  203. package/dist/components/time-field/time-input.js +6 -0
  204. package/dist/components/time-zone-provider/time-zone-provider.js +1 -1
  205. package/dist/components/toast/index.js +2 -2
  206. package/dist/components/toast/toast-provider.css +38 -34
  207. package/dist/components/toast/toast-provider.d.ts +65 -3
  208. package/dist/components/toast/toast-provider.js +313 -148
  209. package/dist/components/toast/toast-provider.module.js +11 -17
  210. package/dist/components/toast/toast.d.ts +5 -1
  211. package/dist/components/toast/toast.js +2 -1
  212. package/dist/components/toggle-group-field/toggle-group.js +1 -1
  213. package/dist/components/tooltip/tooltip.d.ts +6 -6
  214. package/dist/components/tooltip/tooltip.js +7 -7
  215. package/dist/data-table/data-table-content.d.ts +18 -10
  216. package/dist/data-table/data-table-content.js +145 -290
  217. package/dist/data-table/data-table-context.d.ts +4 -2
  218. package/dist/data-table/data-table-context.js +1 -1
  219. package/dist/data-table/data-table-parts.d.ts +99 -0
  220. package/dist/data-table/data-table-parts.js +1182 -0
  221. package/dist/data-table/data-table-selection.d.ts +7 -3
  222. package/dist/data-table/data-table-selection.js +62 -37
  223. package/dist/data-table/data-table.css +100 -95
  224. package/dist/data-table/data-table.d.ts +49 -25
  225. package/dist/data-table/data-table.js +95 -83
  226. package/dist/data-table/data-table.module.js +34 -34
  227. package/dist/data-table/index.d.ts +2 -1
  228. package/dist/data-table/index.js +2 -1
  229. package/dist/data-view/use-data-view.d.ts +2 -2
  230. package/dist/data-view/use-data-view.js +2 -2
  231. package/dist/index.js +7 -8
  232. package/dist/lib/calendar/calendar-navigation.d.ts +9 -2
  233. package/dist/lib/calendar/calendar-navigation.js +72 -73
  234. package/dist/lib/calendar/calendar-year.d.ts +4 -3
  235. package/dist/lib/calendar/calendar-year.js +137 -156
  236. package/dist/lib/calendar/temporal.d.ts +18 -12
  237. package/dist/lib/calendar/temporal.js +191 -147
  238. package/dist/lib/table-storage.d.ts +2 -2
  239. package/dist/lib/table-storage.js +2 -2
  240. package/dist/lib/unsaved-changes/leave-guard.js +1 -1
  241. package/dist/terrazzo/index.d.ts +16 -0
  242. package/dist/terrazzo/index.js +94 -2
  243. package/dist/tokens.css +71 -69
  244. package/package.json +3 -2
  245. package/tokens/ref.tokens.json +0 -30
  246. package/tokens/sys.tokens.json +0 -7
  247. package/dist/assets/spinner.js +0 -28
  248. package/dist/components/checkbox-field/checkbox-glyph.d.ts +0 -12
  249. package/dist/components/checkbox-field/checkbox-glyph.js +0 -38
  250. package/dist/components/combobox-field/combobox-popup-body.d.ts +0 -34
  251. package/dist/components/combobox-field/combobox-popup-body.js +0 -142
  252. package/dist/components/conversation/conversation.context.js +0 -4
  253. package/dist/vendor/@material-design-icons/svg/outlined/add.js +0 -12
  254. package/dist/vendor/@material-design-icons/svg/outlined/arrow_downward.js +0 -12
  255. package/dist/vendor/@material-design-icons/svg/outlined/arrow_forward.js +0 -12
  256. package/dist/vendor/@material-design-icons/svg/outlined/arrow_upward.js +0 -12
  257. package/dist/vendor/@material-design-icons/svg/outlined/attach_file.js +0 -12
  258. package/dist/vendor/@material-design-icons/svg/outlined/block.js +0 -12
  259. package/dist/vendor/@material-design-icons/svg/outlined/calendar_today.js +0 -12
  260. package/dist/vendor/@material-design-icons/svg/outlined/check.js +0 -12
  261. package/dist/vendor/@material-design-icons/svg/outlined/check_circle.js +0 -12
  262. package/dist/vendor/@material-design-icons/svg/outlined/chevron_left.js +0 -12
  263. package/dist/vendor/@material-design-icons/svg/outlined/chevron_right.js +0 -12
  264. package/dist/vendor/@material-design-icons/svg/outlined/close.js +0 -12
  265. package/dist/vendor/@material-design-icons/svg/outlined/content_copy.js +0 -12
  266. package/dist/vendor/@material-design-icons/svg/outlined/date_range.js +0 -12
  267. package/dist/vendor/@material-design-icons/svg/outlined/description.js +0 -12
  268. package/dist/vendor/@material-design-icons/svg/outlined/download.js +0 -12
  269. package/dist/vendor/@material-design-icons/svg/outlined/error.js +0 -12
  270. package/dist/vendor/@material-design-icons/svg/outlined/error_outline.js +0 -12
  271. package/dist/vendor/@material-design-icons/svg/outlined/expand_less.js +0 -12
  272. package/dist/vendor/@material-design-icons/svg/outlined/expand_more.js +0 -12
  273. package/dist/vendor/@material-design-icons/svg/outlined/filter_alt.js +0 -12
  274. package/dist/vendor/@material-design-icons/svg/outlined/filter_alt_off.js +0 -12
  275. package/dist/vendor/@material-design-icons/svg/outlined/first_page.js +0 -12
  276. package/dist/vendor/@material-design-icons/svg/outlined/info.js +0 -12
  277. package/dist/vendor/@material-design-icons/svg/outlined/keyboard_arrow_down.js +0 -12
  278. package/dist/vendor/@material-design-icons/svg/outlined/last_page.js +0 -12
  279. package/dist/vendor/@material-design-icons/svg/outlined/mail.js +0 -12
  280. package/dist/vendor/@material-design-icons/svg/outlined/more_horiz.js +0 -12
  281. package/dist/vendor/@material-design-icons/svg/outlined/photo_camera.js +0 -12
  282. package/dist/vendor/@material-design-icons/svg/outlined/remove.js +0 -12
  283. package/dist/vendor/@material-design-icons/svg/outlined/restart_alt.js +0 -12
  284. package/dist/vendor/@material-design-icons/svg/outlined/restore.js +0 -12
  285. package/dist/vendor/@material-design-icons/svg/outlined/search.js +0 -12
  286. package/dist/vendor/@material-design-icons/svg/outlined/unfold_more.js +0 -12
  287. package/dist/vendor/@material-design-icons/svg/outlined/upload_file.js +0 -12
  288. package/dist/vendor/@material-design-icons/svg/outlined/visibility.js +0 -12
  289. package/dist/vendor/@material-design-icons/svg/outlined/visibility_off.js +0 -12
  290. package/dist/vendor/@material-design-icons/svg/outlined/warning_amber.js +0 -12
@@ -1,10 +1,12 @@
1
1
  import { Combobox as BaseCombobox } from "@base-ui/react/combobox";
2
2
  import { type ComponentProps, type ReactNode, type Ref } from "react";
3
- import { Field, type FieldState } from "../field/index.ts";
3
+ import { Field, type FieldState, type OptionsLoad, type OptionsLoadLabels } from "../field/index.ts";
4
+ import { type PagedQuery } from "./combobox-items.ts";
4
5
  export type ComboboxRootProps<TItem, TMultiple extends boolean | undefined = false> = Omit<BaseCombobox.Root.Props<TItem, TMultiple>, "autoHighlight"> & Readonly<{
5
6
  /** `"always"` highlights the first item whenever the list changes. @default "always" */
6
7
  autoHighlight?: boolean | "always";
7
8
  }>;
9
+ /** The combobox's state, holding its items and its value. */
8
10
  declare const ComboboxRoot: <TItem, TMultiple extends boolean | undefined = false>({ autoHighlight, ...props }: ComboboxRootProps<TItem, TMultiple>) => ReactNode;
9
11
  export type ComboboxControlProps = BaseCombobox.InputGroup.Props & Readonly<{
10
12
  /** The control element, which the positioner takes as its `anchor`. */
@@ -16,8 +18,13 @@ export type ComboboxControlProps = BaseCombobox.InputGroup.Props & Readonly<{
16
18
  * trigger's own value is read but not shown.
17
19
  */
18
20
  tags?: ReactNode;
21
+ /** The chevron at the end of the control, such as an expand icon. */
22
+ icon?: ReactNode;
19
23
  }>;
20
- declare const ComboboxControl: ({ className, children, tags, state, ...props }: ComboboxControlProps) => ReactNode;
24
+ /** The chevron at the end of the control. Its children are the icon; without them it renders nothing. */
25
+ declare const ComboboxIcon: ({ className, children, ...props }: BaseCombobox.Icon.Props) => ReactNode;
26
+ /** The control that opens the popup: the value or the tags, the pending mark and `icon`. */
27
+ declare const ComboboxControl: ({ className, children, tags, icon, state, ...props }: ComboboxControlProps) => ReactNode;
21
28
  export type ComboboxTagsProps<TItem> = Readonly<{
22
29
  /** Names the group of tags, such as "Selected statuses". */
23
30
  label: string;
@@ -30,6 +37,8 @@ export type ComboboxTagsProps<TItem> = Readonly<{
30
37
  removeLabel: string;
31
38
  /** The remove control's tooltip for an item, such as "Remove Jan Jansen". */
32
39
  removeHint: (item: TItem) => string;
40
+ /** The remove control's icon, such as a cross. */
41
+ removeIcon: ReactNode;
33
42
  /** Renders one tag's content. */
34
43
  children: (item: TItem) => ReactNode;
35
44
  /** Called with the items left after a removal. */
@@ -37,8 +46,11 @@ export type ComboboxTagsProps<TItem> = Readonly<{
37
46
  disabled?: boolean;
38
47
  readOnly?: boolean;
39
48
  }>;
40
- declare const ComboboxTags: <TItem>({ label, items, itemKey, itemLabel, removeLabel, removeHint, children, onRemove, disabled, readOnly, }: ComboboxTagsProps<TItem>) => ReactNode;
49
+ /** The chosen values of a multiple combobox as removable tags, for `Control`'s `tags`. */
50
+ declare const ComboboxTags: <TItem>({ label, items, itemKey, itemLabel, removeLabel, removeHint, removeIcon, children, onRemove, disabled, readOnly, }: ComboboxTagsProps<TItem>) => ReactNode;
51
+ /** Places the popup against the control, given as its `anchor`. */
41
52
  declare const ComboboxPositioner: ({ className, sideOffset, ...props }: BaseCombobox.Positioner.Props) => ReactNode;
53
+ /** The shared popup surface. */
42
54
  declare const ComboboxPopup: ({ className, ...props }: BaseCombobox.Popup.Props) => ReactNode;
43
55
  export type ComboboxSearchProps = Omit<BaseCombobox.Input.Props, "aria-label" | "aria-labelledby"> & Readonly<{
44
56
  /** The search box's accessible name. */
@@ -50,43 +62,105 @@ export type ComboboxSearchProps = Omit<BaseCombobox.Input.Props, "aria-label" |
50
62
  * field's own control.
51
63
  */
52
64
  declare const ComboboxSearch: ({ className, ...props }: ComboboxSearchProps) => ReactNode;
53
- export type ComboboxListProps = BaseCombobox.List.Props & Readonly<{
54
- /** The scroll container, which `useInfiniteScroll` watches. */
55
- ref?: Ref<HTMLDivElement>;
65
+ export type ComboboxListProps = Omit<BaseCombobox.List.Props, "ref"> & Readonly<{
66
+ /** A paged query, whose next page loads as the list nears its end. */
67
+ query?: Pick<PagedQuery<unknown>, "hasNextPage" | "isFetchingNextPage" | "fetchNextPage">;
56
68
  }>;
57
- declare const ComboboxList: ({ className, ...props }: ComboboxListProps) => ReactNode;
58
- export type ComboboxOptionProps = BaseCombobox.Item.Props & Readonly<{
59
- /** Draws a checkbox rather than a tick, for a multi-value list. */
69
+ /** The scrolling list of options, which loads a paged `query`'s next page as it nears its end. */
70
+ declare const ComboboxList: ({ className, query, ...props }: ComboboxListProps) => ReactNode;
71
+ export type ComboboxOptionProps = BaseCombobox.Item.Props;
72
+ /** One option's row, holding its `OptionIndicator` and `OptionText`. */
73
+ declare const ComboboxOption: ({ className, ...props }: ComboboxOptionProps) => ReactNode;
74
+ export type ComboboxOptionIndicatorProps = BaseCombobox.ItemIndicator.Props & Readonly<{
75
+ /** Draws the mark inside a checkbox, for a multi-value list. */
60
76
  multiple?: boolean;
61
77
  }>;
62
- declare const ComboboxOption: ({ className, children, multiple, ...props }: ComboboxOptionProps) => ReactNode;
78
+ /** The mark beside a chosen option. Its children are the mark, such as a tick. */
79
+ declare const ComboboxOptionIndicator: ({ className, multiple, ...props }: ComboboxOptionIndicatorProps) => ReactNode;
80
+ /** An option's content, beside its indicator. */
81
+ declare const ComboboxOptionText: ({ className, ...props }: ComponentProps<"span">) => ReactNode;
82
+ /** What the popup says when no option is listed. */
63
83
  declare const ComboboxEmpty: ({ className, ...props }: BaseCombobox.Empty.Props) => ReactNode;
84
+ /** The popup's polite status line. */
64
85
  declare const ComboboxStatus: ({ className, ...props }: BaseCombobox.Status.Props) => ReactNode;
86
+ /** The row that holds the status and a retry button. */
65
87
  declare const ComboboxStatusArea: ({ className, ...props }: ComponentProps<"div">) => ReactNode;
88
+ /** The copy a combobox's popup shows about its options. */
89
+ export type ComboboxPopupLabels = OptionsLoadLabels & Readonly<{
90
+ /** Shown when the search matches nothing. */
91
+ noResultsLabel: string;
92
+ /** The search box's accessible name, such as "Search". */
93
+ searchLabel: string;
94
+ /** Read while a paged query fetches its next page. */
95
+ loadingMoreLabel: string;
96
+ /** The match count of a paged query, such as "40 results". */
97
+ resultsLabel: (count: number) => string;
98
+ }>;
99
+ /** The copy `LoadStatus` shows. */
100
+ export type ComboboxLoadStatusLabels = Pick<ComboboxPopupLabels, "loadingLabel" | "loadFailedLabel" | "loadBrokenLabel" | "retryLabel" | "loadingMoreLabel" | "resultsLabel">;
101
+ export type ComboboxLoadStatusProps = ComboboxLoadStatusLabels & Readonly<{
102
+ /** How far the items have loaded. */
103
+ load: OptionsLoad;
104
+ /** A paged query, whose match count and next page it reports. */
105
+ query?: Pick<PagedQuery<unknown>, "data" | "isFetchingNextPage">;
106
+ /** Runs a retry, such as to move focus back afterwards. @default retry() */
107
+ onRetry?: (retry: () => void) => void;
108
+ className?: string;
109
+ }>;
110
+ /** The load status of the items, with a retry button where trying again can help. */
111
+ declare const ComboboxLoadStatus: ({ load, query, onRetry, className, ...labels }: ComboboxLoadStatusProps) => ReactNode;
112
+ export type ComboboxBodyProps<TItem> = ComboboxPopupLabels & Readonly<{
113
+ /** How far the items have loaded. */
114
+ load: OptionsLoad;
115
+ /** A paged query, searched on the server and loaded page by page. */
116
+ query?: PagedQuery<TItem>;
117
+ /** There are no items at all, rather than none matching the search. */
118
+ noOptions: boolean;
119
+ /** Draws each option's mark inside a checkbox. */
120
+ multiple?: boolean;
121
+ /** A stable identity per item. */
122
+ itemKey: (item: TItem) => string;
123
+ /** The mark beside a chosen option, such as a tick. */
124
+ checkIcon: ReactNode;
125
+ /** Renders one item's row. */
126
+ children: (item: TItem) => ReactNode;
127
+ }>;
128
+ /**
129
+ * What a combobox's popup holds: the search box, the load status with a retry
130
+ * where one can help, the empty state and the list, which loads the next page
131
+ * of a paged query as it nears its end.
132
+ */
133
+ declare const ComboboxBody: <TItem>({ load, query, noOptions, multiple, itemKey, checkIcon, children, ...labels }: ComboboxBodyProps<TItem>) => ReactNode;
66
134
  /** The parts of a combobox. */
67
- export type ComboboxParts = Omit<typeof BaseCombobox, "Root" | "Positioner" | "Popup" | "Input" | "List" | "Empty" | "Status"> & Readonly<{
135
+ export type ComboboxParts = Omit<typeof BaseCombobox, "Root" | "Icon" | "Positioner" | "Popup" | "Input" | "List" | "Empty" | "Status"> & Readonly<{
68
136
  Root: typeof ComboboxRoot;
69
137
  Control: typeof ComboboxControl;
138
+ Icon: typeof ComboboxIcon;
70
139
  Tags: typeof ComboboxTags;
71
140
  Positioner: typeof ComboboxPositioner;
72
141
  Popup: typeof ComboboxPopup;
73
142
  Search: typeof ComboboxSearch;
74
143
  List: typeof ComboboxList;
75
144
  Option: typeof ComboboxOption;
145
+ OptionIndicator: typeof ComboboxOptionIndicator;
146
+ OptionText: typeof ComboboxOptionText;
76
147
  Empty: typeof ComboboxEmpty;
77
148
  Status: typeof ComboboxStatus;
78
149
  StatusArea: typeof ComboboxStatusArea;
150
+ LoadStatus: typeof ComboboxLoadStatus;
151
+ Body: typeof ComboboxBody;
79
152
  Pending: typeof Field.Pending;
80
153
  }>;
81
154
  /**
82
155
  * The styled parts of a base-ui Combobox: a filterable select whose control
83
156
  * matches `Select`'s trigger and whose popup is the shared popup surface. Every
84
- * unstyled base-ui part stays reachable. For the ordinary case, use
85
- * `ComboboxField`. The positioner takes the control as its `anchor`.
157
+ * unstyled base-ui part stays reachable. `Body` holds what the popup usually
158
+ * does. For the ordinary case, use `ComboboxField`. The positioner takes the
159
+ * control as its `anchor`.
86
160
  *
87
161
  * @example
88
162
  * <Combobox.Root items={statuses}>
89
- * <Combobox.Control ref={anchorRef}>
163
+ * <Combobox.Control ref={anchorRef} icon={<ExpandMoreIcon />}>
90
164
  * <Combobox.Value>{(status: string | null) => status}</Combobox.Value>
91
165
  * </Combobox.Control>
92
166
  * <Combobox.Portal>
@@ -94,7 +168,12 @@ export type ComboboxParts = Omit<typeof BaseCombobox, "Root" | "Positioner" | "P
94
168
  * <Combobox.Popup>
95
169
  * <Combobox.Search aria-label="Search" />
96
170
  * <Combobox.List>
97
- * {(status: string) => <Combobox.Option key={status} value={status}>{status}</Combobox.Option>}
171
+ * {(status: string) => (
172
+ * <Combobox.Option key={status} value={status}>
173
+ * <Combobox.OptionIndicator><CheckIcon /></Combobox.OptionIndicator>
174
+ * <Combobox.OptionText>{status}</Combobox.OptionText>
175
+ * </Combobox.Option>
176
+ * )}
98
177
  * </Combobox.List>
99
178
  * </Combobox.Popup>
100
179
  * </Combobox.Positioner>