@pine-ds/core 3.27.0 → 3.28.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 (79) hide show
  1. package/components/i18n-format.js +1 -0
  2. package/components/pds-alert.js +1 -1
  3. package/components/pds-avatar.js +1 -1
  4. package/components/pds-chip2.js +1 -1
  5. package/components/pds-multiselect.js +1 -1
  6. package/components/pds-textarea.js +1 -1
  7. package/components/pds-toast.js +1 -1
  8. package/dist/cjs/i18n-format-CrpIhahc.js +64 -0
  9. package/dist/cjs/loader.cjs.js +1 -1
  10. package/dist/cjs/pds-alert.cjs.entry.js +7 -1
  11. package/dist/cjs/pds-avatar.cjs.entry.js +8 -2
  12. package/dist/cjs/pds-chip.cjs.entry.js +8 -3
  13. package/dist/cjs/pds-multiselect.cjs.entry.js +91 -12
  14. package/dist/cjs/pds-textarea.cjs.entry.js +12 -5
  15. package/dist/cjs/pds-toast.cjs.entry.js +9 -3
  16. package/dist/cjs/pine-core.cjs.js +1 -1
  17. package/dist/collection/components/pds-alert/pds-alert.js +30 -1
  18. package/dist/collection/components/pds-avatar/pds-avatar.js +31 -2
  19. package/dist/collection/components/pds-chip/pds-chip.js +31 -3
  20. package/dist/collection/components/pds-multiselect/pds-multiselect.js +358 -17
  21. package/dist/collection/components/pds-textarea/pds-textarea.js +35 -5
  22. package/dist/collection/components/pds-toast/pds-toast.js +32 -3
  23. package/dist/collection/i18n/i18n-format.js +59 -0
  24. package/dist/collection/i18n/index.js +1 -0
  25. package/dist/docs.json +505 -6
  26. package/dist/esm/i18n-format-BKsJZTyn.js +61 -0
  27. package/dist/esm/loader.js +1 -1
  28. package/dist/esm/pds-alert.entry.js +7 -1
  29. package/dist/esm/pds-avatar.entry.js +8 -2
  30. package/dist/esm/pds-chip.entry.js +8 -3
  31. package/dist/esm/pds-multiselect.entry.js +91 -12
  32. package/dist/esm/pds-textarea.entry.js +12 -5
  33. package/dist/esm/pds-toast.entry.js +9 -3
  34. package/dist/esm/pine-core.js +1 -1
  35. package/dist/esm-es5/i18n-format-BKsJZTyn.js +1 -0
  36. package/dist/esm-es5/loader.js +1 -1
  37. package/dist/esm-es5/pds-alert.entry.js +1 -1
  38. package/dist/esm-es5/pds-avatar.entry.js +1 -1
  39. package/dist/esm-es5/pds-chip.entry.js +1 -1
  40. package/dist/esm-es5/pds-multiselect.entry.js +1 -1
  41. package/dist/esm-es5/pds-textarea.entry.js +1 -1
  42. package/dist/esm-es5/pds-toast.entry.js +1 -1
  43. package/dist/esm-es5/pine-core.js +1 -1
  44. package/dist/pine-core/p-041243ee.system.entry.js +1 -0
  45. package/dist/pine-core/{p-7b71f1bf.system.entry.js → p-1f4910b0.system.entry.js} +1 -1
  46. package/dist/pine-core/p-25f8690f.entry.js +1 -0
  47. package/dist/pine-core/p-2af1d1d3.system.entry.js +1 -0
  48. package/dist/pine-core/p-2cc1ec4c.entry.js +1 -0
  49. package/dist/pine-core/{p-1e1804ed.system.entry.js → p-5f36fafa.system.entry.js} +1 -1
  50. package/dist/pine-core/p-621fdce1.entry.js +1 -0
  51. package/dist/pine-core/{p-b0b6acdb.system.entry.js → p-8a00e32b.system.entry.js} +1 -1
  52. package/dist/pine-core/p-BKsJZTyn.js +1 -0
  53. package/dist/pine-core/p-C61CFP22.system.js +1 -1
  54. package/dist/pine-core/p-Cr7-rJtJ.system.js +1 -0
  55. package/dist/pine-core/p-af48e6ae.entry.js +1 -0
  56. package/dist/pine-core/{p-cce6dcf0.system.entry.js → p-c7c17fe3.system.entry.js} +1 -1
  57. package/dist/pine-core/p-e48161a5.entry.js +1 -0
  58. package/dist/pine-core/p-fda3f3c6.entry.js +1 -0
  59. package/dist/pine-core/pine-core.esm.js +1 -1
  60. package/dist/types/components/pds-alert/pds-alert.d.ts +6 -0
  61. package/dist/types/components/pds-avatar/pds-avatar.d.ts +6 -0
  62. package/dist/types/components/pds-chip/pds-chip.d.ts +5 -0
  63. package/dist/types/components/pds-multiselect/pds-multiselect.d.ts +67 -4
  64. package/dist/types/components/pds-textarea/pds-textarea.d.ts +6 -0
  65. package/dist/types/components/pds-toast/pds-toast.d.ts +6 -0
  66. package/dist/types/components.d.ts +187 -9
  67. package/dist/types/i18n/i18n-format.d.ts +38 -0
  68. package/dist/types/i18n/index.d.ts +2 -0
  69. package/hydrate/index.js +211 -28
  70. package/hydrate/index.mjs +211 -28
  71. package/package.json +3 -2
  72. package/dist/pine-core/p-190ba1df.entry.js +0 -1
  73. package/dist/pine-core/p-638e9cb3.entry.js +0 -1
  74. package/dist/pine-core/p-68121613.system.entry.js +0 -1
  75. package/dist/pine-core/p-829c52dc.entry.js +0 -1
  76. package/dist/pine-core/p-a739bdfa.entry.js +0 -1
  77. package/dist/pine-core/p-b88be8be.entry.js +0 -1
  78. package/dist/pine-core/p-f2315f2a.entry.js +0 -1
  79. package/dist/pine-core/p-f928817f.system.entry.js +0 -1
