@kaizen/components 0.0.0-canary-v2-20250901045936 → 0.0.0-canary-debug-tab-20251015223744

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 (165) hide show
  1. package/alpha/README.md +28 -0
  2. package/alpha/package.json +5 -0
  3. package/dist/cjs/alpha.cjs +1 -0
  4. package/dist/cjs/src/Modal/GenericModal/GenericModal.cjs +33 -65
  5. package/dist/cjs/src/Modal/GenericModal/GenericModal.module.scss.cjs +1 -3
  6. package/dist/cjs/src/Notification/InlineNotification/InlineNotification.cjs +1 -1
  7. package/dist/cjs/src/SingleSelect/subcomponents/ListBox/ListBox.cjs +6 -2
  8. package/dist/cjs/src/Tabs/subcomponents/TabList/TabList.cjs +29 -21
  9. package/dist/cjs/src/__alpha__/SingleSelect/SingleSelect.cjs +35 -74
  10. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/ComboBox/ComboBox.cjs +105 -0
  11. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/ComboBox/ComboBox.module.css.cjs +11 -0
  12. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/ComboBoxTrigger.cjs +112 -0
  13. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/ComboBoxTrigger.module.css.cjs +16 -0
  14. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/List/List.cjs +35 -10
  15. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/ListItem/ListItem.cjs +61 -8
  16. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/ListItem/ListItem.module.css.cjs +10 -1
  17. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/ListSection/ListSection.cjs +38 -9
  18. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/ListSection/ListSection.module.css.cjs +4 -1
  19. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Popover/Popover.cjs +60 -30
  20. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Popover/Popover.module.css.cjs +2 -1
  21. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePopoverPositioning.cjs +2 -1
  22. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePositioningStyles.cjs +4 -2
  23. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Select/Select.cjs +87 -0
  24. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Select/Select.module.css.cjs +11 -0
  25. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/SelectTrigger/SelectTrigger.cjs +52 -0
  26. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/SelectTrigger/SelectTrigger.module.css.cjs +13 -0
  27. package/dist/esm/alpha.mjs +1 -1
  28. package/dist/esm/src/Modal/GenericModal/GenericModal.mjs +34 -65
  29. package/dist/esm/src/Modal/GenericModal/GenericModal.module.scss.mjs +1 -3
  30. package/dist/esm/src/Notification/InlineNotification/InlineNotification.mjs +1 -1
  31. package/dist/esm/src/SingleSelect/subcomponents/ListBox/ListBox.mjs +6 -2
  32. package/dist/esm/src/Tabs/subcomponents/TabList/TabList.mjs +29 -21
  33. package/dist/esm/src/__alpha__/SingleSelect/SingleSelect.mjs +39 -73
  34. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/ComboBox/ComboBox.mjs +96 -0
  35. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/ComboBox/ComboBox.module.css.mjs +9 -0
  36. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/ComboBoxTrigger.mjs +103 -0
  37. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/ComboBoxTrigger.module.css.mjs +14 -0
  38. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/List/List.mjs +37 -14
  39. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/ListItem/ListItem.mjs +63 -13
  40. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/ListItem/ListItem.module.css.mjs +10 -1
  41. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/ListSection/ListSection.mjs +41 -15
  42. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/ListSection/ListSection.module.css.mjs +4 -1
  43. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Popover/Popover.mjs +69 -43
  44. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Popover/Popover.module.css.mjs +2 -1
  45. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePopoverPositioning.mjs +2 -1
  46. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePositioningStyles.mjs +4 -2
  47. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Select/Select.mjs +78 -0
  48. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Select/Select.module.css.mjs +9 -0
  49. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/SelectTrigger/SelectTrigger.mjs +43 -0
  50. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/SelectTrigger/SelectTrigger.module.css.mjs +11 -0
  51. package/dist/styles.css +443 -79
  52. package/dist/types/__alpha__/SingleSelect/SingleSelect.d.ts +14 -19
  53. package/dist/types/__alpha__/SingleSelect/_docs/mockData.d.ts +3 -0
  54. package/dist/types/__alpha__/SingleSelect/context/SingleSelectContext.d.ts +15 -7
  55. package/dist/types/__alpha__/SingleSelect/subcomponents/ComboBox/ComboBox.d.ts +2 -0
  56. package/dist/types/__alpha__/SingleSelect/subcomponents/ComboBox/index.d.ts +1 -0
  57. package/dist/types/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/ComboBoxTrigger.d.ts +2 -0
  58. package/dist/types/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/index.d.ts +1 -0
  59. package/dist/types/__alpha__/SingleSelect/subcomponents/List/List.d.ts +2 -7
  60. package/dist/types/__alpha__/SingleSelect/subcomponents/ListItem/ListItem.d.ts +2 -7
  61. package/dist/types/__alpha__/SingleSelect/subcomponents/ListSection/ListSection.d.ts +2 -9
  62. package/dist/types/__alpha__/SingleSelect/subcomponents/Popover/Popover.d.ts +3 -6
  63. package/dist/types/__alpha__/SingleSelect/subcomponents/Popover/utils/index.d.ts +1 -0
  64. package/dist/types/__alpha__/SingleSelect/subcomponents/Popover/utils/usePopoverPositioning.d.ts +1 -0
  65. package/dist/types/__alpha__/SingleSelect/subcomponents/Popover/utils/usePositioningStyles.d.ts +1 -0
  66. package/dist/types/__alpha__/SingleSelect/subcomponents/Select/Select.d.ts +2 -0
  67. package/dist/types/__alpha__/SingleSelect/subcomponents/Select/index.d.ts +1 -0
  68. package/dist/types/__alpha__/SingleSelect/subcomponents/SelectTrigger/SelectTrigger.d.ts +2 -0
  69. package/dist/types/__alpha__/SingleSelect/subcomponents/SelectTrigger/index.d.ts +1 -0
  70. package/dist/types/__alpha__/SingleSelect/subcomponents/index.d.ts +4 -1
  71. package/dist/types/__alpha__/SingleSelect/types.d.ts +68 -11
  72. package/locales/ar.json +9 -1
  73. package/locales/bg.json +9 -1
  74. package/locales/cs.json +9 -1
  75. package/locales/cy.json +9 -1
  76. package/locales/da.json +9 -1
  77. package/locales/de.json +9 -1
  78. package/locales/el.json +9 -1
  79. package/locales/en-GB.json +9 -1
  80. package/locales/en.json +9 -1
  81. package/locales/es-419.json +9 -1
  82. package/locales/es.json +9 -1
  83. package/locales/et.json +9 -1
  84. package/locales/fi.json +9 -1
  85. package/locales/fr-CA.json +9 -1
  86. package/locales/fr.json +9 -1
  87. package/locales/he.json +9 -1
  88. package/locales/hi.json +9 -1
  89. package/locales/ht.json +9 -1
  90. package/locales/hu.json +9 -1
  91. package/locales/id.json +9 -1
  92. package/locales/it.json +9 -1
  93. package/locales/ja.json +9 -1
  94. package/locales/km-KH.json +9 -1
  95. package/locales/ko.json +9 -1
  96. package/locales/lt.json +9 -1
  97. package/locales/lv.json +9 -1
  98. package/locales/mi.json +10 -2
  99. package/locales/ms.json +9 -1
  100. package/locales/nb.json +9 -1
  101. package/locales/nl.json +9 -1
  102. package/locales/pl.json +9 -1
  103. package/locales/pt-BR.json +9 -1
  104. package/locales/pt.json +9 -1
  105. package/locales/ro.json +9 -1
  106. package/locales/ru.json +9 -1
  107. package/locales/si-LK.json +9 -1
  108. package/locales/sk.json +9 -1
  109. package/locales/sr.json +9 -1
  110. package/locales/sv.json +9 -1
  111. package/locales/th.json +9 -1
  112. package/locales/tl.json +9 -1
  113. package/locales/tr.json +9 -1
  114. package/locales/uk.json +9 -1
  115. package/locales/vi.json +9 -1
  116. package/locales/zh-TW.json +9 -1
  117. package/locales/zh.json +9 -1
  118. package/package.json +10 -3
  119. package/src/Modal/GenericModal/GenericModal.spec.tsx +1 -1
  120. package/src/Modal/GenericModal/GenericModal.tsx +38 -70
  121. package/src/Notification/InlineNotification/InlineNotification.tsx +1 -1
  122. package/src/RichTextEditor/RichTextEditor/RichTextEditor.spec.stories.tsx +10 -3
  123. package/src/SingleSelect/subcomponents/ListBox/ListBox.tsx +2 -2
  124. package/src/Tabs/subcomponents/TabList/TabList.tsx +40 -30
  125. package/src/__alpha__/SingleSelect/SingleSelect.tsx +35 -88
  126. package/src/__alpha__/SingleSelect/_docs/SingleSelect.mdx +96 -6
  127. package/src/__alpha__/SingleSelect/_docs/SingleSelect.spec.stories.tsx +22 -24
  128. package/src/__alpha__/SingleSelect/_docs/SingleSelect.stickersheet.stories.tsx +389 -33
  129. package/src/__alpha__/SingleSelect/_docs/SingleSelect.stories.tsx +41 -22
  130. package/src/__alpha__/SingleSelect/_docs/mockData.ts +20 -14
  131. package/src/__alpha__/SingleSelect/context/SingleSelectContext.tsx +18 -7
  132. package/src/__alpha__/SingleSelect/subcomponents/ComboBox/ComboBox.module.css +35 -0
  133. package/src/__alpha__/SingleSelect/subcomponents/ComboBox/ComboBox.tsx +106 -0
  134. package/src/__alpha__/SingleSelect/subcomponents/ComboBox/index.ts +1 -0
  135. package/src/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/ComboBoxTrigger.module.css +130 -0
  136. package/src/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/ComboBoxTrigger.tsx +121 -0
  137. package/src/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/index.ts +1 -0
  138. package/src/__alpha__/SingleSelect/subcomponents/List/List.module.css +5 -0
  139. package/src/__alpha__/SingleSelect/subcomponents/List/List.tsx +36 -13
  140. package/src/__alpha__/SingleSelect/subcomponents/ListItem/ListItem.module.css +84 -3
  141. package/src/__alpha__/SingleSelect/subcomponents/ListItem/ListItem.tsx +67 -11
  142. package/src/__alpha__/SingleSelect/subcomponents/ListSection/ListSection.module.css +20 -5
  143. package/src/__alpha__/SingleSelect/subcomponents/ListSection/ListSection.tsx +46 -19
  144. package/src/__alpha__/SingleSelect/subcomponents/Popover/Popover.module.css +7 -5
  145. package/src/__alpha__/SingleSelect/subcomponents/Popover/Popover.tsx +90 -37
  146. package/src/__alpha__/SingleSelect/subcomponents/Popover/utils/index.ts +1 -0
  147. package/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePopoverPositioning.ts +2 -2
  148. package/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePositioningStyles.ts +9 -8
  149. package/src/__alpha__/SingleSelect/subcomponents/Select/Select.module.css +35 -0
  150. package/src/__alpha__/SingleSelect/subcomponents/Select/Select.tsx +84 -0
  151. package/src/__alpha__/SingleSelect/subcomponents/Select/index.ts +1 -0
  152. package/src/__alpha__/SingleSelect/subcomponents/SelectTrigger/SelectTrigger.module.css +77 -0
  153. package/src/__alpha__/SingleSelect/subcomponents/SelectTrigger/SelectTrigger.tsx +52 -0
  154. package/src/__alpha__/SingleSelect/subcomponents/SelectTrigger/index.ts +1 -0
  155. package/src/__alpha__/SingleSelect/subcomponents/index.ts +4 -1
  156. package/src/__alpha__/SingleSelect/types.ts +94 -14
  157. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.cjs +0 -57
  158. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.module.css.cjs +0 -6
  159. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.mjs +0 -49
  160. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.module.css.mjs +0 -4
  161. package/dist/types/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.d.ts +0 -2
  162. package/dist/types/__alpha__/SingleSelect/subcomponents/Trigger/index.d.ts +0 -1
  163. package/src/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.module.css +0 -19
  164. package/src/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.tsx +0 -35
  165. package/src/__alpha__/SingleSelect/subcomponents/Trigger/index.ts +0 -1
