@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
@@ -12,6 +12,7 @@ import { ChipSentimentType, ChipSizeType, ChipVariantType, PlacementType } from
12
12
  import { ComboboxLoadOptionsEventDetail, ComboboxOption, ComboboxSearchEventDetail } from "./components/pds-combobox/combobox-interface";
13
13
  import { PdsFilterClearEventDetail, PdsFilterCloseEventDetail, PdsFilterOpenEventDetail, PdsFilterVariant } from "./components/pds-filters/pds-filter/filter-interface";
14
14
  import { InputChangeEventDetail, InputInputEventDetail } from "./components/pds-input/input-interface";
15
+ import { PluralForms } from "./i18n";
15
16
  import { MultiselectChangeEventDetail, MultiselectCreateEventDetail, MultiselectLoadOptionsEventDetail, MultiselectOption, MultiselectSearchEventDetail } from "./components/pds-multiselect/multiselect-interface";
16
17
  import { PdsPopoverEventDetail } from "./components/pds-popover/popover-interface";
17
18
  import { RadioGroupChangeEventDetail } from "./components/pds-radio-group/radio-group-interface";
@@ -24,6 +25,7 @@ export { ChipSentimentType, ChipSizeType, ChipVariantType, PlacementType } from
24
25
  export { ComboboxLoadOptionsEventDetail, ComboboxOption, ComboboxSearchEventDetail } from "./components/pds-combobox/combobox-interface";
25
26
  export { PdsFilterClearEventDetail, PdsFilterCloseEventDetail, PdsFilterOpenEventDetail, PdsFilterVariant } from "./components/pds-filters/pds-filter/filter-interface";
26
27
  export { InputChangeEventDetail, InputInputEventDetail } from "./components/pds-input/input-interface";
28
+ export { PluralForms } from "./i18n";
27
29
  export { MultiselectChangeEventDetail, MultiselectCreateEventDetail, MultiselectLoadOptionsEventDetail, MultiselectOption, MultiselectSearchEventDetail } from "./components/pds-multiselect/multiselect-interface";
28
30
  export { PdsPopoverEventDetail } from "./components/pds-popover/popover-interface";
29
31
  export { RadioGroupChangeEventDetail } from "./components/pds-radio-group/radio-group-interface";