@@ -0,0 +1,59 @@
1
+ /**
2
+ * i18n formatting helpers for Pine components.
3
+ *
4
+ * Pine stays string-agnostic: user-facing text is supplied by the consumer as
5
+ * props (English-defaulted). These helpers only handle the two things a prop
6
+ * value can't express on its own — interpolating live component state into a
7
+ * translated template, and picking the right plural form. No stored strings, no
8
+ * locale registry; the locale is read from the DOM (`lang`), the web-standard
9
+ * signal a consumer already sets.
10
+ *
11
+ * Two limitations of DOM-`lang` locale resolution, both inherent to inferring
12
+ * locale from the DOM rather than being told it:
13
+ *
14
+ * 1. Not reactive. `resolveLocale` is read during render; Stencil has no
15
+ * reactive dependency on a DOM attribute, so changing `lang` at runtime
16
+ * (`document.documentElement.lang = 'pl'`) does NOT re-render mounted
17
+ * components — the plural form stays stale until unrelated state forces a
18
+ * render. Fine when locale changes via full-page navigation; a consumer that
19
+ * switches locale client-side should pass the already-formatted/pluralized
20
+ * string as the prop instead.
21
+ * 2. Does not cross shadow boundaries. `el.closest('[lang]')` stops at the host's
22
+ * shadow root. A Pine component nested inside another custom element whose
23
+ * `lang` sits on that outer host will not see it and falls back to
24
+ * `document.documentElement.lang`. Set `lang` on (or above) the Pine element
25
+ * in the same tree, or pass a pre-formatted string, when that matters.
26
+ */
27
+ /** Replace `{token}` placeholders with `vars`; unknown tokens stay literal. */
28
+ export function formatMessage(template, vars) {
29
+ if (!vars)
30
+ return template;
31
+ return template.replace(/\{(\w+)\}/g, (_match, key) => key in vars ? String(vars[key]) : `{${key}}`);
32
+ }
33
+ /** Nearest `[lang]` ancestor, then `<html lang>`, then `'en'`. */
34
+ export function resolveLocale(el) {
35
+ var _a;
36
+ const fromEl = el && typeof el.closest === 'function' ? (_a = el.closest('[lang]')) === null || _a === void 0 ? void 0 : _a.getAttribute('lang') : null;
37
+ const fromDoc = typeof document !== 'undefined' ? document.documentElement.lang : '';
38
+ return fromEl || fromDoc || 'en';
39
+ }
40
+ /**
41
+ * Pick the CLDR plural form for `count` in the element's locale (via the
42
+ * platform `Intl.PluralRules`) and interpolate `{count}`. `forms` come from the
43
+ * caller — component props, English-defaulted — and fall back to `other`.
44
+ */
45
+ export function pluralize(el, count, forms, vars) {
46
+ let category = 'other';
47
+ try {
48
+ category = new Intl.PluralRules(resolveLocale(el)).select(count);
49
+ }
50
+ catch (_a) {
51
+ /* invalid locale tag → fall back to 'other' */
52
+ }
53
+ // Prefer the selected category, then the required `other`, then `one`; never
54
+ // return empty. `||` (not `??`) so an empty-string form is skipped too, not
55
+ // treated as present — a bare `{count}` still shows the number rather than
56
+ // leaving the trigger with no accessible name.
57
+ const template = forms[category] || forms.other || forms.one || '{count}';
58
+ return formatMessage(template, Object.assign({ count }, vars));
59
+ }
@@ -0,0 +1 @@
1
+ export { formatMessage, pluralize, resolveLocale } from './i18n-format';
package/dist/docs.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "timestamp": "2026-07-20T19:37:05",
2
+ "timestamp": "2026-08-07T01:13:40",
3
3
  "compiler": {
4
4
  "name": "@stencil/core",
5
5
  "version": "4.43.5",
@@ -455,6 +455,35 @@
455
455
  "getter": false,
456
456
  "setter": false
457
457
  },
