@televet/kibble-ui 5.0.28 → 5.0.29-sc.1

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 (148) hide show
  1. package/dist/chunks/{avatarGroup.component-z6SzTzKR.js → avatarGroup.component-CUHMxiIc.js} +2 -2
  2. package/dist/chunks/{avatarGroup.component-z6SzTzKR.js.map → avatarGroup.component-CUHMxiIc.js.map} +1 -1
  3. package/dist/chunks/{avatarGroup.component-CUOKTQHZ.js → avatarGroup.component-ClqXmemB.js} +2 -2
  4. package/dist/chunks/{avatarGroup.component-CUOKTQHZ.js.map → avatarGroup.component-ClqXmemB.js.map} +1 -1
  5. package/dist/chunks/{buttonGroup.component-CYJxaqK1.js → buttonGroup.component-B4APVs0L.js} +2 -2
  6. package/dist/chunks/{buttonGroup.component-CYJxaqK1.js.map → buttonGroup.component-B4APVs0L.js.map} +1 -1
  7. package/dist/chunks/{buttonGroup.component-CHbRCpMI.js → buttonGroup.component-BRafsTrY.js} +2 -2
  8. package/dist/chunks/{buttonGroup.component-CHbRCpMI.js.map → buttonGroup.component-BRafsTrY.js.map} +1 -1
  9. package/dist/chunks/{calendar.component-BpDNoBAZ.js → calendar.component-BswlIQ5W.js} +2 -2
  10. package/dist/chunks/{calendar.component-BpDNoBAZ.js.map → calendar.component-BswlIQ5W.js.map} +1 -1
  11. package/dist/chunks/{calendar.component-C2bzItDq.js → calendar.component-Dt452bDI.js} +2 -2
  12. package/dist/chunks/{calendar.component-C2bzItDq.js.map → calendar.component-Dt452bDI.js.map} +1 -1
  13. package/dist/chunks/{checkbox.component-CrTnnQ30.js → checkbox.component-CyVZ9Xv2.js} +2 -2
  14. package/dist/chunks/{checkbox.component-CrTnnQ30.js.map → checkbox.component-CyVZ9Xv2.js.map} +1 -1
  15. package/dist/chunks/{checkbox.component-Bytw6Mk1.js → checkbox.component-DGIWgnM4.js} +2 -2
  16. package/dist/chunks/{checkbox.component-Bytw6Mk1.js.map → checkbox.component-DGIWgnM4.js.map} +1 -1
  17. package/dist/chunks/{checkboxGroup.component-Bf_yc-Fl.js → checkboxGroup.component-D4YLYJPy.js} +3 -3
  18. package/dist/chunks/{checkboxGroup.component-Bf_yc-Fl.js.map → checkboxGroup.component-D4YLYJPy.js.map} +1 -1
  19. package/dist/chunks/{checkboxGroup.component-CndHvReL.js → checkboxGroup.component-DVEQJk7I.js} +2 -2
  20. package/dist/chunks/{checkboxGroup.component-CndHvReL.js.map → checkboxGroup.component-DVEQJk7I.js.map} +1 -1
  21. package/dist/chunks/{conversationCard.component-BKXSq7NS.js → conversationCard.component-CXEHIrKJ.js} +2 -2
  22. package/dist/chunks/{conversationCard.component-BKXSq7NS.js.map → conversationCard.component-CXEHIrKJ.js.map} +1 -1
  23. package/dist/chunks/{conversationCard.component-Mn3eYMW_.js → conversationCard.component-DZnnZcAz.js} +2 -2
  24. package/dist/chunks/{conversationCard.component-Mn3eYMW_.js.map → conversationCard.component-DZnnZcAz.js.map} +1 -1
  25. package/dist/chunks/{datePicker.component-DQ0a5vhA.js → datePicker.component-CLkxmQLL.js} +2 -2
  26. package/dist/chunks/{datePicker.component-DQ0a5vhA.js.map → datePicker.component-CLkxmQLL.js.map} +1 -1
  27. package/dist/chunks/{datePicker.component-CHBO_Jrk.js → datePicker.component-DQzmsw2J.js} +3 -3
  28. package/dist/chunks/{datePicker.component-CHBO_Jrk.js.map → datePicker.component-DQzmsw2J.js.map} +1 -1
  29. package/dist/chunks/{datePicker.provider-CDhsnFSD.js → datePicker.provider-CcGhcyCp.js} +2 -2
  30. package/dist/chunks/{datePicker.provider-CDhsnFSD.js.map → datePicker.provider-CcGhcyCp.js.map} +1 -1
  31. package/dist/chunks/{datePicker.provider-o-sEPUJe.js → datePicker.provider-DvJrNnut.js} +2 -2
  32. package/dist/chunks/{datePicker.provider-o-sEPUJe.js.map → datePicker.provider-DvJrNnut.js.map} +1 -1
  33. package/dist/chunks/{dateTimePicker.component-B1tTKUZU.js → dateTimePicker.component-BwC0c08U.js} +4 -4
  34. package/dist/chunks/{dateTimePicker.component-B1tTKUZU.js.map → dateTimePicker.component-BwC0c08U.js.map} +1 -1
  35. package/dist/chunks/{dateTimePicker.component-oLZ5KXWa.js → dateTimePicker.component-DS_GGUy_.js} +2 -2
  36. package/dist/chunks/{dateTimePicker.component-oLZ5KXWa.js.map → dateTimePicker.component-DS_GGUy_.js.map} +1 -1
  37. package/dist/chunks/{menu.component-CNbEm3SL.js → menu.component-B_rE1WZ2.js} +2 -2
  38. package/dist/chunks/{menu.component-CNbEm3SL.js.map → menu.component-B_rE1WZ2.js.map} +1 -1
  39. package/dist/chunks/{menu.component-DwnU1N2a.js → menu.component-CAttpI-a.js} +3 -3
  40. package/dist/chunks/{menu.component-DwnU1N2a.js.map → menu.component-CAttpI-a.js.map} +1 -1
  41. package/dist/chunks/{numberInput.component-B0P7w6Av.js → numberInput.component-B7c9cP1S.js} +2 -2
  42. package/dist/chunks/{numberInput.component-B0P7w6Av.js.map → numberInput.component-B7c9cP1S.js.map} +1 -1
  43. package/dist/chunks/{numberInput.component-Bpl3NGJU.js → numberInput.component-D2lVvZHf.js} +2 -2
  44. package/dist/chunks/{numberInput.component-Bpl3NGJU.js.map → numberInput.component-D2lVvZHf.js.map} +1 -1
  45. package/dist/chunks/{pinInput.types-xxX7jDUo.js → pinInput.types-CtkczGt3.js} +2 -2
  46. package/dist/chunks/{pinInput.types-xxX7jDUo.js.map → pinInput.types-CtkczGt3.js.map} +1 -1
  47. package/dist/chunks/{pinInput.types-B0WLZ-4e.js → pinInput.types-DOs4a1N6.js} +2 -2
  48. package/dist/chunks/{pinInput.types-B0WLZ-4e.js.map → pinInput.types-DOs4a1N6.js.map} +1 -1
  49. package/dist/chunks/{radioGroup.types-4D0zmi0v.js → radioGroup.types-CGGPDvBR.js} +2 -2
  50. package/dist/chunks/{radioGroup.types-4D0zmi0v.js.map → radioGroup.types-CGGPDvBR.js.map} +1 -1
  51. package/dist/chunks/{radioGroup.types-Dbfon_Lr.js → radioGroup.types-CiHxP4xM.js} +3 -3
  52. package/dist/chunks/{radioGroup.types-Dbfon_Lr.js.map → radioGroup.types-CiHxP4xM.js.map} +1 -1
  53. package/dist/chunks/{rating.component-DOUCmD0Y.js → rating.component-C6qlmmF7.js} +2 -2
  54. package/dist/chunks/{rating.component-DOUCmD0Y.js.map → rating.component-C6qlmmF7.js.map} +1 -1
  55. package/dist/chunks/{rating.component-DlCpQ5GH.js → rating.component-DwiIqg9E.js} +2 -2
  56. package/dist/chunks/{rating.component-DlCpQ5GH.js.map → rating.component-DwiIqg9E.js.map} +1 -1
  57. package/dist/chunks/{ratingDots.component-Qk8qlPmN.js → ratingDots.component-BpimXANy.js} +2 -2
  58. package/dist/chunks/{ratingDots.component-Qk8qlPmN.js.map → ratingDots.component-BpimXANy.js.map} +1 -1
  59. package/dist/chunks/{ratingDots.component-pc5p1mua.js → ratingDots.component-CMljyqn1.js} +2 -2
  60. package/dist/chunks/{ratingDots.component-pc5p1mua.js.map → ratingDots.component-CMljyqn1.js.map} +1 -1
  61. package/dist/chunks/{select.component-DIrbeCPd.js → select.component-CmKal46A.js} +3 -3
  62. package/dist/chunks/{select.component-DIrbeCPd.js.map → select.component-CmKal46A.js.map} +1 -1
  63. package/dist/chunks/{select.component-CzyXxbhS.js → select.component-LmZa9UrH.js} +2 -2
  64. package/dist/chunks/{select.component-CzyXxbhS.js.map → select.component-LmZa9UrH.js.map} +1 -1
  65. package/dist/chunks/{switch.component-WMd5cinZ.js → switch.component-BANAbt7_.js} +2 -2
  66. package/dist/chunks/{switch.component-WMd5cinZ.js.map → switch.component-BANAbt7_.js.map} +1 -1
  67. package/dist/chunks/{switch.component-BKahX4Bw.js → switch.component-BSdPjnqI.js} +2 -2
  68. package/dist/chunks/{switch.component-BKahX4Bw.js.map → switch.component-BSdPjnqI.js.map} +1 -1
  69. package/dist/chunks/{tagBlock.component-CNwLyYYb.js → tagBlock.component-CAoe7WiN.js} +2 -2
  70. package/dist/chunks/{tagBlock.component-CNwLyYYb.js.map → tagBlock.component-CAoe7WiN.js.map} +1 -1
  71. package/dist/chunks/{tagBlock.component-fnt27QP6.js → tagBlock.component-DFnrBQW3.js} +2 -2
  72. package/dist/chunks/{tagBlock.component-fnt27QP6.js.map → tagBlock.component-DFnrBQW3.js.map} +1 -1
  73. package/dist/chunks/{textInput.component-DAan7BwF.js → textInput.component-CHOXUd8x.js} +2 -2
  74. package/dist/chunks/{textInput.component-DAan7BwF.js.map → textInput.component-CHOXUd8x.js.map} +1 -1
  75. package/dist/chunks/{textInput.component-BDJuvT1c.js → textInput.component-KjxR5ln_.js} +2 -2
  76. package/dist/chunks/{textInput.component-BDJuvT1c.js.map → textInput.component-KjxR5ln_.js.map} +1 -1
  77. package/dist/chunks/{textarea.component-1Gvjelye.js → textarea.component-BtE7Ec9v.js} +2 -2
  78. package/dist/chunks/{textarea.component-1Gvjelye.js.map → textarea.component-BtE7Ec9v.js.map} +1 -1
  79. package/dist/chunks/{textarea.component-B-tQg_4m.js → textarea.component-Co5FVeAZ.js} +2 -2
  80. package/dist/chunks/{textarea.component-B-tQg_4m.js.map → textarea.component-Co5FVeAZ.js.map} +1 -1
  81. package/dist/chunks/{theme.provider-CD72J0A7.js → theme.provider-BEOF1dv4.js} +175 -167
  82. package/dist/chunks/theme.provider-BEOF1dv4.js.map +1 -0
  83. package/dist/chunks/{theme.provider-DpFjsbLx.js → theme.provider-CfNsrvgx.js} +3 -3
  84. package/dist/chunks/theme.provider-CfNsrvgx.js.map +1 -0
  85. package/dist/chunks/{timePicker.component-CvQ9kF_7.js → timePicker.component-O5_k6YYo.js} +2 -2
  86. package/dist/chunks/{timePicker.component-CvQ9kF_7.js.map → timePicker.component-O5_k6YYo.js.map} +1 -1
  87. package/dist/chunks/{timePicker.component-D2gDf5fp.js → timePicker.component-uf5hCWTW.js} +2 -2
  88. package/dist/chunks/{timePicker.component-D2gDf5fp.js.map → timePicker.component-uf5hCWTW.js.map} +1 -1
  89. package/dist/chunks/{timeRange.component-DL2vskjy.js → timeRange.component-CjQ7PYJR.js} +2 -2
  90. package/dist/chunks/{timeRange.component-DL2vskjy.js.map → timeRange.component-CjQ7PYJR.js.map} +1 -1
  91. package/dist/chunks/{timeRange.component-DfOq2mGR.js → timeRange.component-Crv2OP7C.js} +2 -2
  92. package/dist/chunks/{timeRange.component-DfOq2mGR.js.map → timeRange.component-Crv2OP7C.js.map} +1 -1
  93. package/dist/chunks/{withFormControl-d2CEvsH2.js → withFormControl-CMerPa0c.js} +2 -2
  94. package/dist/chunks/{withFormControl-d2CEvsH2.js.map → withFormControl-CMerPa0c.js.map} +1 -1
  95. package/dist/chunks/{withFormControl-DVeqCX53.js → withFormControl-FQcw75ZS.js} +24 -25
  96. package/dist/chunks/{withFormControl-DVeqCX53.js.map → withFormControl-FQcw75ZS.js.map} +1 -1
  97. package/dist/cjs/components/AvatarGroup/index.cjs +1 -1
  98. package/dist/cjs/components/ButtonGroup/index.cjs +1 -1
  99. package/dist/cjs/components/Calendar/index.cjs +1 -1
  100. package/dist/cjs/components/Checkbox/index.cjs +1 -1
  101. package/dist/cjs/components/CheckboxGroup/index.cjs +1 -1
  102. package/dist/cjs/components/ConversationCard/index.cjs +1 -1
  103. package/dist/cjs/components/DatePicker/index.cjs +1 -1
  104. package/dist/cjs/components/DateTimePicker/index.cjs +1 -1
  105. package/dist/cjs/components/Menu/index.cjs +1 -1
  106. package/dist/cjs/components/NumberInput/index.cjs +1 -1
  107. package/dist/cjs/components/PinInput/index.cjs +1 -1
  108. package/dist/cjs/components/RadioGroup/index.cjs +1 -1
  109. package/dist/cjs/components/Rating/index.cjs +1 -1
  110. package/dist/cjs/components/RatingDots/index.cjs +1 -1
  111. package/dist/cjs/components/Select/index.cjs +1 -1
  112. package/dist/cjs/components/Switch/index.cjs +1 -1
  113. package/dist/cjs/components/TagBlock/index.cjs +1 -1
  114. package/dist/cjs/components/TextInput/index.cjs +1 -1
  115. package/dist/cjs/components/Textarea/index.cjs +1 -1
  116. package/dist/cjs/components/TimePicker/index.cjs +1 -1
  117. package/dist/cjs/components/TimeRange/index.cjs +1 -1
  118. package/dist/cjs/components/index.cjs +1 -1
  119. package/dist/cjs/index.cjs +1 -1
  120. package/dist/cjs/theme/index.cjs +1 -1
  121. package/dist/esm/components/AvatarGroup/index.js +1 -1
  122. package/dist/esm/components/ButtonGroup/index.js +1 -1
  123. package/dist/esm/components/Calendar/index.js +1 -1
  124. package/dist/esm/components/Checkbox/index.js +1 -1
  125. package/dist/esm/components/CheckboxGroup/index.js +1 -1
  126. package/dist/esm/components/ConversationCard/index.js +1 -1
  127. package/dist/esm/components/DatePicker/index.js +2 -2
  128. package/dist/esm/components/DateTimePicker/index.js +1 -1
  129. package/dist/esm/components/Menu/index.js +1 -1
  130. package/dist/esm/components/NumberInput/index.js +1 -1
  131. package/dist/esm/components/PinInput/index.js +1 -1
  132. package/dist/esm/components/RadioGroup/index.js +1 -1
  133. package/dist/esm/components/Rating/index.js +1 -1
  134. package/dist/esm/components/RatingDots/index.js +1 -1
  135. package/dist/esm/components/Select/index.js +1 -1
  136. package/dist/esm/components/Switch/index.js +1 -1
  137. package/dist/esm/components/TagBlock/index.js +1 -1
  138. package/dist/esm/components/TextInput/index.js +1 -1
  139. package/dist/esm/components/Textarea/index.js +1 -1
  140. package/dist/esm/components/TimePicker/index.js +1 -1
  141. package/dist/esm/components/TimeRange/index.js +1 -1
  142. package/dist/esm/components/index.js +22 -22
  143. package/dist/esm/index.js +23 -23
  144. package/dist/esm/theme/index.js +1 -1
  145. package/dist/types/theme/recipes/Field/field.recipe.d.ts +1 -0
  146. package/package.json +1 -1
  147. package/dist/chunks/theme.provider-CD72J0A7.js.map +0 -1
  148. package/dist/chunks/theme.provider-DpFjsbLx.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  import { j as o } from "./jsx-runtime-C5mzlN2N.js";
2
2
  import { useCallback as b, useRef as J, useEffect as T, useState as k, useMemo as R } from "react";
3
- import { W as K } from "./textInput.component-DAan7BwF.js";
3
+ import { W as K } from "./textInput.component-CHOXUd8x.js";
4
4
  import { P as Q } from "./popover.component-65oNmbmB.js";
5
5
  import { I as U } from "./icon.component-PV_nHBId.js";
6
6
  import { u as X } from "./useIconTextSizeMap-BK-pUrQv.js";
@@ -217,4 +217,4 @@ export {
217
217
  d as M,
218
218
  he as T
219
219
  };
