@utilitywarehouse/hearth-react 0.24.14 → 0.24.15

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 (178) hide show
  1. package/dist/chunk-2GIN5F3U.cjs +2 -0
  2. package/dist/chunk-2GIN5F3U.cjs.map +1 -0
  3. package/dist/chunk-2J6ESRUT.cjs +2 -0
  4. package/dist/chunk-2J6ESRUT.cjs.map +1 -0
  5. package/dist/{chunk-4MPRCVYH.cjs → chunk-2KOSRTEJ.cjs} +2 -2
  6. package/dist/{chunk-4MPRCVYH.cjs.map → chunk-2KOSRTEJ.cjs.map} +1 -1
  7. package/dist/{chunk-3SV7S3S4.cjs → chunk-37Y47EVC.cjs} +2 -2
  8. package/dist/{chunk-3SV7S3S4.cjs.map → chunk-37Y47EVC.cjs.map} +1 -1
  9. package/dist/chunk-3VFCVBXL.js +2 -0
  10. package/dist/chunk-3VFCVBXL.js.map +1 -0
  11. package/dist/{chunk-QEKBLSE3.js → chunk-42SOFGH3.js} +2 -2
  12. package/dist/{chunk-K4RWSELN.cjs → chunk-45JNVTHN.cjs} +2 -2
  13. package/dist/chunk-45JNVTHN.cjs.map +1 -0
  14. package/dist/chunk-4DHFW3SB.js +2 -0
  15. package/dist/chunk-4DHFW3SB.js.map +1 -0
  16. package/dist/{chunk-BHEHWAUS.cjs → chunk-4X3BK4K3.cjs} +2 -2
  17. package/dist/{chunk-BHEHWAUS.cjs.map → chunk-4X3BK4K3.cjs.map} +1 -1
  18. package/dist/chunk-5QWOAXXI.cjs +2 -0
  19. package/dist/chunk-5QWOAXXI.cjs.map +1 -0
  20. package/dist/{chunk-6M2TG66C.cjs → chunk-5R3LALKT.cjs} +2 -2
  21. package/dist/{chunk-6M2TG66C.cjs.map → chunk-5R3LALKT.cjs.map} +1 -1
  22. package/dist/{chunk-WHNZUG4R.cjs → chunk-AHM6HIFY.cjs} +2 -2
  23. package/dist/{chunk-WHNZUG4R.cjs.map → chunk-AHM6HIFY.cjs.map} +1 -1
  24. package/dist/chunk-AJEG3D37.cjs +2 -0
  25. package/dist/chunk-AJEG3D37.cjs.map +1 -0
  26. package/dist/{chunk-IJJGXLVK.cjs → chunk-AVGPPHTC.cjs} +2 -2
  27. package/dist/{chunk-IJJGXLVK.cjs.map → chunk-AVGPPHTC.cjs.map} +1 -1
  28. package/dist/{chunk-MILIEBTD.cjs → chunk-BIYLFMVG.cjs} +2 -2
  29. package/dist/{chunk-MILIEBTD.cjs.map → chunk-BIYLFMVG.cjs.map} +1 -1
  30. package/dist/chunk-BZXGMEVY.js +2 -0
  31. package/dist/chunk-BZXGMEVY.js.map +1 -0
  32. package/dist/{chunk-WZYQVR44.js → chunk-CK7QFOWD.js} +2 -2
  33. package/dist/{chunk-CJXMLCA2.js → chunk-E6JPYGSG.js} +2 -2
  34. package/dist/{chunk-MLZNGLDO.cjs → chunk-EM33NSIH.cjs} +2 -2
  35. package/dist/{chunk-MLZNGLDO.cjs.map → chunk-EM33NSIH.cjs.map} +1 -1
  36. package/dist/{chunk-JP3ZLMBS.cjs → chunk-EMMIOGQB.cjs} +2 -2
  37. package/dist/{chunk-JP3ZLMBS.cjs.map → chunk-EMMIOGQB.cjs.map} +1 -1
  38. package/dist/{chunk-F6WCIWWX.js → chunk-G5PXDIBC.js} +2 -2
  39. package/dist/{chunk-RTLA6OD6.js → chunk-GH6OOCOX.js} +2 -2
  40. package/dist/chunk-HD4XF4MI.cjs +2 -0
  41. package/dist/chunk-HD4XF4MI.cjs.map +1 -0
  42. package/dist/chunk-KETB2GNA.cjs +2 -0
  43. package/dist/chunk-KETB2GNA.cjs.map +1 -0
  44. package/dist/{chunk-7PJC47FD.js → chunk-L35AV4PZ.js} +2 -2
  45. package/dist/{chunk-RPN3Y4ZQ.js → chunk-M77ZGJEQ.js} +2 -2
  46. package/dist/{chunk-GFG6UJYW.js → chunk-MCSL4BBJ.js} +2 -2
  47. package/dist/{chunk-GATQRCIC.js → chunk-MRID5MOZ.js} +2 -2
  48. package/dist/{chunk-NFPIFSDD.cjs → chunk-ONZJWEZY.cjs} +1 -1
  49. package/dist/{chunk-NFPIFSDD.cjs.map → chunk-ONZJWEZY.cjs.map} +1 -1
  50. package/dist/{chunk-HECLKFB5.js → chunk-SZFDCDUK.js} +1 -1
  51. package/dist/chunk-SZFDCDUK.js.map +1 -0
  52. package/dist/{chunk-UVVOKCAO.js → chunk-TTF7PTFZ.js} +2 -2
  53. package/dist/{chunk-G2YDYU4Q.cjs → chunk-UPFFJYVU.cjs} +2 -2
  54. package/dist/{chunk-G2YDYU4Q.cjs.map → chunk-UPFFJYVU.cjs.map} +1 -1
  55. package/dist/{chunk-GQRNYQV6.js → chunk-UUFCRSJ2.js} +2 -2
  56. package/dist/{chunk-UOGWX5DV.cjs → chunk-UXGRYKUD.cjs} +2 -2
  57. package/dist/{chunk-UOGWX5DV.cjs.map → chunk-UXGRYKUD.cjs.map} +1 -1
  58. package/dist/chunk-UYOL3ZJP.js +2 -0
  59. package/dist/chunk-UYOL3ZJP.js.map +1 -0
  60. package/dist/{chunk-IJWMHLXM.js → chunk-Y2DWTHAK.js} +2 -2
  61. package/dist/chunk-YB4RIRLB.js +2 -0
  62. package/dist/{chunk-GENAMX6B.js.map → chunk-YB4RIRLB.js.map} +1 -1
  63. package/dist/{chunk-F3EHAH7K.cjs → chunk-YDM7CNIQ.cjs} +2 -2
  64. package/dist/{chunk-F3EHAH7K.cjs.map → chunk-YDM7CNIQ.cjs.map} +1 -1
  65. package/dist/{chunk-RPP7J3G6.cjs → chunk-YDYDQJEJ.cjs} +2 -2
  66. package/dist/{chunk-RPP7J3G6.cjs.map → chunk-YDYDQJEJ.cjs.map} +1 -1
  67. package/dist/{chunk-S3PHETLT.js → chunk-YPC4QF7M.js} +2 -2
  68. package/dist/{chunk-JF5CW555.js → chunk-YRM3M5XJ.js} +2 -2
  69. package/dist/chunk-Z4Y63ALC.js +2 -0
  70. package/dist/chunk-Z4Y63ALC.js.map +1 -0
  71. package/dist/chunk-ZLC7RWKQ.js +2 -0
  72. package/dist/chunk-ZLC7RWKQ.js.map +1 -0
  73. package/dist/{chunk-AGVUDBCB.cjs → chunk-ZVE7YUPC.cjs} +2 -2
  74. package/dist/{chunk-AGVUDBCB.cjs.map → chunk-ZVE7YUPC.cjs.map} +1 -1
  75. package/dist/components/Button/Button.cjs +1 -1
  76. package/dist/components/Button/Button.js +1 -1
  77. package/dist/components/Card/Card.cjs +1 -1
  78. package/dist/components/Card/Card.js +1 -1
  79. package/dist/components/Combobox/Combobox.cjs +1 -1
  80. package/dist/components/Combobox/Combobox.js +1 -1
  81. package/dist/components/CurrencyInput/CurrencyInput.cjs +1 -1
  82. package/dist/components/CurrencyInput/CurrencyInput.d.cts +2 -5
  83. package/dist/components/CurrencyInput/CurrencyInput.d.ts +2 -5
  84. package/dist/components/CurrencyInput/CurrencyInput.js +1 -1
  85. package/dist/components/DateInput/DateInput.cjs +1 -1
  86. package/dist/components/DateInput/DateInput.js +1 -1
  87. package/dist/components/DateInput/DateInputSegment.cjs +1 -1
  88. package/dist/components/DateInput/DateInputSegment.d.cts +2 -6
  89. package/dist/components/DateInput/DateInputSegment.d.ts +2 -6
  90. package/dist/components/DateInput/DateInputSegment.js +1 -1
  91. package/dist/components/DatePicker/DatePicker.cjs +1 -1
  92. package/dist/components/DatePicker/DatePicker.js +1 -1
  93. package/dist/components/HighlightBanner/HighlightBanner.cjs +1 -1
  94. package/dist/components/HighlightBanner/HighlightBanner.js +1 -1
  95. package/dist/components/InputBase/InputBase.cjs +1 -1
  96. package/dist/components/InputBase/InputBase.d.cts +3 -2
  97. package/dist/components/InputBase/InputBase.d.ts +3 -2
  98. package/dist/components/InputBase/InputBase.js +1 -1
  99. package/dist/components/List/List.cjs +1 -1
  100. package/dist/components/List/List.js +1 -1
  101. package/dist/components/Modal/Modal.cjs +1 -1
  102. package/dist/components/Modal/Modal.js +1 -1
  103. package/dist/components/Pagination/Pagination.cjs +1 -1
  104. package/dist/components/Pagination/Pagination.js +1 -1
  105. package/dist/components/PasswordInput/PasswordInput.cjs +1 -1
  106. package/dist/components/PasswordInput/PasswordInput.d.cts +2 -5
  107. package/dist/components/PasswordInput/PasswordInput.d.ts +2 -5
  108. package/dist/components/PasswordInput/PasswordInput.js +1 -1
  109. package/dist/components/ProgressBar/ProgressBar.cjs +1 -1
  110. package/dist/components/ProgressBar/ProgressBar.js +1 -1
  111. package/dist/components/ProgressBar/ProgressBarCircular.cjs +1 -1
  112. package/dist/components/ProgressBar/ProgressBarCircular.js +1 -1
  113. package/dist/components/ProgressBar/ProgressBarLinear.cjs +1 -1
  114. package/dist/components/ProgressBar/ProgressBarLinear.js +1 -1
  115. package/dist/components/SearchInput/SearchInput.cjs +1 -1
  116. package/dist/components/SearchInput/SearchInput.d.cts +2 -5
  117. package/dist/components/SearchInput/SearchInput.d.ts +2 -5
  118. package/dist/components/SearchInput/SearchInput.js +1 -1
  119. package/dist/components/Table/Table.cjs +1 -1
  120. package/dist/components/Table/Table.js +1 -1
  121. package/dist/components/Table/TablePagination.cjs +1 -1
  122. package/dist/components/Table/TablePagination.js +1 -1
  123. package/dist/components/TextInput/TextInput.cjs +1 -1
  124. package/dist/components/TextInput/TextInput.d.cts +2 -5
  125. package/dist/components/TextInput/TextInput.d.ts +2 -5
  126. package/dist/components/TextInput/TextInput.js +1 -1
  127. package/dist/components/ToggleButtonCard/ToggleButtonCard.cjs +1 -1
  128. package/dist/components/ToggleButtonCard/ToggleButtonCard.js +1 -1
  129. package/dist/components/VerificationInput/VerificationInput.cjs +1 -1
  130. package/dist/components/VerificationInput/VerificationInput.d.cts +4 -6
  131. package/dist/components/VerificationInput/VerificationInput.d.ts +4 -6
  132. package/dist/components/VerificationInput/VerificationInput.js +1 -1
  133. package/dist/index.cjs +1 -1
  134. package/dist/index.cjs.map +1 -1
  135. package/dist/index.js +1 -1
  136. package/package.json +1 -1
  137. package/styles.css +1 -1
  138. package/dist/chunk-54YG4VNB.cjs +0 -2
  139. package/dist/chunk-54YG4VNB.cjs.map +0 -1
  140. package/dist/chunk-6TYBHIC2.js +0 -2
  141. package/dist/chunk-6TYBHIC2.js.map +0 -1
  142. package/dist/chunk-7G6BT4OO.cjs +0 -2
  143. package/dist/chunk-7G6BT4OO.cjs.map +0 -1
  144. package/dist/chunk-EBURNEZX.js +0 -2
  145. package/dist/chunk-EBURNEZX.js.map +0 -1
  146. package/dist/chunk-G3CRGGF6.cjs +0 -2
  147. package/dist/chunk-G3CRGGF6.cjs.map +0 -1
  148. package/dist/chunk-GENAMX6B.js +0 -2
  149. package/dist/chunk-HECLKFB5.js.map +0 -1
  150. package/dist/chunk-IURJIQKN.js +0 -2
  151. package/dist/chunk-IURJIQKN.js.map +0 -1
  152. package/dist/chunk-K4RWSELN.cjs.map +0 -1
  153. package/dist/chunk-PEIZ5YXW.js +0 -2
  154. package/dist/chunk-PEIZ5YXW.js.map +0 -1
  155. package/dist/chunk-QCMTR2BT.js +0 -2
  156. package/dist/chunk-QCMTR2BT.js.map +0 -1
  157. package/dist/chunk-QK53VWN5.js +0 -2
  158. package/dist/chunk-QK53VWN5.js.map +0 -1
  159. package/dist/chunk-ZFWAO4WB.cjs +0 -2
  160. package/dist/chunk-ZFWAO4WB.cjs.map +0 -1
  161. package/dist/chunk-ZXN6ZQX5.cjs +0 -2
  162. package/dist/chunk-ZXN6ZQX5.cjs.map +0 -1
  163. package/dist/chunk-ZZOECKRZ.cjs +0 -2
  164. package/dist/chunk-ZZOECKRZ.cjs.map +0 -1
  165. /package/dist/{chunk-QEKBLSE3.js.map → chunk-42SOFGH3.js.map} +0 -0
  166. /package/dist/{chunk-WZYQVR44.js.map → chunk-CK7QFOWD.js.map} +0 -0
  167. /package/dist/{chunk-CJXMLCA2.js.map → chunk-E6JPYGSG.js.map} +0 -0
  168. /package/dist/{chunk-F6WCIWWX.js.map → chunk-G5PXDIBC.js.map} +0 -0
  169. /package/dist/{chunk-RTLA6OD6.js.map → chunk-GH6OOCOX.js.map} +0 -0
  170. /package/dist/{chunk-7PJC47FD.js.map → chunk-L35AV4PZ.js.map} +0 -0
  171. /package/dist/{chunk-RPN3Y4ZQ.js.map → chunk-M77ZGJEQ.js.map} +0 -0
  172. /package/dist/{chunk-GFG6UJYW.js.map → chunk-MCSL4BBJ.js.map} +0 -0
  173. /package/dist/{chunk-GATQRCIC.js.map → chunk-MRID5MOZ.js.map} +0 -0
  174. /package/dist/{chunk-UVVOKCAO.js.map → chunk-TTF7PTFZ.js.map} +0 -0
  175. /package/dist/{chunk-GQRNYQV6.js.map → chunk-UUFCRSJ2.js.map} +0 -0
  176. /package/dist/{chunk-IJWMHLXM.js.map → chunk-Y2DWTHAK.js.map} +0 -0
  177. /package/dist/{chunk-S3PHETLT.js.map → chunk-YPC4QF7M.js.map} +0 -0
  178. /package/dist/{chunk-JF5CW555.js.map → chunk-YRM3M5XJ.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/runner/work/hearth/hearth/packages/react/dist/chunk-K4RWSELN.cjs","../src/components/Card/Card.tsx"],"names":["COMPONENT_NAME","componentClassName","withGlobalPrefix","Card","props","className","children","colorScheme","shadowColor","cardProps","extractProps","flexPropDefs","gapPropDefs","cardPropDefs","marginPropDefs","sizePropDefs","gridItemPropDefs","flexItemPropDefs","jsx","Flex","cn","kebabCase"],"mappings":"AAAA,iIAAwC,wDAAyC,wDAAyC,wDAAyC,wDAAyC,wDAAyC,wDAAyC,wDAAoC,wDAAyC,wDAAyC,wDAAyC,wDAAyC,+CCoCle,IAtBEA,CAAAA,CAAiB,MAAA,CACjBC,CAAAA,CAAqBC,iCAAAA,CAA+B,CAAA,CAE7CC,CAAAA,aAAQC,CAAAA,EAAqB,CACxC,GAAM,CACJ,SAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,CAAAA,CACA,WAAA,CAAAC,CAAAA,CAAc,eAAA,CACd,WAAA,CAAAC,CAAAA,CACA,GAAGC,CACL,CAAA,CAAIC,iCAAAA,CACFN,CACAO,mBAAAA,CACAC,mBAAAA,CACAC,mBAAAA,CACAC,mBAAAA,CACAC,mBAAAA,CACAC,mBAAAA,CACAC,mBACF,CAAA,CAEA,OACEC,6BAAAA,mBAACC,CAAA,CACC,SAAA,CAAWC,iCAAAA,CAAGnB,CAAoBI,CAAS,CAAA,CAC3C,kBAAA,CAAkBgB,iCAAAA,CAAqB,CAAA,CACvC,kBAAA,CAAkBb,CAAAA,CACjB,GAAGC,CAAAA,CACJ,EAAA,CAAG,KAAA,CAEF,QAAA,CAAAH,CAAAA,CACH,CAEJ,CAAA,CAEAH,CAAAA,CAAK,WAAA,CAAcH,CAAAA,CAAAA,cAAAA","file":"/home/runner/work/hearth/hearth/packages/react/dist/chunk-K4RWSELN.cjs","sourcesContent":[null,"import { cn } from '../../helpers/cn';\nimport { cardPropDefs } from './Card.props';\nimport type { CardProps } from './Card.props';\nimport { extractProps } from '../../helpers/extract-props';\nimport { withGlobalPrefix } from '../../helpers/with-global-prefix';\nimport { marginPropDefs } from '../../props/margin.props';\nimport { sizePropDefs } from '../../props/size.props';\nimport { gridItemPropDefs } from '../../props/grid-item.props';\nimport { flexItemPropDefs } from '../../props/flex-item.props';\nimport { Flex } from '../Flex/Flex';\nimport { flexPropDefs } from '../Flex/Flex.props';\nimport { kebabCase } from '../../helpers/kebab-case';\nimport { gapPropDefs } from '../../props/gap.props';\n\nconst COMPONENT_NAME = 'Card';\nconst componentClassName = withGlobalPrefix(COMPONENT_NAME);\n\nexport const Card = (props: CardProps) => {\n const {\n className,\n children,\n colorScheme = 'neutralStrong',\n shadowColor,\n ...cardProps\n } = extractProps(\n props,\n flexPropDefs,\n gapPropDefs,\n cardPropDefs,\n marginPropDefs,\n sizePropDefs,\n gridItemPropDefs,\n flexItemPropDefs\n );\n\n return (\n <Flex\n className={cn(componentClassName, className)}\n data-colorscheme={kebabCase(colorScheme)}\n data-shadowcolor={shadowColor}\n {...cardProps}\n as=\"div\"\n >\n {children}\n </Flex>\n );\n};\n\nCard.displayName = COMPONENT_NAME;\n"]}
@@ -1,2 +0,0 @@
1
- import{a as m}from"./chunk-IURJIQKN.js";import{a as n}from"./chunk-BCK2XQ4L.js";import{a as s}from"./chunk-OVKYZ4TW.js";import{a as i}from"./chunk-WGT24RID.js";import{a}from"./chunk-L4OZ3M5X.js";import{a as l}from"./chunk-MSHCGZ4G.js";import{b as u}from"./chunk-TXDSZ3MR.js";import{CloseSmallIcon as E,SearchMediumIcon as C}from"@utilitywarehouse/hearth-react-icons";import*as o from"react";import{jsx as t,jsxs as H}from"react/jsx-runtime";var f="SearchInput",P=u(f),B=({className:I,disabled:c,value:r,onClear:p,loading:d,hideLabel:h=!0,helperText:S,id:y,ref:x,...b})=>{let R=o.useRef(null),e=x||R,M=o.useCallback(T=>{typeof p!="function"||T.button!==0||(p(),e&&typeof e=="object"&&e.current&&e.current.focus())},[e,p]),{id:N}=a({providedId:y,prefix:"search-input"});return H(m,{ref:e,className:l(P,I),type:"search",enterKeyHint:"search",disabled:c,hideLabel:h,helperText:S,value:r,id:N,...b,children:[t(n,{placement:"prefix",children:t(C,{})}),d?t(n,{placement:"suffix",children:t(i,{size:"xs",color:"primary"})}):null,r!==void 0&&String(r).length>0?t(n,{placement:"suffix",children:t(s,{type:"button",label:"clear search",onClick:M,disabled:c,children:t(E,{})})}):null]})};B.displayName=f;export{B as a};
2
- //# sourceMappingURL=chunk-PEIZ5YXW.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/SearchInput/SearchInput.tsx"],"sourcesContent":["'use client';\n\nimport { withGlobalPrefix } from '../../helpers/with-global-prefix';\nimport { cn } from '../../helpers/cn';\nimport { TextInput } from '../TextInput/TextInput';\nimport { InputSlot } from '../InputSlot/InputSlot';\nimport { UnstyledIconButton } from '../UnstyledIconButton/UnstyledIconButton';\nimport type { SearchInputProps } from './SearchInput.props';\nimport { Spinner } from '../Spinner/Spinner';\nimport { CloseSmallIcon, SearchMediumIcon } from '@utilitywarehouse/hearth-react-icons';\nimport { useIds } from '../../hooks/use-ids';\nimport * as React from 'react';\n\nconst COMPONENT_NAME = 'SearchInput';\nconst componentClassName = withGlobalPrefix(COMPONENT_NAME);\n\nexport const SearchInput = ({\n className,\n disabled,\n value,\n onClear,\n loading,\n hideLabel = true,\n helperText,\n id: providedId,\n ref: forwardedRef,\n ...props\n}: SearchInputProps) => {\n const defaultRef = React.useRef<HTMLInputElement | null>(null);\n const inputRef = forwardedRef || defaultRef;\n\n const handleClear = React.useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n if (typeof onClear !== 'function' || event.button !== 0) {\n return;\n }\n onClear();\n\n if (inputRef && typeof inputRef === 'object' && inputRef.current) {\n inputRef.current.focus();\n }\n },\n [inputRef, onClear]\n );\n\n const { id } = useIds({ providedId, prefix: 'search-input' });\n\n return (\n <TextInput\n ref={inputRef}\n className={cn(componentClassName, className)}\n type=\"search\"\n enterKeyHint=\"search\"\n disabled={disabled}\n hideLabel={hideLabel}\n helperText={helperText}\n value={value}\n id={id}\n {...props}\n >\n <InputSlot placement=\"prefix\">\n <SearchMediumIcon />\n </InputSlot>\n {loading ? (\n <InputSlot placement=\"suffix\">\n <Spinner size=\"xs\" color=\"primary\" />\n </InputSlot>\n ) : null}\n {value !== undefined && String(value).length > 0 ? (\n <InputSlot placement=\"suffix\">\n <UnstyledIconButton\n type=\"button\"\n label=\"clear search\"\n onClick={handleClear}\n disabled={disabled}\n >\n <CloseSmallIcon />\n </UnstyledIconButton>\n </InputSlot>\n ) : null}\n </TextInput>\n );\n};\n\nSearchInput.displayName = COMPONENT_NAME;\n"],"mappings":"mRASA,OAAS,kBAAAA,EAAgB,oBAAAC,MAAwB,uCAEjD,UAAYC,MAAW,QAqCnB,OAaI,OAAAC,EAbJ,QAAAC,MAAA,oBAnCJ,IAAMC,EAAiB,cACjBC,EAAqBC,EAAiBF,CAAc,EAE7CG,EAAc,CAAC,CAC1B,UAAAC,EACA,SAAAC,EACA,MAAAC,EACA,QAAAC,EACA,QAAAC,EACA,UAAAC,EAAY,GACZ,WAAAC,EACA,GAAIC,EACJ,IAAKC,EACL,GAAGC,CACL,IAAwB,CACtB,IAAMC,EAAmB,SAAgC,IAAI,EACvDC,EAAWH,GAAgBE,EAE3BE,EAAoB,cACvBC,GAA+C,CAC1C,OAAOV,GAAY,YAAcU,EAAM,SAAW,IAGtDV,EAAQ,EAEJQ,GAAY,OAAOA,GAAa,UAAYA,EAAS,SACvDA,EAAS,QAAQ,MAAM,EAE3B,EACA,CAACA,EAAUR,CAAO,CACpB,EAEM,CAAE,GAAAW,CAAG,EAAIC,EAAO,CAAE,WAAAR,EAAY,OAAQ,cAAe,CAAC,EAE5D,OACEZ,EAACqB,EAAA,CACC,IAAKL,EACL,UAAWM,EAAGpB,EAAoBG,CAAS,EAC3C,KAAK,SACL,aAAa,SACb,SAAUC,EACV,UAAWI,EACX,WAAYC,EACZ,MAAOJ,EACP,GAAIY,EACH,GAAGL,EAEJ,UAAAf,EAACwB,EAAA,CAAU,UAAU,SACnB,SAAAxB,EAACyB,EAAA,EAAiB,EACpB,EACCf,EACCV,EAACwB,EAAA,CAAU,UAAU,SACnB,SAAAxB,EAAC0B,EAAA,CAAQ,KAAK,KAAK,MAAM,UAAU,EACrC,EACE,KACHlB,IAAU,QAAa,OAAOA,CAAK,EAAE,OAAS,EAC7CR,EAACwB,EAAA,CAAU,UAAU,SACnB,SAAAxB,EAAC2B,EAAA,CACC,KAAK,SACL,MAAM,eACN,QAAST,EACT,SAAUX,EAEV,SAAAP,EAAC4B,EAAA,EAAe,EAClB,EACF,EACE,MACN,CAEJ,EAEAvB,EAAY,YAAcH","names":["CloseSmallIcon","SearchMediumIcon","React","jsx","jsxs","COMPONENT_NAME","componentClassName","withGlobalPrefix","SearchInput","className","disabled","value","onClear","loading","hideLabel","helperText","providedId","forwardedRef","props","defaultRef","inputRef","handleClear","event","id","useIds","TextInput","cn","InputSlot","SearchMediumIcon","Spinner","UnstyledIconButton","CloseSmallIcon"]}
@@ -1,2 +0,0 @@
1
- import{a as E}from"./chunk-IURJIQKN.js";import{a as x}from"./chunk-MMQEBBH2.js";import{a as T}from"./chunk-BCK2XQ4L.js";import{a as R}from"./chunk-MSHCGZ4G.js";import{b as v}from"./chunk-TXDSZ3MR.js";import*as r from"react";import{jsx as p}from"react/jsx-runtime";var P="CurrencyInput",z=v(P),O=({className:D,disabled:M,value:f,onChange:g,placeholder:N="0.00",disableGroupSeparators:d,ref:V,...b})=>{let[w,S]=r.useState(""),B=r.useRef(null),o=r.useRef(null),t=V||B,h=f!==void 0,C=h?String(f??""):w,i=e=>{if(!e)return"";let c=e.split("."),n=c[0]||"";d||(n=n.replace(/\B(?=(\d{3})+(?!\d))/g,","));let s=c[1];return s!==void 0?n+"."+s:n},H=e=>{let c=e.target.value,n=e.target.selectionStart||0,s=i(C),y=c.replace(/[^\d.]/g,""),u=y.split("."),I=u.length>2?u[0]+"."+u.slice(1).join(""):y,m=I.split("."),a=m[1]!==void 0?m[0]+"."+m[1].substring(0,2):I;if(d)o.current=null;else{let l=i(a),L=(s.slice(0,Math.min(n,s.length)).match(/,/g)||[]).length,j=(l.slice(0,Math.min(n,l.length)).match(/,/g)||[]).length-L;o.current=n+j}if(h||S(a),g&&t&&typeof t=="object"&&t.current){let l={...e,target:{...e.target,value:a},currentTarget:{...e.currentTarget,value:a}};g(l)}};return r.useEffect(()=>{t&&typeof t=="object"&&t.current&&o.current!==null&&(t.current.setSelectionRange(o.current,o.current),o.current=null)}),p(E,{ref:t,className:R(z,D),type:"text",inputMode:"decimal",disabled:M,value:i(C),onChange:H,placeholder:N,...b,children:p(T,{placement:"prefix",children:p(x,{size:"3xl",children:"\xA3"})})})};O.displayName=P;export{O as a};
2
- //# sourceMappingURL=chunk-QCMTR2BT.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/CurrencyInput/CurrencyInput.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { cn } from '../../helpers/cn';\nimport type { ChangeEvent } from 'react';\nimport { withGlobalPrefix } from '../../helpers/with-global-prefix';\nimport { TextInput } from '../TextInput/TextInput';\nimport { InputSlot } from '../InputSlot/InputSlot';\nimport type { CurrencyInputProps } from './CurrencyInput.props';\nimport { DetailText } from '../DetailText/DetailText';\n\nconst COMPONENT_NAME = 'CurrencyInput';\nconst componentClassName = withGlobalPrefix(COMPONENT_NAME);\n\nexport const CurrencyInput = ({\n className,\n disabled,\n value: controlledValue,\n onChange,\n placeholder = '0.00',\n disableGroupSeparators,\n ref: forwardedRef,\n ...props\n}: CurrencyInputProps) => {\n const maxDecimals = 2;\n const [internalValue, setInternalValue] = React.useState<string>('');\n const localRef = React.useRef<HTMLInputElement>(null);\n const cursorPositionRef = React.useRef<number | null>(null);\n\n // Use forwarded ref if provided, otherwise use internal ref\n const inputRef = forwardedRef || localRef;\n\n const isControlled = controlledValue !== undefined;\n const numericValue = isControlled ? String(controlledValue ?? '') : internalValue;\n\n // Format value for display\n const formatValue = (value: string): string => {\n if (!value) return '';\n\n const parts = value.split('.');\n let integerPart = parts[0] || '';\n\n if (!disableGroupSeparators) {\n integerPart = integerPart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n }\n\n const decimalPart = parts[1];\n return decimalPart !== undefined ? integerPart + '.' + decimalPart : integerPart;\n };\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>): void => {\n const input = e.target.value;\n const cursorPosition = e.target.selectionStart || 0;\n const previousDisplayValue = formatValue(numericValue);\n\n // Remove all non-digits except decimal\n const cleaned = input.replace(/[^\\d.]/g, '');\n\n // Ensure only one decimal point\n const parts = cleaned.split('.');\n const sanitized = parts.length > 2 ? parts[0] + '.' + parts.slice(1).join('') : cleaned;\n\n // Limit decimal places\n const finalParts = sanitized.split('.');\n const limitedValue =\n finalParts[1] !== undefined\n ? finalParts[0] + '.' + finalParts[1].substring(0, maxDecimals)\n : sanitized;\n\n // Calculate new cursor position\n if (!disableGroupSeparators) {\n const newDisplayValue = formatValue(limitedValue);\n const oldCommasBeforeCursor = (\n previousDisplayValue\n .slice(0, Math.min(cursorPosition, previousDisplayValue.length))\n .match(/,/g) || []\n ).length;\n const newCommasBeforeCursor = (\n newDisplayValue.slice(0, Math.min(cursorPosition, newDisplayValue.length)).match(/,/g) || []\n ).length;\n const commaDiff = newCommasBeforeCursor - oldCommasBeforeCursor;\n cursorPositionRef.current = cursorPosition + commaDiff;\n } else {\n cursorPositionRef.current = null;\n }\n if (!isControlled) {\n setInternalValue(limitedValue);\n }\n\n // Return numeric value WITHOUT commas\n if (onChange && inputRef && typeof inputRef === 'object' && inputRef.current) {\n const syntheticEvent = {\n ...e,\n target: {\n ...e.target,\n value: limitedValue, // Raw numeric value without commas\n },\n currentTarget: {\n ...e.currentTarget,\n value: limitedValue,\n },\n } as ChangeEvent<HTMLInputElement>;\n\n onChange(syntheticEvent);\n }\n };\n\n // Restore cursor position after render\n React.useEffect(() => {\n if (\n inputRef &&\n typeof inputRef === 'object' &&\n inputRef.current &&\n cursorPositionRef.current !== null\n ) {\n inputRef.current.setSelectionRange(cursorPositionRef.current, cursorPositionRef.current);\n cursorPositionRef.current = null;\n }\n });\n\n return (\n <TextInput\n ref={inputRef}\n className={cn(componentClassName, className)}\n type=\"text\"\n inputMode=\"decimal\"\n disabled={disabled}\n value={formatValue(numericValue)} // Display with commas\n onChange={handleChange}\n placeholder={placeholder}\n {...props}\n >\n <InputSlot placement=\"prefix\">\n <DetailText size=\"3xl\">£</DetailText>\n </InputSlot>\n </TextInput>\n );\n};\n\nCurrencyInput.displayName = COMPONENT_NAME;\n"],"mappings":"wMAEA,UAAYA,MAAW,QAmIf,cAAAC,MAAA,oBA1HR,IAAMC,EAAiB,gBACjBC,EAAqBC,EAAiBF,CAAc,EAE7CG,EAAgB,CAAC,CAC5B,UAAAC,EACA,SAAAC,EACA,MAAOC,EACP,SAAAC,EACA,YAAAC,EAAc,OACd,uBAAAC,EACA,IAAKC,EACL,GAAGC,CACL,IAA0B,CAExB,GAAM,CAACC,EAAeC,CAAgB,EAAU,WAAiB,EAAE,EAC7DC,EAAiB,SAAyB,IAAI,EAC9CC,EAA0B,SAAsB,IAAI,EAGpDC,EAAWN,GAAgBI,EAE3BG,EAAeX,IAAoB,OACnCY,EAAeD,EAAe,OAAOX,GAAmB,EAAE,EAAIM,EAG9DO,EAAeC,GAA0B,CAC7C,GAAI,CAACA,EAAO,MAAO,GAEnB,IAAMC,EAAQD,EAAM,MAAM,GAAG,EACzBE,EAAcD,EAAM,CAAC,GAAK,GAEzBZ,IACHa,EAAcA,EAAY,QAAQ,wBAAyB,GAAG,GAGhE,IAAMC,EAAcF,EAAM,CAAC,EAC3B,OAAOE,IAAgB,OAAYD,EAAc,IAAMC,EAAcD,CACvE,EAEME,EAAgB,GAA2C,CAC/D,IAAMC,EAAQ,EAAE,OAAO,MACjBC,EAAiB,EAAE,OAAO,gBAAkB,EAC5CC,EAAuBR,EAAYD,CAAY,EAG/CU,EAAUH,EAAM,QAAQ,UAAW,EAAE,EAGrCJ,EAAQO,EAAQ,MAAM,GAAG,EACzBC,EAAYR,EAAM,OAAS,EAAIA,EAAM,CAAC,EAAI,IAAMA,EAAM,MAAM,CAAC,EAAE,KAAK,EAAE,EAAIO,EAG1EE,EAAaD,EAAU,MAAM,GAAG,EAChCE,EACJD,EAAW,CAAC,IAAM,OACdA,EAAW,CAAC,EAAI,IAAMA,EAAW,CAAC,EAAE,UAAU,EAAG,CAAW,EAC5DD,EAGN,GAAKpB,EAaHM,EAAkB,QAAU,SAbD,CAC3B,IAAMiB,EAAkBb,EAAYY,CAAY,EAC1CE,GACJN,EACG,MAAM,EAAG,KAAK,IAAID,EAAgBC,EAAqB,MAAM,CAAC,EAC9D,MAAM,IAAI,GAAK,CAAC,GACnB,OAIIO,GAFJF,EAAgB,MAAM,EAAG,KAAK,IAAIN,EAAgBM,EAAgB,MAAM,CAAC,EAAE,MAAM,IAAI,GAAK,CAAC,GAC3F,OACwCC,EAC1ClB,EAAkB,QAAUW,EAAiBQ,CAC/C,CAQA,GALKjB,GACHJ,EAAiBkB,CAAY,EAI3BxB,GAAYS,GAAY,OAAOA,GAAa,UAAYA,EAAS,QAAS,CAC5E,IAAMmB,EAAiB,CACrB,GAAG,EACH,OAAQ,CACN,GAAG,EAAE,OACL,MAAOJ,CACT,EACA,cAAe,CACb,GAAG,EAAE,cACL,MAAOA,CACT,CACF,EAEAxB,EAAS4B,CAAc,CACzB,CACF,EAGA,OAAM,YAAU,IAAM,CAElBnB,GACA,OAAOA,GAAa,UACpBA,EAAS,SACTD,EAAkB,UAAY,OAE9BC,EAAS,QAAQ,kBAAkBD,EAAkB,QAASA,EAAkB,OAAO,EACvFA,EAAkB,QAAU,KAEhC,CAAC,EAGChB,EAACqC,EAAA,CACC,IAAKpB,EACL,UAAWqB,EAAGpC,EAAoBG,CAAS,EAC3C,KAAK,OACL,UAAU,UACV,SAAUC,EACV,MAAOc,EAAYD,CAAY,EAC/B,SAAUM,EACV,YAAahB,EACZ,GAAGG,EAEJ,SAAAZ,EAACuC,EAAA,CAAU,UAAU,SACnB,SAAAvC,EAACwC,EAAA,CAAW,KAAK,MAAM,gBAAC,EAC1B,EACF,CAEJ,EAEApC,EAAc,YAAcH","names":["React","jsx","COMPONENT_NAME","componentClassName","withGlobalPrefix","CurrencyInput","className","disabled","controlledValue","onChange","placeholder","disableGroupSeparators","forwardedRef","props","internalValue","setInternalValue","localRef","cursorPositionRef","inputRef","isControlled","numericValue","formatValue","value","parts","integerPart","decimalPart","handleChange","input","cursorPosition","previousDisplayValue","cleaned","sanitized","finalParts","limitedValue","newDisplayValue","oldCommasBeforeCursor","commaDiff","syntheticEvent","TextInput","cn","InputSlot","DetailText"]}
@@ -1,2 +0,0 @@
1
- import{a as l}from"./chunk-HECLKFB5.js";import{a}from"./chunk-2HQK2OMW.js";import{a as r}from"./chunk-Z6OGYQ26.js";import{a as m}from"./chunk-L4OZ3M5X.js";import{a as o}from"./chunk-MSHCGZ4G.js";import{b as p}from"./chunk-TXDSZ3MR.js";import{jsx as i,jsxs as x}from"react/jsx-runtime";var s="DateInputSegment",N=p(s),S=({className:d,label:u,placeholder:f,value:c,disabled:e,required:I,id:b,...g})=>{let{id:t,labelId:n}=m({providedId:b,prefix:"date-input-segment"});return x(r,{className:o(N,d),"data-disabled":e?"":void 0,children:[i(a,{htmlFor:t,id:n,disableUserSelect:!0,children:u}),i(l,{type:"text",inputMode:"numeric",pattern:"[0-9]*",id:t,placeholder:e?void 0:f,value:c,disabled:e,required:I,"aria-labelledby":n,spellCheck:"false",...g})]})};S.displayName=s;export{S as a};
2
- //# sourceMappingURL=chunk-QK53VWN5.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/DateInput/DateInputSegment.tsx"],"sourcesContent":["'use client';\n\nimport { cn } from '../../helpers/cn';\nimport { withGlobalPrefix } from '../../helpers/with-global-prefix';\nimport { Flex } from '../Flex/Flex';\nimport { Label } from '../Label/Label';\nimport { useIds } from '../../hooks/use-ids';\nimport { InputBase } from '../InputBase/InputBase';\nimport type { DateInputSegmentProps } from './DateInputSegment.props';\n\nconst COMPONENT_NAME = 'DateInputSegment';\nconst componentClassName = withGlobalPrefix(COMPONENT_NAME);\n\nexport const DateInputSegment = ({\n className,\n label,\n placeholder,\n value,\n disabled,\n required,\n id: providedId,\n ...props\n}: DateInputSegmentProps) => {\n const { id, labelId } = useIds({ providedId, prefix: 'date-input-segment' });\n\n return (\n <Flex className={cn(componentClassName, className)} data-disabled={disabled ? '' : undefined}>\n <Label htmlFor={id} id={labelId} disableUserSelect>\n {label}\n </Label>\n\n <InputBase\n type=\"text\"\n inputMode=\"numeric\"\n pattern=\"[0-9]*\"\n id={id}\n placeholder={!disabled ? placeholder : undefined}\n value={value}\n disabled={disabled}\n required={required}\n aria-labelledby={labelId}\n spellCheck=\"false\"\n {...props}\n />\n </Flex>\n );\n};\n\nDateInputSegment.displayName = COMPONENT_NAME;\n"],"mappings":"2OA0BI,OACE,OAAAA,EADF,QAAAC,MAAA,oBAhBJ,IAAMC,EAAiB,mBACjBC,EAAqBC,EAAiBF,CAAc,EAE7CG,EAAmB,CAAC,CAC/B,UAAAC,EACA,MAAAC,EACA,YAAAC,EACA,MAAAC,EACA,SAAAC,EACA,SAAAC,EACA,GAAIC,EACJ,GAAGC,CACL,IAA6B,CAC3B,GAAM,CAAE,GAAAC,EAAI,QAAAC,CAAQ,EAAIC,EAAO,CAAE,WAAAJ,EAAY,OAAQ,oBAAqB,CAAC,EAE3E,OACEX,EAACgB,EAAA,CAAK,UAAWC,EAAGf,EAAoBG,CAAS,EAAG,gBAAeI,EAAW,GAAK,OACjF,UAAAV,EAACmB,EAAA,CAAM,QAASL,EAAI,GAAIC,EAAS,kBAAiB,GAC/C,SAAAR,EACH,EAEAP,EAACoB,EAAA,CACC,KAAK,OACL,UAAU,UACV,QAAQ,SACR,GAAIN,EACJ,YAAcJ,EAAyB,OAAdF,EACzB,MAAOC,EACP,SAAUC,EACV,SAAUC,EACV,kBAAiBI,EACjB,WAAW,QACV,GAAGF,EACN,GACF,CAEJ,EAEAR,EAAiB,YAAcH","names":["jsx","jsxs","COMPONENT_NAME","componentClassName","withGlobalPrefix","DateInputSegment","className","label","placeholder","value","disabled","required","providedId","props","id","labelId","useIds","Flex","cn","Label","InputBase"]}
@@ -1,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } }var _chunk54YG4VNBcjs = require('./chunk-54YG4VNB.cjs');var _chunkRH3MHHIScjs = require('./chunk-RH3MHHIS.cjs');var _chunkAGPVWUNAcjs = require('./chunk-AGPVWUNA.cjs');var _chunkT3TZBSFXcjs = require('./chunk-T3TZBSFX.cjs');var _chunkITZEACMWcjs = require('./chunk-ITZEACMW.cjs');var _chunkGVVJQBRKcjs = require('./chunk-GVVJQBRK.cjs');var _chunk7LZI6HLWcjs = require('./chunk-7LZI6HLW.cjs');var _hearthreacticons = require('@utilitywarehouse/hearth-react-icons');var _react = require('react'); var o = _interopRequireWildcard(_react);var _jsxruntime = require('react/jsx-runtime');var f="SearchInput",P=_chunk7LZI6HLWcjs.b.call(void 0, f),B= exports.a =({className:I,disabled:c,value:r,onClear:p,loading:d,hideLabel:h=!0,helperText:S,id:y,ref:x,...b})=>{let R=o.useRef(null),e=x||R,M=o.useCallback(T=>{typeof p!="function"||T.button!==0||(p(),e&&typeof e=="object"&&e.current&&e.current.focus())},[e,p]),{id:N}=_chunkITZEACMWcjs.a.call(void 0, {providedId:y,prefix:"search-input"});return _jsxruntime.jsxs.call(void 0, _chunk54YG4VNBcjs.a,{ref:e,className:_chunkGVVJQBRKcjs.a.call(void 0, P,I),type:"search",enterKeyHint:"search",disabled:c,hideLabel:h,helperText:S,value:r,id:N,...b,children:[_jsxruntime.jsx.call(void 0, _chunkRH3MHHIScjs.a,{placement:"prefix",children:_jsxruntime.jsx.call(void 0, _hearthreacticons.SearchMediumIcon,{})}),d?_jsxruntime.jsx.call(void 0, _chunkRH3MHHIScjs.a,{placement:"suffix",children:_jsxruntime.jsx.call(void 0, _chunkT3TZBSFXcjs.a,{size:"xs",color:"primary"})}):null,r!==void 0&&String(r).length>0?_jsxruntime.jsx.call(void 0, _chunkRH3MHHIScjs.a,{placement:"suffix",children:_jsxruntime.jsx.call(void 0, _chunkAGPVWUNAcjs.a,{type:"button",label:"clear search",onClick:M,disabled:c,children:_jsxruntime.jsx.call(void 0, _hearthreacticons.CloseSmallIcon,{})})}):null]})};B.displayName=f;exports.a = B;
2
- //# sourceMappingURL=chunk-ZFWAO4WB.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/runner/work/hearth/hearth/packages/react/dist/chunk-ZFWAO4WB.cjs","../src/components/SearchInput/SearchInput.tsx"],"names":["COMPONENT_NAME","componentClassName","withGlobalPrefix","SearchInput","className","disabled","value","onClear","loading","hideLabel","helperText","providedId","forwardedRef","props","defaultRef","inputRef","handleClear","event","id","useIds","jsxs","TextInput","cn","jsx","InputSlot","SearchMediumIcon","Spinner","UnstyledIconButton","CloseSmallIcon"],"mappings":"AAAA,mZAAwC,wDAAyC,wDAAyC,wDAAyC,wDAAoC,wDAAyC,wDAAyC,wECSxO,uEAE1B,+CAqCnB,IAnCEA,CAAAA,CAAiB,aAAA,CACjBC,CAAAA,CAAqBC,iCAAAA,CAA+B,CAAA,CAE7CC,CAAAA,aAAc,CAAC,CAC1B,SAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,CAAAA,CACA,KAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,SAAA,CAAAC,CAAAA,CAAY,CAAA,CAAA,CACZ,UAAA,CAAAC,CAAAA,CACA,EAAA,CAAIC,CAAAA,CACJ,GAAA,CAAKC,CAAAA,CACL,GAAGC,CACL,CAAA,CAAA,EAAwB,CACtB,IAAMC,CAAAA,CAAmB,CAAA,CAAA,MAAA,CAAgC,IAAI,CAAA,CACvDC,CAAAA,CAAWH,CAAAA,EAAgBE,CAAAA,CAE3BE,CAAAA,CAAoB,CAAA,CAAA,WAAA,CACvBC,CAAAA,EAA+C,CAC1C,OAAOV,CAAAA,EAAY,UAAA,EAAcU,CAAAA,CAAM,MAAA,GAAW,CAAA,EAAA,CAGtDV,CAAAA,CAAQ,CAAA,CAEJQ,CAAAA,EAAY,OAAOA,CAAAA,EAAa,QAAA,EAAYA,CAAAA,CAAS,OAAA,EACvDA,CAAAA,CAAS,OAAA,CAAQ,KAAA,CAAM,CAAA,CAE3B,CAAA,CACA,CAACA,CAAAA,CAAUR,CAAO,CACpB,CAAA,CAEM,CAAE,EAAA,CAAAW,CAAG,CAAA,CAAIC,iCAAAA,CAAS,UAAA,CAAAR,CAAAA,CAAY,MAAA,CAAQ,cAAe,CAAC,CAAA,CAE5D,OACES,8BAAAA,mBAACC,CAAA,CACC,GAAA,CAAKN,CAAAA,CACL,SAAA,CAAWO,iCAAAA,CAAGrB,CAAoBG,CAAS,CAAA,CAC3C,IAAA,CAAK,QAAA,CACL,YAAA,CAAa,QAAA,CACb,QAAA,CAAUC,CAAAA,CACV,SAAA,CAAWI,CAAAA,CACX,UAAA,CAAYC,CAAAA,CACZ,KAAA,CAAOJ,CAAAA,CACP,EAAA,CAAIY,CAAAA,CACH,GAAGL,CAAAA,CAEJ,QAAA,CAAA,CAAAU,6BAAAA,mBAACC,CAAA,CAAU,SAAA,CAAU,QAAA,CACnB,QAAA,CAAAD,6BAAAA,kCAACE,CAAA,CAAA,CAAiB,CAAA,CACpB,CAAA,CACCjB,CAAAA,CACCe,6BAAAA,mBAACC,CAAA,CAAU,SAAA,CAAU,QAAA,CACnB,QAAA,CAAAD,6BAAAA,mBAACG,CAAA,CAAQ,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,SAAA,CAAU,CAAA,CACrC,CAAA,CACE,IAAA,CACHpB,CAAAA,GAAU,KAAA,CAAA,EAAa,MAAA,CAAOA,CAAK,CAAA,CAAE,MAAA,CAAS,CAAA,CAC7CiB,6BAAAA,mBAACC,CAAA,CAAU,SAAA,CAAU,QAAA,CACnB,QAAA,CAAAD,6BAAAA,mBAACI,CAAA,CACC,IAAA,CAAK,QAAA,CACL,KAAA,CAAM,cAAA,CACN,OAAA,CAASX,CAAAA,CACT,QAAA,CAAUX,CAAAA,CAEV,QAAA,CAAAkB,6BAAAA,gCAACK,CAAA,CAAA,CAAe,CAAA,CAClB,CAAA,CACF,CAAA,CACE,IAAA,CAAA,CACN,CAEJ,CAAA,CAEAzB,CAAAA,CAAY,WAAA,CAAcH,CAAAA,CAAAA,cAAAA","file":"/home/runner/work/hearth/hearth/packages/react/dist/chunk-ZFWAO4WB.cjs","sourcesContent":[null,"'use client';\n\nimport { withGlobalPrefix } from '../../helpers/with-global-prefix';\nimport { cn } from '../../helpers/cn';\nimport { TextInput } from '../TextInput/TextInput';\nimport { InputSlot } from '../InputSlot/InputSlot';\nimport { UnstyledIconButton } from '../UnstyledIconButton/UnstyledIconButton';\nimport type { SearchInputProps } from './SearchInput.props';\nimport { Spinner } from '../Spinner/Spinner';\nimport { CloseSmallIcon, SearchMediumIcon } from '@utilitywarehouse/hearth-react-icons';\nimport { useIds } from '../../hooks/use-ids';\nimport * as React from 'react';\n\nconst COMPONENT_NAME = 'SearchInput';\nconst componentClassName = withGlobalPrefix(COMPONENT_NAME);\n\nexport const SearchInput = ({\n className,\n disabled,\n value,\n onClear,\n loading,\n hideLabel = true,\n helperText,\n id: providedId,\n ref: forwardedRef,\n ...props\n}: SearchInputProps) => {\n const defaultRef = React.useRef<HTMLInputElement | null>(null);\n const inputRef = forwardedRef || defaultRef;\n\n const handleClear = React.useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n if (typeof onClear !== 'function' || event.button !== 0) {\n return;\n }\n onClear();\n\n if (inputRef && typeof inputRef === 'object' && inputRef.current) {\n inputRef.current.focus();\n }\n },\n [inputRef, onClear]\n );\n\n const { id } = useIds({ providedId, prefix: 'search-input' });\n\n return (\n <TextInput\n ref={inputRef}\n className={cn(componentClassName, className)}\n type=\"search\"\n enterKeyHint=\"search\"\n disabled={disabled}\n hideLabel={hideLabel}\n helperText={helperText}\n value={value}\n id={id}\n {...props}\n >\n <InputSlot placement=\"prefix\">\n <SearchMediumIcon />\n </InputSlot>\n {loading ? (\n <InputSlot placement=\"suffix\">\n <Spinner size=\"xs\" color=\"primary\" />\n </InputSlot>\n ) : null}\n {value !== undefined && String(value).length > 0 ? (\n <InputSlot placement=\"suffix\">\n <UnstyledIconButton\n type=\"button\"\n label=\"clear search\"\n onClick={handleClear}\n disabled={disabled}\n >\n <CloseSmallIcon />\n </UnstyledIconButton>\n </InputSlot>\n ) : null}\n </TextInput>\n );\n};\n\nSearchInput.displayName = COMPONENT_NAME;\n"]}
@@ -1,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkNFPIFSDDcjs = require('./chunk-NFPIFSDD.cjs');var _chunkW53L4ME4cjs = require('./chunk-W53L4ME4.cjs');var _chunk3EK2M2AAcjs = require('./chunk-3EK2M2AA.cjs');var _chunkITZEACMWcjs = require('./chunk-ITZEACMW.cjs');var _chunkGVVJQBRKcjs = require('./chunk-GVVJQBRK.cjs');var _chunk7LZI6HLWcjs = require('./chunk-7LZI6HLW.cjs');var _jsxruntime = require('react/jsx-runtime');var s="DateInputSegment",N=_chunk7LZI6HLWcjs.b.call(void 0, s),S= exports.a =({className:d,label:u,placeholder:f,value:c,disabled:e,required:I,id:b,...g})=>{let{id:t,labelId:n}=_chunkITZEACMWcjs.a.call(void 0, {providedId:b,prefix:"date-input-segment"});return _jsxruntime.jsxs.call(void 0, _chunk3EK2M2AAcjs.a,{className:_chunkGVVJQBRKcjs.a.call(void 0, N,d),"data-disabled":e?"":void 0,children:[_jsxruntime.jsx.call(void 0, _chunkW53L4ME4cjs.a,{htmlFor:t,id:n,disableUserSelect:!0,children:u}),_jsxruntime.jsx.call(void 0, _chunkNFPIFSDDcjs.a,{type:"text",inputMode:"numeric",pattern:"[0-9]*",id:t,placeholder:e?void 0:f,value:c,disabled:e,required:I,"aria-labelledby":n,spellCheck:"false",...g})]})};S.displayName=s;exports.a = S;
2
- //# sourceMappingURL=chunk-ZXN6ZQX5.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/runner/work/hearth/hearth/packages/react/dist/chunk-ZXN6ZQX5.cjs","../src/components/DateInput/DateInputSegment.tsx"],"names":["COMPONENT_NAME","componentClassName","withGlobalPrefix","DateInputSegment","className","label","placeholder","value","disabled","required","providedId","props","id","labelId","useIds","jsxs","Flex","cn","jsx","Label","InputBase"],"mappings":"AAAA,iIAAwC,wDAAoC,wDAAyC,wDAAyC,wDAAyC,wDAAyC,+CC0B5O,IAhBEA,CAAAA,CAAiB,kBAAA,CACjBC,CAAAA,CAAqBC,iCAAAA,CAA+B,CAAA,CAE7CC,CAAAA,aAAmB,CAAC,CAC/B,SAAA,CAAAC,CAAAA,CACA,KAAA,CAAAC,CAAAA,CACA,WAAA,CAAAC,CAAAA,CACA,KAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,CAAAA,CACA,EAAA,CAAIC,CAAAA,CACJ,GAAGC,CACL,CAAA,CAAA,EAA6B,CAC3B,GAAM,CAAE,EAAA,CAAAC,CAAAA,CAAI,OAAA,CAAAC,CAAQ,CAAA,CAAIC,iCAAAA,CAAS,UAAA,CAAAJ,CAAAA,CAAY,MAAA,CAAQ,oBAAqB,CAAC,CAAA,CAE3E,OACEK,8BAAAA,mBAACC,CAAA,CAAK,SAAA,CAAWC,iCAAAA,CAAGhB,CAAoBG,CAAS,CAAA,CAAG,eAAA,CAAeI,CAAAA,CAAW,EAAA,CAAK,KAAA,CAAA,CACjF,QAAA,CAAA,CAAAU,6BAAAA,mBAACC,CAAA,CAAM,OAAA,CAASP,CAAAA,CAAI,EAAA,CAAIC,CAAAA,CAAS,iBAAA,CAAiB,CAAA,CAAA,CAC/C,QAAA,CAAAR,CAAAA,CACH,CAAA,CAEAa,6BAAAA,mBAACE,CAAA,CACC,IAAA,CAAK,MAAA,CACL,SAAA,CAAU,SAAA,CACV,OAAA,CAAQ,QAAA,CACR,EAAA,CAAIR,CAAAA,CACJ,WAAA,CAAcJ,CAAAA,CAAyB,KAAA,CAAA,CAAdF,CAAAA,CACzB,KAAA,CAAOC,CAAAA,CACP,QAAA,CAAUC,CAAAA,CACV,QAAA,CAAUC,CAAAA,CACV,iBAAA,CAAiBI,CAAAA,CACjB,UAAA,CAAW,OAAA,CACV,GAAGF,CAAAA,CACN,CAAA,CAAA,CACF,CAEJ,CAAA,CAEAR,CAAAA,CAAiB,WAAA,CAAcH,CAAAA,CAAAA,cAAAA","file":"/home/runner/work/hearth/hearth/packages/react/dist/chunk-ZXN6ZQX5.cjs","sourcesContent":[null,"'use client';\n\nimport { cn } from '../../helpers/cn';\nimport { withGlobalPrefix } from '../../helpers/with-global-prefix';\nimport { Flex } from '../Flex/Flex';\nimport { Label } from '../Label/Label';\nimport { useIds } from '../../hooks/use-ids';\nimport { InputBase } from '../InputBase/InputBase';\nimport type { DateInputSegmentProps } from './DateInputSegment.props';\n\nconst COMPONENT_NAME = 'DateInputSegment';\nconst componentClassName = withGlobalPrefix(COMPONENT_NAME);\n\nexport const DateInputSegment = ({\n className,\n label,\n placeholder,\n value,\n disabled,\n required,\n id: providedId,\n ...props\n}: DateInputSegmentProps) => {\n const { id, labelId } = useIds({ providedId, prefix: 'date-input-segment' });\n\n return (\n <Flex className={cn(componentClassName, className)} data-disabled={disabled ? '' : undefined}>\n <Label htmlFor={id} id={labelId} disableUserSelect>\n {label}\n </Label>\n\n <InputBase\n type=\"text\"\n inputMode=\"numeric\"\n pattern=\"[0-9]*\"\n id={id}\n placeholder={!disabled ? placeholder : undefined}\n value={value}\n disabled={disabled}\n required={required}\n aria-labelledby={labelId}\n spellCheck=\"false\"\n {...props}\n />\n </Flex>\n );\n};\n\nDateInputSegment.displayName = COMPONENT_NAME;\n"]}
@@ -1,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }var _chunk54YG4VNBcjs = require('./chunk-54YG4VNB.cjs');var _chunk5FIJOHVScjs = require('./chunk-5FIJOHVS.cjs');var _chunkRH3MHHIScjs = require('./chunk-RH3MHHIS.cjs');var _chunkGVVJQBRKcjs = require('./chunk-GVVJQBRK.cjs');var _chunk7LZI6HLWcjs = require('./chunk-7LZI6HLW.cjs');var _react = require('react'); var r = _interopRequireWildcard(_react);var _jsxruntime = require('react/jsx-runtime');var P="CurrencyInput",z=_chunk7LZI6HLWcjs.b.call(void 0, P),O= exports.a =({className:D,disabled:M,value:f,onChange:g,placeholder:N="0.00",disableGroupSeparators:d,ref:V,...b})=>{let[w,S]=r.useState(""),B=r.useRef(null),o=r.useRef(null),t=V||B,h=f!==void 0,C=h?String(_nullishCoalesce(f, () => (""))):w,i=e=>{if(!e)return"";let c=e.split("."),n=c[0]||"";d||(n=n.replace(/\B(?=(\d{3})+(?!\d))/g,","));let s=c[1];return s!==void 0?n+"."+s:n},H=e=>{let c=e.target.value,n=e.target.selectionStart||0,s=i(C),y=c.replace(/[^\d.]/g,""),u=y.split("."),I=u.length>2?u[0]+"."+u.slice(1).join(""):y,m=I.split("."),a=m[1]!==void 0?m[0]+"."+m[1].substring(0,2):I;if(d)o.current=null;else{let l=i(a),L=(s.slice(0,Math.min(n,s.length)).match(/,/g)||[]).length,j=(l.slice(0,Math.min(n,l.length)).match(/,/g)||[]).length-L;o.current=n+j}if(h||S(a),g&&t&&typeof t=="object"&&t.current){let l={...e,target:{...e.target,value:a},currentTarget:{...e.currentTarget,value:a}};g(l)}};return r.useEffect(()=>{t&&typeof t=="object"&&t.current&&o.current!==null&&(t.current.setSelectionRange(o.current,o.current),o.current=null)}),_jsxruntime.jsx.call(void 0, _chunk54YG4VNBcjs.a,{ref:t,className:_chunkGVVJQBRKcjs.a.call(void 0, z,D),type:"text",inputMode:"decimal",disabled:M,value:i(C),onChange:H,placeholder:N,...b,children:_jsxruntime.jsx.call(void 0, _chunkRH3MHHIScjs.a,{placement:"prefix",children:_jsxruntime.jsx.call(void 0, _chunk5FIJOHVScjs.a,{size:"3xl",children:"\xA3"})})})};O.displayName=P;exports.a = O;
2
- //# sourceMappingURL=chunk-ZZOECKRZ.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/runner/work/hearth/hearth/packages/react/dist/chunk-ZZOECKRZ.cjs","../src/components/CurrencyInput/CurrencyInput.tsx"],"names":["COMPONENT_NAME","componentClassName","withGlobalPrefix","CurrencyInput","className","disabled","controlledValue","onChange","placeholder","disableGroupSeparators","forwardedRef","props","internalValue","setInternalValue","localRef","cursorPositionRef","inputRef","isControlled","numericValue","formatValue","value","parts","integerPart","decimalPart","handleChange","input","cursorPosition","previousDisplayValue","cleaned","sanitized","finalParts","limitedValue","newDisplayValue","oldCommasBeforeCursor","commaDiff","syntheticEvent","jsx","TextInput","cn","InputSlot","DetailText"],"mappings":"AAAA,ufAAwC,wDAAyC,wDAAyC,wDAAyC,wDAAyC,uECErL,+CAmIf,IA1HFA,CAAAA,CAAiB,eAAA,CACjBC,CAAAA,CAAqBC,iCAAAA,CAA+B,CAAA,CAE7CC,CAAAA,aAAgB,CAAC,CAC5B,SAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,CAAAA,CACA,KAAA,CAAOC,CAAAA,CACP,QAAA,CAAAC,CAAAA,CACA,WAAA,CAAAC,CAAAA,CAAc,MAAA,CACd,sBAAA,CAAAC,CAAAA,CACA,GAAA,CAAKC,CAAAA,CACL,GAAGC,CACL,CAAA,CAAA,EAA0B,CAExB,GAAM,CAACC,CAAAA,CAAeC,CAAgB,CAAA,CAAU,CAAA,CAAA,QAAA,CAAiB,EAAE,CAAA,CAC7DC,CAAAA,CAAiB,CAAA,CAAA,MAAA,CAAyB,IAAI,CAAA,CAC9CC,CAAAA,CAA0B,CAAA,CAAA,MAAA,CAAsB,IAAI,CAAA,CAGpDC,CAAAA,CAAWN,CAAAA,EAAgBI,CAAAA,CAE3BG,CAAAA,CAAeX,CAAAA,GAAoB,KAAA,CAAA,CACnCY,CAAAA,CAAeD,CAAAA,CAAe,MAAA,kBAAOX,CAAAA,SAAmB,IAAE,CAAA,CAAIM,CAAAA,CAG9DO,CAAAA,CAAeC,CAAAA,EAA0B,CAC7C,EAAA,CAAI,CAACA,CAAAA,CAAO,MAAO,EAAA,CAEnB,IAAMC,CAAAA,CAAQD,CAAAA,CAAM,KAAA,CAAM,GAAG,CAAA,CACzBE,CAAAA,CAAcD,CAAAA,CAAM,CAAC,CAAA,EAAK,EAAA,CAEzBZ,CAAAA,EAAAA,CACHa,CAAAA,CAAcA,CAAAA,CAAY,OAAA,CAAQ,uBAAA,CAAyB,GAAG,CAAA,CAAA,CAGhE,IAAMC,CAAAA,CAAcF,CAAAA,CAAM,CAAC,CAAA,CAC3B,OAAOE,CAAAA,GAAgB,KAAA,CAAA,CAAYD,CAAAA,CAAc,GAAA,CAAMC,CAAAA,CAAcD,CACvE,CAAA,CAEME,CAAAA,CAAgB,CAAA,EAA2C,CAC/D,IAAMC,CAAAA,CAAQ,CAAA,CAAE,MAAA,CAAO,KAAA,CACjBC,CAAAA,CAAiB,CAAA,CAAE,MAAA,CAAO,cAAA,EAAkB,CAAA,CAC5CC,CAAAA,CAAuBR,CAAAA,CAAYD,CAAY,CAAA,CAG/CU,CAAAA,CAAUH,CAAAA,CAAM,OAAA,CAAQ,SAAA,CAAW,EAAE,CAAA,CAGrCJ,CAAAA,CAAQO,CAAAA,CAAQ,KAAA,CAAM,GAAG,CAAA,CACzBC,CAAAA,CAAYR,CAAAA,CAAM,MAAA,CAAS,CAAA,CAAIA,CAAAA,CAAM,CAAC,CAAA,CAAI,GAAA,CAAMA,CAAAA,CAAM,KAAA,CAAM,CAAC,CAAA,CAAE,IAAA,CAAK,EAAE,CAAA,CAAIO,CAAAA,CAG1EE,CAAAA,CAAaD,CAAAA,CAAU,KAAA,CAAM,GAAG,CAAA,CAChCE,CAAAA,CACJD,CAAAA,CAAW,CAAC,CAAA,GAAM,KAAA,CAAA,CACdA,CAAAA,CAAW,CAAC,CAAA,CAAI,GAAA,CAAMA,CAAAA,CAAW,CAAC,CAAA,CAAE,SAAA,CAAU,CAAA,CAAG,CAAW,CAAA,CAC5DD,CAAAA,CAGN,EAAA,CAAKpB,CAAAA,CAaHM,CAAAA,CAAkB,OAAA,CAAU,IAAA,CAAA,IAbD,CAC3B,IAAMiB,CAAAA,CAAkBb,CAAAA,CAAYY,CAAY,CAAA,CAC1CE,CAAAA,CAAAA,CACJN,CAAAA,CACG,KAAA,CAAM,CAAA,CAAG,IAAA,CAAK,GAAA,CAAID,CAAAA,CAAgBC,CAAAA,CAAqB,MAAM,CAAC,CAAA,CAC9D,KAAA,CAAM,IAAI,CAAA,EAAK,CAAC,CAAA,CAAA,CACnB,MAAA,CAIIO,CAAAA,CAAAA,CAFJF,CAAAA,CAAgB,KAAA,CAAM,CAAA,CAAG,IAAA,CAAK,GAAA,CAAIN,CAAAA,CAAgBM,CAAAA,CAAgB,MAAM,CAAC,CAAA,CAAE,KAAA,CAAM,IAAI,CAAA,EAAK,CAAC,CAAA,CAAA,CAC3F,MAAA,CACwCC,CAAAA,CAC1ClB,CAAAA,CAAkB,OAAA,CAAUW,CAAAA,CAAiBQ,CAC/C,CAQA,EAAA,CALKjB,CAAAA,EACHJ,CAAAA,CAAiBkB,CAAY,CAAA,CAI3BxB,CAAAA,EAAYS,CAAAA,EAAY,OAAOA,CAAAA,EAAa,QAAA,EAAYA,CAAAA,CAAS,OAAA,CAAS,CAC5E,IAAMmB,CAAAA,CAAiB,CACrB,GAAG,CAAA,CACH,MAAA,CAAQ,CACN,GAAG,CAAA,CAAE,MAAA,CACL,KAAA,CAAOJ,CACT,CAAA,CACA,aAAA,CAAe,CACb,GAAG,CAAA,CAAE,aAAA,CACL,KAAA,CAAOA,CACT,CACF,CAAA,CAEAxB,CAAAA,CAAS4B,CAAc,CACzB,CACF,CAAA,CAGA,OAAM,CAAA,CAAA,SAAA,CAAU,CAAA,CAAA,EAAM,CAElBnB,CAAAA,EACA,OAAOA,CAAAA,EAAa,QAAA,EACpBA,CAAAA,CAAS,OAAA,EACTD,CAAAA,CAAkB,OAAA,GAAY,IAAA,EAAA,CAE9BC,CAAAA,CAAS,OAAA,CAAQ,iBAAA,CAAkBD,CAAAA,CAAkB,OAAA,CAASA,CAAAA,CAAkB,OAAO,CAAA,CACvFA,CAAAA,CAAkB,OAAA,CAAU,IAAA,CAEhC,CAAC,CAAA,CAGCqB,6BAAAA,mBAACC,CAAA,CACC,GAAA,CAAKrB,CAAAA,CACL,SAAA,CAAWsB,iCAAAA,CAAGrC,CAAoBG,CAAS,CAAA,CAC3C,IAAA,CAAK,MAAA,CACL,SAAA,CAAU,SAAA,CACV,QAAA,CAAUC,CAAAA,CACV,KAAA,CAAOc,CAAAA,CAAYD,CAAY,CAAA,CAC/B,QAAA,CAAUM,CAAAA,CACV,WAAA,CAAahB,CAAAA,CACZ,GAAGG,CAAAA,CAEJ,QAAA,CAAAyB,6BAAAA,mBAACG,CAAA,CAAU,SAAA,CAAU,QAAA,CACnB,QAAA,CAAAH,6BAAAA,mBAACI,CAAA,CAAW,IAAA,CAAK,KAAA,CAAM,QAAA,CAAA,MAAA,CAAC,CAAA,CAC1B,CAAA,CACF,CAEJ,CAAA,CAEArC,CAAAA,CAAc,WAAA,CAAcH,CAAAA,CAAAA,cAAAA","file":"/home/runner/work/hearth/hearth/packages/react/dist/chunk-ZZOECKRZ.cjs","sourcesContent":[null,"'use client';\n\nimport * as React from 'react';\nimport { cn } from '../../helpers/cn';\nimport type { ChangeEvent } from 'react';\nimport { withGlobalPrefix } from '../../helpers/with-global-prefix';\nimport { TextInput } from '../TextInput/TextInput';\nimport { InputSlot } from '../InputSlot/InputSlot';\nimport type { CurrencyInputProps } from './CurrencyInput.props';\nimport { DetailText } from '../DetailText/DetailText';\n\nconst COMPONENT_NAME = 'CurrencyInput';\nconst componentClassName = withGlobalPrefix(COMPONENT_NAME);\n\nexport const CurrencyInput = ({\n className,\n disabled,\n value: controlledValue,\n onChange,\n placeholder = '0.00',\n disableGroupSeparators,\n ref: forwardedRef,\n ...props\n}: CurrencyInputProps) => {\n const maxDecimals = 2;\n const [internalValue, setInternalValue] = React.useState<string>('');\n const localRef = React.useRef<HTMLInputElement>(null);\n const cursorPositionRef = React.useRef<number | null>(null);\n\n // Use forwarded ref if provided, otherwise use internal ref\n const inputRef = forwardedRef || localRef;\n\n const isControlled = controlledValue !== undefined;\n const numericValue = isControlled ? String(controlledValue ?? '') : internalValue;\n\n // Format value for display\n const formatValue = (value: string): string => {\n if (!value) return '';\n\n const parts = value.split('.');\n let integerPart = parts[0] || '';\n\n if (!disableGroupSeparators) {\n integerPart = integerPart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n }\n\n const decimalPart = parts[1];\n return decimalPart !== undefined ? integerPart + '.' + decimalPart : integerPart;\n };\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>): void => {\n const input = e.target.value;\n const cursorPosition = e.target.selectionStart || 0;\n const previousDisplayValue = formatValue(numericValue);\n\n // Remove all non-digits except decimal\n const cleaned = input.replace(/[^\\d.]/g, '');\n\n // Ensure only one decimal point\n const parts = cleaned.split('.');\n const sanitized = parts.length > 2 ? parts[0] + '.' + parts.slice(1).join('') : cleaned;\n\n // Limit decimal places\n const finalParts = sanitized.split('.');\n const limitedValue =\n finalParts[1] !== undefined\n ? finalParts[0] + '.' + finalParts[1].substring(0, maxDecimals)\n : sanitized;\n\n // Calculate new cursor position\n if (!disableGroupSeparators) {\n const newDisplayValue = formatValue(limitedValue);\n const oldCommasBeforeCursor = (\n previousDisplayValue\n .slice(0, Math.min(cursorPosition, previousDisplayValue.length))\n .match(/,/g) || []\n ).length;\n const newCommasBeforeCursor = (\n newDisplayValue.slice(0, Math.min(cursorPosition, newDisplayValue.length)).match(/,/g) || []\n ).length;\n const commaDiff = newCommasBeforeCursor - oldCommasBeforeCursor;\n cursorPositionRef.current = cursorPosition + commaDiff;\n } else {\n cursorPositionRef.current = null;\n }\n if (!isControlled) {\n setInternalValue(limitedValue);\n }\n\n // Return numeric value WITHOUT commas\n if (onChange && inputRef && typeof inputRef === 'object' && inputRef.current) {\n const syntheticEvent = {\n ...e,\n target: {\n ...e.target,\n value: limitedValue, // Raw numeric value without commas\n },\n currentTarget: {\n ...e.currentTarget,\n value: limitedValue,\n },\n } as ChangeEvent<HTMLInputElement>;\n\n onChange(syntheticEvent);\n }\n };\n\n // Restore cursor position after render\n React.useEffect(() => {\n if (\n inputRef &&\n typeof inputRef === 'object' &&\n inputRef.current &&\n cursorPositionRef.current !== null\n ) {\n inputRef.current.setSelectionRange(cursorPositionRef.current, cursorPositionRef.current);\n cursorPositionRef.current = null;\n }\n });\n\n return (\n <TextInput\n ref={inputRef}\n className={cn(componentClassName, className)}\n type=\"text\"\n inputMode=\"decimal\"\n disabled={disabled}\n value={formatValue(numericValue)} // Display with commas\n onChange={handleChange}\n placeholder={placeholder}\n {...props}\n >\n <InputSlot placement=\"prefix\">\n <DetailText size=\"3xl\">£</DetailText>\n </InputSlot>\n </TextInput>\n );\n};\n\nCurrencyInput.displayName = COMPONENT_NAME;\n"]}