458
+ {
459
+ "name": "dismissLabel",
460
+ "type": "string",
461
+ "complexType": {
462
+ "original": "string",
463
+ "resolved": "string",
464
+ "references": {}
465
+ },
466
+ "mutable": false,
467
+ "attr": "dismiss-label",
468
+ "reflectToAttr": false,
469
+ "docs": "Accessible label for the dismiss button. Pass a translated string to\nlocalize it; defaults to English.",
470
+ "docsTags": [
471
+ {
472
+ "name": "defaultValue",
473
+ "text": "'Dismiss alert'"
474
+ }
475
+ ],
476
+ "default": "'Dismiss alert'",
477
+ "values": [
478
+ {
479
+ "type": "string"
480
+ }
481
+ ],
482
+ "optional": false,
483
+ "required": false,
484
+ "getter": false,
485
+ "setter": false
486
+ },
458
487
  {
459
488
  "name": "dismissible",
460
489
  "type": "boolean",
@@ -877,6 +906,35 @@
877
906
  "getter": false,
878
907
  "setter": false
879
908
  },
909
+ {
910
+ "name": "triggerLabel",
911
+ "type": "string",
912
+ "complexType": {
913
+ "original": "string",
914
+ "resolved": "string",
915
+ "references": {}
916
+ },
917
+ "mutable": false,
918
+ "attr": "trigger-label",
919
+ "reflectToAttr": false,
920
+ "docs": "Accessible label for the dropdown trigger button. Pass a translated string\nto localize it; defaults to English.",
921
+ "docsTags": [
922
+ {
923
+ "name": "defaultValue",
924
+ "text": "'Avatar dropdown trigger'"
925
+ }
926
+ ],
927
+ "default": "'Avatar dropdown trigger'",
928
+ "values": [
929
+ {
930
+ "type": "string"
931
+ }
932
+ ],
933
+ "optional": false,
934
+ "required": false,
935
+ "getter": false,
936
+ "setter": false
937
+ },
880
938
  {
881
939
  "name": "variant",
882
940
  "type": "\"admin\" | \"customer\"",
@@ -12661,6 +12719,35 @@
12661
12719
  "getter": false,
12662
12720
  "setter": false
12663
12721
  },
