@kaizen/components 0.0.0-canary-kz-components-css-layer-pre-release-20250527021003 → 0.0.0-canary-fix-fms-popover-20250603003244

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 (260) hide show
  1. package/dist/cjs/src/Calendar/CalendarRange/CalendarRange.cjs +13 -12
  2. package/dist/cjs/src/Calendar/CalendarRange/CalendarRange.module.scss.cjs +3 -2
  3. package/dist/cjs/src/Calendar/CalendarSingle/CalendarSingle.cjs +8 -8
  4. package/dist/cjs/src/Calendar/LegacyCalendarRange/LegacyCalendarRange.cjs +12 -11
  5. package/dist/cjs/src/Calendar/LegacyCalendarRange/LegacyCalendarRange.module.scss.cjs +1 -0
  6. package/dist/cjs/src/Calendar/baseCalendarClassNames.cjs +13 -11
  7. package/dist/cjs/src/Calendar/baseCalendarClassNames.module.scss.cjs +2 -1
  8. package/dist/cjs/src/Calendar/utils/setFocusInCalendar.cjs +6 -7
  9. package/dist/cjs/src/Filter/FilterBar/subcomponents/FilterBarSelect/FilterBarSelect.cjs +1 -1
  10. package/dist/cjs/src/Filter/FilterMultiSelect/FilterMultiSelect.cjs +7 -3
  11. package/dist/cjs/src/Filter/FilterMultiSelect/subcomponents/MenuPopup/MenuPopup.cjs +67 -37
  12. package/dist/cjs/src/RichTextEditor/utils/schema/marks.cjs +5 -6
  13. package/dist/esm/src/Calendar/CalendarRange/CalendarRange.mjs +13 -12
  14. package/dist/esm/src/Calendar/CalendarRange/CalendarRange.module.scss.mjs +3 -2
  15. package/dist/esm/src/Calendar/CalendarSingle/CalendarSingle.mjs +8 -8
  16. package/dist/esm/src/Calendar/LegacyCalendarRange/LegacyCalendarRange.mjs +12 -11
  17. package/dist/esm/src/Calendar/LegacyCalendarRange/LegacyCalendarRange.module.scss.mjs +1 -0
  18. package/dist/esm/src/Calendar/baseCalendarClassNames.mjs +13 -11
  19. package/dist/esm/src/Calendar/baseCalendarClassNames.module.scss.mjs +2 -1
  20. package/dist/esm/src/Calendar/utils/setFocusInCalendar.mjs +6 -7
  21. package/dist/esm/src/Filter/FilterBar/subcomponents/FilterBarSelect/FilterBarSelect.mjs +1 -1
  22. package/dist/esm/src/Filter/FilterMultiSelect/FilterMultiSelect.mjs +7 -3
  23. package/dist/esm/src/Filter/FilterMultiSelect/subcomponents/MenuPopup/MenuPopup.mjs +68 -40
  24. package/dist/esm/src/RichTextEditor/utils/schema/marks.mjs +5 -6
  25. package/dist/styles.css +10102 -9903
  26. package/dist/types/Calendar/CalendarRange/CalendarRange.d.ts +2 -2
  27. package/dist/types/Calendar/CalendarSingle/CalendarSingle.d.ts +2 -2
  28. package/dist/types/Calendar/LegacyCalendarRange/LegacyCalendarRange.d.ts +2 -3
  29. package/dist/types/Calendar/baseCalendarClassNames.d.ts +2 -2
  30. package/dist/types/Filter/FilterMultiSelect/FilterMultiSelect.d.ts +1 -1
  31. package/dist/types/Filter/FilterMultiSelect/subcomponents/MenuPopup/MenuPopup.d.ts +7 -4
  32. package/dist/types/RichTextEditor/utils/schema/marks.d.ts +1 -1
  33. package/package.json +43 -44
  34. package/src/Avatar/Avatar.module.css +135 -137
  35. package/src/AvatarGroup/AvatarGroup.module.css +56 -58
  36. package/src/Badge/Badge.module.css +96 -98
  37. package/src/Brand/Brand.module.css +3 -5
  38. package/src/BrandMoment/BrandMoment.module.css +145 -147
  39. package/src/BrandMoment/_docs/ExampleHeaders.module.scss +66 -68
  40. package/src/Button/Button/Button.module.scss +133 -135
  41. package/src/Button/GenericButton/GenericButton.module.scss +79 -81
  42. package/src/Button/IconButton/IconButton.module.scss +18 -20
  43. package/src/ButtonGroup/ButtonGroup.module.css +36 -38
  44. package/src/ButtonGroup/ButtonGroup.module.scss +39 -41
  45. package/src/Calendar/CalendarPopover/CalendarPopover.module.scss +17 -19
  46. package/src/Calendar/CalendarRange/CalendarRange.module.scss +45 -47
  47. package/src/Calendar/CalendarRange/CalendarRange.tsx +11 -15
  48. package/src/Calendar/CalendarRange/_docs/CalendarRange.stickersheet.stories.tsx +1 -2
  49. package/src/Calendar/CalendarSingle/CalendarSingle.module.scss +9 -12
  50. package/src/Calendar/CalendarSingle/CalendarSingle.tsx +6 -11
  51. package/src/Calendar/CalendarSingle/_docs/CalendarSingle.stickersheet.stories.tsx +3 -8
  52. package/src/Calendar/LegacyCalendarRange/LegacyCalendarRange.module.scss +18 -21
  53. package/src/Calendar/LegacyCalendarRange/LegacyCalendarRange.tsx +11 -15
  54. package/src/Calendar/baseCalendarClassNames.module.scss +156 -151
  55. package/src/Calendar/baseCalendarClassNames.ts +15 -13
  56. package/src/Calendar/utils/isSelectingDayInCalendar.spec.tsx +1 -2
  57. package/src/Calendar/utils/setFocusInCalendar.spec.tsx +4 -8
  58. package/src/Calendar/utils/setFocusInCalendar.ts +10 -10
  59. package/src/Card/Card.module.css +89 -91
  60. package/src/Checkbox/Checkbox/Checkbox.module.scss +87 -89
  61. package/src/Checkbox/CheckboxField/CheckboxField.module.scss +30 -32
  62. package/src/Checkbox/CheckboxGroup/CheckboxGroup.module.scss +9 -11
  63. package/src/ClearButton/ClearButton.module.scss +30 -32
  64. package/src/Collapsible/Collapsible/Collapsible.module.scss +85 -87
  65. package/src/Collapsible/CollapsibleGroup/CollapsibleGroup.module.scss +7 -9
  66. package/src/Collapsible/ExpertAdviceCollapsible/ExpertAdviceCollapsible.module.scss +33 -35
  67. package/src/Container/Container.module.scss +9 -11
  68. package/src/Content/Content.module.scss +8 -10
  69. package/src/DateInput/DateInput/DateInput.module.scss +5 -7
  70. package/src/DateInput/DateInputDescription/DateInputDescription.module.scss +13 -15
  71. package/src/DateInput/DateInputWithIconButton/DateInputWithIconButton.module.scss +30 -32
  72. package/src/DatePicker/DatePicker.module.scss +5 -7
  73. package/src/DatePicker/DatePicker.spec.tsx +9 -10
  74. package/src/DatePicker/DatePicker.tsx +2 -2
  75. package/src/DatePicker/subcomponents/DateInputField/DateInputField.module.scss +3 -5
  76. package/src/DateRangePicker/DateRangePicker.module.scss +73 -75
  77. package/src/Divider/Divider.module.scss +33 -35
  78. package/src/EmptyState/EmptyState.module.css +93 -95
  79. package/src/ErrorPage/ErrorPage.module.scss +2 -4
  80. package/src/FieldGroup/FieldGroup.module.scss +6 -8
  81. package/src/FieldMessage/FieldMessage.module.scss +51 -53
  82. package/src/Filter/Filter/Filter.module.css +3 -5
  83. package/src/Filter/Filter/subcomponents/FilterContents/FilterContents.module.css +2 -4
  84. package/src/Filter/Filter/subcomponents/FilterPopover/FilterPopover.module.css +6 -8
  85. package/src/Filter/FilterBar/FilterBar.module.css +15 -17
  86. package/src/Filter/FilterBar/subcomponents/ClearAllButton/ClearAllButton.module.css +5 -7
  87. package/src/Filter/FilterBar/subcomponents/FilterBarButton/FilterBarButton.module.css +2 -4
  88. package/src/Filter/FilterBar/subcomponents/FilterBarDatePicker/FilterBarDatePicker.spec.tsx +2 -4
  89. package/src/Filter/FilterBar/subcomponents/FilterBarDateRangePicker/FilterBarDateRangePicker.spec.tsx +2 -6
  90. package/src/Filter/FilterBar/subcomponents/FilterBarMultiSelect/FilterBarMultiSelect.module.css +3 -5
  91. package/src/Filter/FilterBar/subcomponents/FilterBarMultiSelect/FilterBarMultiSelect.spec.tsx +1 -0
  92. package/src/Filter/FilterBar/subcomponents/FilterBarSelect/FilterBarSelect.tsx +1 -1
  93. package/src/Filter/FilterButton/FilterButton/FilterButton.module.css +17 -19
  94. package/src/Filter/FilterButton/FilterButtonRemovable/FilterButtonRemovable.module.css +2 -4
  95. package/src/Filter/FilterButton/subcomponents/FilterButtonBase/FilterButtonBase.module.scss +40 -42
  96. package/src/Filter/FilterDatePicker/FilterDatePicker.spec.tsx +2 -3
  97. package/src/Filter/FilterDatePicker/subcomponents/DateInputField/DateInputField.module.scss +2 -4
  98. package/src/Filter/FilterDatePicker/subcomponents/FilterDatePickerField/FilterDatePickerField.module.scss +4 -6
  99. package/src/Filter/FilterDatePicker/subcomponents/FilterDatePickerField/FilterDatePickerField.spec.tsx +4 -8
  100. package/src/Filter/FilterDateRangePicker/FilterDateRangePicker.module.css +5 -7
  101. package/src/Filter/FilterDateRangePicker/_docs/FilterDateRangePicker.stories.tsx +2 -2
  102. package/src/Filter/FilterDateRangePicker/subcomponents/DateRangeDisplayLabel/DateRangeDisplayLabel.module.scss +3 -5
  103. package/src/Filter/FilterDateRangePicker/subcomponents/DateRangeInputField/DateRangeInputField.module.scss +34 -36
  104. package/src/Filter/FilterDateRangePicker/subcomponents/DateRangeValidationMessage/DateRangeValidationMessage.module.scss +3 -5
  105. package/src/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/FilterDateRangePickerField.module.scss +5 -7
  106. package/src/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/FilterDateRangePickerField.spec.tsx +8 -14
  107. package/src/Filter/FilterMultiSelect/FilterMultiSelect.tsx +3 -2
  108. package/src/Filter/FilterMultiSelect/_docs/FilterMultiSelect.mdx +8 -0
  109. package/src/Filter/FilterMultiSelect/_docs/FilterMultiSelect.stories.tsx +88 -0
  110. package/src/Filter/FilterMultiSelect/context/MenuTriggerProvider/MenuTriggerProvider.spec.tsx +2 -18
  111. package/src/Filter/FilterMultiSelect/subcomponents/ListBox/ListBox.module.scss +17 -19
  112. package/src/Filter/FilterMultiSelect/subcomponents/ListBoxSection/ListBoxSection.module.scss +12 -14
  113. package/src/Filter/FilterMultiSelect/subcomponents/LoadMoreButton/LoadMoreButton.module.scss +2 -4
  114. package/src/Filter/FilterMultiSelect/subcomponents/MenuLayout/MenuFooter/MenuFooter.module.scss +5 -7
  115. package/src/Filter/FilterMultiSelect/subcomponents/MenuLayout/MenuLoadingSkeleton/MenuLoadingSkeleton.module.scss +6 -8
  116. package/src/Filter/FilterMultiSelect/subcomponents/MenuPopup/MenuPopup.module.scss +21 -17
  117. package/src/Filter/FilterMultiSelect/subcomponents/MenuPopup/MenuPopup.tsx +81 -41
  118. package/src/Filter/FilterMultiSelect/subcomponents/MultiSelectOption/MultiSelectOption.module.scss +88 -90
  119. package/src/Filter/FilterMultiSelect/subcomponents/NoResults/NoResults.module.scss +2 -4
  120. package/src/Filter/FilterMultiSelect/subcomponents/SearchInput/SearchInput.module.scss +3 -5
  121. package/src/Filter/FilterMultiSelect/subcomponents/SectionDivider/SectionDivider.module.scss +2 -4
  122. package/src/Filter/FilterMultiSelect/subcomponents/SelectionControlButton/SelectionControlButton.module.scss +50 -52
  123. package/src/Filter/FilterMultiSelect/subcomponents/Trigger/RemovableFilterTrigger/RemovableFilterTrigger.module.css +2 -4
  124. package/src/Filter/FilterSelect/FilterSelect.module.css +7 -9
  125. package/src/Focusable/Focusable.module.scss +2 -4
  126. package/src/GuidanceBlock/GuidanceBlock.module.css +210 -212
  127. package/src/Heading/Heading.module.scss +85 -87
  128. package/src/Icon/_docs/icon.module.scss +33 -35
  129. package/src/Icon/subcomponents/SVG/SVG.module.scss +24 -26
  130. package/src/Illustration/subcomponents/Base/Base.module.scss +98 -100
  131. package/src/Input/Input/Input.module.scss +215 -217
  132. package/src/Input/InputRange/InputRange.module.scss +136 -138
  133. package/src/Input/InputSearch/InputSearch.module.scss +152 -155
  134. package/src/Label/Label.module.scss +80 -82
  135. package/src/LabelledMessage/LabelledMessage.module.scss +6 -8
  136. package/src/LikertScaleLegacy/LikertScaleLegacy.module.scss +264 -266
  137. package/src/Link/Link.module.css +113 -115
  138. package/src/LinkButton/LinkButton.module.css +3 -5
  139. package/src/Loading/LoadingGraphic/LoadingGraphic.module.scss +10 -12
  140. package/src/Loading/LoadingHeading/LoadingHeading.module.scss +42 -44
  141. package/src/Loading/LoadingInput/LoadingInput.module.scss +9 -11
  142. package/src/Loading/LoadingParagraph/LoadingParagraph.module.scss +45 -47
  143. package/src/Loading/LoadingSpinner/LoadingSpinner.module.css +20 -22
  144. package/src/Loading/_mixins.scss +9 -11
  145. package/src/Menu/subcomponents/MenuDropdown/MenuDropdown.module.scss +16 -18
  146. package/src/Menu/subcomponents/MenuHeading/MenuHeading.module.scss +6 -8
  147. package/src/Menu/subcomponents/MenuItem/MenuItem.module.scss +72 -74
  148. package/src/Menu/subcomponents/MenuList/MenuList.module.scss +12 -14
  149. package/src/Menu/subcomponents/StatelessMenu/StatelessMenu.module.scss +2 -4
  150. package/src/Modal/ConfirmationModal/ConfirmationModal.module.scss +124 -126
  151. package/src/Modal/ContextModal/ContextModal.module.scss +70 -72
  152. package/src/Modal/GenericModal/GenericModal.module.scss +90 -92
  153. package/src/Modal/GenericModal/subcomponents/ModalAccessibleDescription/ModalAccessibleDescription.module.scss +2 -4
  154. package/src/Modal/GenericModal/subcomponents/ModalAccessibleLabel/ModalAccessibleLabel.module.scss +23 -25
  155. package/src/Modal/GenericModal/subcomponents/ModalBody/ModalBody.module.scss +3 -5
  156. package/src/Modal/GenericModal/subcomponents/ModalFooter/ModalFooter.module.scss +53 -55
  157. package/src/Modal/GenericModal/subcomponents/ModalHeader/ModalHeader.module.scss +15 -17
  158. package/src/Modal/InputEditModal/InputEditModal.module.scss +30 -32
  159. package/src/MultiSelect/MultiSelect.module.scss +5 -7
  160. package/src/MultiSelect/subcomponents/Checkbox/Checkbox.module.scss +57 -59
  161. package/src/MultiSelect/subcomponents/MultiSelectOptionField/MultiSelectOptionField.module.scss +53 -55
  162. package/src/MultiSelect/subcomponents/MultiSelectOptions/MultiSelectOptions.module.scss +6 -8
  163. package/src/MultiSelect/subcomponents/MultiSelectToggle/MultiSelectToggle.module.scss +64 -66
  164. package/src/MultiSelect/subcomponents/Popover/Popover.module.scss +13 -15
  165. package/src/Notification/ToastNotification/ToastNotificationsList/ToastNotificationsList.module.scss +19 -21
  166. package/src/Notification/subcomponents/GenericNotification/GenericNotification.module.scss +110 -112
  167. package/src/Notification/subcomponents/GenericNotification/_mixins.scss +276 -278
  168. package/src/Notification/subcomponents/NotificationIcon/NotificationIcon.module.css +2 -4
  169. package/src/Pagination/Pagination.module.scss +37 -39
  170. package/src/Pagination/subcomponents/DirectionalLink/DirectionalLink.module.scss +9 -11
  171. package/src/Pagination/subcomponents/PaginationLink/PaginationLink.module.scss +51 -53
  172. package/src/Pagination/subcomponents/TruncateIndicator/TruncateIndicator.module.css +8 -10
  173. package/src/Popover/Popover.module.scss +185 -187
  174. package/src/ProgressBar/ProgressBar.module.scss +73 -75
  175. package/src/ProgressBar/subcomponents/Label/Label.module.scss +4 -6
  176. package/src/Radio/Radio/Radio.module.scss +58 -60
  177. package/src/Radio/RadioField/RadioField.module.scss +32 -33
  178. package/src/Radio/RadioGroup/RadioGroup.module.scss +16 -18
  179. package/src/RichTextEditor/EditableRichTextContent/EditableRichTextContent.module.scss +30 -32
  180. package/src/RichTextEditor/RichTextContent/RichTextContent.module.scss +2 -4
  181. package/src/RichTextEditor/RichTextEditor/RichTextEditor.module.scss +74 -76
  182. package/src/RichTextEditor/RichTextEditor/subcomponents/ToggleIconButton/ToggleIconButton.module.scss +90 -92
  183. package/src/RichTextEditor/RichTextEditor/subcomponents/Toolbar/Toolbar.module.scss +3 -5
  184. package/src/RichTextEditor/RichTextEditor/subcomponents/ToolbarSection/ToolbarSection.module.scss +10 -12
  185. package/src/RichTextEditor/_mixins.scss +1 -2
  186. package/src/RichTextEditor/utils/plugins/LinkManager/components/LinkModal/LinkModal.module.scss +3 -5
  187. package/src/RichTextEditor/utils/plugins/LinkManager/components/LinkPopover/LinkPopover.module.scss +20 -22
  188. package/src/RichTextEditor/utils/schema/marks.ts +8 -9
  189. package/src/SearchField/SearchField.module.scss +3 -5
  190. package/src/Select/Select.module.scss +0 -17
  191. package/src/Skirt/Skirt.module.scss +22 -24
  192. package/src/Skirt/subcomponents/SkirtCard/SkirtCard.module.scss +11 -13
  193. package/src/Slider/Slider.module.scss +32 -34
  194. package/src/SplitButton/SplitButton.module.scss +3 -5
  195. package/src/SplitButton/subcomponents/ActionButton/ActionButton.module.scss +5 -7
  196. package/src/SplitButton/subcomponents/BaseButton/BaseButton.module.scss +63 -65
  197. package/src/SplitButton/subcomponents/DropdownButton/DropdownButton.module.scss +17 -19
  198. package/src/Table/Table.module.scss +249 -251
  199. package/src/Tabs/subcomponents/Tab.module.scss +79 -81
  200. package/src/Tabs/subcomponents/TabList.module.scss +6 -8
  201. package/src/Tabs/subcomponents/TabPanel.module.scss +8 -10
  202. package/src/Tag/Tag.module.scss +164 -166
  203. package/src/Tag/subcomponents/LiveIcon/LiveIcon.module.css +40 -42
  204. package/src/Text/Text.module.scss +55 -57
  205. package/src/TextArea/TextArea.module.css +100 -103
  206. package/src/TextAreaField/TextAreaField.module.scss +12 -14
  207. package/src/TextField/TextField.module.scss +14 -16
  208. package/src/Tile/MultiActionTile/MultiActionTile.module.scss +5 -7
  209. package/src/Tile/TileGrid/TileGrid.module.scss +16 -18
  210. package/src/Tile/subcomponents/GenericTile/GenericTile.module.scss +121 -123
  211. package/src/TimeField/TimeField.module.scss +55 -57
  212. package/src/TimeField/subcomponents/TimeSegment/TimeSegment.module.scss +35 -37
  213. package/src/TitleBlockZen/TitleBlockZen.module.scss +505 -507
  214. package/src/TitleBlockZen/subcomponents/MainActions.module.scss +9 -11
  215. package/src/TitleBlockZen/subcomponents/MobileActions.module.scss +144 -146
  216. package/src/TitleBlockZen/subcomponents/NavigationTabs.module.scss +103 -105
  217. package/src/TitleBlockZen/subcomponents/TitleBlockMenuItem.module.scss +72 -74
  218. package/src/TitleBlockZen/subcomponents/Toolbar.module.scss +26 -28
  219. package/src/ToggleSwitch/ToggleSwitch/ToggleSwitch.module.scss +103 -105
  220. package/src/ToggleSwitch/ToggleSwitchField/ToggleSwitchField.module.scss +9 -11
  221. package/src/Tooltip/Tooltip.module.scss +137 -139
  222. package/src/VisuallyHidden/VisuallyHidden.module.scss +8 -10
  223. package/src/Well/Well.module.css +102 -104
  224. package/src/Workflow/subcomponents/Footer/components/FooterActions/FooterActions.module.css +12 -14
  225. package/src/Workflow/subcomponents/Footer/components/ProgressStepper/ProgressStepper.module.css +99 -101
  226. package/src/Workflow/subcomponents/Footer/components/Root/FooterRoot.module.css +17 -19
  227. package/src/Workflow/subcomponents/Header/components/Actions/Actions.module.css +12 -14
  228. package/src/Workflow/subcomponents/Header/components/Branding/Branding.module.css +10 -12
  229. package/src/Workflow/subcomponents/Header/components/Root/Root.module.css +17 -19
  230. package/src/Workflow/subcomponents/Header/components/Titles/Titles.module.css +17 -19
  231. package/src/Workflow/subcomponents/Main/Main.module.css +3 -5
  232. package/src/Workflow/subcomponents/Wrapper/Wrapper.module.css +6 -8
  233. package/src/__next__/Button/Button.module.css +218 -220
  234. package/src/__next__/Button/subcomponents/ButtonContent/ButtonContent.module.css +15 -17
  235. package/src/__next__/Button/subcomponents/PendingContent/PendingContent.module.css +13 -15
  236. package/src/__next__/Icon/Icon.module.css +38 -40
  237. package/src/__next__/Icon/_docs/Icon.docs.module.css +11 -13
  238. package/src/__next__/Menu/Menu.module.css +28 -30
  239. package/src/__next__/Menu/MenuItem.module.css +39 -41
  240. package/src/__next__/Select/Select.module.scss +6 -8
  241. package/src/__next__/Select/subcomponents/ListBox/ListBox.module.scss +10 -12
  242. package/src/__next__/Select/subcomponents/ListBoxSection/ListBoxSection.module.scss +13 -15
  243. package/src/__next__/Select/subcomponents/Option/Option.module.scss +51 -53
  244. package/src/__next__/Select/subcomponents/SectionDivider/SectionDivider.module.scss +6 -8
  245. package/src/__next__/Select/subcomponents/SelectPopoverContents/SelectPopoverContents.module.scss +2 -4
  246. package/src/__next__/Select/subcomponents/SelectToggle/SelectToggle.module.scss +103 -105
  247. package/src/__next__/Tabs/subcomponents/Tab/Tab.module.css +79 -81
  248. package/src/__next__/Tabs/subcomponents/TabList/TabList.module.css +54 -56
  249. package/src/__next__/Tabs/subcomponents/TabPanel/TabPanel.module.css +8 -10
  250. package/src/__next__/Tag/RemovableTag/RemovableTag.module.scss +4 -6
  251. package/src/__next__/Tag/RemovableTag/subcomponents/RemoveButton.module.scss +24 -26
  252. package/src/__next__/Tag/Tag/Tag.module.scss +54 -56
  253. package/src/__next__/Tooltip/OverlayArrow.module.scss +38 -40
  254. package/src/__next__/Tooltip/Tooltip.module.scss +37 -39
  255. package/src/__next__/Tooltip/_docs/ApiSpecification.mdx +2 -2
  256. package/src/__next__/Tooltip/_docs/Tooltip.docs.stories.tsx +30 -15
  257. package/src/__next__/Tooltip/_docs/Tooltip.mdx +1 -1
  258. package/src/__next__/Tooltip/_docs/Tooltip.spec.stories.tsx +58 -21
  259. package/src/__next__/Tooltip/_docs/Tooltip.stories.tsx +2 -2
  260. package/src/utils/AppearanceAnim.module.scss +12 -14
