@televet/kibble-ui 5.0.27 → 5.0.28-rb.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/dist/chunks/calendar.component-BFSyxaB6.js +2 -0
  2. package/dist/chunks/calendar.component-BFSyxaB6.js.map +1 -0
  3. package/dist/chunks/calendar.component-CegJR9ey.js +18 -0
  4. package/dist/chunks/calendar.component-CegJR9ey.js.map +1 -0
  5. package/dist/chunks/{conversationCard.component-xIYvp6K5.js → conversationCard.component-DByFo4jj.js} +2 -2
  6. package/dist/chunks/{conversationCard.component-xIYvp6K5.js.map → conversationCard.component-DByFo4jj.js.map} +1 -1
  7. package/dist/chunks/{datePicker.component-DeK6pPeC.js → datePicker.component-CLTjEX7i.js} +3 -3
  8. package/dist/chunks/{datePicker.component-DeK6pPeC.js.map → datePicker.component-CLTjEX7i.js.map} +1 -1
  9. package/dist/chunks/{datePicker.provider-C1vLiJEb.js → datePicker.provider-CttuPiiS.js} +5 -5
  10. package/dist/chunks/{datePicker.provider-C1vLiJEb.js.map → datePicker.provider-CttuPiiS.js.map} +1 -1
  11. package/dist/chunks/dateTimePicker.component-BlWhC5aT.js +2 -0
  12. package/dist/chunks/dateTimePicker.component-BlWhC5aT.js.map +1 -0
  13. package/dist/chunks/dateTimePicker.component-CLAI_Q6e.js +317 -0
  14. package/dist/chunks/dateTimePicker.component-CLAI_Q6e.js.map +1 -0
  15. package/dist/chunks/{format-dJJ72A--.js → format-CqTHHSak.js} +3 -3
  16. package/dist/chunks/{format-dJJ72A--.js.map → format-CqTHHSak.js.map} +1 -1
  17. package/dist/chunks/isToday-iCYsPDMT.js +23 -0
  18. package/dist/chunks/{isToday-Q8lj3mkM.js.map → isToday-iCYsPDMT.js.map} +1 -1
  19. package/dist/chunks/{semanticTokens.records-Di2_gv9n.js → semanticTokens.records-C_ewkfqj.js} +9 -9
  20. package/dist/chunks/{semanticTokens.records-Di2_gv9n.js.map → semanticTokens.records-C_ewkfqj.js.map} +1 -1
  21. package/dist/chunks/{semanticTokens.records-CmeaObFQ.js → semanticTokens.records-YFGbKTL1.js} +2 -2
  22. package/dist/chunks/{semanticTokens.records-CmeaObFQ.js.map → semanticTokens.records-YFGbKTL1.js.map} +1 -1
  23. package/dist/chunks/theme-BFbOz0Jj.js.map +1 -1
  24. package/dist/chunks/theme-BOK659O0.js.map +1 -1
  25. package/dist/chunks/{theme.provider-CVSsJMOG.js → theme.provider-BeSlhtUQ.js} +2 -2
  26. package/dist/chunks/{theme.provider-CVSsJMOG.js.map → theme.provider-BeSlhtUQ.js.map} +1 -1
  27. package/dist/chunks/{theme.provider-C_F9M-W3.js → theme.provider-DYehMUhm.js} +2 -2
  28. package/dist/chunks/{theme.provider-C_F9M-W3.js.map → theme.provider-DYehMUhm.js.map} +1 -1
  29. package/dist/chunks/{timePicker.component-CsvyXSRc.js → timePicker.component-BCMX6aqb.js} +2 -2
  30. package/dist/chunks/{timePicker.component-CsvyXSRc.js.map → timePicker.component-BCMX6aqb.js.map} +1 -1
  31. package/dist/chunks/{timeRange.component-9Bs6kd18.js → timeRange.component-BZHpZeAX.js} +2 -2
  32. package/dist/chunks/{timeRange.component-9Bs6kd18.js.map → timeRange.component-BZHpZeAX.js.map} +1 -1
  33. package/dist/chunks/{timestamp.component-DiZwy6CA.js → timestamp.component-DkLjxUsy.js} +3 -3
  34. package/dist/chunks/{timestamp.component-DiZwy6CA.js.map → timestamp.component-DkLjxUsy.js.map} +1 -1
  35. package/dist/cjs/components/Calendar/index.cjs +1 -1
  36. package/dist/cjs/components/DateTimePicker/index.cjs +1 -1
  37. package/dist/cjs/components/index.cjs +1 -1
  38. package/dist/cjs/index.cjs +1 -1
  39. package/dist/cjs/theme/index.cjs +1 -1
  40. package/dist/cjs/theme/semanticTokens/index.cjs +1 -1
  41. package/dist/cjs/theme/semanticTokens/index.cjs.map +1 -1
  42. package/dist/esm/components/Calendar/index.js +2 -4
  43. package/dist/esm/components/ConversationCard/index.js +1 -1
  44. package/dist/esm/components/DatePicker/index.js +2 -2
  45. package/dist/esm/components/DateTimePicker/index.js +1 -1
  46. package/dist/esm/components/TimePicker/index.js +1 -1
  47. package/dist/esm/components/TimeRange/index.js +1 -1
  48. package/dist/esm/components/Timestamp/index.js +1 -1
  49. package/dist/esm/components/index.js +122 -124
  50. package/dist/esm/index.js +151 -153
  51. package/dist/esm/theme/index.js +1 -1
  52. package/dist/esm/theme/semanticTokens/index.js +15 -39
  53. package/dist/esm/theme/semanticTokens/index.js.map +1 -1
  54. package/dist/types/components/Calendar/calendar.component.d.ts +1 -19
  55. package/dist/types/components/Calendar/index.d.ts +0 -2
  56. package/dist/types/components/Heading/heading.recipe.d.ts +1 -1
  57. package/dist/types/components/Link/link.recipe.d.ts +1 -1
  58. package/dist/types/components/Modal/modal.recipe.d.ts +1 -1
  59. package/dist/types/components/Text/text.recipe.d.ts +1 -1
  60. package/dist/types/shared/types/theme.d.ts +1 -1
  61. package/dist/types/theme/semanticTokens/semanticTokens.config.d.ts +37 -37
  62. package/dist/types/theme/tokens/colors/colors.config.d.ts +1 -1
  63. package/package.json +1 -1
  64. package/dist/chunks/calendar.component-CFBrrBSJ.js +0 -2
  65. package/dist/chunks/calendar.component-CFBrrBSJ.js.map +0 -1
  66. package/dist/chunks/calendar.component-Dz_YhuJT.js +0 -62
  67. package/dist/chunks/calendar.component-Dz_YhuJT.js.map +0 -1
  68. package/dist/chunks/dateTimePicker.component-BwKD6TeU.js +0 -306
  69. package/dist/chunks/dateTimePicker.component-BwKD6TeU.js.map +0 -1
  70. package/dist/chunks/dateTimePicker.component-C7SFD9Py.js +0 -2
  71. package/dist/chunks/dateTimePicker.component-C7SFD9Py.js.map +0 -1
  72. package/dist/chunks/endOfMonth-ClO3w4vF.js +0 -2
  73. package/dist/chunks/endOfMonth-ClO3w4vF.js.map +0 -1
  74. package/dist/chunks/endOfMonth-D0kCU08_.js +0 -19
  75. package/dist/chunks/endOfMonth-D0kCU08_.js.map +0 -1
  76. package/dist/chunks/isToday-Q8lj3mkM.js +0 -23
  77. package/dist/types/components/Calendar/calendar.utils.d.ts +0 -3
  78. package/dist/types/components/Calendar/calendarFooterButton.component.d.ts +0 -41
@@ -0,0 +1,2 @@
1
+ "use strict";const e=require("./jsx-runtime-BjDatQAs.js"),n=require("./index-BQRnVsAg.js"),r=require("./datePicker.provider-i35-VNAb.js"),d=require("./divider.component-BX3zyB7O.js"),x=({["data-testid"]:t="kibble-calendar",withDateRange:s=!0,withHeaderTriggers:i=!1,...a})=>e.jsxRuntimeExports.jsx(n.Box,{className:"Calendar","data-testid":t,maxW:"340px",children:e.jsxRuntimeExports.jsxs(r.DatePickerProvider,{withDateRange:s,...a,standalone:!0,children:[e.jsxRuntimeExports.jsx(r.DatePickerHeader,{withTriggers:i}),e.jsxRuntimeExports.jsx(d.Divider,{}),e.jsxRuntimeExports.jsx(r.DatePickerCalendar,{})]})});exports.Calendar=x;
2
+ //# sourceMappingURL=calendar.component-BFSyxaB6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calendar.component-BFSyxaB6.js","sources":["../../src/components/Calendar/calendar.component.tsx"],"sourcesContent":["import React from 'react';\nimport { Box } from '@chakra-ui/react/box';\nimport { DatePickerCalendar } from 'components/DatePicker/components/DatePickerCalendar/datePickerCalendar.component';\nimport { DatePickerHeader } from 'components/DatePicker/components/DatePickerHeader/datePickerHeader.component';\nimport { Divider } from 'components/Divider';\nimport { DatePickerProvider } from 'components/DatePicker/context/datePicker.provider';\nimport { DateProps } from 'components/DatePicker/datePicker.types';\n\nexport interface CalendarProps extends DateProps {\n /** Data test id for the calendar.\n * @default kibble-calendar\n */\n 'data-testid'?: string;\n /**\n * If true, the calendar will allow for a date range selection.\n * @default true\n */\n withDateRange?: boolean;\n /**\n * If true, the calendar will show the month and year selectors in the header.\n * @default false\n */\n withHeaderTriggers?: boolean;\n}\n\nexport const Calendar = ({\n ['data-testid']: dataTestId = 'kibble-calendar',\n withDateRange = true,\n withHeaderTriggers = false,\n ...rest\n}: CalendarProps): React.JSX.Element => {\n return (\n <Box className=\"Calendar\" data-testid={dataTestId} maxW=\"340px\">\n <DatePickerProvider withDateRange={withDateRange} {...rest} standalone>\n <DatePickerHeader withTriggers={withHeaderTriggers} />\n <Divider />\n <DatePickerCalendar />\n </DatePickerProvider>\n </Box>\n );\n};\n"],"names":["Calendar","dataTestId","withDateRange","withHeaderTriggers","rest","jsx","Box","jsxs","DatePickerProvider","DatePickerHeader","Divider","DatePickerCalendar"],"mappings":"uLAyBaA,EAAW,CAAC,CACvB,CAAC,eAAgBC,EAAa,kBAC9B,cAAAC,EAAgB,GAChB,mBAAAC,EAAqB,GACrB,GAAGC,CACL,IAEKC,EAAAA,kBAAAA,IAAAC,EAAAA,IAAA,CAAI,UAAU,WAAW,cAAaL,EAAY,KAAK,QACtD,SAAAM,EAAA,kBAAA,KAACC,EAAmB,mBAAA,CAAA,cAAAN,EAA+B,GAAGE,EAAM,WAAU,GACpE,SAAA,CAACC,EAAAA,kBAAAA,IAAAI,EAAA,iBAAA,CAAiB,aAAcN,CAAoB,CAAA,0BACnDO,EAAQ,QAAA,EAAA,0BACRC,EAAmB,mBAAA,CAAA,CAAA,CAAA,CAAA,CACtB,CACF,CAAA"}
@@ -0,0 +1,18 @@
1
+ import { j as a } from "./jsx-runtime-C5mzlN2N.js";
2
+ import { B as i } from "./index-9BerxEcw.js";
3
+ import { a as d, b as o, c as m } from "./datePicker.provider-CttuPiiS.js";
4
+ import { D as n } from "./divider.component-CFOh4Nw3.js";
5
+ const p = ({
6
+ ["data-testid"]: r = "kibble-calendar",
7
+ withDateRange: e = !0,
8
+ withHeaderTriggers: s = !1,
9
+ ...t
10
+ }) => /* @__PURE__ */ a.jsx(i, { className: "Calendar", "data-testid": r, maxW: "340px", children: /* @__PURE__ */ a.jsxs(d, { withDateRange: e, ...t, standalone: !0, children: [
11
+ /* @__PURE__ */ a.jsx(o, { withTriggers: s }),
12
+ /* @__PURE__ */ a.jsx(n, {}),
13
+ /* @__PURE__ */ a.jsx(m, {})
14
+ ] }) });
15
+ export {
16
+ p as C
17
+ };
18
+ //# sourceMappingURL=calendar.component-CegJR9ey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calendar.component-CegJR9ey.js","sources":["../../src/components/Calendar/calendar.component.tsx"],"sourcesContent":["import React from 'react';\nimport { Box } from '@chakra-ui/react/box';\nimport { DatePickerCalendar } from 'components/DatePicker/components/DatePickerCalendar/datePickerCalendar.component';\nimport { DatePickerHeader } from 'components/DatePicker/components/DatePickerHeader/datePickerHeader.component';\nimport { Divider } from 'components/Divider';\nimport { DatePickerProvider } from 'components/DatePicker/context/datePicker.provider';\nimport { DateProps } from 'components/DatePicker/datePicker.types';\n\nexport interface CalendarProps extends DateProps {\n /** Data test id for the calendar.\n * @default kibble-calendar\n */\n 'data-testid'?: string;\n /**\n * If true, the calendar will allow for a date range selection.\n * @default true\n */\n withDateRange?: boolean;\n /**\n * If true, the calendar will show the month and year selectors in the header.\n * @default false\n */\n withHeaderTriggers?: boolean;\n}\n\nexport const Calendar = ({\n ['data-testid']: dataTestId = 'kibble-calendar',\n withDateRange = true,\n withHeaderTriggers = false,\n ...rest\n}: CalendarProps): React.JSX.Element => {\n return (\n <Box className=\"Calendar\" data-testid={dataTestId} maxW=\"340px\">\n <DatePickerProvider withDateRange={withDateRange} {...rest} standalone>\n <DatePickerHeader withTriggers={withHeaderTriggers} />\n <Divider />\n <DatePickerCalendar />\n </DatePickerProvider>\n </Box>\n );\n};\n"],"names":["Calendar","dataTestId","withDateRange","withHeaderTriggers","rest","jsx","Box","jsxs","DatePickerProvider","DatePickerHeader","Divider","DatePickerCalendar"],"mappings":";;;;AAyBO,MAAMA,IAAW,CAAC;AAAA,EACvB,CAAC,gBAAgBC,IAAa;AAAA,EAC9B,eAAAC,IAAgB;AAAA,EAChB,oBAAAC,IAAqB;AAAA,EACrB,GAAGC;AACL,MAEKC,gBAAAA,EAAAA,IAAAC,GAAA,EAAI,WAAU,YAAW,eAAaL,GAAY,MAAK,SACtD,UAAAM,gBAAAA,EAAA,KAACC,GAAmB,EAAA,eAAAN,GAA+B,GAAGE,GAAM,YAAU,IACpE,UAAA;AAAA,EAACC,gBAAAA,EAAAA,IAAAI,GAAA,EAAiB,cAAcN,EAAoB,CAAA;AAAA,wBACnDO,GAAQ,EAAA;AAAA,wBACRC,GAAmB,CAAA,CAAA;AAAA,EAAA,CACtB,EACF,CAAA;"}
@@ -2,7 +2,7 @@ import { j as t } from "./jsx-runtime-C5mzlN2N.js";
2
2
  import { useState as H } from "react";
