@fusion.dev/helix-headless 0.148.0 → 0.149.1

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 (240) hide show
  1. package/custom-elements.json +6966 -1798
  2. package/dist/announcement/root/announcement-root.d.ts +5 -0
  3. package/dist/announcement/root/announcement-root.js +5 -2
  4. package/dist/area-chart/root/area-chart-root.d.ts +11 -0
  5. package/dist/area-chart/root/area-chart-root.js +20 -7
  6. package/dist/avatar/group/avatar-group.d.ts +10 -2
  7. package/dist/avatar/group/avatar-group.js +10 -5
  8. package/dist/badge/count.d.ts +6 -1
  9. package/dist/badge/count.js +3 -3
  10. package/dist/badge/root/badge-root.d.ts +6 -2
  11. package/dist/badge/root/badge-root.js +3 -3
  12. package/dist/bar-chart/root/bar-chart-root.d.ts +13 -1
  13. package/dist/bar-chart/root/bar-chart-root.js +17 -4
  14. package/dist/breadcrumbs/root/breadcrumbs-root.d.ts +8 -1
  15. package/dist/breadcrumbs/root/breadcrumbs-root.js +5 -2
  16. package/dist/button/root/button-root.d.ts +10 -1
  17. package/dist/button/root/button-root.js +3 -2
  18. package/dist/button-group/root/button-group-root.d.ts +3 -0
  19. package/dist/button-group/root/button-group-root.js +2 -2
  20. package/dist/callout/root/callout-root.d.ts +16 -2
  21. package/dist/callout/root/callout-root.js +16 -4
  22. package/dist/canvas/describe.d.ts +10 -0
  23. package/dist/canvas/describe.js +9 -0
  24. package/dist/canvas/neighbor.d.ts +17 -0
  25. package/dist/canvas/neighbor.js +1 -0
  26. package/dist/canvas/node/canvas-node.js +3 -2
  27. package/dist/canvas/root/canvas-root.d.ts +65 -8
  28. package/dist/canvas/root/canvas-root.js +115 -49
  29. package/dist/carousel/root/carousel-root.d.ts +5 -0
  30. package/dist/carousel/root/carousel-root.js +16 -5
  31. package/dist/chat/composer/chat-composer.d.ts +5 -0
  32. package/dist/chat/composer/chat-composer.js +4 -1
  33. package/dist/chat/message/chat-message.d.ts +9 -5
  34. package/dist/chat/message/chat-message.js +8 -4
  35. package/dist/chat/naming.js +2 -2
  36. package/dist/chat/root/chat-root.d.ts +27 -1
  37. package/dist/chat/root/chat-root.js +37 -9
  38. package/dist/checkbox/root/checkbox-root.d.ts +11 -0
  39. package/dist/checkbox/root/checkbox-root.js +8 -2
  40. package/dist/checkbox-group/root/checkbox-group-root.d.ts +11 -0
  41. package/dist/checkbox-group/root/checkbox-group-root.js +11 -3
  42. package/dist/code-block/root/code-block-root.d.ts +12 -2
  43. package/dist/code-block/root/code-block-root.js +12 -2
  44. package/dist/color-input/root/color-input-root.d.ts +13 -0
  45. package/dist/color-input/root/color-input-root.js +18 -5
  46. package/dist/color-picker/root/color-picker-root.d.ts +19 -3
  47. package/dist/color-picker/root/color-picker-root.js +47 -13
  48. package/dist/combobox/root/combobox-root.d.ts +36 -7
  49. package/dist/combobox/root/combobox-root.js +37 -12
  50. package/dist/command/root/command-root.d.ts +15 -6
  51. package/dist/command/root/command-root.js +9 -4
  52. package/dist/copy-button/root/copy-button-root.d.ts +5 -0
  53. package/dist/copy-button/root/copy-button-root.js +7 -2
  54. package/dist/data-table/root/data-table-root.d.ts +171 -29
  55. package/dist/data-table/root/data-table-root.js +268 -118
  56. package/dist/date-input/root/date-input-root.d.ts +32 -9
  57. package/dist/date-input/root/date-input-root.js +66 -44
  58. package/dist/date-picker/root/date-picker-root.d.ts +38 -15
  59. package/dist/date-picker/root/date-picker-root.js +52 -33
  60. package/dist/dialog/root/dialog-root.d.ts +12 -1
  61. package/dist/dialog/root/dialog-root.js +11 -4
  62. package/dist/donut-chart/root/donut-chart-root.d.ts +5 -0
  63. package/dist/donut-chart/root/donut-chart-root.js +8 -5
  64. package/dist/drawer/root/drawer-root.d.ts +12 -1
  65. package/dist/drawer/root/drawer-root.js +9 -2
  66. package/dist/drilldown/root/drilldown-root.d.ts +5 -0
  67. package/dist/drilldown/root/drilldown-root.js +4 -1
  68. package/dist/element-events.generated.js +25 -3
  69. package/dist/file-input/root/file-input-root.d.ts +18 -3
  70. package/dist/file-input/root/file-input-root.js +34 -17
  71. package/dist/filter-input/chip/filter-chip.d.ts +13 -0
  72. package/dist/filter-input/chip/filter-chip.js +6 -1
  73. package/dist/filter-input/menu/filter-menu.d.ts +5 -0
  74. package/dist/filter-input/menu/filter-menu.js +3 -1
  75. package/dist/filter-input/root/filter-input-root.d.ts +20 -3
  76. package/dist/filter-input/root/filter-input-root.js +8 -4
  77. package/dist/format-date/root/format-date-root.d.ts +20 -2
  78. package/dist/format-date/root/format-date-root.js +5 -2
  79. package/dist/graph/root/graph-model.d.ts +11 -0
  80. package/dist/graph/root/graph-model.js +4 -0
  81. package/dist/graph/root/graph-root.d.ts +78 -9
  82. package/dist/graph/root/graph-root.js +124 -27
  83. package/dist/heatmap/root/heatmap-root.d.ts +25 -4
  84. package/dist/heatmap/root/heatmap-root.js +27 -7
  85. package/dist/icon-button/root/icon-button-root.d.ts +5 -0
  86. package/dist/icon-button/root/icon-button-root.js +1 -0
  87. package/dist/input/root/input-root.d.ts +5 -0
  88. package/dist/input/root/input-root.js +4 -1
  89. package/dist/lightbox/root/lightbox-root.d.ts +14 -4
  90. package/dist/lightbox/root/lightbox-root.js +25 -7
  91. package/dist/line-chart/root/line-chart-root.d.ts +5 -0
  92. package/dist/line-chart/root/line-chart-root.js +4 -2
  93. package/dist/list/item/list-item.d.ts +32 -0
  94. package/dist/list/item/list-item.js +34 -7
  95. package/dist/list/root/list-root.d.ts +87 -0
  96. package/dist/list/root/list-root.js +112 -2
  97. package/dist/listbox/reorder/index.d.ts +1 -0
  98. package/dist/listbox/reorder/index.js +4 -0
  99. package/dist/listbox/reorder/listbox-reorder.d.ts +83 -0
  100. package/dist/listbox/reorder/listbox-reorder.js +151 -0
  101. package/dist/listbox/root/listbox-root.d.ts +68 -11
  102. package/dist/listbox/root/listbox-root.js +41 -9
  103. package/dist/loader/root/loader-root.d.ts +5 -0
  104. package/dist/loader/root/loader-root.js +3 -1
  105. package/dist/map/area/map-area.d.ts +5 -0
  106. package/dist/map/area/map-area.js +3 -1
  107. package/dist/map/buildings/map-buildings.d.ts +5 -0
  108. package/dist/map/buildings/map-buildings.js +3 -1
  109. package/dist/map/contours/map-contours.d.ts +5 -0
  110. package/dist/map/contours/map-contours.js +3 -1
  111. package/dist/map/landcover/map-landcover.d.ts +5 -0
  112. package/dist/map/landcover/map-landcover.js +3 -1
  113. package/dist/map/marker/map-marker.d.ts +16 -1
  114. package/dist/map/marker/map-marker.js +13 -5
  115. package/dist/map/points/map-points.d.ts +5 -0
  116. package/dist/map/points/map-points.js +6 -4
  117. package/dist/map/position/map-position.d.ts +5 -0
  118. package/dist/map/position/map-position.js +3 -1
  119. package/dist/map/raster/map-raster.d.ts +5 -0
  120. package/dist/map/raster/map-raster.js +3 -1
  121. package/dist/map/root/map-root.d.ts +33 -14
  122. package/dist/map/root/map-root.js +59 -22
  123. package/dist/map/route/map-route.d.ts +5 -0
  124. package/dist/map/route/map-route.js +3 -1
  125. package/dist/map/terrain/map-terrain.d.ts +5 -0
  126. package/dist/map/terrain/map-terrain.js +3 -1
  127. package/dist/menu/root/menu-root.d.ts +5 -0
  128. package/dist/menu/root/menu-root.js +3 -1
  129. package/dist/meter/root/meter-root.d.ts +16 -3
  130. package/dist/meter/root/meter-root.js +12 -5
  131. package/dist/navigation/root/navigation-root.d.ts +5 -0
  132. package/dist/navigation/root/navigation-root.js +3 -1
  133. package/dist/notifications/notification/notification.d.ts +5 -0
  134. package/dist/notifications/notification/notification.js +3 -1
  135. package/dist/notifications/root/notifications-root.d.ts +8 -0
  136. package/dist/notifications/root/notifications-root.js +10 -2
  137. package/dist/number-input/root/number-input-root.d.ts +21 -8
  138. package/dist/number-input/root/number-input-root.js +26 -11
  139. package/dist/object-inspector/root/object-inspector-root.d.ts +51 -12
  140. package/dist/object-inspector/root/object-inspector-root.js +21 -20
  141. package/dist/outline/root/outline-root.d.ts +5 -0
  142. package/dist/outline/root/outline-root.js +3 -1
  143. package/dist/pagination/root/pagination-root.d.ts +7 -1
  144. package/dist/pagination/root/pagination-root.js +16 -7
  145. package/dist/pagination/size/pagination-size.d.ts +7 -3
  146. package/dist/pagination/size/pagination-size.js +4 -2
  147. package/dist/pagination/summary/pagination-summary.d.ts +8 -6
  148. package/dist/pagination/summary/pagination-summary.js +4 -9
  149. package/dist/pin-input/code.d.ts +6 -6
  150. package/dist/pin-input/code.js +1 -5
  151. package/dist/pin-input/root/pin-input-root.d.ts +9 -3
  152. package/dist/pin-input/root/pin-input-root.js +6 -2
  153. package/dist/popover/root/popover-root.d.ts +12 -2
  154. package/dist/popover/root/popover-root.js +10 -4
  155. package/dist/progress/root/progress-root.d.ts +7 -2
  156. package/dist/progress/root/progress-root.js +5 -2
  157. package/dist/qr-code/name.d.ts +3 -2
  158. package/dist/qr-code/name.js +2 -2
  159. package/dist/qr-code/root/qr-code-root.d.ts +12 -2
  160. package/dist/qr-code/root/qr-code-root.js +9 -2
  161. package/dist/radio/group/radio-group.d.ts +11 -0
  162. package/dist/radio/group/radio-group.js +8 -2
  163. package/dist/rating/root/rating-root.d.ts +12 -1
  164. package/dist/rating/root/rating-root.js +10 -3
  165. package/dist/scatter-chart/root/scatter-chart-root.d.ts +20 -2
  166. package/dist/scatter-chart/root/scatter-chart-root.js +20 -5
  167. package/dist/select/root/select-root.d.ts +11 -0
  168. package/dist/select/root/select-root.js +13 -3
  169. package/dist/skip-link/root/skip-link-root.d.ts +5 -0
  170. package/dist/skip-link/root/skip-link-root.js +3 -1
  171. package/dist/slider/root/slider-root.d.ts +7 -2
  172. package/dist/slider/root/slider-root.js +11 -5
  173. package/dist/sparkline/readings.d.ts +15 -5
  174. package/dist/sparkline/readings.js +3 -3
  175. package/dist/sparkline/root/sparkline-root.d.ts +9 -4
  176. package/dist/sparkline/root/sparkline-root.js +9 -3
  177. package/dist/speed-dial/root/speed-dial-root.d.ts +5 -0
  178. package/dist/speed-dial/root/speed-dial-root.js +4 -1
  179. package/dist/splitter/root/splitter-root.d.ts +6 -1
  180. package/dist/splitter/root/splitter-root.js +9 -4
  181. package/dist/steps/root/steps-root.d.ts +9 -2
  182. package/dist/steps/root/steps-root.js +6 -3
  183. package/dist/steps/step/step.d.ts +12 -0
  184. package/dist/steps/step/step.js +11 -2
  185. package/dist/switch/root/switch-root.d.ts +11 -0
  186. package/dist/switch/root/switch-root.js +8 -2
  187. package/dist/table/column/table-column.d.ts +11 -4
  188. package/dist/table/column/table-column.js +15 -10
  189. package/dist/table/grid-controller.d.ts +8 -3
  190. package/dist/table/grid-controller.js +17 -11
  191. package/dist/table/root/table-root.d.ts +107 -5
  192. package/dist/table/root/table-root.js +122 -20
  193. package/dist/table/row/table-row.d.ts +42 -0
  194. package/dist/table/row/table-row.js +40 -1
  195. package/dist/tabs/root/tabs-root.d.ts +5 -0
  196. package/dist/tabs/root/tabs-root.js +3 -1
  197. package/dist/tag/group/tag-group.d.ts +5 -0
  198. package/dist/tag/group/tag-group.js +3 -1
  199. package/dist/tag/root/tag-root.d.ts +14 -1
  200. package/dist/tag/root/tag-root.js +11 -8
  201. package/dist/textarea/root/textarea-root.d.ts +5 -0
  202. package/dist/textarea/root/textarea-root.js +3 -1
  203. package/dist/time-input/root/time-input-root.d.ts +14 -7
  204. package/dist/time-input/root/time-input-root.js +43 -32
  205. package/dist/time-picker/root/time-picker-root.d.ts +15 -7
  206. package/dist/time-picker/root/time-picker-root.js +25 -12
  207. package/dist/toast/item/toast-item.d.ts +7 -0
  208. package/dist/toast/item/toast-item.js +1 -0
  209. package/dist/toast/root/toast-root.d.ts +9 -1
  210. package/dist/toast/root/toast-root.js +5 -4
  211. package/dist/toolbar/root/toolbar-root.d.ts +5 -0
  212. package/dist/toolbar/root/toolbar-root.js +5 -2
  213. package/dist/tooltip/root/tooltip-root.d.ts +27 -17
  214. package/dist/tour/root/tour-root.d.ts +8 -2
  215. package/dist/tour/root/tour-root.js +4 -2
  216. package/dist/tour/stop/tour-stop.d.ts +5 -0
  217. package/dist/tour/stop/tour-stop.js +6 -1
  218. package/dist/tree/grip.d.ts +5 -0
  219. package/dist/tree/grip.js +1 -0
  220. package/dist/tree/item/tree-item.d.ts +24 -0
  221. package/dist/tree/item/tree-item.js +27 -5
  222. package/dist/tree/root/tree-root.d.ts +66 -1
  223. package/dist/tree/root/tree-root.js +77 -5
  224. package/dist/trend/root/trend-root.d.ts +20 -4
  225. package/dist/trend/root/trend-root.js +20 -5
  226. package/dist/video/root/video-root.d.ts +12 -3
  227. package/dist/video/root/video-root.js +41 -14
  228. package/dist/video-playlist/menu/video-playlist-menu.d.ts +5 -0
  229. package/dist/video-playlist/menu/video-playlist-menu.js +3 -1
  230. package/dist/video-playlist/root/video-playlist-root.d.ts +5 -0
  231. package/dist/video-playlist/root/video-playlist-root.js +3 -1
  232. package/dist/virtual-list/root/virtual-list-root.d.ts +19 -3
  233. package/dist/virtual-list/root/virtual-list-root.js +5 -2
  234. package/lint.json +1 -1
  235. package/package.json +9 -8
  236. package/types/jsx.d.ts +4014 -1862
  237. package/types/vue.d.ts +1266 -624
  238. package/types/words.d.ts +3280 -0
  239. package/dist/toast/hotkey.d.ts +0 -22
  240. package/dist/toast/hotkey.js +0 -23