package/locales/lv.json CHANGED
@@ -184,8 +184,16 @@
184
184
  "description" : "Prompts user to interact with button to hide information",
185
185
  "message" : "Paslēpt informāciju:"
186
186
  },
187
+ "singleSelect.chevronButton" : {
188
+ "description" : "Aria label text for the SingleSelect button to open and close suggestions list",
189
+ "message" : "Rādīt {field} ieteikumus"
190
+ },
191
+ "singleSelect.clearButtonAlt" : {
192
+ "description" : "Alt text for the clear selection button",
193
+ "message" : "Notīrīt {field} atlasi"
194
+ },
187
195
  "splitButton.dropdownButton.label" : {
188
196
  "description" : "Label for a dropdown menu holding additional actions",
189
197
  "message" : "Papildu darbības"
190
198
  }
191
- }
199
+ }
package/locales/mi.json CHANGED
@@ -174,7 +174,7 @@
174
174
  },
175
175
  "kzErrorPage.goToHome" : {
176
176
  "description" : "Home button label",
177
- "message" : "Go to Home"
177
+ "message" : "Haere ki te whārangi Kāinga"
178
178
  },
179
179
  "kzGenericTile.infoButtonLabel" : {
180
180
  "description" : "Prompts user to interact with button to reveal more information",
@@ -184,8 +184,16 @@
184
184
  "description" : "Prompts user to interact with button to hide information",
185
185
  "message" : "Huna mōhiohio:"
186
186
  },