220
- //# sourceMappingURL=timePicker.component-CvQ9kF_7.js.map
220
+ //# sourceMappingURL=timePicker.component-O5_k6YYo.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"timePicker.component-CvQ9kF_7.js","sources":["../../src/components/TimePicker/components/TimeOption/timeOption.recipe.ts","../../src/components/TimePicker/components/TimeOption/timeOption.component.tsx","../../src/components/TimePicker/timePicker.recipe.ts","../../src/components/TimePicker/components/TimeList/timeList.component.tsx","../../src/components/TimePicker/timePicker.types.ts","../../src/components/TimePicker/timePicker.component.tsx"],"sourcesContent":["import { defineRecipe } from '@chakra-ui/react/styled-system';\n\nexport const timeOptionRecipe = defineRecipe({\n base: {\n borderRadius: '4px',\n cursor: 'pointer',\n fontSize: 'sm',\n px: 3,\n py: 1,\n textAlign: 'center',\n },\n variants: {\n selected: {\n true: {\n background: 'background.secondary',\n color: 'text.contrast',\n _hover: {\n background: 'background.secondary.hover',\n },\n },\n false: {\n background: 'background',\n color: 'text.subtle',\n _hover: {\n background: 'background.secondaryAlpha.hover',\n },\n },\n },\n },\n defaultVariants: {\n selected: false,\n },\n});\n","import React, { useCallback } from 'react';\nimport { Box } from '@chakra-ui/react/box';\nimport { useRecipe } from '@chakra-ui/react/styled-system';\nimport { timeOptionRecipe } from './timeOption.recipe';\n\ninterface TimeOptionProps {\n /** Ref to the option component. */\n innerRef?: React.Ref<HTMLDivElement | null> | null;\n /** Callback function to be called when the option is clicked. */\n onClick: (selectedValue: string) => void;\n /** If true, the option will be selected. */\n selected: boolean;\n /** Value of the option. */\n value: string;\n /** Data test id for the option.\n * @default kibble-timepicker-option\n */\n 'data-testid'?: string;\n}\n\nexport const TimeOption = ({\n value,\n innerRef,\n onClick,\n selected,\n ['data-testid']: dataTestId = 'kibble-timepicker-option',\n}: TimeOptionProps): React.JSX.Element => {\n const recipe = useRecipe({ recipe: timeOptionRecipe });\n const styles = recipe({ selected });\n\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n const selectedValue = event.currentTarget.textContent || '';\n onClick(selectedValue);\n },\n [onClick],\n );\n\n return (\n <Box className=\"TimePicker__Option\" data-testid={dataTestId} ref={innerRef} onClick={handleClick} css={styles}>\n {value}\n </Box>\n );\n};\n","import { defineSlotRecipe } from '@chakra-ui/react/styled-system';\n\nexport const timePickerRecipe = defineSlotRecipe({\n slots: ['trigger', 'container', 'list'],\n base: {\n trigger: {\n width: '100%',\n },\n container: {\n display: 'flex',\n gap: 1.5,\n height: '186px',\n overflow: 'hidden',\n },\n list: {\n display: 'flex',\n flexDirection: 'column',\n gap: 1,\n overflowY: 'auto',\n '&::webkit-scrollbar': {\n display: 'none',\n },\n },\n },\n});\n","import React, { useEffect, useRef } from 'react';\nimport { Box } from '@chakra-ui/react/box';\nimport { TimeOption } from '../TimeOption/timeOption.component';\nimport { useSlotRecipe } from '@chakra-ui/react/styled-system';\nimport { timePickerRecipe } from '../../timePicker.recipe';\n\ninterface ScrollContainerProps {\n /** Options to display in the list. */\n options: string[];\n /** Type of the option. */\n optionType: 'hour' | 'minute' | 'meridiem';\n /** Selected value of the list. */\n selectedValue?: string;\n /** Callback function to be called when the option is clicked. */\n onClick: (value: string) => void;\n /** Determines if the list is open. */\n open: boolean;\n /** Data test id for the list.\n * @default kibble-timepicker-list\n */\n 'data-testid'?: string;\n}\n\nexport const TimeList = ({\n options,\n optionType,\n selectedValue,\n onClick,\n open = false,\n ['data-testid']: dataTestId = 'kibble-timepicker-list',\n}: ScrollContainerProps): React.JSX.Element => {\n const recipe = useSlotRecipe({ recipe: timePickerRecipe });\n const styles = recipe();\n const itemRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (open && itemRef.current) {\n requestAnimationFrame(() => {\n if (itemRef.current) {\n itemRef.current.scrollIntoView({ block: 'center' });\n }\n });\n }\n }, [open, selectedValue]);\n\n return (\n <Box className=\"TimePicker__List\" data-testid={`${dataTestId}-${optionType}-list`} css={styles.list}>\n {options.map((option) => {\n const isSelected = option === selectedValue;\n return (\n <TimeOption\n key={`${optionType}-option-${option}`}\n innerRef={isSelected ? itemRef : null}\n value={option}\n selected={option === selectedValue}\n onClick={onClick}\n data-testid={`${dataTestId}-${optionType}-option-${option}`}\n />\n );\n })}\n </Box>\n );\n};\n","export enum Meridiem {\n AM = 'AM',\n PM = 'PM',\n}\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { TextInput, TextInputProps } from 'components/TextInput/textInput.component';\nimport { Popover } from 'components/Popover/popover.component';\nimport { Icon } from 'components/Icon/icon.component';\nimport { useIconTextSizeMap } from 'hooks/useIconTextSizeMap';\nimport format from 'date-fns/format';\nimport { Box } from '@chakra-ui/react/box';\nimport { TimeList } from './components/TimeList/timeList.component';\nimport { Meridiem } from './timePicker.types';\nimport { useSlotRecipe } from '@chakra-ui/react/styled-system';\nimport { timePickerRecipe } from './timePicker.recipe';\nimport { Placement } from 'shared/types/placement';\n\nexport interface TimePickerProps {\n /** Initial time to be displayed in the input field. */\n initialTime?: Date;\n /** Props to customize the input field. See `TextInput` for more information. */\n inputProps?: Omit<TextInputProps, 'onChange' | 'value' | 'isClearable' | 'onClear'>;\n /**\n * Interval of minutes to be displayed in the dropdown.\n * @default 5\n */\n minuteInterval?: number;\n /** Callback function triggered when the time is changed. */\n onTimeChange?: (time: Date) => void;\n /** Callback function triggered when the time picker is closed. */\n onClose?: (time?: Date) => void;\n /**\n * Placement of the dropdown relative to the input field.\n * @default bottom\n */\n placement?: Placement;\n /**\n * Data test id for the time picker.\n * @default kibble-timepicker\n */\n 'data-testid'?: string;\n}\n\nexport const TimePicker = ({\n initialTime,\n inputProps,\n minuteInterval = 5,\n onTimeChange,\n onClose,\n placement = 'bottom',\n ['data-testid']: dataTestId = 'kibble-timepicker',\n}: TimePickerProps): React.JSX.Element => {\n const recipe = useSlotRecipe({ recipe: timePickerRecipe });\n const styles = recipe();\n const [isOpen, setIsOpen] = useState(false);\n const [selectedTime, setSelectedTime] = useState(initialTime);\n const [selectedHour, setSelectedHour] = useState<string | undefined>();\n const [selectedMinute, setSelectedMinute] = useState<string | undefined>();\n const [selectedMeridiem, setSelectedMeridiem] = useState<string | undefined>();\n\n const formattedTime = useMemo(() => {\n if (!selectedTime) return '';\n return format(selectedTime, 'h:mm aa');\n }, [selectedTime]);\n\n const formatNumber = (number: number | string): string => {\n const formattedValue = number.toString();\n if (formattedValue.length === 1) {\n return `0${formattedValue}`;\n }\n\n return formattedValue;\n };\n\n const hourOptions = useMemo(() => {\n return [12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11].map((hour) => hour.toString());\n }, []);\n\n const minuteOptions = useMemo(() => {\n const minutes = [];\n for (let i = 0; i < 60; i += minuteInterval) {\n minutes.push(i);\n }\n\n return minutes.map(formatNumber);\n }, [minuteInterval]);\n\n const meridiemOptions = [Meridiem.AM, Meridiem.PM];\n\n const handleTimeChange = useCallback(\n (hour?: string, minute?: string, meridiem?: string) => {\n const _hour = hour || '12';\n const _minute = minute || '00';\n const _meridiem = meridiem || 'AM';\n let meridiemAdjustment = 0;\n\n if (!hour) {\n setSelectedHour('12');\n }\n if (!minute) {\n setSelectedMinute('00');\n }\n if (!meridiem) {\n setSelectedMeridiem('AM');\n }\n\n // set 1-11pm to 13-23. Don't set 12pm to 24\n if (_meridiem === Meridiem.PM && Number(_hour) < 12) {\n meridiemAdjustment = 12;\n }\n\n // set 12am to 00\n if (_meridiem === Meridiem.AM && Number(_hour) === 12) {\n meridiemAdjustment = -12;\n }\n\n const hours = Number(_hour) + meridiemAdjustment;\n const time = new Date().setHours(hours, Number(_minute), 0, 0);\n const date = new Date(time);\n setSelectedTime(date);\n\n if (onTimeChange) {\n onTimeChange(date);\n }\n },\n [onTimeChange],\n );\n\n const handleHourClick = useCallback(\n (value: string) => {\n setSelectedHour(value);\n handleTimeChange(value, selectedMinute, selectedMeridiem);\n },\n [handleTimeChange, selectedMeridiem, selectedMinute],\n );\n\n const handleMinuteClick = useCallback(\n (value: string) => {\n setSelectedMinute(value);\n handleTimeChange(selectedHour, value, selectedMeridiem);\n },\n [handleTimeChange, selectedHour, selectedMeridiem],\n );\n\n const handleMeridiemClick = useCallback(\n (value: string) => {\n setSelectedMeridiem(value);\n handleTimeChange(selectedHour, selectedMinute, value);\n },\n [handleTimeChange, selectedHour, selectedMinute],\n );\n\n useEffect(() => {\n // Set default selections based on value passed in\n if (initialTime) {\n const localTime = new Date(initialTime);\n\n // calculate hours\n const hours = localTime.getHours();\n const adjustedHours = hours % 12 || 12;\n\n setSelectedTime(initialTime);\n setSelectedHour(adjustedHours.toString());\n setSelectedMinute(localTime.getMinutes().toString());\n setSelectedMeridiem(localTime.getHours() > 11 ? Meridiem.PM : Meridiem.AM);\n }\n }, [initialTime]);\n\n return (\n <Popover\n open={isOpen}\n onOpenChange={({ open }) => {\n setIsOpen(open);\n if (!open && onClose) {\n onClose(selectedTime);\n }\n }}\n anchor={\n <Box className=\"TimePicker__Trigger\" data-testid={`${dataTestId}-trigger`} css={styles.trigger}>\n <TextInput\n placeholder=\"12:00 AM\"\n rightElement={<Icon size={useIconTextSizeMap(inputProps?.size || 'md')} name=\"clock\" />}\n value={formattedTime}\n readOnly\n cursor=\"pointer\"\n {...inputProps}\n {...(isOpen && { 'data-focus': 'true' })}\n />\n </Box>\n }\n contentProps={{ w: 'max-content' }}\n placement={placement}\n variant={inputProps?.onContrast ? 'contrast' : 'default'}\n showArrow={false}\n >\n <Box className=\"TimePicker__Container\" data-testid={`${dataTestId}-container`} css={styles.container}>\n <TimeList\n options={hourOptions}\n optionType=\"hour\"\n selectedValue={selectedHour}\n onClick={handleHourClick}\n open={isOpen}\n data-testid={`${dataTestId}-hour-list`}\n />\n <TimeList\n options={minuteOptions}\n optionType=\"minute\"\n selectedValue={selectedMinute ? formatNumber(selectedMinute) : undefined}\n onClick={handleMinuteClick}\n open={isOpen}\n data-testid={`${dataTestId}-minute-list`}\n />\n <TimeList\n options={meridiemOptions}\n optionType=\"meridiem\"\n selectedValue={selectedMeridiem}\n onClick={handleMeridiemClick}\n open={isOpen}\n data-testid={`${dataTestId}-meridiem-list`}\n />\n </Box>\n </Popover>\n );\n};\n"],"names":["timeOptionRecipe","defineRecipe","TimeOption","value","innerRef","onClick","selected","dataTestId","styles","useRecipe","handleClick","useCallback","event","selectedValue","jsx","Box","timePickerRecipe","defineSlotRecipe","TimeList","options","optionType","open","useSlotRecipe","itemRef","useRef","useEffect","option","isSelected","Meridiem","TimePicker","initialTime","inputProps","minuteInterval","onTimeChange","onClose","placement","isOpen","setIsOpen","useState","selectedTime","setSelectedTime","selectedHour","setSelectedHour","selectedMinute","setSelectedMinute","selectedMeridiem","setSelectedMeridiem","formattedTime","useMemo","format","formatNumber","number","formattedValue","hourOptions","hour","minuteOptions","minutes","i","meridiemOptions","handleTimeChange","minute","meridiem","_hour","_minute","_meridiem","meridiemAdjustment","hours","time","date","handleHourClick","handleMinuteClick","handleMeridiemClick","localTime","adjustedHours","Popover","TextInput","Icon","useIconTextSizeMap","jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"timePicker.component-O5_k6YYo.js","sources":["../../src/components/TimePicker/components/TimeOption/timeOption.recipe.ts","../../src/components/TimePicker/components/TimeOption/timeOption.component.tsx","../../src/components/TimePicker/timePicker.recipe.ts","../../src/components/TimePicker/components/TimeList/timeList.component.tsx","../../src/components/TimePicker/timePicker.types.ts","../../src/components/TimePicker/timePicker.component.tsx"],"sourcesContent":["import { defineRecipe } from '@chakra-ui/react/styled-system';\n\nexport const timeOptionRecipe = defineRecipe({\n base: {\n borderRadius: '4px',\n cursor: 'pointer',\n fontSize: 'sm',\n px: 3,\n py: 1,\n textAlign: 'center',\n },\n variants: {\n selected: {\n true: {\n background: 'background.secondary',\n color: 'text.contrast',\n _hover: {\n background: 'background.secondary.hover',\n },\n },\n false: {\n background: 'background',\n color: 'text.subtle',\n _hover: {\n background: 'background.secondaryAlpha.hover',\n },\n },\n },\n },\n defaultVariants: {\n selected: false,\n },\n});\n","import React, { useCallback } from 'react';\nimport { Box } from '@chakra-ui/react/box';\nimport { useRecipe } from '@chakra-ui/react/styled-system';\nimport { timeOptionRecipe } from './timeOption.recipe';\n\ninterface TimeOptionProps {\n /** Ref to the option component. */\n innerRef?: React.Ref<HTMLDivElement | null> | null;\n /** Callback function to be called when the option is clicked. */\n onClick: (selectedValue: string) => void;\n /** If true, the option will be selected. */\n selected: boolean;\n /** Value of the option. */\n value: string;\n /** Data test id for the option.\n * @default kibble-timepicker-option\n */\n 'data-testid'?: string;\n}\n\nexport const TimeOption = ({\n value,\n innerRef,\n onClick,\n selected,\n ['data-testid']: dataTestId = 'kibble-timepicker-option',\n}: TimeOptionProps): React.JSX.Element => {\n const recipe = useRecipe({ recipe: timeOptionRecipe });\n const styles = recipe({ selected });\n\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n const selectedValue = event.currentTarget.textContent || '';\n onClick(selectedValue);\n },\n [onClick],\n );\n\n return (\n <Box className=\"TimePicker__Option\" data-testid={dataTestId} ref={innerRef} onClick={handleClick} css={styles}>\n {value}\n </Box>\n );\n};\n","import { defineSlotRecipe } from '@chakra-ui/react/styled-system';\n\nexport const timePickerRecipe = defineSlotRecipe({\n slots: ['trigger', 'container', 'list'],\n base: {\n trigger: {\n width: '100%',\n },\n container: {\n display: 'flex',\n gap: 1.5,\n height: '186px',\n overflow: 'hidden',\n },\n list: {\n display: 'flex',\n flexDirection: 'column',\n gap: 1,\n overflowY: 'auto',\n '&::webkit-scrollbar': {\n display: 'none',\n },\n },\n },\n});\n","import React, { useEffect, useRef } from 'react';\nimport { Box } from '@chakra-ui/react/box';\nimport { TimeOption } from '../TimeOption/timeOption.component';\nimport { useSlotRecipe } from '@chakra-ui/react/styled-system';\nimport { timePickerRecipe } from '../../timePicker.recipe';\n\ninterface ScrollContainerProps {\n /** Options to display in the list. */\n options: string[];\n /** Type of the option. */\n optionType: 'hour' | 'minute' | 'meridiem';\n /** Selected value of the list. */\n selectedValue?: string;\n /** Callback function to be called when the option is clicked. */\n onClick: (value: string) => void;\n /** Determines if the list is open. */\n open: boolean;\n /** Data test id for the list.\n * @default kibble-timepicker-list\n */\n 'data-testid'?: string;\n}\n\nexport const TimeList = ({\n options,\n optionType,\n selectedValue,\n onClick,\n open = false,\n ['data-testid']: dataTestId = 'kibble-timepicker-list',\n}: ScrollContainerProps): React.JSX.Element => {\n const recipe = useSlotRecipe({ recipe: timePickerRecipe });\n const styles = recipe();\n const itemRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (open && itemRef.current) {\n requestAnimationFrame(() => {\n if (itemRef.current) {\n itemRef.current.scrollIntoView({ block: 'center' });\n }\n });\n }\n }, [open, selectedValue]);\n\n return (\n <Box className=\"TimePicker__List\" data-testid={`${dataTestId}-${optionType}-list`} css={styles.list}>\n {options.map((option) => {\n const isSelected = option === selectedValue;\n return (\n <TimeOption\n key={`${optionType}-option-${option}`}\n innerRef={isSelected ? itemRef : null}\n value={option}\n selected={option === selectedValue}\n onClick={onClick}\n data-testid={`${dataTestId}-${optionType}-option-${option}`}\n />\n );\n })}\n </Box>\n );\n};\n","export enum Meridiem {\n AM = 'AM',\n PM = 'PM',\n}\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { TextInput, TextInputProps } from 'components/TextInput/textInput.component';\nimport { Popover } from 'components/Popover/popover.component';\nimport { Icon } from 'components/Icon/icon.component';\nimport { useIconTextSizeMap } from 'hooks/useIconTextSizeMap';\nimport format from 'date-fns/format';\nimport { Box } from '@chakra-ui/react/box';\nimport { TimeList } from './components/TimeList/timeList.component';\nimport { Meridiem } from './timePicker.types';\nimport { useSlotRecipe } from '@chakra-ui/react/styled-system';\nimport { timePickerRecipe } from './timePicker.recipe';\nimport { Placement } from 'shared/types/placement';\n\nexport interface TimePickerProps {\n /** Initial time to be displayed in the input field. */\n initialTime?: Date;\n /** Props to customize the input field. See `TextInput` for more information. */\n inputProps?: Omit<TextInputProps, 'onChange' | 'value' | 'isClearable' | 'onClear'>;\n /**\n * Interval of minutes to be displayed in the dropdown.\n * @default 5\n */\n minuteInterval?: number;\n /** Callback function triggered when the time is changed. */\n onTimeChange?: (time: Date) => void;\n /** Callback function triggered when the time picker is closed. */\n onClose?: (time?: Date) => void;\n /**\n * Placement of the dropdown relative to the input field.\n * @default bottom\n */\n placement?: Placement;\n /**\n * Data test id for the time picker.\n * @default kibble-timepicker\n */\n 'data-testid'?: string;\n}\n\nexport const TimePicker = ({\n initialTime,\n inputProps,\n minuteInterval = 5,\n onTimeChange,\n onClose,\n placement = 'bottom',\n ['data-testid']: dataTestId = 'kibble-timepicker',\n}: TimePickerProps): React.JSX.Element => {\n const recipe = useSlotRecipe({ recipe: timePickerRecipe });\n const styles = recipe();\n const [isOpen, setIsOpen] = useState(false);\n const [selectedTime, setSelectedTime] = useState(initialTime);\n const [selectedHour, setSelectedHour] = useState<string | undefined>();\n const [selectedMinute, setSelectedMinute] = useState<string | undefined>();\n const [selectedMeridiem, setSelectedMeridiem] = useState<string | undefined>();\n\n const formattedTime = useMemo(() => {\n if (!selectedTime) return '';\n return format(selectedTime, 'h:mm aa');\n }, [selectedTime]);\n\n const formatNumber = (number: number | string): string => {\n const formattedValue = number.toString();\n if (formattedValue.length === 1) {\n return `0${formattedValue}`;\n }\n\n return formattedValue;\n };\n\n const hourOptions = useMemo(() => {\n return [12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11].map((hour) => hour.toString());\n }, []);\n\n const minuteOptions = useMemo(() => {\n const minutes = [];\n for (let i = 0; i < 60; i += minuteInterval) {\n minutes.push(i);\n }\n\n return minutes.map(formatNumber);\n }, [minuteInterval]);\n\n const meridiemOptions = [Meridiem.AM, Meridiem.PM];\n\n const handleTimeChange = useCallback(\n (hour?: string, minute?: string, meridiem?: string) => {\n const _hour = hour || '12';\n const _minute = minute || '00';\n const _meridiem = meridiem || 'AM';\n let meridiemAdjustment = 0;\n\n if (!hour) {\n setSelectedHour('12');\n }\n if (!minute) {\n setSelectedMinute('00');\n }\n if (!meridiem) {\n setSelectedMeridiem('AM');\n }\n\n // set 1-11pm to 13-23. Don't set 12pm to 24\n if (_meridiem === Meridiem.PM && Number(_hour) < 12) {\n meridiemAdjustment = 12;\n }\n\n // set 12am to 00\n if (_meridiem === Meridiem.AM && Number(_hour) === 12) {\n meridiemAdjustment = -12;\n }\n\n const hours = Number(_hour) + meridiemAdjustment;\n const time = new Date().setHours(hours, Number(_minute), 0, 0);\n const date = new Date(time);\n setSelectedTime(date);\n\n if (onTimeChange) {\n onTimeChange(date);\n }\n },\n [onTimeChange],\n );\n\n const handleHourClick = useCallback(\n (value: string) => {\n setSelectedHour(value);\n handleTimeChange(value, selectedMinute, selectedMeridiem);\n },\n [handleTimeChange, selectedMeridiem, selectedMinute],\n );\n\n const handleMinuteClick = useCallback(\n (value: string) => {\n setSelectedMinute(value);\n handleTimeChange(selectedHour, value, selectedMeridiem);\n },\n [handleTimeChange, selectedHour, selectedMeridiem],\n );\n\n const handleMeridiemClick = useCallback(\n (value: string) => {\n setSelectedMeridiem(value);\n handleTimeChange(selectedHour, selectedMinute, value);\n },\n [handleTimeChange, selectedHour, selectedMinute],\n );\n\n useEffect(() => {\n // Set default selections based on value passed in\n if (initialTime) {\n const localTime = new Date(initialTime);\n\n // calculate hours\n const hours = localTime.getHours();\n const adjustedHours = hours % 12 || 12;\n\n setSelectedTime(initialTime);\n setSelectedHour(adjustedHours.toString());\n setSelectedMinute(localTime.getMinutes().toString());\n setSelectedMeridiem(localTime.getHours() > 11 ? Meridiem.PM : Meridiem.AM);\n }\n }, [initialTime]);\n\n return (\n <Popover\n open={isOpen}\n onOpenChange={({ open }) => {\n setIsOpen(open);\n if (!open && onClose) {\n onClose(selectedTime);\n }\n }}\n anchor={\n <Box className=\"TimePicker__Trigger\" data-testid={`${dataTestId}-trigger`} css={styles.trigger}>\n <TextInput\n placeholder=\"12:00 AM\"\n rightElement={<Icon size={useIconTextSizeMap(inputProps?.size || 'md')} name=\"clock\" />}\n value={formattedTime}\n readOnly\n cursor=\"pointer\"\n {...inputProps}\n {...(isOpen && { 'data-focus': 'true' })}\n />\n </Box>\n }\n contentProps={{ w: 'max-content' }}\n placement={placement}\n variant={inputProps?.onContrast ? 'contrast' : 'default'}\n showArrow={false}\n >\n <Box className=\"TimePicker__Container\" data-testid={`${dataTestId}-container`} css={styles.container}>\n <TimeList\n options={hourOptions}\n optionType=\"hour\"\n selectedValue={selectedHour}\n onClick={handleHourClick}\n open={isOpen}\n data-testid={`${dataTestId}-hour-list`}\n />\n <TimeList\n options={minuteOptions}\n optionType=\"minute\"\n selectedValue={selectedMinute ? formatNumber(selectedMinute) : undefined}\n onClick={handleMinuteClick}\n open={isOpen}\n data-testid={`${dataTestId}-minute-list`}\n />\n <TimeList\n options={meridiemOptions}\n optionType=\"meridiem\"\n selectedValue={selectedMeridiem}\n onClick={handleMeridiemClick}\n open={isOpen}\n data-testid={`${dataTestId}-meridiem-list`}\n />\n </Box>\n </Popover>\n );\n};\n"],"names":["timeOptionRecipe","defineRecipe","TimeOption","value","innerRef","onClick","selected","dataTestId","styles","useRecipe","handleClick","useCallback","event","selectedValue","jsx","Box","timePickerRecipe","defineSlotRecipe","TimeList","options","optionType","open","useSlotRecipe","itemRef","useRef","useEffect","option","isSelected","Meridiem","TimePicker","initialTime","inputProps","minuteInterval","onTimeChange","onClose","placement","isOpen","setIsOpen","useState","selectedTime","setSelectedTime","selectedHour","setSelectedHour","selectedMinute","setSelectedMinute","selectedMeridiem","setSelectedMeridiem","formattedTime","useMemo","format","formatNumber","number","formattedValue","hourOptions","hour","minuteOptions","minutes","i","meridiemOptions","handleTimeChange","minute","meridiem","_hour","_minute","_meridiem","meridiemAdjustment","hours","time","date","handleHourClick","handleMinuteClick","handleMeridiemClick","localTime","adjustedHours","Popover","TextInput","Icon","useIconTextSizeMap","jsxs"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";const n=require("./jsx-runtime-BjDatQAs.js"),t=require("react"),Y=require("./textInput.component-BDJuvT1c.js"),G=require("./popover.component-Cw6-018C.js"),J=require("./icon.component-B1hr5lLa.js"),K=require("./useIconTextSizeMap-BXmABb54.js"),Q=require("./format-CK7Imh-5.js"),j=require("./index-BQRnVsAg.js"),v=require("./config-jChwZPSv.js"),U=require("./use-recipe-DaPWl_pL.js"),O=require("./create-slot-recipe-context-HXE1VazG.js"),X=v.defineRecipe({base:{borderRadius:"4px",cursor:"pointer",fontSize:"sm",px:3,py:1,textAlign:"center"},variants:{selected:{true:{background:"background.secondary",color:"text.contrast",_hover:{background:"background.secondary.hover"}},false:{background:"background",color:"text.subtle",_hover:{background:"background.secondaryAlpha.hover"}}}},defaultVariants:{selected:!1}}),Z=({value:s,innerRef:i,onClick:c,selected:d,["data-testid"]:m="kibble-timepicker-option"})=>{const a=U.useRecipe({recipe:X})({selected:d}),b=t.useCallback(u=>{const r=u.currentTarget.textContent||"";c(r)},[c]);return n.jsxRuntimeExports.jsx(j.Box,{className:"TimePicker__Option","data-testid":m,ref:i,onClick:b,css:a,children:s})},N=v.defineSlotRecipe({slots:["trigger","container","list"],base:{trigger:{width:"100%"},container:{display:"flex",gap:1.5,height:"186px",overflow:"hidden"},list:{display:"flex",flexDirection:"column",gap:1,overflowY:"auto","&::webkit-scrollbar":{display:"none"}}}}),$=({options:s,optionType:i,selectedValue:c,onClick:d,open:m=!1,["data-testid"]:f="kibble-timepicker-list"})=>{const b=O.useSlotRecipe({recipe:N})(),u=t.useRef(null);return t.useEffect(()=>{m&&u.current&&requestAnimationFrame(()=>{u.current&&u.current.scrollIntoView({block:"center"})})},[m,c]),n.jsxRuntimeExports.jsx(j.Box,{className:"TimePicker__List","data-testid":`${f}-${i}-list`,css:b.list,children:s.map(r=>{const M=r===c;return n.jsxRuntimeExports.jsx(Z,{innerRef:M?u:null,value:r,selected:r===c,onClick:d,"data-testid":`${f}-${i}-option-${r}`},`${i}-option-${r}`)})})};var l=(s=>(s.AM="AM",s.PM="PM",s))(l||{});const ee=({initialTime:s,inputProps:i,minuteInterval:c=5,onTimeChange:d,onClose:m,placement:f="bottom",["data-testid"]:a="kibble-timepicker"})=>{const u=O.useSlotRecipe({recipe:N})(),[r,M]=t.useState(!1),[h,q]=t.useState(s),[k,S]=t.useState(),[p,_]=t.useState(),[g,C]=t.useState(),T=t.useMemo(()=>h?Q.format(h,"h:mm aa"):"",[h]),y=e=>{const o=e.toString();return o.length===1?`0${o}`:o},H=t.useMemo(()=>[12,1,2,3,4,5,6,7,8,9,10,11].map(e=>e.toString()),[]),z=t.useMemo(()=>{const e=[];for(let o=0;o<60;o+=c)e.push(o);return e.map(y)},[c]),V=[l.AM,l.PM],x=t.useCallback((e,o,R)=>{const E=e||"12",F=o||"00",P=R||"AM";let A=0;e||S("12"),o||_("00"),R||C("AM"),P===l.PM&&Number(E)<12&&(A=12),P===l.AM&&Number(E)===12&&(A=-12);const I=Number(E)+A,W=new Date().setHours(I,Number(F),0,0),w=new Date(W);q(w),d&&d(w)},[d]),B=t.useCallback(e=>{S(e),x(e,p,g)},[x,g,p]),D=t.useCallback(e=>{_(e),x(k,e,g)},[x,k,g]),L=t.useCallback(e=>{C(e),x(k,p,e)},[x,k,p]);return t.useEffect(()=>{if(s){const e=new Date(s),R=e.getHours()%12||12;q(s),S(R.toString()),_(e.getMinutes().toString()),C(e.getHours()>11?l.PM:l.AM)}},[s]),n.jsxRuntimeExports.jsx(G.Popover,{open:r,onOpenChange:({open:e})=>{M(e),!e&&m&&m(h)},anchor:n.jsxRuntimeExports.jsx(j.Box,{className:"TimePicker__Trigger","data-testid":`${a}-trigger`,css:u.trigger,children:n.jsxRuntimeExports.jsx(Y.WrappedTextInput,{placeholder:"12:00 AM",rightElement:n.jsxRuntimeExports.jsx(J.Icon,{size:K.useIconTextSizeMap(i?.size||"md"),name:"clock"}),value:T,readOnly:!0,cursor:"pointer",...i,...r&&{"data-focus":"true"}})}),contentProps:{w:"max-content"},placement:f,variant:i?.onContrast?"contrast":"default",showArrow:!1,children:n.jsxRuntimeExports.jsxs(j.Box,{className:"TimePicker__Container","data-testid":`${a}-container`,css:u.container,children:[n.jsxRuntimeExports.jsx($,{options:H,optionType:"hour",selectedValue:k,onClick:B,open:r,"data-testid":`${a}-hour-list`}),n.jsxRuntimeExports.jsx($,{options:z,optionType:"minute",selectedValue:p?y(p):void 0,onClick:D,open:r,"data-testid":`${a}-minute-list`}),n.jsxRuntimeExports.jsx($,{options:V,optionType:"meridiem",selectedValue:g,onClick:L,open:r,"data-testid":`${a}-meridiem-list`})]})})};exports.Meridiem=l;exports.TimePicker=ee;
2
- //# sourceMappingURL=timePicker.component-D2gDf5fp.js.map
1
+ "use strict";const n=require("./jsx-runtime-BjDatQAs.js"),t=require("react"),Y=require("./textInput.component-KjxR5ln_.js"),G=require("./popover.component-Cw6-018C.js"),J=require("./icon.component-B1hr5lLa.js"),K=require("./useIconTextSizeMap-BXmABb54.js"),Q=require("./format-CK7Imh-5.js"),j=require("./index-BQRnVsAg.js"),v=require("./config-jChwZPSv.js"),U=require("./use-recipe-DaPWl_pL.js"),O=require("./create-slot-recipe-context-HXE1VazG.js"),X=v.defineRecipe({base:{borderRadius:"4px",cursor:"pointer",fontSize:"sm",px:3,py:1,textAlign:"center"},variants:{selected:{true:{background:"background.secondary",color:"text.contrast",_hover:{background:"background.secondary.hover"}},false:{background:"background",color:"text.subtle",_hover:{background:"background.secondaryAlpha.hover"}}}},defaultVariants:{selected:!1}}),Z=({value:s,innerRef:i,onClick:c,selected:d,["data-testid"]:m="kibble-timepicker-option"})=>{const a=U.useRecipe({recipe:X})({selected:d}),b=t.useCallback(u=>{const r=u.currentTarget.textContent||"";c(r)},[c]);return n.jsxRuntimeExports.jsx(j.Box,{className:"TimePicker__Option","data-testid":m,ref:i,onClick:b,css:a,children:s})},N=v.defineSlotRecipe({slots:["trigger","container","list"],base:{trigger:{width:"100%"},container:{display:"flex",gap:1.5,height:"186px",overflow:"hidden"},list:{display:"flex",flexDirection:"column",gap:1,overflowY:"auto","&::webkit-scrollbar":{display:"none"}}}}),$=({options:s,optionType:i,selectedValue:c,onClick:d,open:m=!1,["data-testid"]:f="kibble-timepicker-list"})=>{const b=O.useSlotRecipe({recipe:N})(),u=t.useRef(null);return t.useEffect(()=>{m&&u.current&&requestAnimationFrame(()=>{u.current&&u.current.scrollIntoView({block:"center"})})},[m,c]),n.jsxRuntimeExports.jsx(j.Box,{className:"TimePicker__List","data-testid":`${f}-${i}-list`,css:b.list,children:s.map(r=>{const M=r===c;return n.jsxRuntimeExports.jsx(Z,{innerRef:M?u:null,value:r,selected:r===c,onClick:d,"data-testid":`${f}-${i}-option-${r}`},`${i}-option-${r}`)})})};var l=(s=>(s.AM="AM",s.PM="PM",s))(l||{});const ee=({initialTime:s,inputProps:i,minuteInterval:c=5,onTimeChange:d,onClose:m,placement:f="bottom",["data-testid"]:a="kibble-timepicker"})=>{const u=O.useSlotRecipe({recipe:N})(),[r,M]=t.useState(!1),[h,q]=t.useState(s),[k,S]=t.useState(),[p,_]=t.useState(),[g,C]=t.useState(),T=t.useMemo(()=>h?Q.format(h,"h:mm aa"):"",[h]),y=e=>{const o=e.toString();return o.length===1?`0${o}`:o},H=t.useMemo(()=>[12,1,2,3,4,5,6,7,8,9,10,11].map(e=>e.toString()),[]),z=t.useMemo(()=>{const e=[];for(let o=0;o<60;o+=c)e.push(o);return e.map(y)},[c]),V=[l.AM,l.PM],x=t.useCallback((e,o,R)=>{const E=e||"12",F=o||"00",P=R||"AM";let A=0;e||S("12"),o||_("00"),R||C("AM"),P===l.PM&&Number(E)<12&&(A=12),P===l.AM&&Number(E)===12&&(A=-12);const I=Number(E)+A,W=new Date().setHours(I,Number(F),0,0),w=new Date(W);q(w),d&&d(w)},[d]),B=t.useCallback(e=>{S(e),x(e,p,g)},[x,g,p]),D=t.useCallback(e=>{_(e),x(k,e,g)},[x,k,g]),L=t.useCallback(e=>{C(e),x(k,p,e)},[x,k,p]);return t.useEffect(()=>{if(s){const e=new Date(s),R=e.getHours()%12||12;q(s),S(R.toString()),_(e.getMinutes().toString()),C(e.getHours()>11?l.PM:l.AM)}},[s]),n.jsxRuntimeExports.jsx(G.Popover,{open:r,onOpenChange:({open:e})=>{M(e),!e&&m&&m(h)},anchor:n.jsxRuntimeExports.jsx(j.Box,{className:"TimePicker__Trigger","data-testid":`${a}-trigger`,css:u.trigger,children:n.jsxRuntimeExports.jsx(Y.WrappedTextInput,{placeholder:"12:00 AM",rightElement:n.jsxRuntimeExports.jsx(J.Icon,{size:K.useIconTextSizeMap(i?.size||"md"),name:"clock"}),value:T,readOnly:!0,cursor:"pointer",...i,...r&&{"data-focus":"true"}})}),contentProps:{w:"max-content"},placement:f,variant:i?.onContrast?"contrast":"default",showArrow:!1,children:n.jsxRuntimeExports.jsxs(j.Box,{className:"TimePicker__Container","data-testid":`${a}-container`,css:u.container,children:[n.jsxRuntimeExports.jsx($,{options:H,optionType:"hour",selectedValue:k,onClick:B,open:r,"data-testid":`${a}-hour-list`}),n.jsxRuntimeExports.jsx($,{options:z,optionType:"minute",selectedValue:p?y(p):void 0,onClick:D,open:r,"data-testid":`${a}-minute-list`}),n.jsxRuntimeExports.jsx($,{options:V,optionType:"meridiem",selectedValue:g,onClick:L,open:r,"data-testid":`${a}-meridiem-list`})]})})};exports.Meridiem=l;exports.TimePicker=ee;
2
+ //# sourceMappingURL=timePicker.component-uf5hCWTW.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"timePicker.component-D2gDf5fp.js","sources":["../../src/components/TimePicker/components/TimeOption/timeOption.recipe.ts","../../src/components/TimePicker/components/TimeOption/timeOption.component.tsx","../../src/components/TimePicker/timePicker.recipe.ts","../../src/components/TimePicker/components/TimeList/timeList.component.tsx","../../src/components/TimePicker/timePicker.types.ts","../../src/components/TimePicker/timePicker.component.tsx"],"sourcesContent":["import { defineRecipe } from '@chakra-ui/react/styled-system';\n\nexport const timeOptionRecipe = defineRecipe({\n base: {\n borderRadius: '4px',\n cursor: 'pointer',\n fontSize: 'sm',\n px: 3,\n py: 1,\n textAlign: 'center',\n },\n variants: {\n selected: {\n true: {\n background: 'background.secondary',\n color: 'text.contrast',\n _hover: {\n background: 'background.secondary.hover',\n },\n },\n false: {\n background: 'background',\n color: 'text.subtle',\n _hover: {\n background: 'background.secondaryAlpha.hover',\n },\n },\n },\n },\n defaultVariants: {\n selected: false,\n },\n});\n","import React, { useCallback } from 'react';\nimport { Box } from '@chakra-ui/react/box';\nimport { useRecipe } from '@chakra-ui/react/styled-system';\nimport { timeOptionRecipe } from './timeOption.recipe';\n\ninterface TimeOptionProps {\n /** Ref to the option component. */\n innerRef?: React.Ref<HTMLDivElement | null> | null;\n /** Callback function to be called when the option is clicked. */\n onClick: (selectedValue: string) => void;\n /** If true, the option will be selected. */\n selected: boolean;\n /** Value of the option. */\n value: string;\n /** Data test id for the option.\n * @default kibble-timepicker-option\n */\n 'data-testid'?: string;\n}\n\nexport const TimeOption = ({\n value,\n innerRef,\n onClick,\n selected,\n ['data-testid']: dataTestId = 'kibble-timepicker-option',\n}: TimeOptionProps): React.JSX.Element => {\n const recipe = useRecipe({ recipe: timeOptionRecipe });\n const styles = recipe({ selected });\n\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n const selectedValue = event.currentTarget.textContent || '';\n onClick(selectedValue);\n },\n [onClick],\n );\n\n return (\n <Box className=\"TimePicker__Option\" data-testid={dataTestId} ref={innerRef} onClick={handleClick} css={styles}>\n {value}\n </Box>\n );\n};\n","import { defineSlotRecipe } from '@chakra-ui/react/styled-system';\n\nexport const timePickerRecipe = defineSlotRecipe({\n slots: ['trigger', 'container', 'list'],\n base: {\n trigger: {\n width: '100%',\n },\n container: {\n display: 'flex',\n gap: 1.5,\n height: '186px',\n overflow: 'hidden',\n },\n list: {\n display: 'flex',\n flexDirection: 'column',\n gap: 1,\n overflowY: 'auto',\n '&::webkit-scrollbar': {\n display: 'none',\n },\n },\n },\n});\n","import React, { useEffect, useRef } from 'react';\nimport { Box } from '@chakra-ui/react/box';\nimport { TimeOption } from '../TimeOption/timeOption.component';\nimport { useSlotRecipe } from '@chakra-ui/react/styled-system';\nimport { timePickerRecipe } from '../../timePicker.recipe';\n\ninterface ScrollContainerProps {\n /** Options to display in the list. */\n options: string[];\n /** Type of the option. */\n optionType: 'hour' | 'minute' | 'meridiem';\n /** Selected value of the list. */\n selectedValue?: string;\n /** Callback function to be called when the option is clicked. */\n onClick: (value: string) => void;\n /** Determines if the list is open. */\n open: boolean;\n /** Data test id for the list.\n * @default kibble-timepicker-list\n */\n 'data-testid'?: string;\n}\n\nexport const TimeList = ({\n options,\n optionType,\n selectedValue,\n onClick,\n open = false,\n ['data-testid']: dataTestId = 'kibble-timepicker-list',\n}: ScrollContainerProps): React.JSX.Element => {\n const recipe = useSlotRecipe({ recipe: timePickerRecipe });\n const styles = recipe();\n const itemRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (open && itemRef.current) {\n requestAnimationFrame(() => {\n if (itemRef.current) {\n itemRef.current.scrollIntoView({ block: 'center' });\n }\n });\n }\n }, [open, selectedValue]);\n\n return (\n <Box className=\"TimePicker__List\" data-testid={`${dataTestId}-${optionType}-list`} css={styles.list}>\n {options.map((option) => {\n const isSelected = option === selectedValue;\n return (\n <TimeOption\n key={`${optionType}-option-${option}`}\n innerRef={isSelected ? itemRef : null}\n value={option}\n selected={option === selectedValue}\n onClick={onClick}\n data-testid={`${dataTestId}-${optionType}-option-${option}`}\n />\n );\n })}\n </Box>\n );\n};\n","export enum Meridiem {\n AM = 'AM',\n PM = 'PM',\n}\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { TextInput, TextInputProps } from 'components/TextInput/textInput.component';\nimport { Popover } from 'components/Popover/popover.component';\nimport { Icon } from 'components/Icon/icon.component';\nimport { useIconTextSizeMap } from 'hooks/useIconTextSizeMap';\nimport format from 'date-fns/format';\nimport { Box } from '@chakra-ui/react/box';\nimport { TimeList } from './components/TimeList/timeList.component';\nimport { Meridiem } from './timePicker.types';\nimport { useSlotRecipe } from '@chakra-ui/react/styled-system';\nimport { timePickerRecipe } from './timePicker.recipe';\nimport { Placement } from 'shared/types/placement';\n\nexport interface TimePickerProps {\n /** Initial time to be displayed in the input field. */\n initialTime?: Date;\n /** Props to customize the input field. See `TextInput` for more information. */\n inputProps?: Omit<TextInputProps, 'onChange' | 'value' | 'isClearable' | 'onClear'>;\n /**\n * Interval of minutes to be displayed in the dropdown.\n * @default 5\n */\n minuteInterval?: number;\n /** Callback function triggered when the time is changed. */\n onTimeChange?: (time: Date) => void;\n /** Callback function triggered when the time picker is closed. */\n onClose?: (time?: Date) => void;\n /**\n * Placement of the dropdown relative to the input field.\n * @default bottom\n */\n placement?: Placement;\n /**\n * Data test id for the time picker.\n * @default kibble-timepicker\n */\n 'data-testid'?: string;\n}\n\nexport const TimePicker = ({\n initialTime,\n inputProps,\n minuteInterval = 5,\n onTimeChange,\n onClose,\n placement = 'bottom',\n ['data-testid']: dataTestId = 'kibble-timepicker',\n}: TimePickerProps): React.JSX.Element => {\n const recipe = useSlotRecipe({ recipe: timePickerRecipe });\n const styles = recipe();\n const [isOpen, setIsOpen] = useState(false);\n const [selectedTime, setSelectedTime] = useState(initialTime);\n const [selectedHour, setSelectedHour] = useState<string | undefined>();\n const [selectedMinute, setSelectedMinute] = useState<string | undefined>();\n const [selectedMeridiem, setSelectedMeridiem] = useState<string | undefined>();\n\n const formattedTime = useMemo(() => {\n if (!selectedTime) return '';\n return format(selectedTime, 'h:mm aa');\n }, [selectedTime]);\n\n const formatNumber = (number: number | string): string => {\n const formattedValue = number.toString();\n if (formattedValue.length === 1) {\n return `0${formattedValue}`;\n }\n\n return formattedValue;\n };\n\n const hourOptions = useMemo(() => {\n return [12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11].map((hour) => hour.toString());\n }, []);\n\n const minuteOptions = useMemo(() => {\n const minutes = [];\n for (let i = 0; i < 60; i += minuteInterval) {\n minutes.push(i);\n }\n\n return minutes.map(formatNumber);\n }, [minuteInterval]);\n\n const meridiemOptions = [Meridiem.AM, Meridiem.PM];\n\n const handleTimeChange = useCallback(\n (hour?: string, minute?: string, meridiem?: string) => {\n const _hour = hour || '12';\n const _minute = minute || '00';\n const _meridiem = meridiem || 'AM';\n let meridiemAdjustment = 0;\n\n if (!hour) {\n setSelectedHour('12');\n }\n if (!minute) {\n setSelectedMinute('00');\n }\n if (!meridiem) {\n setSelectedMeridiem('AM');\n }\n\n // set 1-11pm to 13-23. Don't set 12pm to 24\n if (_meridiem === Meridiem.PM && Number(_hour) < 12) {\n meridiemAdjustment = 12;\n }\n\n // set 12am to 00\n if (_meridiem === Meridiem.AM && Number(_hour) === 12) {\n meridiemAdjustment = -12;\n }\n\n const hours = Number(_hour) + meridiemAdjustment;\n const time = new Date().setHours(hours, Number(_minute), 0, 0);\n const date = new Date(time);\n setSelectedTime(date);\n\n if (onTimeChange) {\n onTimeChange(date);\n }\n },\n [onTimeChange],\n );\n\n const handleHourClick = useCallback(\n (value: string) => {\n setSelectedHour(value);\n handleTimeChange(value, selectedMinute, selectedMeridiem);\n },\n [handleTimeChange, selectedMeridiem, selectedMinute],\n );\n\n const handleMinuteClick = useCallback(\n (value: string) => {\n setSelectedMinute(value);\n handleTimeChange(selectedHour, value, selectedMeridiem);\n },\n [handleTimeChange, selectedHour, selectedMeridiem],\n );\n\n const handleMeridiemClick = useCallback(\n (value: string) => {\n setSelectedMeridiem(value);\n handleTimeChange(selectedHour, selectedMinute, value);\n },\n [handleTimeChange, selectedHour, selectedMinute],\n );\n\n useEffect(() => {\n // Set default selections based on value passed in\n if (initialTime) {\n const localTime = new Date(initialTime);\n\n // calculate hours\n const hours = localTime.getHours();\n const adjustedHours = hours % 12 || 12;\n\n setSelectedTime(initialTime);\n setSelectedHour(adjustedHours.toString());\n setSelectedMinute(localTime.getMinutes().toString());\n setSelectedMeridiem(localTime.getHours() > 11 ? Meridiem.PM : Meridiem.AM);\n }\n }, [initialTime]);\n\n return (\n <Popover\n open={isOpen}\n onOpenChange={({ open }) => {\n setIsOpen(open);\n if (!open && onClose) {\n onClose(selectedTime);\n }\n }}\n anchor={\n <Box className=\"TimePicker__Trigger\" data-testid={`${dataTestId}-trigger`} css={styles.trigger}>\n <TextInput\n placeholder=\"12:00 AM\"\n rightElement={<Icon size={useIconTextSizeMap(inputProps?.size || 'md')} name=\"clock\" />}\n value={formattedTime}\n readOnly\n cursor=\"pointer\"\n {...inputProps}\n {...(isOpen && { 'data-focus': 'true' })}\n />\n </Box>\n }\n contentProps={{ w: 'max-content' }}\n placement={placement}\n variant={inputProps?.onContrast ? 'contrast' : 'default'}\n showArrow={false}\n >\n <Box className=\"TimePicker__Container\" data-testid={`${dataTestId}-container`} css={styles.container}>\n <TimeList\n options={hourOptions}\n optionType=\"hour\"\n selectedValue={selectedHour}\n onClick={handleHourClick}\n open={isOpen}\n data-testid={`${dataTestId}-hour-list`}\n />\n <TimeList\n options={minuteOptions}\n optionType=\"minute\"\n selectedValue={selectedMinute ? formatNumber(selectedMinute) : undefined}\n onClick={handleMinuteClick}\n open={isOpen}\n data-testid={`${dataTestId}-minute-list`}\n />\n <TimeList\n options={meridiemOptions}\n optionType=\"meridiem\"\n selectedValue={selectedMeridiem}\n onClick={handleMeridiemClick}\n open={isOpen}\n data-testid={`${dataTestId}-meridiem-list`}\n />\n </Box>\n </Popover>\n );\n};\n"],"names":["timeOptionRecipe","defineRecipe","TimeOption","value","innerRef","onClick","selected","dataTestId","styles","useRecipe","handleClick","useCallback","event","selectedValue","jsx","Box","timePickerRecipe","defineSlotRecipe","TimeList","options","optionType","open","useSlotRecipe","itemRef","useRef","useEffect","option","isSelected","Meridiem","TimePicker","initialTime","inputProps","minuteInterval","onTimeChange","onClose","placement","isOpen","setIsOpen","useState","selectedTime","setSelectedTime","selectedHour","setSelectedHour","selectedMinute","setSelectedMinute","selectedMeridiem","setSelectedMeridiem","formattedTime","useMemo","format","formatNumber","number","formattedValue","hourOptions","hour","minuteOptions","minutes","i","meridiemOptions","handleTimeChange","minute","meridiem","_hour","_minute","_meridiem","meridiemAdjustment","hours","time","date","handleHourClick","handleMinuteClick","handleMeridiemClick","localTime","adjustedHours","Popover","TextInput","Icon","useIconTextSizeMap","jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"timePicker.component-uf5hCWTW.js","sources":["../../src/components/TimePicker/components/TimeOption/timeOption.recipe.ts","../../src/components/TimePicker/components/TimeOption/timeOption.component.tsx","../../src/components/TimePicker/timePicker.recipe.ts","../../src/components/TimePicker/components/TimeList/timeList.component.tsx","../../src/components/TimePicker/timePicker.types.ts","../../src/components/TimePicker/timePicker.component.tsx"],"sourcesContent":["import { defineRecipe } from '@chakra-ui/react/styled-system';\n\nexport const timeOptionRecipe = defineRecipe({\n base: {\n borderRadius: '4px',\n cursor: 'pointer',\n fontSize: 'sm',\n px: 3,\n py: 1,\n textAlign: 'center',\n },\n variants: {\n selected: {\n true: {\n background: 'background.secondary',\n color: 'text.contrast',\n _hover: {\n background: 'background.secondary.hover',\n },\n },\n false: {\n background: 'background',\n color: 'text.subtle',\n _hover: {\n background: 'background.secondaryAlpha.hover',\n },\n },\n },\n },\n defaultVariants: {\n selected: false,\n },\n});\n","import React, { useCallback } from 'react';\nimport { Box } from '@chakra-ui/react/box';\nimport { useRecipe } from '@chakra-ui/react/styled-system';\nimport { timeOptionRecipe } from './timeOption.recipe';\n\ninterface TimeOptionProps {\n /** Ref to the option component. */\n innerRef?: React.Ref<HTMLDivElement | null> | null;\n /** Callback function to be called when the option is clicked. */\n onClick: (selectedValue: string) => void;\n /** If true, the option will be selected. */\n selected: boolean;\n /** Value of the option. */\n value: string;\n /** Data test id for the option.\n * @default kibble-timepicker-option\n */\n 'data-testid'?: string;\n}\n\nexport const TimeOption = ({\n value,\n innerRef,\n onClick,\n selected,\n ['data-testid']: dataTestId = 'kibble-timepicker-option',\n}: TimeOptionProps): React.JSX.Element => {\n const recipe = useRecipe({ recipe: timeOptionRecipe });\n const styles = recipe({ selected });\n\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n const selectedValue = event.currentTarget.textContent || '';\n onClick(selectedValue);\n },\n [onClick],\n );\n\n return (\n <Box className=\"TimePicker__Option\" data-testid={dataTestId} ref={innerRef} onClick={handleClick} css={styles}>\n {value}\n </Box>\n );\n};\n","import { defineSlotRecipe } from '@chakra-ui/react/styled-system';\n\nexport const timePickerRecipe = defineSlotRecipe({\n slots: ['trigger', 'container', 'list'],\n base: {\n trigger: {\n width: '100%',\n },\n container: {\n display: 'flex',\n gap: 1.5,\n height: '186px',\n overflow: 'hidden',\n },\n list: {\n display: 'flex',\n flexDirection: 'column',\n gap: 1,\n overflowY: 'auto',\n '&::webkit-scrollbar': {\n display: 'none',\n },\n },\n },\n});\n","import React, { useEffect, useRef } from 'react';\nimport { Box } from '@chakra-ui/react/box';\nimport { TimeOption } from '../TimeOption/timeOption.component';\nimport { useSlotRecipe } from '@chakra-ui/react/styled-system';\nimport { timePickerRecipe } from '../../timePicker.recipe';\n\ninterface ScrollContainerProps {\n /** Options to display in the list. */\n options: string[];\n /** Type of the option. */\n optionType: 'hour' | 'minute' | 'meridiem';\n /** Selected value of the list. */\n selectedValue?: string;\n /** Callback function to be called when the option is clicked. */\n onClick: (value: string) => void;\n /** Determines if the list is open. */\n open: boolean;\n /** Data test id for the list.\n * @default kibble-timepicker-list\n */\n 'data-testid'?: string;\n}\n\nexport const TimeList = ({\n options,\n optionType,\n selectedValue,\n onClick,\n open = false,\n ['data-testid']: dataTestId = 'kibble-timepicker-list',\n}: ScrollContainerProps): React.JSX.Element => {\n const recipe = useSlotRecipe({ recipe: timePickerRecipe });\n const styles = recipe();\n const itemRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (open && itemRef.current) {\n requestAnimationFrame(() => {\n if (itemRef.current) {\n itemRef.current.scrollIntoView({ block: 'center' });\n }\n });\n }\n }, [open, selectedValue]);\n\n return (\n <Box className=\"TimePicker__List\" data-testid={`${dataTestId}-${optionType}-list`} css={styles.list}>\n {options.map((option) => {\n const isSelected = option === selectedValue;\n return (\n <TimeOption\n key={`${optionType}-option-${option}`}\n innerRef={isSelected ? itemRef : null}\n value={option}\n selected={option === selectedValue}\n onClick={onClick}\n data-testid={`${dataTestId}-${optionType}-option-${option}`}\n />\n );\n })}\n </Box>\n );\n};\n","export enum Meridiem {\n AM = 'AM',\n PM = 'PM',\n}\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { TextInput, TextInputProps } from 'components/TextInput/textInput.component';\nimport { Popover } from 'components/Popover/popover.component';\nimport { Icon } from 'components/Icon/icon.component';\nimport { useIconTextSizeMap } from 'hooks/useIconTextSizeMap';\nimport format from 'date-fns/format';\nimport { Box } from '@chakra-ui/react/box';\nimport { TimeList } from './components/TimeList/timeList.component';\nimport { Meridiem } from './timePicker.types';\nimport { useSlotRecipe } from '@chakra-ui/react/styled-system';\nimport { timePickerRecipe } from './timePicker.recipe';\nimport { Placement } from 'shared/types/placement';\n\nexport interface TimePickerProps {\n /** Initial time to be displayed in the input field. */\n initialTime?: Date;\n /** Props to customize the input field. See `TextInput` for more information. */\n inputProps?: Omit<TextInputProps, 'onChange' | 'value' | 'isClearable' | 'onClear'>;\n /**\n * Interval of minutes to be displayed in the dropdown.\n * @default 5\n */\n minuteInterval?: number;\n /** Callback function triggered when the time is changed. */\n onTimeChange?: (time: Date) => void;\n /** Callback function triggered when the time picker is closed. */\n onClose?: (time?: Date) => void;\n /**\n * Placement of the dropdown relative to the input field.\n * @default bottom\n */\n placement?: Placement;\n /**\n * Data test id for the time picker.\n * @default kibble-timepicker\n */\n 'data-testid'?: string;\n}\n\nexport const TimePicker = ({\n initialTime,\n inputProps,\n minuteInterval = 5,\n onTimeChange,\n onClose,\n placement = 'bottom',\n ['data-testid']: dataTestId = 'kibble-timepicker',\n}: TimePickerProps): React.JSX.Element => {\n const recipe = useSlotRecipe({ recipe: timePickerRecipe });\n const styles = recipe();\n const [isOpen, setIsOpen] = useState(false);\n const [selectedTime, setSelectedTime] = useState(initialTime);\n const [selectedHour, setSelectedHour] = useState<string | undefined>();\n const [selectedMinute, setSelectedMinute] = useState<string | undefined>();\n const [selectedMeridiem, setSelectedMeridiem] = useState<string | undefined>();\n\n const formattedTime = useMemo(() => {\n if (!selectedTime) return '';\n return format(selectedTime, 'h:mm aa');\n }, [selectedTime]);\n\n const formatNumber = (number: number | string): string => {\n const formattedValue = number.toString();\n if (formattedValue.length === 1) {\n return `0${formattedValue}`;\n }\n\n return formattedValue;\n };\n\n const hourOptions = useMemo(() => {\n return [12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11].map((hour) => hour.toString());\n }, []);\n\n const minuteOptions = useMemo(() => {\n const minutes = [];\n for (let i = 0; i < 60; i += minuteInterval) {\n minutes.push(i);\n }\n\n return minutes.map(formatNumber);\n }, [minuteInterval]);\n\n const meridiemOptions = [Meridiem.AM, Meridiem.PM];\n\n const handleTimeChange = useCallback(\n (hour?: string, minute?: string, meridiem?: string) => {\n const _hour = hour || '12';\n const _minute = minute || '00';\n const _meridiem = meridiem || 'AM';\n let meridiemAdjustment = 0;\n\n if (!hour) {\n setSelectedHour('12');\n }\n if (!minute) {\n setSelectedMinute('00');\n }\n if (!meridiem) {\n setSelectedMeridiem('AM');\n }\n\n // set 1-11pm to 13-23. Don't set 12pm to 24\n if (_meridiem === Meridiem.PM && Number(_hour) < 12) {\n meridiemAdjustment = 12;\n }\n\n // set 12am to 00\n if (_meridiem === Meridiem.AM && Number(_hour) === 12) {\n meridiemAdjustment = -12;\n }\n\n const hours = Number(_hour) + meridiemAdjustment;\n const time = new Date().setHours(hours, Number(_minute), 0, 0);\n const date = new Date(time);\n setSelectedTime(date);\n\n if (onTimeChange) {\n onTimeChange(date);\n }\n },\n [onTimeChange],\n );\n\n const handleHourClick = useCallback(\n (value: string) => {\n setSelectedHour(value);\n handleTimeChange(value, selectedMinute, selectedMeridiem);\n },\n [handleTimeChange, selectedMeridiem, selectedMinute],\n );\n\n const handleMinuteClick = useCallback(\n (value: string) => {\n setSelectedMinute(value);\n handleTimeChange(selectedHour, value, selectedMeridiem);\n },\n [handleTimeChange, selectedHour, selectedMeridiem],\n );\n\n const handleMeridiemClick = useCallback(\n (value: string) => {\n setSelectedMeridiem(value);\n handleTimeChange(selectedHour, selectedMinute, value);\n },\n [handleTimeChange, selectedHour, selectedMinute],\n );\n\n useEffect(() => {\n // Set default selections based on value passed in\n if (initialTime) {\n const localTime = new Date(initialTime);\n\n // calculate hours\n const hours = localTime.getHours();\n const adjustedHours = hours % 12 || 12;\n\n setSelectedTime(initialTime);\n setSelectedHour(adjustedHours.toString());\n setSelectedMinute(localTime.getMinutes().toString());\n setSelectedMeridiem(localTime.getHours() > 11 ? Meridiem.PM : Meridiem.AM);\n }\n }, [initialTime]);\n\n return (\n <Popover\n open={isOpen}\n onOpenChange={({ open }) => {\n setIsOpen(open);\n if (!open && onClose) {\n onClose(selectedTime);\n }\n }}\n anchor={\n <Box className=\"TimePicker__Trigger\" data-testid={`${dataTestId}-trigger`} css={styles.trigger}>\n <TextInput\n placeholder=\"12:00 AM\"\n rightElement={<Icon size={useIconTextSizeMap(inputProps?.size || 'md')} name=\"clock\" />}\n value={formattedTime}\n readOnly\n cursor=\"pointer\"\n {...inputProps}\n {...(isOpen && { 'data-focus': 'true' })}\n />\n </Box>\n }\n contentProps={{ w: 'max-content' }}\n placement={placement}\n variant={inputProps?.onContrast ? 'contrast' : 'default'}\n showArrow={false}\n >\n <Box className=\"TimePicker__Container\" data-testid={`${dataTestId}-container`} css={styles.container}>\n <TimeList\n options={hourOptions}\n optionType=\"hour\"\n selectedValue={selectedHour}\n onClick={handleHourClick}\n open={isOpen}\n data-testid={`${dataTestId}-hour-list`}\n />\n <TimeList\n options={minuteOptions}\n optionType=\"minute\"\n selectedValue={selectedMinute ? formatNumber(selectedMinute) : undefined}\n onClick={handleMinuteClick}\n open={isOpen}\n data-testid={`${dataTestId}-minute-list`}\n />\n <TimeList\n options={meridiemOptions}\n optionType=\"meridiem\"\n selectedValue={selectedMeridiem}\n onClick={handleMeridiemClick}\n open={isOpen}\n data-testid={`${dataTestId}-meridiem-list`}\n />\n </Box>\n </Popover>\n );\n};\n"],"names":["timeOptionRecipe","defineRecipe","TimeOption","value","innerRef","onClick","selected","dataTestId","styles","useRecipe","handleClick","useCallback","event","selectedValue","jsx","Box","timePickerRecipe","defineSlotRecipe","TimeList","options","optionType","open","useSlotRecipe","itemRef","useRef","useEffect","option","isSelected","Meridiem","TimePicker","initialTime","inputProps","minuteInterval","onTimeChange","onClose","placement","isOpen","setIsOpen","useState","selectedTime","setSelectedTime","selectedHour","setSelectedHour","selectedMinute","setSelectedMinute","selectedMeridiem","setSelectedMeridiem","formattedTime","useMemo","format","formatNumber","number","formattedValue","hourOptions","hour","minuteOptions","minutes","i","meridiemOptions","handleTimeChange","minute","meridiem","_hour","_minute","_meridiem","meridiemAdjustment","hours","time","date","handleHourClick","handleMinuteClick","handleMeridiemClick","localTime","adjustedHours","Popover","TextInput","Icon","useIconTextSizeMap","jsxs"],"mappings":"kcAEaA,EAAmBC,EAAAA,aAAa,CAC3C,KAAM,CACJ,aAAc,MACd,OAAQ,UACR,SAAU,KACV,GAAI,EACJ,GAAI,EACJ,UAAW,QACb,EACA,SAAU,CACR,SAAU,CACR,KAAM,CACJ,WAAY,uBACZ,MAAO,gBACP,OAAQ,CACN,WAAY,4BAAA,CAEhB,EACA,MAAO,CACL,WAAY,aACZ,MAAO,cACP,OAAQ,CACN,WAAY,iCAAA,CACd,CACF,CAEJ,EACA,gBAAiB,CACf,SAAU,EAAA,CAEd,CAAC,ECZYC,EAAa,CAAC,CACzB,MAAAC,EACA,SAAAC,EACA,QAAAC,EACA,SAAAC,EACA,CAAC,eAAgBC,EAAa,0BAChC,IAA0C,CAExC,MAAMC,EADSC,EAAA,UAAU,CAAE,OAAQT,EAAkB,EAC/B,CAAE,SAAAM,EAAU,EAE5BI,EAAcC,EAAA,YACjBC,GAA4C,CACrC,MAAAC,EAAgBD,EAAM,cAAc,aAAe,GACzDP,EAAQQ,CAAa,CACvB,EACA,CAACR,CAAO,CACV,EAEA,OACGS,EAAAA,kBAAAA,IAAAC,EAAAA,IAAA,CAAI,UAAU,qBAAqB,cAAaR,EAAY,IAAKH,EAAU,QAASM,EAAa,IAAKF,EACpG,SACHL,EAAA,CAEJ,ECzCaa,EAAmBC,EAAAA,iBAAiB,CAC/C,MAAO,CAAC,UAAW,YAAa,MAAM,EACtC,KAAM,CACJ,QAAS,CACP,MAAO,MACT,EACA,UAAW,CACT,QAAS,OACT,IAAK,IACL,OAAQ,QACR,SAAU,QACZ,EACA,KAAM,CACJ,QAAS,OACT,cAAe,SACf,IAAK,EACL,UAAW,OACX,sBAAuB,CACrB,QAAS,MAAA,CACX,CACF,CAEJ,CAAC,ECDYC,EAAW,CAAC,CACvB,QAAAC,EACA,WAAAC,EACA,cAAAP,EACA,QAAAR,EACA,KAAAgB,EAAO,GACP,CAAC,eAAgBd,EAAa,wBAChC,IAA+C,CAE7C,MAAMC,EADSc,EAAA,cAAc,CAAE,OAAQN,EAAkB,EACnC,EAChBO,EAAUC,SAAuB,IAAI,EAE3CC,OAAAA,EAAAA,UAAU,IAAM,CACVJ,GAAQE,EAAQ,SAClB,sBAAsB,IAAM,CACtBA,EAAQ,SACVA,EAAQ,QAAQ,eAAe,CAAE,MAAO,SAAU,CACpD,CACD,CACH,EACC,CAACF,EAAMR,CAAa,CAAC,0BAGrBE,EAAI,IAAA,CAAA,UAAU,mBAAmB,cAAa,GAAGR,CAAU,IAAIa,CAAU,QAAS,IAAKZ,EAAO,KAC5F,SAAQW,EAAA,IAAKO,GAAW,CACvB,MAAMC,EAAaD,IAAWb,EAE5B,OAAAC,EAAA,kBAAA,IAACZ,EAAA,CAEC,SAAUyB,EAAaJ,EAAU,KACjC,MAAOG,EACP,SAAUA,IAAWb,EACrB,QAAAR,EACA,cAAa,GAAGE,CAAU,IAAIa,CAAU,WAAWM,CAAM,EAAA,EALpD,GAAGN,CAAU,WAAWM,CAAM,EAMrC,CAEH,CAAA,EACH,CAEJ,EC9DY,IAAAE,GAAAA,IACVA,EAAA,GAAK,KACLA,EAAA,GAAK,KAFKA,IAAAA,GAAA,CAAA,CAAA,ECuCL,MAAMC,GAAa,CAAC,CACzB,YAAAC,EACA,WAAAC,EACA,eAAAC,EAAiB,EACjB,aAAAC,EACA,QAAAC,EACA,UAAAC,EAAY,SACZ,CAAC,eAAgB5B,EAAa,mBAChC,IAA0C,CAExC,MAAMC,EADSc,EAAA,cAAc,CAAE,OAAQN,EAAkB,EACnC,EAChB,CAACoB,EAAQC,CAAS,EAAIC,EAAAA,SAAS,EAAK,EACpC,CAACC,EAAcC,CAAe,EAAIF,EAAAA,SAASR,CAAW,EACtD,CAACW,EAAcC,CAAe,EAAIJ,WAA6B,EAC/D,CAACK,EAAgBC,CAAiB,EAAIN,WAA6B,EACnE,CAACO,EAAkBC,CAAmB,EAAIR,WAA6B,EAEvES,EAAgBC,EAAAA,QAAQ,IACvBT,EACEU,EAAA,OAAOV,EAAc,SAAS,EADX,GAEzB,CAACA,CAAY,CAAC,EAEXW,EAAgBC,GAAoC,CAClD,MAAAC,EAAiBD,EAAO,SAAS,EACnC,OAAAC,EAAe,SAAW,EACrB,IAAIA,CAAc,GAGpBA,CACT,EAEMC,EAAcL,EAAAA,QAAQ,IACnB,CAAC,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAE,EAAE,IAAKM,GAASA,EAAK,UAAU,EAC3E,EAAE,EAECC,EAAgBP,EAAAA,QAAQ,IAAM,CAClC,MAAMQ,EAAU,CAAC,EACjB,QAASC,EAAI,EAAGA,EAAI,GAAIA,GAAKzB,EAC3BwB,EAAQ,KAAKC,CAAC,EAGT,OAAAD,EAAQ,IAAIN,CAAY,CAAA,EAC9B,CAAClB,CAAc,CAAC,EAEb0B,EAAkB,CAAC9B,EAAS,GAAIA,EAAS,EAAE,EAE3C+B,EAAmBhD,EAAA,YACvB,CAAC2C,EAAeM,EAAiBC,IAAsB,CACrD,MAAMC,EAAQR,GAAQ,KAChBS,EAAUH,GAAU,KACpBI,EAAYH,GAAY,KAC9B,IAAII,EAAqB,EAEpBX,GACHZ,EAAgB,IAAI,EAEjBkB,GACHhB,EAAkB,IAAI,EAEnBiB,GACHf,EAAoB,IAAI,EAItBkB,IAAcpC,EAAS,IAAM,OAAOkC,CAAK,EAAI,KAC1BG,EAAA,IAInBD,IAAcpC,EAAS,IAAM,OAAOkC,CAAK,IAAM,KAC5BG,EAAA,KAGjB,MAAAC,EAAQ,OAAOJ,CAAK,EAAIG,EACxBE,EAAW,IAAA,KAAA,EAAO,SAASD,EAAO,OAAOH,CAAO,EAAG,EAAG,CAAC,EACvDK,EAAO,IAAI,KAAKD,CAAI,EAC1B3B,EAAgB4B,CAAI,EAEhBnC,GACFA,EAAamC,CAAI,CAErB,EACA,CAACnC,CAAY,CACf,EAEMoC,EAAkB1D,EAAA,YACrBR,GAAkB,CACjBuC,EAAgBvC,CAAK,EACJwD,EAAAxD,EAAOwC,EAAgBE,CAAgB,CAC1D,EACA,CAACc,EAAkBd,EAAkBF,CAAc,CACrD,EAEM2B,EAAoB3D,EAAA,YACvBR,GAAkB,CACjByC,EAAkBzC,CAAK,EACNwD,EAAAlB,EAActC,EAAO0C,CAAgB,CACxD,EACA,CAACc,EAAkBlB,EAAcI,CAAgB,CACnD,EAEM0B,EAAsB5D,EAAA,YACzBR,GAAkB,CACjB2C,EAAoB3C,CAAK,EACRwD,EAAAlB,EAAcE,EAAgBxC,CAAK,CACtD,EACA,CAACwD,EAAkBlB,EAAcE,CAAc,CACjD,EAEAlB,OAAAA,EAAAA,UAAU,IAAM,CAEd,GAAIK,EAAa,CACT,MAAA0C,EAAY,IAAI,KAAK1C,CAAW,EAIhC2C,EADQD,EAAU,SAAS,EACH,IAAM,GAEpChC,EAAgBV,CAAW,EACXY,EAAA+B,EAAc,UAAU,EACxC7B,EAAkB4B,EAAU,WAAa,EAAA,SAAA,CAAU,EACnD1B,EAAoB0B,EAAU,WAAa,GAAK5C,EAAS,GAAKA,EAAS,EAAE,CAAA,CAC3E,EACC,CAACE,CAAW,CAAC,EAGdhB,EAAA,kBAAA,IAAC4D,EAAA,QAAA,CACC,KAAMtC,EACN,aAAc,CAAC,CAAE,KAAAf,KAAW,CAC1BgB,EAAUhB,CAAI,EACV,CAACA,GAAQa,GACXA,EAAQK,CAAY,CAExB,EACA,OACGzB,EAAA,kBAAA,IAAAC,EAAA,IAAA,CAAI,UAAU,sBAAsB,cAAa,GAAGR,CAAU,WAAY,IAAKC,EAAO,QACrF,SAAAM,EAAA,kBAAA,IAAC6D,EAAA,iBAAA,CACC,YAAY,WACZ,aAAe7D,EAAA,kBAAA,IAAA8D,OAAA,CAAK,KAAMC,EAAA,mBAAmB9C,GAAY,MAAQ,IAAI,EAAG,KAAK,OAAQ,CAAA,EACrF,MAAOgB,EACP,SAAQ,GACR,OAAO,UACN,GAAGhB,EACH,GAAIK,GAAU,CAAE,aAAc,MAAO,CAAA,CAAA,EAE1C,EAEF,aAAc,CAAE,EAAG,aAAc,EACjC,UAAAD,EACA,QAASJ,GAAY,WAAa,WAAa,UAC/C,UAAW,GAEX,SAAA+C,EAAAA,kBAAAA,KAAC/D,EAAAA,IAAI,CAAA,UAAU,wBAAwB,cAAa,GAAGR,CAAU,aAAc,IAAKC,EAAO,UACzF,SAAA,CAAAM,EAAA,kBAAA,IAACI,EAAA,CACC,QAASmC,EACT,WAAW,OACX,cAAeZ,EACf,QAAS4B,EACT,KAAMjC,EACN,cAAa,GAAG7B,CAAU,YAAA,CAC5B,EACAO,EAAA,kBAAA,IAACI,EAAA,CACC,QAASqC,EACT,WAAW,SACX,cAAeZ,EAAiBO,EAAaP,CAAc,EAAI,OAC/D,QAAS2B,EACT,KAAMlC,EACN,cAAa,GAAG7B,CAAU,cAAA,CAC5B,EACAO,EAAA,kBAAA,IAACI,EAAA,CACC,QAASwC,EACT,WAAW,WACX,cAAeb,EACf,QAAS0B,EACT,KAAMnC,EACN,cAAa,GAAG7B,CAAU,gBAAA,CAAA,CAC5B,CACF,CAAA,CAAA,CACF,CAEJ"}
@@ -1,2 +1,2 @@
1
- "use strict";const e=require("./jsx-runtime-BjDatQAs.js"),m=require("./index-BQRnVsAg.js"),t=require("./timePicker.component-D2gDf5fp.js"),c=require("./flex-BOU6tYUd.js"),a=({endTimePickerProps:s,separator:r="-",startTimePickerProps:n,["data-testid"]:i="kibble-time-range",...x})=>e.jsxRuntimeExports.jsxs(c.Flex,{className:"TimeRange","data-testid":i,...x,children:[e.jsxRuntimeExports.jsx(t.TimePicker,{...n,"data-testid":`${i}-start-time-picker`}),e.jsxRuntimeExports.jsx(m.Box,{alignSelf:"center",mx:1,children:r}),e.jsxRuntimeExports.jsx(t.TimePicker,{...s,"data-testid":`${i}-end-time-picker`})]});exports.TimeRange=a;
2
- //# sourceMappingURL=timeRange.component-DL2vskjy.js.map
1
+ "use strict";const e=require("./jsx-runtime-BjDatQAs.js"),m=require("./index-BQRnVsAg.js"),t=require("./timePicker.component-uf5hCWTW.js"),c=require("./flex-BOU6tYUd.js"),a=({endTimePickerProps:s,separator:r="-",startTimePickerProps:n,["data-testid"]:i="kibble-time-range",...x})=>e.jsxRuntimeExports.jsxs(c.Flex,{className:"TimeRange","data-testid":i,...x,children:[e.jsxRuntimeExports.jsx(t.TimePicker,{...n,"data-testid":`${i}-start-time-picker`}),e.jsxRuntimeExports.jsx(m.Box,{alignSelf:"center",mx:1,children:r}),e.jsxRuntimeExports.jsx(t.TimePicker,{...s,"data-testid":`${i}-end-time-picker`})]});exports.TimeRange=a;
2
+ //# sourceMappingURL=timeRange.component-CjQ7PYJR.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"timeRange.component-DL2vskjy.js","sources":["../../src/components/TimeRange/timeRange.component.tsx"],"sourcesContent":["import React from 'react';\nimport { Box } from '@chakra-ui/react/box';\nimport { Flex, FlexProps } from '@chakra-ui/react/flex';\nimport { TimePicker, TimePickerProps } from 'components/TimePicker/timePicker.component';\n\nexport interface TimeRangeProps extends FlexProps {\n /**\n * Element that separates the start and end time pickers. By default, a dash is used.\n * @default -\n */\n separator?: React.ReactNode;\n /** Props for the end time picker. See `TimePicker` for more information. */\n endTimePickerProps: TimePickerProps;\n /** Props for the start time picker. See `TimePicker` for more information. */\n startTimePickerProps: TimePickerProps;\n /**\n * Data test id for the time range.\n * @default kibble-time-range\n */\n 'data-testid'?: string;\n}\n\nexport const TimeRange = ({\n endTimePickerProps,\n separator = '-',\n startTimePickerProps,\n ['data-testid']: dataTestId = 'kibble-time-range',\n ...rest\n}: TimeRangeProps): React.JSX.Element => {\n return (\n <Flex className=\"TimeRange\" data-testid={dataTestId} {...rest}>\n <TimePicker {...startTimePickerProps} data-testid={`${dataTestId}-start-time-picker`} />\n <Box alignSelf=\"center\" mx={1}>\n {separator}\n </Box>\n <TimePicker {...endTimePickerProps} data-testid={`${dataTestId}-end-time-picker`} />\n </Flex>\n );\n};\n"],"names":["TimeRange","endTimePickerProps","separator","startTimePickerProps","dataTestId","rest","Flex","jsx","TimePicker","Box"],"mappings":"2KAsBaA,EAAY,CAAC,CACxB,mBAAAC,EACA,UAAAC,EAAY,IACZ,qBAAAC,EACA,CAAC,eAAgBC,EAAa,oBAC9B,GAAGC,CACL,6BAEKC,OAAK,CAAA,UAAU,YAAY,cAAaF,EAAa,GAAGC,EACvD,SAAA,CAAAE,wBAACC,EAAAA,YAAY,GAAGL,EAAsB,cAAa,GAAGC,CAAU,qBAAsB,0BACrFK,EAAAA,IAAI,CAAA,UAAU,SAAS,GAAI,EACzB,SACHP,EAAA,0BACCM,EAAAA,WAAY,CAAA,GAAGP,EAAoB,cAAa,GAAGG,CAAU,kBAAoB,CAAA,CAAA,EACpF"}
1
+ {"version":3,"file":"timeRange.component-CjQ7PYJR.js","sources":["../../src/components/TimeRange/timeRange.component.tsx"],"sourcesContent":["import React from 'react';\nimport { Box } from '@chakra-ui/react/box';\nimport { Flex, FlexProps } from '@chakra-ui/react/flex';\nimport { TimePicker, TimePickerProps } from 'components/TimePicker/timePicker.component';\n\nexport interface TimeRangeProps extends FlexProps {\n /**\n * Element that separates the start and end time pickers. By default, a dash is used.\n * @default -\n */\n separator?: React.ReactNode;\n /** Props for the end time picker. See `TimePicker` for more information. */\n endTimePickerProps: TimePickerProps;\n /** Props for the start time picker. See `TimePicker` for more information. */\n startTimePickerProps: TimePickerProps;\n /**\n * Data test id for the time range.\n * @default kibble-time-range\n */\n 'data-testid'?: string;\n}\n\nexport const TimeRange = ({\n endTimePickerProps,\n separator = '-',\n startTimePickerProps,\n ['data-testid']: dataTestId = 'kibble-time-range',\n ...rest\n}: TimeRangeProps): React.JSX.Element => {\n return (\n <Flex className=\"TimeRange\" data-testid={dataTestId} {...rest}>\n <TimePicker {...startTimePickerProps} data-testid={`${dataTestId}-start-time-picker`} />\n <Box alignSelf=\"center\" mx={1}>\n {separator}\n </Box>\n <TimePicker {...endTimePickerProps} data-testid={`${dataTestId}-end-time-picker`} />\n </Flex>\n );\n};\n"],"names":["TimeRange","endTimePickerProps","separator","startTimePickerProps","dataTestId","rest","Flex","jsx","TimePicker","Box"],"mappings":"2KAsBaA,EAAY,CAAC,CACxB,mBAAAC,EACA,UAAAC,EAAY,IACZ,qBAAAC,EACA,CAAC,eAAgBC,EAAa,oBAC9B,GAAGC,CACL,6BAEKC,OAAK,CAAA,UAAU,YAAY,cAAaF,EAAa,GAAGC,EACvD,SAAA,CAAAE,wBAACC,EAAAA,YAAY,GAAGL,EAAsB,cAAa,GAAGC,CAAU,qBAAsB,0BACrFK,EAAAA,IAAI,CAAA,UAAU,SAAS,GAAI,EACzB,SACHP,EAAA,0BACCM,EAAAA,WAAY,CAAA,GAAGP,EAAoB,cAAa,GAAGG,CAAU,kBAAoB,CAAA,CAAA,EACpF"}
@@ -1,6 +1,6 @@
1
1
  import { j as e } from "./jsx-runtime-C5mzlN2N.js";