@@ -4,7 +4,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
- import { AriaForwardController, afterLinkFollowed, countLabel, customElement, DelayController, drawAutofill, drawStatus, fillTemplate, HelixCreateEvent, HelixFilterEvent, HelixFormElement, MixinControllerOpen, MixinControllerValue, MixinField, MixinTokens, onApple, PopoverController, reportValues, StatusController, submitImplicitly, } from '@fusion.dev/helix-core';
7
+ import { AriaForwardController, afterLinkFollowed, countLabel, customElement, DelayController, drawAutofill, drawStatus, formatWords, HelixCreateEvent, HelixFilterEvent, HelixFormElement, handedLocale, MixinControllerOpen, MixinControllerValue, MixinField, MixinTokens, onApple, PopoverController, reportValues, StatusController, submitImplicitly, words, wordsLocale, } from '@fusion.dev/helix-core';
8
8
  import { caretDown } from '@fusion.dev/helix-icons';
9
9
  import { nothing } from 'lit';
10
10
  import { property, state } from 'lit/decorators.js';
@@ -26,22 +26,23 @@ let HelixHeadlessCombobox = class HelixHeadlessCombobox extends MixinControllerO
26
26
  this.allowsCustomValue = false;
27
27
  this.autocomplete = 'off';
28
28
  this.creatable = false;