@@ -1,4 +1,5 @@
1
1
  import React, { useState } from 'react'
2
+ import { autoPlacement, offset, size } from '@floating-ui/react-dom'
2
3
  import type { Selection } from '@react-types/shared'
3
4
  import type { Meta, StoryObj } from '@storybook/react'
4
5
  import isChromatic from 'chromatic'
@@ -308,3 +309,90 @@ export const WithSectionNotification: Story = {
308
309
  chromatic: { disable: false },
309
310
  },
310
311
  }
312
+
313
+ export const AboveIfAvailable: Story = {
314
+ name: 'Limited viewport autoplacement above',
315
+ parameters: {
316
+ viewport: {
317
+ viewports: {
318
+ LimitedViewportAutoPlace: {
319
+ name: 'Limited vertical space',
320
+ styles: {
321
+ width: '1024px',
322
+ height: '500px',
323
+ },
324
+ },
325
+ },
326
+ defaultViewport: 'LimitedViewportAutoPlace',
327
+ },
328
+ },
329
+ decorators: [
330
+ (Story) => (
331
+ <div className="mt-[350px]">
332
+ <Story />
333
+ </div>
334
+ ),
335
+ ],
336
+ }
337
+
338
+ export const WithFloatingOptions: Story = {
339
+ name: 'With floatingOptions',
340
+ parameters: {
341
+ viewport: {
342
+ viewports: {
343
+ LimitedViewportAutoPlace: {
344
+ name: 'Limited vertical space',
345
+ styles: {
346
+ width: '1024px',
347
+ height: '500px',
348
+ },
349
+ },
350
+ },
351
+ defaultViewport: 'LimitedViewportAutoPlace',
352
+ },
353
+ },
354
+ args: {
355
+ floatingOptions: {
356
+ strategy: 'fixed',
357
+ middleware: [
358
+ size({
359
+ apply({ availableHeight, availableWidth, elements }) {
360
+ Object.assign(elements.floating.style, {
361
+ maxHeight: `${Math.max(300, availableHeight - 25)}px`,
362
+ maxWidth: `${availableWidth}px`,
363
+ })
364
+ },
365
+ }),
366
+ offset(6),
367
+ autoPlacement({
368
+ allowedPlacements: ['bottom-start', 'bottom', 'top-start', 'top'],
369
+ }),
370
+ ],
371
+ },
372
+ },
373
+ decorators: [
374
+ (Story) => (
375
+ <div className="mt-[350px]">
376
+ <Story />
377
+ </div>
378
+ ),
379
+ ],
380
+ render: (args) => {
381
+ const [selectedKeys, setSelectedKeys] = useState<Selection | undefined>(args.selectedKeys)
382
+ console.log(args)
383
+
384
+ return (
385
+ <FilterMultiSelect
386
+ {...args}
387
+ onSelectionChange={setSelectedKeys}
388
+ selectedKeys={selectedKeys}
389
+ trigger={(): JSX.Element => (
390
+ <FilterMultiSelect.TriggerButton
391
+ selectedOptionLabels={getSelectedOptionLabels(selectedKeys, args.items)}
392
+ label={args.label}
393
+ />
394
+ )}
395
+ />
396
+ )
397
+ },
398
+ }
@@ -1,7 +1,6 @@
1
1
  import React from 'react'