2
2
  import { B as o } from "./index-9BerxEcw.js";
3
- import { T as i } from "./timePicker.component-CvQ9kF_7.js";
3
+ import { T as i } from "./timePicker.component-O5_k6YYo.js";
4
4
  import { F as n } from "./flex-CX-8gE9T.js";
5
5
  const l = ({
6
6
  endTimePickerProps: r,
@@ -16,4 +16,4 @@ const l = ({
16
16
  export {
17
17
  l as T
18
18
  };
19
- //# sourceMappingURL=timeRange.component-DfOq2mGR.js.map
19
+ //# sourceMappingURL=timeRange.component-Crv2OP7C.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"timeRange.component-DfOq2mGR.js","sources":["../../src/components/TimeRange/timeRange.component.tsx"],"sourcesContent":["import React from 'react';\nimport { Box } from '@chakra-ui/react/box';\nimport { Flex, FlexProps } from '@chakra-ui/react/flex';\nimport { TimePicker, TimePickerProps } from 'components/TimePicker/timePicker.component';\n\nexport interface TimeRangeProps extends FlexProps {\n /**\n * Element that separates the start and end time pickers. By default, a dash is used.\n * @default -\n */\n separator?: React.ReactNode;\n /** Props for the end time picker. See `TimePicker` for more information. */\n endTimePickerProps: TimePickerProps;\n /** Props for the start time picker. See `TimePicker` for more information. */\n startTimePickerProps: TimePickerProps;\n /**\n * Data test id for the time range.\n * @default kibble-time-range\n */\n 'data-testid'?: string;\n}\n\nexport const TimeRange = ({\n endTimePickerProps,\n separator = '-',\n startTimePickerProps,\n ['data-testid']: dataTestId = 'kibble-time-range',\n ...rest\n}: TimeRangeProps): React.JSX.Element => {\n return (\n <Flex className=\"TimeRange\" data-testid={dataTestId} {...rest}>\n <TimePicker {...startTimePickerProps} data-testid={`${dataTestId}-start-time-picker`} />\n <Box alignSelf=\"center\" mx={1}>\n {separator}\n </Box>\n <TimePicker {...endTimePickerProps} data-testid={`${dataTestId}-end-time-picker`} />\n </Flex>\n );\n};\n"],"names":["TimeRange","endTimePickerProps","separator","startTimePickerProps","dataTestId","rest","Flex","jsx","TimePicker","Box"],"mappings":";;;;AAsBO,MAAMA,IAAY,CAAC;AAAA,EACxB,oBAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,sBAAAC;AAAA,EACA,CAAC,gBAAgBC,IAAa;AAAA,EAC9B,GAAGC;AACL,6BAEKC,GAAK,EAAA,WAAU,aAAY,eAAaF,GAAa,GAAGC,GACvD,UAAA;AAAA,EAAAE,gBAAAA,MAACC,KAAY,GAAGL,GAAsB,eAAa,GAAGC,CAAU,sBAAsB;AAAA,wBACrFK,GAAI,EAAA,WAAU,UAAS,IAAI,GACzB,UACHP,GAAA;AAAA,wBACCM,GAAY,EAAA,GAAGP,GAAoB,eAAa,GAAGG,CAAU,mBAAoB,CAAA;AAAA,GACpF;"}
1
+ {"version":3,"file":"timeRange.component-Crv2OP7C.js","sources":["../../src/components/TimeRange/timeRange.component.tsx"],"sourcesContent":["import React from 'react';\nimport { Box } from '@chakra-ui/react/box';\nimport { Flex, FlexProps } from '@chakra-ui/react/flex';\nimport { TimePicker, TimePickerProps } from 'components/TimePicker/timePicker.component';\n\nexport interface TimeRangeProps extends FlexProps {\n /**\n * Element that separates the start and end time pickers. By default, a dash is used.\n * @default -\n */\n separator?: React.ReactNode;\n /** Props for the end time picker. See `TimePicker` for more information. */\n endTimePickerProps: TimePickerProps;\n /** Props for the start time picker. See `TimePicker` for more information. */\n startTimePickerProps: TimePickerProps;\n /**\n * Data test id for the time range.\n * @default kibble-time-range\n */\n 'data-testid'?: string;\n}\n\nexport const TimeRange = ({\n endTimePickerProps,\n separator = '-',\n startTimePickerProps,\n ['data-testid']: dataTestId = 'kibble-time-range',\n ...rest\n}: TimeRangeProps): React.JSX.Element => {\n return (\n <Flex className=\"TimeRange\" data-testid={dataTestId} {...rest}>\n <TimePicker {...startTimePickerProps} data-testid={`${dataTestId}-start-time-picker`} />\n <Box alignSelf=\"center\" mx={1}>\n {separator}\n </Box>\n <TimePicker {...endTimePickerProps} data-testid={`${dataTestId}-end-time-picker`} />\n </Flex>\n );\n};\n"],"names":["TimeRange","endTimePickerProps","separator","startTimePickerProps","dataTestId","rest","Flex","jsx","TimePicker","Box"],"mappings":";;;;AAsBO,MAAMA,IAAY,CAAC;AAAA,EACxB,oBAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,sBAAAC;AAAA,EACA,CAAC,gBAAgBC,IAAa;AAAA,EAC9B,GAAGC;AACL,6BAEKC,GAAK,EAAA,WAAU,aAAY,eAAaF,GAAa,GAAGC,GACvD,UAAA;AAAA,EAAAE,gBAAAA,MAACC,KAAY,GAAGL,GAAsB,eAAa,GAAGC,CAAU,sBAAsB;AAAA,wBACrFK,GAAI,EAAA,WAAU,UAAS,IAAI,GACzB,UACHP,GAAA;AAAA,wBACCM,GAAY,EAAA,GAAGP,GAAoB,eAAa,GAAGG,CAAU,mBAAoB,CAAA;AAAA,GACpF;"}
@@ -1,2 +1,2 @@
1
- "use strict";const n=require("./jsx-runtime-BjDatQAs.js"),J=require("./text.component-D5GpbfNx.js"),K=require("../cjs/theme/tokens/typography/index.cjs"),Q=require("./icon.component-B1hr5lLa.js"),U=require("./index-BQRnVsAg.js"),T=require("./flex-BOU6tYUd.js"),o=require("react"),w=require("./factory-a2SJjEvR.js"),V=require("./create-slot-recipe-context-HXE1VazG.js"),X=require("./create-recipe-context-CDw-39SC.js"),y=require("./use-field-context-Cm29IQ7H.js"),g=require("./use-locale-context-ym21RUxU.js"),u=require("./index-CQURjLlA.js"),R=require("./field.anatomy-Bhj7Mlr7.js");function Y(e){if(e&&e.__esModule)return e;const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const s=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,s.get?s:{enumerable:!0,get:()=>e[r]})}}return t.default=e,Object.freeze(t)}const ee=Y(o),H=o.forwardRef((e,t)=>{const r=y.useFieldContext(),s=u.mergeProps(r.getErrorTextProps(),e);return r?.invalid?n.jsxRuntimeExports.jsx(g.ark.span,{...s,ref:t}):null});H.displayName="FieldErrorText";const L=o.forwardRef((e,t)=>{const r=y.useFieldContext(),s=u.mergeProps(r?.getHelperTextProps(),e);return n.jsxRuntimeExports.jsx(g.ark.span,{...s,ref:t})});L.displayName="FieldHelperText";const O=o.forwardRef((e,t)=>{const r=y.useFieldContext(),s=u.mergeProps(r?.getLabelProps(),e);return n.jsxRuntimeExports.jsx(g.ark.label,{...s,ref:t})});O.displayName="FieldLabel";const te=typeof window<"u"?o.useLayoutEffect:o.useEffect,[Re,re]=g.createContext({name:"FieldsetContext",hookName:"useFieldsetContext",providerName:"<FieldsetProvider />",strict:!1}),oe=(e={})=>{const t=re(),r=g.useEnvironmentContext(),{ids:s,disabled:a=!!t?.disabled,invalid:i=!1,readOnly:c=!1,required:x=!1}=e,[m,N]=o.useState(!1),[F,P]=o.useState(!1),_=o.useId(),d=e.id??_,b=o.useRef(null),j=s?.control??`field::${d}`,f=s?.errorText??`field::${d}::error-text`,p=s?.helperText??`field::${d}::helper-text`,E=s?.label??`field::${d}::label`;te(()=>{const C=b.current;if(!C)return;const $=()=>{const k=r.getRootNode();N(!!k.getElementById(f)),P(!!k.getElementById(p))};$();const G=r.getWindow(),M=new G.MutationObserver($);return M.observe(C,{childList:!0,subtree:!0}),()=>M.disconnect()},[r,f,p]);const v=o.useMemo(()=>{const C=[];return m&&i&&C.push(f),F&&C.push(p),C.join(" ")||void 0},[i,f,p,m,F]),l=o.useMemo(()=>()=>({...R.parts.root.attrs,id:j,ref:b,role:"group","data-disabled":u.dataAttr(a),"data-invalid":u.dataAttr(i),"data-readonly":u.dataAttr(c)}),[a,i,c,j]),q=o.useMemo(()=>()=>({...R.parts.label.attrs,id:E,"data-disabled":u.dataAttr(a),"data-invalid":u.dataAttr(i),"data-readonly":u.dataAttr(c),htmlFor:d}),[a,i,c,d,E]),h=o.useMemo(()=>()=>({"aria-describedby":v,"aria-invalid":u.ariaAttr(i),"data-invalid":u.dataAttr(i),"data-required":u.dataAttr(x),"data-readonly":u.dataAttr(c),id:d,required:x,disabled:a,readOnly:c}),[v,i,x,c,d,a]),A=o.useMemo(()=>()=>({...h(),...R.parts.input.attrs}),[h]),B=o.useMemo(()=>()=>({...h(),...R.parts.textarea.attrs}),[h]),D=o.useMemo(()=>()=>({...h(),...R.parts.select.attrs}),[h]),z=o.useMemo(()=>()=>({id:p,...R.parts.helperText.attrs,"data-disabled":u.dataAttr(a)}),[a,p]),W=o.useMemo(()=>()=>({id:f,...R.parts.errorText.attrs,"aria-live":"polite"}),[f]),Z=o.useMemo(()=>()=>({"aria-hidden":!0,...R.parts.requiredIndicator.attrs}),[]);return{ariaDescribedby:v,ids:{root:j,control:d,label:E,errorText:f,helperText:p},refs:{rootRef:b},disabled:a,invalid:i,readOnly:c,required:x,getLabelProps:q,getRootProps:l,getInputProps:A,getTextareaProps:B,getSelectProps:D,getHelperTextProps:z,getErrorTextProps:W,getRequiredIndicatorProps:Z}},I=o.forwardRef((e,t)=>{const[r,s]=g.createSplitProps()(e,["id","ids","disabled","invalid","readOnly","required"]),a=oe(r),i=u.mergeProps(a.getRootProps(),s);return n.jsxRuntimeExports.jsx(y.FieldProvider,{value:a,children:n.jsxRuntimeExports.jsx(g.ark.div,{...i,ref:g.composeRefs(t,a.refs.rootRef)})})});I.displayName="FieldRoot";const{useRecipeResult:se}=X.createRecipeContext({key:"icon"}),ne=ee.forwardRef(function(t,r){const{styles:s,className:a,props:i}=se({asChild:!t.as,...t});return n.jsxRuntimeExports.jsx(w.chakra.svg,{ref:r,focusable:!1,"aria-hidden":"true",...i,css:[s,t.css],className:w.cx(a,t.className)})});function ae(e){const{viewBox:t="0 0 24 24",d:r,displayName:s,defaultProps:a={}}=e,i=o.Children.toArray(e.path),c=o.forwardRef((x,m)=>n.jsxRuntimeExports.jsx(ne,{ref:m,asChild:!1,viewBox:t,...a,...x,children:i.length?i:n.jsxRuntimeExports.jsx("path",{fill:"currentColor",d:r})}));return c.displayName=s,c}const{withProvider:ie,withContext:S,useStyles:le,useClassNames:ce}=V.createSlotRecipeContext({key:"field"}),de=ie(I,"root",{forwardAsChild:!0}),ue=S(O,"label",{forwardAsChild:!0}),xe=S(L,"helperText",{forwardAsChild:!0}),pe=S(H,"errorText",{forwardAsChild:!0});ae({d:"M11.983,0a12.206,12.206,0,0,0-8.51,3.653A11.8,11.8,0,0,0,0,12.207,11.779,11.779,0,0,0,11.8,24h.214A12.111,12.111,0,0,0,24,11.791h0A11.766,11.766,0,0,0,11.983,0ZM10.5,16.542a1.476,1.476,0,0,1,1.449-1.53h.027a1.527,1.527,0,0,1,1.523,1.47,1.475,1.475,0,0,1-1.449,1.53h-.027A1.529,1.529,0,0,1,10.5,16.542ZM11,12.5v-6a1,1,0,0,1,2,0v6a1,1,0,1,1-2,0Z"});const me=o.forwardRef(function(t,r){const{fallback:s,children:a="*",...i}=t,c=y.useFieldContext(),x=ce(),m=le();return c?.required?n.jsxRuntimeExports.jsx(w.chakra.span,{ref:r,"aria-hidden":"true",...i,className:w.cx(x.requiredIndicator,t.className),css:[m.requiredIndicator,t.css],children:a}):s}),fe={sm:10,md:12,lg:14},he=e=>{const t=({disabled:r=!1,errorText:s="Field is invalid",formControlStyle:a,fullWidth:i=!0,helperText:c,inlineField:x=!1,invalid:m=!1,invalidIconColor:N="danger",label:F,labelPosition:P="start",labelStyle:_,onContrast:d=!1,readOnly:b=!1,required:j=!1,showOptionalElement:f=!1,size:p="md",useInvalidIcon:E=!1,useInvalidText:v=!0,["data-testid"]:l,...q})=>{const h=n.jsxRuntimeExports.jsxs(ue,{className:"FormControl__Label",color:d?"text.contrast":"text",display:"flex",flexDirection:"row",gap:1,fontSize:K.fontSizes[p],fontWeight:"semibold","data-testid":l?`${l}-form-control-label`:void 0,..._,onClick:A=>{A.stopPropagation()},children:[n.jsxRuntimeExports.jsx(U.Box,{as:"span",children:F}),n.jsxRuntimeExports.jsx(me,{className:"FormControl__RequiredIndicator","data-testid":l?`${l}-form-control-required-indicator`:void 0,color:d?"text.danger.contrast":"text.danger",...!j&&{fallback:f?n.jsxRuntimeExports.jsx(J.WrappedText,{as:"span",variant:d?"subtleOnContrast":"subtle",fontSize:fe[p],display:"contents",ml:1,children:"(Optional)"}):n.jsxRuntimeExports.jsx(n.jsxRuntimeExports.Fragment,{})}})]});return n.jsxRuntimeExports.jsxs(de,{className:"FormControl group",disabled:r,invalid:m,readOnly:b,required:j,width:i?"100%":"auto","data-testid":l?`${l}-form-control-root`:void 0,...a,children:[n.jsxRuntimeExports.jsxs(T.Flex,{className:"FormControl__Container",flexDirection:x?"row":"column",w:x?"max-content":"100%",gap:2,alignItems:x?"center":"flex-start","data-testid":l?`${l}-form-control-container`:void 0,children:[F&&P==="start"&&h,n.jsxRuntimeExports.jsxs(T.Flex,{className:"FormControl__Content",alignItems:"center",gap:2,w:x?"max-content":"100%",children:[n.jsxRuntimeExports.jsx(e,{disabled:r,invalid:m,onContrast:d,readOnly:b,required:j,size:p,"data-testid":l?`${l}`:void 0,...q}),E&&m&&n.jsxRuntimeExports.jsx(Q.Icon,{className:"FormControl__InvalidIcon","data-testid":l?`${l}-form-control-invalid-icon`:void 0,name:"warningSign",variant:N,size:p})]}),F&&P==="end"&&h]}),v&&m&&n.jsxRuntimeExports.jsx(pe,{className:"FormControl__ErrorText",fontSize:"xs",color:d?"text.danger.contrast":"text.danger","data-testid":l?`${l}-form-control-error-text`:void 0,children:s}),c&&n.jsxRuntimeExports.jsx(xe,{className:"FormControl__HelperText",fontSize:"xs",color:d?"text.subtle.contrast":"text.subtle","data-testid":l?`${l}-form-control-helper-text`:void 0,children:c})]})};return t.displayName=`withFormControl(${e.displayName||e.name}`,t};exports.withFormControl=he;
2
- //# sourceMappingURL=withFormControl-d2CEvsH2.js.map
1
+ "use strict";const n=require("./jsx-runtime-BjDatQAs.js"),J=require("./text.component-D5GpbfNx.js"),K=require("../cjs/theme/tokens/typography/index.cjs"),Q=require("./icon.component-B1hr5lLa.js"),U=require("./index-BQRnVsAg.js"),T=require("./flex-BOU6tYUd.js"),o=require("react"),w=require("./factory-a2SJjEvR.js"),V=require("./create-slot-recipe-context-HXE1VazG.js"),X=require("./create-recipe-context-CDw-39SC.js"),y=require("./use-field-context-Cm29IQ7H.js"),g=require("./use-locale-context-ym21RUxU.js"),u=require("./index-CQURjLlA.js"),R=require("./field.anatomy-Bhj7Mlr7.js");function Y(e){if(e&&e.__esModule)return e;const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const s=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,s.get?s:{enumerable:!0,get:()=>e[r]})}}return t.default=e,Object.freeze(t)}const ee=Y(o),H=o.forwardRef((e,t)=>{const r=y.useFieldContext(),s=u.mergeProps(r.getErrorTextProps(),e);return r?.invalid?n.jsxRuntimeExports.jsx(g.ark.span,{...s,ref:t}):null});H.displayName="FieldErrorText";const L=o.forwardRef((e,t)=>{const r=y.useFieldContext(),s=u.mergeProps(r?.getHelperTextProps(),e);return n.jsxRuntimeExports.jsx(g.ark.span,{...s,ref:t})});L.displayName="FieldHelperText";const O=o.forwardRef((e,t)=>{const r=y.useFieldContext(),s=u.mergeProps(r?.getLabelProps(),e);return n.jsxRuntimeExports.jsx(g.ark.label,{...s,ref:t})});O.displayName="FieldLabel";const te=typeof window<"u"?o.useLayoutEffect:o.useEffect,[Re,re]=g.createContext({name:"FieldsetContext",hookName:"useFieldsetContext",providerName:"<FieldsetProvider />",strict:!1}),oe=(e={})=>{const t=re(),r=g.useEnvironmentContext(),{ids:s,disabled:a=!!t?.disabled,invalid:i=!1,readOnly:c=!1,required:x=!1}=e,[m,N]=o.useState(!1),[F,P]=o.useState(!1),_=o.useId(),d=e.id??_,b=o.useRef(null),j=s?.control??`field::${d}`,f=s?.errorText??`field::${d}::error-text`,p=s?.helperText??`field::${d}::helper-text`,E=s?.label??`field::${d}::label`;te(()=>{const C=b.current;if(!C)return;const $=()=>{const k=r.getRootNode();N(!!k.getElementById(f)),P(!!k.getElementById(p))};$();const G=r.getWindow(),M=new G.MutationObserver($);return M.observe(C,{childList:!0,subtree:!0}),()=>M.disconnect()},[r,f,p]);const v=o.useMemo(()=>{const C=[];return m&&i&&C.push(f),F&&C.push(p),C.join(" ")||void 0},[i,f,p,m,F]),l=o.useMemo(()=>()=>({...R.parts.root.attrs,id:j,ref:b,role:"group","data-disabled":u.dataAttr(a),"data-invalid":u.dataAttr(i),"data-readonly":u.dataAttr(c)}),[a,i,c,j]),q=o.useMemo(()=>()=>({...R.parts.label.attrs,id:E,"data-disabled":u.dataAttr(a),"data-invalid":u.dataAttr(i),"data-readonly":u.dataAttr(c),htmlFor:d}),[a,i,c,d,E]),h=o.useMemo(()=>()=>({"aria-describedby":v,"aria-invalid":u.ariaAttr(i),"data-invalid":u.dataAttr(i),"data-required":u.dataAttr(x),"data-readonly":u.dataAttr(c),id:d,required:x,disabled:a,readOnly:c}),[v,i,x,c,d,a]),A=o.useMemo(()=>()=>({...h(),...R.parts.input.attrs}),[h]),B=o.useMemo(()=>()=>({...h(),...R.parts.textarea.attrs}),[h]),D=o.useMemo(()=>()=>({...h(),...R.parts.select.attrs}),[h]),z=o.useMemo(()=>()=>({id:p,...R.parts.helperText.attrs,"data-disabled":u.dataAttr(a)}),[a,p]),W=o.useMemo(()=>()=>({id:f,...R.parts.errorText.attrs,"aria-live":"polite"}),[f]),Z=o.useMemo(()=>()=>({"aria-hidden":!0,...R.parts.requiredIndicator.attrs}),[]);return{ariaDescribedby:v,ids:{root:j,control:d,label:E,errorText:f,helperText:p},refs:{rootRef:b},disabled:a,invalid:i,readOnly:c,required:x,getLabelProps:q,getRootProps:l,getInputProps:A,getTextareaProps:B,getSelectProps:D,getHelperTextProps:z,getErrorTextProps:W,getRequiredIndicatorProps:Z}},I=o.forwardRef((e,t)=>{const[r,s]=g.createSplitProps()(e,["id","ids","disabled","invalid","readOnly","required"]),a=oe(r),i=u.mergeProps(a.getRootProps(),s);return n.jsxRuntimeExports.jsx(y.FieldProvider,{value:a,children:n.jsxRuntimeExports.jsx(g.ark.div,{...i,ref:g.composeRefs(t,a.refs.rootRef)})})});I.displayName="FieldRoot";const{useRecipeResult:se}=X.createRecipeContext({key:"icon"}),ne=ee.forwardRef(function(t,r){const{styles:s,className:a,props:i}=se({asChild:!t.as,...t});return n.jsxRuntimeExports.jsx(w.chakra.svg,{ref:r,focusable:!1,"aria-hidden":"true",...i,css:[s,t.css],className:w.cx(a,t.className)})});function ae(e){const{viewBox:t="0 0 24 24",d:r,displayName:s,defaultProps:a={}}=e,i=o.Children.toArray(e.path),c=o.forwardRef((x,m)=>n.jsxRuntimeExports.jsx(ne,{ref:m,asChild:!1,viewBox:t,...a,...x,children:i.length?i:n.jsxRuntimeExports.jsx("path",{fill:"currentColor",d:r})}));return c.displayName=s,c}const{withProvider:ie,withContext:S,useStyles:le,useClassNames:ce}=V.createSlotRecipeContext({key:"field"}),de=ie(I,"root",{forwardAsChild:!0}),ue=S(O,"label",{forwardAsChild:!0}),xe=S(L,"helperText",{forwardAsChild:!0}),pe=S(H,"errorText",{forwardAsChild:!0});ae({d:"M11.983,0a12.206,12.206,0,0,0-8.51,3.653A11.8,11.8,0,0,0,0,12.207,11.779,11.779,0,0,0,11.8,24h.214A12.111,12.111,0,0,0,24,11.791h0A11.766,11.766,0,0,0,11.983,0ZM10.5,16.542a1.476,1.476,0,0,1,1.449-1.53h.027a1.527,1.527,0,0,1,1.523,1.47,1.475,1.475,0,0,1-1.449,1.53h-.027A1.529,1.529,0,0,1,10.5,16.542ZM11,12.5v-6a1,1,0,0,1,2,0v6a1,1,0,1,1-2,0Z"});const me=o.forwardRef(function(t,r){const{fallback:s,children:a="*",...i}=t,c=y.useFieldContext(),x=ce(),m=le();return c?.required?n.jsxRuntimeExports.jsx(w.chakra.span,{ref:r,"aria-hidden":"true",...i,className:w.cx(x.requiredIndicator,t.className),css:[m.requiredIndicator,t.css],children:a}):s}),fe={sm:10,md:12,lg:14},he=e=>{const t=({disabled:r=!1,errorText:s="Field is invalid",formControlStyle:a,fullWidth:i=!0,helperText:c,inlineField:x=!1,invalid:m=!1,invalidIconColor:N="danger",label:F,labelPosition:P="start",labelStyle:_,onContrast:d=!1,readOnly:b=!1,required:j=!1,showOptionalElement:f=!1,size:p="md",useInvalidIcon:E=!1,useInvalidText:v=!0,["data-testid"]:l,...q})=>{const h=n.jsxRuntimeExports.jsxs(ue,{className:"FormControl__Label",color:d?"text.contrast":"text",display:"flex",flexDirection:"row",gap:1,fontSize:K.fontSizes[p],"data-testid":l?`${l}-form-control-label`:void 0,..._,onClick:A=>{A.stopPropagation()},children:[n.jsxRuntimeExports.jsx(U.Box,{as:"span",children:F}),n.jsxRuntimeExports.jsx(me,{className:"FormControl__RequiredIndicator","data-testid":l?`${l}-form-control-required-indicator`:void 0,color:d?"text.danger.contrast":"text.danger",...!j&&{fallback:f?n.jsxRuntimeExports.jsx(J.WrappedText,{as:"span",variant:d?"subtleOnContrast":"subtle",fontSize:fe[p],display:"contents",ml:1,children:"(Optional)"}):n.jsxRuntimeExports.jsx(n.jsxRuntimeExports.Fragment,{})}})]});return n.jsxRuntimeExports.jsxs(de,{className:"FormControl group",disabled:r,invalid:m,readOnly:b,required:j,width:i?"100%":"auto","data-testid":l?`${l}-form-control-root`:void 0,...a,children:[n.jsxRuntimeExports.jsxs(T.Flex,{className:"FormControl__Container",flexDirection:x?"row":"column",w:x?"max-content":"100%",gap:2,alignItems:x?"center":"flex-start","data-testid":l?`${l}-form-control-container`:void 0,children:[F&&P==="start"&&h,n.jsxRuntimeExports.jsxs(T.Flex,{className:"FormControl__Content",alignItems:"center",gap:2,w:x?"max-content":"100%",children:[n.jsxRuntimeExports.jsx(e,{disabled:r,invalid:m,onContrast:d,readOnly:b,required:j,size:p,"data-testid":l?`${l}`:void 0,...q}),E&&m&&n.jsxRuntimeExports.jsx(Q.Icon,{className:"FormControl__InvalidIcon","data-testid":l?`${l}-form-control-invalid-icon`:void 0,name:"warningSign",variant:N,size:p})]}),F&&P==="end"&&h]}),v&&m&&n.jsxRuntimeExports.jsx(pe,{className:"FormControl__ErrorText",fontSize:"xs",color:d?"text.danger.contrast":"text.danger","data-testid":l?`${l}-form-control-error-text`:void 0,children:s}),c&&n.jsxRuntimeExports.jsx(xe,{className:"FormControl__HelperText",fontSize:"xs",color:d?"text.subtle.contrast":"text.subtle","data-testid":l?`${l}-form-control-helper-text`:void 0,children:c})]})};return t.displayName=`withFormControl(${e.displayName||e.name}`,t};exports.withFormControl=he;
2
+ //# sourceMappingURL=withFormControl-CMerPa0c.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"withFormControl-d2CEvsH2.js","sources":["../../node_modules/@ark-ui/react/dist/components/field/field-error-text.js","../../node_modules/@ark-ui/react/dist/components/field/field-helper-text.js","../../node_modules/@ark-ui/react/dist/components/field/field-label.js","../../node_modules/@ark-ui/react/dist/utils/use-safe-layout-effect.js","../../node_modules/@ark-ui/react/dist/components/fieldset/use-fieldset-context.js","../../node_modules/@ark-ui/react/dist/components/field/use-field.js","../../node_modules/@ark-ui/react/dist/components/field/field-root.js","../../node_modules/@chakra-ui/react/dist/esm/components/icon/icon.js","../../node_modules/@chakra-ui/react/dist/esm/components/icon/create-icon.js","../../node_modules/@chakra-ui/react/dist/esm/components/field/field.js","../../src/hocs/withFormControl/withFormControl.records.ts","../../src/hocs/withFormControl/withFormControl.tsx"],"sourcesContent":["'use client';\nimport { jsx } from 'react/jsx-runtime';\nimport { mergeProps } from '@zag-js/react';\nimport { forwardRef } from 'react';\nimport { ark } from '../factory.js';\nimport { useFieldContext } from './use-field-context.js';\n\nconst FieldErrorText = forwardRef((props, ref) => {\n const field = useFieldContext();\n const mergedProps = mergeProps(field.getErrorTextProps(), props);\n if (field?.invalid) {\n return /* @__PURE__ */ jsx(ark.span, { ...mergedProps, ref });\n }\n return null;\n});\nFieldErrorText.displayName = \"FieldErrorText\";\n\nexport { FieldErrorText };\n","'use client';\nimport { jsx } from 'react/jsx-runtime';\nimport { mergeProps } from '@zag-js/react';\nimport { forwardRef } from 'react';\nimport { ark } from '../factory.js';\nimport { useFieldContext } from './use-field-context.js';\n\nconst FieldHelperText = forwardRef((props, ref) => {\n const field = useFieldContext();\n const mergedProps = mergeProps(field?.getHelperTextProps(), props);\n return /* @__PURE__ */ jsx(ark.span, { ...mergedProps, ref });\n});\nFieldHelperText.displayName = \"FieldHelperText\";\n\nexport { FieldHelperText };\n","'use client';\nimport { jsx } from 'react/jsx-runtime';\nimport { mergeProps } from '@zag-js/react';\nimport { forwardRef } from 'react';\nimport { ark } from '../factory.js';\nimport { useFieldContext } from './use-field-context.js';\n\nconst FieldLabel = forwardRef((props, ref) => {\n const field = useFieldContext();\n const mergedProps = mergeProps(field?.getLabelProps(), props);\n return /* @__PURE__ */ jsx(ark.label, { ...mergedProps, ref });\n});\nFieldLabel.displayName = \"FieldLabel\";\n\nexport { FieldLabel };\n","'use client';\nimport { useLayoutEffect, useEffect } from 'react';\n\nconst useSafeLayoutEffect = typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\n\nexport { useSafeLayoutEffect };\n","'use client';\nimport { createContext } from '../../utils/create-context.js';\n\nconst [FieldsetProvider, useFieldsetContext] = createContext({\n name: \"FieldsetContext\",\n hookName: \"useFieldsetContext\",\n providerName: \"<FieldsetProvider />\",\n strict: false\n});\n\nexport { FieldsetProvider, useFieldsetContext };\n","'use client';\nimport { dataAttr, ariaAttr } from '@zag-js/dom-query';\nimport { useState, useId, useRef, useMemo } from 'react';\nimport { useEnvironmentContext } from '../../providers/environment/use-environment-context.js';\nimport { useSafeLayoutEffect } from '../../utils/use-safe-layout-effect.js';\nimport { useFieldsetContext } from '../fieldset/use-fieldset-context.js';\nimport { parts } from './field.anatomy.js';\n\nconst useField = (props = {}) => {\n const fieldset = useFieldsetContext();\n const env = useEnvironmentContext();\n const { ids, disabled = Boolean(fieldset?.disabled), invalid = false, readOnly = false, required = false } = props;\n const [hasErrorText, setHasErrorText] = useState(false);\n const [hasHelperText, setHasHelperText] = useState(false);\n const uid = useId();\n const id = props.id ?? uid;\n const rootRef = useRef(null);\n const rootId = ids?.control ?? `field::${id}`;\n const errorTextId = ids?.errorText ?? `field::${id}::error-text`;\n const helperTextId = ids?.helperText ?? `field::${id}::helper-text`;\n const labelId = ids?.label ?? `field::${id}::label`;\n useSafeLayoutEffect(() => {\n const rootNode = rootRef.current;\n if (!rootNode) return;\n const checkTextElements = () => {\n const docOrShadowRoot = env.getRootNode();\n setHasErrorText(!!docOrShadowRoot.getElementById(errorTextId));\n setHasHelperText(!!docOrShadowRoot.getElementById(helperTextId));\n };\n checkTextElements();\n const win = env.getWindow();\n const observer = new win.MutationObserver(checkTextElements);\n observer.observe(rootNode, { childList: true, subtree: true });\n return () => observer.disconnect();\n }, [env, errorTextId, helperTextId]);\n const labelIds = useMemo(() => {\n const ids2 = [];\n if (hasErrorText && invalid) ids2.push(errorTextId);\n if (hasHelperText) ids2.push(helperTextId);\n return ids2.join(\" \") || void 0;\n }, [invalid, errorTextId, helperTextId, hasErrorText, hasHelperText]);\n const getRootProps = useMemo(\n () => () => ({\n ...parts.root.attrs,\n id: rootId,\n ref: rootRef,\n role: \"group\",\n \"data-disabled\": dataAttr(disabled),\n \"data-invalid\": dataAttr(invalid),\n \"data-readonly\": dataAttr(readOnly)\n }),\n [disabled, invalid, readOnly, rootId]\n );\n const getLabelProps = useMemo(\n () => () => ({\n ...parts.label.attrs,\n id: labelId,\n \"data-disabled\": dataAttr(disabled),\n \"data-invalid\": dataAttr(invalid),\n \"data-readonly\": dataAttr(readOnly),\n htmlFor: id\n }),\n [disabled, invalid, readOnly, id, labelId]\n );\n const getControlProps = useMemo(\n () => () => ({\n \"aria-describedby\": labelIds,\n \"aria-invalid\": ariaAttr(invalid),\n \"data-invalid\": dataAttr(invalid),\n \"data-required\": dataAttr(required),\n \"data-readonly\": dataAttr(readOnly),\n id,\n required,\n disabled,\n readOnly\n }),\n [labelIds, invalid, required, readOnly, id, disabled]\n );\n const getInputProps = useMemo(\n () => () => ({\n ...getControlProps(),\n ...parts.input.attrs\n }),\n [getControlProps]\n );\n const getTextareaProps = useMemo(\n () => () => ({\n ...getControlProps(),\n ...parts.textarea.attrs\n }),\n [getControlProps]\n );\n const getSelectProps = useMemo(\n () => () => ({\n ...getControlProps(),\n ...parts.select.attrs\n }),\n [getControlProps]\n );\n const getHelperTextProps = useMemo(\n () => () => ({\n id: helperTextId,\n ...parts.helperText.attrs,\n \"data-disabled\": dataAttr(disabled)\n }),\n [disabled, helperTextId]\n );\n const getErrorTextProps = useMemo(\n () => () => ({\n id: errorTextId,\n ...parts.errorText.attrs,\n \"aria-live\": \"polite\"\n }),\n [errorTextId]\n );\n const getRequiredIndicatorProps = useMemo(\n () => () => ({\n \"aria-hidden\": true,\n ...parts.requiredIndicator.attrs\n }),\n []\n );\n return {\n ariaDescribedby: labelIds,\n ids: {\n root: rootId,\n control: id,\n label: labelId,\n errorText: errorTextId,\n helperText: helperTextId\n },\n refs: {\n rootRef\n },\n disabled,\n invalid,\n readOnly,\n required,\n getLabelProps,\n getRootProps,\n getInputProps,\n getTextareaProps,\n getSelectProps,\n getHelperTextProps,\n getErrorTextProps,\n getRequiredIndicatorProps\n };\n};\n\nexport { useField };\n","'use client';\nimport { jsx } from 'react/jsx-runtime';\nimport { mergeProps } from '@zag-js/react';\nimport { forwardRef } from 'react';\nimport { composeRefs } from '../../utils/compose-refs.js';\nimport { createSplitProps } from '../../utils/create-split-props.js';\nimport { ark } from '../factory.js';\nimport { useField } from './use-field.js';\nimport { FieldProvider } from './use-field-context.js';\n\nconst FieldRoot = forwardRef((props, ref) => {\n const [useFieldProps, localProps] = createSplitProps()(props, [\n \"id\",\n \"ids\",\n \"disabled\",\n \"invalid\",\n \"readOnly\",\n \"required\"\n ]);\n const field = useField(useFieldProps);\n const mergedProps = mergeProps(field.getRootProps(), localProps);\n return /* @__PURE__ */ jsx(FieldProvider, { value: field, children: /* @__PURE__ */ jsx(ark.div, { ...mergedProps, ref: composeRefs(ref, field.refs.rootRef) }) });\n});\nFieldRoot.displayName = \"FieldRoot\";\n\nexport { FieldRoot };\n","\"use strict\";\n\"use client\";\nimport { jsx } from 'react/jsx-runtime';\nimport * as React from 'react';\nimport { cx } from '../../utils/cx.js';\nimport { createRecipeContext } from '../../styled-system/create-recipe-context.js';\nimport { chakra } from '../../styled-system/factory.js';\n\nconst { useRecipeResult, PropsProvider } = createRecipeContext({ key: \"icon\" });\nconst Icon = React.forwardRef(\n function Icon2(props, ref) {\n const {\n styles,\n className,\n props: otherProps\n } = useRecipeResult({ asChild: !props.as, ...props });\n return /* @__PURE__ */ jsx(\n chakra.svg,\n {\n ref,\n focusable: false,\n \"aria-hidden\": \"true\",\n ...otherProps,\n css: [styles, props.css],\n className: cx(className, props.className)\n }\n );\n }\n);\nconst IconPropsProvider = PropsProvider;\n\nexport { Icon, IconPropsProvider };\n","\"use strict\";\n\"use client\";\nimport { jsx } from 'react/jsx-runtime';\nimport { Children, forwardRef } from 'react';\nimport { Icon } from './icon.js';\n\nfunction createIcon(options) {\n const {\n viewBox = \"0 0 24 24\",\n d: pathDefinition,\n displayName,\n defaultProps = {}\n } = options;\n const path = Children.toArray(options.path);\n const Comp = forwardRef((props, ref) => /* @__PURE__ */ jsx(\n Icon,\n {\n ref,\n asChild: false,\n viewBox,\n ...defaultProps,\n ...props,\n children: path.length ? path : /* @__PURE__ */ jsx(\"path\", { fill: \"currentColor\", d: pathDefinition })\n }\n ));\n Comp.displayName = displayName;\n return Comp;\n}\n\nexport { createIcon };\n","\"use strict\";\n\"use client\";\nimport { jsx } from 'react/jsx-runtime';\nimport { Field, useFieldContext } from '@ark-ui/react/field';\nimport { forwardRef } from 'react';\nimport { cx } from '../../utils/cx.js';\nimport { createSlotRecipeContext } from '../../styled-system/create-slot-recipe-context.js';\nimport { chakra } from '../../styled-system/factory.js';\nimport { createIcon } from '../icon/create-icon.js';\n\nconst {\n withProvider,\n withContext,\n useStyles: useFieldStyles,\n useClassNames,\n PropsProvider\n} = createSlotRecipeContext({ key: \"field\" });\nconst FieldRoot = withProvider(\n Field.Root,\n \"root\",\n { forwardAsChild: true }\n);\nconst FieldPropsProvider = PropsProvider;\nconst FieldLabel = withContext(\n Field.Label,\n \"label\",\n { forwardAsChild: true }\n);\nconst FieldHelperText = withContext(Field.HelperText, \"helperText\", { forwardAsChild: true });\nconst FieldErrorText = withContext(\n Field.ErrorText,\n \"errorText\",\n { forwardAsChild: true }\n);\nconst FieldErrorIcon = createIcon({\n d: \"M11.983,0a12.206,12.206,0,0,0-8.51,3.653A11.8,11.8,0,0,0,0,12.207,11.779,11.779,0,0,0,11.8,24h.214A12.111,12.111,0,0,0,24,11.791h0A11.766,11.766,0,0,0,11.983,0ZM10.5,16.542a1.476,1.476,0,0,1,1.449-1.53h.027a1.527,1.527,0,0,1,1.523,1.47,1.475,1.475,0,0,1-1.449,1.53h-.027A1.529,1.529,0,0,1,10.5,16.542ZM11,12.5v-6a1,1,0,0,1,2,0v6a1,1,0,1,1-2,0Z\"\n});\nconst FieldRequiredIndicator = forwardRef(function RequiredIndicator(props, ref) {\n const { fallback, children = \"*\", ...restProps } = props;\n const field = useFieldContext();\n const classNames = useClassNames();\n const styles = useFieldStyles();\n if (!field?.required) {\n return fallback;\n }\n return /* @__PURE__ */ jsx(\n chakra.span,\n {\n ref,\n \"aria-hidden\": \"true\",\n ...restProps,\n className: cx(classNames.requiredIndicator, props.className),\n css: [styles.requiredIndicator, props.css],\n children\n }\n );\n});\n\nexport { FieldErrorIcon, FieldErrorText, FieldHelperText, FieldLabel, FieldPropsProvider, FieldRequiredIndicator, FieldRoot, useFieldStyles };\n","import { FormControlSize } from './withFormControl.types';\n\nexport const optionalTextSizeMap: Record<FormControlSize, number> = {\n sm: 10,\n md: 12,\n lg: 14,\n};\n","import React from 'react';\nimport { Field } from '@chakra-ui/react/field';\nimport { FormControlLabelPosition, FormControlSize } from './withFormControl.types';\nimport { SystemStyleObject } from '@chakra-ui/react/styled-system';\nimport { TypographyVariant } from 'shared/types/typography';\nimport { Text } from 'components/Text/text.component';\nimport { optionalTextSizeMap } from './withFormControl.records';\nimport { fontSizes } from '@televet/kibble-primitives/core/typography';\nimport { Flex } from '@chakra-ui/react/flex';\nimport { Icon } from 'components/Icon/icon.component';\nimport { Box } from '@chakra-ui/react/box';\n\nexport interface WithFormControlProps {\n /** If true, the form control will be disabled.\n * @default false\n */\n disabled?: boolean;\n /** The error text to be displayed when the form control is invalid.\n * @default Field is invalid\n */\n errorText?: string;\n /** Props to customize the form control. */\n formControlStyle?: SystemStyleObject;\n /** If true, the form control will take the full width of its container.\n * @default true\n */\n fullWidth?: boolean;\n /** The helper text to be displayed below the form control. */\n helperText?: string;\n /** If true, the form control will be displayed inline with the label. */\n inlineField?: boolean;\n /** If true, the form control will be invalid.\n * @default false\n */\n invalid?: boolean;\n /** The variant of the invalid icon.\n * @default danger\n */\n invalidIconColor?: TypographyVariant;\n /** The label to be displayed above the form control. */\n label?: string | React.ReactNode;\n /** The position of the label relative to the form control.\n * @default start\n */\n labelPosition?: FormControlLabelPosition;\n /** Props to customize the label. */\n labelStyle?: SystemStyleObject;\n /** If true, the form control will be styled for contrast mode.\n * @default false\n */\n onContrast?: boolean;\n /** If true, the form element will be read only.\n * @default false\n */\n readOnly?: boolean;\n /** If true, the form control will be required.\n * @default false\n */\n required?: boolean;\n /** If true, the form control will show an optional text.\n * @default false\n */\n showOptionalElement?: boolean;\n /** The size of the form control.\n * @default md\n */\n size?: FormControlSize;\n /** If true, the form control will show an invalid icon.\n * @default false\n */\n useInvalidIcon?: boolean;\n /** If true, the form control will show an invalid text.\n * @default true\n */\n useInvalidText?: boolean;\n /** Data test id for the form control.\n */\n 'data-testid'?: string;\n}\n\nexport const withFormControl = <P extends WithFormControlProps>(Component: React.ComponentType<P>): React.FC<P> => {\n const WithFormControl = ({\n disabled = false,\n errorText = 'Field is invalid',\n formControlStyle,\n fullWidth = true,\n helperText,\n inlineField = false,\n invalid = false,\n invalidIconColor = 'danger',\n label,\n labelPosition = 'start',\n labelStyle,\n onContrast = false,\n readOnly = false,\n required = false,\n showOptionalElement = false,\n size = 'md',\n useInvalidIcon = false,\n useInvalidText = true,\n ['data-testid']: dataTestId,\n ...props\n }: WithFormControlProps): React.JSX.Element => {\n const labelComponent = (\n <Field.Label\n className=\"FormControl__Label\"\n color={onContrast ? 'text.contrast' : 'text'}\n display=\"flex\"\n flexDirection=\"row\"\n gap={1}\n fontSize={fontSizes[size]}\n fontWeight=\"semibold\"\n data-testid={dataTestId ? `${dataTestId}-form-control-label` : undefined}\n {...labelStyle}\n onClick={(e) => {\n e.stopPropagation();\n }}\n >\n <Box as=\"span\">{label}</Box>\n <Field.RequiredIndicator\n className=\"FormControl__RequiredIndicator\"\n data-testid={dataTestId ? `${dataTestId}-form-control-required-indicator` : undefined}\n color={onContrast ? 'text.danger.contrast' : 'text.danger'}\n {...(!required && {\n fallback: showOptionalElement ? (\n <Text\n as=\"span\"\n variant={onContrast ? 'subtleOnContrast' : 'subtle'}\n fontSize={optionalTextSizeMap[size]}\n display=\"contents\"\n ml={1}\n >\n (Optional)\n </Text>\n ) : (\n <></>\n ),\n })}\n />\n </Field.Label>\n );\n\n return (\n <Field.Root\n className=\"FormControl group\"\n disabled={disabled}\n invalid={invalid}\n readOnly={readOnly}\n required={required}\n width={fullWidth ? '100%' : 'auto'}\n data-testid={dataTestId ? `${dataTestId}-form-control-root` : undefined}\n {...formControlStyle}\n >\n <Flex\n className=\"FormControl__Container\"\n flexDirection={inlineField ? 'row' : 'column'}\n w={inlineField ? 'max-content' : '100%'}\n gap={2}\n alignItems={inlineField ? 'center' : 'flex-start'}\n data-testid={dataTestId ? `${dataTestId}-form-control-container` : undefined}\n >\n {label && labelPosition === 'start' && labelComponent}\n <Flex className=\"FormControl__Content\" alignItems=\"center\" gap={2} w={inlineField ? 'max-content' : '100%'}>\n <Component\n disabled={disabled}\n invalid={invalid}\n onContrast={onContrast}\n readOnly={readOnly}\n required={required}\n size={size}\n data-testid={dataTestId ? `${dataTestId}` : undefined}\n {...(props as P)}\n />\n {useInvalidIcon && invalid && (\n <Icon\n className=\"FormControl__InvalidIcon\"\n data-testid={dataTestId ? `${dataTestId}-form-control-invalid-icon` : undefined}\n name=\"warningSign\"\n variant={invalidIconColor}\n size={size}\n />\n )}\n </Flex>\n {label && labelPosition === 'end' && labelComponent}\n </Flex>\n {useInvalidText && invalid && (\n <Field.ErrorText\n className=\"FormControl__ErrorText\"\n fontSize=\"xs\"\n color={onContrast ? 'text.danger.contrast' : 'text.danger'}\n data-testid={dataTestId ? `${dataTestId}-form-control-error-text` : undefined}\n >\n {errorText}\n </Field.ErrorText>\n )}\n {helperText && (\n <Field.HelperText\n className=\"FormControl__HelperText\"\n fontSize=\"xs\"\n color={onContrast ? 'text.subtle.contrast' : 'text.subtle'}\n data-testid={dataTestId ? `${dataTestId}-form-control-helper-text` : undefined}\n >\n {helperText}\n </Field.HelperText>\n )}\n </Field.Root>\n );\n };\n\n WithFormControl.displayName = `withFormControl(${Component.displayName || Component.name}`;\n return WithFormControl;\n};\n"],"names":["FieldErrorText","forwardRef","props","ref","field","useFieldContext","mergedProps","mergeProps","jsx","ark","FieldHelperText","FieldLabel","useSafeLayoutEffect","useLayoutEffect","useEffect","FieldsetProvider","useFieldsetContext","createContext","useField","fieldset","env","useEnvironmentContext","ids","disabled","invalid","readOnly","required","hasErrorText","setHasErrorText","useState","hasHelperText","setHasHelperText","uid","useId","id","rootRef","useRef","rootId","errorTextId","helperTextId","labelId","rootNode","checkTextElements","docOrShadowRoot","win","observer","labelIds","useMemo","ids2","getRootProps","parts","dataAttr","getLabelProps","getControlProps","ariaAttr","getInputProps","getTextareaProps","getSelectProps","getHelperTextProps","getErrorTextProps","getRequiredIndicatorProps","FieldRoot","useFieldProps","localProps","createSplitProps","FieldProvider","composeRefs","useRecipeResult","createRecipeContext","Icon","React","styles","className","otherProps","chakra","cx","createIcon","options","viewBox","pathDefinition","displayName","defaultProps","path","Children","Comp","withProvider","withContext","useFieldStyles","useClassNames","createSlotRecipeContext","Field.Root","Field.Label","Field.HelperText","Field.ErrorText","FieldRequiredIndicator","fallback","children","restProps","classNames","optionalTextSizeMap","withFormControl","Component","WithFormControl","errorText","formControlStyle","fullWidth","helperText","inlineField","invalidIconColor","label","labelPosition","labelStyle","onContrast","showOptionalElement","size","useInvalidIcon","useInvalidText","dataTestId","labelComponent","jsxs","fontSizes","e","Box","Field.RequiredIndicator","Text","Fragment","Flex"],"mappings":"83BAOMA,EAAiBC,EAAU,WAAC,CAACC,EAAOC,IAAQ,CAChD,MAAMC,EAAQC,EAAAA,gBAAiB,EACzBC,EAAcC,EAAU,WAACH,EAAM,kBAAiB,EAAIF,CAAK,EAC/D,OAAIE,GAAO,QACcI,EAAAA,kBAAAA,IAAIC,EAAAA,IAAI,KAAM,CAAE,GAAGH,EAAa,IAAAH,EAAK,EAEvD,IACT,CAAC,EACDH,EAAe,YAAc,iBCR7B,MAAMU,EAAkBT,EAAU,WAAC,CAACC,EAAOC,IAAQ,CACjD,MAAMC,EAAQC,EAAAA,gBAAiB,EACzBC,EAAcC,EAAU,WAACH,GAAO,mBAAkB,EAAIF,CAAK,EACjE,OAAuBM,EAAAA,kBAAAA,IAAIC,EAAAA,IAAI,KAAM,CAAE,GAAGH,EAAa,IAAAH,EAAK,CAC9D,CAAC,EACDO,EAAgB,YAAc,kBCL9B,MAAMC,EAAaV,EAAU,WAAC,CAACC,EAAOC,IAAQ,CAC5C,MAAMC,EAAQC,EAAAA,gBAAiB,EACzBC,EAAcC,EAAU,WAACH,GAAO,cAAa,EAAIF,CAAK,EAC5D,OAAuBM,EAAAA,kBAAAA,IAAIC,EAAAA,IAAI,MAAO,CAAE,GAAGH,EAAa,IAAAH,EAAK,CAC/D,CAAC,EACDQ,EAAW,YAAc,aCTzB,MAAMC,GAAsB,OAAO,OAAW,IAAcC,EAAe,gBAAGC,EAAS,UCAjF,CAACC,GAAkBC,EAAkB,EAAIC,gBAAc,CAC3D,KAAM,kBACN,SAAU,qBACV,aAAc,uBACd,OAAQ,EACV,CAAC,ECAKC,GAAW,CAAChB,EAAQ,KAAO,CAC/B,MAAMiB,EAAWH,GAAoB,EAC/BI,EAAMC,EAAAA,sBAAuB,EAC7B,CAAE,IAAAC,EAAK,SAAAC,EAAW,EAAQJ,GAAU,SAAW,QAAAK,EAAU,GAAO,SAAAC,EAAW,GAAO,SAAAC,EAAW,EAAO,EAAGxB,EACvG,CAACyB,EAAcC,CAAe,EAAIC,EAAAA,SAAS,EAAK,EAChD,CAACC,EAAeC,CAAgB,EAAIF,EAAAA,SAAS,EAAK,EAClDG,EAAMC,EAAAA,MAAO,EACbC,EAAKhC,EAAM,IAAM8B,EACjBG,EAAUC,EAAM,OAAC,IAAI,EACrBC,EAASf,GAAK,SAAW,UAAUY,CAAE,GACrCI,EAAchB,GAAK,WAAa,UAAUY,CAAE,eAC5CK,EAAejB,GAAK,YAAc,UAAUY,CAAE,gBAC9CM,EAAUlB,GAAK,OAAS,UAAUY,CAAE,UAC1CtB,GAAoB,IAAM,CACxB,MAAM6B,EAAWN,EAAQ,QACzB,GAAI,CAACM,EAAU,OACf,MAAMC,EAAoB,IAAM,CAC9B,MAAMC,EAAkBvB,EAAI,YAAa,EACzCQ,EAAgB,CAAC,CAACe,EAAgB,eAAeL,CAAW,CAAC,EAC7DP,EAAiB,CAAC,CAACY,EAAgB,eAAeJ,CAAY,CAAC,CAChE,EACDG,EAAmB,EACnB,MAAME,EAAMxB,EAAI,UAAW,EACrByB,EAAW,IAAID,EAAI,iBAAiBF,CAAiB,EAC3D,OAAAG,EAAS,QAAQJ,EAAU,CAAE,UAAW,GAAM,QAAS,GAAM,EACtD,IAAMI,EAAS,WAAY,CACnC,EAAE,CAACzB,EAAKkB,EAAaC,CAAY,CAAC,EACnC,MAAMO,EAAWC,EAAAA,QAAQ,IAAM,CAC7B,MAAMC,EAAO,CAAE,EACf,OAAIrB,GAAgBH,GAASwB,EAAK,KAAKV,CAAW,EAC9CR,GAAekB,EAAK,KAAKT,CAAY,EAClCS,EAAK,KAAK,GAAG,GAAK,MAC7B,EAAK,CAACxB,EAASc,EAAaC,EAAcZ,EAAcG,CAAa,CAAC,EAC9DmB,EAAeF,EAAO,QAC1B,IAAM,KAAO,CACX,GAAGG,EAAAA,MAAM,KAAK,MACd,GAAIb,EACJ,IAAKF,EACL,KAAM,QACN,gBAAiBgB,EAAQ,SAAC5B,CAAQ,EAClC,eAAgB4B,EAAQ,SAAC3B,CAAO,EAChC,gBAAiB2B,EAAQ,SAAC1B,CAAQ,CACxC,GACI,CAACF,EAAUC,EAASC,EAAUY,CAAM,CACrC,EACKe,EAAgBL,EAAO,QAC3B,IAAM,KAAO,CACX,GAAGG,EAAAA,MAAM,MAAM,MACf,GAAIV,EACJ,gBAAiBW,EAAQ,SAAC5B,CAAQ,EAClC,eAAgB4B,EAAQ,SAAC3B,CAAO,EAChC,gBAAiB2B,EAAQ,SAAC1B,CAAQ,EAClC,QAASS,CACf,GACI,CAACX,EAAUC,EAASC,EAAUS,EAAIM,CAAO,CAC1C,EACKa,EAAkBN,EAAO,QAC7B,IAAM,KAAO,CACX,mBAAoBD,EACpB,eAAgBQ,EAAQ,SAAC9B,CAAO,EAChC,eAAgB2B,EAAQ,SAAC3B,CAAO,EAChC,gBAAiB2B,EAAQ,SAACzB,CAAQ,EAClC,gBAAiByB,EAAQ,SAAC1B,CAAQ,EAClC,GAAAS,EACA,SAAAR,EACA,SAAAH,EACA,SAAAE,CACN,GACI,CAACqB,EAAUtB,EAASE,EAAUD,EAAUS,EAAIX,CAAQ,CACrD,EACKgC,EAAgBR,EAAO,QAC3B,IAAM,KAAO,CACX,GAAGM,EAAiB,EACpB,GAAGH,EAAAA,MAAM,MAAM,KACrB,GACI,CAACG,CAAe,CACjB,EACKG,EAAmBT,EAAO,QAC9B,IAAM,KAAO,CACX,GAAGM,EAAiB,EACpB,GAAGH,EAAAA,MAAM,SAAS,KACxB,GACI,CAACG,CAAe,CACjB,EACKI,EAAiBV,EAAO,QAC5B,IAAM,KAAO,CACX,GAAGM,EAAiB,EACpB,GAAGH,EAAAA,MAAM,OAAO,KACtB,GACI,CAACG,CAAe,CACjB,EACKK,EAAqBX,EAAO,QAChC,IAAM,KAAO,CACX,GAAIR,EACJ,GAAGW,EAAAA,MAAM,WAAW,MACpB,gBAAiBC,EAAQ,SAAC5B,CAAQ,CACxC,GACI,CAACA,EAAUgB,CAAY,CACxB,EACKoB,EAAoBZ,EAAO,QAC/B,IAAM,KAAO,CACX,GAAIT,EACJ,GAAGY,EAAAA,MAAM,UAAU,MACnB,YAAa,QACnB,GACI,CAACZ,CAAW,CACb,EACKsB,EAA4Bb,EAAO,QACvC,IAAM,KAAO,CACX,cAAe,GACf,GAAGG,EAAAA,MAAM,kBAAkB,KACjC,GACI,CAAA,CACD,EACD,MAAO,CACL,gBAAiBJ,EACjB,IAAK,CACH,KAAMT,EACN,QAASH,EACT,MAAOM,EACP,UAAWF,EACX,WAAYC,CACb,EACD,KAAM,CACJ,QAAAJ,CACD,EACD,SAAAZ,EACA,QAAAC,EACA,SAAAC,EACA,SAAAC,EACA,cAAA0B,EACA,aAAAH,EACA,cAAAM,EACA,iBAAAC,EACA,eAAAC,EACA,mBAAAC,EACA,kBAAAC,EACA,0BAAAC,CACD,CACH,ECzIMC,EAAY5D,EAAU,WAAC,CAACC,EAAOC,IAAQ,CAC3C,KAAM,CAAC2D,EAAeC,CAAU,EAAIC,EAAgB,iBAAA,EAAG9D,EAAO,CAC5D,KACA,MACA,WACA,UACA,WACA,UACJ,CAAG,EACKE,EAAQc,GAAS4C,CAAa,EAC9BxD,EAAcC,EAAU,WAACH,EAAM,aAAY,EAAI2D,CAAU,EAC/D,OAAuBvD,EAAG,kBAAA,IAACyD,EAAa,cAAE,CAAE,MAAO7D,EAAO,SAA0BI,EAAAA,kBAAAA,IAAIC,EAAAA,IAAI,IAAK,CAAE,GAAGH,EAAa,IAAK4D,EAAAA,YAAY/D,EAAKC,EAAM,KAAK,OAAO,CAAG,CAAA,EAAG,CACnK,CAAC,EACDyD,EAAU,YAAc,YCfxB,KAAM,CAAE,gBAAAM,EAA+B,EAAIC,EAAAA,oBAAoB,CAAE,IAAK,MAAM,CAAE,EACxEC,GAAOC,GAAM,WACjB,SAAepE,EAAOC,EAAK,CACzB,KAAM,CACJ,OAAAoE,EACA,UAAAC,EACA,MAAOC,CACb,EAAQN,GAAgB,CAAE,QAAS,CAACjE,EAAM,GAAI,GAAGA,EAAO,EACpD,OAAuBM,EAAG,kBAAA,IACxBkE,EAAAA,OAAO,IACP,CACE,IAAAvE,EACA,UAAW,GACX,cAAe,OACf,GAAGsE,EACH,IAAK,CAACF,EAAQrE,EAAM,GAAG,EACvB,UAAWyE,EAAE,GAACH,EAAWtE,EAAM,SAAS,CAChD,CACK,CACL,CACA,ECtBA,SAAS0E,GAAWC,EAAS,CAC3B,KAAM,CACJ,QAAAC,EAAU,YACV,EAAGC,EACH,YAAAC,EACA,aAAAC,EAAe,CAAA,CACnB,EAAMJ,EACEK,EAAOC,EAAQ,SAAC,QAAQN,EAAQ,IAAI,EACpCO,EAAOnF,EAAU,WAAC,CAACC,EAAOC,IAAwBK,EAAG,kBAAA,IACzD6D,GACA,CACE,IAAAlE,EACA,QAAS,GACT,QAAA2E,EACA,GAAGG,EACH,GAAG/E,EACH,SAAUgF,EAAK,OAASA,EAAuB1E,EAAG,kBAAA,IAAC,OAAQ,CAAE,KAAM,eAAgB,EAAGuE,CAAgB,CAAA,CAC5G,CACA,CAAG,EACD,OAAAK,EAAK,YAAcJ,EACZI,CACT,CCjBA,KAAM,CACJ,aAAAC,GACA,YAAAC,EACA,UAAWC,GACX,cAAAC,EAEF,EAAIC,EAAuB,wBAAC,CAAE,IAAK,OAAO,CAAE,EACtC5B,GAAYwB,GAChBK,EACA,OACA,CAAE,eAAgB,EAAI,CACxB,EAEM/E,GAAa2E,EACjBK,EACA,QACA,CAAE,eAAgB,EAAI,CACxB,EACMjF,GAAkB4E,EAAYM,EAAkB,aAAc,CAAE,eAAgB,GAAM,EACtF5F,GAAiBsF,EACrBO,EACA,YACA,CAAE,eAAgB,EAAI,CACxB,EACuBjB,GAAW,CAChC,EAAG,yVACL,CAAC,EACD,MAAMkB,GAAyB7F,EAAAA,WAAW,SAA2BC,EAAOC,EAAK,CAC/E,KAAM,CAAE,SAAA4F,EAAU,SAAAC,EAAW,IAAK,GAAGC,CAAW,EAAG/F,EAC7CE,EAAQC,EAAAA,gBAAiB,EACzB6F,EAAaV,GAAe,EAC5BjB,EAASgB,GAAgB,EAC/B,OAAKnF,GAAO,SAGWI,EAAG,kBAAA,IACxBkE,EAAAA,OAAO,KACP,CACE,IAAAvE,EACA,cAAe,OACf,GAAG8F,EACH,UAAWtB,EAAAA,GAAGuB,EAAW,kBAAmBhG,EAAM,SAAS,EAC3D,IAAK,CAACqE,EAAO,kBAAmBrE,EAAM,GAAG,EACzC,SAAA8F,CACN,CACG,EAZQD,CAaX,CAAC,ECtDYI,GAAuD,CAClE,GAAI,GACJ,GAAI,GACJ,GAAI,EACN,EC0EaC,GAAmDC,GAAmD,CACjH,MAAMC,EAAkB,CAAC,CACvB,SAAA/E,EAAW,GACX,UAAAgF,EAAY,mBACZ,iBAAAC,EACA,UAAAC,EAAY,GACZ,WAAAC,EACA,YAAAC,EAAc,GACd,QAAAnF,EAAU,GACV,iBAAAoF,EAAmB,SACnB,MAAAC,EACA,cAAAC,EAAgB,QAChB,WAAAC,EACA,WAAAC,EAAa,GACb,SAAAvF,EAAW,GACX,SAAAC,EAAW,GACX,oBAAAuF,EAAsB,GACtB,KAAAC,EAAO,KACP,eAAAC,EAAiB,GACjB,eAAAC,EAAiB,GACjB,CAAC,eAAgBC,EACjB,GAAGnH,CAAA,IAC0C,CAC7C,MAAMoH,EACJC,EAAA,kBAAA,KAAC5B,GAAA,CACC,UAAU,qBACV,MAAOqB,EAAa,gBAAkB,OACtC,QAAQ,OACR,cAAc,MACd,IAAK,EACL,SAAUQ,YAAUN,CAAI,EACxB,WAAW,WACX,cAAaG,EAAa,GAAGA,CAAU,sBAAwB,OAC9D,GAAGN,EACJ,QAAUU,GAAM,CACdA,EAAE,gBAAgB,CACpB,EAEA,SAAA,CAACjH,EAAA,kBAAA,IAAAkH,EAAA,IAAA,CAAI,GAAG,OAAQ,SAAMb,EAAA,EACtBrG,EAAA,kBAAA,IAACmH,GAAA,CACC,UAAU,iCACV,cAAaN,EAAa,GAAGA,CAAU,mCAAqC,OAC5E,MAAOL,EAAa,uBAAyB,cAC5C,GAAI,CAACtF,GAAY,CAChB,SAAUuF,EACRzG,EAAA,kBAAA,IAACoH,EAAA,YAAA,CACC,GAAG,OACH,QAASZ,EAAa,mBAAqB,SAC3C,SAAUb,GAAoBe,CAAI,EAClC,QAAQ,WACR,GAAI,EACL,SAAA,YAAA,CAAA,EAIC1G,EAAAA,kBAAAA,IAAAqH,EAAAA,kBAAAA,SAAA,CAAA,CAAA,CAAA,CAEN,CAAA,CACF,CAAA,CACF,EAIA,OAAAN,EAAA,kBAAA,KAAC7B,GAAA,CACC,UAAU,oBACV,SAAAnE,EACA,QAAAC,EACA,SAAAC,EACA,SAAAC,EACA,MAAO+E,EAAY,OAAS,OAC5B,cAAaY,EAAa,GAAGA,CAAU,qBAAuB,OAC7D,GAAGb,EAEJ,SAAA,CAAAe,EAAA,kBAAA,KAACO,EAAA,KAAA,CACC,UAAU,yBACV,cAAenB,EAAc,MAAQ,SACrC,EAAGA,EAAc,cAAgB,OACjC,IAAK,EACL,WAAYA,EAAc,SAAW,aACrC,cAAaU,EAAa,GAAGA,CAAU,0BAA4B,OAElE,SAAA,CAAAR,GAASC,IAAkB,SAAWQ,EACvCC,EAAAA,kBAAAA,KAACO,EAAAA,KAAK,CAAA,UAAU,uBAAuB,WAAW,SAAS,IAAK,EAAG,EAAGnB,EAAc,cAAgB,OAClG,SAAA,CAAAnG,EAAA,kBAAA,IAAC6F,EAAA,CACC,SAAA9E,EACA,QAAAC,EACA,WAAAwF,EACA,SAAAvF,EACA,SAAAC,EACA,KAAAwF,EACA,cAAaG,EAAa,GAAGA,CAAU,GAAK,OAC3C,GAAInH,CAAA,CACP,EACCiH,GAAkB3F,GACjBhB,EAAA,kBAAA,IAAC6D,EAAA,KAAA,CACC,UAAU,2BACV,cAAagD,EAAa,GAAGA,CAAU,6BAA+B,OACtE,KAAK,cACL,QAAST,EACT,KAAAM,CAAA,CAAA,CACF,EAEJ,EACCL,GAASC,IAAkB,OAASQ,CAAA,CAAA,CACvC,EACCF,GAAkB5F,GACjBhB,EAAA,kBAAA,IAACqF,GAAA,CACC,UAAU,yBACV,SAAS,KACT,MAAOmB,EAAa,uBAAyB,cAC7C,cAAaK,EAAa,GAAGA,CAAU,2BAA6B,OAEnE,SAAAd,CAAA,CACH,EAEDG,GACClG,EAAA,kBAAA,IAACoF,GAAA,CACC,UAAU,0BACV,SAAS,KACT,MAAOoB,EAAa,uBAAyB,cAC7C,cAAaK,EAAa,GAAGA,CAAU,4BAA8B,OAEpE,SAAAX,CAAA,CAAA,CACH,CAAA,CAEJ,CAEJ,EAEA,OAAAJ,EAAgB,YAAc,mBAAmBD,EAAU,aAAeA,EAAU,IAAI,GACjFC,CACT","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9]}
1
+ {"version":3,"file":"withFormControl-CMerPa0c.js","sources":["../../node_modules/@ark-ui/react/dist/components/field/field-error-text.js","../../node_modules/@ark-ui/react/dist/components/field/field-helper-text.js","../../node_modules/@ark-ui/react/dist/components/field/field-label.js","../../node_modules/@ark-ui/react/dist/utils/use-safe-layout-effect.js","../../node_modules/@ark-ui/react/dist/components/fieldset/use-fieldset-context.js","../../node_modules/@ark-ui/react/dist/components/field/use-field.js","../../node_modules/@ark-ui/react/dist/components/field/field-root.js","../../node_modules/@chakra-ui/react/dist/esm/components/icon/icon.js","../../node_modules/@chakra-ui/react/dist/esm/components/icon/create-icon.js","../../node_modules/@chakra-ui/react/dist/esm/components/field/field.js","../../src/hocs/withFormControl/withFormControl.records.ts","../../src/hocs/withFormControl/withFormControl.tsx"],"sourcesContent":["'use client';\nimport { jsx } from 'react/jsx-runtime';\nimport { mergeProps } from '@zag-js/react';\nimport { forwardRef } from 'react';\nimport { ark } from '../factory.js';\nimport { useFieldContext } from './use-field-context.js';\n\nconst FieldErrorText = forwardRef((props, ref) => {\n const field = useFieldContext();\n const mergedProps = mergeProps(field.getErrorTextProps(), props);\n if (field?.invalid) {\n return /* @__PURE__ */ jsx(ark.span, { ...mergedProps, ref });\n }\n return null;\n});\nFieldErrorText.displayName = \"FieldErrorText\";\n\nexport { FieldErrorText };\n","'use client';\nimport { jsx } from 'react/jsx-runtime';\nimport { mergeProps } from '@zag-js/react';\nimport { forwardRef } from 'react';\nimport { ark } from '../factory.js';\nimport { useFieldContext } from './use-field-context.js';\n\nconst FieldHelperText = forwardRef((props, ref) => {\n const field = useFieldContext();\n const mergedProps = mergeProps(field?.getHelperTextProps(), props);\n return /* @__PURE__ */ jsx(ark.span, { ...mergedProps, ref });\n});\nFieldHelperText.displayName = \"FieldHelperText\";\n\nexport { FieldHelperText };\n","'use client';\nimport { jsx } from 'react/jsx-runtime';\nimport { mergeProps } from '@zag-js/react';\nimport { forwardRef } from 'react';\nimport { ark } from '../factory.js';\nimport { useFieldContext } from './use-field-context.js';\n\nconst FieldLabel = forwardRef((props, ref) => {\n const field = useFieldContext();\n const mergedProps = mergeProps(field?.getLabelProps(), props);\n return /* @__PURE__ */ jsx(ark.label, { ...mergedProps, ref });\n});\nFieldLabel.displayName = \"FieldLabel\";\n\nexport { FieldLabel };\n","'use client';\nimport { useLayoutEffect, useEffect } from 'react';\n\nconst useSafeLayoutEffect = typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\n\nexport { useSafeLayoutEffect };\n","'use client';\nimport { createContext } from '../../utils/create-context.js';\n\nconst [FieldsetProvider, useFieldsetContext] = createContext({\n name: \"FieldsetContext\",\n hookName: \"useFieldsetContext\",\n providerName: \"<FieldsetProvider />\",\n strict: false\n});\n\nexport { FieldsetProvider, useFieldsetContext };\n","'use client';\nimport { dataAttr, ariaAttr } from '@zag-js/dom-query';\nimport { useState, useId, useRef, useMemo } from 'react';\nimport { useEnvironmentContext } from '../../providers/environment/use-environment-context.js';\nimport { useSafeLayoutEffect } from '../../utils/use-safe-layout-effect.js';\nimport { useFieldsetContext } from '../fieldset/use-fieldset-context.js';\nimport { parts } from './field.anatomy.js';\n\nconst useField = (props = {}) => {\n const fieldset = useFieldsetContext();\n const env = useEnvironmentContext();\n const { ids, disabled = Boolean(fieldset?.disabled), invalid = false, readOnly = false, required = false } = props;\n const [hasErrorText, setHasErrorText] = useState(false);\n const [hasHelperText, setHasHelperText] = useState(false);\n const uid = useId();\n const id = props.id ?? uid;\n const rootRef = useRef(null);\n const rootId = ids?.control ?? `field::${id}`;\n const errorTextId = ids?.errorText ?? `field::${id}::error-text`;\n const helperTextId = ids?.helperText ?? `field::${id}::helper-text`;\n const labelId = ids?.label ?? `field::${id}::label`;\n useSafeLayoutEffect(() => {\n const rootNode = rootRef.current;\n if (!rootNode) return;\n const checkTextElements = () => {\n const docOrShadowRoot = env.getRootNode();\n setHasErrorText(!!docOrShadowRoot.getElementById(errorTextId));\n setHasHelperText(!!docOrShadowRoot.getElementById(helperTextId));\n };\n checkTextElements();\n const win = env.getWindow();\n const observer = new win.MutationObserver(checkTextElements);\n observer.observe(rootNode, { childList: true, subtree: true });\n return () => observer.disconnect();\n }, [env, errorTextId, helperTextId]);\n const labelIds = useMemo(() => {\n const ids2 = [];\n if (hasErrorText && invalid) ids2.push(errorTextId);\n if (hasHelperText) ids2.push(helperTextId);\n return ids2.join(\" \") || void 0;\n }, [invalid, errorTextId, helperTextId, hasErrorText, hasHelperText]);\n const getRootProps = useMemo(\n () => () => ({\n ...parts.root.attrs,\n id: rootId,\n ref: rootRef,\n role: \"group\",\n \"data-disabled\": dataAttr(disabled),\n \"data-invalid\": dataAttr(invalid),\n \"data-readonly\": dataAttr(readOnly)\n }),\n [disabled, invalid, readOnly, rootId]\n );\n const getLabelProps = useMemo(\n () => () => ({\n ...parts.label.attrs,\n id: labelId,\n \"data-disabled\": dataAttr(disabled),\n \"data-invalid\": dataAttr(invalid),\n \"data-readonly\": dataAttr(readOnly),\n htmlFor: id\n }),\n [disabled, invalid, readOnly, id, labelId]\n );\n const getControlProps = useMemo(\n () => () => ({\n \"aria-describedby\": labelIds,\n \"aria-invalid\": ariaAttr(invalid),\n \"data-invalid\": dataAttr(invalid),\n \"data-required\": dataAttr(required),\n \"data-readonly\": dataAttr(readOnly),\n id,\n required,\n disabled,\n readOnly\n }),\n [labelIds, invalid, required, readOnly, id, disabled]\n );\n const getInputProps = useMemo(\n () => () => ({\n ...getControlProps(),\n ...parts.input.attrs\n }),\n [getControlProps]\n );\n const getTextareaProps = useMemo(\n () => () => ({\n ...getControlProps(),\n ...parts.textarea.attrs\n }),\n [getControlProps]\n );\n const getSelectProps = useMemo(\n () => () => ({\n ...getControlProps(),\n ...parts.select.attrs\n }),\n [getControlProps]\n );\n const getHelperTextProps = useMemo(\n () => () => ({\n id: helperTextId,\n ...parts.helperText.attrs,\n \"data-disabled\": dataAttr(disabled)\n }),\n [disabled, helperTextId]\n );\n const getErrorTextProps = useMemo(\n () => () => ({\n id: errorTextId,\n ...parts.errorText.attrs,\n \"aria-live\": \"polite\"\n }),\n [errorTextId]\n );\n const getRequiredIndicatorProps = useMemo(\n () => () => ({\n \"aria-hidden\": true,\n ...parts.requiredIndicator.attrs\n }),\n []\n );\n return {\n ariaDescribedby: labelIds,\n ids: {\n root: rootId,\n control: id,\n label: labelId,\n errorText: errorTextId,\n helperText: helperTextId\n },\n refs: {\n rootRef\n },\n disabled,\n invalid,\n readOnly,\n required,\n getLabelProps,\n getRootProps,\n getInputProps,\n getTextareaProps,\n getSelectProps,\n getHelperTextProps,\n getErrorTextProps,\n getRequiredIndicatorProps\n };\n};\n\nexport { useField };\n","'use client';\nimport { jsx } from 'react/jsx-runtime';\nimport { mergeProps } from '@zag-js/react';\nimport { forwardRef } from 'react';\nimport { composeRefs } from '../../utils/compose-refs.js';\nimport { createSplitProps } from '../../utils/create-split-props.js';\nimport { ark } from '../factory.js';\nimport { useField } from './use-field.js';\nimport { FieldProvider } from './use-field-context.js';\n\nconst FieldRoot = forwardRef((props, ref) => {\n const [useFieldProps, localProps] = createSplitProps()(props, [\n \"id\",\n \"ids\",\n \"disabled\",\n \"invalid\",\n \"readOnly\",\n \"required\"\n ]);\n const field = useField(useFieldProps);\n const mergedProps = mergeProps(field.getRootProps(), localProps);\n return /* @__PURE__ */ jsx(FieldProvider, { value: field, children: /* @__PURE__ */ jsx(ark.div, { ...mergedProps, ref: composeRefs(ref, field.refs.rootRef) }) });\n});\nFieldRoot.displayName = \"FieldRoot\";\n\nexport { FieldRoot };\n","\"use strict\";\n\"use client\";\nimport { jsx } from 'react/jsx-runtime';\nimport * as React from 'react';\nimport { cx } from '../../utils/cx.js';\nimport { createRecipeContext } from '../../styled-system/create-recipe-context.js';\nimport { chakra } from '../../styled-system/factory.js';\n\nconst { useRecipeResult, PropsProvider } = createRecipeContext({ key: \"icon\" });\nconst Icon = React.forwardRef(\n function Icon2(props, ref) {\n const {\n styles,\n className,\n props: otherProps\n } = useRecipeResult({ asChild: !props.as, ...props });\n return /* @__PURE__ */ jsx(\n chakra.svg,\n {\n ref,\n focusable: false,\n \"aria-hidden\": \"true\",\n ...otherProps,\n css: [styles, props.css],\n className: cx(className, props.className)\n }\n );\n }\n);\nconst IconPropsProvider = PropsProvider;\n\nexport { Icon, IconPropsProvider };\n","\"use strict\";\n\"use client\";\nimport { jsx } from 'react/jsx-runtime';\nimport { Children, forwardRef } from 'react';\nimport { Icon } from './icon.js';\n\nfunction createIcon(options) {\n const {\n viewBox = \"0 0 24 24\",\n d: pathDefinition,\n displayName,\n defaultProps = {}\n } = options;\n const path = Children.toArray(options.path);\n const Comp = forwardRef((props, ref) => /* @__PURE__ */ jsx(\n Icon,\n {\n ref,\n asChild: false,\n viewBox,\n ...defaultProps,\n ...props,\n children: path.length ? path : /* @__PURE__ */ jsx(\"path\", { fill: \"currentColor\", d: pathDefinition })\n }\n ));\n Comp.displayName = displayName;\n return Comp;\n}\n\nexport { createIcon };\n","\"use strict\";\n\"use client\";\nimport { jsx } from 'react/jsx-runtime';\nimport { Field, useFieldContext } from '@ark-ui/react/field';\nimport { forwardRef } from 'react';\nimport { cx } from '../../utils/cx.js';\nimport { createSlotRecipeContext } from '../../styled-system/create-slot-recipe-context.js';\nimport { chakra } from '../../styled-system/factory.js';\nimport { createIcon } from '../icon/create-icon.js';\n\nconst {\n withProvider,\n withContext,\n useStyles: useFieldStyles,\n useClassNames,\n PropsProvider\n} = createSlotRecipeContext({ key: \"field\" });\nconst FieldRoot = withProvider(\n Field.Root,\n \"root\",\n { forwardAsChild: true }\n);\nconst FieldPropsProvider = PropsProvider;\nconst FieldLabel = withContext(\n Field.Label,\n \"label\",\n { forwardAsChild: true }\n);\nconst FieldHelperText = withContext(Field.HelperText, \"helperText\", { forwardAsChild: true });\nconst FieldErrorText = withContext(\n Field.ErrorText,\n \"errorText\",\n { forwardAsChild: true }\n);\nconst FieldErrorIcon = createIcon({\n d: \"M11.983,0a12.206,12.206,0,0,0-8.51,3.653A11.8,11.8,0,0,0,0,12.207,11.779,11.779,0,0,0,11.8,24h.214A12.111,12.111,0,0,0,24,11.791h0A11.766,11.766,0,0,0,11.983,0ZM10.5,16.542a1.476,1.476,0,0,1,1.449-1.53h.027a1.527,1.527,0,0,1,1.523,1.47,1.475,1.475,0,0,1-1.449,1.53h-.027A1.529,1.529,0,0,1,10.5,16.542ZM11,12.5v-6a1,1,0,0,1,2,0v6a1,1,0,1,1-2,0Z\"\n});\nconst FieldRequiredIndicator = forwardRef(function RequiredIndicator(props, ref) {\n const { fallback, children = \"*\", ...restProps } = props;\n const field = useFieldContext();\n const classNames = useClassNames();\n const styles = useFieldStyles();\n if (!field?.required) {\n return fallback;\n }\n return /* @__PURE__ */ jsx(\n chakra.span,\n {\n ref,\n \"aria-hidden\": \"true\",\n ...restProps,\n className: cx(classNames.requiredIndicator, props.className),\n css: [styles.requiredIndicator, props.css],\n children\n }\n );\n});\n\nexport { FieldErrorIcon, FieldErrorText, FieldHelperText, FieldLabel, FieldPropsProvider, FieldRequiredIndicator, FieldRoot, useFieldStyles };\n","import { FormControlSize } from './withFormControl.types';\n\nexport const optionalTextSizeMap: Record<FormControlSize, number> = {\n sm: 10,\n md: 12,\n lg: 14,\n};\n","import React from 'react';\nimport { Field } from '@chakra-ui/react/field';\nimport { FormControlLabelPosition, FormControlSize } from './withFormControl.types';\nimport { SystemStyleObject } from '@chakra-ui/react/styled-system';\nimport { TypographyVariant } from 'shared/types/typography';\nimport { Text } from 'components/Text/text.component';\nimport { optionalTextSizeMap } from './withFormControl.records';\nimport { fontSizes } from '@televet/kibble-primitives/core/typography';\nimport { Flex } from '@chakra-ui/react/flex';\nimport { Icon } from 'components/Icon/icon.component';\nimport { Box } from '@chakra-ui/react/box';\n\nexport interface WithFormControlProps {\n /** If true, the form control will be disabled.\n * @default false\n */\n disabled?: boolean;\n /** The error text to be displayed when the form control is invalid.\n * @default Field is invalid\n */\n errorText?: string;\n /** Props to customize the form control. */\n formControlStyle?: SystemStyleObject;\n /** If true, the form control will take the full width of its container.\n * @default true\n */\n fullWidth?: boolean;\n /** The helper text to be displayed below the form control. */\n helperText?: string;\n /** If true, the form control will be displayed inline with the label. */\n inlineField?: boolean;\n /** If true, the form control will be invalid.\n * @default false\n */\n invalid?: boolean;\n /** The variant of the invalid icon.\n * @default danger\n */\n invalidIconColor?: TypographyVariant;\n /** The label to be displayed above the form control. */\n label?: string | React.ReactNode;\n /** The position of the label relative to the form control.\n * @default start\n */\n labelPosition?: FormControlLabelPosition;\n /** Props to customize the label. */\n labelStyle?: SystemStyleObject;\n /** If true, the form control will be styled for contrast mode.\n * @default false\n */\n onContrast?: boolean;\n /** If true, the form element will be read only.\n * @default false\n */\n readOnly?: boolean;\n /** If true, the form control will be required.\n * @default false\n */\n required?: boolean;\n /** If true, the form control will show an optional text.\n * @default false\n */\n showOptionalElement?: boolean;\n /** The size of the form control.\n * @default md\n */\n size?: FormControlSize;\n /** If true, the form control will show an invalid icon.\n * @default false\n */\n useInvalidIcon?: boolean;\n /** If true, the form control will show an invalid text.\n * @default true\n */\n useInvalidText?: boolean;\n /** Data test id for the form control.\n */\n 'data-testid'?: string;\n}\n\nexport const withFormControl = <P extends WithFormControlProps>(Component: React.ComponentType<P>): React.FC<P> => {\n const WithFormControl = ({\n disabled = false,\n errorText = 'Field is invalid',\n formControlStyle,\n fullWidth = true,\n helperText,\n inlineField = false,\n invalid = false,\n invalidIconColor = 'danger',\n label,\n labelPosition = 'start',\n labelStyle,\n onContrast = false,\n readOnly = false,\n required = false,\n showOptionalElement = false,\n size = 'md',\n useInvalidIcon = false,\n useInvalidText = true,\n ['data-testid']: dataTestId,\n ...props\n }: WithFormControlProps): React.JSX.Element => {\n const labelComponent = (\n <Field.Label\n className=\"FormControl__Label\"\n color={onContrast ? 'text.contrast' : 'text'}\n display=\"flex\"\n flexDirection=\"row\"\n gap={1}\n fontSize={fontSizes[size]}\n data-testid={dataTestId ? `${dataTestId}-form-control-label` : undefined}\n {...labelStyle}\n onClick={(e) => {\n e.stopPropagation();\n }}\n >\n <Box as=\"span\">{label}</Box>\n <Field.RequiredIndicator\n className=\"FormControl__RequiredIndicator\"\n data-testid={dataTestId ? `${dataTestId}-form-control-required-indicator` : undefined}\n color={onContrast ? 'text.danger.contrast' : 'text.danger'}\n {...(!required && {\n fallback: showOptionalElement ? (\n <Text\n as=\"span\"\n variant={onContrast ? 'subtleOnContrast' : 'subtle'}\n fontSize={optionalTextSizeMap[size]}\n display=\"contents\"\n ml={1}\n >\n (Optional)\n </Text>\n ) : (\n <></>\n ),\n })}\n />\n </Field.Label>\n );\n\n return (\n <Field.Root\n className=\"FormControl group\"\n disabled={disabled}\n invalid={invalid}\n readOnly={readOnly}\n required={required}\n width={fullWidth ? '100%' : 'auto'}\n data-testid={dataTestId ? `${dataTestId}-form-control-root` : undefined}\n {...formControlStyle}\n >\n <Flex\n className=\"FormControl__Container\"\n flexDirection={inlineField ? 'row' : 'column'}\n w={inlineField ? 'max-content' : '100%'}\n gap={2}\n alignItems={inlineField ? 'center' : 'flex-start'}\n data-testid={dataTestId ? `${dataTestId}-form-control-container` : undefined}\n >\n {label && labelPosition === 'start' && labelComponent}\n <Flex className=\"FormControl__Content\" alignItems=\"center\" gap={2} w={inlineField ? 'max-content' : '100%'}>\n <Component\n disabled={disabled}\n invalid={invalid}\n onContrast={onContrast}\n readOnly={readOnly}\n required={required}\n size={size}\n data-testid={dataTestId ? `${dataTestId}` : undefined}\n {...(props as P)}\n />\n {useInvalidIcon && invalid && (\n <Icon\n className=\"FormControl__InvalidIcon\"\n data-testid={dataTestId ? `${dataTestId}-form-control-invalid-icon` : undefined}\n name=\"warningSign\"\n variant={invalidIconColor}\n size={size}\n />\n )}\n </Flex>\n {label && labelPosition === 'end' && labelComponent}\n </Flex>\n {useInvalidText && invalid && (\n <Field.ErrorText\n className=\"FormControl__ErrorText\"\n fontSize=\"xs\"\n color={onContrast ? 'text.danger.contrast' : 'text.danger'}\n data-testid={dataTestId ? `${dataTestId}-form-control-error-text` : undefined}\n >\n {errorText}\n </Field.ErrorText>\n )}\n {helperText && (\n <Field.HelperText\n className=\"FormControl__HelperText\"\n fontSize=\"xs\"\n color={onContrast ? 'text.subtle.contrast' : 'text.subtle'}\n data-testid={dataTestId ? `${dataTestId}-form-control-helper-text` : undefined}\n >\n {helperText}\n </Field.HelperText>\n )}\n </Field.Root>\n );\n };\n\n WithFormControl.displayName = `withFormControl(${Component.displayName || Component.name}`;\n return WithFormControl;\n};\n"],"names":["FieldErrorText","forwardRef","props","ref","field","useFieldContext","mergedProps","mergeProps","jsx","ark","FieldHelperText","FieldLabel","useSafeLayoutEffect","useLayoutEffect","useEffect","FieldsetProvider","useFieldsetContext","createContext","useField","fieldset","env","useEnvironmentContext","ids","disabled","invalid","readOnly","required","hasErrorText","setHasErrorText","useState","hasHelperText","setHasHelperText","uid","useId","id","rootRef","useRef","rootId","errorTextId","helperTextId","labelId","rootNode","checkTextElements","docOrShadowRoot","win","observer","labelIds","useMemo","ids2","getRootProps","parts","dataAttr","getLabelProps","getControlProps","ariaAttr","getInputProps","getTextareaProps","getSelectProps","getHelperTextProps","getErrorTextProps","getRequiredIndicatorProps","FieldRoot","useFieldProps","localProps","createSplitProps","FieldProvider","composeRefs","useRecipeResult","createRecipeContext","Icon","React","styles","className","otherProps","chakra","cx","createIcon","options","viewBox","pathDefinition","displayName","defaultProps","path","Children","Comp","withProvider","withContext","useFieldStyles","useClassNames","createSlotRecipeContext","Field.Root","Field.Label","Field.HelperText","Field.ErrorText","FieldRequiredIndicator","fallback","children","restProps","classNames","optionalTextSizeMap","withFormControl","Component","WithFormControl","errorText","formControlStyle","fullWidth","helperText","inlineField","invalidIconColor","label","labelPosition","labelStyle","onContrast","showOptionalElement","size","useInvalidIcon","useInvalidText","dataTestId","labelComponent","jsxs","fontSizes","e","Box","Field.RequiredIndicator","Text","Fragment","Flex"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9]}