187
+ "singleSelect.chevronButton" : {
188
+ "description" : "Aria label text for the SingleSelect button to open and close suggestions list",
189
+ "message" : "Whakaatu whakaaro mo {field}"
190
+ },
191
+ "singleSelect.clearButtonAlt" : {
192
+ "description" : "Alt text for the clear selection button",
193
+ "message" : "Ūkuia {field} tīpakonga"
194
+ },
187
195
  "splitButton.dropdownButton.label" : {
188
196
  "description" : "Label for a dropdown menu holding additional actions",
189
197
  "message" : "Ngā mahi tāpiri"
190
198
  }
191
- }
199
+ }
package/locales/ms.json CHANGED
@@ -184,8 +184,16 @@
184
184
  "description" : "Prompts user to interact with button to hide information",
185
185
  "message" : "Sembunyikan maklumat:"
186
186
  },
187
+ "singleSelect.chevronButton" : {
188
+ "description" : "Aria label text for the SingleSelect button to open and close suggestions list",
189
+ "message" : "Tunjukkan cadangan untuk {field}"
190
+ },
191
+ "singleSelect.clearButtonAlt" : {
192
+ "description" : "Alt text for the clear selection button",
193
+ "message" : "Kosongkan pilihan {field}"
194
+ },
187
195
  "splitButton.dropdownButton.label" : {
188
196
  "description" : "Label for a dropdown menu holding additional actions",
189
197
  "message" : "Tindakan tambahan"
190
198
  }