12722
+ {
12723
+ "name": "dismissLabel",
12724
+ "type": "string",
12725
+ "complexType": {
12726
+ "original": "string",
12727
+ "resolved": "string",
12728
+ "references": {}
12729
+ },
12730
+ "mutable": false,
12731
+ "attr": "dismiss-label",
12732
+ "reflectToAttr": false,
12733
+ "docs": "Accessible label for the remove button. Pass a translated string to localize it; defaults to English.",
12734
+ "docsTags": [
12735
+ {
12736
+ "name": "defaultValue",
12737
+ "text": "'Remove'"
12738
+ }
12739
+ ],
12740
+ "default": "'Remove'",
12741
+ "values": [
12742
+ {
12743
+ "type": "string"
12744
+ }
12745
+ ],
12746
+ "optional": false,
12747
+ "required": false,
12748
+ "getter": false,
12749
+ "setter": false
12750
+ },
12664
12751
  {
12665
12752
  "name": "dot",
12666
12753
  "type": "boolean",
@@ -17605,6 +17692,64 @@
17605
17692
  "getter": false,
17606
17693
  "setter": false
17607
17694
  },
17695
+ {
17696
+ "name": "createOptionAriaLabel",
17697
+ "type": "string",
17698
+ "complexType": {
17699
+ "original": "string",
17700
+ "resolved": "string",
17701
+ "references": {}
17702
+ },
17703
+ "mutable": false,
17704
+ "attr": "create-option-aria-label",
17705
+ "reflectToAttr": false,
17706
+ "docs": "Accessible label for the create-new-option row. Pass a translated string to localize it; `{text}` is interpolated.",
17707
+ "docsTags": [
17708
+ {
17709
+ "name": "defaultValue",
17710
+ "text": "'Create new tag: {text}'"
17711
+ }
17712
+ ],
17713
+ "default": "'Create new tag: {text}'",
17714
+ "values": [
17715
+ {
17716
+ "type": "string"
17717
+ }
17718
+ ],
17719
+ "optional": false,
17720
+ "required": false,
17721
+ "getter": false,
17722
+ "setter": false
17723
+ },
17724
+ {
17725
+ "name": "createOptionLabel",
17726
+ "type": "string",
17727
+ "complexType": {
17728
+ "original": "string",
17729
+ "resolved": "string",
17730
+ "references": {}
17731
+ },
17732
+ "mutable": false,
17733
+ "attr": "create-option-label",
17734
+ "reflectToAttr": false,
17735
+ "docs": "Visible label for the create-new-option row. Pass a translated string to localize it; `{text}` is interpolated.",
17736
+ "docsTags": [
17737
+ {
17738
+ "name": "defaultValue",
17739
+ "text": "'Add \"{text}\"'"
17740
+ }
17741
+ ],
17742
+ "default": "'Add \"{text}\"'",
17743
+ "values": [
17744
+ {
17745
+ "type": "string"
17746
+ }
17747
+ ],
17748
+ "optional": false,
17749
+ "required": false,
17750
+ "getter": false,
17751
+ "setter": false
17752
+ },
17608
17753
  {
17609
17754
  "name": "createUrl",
17610
17755
  "type": "string",
@@ -17923,6 +18068,35 @@
17923
18068
  "getter": false,
17924
18069
  "setter": false
17925
18070
  },