3
3
  import { B as f } from "./index-9BerxEcw.js";
4
4
  import { C as S } from "./card.component-B1AznjWF.js";
5
- import { T as B } from "./timestamp.component-DiZwy6CA.js";
5
+ import { T as B } from "./timestamp.component-DkLjxUsy.js";
6
6
  import { N as W } from "./notificationCounter.component-6Q3q8jWj.js";
7
7
  import { I as g } from "./icon.component-PV_nHBId.js";
8
8
  import { W as F } from "./heading.component-CpSAN3cv.js";
@@ -328,4 +328,4 @@ const E = ({
328
328
  export {
329
329
  lt as C
330
330
  };
331
- //# sourceMappingURL=conversationCard.component-xIYvp6K5.js.map
331
+ //# sourceMappingURL=conversationCard.component-DByFo4jj.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"conversationCard.component-xIYvp6K5.js","sources":["../../src/components/ConversationCard/components/ConversationCardAvatarGroup/conversationCardAvatarGroup.component.tsx","../../src/components/ConversationCard/components/ConversationCardHeader/conversationCardHeader.component.tsx","../../src/components/ConversationCard/components/ConversationCardButtons/conversationCardButtons.component.tsx","../../src/components/ConversationCard/components/ConversationCardTags/conversationCardTags.component.tsx","../../src/components/ConversationCard/components/ConversationCardFooter/conversationCardFooter.component.tsx","../../src/components/ConversationCard/components/ConversationCardContent/conversationCardContent.component.tsx","../../src/components/ConversationCard/conversationCard.component.tsx"],"sourcesContent":["import React from 'react';\nimport { Flex } from '@chakra-ui/react/flex';\nimport { Avatar } from 'components/Avatar/avatar.component';\nimport { Tooltip } from 'components/Tooltip/tooltip.component';\n\nexport interface ConversationCardAvatarGroupProps {\n /** Avatars to display in the group. */\n avatars: React.ReactNode[];\n /** Maximum number of avatars to display.\n * @default 1\n */\n max?: number;\n /** Callback function to be called when the avatar group is clicked. */\n onAvatarGroupClick?: (e: React.MouseEvent<HTMLSpanElement, MouseEvent>) => void;\n /** Label for the tooltip. */\n tooltipLabel?: string;\n /** Data test id for the avatar group.\n * @default kibble-conversation-card-avatar-group\n */\n 'data-testid'?: string;\n}\n\nexport const ConversationCardAvatarGroup = ({\n avatars,\n max = 1,\n onAvatarGroupClick,\n tooltipLabel,\n ['data-testid']: dataTestId = 'kibble-conversation-card-avatar-group',\n}: ConversationCardAvatarGroupProps): React.JSX.Element => {\n return (\n <Tooltip label={tooltipLabel || ''} disabled={!tooltipLabel?.length}>\n <Flex\n className=\"ConversationCard__AvatarGroup\"\n data-testid={dataTestId}\n alignItems=\"flex-start\"\n justifyContent=\"flex-start\"\n >\n {max && avatars.length > max ? (\n <Avatar\n onClick={(e): void => {\n e.stopPropagation();\n if (onAvatarGroupClick) {\n onAvatarGroupClick(e);\n }\n }}\n cursor=\"pointer\"\n name={avatars.length.toString()}\n showTooltip={false}\n />\n ) : (\n <>{avatars.map((avatar) => avatar)}</>\n )}\n </Flex>\n </Tooltip>\n );\n};\n","import React from 'react';\nimport { Box } from '@chakra-ui/react/box';\nimport { Flex } from '@chakra-ui/react/flex';\nimport { HStack, VStack } from '@chakra-ui/react/stack';\nimport { Timestamp, TimestampProps } from 'components/Timestamp/timestamp.component';\nimport { NotificationCounter } from 'components/NotificationCounter/notificationCounter.component';\nimport { Icon } from 'components/Icon/icon.component';\nimport { Heading } from 'components/Heading/heading.component';\nimport { Text } from 'components/Text/text.component';\nimport {\n ConversationCardAvatarGroup,\n ConversationCardAvatarGroupProps,\n} from '../ConversationCardAvatarGroup/conversationCardAvatarGroup.component';\n\nexport interface ConversationCardHeaderProps {\n /** Props for the avatar group. */\n avatarGroupProps?: ConversationCardAvatarGroupProps;\n /** If true, the notification indicator will be displayed. */\n showNotificationIndicator?: boolean;\n /** Determines if the card is pinned. */\n isCardPinned?: boolean;\n /** Determines if the card is being hovered. */\n isHoveringCard?: boolean;\n /** Subtitle of the card. */\n subtitle?: string;\n /** Props for the timestamp. */\n timestampProps: TimestampProps;\n /** Title of the card. */\n title: string;\n /** Data test id for the header.\n * @default kibble-conversation-card-header\n */\n 'data-testid'?: string;\n}\n\nexport const ConversationCardHeader = ({\n avatarGroupProps,\n timestampProps,\n isHoveringCard,\n isCardPinned,\n title,\n showNotificationIndicator,\n subtitle,\n ['data-testid']: dataTestId = 'kibble-conversation-card-header',\n}: ConversationCardHeaderProps): React.JSX.Element => {\n return (\n <HStack className=\"ConversationCard__Header\" data-testid={dataTestId} justify=\"space-between\" align=\"flex-start\">\n <HStack className=\"ConversationCard__Header--Left\" data-testid={`${dataTestId}-left`} cursor=\"pointer\">\n {avatarGroupProps && (\n <ConversationCardAvatarGroup {...avatarGroupProps} tooltipLabel={avatarGroupProps?.tooltipLabel || title} />\n )}\n <VStack\n className=\"ConversationCard__HeaderText\"\n data-testid={`${dataTestId}-text`}\n justify=\"center\"\n align=\"left\"\n gap=\"0\"\n >\n <Heading\n className=\"ConversationCard__HeaderText--Title\"\n data-testid={`${dataTestId}-title`}\n size=\"sm\"\n truncated\n >\n {title}\n </Heading>\n {subtitle && (\n <Text\n className=\"ConversationCard__HeaderText--Subtitle\"\n data-testid={`${dataTestId}-subtitle`}\n size=\"sm\"\n variant=\"subtle\"\n truncated\n >\n {subtitle}\n </Text>\n )}\n </VStack>\n </HStack>\n <HStack\n className=\"ConversationCard__Header--Right\"\n data-testid={`${dataTestId}-right`}\n visibility={isHoveringCard ? 'hidden' : 'visible'}\n align=\"center\"\n gap={1}\n >\n <Timestamp {...timestampProps} />\n {showNotificationIndicator && (\n <Box\n as=\"span\"\n className=\"ConversationCard__HeaderNotificationCounter\"\n data-testid={`${dataTestId}-unread-indicator`}\n >\n <NotificationCounter size=\"xs\" />\n </Box>\n )}\n {isCardPinned && (\n <Flex data-testid={`${dataTestId}-pinned-icon`}>\n <Icon size=\"md\" variant=\"info\" name=\"pin\" />\n </Flex>\n )}\n </HStack>\n </HStack>\n );\n};\n","import React from 'react';\nimport { HStack } from '@chakra-ui/react/stack';\nimport { Button } from 'components/Button/button.component';\nimport { Icon } from 'components/Icon/icon.component';\nimport { Menu, MenuProps, MenuItemProps } from 'components/Menu';\n\nexport interface ConversationCardOverlayProps {\n /** Determines if the conversation is open in an overlay. */\n isOpenInOverlay?: boolean;\n /** Callback function to be called when the conversation is opened in an overlay. */\n onOpenInOverlay: () => void;\n /** Data test id for the overlay button. */\n 'data-testid'?: string;\n}\n\nexport interface ConversationCardPinProps {\n /** Determines if the conversation is pinned. */\n isPinned?: boolean;\n /** Callback function to called when the conversation is pinned. */\n onTogglePin: (isPinned: boolean) => void;\n /** Data test id for the pin button. */\n 'data-testid'?: string;\n}\n\nexport interface ConversationCardButtonsProps {\n /** Props for the overlay button. */\n overlayProps?: ConversationCardOverlayProps;\n /** Props for the pin button. */\n pinProps?: ConversationCardPinProps;\n /** Props for the header Menu. */\n headerMenuProps?: MenuProps;\n /** Data test id for the buttons.\n * @default kibble-conversation-card-buttons\n */\n 'data-testid'?: string;\n}\n\ninterface ConversationCardButtonsComponentProps extends ConversationCardButtonsProps {\n /** Determines if the conversation is being hovered.\n * @internal\n */\n isHovering: boolean;\n /** Callback function to set the hover state.\n * @internal\n */\n setIsHovering: (isHovering: boolean) => void;\n}\n\nexport const ConversationCardButtons = ({\n overlayProps,\n pinProps,\n headerMenuProps,\n isHovering,\n setIsHovering,\n ['data-testid']: dataTestId = 'kibble-conversation-card-buttons',\n}: ConversationCardButtonsComponentProps): React.JSX.Element => {\n const { isOpenInOverlay, onOpenInOverlay, ['data-testid']: overlayDataTestId } = overlayProps || {};\n const { isPinned, onTogglePin, ['data-testid']: pinDataTestId } = pinProps || {};\n const { listProps, ['data-testid']: headerMenuDataTestId } = headerMenuProps || {};\n const pinIconName = isPinned ? 'pinCancel' : 'pin';\n\n return (\n <HStack className=\"ConversationCard__Menu\" data-testid={dataTestId} gap={1}>\n {overlayProps && (\n <Button\n className=\"ConversationCard__OverlayButton\"\n data-testid={overlayDataTestId ? overlayDataTestId : `${dataTestId}-overlay-button`}\n variant=\"secondarySubtle\"\n borderRadius=\"sm\"\n {...(isOpenInOverlay && { active: true })}\n onClick={(): void => {\n if (onOpenInOverlay) {\n onOpenInOverlay();\n }\n\n if (isHovering) {\n setIsHovering(false);\n }\n }}\n iconName=\"popup\"\n size=\"sm\"\n />\n )}\n {pinProps && (\n <Button\n className=\"ConversationCard__PinButton\"\n data-testid={pinDataTestId ? pinDataTestId : `${dataTestId}-pin-button`}\n variant={isPinned ? 'secondarySubtleDestructive' : 'secondarySubtle'}\n borderRadius=\"sm\"\n onClick={(): void => {\n if (onTogglePin) {\n onTogglePin(!isPinned);\n }\n\n if (isHovering) {\n setIsHovering(false);\n }\n }}\n iconName={pinIconName}\n size=\"sm\"\n />\n )}\n {headerMenuProps && (\n <Menu\n buttonProps={\n headerMenuProps.buttonProps || {\n variant: 'secondarySubtle',\n size: 'sm',\n borderRadius: 'sm',\n iconName: 'dotsVertical',\n hideCaret: true,\n padding: 0,\n }\n }\n closeOnSelect={false}\n lazyMount\n data-testid={headerMenuDataTestId ? headerMenuDataTestId : `${dataTestId}-menu`}\n {...headerMenuProps}\n listProps={{\n ...listProps,\n menuItems: [\n ...(pinProps\n ? [\n {\n label: `${isPinned ? 'Unpin' : 'Pin'} Conversation`,\n value: 'PinConversation',\n variant: isPinned ? 'danger' : 'default',\n leftElement: <Icon size=\"md\" variant={isPinned ? 'danger' : 'default'} name={pinIconName} />,\n onSelect: (): void => {\n if (onTogglePin) {\n onTogglePin(!isPinned);\n }\n },\n } as MenuItemProps,\n ]\n : []),\n ...(listProps?.menuItems || []),\n ],\n }}\n />\n )}\n </HStack>\n );\n};\n","import React from 'react';\nimport { Box } from '@chakra-ui/react/box';\nimport { Wrap, WrapItem } from '@chakra-ui/react/wrap';\nimport { Tag, TagProps } from 'components/Tag/tag.component';\nimport { Tooltip } from 'components/Tooltip/tooltip.component';\n\nexport type ConversationCardTag = TagProps & {\n /** Content to display in the tooltip. */\n tooltipContent?: string;\n};\n\nexport interface ConversationCardTagsProps {\n /** Tags to display in the ConversationCard. */\n tags: ConversationCardTag[];\n /** Data test id for the tags.\n * @default kibble-conversation-card-tags\n */\n 'data-testid'?: string;\n}\n\nexport const ConversationCardTags = ({\n tags,\n ['data-testid']: dataTestId = 'kibble-conversation-card-tags',\n}: ConversationCardTagsProps): React.JSX.Element => {\n return (\n <Box className=\"ConversationCard__Tags\" mt={3} data-testid={dataTestId}>\n <Wrap gap={2}>\n {tags.map((tag) => {\n const { tooltipContent, ...rest } = tag;\n let tagElement = <Tag {...rest} size=\"sm\" textTransform=\"capitalize\" />;\n\n if (tooltipContent) {\n tagElement = (\n <Tooltip label={tooltipContent} placement=\"top\">\n <Box>{tagElement}</Box>\n </Tooltip>\n );\n }\n\n return <WrapItem key={tag.label}>{tagElement}</WrapItem>;\n })}\n </Wrap>\n </Box>\n );\n};\n","import React from 'react';\nimport { Flex } from '@chakra-ui/react/flex';\nimport { Icon, IconProps } from 'components/Icon/icon.component';\nimport { Text, TextProps } from 'components/Text/text.component';\n\nexport interface ConversationCardFooterProps {\n /** Props for the Icon component. */\n iconProps?: IconProps;\n /** Content of the footer. */\n content: React.ReactNode;\n /** Props to customize the content styling. */\n contentProps?: Omit<TextProps, 'children'>;\n /** Data test id for the footer.\n * @default kibble-conversation-card-footer\n */\n 'data-testid'?: string;\n}\n\nexport const ConversationCardFooter = ({\n iconProps,\n content,\n contentProps,\n ['data-testid']: dataTestId = 'kibble-conversation-card-footer',\n}: ConversationCardFooterProps): React.JSX.Element => {\n const _content =\n typeof content === 'string' ? (\n <Text\n className=\"ConversationCard__FooterMessage\"\n data-testid={`${dataTestId}-message`}\n size=\"sm\"\n variant=\"subtle\"\n {...contentProps}\n {...(iconProps && { ml: 1 })}\n >\n {content}\n </Text>\n ) : (\n content\n );\n return (\n <Flex className=\"ConversationCard__Footer\" data-testid={dataTestId} mt={3} alignItems=\"center\">\n {iconProps && <Icon size=\"sm\" variant=\"subtle\" {...iconProps} />}\n {_content}\n </Flex>\n );\n};\n","import React from 'react';\nimport { Box } from '@chakra-ui/react/box';\nimport { HStack } from '@chakra-ui/react/stack';\nimport { Text, TextProps } from 'components/Text/text.component';\n\nexport interface ConversationCardContentProps {\n /** Content of the card. */\n content?: React.ReactNode;\n /** Props to customize the content styling. */\n contentProps?: Omit<TextProps, 'children'>;\n /** Optional Menu for the card. */\n contentMenu?: React.ReactNode;\n /** Data test id for the content.\n * @default kibble-conversation-card-content\n */\n 'data-testid'?: string;\n}\n\nexport const ConversationCardContent = ({\n contentMenu,\n content,\n contentProps,\n ['data-testid']: dataTestId = 'kibble-conversation-card-content',\n}: ConversationCardContentProps): React.JSX.Element => {\n const _content =\n typeof content === 'string' ? (\n <Text\n className=\"ConversationCard__Content\"\n data-testid={`${dataTestId}-content`}\n truncated\n size=\"sm\"\n {...contentProps}\n >\n {content}\n </Text>\n ) : (\n content\n );\n\n return (\n <HStack\n className=\"ConversationCard__ContentContainer\"\n data-testid={`${dataTestId}-container`}\n mt={3}\n justifyContent=\"space-between\"\n alignItems=\"center\"\n >\n {_content}\n {contentMenu && (\n <Box className=\"ConversationCard__ContentMenu\" data-testid={`${dataTestId}-menu`} ml=\"auto\">\n {contentMenu}\n </Box>\n )}\n </HStack>\n );\n};\n","import React, { useState } from 'react';\nimport { Box } from '@chakra-ui/react/box';\nimport { Card } from 'components/Card/card.component';\nimport { MenuProps } from 'components/Menu/menu.component';\nimport {\n ConversationCardHeader,\n ConversationCardHeaderProps,\n} from './components/ConversationCardHeader/conversationCardHeader.component';\nimport {\n ConversationCardButtons,\n ConversationCardOverlayProps,\n ConversationCardPinProps,\n} from './components/ConversationCardButtons/conversationCardButtons.component';\nimport {\n ConversationCardTag,\n ConversationCardTags,\n} from './components/ConversationCardTags/conversationCardTags.component';\nimport {\n ConversationCardFooter,\n ConversationCardFooterProps,\n} from './components/ConversationCardFooter/conversationCardFooter.component';\nimport {\n ConversationCardContent,\n ConversationCardContentProps,\n} from './components/ConversationCardContent/conversationCardContent.component';\nimport { ConversationCardAvatarGroupProps } from './components/ConversationCardAvatarGroup/conversationCardAvatarGroup.component';\n\nexport interface ConversationCardProps extends ConversationCardContentProps {\n /**\n * Used to enable hover actions on the ConversationCard.\n * @default true\n */\n allowHoverActions?: boolean;\n /** Props for the `AvatarGroup` component. */\n avatarGroupProps?: ConversationCardAvatarGroupProps;\n /** Props for the ConversationCard footer. */\n footerProps?: ConversationCardFooterProps;\n /** Props for the Menu component. See the `Menu` for more details. This component provides a default menu button if none is provided. If menuProps and pinProps are passed together, the component automatically adds a menuItem to control the pinned state. */\n headerMenuProps?: MenuProps;\n /** Props for the ConversationCard header. */\n headerProps: ConversationCardHeaderProps;\n /**\n * Used to set the active state of the ConversationCard.\n * @default false\n */\n active?: boolean;\n /** Callback function for clicking the ConversationCard. */\n onClick?: () => void;\n /** Props to show and configure the conversation overlay button. If not passed, the overlay button won't be shown. */\n overlayProps?: ConversationCardOverlayProps;\n /** Props for the pin functionality. If not passed, pin functionality won't be shown. */\n pinProps?: ConversationCardPinProps;\n /**\n * Used to preserve the position of the ConversationCard in a list with infinite scrolling.\n * @default false\n */\n shouldPreservePosition?: boolean;\n /**\n * Used to show the unread messages indicator.\n * @default false\n */\n showNotificationIndicator?: boolean;\n /** The tags to be displayed in the ConversationCard. See the `Tag` for more information. Additionally, you can pass in a tooltipContent to customize what is shown in the tooltip. */\n tags?: ConversationCardTag[];\n /** Data test id for the conversation card.\n * @default kibble-conversation-card\n */\n 'data-testid'?: string;\n}\n\nexport const ConversationCard = ({\n allowHoverActions = true,\n avatarGroupProps,\n content,\n contentProps,\n contentMenu,\n footerProps,\n headerMenuProps,\n headerProps,\n active,\n onClick,\n overlayProps,\n pinProps,\n shouldPreservePosition = false,\n showNotificationIndicator,\n tags,\n ['data-testid']: dataTestId = 'kibble-conversation-card',\n}: ConversationCardProps): React.JSX.Element => {\n const { isPinned } = pinProps || {};\n const [isHovering, setIsHovering] = useState(false);\n\n return (\n <Card\n className=\"ConversationCard\"\n id=\"conversation-card-item\"\n data-testid={dataTestId}\n interactive\n active={active}\n size=\"sm\"\n fullWidth\n onClick={(): void => {\n if (onClick) {\n onClick();\n }\n }}\n bg={showNotificationIndicator || active || isHovering ? 'background.default' : 'background.subtle'}\n onMouseEnter={(): void => {\n if (allowHoverActions) {\n setIsHovering(true);\n }\n }}\n onMouseLeave={(): void => setIsHovering(false)}\n pos=\"relative\"\n css={{ overflowAnchor: shouldPreservePosition ? 'auto' : 'none' }}\n >\n {isHovering && (\n <Box\n className=\"ConversationCard__Button--Container\"\n data-testid={`${dataTestId}-button-container`}\n pos=\"absolute\"\n top={2}\n zIndex=\"banner\"\n right={2}\n bg=\"background\"\n borderRadius=\"md\"\n onClick={(e): void => e.stopPropagation()}\n >\n <ConversationCardButtons\n overlayProps={overlayProps}\n pinProps={pinProps}\n headerMenuProps={headerMenuProps}\n isHovering={isHovering}\n setIsHovering={setIsHovering}\n />\n </Box>\n )}\n <ConversationCardHeader\n avatarGroupProps={avatarGroupProps}\n isHoveringCard={isHovering}\n isCardPinned={isPinned}\n showNotificationIndicator={showNotificationIndicator}\n {...headerProps}\n />\n <ConversationCardContent content={content} contentProps={contentProps} contentMenu={contentMenu} />\n {!!tags?.length && <ConversationCardTags tags={tags} />}\n {footerProps && <ConversationCardFooter {...footerProps} />}\n </Card>\n );\n};\n"],"names":["ConversationCardAvatarGroup","avatars","max","onAvatarGroupClick","tooltipLabel","dataTestId","jsx","Tooltip","Flex","Avatar","e","Fragment","avatar","ConversationCardHeader","avatarGroupProps","timestampProps","isHoveringCard","isCardPinned","title","showNotificationIndicator","subtitle","jsxs","HStack","VStack","Heading","Text","Timestamp","Box","NotificationCounter","Icon","ConversationCardButtons","overlayProps","pinProps","headerMenuProps","isHovering","setIsHovering","isOpenInOverlay","onOpenInOverlay","overlayDataTestId","isPinned","onTogglePin","pinDataTestId","listProps","headerMenuDataTestId","pinIconName","Button","Menu","ConversationCardTags","tags","Wrap","tag","tooltipContent","rest","tagElement","Tag","WrapItem","ConversationCardFooter","iconProps","content","contentProps","_content","ConversationCardContent","contentMenu","ConversationCard","allowHoverActions","footerProps","headerProps","active","onClick","shouldPreservePosition","useState","Card"],"mappings":"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"}
1
+ {"version":3,"file":"conversationCard.component-DByFo4jj.js","sources":["../../src/components/ConversationCard/components/ConversationCardAvatarGroup/conversationCardAvatarGroup.component.tsx","../../src/components/ConversationCard/components/ConversationCardHeader/conversationCardHeader.component.tsx","../../src/components/ConversationCard/components/ConversationCardButtons/conversationCardButtons.component.tsx","../../src/components/ConversationCard/components/ConversationCardTags/conversationCardTags.component.tsx","../../src/components/ConversationCard/components/ConversationCardFooter/conversationCardFooter.component.tsx","../../src/components/ConversationCard/components/ConversationCardContent/conversationCardContent.component.tsx","../../src/components/ConversationCard/conversationCard.component.tsx"],"sourcesContent":["import React from 'react';\nimport { Flex } from '@chakra-ui/react/flex';\nimport { Avatar } from 'components/Avatar/avatar.component';\nimport { Tooltip } from 'components/Tooltip/tooltip.component';\n\nexport interface ConversationCardAvatarGroupProps {\n /** Avatars to display in the group. */\n avatars: React.ReactNode[];\n /** Maximum number of avatars to display.\n * @default 1\n */\n max?: number;\n /** Callback function to be called when the avatar group is clicked. */\n onAvatarGroupClick?: (e: React.MouseEvent<HTMLSpanElement, MouseEvent>) => void;\n /** Label for the tooltip. */\n tooltipLabel?: string;\n /** Data test id for the avatar group.\n * @default kibble-conversation-card-avatar-group\n */\n 'data-testid'?: string;\n}\n\nexport const ConversationCardAvatarGroup = ({\n avatars,\n max = 1,\n onAvatarGroupClick,\n tooltipLabel,\n ['data-testid']: dataTestId = 'kibble-conversation-card-avatar-group',\n}: ConversationCardAvatarGroupProps): React.JSX.Element => {\n return (\n <Tooltip label={tooltipLabel || ''} disabled={!tooltipLabel?.length}>\n <Flex\n className=\"ConversationCard__AvatarGroup\"\n data-testid={dataTestId}\n alignItems=\"flex-start\"\n justifyContent=\"flex-start\"\n >\n {max && avatars.length > max ? (\n <Avatar\n onClick={(e): void => {\n e.stopPropagation();\n if (onAvatarGroupClick) {\n onAvatarGroupClick(e);\n }\n }}\n cursor=\"pointer\"\n name={avatars.length.toString()}\n showTooltip={false}\n />\n ) : (\n <>{avatars.map((avatar) => avatar)}</>\n )}\n </Flex>\n </Tooltip>\n );\n};\n","import React from 'react';\nimport { Box } from '@chakra-ui/react/box';\nimport { Flex } from '@chakra-ui/react/flex';\nimport { HStack, VStack } from '@chakra-ui/react/stack';\nimport { Timestamp, TimestampProps } from 'components/Timestamp/timestamp.component';\nimport { NotificationCounter } from 'components/NotificationCounter/notificationCounter.component';\nimport { Icon } from 'components/Icon/icon.component';\nimport { Heading } from 'components/Heading/heading.component';\nimport { Text } from 'components/Text/text.component';\nimport {\n ConversationCardAvatarGroup,\n ConversationCardAvatarGroupProps,\n} from '../ConversationCardAvatarGroup/conversationCardAvatarGroup.component';\n\nexport interface ConversationCardHeaderProps {\n /** Props for the avatar group. */\n avatarGroupProps?: ConversationCardAvatarGroupProps;\n /** If true, the notification indicator will be displayed. */\n showNotificationIndicator?: boolean;\n /** Determines if the card is pinned. */\n isCardPinned?: boolean;\n /** Determines if the card is being hovered. */\n isHoveringCard?: boolean;\n /** Subtitle of the card. */\n subtitle?: string;\n /** Props for the timestamp. */\n timestampProps: TimestampProps;\n /** Title of the card. */\n title: string;\n /** Data test id for the header.\n * @default kibble-conversation-card-header\n */\n 'data-testid'?: string;\n}\n\nexport const ConversationCardHeader = ({\n avatarGroupProps,\n timestampProps,\n isHoveringCard,\n isCardPinned,\n title,\n showNotificationIndicator,\n subtitle,\n ['data-testid']: dataTestId = 'kibble-conversation-card-header',\n}: ConversationCardHeaderProps): React.JSX.Element => {\n return (\n <HStack className=\"ConversationCard__Header\" data-testid={dataTestId} justify=\"space-between\" align=\"flex-start\">\n <HStack className=\"ConversationCard__Header--Left\" data-testid={`${dataTestId}-left`} cursor=\"pointer\">\n {avatarGroupProps && (\n <ConversationCardAvatarGroup {...avatarGroupProps} tooltipLabel={avatarGroupProps?.tooltipLabel || title} />\n )}\n <VStack\n className=\"ConversationCard__HeaderText\"\n data-testid={`${dataTestId}-text`}\n justify=\"center\"\n align=\"left\"\n gap=\"0\"\n >\n <Heading\n className=\"ConversationCard__HeaderText--Title\"\n data-testid={`${dataTestId}-title`}\n size=\"sm\"\n truncated\n >\n {title}\n </Heading>\n {subtitle && (\n <Text\n className=\"ConversationCard__HeaderText--Subtitle\"\n data-testid={`${dataTestId}-subtitle`}\n size=\"sm\"\n variant=\"subtle\"\n truncated\n >\n {subtitle}\n </Text>\n )}\n </VStack>\n </HStack>\n <HStack\n className=\"ConversationCard__Header--Right\"\n data-testid={`${dataTestId}-right`}\n visibility={isHoveringCard ? 'hidden' : 'visible'}\n align=\"center\"\n gap={1}\n >\n <Timestamp {...timestampProps} />\n {showNotificationIndicator && (\n <Box\n as=\"span\"\n className=\"ConversationCard__HeaderNotificationCounter\"\n data-testid={`${dataTestId}-unread-indicator`}\n >\n <NotificationCounter size=\"xs\" />\n </Box>\n )}\n {isCardPinned && (\n <Flex data-testid={`${dataTestId}-pinned-icon`}>\n <Icon size=\"md\" variant=\"info\" name=\"pin\" />\n </Flex>\n )}\n </HStack>\n </HStack>\n );\n};\n","import React from 'react';\nimport { HStack } from '@chakra-ui/react/stack';\nimport { Button } from 'components/Button/button.component';\nimport { Icon } from 'components/Icon/icon.component';\nimport { Menu, MenuProps, MenuItemProps } from 'components/Menu';\n\nexport interface ConversationCardOverlayProps {\n /** Determines if the conversation is open in an overlay. */\n isOpenInOverlay?: boolean;\n /** Callback function to be called when the conversation is opened in an overlay. */\n onOpenInOverlay: () => void;\n /** Data test id for the overlay button. */\n 'data-testid'?: string;\n}\n\nexport interface ConversationCardPinProps {\n /** Determines if the conversation is pinned. */\n isPinned?: boolean;\n /** Callback function to called when the conversation is pinned. */\n onTogglePin: (isPinned: boolean) => void;\n /** Data test id for the pin button. */\n 'data-testid'?: string;\n}\n\nexport interface ConversationCardButtonsProps {\n /** Props for the overlay button. */\n overlayProps?: ConversationCardOverlayProps;\n /** Props for the pin button. */\n pinProps?: ConversationCardPinProps;\n /** Props for the header Menu. */\n headerMenuProps?: MenuProps;\n /** Data test id for the buttons.\n * @default kibble-conversation-card-buttons\n */\n 'data-testid'?: string;\n}\n\ninterface ConversationCardButtonsComponentProps extends ConversationCardButtonsProps {\n /** Determines if the conversation is being hovered.\n * @internal\n */\n isHovering: boolean;\n /** Callback function to set the hover state.\n * @internal\n */\n setIsHovering: (isHovering: boolean) => void;\n}\n\nexport const ConversationCardButtons = ({\n overlayProps,\n pinProps,\n headerMenuProps,\n isHovering,\n setIsHovering,\n ['data-testid']: dataTestId = 'kibble-conversation-card-buttons',\n}: ConversationCardButtonsComponentProps): React.JSX.Element => {\n const { isOpenInOverlay, onOpenInOverlay, ['data-testid']: overlayDataTestId } = overlayProps || {};\n const { isPinned, onTogglePin, ['data-testid']: pinDataTestId } = pinProps || {};\n const { listProps, ['data-testid']: headerMenuDataTestId } = headerMenuProps || {};\n const pinIconName = isPinned ? 'pinCancel' : 'pin';\n\n return (\n <HStack className=\"ConversationCard__Menu\" data-testid={dataTestId} gap={1}>\n {overlayProps && (\n <Button\n className=\"ConversationCard__OverlayButton\"\n data-testid={overlayDataTestId ? overlayDataTestId : `${dataTestId}-overlay-button`}\n variant=\"secondarySubtle\"\n borderRadius=\"sm\"\n {...(isOpenInOverlay && { active: true })}\n onClick={(): void => {\n if (onOpenInOverlay) {\n onOpenInOverlay();\n }\n\n if (isHovering) {\n setIsHovering(false);\n }\n }}\n iconName=\"popup\"\n size=\"sm\"\n />\n )}\n {pinProps && (\n <Button\n className=\"ConversationCard__PinButton\"\n data-testid={pinDataTestId ? pinDataTestId : `${dataTestId}-pin-button`}\n variant={isPinned ? 'secondarySubtleDestructive' : 'secondarySubtle'}\n borderRadius=\"sm\"\n onClick={(): void => {\n if (onTogglePin) {\n onTogglePin(!isPinned);\n }\n\n if (isHovering) {\n setIsHovering(false);\n }\n }}\n iconName={pinIconName}\n size=\"sm\"\n />\n )}\n {headerMenuProps && (\n <Menu\n buttonProps={\n headerMenuProps.buttonProps || {\n variant: 'secondarySubtle',\n size: 'sm',\n borderRadius: 'sm',\n iconName: 'dotsVertical',\n hideCaret: true,\n padding: 0,\n }\n }\n closeOnSelect={false}\n lazyMount\n data-testid={headerMenuDataTestId ? headerMenuDataTestId : `${dataTestId}-menu`}\n {...headerMenuProps}\n listProps={{\n ...listProps,\n menuItems: [\n ...(pinProps\n ? [\n {\n label: `${isPinned ? 'Unpin' : 'Pin'} Conversation`,\n value: 'PinConversation',\n variant: isPinned ? 'danger' : 'default',\n leftElement: <Icon size=\"md\" variant={isPinned ? 'danger' : 'default'} name={pinIconName} />,\n onSelect: (): void => {\n if (onTogglePin) {\n onTogglePin(!isPinned);\n }\n },\n } as MenuItemProps,\n ]\n : []),\n ...(listProps?.menuItems || []),\n ],\n }}\n />\n )}\n </HStack>\n );\n};\n","import React from 'react';\nimport { Box } from '@chakra-ui/react/box';\nimport { Wrap, WrapItem } from '@chakra-ui/react/wrap';\nimport { Tag, TagProps } from 'components/Tag/tag.component';\nimport { Tooltip } from 'components/Tooltip/tooltip.component';\n\nexport type ConversationCardTag = TagProps & {\n /** Content to display in the tooltip. */\n tooltipContent?: string;\n};\n\nexport interface ConversationCardTagsProps {\n /** Tags to display in the ConversationCard. */\n tags: ConversationCardTag[];\n /** Data test id for the tags.\n * @default kibble-conversation-card-tags\n */\n 'data-testid'?: string;\n}\n\nexport const ConversationCardTags = ({\n tags,\n ['data-testid']: dataTestId = 'kibble-conversation-card-tags',\n}: ConversationCardTagsProps): React.JSX.Element => {\n return (\n <Box className=\"ConversationCard__Tags\" mt={3} data-testid={dataTestId}>\n <Wrap gap={2}>\n {tags.map((tag) => {\n const { tooltipContent, ...rest } = tag;\n let tagElement = <Tag {...rest} size=\"sm\" textTransform=\"capitalize\" />;\n\n if (tooltipContent) {\n tagElement = (\n <Tooltip label={tooltipContent} placement=\"top\">\n <Box>{tagElement}</Box>\n </Tooltip>\n );\n }\n\n return <WrapItem key={tag.label}>{tagElement}</WrapItem>;\n })}\n </Wrap>\n </Box>\n );\n};\n","import React from 'react';\nimport { Flex } from '@chakra-ui/react/flex';\nimport { Icon, IconProps } from 'components/Icon/icon.component';\nimport { Text, TextProps } from 'components/Text/text.component';\n\nexport interface ConversationCardFooterProps {\n /** Props for the Icon component. */\n iconProps?: IconProps;\n /** Content of the footer. */\n content: React.ReactNode;\n /** Props to customize the content styling. */\n contentProps?: Omit<TextProps, 'children'>;\n /** Data test id for the footer.\n * @default kibble-conversation-card-footer\n */\n 'data-testid'?: string;\n}\n\nexport const ConversationCardFooter = ({\n iconProps,\n content,\n contentProps,\n ['data-testid']: dataTestId = 'kibble-conversation-card-footer',\n}: ConversationCardFooterProps): React.JSX.Element => {\n const _content =\n typeof content === 'string' ? (\n <Text\n className=\"ConversationCard__FooterMessage\"\n data-testid={`${dataTestId}-message`}\n size=\"sm\"\n variant=\"subtle\"\n {...contentProps}\n {...(iconProps && { ml: 1 })}\n >\n {content}\n </Text>\n ) : (\n content\n );\n return (\n <Flex className=\"ConversationCard__Footer\" data-testid={dataTestId} mt={3} alignItems=\"center\">\n {iconProps && <Icon size=\"sm\" variant=\"subtle\" {...iconProps} />}\n {_content}\n </Flex>\n );\n};\n","import React from 'react';\nimport { Box } from '@chakra-ui/react/box';\nimport { HStack } from '@chakra-ui/react/stack';\nimport { Text, TextProps } from 'components/Text/text.component';\n\nexport interface ConversationCardContentProps {\n /** Content of the card. */\n content?: React.ReactNode;\n /** Props to customize the content styling. */\n contentProps?: Omit<TextProps, 'children'>;\n /** Optional Menu for the card. */\n contentMenu?: React.ReactNode;\n /** Data test id for the content.\n * @default kibble-conversation-card-content\n */\n 'data-testid'?: string;\n}\n\nexport const ConversationCardContent = ({\n contentMenu,\n content,\n contentProps,\n ['data-testid']: dataTestId = 'kibble-conversation-card-content',\n}: ConversationCardContentProps): React.JSX.Element => {\n const _content =\n typeof content === 'string' ? (\n <Text\n className=\"ConversationCard__Content\"\n data-testid={`${dataTestId}-content`}\n truncated\n size=\"sm\"\n {...contentProps}\n >\n {content}\n </Text>\n ) : (\n content\n );\n\n return (\n <HStack\n className=\"ConversationCard__ContentContainer\"\n data-testid={`${dataTestId}-container`}\n mt={3}\n justifyContent=\"space-between\"\n alignItems=\"center\"\n >\n {_content}\n {contentMenu && (\n <Box className=\"ConversationCard__ContentMenu\" data-testid={`${dataTestId}-menu`} ml=\"auto\">\n {contentMenu}\n </Box>\n )}\n </HStack>\n );\n};\n","import React, { useState } from 'react';\nimport { Box } from '@chakra-ui/react/box';\nimport { Card } from 'components/Card/card.component';\nimport { MenuProps } from 'components/Menu/menu.component';\nimport {\n ConversationCardHeader,\n ConversationCardHeaderProps,\n} from './components/ConversationCardHeader/conversationCardHeader.component';\nimport {\n ConversationCardButtons,\n ConversationCardOverlayProps,\n ConversationCardPinProps,\n} from './components/ConversationCardButtons/conversationCardButtons.component';\nimport {\n ConversationCardTag,\n ConversationCardTags,\n} from './components/ConversationCardTags/conversationCardTags.component';\nimport {\n ConversationCardFooter,\n ConversationCardFooterProps,\n} from './components/ConversationCardFooter/conversationCardFooter.component';\nimport {\n ConversationCardContent,\n ConversationCardContentProps,\n} from './components/ConversationCardContent/conversationCardContent.component';\nimport { ConversationCardAvatarGroupProps } from './components/ConversationCardAvatarGroup/conversationCardAvatarGroup.component';\n\nexport interface ConversationCardProps extends ConversationCardContentProps {\n /**\n * Used to enable hover actions on the ConversationCard.\n * @default true\n */\n allowHoverActions?: boolean;\n /** Props for the `AvatarGroup` component. */\n avatarGroupProps?: ConversationCardAvatarGroupProps;\n /** Props for the ConversationCard footer. */\n footerProps?: ConversationCardFooterProps;\n /** Props for the Menu component. See the `Menu` for more details. This component provides a default menu button if none is provided. If menuProps and pinProps are passed together, the component automatically adds a menuItem to control the pinned state. */\n headerMenuProps?: MenuProps;\n /** Props for the ConversationCard header. */\n headerProps: ConversationCardHeaderProps;\n /**\n * Used to set the active state of the ConversationCard.\n * @default false\n */\n active?: boolean;\n /** Callback function for clicking the ConversationCard. */\n onClick?: () => void;\n /** Props to show and configure the conversation overlay button. If not passed, the overlay button won't be shown. */\n overlayProps?: ConversationCardOverlayProps;\n /** Props for the pin functionality. If not passed, pin functionality won't be shown. */\n pinProps?: ConversationCardPinProps;\n /**\n * Used to preserve the position of the ConversationCard in a list with infinite scrolling.\n * @default false\n */\n shouldPreservePosition?: boolean;\n /**\n * Used to show the unread messages indicator.\n * @default false\n */\n showNotificationIndicator?: boolean;\n /** The tags to be displayed in the ConversationCard. See the `Tag` for more information. Additionally, you can pass in a tooltipContent to customize what is shown in the tooltip. */\n tags?: ConversationCardTag[];\n /** Data test id for the conversation card.\n * @default kibble-conversation-card\n */\n 'data-testid'?: string;\n}\n\nexport const ConversationCard = ({\n allowHoverActions = true,\n avatarGroupProps,\n content,\n contentProps,\n contentMenu,\n footerProps,\n headerMenuProps,\n headerProps,\n active,\n onClick,\n overlayProps,\n pinProps,\n shouldPreservePosition = false,\n showNotificationIndicator,\n tags,\n ['data-testid']: dataTestId = 'kibble-conversation-card',\n}: ConversationCardProps): React.JSX.Element => {\n const { isPinned } = pinProps || {};\n const [isHovering, setIsHovering] = useState(false);\n\n return (\n <Card\n className=\"ConversationCard\"\n id=\"conversation-card-item\"\n data-testid={dataTestId}\n interactive\n active={active}\n size=\"sm\"\n fullWidth\n onClick={(): void => {\n if (onClick) {\n onClick();\n }\n }}\n bg={showNotificationIndicator || active || isHovering ? 'background.default' : 'background.subtle'}\n onMouseEnter={(): void => {\n if (allowHoverActions) {\n setIsHovering(true);\n }\n }}\n onMouseLeave={(): void => setIsHovering(false)}\n pos=\"relative\"\n css={{ overflowAnchor: shouldPreservePosition ? 'auto' : 'none' }}\n >\n {isHovering && (\n <Box\n className=\"ConversationCard__Button--Container\"\n data-testid={`${dataTestId}-button-container`}\n pos=\"absolute\"\n top={2}\n zIndex=\"banner\"\n right={2}\n bg=\"background\"\n borderRadius=\"md\"\n onClick={(e): void => e.stopPropagation()}\n >\n <ConversationCardButtons\n overlayProps={overlayProps}\n pinProps={pinProps}\n headerMenuProps={headerMenuProps}\n isHovering={isHovering}\n setIsHovering={setIsHovering}\n />\n </Box>\n )}\n <ConversationCardHeader\n avatarGroupProps={avatarGroupProps}\n isHoveringCard={isHovering}\n isCardPinned={isPinned}\n showNotificationIndicator={showNotificationIndicator}\n {...headerProps}\n />\n <ConversationCardContent content={content} contentProps={contentProps} contentMenu={contentMenu} />\n {!!tags?.length && <ConversationCardTags tags={tags} />}\n {footerProps && <ConversationCardFooter {...footerProps} />}\n </Card>\n );\n};\n"],"names":["ConversationCardAvatarGroup","avatars","max","onAvatarGroupClick","tooltipLabel","dataTestId","jsx","Tooltip","Flex","Avatar","e","Fragment","avatar","ConversationCardHeader","avatarGroupProps","timestampProps","isHoveringCard","isCardPinned","title","showNotificationIndicator","subtitle","jsxs","HStack","VStack","Heading","Text","Timestamp","Box","NotificationCounter","Icon","ConversationCardButtons","overlayProps","pinProps","headerMenuProps","isHovering","setIsHovering","isOpenInOverlay","onOpenInOverlay","overlayDataTestId","isPinned","onTogglePin","pinDataTestId","listProps","headerMenuDataTestId","pinIconName","Button","Menu","ConversationCardTags","tags","Wrap","tag","tooltipContent","rest","tagElement","Tag","WrapItem","ConversationCardFooter","iconProps","content","contentProps","_content","ConversationCardContent","contentMenu","ConversationCard","allowHoverActions","footerProps","headerProps","active","onClick","shouldPreservePosition","useState","Card"],"mappings":";;;;;;;;;;;;;;;;;;AAsBO,MAAMA,IAA8B,CAAC;AAAA,EAC1C,SAAAC;AAAA,EACA,KAAAC,IAAM;AAAA,EACN,oBAAAC;AAAA,EACA,cAAAC;AAAA,EACA,CAAC,gBAAgBC,IAAa;AAChC,MAEIC,gBAAAA,MAACC,KAAQ,OAAOH,KAAgB,IAAI,UAAU,CAACA,GAAc,QAC3D,UAAAE,gBAAAA,EAAA;AAAA,EAACE;AAAA,EAAA;AAAA,IACC,WAAU;AAAA,IACV,eAAaH;AAAA,IACb,YAAW;AAAA,IACX,gBAAe;AAAA,IAEd,UAAAH,KAAOD,EAAQ,SAASC,IACvBI,gBAAAA,EAAA;AAAA,MAACG;AAAA,MAAA;AAAA,QACC,SAAS,CAACC,MAAY;AACpB,UAAAA,EAAE,gBAAgB,GACdP,KACFA,EAAmBO,CAAC;AAAA,QAExB;AAAA,QACA,QAAO;AAAA,QACP,MAAMT,EAAQ,OAAO,SAAS;AAAA,QAC9B,aAAa;AAAA,MAAA;AAAA,IAAA,IAGZK,gBAAAA,EAAA,IAAAK,EAAA,UAAA,EAAA,UAAAV,EAAQ,IAAI,CAACW,MAAWA,CAAM,EAAE,CAAA;AAAA,EAAA;AAAA,GAGzC,GClBSC,IAAyB,CAAC;AAAA,EACrC,kBAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,cAAAC;AAAA,EACA,OAAAC;AAAA,EACA,2BAAAC;AAAA,EACA,UAAAC;AAAA,EACA,CAAC,gBAAgBf,IAAa;AAChC,MAEIgB,gBAAAA,OAACC,KAAO,WAAU,4BAA2B,eAAajB,GAAY,SAAQ,iBAAgB,OAAM,cAClG,UAAA;AAAA,EAACgB,gBAAAA,EAAAA,KAAAC,GAAA,EAAO,WAAU,kCAAiC,eAAa,GAAGjB,CAAU,SAAS,QAAO,WAC1F,UAAA;AAAA,IAAAS,2BACEd,GAA6B,EAAA,GAAGc,GAAkB,cAAcA,GAAkB,gBAAgBI,GAAO;AAAA,IAE5GG,gBAAAA,EAAA;AAAA,MAACE;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,eAAa,GAAGlB,CAAU;AAAA,QAC1B,SAAQ;AAAA,QACR,OAAM;AAAA,QACN,KAAI;AAAA,QAEJ,UAAA;AAAA,UAAAC,gBAAAA,EAAA;AAAA,YAACkB;AAAAA,YAAA;AAAA,cACC,WAAU;AAAA,cACV,eAAa,GAAGnB,CAAU;AAAA,cAC1B,MAAK;AAAA,cACL,WAAS;AAAA,cAER,UAAAa;AAAA,YAAA;AAAA,UACH;AAAA,UACCE,KACCd,gBAAAA,EAAA;AAAA,YAACmB;AAAAA,YAAA;AAAA,cACC,WAAU;AAAA,cACV,eAAa,GAAGpB,CAAU;AAAA,cAC1B,MAAK;AAAA,cACL,SAAQ;AAAA,cACR,WAAS;AAAA,cAER,UAAAe;AAAA,YAAA;AAAA,UAAA;AAAA,QACH;AAAA,MAAA;AAAA,IAAA;AAAA,EAEJ,GACF;AAAA,EACAC,gBAAAA,EAAA;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,eAAa,GAAGjB,CAAU;AAAA,MAC1B,YAAYW,IAAiB,WAAW;AAAA,MACxC,OAAM;AAAA,MACN,KAAK;AAAA,MAEL,UAAA;AAAA,QAACV,gBAAAA,EAAAA,IAAAoB,GAAA,EAAW,GAAGX,GAAgB;AAAA,QAC9BI,KACCb,gBAAAA,EAAA;AAAA,UAACqB;AAAA,UAAA;AAAA,YACC,IAAG;AAAA,YACH,WAAU;AAAA,YACV,eAAa,GAAGtB,CAAU;AAAA,YAE1B,UAAAC,gBAAAA,EAAAA,IAACsB,GAAoB,EAAA,MAAK,KAAK,CAAA;AAAA,UAAA;AAAA,QACjC;AAAA,QAEDX,KACCX,gBAAAA,EAAAA,IAACE,GAAK,EAAA,eAAa,GAAGH,CAAU,gBAC9B,UAACC,gBAAAA,EAAA,IAAAuB,GAAA,EAAK,MAAK,MAAK,SAAQ,QAAO,MAAK,OAAM,EAC5C,CAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAEJ,GACF,GCtDSC,IAA0B,CAAC;AAAA,EACtC,cAAAC;AAAA,EACA,UAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,YAAAC;AAAA,EACA,eAAAC;AAAA,EACA,CAAC,gBAAgB9B,IAAa;AAChC,MAAgE;AACxD,QAAA,EAAE,iBAAA+B,GAAiB,iBAAAC,GAAiB,CAAC,aAAa,GAAGC,EAAA,IAAsBP,KAAgB,CAAC,GAC5F,EAAE,UAAAQ,GAAU,aAAAC,GAAa,CAAC,aAAa,GAAGC,EAAA,IAAkBT,KAAY,CAAC,GACzE,EAAE,WAAAU,GAAW,CAAC,aAAa,GAAGC,EAAqB,IAAIV,KAAmB,CAAC,GAC3EW,IAAcL,IAAW,cAAc;AAE7C,gCACGjB,GAAO,EAAA,WAAU,0BAAyB,eAAajB,GAAY,KAAK,GACtE,UAAA;AAAA,IACC0B,KAAAzB,gBAAAA,EAAA;AAAA,MAACuC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,eAAaP,KAAwC,GAAGjC,CAAU;AAAA,QAClE,SAAQ;AAAA,QACR,cAAa;AAAA,QACZ,GAAI+B,KAAmB,EAAE,QAAQ,GAAK;AAAA,QACvC,SAAS,MAAY;AACnB,UAAIC,KACcA,EAAA,GAGdH,KACFC,EAAc,EAAK;AAAA,QAEvB;AAAA,QACA,UAAS;AAAA,QACT,MAAK;AAAA,MAAA;AAAA,IACP;AAAA,IAEDH,KACC1B,gBAAAA,EAAA;AAAA,MAACuC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,eAAaJ,KAAgC,GAAGpC,CAAU;AAAA,QAC1D,SAASkC,IAAW,+BAA+B;AAAA,QACnD,cAAa;AAAA,QACb,SAAS,MAAY;AACnB,UAAIC,KACFA,EAAY,CAACD,CAAQ,GAGnBL,KACFC,EAAc,EAAK;AAAA,QAEvB;AAAA,QACA,UAAUS;AAAA,QACV,MAAK;AAAA,MAAA;AAAA,IACP;AAAA,IAEDX,KACC3B,gBAAAA,EAAA;AAAA,MAACwC;AAAA,MAAA;AAAA,QACC,aACEb,EAAgB,eAAe;AAAA,UAC7B,SAAS;AAAA,UACT,MAAM;AAAA,UACN,cAAc;AAAA,UACd,UAAU;AAAA,UACV,WAAW;AAAA,UACX,SAAS;AAAA,QACX;AAAA,QAEF,eAAe;AAAA,QACf,WAAS;AAAA,QACT,eAAaU,KAA8C,GAAGtC,CAAU;AAAA,QACvE,GAAG4B;AAAA,QACJ,WAAW;AAAA,UACT,GAAGS;AAAA,UACH,WAAW;AAAA,YACT,GAAIV,IACA;AAAA,cACE;AAAA,gBACE,OAAO,GAAGO,IAAW,UAAU,KAAK;AAAA,gBACpC,OAAO;AAAA,gBACP,SAASA,IAAW,WAAW;AAAA,gBAC/B,aAAcjC,gBAAAA,EAAA,IAAAuB,GAAA,EAAK,MAAK,MAAK,SAASU,IAAW,WAAW,WAAW,MAAMK,EAAa,CAAA;AAAA,gBAC1F,UAAU,MAAY;AACpB,kBAAIJ,KACFA,EAAY,CAACD,CAAQ;AAAA,gBACvB;AAAA,cACF;AAAA,YACF,IAEF,CAAC;AAAA,YACL,GAAIG,GAAW,aAAa,CAAA;AAAA,UAAC;AAAA,QAC/B;AAAA,MACF;AAAA,IAAA;AAAA,EACF,GAEJ;AAEJ,GC3HaK,IAAuB,CAAC;AAAA,EACnC,MAAAC;AAAA,EACA,CAAC,gBAAgB3C,IAAa;AAChC,MAEKC,gBAAAA,EAAA,IAAAqB,GAAA,EAAI,WAAU,0BAAyB,IAAI,GAAG,eAAatB,GAC1D,UAAAC,gBAAAA,MAAC2C,KAAK,KAAK,GACR,UAAKD,EAAA,IAAI,CAACE,MAAQ;AACjB,QAAM,EAAE,gBAAAC,GAAgB,GAAGC,EAAA,IAASF;AAChC,MAAAG,0BAAcC,GAAK,EAAA,GAAGF,GAAM,MAAK,MAAK,eAAc,cAAa;AAErE,SAAID,MAEAE,IAAA/C,gBAAAA,EAAA,IAACC,KAAQ,OAAO4C,GAAgB,WAAU,OACxC,UAAA7C,gBAAAA,EAAAA,IAACqB,GAAK,EAAA,UAAA0B,EAAA,CAAW,EACnB,CAAA,IAII/C,gBAAAA,EAAAA,IAAAiD,GAAA,EAA0B,UAAZF,EAAA,GAAAH,EAAI,KAAmB;AAAA,CAC9C,GACH,EACF,CAAA,GCxBSM,IAAyB,CAAC;AAAA,EACrC,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,cAAAC;AAAA,EACA,CAAC,gBAAgBtD,IAAa;AAChC,MAAsD;AAC9C,QAAAuD,IACJ,OAAOF,KAAY,WACjBpD,gBAAAA,EAAA;AAAA,IAACmB;AAAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,eAAa,GAAGpB,CAAU;AAAA,MAC1B,MAAK;AAAA,MACL,SAAQ;AAAA,MACP,GAAGsD;AAAA,MACH,GAAIF,KAAa,EAAE,IAAI,EAAE;AAAA,MAEzB,UAAAC;AAAA,IAAA;AAAA,EAAA,IAGHA;AAGF,SAAArC,gBAAAA,OAACb,KAAK,WAAU,4BAA2B,eAAaH,GAAY,IAAI,GAAG,YAAW,UACnF,UAAA;AAAA,IAAAoD,2BAAc5B,GAAK,EAAA,MAAK,MAAK,SAAQ,UAAU,GAAG4B,GAAW;AAAA,IAC7DG;AAAA,EAAA,GACH;AAEJ,GC3BaC,IAA0B,CAAC;AAAA,EACtC,aAAAC;AAAA,EACA,SAAAJ;AAAA,EACA,cAAAC;AAAA,EACA,CAAC,gBAAgBtD,IAAa;AAChC,MAAuD;AAC/C,QAAAuD,IACJ,OAAOF,KAAY,WACjBpD,gBAAAA,EAAA;AAAA,IAACmB;AAAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,eAAa,GAAGpB,CAAU;AAAA,MAC1B,WAAS;AAAA,MACT,MAAK;AAAA,MACJ,GAAGsD;AAAA,MAEH,UAAAD;AAAA,IAAA;AAAA,EAAA,IAGHA;AAIF,SAAArC,gBAAAA,EAAA;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,eAAa,GAAGjB,CAAU;AAAA,MAC1B,IAAI;AAAA,MACJ,gBAAe;AAAA,MACf,YAAW;AAAA,MAEV,UAAA;AAAA,QAAAuD;AAAA,QACAE,KACExD,gBAAAA,EAAAA,IAAAqB,GAAA,EAAI,WAAU,iCAAgC,eAAa,GAAGtB,CAAU,SAAS,IAAG,QAClF,UACHyD,EAAA,CAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAEJ;AAEJ,GCeaC,KAAmB,CAAC;AAAA,EAC/B,mBAAAC,IAAoB;AAAA,EACpB,kBAAAlD;AAAA,EACA,SAAA4C;AAAA,EACA,cAAAC;AAAA,EACA,aAAAG;AAAA,EACA,aAAAG;AAAA,EACA,iBAAAhC;AAAA,EACA,aAAAiC;AAAA,EACA,QAAAC;AAAA,EACA,SAAAC;AAAA,EACA,cAAArC;AAAA,EACA,UAAAC;AAAA,EACA,wBAAAqC,IAAyB;AAAA,EACzB,2BAAAlD;AAAA,EACA,MAAA6B;AAAA,EACA,CAAC,gBAAgB3C,IAAa;AAChC,MAAgD;AAC9C,QAAM,EAAE,UAAAkC,MAAaP,KAAY,CAAC,GAC5B,CAACE,GAAYC,CAAa,IAAImC,EAAS,EAAK;AAGhD,SAAAjD,gBAAAA,EAAA;AAAA,IAACkD;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,IAAG;AAAA,MACH,eAAalE;AAAA,MACb,aAAW;AAAA,MACX,QAAA8D;AAAA,MACA,MAAK;AAAA,MACL,WAAS;AAAA,MACT,SAAS,MAAY;AACnB,QAAIC,KACMA,EAAA;AAAA,MAEZ;AAAA,MACA,IAAIjD,KAA6BgD,KAAUjC,IAAa,uBAAuB;AAAA,MAC/E,cAAc,MAAY;AACxB,QAAI8B,KACF7B,EAAc,EAAI;AAAA,MAEtB;AAAA,MACA,cAAc,MAAYA,EAAc,EAAK;AAAA,MAC7C,KAAI;AAAA,MACJ,KAAK,EAAE,gBAAgBkC,IAAyB,SAAS,OAAO;AAAA,MAE/D,UAAA;AAAA,QACCnC,KAAA5B,gBAAAA,EAAA;AAAA,UAACqB;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,eAAa,GAAGtB,CAAU;AAAA,YAC1B,KAAI;AAAA,YACJ,KAAK;AAAA,YACL,QAAO;AAAA,YACP,OAAO;AAAA,YACP,IAAG;AAAA,YACH,cAAa;AAAA,YACb,SAAS,CAACK,MAAYA,EAAE,gBAAgB;AAAA,YAExC,UAAAJ,gBAAAA,EAAA;AAAA,cAACwB;AAAA,cAAA;AAAA,gBACC,cAAAC;AAAA,gBACA,UAAAC;AAAA,gBACA,iBAAAC;AAAA,gBACA,YAAAC;AAAA,gBACA,eAAAC;AAAA,cAAA;AAAA,YAAA;AAAA,UACF;AAAA,QACF;AAAA,QAEF7B,gBAAAA,EAAA;AAAA,UAACO;AAAA,UAAA;AAAA,YACC,kBAAAC;AAAA,YACA,gBAAgBoB;AAAA,YAChB,cAAcK;AAAA,YACd,2BAAApB;AAAA,YACC,GAAG+C;AAAA,UAAA;AAAA,QACN;AAAA,QACC5D,gBAAAA,EAAAA,IAAAuD,GAAA,EAAwB,SAAAH,GAAkB,cAAAC,GAA4B,aAAAG,EAA0B,CAAA;AAAA,QAChG,CAAC,CAACd,GAAM,UAAU1C,gBAAAA,EAAA,IAACyC,KAAqB,MAAAC,GAAY;AAAA,QACpDiB,KAAe3D,gBAAAA,EAAA,IAACkD,GAAwB,EAAA,GAAGS,EAAa,CAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAC3D;AAEJ;"}
@@ -1,9 +1,9 @@
1
1
  import { j as e } from "./jsx-runtime-C5mzlN2N.js";
2
- import { i as R, u as y, U as k, F as c, x as W, t as D, a as B, b as T, c as A } from "./datePicker.provider-C1vLiJEb.js";
2
+ import { i as R, u as y, U as k, F as c, x as W, t as D, a as B, b as T, c as A } from "./datePicker.provider-CttuPiiS.js";
3
3
  import { W as P } from "./textInput.component-BeiTxTkS.js";
4
4
  import { I as C } from "./icon.component-PV_nHBId.js";
5
5
  import { W as H } from "./text.component-DhuUgP3j.js";
6
- import { t as b, f as v, i as O } from "./format-dJJ72A--.js";
6
+ import { t as b, f as v, i as O } from "./format-CqTHHSak.js";
7
7
  import { u as I } from "./popover-root-provider-CFn2dthZ.js";
8
8
  import { H as _ } from "./h-stack-8q5nAOg0.js";
9
9
  import { F } from "./flex-CX-8gE9T.js";
@@ -163,4 +163,4 @@ const ge = (t) => {
163
163
  export {
164
164
  ge as D
165
165
  };
166
- //# sourceMappingURL=datePicker.component-DeK6pPeC.js.map
166
+ //# sourceMappingURL=datePicker.component-CLTjEX7i.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"datePicker.component-DeK6pPeC.js","sources":["../../node_modules/date-fns/isBefore.js","../../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.component.tsx"],"sourcesContent":["import { toDate } from \"./toDate.js\";\n\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param date - The date that should be before the other one to return true\n * @param dateToCompare - The date to compare with\n *\n * @returns The first date is before the second date\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * const result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nexport function isBefore(date, dateToCompare) {\n return +toDate(date) < +toDate(dateToCompare);\n}\n\n// Fallback for modularized imports:\nexport default isBefore;\n","import isAfter from 'date-fns/isAfter';\nimport isBefore from 'date-fns/isBefore';\n\nexport const isDateAfterMin = (date: Date, minDate?: Date): boolean => (minDate ? isAfter(date, minDate) : true);\nexport const isDateBeforeMax = (date: Date, maxDate?: Date): boolean => (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 { TextInput, TextInputProps } 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 { FocusedInput, today, useDatePickerContext } from '../../context/datePicker.context';\nimport format from 'date-fns/format';\nimport { usePopoverContext } from '@chakra-ui/react/popover';\n\ninterface DatePickerInputProps {\n /** Props to customize the input field. See `TextInput` for more information. */\n inputProps?: Omit<TextInputProps, 'onChange' | 'value' | 'isClearable' | 'onClear'>;\n /** Data test id for the input.\n * @default kibble-datepicker-input\n */\n 'data-testid'?: string;\n}\n\nexport function DatePickerInput({\n inputProps,\n ['data-testid']: dataTestId = 'kibble-datepicker-input',\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 w=\"100%\" className=\"DatePicker__Trigger\" data-testid={dataTestId}>\n <TextInput\n className=\"DatePicker__Input--Start\"\n data-testid={`${dataTestId}-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={`${dataTestId}-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 /** Text to display in the submit button.\n * @default Apply\n */\n buttonText?: string;\n /** Callback function to be called when the submit button is clicked. */\n onSubmit?: ({ startDate, endDate }: DateRange) => void;\n /** If true, the reset button will be hidden. */\n hideResetButton?: boolean;\n /** Data test id for the footer.\n * @default kibble-datepicker-footer\n */\n 'data-testid'?: string;\n}\n\nexport function DatePickerFooter({\n buttonText = 'Apply',\n onSubmit,\n hideResetButton,\n}: DatePickerFooterProps): React.JSX.Element {\n const { startDate, endDate, clearDates, standalone } = useDatePickerContext();\n const { open, setOpen } = usePopoverContext();\n\n const handleSubmit = useCallback((): void => {\n if (!standalone) {\n setOpen(false);\n }\n\n if (onSubmit) {\n onSubmit({ startDate, endDate });\n }\n }, [standalone, setOpen, 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 size=\"sm\" variant=\"ghostNeutral\" onClick={() => clearDates({ open })}>\n Clear Dates\n </Button>\n )}\n <Button size=\"sm\" onClick={handleSubmit}>\n {buttonText}\n </Button>\n </HStack>\n );\n}\n","import React from 'react';\nimport { DateProps } 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 { DatePickerFooter, DatePickerFooterProps } 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';\nimport { useSlotRecipe } from '@chakra-ui/react/styled-system';\nimport { popoverRecipe } from 'components/Popover/popover.recipe';\nimport { usePortalContentRef } from 'hooks/usePortalContentRef';\nimport { Divider } from 'components/Divider';\n\nexport interface DatePickerProps extends DateProps {\n /** Props to customize the calendar footer. Only applicable when `withDateRange` is true. */\n footerProps?: DatePickerFooterProps;\n /**\n * Hides the calendar footer with the submit button. Only applicable when `withDateRange` is true.\n * @default false\n */\n hideFooter?: boolean;\n /** Props to customize the input field. See `TextInput` for more information. */\n inputProps?: Omit<TextInputProps, 'onChange' | 'value' | 'isClearable' | 'onClear'>;\n /**\n * Placement of the calendar popover\n * @default bottom\n */\n placement?: Placement;\n /**\n * If true, the date picker will be rendered in a portal.\n * @default true\n */\n portalled?: boolean;\n /**\n * If true, the date picker will render two input fields that control both the start and end date for a range selection.\n * @default false\n */\n withDateRange?: boolean;\n /** Data test id for the date picker.\n * @default kibble-datepicker\n */\n 'data-testid'?: string;\n}\n\nexport const DatePicker = (props: DatePickerProps): React.JSX.Element => {\n const {\n footerProps,\n hideFooter = false,\n inputProps,\n portalled = true,\n withDateRange = false,\n ['data-testid']: dataTestId = 'kibble-datepicker',\n } = props;\n const { contentRef } = usePortalContentRef();\n const recipe = useSlotRecipe({ recipe: popoverRecipe });\n const styles = recipe();\n\n return (\n <DatePickerProvider {...props}>\n <CPopover.Trigger w=\"100%\">\n <DatePickerInput inputProps={{ ...inputProps, readOnly: true }} />\n </CPopover.Trigger>\n <Portal container={contentRef || undefined} disabled={!portalled}>\n <CPopover.Positioner className=\"DatePicker\" data-testid={dataTestId}>\n <CPopover.Content\n className=\"DatePicker__Content\"\n data-testid={`${dataTestId}-content`}\n css={{ ...styles.content, minW: '340px' }}\n >\n <CPopover.Body css={{ '--popover-padding': 0 }}>\n <DatePickerHeader />\n <Divider />\n <DatePickerCalendar />\n {withDateRange && !hideFooter && <DatePickerFooter {...footerProps} />}\n </CPopover.Body>\n </CPopover.Content>\n </CPopover.Positioner>\n </Portal>\n </DatePickerProvider>\n );\n};\n"],"names":["isBefore","date","dateToCompare","toDate","isDateAfterMin","minDate","isAfter","isDateBeforeMax","maxDate","DatePickerInput","inputProps","dataTestId","setFocusedInput","startDate","endDate","focusedInput","dateFormat","withDateRange","onDateChange","onDateSelect","onClose","useDatePickerContext","open","setOpen","usePopoverContext","iconSize","onKeyDown","e","onInputChange","dateValue","parsedDate","parseDate","today","isDate","HStack","jsx","TextInput","Flex","FocusedInput","Icon","getInputValue","format","jsxs","Fragment","Text","DatePickerFooter","buttonText","onSubmit","hideResetButton","clearDates","standalone","handleSubmit","useCallback","Button","DatePicker","props","footerProps","hideFooter","portalled","contentRef","usePortalContentRef","styles","useSlotRecipe","popoverRecipe","DatePickerProvider","CPopover.Trigger","Portal","CPopover.Positioner","CPopover.Content","CPopover.Body","DatePickerHeader","Divider","DatePickerCalendar"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"datePicker.component-CLTjEX7i.js","sources":["../../node_modules/date-fns/isBefore.js","../../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.component.tsx"],"sourcesContent":["import { toDate } from \"./toDate.js\";\n\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param date - The date that should be before the other one to return true\n * @param dateToCompare - The date to compare with\n *\n * @returns The first date is before the second date\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * const result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nexport function isBefore(date, dateToCompare) {\n return +toDate(date) < +toDate(dateToCompare);\n}\n\n// Fallback for modularized imports:\nexport default isBefore;\n","import isAfter from 'date-fns/isAfter';\nimport isBefore from 'date-fns/isBefore';\n\nexport const isDateAfterMin = (date: Date, minDate?: Date): boolean => (minDate ? isAfter(date, minDate) : true);\nexport const isDateBeforeMax = (date: Date, maxDate?: Date): boolean => (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 { TextInput, TextInputProps } 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 { FocusedInput, today, useDatePickerContext } from '../../context/datePicker.context';\nimport format from 'date-fns/format';\nimport { usePopoverContext } from '@chakra-ui/react/popover';\n\ninterface DatePickerInputProps {\n /** Props to customize the input field. See `TextInput` for more information. */\n inputProps?: Omit<TextInputProps, 'onChange' | 'value' | 'isClearable' | 'onClear'>;\n /** Data test id for the input.\n * @default kibble-datepicker-input\n */\n 'data-testid'?: string;\n}\n\nexport function DatePickerInput({\n inputProps,\n ['data-testid']: dataTestId = 'kibble-datepicker-input',\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 w=\"100%\" className=\"DatePicker__Trigger\" data-testid={dataTestId}>\n <TextInput\n className=\"DatePicker__Input--Start\"\n data-testid={`${dataTestId}-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={`${dataTestId}-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 /** Text to display in the submit button.\n * @default Apply\n */\n buttonText?: string;\n /** Callback function to be called when the submit button is clicked. */\n onSubmit?: ({ startDate, endDate }: DateRange) => void;\n /** If true, the reset button will be hidden. */\n hideResetButton?: boolean;\n /** Data test id for the footer.\n * @default kibble-datepicker-footer\n */\n 'data-testid'?: string;\n}\n\nexport function DatePickerFooter({\n buttonText = 'Apply',\n onSubmit,\n hideResetButton,\n}: DatePickerFooterProps): React.JSX.Element {\n const { startDate, endDate, clearDates, standalone } = useDatePickerContext();\n const { open, setOpen } = usePopoverContext();\n\n const handleSubmit = useCallback((): void => {\n if (!standalone) {\n setOpen(false);\n }\n\n if (onSubmit) {\n onSubmit({ startDate, endDate });\n }\n }, [standalone, setOpen, 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 size=\"sm\" variant=\"ghostNeutral\" onClick={() => clearDates({ open })}>\n Clear Dates\n </Button>\n )}\n <Button size=\"sm\" onClick={handleSubmit}>\n {buttonText}\n </Button>\n </HStack>\n );\n}\n","import React from 'react';\nimport { DateProps } 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 { DatePickerFooter, DatePickerFooterProps } 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';\nimport { useSlotRecipe } from '@chakra-ui/react/styled-system';\nimport { popoverRecipe } from 'components/Popover/popover.recipe';\nimport { usePortalContentRef } from 'hooks/usePortalContentRef';\nimport { Divider } from 'components/Divider';\n\nexport interface DatePickerProps extends DateProps {\n /** Props to customize the calendar footer. Only applicable when `withDateRange` is true. */\n footerProps?: DatePickerFooterProps;\n /**\n * Hides the calendar footer with the submit button. Only applicable when `withDateRange` is true.\n * @default false\n */\n hideFooter?: boolean;\n /** Props to customize the input field. See `TextInput` for more information. */\n inputProps?: Omit<TextInputProps, 'onChange' | 'value' | 'isClearable' | 'onClear'>;\n /**\n * Placement of the calendar popover\n * @default bottom\n */\n placement?: Placement;\n /**\n * If true, the date picker will be rendered in a portal.\n * @default true\n */\n portalled?: boolean;\n /**\n * If true, the date picker will render two input fields that control both the start and end date for a range selection.\n * @default false\n */\n withDateRange?: boolean;\n /** Data test id for the date picker.\n * @default kibble-datepicker\n */\n 'data-testid'?: string;\n}\n\nexport const DatePicker = (props: DatePickerProps): React.JSX.Element => {\n const {\n footerProps,\n hideFooter = false,\n inputProps,\n portalled = true,\n withDateRange = false,\n ['data-testid']: dataTestId = 'kibble-datepicker',\n } = props;\n const { contentRef } = usePortalContentRef();\n const recipe = useSlotRecipe({ recipe: popoverRecipe });\n const styles = recipe();\n\n return (\n <DatePickerProvider {...props}>\n <CPopover.Trigger w=\"100%\">\n <DatePickerInput inputProps={{ ...inputProps, readOnly: true }} />\n </CPopover.Trigger>\n <Portal container={contentRef || undefined} disabled={!portalled}>\n <CPopover.Positioner className=\"DatePicker\" data-testid={dataTestId}>\n <CPopover.Content\n className=\"DatePicker__Content\"\n data-testid={`${dataTestId}-content`}\n css={{ ...styles.content, minW: '340px' }}\n >\n <CPopover.Body css={{ '--popover-padding': 0 }}>\n <DatePickerHeader />\n <Divider />\n <DatePickerCalendar />\n {withDateRange && !hideFooter && <DatePickerFooter {...footerProps} />}\n </CPopover.Body>\n </CPopover.Content>\n </CPopover.Positioner>\n </Portal>\n </DatePickerProvider>\n );\n};\n"],"names":["isBefore","date","dateToCompare","toDate","isDateAfterMin","minDate","isAfter","isDateBeforeMax","maxDate","DatePickerInput","inputProps","dataTestId","setFocusedInput","startDate","endDate","focusedInput","dateFormat","withDateRange","onDateChange","onDateSelect","onClose","useDatePickerContext","open","setOpen","usePopoverContext","iconSize","onKeyDown","e","onInputChange","dateValue","parsedDate","parseDate","today","isDate","HStack","jsx","TextInput","Flex","FocusedInput","Icon","getInputValue","format","jsxs","Fragment","Text","DatePickerFooter","buttonText","onSubmit","hideResetButton","clearDates","standalone","handleSubmit","useCallback","Button","DatePicker","props","footerProps","hideFooter","portalled","contentRef","usePortalContentRef","styles","useSlotRecipe","popoverRecipe","DatePickerProvider","CPopover.Trigger","Portal","CPopover.Positioner","CPopover.Content","CPopover.Body","DatePickerHeader","Divider","DatePickerCalendar"],"mappings":"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","x_google_ignoreList":[0]}
@@ -1,11 +1,11 @@
1
1
  import { j as N } from "./jsx-runtime-C5mzlN2N.js";
2
- import { useState as Oe, useEffect as Be, useCallback as q, useMemo as K, useContext as Lt, createContext as It, useRef as Ce } from "react";
2
+ import { useState as Oe, useEffect as Be, useCallback as q, useMemo as K, createContext as Lt, useContext as It, useRef as Ce } from "react";
3
3
  import { W as Ge } from "./text.component-DhuUgP3j.js";
4
4
  import { B as qt } from "./index-9BerxEcw.js";
5
5
  import { B as Xe } from "./button.component-BO6oee_V.js";
6
6
  import { d as Wt } from "./config-Djkl1N81.js";
7
- import { f as Re, t as re, c as le, a as Qt } from "./format-dJJ72A--.js";
8
- import { i as At } from "./isToday-Q8lj3mkM.js";
7
+ import { f as Re, t as re, c as le, s as Qt } from "./format-CqTHHSak.js";
8
+ import { i as At } from "./isToday-iCYsPDMT.js";
9
9
  import { u as jt } from "./create-slot-recipe-context-D_FXDJGp.js";
10
10
  import { G as et, a as Gt } from "./grid-item-BmCSQ38y.js";
11
11
  import { C as Tt } from "./center-Dmlzv1BW.js";
@@ -2319,7 +2319,7 @@ const ie = /* @__PURE__ */ new Date(), Je = ie.getFullYear(), pr = ie.getMonth()
2319
2319
  goToDate: () => {
2320
2320
  throw new Error("goToDate(): boolean not implemented");
2321
2321
  }
2322
- }, Ht = It(kr), we = () => Lt(Ht), xr = ["root"], yt = {
2322
+ }, Ht = Lt(kr), we = () => It(Ht), xr = ["root"], yt = {
2323
2323
  bg: "background.secondary",
2324
2324
  borderColor: "border.focus",
2325
2325
  color: "text.contrast",
@@ -3007,4 +3007,4 @@ export {
3007
3007
  we as u,
3008
3008
  ga as x
3009
3009
  };
3010
- //# sourceMappingURL=datePicker.provider-C1vLiJEb.js.map
3010
+ //# sourceMappingURL=datePicker.provider-CttuPiiS.js.map