2
2
  import { render, screen, waitFor } from '@testing-library/react'
3
3
  import userEvent from '@testing-library/user-event'
4
- import { vi } from 'vitest'
5
4
  import { FilterTriggerButton } from '~components/Filter/FilterMultiSelect/subcomponents/Trigger'
6
5
  import { MenuPopup } from '../../subcomponents/MenuPopup'
7
6
  import { MenuTriggerProvider, type MenuTriggerProviderProps } from './MenuTriggerProvider'
@@ -53,15 +52,11 @@ describe('<MenuTriggerProvider /> - Visual content', () => {
53
52
  rerender(<MenuTriggerProviderWrapper isOpen={false} />)
54
53
  expect(screen.queryByText('menu-content-mock')).not.toBeInTheDocument()
55
54
  })
56
-
57
- it('fires the onOpenChange callback when the trigger is interacted', async () => {
55
+ it('fires the onOpenChange callback on user interaction to close the menu', async () => {
58
56
  const onOpenChange = vi.fn()
59
57
  render(<MenuTriggerProviderWrapper isOpen onOpenChange={onOpenChange} />)
60
58
 
61
- const trigger = screen.getByRole('button', {
62
- name: 'trigger-display-label-mock',
63
- })
64
- await user.click(trigger)
59
+ await user.keyboard('{Escape}')
65
60
 
66
61
  await waitFor(() => {
67
62
  expect(onOpenChange).toBeCalledTimes(1)
@@ -86,17 +81,6 @@ describe('<MenuTriggerProvider /> - Mouse interaction', () => {
86
81
  })
87
82
 
88
83
  describe('Given the menu is opened', () => {
89
- it('is closed when user clicks on the trigger', async () => {
90
- render(<MenuTriggerProviderWrapper defaultOpen />)
91
- const trigger = screen.getByRole('button', {
92
- name: 'trigger-display-label-mock',
93
- })
94
- await user.click(trigger)
95
- await waitFor(() => {
96
- expect(screen.queryByText('menu-content-mock')).not.toBeInTheDocument()
97
- })
98
- })
99
-
100
84
  it('is closed when user clicks outside of the menu', async () => {
101
85
  render(<MenuTriggerProviderWrapper defaultOpen />)
102
86
  await user.click(document.body)
@@ -1,25 +1,23 @@
1
1
  @import '~@kaizen/design-tokens/sass/spacing';
2
2
 
3
- @layer kz-components {
4
- .listBox {
5
- list-style: none;
6
- padding: $spacing-sm;
7
- margin: 0 $spacing-sm 0 0;
8
- display: grid;
9
- max-height: 22rem;
10
- overflow-y: auto;
11
- }
3
+ .listBox {
4
+ list-style: none;
5
+ padding: $spacing-sm;
6
+ margin: 0 $spacing-sm 0 0;
7
+ display: grid;
8
+ max-height: 22rem;
9
+ overflow-y: auto;
10
+ }
12
11
 
13
- .overflown {
14
- padding-right: $spacing-sm;
15
- }
12
+ .overflown {
13
+ padding-right: $spacing-sm;
14
+ }
16
15
 
17
- .hidden {
18
- display: none;
19
- }
16
+ .hidden {
17
+ display: none;
18
+ }
20
19
 
21
- // this is a div but remove styles briefly flickering to a bullet list as the sections are removed
22
- .noResultsWrapper {
23
- list-style: none;
24
- }
20
+ // this is a div but remove styles briefly flickering to a bullet list as the sections are removed
21
+ .noResultsWrapper {
22
+ list-style: none;
25
23
  }
@@ -2,19 +2,17 @@
2
2
  @import '~@kaizen/design-tokens/sass/color';
3
3
  @import '~@kaizen/design-tokens/sass/spacing';
4
4
 
5
- @layer kz-components {
6
- .listBoxSection {
7
- display: grid;
8
- list-style: none;
9
- padding: 0;
10
- }
5
+ .listBoxSection {
6
+ display: grid;
7
+ list-style: none;
8
+ padding: 0;
9
+ }
11
10
 
12
- .listBoxSectionHeader {
13
- font-family: $typography-heading-6-font-family;
14
- font-size: $typography-heading-6-font-size;
15
- font-weight: $typography-heading-6-font-weight;
16
- line-height: $typography-heading-6-line-height;
17
- color: rgba($color-purple-800-rgb, 0.7);
18
- margin: $spacing-6 0;
19
- }
11
+ .listBoxSectionHeader {
12
+ font-family: $typography-heading-6-font-family;
13
+ font-size: $typography-heading-6-font-size;
14
+ font-weight: $typography-heading-6-font-weight;
15
+ line-height: $typography-heading-6-line-height;
16
+ color: rgba($color-purple-800-rgb, 0.7);
17
+ margin: $spacing-6 0;
20
18
  }
@@ -1,7 +1,5 @@
1
1
  @import '~@kaizen/design-tokens/sass/spacing';
2
2
 
3
- @layer kz-components {
4
- .container {
5
- padding: $spacing-sm $spacing-sm 0;
6
- }
3
+ .container {
4
+ padding: $spacing-sm $spacing-sm 0;
7
5
  }
@@ -1,11 +1,9 @@
1
1
  @import '~@kaizen/design-tokens/sass/color';
2
2
  @import '~@kaizen/design-tokens/sass/spacing';
3
3
 
4
- @layer kz-components {
5
- .footer {
6
- border-top: 1px solid rgba($color-gray-600-rgb, 0.1);
7
- gap: $spacing-xs;
8
- display: flex;
9
- padding: $spacing-sm $spacing-sm 0;
10
- }
4
+ .footer {
5
+ border-top: 1px solid rgba($color-gray-600-rgb, 0.1);
6
+ gap: $spacing-xs;
7
+ display: flex;
8
+ padding: $spacing-sm $spacing-sm 0;
11
9
  }
@@ -1,12 +1,10 @@
1
1
  @import '~@kaizen/design-tokens/sass/spacing';
2
2
 
3
- @layer kz-components {
4
- .loadingInput {
5
- margin-bottom: $spacing-sm;
6
- }
3
+ .loadingInput {
4
+ margin-bottom: $spacing-sm;
5
+ }
7
6
 
8
- .loadingContainer {
9
- margin-left: $spacing-sm;
10
- margin-right: $spacing-sm;
11
- }
7
+ .loadingContainer {
8
+ margin-left: $spacing-sm;
9
+ margin-right: $spacing-sm;
12
10
  }
@@ -3,22 +3,26 @@
3
3
  @import '~@kaizen/design-tokens/sass/border';
4
4
  @import '~@kaizen/design-tokens/sass/color';
5
5
 
6
- @layer kz-components {
7
- // figma hard coded: https://www.figma.com/file/eZKEE5kXbEMY3lx84oz8iN/%E2%9D%A4%EF%B8%8F-UI-Kit%3A-Heart?node-id=22814%3A96966
8
- $menu-container-width: 294px;
9
- $menu-container-max-height: 312px;
6
+ // figma hard coded: https://www.figma.com/file/eZKEE5kXbEMY3lx84oz8iN/%E2%9D%A4%EF%B8%8F-UI-Kit%3A-Heart?node-id=22814%3A96966
7
+ $menu-container-width: 294px;
8
+ $menu-container-max-height: 312px;
10
9
 
11
- .menuPopup {
12
- position: absolute;
13
- z-index: 1000; // from $ca-z-index-dropdown
14
- box-sizing: border-box;
15
- background: $color-white;
16
- color: $color-purple-800;
17
- border-radius: $border-solid-border-radius;
18
- box-shadow: $shadow-large-box-shadow;
19
- padding: $spacing-sm 0;
20
- margin-top: $spacing-xs;
21
- text-align: start;
22
- width: $menu-container-width;
23
- }
10
+ .menuPopup {
11
+ z-index: 1000; // from $ca-z-index-dropdown
12
+ box-sizing: border-box;
13
+ background: $color-white;
14
+ color: $color-purple-800;
15
+ border-radius: $border-solid-border-radius;
16
+ box-shadow: $shadow-large-box-shadow;
17
+ padding: $spacing-sm 0;
18
+ margin-top: $spacing-xs;
19
+ text-align: start;
20
+ width: $menu-container-width;
21
+ // scrollbar-width: none;
22
+ }
23
+
24
+ .menuPopup[popover]:popover-open {
25
+ z-index: unset;
26
+ margin: 0;
27
+ inset: unset;
24
28
  }
@@ -1,58 +1,98 @@
1
- import React from 'react'
2
- import { FocusScope } from '@react-aria/focus'
3
- import { DismissButton, useOverlay } from '@react-aria/overlays'
1
+ import React, { useEffect, useState, type HTMLAttributes } from 'react'
2
+ import {
3
+ autoPlacement,
4
+ autoUpdate,
5
+ offset,
6
+ size,
7
+ useFloating,
8
+ type UseFloatingOptions,
9
+ } from '@floating-ui/react-dom'
10
+ import classnames from 'classnames'
11
+ import { FocusOn } from 'react-focus-on'
12
+ import { type OverrideClassName } from '~components/types/OverrideClassName'
4
13
  import { useMenuTriggerContext } from '../../context'
5
14
  import styles from './MenuPopup.module.scss'
6
15
 
7
16
  export type MenuPopupProps = {
17
+ children: React.ReactNode
18
+ floatingOptions?: Partial<UseFloatingOptions>
8
19
  isLoading?: boolean
9
20
  loadingSkeleton?: React.ReactNode
10
- children: React.ReactNode
11
- }
21
+ } & OverrideClassName<HTMLAttributes<HTMLDivElement>>
12
22
 
13
23
  export const MenuPopup = ({
24
+ children,
25
+ floatingOptions,
26
+ classNameOverride,
14
27
  isLoading,
15
28
  loadingSkeleton,
16
- children,
29
+ ...restProps
17
30
  }: MenuPopupProps): JSX.Element => {
18
- const { menuTriggerState } = useMenuTriggerContext()
19
-
20
- const onClose = (): void => menuTriggerState.close()
21
-
22
- // Handle events that should cause the menu to close,
23
- // e.g. blur, clicking outside, or pressing the escape key.
24
- const overlayRef = React.createRef<HTMLDivElement>()
25
- const { overlayProps } = useOverlay(
26
- {
27
- onClose,
28
- isOpen: menuTriggerState.isOpen,
29
- isDismissable: true,
31
+ const [floatingElement, setFloatingElement] = useState<HTMLDivElement | null>(null)
32
+ const { menuTriggerState, buttonRef } = useMenuTriggerContext()
33
+
34
+ const referenceElement = buttonRef.current
35
+
36
+ const { floatingStyles, update } = useFloating({
37
+ placement: 'bottom-start',
38
+ elements: {
39
+ reference: referenceElement,
40
+ floating: floatingElement,
30
41
  },
31
- overlayRef,
32
- )
42
+ strategy: 'absolute',
43
+ middleware: [
44
+ size({
45
+ apply({ availableWidth, elements }) {
46
+ Object.assign(elements.floating.style, {
47
+ maxHeight: `${Math.max(320, 550)}px`,
48
+ maxWidth: `${availableWidth}px`,
49
+ })
50
+ },
51
+ }),
52
+ offset(6),
53
+ autoPlacement({
54
+ allowedPlacements: ['bottom-start', 'bottom', 'top-start', 'top'],
55
+ }),
56
+ ],
57
+ whileElementsMounted: autoUpdate,
58
+ ...floatingOptions,
59
+ })
60
+
61
+ const handleReturnFocus = (): void => {
62
+ requestAnimationFrame(() => {
63
+ buttonRef.current?.focus()
64
+ })
65
+ }
66
+
67
+ useEffect(() => {
68
+ if (floatingElement && referenceElement) {
69
+ floatingElement.showPopover?.()
70
+ update()
71
+ }
72
+ }, [floatingElement, referenceElement, update])
33
73
 
34
- // Wrap in <FocusScope> so that focus is restored back to the trigger when the menu is closed
35
- // and auto focus on the first focusable item after loading. (disable eslint no-autofocus error for it)
36
- // In addition, add hidden <DismissButton> components at the start and end of the list
37
- // to allow screen reader users to dismiss the popup easily.
38
74
  return menuTriggerState.isOpen ? (
39
- <div {...overlayProps} ref={overlayRef} className={styles.menuPopup}>
40
- {isLoading && loadingSkeleton ? (
41
- <>
42
- <DismissButton onDismiss={onClose} />
43
- {loadingSkeleton}
44
- <DismissButton onDismiss={onClose} />
45
- </>
46
- ) : (
47
- // eslint-disable-next-line jsx-a11y/no-autofocus
48
- <FocusScope contain autoFocus restoreFocus>
49
- <DismissButton onDismiss={onClose} />
50
-
51
- {children}
52
- <DismissButton onDismiss={onClose} />
53
- </FocusScope>
54
- )}
55
- </div>
75
+ <FocusOn
76
+ enabled={menuTriggerState.isOpen}
77
+ scrollLock={false}
78
+ returnFocus={false}
79
+ onClickOutside={menuTriggerState.close}
80
+ onEscapeKey={menuTriggerState.close}
81
+ onDeactivation={handleReturnFocus}
82
+ >
83
+ <div
84
+ ref={setFloatingElement}
85
+ style={floatingStyles}
86
+ className={classnames(styles.menuPopup, classNameOverride)}
87
+ role="dialog"
88
+ aria-modal="true"
89
+ // @ts-expect-error: popover is valid in supported browsers
90
+ popover="manual"
91
+ {...restProps}
92
+ >
93
+ {isLoading && loadingSkeleton ? loadingSkeleton : children}
94
+ </div>
95
+ </FocusOn>
56
96
  ) : (
57
97
  <></>
58
98
  )
@@ -3,112 +3,110 @@
3
3
  @import '~@kaizen/design-tokens/sass/typography';
4
4
  @import '~@kaizen/design-tokens/sass/spacing';
5
5
 
6
- @layer kz-components {
7
- $iconAndBadgeHeight: $spacing-md;
8
-
9
- .icon {
10
- line-height: 1;
11
- height: calc(#{$iconAndBadgeHeight} - #{$border-solid-border-width} * 2);
12
- width: calc(#{$iconAndBadgeHeight} - #{$border-solid-border-width} * 2);
13
- border: $border-solid-border-width $border-solid-border-style;
14
- border-color: $color-gray-500;
15
- border-radius: $border-solid-border-radius;
16
- display: inline-flex;
17
- justify-content: center;
18
- align-items: center;
19
- }
20
-
21
- .option {
22
- height: fit-content;
23
- align-items: flex-start;
24
- display: inline-grid;
25
- grid-template-columns: $spacing-md 1fr auto;
26
- gap: $spacing-xs;
27
- padding: $spacing-xs;
28
- position: relative;
29
- font-family: $typography-paragraph-body-font-family;
30
- font-size: $typography-paragraph-body-font-size;
31
- letter-spacing: $typography-paragraph-body-letter-spacing;
32
- font-weight: $typography-paragraph-body-font-weight;
33
- line-height: $typography-paragraph-body-line-height;
34
- border: $border-solid-border-width $border-solid-border-style;
35
- border-color: $border-borderless-border-color;
36
- border-radius: $border-solid-border-radius;
37
- cursor: default;
38
-
39
- &:hover,
40
- &:active,
41
- &:focus {
42
- background-color: $color-blue-100;
43
-
44
- .badge {
45
- background-color: $color-white;
46
- }
47
-
48
- .icon {
49
- border-color: $color-gray-600;
50
- background-color: $color-gray-200;
51
- }
52
- }
6
+ $iconAndBadgeHeight: $spacing-md;
7
+
8
+ .icon {
9
+ line-height: 1;
10
+ height: calc(#{$iconAndBadgeHeight} - #{$border-solid-border-width} * 2);
11
+ width: calc(#{$iconAndBadgeHeight} - #{$border-solid-border-width} * 2);
12
+ border: $border-solid-border-width $border-solid-border-style;
13
+ border-color: $color-gray-500;
14
+ border-radius: $border-solid-border-radius;
15
+ display: inline-flex;
16
+ justify-content: center;
17
+ align-items: center;
18
+ }
53
19
 
54
- &.isFocused,
55
- &:focus-visible {
56
- background-color: $color-blue-100;
57
-
58
- &::after {
59
- $focus-ring-offset: calc((#{$border-focus-ring-border-width} * 2) + 1px);
60
-
61
- content: '';
62
- position: absolute;
63
- background: transparent;
64
- border: $border-focus-ring-border-width $border-focus-ring-border-style $color-blue-500;
65
- border-radius: $border-focus-ring-border-radius;
66
- inset: calc(-1 * #{$focus-ring-offset});
67
- z-index: 1; // show border when sibling option is hovered
68
- }
20
+ .option {
21
+ height: fit-content;
22
+ align-items: flex-start;
23
+ display: inline-grid;
24
+ grid-template-columns: $spacing-md 1fr auto;
25
+ gap: $spacing-xs;
26
+ padding: $spacing-xs;
27
+ position: relative;
28
+ font-family: $typography-paragraph-body-font-family;
29
+ font-size: $typography-paragraph-body-font-size;
30
+ letter-spacing: $typography-paragraph-body-letter-spacing;
31
+ font-weight: $typography-paragraph-body-font-weight;
32
+ line-height: $typography-paragraph-body-line-height;
33
+ border: $border-solid-border-width $border-solid-border-style;
34
+ border-color: $border-borderless-border-color;
35
+ border-radius: $border-solid-border-radius;
36
+ cursor: default;
37
+
38
+ &:hover,
39
+ &:active,
40
+ &:focus {
41
+ background-color: $color-blue-100;
42
+
43
+ .badge {
44
+ background-color: $color-white;
69
45
  }
70
46
 
71
- &:focus {
72
- outline: none; // cancel browser style
47
+ .icon {
48
+ border-color: $color-gray-600;
49
+ background-color: $color-gray-200;
73
50
  }
74
51
  }
75
52
 
76
- .isDisabled {
77
- opacity: 30%;
78
- background: none;
53
+ &.isFocused,
54
+ &:focus-visible {
55
+ background-color: $color-blue-100;
79
56
 
80
- &:hover {
81
- .icon {
82
- border-color: $color-gray-500;
83
- }
57
+ &::after {
58
+ $focus-ring-offset: calc((#{$border-focus-ring-border-width} * 2) + 1px);
84
59
 
85
- .badge {
86
- background-color: $color-gray-300;
87
- }
60
+ content: '';
61
+ position: absolute;
62
+ background: transparent;
63
+ border: $border-focus-ring-border-width $border-focus-ring-border-style $color-blue-500;
64
+ border-radius: $border-focus-ring-border-radius;
65
+ inset: calc(-1 * #{$focus-ring-offset});
66
+ z-index: 1; // show border when sibling option is hovered
88
67
  }
89
68
  }
90
69
 
91
- .badgeContainer {
92
- // Must be the same height as .icon, so they align vertically
93
- height: $iconAndBadgeHeight;
94
- display: flex;
95
- align-items: center;
70
+ &:focus {
71
+ outline: none; // cancel browser style
96
72
  }
73
+ }
74
+
75
+ .isDisabled {
76
+ opacity: 30%;
77
+ background: none;
97
78
 
98
- .isSelected {
99
- font-weight: $typography-paragraph-bold-font-weight;
79
+ &:hover {
80
+ .icon {
81
+ border-color: $color-gray-500;
82
+ }
100
83
 
101
- &.icon {
102
- background-color: $color-gray-500;
103
- color: $color-white;
84
+ .badge {
85
+ background-color: $color-gray-300;
104
86
  }
87
+ }
88
+ }
89
+
90
+ .badgeContainer {
91
+ // Must be the same height as .icon, so they align vertically
92
+ height: $iconAndBadgeHeight;
93
+ display: flex;
94
+ align-items: center;
95
+ }
96
+
97
+ .isSelected {
98
+ font-weight: $typography-paragraph-bold-font-weight;
99
+
100
+ &.icon {
101
+ background-color: $color-gray-500;
102
+ color: $color-white;
103
+ }
105
104
 
106
- &:hover,
107
- &:active,
108
- &:focus {
109
- .icon {
110
- background-color: $color-gray-600;
111
- }
105
+ &:hover,
106
+ &:active,
107
+ &:focus {
108
+ .icon {
109
+ background-color: $color-gray-600;
112
110
  }
113
111
  }
114
112
  }
@@ -1,5 +1,3 @@
1
- @layer kz-components {
2
- .container {
3
- padding: 1.125rem; // There's no spacing token for 18px -_-
4
- }
1
+ .container {
2
+ padding: 1.125rem; // There's no spacing token for 18px -_-
5
3
  }
@@ -1,8 +1,6 @@
1
1
  @import '~@kaizen/design-tokens/sass/spacing';
2
2
 
3
- @layer kz-components {
4
- .inputSearchContainer {
5
- position: relative;
6
- margin: 0 $spacing-sm;
7
- }
3
+ .inputSearchContainer {
4
+ position: relative;
5
+ margin: 0 $spacing-sm;
8
6
  }