18071
+ {
18072
+ "name": "itemRemovedLabel",
18073
+ "type": "string",
18074
+ "complexType": {
18075
+ "original": "string",
18076
+ "resolved": "string",
18077
+ "references": {}
18078
+ },
18079
+ "mutable": false,
18080
+ "attr": "item-removed-label",
18081
+ "reflectToAttr": false,
18082
+ "docs": "Screen-reader announcement when an item is removed. Pass a translated string to localize it; `{item}` is interpolated.",
18083
+ "docsTags": [
18084
+ {
18085
+ "name": "defaultValue",
18086
+ "text": "'{item} removed'"
18087
+ }
18088
+ ],
18089
+ "default": "'{item} removed'",
18090
+ "values": [
18091
+ {
18092
+ "type": "string"
18093
+ }
18094
+ ],
18095
+ "optional": false,
18096
+ "required": false,
18097
+ "getter": false,
18098
+ "setter": false
18099
+ },
17926
18100
  {
17927
18101
  "name": "label",
17928
18102
  "type": "string",
@@ -18108,6 +18282,35 @@
18108
18282
  "getter": false,
18109
18283
  "setter": false
18110
18284
  },
18285
+ {
18286
+ "name": "noOptionsFoundLabel",
18287
+ "type": "string",
18288
+ "complexType": {
18289
+ "original": "string",
18290
+ "resolved": "string",
18291
+ "references": {}
18292
+ },
18293
+ "mutable": false,
18294
+ "attr": "no-options-found-label",
18295
+ "reflectToAttr": false,
18296
+ "docs": "Text shown when no options match the search. Pass a translated string to localize it; defaults to English.",
18297
+ "docsTags": [
18298
+ {
18299
+ "name": "defaultValue",
18300
+ "text": "'No options found'"
18301
+ }
18302
+ ],
18303
+ "default": "'No options found'",
18304
+ "values": [
18305
+ {
18306
+ "type": "string"
18307
+ }
18308
+ ],
18309
+ "optional": false,
18310
+ "required": false,
18311
+ "getter": false,
18312
+ "setter": false
18313
+ },
18111
18314
  {
18112
18315
  "name": "options",
18113
18316
  "type": "MultiselectOption[]",
@@ -18137,6 +18340,35 @@
18137
18340
  "getter": false,
18138
18341
  "setter": false
18139
18342
  },
18343
+ {
18344
+ "name": "optionsLabel",
18345
+ "type": "string",
18346
+ "complexType": {
18347
+ "original": "string",
18348
+ "resolved": "string",
18349
+ "references": {}
18350
+ },
18351
+ "mutable": false,
18352
+ "attr": "options-label",
18353
+ "reflectToAttr": false,
18354
+ "docs": "Accessible label for the options listbox (falls back to this when `label` is unset). Pass a translated string to localize it; defaults to English.",
18355
+ "docsTags": [
18356
+ {
18357
+ "name": "defaultValue",
18358
+ "text": "'Options'"
18359
+ }
18360
+ ],
18361
+ "default": "'Options'",
18362
+ "values": [
18363
+ {
18364
+ "type": "string"
18365
+ }
18366
+ ],
18367
+ "optional": false,
18368
+ "required": false,
18369
+ "getter": false,
18370
+ "setter": false
18371
+ },
18140
18372
  {
18141
18373
  "name": "panelWidth",
18142
18374
  "type": "string",
@@ -18194,6 +18426,35 @@
18194
18426
  "getter": false,
18195
18427
  "setter": false
18196
18428
  },