191
- }
199
+ }
package/locales/nb.json CHANGED
@@ -184,8 +184,16 @@
184
184
  "description" : "Prompts user to interact with button to hide information",
185
185
  "message" : "Skjul informasjon:"
186
186
  },
187
+ "singleSelect.chevronButton" : {
188
+ "description" : "Aria label text for the SingleSelect button to open and close suggestions list",
189
+ "message" : "Vis forslag for {field}"
190
+ },
191
+ "singleSelect.clearButtonAlt" : {
192
+ "description" : "Alt text for the clear selection button",
193
+ "message" : "Fjern {field}-valg"
194
+ },
187
195
  "splitButton.dropdownButton.label" : {
188
196
  "description" : "Label for a dropdown menu holding additional actions",
189
197
  "message" : "Ytterligere handlinger"
190
198
  }
191
- }
199
+ }
package/locales/nl.json CHANGED
@@ -184,8 +184,16 @@
184
184
  "description" : "Prompts user to interact with button to hide information",
185
185
  "message" : "Informatie verbergen:"
186
186
  },
187
+ "singleSelect.chevronButton" : {
188
+ "description" : "Aria label text for the SingleSelect button to open and close suggestions list",
189
+ "message" : "Suggesties voor {field} weergeven"
190
+ },
191
+ "singleSelect.clearButtonAlt" : {
192
+ "description" : "Alt text for the clear selection button",
193
+ "message" : "Selectie van {field} wissen"
194
+ },
187
195
  "splitButton.dropdownButton.label" : {
188
196
  "description" : "Label for a dropdown menu holding additional actions",
189
197
  "message" : "Meer acties"
190
198
  }
191
- }
199
+ }
package/locales/pl.json CHANGED
@@ -184,8 +184,16 @@
184
184
  "description" : "Prompts user to interact with button to hide information",
185
185
  "message" : "Ukryj informacje:"
186
186
  },
187
+ "singleSelect.chevronButton" : {
188
+ "description" : "Aria label text for the SingleSelect button to open and close suggestions list",
189
+ "message" : "Pokaż sugestie dla {field}"
190
+ },
191
+ "singleSelect.clearButtonAlt" : {
192
+ "description" : "Alt text for the clear selection button",
193
+ "message" : "Wyczyść zaznaczenie {field}"
194
+ },
187
195
  "splitButton.dropdownButton.label" : {
188
196
  "description" : "Label for a dropdown menu holding additional actions",
189
197
  "message" : "Dodatkowe działania"
190
198
  }
191
- }
199
+ }
@@ -184,8 +184,16 @@
184
184
  "description" : "Prompts user to interact with button to hide information",
185
185
  "message" : "Ocultar informações:"
186
186
  },
187
+ "singleSelect.chevronButton" : {
188
+ "description" : "Aria label text for the SingleSelect button to open and close suggestions list",
189
+ "message" : "Mostrar sugestões para {field}"
190
+ },
191
+ "singleSelect.clearButtonAlt" : {
192
+ "description" : "Alt text for the clear selection button",
193
+ "message" : "Limpar seleção de {field}"
194
+ },
187
195
  "splitButton.dropdownButton.label" : {
188
196
  "description" : "Label for a dropdown menu holding additional actions",
189
197
  "message" : "Mais ações"
190
198
  }
191
- }
199
+ }
package/locales/pt.json CHANGED
@@ -184,8 +184,16 @@
184
184
  "description" : "Prompts user to interact with button to hide information",
185
185
  "message" : "Ocultar informações:"
186
186
  },
187
+ "singleSelect.chevronButton" : {
188
+ "description" : "Aria label text for the SingleSelect button to open and close suggestions list",
189
+ "message" : "Mostrar sugestões para {field}"
190
+ },
191
+ "singleSelect.clearButtonAlt" : {
192
+ "description" : "Alt text for the clear selection button",
193
+ "message" : "Limpar seleção de {field}"
194
+ },
187
195
  "splitButton.dropdownButton.label" : {
188
196
  "description" : "Label for a dropdown menu holding additional actions",
189
197
  "message" : "Mais ações"
190
198
  }
191
- }
199
+ }
package/locales/ro.json CHANGED
@@ -184,8 +184,16 @@
184
184
  "description" : "Prompts user to interact with button to hide information",
185
185
  "message" : "Ascundeți informațiile:"
186
186
  },
187
+ "singleSelect.chevronButton" : {
188
+ "description" : "Aria label text for the SingleSelect button to open and close suggestions list",
189
+ "message" : "Afișați sugestii pentru {field}"
190
+ },
191
+ "singleSelect.clearButtonAlt" : {
192
+ "description" : "Alt text for the clear selection button",
193
+ "message" : "Ștergeți selecția {field}"
194
+ },
187
195
  "splitButton.dropdownButton.label" : {
188
196
  "description" : "Label for a dropdown menu holding additional actions",
189
197
  "message" : "Acțiuni suplimentare"
190
198
  }
191
- }
199
+ }
package/locales/ru.json CHANGED
@@ -184,8 +184,16 @@
184
184
  "description" : "Prompts user to interact with button to hide information",
185
185
  "message" : "Скрыть информацию:"
186
186
  },