29
- this.createLabel = 'Add';
29
+ this.createLabel = 'Add "{value}"';
30
30
  this.emptyText = 'No matches';
31
31
  this.filterDelay = 0;
32
32
  this.listLabel = 'Options';
33
33
  this.loadError = '';
34
34
  this.loading = false;
35
35
  this.loadingText = 'Loading';
36
+ this.locale = '';
36
37
  this.multiple = false;
37
38
  this.openOn = 'input';
38
39
  this.placeholder = '';
39
40
  this.readOnly = false;
40
41
  this.removeLabel = 'Remove {name}';
41
- this.resultLabel = '{count} result';
42
- this.resultsLabel = '{count} results';
42
+ this.resultsLabel = '{count, plural, one {# result} other {# results}}';
43
43
  this.selectedLabel = '{name}, selected';
44
44
  this.suggest = false;
45
+ this.valueMissingMessage = 'Choose one to continue.';
45
46
  this.typed = '';
46
47
  this.suggestion = '';
47
48
  this.editing = false;
@@ -178,7 +179,7 @@ let HelixHeadlessCombobox = class HelixHeadlessCombobox extends MixinControllerO
178
179
  }
179
180
  const chosen = this.listbox?.options.find((option) => option.value === value);
180
181
  if (chosen && onApple()) {
181
- this.status.say(fillTemplate(this.selectedLabel, { name: chosen.text }));
182
+ this.status.say(formatWords(this, 'selectedLabel', { name: chosen.text }));
182
183
  }