18429
+ {
18430
+ "name": "pillRemoveLabel",
18431
+ "type": "string",
18432
+ "complexType": {
18433
+ "original": "string",
18434
+ "resolved": "string",
18435
+ "references": {}
18436
+ },
18437
+ "mutable": false,
18438
+ "attr": "pill-remove-label",
18439
+ "reflectToAttr": false,
18440
+ "docs": "Accessible label for the remove button on each selected-item pill. Pass a translated string to localize it; defaults to English.",
18441
+ "docsTags": [
18442
+ {
18443
+ "name": "defaultValue",
18444
+ "text": "'Remove'"
18445
+ }
18446
+ ],
18447
+ "default": "'Remove'",
18448
+ "values": [
18449
+ {
18450
+ "type": "string"
18451
+ }
18452
+ ],
18453
+ "optional": false,
18454
+ "required": false,
18455
+ "getter": false,
18456
+ "setter": false
18457
+ },
18197
18458
  {
18198
18459
  "name": "placeholder",
18199
18460
  "type": "string",
@@ -18205,10 +18466,10 @@
18205
18466
  "mutable": false,
18206
18467
  "attr": "placeholder",
18207
18468
  "reflectToAttr": false,
18208
- "docs": "Placeholder text for the input field.",
18469
+ "docs": "Placeholder text for the input field. Pass a translated string to localize it; defaults to English.",
18209
18470
  "docsTags": [
18210
18471
  {
18211
- "name": "default",
18472
+ "name": "defaultValue",
18212
18473
  "text": "'Select...'"
18213
18474
  }
18214
18475
  ],
@@ -18218,7 +18479,7 @@
18218
18479
  "type": "string"
18219
18480
  }
18220
18481
  ],
18221
- "optional": true,
18482
+ "optional": false,
18222
18483
  "required": false,
18223
18484
  "getter": false,
18224
18485
  "setter": false
@@ -18252,6 +18513,35 @@
18252
18513
  "getter": false,
18253
18514
  "setter": false
18254
18515
  },
18516
+ {
18517
+ "name": "searchOptionsLabel",
18518
+ "type": "string",
18519
+ "complexType": {
18520
+ "original": "string",
18521
+ "resolved": "string",
18522
+ "references": {}
18523
+ },
18524
+ "mutable": false,
18525
+ "attr": "search-options-label",
18526
+ "reflectToAttr": false,
18527
+ "docs": "Accessible label for the search input. Pass a translated string to localize it; defaults to English.",
18528
+ "docsTags": [
18529
+ {
18530
+ "name": "defaultValue",
18531
+ "text": "'Search options'"
18532
+ }
18533
+ ],
18534
+ "default": "'Search options'",
18535
+ "values": [
18536
+ {
18537
+ "type": "string"
18538
+ }
18539
+ ],
18540
+ "optional": false,
18541
+ "required": false,
18542
+ "getter": false,
18543
+ "setter": false
18544
+ },
18255
18545
  {
18256
18546
  "name": "searchPlaceholder",
18257
18547
  "type": "string",
@@ -18263,10 +18553,10 @@
18263
18553
  "mutable": false,
18264
18554
  "attr": "search-placeholder",
18265
18555
  "reflectToAttr": false,
18266
- "docs": "Placeholder text for the search input inside the dropdown panel.",
18556
+ "docs": "Placeholder text for the search input inside the dropdown panel. Pass a translated string to localize it; defaults to English.",
18267
18557
  "docsTags": [
18268
18558
  {
18269
- "name": "default",
18559
+ "name": "defaultValue",
18270
18560
  "text": "'Find...'"
18271
18561
  }
18272
18562
  ],
@@ -18281,6 +18571,123 @@
18281
18571
  "getter": false,
18282
18572
  "setter": false
18283
18573
  },