187
+ "singleSelect.chevronButton" : {
188
+ "description" : "Aria label text for the SingleSelect button to open and close suggestions list",
189
+ "message" : "Показать предложения для {field}"
190
+ },
191
+ "singleSelect.clearButtonAlt" : {
192
+ "description" : "Alt text for the clear selection button",
193
+ "message" : "Очистить выбор {field}"
194
+ },
187
195
  "splitButton.dropdownButton.label" : {
188
196
  "description" : "Label for a dropdown menu holding additional actions",
189
197
  "message" : "Дополнительные действия"
190
198
  }
191
- }
199
+ }
@@ -184,8 +184,16 @@
184
184
  "description" : "Prompts user to interact with button to hide information",
185
185
  "message" : "තොරතුරු සඟවන්න:"
186
186
  },
187
+ "singleSelect.chevronButton" : {
188
+ "description" : "Aria label text for the SingleSelect button to open and close suggestions list",
189
+ "message" : "{field} සඳහා යෝජනා පෙන්වන්න"
190
+ },
191
+ "singleSelect.clearButtonAlt" : {
192
+ "description" : "Alt text for the clear selection button",
193
+ "message" : "{field} තෝරාගැනීම මකා දමන්න"
194
+ },
187
195
  "splitButton.dropdownButton.label" : {
188
196
  "description" : "Label for a dropdown menu holding additional actions",
189
197
  "message" : "අතිරේක ක්‍රියාමාර්ග"
190
198
  }
191
- }
199
+ }
package/locales/sk.json CHANGED
@@ -184,8 +184,16 @@
184
184
  "description" : "Prompts user to interact with button to hide information",
185
185
  "message" : "Skryť informácie:"
186
186
  },
187
+ "singleSelect.chevronButton" : {
188
+ "description" : "Aria label text for the SingleSelect button to open and close suggestions list",
189
+ "message" : "Zobraziť návrhy pre {field}"
190
+ },
191
+ "singleSelect.clearButtonAlt" : {
192
+ "description" : "Alt text for the clear selection button",
193
+ "message" : "Zrušiť výber: {field}"
194
+ },
187
195
  "splitButton.dropdownButton.label" : {
188
196
  "description" : "Label for a dropdown menu holding additional actions",
189
197
  "message" : "Ďalšie činnosti"
190
198
  }
191
- }
199
+ }
package/locales/sr.json CHANGED
@@ -184,8 +184,16 @@
184
184
  "description" : "Prompts user to interact with button to hide information",
185
185
  "message" : "Sakrij informacije:"
186
186
  },
187
+ "singleSelect.chevronButton" : {
188
+ "description" : "Aria label text for the SingleSelect button to open and close suggestions list",
189
+ "message" : "Prikaži predloge za {field}"
190
+ },
191
+ "singleSelect.clearButtonAlt" : {
192
+ "description" : "Alt text for the clear selection button",
193
+ "message" : "Obriši {field} izbor"
194
+ },
187
195
  "splitButton.dropdownButton.label" : {
188
196
  "description" : "Label for a dropdown menu holding additional actions",
189
197
  "message" : "Dodatne radnje"
190
198
  }
191
- }
199
+ }
package/locales/sv.json CHANGED
@@ -184,8 +184,16 @@
184
184
  "description" : "Prompts user to interact with button to hide information",
185
185
  "message" : "Dölj information:"
186
186
  },
187
+ "singleSelect.chevronButton" : {
188
+ "description" : "Aria label text for the SingleSelect button to open and close suggestions list",
189
+ "message" : "Visa förslag för {field}"
190
+ },
191
+ "singleSelect.clearButtonAlt" : {
192
+ "description" : "Alt text for the clear selection button",
193
+ "message" : "Rensa {field} val"
194
+ },
187
195
  "splitButton.dropdownButton.label" : {
188
196
  "description" : "Label for a dropdown menu holding additional actions",
189
197
  "message" : "Ytterligare åtgärder"
190
198
  }
191
- }
199
+ }
package/locales/th.json CHANGED
@@ -184,8 +184,16 @@
184
184
  "description" : "Prompts user to interact with button to hide information",
185
185
  "message" : "ซ่อนข้อมูล:"
186
186
  },
187
+ "singleSelect.chevronButton" : {
188
+ "description" : "Aria label text for the SingleSelect button to open and close suggestions list",
189
+ "message" : "แสดงคำแนะนำสำหรับ {field}"
190
+ },
191
+ "singleSelect.clearButtonAlt" : {
192
+ "description" : "Alt text for the clear selection button",
193
+ "message" : "ล้างการเลือก {field}"
194
+ },
187
195
  "splitButton.dropdownButton.label" : {
188
196
  "description" : "Label for a dropdown menu holding additional actions",
189
197
  "message" : "การดำเนินการเพิ่มเติม"
190
198
  }
191
- }
199
+ }
package/locales/tl.json CHANGED
@@ -184,8 +184,16 @@
184
184
  "description" : "Prompts user to interact with button to hide information",
185
185
  "message" : "Itago ang impormasyon:"
186
186
  },