183
184
  this.emptied = false;
184
185
  this.typed = '';
@@ -212,6 +213,7 @@ let HelixHeadlessCombobox = class HelixHeadlessCombobox extends MixinControllerO
212
213
  afterLinkFollowed(event, () => this.requestOpen(false));
213
214
  };
214
215
  }
216
+ static { this.words = 'helix-combobox'; }
215
217
  requestValue(next) {
216
218
  if (this.readOnly) {
217
219
  return false;
@@ -419,20 +421,25 @@ let HelixHeadlessCombobox = class HelixHeadlessCombobox extends MixinControllerO
419
421
  return;
420
422
  }
421
423
  if (this.told === undefined) {
422
- this.counted = countLabel(this.reachable.length, this.resultLabel, this.resultsLabel, this.lang);
424
+ this.counted = this.countSaid(this.reachable.length);
423
425
  }
424
426
  this.told = active ?? null;
425
427
  const option = active;
426
428
  const words = option?.text === undefined
427
429
  ? (active?.textContent?.trim() ?? '')
428
430
  : option.selected
429
- ? fillTemplate(this.selectedLabel, { name: option.text })
431
+ ? formatWords(this, 'selectedLabel', { name: option.text })
430
432
  : option.text;
431
433
  this.status.say([this.counted, words].filter(Boolean).join('. '));
432
434
  if (active) {
433
435
  this.counted = '';
434
436
  }
435
437
  }