18574
+ {
18575
+ "name": "selectedCountLabelOne",
18576
+ "type": "string",
18577
+ "complexType": {
18578
+ "original": "string",
18579
+ "resolved": "string",
18580
+ "references": {}
18581
+ },
18582
+ "mutable": false,
18583
+ "attr": "selected-count-label-one",
18584
+ "reflectToAttr": false,
18585
+ "docs": "Singular form of the selected-count trigger text. Pass a translated string to localize it; `{count}` is interpolated.",
18586
+ "docsTags": [
18587
+ {
18588
+ "name": "defaultValue",
18589
+ "text": "'{count} item'"
18590
+ }
18591
+ ],
18592
+ "default": "'{count} item'",
18593
+ "values": [
18594
+ {
18595
+ "type": "string"
18596
+ }
18597
+ ],
18598
+ "optional": false,
18599
+ "required": false,
18600
+ "getter": false,
18601
+ "setter": false
18602
+ },
18603
+ {
18604
+ "name": "selectedCountLabelOther",
18605
+ "type": "string",
18606
+ "complexType": {
18607
+ "original": "string",
18608
+ "resolved": "string",
18609
+ "references": {}
18610
+ },
18611
+ "mutable": false,
18612
+ "attr": "selected-count-label-other",
18613
+ "reflectToAttr": false,
18614
+ "docs": "Plural (and fallback) form of the selected-count trigger text — used for English and any locale whose selected plural category isn't supplied via `selectedCountLabels`. Pass a translated string to localize it; `{count}` is interpolated.",
18615
+ "docsTags": [
18616
+ {
18617
+ "name": "defaultValue",
18618
+ "text": "'{count} items'"
18619
+ }
18620
+ ],
18621
+ "default": "'{count} items'",
18622
+ "values": [
18623
+ {
18624
+ "type": "string"
18625
+ }
18626
+ ],
18627
+ "optional": false,
18628
+ "required": false,
18629
+ "getter": false,
18630
+ "setter": false
18631
+ },
18632
+ {
18633
+ "name": "selectedCountLabels",
18634
+ "type": "\"few\" | \"many\" | \"one\" | \"other\" | \"two\" | \"zero\" | string",
18635
+ "complexType": {
18636
+ "original": "PluralForms | string",
18637
+ "resolved": "\"few\" | \"many\" | \"one\" | \"other\" | \"two\" | \"zero\" | string",
18638
+ "references": {
18639
+ "PluralForms": {
18640
+ "location": "import",
18641
+ "path": "../../i18n",
18642
+ "id": "src/i18n/index.ts::PluralForms",
18643
+ "referenceLocation": "PluralForms"
18644
+ }
18645
+ }
18646
+ },
18647
+ "mutable": false,
18648
+ "attr": "selected-count-labels",
18649
+ "reflectToAttr": false,
18650
+ "docs": "Full CLDR plural forms for the selected-count trigger text, for locales with more than the English `one`/`other` categories (e.g. Polish `few`/`many`, Arabic `zero`/`two`). Accepts an object property or a JSON string attribute keyed by CLDR category — `{ one, other, few, many, two, zero }`. Any form omitted here falls back to `selectedCountLabelOne`/`selectedCountLabelOther`. `{count}` is interpolated.",
18651
+ "docsTags": [
18652
+ {
18653
+ "name": "defaultValue",
18654
+ "text": "undefined"
18655
+ }
18656
+ ],
18657
+ "values": [
18658
+ {
18659
+ "value": "few",
18660
+ "type": "string"
18661
+ },
18662
+ {
18663
+ "value": "many",
18664
+ "type": "string"
18665
+ },
18666
+ {
18667
+ "value": "one",
18668
+ "type": "string"
18669
+ },
18670
+ {
18671
+ "value": "other",
18672
+ "type": "string"
18673
+ },
18674
+ {
18675
+ "value": "two",
18676
+ "type": "string"
18677
+ },
18678
+ {
18679
+ "value": "zero",
18680
+ "type": "string"
18681
+ },
18682
+ {
18683
+ "type": "string"
18684
+ }
18685
+ ],
18686
+ "optional": true,
18687
+ "required": false,
18688
+ "getter": false,
18689
+ "setter": false
18690
+ },
18284
18691
  {
18285
18692
  "name": "selectedDisplay",
18286
18693
  "type": "\"count\" | \"pill\"",
@@ -18315,6 +18722,35 @@
18315
18722
  "getter": false,
18316
18723
  "setter": false
18317
18724
  },