187
+ "singleSelect.chevronButton" : {
188
+ "description" : "Aria label text for the SingleSelect button to open and close suggestions list",
189
+ "message" : "Ipakita ang mga mungkahi para sa {field}"
190
+ },
191
+ "singleSelect.clearButtonAlt" : {
192
+ "description" : "Alt text for the clear selection button",
193
+ "message" : "I-clear ang {field} selection"
194
+ },
187
195
  "splitButton.dropdownButton.label" : {
188
196
  "description" : "Label for a dropdown menu holding additional actions",
189
197
  "message" : "Karagdagang mga aksiyon"
190
198
  }
191
- }
199
+ }
package/locales/tr.json CHANGED
@@ -184,8 +184,16 @@
184
184
  "description" : "Prompts user to interact with button to hide information",
185
185
  "message" : "Bilgileri gizleyin:"
186
186
  },
187
+ "singleSelect.chevronButton" : {
188
+ "description" : "Aria label text for the SingleSelect button to open and close suggestions list",
189
+ "message" : "{field} için önerileri göster"
190
+ },
191
+ "singleSelect.clearButtonAlt" : {
192
+ "description" : "Alt text for the clear selection button",
193
+ "message" : "{field} seçimini temizle"
194
+ },
187
195
  "splitButton.dropdownButton.label" : {
188
196
  "description" : "Label for a dropdown menu holding additional actions",
189
197
  "message" : "Ek eylemler"
190
198
  }
191
- }
199
+ }
package/locales/uk.json CHANGED
@@ -184,8 +184,16 @@
184
184
  "description" : "Prompts user to interact with button to hide information",
185
185
  "message" : "Приховати інформацію:"
186
186
  },
187
+ "singleSelect.chevronButton" : {
188
+ "description" : "Aria label text for the SingleSelect button to open and close suggestions list",
189
+ "message" : "Показати пропозиції для {field}"
190
+ },
191
+ "singleSelect.clearButtonAlt" : {
192
+ "description" : "Alt text for the clear selection button",
193
+ "message" : "Очистити виділення {field}"
194
+ },
187
195
  "splitButton.dropdownButton.label" : {
188
196
  "description" : "Label for a dropdown menu holding additional actions",
189
197
  "message" : "Додаткові дії"
190
198
  }
191
- }
199
+ }
package/locales/vi.json CHANGED
@@ -184,8 +184,16 @@
184
184
  "description" : "Prompts user to interact with button to hide information",
185
185
  "message" : "Ẩn thông tin:"
186
186
  },
187
+ "singleSelect.chevronButton" : {
188
+ "description" : "Aria label text for the SingleSelect button to open and close suggestions list",
189
+ "message" : "Hiển thị gợi ý cho {field}"
190
+ },
191
+ "singleSelect.clearButtonAlt" : {
192
+ "description" : "Alt text for the clear selection button",
193
+ "message" : "Xóa lựa chọn {field}"
194
+ },
187
195
  "splitButton.dropdownButton.label" : {
188
196
  "description" : "Label for a dropdown menu holding additional actions",
189
197
  "message" : "Các hành động bổ sung"
190
198
  }
191
- }
199
+ }
@@ -184,8 +184,16 @@
184
184
  "description" : "Prompts user to interact with button to hide information",
185
185
  "message" : "隱藏資訊:"
186
186
  },
187
+ "singleSelect.chevronButton" : {
188
+ "description" : "Aria label text for the SingleSelect button to open and close suggestions list",
189
+ "message" : "顯示對 {field} 的建議"
190
+ },
191
+ "singleSelect.clearButtonAlt" : {
192
+ "description" : "Alt text for the clear selection button",
193
+ "message" : "清除 {field} 選擇"
194
+ },
187
195
  "splitButton.dropdownButton.label" : {
188
196
  "description" : "Label for a dropdown menu holding additional actions",
189
197
  "message" : "其他行動"
190
198
  }
191
- }
199
+ }
package/locales/zh.json CHANGED
@@ -184,8 +184,16 @@
184
184
  "description" : "Prompts user to interact with button to hide information",
185
185
  "message" : "隐藏信息:"
186
186
  },
187
+ "singleSelect.chevronButton" : {
188
+ "description" : "Aria label text for the SingleSelect button to open and close suggestions list",
189
+ "message" : "显示{field}的建议"
190
+ },
191
+ "singleSelect.clearButtonAlt" : {
192
+ "description" : "Alt text for the clear selection button",
193
+ "message" : "清除{field}选择"
194
+ },
187
195
  "splitButton.dropdownButton.label" : {
188
196
  "description" : "Label for a dropdown menu holding additional actions",
189
197
  "message" : "附加操作"
190
198
  }
191
- }
199
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kaizen/components",
3
- "version": "0.0.0-canary-v2-20250901045936",
3
+ "version": "0.0.0-canary-debug-tab-20251015223744",
4
4
  "description": "Kaizen component library",
5
5
  "author": "Geoffrey Chong <geoff.chong@cultureamp.com>",
6
6
  "homepage": "https://cultureamp.design",
@@ -15,6 +15,7 @@
15
15
  "files": [
16
16
  "bin",
17
17
  "codemods",
18
+ "alpha",
18
19
  "future",
19
20
  "next",
20
21
  "libs",
@@ -36,6 +37,11 @@
36
37
  "import": "./dist/esm/index.mjs",
37
38
  "require": "./dist/cjs/index.cjs"
38
39
  },
