@televet/kibble-ui 4.0.0-beta.15 → 4.0.0-beta.17
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.
- package/README.md +40 -0
- package/dist/chunks/{alert.types-Bnf8isvq.js → alert.types-CiHDB6qK.js} +2 -2
- package/dist/chunks/{alert.types-Bnf8isvq.js.map → alert.types-CiHDB6qK.js.map} +1 -1
- package/dist/chunks/{alert.types-kskv5PHB.js → alert.types-CvARYqVc.js} +3 -3
- package/dist/chunks/{alert.types-kskv5PHB.js.map → alert.types-CvARYqVc.js.map} +1 -1
- package/dist/chunks/{avatar.component-Coq-0l7p.js → avatar.component-B14bRpeL.js} +2 -2
- package/dist/chunks/{avatar.component-Coq-0l7p.js.map → avatar.component-B14bRpeL.js.map} +1 -1
- package/dist/chunks/{avatar.component-DzvE2D-d.js → avatar.component-DLqm7tQt.js} +2 -2
- package/dist/chunks/{avatar.component-DzvE2D-d.js.map → avatar.component-DLqm7tQt.js.map} +1 -1
- package/dist/chunks/{avatarGroup.component-DES1ekL9.js → avatarGroup.component-4kVezqP-.js} +2 -2
- package/dist/chunks/{avatarGroup.component-DES1ekL9.js.map → avatarGroup.component-4kVezqP-.js.map} +1 -1
- package/dist/chunks/{avatarGroup.component-D-U0aMDv.js → avatarGroup.component-DIDIECGK.js} +2 -2
- package/dist/chunks/{avatarGroup.component-D-U0aMDv.js.map → avatarGroup.component-DIDIECGK.js.map} +1 -1
- package/dist/chunks/{button.component-BiW8RE1U.js → button.component-CA9bIFbq.js} +2 -2
- package/dist/chunks/{button.component-BiW8RE1U.js.map → button.component-CA9bIFbq.js.map} +1 -1
- package/dist/chunks/{button.component-Dufh_y5v.js → button.component-DDjwI0xh.js} +2 -2
- package/dist/chunks/{button.component-Dufh_y5v.js.map → button.component-DDjwI0xh.js.map} +1 -1
- package/dist/chunks/{buttonGroup.component-DcCHtB7Q.js → buttonGroup.component-BLRJnRJW.js} +3 -3
- package/dist/chunks/{buttonGroup.component-DcCHtB7Q.js.map → buttonGroup.component-BLRJnRJW.js.map} +1 -1
- package/dist/chunks/{buttonGroup.component-sM0NngWF.js → buttonGroup.component-DKnPmFIM.js} +2 -2
- package/dist/chunks/{buttonGroup.component-sM0NngWF.js.map → buttonGroup.component-DKnPmFIM.js.map} +1 -1
- package/dist/chunks/{checkbox.component-DgyH37fL.js → checkbox.component-BN9GeeiB.js} +2 -2
- package/dist/chunks/{checkbox.component-DgyH37fL.js.map → checkbox.component-BN9GeeiB.js.map} +1 -1
- package/dist/chunks/{checkbox.component-DQVpdkqO.js → checkbox.component-BnNl7j1h.js} +2 -2
- package/dist/chunks/{checkbox.component-DQVpdkqO.js.map → checkbox.component-BnNl7j1h.js.map} +1 -1
- package/dist/chunks/{checkboxGroup.component-CcjCexJ4.js → checkboxGroup.component-CMSLo_U5.js} +2 -2
- package/dist/chunks/{checkboxGroup.component-CcjCexJ4.js.map → checkboxGroup.component-CMSLo_U5.js.map} +1 -1
- package/dist/chunks/{checkboxGroup.component-C8cndZPg.js → checkboxGroup.component-DNwf69Ss.js} +3 -3
- package/dist/chunks/{checkboxGroup.component-C8cndZPg.js.map → checkboxGroup.component-DNwf69Ss.js.map} +1 -1
- package/dist/chunks/{conversationCard.component-DKIHpfpL.js → conversationCard.component-CAKvEh_2.js} +5 -5
- package/dist/chunks/{conversationCard.component-DKIHpfpL.js.map → conversationCard.component-CAKvEh_2.js.map} +1 -1
- package/dist/chunks/{conversationCard.component-CcWQpwrW.js → conversationCard.component-D56k22in.js} +2 -2
- package/dist/chunks/{conversationCard.component-CcWQpwrW.js.map → conversationCard.component-D56k22in.js.map} +1 -1
- package/dist/chunks/{datePicker.component-Q_KcgvIw.js → datePicker.component-D1WtrZJd.js} +5 -5
- package/dist/chunks/{datePicker.component-Q_KcgvIw.js.map → datePicker.component-D1WtrZJd.js.map} +1 -1
- package/dist/chunks/{datePicker.component-BthgWsMj.js → datePicker.component-ZmMJoE3c.js} +2 -2
- package/dist/chunks/{datePicker.component-BthgWsMj.js.map → datePicker.component-ZmMJoE3c.js.map} +1 -1
- package/dist/chunks/icon.component-CzjzLiO_.js +2 -0
- package/dist/chunks/{icon.component-Bmtf4XKw.js.map → icon.component-CzjzLiO_.js.map} +1 -1
- package/dist/chunks/{icon.component-B-BWWGO3.js → icon.component-w5bWbfVU.js} +2 -2
- package/dist/chunks/{icon.component-B-BWWGO3.js.map → icon.component-w5bWbfVU.js.map} +1 -1
- package/dist/chunks/{link.component-DZnXQz1W.js → link.component-Cmdnhc-F.js} +2 -2
- package/dist/chunks/{link.component-DZnXQz1W.js.map → link.component-Cmdnhc-F.js.map} +1 -1
- package/dist/chunks/{link.component-COhBuuX3.js → link.component-DGC1Xu5B.js} +2 -2
- package/dist/chunks/{link.component-COhBuuX3.js.map → link.component-DGC1Xu5B.js.map} +1 -1
- package/dist/chunks/{menu.component-BEj878EN.js → menu.component-BCRZgrRr.js} +2 -2
- package/dist/chunks/{menu.component-BEj878EN.js.map → menu.component-BCRZgrRr.js.map} +1 -1
- package/dist/chunks/{menu.component-CR9SH_jk.js → menu.component-Bscyjw7R.js} +5 -5
- package/dist/chunks/{menu.component-CR9SH_jk.js.map → menu.component-Bscyjw7R.js.map} +1 -1
- package/dist/chunks/{modal.types-ChWBgALC.js → modal.types-BfXHtZ4i.js} +2 -2
- package/dist/chunks/{modal.types-ChWBgALC.js.map → modal.types-BfXHtZ4i.js.map} +1 -1
- package/dist/chunks/{modal.types-CofEmV4v.js → modal.types-CELCFObr.js} +2 -2
- package/dist/chunks/{modal.types-CofEmV4v.js.map → modal.types-CELCFObr.js.map} +1 -1
- package/dist/chunks/{popover.component-CzYfOF7z.js → popover.component-CW5KsTYh.js} +2 -2
- package/dist/chunks/{popover.component-CzYfOF7z.js.map → popover.component-CW5KsTYh.js.map} +1 -1
- package/dist/chunks/{popover.component-C1e_jTLD.js → popover.component-CzKeBedr.js} +2 -2
- package/dist/chunks/{popover.component-C1e_jTLD.js.map → popover.component-CzKeBedr.js.map} +1 -1
- package/dist/chunks/{radioGroup.component-B1ZdhI8z.js → radioGroup.component-DP9JgY1J.js} +2 -2
- package/dist/chunks/radioGroup.component-DP9JgY1J.js.map +1 -0
- package/dist/chunks/{radioGroup.component-CsmHziwM.js → radioGroup.component-kn8czn3N.js} +3 -3
- package/dist/chunks/radioGroup.component-kn8czn3N.js.map +1 -0
- package/dist/chunks/{ratingDots.component-DFHojz_X.js → ratingDots.component-D0FX80wA.js} +2 -2
- package/dist/chunks/{ratingDots.component-DFHojz_X.js.map → ratingDots.component-D0FX80wA.js.map} +1 -1
- package/dist/chunks/{ratingDots.component-HugaFu0D.js → ratingDots.component-D5-xY2db.js} +2 -2
- package/dist/chunks/{ratingDots.component-HugaFu0D.js.map → ratingDots.component-D5-xY2db.js.map} +1 -1
- package/dist/chunks/{select.component-h5lPMmWB.js → select.component-CQQ4z--7.js} +2 -2
- package/dist/chunks/{select.component-h5lPMmWB.js.map → select.component-CQQ4z--7.js.map} +1 -1
- package/dist/chunks/{select.component-HI7aJx11.js → select.component-CqvAx7vP.js} +4 -4
- package/dist/chunks/{select.component-HI7aJx11.js.map → select.component-CqvAx7vP.js.map} +1 -1
- package/dist/chunks/{sortableList.component-B2hSRuex.js → sortableList.component-DcjKdsDK.js} +2 -2
- package/dist/chunks/{sortableList.component-B2hSRuex.js.map → sortableList.component-DcjKdsDK.js.map} +1 -1
- package/dist/chunks/{sortableList.component-DAIHsGEA.js → sortableList.component-_DXfCTac.js} +2 -2
- package/dist/chunks/{sortableList.component-DAIHsGEA.js.map → sortableList.component-_DXfCTac.js.map} +1 -1
- package/dist/chunks/{styledAvatar.types-DbSO8s7o.js → styledAvatar.types-ByQoyukM.js} +2 -2
- package/dist/chunks/{styledAvatar.types-DbSO8s7o.js.map → styledAvatar.types-ByQoyukM.js.map} +1 -1
- package/dist/chunks/{styledAvatar.types-Cj3j5vXC.js → styledAvatar.types-CpU5SOAS.js} +2 -2
- package/dist/chunks/{styledAvatar.types-Cj3j5vXC.js.map → styledAvatar.types-CpU5SOAS.js.map} +1 -1
- package/dist/chunks/{switch.component-B1fXLRiO.js → switch.component-C9WMHurt.js} +2 -2
- package/dist/chunks/{switch.component-B1fXLRiO.js.map → switch.component-C9WMHurt.js.map} +1 -1
- package/dist/chunks/{switch.component-PH9nS7eN.js → switch.component-diomUHZW.js} +2 -2
- package/dist/chunks/{switch.component-PH9nS7eN.js.map → switch.component-diomUHZW.js.map} +1 -1
- package/dist/chunks/{tabs.component-DaUZITBw.js → tabs.component-Bp1Lu8Xb.js} +2 -2
- package/dist/chunks/{tabs.component-DaUZITBw.js.map → tabs.component-Bp1Lu8Xb.js.map} +1 -1
- package/dist/chunks/{tabs.component-6iPTLCx6.js → tabs.component-D6QT597P.js} +2 -2
- package/dist/chunks/{tabs.component-6iPTLCx6.js.map → tabs.component-D6QT597P.js.map} +1 -1
- package/dist/chunks/{tagBlock.component-Ch60_R7X.js → tagBlock.component-B99Qzj2K.js} +3 -3
- package/dist/chunks/{tagBlock.component-Ch60_R7X.js.map → tagBlock.component-B99Qzj2K.js.map} +1 -1
- package/dist/chunks/{tagBlock.component-Bx_hcjU4.js → tagBlock.component-BKnmbWil.js} +2 -2
- package/dist/chunks/{tagBlock.component-Bx_hcjU4.js.map → tagBlock.component-BKnmbWil.js.map} +1 -1
- package/dist/chunks/{textInput.component-CdPvTnhj.js → textInput.component-BalBo9uP.js} +2 -2
- package/dist/chunks/{textInput.component-CdPvTnhj.js.map → textInput.component-BalBo9uP.js.map} +1 -1
- package/dist/chunks/{textInput.component-LjDvSnBy.js → textInput.component-K4f7h4pP.js} +3 -3
- package/dist/chunks/{textInput.component-LjDvSnBy.js.map → textInput.component-K4f7h4pP.js.map} +1 -1
- package/dist/chunks/{textarea.component-CKEdjCAq.js → textarea.component-8tjcO0T7.js} +2 -2
- package/dist/chunks/{textarea.component-CKEdjCAq.js.map → textarea.component-8tjcO0T7.js.map} +1 -1
- package/dist/chunks/{textarea.component-C7l9zJKx.js → textarea.component-Cmbax8lT.js} +2 -2
- package/dist/chunks/{textarea.component-C7l9zJKx.js.map → textarea.component-Cmbax8lT.js.map} +1 -1
- package/dist/chunks/{timePicker.component-BLYPjS1u.js → timePicker.component-BwYdnFmw.js} +2 -2
- package/dist/chunks/{timePicker.component-BLYPjS1u.js.map → timePicker.component-BwYdnFmw.js.map} +1 -1
- package/dist/chunks/{timePicker.component-DFT36RN_.js → timePicker.component-DGKUi5P9.js} +4 -4
- package/dist/chunks/{timePicker.component-DFT36RN_.js.map → timePicker.component-DGKUi5P9.js.map} +1 -1
- package/dist/chunks/{timeRange.component-CzJjkQzN.js → timeRange.component-BhDFpXK-.js} +2 -2
- package/dist/chunks/{timeRange.component-CzJjkQzN.js.map → timeRange.component-BhDFpXK-.js.map} +1 -1
- package/dist/chunks/{timeRange.component-KETq7cDb.js → timeRange.component-uYrO4YEs.js} +2 -2
- package/dist/chunks/{timeRange.component-KETq7cDb.js.map → timeRange.component-uYrO4YEs.js.map} +1 -1
- package/dist/chunks/{withFormControl-C7uVEpxe.js → withFormControl-BJSHfbF_.js} +2 -2
- package/dist/chunks/{withFormControl-C7uVEpxe.js.map → withFormControl-BJSHfbF_.js.map} +1 -1
- package/dist/chunks/{withFormControl-DSNvvAPD.js → withFormControl-CDQGc9aO.js} +2 -2
- package/dist/chunks/{withFormControl-DSNvvAPD.js.map → withFormControl-CDQGc9aO.js.map} +1 -1
- package/dist/cjs/cli/generate-theme-types.cjs +6 -0
- package/dist/cjs/cli/generate-theme-types.cjs.map +1 -0
- package/dist/cjs/cli/postinstall.cjs +3 -0
- package/dist/cjs/cli/postinstall.cjs.map +1 -0
- package/dist/cjs/components/Alert.cjs +2 -0
- package/dist/cjs/components/Alert.cjs.map +1 -0
- package/dist/cjs/components/Avatar.cjs +2 -0
- package/dist/cjs/components/Avatar.cjs.map +1 -0
- package/dist/cjs/components/AvatarGroup.cjs +2 -0
- package/dist/cjs/components/AvatarGroup.cjs.map +1 -0
- package/dist/cjs/components/Button.cjs +2 -0
- package/dist/cjs/components/Button.cjs.map +1 -0
- package/dist/cjs/components/ButtonGroup.cjs +2 -0
- package/dist/cjs/components/ButtonGroup.cjs.map +1 -0
- package/dist/cjs/components/Card.cjs +2 -0
- package/dist/cjs/components/Card.cjs.map +1 -0
- package/dist/cjs/components/CharacterCounter.cjs +2 -0
- package/dist/cjs/components/CharacterCounter.cjs.map +1 -0
- package/dist/cjs/components/Checkbox.cjs +2 -0
- package/dist/cjs/components/Checkbox.cjs.map +1 -0
- package/dist/cjs/components/CheckboxGroup.cjs +2 -0
- package/dist/cjs/components/CheckboxGroup.cjs.map +1 -0
- package/dist/cjs/components/DatePicker.cjs +2 -0
- package/dist/cjs/components/DatePicker.cjs.map +1 -0
- package/dist/cjs/components/Heading.cjs +2 -0
- package/dist/cjs/components/Heading.cjs.map +1 -0
- package/dist/cjs/components/Icon/generated.cjs +2 -0
- package/dist/cjs/components/Icon/generated.cjs.map +1 -0
- package/dist/cjs/components/Icon.cjs +2 -0
- package/dist/cjs/components/Icon.cjs.map +1 -0
- package/dist/cjs/components/Link.cjs +2 -0
- package/dist/cjs/components/Link.cjs.map +1 -0
- package/dist/cjs/components/Menu.cjs +2 -0
- package/dist/cjs/components/Menu.cjs.map +1 -0
- package/dist/cjs/components/Modal.cjs +2 -0
- package/dist/cjs/components/Modal.cjs.map +1 -0
- package/dist/cjs/components/NotificationCounter.cjs +2 -0
- package/dist/cjs/components/NotificationCounter.cjs.map +1 -0
- package/dist/cjs/components/Picture.cjs +2 -0
- package/dist/{esm/components/Picture/index.js.map → cjs/components/Picture.cjs.map} +1 -1
- package/dist/cjs/components/Popover.cjs +2 -0
- package/dist/cjs/components/Popover.cjs.map +1 -0
- package/dist/cjs/components/RadioGroup.cjs +2 -0
- package/dist/cjs/components/RadioGroup.cjs.map +1 -0
- package/dist/cjs/components/RatingDots.cjs +2 -0
- package/dist/cjs/components/RatingDots.cjs.map +1 -0
- package/dist/cjs/components/Select.cjs +2 -0
- package/dist/cjs/components/Select.cjs.map +1 -0
- package/dist/cjs/components/SortableList.cjs +2 -0
- package/dist/cjs/components/SortableList.cjs.map +1 -0
- package/dist/cjs/components/Spinner.cjs +2 -0
- package/dist/cjs/components/Spinner.cjs.map +1 -0
- package/dist/cjs/components/Swatch.cjs +2 -0
- package/dist/cjs/components/Swatch.cjs.map +1 -0
- package/dist/cjs/components/Switch.cjs +2 -0
- package/dist/cjs/components/Switch.cjs.map +1 -0
- package/dist/cjs/components/Tabs.cjs +2 -0
- package/dist/cjs/components/Tabs.cjs.map +1 -0
- package/dist/cjs/components/Tag.cjs +2 -0
- package/dist/cjs/components/Tag.cjs.map +1 -0
- package/dist/cjs/components/Text.cjs +2 -0
- package/dist/cjs/components/Text.cjs.map +1 -0
- package/dist/cjs/components/TextInput.cjs +2 -0
- package/dist/cjs/components/TextInput.cjs.map +1 -0
- package/dist/cjs/components/Textarea.cjs +2 -0
- package/dist/cjs/components/Textarea.cjs.map +1 -0
- package/dist/cjs/components/TimePicker.cjs +2 -0
- package/dist/cjs/components/TimePicker.cjs.map +1 -0
- package/dist/cjs/components/TimeRange.cjs +2 -0
- package/dist/cjs/components/TimeRange.cjs.map +1 -0
- package/dist/cjs/components/Tooltip.cjs +2 -0
- package/dist/cjs/components/Tooltip.cjs.map +1 -0
- package/dist/cjs/components.cjs +2 -0
- package/dist/cjs/components.cjs.map +1 -0
- package/dist/cjs/hocs.cjs +2 -0
- package/dist/cjs/hocs.cjs.map +1 -0
- package/dist/cjs/hooks.cjs +2 -0
- package/dist/cjs/hooks.cjs.map +1 -0
- package/dist/cjs/index.cjs +1 -1
- package/dist/cjs/patterns/ConversationCard.cjs +2 -0
- package/dist/cjs/patterns/ConversationCard.cjs.map +1 -0
- package/dist/cjs/patterns/StyledAvatar.cjs +2 -0
- package/dist/cjs/patterns/StyledAvatar.cjs.map +1 -0
- package/dist/cjs/patterns/TagBlock.cjs +2 -0
- package/dist/cjs/patterns/TagBlock.cjs.map +1 -0
- package/dist/cjs/patterns/Timestamp.cjs +2 -0
- package/dist/cjs/patterns/Timestamp.cjs.map +1 -0
- package/dist/cjs/patterns.cjs +2 -0
- package/dist/cjs/patterns.cjs.map +1 -0
- package/dist/cjs/shared/{types/index.cjs → types.cjs} +1 -1
- package/dist/cjs/shared/types.cjs.map +1 -0
- package/dist/cjs/theme/{semanticTokens/index.cjs → semanticTokens.cjs} +1 -1
- package/dist/cjs/theme/semanticTokens.cjs.map +1 -0
- package/dist/cjs/theme/tokens/blurs.cjs +2 -0
- package/dist/cjs/theme/tokens/blurs.cjs.map +1 -0
- package/dist/cjs/theme/tokens/borders.cjs +2 -0
- package/dist/cjs/theme/tokens/borders.cjs.map +1 -0
- package/dist/cjs/theme/tokens/{colors/index.cjs → colors.cjs} +1 -1
- package/dist/cjs/theme/tokens/colors.cjs.map +1 -0
- package/dist/cjs/theme/tokens/shadows.cjs +2 -0
- package/dist/cjs/theme/tokens/shadows.cjs.map +1 -0
- package/dist/cjs/theme/tokens/sizes.cjs +2 -0
- package/dist/cjs/theme/tokens/sizes.cjs.map +1 -0
- package/dist/cjs/theme/tokens/spacing.cjs +2 -0
- package/dist/cjs/theme/tokens/spacing.cjs.map +1 -0
- package/dist/cjs/theme/tokens/transitions.cjs +2 -0
- package/dist/cjs/theme/tokens/transitions.cjs.map +1 -0
- package/dist/cjs/theme/tokens/typography.cjs +2 -0
- package/dist/cjs/theme/tokens/typography.cjs.map +1 -0
- package/dist/cjs/theme/tokens/zIndices.cjs +2 -0
- package/dist/cjs/theme/tokens/zIndices.cjs.map +1 -0
- package/dist/cjs/theme/tokens.cjs +2 -0
- package/dist/cjs/theme/tokens.cjs.map +1 -0
- package/dist/cjs/theme.cjs +24 -0
- package/dist/cjs/theme.cjs.map +1 -0
- package/dist/esm/cli/generate-theme-types.js +22 -0
- package/dist/esm/cli/generate-theme-types.js.map +1 -0
- package/dist/esm/cli/postinstall.js +21 -0
- package/dist/esm/cli/postinstall.js.map +1 -0
- package/dist/esm/components/Alert.js +6 -0
- package/dist/esm/components/Alert.js.map +1 -0
- package/dist/esm/components/Avatar.js +8 -0
- package/dist/esm/components/Avatar.js.map +1 -0
- package/dist/esm/components/AvatarGroup.js +5 -0
- package/dist/esm/components/AvatarGroup.js.map +1 -0
- package/dist/esm/components/Button.js +11 -0
- package/dist/esm/components/Button.js.map +1 -0
- package/dist/esm/components/ButtonGroup.js +5 -0
- package/dist/esm/components/ButtonGroup.js.map +1 -0
- package/dist/esm/components/Card.js +7 -0
- package/dist/esm/components/Card.js.map +1 -0
- package/dist/esm/components/CharacterCounter.js +5 -0
- package/dist/esm/components/CharacterCounter.js.map +1 -0
- package/dist/esm/components/Checkbox.js +5 -0
- package/dist/esm/components/Checkbox.js.map +1 -0
- package/dist/esm/components/CheckboxGroup.js +5 -0
- package/dist/esm/components/CheckboxGroup.js.map +1 -0
- package/dist/esm/components/DatePicker.js +6 -0
- package/dist/esm/components/DatePicker.js.map +1 -0
- package/dist/esm/components/Heading.js +5 -0
- package/dist/esm/components/Heading.js.map +1 -0
- package/dist/esm/components/Icon/{generated/index.js → generated.js} +2 -2
- package/dist/esm/components/Icon/generated.js.map +1 -0
- package/dist/esm/components/Icon.js +7 -0
- package/dist/esm/components/Icon.js.map +1 -0
- package/dist/esm/components/Link.js +5 -0
- package/dist/esm/components/Link.js.map +1 -0
- package/dist/esm/components/Menu.js +5 -0
- package/dist/esm/components/Menu.js.map +1 -0
- package/dist/esm/components/Modal.js +9 -0
- package/dist/esm/components/Modal.js.map +1 -0
- package/dist/esm/components/{NotificationCounter/index.js → NotificationCounter.js} +2 -2
- package/dist/esm/components/NotificationCounter.js.map +1 -0
- package/dist/esm/components/{Picture/index.js → Picture.js} +3 -3
- package/dist/esm/components/Picture.js.map +1 -0
- package/dist/esm/components/Popover.js +9 -0
- package/dist/esm/components/Popover.js.map +1 -0
- package/dist/esm/components/RadioGroup.js +5 -0
- package/dist/esm/components/RadioGroup.js.map +1 -0
- package/dist/esm/components/RatingDots.js +5 -0
- package/dist/esm/components/RatingDots.js.map +1 -0
- package/dist/esm/components/Select.js +5 -0
- package/dist/esm/components/Select.js.map +1 -0
- package/dist/esm/components/SortableList.js +5 -0
- package/dist/esm/components/SortableList.js.map +1 -0
- package/dist/esm/components/Spinner.js +7 -0
- package/dist/esm/components/Spinner.js.map +1 -0
- package/dist/esm/components/{Swatch/index.js → Swatch.js} +3 -3
- package/dist/esm/components/Swatch.js.map +1 -0
- package/dist/esm/components/Switch.js +5 -0
- package/dist/esm/components/Switch.js.map +1 -0
- package/dist/esm/components/Tabs.js +5 -0
- package/dist/esm/components/Tabs.js.map +1 -0
- package/dist/esm/components/Tag.js +8 -0
- package/dist/esm/components/Tag.js.map +1 -0
- package/dist/esm/components/Text.js +5 -0
- package/dist/esm/components/Text.js.map +1 -0
- package/dist/esm/components/TextInput.js +5 -0
- package/dist/esm/components/TextInput.js.map +1 -0
- package/dist/esm/components/Textarea.js +5 -0
- package/dist/esm/components/Textarea.js.map +1 -0
- package/dist/esm/components/TimePicker.js +6 -0
- package/dist/esm/components/TimePicker.js.map +1 -0
- package/dist/esm/components/TimeRange.js +5 -0
- package/dist/esm/components/TimeRange.js.map +1 -0
- package/dist/esm/components/Tooltip.js +5 -0
- package/dist/esm/components/Tooltip.js.map +1 -0
- package/dist/esm/components.js +102 -0
- package/dist/esm/components.js.map +1 -0
- package/dist/esm/{hocs/index.js → hocs.js} +3 -3
- package/dist/esm/hocs.js.map +1 -0
- package/dist/esm/{hooks/index.js → hooks.js} +2 -2
- package/dist/esm/hooks.js.map +1 -0
- package/dist/esm/index.js +57 -59
- package/dist/esm/patterns/ConversationCard.js +5 -0
- package/dist/esm/patterns/ConversationCard.js.map +1 -0
- package/dist/esm/patterns/StyledAvatar.js +6 -0
- package/dist/esm/patterns/StyledAvatar.js.map +1 -0
- package/dist/esm/patterns/TagBlock.js +6 -0
- package/dist/esm/patterns/TagBlock.js.map +1 -0
- package/dist/esm/patterns/Timestamp.js +5 -0
- package/dist/esm/patterns/Timestamp.js.map +1 -0
- package/dist/esm/patterns.js +13 -0
- package/dist/esm/patterns.js.map +1 -0
- package/dist/esm/shared/{types/index.js → types.js} +1 -1
- package/dist/esm/shared/types.js.map +1 -0
- package/dist/esm/theme/{semanticTokens/index.js → semanticTokens.js} +1 -1
- package/dist/esm/theme/semanticTokens.js.map +1 -0
- package/dist/esm/theme/tokens/blurs.js +2 -0
- package/dist/esm/theme/tokens/blurs.js.map +1 -0
- package/dist/esm/theme/tokens/borders.js +2 -0
- package/dist/esm/theme/tokens/borders.js.map +1 -0
- package/dist/esm/theme/tokens/{colors/index.js → colors.js} +1 -1
- package/dist/esm/theme/tokens/colors.js.map +1 -0
- package/dist/esm/theme/tokens/shadows.js +2 -0
- package/dist/esm/theme/tokens/shadows.js.map +1 -0
- package/dist/esm/theme/tokens/sizes.js +2 -0
- package/dist/esm/theme/tokens/sizes.js.map +1 -0
- package/dist/esm/theme/tokens/spacing.js +2 -0
- package/dist/esm/theme/tokens/spacing.js.map +1 -0
- package/dist/esm/theme/tokens/transitions.js +2 -0
- package/dist/esm/theme/tokens/transitions.js.map +1 -0
- package/dist/esm/theme/tokens/typography.js +2 -0
- package/dist/esm/theme/tokens/typography.js.map +1 -0
- package/dist/esm/theme/tokens/zIndices.js +2 -0
- package/dist/esm/theme/tokens/zIndices.js.map +1 -0
- package/dist/esm/theme/tokens.js +5 -0
- package/dist/esm/theme/tokens.js.map +1 -0
- package/dist/esm/{theme/index.js → theme.js} +10 -12
- package/dist/esm/theme.js.map +1 -0
- package/dist/types/cli/generate-theme-types.d.ts +2 -0
- package/dist/types/cli/postinstall.d.ts +2 -0
- package/dist/types/theme/index.d.ts +1 -3
- package/dist/types/theme/providers/theme.provider.d.ts +0 -7
- package/package.json +10 -5
- package/dist/chunks/icon.component-Bmtf4XKw.js +0 -2
- package/dist/chunks/radioGroup.component-B1ZdhI8z.js.map +0 -1
- package/dist/chunks/radioGroup.component-CsmHziwM.js.map +0 -1
- package/dist/cjs/components/Alert/index.cjs +0 -2
- package/dist/cjs/components/Alert/index.cjs.map +0 -1
- package/dist/cjs/components/Avatar/index.cjs +0 -2
- package/dist/cjs/components/Avatar/index.cjs.map +0 -1
- package/dist/cjs/components/AvatarGroup/index.cjs +0 -2
- package/dist/cjs/components/AvatarGroup/index.cjs.map +0 -1
- package/dist/cjs/components/Button/index.cjs +0 -2
- package/dist/cjs/components/Button/index.cjs.map +0 -1
- package/dist/cjs/components/ButtonGroup/index.cjs +0 -2
- package/dist/cjs/components/ButtonGroup/index.cjs.map +0 -1
- package/dist/cjs/components/Card/index.cjs +0 -2
- package/dist/cjs/components/Card/index.cjs.map +0 -1
- package/dist/cjs/components/CharacterCounter/index.cjs +0 -2
- package/dist/cjs/components/CharacterCounter/index.cjs.map +0 -1
- package/dist/cjs/components/Checkbox/index.cjs +0 -2
- package/dist/cjs/components/Checkbox/index.cjs.map +0 -1
- package/dist/cjs/components/CheckboxGroup/index.cjs +0 -2
- package/dist/cjs/components/CheckboxGroup/index.cjs.map +0 -1
- package/dist/cjs/components/DatePicker/index.cjs +0 -2
- package/dist/cjs/components/DatePicker/index.cjs.map +0 -1
- package/dist/cjs/components/Heading/index.cjs +0 -2
- package/dist/cjs/components/Heading/index.cjs.map +0 -1
- package/dist/cjs/components/Icon/generated/index.cjs +0 -2
- package/dist/cjs/components/Icon/generated/index.cjs.map +0 -1
- package/dist/cjs/components/Icon/index.cjs +0 -2
- package/dist/cjs/components/Icon/index.cjs.map +0 -1
- package/dist/cjs/components/Link/index.cjs +0 -2
- package/dist/cjs/components/Link/index.cjs.map +0 -1
- package/dist/cjs/components/Menu/index.cjs +0 -2
- package/dist/cjs/components/Menu/index.cjs.map +0 -1
- package/dist/cjs/components/Modal/index.cjs +0 -2
- package/dist/cjs/components/Modal/index.cjs.map +0 -1
- package/dist/cjs/components/NotificationCounter/index.cjs +0 -2
- package/dist/cjs/components/NotificationCounter/index.cjs.map +0 -1
- package/dist/cjs/components/Picture/index.cjs +0 -2
- package/dist/cjs/components/Picture/index.cjs.map +0 -1
- package/dist/cjs/components/Popover/index.cjs +0 -2
- package/dist/cjs/components/Popover/index.cjs.map +0 -1
- package/dist/cjs/components/RadioGroup/index.cjs +0 -2
- package/dist/cjs/components/RadioGroup/index.cjs.map +0 -1
- package/dist/cjs/components/RatingDots/index.cjs +0 -2
- package/dist/cjs/components/RatingDots/index.cjs.map +0 -1
- package/dist/cjs/components/Select/index.cjs +0 -2
- package/dist/cjs/components/Select/index.cjs.map +0 -1
- package/dist/cjs/components/SortableList/index.cjs +0 -2
- package/dist/cjs/components/SortableList/index.cjs.map +0 -1
- package/dist/cjs/components/Spinner/index.cjs +0 -2
- package/dist/cjs/components/Spinner/index.cjs.map +0 -1
- package/dist/cjs/components/Swatch/index.cjs +0 -2
- package/dist/cjs/components/Swatch/index.cjs.map +0 -1
- package/dist/cjs/components/Switch/index.cjs +0 -2
- package/dist/cjs/components/Switch/index.cjs.map +0 -1
- package/dist/cjs/components/Tabs/index.cjs +0 -2
- package/dist/cjs/components/Tabs/index.cjs.map +0 -1
- package/dist/cjs/components/Tag/index.cjs +0 -2
- package/dist/cjs/components/Tag/index.cjs.map +0 -1
- package/dist/cjs/components/Text/index.cjs +0 -2
- package/dist/cjs/components/Text/index.cjs.map +0 -1
- package/dist/cjs/components/TextInput/index.cjs +0 -2
- package/dist/cjs/components/TextInput/index.cjs.map +0 -1
- package/dist/cjs/components/Textarea/index.cjs +0 -2
- package/dist/cjs/components/Textarea/index.cjs.map +0 -1
- package/dist/cjs/components/TimePicker/index.cjs +0 -2
- package/dist/cjs/components/TimePicker/index.cjs.map +0 -1
- package/dist/cjs/components/TimeRange/index.cjs +0 -2
- package/dist/cjs/components/TimeRange/index.cjs.map +0 -1
- package/dist/cjs/components/Tooltip/index.cjs +0 -2
- package/dist/cjs/components/Tooltip/index.cjs.map +0 -1
- package/dist/cjs/components/index.cjs +0 -2
- package/dist/cjs/components/index.cjs.map +0 -1
- package/dist/cjs/hocs/index.cjs +0 -2
- package/dist/cjs/hocs/index.cjs.map +0 -1
- package/dist/cjs/hooks/index.cjs +0 -2
- package/dist/cjs/hooks/index.cjs.map +0 -1
- package/dist/cjs/patterns/ConversationCard/index.cjs +0 -2
- package/dist/cjs/patterns/ConversationCard/index.cjs.map +0 -1
- package/dist/cjs/patterns/StyledAvatar/index.cjs +0 -2
- package/dist/cjs/patterns/StyledAvatar/index.cjs.map +0 -1
- package/dist/cjs/patterns/TagBlock/index.cjs +0 -2
- package/dist/cjs/patterns/TagBlock/index.cjs.map +0 -1
- package/dist/cjs/patterns/Timestamp/index.cjs +0 -2
- package/dist/cjs/patterns/Timestamp/index.cjs.map +0 -1
- package/dist/cjs/patterns/index.cjs +0 -2
- package/dist/cjs/patterns/index.cjs.map +0 -1
- package/dist/cjs/shared/types/index.cjs.map +0 -1
- package/dist/cjs/theme/index.cjs +0 -24
- package/dist/cjs/theme/index.cjs.map +0 -1
- package/dist/cjs/theme/semanticTokens/index.cjs.map +0 -1
- package/dist/cjs/theme/tokens/blurs/index.cjs +0 -2
- package/dist/cjs/theme/tokens/blurs/index.cjs.map +0 -1
- package/dist/cjs/theme/tokens/borders/index.cjs +0 -2
- package/dist/cjs/theme/tokens/borders/index.cjs.map +0 -1
- package/dist/cjs/theme/tokens/colors/index.cjs.map +0 -1
- package/dist/cjs/theme/tokens/index.cjs +0 -2
- package/dist/cjs/theme/tokens/index.cjs.map +0 -1
- package/dist/cjs/theme/tokens/shadows/index.cjs +0 -2
- package/dist/cjs/theme/tokens/shadows/index.cjs.map +0 -1
- package/dist/cjs/theme/tokens/sizes/index.cjs +0 -2
- package/dist/cjs/theme/tokens/sizes/index.cjs.map +0 -1
- package/dist/cjs/theme/tokens/spacing/index.cjs +0 -2
- package/dist/cjs/theme/tokens/spacing/index.cjs.map +0 -1
- package/dist/cjs/theme/tokens/transitions/index.cjs +0 -2
- package/dist/cjs/theme/tokens/transitions/index.cjs.map +0 -1
- package/dist/cjs/theme/tokens/typography/index.cjs +0 -2
- package/dist/cjs/theme/tokens/typography/index.cjs.map +0 -1
- package/dist/cjs/theme/tokens/zIndices/index.cjs +0 -2
- package/dist/cjs/theme/tokens/zIndices/index.cjs.map +0 -1
- package/dist/esm/components/Alert/index.js +0 -6
- package/dist/esm/components/Alert/index.js.map +0 -1
- package/dist/esm/components/Avatar/index.js +0 -8
- package/dist/esm/components/Avatar/index.js.map +0 -1
- package/dist/esm/components/AvatarGroup/index.js +0 -5
- package/dist/esm/components/AvatarGroup/index.js.map +0 -1
- package/dist/esm/components/Button/index.js +0 -11
- package/dist/esm/components/Button/index.js.map +0 -1
- package/dist/esm/components/ButtonGroup/index.js +0 -5
- package/dist/esm/components/ButtonGroup/index.js.map +0 -1
- package/dist/esm/components/Card/index.js +0 -7
- package/dist/esm/components/Card/index.js.map +0 -1
- package/dist/esm/components/CharacterCounter/index.js +0 -5
- package/dist/esm/components/CharacterCounter/index.js.map +0 -1
- package/dist/esm/components/Checkbox/index.js +0 -5
- package/dist/esm/components/Checkbox/index.js.map +0 -1
- package/dist/esm/components/CheckboxGroup/index.js +0 -5
- package/dist/esm/components/CheckboxGroup/index.js.map +0 -1
- package/dist/esm/components/DatePicker/index.js +0 -6
- package/dist/esm/components/DatePicker/index.js.map +0 -1
- package/dist/esm/components/Heading/index.js +0 -5
- package/dist/esm/components/Heading/index.js.map +0 -1
- package/dist/esm/components/Icon/generated/index.js.map +0 -1
- package/dist/esm/components/Icon/index.js +0 -7
- package/dist/esm/components/Icon/index.js.map +0 -1
- package/dist/esm/components/Link/index.js +0 -5
- package/dist/esm/components/Link/index.js.map +0 -1
- package/dist/esm/components/Menu/index.js +0 -5
- package/dist/esm/components/Menu/index.js.map +0 -1
- package/dist/esm/components/Modal/index.js +0 -9
- package/dist/esm/components/Modal/index.js.map +0 -1
- package/dist/esm/components/NotificationCounter/index.js.map +0 -1
- package/dist/esm/components/Popover/index.js +0 -9
- package/dist/esm/components/Popover/index.js.map +0 -1
- package/dist/esm/components/RadioGroup/index.js +0 -5
- package/dist/esm/components/RadioGroup/index.js.map +0 -1
- package/dist/esm/components/RatingDots/index.js +0 -5
- package/dist/esm/components/RatingDots/index.js.map +0 -1
- package/dist/esm/components/Select/index.js +0 -5
- package/dist/esm/components/Select/index.js.map +0 -1
- package/dist/esm/components/SortableList/index.js +0 -5
- package/dist/esm/components/SortableList/index.js.map +0 -1
- package/dist/esm/components/Spinner/index.js +0 -7
- package/dist/esm/components/Spinner/index.js.map +0 -1
- package/dist/esm/components/Swatch/index.js.map +0 -1
- package/dist/esm/components/Switch/index.js +0 -5
- package/dist/esm/components/Switch/index.js.map +0 -1
- package/dist/esm/components/Tabs/index.js +0 -5
- package/dist/esm/components/Tabs/index.js.map +0 -1
- package/dist/esm/components/Tag/index.js +0 -8
- package/dist/esm/components/Tag/index.js.map +0 -1
- package/dist/esm/components/Text/index.js +0 -5
- package/dist/esm/components/Text/index.js.map +0 -1
- package/dist/esm/components/TextInput/index.js +0 -5
- package/dist/esm/components/TextInput/index.js.map +0 -1
- package/dist/esm/components/Textarea/index.js +0 -5
- package/dist/esm/components/Textarea/index.js.map +0 -1
- package/dist/esm/components/TimePicker/index.js +0 -6
- package/dist/esm/components/TimePicker/index.js.map +0 -1
- package/dist/esm/components/TimeRange/index.js +0 -5
- package/dist/esm/components/TimeRange/index.js.map +0 -1
- package/dist/esm/components/Tooltip/index.js +0 -5
- package/dist/esm/components/Tooltip/index.js.map +0 -1
- package/dist/esm/components/index.js +0 -102
- package/dist/esm/components/index.js.map +0 -1
- package/dist/esm/hocs/index.js.map +0 -1
- package/dist/esm/hooks/index.js.map +0 -1
- package/dist/esm/patterns/ConversationCard/index.js +0 -5
- package/dist/esm/patterns/ConversationCard/index.js.map +0 -1
- package/dist/esm/patterns/StyledAvatar/index.js +0 -6
- package/dist/esm/patterns/StyledAvatar/index.js.map +0 -1
- package/dist/esm/patterns/TagBlock/index.js +0 -6
- package/dist/esm/patterns/TagBlock/index.js.map +0 -1
- package/dist/esm/patterns/Timestamp/index.js +0 -5
- package/dist/esm/patterns/Timestamp/index.js.map +0 -1
- package/dist/esm/patterns/index.js +0 -13
- package/dist/esm/patterns/index.js.map +0 -1
- package/dist/esm/shared/types/index.js.map +0 -1
- package/dist/esm/theme/index.js.map +0 -1
- package/dist/esm/theme/semanticTokens/index.js.map +0 -1
- package/dist/esm/theme/tokens/blurs/index.js +0 -2
- package/dist/esm/theme/tokens/blurs/index.js.map +0 -1
- package/dist/esm/theme/tokens/borders/index.js +0 -2
- package/dist/esm/theme/tokens/borders/index.js.map +0 -1
- package/dist/esm/theme/tokens/colors/index.js.map +0 -1
- package/dist/esm/theme/tokens/index.js +0 -5
- package/dist/esm/theme/tokens/index.js.map +0 -1
- package/dist/esm/theme/tokens/shadows/index.js +0 -2
- package/dist/esm/theme/tokens/shadows/index.js.map +0 -1
- package/dist/esm/theme/tokens/sizes/index.js +0 -2
- package/dist/esm/theme/tokens/sizes/index.js.map +0 -1
- package/dist/esm/theme/tokens/spacing/index.js +0 -2
- package/dist/esm/theme/tokens/spacing/index.js.map +0 -1
- package/dist/esm/theme/tokens/transitions/index.js +0 -2
- package/dist/esm/theme/tokens/transitions/index.js.map +0 -1
- package/dist/esm/theme/tokens/typography/index.js +0 -2
- package/dist/esm/theme/tokens/typography/index.js.map +0 -1
- package/dist/esm/theme/tokens/zIndices/index.js +0 -2
- package/dist/esm/theme/tokens/zIndices/index.js.map +0 -1
- package/dist/types/theme/theme.types.d.ts +0 -25
package/dist/chunks/{datePicker.component-BthgWsMj.js.map → datePicker.component-ZmMJoE3c.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datePicker.component-BthgWsMj.js","sources":["../../src/components/DatePicker/datePicker.types.ts","../../src/components/DatePicker/context/datePicker.context.tsx","../../src/components/DatePicker/context/datePicker.provider.tsx","../../src/components/DatePicker/components/DatePickerInput/datePickerInput.utils.ts","../../src/components/DatePicker/components/DatePickerInput/datePickerInput.component.tsx","../../src/components/DatePicker/components/DatePickerFooter/datePickerFooter.component.tsx","../../src/components/DatePicker/datePicker.records.ts","../../src/components/DatePicker/components/DatePickerHeader/datePickerHeader.component.tsx","../../src/components/DatePicker/components/DatePickerDay/datePickerCalendarDay.recipe.ts","../../src/components/DatePicker/components/DatePickerDay/datePickerCalendarDay.component.tsx","../../src/components/DatePicker/components/DatePickerMonth/datePickerCalendarMonth.component.tsx","../../src/components/DatePicker/components/DatePickerCalendar/datePickerCalendar.component.tsx","../../src/components/DatePicker/datePicker.component.tsx"],"sourcesContent":["export enum DateFormats {\n \"ShortDate\" = \"MM/dd/yyyy\",\n \"LongDate\" = \"MMM dd yyyy\",\n \"DayOfWeekDayOfMonth\" = \"eeee, MMMM do\",\n}\n\nexport interface DateRange {\n startDate: Date | null;\n endDate?: Date | null;\n}\n","import { FirstDayOfWeek, MonthType } from \"@datepicker-react/hooks\";\nimport { useContext, createContext } from \"react\";\nimport { DateFormats, DateRange } from \"../datePicker.types\";\n\nexport enum FocusedInput {\n StartDate = \"startDate\",\n EndDate = \"endDate\",\n}\n\nexport interface IDatePickerContext {\n activeMonth?: MonthType;\n dateFormat: DateFormats | string;\n endDate: Date | null;\n focusedInput: FocusedInput | null;\n setFocusedInput: (focusedInput: FocusedInput | null) => void;\n withDateRange: boolean;\n maxDate?: Date;\n maxYear: number;\n minDate?: Date;\n minYear: number;\n onDateChange?: ({ startDate, endDate }: DateRange) => void;\n startDate: Date | null;\n onClose: () => void;\n clearDates: ({ open }: { open?: boolean }) => void;\n // The following are all values returned by the datepicker-react useDatePicker hook\n // Setting them here in our own context to be referenced in child components\n focusedDate: Date | null;\n firstDayOfWeek?: FirstDayOfWeek;\n activeMonths: MonthType[];\n isDateFocused: (date: Date) => boolean;\n isDateSelected: (date: Date) => boolean;\n isDateHovered: (date: Date) => boolean;\n isDateBlocked: (date: Date) => boolean;\n isFirstOrLastSelectedDate: (date: Date) => boolean;\n onDateFocus: (date: Date) => void;\n onDateHover: (date: Date | null) => void;\n onDateSelect: (date: Date) => void;\n goToPreviousMonths: () => void;\n goToNextMonths: () => void;\n goToDate: (date: Date) => void;\n}\n\nexport const today = new Date();\nexport const currentYear = today.getFullYear();\nexport const currentMonth = today.getMonth();\n\nexport const defaultFocusedDate = today;\nexport const defaultMinYear = currentYear - 100;\nexport const defaultMaxYear = currentYear + 5;\nexport const defaultDateFormat = DateFormats.ShortDate;\n\nconst initialDatePickerState: IDatePickerContext = {\n dateFormat: defaultDateFormat,\n endDate: null,\n focusedInput: null,\n withDateRange: false,\n maxYear: defaultMaxYear,\n minYear: defaultMinYear,\n startDate: null,\n onClose: (): void => {\n throw new Error(\"onClose(): boolean not implemented\");\n },\n setFocusedInput: (): void => {\n throw new Error(\"setFocusedInput(): boolean not implemented\");\n },\n focusedDate: today,\n firstDayOfWeek: undefined,\n activeMonths: [],\n isDateFocused: (): boolean => {\n throw new Error(\"isDateFocused(): boolean not implemented\");\n },\n isDateSelected: (): boolean => {\n throw new Error(\"isDateSelected(): boolean not implemented\");\n },\n isDateHovered: (): boolean => {\n throw new Error(\"isDateHovered(): boolean not implemented\");\n },\n isDateBlocked: (): boolean => {\n throw new Error(\"isDateBlocked(): boolean not implemented\");\n },\n isFirstOrLastSelectedDate: (): boolean => {\n throw new Error(\"isFirstOrLastSelectedDate(): boolean not implemented\");\n },\n onDateFocus: (): void => {\n throw new Error(\"onDateFocus(): boolean not implemented\");\n },\n onDateHover: (): void => {\n throw new Error(\"onDateHover(): boolean not implemented\");\n },\n onDateSelect: (): Date => {\n throw new Error(\"onDateSelect(): boolean not implemented\");\n },\n goToPreviousMonths: (): Date => {\n throw new Error(\"goToPreviousMonths(): boolean not implemented\");\n },\n goToNextMonths: (): Date => {\n throw new Error(\"goToNextMonths(): boolean not implemented\");\n },\n goToDate: (): Date => {\n throw new Error(\"goToDate(): boolean not implemented\");\n },\n clearDates: (): void => {\n throw new Error(\"clearDates(): boolean not implemented\");\n },\n};\n\nexport const DatePickerContext = createContext<IDatePickerContext>(\n initialDatePickerState,\n);\n\nexport const useDatePickerContext = (): IDatePickerContext =>\n useContext<IDatePickerContext>(DatePickerContext);\n","import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { Popover as CPopover } from \"@chakra-ui/react/popover\";\nimport { DatePickerProps } from \"../datePicker.component\";\nimport { useDatepicker } from \"@datepicker-react/hooks\";\nimport {\n DatePickerContext,\n defaultDateFormat,\n defaultFocusedDate,\n defaultMaxYear,\n defaultMinYear,\n FocusedInput,\n today,\n} from \"./datePicker.context\";\nimport startOfDay from \"date-fns/startOfDay\";\nimport endOfDay from \"date-fns/endOfDay\";\nimport add from \"date-fns/add\";\nimport isAfter from \"date-fns/isAfter\";\n\ntype DatePickerProviderProps = DatePickerProps & {\n children: React.ReactNode;\n};\n\ninterface DatePickerInternalState {\n startDate: Date | null;\n endDate: Date | null;\n focusedInput: FocusedInput | null;\n}\n\nexport const DatePickerProvider = ({\n children,\n dateFormat = defaultDateFormat,\n endDate,\n inputProps,\n maxDate,\n maxDaysInRange,\n maxYear,\n minDate,\n minYear,\n onDateChange,\n placement = \"bottom\",\n startDate,\n withDateRange,\n}: DatePickerProviderProps): React.JSX.Element => {\n const [state, setState] = useState<DatePickerInternalState>({\n startDate,\n endDate: endDate || startDate,\n focusedInput: null,\n });\n\n /**\n * Calculates the max booking date based on the following criteria:\n * _maxDaysInRange_\n * * should only ever be used by date ranges\n * * should take precedence over the maxDate value\n * * should use it's value plus the start date of the range to calculate the max date\n * _maxDate_\n * * can be passed to either a single date input or a date range\n * * if provided it will be ignored if maxDaysInRange is passed\n * If neither of these values is specified return undefined\n */\n const getMaxBookingDate = useCallback(\n (startDate: Date | null) => {\n if (maxDaysInRange && startDate) {\n return add(startDate, { days: maxDaysInRange });\n } else if (maxDate) {\n return maxDate;\n }\n\n return;\n },\n [maxDate, maxDaysInRange],\n );\n\n const onDatesChange = (data: DatePickerInternalState): void => {\n if (!data) {\n return;\n }\n\n // Default the end date to the start date if no value is provided\n if (!data.endDate) {\n data.endDate = data.startDate;\n }\n\n // If end date exceeds new max booking date, reset the end date value\n const _maxBookingDate = getMaxBookingDate(data.startDate);\n if (\n data.endDate &&\n _maxBookingDate &&\n isAfter(data.endDate, _maxBookingDate)\n ) {\n data.endDate = null;\n }\n\n // Set the start date to start of day and end date to end of day to create a range\n data.startDate = data.startDate\n ? startOfDay(data.startDate)\n : data.startDate;\n data.endDate = data.endDate ? endOfDay(data.endDate) : data.endDate;\n\n setState({\n ...data,\n focusedInput: data.focusedInput || FocusedInput.StartDate,\n });\n if (!withDateRange && onDateChange) {\n onDateChange(data);\n }\n };\n\n const clearDates = useCallback(({ open }: { open?: boolean }) => {\n setState({\n startDate: null,\n endDate: null,\n focusedInput: open ? FocusedInput.StartDate : null,\n });\n }, []);\n\n const {\n activeMonths,\n firstDayOfWeek,\n focusedDate,\n goToDate,\n goToNextMonths,\n goToPreviousMonths,\n isDateBlocked,\n isDateFocused,\n isDateHovered,\n isDateSelected,\n isFirstOrLastSelectedDate,\n onDateFocus,\n onDateHover,\n onDateSelect,\n } = useDatepicker({\n endDate: state.endDate,\n focusedInput: state.focusedInput,\n initialVisibleMonth: state.startDate || today,\n // Only show max disabled dates for date range when focused on end date input\n maxBookingDate:\n withDateRange && state.focusedInput === FocusedInput.StartDate\n ? undefined\n : getMaxBookingDate(state.startDate),\n minBookingDate: minDate,\n minBookingDays: 1,\n numberOfMonths: 1,\n onDatesChange,\n startDate: state.startDate,\n ...(!withDateRange && { exactMinBookingDays: true }),\n });\n\n const navigateToFocusedInputDate = useCallback(\n (focusedInput: FocusedInput | null) => {\n if (focusedInput === FocusedInput.EndDate && state.endDate) {\n goToDate(state.endDate);\n } else if (state.startDate) {\n goToDate(state.startDate);\n }\n },\n [goToDate, state.endDate, state.startDate],\n );\n\n const setFocusedInput = useCallback(\n (focusedInput: FocusedInput | null): void => {\n setState((prevState) => ({ ...prevState, focusedInput }));\n navigateToFocusedInputDate(focusedInput);\n },\n [navigateToFocusedInputDate],\n );\n\n const handleOpen = (): void => {\n if (inputProps?.disabled) return;\n\n // Default to start date input on open if no start date value has been set\n if (!state.startDate || !withDateRange) {\n setFocusedInput(FocusedInput.StartDate);\n }\n };\n\n const handleClose = useCallback((): void => {\n setFocusedInput(null);\n\n if (withDateRange && onDateChange) {\n setTimeout(() => {\n onDateChange({ startDate: state.startDate, endDate: state.endDate });\n }, 200);\n }\n }, [\n withDateRange,\n onDateChange,\n setFocusedInput,\n state.endDate,\n state.startDate,\n ]);\n\n const activeMonth = useMemo(() => activeMonths[0], [activeMonths]);\n\n // Listen for external changes to start and end dates and update internal state\n useEffect(() => {\n setState((prevState) => ({\n ...prevState,\n startDate,\n endDate: endDate || startDate,\n }));\n }, [startDate, endDate]);\n\n return (\n <DatePickerContext.Provider\n value={{\n activeMonth,\n activeMonths,\n dateFormat: dateFormat || defaultDateFormat,\n endDate: state.endDate || null,\n firstDayOfWeek,\n focusedDate: focusedDate || defaultFocusedDate,\n focusedInput: state.focusedInput,\n goToDate,\n goToNextMonths,\n goToPreviousMonths,\n setFocusedInput,\n isDateBlocked,\n isDateFocused,\n isDateHovered,\n withDateRange: withDateRange || false,\n isDateSelected,\n isFirstOrLastSelectedDate,\n maxDate,\n maxYear: maxYear || defaultMaxYear,\n minDate,\n minYear: minYear || defaultMinYear,\n onDateChange,\n onDateFocus,\n onDateHover,\n onDateSelect,\n startDate: state.startDate,\n onClose: handleClose,\n clearDates,\n }}\n >\n <CPopover.Root\n onOpenChange={({ open }) => {\n if (open) {\n handleOpen();\n } else {\n setFocusedInput(null);\n }\n }}\n positioning={{ placement }}\n variant=\"default\"\n >\n {children}\n </CPopover.Root>\n </DatePickerContext.Provider>\n );\n};\n","import isAfter from \"date-fns/isAfter\";\nimport isBefore from \"date-fns/isBefore\";\n\nexport const isDateAfterMin = (date: Date, minDate?: Date): boolean =>\n minDate ? isAfter(date, minDate) : true;\nexport const isDateBeforeMax = (date: Date, maxDate?: Date): boolean =>\n maxDate ? isBefore(date, maxDate) : true;\n","import React, { ChangeEvent } from \"react\";\nimport { Flex } from \"@chakra-ui/react/flex\";\nimport { HStack } from \"@chakra-ui/react/stack\";\nimport {\n TextInput,\n TextInputProps,\n} from \"components/TextInput/textInput.component\";\nimport { Icon } from \"components/Icon/icon.component\";\nimport { Text } from \"components/Text/text.component\";\nimport isDate from \"date-fns/isDate\";\nimport { getInputValue, parseDate } from \"@datepicker-react/hooks\";\nimport { isDateAfterMin, isDateBeforeMax } from \"./datePickerInput.utils\";\nimport {\n FocusedInput,\n today,\n useDatePickerContext,\n} from \"../../context/datePicker.context\";\nimport format from \"date-fns/format\";\nimport { usePopoverContext } from \"@chakra-ui/react/popover\";\n\ninterface DatePickerInputProps {\n inputProps?: Omit<\n TextInputProps,\n \"onChange\" | \"value\" | \"isClearable\" | \"onClear\"\n >;\n}\n\nexport function DatePickerInput({\n inputProps,\n}: DatePickerInputProps): React.JSX.Element {\n const {\n setFocusedInput,\n startDate,\n endDate,\n focusedInput,\n dateFormat,\n withDateRange,\n minDate,\n maxDate,\n onDateChange,\n onDateSelect,\n onClose,\n } = useDatePickerContext();\n const { open, setOpen } = usePopoverContext();\n const iconSize = inputProps?.size || \"md\";\n\n const onKeyDown = (e: React.KeyboardEvent): void => {\n if (e.key === \"Enter\" && open) {\n setOpen(false);\n onClose();\n e.preventDefault();\n e.stopPropagation();\n }\n };\n\n const onInputChange = (e: ChangeEvent<HTMLInputElement>): void => {\n const dateValue = e.target.value;\n const parsedDate = parseDate(dateValue, dateFormat, today);\n\n if (\n dateValue.length === dateFormat.length &&\n isDate(parsedDate) &&\n isDateAfterMin(parsedDate, minDate) &&\n isDateBeforeMax(parsedDate, maxDate)\n ) {\n onDateSelect(parsedDate);\n }\n\n // Trigger change when input is empty\n if (!dateValue.length && onDateChange) {\n onDateChange({ startDate: null, endDate: null });\n }\n };\n\n return (\n <HStack\n w=\"100%\"\n className=\"DatePicker__Trigger\"\n data-testid=\"kibble-datepicker-trigger\"\n >\n <TextInput\n className=\"DatePicker__Input--Start\"\n data-testid=\"kibble-datepicker-input-start\"\n autoComplete=\"off\"\n rightElement={\n <Flex\n {...(!inputProps?.disabled && {\n onClick: (): void => setFocusedInput(FocusedInput.StartDate),\n })}\n h=\"100%\"\n align=\"center\"\n >\n <Icon name=\"calendarDate\" size={iconSize} />\n </Flex>\n }\n value={getInputValue(startDate, dateFormat, \"\")}\n onChange={onInputChange}\n onKeyDown={onKeyDown}\n {...(!inputProps?.disabled && {\n onFocus: (): void => {\n setFocusedInput(FocusedInput.StartDate);\n },\n })}\n placeholder={format(today, dateFormat).toString()}\n {...(focusedInput === FocusedInput.StartDate && {\n \"data-focus\": true,\n })}\n {...inputProps}\n />\n {withDateRange && (\n <>\n <Text> - </Text>\n <TextInput\n className=\"DatePicker__Input--End\"\n data-testid=\"kibble-datepicker-input-end\"\n rightElement={\n <Flex\n {...(!inputProps?.disabled && {\n onClick: (): void => setFocusedInput(FocusedInput.StartDate),\n })}\n h=\"100%\"\n align=\"center\"\n >\n <Icon name=\"calendarDate\" size={iconSize} />\n </Flex>\n }\n value={getInputValue(endDate, dateFormat, \"\")}\n onChange={onInputChange}\n {...(!inputProps?.disabled && {\n onFocus: (): void => setFocusedInput(FocusedInput.EndDate),\n })}\n onKeyDown={onKeyDown}\n placeholder={format(today, dateFormat).toString()}\n {...(focusedInput === FocusedInput.EndDate && {\n \"data-focus\": true,\n })}\n {...inputProps}\n />\n </>\n )}\n </HStack>\n );\n}\n","import React, { useCallback } from \"react\";\nimport { Button } from \"components/Button/button.component\";\nimport { HStack } from \"@chakra-ui/react/stack\";\nimport { DateRange } from \"../../datePicker.types\";\nimport { useDatePickerContext } from \"../../context/datePicker.context\";\nimport { usePopoverContext } from \"@chakra-ui/react/popover\";\n\nexport interface DatePickerFooterProps {\n buttonText?: string;\n onSubmit?: ({ startDate, endDate }: DateRange) => void;\n hideResetButton?: boolean;\n}\n\nexport function DatePickerFooter({\n buttonText = \"Apply\",\n onSubmit,\n hideResetButton,\n}: DatePickerFooterProps): React.JSX.Element {\n const { startDate, endDate, onClose, clearDates } = useDatePickerContext();\n const { open, setOpen } = usePopoverContext();\n\n const handleSubmit = useCallback((): void => {\n setOpen(false);\n onClose();\n\n if (onSubmit) {\n onSubmit({ startDate, endDate });\n }\n }, [setOpen, onClose, onSubmit, startDate, endDate]);\n\n return (\n <HStack\n w=\"100%\"\n justify={hideResetButton ? \"end\" : \"space-between\"}\n align=\"center\"\n borderTop=\"1px\"\n borderColor=\"border.default\"\n px={3}\n py={2}\n >\n {!hideResetButton && (\n <Button\n size=\"sm\"\n variant=\"ghostNeutral\"\n onClick={() => clearDates({ open })}\n >\n Clear Dates\n </Button>\n )}\n <Button size=\"sm\" onClick={handleSubmit}>\n {buttonText}\n </Button>\n </HStack>\n );\n}\n","export const monthNames = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n];\n","import React, { useMemo, useRef } from \"react\";\nimport { Menu, MenuItemProps } from \"components/Menu\";\nimport range from \"lodash-es/range\";\nimport { Button } from \"components/Button/button.component\";\nimport set from \"date-fns/set\";\nimport { today, useDatePickerContext } from \"../../context/datePicker.context\";\nimport { monthNames } from \"../../datePicker.records\";\nimport { HStack } from \"@chakra-ui/react/stack\";\nimport { Center } from \"@chakra-ui/react/center\";\n\nexport function DatePickerHeader(): React.JSX.Element {\n const selectedMonthRef = useRef<HTMLDivElement | null>(null);\n const selectedYearRef = useRef<HTMLDivElement | null>(null);\n\n const {\n focusedDate,\n activeMonth,\n minYear,\n maxYear,\n goToDate,\n goToNextMonths,\n goToPreviousMonths,\n } = useDatePickerContext();\n\n const monthMenuItems: MenuItemProps[] = useMemo(\n () =>\n monthNames.map((month, index) => ({\n label: month,\n value: String(index),\n selected: index === activeMonth?.month,\n })),\n [activeMonth?.month],\n );\n\n const yearMenuItems: MenuItemProps[] = useMemo(\n () =>\n range(minYear, maxYear + 1).map((year: number) => {\n const stringYear = String(year);\n const selected = year === activeMonth?.year;\n return {\n label: stringYear,\n value: stringYear,\n selected,\n ...(selected && { ref: selectedYearRef }),\n };\n }),\n [activeMonth?.year, maxYear, minYear],\n );\n\n const handleMonthChange = (selectedItem: string | undefined): void =>\n goToDate(\n set(focusedDate || today, {\n month: Number(selectedItem),\n year: activeMonth?.year,\n }),\n );\n\n const handleYearChange = (selectedItem: string | undefined): void =>\n goToDate(\n set(focusedDate || today, {\n month: activeMonth?.month,\n year: Number(selectedItem),\n }),\n );\n\n const scrollToSelectedItem = ({ type }: { type: \"month\" | \"year\" }): void => {\n setTimeout(() => {\n const selectedNode =\n type === \"year\" ? selectedYearRef?.current : selectedMonthRef?.current;\n if (selectedNode) {\n selectedNode.scrollIntoView({ block: \"center\" });\n }\n });\n };\n\n return (\n <HStack\n className=\"DatePicker__Header\"\n data-testid=\"kibble-datepicker-header\"\n w=\"100%\"\n justify=\"space-between\"\n borderBottom=\"1px\"\n borderColor=\"border.default\"\n py={2}\n px={3}\n >\n <Button\n iconName=\"chevronLeft\"\n onClick={goToPreviousMonths}\n variant=\"ghostNeutral\"\n size=\"sm\"\n />\n <Center gap={2} h=\"100%\">\n <Menu\n data-testid=\"kibble-datepicker-month-menu\"\n buttonProps={{\n variant: \"tertiary\",\n text: monthNames[activeMonth?.month || 0],\n size: \"sm\",\n }}\n listProps={{\n menuItems: monthMenuItems,\n onSelect: handleMonthChange,\n maxH: 250,\n }}\n onOpenChange={({ open }) => {\n if (open) scrollToSelectedItem({ type: \"month\" });\n }}\n />\n <Menu\n data-testid=\"kibble-datepicker-year-menu\"\n buttonProps={{\n variant: \"tertiary\",\n text: String(activeMonth?.year),\n size: \"sm\",\n }}\n listProps={{\n menuItems: yearMenuItems,\n onSelect: handleYearChange,\n maxH: 250,\n }}\n onOpenChange={({ open }) => {\n if (open) scrollToSelectedItem({ type: \"year\" });\n }}\n />\n </Center>\n <Button\n iconName=\"chevronRight\"\n onClick={goToNextMonths}\n variant=\"ghostNeutral\"\n size=\"sm\"\n />\n </HStack>\n );\n}\n","import {\n defineSlotRecipe,\n SystemStyleObject,\n} from \"@chakra-ui/react/styled-system\";\nimport { DayVariant } from \"./datePickerCalendarDay.types\";\n\ntype CalendarDaySlot = \"root\" | \"indicator\";\nconst calendarDaySlots: CalendarDaySlot[] = [\"root\", \"indicator\"] as const;\n\ntype CalendarDaySlotStyles = {\n [key in CalendarDaySlot]?: SystemStyleObject;\n};\n\nconst datePickerCalendarDayVariantStyles: Record<\n DayVariant,\n CalendarDaySlotStyles\n> = {\n default: {\n root: {\n borderColor: \"transparent\",\n _hover: {\n bg: \"background.secondaryAlpha.hover\",\n },\n },\n },\n disabled: {\n root: {\n bg: \"background.subtle\",\n borderColor: \"transparent\",\n cursor: \"not-allowed\",\n opacity: 0.4,\n },\n },\n inRange: {\n root: {\n bg: \"background.secondaryAlpha.hover\",\n borderColor: \"transparent\",\n borderRadius: \"none\",\n color: \"text.info\",\n },\n },\n selectedEnd: {\n root: {\n borderColor: \"border.focus\",\n color: \"text.info\",\n },\n },\n selectedStart: {\n root: {\n bg: \"background.secondary\",\n borderColor: \"border.focus\",\n color: \"text.contrast\",\n _hover: {\n bg: \"background.secondary\",\n },\n },\n },\n};\n\nexport const datePickerCalendarDayRecipe = defineSlotRecipe({\n slots: calendarDaySlots,\n base: {\n indicator: {\n position: \"absolute\",\n h: 6,\n right: -4,\n top: -4,\n transform: \"rotate(45deg)\",\n w: 6,\n },\n root: {\n border: \"2px\",\n borderRadius: \"4px\",\n color: \"text.subtle\",\n cursor: \"pointer\",\n fontSize: \"sm\",\n fontWeight: \"normal !important\",\n position: \"relative\",\n px: 3,\n py: 1,\n overflow: \"hidden\",\n },\n },\n variants: {\n variant: datePickerCalendarDayVariantStyles,\n isToday: {\n true: {\n indicator: {\n bg: \"background.secondary\",\n },\n },\n false: {},\n },\n withDateRange: {\n true: {},\n false: {},\n },\n },\n compoundVariants: [\n {\n variant: \"selectedStart\",\n isToday: true,\n css: {\n indicator: {\n bg: \"background\",\n },\n },\n },\n {\n withDateRange: true,\n variant: \"selectedStart\",\n css: {\n root: {\n borderRightRadius: 0,\n },\n },\n },\n {\n withDateRange: true,\n variant: \"selectedEnd\",\n css: {\n root: {\n borderLeftRadius: 0,\n },\n },\n },\n ],\n defaultVariants: {},\n});\n","import React, { useRef, useMemo } from \"react\";\nimport { useDay } from \"@datepicker-react/hooks\";\nimport { useDatePickerContext } from \"../../context/datePicker.context\";\nimport { Button } from \"components/Button/button.component\";\nimport format from \"date-fns/format\";\nimport { Box } from \"@chakra-ui/react/box\";\nimport { DayVariant } from \"./datePickerCalendarDay.types\";\nimport { useSlotRecipe } from \"@chakra-ui/react/styled-system\";\nimport { datePickerCalendarDayRecipe } from \"./datePickerCalendarDay.recipe\";\n\ninterface DayProps {\n dayLabel: string;\n date: Date;\n onDaySelected: () => void;\n}\n\nexport const DatePickerCalendarDay = ({\n dayLabel,\n date,\n onDaySelected,\n}: DayProps): React.JSX.Element => {\n const today = new Date();\n const dayRef = useRef<HTMLButtonElement>(null);\n const { startDate, endDate, dateFormat, withDateRange } =\n useDatePickerContext();\n const formattedDates = useMemo(\n () => ({\n currentDay: format(date, dateFormat),\n startDate: startDate && format(startDate, dateFormat),\n endDate: endDate && format(endDate, dateFormat),\n }),\n [date, dateFormat, endDate, startDate],\n );\n const isRangeStart = formattedDates.currentDay === formattedDates.startDate;\n const isRangeEnd = formattedDates.currentDay === formattedDates.endDate;\n const isToday = formattedDates.currentDay === format(today, dateFormat);\n\n const {\n focusedDate,\n isDateFocused,\n isDateSelected,\n isDateHovered,\n isDateBlocked,\n isFirstOrLastSelectedDate,\n onDateSelect,\n onDateFocus,\n onDateHover,\n } = useDatePickerContext();\n\n const {\n disabledDate,\n isSelected,\n onClick,\n onKeyDown,\n onMouseEnter,\n tabIndex,\n } = useDay({\n date,\n focusedDate,\n isDateFocused,\n isDateSelected,\n isDateHovered,\n isDateBlocked,\n isFirstOrLastSelectedDate,\n onDateFocus,\n onDateSelect,\n onDateHover,\n dayRef: dayRef as React.RefObject<HTMLButtonElement>,\n });\n\n const buttonVariant = useMemo((): DayVariant => {\n switch (true) {\n case disabledDate:\n return \"disabled\";\n case isRangeStart:\n return \"selectedStart\";\n case isRangeEnd:\n return \"selectedEnd\";\n case isSelected && !isRangeStart && !isRangeEnd:\n return \"inRange\";\n default:\n return \"default\";\n }\n }, [disabledDate, isRangeEnd, isRangeStart, isSelected]);\n\n const recipe = useSlotRecipe({ recipe: datePickerCalendarDayRecipe });\n const styles = recipe({ variant: buttonVariant, isToday, withDateRange });\n\n if (!dayLabel) {\n return <></>;\n }\n\n const onSelectDay = (): void => {\n if (buttonVariant === \"disabled\") {\n return;\n }\n\n onClick();\n onDaySelected();\n };\n\n return (\n <Button\n className=\"DatePicker__Day\"\n data-testid={`kibble-datepicker-day--${formattedDates.currentDay}`}\n onClick={onSelectDay}\n onKeyDown={onKeyDown}\n onMouseEnter={onMouseEnter}\n tabIndex={tabIndex}\n ref={dayRef}\n unstyled\n css={styles.root}\n >\n {isToday && <Box css={styles.indicator} />}\n {dayLabel}\n </Button>\n );\n};\n","import React, { useRef } from \"react\";\nimport { useMonth } from \"@datepicker-react/hooks\";\nimport { Text } from \"components/Text/text.component\";\nimport { Box } from \"@chakra-ui/react/box\";\nimport { Center } from \"@chakra-ui/react/center\";\nimport { Grid, GridItem } from \"@chakra-ui/react/grid\";\nimport { DatePickerCalendarDay } from \"../DatePickerDay/datePickerCalendarDay.component\";\nimport {\n currentMonth,\n currentYear,\n useDatePickerContext,\n} from \"../../context/datePicker.context\";\n\nexport interface MonthProps {\n onDaySelected: () => void;\n}\n\nexport const DatePickerCalendarMonth = ({\n onDaySelected,\n}: MonthProps): React.JSX.Element => {\n const ref = useRef<HTMLDivElement | null>(null);\n const { firstDayOfWeek, activeMonth } = useDatePickerContext();\n\n const { days, weekdayLabels } = useMonth({\n year: activeMonth?.year || currentYear,\n month: activeMonth?.month !== undefined ? activeMonth.month : currentMonth,\n firstDayOfWeek,\n });\n\n return (\n <Box\n ref={ref}\n className=\"DatePicker__Month\"\n data-testid=\"kibble-datepicker-month\"\n >\n <Grid templateColumns=\"repeat(7, 1fr)\" my={2}>\n {weekdayLabels.map((weekdayLabel: string) => (\n <GridItem key={weekdayLabel}>\n <Center>\n <Text size=\"xs\" variant=\"subtle\">\n {weekdayLabel}\n </Text>\n </Center>\n </GridItem>\n ))}\n </Grid>\n <Grid templateColumns=\"repeat(7, 1fr)\">\n {days.map((day, index) =>\n typeof day === \"object\" ? (\n <DatePickerCalendarDay\n key={day.date.toString()}\n date={day.date}\n dayLabel={day.dayLabel}\n onDaySelected={onDaySelected}\n />\n ) : (\n <div key={index} />\n ),\n )}\n </Grid>\n </Box>\n );\n};\n","import React from \"react\";\nimport { Grid } from \"@chakra-ui/react/grid\";\nimport { DatePickerCalendarMonth } from \"../DatePickerMonth/datePickerCalendarMonth.component\";\nimport { useDatePickerContext } from \"../../context/datePicker.context\";\nimport { usePopoverContext } from \"@chakra-ui/react/popover\";\n\nexport function DatePickerCalendar(): React.JSX.Element {\n const { withDateRange, activeMonths, onClose } = useDatePickerContext();\n const { setOpen } = usePopoverContext();\n\n const handleDaySelected = (): void => {\n if (!withDateRange) {\n setOpen(false);\n onClose();\n }\n };\n\n return (\n <Grid\n className=\"DatePicker__Calendar\"\n data-testid=\"kibble-datepicker-calendar\"\n gap=\"0 64px\"\n px={3}\n py={2}\n >\n {activeMonths.map((month) => (\n <DatePickerCalendarMonth\n key={`${month.year}-${month.month}`}\n onDaySelected={handleDaySelected}\n />\n ))}\n </Grid>\n );\n}\n","import React from \"react\";\nimport { DateFormats, DateRange } from \"./datePicker.types\";\nimport { TextInputProps } from \"components/TextInput/textInput.component\";\nimport { Placement } from \"shared/types/placement\";\nimport { DatePickerProvider } from \"./context/datePicker.provider\";\nimport { DatePickerInput } from \"./components/DatePickerInput/datePickerInput.component\";\nimport {\n DatePickerFooter,\n DatePickerFooterProps,\n} from \"./components/DatePickerFooter/datePickerFooter.component\";\nimport { DatePickerHeader } from \"./components/DatePickerHeader/datePickerHeader.component\";\nimport { DatePickerCalendar } from \"./components/DatePickerCalendar/datePickerCalendar.component\";\nimport { Popover as CPopover } from \"@chakra-ui/react/popover\";\nimport { Portal } from \"@chakra-ui/react/portal\";\n\nexport interface DatePickerProps {\n dateFormat?: string | DateFormats;\n endDate?: Date | null;\n footerProps?: DatePickerFooterProps;\n hideFooter?: boolean;\n inputProps?: Omit<\n TextInputProps,\n \"onChange\" | \"value\" | \"isClearable\" | \"onClear\"\n >;\n maxDate?: Date;\n maxYear?: number;\n maxDaysInRange?: number;\n minDate?: Date;\n minYear?: number;\n onDateChange?: ({ startDate, endDate }: DateRange) => void;\n placement?: Placement;\n startDate: Date | null;\n withDateRange?: boolean;\n}\n\nexport const DatePicker = (props: DatePickerProps): React.JSX.Element => {\n const {\n footerProps,\n hideFooter = false,\n inputProps,\n withDateRange = false,\n } = props;\n\n return (\n <DatePickerProvider {...props}>\n <CPopover.Trigger>\n <DatePickerInput inputProps={inputProps} />\n </CPopover.Trigger>\n <Portal>\n <CPopover.Positioner\n className=\"DatePicker\"\n data-testid=\"kibble-datepicker\"\n >\n <CPopover.Content\n className=\"DatePicker__Content\"\n data-testid=\"kibble-datepicker-content\"\n minW=\"340px\"\n >\n <CPopover.Arrow />\n <CPopover.Body p=\"0 !important\">\n <DatePickerHeader />\n <DatePickerCalendar />\n {withDateRange && !hideFooter && (\n <DatePickerFooter {...footerProps} />\n )}\n </CPopover.Body>\n </CPopover.Content>\n </CPopover.Positioner>\n </Portal>\n </DatePickerProvider>\n );\n};\n"],"names":["DateFormats","FocusedInput","today","currentYear","currentMonth","defaultFocusedDate","defaultMinYear","defaultMaxYear","defaultDateFormat","initialDatePickerState","DatePickerContext","createContext","useDatePickerContext","useContext","DatePickerProvider","children","dateFormat","endDate","inputProps","maxDate","maxDaysInRange","maxYear","minDate","minYear","onDateChange","placement","startDate","withDateRange","state","setState","useState","getMaxBookingDate","useCallback","add","onDatesChange","data","_maxBookingDate","isAfter","startOfDay","endOfDay","clearDates","open","activeMonths","firstDayOfWeek","focusedDate","goToDate","goToNextMonths","goToPreviousMonths","isDateBlocked","isDateFocused","isDateHovered","isDateSelected","isFirstOrLastSelectedDate","onDateFocus","onDateHover","onDateSelect","useDatepicker","navigateToFocusedInputDate","focusedInput","setFocusedInput","prevState","handleOpen","handleClose","activeMonth","useMemo","useEffect","jsx","CPopover.Root","isDateAfterMin","date","isDateBeforeMax","isBefore","DatePickerInput","onClose","setOpen","usePopoverContext","iconSize","onKeyDown","e","onInputChange","dateValue","parsedDate","parseDate","isDate","jsxs","HStack","TextInput","Flex","Icon","getInputValue","format","Fragment","Text","DatePickerFooter","buttonText","onSubmit","hideResetButton","handleSubmit","Button","monthNames","DatePickerHeader","selectedMonthRef","useRef","selectedYearRef","monthMenuItems","month","index","yearMenuItems","range","year","stringYear","selected","handleMonthChange","selectedItem","set","handleYearChange","scrollToSelectedItem","type","selectedNode","Center","Menu","calendarDaySlots","datePickerCalendarDayVariantStyles","datePickerCalendarDayRecipe","defineSlotRecipe","DatePickerCalendarDay","dayLabel","onDaySelected","dayRef","formattedDates","isRangeStart","isRangeEnd","isToday","disabledDate","isSelected","onClick","onMouseEnter","tabIndex","useDay","buttonVariant","styles","useSlotRecipe","onSelectDay","Box","DatePickerCalendarMonth","ref","days","weekdayLabels","useMonth","Grid","weekdayLabel","GridItem","day","DatePickerCalendar","handleDaySelected","DatePicker","props","footerProps","hideFooter","CPopover.Trigger","Portal","CPopover.Positioner","CPopover.Content","CPopover.Arrow","CPopover.Body"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"datePicker.component-ZmMJoE3c.js","sources":["../../src/components/DatePicker/datePicker.types.ts","../../src/components/DatePicker/context/datePicker.context.tsx","../../src/components/DatePicker/context/datePicker.provider.tsx","../../src/components/DatePicker/components/DatePickerInput/datePickerInput.utils.ts","../../src/components/DatePicker/components/DatePickerInput/datePickerInput.component.tsx","../../src/components/DatePicker/components/DatePickerFooter/datePickerFooter.component.tsx","../../src/components/DatePicker/datePicker.records.ts","../../src/components/DatePicker/components/DatePickerHeader/datePickerHeader.component.tsx","../../src/components/DatePicker/components/DatePickerDay/datePickerCalendarDay.recipe.ts","../../src/components/DatePicker/components/DatePickerDay/datePickerCalendarDay.component.tsx","../../src/components/DatePicker/components/DatePickerMonth/datePickerCalendarMonth.component.tsx","../../src/components/DatePicker/components/DatePickerCalendar/datePickerCalendar.component.tsx","../../src/components/DatePicker/datePicker.component.tsx"],"sourcesContent":["export enum DateFormats {\n \"ShortDate\" = \"MM/dd/yyyy\",\n \"LongDate\" = \"MMM dd yyyy\",\n \"DayOfWeekDayOfMonth\" = \"eeee, MMMM do\",\n}\n\nexport interface DateRange {\n startDate: Date | null;\n endDate?: Date | null;\n}\n","import { FirstDayOfWeek, MonthType } from \"@datepicker-react/hooks\";\nimport { useContext, createContext } from \"react\";\nimport { DateFormats, DateRange } from \"../datePicker.types\";\n\nexport enum FocusedInput {\n StartDate = \"startDate\",\n EndDate = \"endDate\",\n}\n\nexport interface IDatePickerContext {\n activeMonth?: MonthType;\n dateFormat: DateFormats | string;\n endDate: Date | null;\n focusedInput: FocusedInput | null;\n setFocusedInput: (focusedInput: FocusedInput | null) => void;\n withDateRange: boolean;\n maxDate?: Date;\n maxYear: number;\n minDate?: Date;\n minYear: number;\n onDateChange?: ({ startDate, endDate }: DateRange) => void;\n startDate: Date | null;\n onClose: () => void;\n clearDates: ({ open }: { open?: boolean }) => void;\n // The following are all values returned by the datepicker-react useDatePicker hook\n // Setting them here in our own context to be referenced in child components\n focusedDate: Date | null;\n firstDayOfWeek?: FirstDayOfWeek;\n activeMonths: MonthType[];\n isDateFocused: (date: Date) => boolean;\n isDateSelected: (date: Date) => boolean;\n isDateHovered: (date: Date) => boolean;\n isDateBlocked: (date: Date) => boolean;\n isFirstOrLastSelectedDate: (date: Date) => boolean;\n onDateFocus: (date: Date) => void;\n onDateHover: (date: Date | null) => void;\n onDateSelect: (date: Date) => void;\n goToPreviousMonths: () => void;\n goToNextMonths: () => void;\n goToDate: (date: Date) => void;\n}\n\nexport const today = new Date();\nexport const currentYear = today.getFullYear();\nexport const currentMonth = today.getMonth();\n\nexport const defaultFocusedDate = today;\nexport const defaultMinYear = currentYear - 100;\nexport const defaultMaxYear = currentYear + 5;\nexport const defaultDateFormat = DateFormats.ShortDate;\n\nconst initialDatePickerState: IDatePickerContext = {\n dateFormat: defaultDateFormat,\n endDate: null,\n focusedInput: null,\n withDateRange: false,\n maxYear: defaultMaxYear,\n minYear: defaultMinYear,\n startDate: null,\n onClose: (): void => {\n throw new Error(\"onClose(): boolean not implemented\");\n },\n setFocusedInput: (): void => {\n throw new Error(\"setFocusedInput(): boolean not implemented\");\n },\n focusedDate: today,\n firstDayOfWeek: undefined,\n activeMonths: [],\n isDateFocused: (): boolean => {\n throw new Error(\"isDateFocused(): boolean not implemented\");\n },\n isDateSelected: (): boolean => {\n throw new Error(\"isDateSelected(): boolean not implemented\");\n },\n isDateHovered: (): boolean => {\n throw new Error(\"isDateHovered(): boolean not implemented\");\n },\n isDateBlocked: (): boolean => {\n throw new Error(\"isDateBlocked(): boolean not implemented\");\n },\n isFirstOrLastSelectedDate: (): boolean => {\n throw new Error(\"isFirstOrLastSelectedDate(): boolean not implemented\");\n },\n onDateFocus: (): void => {\n throw new Error(\"onDateFocus(): boolean not implemented\");\n },\n onDateHover: (): void => {\n throw new Error(\"onDateHover(): boolean not implemented\");\n },\n onDateSelect: (): Date => {\n throw new Error(\"onDateSelect(): boolean not implemented\");\n },\n goToPreviousMonths: (): Date => {\n throw new Error(\"goToPreviousMonths(): boolean not implemented\");\n },\n goToNextMonths: (): Date => {\n throw new Error(\"goToNextMonths(): boolean not implemented\");\n },\n goToDate: (): Date => {\n throw new Error(\"goToDate(): boolean not implemented\");\n },\n clearDates: (): void => {\n throw new Error(\"clearDates(): boolean not implemented\");\n },\n};\n\nexport const DatePickerContext = createContext<IDatePickerContext>(\n initialDatePickerState,\n);\n\nexport const useDatePickerContext = (): IDatePickerContext =>\n useContext<IDatePickerContext>(DatePickerContext);\n","import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { Popover as CPopover } from \"@chakra-ui/react/popover\";\nimport { DatePickerProps } from \"../datePicker.component\";\nimport { useDatepicker } from \"@datepicker-react/hooks\";\nimport {\n DatePickerContext,\n defaultDateFormat,\n defaultFocusedDate,\n defaultMaxYear,\n defaultMinYear,\n FocusedInput,\n today,\n} from \"./datePicker.context\";\nimport startOfDay from \"date-fns/startOfDay\";\nimport endOfDay from \"date-fns/endOfDay\";\nimport add from \"date-fns/add\";\nimport isAfter from \"date-fns/isAfter\";\n\ntype DatePickerProviderProps = DatePickerProps & {\n children: React.ReactNode;\n};\n\ninterface DatePickerInternalState {\n startDate: Date | null;\n endDate: Date | null;\n focusedInput: FocusedInput | null;\n}\n\nexport const DatePickerProvider = ({\n children,\n dateFormat = defaultDateFormat,\n endDate,\n inputProps,\n maxDate,\n maxDaysInRange,\n maxYear,\n minDate,\n minYear,\n onDateChange,\n placement = \"bottom\",\n startDate,\n withDateRange,\n}: DatePickerProviderProps): React.JSX.Element => {\n const [state, setState] = useState<DatePickerInternalState>({\n startDate,\n endDate: endDate || startDate,\n focusedInput: null,\n });\n\n /**\n * Calculates the max booking date based on the following criteria:\n * _maxDaysInRange_\n * * should only ever be used by date ranges\n * * should take precedence over the maxDate value\n * * should use it's value plus the start date of the range to calculate the max date\n * _maxDate_\n * * can be passed to either a single date input or a date range\n * * if provided it will be ignored if maxDaysInRange is passed\n * If neither of these values is specified return undefined\n */\n const getMaxBookingDate = useCallback(\n (startDate: Date | null) => {\n if (maxDaysInRange && startDate) {\n return add(startDate, { days: maxDaysInRange });\n } else if (maxDate) {\n return maxDate;\n }\n\n return;\n },\n [maxDate, maxDaysInRange],\n );\n\n const onDatesChange = (data: DatePickerInternalState): void => {\n if (!data) {\n return;\n }\n\n // Default the end date to the start date if no value is provided\n if (!data.endDate) {\n data.endDate = data.startDate;\n }\n\n // If end date exceeds new max booking date, reset the end date value\n const _maxBookingDate = getMaxBookingDate(data.startDate);\n if (\n data.endDate &&\n _maxBookingDate &&\n isAfter(data.endDate, _maxBookingDate)\n ) {\n data.endDate = null;\n }\n\n // Set the start date to start of day and end date to end of day to create a range\n data.startDate = data.startDate\n ? startOfDay(data.startDate)\n : data.startDate;\n data.endDate = data.endDate ? endOfDay(data.endDate) : data.endDate;\n\n setState({\n ...data,\n focusedInput: data.focusedInput || FocusedInput.StartDate,\n });\n if (!withDateRange && onDateChange) {\n onDateChange(data);\n }\n };\n\n const clearDates = useCallback(({ open }: { open?: boolean }) => {\n setState({\n startDate: null,\n endDate: null,\n focusedInput: open ? FocusedInput.StartDate : null,\n });\n }, []);\n\n const {\n activeMonths,\n firstDayOfWeek,\n focusedDate,\n goToDate,\n goToNextMonths,\n goToPreviousMonths,\n isDateBlocked,\n isDateFocused,\n isDateHovered,\n isDateSelected,\n isFirstOrLastSelectedDate,\n onDateFocus,\n onDateHover,\n onDateSelect,\n } = useDatepicker({\n endDate: state.endDate,\n focusedInput: state.focusedInput,\n initialVisibleMonth: state.startDate || today,\n // Only show max disabled dates for date range when focused on end date input\n maxBookingDate:\n withDateRange && state.focusedInput === FocusedInput.StartDate\n ? undefined\n : getMaxBookingDate(state.startDate),\n minBookingDate: minDate,\n minBookingDays: 1,\n numberOfMonths: 1,\n onDatesChange,\n startDate: state.startDate,\n ...(!withDateRange && { exactMinBookingDays: true }),\n });\n\n const navigateToFocusedInputDate = useCallback(\n (focusedInput: FocusedInput | null) => {\n if (focusedInput === FocusedInput.EndDate && state.endDate) {\n goToDate(state.endDate);\n } else if (state.startDate) {\n goToDate(state.startDate);\n }\n },\n [goToDate, state.endDate, state.startDate],\n );\n\n const setFocusedInput = useCallback(\n (focusedInput: FocusedInput | null): void => {\n setState((prevState) => ({ ...prevState, focusedInput }));\n navigateToFocusedInputDate(focusedInput);\n },\n [navigateToFocusedInputDate],\n );\n\n const handleOpen = (): void => {\n if (inputProps?.disabled) return;\n\n // Default to start date input on open if no start date value has been set\n if (!state.startDate || !withDateRange) {\n setFocusedInput(FocusedInput.StartDate);\n }\n };\n\n const handleClose = useCallback((): void => {\n setFocusedInput(null);\n\n if (withDateRange && onDateChange) {\n setTimeout(() => {\n onDateChange({ startDate: state.startDate, endDate: state.endDate });\n }, 200);\n }\n }, [\n withDateRange,\n onDateChange,\n setFocusedInput,\n state.endDate,\n state.startDate,\n ]);\n\n const activeMonth = useMemo(() => activeMonths[0], [activeMonths]);\n\n // Listen for external changes to start and end dates and update internal state\n useEffect(() => {\n setState((prevState) => ({\n ...prevState,\n startDate,\n endDate: endDate || startDate,\n }));\n }, [startDate, endDate]);\n\n return (\n <DatePickerContext.Provider\n value={{\n activeMonth,\n activeMonths,\n dateFormat: dateFormat || defaultDateFormat,\n endDate: state.endDate || null,\n firstDayOfWeek,\n focusedDate: focusedDate || defaultFocusedDate,\n focusedInput: state.focusedInput,\n goToDate,\n goToNextMonths,\n goToPreviousMonths,\n setFocusedInput,\n isDateBlocked,\n isDateFocused,\n isDateHovered,\n withDateRange: withDateRange || false,\n isDateSelected,\n isFirstOrLastSelectedDate,\n maxDate,\n maxYear: maxYear || defaultMaxYear,\n minDate,\n minYear: minYear || defaultMinYear,\n onDateChange,\n onDateFocus,\n onDateHover,\n onDateSelect,\n startDate: state.startDate,\n onClose: handleClose,\n clearDates,\n }}\n >\n <CPopover.Root\n onOpenChange={({ open }) => {\n if (open) {\n handleOpen();\n } else {\n setFocusedInput(null);\n }\n }}\n positioning={{ placement }}\n variant=\"default\"\n >\n {children}\n </CPopover.Root>\n </DatePickerContext.Provider>\n );\n};\n","import isAfter from \"date-fns/isAfter\";\nimport isBefore from \"date-fns/isBefore\";\n\nexport const isDateAfterMin = (date: Date, minDate?: Date): boolean =>\n minDate ? isAfter(date, minDate) : true;\nexport const isDateBeforeMax = (date: Date, maxDate?: Date): boolean =>\n maxDate ? isBefore(date, maxDate) : true;\n","import React, { ChangeEvent } from \"react\";\nimport { Flex } from \"@chakra-ui/react/flex\";\nimport { HStack } from \"@chakra-ui/react/stack\";\nimport {\n TextInput,\n TextInputProps,\n} from \"components/TextInput/textInput.component\";\nimport { Icon } from \"components/Icon/icon.component\";\nimport { Text } from \"components/Text/text.component\";\nimport isDate from \"date-fns/isDate\";\nimport { getInputValue, parseDate } from \"@datepicker-react/hooks\";\nimport { isDateAfterMin, isDateBeforeMax } from \"./datePickerInput.utils\";\nimport {\n FocusedInput,\n today,\n useDatePickerContext,\n} from \"../../context/datePicker.context\";\nimport format from \"date-fns/format\";\nimport { usePopoverContext } from \"@chakra-ui/react/popover\";\n\ninterface DatePickerInputProps {\n inputProps?: Omit<\n TextInputProps,\n \"onChange\" | \"value\" | \"isClearable\" | \"onClear\"\n >;\n}\n\nexport function DatePickerInput({\n inputProps,\n}: DatePickerInputProps): React.JSX.Element {\n const {\n setFocusedInput,\n startDate,\n endDate,\n focusedInput,\n dateFormat,\n withDateRange,\n minDate,\n maxDate,\n onDateChange,\n onDateSelect,\n onClose,\n } = useDatePickerContext();\n const { open, setOpen } = usePopoverContext();\n const iconSize = inputProps?.size || \"md\";\n\n const onKeyDown = (e: React.KeyboardEvent): void => {\n if (e.key === \"Enter\" && open) {\n setOpen(false);\n onClose();\n e.preventDefault();\n e.stopPropagation();\n }\n };\n\n const onInputChange = (e: ChangeEvent<HTMLInputElement>): void => {\n const dateValue = e.target.value;\n const parsedDate = parseDate(dateValue, dateFormat, today);\n\n if (\n dateValue.length === dateFormat.length &&\n isDate(parsedDate) &&\n isDateAfterMin(parsedDate, minDate) &&\n isDateBeforeMax(parsedDate, maxDate)\n ) {\n onDateSelect(parsedDate);\n }\n\n // Trigger change when input is empty\n if (!dateValue.length && onDateChange) {\n onDateChange({ startDate: null, endDate: null });\n }\n };\n\n return (\n <HStack\n w=\"100%\"\n className=\"DatePicker__Trigger\"\n data-testid=\"kibble-datepicker-trigger\"\n >\n <TextInput\n className=\"DatePicker__Input--Start\"\n data-testid=\"kibble-datepicker-input-start\"\n autoComplete=\"off\"\n rightElement={\n <Flex\n {...(!inputProps?.disabled && {\n onClick: (): void => setFocusedInput(FocusedInput.StartDate),\n })}\n h=\"100%\"\n align=\"center\"\n >\n <Icon name=\"calendarDate\" size={iconSize} />\n </Flex>\n }\n value={getInputValue(startDate, dateFormat, \"\")}\n onChange={onInputChange}\n onKeyDown={onKeyDown}\n {...(!inputProps?.disabled && {\n onFocus: (): void => {\n setFocusedInput(FocusedInput.StartDate);\n },\n })}\n placeholder={format(today, dateFormat).toString()}\n {...(focusedInput === FocusedInput.StartDate && {\n \"data-focus\": true,\n })}\n {...inputProps}\n />\n {withDateRange && (\n <>\n <Text> - </Text>\n <TextInput\n className=\"DatePicker__Input--End\"\n data-testid=\"kibble-datepicker-input-end\"\n rightElement={\n <Flex\n {...(!inputProps?.disabled && {\n onClick: (): void => setFocusedInput(FocusedInput.StartDate),\n })}\n h=\"100%\"\n align=\"center\"\n >\n <Icon name=\"calendarDate\" size={iconSize} />\n </Flex>\n }\n value={getInputValue(endDate, dateFormat, \"\")}\n onChange={onInputChange}\n {...(!inputProps?.disabled && {\n onFocus: (): void => setFocusedInput(FocusedInput.EndDate),\n })}\n onKeyDown={onKeyDown}\n placeholder={format(today, dateFormat).toString()}\n {...(focusedInput === FocusedInput.EndDate && {\n \"data-focus\": true,\n })}\n {...inputProps}\n />\n </>\n )}\n </HStack>\n );\n}\n","import React, { useCallback } from \"react\";\nimport { Button } from \"components/Button/button.component\";\nimport { HStack } from \"@chakra-ui/react/stack\";\nimport { DateRange } from \"../../datePicker.types\";\nimport { useDatePickerContext } from \"../../context/datePicker.context\";\nimport { usePopoverContext } from \"@chakra-ui/react/popover\";\n\nexport interface DatePickerFooterProps {\n buttonText?: string;\n onSubmit?: ({ startDate, endDate }: DateRange) => void;\n hideResetButton?: boolean;\n}\n\nexport function DatePickerFooter({\n buttonText = \"Apply\",\n onSubmit,\n hideResetButton,\n}: DatePickerFooterProps): React.JSX.Element {\n const { startDate, endDate, onClose, clearDates } = useDatePickerContext();\n const { open, setOpen } = usePopoverContext();\n\n const handleSubmit = useCallback((): void => {\n setOpen(false);\n onClose();\n\n if (onSubmit) {\n onSubmit({ startDate, endDate });\n }\n }, [setOpen, onClose, onSubmit, startDate, endDate]);\n\n return (\n <HStack\n w=\"100%\"\n justify={hideResetButton ? \"end\" : \"space-between\"}\n align=\"center\"\n borderTop=\"1px\"\n borderColor=\"border.default\"\n px={3}\n py={2}\n >\n {!hideResetButton && (\n <Button\n size=\"sm\"\n variant=\"ghostNeutral\"\n onClick={() => clearDates({ open })}\n >\n Clear Dates\n </Button>\n )}\n <Button size=\"sm\" onClick={handleSubmit}>\n {buttonText}\n </Button>\n </HStack>\n );\n}\n","export const monthNames = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n];\n","import React, { useMemo, useRef } from \"react\";\nimport { Menu, MenuItemProps } from \"components/Menu\";\nimport range from \"lodash-es/range\";\nimport { Button } from \"components/Button/button.component\";\nimport set from \"date-fns/set\";\nimport { today, useDatePickerContext } from \"../../context/datePicker.context\";\nimport { monthNames } from \"../../datePicker.records\";\nimport { HStack } from \"@chakra-ui/react/stack\";\nimport { Center } from \"@chakra-ui/react/center\";\n\nexport function DatePickerHeader(): React.JSX.Element {\n const selectedMonthRef = useRef<HTMLDivElement | null>(null);\n const selectedYearRef = useRef<HTMLDivElement | null>(null);\n\n const {\n focusedDate,\n activeMonth,\n minYear,\n maxYear,\n goToDate,\n goToNextMonths,\n goToPreviousMonths,\n } = useDatePickerContext();\n\n const monthMenuItems: MenuItemProps[] = useMemo(\n () =>\n monthNames.map((month, index) => ({\n label: month,\n value: String(index),\n selected: index === activeMonth?.month,\n })),\n [activeMonth?.month],\n );\n\n const yearMenuItems: MenuItemProps[] = useMemo(\n () =>\n range(minYear, maxYear + 1).map((year: number) => {\n const stringYear = String(year);\n const selected = year === activeMonth?.year;\n return {\n label: stringYear,\n value: stringYear,\n selected,\n ...(selected && { ref: selectedYearRef }),\n };\n }),\n [activeMonth?.year, maxYear, minYear],\n );\n\n const handleMonthChange = (selectedItem: string | undefined): void =>\n goToDate(\n set(focusedDate || today, {\n month: Number(selectedItem),\n year: activeMonth?.year,\n }),\n );\n\n const handleYearChange = (selectedItem: string | undefined): void =>\n goToDate(\n set(focusedDate || today, {\n month: activeMonth?.month,\n year: Number(selectedItem),\n }),\n );\n\n const scrollToSelectedItem = ({ type }: { type: \"month\" | \"year\" }): void => {\n setTimeout(() => {\n const selectedNode =\n type === \"year\" ? selectedYearRef?.current : selectedMonthRef?.current;\n if (selectedNode) {\n selectedNode.scrollIntoView({ block: \"center\" });\n }\n });\n };\n\n return (\n <HStack\n className=\"DatePicker__Header\"\n data-testid=\"kibble-datepicker-header\"\n w=\"100%\"\n justify=\"space-between\"\n borderBottom=\"1px\"\n borderColor=\"border.default\"\n py={2}\n px={3}\n >\n <Button\n iconName=\"chevronLeft\"\n onClick={goToPreviousMonths}\n variant=\"ghostNeutral\"\n size=\"sm\"\n />\n <Center gap={2} h=\"100%\">\n <Menu\n data-testid=\"kibble-datepicker-month-menu\"\n buttonProps={{\n variant: \"tertiary\",\n text: monthNames[activeMonth?.month || 0],\n size: \"sm\",\n }}\n listProps={{\n menuItems: monthMenuItems,\n onSelect: handleMonthChange,\n maxH: 250,\n }}\n onOpenChange={({ open }) => {\n if (open) scrollToSelectedItem({ type: \"month\" });\n }}\n />\n <Menu\n data-testid=\"kibble-datepicker-year-menu\"\n buttonProps={{\n variant: \"tertiary\",\n text: String(activeMonth?.year),\n size: \"sm\",\n }}\n listProps={{\n menuItems: yearMenuItems,\n onSelect: handleYearChange,\n maxH: 250,\n }}\n onOpenChange={({ open }) => {\n if (open) scrollToSelectedItem({ type: \"year\" });\n }}\n />\n </Center>\n <Button\n iconName=\"chevronRight\"\n onClick={goToNextMonths}\n variant=\"ghostNeutral\"\n size=\"sm\"\n />\n </HStack>\n );\n}\n","import {\n defineSlotRecipe,\n SystemStyleObject,\n} from \"@chakra-ui/react/styled-system\";\nimport { DayVariant } from \"./datePickerCalendarDay.types\";\n\ntype CalendarDaySlot = \"root\" | \"indicator\";\nconst calendarDaySlots: CalendarDaySlot[] = [\"root\", \"indicator\"] as const;\n\ntype CalendarDaySlotStyles = {\n [key in CalendarDaySlot]?: SystemStyleObject;\n};\n\nconst datePickerCalendarDayVariantStyles: Record<\n DayVariant,\n CalendarDaySlotStyles\n> = {\n default: {\n root: {\n borderColor: \"transparent\",\n _hover: {\n bg: \"background.secondaryAlpha.hover\",\n },\n },\n },\n disabled: {\n root: {\n bg: \"background.subtle\",\n borderColor: \"transparent\",\n cursor: \"not-allowed\",\n opacity: 0.4,\n },\n },\n inRange: {\n root: {\n bg: \"background.secondaryAlpha.hover\",\n borderColor: \"transparent\",\n borderRadius: \"none\",\n color: \"text.info\",\n },\n },\n selectedEnd: {\n root: {\n borderColor: \"border.focus\",\n color: \"text.info\",\n },\n },\n selectedStart: {\n root: {\n bg: \"background.secondary\",\n borderColor: \"border.focus\",\n color: \"text.contrast\",\n _hover: {\n bg: \"background.secondary\",\n },\n },\n },\n};\n\nexport const datePickerCalendarDayRecipe = defineSlotRecipe({\n slots: calendarDaySlots,\n base: {\n indicator: {\n position: \"absolute\",\n h: 6,\n right: -4,\n top: -4,\n transform: \"rotate(45deg)\",\n w: 6,\n },\n root: {\n border: \"2px\",\n borderRadius: \"4px\",\n color: \"text.subtle\",\n cursor: \"pointer\",\n fontSize: \"sm\",\n fontWeight: \"normal !important\",\n position: \"relative\",\n px: 3,\n py: 1,\n overflow: \"hidden\",\n },\n },\n variants: {\n variant: datePickerCalendarDayVariantStyles,\n isToday: {\n true: {\n indicator: {\n bg: \"background.secondary\",\n },\n },\n false: {},\n },\n withDateRange: {\n true: {},\n false: {},\n },\n },\n compoundVariants: [\n {\n variant: \"selectedStart\",\n isToday: true,\n css: {\n indicator: {\n bg: \"background\",\n },\n },\n },\n {\n withDateRange: true,\n variant: \"selectedStart\",\n css: {\n root: {\n borderRightRadius: 0,\n },\n },\n },\n {\n withDateRange: true,\n variant: \"selectedEnd\",\n css: {\n root: {\n borderLeftRadius: 0,\n },\n },\n },\n ],\n defaultVariants: {},\n});\n","import React, { useRef, useMemo } from \"react\";\nimport { useDay } from \"@datepicker-react/hooks\";\nimport { useDatePickerContext } from \"../../context/datePicker.context\";\nimport { Button } from \"components/Button/button.component\";\nimport format from \"date-fns/format\";\nimport { Box } from \"@chakra-ui/react/box\";\nimport { DayVariant } from \"./datePickerCalendarDay.types\";\nimport { useSlotRecipe } from \"@chakra-ui/react/styled-system\";\nimport { datePickerCalendarDayRecipe } from \"./datePickerCalendarDay.recipe\";\n\ninterface DayProps {\n dayLabel: string;\n date: Date;\n onDaySelected: () => void;\n}\n\nexport const DatePickerCalendarDay = ({\n dayLabel,\n date,\n onDaySelected,\n}: DayProps): React.JSX.Element => {\n const today = new Date();\n const dayRef = useRef<HTMLButtonElement>(null);\n const { startDate, endDate, dateFormat, withDateRange } =\n useDatePickerContext();\n const formattedDates = useMemo(\n () => ({\n currentDay: format(date, dateFormat),\n startDate: startDate && format(startDate, dateFormat),\n endDate: endDate && format(endDate, dateFormat),\n }),\n [date, dateFormat, endDate, startDate],\n );\n const isRangeStart = formattedDates.currentDay === formattedDates.startDate;\n const isRangeEnd = formattedDates.currentDay === formattedDates.endDate;\n const isToday = formattedDates.currentDay === format(today, dateFormat);\n\n const {\n focusedDate,\n isDateFocused,\n isDateSelected,\n isDateHovered,\n isDateBlocked,\n isFirstOrLastSelectedDate,\n onDateSelect,\n onDateFocus,\n onDateHover,\n } = useDatePickerContext();\n\n const {\n disabledDate,\n isSelected,\n onClick,\n onKeyDown,\n onMouseEnter,\n tabIndex,\n } = useDay({\n date,\n focusedDate,\n isDateFocused,\n isDateSelected,\n isDateHovered,\n isDateBlocked,\n isFirstOrLastSelectedDate,\n onDateFocus,\n onDateSelect,\n onDateHover,\n dayRef: dayRef as React.RefObject<HTMLButtonElement>,\n });\n\n const buttonVariant = useMemo((): DayVariant => {\n switch (true) {\n case disabledDate:\n return \"disabled\";\n case isRangeStart:\n return \"selectedStart\";\n case isRangeEnd:\n return \"selectedEnd\";\n case isSelected && !isRangeStart && !isRangeEnd:\n return \"inRange\";\n default:\n return \"default\";\n }\n }, [disabledDate, isRangeEnd, isRangeStart, isSelected]);\n\n const recipe = useSlotRecipe({ recipe: datePickerCalendarDayRecipe });\n const styles = recipe({ variant: buttonVariant, isToday, withDateRange });\n\n if (!dayLabel) {\n return <></>;\n }\n\n const onSelectDay = (): void => {\n if (buttonVariant === \"disabled\") {\n return;\n }\n\n onClick();\n onDaySelected();\n };\n\n return (\n <Button\n className=\"DatePicker__Day\"\n data-testid={`kibble-datepicker-day--${formattedDates.currentDay}`}\n onClick={onSelectDay}\n onKeyDown={onKeyDown}\n onMouseEnter={onMouseEnter}\n tabIndex={tabIndex}\n ref={dayRef}\n unstyled\n css={styles.root}\n >\n {isToday && <Box css={styles.indicator} />}\n {dayLabel}\n </Button>\n );\n};\n","import React, { useRef } from \"react\";\nimport { useMonth } from \"@datepicker-react/hooks\";\nimport { Text } from \"components/Text/text.component\";\nimport { Box } from \"@chakra-ui/react/box\";\nimport { Center } from \"@chakra-ui/react/center\";\nimport { Grid, GridItem } from \"@chakra-ui/react/grid\";\nimport { DatePickerCalendarDay } from \"../DatePickerDay/datePickerCalendarDay.component\";\nimport {\n currentMonth,\n currentYear,\n useDatePickerContext,\n} from \"../../context/datePicker.context\";\n\nexport interface MonthProps {\n onDaySelected: () => void;\n}\n\nexport const DatePickerCalendarMonth = ({\n onDaySelected,\n}: MonthProps): React.JSX.Element => {\n const ref = useRef<HTMLDivElement | null>(null);\n const { firstDayOfWeek, activeMonth } = useDatePickerContext();\n\n const { days, weekdayLabels } = useMonth({\n year: activeMonth?.year || currentYear,\n month: activeMonth?.month !== undefined ? activeMonth.month : currentMonth,\n firstDayOfWeek,\n });\n\n return (\n <Box\n ref={ref}\n className=\"DatePicker__Month\"\n data-testid=\"kibble-datepicker-month\"\n >\n <Grid templateColumns=\"repeat(7, 1fr)\" my={2}>\n {weekdayLabels.map((weekdayLabel: string) => (\n <GridItem key={weekdayLabel}>\n <Center>\n <Text size=\"xs\" variant=\"subtle\">\n {weekdayLabel}\n </Text>\n </Center>\n </GridItem>\n ))}\n </Grid>\n <Grid templateColumns=\"repeat(7, 1fr)\">\n {days.map((day, index) =>\n typeof day === \"object\" ? (\n <DatePickerCalendarDay\n key={day.date.toString()}\n date={day.date}\n dayLabel={day.dayLabel}\n onDaySelected={onDaySelected}\n />\n ) : (\n <div key={index} />\n ),\n )}\n </Grid>\n </Box>\n );\n};\n","import React from \"react\";\nimport { Grid } from \"@chakra-ui/react/grid\";\nimport { DatePickerCalendarMonth } from \"../DatePickerMonth/datePickerCalendarMonth.component\";\nimport { useDatePickerContext } from \"../../context/datePicker.context\";\nimport { usePopoverContext } from \"@chakra-ui/react/popover\";\n\nexport function DatePickerCalendar(): React.JSX.Element {\n const { withDateRange, activeMonths, onClose } = useDatePickerContext();\n const { setOpen } = usePopoverContext();\n\n const handleDaySelected = (): void => {\n if (!withDateRange) {\n setOpen(false);\n onClose();\n }\n };\n\n return (\n <Grid\n className=\"DatePicker__Calendar\"\n data-testid=\"kibble-datepicker-calendar\"\n gap=\"0 64px\"\n px={3}\n py={2}\n >\n {activeMonths.map((month) => (\n <DatePickerCalendarMonth\n key={`${month.year}-${month.month}`}\n onDaySelected={handleDaySelected}\n />\n ))}\n </Grid>\n );\n}\n","import React from \"react\";\nimport { DateFormats, DateRange } from \"./datePicker.types\";\nimport { TextInputProps } from \"components/TextInput/textInput.component\";\nimport { Placement } from \"shared/types/placement\";\nimport { DatePickerProvider } from \"./context/datePicker.provider\";\nimport { DatePickerInput } from \"./components/DatePickerInput/datePickerInput.component\";\nimport {\n DatePickerFooter,\n DatePickerFooterProps,\n} from \"./components/DatePickerFooter/datePickerFooter.component\";\nimport { DatePickerHeader } from \"./components/DatePickerHeader/datePickerHeader.component\";\nimport { DatePickerCalendar } from \"./components/DatePickerCalendar/datePickerCalendar.component\";\nimport { Popover as CPopover } from \"@chakra-ui/react/popover\";\nimport { Portal } from \"@chakra-ui/react/portal\";\n\nexport interface DatePickerProps {\n dateFormat?: string | DateFormats;\n endDate?: Date | null;\n footerProps?: DatePickerFooterProps;\n hideFooter?: boolean;\n inputProps?: Omit<\n TextInputProps,\n \"onChange\" | \"value\" | \"isClearable\" | \"onClear\"\n >;\n maxDate?: Date;\n maxYear?: number;\n maxDaysInRange?: number;\n minDate?: Date;\n minYear?: number;\n onDateChange?: ({ startDate, endDate }: DateRange) => void;\n placement?: Placement;\n startDate: Date | null;\n withDateRange?: boolean;\n}\n\nexport const DatePicker = (props: DatePickerProps): React.JSX.Element => {\n const {\n footerProps,\n hideFooter = false,\n inputProps,\n withDateRange = false,\n } = props;\n\n return (\n <DatePickerProvider {...props}>\n <CPopover.Trigger>\n <DatePickerInput inputProps={inputProps} />\n </CPopover.Trigger>\n <Portal>\n <CPopover.Positioner\n className=\"DatePicker\"\n data-testid=\"kibble-datepicker\"\n >\n <CPopover.Content\n className=\"DatePicker__Content\"\n data-testid=\"kibble-datepicker-content\"\n minW=\"340px\"\n >\n <CPopover.Arrow />\n <CPopover.Body p=\"0 !important\">\n <DatePickerHeader />\n <DatePickerCalendar />\n {withDateRange && !hideFooter && (\n <DatePickerFooter {...footerProps} />\n )}\n </CPopover.Body>\n </CPopover.Content>\n </CPopover.Positioner>\n </Portal>\n </DatePickerProvider>\n );\n};\n"],"names":["DateFormats","FocusedInput","today","currentYear","currentMonth","defaultFocusedDate","defaultMinYear","defaultMaxYear","defaultDateFormat","initialDatePickerState","DatePickerContext","createContext","useDatePickerContext","useContext","DatePickerProvider","children","dateFormat","endDate","inputProps","maxDate","maxDaysInRange","maxYear","minDate","minYear","onDateChange","placement","startDate","withDateRange","state","setState","useState","getMaxBookingDate","useCallback","add","onDatesChange","data","_maxBookingDate","isAfter","startOfDay","endOfDay","clearDates","open","activeMonths","firstDayOfWeek","focusedDate","goToDate","goToNextMonths","goToPreviousMonths","isDateBlocked","isDateFocused","isDateHovered","isDateSelected","isFirstOrLastSelectedDate","onDateFocus","onDateHover","onDateSelect","useDatepicker","navigateToFocusedInputDate","focusedInput","setFocusedInput","prevState","handleOpen","handleClose","activeMonth","useMemo","useEffect","jsx","CPopover.Root","isDateAfterMin","date","isDateBeforeMax","isBefore","DatePickerInput","onClose","setOpen","usePopoverContext","iconSize","onKeyDown","e","onInputChange","dateValue","parsedDate","parseDate","isDate","jsxs","HStack","TextInput","Flex","Icon","getInputValue","format","Fragment","Text","DatePickerFooter","buttonText","onSubmit","hideResetButton","handleSubmit","Button","monthNames","DatePickerHeader","selectedMonthRef","useRef","selectedYearRef","monthMenuItems","month","index","yearMenuItems","range","year","stringYear","selected","handleMonthChange","selectedItem","set","handleYearChange","scrollToSelectedItem","type","selectedNode","Center","Menu","calendarDaySlots","datePickerCalendarDayVariantStyles","datePickerCalendarDayRecipe","defineSlotRecipe","DatePickerCalendarDay","dayLabel","onDaySelected","dayRef","formattedDates","isRangeStart","isRangeEnd","isToday","disabledDate","isSelected","onClick","onMouseEnter","tabIndex","useDay","buttonVariant","styles","useSlotRecipe","onSelectDay","Box","DatePickerCalendarMonth","ref","days","weekdayLabels","useMonth","Grid","weekdayLabel","GridItem","day","DatePickerCalendar","handleDaySelected","DatePicker","props","footerProps","hideFooter","CPopover.Trigger","Portal","CPopover.Positioner","CPopover.Content","CPopover.Arrow","CPopover.Body"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const n=require("./vendor-D-x6W6ez.js"),r=require("react"),d=require("../cjs/components/Icon/generated.cjs"),u=require("./typography-CtiaGoJG.js"),x=require("./chakra-DmF8Cxqs.js"),I=d.IconMap,m={xs:14,sm:16,md:20,lg:24,xl:32,"2xl":38},h=r.forwardRef(({name:t,size:s="lg",color:e,variant:o,...i},a)=>{const p=I[t],c=m[s]+"px",l=r.useMemo(()=>o?u.typographyVariantStyles[o].color:e,[o,e]);return n.jsxRuntimeExports.jsx(x.Box,{className:"Icon__Wrapper","data-testid":"kibble-icon-wrapper",color:l,display:"inline-block",...i,children:n.jsxRuntimeExports.jsx(p,{className:"Icon","data-testid":"kibble-icon",ref:a,width:c,height:c,color:"currentColor"})})});exports.Icon=h;
|
|
2
|
+
//# sourceMappingURL=icon.component-CzjzLiO_.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icon.component-
|
|
1
|
+
{"version":3,"file":"icon.component-CzjzLiO_.js","sources":["../../src/components/Icon/icon.records.ts","../../src/components/Icon/icon.component.tsx"],"sourcesContent":["import { IconMap as GeneratedIconMap } from \"./generated/index\";\nimport { IconSize } from \"./icon.types\";\n\nexport const IconMap = GeneratedIconMap;\n\nexport const IconSizeMap: Record<IconSize, number> = {\n xs: 14,\n sm: 16,\n md: 20,\n lg: 24,\n xl: 32,\n \"2xl\": 38,\n};\n","import React, { forwardRef, useMemo } from \"react\";\nimport { IconMap, IconSizeMap } from \"./icon.records\";\nimport { IconName, IconSize } from \"./icon.types\";\nimport { Box, BoxProps } from \"@chakra-ui/react/box\";\nimport { TypographyVariant } from \"shared/types/typography\";\nimport { typographyVariantStyles } from \"shared/records/typography\";\n\nexport interface BaseIconProps {\n name: IconName;\n size?: IconSize;\n variant?: TypographyVariant;\n}\n\nexport type IconProps = BaseIconProps & BoxProps;\n\nexport const Icon = forwardRef(\n (\n { name, size = \"lg\", color, variant, ...rest }: IconProps,\n ref: React.ForwardedRef<IconProps>,\n ): React.JSX.Element => {\n const MappedIcon = IconMap[name];\n const d = IconSizeMap[size] + \"px\";\n\n const iconColor = useMemo(() => {\n return variant ? typographyVariantStyles[variant].color : color;\n }, [variant, color]);\n\n return (\n <Box\n className=\"Icon__Wrapper\"\n data-testid=\"kibble-icon-wrapper\"\n color={iconColor}\n display=\"inline-block\"\n {...rest}\n >\n <MappedIcon\n className=\"Icon\"\n data-testid=\"kibble-icon\"\n ref={ref}\n width={d}\n height={d}\n color=\"currentColor\"\n />\n </Box>\n );\n },\n);\n"],"names":["IconMap","GeneratedIconMap","IconSizeMap","Icon","forwardRef","name","size","color","variant","rest","ref","MappedIcon","d","iconColor","useMemo","typographyVariantStyles","jsx","Box"],"mappings":"kMAGaA,EAAUC,EAAA,QAEVC,EAAwC,CACnD,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,MAAO,EACT,ECGaC,EAAOC,EAAA,WAClB,CACE,CAAE,KAAAC,EAAM,KAAAC,EAAO,KAAM,MAAAC,EAAO,QAAAC,EAAS,GAAGC,CAAK,EAC7CC,IACsB,CAChB,MAAAC,EAAaX,EAAQK,CAAI,EACzBO,EAAIV,EAAYI,CAAI,EAAI,KAExBO,EAAYC,EAAAA,QAAQ,IACjBN,EAAUO,EAAA,wBAAwBP,CAAO,EAAE,MAAQD,EACzD,CAACC,EAASD,CAAK,CAAC,EAGjB,OAAAS,EAAA,kBAAA,IAACC,EAAA,IAAA,CACC,UAAU,gBACV,cAAY,sBACZ,MAAOJ,EACP,QAAQ,eACP,GAAGJ,EAEJ,SAAAO,EAAA,kBAAA,IAACL,EAAA,CACC,UAAU,OACV,cAAY,cACZ,IAAAD,EACA,MAAOE,EACP,OAAQA,EACR,MAAM,cAAA,CAAA,CACR,CACF,CAAA,CAGN"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { x as s } from "./vendor-BBfll6i3.js";
|
|
2
2
|
import { forwardRef as l, useMemo as m } from "react";
|
|
3
|
-
import { IconMap as d } from "../esm/components/Icon/generated
|
|
3
|
+
import { IconMap as d } from "../esm/components/Icon/generated.js";
|
|
4
4
|
import { t as x } from "./typography-Cqrokog3.js";
|
|
5
5
|
import { B as I } from "./chakra-BqBkjpvZ.js";
|
|
6
6
|
const f = d, M = {
|
|
@@ -39,4 +39,4 @@ const f = d, M = {
|
|
|
39
39
|
export {
|
|
40
40
|
j as I
|
|
41
41
|
};
|
|
42
|
-
//# sourceMappingURL=icon.component-
|
|
42
|
+
//# sourceMappingURL=icon.component-w5bWbfVU.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icon.component-
|
|
1
|
+
{"version":3,"file":"icon.component-w5bWbfVU.js","sources":["../../src/components/Icon/icon.records.ts","../../src/components/Icon/icon.component.tsx"],"sourcesContent":["import { IconMap as GeneratedIconMap } from \"./generated/index\";\nimport { IconSize } from \"./icon.types\";\n\nexport const IconMap = GeneratedIconMap;\n\nexport const IconSizeMap: Record<IconSize, number> = {\n xs: 14,\n sm: 16,\n md: 20,\n lg: 24,\n xl: 32,\n \"2xl\": 38,\n};\n","import React, { forwardRef, useMemo } from \"react\";\nimport { IconMap, IconSizeMap } from \"./icon.records\";\nimport { IconName, IconSize } from \"./icon.types\";\nimport { Box, BoxProps } from \"@chakra-ui/react/box\";\nimport { TypographyVariant } from \"shared/types/typography\";\nimport { typographyVariantStyles } from \"shared/records/typography\";\n\nexport interface BaseIconProps {\n name: IconName;\n size?: IconSize;\n variant?: TypographyVariant;\n}\n\nexport type IconProps = BaseIconProps & BoxProps;\n\nexport const Icon = forwardRef(\n (\n { name, size = \"lg\", color, variant, ...rest }: IconProps,\n ref: React.ForwardedRef<IconProps>,\n ): React.JSX.Element => {\n const MappedIcon = IconMap[name];\n const d = IconSizeMap[size] + \"px\";\n\n const iconColor = useMemo(() => {\n return variant ? typographyVariantStyles[variant].color : color;\n }, [variant, color]);\n\n return (\n <Box\n className=\"Icon__Wrapper\"\n data-testid=\"kibble-icon-wrapper\"\n color={iconColor}\n display=\"inline-block\"\n {...rest}\n >\n <MappedIcon\n className=\"Icon\"\n data-testid=\"kibble-icon\"\n ref={ref}\n width={d}\n height={d}\n color=\"currentColor\"\n />\n </Box>\n );\n },\n);\n"],"names":["IconMap","GeneratedIconMap","IconSizeMap","Icon","forwardRef","name","size","color","variant","rest","ref","MappedIcon","d","iconColor","useMemo","typographyVariantStyles","jsx","Box"],"mappings":";;;;;AAGO,MAAMA,IAAUC,GAEVC,IAAwC;AAAA,EACnD,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,OAAO;AACT,GCGaC,IAAOC;AAAA,EAClB,CACE,EAAE,MAAAC,GAAM,MAAAC,IAAO,MAAM,OAAAC,GAAO,SAAAC,GAAS,GAAGC,EAAK,GAC7CC,MACsB;AAChB,UAAAC,IAAaX,EAAQK,CAAI,GACzBO,IAAIV,EAAYI,CAAI,IAAI,MAExBO,IAAYC,EAAQ,MACjBN,IAAUO,EAAwBP,CAAO,EAAE,QAAQD,GACzD,CAACC,GAASD,CAAK,CAAC;AAGjB,WAAAS,gBAAAA,EAAA;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,eAAY;AAAA,QACZ,OAAOJ;AAAA,QACP,SAAQ;AAAA,QACP,GAAGJ;AAAA,QAEJ,UAAAO,gBAAAA,EAAA;AAAA,UAACL;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,eAAY;AAAA,YACZ,KAAAD;AAAA,YACA,OAAOE;AAAA,YACP,QAAQA;AAAA,YACR,OAAM;AAAA,UAAA;AAAA,QAAA;AAAA,MACR;AAAA,IACF;AAAA,EAAA;AAGN;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const e=require("./vendor-D-x6W6ez.js"),d=require("react"),j=require("./text.component-CBa_saMP.js"),k=require("./icon.component-
|
|
2
|
-
//# sourceMappingURL=link.component-
|
|
1
|
+
"use strict";const e=require("./vendor-D-x6W6ez.js"),d=require("react"),j=require("./text.component-CBa_saMP.js"),k=require("./icon.component-CzjzLiO_.js"),R=require("./useIconTextSizeMap-BXmABb54.js"),c=require("./chakra-DmF8Cxqs.js"),x=({variant:i,...r})=>e.jsxRuntimeExports.jsx(k.Icon,{variant:i||"interactive",...r}),p=d.forwardRef((i,r)=>{const{children:u,external:m,iconProps:n,size:s="md",variant:t="interactive",...l}=i,o=R.useIconTextSizeMap(s),a=n?.position||"start";return e.jsxRuntimeExports.jsx(c.Link,{className:"Link","data-testid":"kibble-link",variant:t,display:"inline-block",size:s,ref:r,...m&&{target:"_blank",rel:"noopener noreferrer"},...l,children:e.jsxRuntimeExports.jsxs(c.HStack,{gap:1,align:"center",children:[n&&a==="start"&&e.jsxRuntimeExports.jsx(x,{name:n.name,variant:t,size:o}),e.jsxRuntimeExports.jsx(j.WrappedText,{size:s,variant:t,children:u}),n&&a==="end"&&e.jsxRuntimeExports.jsx(x,{name:n.name,variant:t,size:o})]})})});p.displayName="Link";exports.Link=p;
|
|
2
|
+
//# sourceMappingURL=link.component-Cmdnhc-F.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link.component-
|
|
1
|
+
{"version":3,"file":"link.component-Cmdnhc-F.js","sources":["../../src/components/Link/components/LinkIcon/linkIcon.component.tsx","../../src/components/Link/link.component.tsx"],"sourcesContent":["import React from \"react\";\nimport { Icon, IconProps } from \"components/Icon\";\n\nexport interface LinkIconProps extends Pick<IconProps, \"name\"> {\n position?: \"start\" | \"end\";\n}\n\ntype InternalLinkIconProps = Pick<IconProps, \"name\" | \"variant\" | \"size\">;\n\nexport const LinkIcon = ({\n variant,\n ...rest\n}: InternalLinkIconProps): React.JSX.Element => {\n return <Icon variant={variant || \"interactive\"} {...rest} />;\n};\n","import React, { ForwardedRef, forwardRef } from \"react\";\nimport { Link as CLink, LinkProps as CLinkProps } from \"@chakra-ui/react/link\"; // Make sure to use named imports from Chakra UI\nimport { TypographyVariant } from \"shared/types\";\nimport { TextSize } from \"components/Text/text.types\";\nimport { HStack } from \"@chakra-ui/react/stack\";\nimport { Text } from \"components/Text\";\nimport {\n LinkIcon,\n LinkIconProps,\n} from \"./components/LinkIcon/linkIcon.component\";\nimport { useIconTextSizeMap } from \"hooks/useIconTextSizeMap\";\n\nexport interface LinkProps extends CLinkProps {\n iconProps?: LinkIconProps;\n external?: boolean;\n size?: TextSize;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n to?: any;\n variant?: TypographyVariant;\n}\n\nexport const Link = forwardRef(\n (\n props: LinkProps,\n ref: ForwardedRef<HTMLAnchorElement>,\n ): React.JSX.Element => {\n const {\n children,\n external,\n iconProps,\n size = \"md\",\n variant = \"interactive\",\n ...rest\n } = props;\n const mapIconSize = useIconTextSizeMap(size);\n const iconPosition = iconProps?.position || \"start\";\n\n return (\n <CLink\n className=\"Link\"\n data-testid=\"kibble-link\"\n variant={variant}\n display=\"inline-block\"\n size={size}\n ref={ref}\n {...(external && { target: \"_blank\", rel: \"noopener noreferrer\" })}\n {...rest}\n >\n <HStack gap={1} align=\"center\">\n {iconProps && iconPosition === \"start\" && (\n <LinkIcon\n name={iconProps.name}\n variant={variant}\n size={mapIconSize}\n />\n )}\n <Text size={size} variant={variant}>\n {children}\n </Text>\n {iconProps && iconPosition === \"end\" && (\n <LinkIcon\n name={iconProps.name}\n variant={variant}\n size={mapIconSize}\n />\n )}\n </HStack>\n </CLink>\n );\n },\n);\n\nLink.displayName = \"Link\";\n"],"names":["LinkIcon","variant","rest","Icon","Link","forwardRef","props","ref","children","external","iconProps","size","mapIconSize","useIconTextSizeMap","iconPosition","jsx","CLink","jsxs","HStack","Text"],"mappings":"4OASaA,EAAW,CAAC,CACvB,QAAAC,EACA,GAAGC,CACL,4BACUC,EAAAA,KAAK,CAAA,QAASF,GAAW,cAAgB,GAAGC,EAAM,ECQ/CE,EAAOC,EAAA,WAClB,CACEC,EACAC,IACsB,CAChB,KAAA,CACJ,SAAAC,EACA,SAAAC,EACA,UAAAC,EACA,KAAAC,EAAO,KACP,QAAAV,EAAU,cACV,GAAGC,CAAA,EACDI,EACEM,EAAcC,qBAAmBF,CAAI,EACrCG,EAAeJ,GAAW,UAAY,QAG1C,OAAAK,EAAA,kBAAA,IAACC,EAAA,KAAA,CACC,UAAU,OACV,cAAY,cACZ,QAAAf,EACA,QAAQ,eACR,KAAAU,EACA,IAAAJ,EACC,GAAIE,GAAY,CAAE,OAAQ,SAAU,IAAK,qBAAsB,EAC/D,GAAGP,EAEJ,SAACe,EAAAA,kBAAAA,KAAAC,EAAAA,OAAA,CAAO,IAAK,EAAG,MAAM,SACnB,SAAA,CAAAR,GAAaI,IAAiB,SAC7BC,EAAA,kBAAA,IAACf,EAAA,CACC,KAAMU,EAAU,KAChB,QAAAT,EACA,KAAMW,CAAA,CACR,EAEDG,EAAAA,kBAAAA,IAAAI,EAAAA,YAAA,CAAK,KAAAR,EAAY,QAAAV,EACf,SAAAO,CACH,CAAA,EACCE,GAAaI,IAAiB,OAC7BC,EAAA,kBAAA,IAACf,EAAA,CACC,KAAMU,EAAU,KAChB,QAAAT,EACA,KAAMW,CAAA,CAAA,CACR,CAEJ,CAAA,CAAA,CACF,CAAA,CAGN,EAEAR,EAAK,YAAc"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { x as e } from "./vendor-BBfll6i3.js";
|
|
2
2
|
import { forwardRef as x } from "react";
|
|
3
3
|
import { W as d } from "./text.component-XYjOAc2s.js";
|
|
4
|
-
import { I as k } from "./icon.component-
|
|
4
|
+
import { I as k } from "./icon.component-w5bWbfVU.js";
|
|
5
5
|
import { u as f } from "./useIconTextSizeMap-BK-pUrQv.js";
|
|
6
6
|
import { L as j, s as L } from "./chakra-BqBkjpvZ.js";
|
|
7
7
|
const m = ({
|
|
@@ -55,4 +55,4 @@ u.displayName = "Link";
|
|
|
55
55
|
export {
|
|
56
56
|
u as L
|
|
57
57
|
};
|
|
58
|
-
//# sourceMappingURL=link.component-
|
|
58
|
+
//# sourceMappingURL=link.component-DGC1Xu5B.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link.component-
|
|
1
|
+
{"version":3,"file":"link.component-DGC1Xu5B.js","sources":["../../src/components/Link/components/LinkIcon/linkIcon.component.tsx","../../src/components/Link/link.component.tsx"],"sourcesContent":["import React from \"react\";\nimport { Icon, IconProps } from \"components/Icon\";\n\nexport interface LinkIconProps extends Pick<IconProps, \"name\"> {\n position?: \"start\" | \"end\";\n}\n\ntype InternalLinkIconProps = Pick<IconProps, \"name\" | \"variant\" | \"size\">;\n\nexport const LinkIcon = ({\n variant,\n ...rest\n}: InternalLinkIconProps): React.JSX.Element => {\n return <Icon variant={variant || \"interactive\"} {...rest} />;\n};\n","import React, { ForwardedRef, forwardRef } from \"react\";\nimport { Link as CLink, LinkProps as CLinkProps } from \"@chakra-ui/react/link\"; // Make sure to use named imports from Chakra UI\nimport { TypographyVariant } from \"shared/types\";\nimport { TextSize } from \"components/Text/text.types\";\nimport { HStack } from \"@chakra-ui/react/stack\";\nimport { Text } from \"components/Text\";\nimport {\n LinkIcon,\n LinkIconProps,\n} from \"./components/LinkIcon/linkIcon.component\";\nimport { useIconTextSizeMap } from \"hooks/useIconTextSizeMap\";\n\nexport interface LinkProps extends CLinkProps {\n iconProps?: LinkIconProps;\n external?: boolean;\n size?: TextSize;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n to?: any;\n variant?: TypographyVariant;\n}\n\nexport const Link = forwardRef(\n (\n props: LinkProps,\n ref: ForwardedRef<HTMLAnchorElement>,\n ): React.JSX.Element => {\n const {\n children,\n external,\n iconProps,\n size = \"md\",\n variant = \"interactive\",\n ...rest\n } = props;\n const mapIconSize = useIconTextSizeMap(size);\n const iconPosition = iconProps?.position || \"start\";\n\n return (\n <CLink\n className=\"Link\"\n data-testid=\"kibble-link\"\n variant={variant}\n display=\"inline-block\"\n size={size}\n ref={ref}\n {...(external && { target: \"_blank\", rel: \"noopener noreferrer\" })}\n {...rest}\n >\n <HStack gap={1} align=\"center\">\n {iconProps && iconPosition === \"start\" && (\n <LinkIcon\n name={iconProps.name}\n variant={variant}\n size={mapIconSize}\n />\n )}\n <Text size={size} variant={variant}>\n {children}\n </Text>\n {iconProps && iconPosition === \"end\" && (\n <LinkIcon\n name={iconProps.name}\n variant={variant}\n size={mapIconSize}\n />\n )}\n </HStack>\n </CLink>\n );\n },\n);\n\nLink.displayName = \"Link\";\n"],"names":["LinkIcon","variant","rest","Icon","Link","forwardRef","props","ref","children","external","iconProps","size","mapIconSize","useIconTextSizeMap","iconPosition","jsx","CLink","jsxs","HStack","Text"],"mappings":";;;;;;AASO,MAAMA,IAAW,CAAC;AAAA,EACvB,SAAAC;AAAA,EACA,GAAGC;AACL,4BACUC,GAAK,EAAA,SAASF,KAAW,eAAgB,GAAGC,GAAM,GCQ/CE,IAAOC;AAAA,EAClB,CACEC,GACAC,MACsB;AAChB,UAAA;AAAA,MACJ,UAAAC;AAAA,MACA,UAAAC;AAAA,MACA,WAAAC;AAAA,MACA,MAAAC,IAAO;AAAA,MACP,SAAAV,IAAU;AAAA,MACV,GAAGC;AAAA,IAAA,IACDI,GACEM,IAAcC,EAAmBF,CAAI,GACrCG,IAAeJ,GAAW,YAAY;AAG1C,WAAAK,gBAAAA,EAAA;AAAA,MAACC;AAAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,eAAY;AAAA,QACZ,SAAAf;AAAA,QACA,SAAQ;AAAA,QACR,MAAAU;AAAA,QACA,KAAAJ;AAAA,QACC,GAAIE,KAAY,EAAE,QAAQ,UAAU,KAAK,sBAAsB;AAAA,QAC/D,GAAGP;AAAA,QAEJ,UAACe,gBAAAA,EAAAA,KAAAC,GAAA,EAAO,KAAK,GAAG,OAAM,UACnB,UAAA;AAAA,UAAAR,KAAaI,MAAiB,WAC7BC,gBAAAA,EAAA;AAAA,YAACf;AAAA,YAAA;AAAA,cACC,MAAMU,EAAU;AAAA,cAChB,SAAAT;AAAA,cACA,MAAMW;AAAA,YAAA;AAAA,UACR;AAAA,UAEDG,gBAAAA,EAAAA,IAAAI,GAAA,EAAK,MAAAR,GAAY,SAAAV,GACf,UAAAO,EACH,CAAA;AAAA,UACCE,KAAaI,MAAiB,SAC7BC,gBAAAA,EAAA;AAAA,YAACf;AAAA,YAAA;AAAA,cACC,MAAMU,EAAU;AAAA,cAChB,SAAAT;AAAA,cACA,MAAMW;AAAA,YAAA;AAAA,UAAA;AAAA,QACR,EAEJ,CAAA;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAGN;AAEAR,EAAK,cAAc;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const e=require("./vendor-D-x6W6ez.js"),i=require("react"),v=require("./button.component-
|
|
2
|
-
//# sourceMappingURL=menu.component-
|
|
1
|
+
"use strict";const e=require("./vendor-D-x6W6ez.js"),i=require("react"),v=require("./button.component-DDjwI0xh.js"),z=require("./icon.component-CzjzLiO_.js"),S=require("./text.component-CBa_saMP.js"),o=require("./chakra-DmF8Cxqs.js"),Z=require("./textInput.component-BalBo9uP.js"),ee=require("./spinner.component-CUuidnSK.js"),te=require("./checkbox.component-BnNl7j1h.js"),se=({hideCaret:n=!1,size:u="md",text:r,textProps:a,variant:d,...p})=>e.jsxRuntimeExports.jsxs(v.Button,{className:"Menu__Button","data-testid":"kibble-menu-button",size:u,variant:d,...p,children:[r&&e.jsxRuntimeExports.jsx(S.WrappedText,{className:"Menu__ButtonText","data-testid":"kibble-menu-button-text",fontWeight:"semibold",size:u,color:d?"inherit":a?.color||"text.contrast",truncate:!0,...a,children:r}),!n&&e.jsxRuntimeExports.jsx(o.Flex,{className:"Menu__ButtonCaret","data-testid":"kibble-menu-button-caret",children:e.jsxRuntimeExports.jsx(z.Icon,{name:"chevronDown",size:u==="lg"?"sm":"xs"})})]}),ne=({label:n,leftElement:u,onSelect:r,shouldTruncateText:a,type:d="default",variant:p,...j})=>{const k=i.useCallback(()=>{r&&r(j.value)},[r,j.value]);if(d==="submenu")return e.jsxRuntimeExports.jsx(V,{submenuTrigger:e.jsxRuntimeExports.jsxs(o.MenuTriggerItem,{className:"Menu__Item--Submenu","data-testid":"kibble-menu-item-submenu",justifyContent:"space-between",children:[e.jsxRuntimeExports.jsx(I,{label:n,leftElement:u,shouldTruncateText:a,variant:p}),e.jsxRuntimeExports.jsx(z.Icon,{name:"chevronRight",size:"sm"})]}),...j});if(d==="checkbox"){const{checked:b,value:E,...x}=j;return e.jsxRuntimeExports.jsxs(o.MenuCheckboxItem,{className:"Menu__Item--Checkbox","data-testid":"kibble-menu-item-checkbox",value:E,checked:!!b,onCheckedChange:k,closeOnSelect:j.closeOnSelect||!1,gap:3,...x,children:[e.jsxRuntimeExports.jsx(te.WrappedCheckbox,{checked:!!b,size:"md"}),e.jsxRuntimeExports.jsx(I,{label:n,leftElement:u,shouldTruncateText:a,variant:p})]})}if(d==="default"){const{selected:b,value:E,...x}=j;return e.jsxRuntimeExports.jsx(o.MenuItem,{className:"Menu__Item--Default","data-testid":"kibble-menu-item-default",value:E,onSelect:k,...b&&{bgColor:"background.secondaryAlpha.hover"},...x,children:e.jsxRuntimeExports.jsx(I,{label:n,leftElement:u,shouldTruncateText:a,variant:b?"info":p})})}return e.jsxRuntimeExports.jsx(e.jsxRuntimeExports.Fragment,{})},I=({label:n,leftElement:u,shouldTruncateText:r,variant:a})=>e.jsxRuntimeExports.jsxs(o.Flex,{className:"Menu__ItemLabel",alignItems:"center",gap:3,children:[u,typeof n=="string"?e.jsxRuntimeExports.jsx(S.WrappedText,{size:"sm",truncated:r,variant:a,children:n}):n]}),O=({groupName:n,hasSelectedItems:u=!1,onToggle:r})=>{const a=!!n;return e.jsxRuntimeExports.jsx(o.Box,{className:"Menu__ToggleButtons","data-testid":"kibble-menu-toggle-buttons",...a?{textAlign:"right",w:"50%"}:{mt:2},children:a?e.jsxRuntimeExports.jsx(e.jsxRuntimeExports.Fragment,{children:u?e.jsxRuntimeExports.jsx(W,{hasSelectedItems:u,groupName:n,onToggle:r}):e.jsxRuntimeExports.jsx(G,{groupName:n,onToggle:r})}):e.jsxRuntimeExports.jsxs(o.Flex,{justifyContent:"space-between",children:[e.jsxRuntimeExports.jsx(G,{groupName:n,onToggle:r}),e.jsxRuntimeExports.jsx(W,{hasSelectedItems:u,groupName:n,onToggle:r})]})})},G=({groupName:n,onToggle:u})=>e.jsxRuntimeExports.jsx(v.Button,{variant:"ghost",size:"xs",onClick:()=>u({groupName:n,clear:!1}),children:"Select All"}),W=({hasSelectedItems:n,groupName:u,onToggle:r})=>e.jsxRuntimeExports.jsx(v.Button,{variant:"ghostNeutral",iconName:"arrowCircle",size:"xs",disabled:!n,onClick:()=>r({groupName:u,clear:!0}),children:"Clear All"}),V=({buttonProps:n,listProps:u,portalled:r=!1,submenuTrigger:a,...d})=>{const{canSelectAll:p,canSelectGroups:j,emptyStateText:k="No results found",loading:b,maxH:E="480px",menuItems:x=[],minW:L="240px",onSearch:M,onSelect:B,onSelectAll:T,searchable:y,searchPlaceholder:D="Search...",shouldTruncateText:P,...$}=u||{},[H,C]=i.useState(""),[N,_]=i.useState(x),F=i.useMemo(()=>{const t={};return N?.forEach(s=>{const c=s.groupLabel||"default",l=s.type==="checkbox"?"checkbox":"default";t[c]||(t[c]={}),t[c][l]||(t[c][l]=[]),t[c][l].push(s)}),t},[N]),q=i.useMemo(()=>Object.entries(F),[F]),R=i.useMemo(()=>x?.filter(t=>t.type==="checkbox")||[],[x]),J=i.useMemo(()=>(R?.filter(s=>s.checked)||[]).map(s=>s.value),[R]),m=e.useCheckboxGroup({defaultValue:J}),w=i.useCallback(t=>{const s=t.target.value;if(C(s),M)M(t);else if(s===""||!s)_(x);else{const c=x.filter(l=>!!(typeof l.label=="string"?l.label:l.valueText)?.toLowerCase().includes(s.toLowerCase()));_(c)}},[x,M]),A=i.useCallback(({groupName:t,clear:s})=>{let c=[];if(t){const l=R.filter(h=>h.groupLabel===t).map(h=>h.value);c=s?m.value.filter(h=>!l.includes(h)):[...m.value,...l]}else c=s?[]:R.map(l=>l.value);T?.(c),m.setValue(c)},[R,T,m]),K=i.useCallback(t=>{t.onSelect?.(t.value);const s=m.value,c=m.isChecked(t.value);B?.(t.value,c?s.filter(l=>l!==t.value):[...s,t.value]),t.type==="checkbox"&&m.toggleValue(t.value)},[B,m]),Q=i.useCallback(t=>{t||(C(""),_(x))},[x]);return e.jsxRuntimeExports.jsxs(o.MenuRoot,{...d,onOpenChange:t=>{Q(t.open),d.onOpenChange?.(t)},children:[a||e.jsxRuntimeExports.jsx(o.MenuTrigger,{asChild:!0,className:"Menu__Trigger","data-testid":"kibble-menu-trigger",children:e.jsxRuntimeExports.jsx(se,{...n})}),e.jsxRuntimeExports.jsx(e.Portal,{disabled:!r,children:e.jsxRuntimeExports.jsx(o.MenuPositioner,{className:"Menu","data-testid":"kibble-menu",children:e.jsxRuntimeExports.jsxs(o.MenuContent,{className:"Menu__Content","data-testid":"kibble-menu-content",maxH:E,minW:L,...$,children:[(y||p)&&e.jsxRuntimeExports.jsxs(o.Box,{className:"Menu__Header","data-testid":"kibble-menu-header",m:"0 12px 8px",children:[y&&e.jsxRuntimeExports.jsx(Z.WrappedTextInput,{className:"Menu__SearchBar","data-testid":"kibble-menu-search-bar",placeholder:D,onChange:w,size:"sm",value:H,clearable:!0,onClear:()=>{C(""),w({target:{value:""}})},formControlStyle:{mt:1}}),p&&!!R.length&&e.jsxRuntimeExports.jsx(O,{onToggle:A,hasSelectedItems:!!m.value.length})]}),b?e.jsxRuntimeExports.jsx(o.Flex,{justifyContent:"center",py:5,children:e.jsxRuntimeExports.jsx(ee.Spinner,{})}):e.jsxRuntimeExports.jsx(o.Box,{className:"Menu__List","data-testid":"kibble-menu-list",children:q.length?e.jsxRuntimeExports.jsx(e.jsxRuntimeExports.Fragment,{children:q.map(([t,s])=>{const c=t==="default",l=Object.keys(s),h=c?i.Fragment:o.MenuItemGroup,U=s.checkbox?.map(g=>g.value)?.some(g=>m.value.includes(g));return e.jsxRuntimeExports.jsxs(h,{children:[!c&&e.jsxRuntimeExports.jsx(o.MenuItemGroupLabel,{children:e.jsxRuntimeExports.jsxs(o.Flex,{alignItems:"center",justifyContent:"space-between",children:[t,j&&l.includes("checkbox")&&e.jsxRuntimeExports.jsx(O,{groupName:t,onToggle:A,hasSelectedItems:U})]})}),Object.entries(s).map(([g,X])=>X.map((f,Y)=>e.jsxRuntimeExports.jsx(ne,{...f,shouldTruncateText:P,...f.type==="checkbox"&&{checked:m.isChecked(f.value)},onSelect:()=>K(f)},`menu-item-${t}-${g}-${Y}`)))]},t)})}):e.jsxRuntimeExports.jsx(e.jsxRuntimeExports.Fragment,{children:e.jsxRuntimeExports.jsx(o.Box,{textAlign:"center",p:3,children:e.jsxRuntimeExports.jsx(S.WrappedText,{size:"sm",variant:"subtle",children:k})})})})]})})})]})};exports.Menu=V;
|
|
2
|
+
//# sourceMappingURL=menu.component-BCRZgrRr.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu.component-BEj878EN.js","sources":["../../src/components/Menu/components/MenuButton/menuButton.components.tsx","../../src/components/Menu/components/MenuItem/menuItem.component.tsx","../../src/components/Menu/components/MenuToggleButtons/menuToggleButtons.tsx","../../src/components/Menu/menu.component.tsx"],"sourcesContent":["import { Flex } from \"@chakra-ui/react/flex\";\nimport { Button, ButtonProps } from \"components/Button/button.component\";\nimport { Icon } from \"components/Icon/icon.component\";\nimport { Text, TextProps } from \"components/Text/text.component\";\nimport React from \"react\";\n\nexport interface MenuButtonProps extends Omit<ButtonProps, \"children\"> {\n hideCaret?: boolean;\n text?: string;\n textProps?: TextProps;\n}\n\nexport const MenuButton = ({\n hideCaret = false,\n size = \"md\",\n text,\n textProps,\n variant,\n ...rest\n}: MenuButtonProps): React.JSX.Element => {\n return (\n <Button\n className=\"Menu__Button\"\n data-testid=\"kibble-menu-button\"\n size={size}\n variant={variant}\n {...rest}\n >\n {text && (\n <Text\n className=\"Menu__ButtonText\"\n data-testid=\"kibble-menu-button-text\"\n fontWeight=\"semibold\"\n size={size}\n color={variant ? \"inherit\" : textProps?.color || \"text.contrast\"}\n truncate\n {...textProps}\n >\n {text}\n </Text>\n )}\n {!hideCaret && (\n <Flex\n className=\"Menu__ButtonCaret\"\n data-testid=\"kibble-menu-button-caret\"\n >\n <Icon name=\"chevronDown\" size={size === \"lg\" ? \"sm\" : \"xs\"} />\n </Flex>\n )}\n </Button>\n );\n};\n","import { Flex } from \"@chakra-ui/react/flex\";\nimport { Menu as CMenu } from \"@chakra-ui/react/menu\";\nimport React, { useCallback } from \"react\";\nimport { Text } from \"components/Text/text.component\";\nimport { MenuItemType } from \"./menuItem.types\";\nimport { Menu, MenuProps } from \"components/Menu\";\nimport { TypographyVariant } from \"shared/types/typography\";\nimport { Checkbox } from \"components/Checkbox/checkbox.component\";\nimport { Icon } from \"components/Icon/icon.component\";\n\ninterface BaseMenuItemProps {\n label?: React.ReactNode;\n leftElement?: React.ReactNode;\n groupLabel?: string;\n onSelect?: (value: string) => void;\n shouldTruncateText?: boolean;\n type?: MenuItemType;\n value: string;\n variant?: TypographyVariant;\n}\n\ninterface DefaultMenuItemProps extends Omit<CMenu.ItemProps, \"onSelect\"> {\n type?: \"default\";\n selected?: boolean;\n}\n\ninterface CheckboxMenuItemProps\n extends Omit<CMenu.CheckboxItemProps, \"onSelect\"> {\n type: \"checkbox\";\n checked: boolean;\n}\n\ninterface SubmenuMenuItemProps extends Omit<MenuProps, \"buttonProps\"> {\n type: \"submenu\";\n valueText?: string;\n}\n\nexport type MenuItemProps = BaseMenuItemProps &\n (DefaultMenuItemProps | CheckboxMenuItemProps | SubmenuMenuItemProps);\n\nexport const MenuItem = ({\n label,\n leftElement,\n onSelect,\n shouldTruncateText,\n type = \"default\",\n variant,\n ...rest\n}: MenuItemProps): React.JSX.Element => {\n const handleOnSelect = useCallback(() => {\n if (onSelect) {\n onSelect(rest.value);\n }\n }, [onSelect, rest.value]);\n\n if (type === \"submenu\") {\n return (\n <Menu\n submenuTrigger={\n <CMenu.TriggerItem\n className=\"Menu__Item--Submenu\"\n data-testid=\"kibble-menu-item-submenu\"\n justifyContent=\"space-between\"\n >\n <MenuItemLabel\n label={label}\n leftElement={leftElement}\n shouldTruncateText={shouldTruncateText}\n variant={variant}\n />\n <Icon name=\"chevronRight\" size=\"sm\" />\n </CMenu.TriggerItem>\n }\n {...rest}\n />\n );\n }\n\n if (type === \"checkbox\") {\n const { checked, value, ...checkboxRest } = rest as CheckboxMenuItemProps;\n return (\n <CMenu.CheckboxItem\n className=\"Menu__Item--Checkbox\"\n data-testid=\"kibble-menu-item-checkbox\"\n value={value}\n checked={!!checked}\n onCheckedChange={handleOnSelect}\n closeOnSelect={rest.closeOnSelect || false}\n gap={3}\n {...checkboxRest}\n >\n <Checkbox checked={!!checked} size=\"md\" />\n <MenuItemLabel\n label={label}\n leftElement={leftElement}\n shouldTruncateText={shouldTruncateText}\n variant={variant}\n />\n </CMenu.CheckboxItem>\n );\n }\n\n if (type === \"default\") {\n const { selected, value, ...defaultRest } = rest as DefaultMenuItemProps;\n return (\n <CMenu.Item\n className=\"Menu__Item--Default\"\n data-testid=\"kibble-menu-item-default\"\n value={value}\n onSelect={handleOnSelect}\n {...(selected && { bgColor: \"background.secondaryAlpha.hover\" })}\n {...defaultRest}\n >\n <MenuItemLabel\n label={label}\n leftElement={leftElement}\n shouldTruncateText={shouldTruncateText}\n variant={selected ? \"info\" : variant}\n />\n </CMenu.Item>\n );\n }\n\n return <></>;\n};\n\nconst MenuItemLabel = ({\n label,\n leftElement,\n shouldTruncateText,\n variant,\n}: {\n label?: React.ReactNode;\n leftElement?: React.ReactNode;\n shouldTruncateText?: boolean;\n variant?: TypographyVariant;\n}): React.JSX.Element => {\n return (\n <Flex className=\"Menu__ItemLabel\" alignItems=\"center\" gap={3}>\n {leftElement}\n {typeof label === \"string\" ? (\n <Text size=\"sm\" truncated={shouldTruncateText} variant={variant}>\n {label}\n </Text>\n ) : (\n label\n )}\n </Flex>\n );\n};\n","import { Box } from \"@chakra-ui/react/box\";\nimport { Flex } from \"@chakra-ui/react/flex\";\nimport { Button } from \"components/Button/button.component\";\n\ninterface MenuToggleButtonsProps {\n hasSelectedItems?: boolean;\n groupName?: string;\n onToggle: ({\n groupName,\n clear,\n }: {\n clear: boolean;\n groupName?: string;\n }) => void;\n}\n\nexport const MenuToggleButtons = ({\n groupName,\n hasSelectedItems = false,\n onToggle,\n}: MenuToggleButtonsProps): React.JSX.Element => {\n const isGrouped = !!groupName;\n return (\n <Box\n className=\"Menu__ToggleButtons\"\n data-testid=\"kibble-menu-toggle-buttons\"\n {...(isGrouped ? { textAlign: \"right\", w: \"50%\" } : { mt: 2 })}\n >\n {isGrouped ? (\n <>\n {hasSelectedItems ? (\n <ClearAllButton\n hasSelectedItems={hasSelectedItems}\n groupName={groupName}\n onToggle={onToggle}\n />\n ) : (\n <SelectAllButton groupName={groupName} onToggle={onToggle} />\n )}\n </>\n ) : (\n <Flex justifyContent=\"space-between\">\n <SelectAllButton groupName={groupName} onToggle={onToggle} />\n <ClearAllButton\n hasSelectedItems={hasSelectedItems}\n groupName={groupName}\n onToggle={onToggle}\n />\n </Flex>\n )}\n </Box>\n );\n};\n\nconst SelectAllButton = ({\n groupName,\n onToggle,\n}: MenuToggleButtonsProps): React.JSX.Element => {\n return (\n <Button\n variant=\"ghost\"\n size=\"xs\"\n onClick={(): void => onToggle({ groupName, clear: false })}\n >\n Select All\n </Button>\n );\n};\n\nconst ClearAllButton = ({\n hasSelectedItems,\n groupName,\n onToggle,\n}: MenuToggleButtonsProps): React.JSX.Element => {\n return (\n <Button\n variant=\"ghostNeutral\"\n iconName=\"arrowCircle\"\n size=\"xs\"\n disabled={!hasSelectedItems}\n onClick={(): void => onToggle({ groupName, clear: true })}\n >\n Clear All\n </Button>\n );\n};\n","import React, { useCallback, useMemo, useState } from \"react\";\nimport { Menu as CMenu } from \"@chakra-ui/react/menu\";\nimport { Portal } from \"@chakra-ui/react/portal\";\nimport {\n MenuButton,\n MenuButtonProps,\n} from \"./components/MenuButton/menuButton.components\";\nimport {\n MenuItem,\n MenuItemProps,\n} from \"./components/MenuItem/menuItem.component\";\nimport { useCheckboxGroup } from \"@chakra-ui/react/checkbox\";\nimport { Box } from \"@chakra-ui/react/box\";\nimport { Text } from \"components/Text/text.component\";\nimport { TextInput } from \"components/TextInput/textInput.component\";\nimport { Flex } from \"@chakra-ui/react/flex\";\nimport { Spinner } from \"components/Spinner/spinner.component\";\nimport { MenuToggleButtons } from \"./components/MenuToggleButtons/menuToggleButtons\";\n\nexport type MenuListOnSelect =\n | ((selectedItem: string | undefined, allSelectedItems?: string[]) => void)\n | ((\n selectedItem: string | undefined,\n allSelectedItems?: string[],\n ) => Promise<void>);\n\nexport type MenuListOnSelectAll =\n | ((selectedItems: string[]) => void)\n | ((selectedItems: string[]) => Promise<void>);\n\nexport interface MenuListProps extends Omit<CMenu.ContentProps, \"onSelect\"> {\n canSelectAll?: boolean;\n canSelectGroups?: boolean;\n emptyStateText?: string;\n loading?: boolean;\n menuItems?: MenuItemProps[];\n onSearch?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n onSelect?: MenuListOnSelect;\n onSelectAll?: MenuListOnSelectAll;\n searchable?: boolean;\n searchPlaceholder?: string;\n shouldTruncateText?: boolean;\n}\n\nexport interface MenuProps extends Omit<CMenu.RootProps, \"children\"> {\n buttonProps?: MenuButtonProps;\n listProps?: MenuListProps;\n portalled?: boolean;\n}\n\ninterface InternalMenuProps extends MenuProps {\n submenuTrigger?: React.ReactNode;\n}\n\nexport const Menu = ({\n buttonProps,\n listProps,\n portalled = false,\n submenuTrigger,\n ...rest\n}: InternalMenuProps): React.JSX.Element => {\n const {\n canSelectAll,\n canSelectGroups,\n emptyStateText = \"No results found\",\n loading,\n maxH = \"480px\",\n menuItems = [],\n minW = \"240px\",\n onSearch,\n onSelect,\n onSelectAll,\n searchable,\n searchPlaceholder = \"Search...\",\n shouldTruncateText,\n ...restListProps\n } = listProps || {};\n const [searchText, setSearchText] = useState<string>(\"\");\n const [filteredMenuItems, setFilteredMenuItems] =\n useState<MenuItemProps[]>(menuItems);\n\n // Menu Items\n const groupedItems = useMemo(() => {\n const groups: Record<string, Record<string, MenuItemProps[]>> = {};\n\n filteredMenuItems?.forEach((item) => {\n const group = item.groupLabel || \"default\";\n // Default and submenu items are grouped under \"default\"\n const type = item.type === \"checkbox\" ? \"checkbox\" : \"default\";\n\n if (!groups[group]) {\n groups[group] = {};\n }\n\n if (!groups[group][type]) {\n groups[group][type] = [];\n }\n\n groups[group][type].push(item);\n });\n\n return groups;\n }, [filteredMenuItems]);\n\n const groups = useMemo(() => Object.entries(groupedItems), [groupedItems]);\n\n // Checkbox State Management\n const checkboxItems = useMemo(\n () => menuItems?.filter((item) => item.type === \"checkbox\") || [],\n [menuItems],\n );\n\n const defaultSelectedItems = useMemo(() => {\n const selectedMenuItems =\n checkboxItems?.filter((item) => item.checked) || [];\n return selectedMenuItems.map((item) => item.value);\n }, [checkboxItems]);\n\n const selectedItems = useCheckboxGroup({\n defaultValue: defaultSelectedItems,\n });\n\n // Search\n const handleSearch = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const searchInput = e.target.value;\n setSearchText(searchInput);\n\n if (onSearch) {\n onSearch(e);\n } else {\n if (searchInput === \"\" || !searchInput) {\n setFilteredMenuItems(menuItems);\n } else {\n const filterdItems = menuItems.filter((item): boolean => {\n const labelText =\n typeof item.label === \"string\" ? item.label : item.valueText;\n\n return !!labelText\n ?.toLowerCase()\n .includes(searchInput.toLowerCase());\n });\n setFilteredMenuItems(filterdItems);\n }\n }\n },\n [menuItems, onSearch],\n );\n\n // Selection\n const handleToggle = useCallback(\n ({ groupName, clear }: { groupName?: string; clear: boolean }) => {\n let newValues: string[] = [];\n if (groupName) {\n const groupItems = checkboxItems\n .filter((item) => item.groupLabel === groupName)\n .map((item) => item.value);\n newValues = clear\n ? selectedItems.value.filter((value) => !groupItems.includes(value))\n : [...selectedItems.value, ...groupItems];\n } else {\n newValues = clear ? [] : checkboxItems.map((item) => item.value);\n }\n onSelectAll?.(newValues);\n selectedItems.setValue(newValues);\n },\n [checkboxItems, onSelectAll, selectedItems],\n );\n\n const handleSelect = useCallback(\n (item: MenuItemProps) => {\n item.onSelect?.(item.value);\n const currentSelection = selectedItems.value;\n const isItemSelected = selectedItems.isChecked(item.value);\n onSelect?.(\n item.value,\n isItemSelected\n ? currentSelection.filter((value) => value !== item.value)\n : [...currentSelection, item.value],\n );\n if (item.type === \"checkbox\") {\n selectedItems.toggleValue(item.value);\n }\n },\n [onSelect, selectedItems],\n );\n\n // Cleanup\n const handleCleanup = useCallback(\n (open: boolean) => {\n if (!open) {\n setSearchText(\"\");\n setFilteredMenuItems(menuItems);\n }\n },\n [menuItems],\n );\n\n return (\n <CMenu.Root\n {...rest}\n onOpenChange={(details) => {\n handleCleanup(details.open);\n rest.onOpenChange?.(details);\n }}\n >\n {!submenuTrigger ? (\n <CMenu.Trigger\n asChild\n className=\"Menu__Trigger\"\n data-testid=\"kibble-menu-trigger\"\n >\n <MenuButton {...buttonProps} />\n </CMenu.Trigger>\n ) : (\n submenuTrigger\n )}\n <Portal disabled={!portalled}>\n <CMenu.Positioner className=\"Menu\" data-testid=\"kibble-menu\">\n <CMenu.Content\n className=\"Menu__Content\"\n data-testid=\"kibble-menu-content\"\n maxH={maxH}\n minW={minW}\n {...restListProps}\n >\n {(searchable || canSelectAll) && (\n <Box\n className=\"Menu__Header\"\n data-testid=\"kibble-menu-header\"\n m=\"0 12px 8px\"\n >\n {searchable && (\n <TextInput\n className=\"Menu__SearchBar\"\n data-testid=\"kibble-menu-search-bar\"\n placeholder={searchPlaceholder}\n onChange={handleSearch}\n size=\"sm\"\n value={searchText}\n clearable\n onClear={(): void => {\n setSearchText(\"\");\n handleSearch({\n target: { value: \"\" },\n } as React.ChangeEvent<HTMLInputElement>);\n }}\n formControlStyle={{ mt: 1 }}\n />\n )}\n {canSelectAll && !!checkboxItems.length && (\n <MenuToggleButtons\n onToggle={handleToggle}\n hasSelectedItems={!!selectedItems.value.length}\n />\n )}\n </Box>\n )}\n {!loading ? (\n <Box className=\"Menu__List\" data-testid=\"kibble-menu-list\">\n {groups.length ? (\n <>\n {groups.map(([groupLabel, types]) => {\n const isDefaultGroup = groupLabel === \"default\";\n const itemTypes = Object.keys(types);\n const MenuGroupContainer = !isDefaultGroup\n ? CMenu.ItemGroup\n : React.Fragment;\n const groupValues = types[\"checkbox\"]?.map(\n (item) => item.value,\n );\n const hasSelectedItems = groupValues?.some((value) =>\n selectedItems.value.includes(value),\n );\n return (\n <MenuGroupContainer key={groupLabel}>\n {!isDefaultGroup && (\n <CMenu.ItemGroupLabel>\n <Flex\n alignItems=\"center\"\n justifyContent=\"space-between\"\n >\n {groupLabel}\n {canSelectGroups &&\n itemTypes.includes(\"checkbox\") && (\n <MenuToggleButtons\n groupName={groupLabel}\n onToggle={handleToggle}\n hasSelectedItems={hasSelectedItems}\n />\n )}\n </Flex>\n </CMenu.ItemGroupLabel>\n )}\n {Object.entries(types).map(([type, items]) =>\n items.map((item, index) => (\n <MenuItem\n key={`menu-item-${groupLabel}-${type}-${index}`}\n {...item}\n shouldTruncateText={shouldTruncateText}\n {...(item.type === \"checkbox\" && {\n checked: selectedItems.isChecked(item.value),\n })}\n onSelect={() => handleSelect(item)}\n />\n )),\n )}\n </MenuGroupContainer>\n );\n })}\n </>\n ) : (\n <>\n <Box textAlign=\"center\" p={3}>\n <Text size=\"sm\" variant=\"subtle\">\n {emptyStateText}\n </Text>\n </Box>\n </>\n )}\n </Box>\n ) : (\n <Flex justifyContent=\"center\" py={5}>\n <Spinner />\n </Flex>\n )}\n </CMenu.Content>\n </CMenu.Positioner>\n </Portal>\n </CMenu.Root>\n );\n};\n"],"names":["MenuButton","hideCaret","size","text","textProps","variant","rest","jsxs","Button","jsx","Text","Flex","Icon","MenuItem","label","leftElement","onSelect","shouldTruncateText","type","handleOnSelect","useCallback","Menu","CMenu.TriggerItem","MenuItemLabel","checked","value","checkboxRest","CMenu.CheckboxItem","Checkbox","selected","defaultRest","CMenu.Item","Fragment","MenuToggleButtons","groupName","hasSelectedItems","onToggle","isGrouped","Box","ClearAllButton","SelectAllButton","buttonProps","listProps","portalled","submenuTrigger","canSelectAll","canSelectGroups","emptyStateText","loading","maxH","menuItems","minW","onSearch","onSelectAll","searchable","searchPlaceholder","restListProps","searchText","setSearchText","useState","filteredMenuItems","setFilteredMenuItems","groupedItems","useMemo","groups","item","group","checkboxItems","defaultSelectedItems","selectedItems","useCheckboxGroup","handleSearch","e","searchInput","filterdItems","handleToggle","clear","newValues","groupItems","handleSelect","currentSelection","isItemSelected","handleCleanup","open","CMenu.Root","details","CMenu.Trigger","Portal","CMenu.Positioner","CMenu.Content","TextInput","Spinner","groupLabel","types","isDefaultGroup","itemTypes","MenuGroupContainer","React","CMenu.ItemGroup","CMenu.ItemGroupLabel","items","index"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"menu.component-BCRZgrRr.js","sources":["../../src/components/Menu/components/MenuButton/menuButton.components.tsx","../../src/components/Menu/components/MenuItem/menuItem.component.tsx","../../src/components/Menu/components/MenuToggleButtons/menuToggleButtons.tsx","../../src/components/Menu/menu.component.tsx"],"sourcesContent":["import { Flex } from \"@chakra-ui/react/flex\";\nimport { Button, ButtonProps } from \"components/Button/button.component\";\nimport { Icon } from \"components/Icon/icon.component\";\nimport { Text, TextProps } from \"components/Text/text.component\";\nimport React from \"react\";\n\nexport interface MenuButtonProps extends Omit<ButtonProps, \"children\"> {\n hideCaret?: boolean;\n text?: string;\n textProps?: TextProps;\n}\n\nexport const MenuButton = ({\n hideCaret = false,\n size = \"md\",\n text,\n textProps,\n variant,\n ...rest\n}: MenuButtonProps): React.JSX.Element => {\n return (\n <Button\n className=\"Menu__Button\"\n data-testid=\"kibble-menu-button\"\n size={size}\n variant={variant}\n {...rest}\n >\n {text && (\n <Text\n className=\"Menu__ButtonText\"\n data-testid=\"kibble-menu-button-text\"\n fontWeight=\"semibold\"\n size={size}\n color={variant ? \"inherit\" : textProps?.color || \"text.contrast\"}\n truncate\n {...textProps}\n >\n {text}\n </Text>\n )}\n {!hideCaret && (\n <Flex\n className=\"Menu__ButtonCaret\"\n data-testid=\"kibble-menu-button-caret\"\n >\n <Icon name=\"chevronDown\" size={size === \"lg\" ? \"sm\" : \"xs\"} />\n </Flex>\n )}\n </Button>\n );\n};\n","import { Flex } from \"@chakra-ui/react/flex\";\nimport { Menu as CMenu } from \"@chakra-ui/react/menu\";\nimport React, { useCallback } from \"react\";\nimport { Text } from \"components/Text/text.component\";\nimport { MenuItemType } from \"./menuItem.types\";\nimport { Menu, MenuProps } from \"components/Menu\";\nimport { TypographyVariant } from \"shared/types/typography\";\nimport { Checkbox } from \"components/Checkbox/checkbox.component\";\nimport { Icon } from \"components/Icon/icon.component\";\n\ninterface BaseMenuItemProps {\n label?: React.ReactNode;\n leftElement?: React.ReactNode;\n groupLabel?: string;\n onSelect?: (value: string) => void;\n shouldTruncateText?: boolean;\n type?: MenuItemType;\n value: string;\n variant?: TypographyVariant;\n}\n\ninterface DefaultMenuItemProps extends Omit<CMenu.ItemProps, \"onSelect\"> {\n type?: \"default\";\n selected?: boolean;\n}\n\ninterface CheckboxMenuItemProps\n extends Omit<CMenu.CheckboxItemProps, \"onSelect\"> {\n type: \"checkbox\";\n checked: boolean;\n}\n\ninterface SubmenuMenuItemProps extends Omit<MenuProps, \"buttonProps\"> {\n type: \"submenu\";\n valueText?: string;\n}\n\nexport type MenuItemProps = BaseMenuItemProps &\n (DefaultMenuItemProps | CheckboxMenuItemProps | SubmenuMenuItemProps);\n\nexport const MenuItem = ({\n label,\n leftElement,\n onSelect,\n shouldTruncateText,\n type = \"default\",\n variant,\n ...rest\n}: MenuItemProps): React.JSX.Element => {\n const handleOnSelect = useCallback(() => {\n if (onSelect) {\n onSelect(rest.value);\n }\n }, [onSelect, rest.value]);\n\n if (type === \"submenu\") {\n return (\n <Menu\n submenuTrigger={\n <CMenu.TriggerItem\n className=\"Menu__Item--Submenu\"\n data-testid=\"kibble-menu-item-submenu\"\n justifyContent=\"space-between\"\n >\n <MenuItemLabel\n label={label}\n leftElement={leftElement}\n shouldTruncateText={shouldTruncateText}\n variant={variant}\n />\n <Icon name=\"chevronRight\" size=\"sm\" />\n </CMenu.TriggerItem>\n }\n {...rest}\n />\n );\n }\n\n if (type === \"checkbox\") {\n const { checked, value, ...checkboxRest } = rest as CheckboxMenuItemProps;\n return (\n <CMenu.CheckboxItem\n className=\"Menu__Item--Checkbox\"\n data-testid=\"kibble-menu-item-checkbox\"\n value={value}\n checked={!!checked}\n onCheckedChange={handleOnSelect}\n closeOnSelect={rest.closeOnSelect || false}\n gap={3}\n {...checkboxRest}\n >\n <Checkbox checked={!!checked} size=\"md\" />\n <MenuItemLabel\n label={label}\n leftElement={leftElement}\n shouldTruncateText={shouldTruncateText}\n variant={variant}\n />\n </CMenu.CheckboxItem>\n );\n }\n\n if (type === \"default\") {\n const { selected, value, ...defaultRest } = rest as DefaultMenuItemProps;\n return (\n <CMenu.Item\n className=\"Menu__Item--Default\"\n data-testid=\"kibble-menu-item-default\"\n value={value}\n onSelect={handleOnSelect}\n {...(selected && { bgColor: \"background.secondaryAlpha.hover\" })}\n {...defaultRest}\n >\n <MenuItemLabel\n label={label}\n leftElement={leftElement}\n shouldTruncateText={shouldTruncateText}\n variant={selected ? \"info\" : variant}\n />\n </CMenu.Item>\n );\n }\n\n return <></>;\n};\n\nconst MenuItemLabel = ({\n label,\n leftElement,\n shouldTruncateText,\n variant,\n}: {\n label?: React.ReactNode;\n leftElement?: React.ReactNode;\n shouldTruncateText?: boolean;\n variant?: TypographyVariant;\n}): React.JSX.Element => {\n return (\n <Flex className=\"Menu__ItemLabel\" alignItems=\"center\" gap={3}>\n {leftElement}\n {typeof label === \"string\" ? (\n <Text size=\"sm\" truncated={shouldTruncateText} variant={variant}>\n {label}\n </Text>\n ) : (\n label\n )}\n </Flex>\n );\n};\n","import { Box } from \"@chakra-ui/react/box\";\nimport { Flex } from \"@chakra-ui/react/flex\";\nimport { Button } from \"components/Button/button.component\";\n\ninterface MenuToggleButtonsProps {\n hasSelectedItems?: boolean;\n groupName?: string;\n onToggle: ({\n groupName,\n clear,\n }: {\n clear: boolean;\n groupName?: string;\n }) => void;\n}\n\nexport const MenuToggleButtons = ({\n groupName,\n hasSelectedItems = false,\n onToggle,\n}: MenuToggleButtonsProps): React.JSX.Element => {\n const isGrouped = !!groupName;\n return (\n <Box\n className=\"Menu__ToggleButtons\"\n data-testid=\"kibble-menu-toggle-buttons\"\n {...(isGrouped ? { textAlign: \"right\", w: \"50%\" } : { mt: 2 })}\n >\n {isGrouped ? (\n <>\n {hasSelectedItems ? (\n <ClearAllButton\n hasSelectedItems={hasSelectedItems}\n groupName={groupName}\n onToggle={onToggle}\n />\n ) : (\n <SelectAllButton groupName={groupName} onToggle={onToggle} />\n )}\n </>\n ) : (\n <Flex justifyContent=\"space-between\">\n <SelectAllButton groupName={groupName} onToggle={onToggle} />\n <ClearAllButton\n hasSelectedItems={hasSelectedItems}\n groupName={groupName}\n onToggle={onToggle}\n />\n </Flex>\n )}\n </Box>\n );\n};\n\nconst SelectAllButton = ({\n groupName,\n onToggle,\n}: MenuToggleButtonsProps): React.JSX.Element => {\n return (\n <Button\n variant=\"ghost\"\n size=\"xs\"\n onClick={(): void => onToggle({ groupName, clear: false })}\n >\n Select All\n </Button>\n );\n};\n\nconst ClearAllButton = ({\n hasSelectedItems,\n groupName,\n onToggle,\n}: MenuToggleButtonsProps): React.JSX.Element => {\n return (\n <Button\n variant=\"ghostNeutral\"\n iconName=\"arrowCircle\"\n size=\"xs\"\n disabled={!hasSelectedItems}\n onClick={(): void => onToggle({ groupName, clear: true })}\n >\n Clear All\n </Button>\n );\n};\n","import React, { useCallback, useMemo, useState } from \"react\";\nimport { Menu as CMenu } from \"@chakra-ui/react/menu\";\nimport { Portal } from \"@chakra-ui/react/portal\";\nimport {\n MenuButton,\n MenuButtonProps,\n} from \"./components/MenuButton/menuButton.components\";\nimport {\n MenuItem,\n MenuItemProps,\n} from \"./components/MenuItem/menuItem.component\";\nimport { useCheckboxGroup } from \"@chakra-ui/react/checkbox\";\nimport { Box } from \"@chakra-ui/react/box\";\nimport { Text } from \"components/Text/text.component\";\nimport { TextInput } from \"components/TextInput/textInput.component\";\nimport { Flex } from \"@chakra-ui/react/flex\";\nimport { Spinner } from \"components/Spinner/spinner.component\";\nimport { MenuToggleButtons } from \"./components/MenuToggleButtons/menuToggleButtons\";\n\nexport type MenuListOnSelect =\n | ((selectedItem: string | undefined, allSelectedItems?: string[]) => void)\n | ((\n selectedItem: string | undefined,\n allSelectedItems?: string[],\n ) => Promise<void>);\n\nexport type MenuListOnSelectAll =\n | ((selectedItems: string[]) => void)\n | ((selectedItems: string[]) => Promise<void>);\n\nexport interface MenuListProps extends Omit<CMenu.ContentProps, \"onSelect\"> {\n canSelectAll?: boolean;\n canSelectGroups?: boolean;\n emptyStateText?: string;\n loading?: boolean;\n menuItems?: MenuItemProps[];\n onSearch?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n onSelect?: MenuListOnSelect;\n onSelectAll?: MenuListOnSelectAll;\n searchable?: boolean;\n searchPlaceholder?: string;\n shouldTruncateText?: boolean;\n}\n\nexport interface MenuProps extends Omit<CMenu.RootProps, \"children\"> {\n buttonProps?: MenuButtonProps;\n listProps?: MenuListProps;\n portalled?: boolean;\n}\n\ninterface InternalMenuProps extends MenuProps {\n submenuTrigger?: React.ReactNode;\n}\n\nexport const Menu = ({\n buttonProps,\n listProps,\n portalled = false,\n submenuTrigger,\n ...rest\n}: InternalMenuProps): React.JSX.Element => {\n const {\n canSelectAll,\n canSelectGroups,\n emptyStateText = \"No results found\",\n loading,\n maxH = \"480px\",\n menuItems = [],\n minW = \"240px\",\n onSearch,\n onSelect,\n onSelectAll,\n searchable,\n searchPlaceholder = \"Search...\",\n shouldTruncateText,\n ...restListProps\n } = listProps || {};\n const [searchText, setSearchText] = useState<string>(\"\");\n const [filteredMenuItems, setFilteredMenuItems] =\n useState<MenuItemProps[]>(menuItems);\n\n // Menu Items\n const groupedItems = useMemo(() => {\n const groups: Record<string, Record<string, MenuItemProps[]>> = {};\n\n filteredMenuItems?.forEach((item) => {\n const group = item.groupLabel || \"default\";\n // Default and submenu items are grouped under \"default\"\n const type = item.type === \"checkbox\" ? \"checkbox\" : \"default\";\n\n if (!groups[group]) {\n groups[group] = {};\n }\n\n if (!groups[group][type]) {\n groups[group][type] = [];\n }\n\n groups[group][type].push(item);\n });\n\n return groups;\n }, [filteredMenuItems]);\n\n const groups = useMemo(() => Object.entries(groupedItems), [groupedItems]);\n\n // Checkbox State Management\n const checkboxItems = useMemo(\n () => menuItems?.filter((item) => item.type === \"checkbox\") || [],\n [menuItems],\n );\n\n const defaultSelectedItems = useMemo(() => {\n const selectedMenuItems =\n checkboxItems?.filter((item) => item.checked) || [];\n return selectedMenuItems.map((item) => item.value);\n }, [checkboxItems]);\n\n const selectedItems = useCheckboxGroup({\n defaultValue: defaultSelectedItems,\n });\n\n // Search\n const handleSearch = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const searchInput = e.target.value;\n setSearchText(searchInput);\n\n if (onSearch) {\n onSearch(e);\n } else {\n if (searchInput === \"\" || !searchInput) {\n setFilteredMenuItems(menuItems);\n } else {\n const filterdItems = menuItems.filter((item): boolean => {\n const labelText =\n typeof item.label === \"string\" ? item.label : item.valueText;\n\n return !!labelText\n ?.toLowerCase()\n .includes(searchInput.toLowerCase());\n });\n setFilteredMenuItems(filterdItems);\n }\n }\n },\n [menuItems, onSearch],\n );\n\n // Selection\n const handleToggle = useCallback(\n ({ groupName, clear }: { groupName?: string; clear: boolean }) => {\n let newValues: string[] = [];\n if (groupName) {\n const groupItems = checkboxItems\n .filter((item) => item.groupLabel === groupName)\n .map((item) => item.value);\n newValues = clear\n ? selectedItems.value.filter((value) => !groupItems.includes(value))\n : [...selectedItems.value, ...groupItems];\n } else {\n newValues = clear ? [] : checkboxItems.map((item) => item.value);\n }\n onSelectAll?.(newValues);\n selectedItems.setValue(newValues);\n },\n [checkboxItems, onSelectAll, selectedItems],\n );\n\n const handleSelect = useCallback(\n (item: MenuItemProps) => {\n item.onSelect?.(item.value);\n const currentSelection = selectedItems.value;\n const isItemSelected = selectedItems.isChecked(item.value);\n onSelect?.(\n item.value,\n isItemSelected\n ? currentSelection.filter((value) => value !== item.value)\n : [...currentSelection, item.value],\n );\n if (item.type === \"checkbox\") {\n selectedItems.toggleValue(item.value);\n }\n },\n [onSelect, selectedItems],\n );\n\n // Cleanup\n const handleCleanup = useCallback(\n (open: boolean) => {\n if (!open) {\n setSearchText(\"\");\n setFilteredMenuItems(menuItems);\n }\n },\n [menuItems],\n );\n\n return (\n <CMenu.Root\n {...rest}\n onOpenChange={(details) => {\n handleCleanup(details.open);\n rest.onOpenChange?.(details);\n }}\n >\n {!submenuTrigger ? (\n <CMenu.Trigger\n asChild\n className=\"Menu__Trigger\"\n data-testid=\"kibble-menu-trigger\"\n >\n <MenuButton {...buttonProps} />\n </CMenu.Trigger>\n ) : (\n submenuTrigger\n )}\n <Portal disabled={!portalled}>\n <CMenu.Positioner className=\"Menu\" data-testid=\"kibble-menu\">\n <CMenu.Content\n className=\"Menu__Content\"\n data-testid=\"kibble-menu-content\"\n maxH={maxH}\n minW={minW}\n {...restListProps}\n >\n {(searchable || canSelectAll) && (\n <Box\n className=\"Menu__Header\"\n data-testid=\"kibble-menu-header\"\n m=\"0 12px 8px\"\n >\n {searchable && (\n <TextInput\n className=\"Menu__SearchBar\"\n data-testid=\"kibble-menu-search-bar\"\n placeholder={searchPlaceholder}\n onChange={handleSearch}\n size=\"sm\"\n value={searchText}\n clearable\n onClear={(): void => {\n setSearchText(\"\");\n handleSearch({\n target: { value: \"\" },\n } as React.ChangeEvent<HTMLInputElement>);\n }}\n formControlStyle={{ mt: 1 }}\n />\n )}\n {canSelectAll && !!checkboxItems.length && (\n <MenuToggleButtons\n onToggle={handleToggle}\n hasSelectedItems={!!selectedItems.value.length}\n />\n )}\n </Box>\n )}\n {!loading ? (\n <Box className=\"Menu__List\" data-testid=\"kibble-menu-list\">\n {groups.length ? (\n <>\n {groups.map(([groupLabel, types]) => {\n const isDefaultGroup = groupLabel === \"default\";\n const itemTypes = Object.keys(types);\n const MenuGroupContainer = !isDefaultGroup\n ? CMenu.ItemGroup\n : React.Fragment;\n const groupValues = types[\"checkbox\"]?.map(\n (item) => item.value,\n );\n const hasSelectedItems = groupValues?.some((value) =>\n selectedItems.value.includes(value),\n );\n return (\n <MenuGroupContainer key={groupLabel}>\n {!isDefaultGroup && (\n <CMenu.ItemGroupLabel>\n <Flex\n alignItems=\"center\"\n justifyContent=\"space-between\"\n >\n {groupLabel}\n {canSelectGroups &&\n itemTypes.includes(\"checkbox\") && (\n <MenuToggleButtons\n groupName={groupLabel}\n onToggle={handleToggle}\n hasSelectedItems={hasSelectedItems}\n />\n )}\n </Flex>\n </CMenu.ItemGroupLabel>\n )}\n {Object.entries(types).map(([type, items]) =>\n items.map((item, index) => (\n <MenuItem\n key={`menu-item-${groupLabel}-${type}-${index}`}\n {...item}\n shouldTruncateText={shouldTruncateText}\n {...(item.type === \"checkbox\" && {\n checked: selectedItems.isChecked(item.value),\n })}\n onSelect={() => handleSelect(item)}\n />\n )),\n )}\n </MenuGroupContainer>\n );\n })}\n </>\n ) : (\n <>\n <Box textAlign=\"center\" p={3}>\n <Text size=\"sm\" variant=\"subtle\">\n {emptyStateText}\n </Text>\n </Box>\n </>\n )}\n </Box>\n ) : (\n <Flex justifyContent=\"center\" py={5}>\n <Spinner />\n </Flex>\n )}\n </CMenu.Content>\n </CMenu.Positioner>\n </Portal>\n </CMenu.Root>\n );\n};\n"],"names":["MenuButton","hideCaret","size","text","textProps","variant","rest","jsxs","Button","jsx","Text","Flex","Icon","MenuItem","label","leftElement","onSelect","shouldTruncateText","type","handleOnSelect","useCallback","Menu","CMenu.TriggerItem","MenuItemLabel","checked","value","checkboxRest","CMenu.CheckboxItem","Checkbox","selected","defaultRest","CMenu.Item","Fragment","MenuToggleButtons","groupName","hasSelectedItems","onToggle","isGrouped","Box","ClearAllButton","SelectAllButton","buttonProps","listProps","portalled","submenuTrigger","canSelectAll","canSelectGroups","emptyStateText","loading","maxH","menuItems","minW","onSearch","onSelectAll","searchable","searchPlaceholder","restListProps","searchText","setSearchText","useState","filteredMenuItems","setFilteredMenuItems","groupedItems","useMemo","groups","item","group","checkboxItems","defaultSelectedItems","selectedItems","useCheckboxGroup","handleSearch","e","searchInput","filterdItems","handleToggle","clear","newValues","groupItems","handleSelect","currentSelection","isItemSelected","handleCleanup","open","CMenu.Root","details","CMenu.Trigger","Portal","CMenu.Positioner","CMenu.Content","TextInput","Spinner","groupLabel","types","isDefaultGroup","itemTypes","MenuGroupContainer","React","CMenu.ItemGroup","CMenu.ItemGroupLabel","items","index"],"mappings":"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"}
|