438
+ countSaid(count) {
439
+ return this.resultLabel
440
+ ? countLabel(count, this.resultLabel, this.resultsLabel, wordsLocale(this))
441
+ : formatWords(this, 'resultsLabel', { count });
442
+ }
436
443
  removeLastToken() {
437
444
  const last = this.values.at(-1);
438
445
  if (last !== undefined) {
@@ -446,7 +453,7 @@ let HelixHeadlessCombobox = class HelixHeadlessCombobox extends MixinControllerO
446
453
  else {
447
454
  this.internals.setFormValue(this.value === '' ? null : this.value);
448
455
  }
449
- this.reportRequired(this.value === '', 'Choose one to continue.', 'control');
456
+ this.reportRequired(this.value === '', this.valueMissingMessage, 'control');
450
457
  }
451
458
  connectedCallback() {
452
459
  super.connectedCallback();
@@ -537,7 +544,8 @@ let HelixHeadlessCombobox = class HelixHeadlessCombobox extends MixinControllerO
537
544
  load-error=${this.loadError}
538
545
  loading-text=${this.loadingText}
539
546
  no-results-text=${this.noResultsText ?? nothing}
540
- result-label=${this.resultLabel}
547
+ lang=${handedLocale(this) || nothing}
548
+ result-label=${this.resultLabel ?? ''}
541
549
  results-label=${this.resultsLabel}
542
550
  ?loading=${this.loading}
543
551
  ?multiple=${this.multiple}
@@ -564,7 +572,7 @@ let HelixHeadlessCombobox = class HelixHeadlessCombobox extends MixinControllerO
564
572
  part="tag"
565
573
  exportparts="cell: tag-cell, dismiss: tag-dismiss, dismiss-mark: tag-dismiss-mark, label: tag-label, link: tag-link, start: tag-start"
566
574
  data-value=${option.value}
567
- dismiss-label=${fillTemplate(this.removeLabel, { name: option.text })}
575
+ dismiss-label=${formatWords(this, 'removeLabel', { name: option.text })}
568
576
  ?dismissible=${!this.isDisabled && !this.readOnly}
569
577
  @helix-dismiss=${this.handleDismiss}
570
578
  >${option.text}</${this.tag('tag')}
@@ -581,12 +589,15 @@ let HelixHeadlessCombobox = class HelixHeadlessCombobox extends MixinControllerO
581
589
  if (this.creation === '') {
582
590
  return nothing;
583
591
  }
592
+ const words = this.createLabel.includes('{value}')
593
+ ? formatWords(this, 'createLabel', { value: this.creation })
594
+ : html `${this.createLabel} "${this.creation}"`;
584
595
  return this.onCreate
585
596
  ? html `<button part="create create-active" id="create" type="button" @click=${() => this.create()}>
586
- ${this.createLabel} "${this.creation}"
597
+ ${words}
587
598
  </button>`
588
599
  : html `<button part="create" id="create" type="button" @click=${() => this.create()}>
589
- ${this.createLabel} "${this.creation}"
600
+ ${words}
590
601
  </button>`;
591
602
  }
592
603
  render() {
@@ -648,15 +659,18 @@ __decorate([
648
659
  property({ type: Boolean })
649
660
  ], HelixHeadlessCombobox.prototype, "creatable", void 0);
650
661
  __decorate([
662
+ words,
651
663
  property({ attribute: 'create-label' })
652
664
  ], HelixHeadlessCombobox.prototype, "createLabel", void 0);
653
665
  __decorate([
666
+ words,
654
667
  property({ attribute: 'empty-text' })
655
668
  ], HelixHeadlessCombobox.prototype, "emptyText", void 0);
656
669
  __decorate([
657
670
  property({ attribute: 'filter-delay', type: Number })
658
671
  ], HelixHeadlessCombobox.prototype, "filterDelay", void 0);
659
672
  __decorate([
673
+ words,
660
674
  property({ attribute: 'list-label' })
661
675
  ], HelixHeadlessCombobox.prototype, "listLabel", void 0);
662
676
  __decorate([
@@ -666,8 +680,12 @@ __decorate([
666
680
  property({ reflect: true, type: Boolean })
667
681
  ], HelixHeadlessCombobox.prototype, "loading", void 0);
668
682
  __decorate([
683
+ words,
669
684
  property({ attribute: 'loading-text' })
670
685
  ], HelixHeadlessCombobox.prototype, "loadingText", void 0);
686
+ __decorate([
687
+ property()
688
+ ], HelixHeadlessCombobox.prototype, "locale", void 0);
671
689
  __decorate([
672
690
  property({ type: Boolean })
673
691
  ], HelixHeadlessCombobox.prototype, "multiple", void 0);
@@ -684,20 +702,27 @@ __decorate([
684
702
  property({ attribute: 'readonly', reflect: true, type: Boolean })
685
703
  ], HelixHeadlessCombobox.prototype, "readOnly", void 0);
686
704
  __decorate([
705
+ words,
687
706
  property({ attribute: 'remove-label' })
688
707
  ], HelixHeadlessCombobox.prototype, "removeLabel", void 0);
689
708
  __decorate([
690
709
  property({ attribute: 'result-label' })
691
710
  ], HelixHeadlessCombobox.prototype, "resultLabel", void 0);
692
711
  __decorate([
712
+ words,
693
713
  property({ attribute: 'results-label' })
694
714
  ], HelixHeadlessCombobox.prototype, "resultsLabel", void 0);
695
715
  __decorate([
716
+ words,
696
717
  property({ attribute: 'selected-label' })
697
718
  ], HelixHeadlessCombobox.prototype, "selectedLabel", void 0);
698
719
  __decorate([
699
720
  property({ type: Boolean })
700
721
  ], HelixHeadlessCombobox.prototype, "suggest", void 0);
722
+ __decorate([
723
+ words,
724
+ property({ attribute: 'value-missing-message' })
725
+ ], HelixHeadlessCombobox.prototype, "valueMissingMessage", void 0);
701
726
  __decorate([
702
727
  state()
703
728
  ], HelixHeadlessCombobox.prototype, "typed", void 0);
@@ -70,6 +70,11 @@ declare const HelixHeadlessCommand_base: (new (...args: any[]) => import("@fusio
70
70
  * @cssstate open - While the palette is open.
71
71
  */
72
72
  export declare class HelixHeadlessCommand extends HelixHeadlessCommand_base {
73
+ /**
74
+ * The key this family's words are registered under, its styled tag:
75
+ * `registerWords('de', { 'helix-command': { placeholder: 'Befehle suchen' } })`.
76
+ */
77
+ static words: string;
73
78
  /**
74
79
  * The text shown when the filter matches no commands.
75
80
  */
@@ -122,14 +127,18 @@ export declare class HelixHeadlessCommand extends HelixHeadlessCommand_base {
122
127
  */
123
128
  placeholder: string;
124
129
  /**
125
- * What a screen reader hears when typing leaves one command. `{count}` is
126
- * the count.
130
+ * What a screen reader hears when typing leaves one command, where
131
+ * `results-label` should not say it. `{count}` is the count.
132
+ *
133
+ * @deprecated Write every form in `results-label`, as `{count, plural, one
134
+ * {# command} other {# commands}}`. Removed in the next major version.
127
135
  */
128
- resultLabel: string;
136
+ resultLabel?: string;
129
137
  /**
130
- * What a screen reader hears when typing leaves any other number of
131
- * commands. `{count}` is the count, and `Intl.PluralRules` picks between the
132
- * two.
138
+ * What a screen reader hears when typing narrows the commands. `{count}` is
139
+ * how many are left, written in the locale, and each language writes the
140
+ * forms it has: `{count, plural, one {# polecenie} few {# polecenia} many
141
+ * {# poleceń} other {# polecenia}}`.
133
142
  */
134
143
  resultsLabel: string;
135
144
  /**
@@ -4,7 +4,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
- import { customElement, HelixElement, HelixSelectEvent, MixinControllerOpen, matchesChord, } from '@fusion.dev/helix-core';
7
+ import { customElement, HelixElement, HelixSelectEvent, MixinControllerOpen, matchesChord, words, } from '@fusion.dev/helix-core';
8
8
  import { nothing } from 'lit';
9
9
  import { property, state } from 'lit/decorators.js';
10
10
  import { html } from 'lit/static-html.js';
@@ -21,8 +21,7 @@ let HelixHeadlessCommand = class HelixHeadlessCommand extends MixinControllerOpe
21
21
  this.loading = false;
22
22
  this.loadingText = 'Loading';
23
23
  this.placeholder = 'Search commands';
24
- this.resultLabel = '{count} command';
25
- this.resultsLabel = '{count} commands';
24
+ this.resultsLabel = '{count, plural, one {# command} other {# commands}}';
26
25
  this.footed = false;
27
26
  this.handleHotkey = (event) => {
28
27
  if (!matchesChord(event, this.hotkey, true) && !matchesChord(event, this.hotkey, false)) {
@@ -76,6 +75,7 @@ let HelixHeadlessCommand = class HelixHeadlessCommand extends MixinControllerOpe
76
75
  this.requestOpen(false);
77
76
  };
78
77
  }
78
+ static { this.words = 'helix-command'; }
79
79
  get listbox() {
80
80
  return this.partNamed('listbox');
81
81
  }
@@ -146,7 +146,7 @@ let HelixHeadlessCommand = class HelixHeadlessCommand extends MixinControllerOpe
146
146
  load-error=${this.loadError}
147
147
  loading-text=${this.loadingText}
148
148
  no-results-text=${this.noResultsText ?? nothing}
149
- result-label=${this.resultLabel}
149
+ result-label=${this.resultLabel ?? ''}
150
150
  results-label=${this.resultsLabel}
151
151
  ?loading=${this.loading}
152
152
  filterable
@@ -183,6 +183,7 @@ let HelixHeadlessCommand = class HelixHeadlessCommand extends MixinControllerOpe
183
183
  }
184
184
  };
185
185
  __decorate([
186
+ words,
186
187
  property({ attribute: 'empty-text' })
187
188
  ], HelixHeadlessCommand.prototype, "emptyText", void 0);
188
189
  __decorate([
@@ -192,6 +193,7 @@ __decorate([
192
193
  property()
193
194
  ], HelixHeadlessCommand.prototype, "hotkey", void 0);
194
195
  __decorate([
196
+ words,
195
197
  property()
196
198
  ], HelixHeadlessCommand.prototype, "label", void 0);
197
199
  __decorate([
@@ -201,18 +203,21 @@ __decorate([
201
203
  property({ reflect: true, type: Boolean })
202
204
  ], HelixHeadlessCommand.prototype, "loading", void 0);
203
205
  __decorate([
206
+ words,
204
207
  property({ attribute: 'loading-text' })
205
208
  ], HelixHeadlessCommand.prototype, "loadingText", void 0);
206
209
  __decorate([
207
210
  property({ attribute: 'no-results-text' })
208
211
  ], HelixHeadlessCommand.prototype, "noResultsText", void 0);
209
212
  __decorate([
213
+ words,
210
214
  property()
211
215
  ], HelixHeadlessCommand.prototype, "placeholder", void 0);
212
216
  __decorate([
213
217
  property({ attribute: 'result-label' })
214
218
  ], HelixHeadlessCommand.prototype, "resultLabel", void 0);
215
219
  __decorate([
220
+ words,
216
221
  property({ attribute: 'results-label' })
217
222
  ], HelixHeadlessCommand.prototype, "resultsLabel", void 0);
218
223
  __decorate([
@@ -68,6 +68,11 @@ import '../../tooltip/index.js';
68
68
  * @withheld slot start - Button's, which this does not render.
69
69
  */
70
70
  export declare class HelixHeadlessCopyButton extends HelixHeadlessIconButton {
71
+ /**
72
+ * The key this family's words are registered under, its styled tag:
73
+ * `registerWords('de', { 'helix-copy-button': { copiedLabel: 'Kopiert' } })`.
74
+ */
75
+ static words: string;
71
76
  /**
72
77
  * The button's name and tooltip text after a copy.
73
78
  *
@@ -5,7 +5,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
7
  var HelixHeadlessCopyButton_1;
8
- import { CopyController, customElement, HelixCopyErrorEvent } from '@fusion.dev/helix-core';
8
+ import { CopyController, customElement, HelixCopyErrorEvent, words } from '@fusion.dev/helix-core';
9
9
  import { check, copy, x } from '@fusion.dev/helix-icons';
10
10
  import { nothing } from 'lit';
11
11
  import { property } from 'lit/decorators.js';
@@ -14,7 +14,7 @@ import { html } from 'lit/static-html.js';
14
14
  import { HelixHeadlessIconButton } from '../../icon-button/root/icon-button-root.js';
15
15
  import { readFrom } from '../from.js';
16
16
  import '../../tooltip/index.js';
17
- let HelixHeadlessCopyButton = HelixHeadlessCopyButton_1 = class HelixHeadlessCopyButton extends HelixHeadlessIconButton {
17
+ let HelixHeadlessCopyButton = class HelixHeadlessCopyButton extends HelixHeadlessIconButton {
18
18
  constructor() {
19
19
  super(...arguments);
20
20
  this.copiedLabel = 'Copied';
@@ -42,6 +42,8 @@ let HelixHeadlessCopyButton = HelixHeadlessCopyButton_1 = class HelixHeadlessCop
42
42
  }
43
43
  };
44
44
  }
45
+ static { HelixHeadlessCopyButton_1 = this; }
46
+ static { this.words = 'helix-copy-button'; }
45
47
  get says() {
46
48
  if (this.failed) {
47
49
  return this.errorLabel;
@@ -117,9 +119,11 @@ let HelixHeadlessCopyButton = HelixHeadlessCopyButton_1 = class HelixHeadlessCop
117
119
  }
118
120
  };
119
121
  __decorate([
122
+ words,
120
123
  property({ attribute: 'copied-label' })
121
124
  ], HelixHeadlessCopyButton.prototype, "copiedLabel", void 0);
122
125
  __decorate([
126
+ words,
123
127
  property({ attribute: 'error-label' })
124
128
  ], HelixHeadlessCopyButton.prototype, "errorLabel", void 0);
125
129
  __decorate([
@@ -129,6 +133,7 @@ __decorate([
129
133
  property()
130
134
  ], HelixHeadlessCopyButton.prototype, "from", void 0);
131
135
  __decorate([
136
+ words,
132
137
  property()
133
138
  ], HelixHeadlessCopyButton.prototype, "label", void 0);
134
139
  __decorate([