18725
+ {
18726
+ "name": "selectedItemsLabel",
18727
+ "type": "string",
18728
+ "complexType": {
18729
+ "original": "string",
18730
+ "resolved": "string",
18731
+ "references": {}
18732
+ },
18733
+ "mutable": false,
18734
+ "attr": "selected-items-label",
18735
+ "reflectToAttr": false,
18736
+ "docs": "Accessible label for the selected-items region. Pass a translated string to localize it; defaults to English.",
18737
+ "docsTags": [
18738
+ {
18739
+ "name": "defaultValue",
18740
+ "text": "'Selected items'"
18741
+ }
18742
+ ],
18743
+ "default": "'Selected items'",
18744
+ "values": [
18745
+ {
18746
+ "type": "string"
18747
+ }
18748
+ ],
18749
+ "optional": false,
18750
+ "required": false,
18751
+ "getter": false,
18752
+ "setter": false
18753
+ },
18318
18754
  {
18319
18755
  "name": "triggerWidth",
18320
18756
  "type": "string",
@@ -23206,6 +23642,35 @@
23206
23642
  "getter": false,
23207
23643
  "setter": false
23208
23644
  },
23645
+ {
23646
+ "name": "characterCountLabel",
23647
+ "type": "string",
23648
+ "complexType": {
23649
+ "original": "string",
23650
+ "resolved": "string",
23651
+ "references": {}
23652
+ },
23653
+ "mutable": false,
23654
+ "attr": "character-count-label",
23655
+ "reflectToAttr": false,
23656
+ "docs": "Template for the character-counter's accessible label. Pass a translated\nstring to localize it; `{current}` and `{max}` are interpolated.",
23657
+ "docsTags": [
23658
+ {
23659
+ "name": "defaultValue",
23660
+ "text": "'{current} of {max} characters'"
23661
+ }
23662
+ ],
23663
+ "default": "'{current} of {max} characters'",
23664
+ "values": [
23665
+ {
23666
+ "type": "string"
23667
+ }
23668
+ ],
23669
+ "optional": false,
23670
+ "required": false,
23671
+ "getter": false,
23672
+ "setter": false
23673
+ },
23209
23674
  {
23210
23675
  "name": "componentId",
23211
23676
  "type": "string",
@@ -23798,6 +24263,35 @@
23798
24263
  "getter": false,
23799
24264
  "setter": false
23800
24265
  },
24266
+ {
24267
+ "name": "dismissLabel",
24268
+ "type": "string",
24269
+ "complexType": {
24270
+ "original": "string",
24271
+ "resolved": "string",
24272
+ "references": {}
24273
+ },
24274
+ "mutable": false,
24275
+ "attr": "dismiss-label",
24276
+ "reflectToAttr": false,
24277
+ "docs": "Accessible label for the dismiss button. Pass a translated string to\nlocalize it; defaults to English.",
24278
+ "docsTags": [
24279
+ {
24280
+ "name": "defaultValue",
24281
+ "text": "'Dismiss message'"
24282
+ }
24283
+ ],
24284
+ "default": "'Dismiss message'",
24285
+ "values": [
24286
+ {
24287
+ "type": "string"
24288
+ }
24289
+ ],
24290
+ "optional": false,
24291
+ "required": false,
24292
+ "getter": false,
24293
+ "setter": false
24294
+ },
23801
24295
  {
23802
24296
  "name": "dismissible",
23803
24297
  "type": "boolean",
@@ -24392,6 +24886,11 @@
24392
24886
  "docstring": "",
24393
24887
  "path": "src/components/pds-input/input-interface.ts"
24394
24888
  },
24889
+ "src/i18n/index.ts::PluralForms": {
24890
+ "declaration": "any",
24891
+ "docstring": "",
24892
+ "path": "src/i18n/index.ts"
24893
+ },
24395
24894
  "src/components/pds-multiselect/multiselect-interface.ts::MultiselectOption": {
24396
24895
  "declaration": "export interface MultiselectOption {\n id: string | number;\n text: string;\n /** When `true`, the option is rendered as non-interactive and cannot be selected. */\n disabled?: boolean;\n /**\n * Optional section label for grouped rendering (with `options` prop or parsed slots).\n * Options that share a `group` value must be contiguous in the array; non-contiguous\n * rows with the same label produce separate headers (mirrors native `<optgroup>`).\n */\n group?: string;\n isCreateOption?: boolean;\n [key: string]: unknown;\n}",
24397
24896
  "docstring": "",