@@ -85,6 +87,11 @@ export namespace Components {
85
87
  * A unique identifier used for the underlying component `id` attribute.
86
88
  */
87
89
  "componentId": string;
90
+ /**
91
+ * Accessible label for the dismiss button. Pass a translated string to localize it; defaults to English.
92
+ * @defaultValue 'Dismiss alert'
93
+ */
94
+ "dismissLabel": string;
88
95
  /**
89
96
  * If true, shows the dismiss button. If false, the dismiss button is hidden.
90
97
  * @defaultValue false
@@ -150,6 +157,11 @@ export namespace Components {
150
157
  | 'sm' // 32px
151
158
  | 'xs' // 24px
152
159
  | string;
160
+ /**
161
+ * Accessible label for the dropdown trigger button. Pass a translated string to localize it; defaults to English.
162
+ * @defaultValue 'Avatar dropdown trigger'
163
+ */
164
+ "triggerLabel": string;
153
165
  /**
154
166
  * Determines the variant of avatar. Changes appearance accordingly.
155
167
  * @defaultValue customer
@@ -838,6 +850,11 @@ export namespace Components {
838
850
  * A unique identifier used for the underlying component `id` attribute.
839
851
  */
840
852
  "componentId": string;
853
+ /**
854
+ * Accessible label for the remove button. Pass a translated string to localize it; defaults to English.
855
+ * @defaultValue 'Remove'
856
+ */
857
+ "dismissLabel": string;
841
858
  /**
842
859
  * Determines whether a dot should be displayed on the chip. Note: This prop is ignored when sentiment is 'brand'.
843
860
  * @defaultValue false
@@ -1485,6 +1502,16 @@ export namespace Components {
1485
1502
  * A unique identifier used for the underlying component `id` attribute.
1486
1503
  */
1487
1504
  "componentId": string;
1505
+ /**
1506
+ * Accessible label for the create-new-option row. Pass a translated string to localize it; `{text}` is interpolated.
1507
+ * @defaultValue 'Create new tag: {text}'
1508
+ */
1509
+ "createOptionAriaLabel": string;
1510
+ /**
1511
+ * Visible label for the create-new-option row. Pass a translated string to localize it; `{text}` is interpolated.
1512
+ * @defaultValue 'Add "{text}"'
1513
+ */
1514
+ "createOptionLabel": string;
1488
1515
  /**
1489
1516
  * URL endpoint for creating new options. When set, shows "Add" option when no matches found.
1490
1517
  */
@@ -1539,6 +1566,11 @@ export namespace Components {
1539
1566
  * If true, the multiselect is in an invalid state.
1540
1567
  */
1541
1568
  "invalid"?: boolean;
1569
+ /**
1570
+ * Screen-reader announcement when an item is removed. Pass a translated string to localize it; `{item}` is interpolated.
1571
+ * @defaultValue '{item} removed'
1572
+ */
1573
+ "itemRemovedLabel": string;
1542
1574
  /**
1543
1575
  * Text to be displayed as the multiselect label.
1544
1576
  */
@@ -1571,10 +1603,20 @@ export namespace Components {
1571
1603
  * Specifies the name. Submitted with the form as part of a name/value pair.
1572
1604
  */
1573
1605
  "name"?: string;
1606
+ /**
1607
+ * Text shown when no options match the search. Pass a translated string to localize it; defaults to English.
1608
+ * @defaultValue 'No options found'
1609
+ */
1610
+ "noOptionsFoundLabel": string;
1574
1611
  /**
1575
1612
  * Options provided externally (for consumer-managed async). When using `group` on options, keep each group block contiguous in the array. The same `group` label appearing again after other items produces a separate header (same as native `<optgroup>`).
1576
1613
  */
1577
1614
  "options"?: MultiselectOption[];
1615
+ /**
1616
+ * Accessible label for the options listbox (falls back to this when `label` is unset). Pass a translated string to localize it; defaults to English.
1617
+ * @defaultValue 'Options'
1618
+ */
1619
+ "optionsLabel": string;
1578
1620
  /**
1579
1621
  * Width of the dropdown panel. Defaults to the trigger width.
1580
1622
  */
@@ -1585,25 +1627,55 @@ export namespace Components {
1585
1627
  */
1586
1628
  "pillPosition": 'inline' | 'below';
1587
1629
  /**
1588
- * Placeholder text for the input field.
1589
- * @default 'Select...'
1630
+ * Accessible label for the remove button on each selected-item pill. Pass a translated string to localize it; defaults to English.
1631
+ * @defaultValue 'Remove'
1590
1632
  */
1591
- "placeholder"?: string;
1633
+ "pillRemoveLabel": string;
1634
+ /**
1635
+ * Placeholder text for the input field. Pass a translated string to localize it; defaults to English.
1636
+ * @defaultValue 'Select...'
1637
+ */
1638
+ "placeholder": string;
1592
1639
  /**
1593
1640
  * If true, the multiselect is required.
1594
1641
  * @default false
1595
1642
  */
1596
1643
  "required": boolean;
1597
1644
  /**
1598
- * Placeholder text for the search input inside the dropdown panel.
1599
- * @default 'Find...'
1645
+ * Accessible label for the search input. Pass a translated string to localize it; defaults to English.
1646
+ * @defaultValue 'Search options'
1647
+ */
1648
+ "searchOptionsLabel": string;
1649
+ /**
1650
+ * Placeholder text for the search input inside the dropdown panel. Pass a translated string to localize it; defaults to English.
1651
+ * @defaultValue 'Find...'
1600
1652
  */
1601
1653
  "searchPlaceholder": string;
1654
+ /**
1655
+ * Singular form of the selected-count trigger text. Pass a translated string to localize it; `{count}` is interpolated.
1656
+ * @defaultValue '{count} item'
1657
+ */
1658
+ "selectedCountLabelOne": string;
1659
+ /**
1660
+ * 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.
1661
+ * @defaultValue '{count} items'
1662
+ */
1663
+ "selectedCountLabelOther": string;
1664
+ /**
1665
+ * 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.
1666
+ * @defaultValue undefined
1667
+ */
1668
+ "selectedCountLabels"?: PluralForms | string;
1602
1669
  /**
1603
1670
  * Display mode for selected items outside the dropdown panel. `'count'` shows "N item(s)" text in the trigger (default). `'pill'` renders selected items as dismissible pds-chip tags.
1604
1671
  * @default 'count'
1605
1672
  */
1606
1673
  "selectedDisplay": 'count' | 'pill';
1674
+ /**
1675
+ * Accessible label for the selected-items region. Pass a translated string to localize it; defaults to English.
1676
+ * @defaultValue 'Selected items'
1677
+ */
1678
+ "selectedItemsLabel": string;
1607
1679
  /**
1608
1680
  * Sets focus on the trigger button.
1609
1681
  */
@@ -2203,6 +2275,11 @@ export namespace Components {
2203
2275
  * Specifies if and how the browser provides `autocomplete` assistance for the field.
2204
2276
  */
2205
2277
  "autocomplete": string;
2278
+ /**
2279
+ * Template for the character-counter's accessible label. Pass a translated string to localize it; `{current}` and `{max}` are interpolated.
2280
+ * @defaultValue '{current} of {max} characters'
2281
+ */
2282
+ "characterCountLabel": string;
2206
2283
  /**
2207
2284
  * A unique identifier used for the underlying component `id` attribute.
2208
2285
  */
@@ -2284,6 +2361,11 @@ export namespace Components {
2284
2361
  */
2285
2362
  "componentId": string;
2286
2363
  "dismiss": () => Promise<void>;
2364
+ /**
2365
+ * Accessible label for the dismiss button. Pass a translated string to localize it; defaults to English.
2366
+ * @defaultValue 'Dismiss message'
2367
+ */
2368
+ "dismissLabel": string;
2287
2369
  /**
2288
2370
  * Whether the toast can be dismissed manually via the close button. Note: This only controls manual dismissal. Auto-dismissal via duration still applies.
2289
2371
  * @default true
@@ -3185,6 +3267,11 @@ declare namespace LocalJSX {
3185
3267
  * A unique identifier used for the underlying component `id` attribute.
3186
3268
  */
3187
3269
  "componentId"?: string;
3270
+ /**
3271
+ * Accessible label for the dismiss button. Pass a translated string to localize it; defaults to English.
3272
+ * @defaultValue 'Dismiss alert'
3273
+ */
3274
+ "dismissLabel"?: string;
3188
3275
  /**
3189
3276
  * If true, shows the dismiss button. If false, the dismiss button is hidden.
3190
3277
  * @defaultValue false
@@ -3254,6 +3341,11 @@ declare namespace LocalJSX {
3254
3341
  | 'sm' // 32px
3255
3342
  | 'xs' // 24px
3256
3343
  | string;
3344
+ /**
3345
+ * Accessible label for the dropdown trigger button. Pass a translated string to localize it; defaults to English.
3346
+ * @defaultValue 'Avatar dropdown trigger'
3347
+ */
3348
+ "triggerLabel"?: string;
3257
3349
  /**
3258
3350
  * Determines the variant of avatar. Changes appearance accordingly.
3259
3351
  * @defaultValue customer
@@ -3952,6 +4044,11 @@ declare namespace LocalJSX {
3952
4044
  * A unique identifier used for the underlying component `id` attribute.
3953
4045
  */
3954
4046
  "componentId"?: string;
4047
+ /**
4048
+ * Accessible label for the remove button. Pass a translated string to localize it; defaults to English.
4049
+ * @defaultValue 'Remove'
4050
+ */
4051
+ "dismissLabel"?: string;
3955
4052
  /**
3956
4053
  * Determines whether a dot should be displayed on the chip. Note: This prop is ignored when sentiment is 'brand'.
3957
4054
  * @defaultValue false
@@ -4635,6 +4732,16 @@ declare namespace LocalJSX {
4635
4732
  * A unique identifier used for the underlying component `id` attribute.
4636
4733
  */
4637
4734
  "componentId": string;
4735
+ /**
4736
+ * Accessible label for the create-new-option row. Pass a translated string to localize it; `{text}` is interpolated.
4737
+ * @defaultValue 'Create new tag: {text}'
4738
+ */
4739
+ "createOptionAriaLabel"?: string;
4740
+ /**
4741
+ * Visible label for the create-new-option row. Pass a translated string to localize it; `{text}` is interpolated.
4742
+ * @defaultValue 'Add "{text}"'
4743
+ */
4744
+ "createOptionLabel"?: string;
4638
4745
  /**
4639
4746
  * URL endpoint for creating new options. When set, shows "Add" option when no matches found.
4640
4747
  */
@@ -4693,6 +4800,11 @@ declare namespace LocalJSX {
4693
4800
  * If true, the multiselect is in an invalid state.
4694
4801
  */
4695
4802
  "invalid"?: boolean;
4803
+ /**
4804
+ * Screen-reader announcement when an item is removed. Pass a translated string to localize it; `{item}` is interpolated.
4805
+ * @defaultValue '{item} removed'
4806
+ */
4807
+ "itemRemovedLabel"?: string;
4696
4808
  /**
4697
4809
  * Text to be displayed as the multiselect label.
4698
4810
  */
@@ -4725,6 +4837,11 @@ declare namespace LocalJSX {
4725
4837
  * Specifies the name. Submitted with the form as part of a name/value pair.
4726
4838
  */
4727
4839
  "name"?: string;
4840
+ /**
4841
+ * Text shown when no options match the search. Pass a translated string to localize it; defaults to English.
4842
+ * @defaultValue 'No options found'
4843
+ */
4844
+ "noOptionsFoundLabel"?: string;
4728
4845
  /**
4729
4846
  * Emitted when selection changes.
4730
4847
  */
@@ -4749,6 +4866,11 @@ declare namespace LocalJSX {
4749
4866
  * Options provided externally (for consumer-managed async). When using `group` on options, keep each group block contiguous in the array. The same `group` label appearing again after other items produces a separate header (same as native `<optgroup>`).
4750
4867
  */
4751
4868
  "options"?: MultiselectOption[];
4869
+ /**
4870
+ * Accessible label for the options listbox (falls back to this when `label` is unset). Pass a translated string to localize it; defaults to English.
4871
+ * @defaultValue 'Options'
4872
+ */
4873
+ "optionsLabel"?: string;
4752
4874
  /**
4753
4875
  * Width of the dropdown panel. Defaults to the trigger width.
4754
4876
  */
@@ -4759,8 +4881,13 @@ declare namespace LocalJSX {
4759
4881
  */
4760
4882
  "pillPosition"?: 'inline' | 'below';
4761
4883
  /**
4762
- * Placeholder text for the input field.
4763
- * @default 'Select...'
4884
+ * Accessible label for the remove button on each selected-item pill. Pass a translated string to localize it; defaults to English.
4885
+ * @defaultValue 'Remove'
4886
+ */
4887
+ "pillRemoveLabel"?: string;
4888
+ /**
4889
+ * Placeholder text for the input field. Pass a translated string to localize it; defaults to English.
4890
+ * @defaultValue 'Select...'
4764
4891
  */
4765
4892
  "placeholder"?: string;
4766
4893
  /**
@@ -4769,15 +4896,40 @@ declare namespace LocalJSX {
4769
4896
  */
4770
4897
  "required"?: boolean;
4771
4898
  /**
4772
- * Placeholder text for the search input inside the dropdown panel.
4773
- * @default 'Find...'
4899
+ * Accessible label for the search input. Pass a translated string to localize it; defaults to English.
4900
+ * @defaultValue 'Search options'
4901
+ */
4902
+ "searchOptionsLabel"?: string;
4903
+ /**
4904
+ * Placeholder text for the search input inside the dropdown panel. Pass a translated string to localize it; defaults to English.
4905
+ * @defaultValue 'Find...'
4774
4906
  */
4775
4907
  "searchPlaceholder"?: string;
4908
+ /**
4909
+ * Singular form of the selected-count trigger text. Pass a translated string to localize it; `{count}` is interpolated.
4910
+ * @defaultValue '{count} item'
4911
+ */
4912
+ "selectedCountLabelOne"?: string;
4913
+ /**
4914
+ * 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.
4915
+ * @defaultValue '{count} items'
4916
+ */
4917
+ "selectedCountLabelOther"?: string;
4918
+ /**
4919
+ * 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.
4920
+ * @defaultValue undefined
4921
+ */
4922
+ "selectedCountLabels"?: PluralForms | string;
4776
4923
  /**
4777
4924
  * Display mode for selected items outside the dropdown panel. `'count'` shows "N item(s)" text in the trigger (default). `'pill'` renders selected items as dismissible pds-chip tags.
4778
4925
  * @default 'count'
4779
4926
  */
4780
4927
  "selectedDisplay"?: 'count' | 'pill';
4928
+ /**
4929
+ * Accessible label for the selected-items region. Pass a translated string to localize it; defaults to English.
4930
+ * @defaultValue 'Selected items'
4931
+ */
4932
+ "selectedItemsLabel"?: string;
4781
4933
  /**
4782
4934
  * Width of the trigger button (and reference for dropdown positioning).
4783
4935
  * @default '100%'
@@ -5402,6 +5554,11 @@ declare namespace LocalJSX {
5402
5554
  * Specifies if and how the browser provides `autocomplete` assistance for the field.
5403
5555
  */
5404
5556
  "autocomplete"?: string;
5557
+ /**
5558
+ * Template for the character-counter's accessible label. Pass a translated string to localize it; `{current}` and `{max}` are interpolated.
5559
+ * @defaultValue '{current} of {max} characters'
5560
+ */
5561
+ "characterCountLabel"?: string;
5405
5562
  /**
5406
5563
  * A unique identifier used for the underlying component `id` attribute.
5407
5564
  */
@@ -5502,6 +5659,11 @@ declare namespace LocalJSX {
5502
5659
  * A unique identifier used for the underlying component `id` attribute.
5503
5660
  */
5504
5661
  "componentId": string;
5662
+ /**
5663
+ * Accessible label for the dismiss button. Pass a translated string to localize it; defaults to English.
5664
+ * @defaultValue 'Dismiss message'
5665
+ */
5666
+ "dismissLabel"?: string;
5505
5667
  /**
5506
5668
  * Whether the toast can be dismissed manually via the close button. Note: This only controls manual dismissal. Auto-dismissal via duration still applies.
5507
5669
  * @default true
@@ -5580,6 +5742,7 @@ declare namespace LocalJSX {
5580
5742
  "dismissible": boolean;
5581
5743
  "hideIcon": boolean;
5582
5744
  "variant": 'default' | 'danger' | 'info' | 'success' | 'warning';
5745
+ "dismissLabel": string;
5583
5746
  }
5584
5747
  interface PdsAvatarAttributes {
5585
5748
  "alt": string | null;
@@ -5595,6 +5758,7 @@ declare namespace LocalJSX {
5595
5758
  | 'xs' // 24px
5596
5759
  | string;
5597
5760
  "variant": 'customer' | 'admin';
5761
+ "triggerLabel": string;
5598
5762
  }
5599
5763
  interface PdsBoxAttributes {
5600
5764
  "alignItems": `start` | `center` | `end` | `baseline` | `stretch`;
@@ -5757,6 +5921,7 @@ declare namespace LocalJSX {
5757
5921
  "removeUrl": string;
5758
5922
  "removeHttpMethod": 'get' | 'post' | 'put' | 'patch' | 'delete';
5759
5923
  "removeTarget": '_blank' | '_self' | '_parent' | '_top';
5924
+ "dismissLabel": string;
5760
5925
  }
5761
5926
  interface PdsComboboxAttributes {
5762
5927
  "componentId": string;
@@ -5909,6 +6074,17 @@ declare namespace LocalJSX {
5909
6074
  "label": string;
5910
6075
  "placeholder": string;
5911
6076
  "searchPlaceholder": string;
6077
+ "searchOptionsLabel": string;
6078
+ "selectedItemsLabel": string;
6079
+ "optionsLabel": string;
6080
+ "noOptionsFoundLabel": string;
6081
+ "createOptionLabel": string;
6082
+ "createOptionAriaLabel": string;
6083
+ "itemRemovedLabel": string;
6084
+ "pillRemoveLabel": string;
6085
+ "selectedCountLabelOne": string;
6086
+ "selectedCountLabelOther": string;
6087
+ "selectedCountLabels": PluralForms | string;
5912
6088
  "closePanelOnSelect": boolean;
5913
6089
  "name": string;
5914
6090
  "disabled": boolean;
@@ -6118,6 +6294,7 @@ declare namespace LocalJSX {
6118
6294
  "maxLength": number;
6119
6295
  "highlight": boolean;
6120
6296
  "value": string | null;
6297
+ "characterCountLabel": string;
6121
6298
  }
6122
6299
  interface PdsToastAttributes {
6123
6300
  "componentId": string;
@@ -6125,6 +6302,7 @@ declare namespace LocalJSX {
6125
6302
  "duration": number;
6126
6303
  "icon": string;
6127
6304
  "type": 'default' | 'danger' | 'loading';
6305
+ "dismissLabel": string;
6128
6306
  }
6129
6307
  interface PdsTooltipAttributes {
6130
6308
  "content": string;
@@ -0,0 +1,38 @@
1
+ export type I18nVars = Record<string, string | number>;
2
+ export type PluralForms = Partial<Record<Intl.LDMLPluralRule, string>>;
3
+ /**
4
+ * i18n formatting helpers for Pine components.
5
+ *
6
+ * Pine stays string-agnostic: user-facing text is supplied by the consumer as
7
+ * props (English-defaulted). These helpers only handle the two things a prop
8
+ * value can't express on its own — interpolating live component state into a
9
+ * translated template, and picking the right plural form. No stored strings, no
10
+ * locale registry; the locale is read from the DOM (`lang`), the web-standard
11
+ * signal a consumer already sets.
12
+ *
13
+ * Two limitations of DOM-`lang` locale resolution, both inherent to inferring
14
+ * locale from the DOM rather than being told it:
15
+ *
16
+ * 1. Not reactive. `resolveLocale` is read during render; Stencil has no
17
+ * reactive dependency on a DOM attribute, so changing `lang` at runtime
18
+ * (`document.documentElement.lang = 'pl'`) does NOT re-render mounted
19
+ * components — the plural form stays stale until unrelated state forces a
20
+ * render. Fine when locale changes via full-page navigation; a consumer that
21
+ * switches locale client-side should pass the already-formatted/pluralized
22
+ * string as the prop instead.
23
+ * 2. Does not cross shadow boundaries. `el.closest('[lang]')` stops at the host's
24
+ * shadow root. A Pine component nested inside another custom element whose
25
+ * `lang` sits on that outer host will not see it and falls back to
26
+ * `document.documentElement.lang`. Set `lang` on (or above) the Pine element
27
+ * in the same tree, or pass a pre-formatted string, when that matters.
28
+ */
29
+ /** Replace `{token}` placeholders with `vars`; unknown tokens stay literal. */
30
+ export declare function formatMessage(template: string, vars?: I18nVars): string;
31
+ /** Nearest `[lang]` ancestor, then `<html lang>`, then `'en'`. */
32
+ export declare function resolveLocale(el?: Element | null): string;
33
+ /**
34
+ * Pick the CLDR plural form for `count` in the element's locale (via the
35
+ * platform `Intl.PluralRules`) and interpolate `{count}`. `forms` come from the
36
+ * caller — component props, English-defaulted — and fall back to `other`.
37
+ */
38
+ export declare function pluralize(el: Element | null, count: number, forms: PluralForms, vars?: I18nVars): string;
@@ -0,0 +1,2 @@
1
+ export { formatMessage, pluralize, resolveLocale } from './i18n-format';
2
+ export type { I18nVars, PluralForms } from './i18n-format';