40
+ "./alpha": {
41
+ "types": "./dist/types/__alpha__/index.d.ts",
42
+ "import": "./dist/esm/alpha.mjs",
43
+ "require": "./dist/cjs/alpha.cjs"
44
+ },
39
45
  "./next": {
40
46
  "types": "./dist/types/__next__/index.d.ts",
41
47
  "import": "./dist/esm/next.mjs",
@@ -86,6 +92,7 @@
86
92
  "@react-aria/select": "^3.15.7",
87
93
  "@react-aria/utils": "^3.29.1",
88
94
  "@react-stately/collections": "^3.12.5",
95
+ "@react-stately/combobox": "^3.11.1",
89
96
  "@react-stately/datepicker": "^3.14.2",
90
97
  "@react-stately/list": "^3.12.3",
91
98
  "@react-stately/menu": "^3.9.5",
@@ -152,10 +159,10 @@
152
159
  "sass": "1.79.6",
153
160
  "serialize-query-params": "^2.0.2",
154
161
  "svgo": "^3.3.2",
155
- "tslib": "^2.8.1",
156
162
  "ts-patch": "^3.3.0",
163
+ "tslib": "^2.8.1",
157
164
  "tsx": "^4.20.3",
158
- "@kaizen/design-tokens": "0.0.0-canary-v2-20250901045936"
165
+ "@kaizen/design-tokens": "11.0.0"
159
166
  },
160
167
  "devDependenciesComments": {
161
168
  "sass": "Prevent deprecation warnings introduced in 1.80 as we plan to move away from sass",
@@ -71,7 +71,7 @@ describe('<GenericModal />', () => {
71
71
 
72
72
  it('closes the modal when a click is outside of the modal content', async () => {
73
73
  const handleDismiss = vi.fn()
74
- render(<GenericModalWrapper onOutsideModalClick={handleDismiss} />)
74
+ render(<GenericModalWrapper onOutsideModalClick={handleDismiss()} />)
75
75
 
76
76
  await user.click(screen.getByTestId('GenericModalTestId-scrollLayer'))
77
77
  await waitFor(() => {
@@ -1,9 +1,10 @@
1
- import React, { useCallback, useEffect, useId, useState } from 'react'
1
+ import React, { useId, useRef } from 'react'
2
2
  import { createPortal } from 'react-dom'
3
3
  import { Transition } from '@headlessui/react'
4
4
  import classnames from 'classnames'
5
- import FocusLock from 'react-focus-lock'
5
+ import { FocusOn } from 'react-focus-on'
6
6
  import { useIsClientReady } from '../../utils/useIsClientReady'
7
+
7
8
  import { warn } from '../util/console'
8
9
  import { ModalContext } from './context/ModalContext'
9
10
  import styles from './GenericModal.module.scss'
@@ -38,39 +39,22 @@ export const GenericModal = ({
38
39
 
39
40
  const labelledByID = useId()
40
41
  const describedByID = useId()
41
-
42
42
  const isClientReady = useIsClientReady()
43
43
 
44
- const [scrollLayer, setScrollLayer] = useState<HTMLDivElement | null>(null)
45
- const [modalLayer, setModalLayer] = useState<HTMLDivElement | null>(null)
44
+ const scrollLayerRef = useRef<HTMLDivElement | null>(null)
45
+ const modalLayerRef = useRef<HTMLDivElement | null>(null)
46
46
 
47
47
  const scrollModalToTop = (): void => {
48
48
  // If we have a really long modal, the autofocus could land on an element down below
49
49
  // causing the modal to scroll down and skipping over the content near the modal's top.
50
50
  // Ensure that when the modal opens, we are at the top of its content.
51
51
  requestAnimationFrame(() => {
52
- if (!scrollLayer) return
53
- scrollLayer.scrollTop = 0
54
- })
55
- }
56
-
57
- const outsideModalClickHandler = (event: React.MouseEvent): void => {
58
- if (event.target === scrollLayer || event.target === modalLayer) {
59
- onOutsideModalClick?.(event)
60
- }
61
- }
62
-
63
- const focusOnAccessibleLabel = (): void => {
64
- if (!isClientReady) return
65
-
66
- // Check if focus already exists within the modal
67
- if (modalLayer?.contains(document.activeElement)) {
68
- return
69
- }
52
+ const scrollElement = scrollLayerRef.current
70
53
 
71
- const labelElement: HTMLElement | null = document.getElementById(labelledByID)
72
-
73
- labelElement?.focus()
54
+ // This little verbose of a check but this ensures that the element is attached to the DOM as it animates in. This additional check aims to avoid race conditions
55
+ if (!scrollElement?.isConnected) return
56
+ scrollElement.scrollTop = 0
57
+ })
74
58
  }
75
59
 
76
60
  const a11yWarn = (): void => {
@@ -86,60 +70,46 @@ export const GenericModal = ({
86
70
  }
87
71
  }
88
72
 
89
- const preventBodyScroll = (): void => {
73
+ const focusOnAccessibleLabel = (): void => {
90
74
  if (!isClientReady) return
75
+ const modalElement = modalLayerRef.current
76
+ if (!modalElement?.isConnected) return
91
77
 
92
- const hasScrollbar = window.innerWidth > document.documentElement.clientWidth
93
- const scrollStyles = [styles.unscrollable]
78
+ // Check if focus already exists within the modal
79
+ if (modalElement.contains(document.activeElement)) {
80
+ return
81
+ }
82
+
83
+ const labelElement: HTMLElement | null = document.getElementById(labelledByID)
94
84
 
95
- if (hasScrollbar) {
96
- scrollStyles.push(styles.pseudoScrollbar)
85
+ if (labelElement?.isConnected) {
86
+ labelElement.focus()
97
87
  }
88
+ }
98
89
 
99
- document.documentElement.classList.add(...scrollStyles)
90
+ const onEscapeKeyHandler = (e: Event): void => {
91
+ if (e instanceof KeyboardEvent) {
92
+ onEscapeKeyup?.(e)
93
+ }
100
94
  }
101
95
 
102
96
  const onAfterEnterHandler = (): void => {
103
97
  scrollModalToTop()
104
- if (modalLayer) {
98
+ const modalElement = modalLayerRef.current
99
+ if (modalElement) {
105
100
  onAfterEnter?.()
106
101
  focusOnAccessibleLabel()
107
102
  a11yWarn()
108
103
  }
109
104
  }
110
105
 
111
- const escapeKeyHandler = useCallback(
112
- (event: KeyboardEvent): void => {
113
- if (event.key === 'Escape') {
114
- onEscapeKeyup?.(event)
115
- }
116
- },
117
- [onEscapeKeyup],
118
- )
119
-
120
- const onBeforeEnterHandler = (): void => {
121
- preventBodyScroll()
122
-
123
- if (onEscapeKeyup && isClientReady) {
124
- document.addEventListener('keyup', escapeKeyHandler)
106
+ const outsideModalClickHandler = (e: React.MouseEvent): void => {
107
+ if (e.target === scrollLayerRef.current || e.target === modalLayerRef.current) {
108
+ onOutsideModalClick?.(e)
125
109
  }
126
110
  }
127
111
 
128
- const cleanUpAfterClose = useCallback(() => {
129
- if (!isClientReady) return
130
-
131
- document.documentElement.classList.remove(styles.unscrollable, styles.pseudoScrollbar)
132
-
133
- if (onEscapeKeyup) {
134
- document.removeEventListener('keyup', escapeKeyHandler)
135
- }
136
- }, [escapeKeyHandler, onEscapeKeyup, isClientReady])
137
-
138
- /* Ensure sure add-on styles (e.g. unscrollable) and key event is cleaned up when the modal is unmounted*/
139
- useEffect(() => () => cleanUpAfterClose(), [cleanUpAfterClose])
140
-
141
112
  const onAfterLeaveHandler = (): void => {
142
- cleanUpAfterClose()
143
113
  propsOnAfterLeave?.()
144
114
  }
145
115
 
@@ -152,7 +122,6 @@ export const GenericModal = ({
152
122
  <Transition
153
123
  appear={true}
154
124
  show={isOpen}
155
- beforeEnter={onBeforeEnterHandler}
156
125
  afterEnter={onAfterEnterHandler}
157
126
  afterLeave={onAfterLeaveHandler}
158
127
  data-generic-modal-transition-wrapper
@@ -161,9 +130,10 @@ export const GenericModal = ({
161
130
  as="div"
162
131
  className={classnames(styles.transitionLayer, className)}
163
132
  >
164
- <FocusLock
165
- disabled={focusLockDisabled}
133
+ <FocusOn
134
+ focusLock={focusLockDisabled}
166
135
  returnFocus={true}
136
+ onEscapeKey={onEscapeKeyHandler}
167
137
  // Disabling false positive
168
138
  // eslint-disable-next-line jsx-a11y/no-autofocus
169
139
  autoFocus={false}
@@ -174,11 +144,9 @@ export const GenericModal = ({
174
144
  {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions */}
175
145
  <div
176
146
  className={styles.scrollLayer}
177
- ref={(scrollLayerRef): void => {
178
- setScrollLayer(scrollLayerRef)
179
- }}
180
- onClick={outsideModalClickHandler}
147
+ ref={scrollLayerRef}
181
148
  data-testid={`${id}-scrollLayer`}
149
+ onClick={outsideModalClickHandler}
182
150
  >
183
151
  <ModalContext.Provider
184
152
  value={{
@@ -191,14 +159,14 @@ export const GenericModal = ({
191
159
  className={styles.modalLayer}
192
160
  aria-labelledby={labelledByID}
193
161
  aria-describedby={describedByID}
194
- ref={(modalLayerRef): void => setModalLayer(modalLayerRef)}
162
+ ref={modalLayerRef}
195
163
  data-testid={id}
196
164
  >
197
165
  {children}
198
166
  </div>
199
167
  </ModalContext.Provider>
200
168
  </div>
201
- </FocusLock>
169
+ </FocusOn>
202
170
  </Transition>,
203
171
  document.body,
204
172
  )