@postenbring/hedwig-react 2.2.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (170) hide show
  1. package/dist/accordion/accordion-content.d.ts.map +1 -1
  2. package/dist/accordion/accordion-content.js +22 -6
  3. package/dist/accordion/accordion-content.js.map +1 -1
  4. package/dist/accordion/accordion-content.mjs +4 -1
  5. package/dist/accordion/accordion.js +24 -6
  6. package/dist/accordion/accordion.js.map +1 -1
  7. package/dist/accordion/accordion.mjs +5 -2
  8. package/dist/accordion/index.js +24 -6
  9. package/dist/accordion/index.js.map +1 -1
  10. package/dist/accordion/index.mjs +5 -2
  11. package/dist/{chunk-ITLZQ47H.mjs → chunk-3VKESN3T.mjs} +4 -4
  12. package/dist/chunk-3VKESN3T.mjs.map +1 -0
  13. package/dist/{chunk-KNGG6M2I.mjs → chunk-5RXT5GLF.mjs} +2 -2
  14. package/dist/{chunk-XZ43OSZ5.mjs → chunk-6OJINZ37.mjs} +4 -4
  15. package/dist/chunk-6OJINZ37.mjs.map +1 -0
  16. package/dist/{chunk-ILFK3VKS.mjs → chunk-77M2ZTP7.mjs} +6 -3
  17. package/dist/chunk-77M2ZTP7.mjs.map +1 -0
  18. package/dist/{chunk-5FWY7FIX.mjs → chunk-AGIY7SFP.mjs} +5 -2
  19. package/dist/chunk-AGIY7SFP.mjs.map +1 -0
  20. package/dist/{chunk-WLESNP6Z.mjs → chunk-B6T36QDV.mjs} +5 -2
  21. package/dist/chunk-B6T36QDV.mjs.map +1 -0
  22. package/dist/{chunk-GXIKHXWC.mjs → chunk-EQFY63YP.mjs} +2 -2
  23. package/dist/{chunk-KCEWKQ4W.mjs → chunk-GYI4NCUY.mjs} +2 -2
  24. package/dist/{chunk-J5SCUELT.mjs → chunk-HBGFFKP3.mjs} +2 -2
  25. package/dist/{chunk-4C76JM3T.mjs → chunk-I4NL4ESV.mjs} +2 -2
  26. package/dist/{chunk-GVO57ZWU.mjs → chunk-J35DWEJX.mjs} +6 -6
  27. package/dist/chunk-J35DWEJX.mjs.map +1 -0
  28. package/dist/{chunk-JEAGKB4V.mjs → chunk-N4W3OMA2.mjs} +4 -4
  29. package/dist/chunk-N4W3OMA2.mjs.map +1 -0
  30. package/dist/{chunk-AXEAIXG7.mjs → chunk-NBEGX26X.mjs} +4 -4
  31. package/dist/chunk-NBEGX26X.mjs.map +1 -0
  32. package/dist/{chunk-DTU7AXY3.mjs → chunk-NUP7ZBVE.mjs} +2 -2
  33. package/dist/{chunk-CKG2XRMX.mjs → chunk-R6MQFVHE.mjs} +2 -2
  34. package/dist/{chunk-DRSAVDIE.mjs → chunk-W6CFPK2C.mjs} +5 -4
  35. package/dist/chunk-W6CFPK2C.mjs.map +1 -0
  36. package/dist/{chunk-ZSYBCM2L.mjs → chunk-W7CPW23K.mjs} +27 -18
  37. package/dist/chunk-W7CPW23K.mjs.map +1 -0
  38. package/dist/footer/footer.js +37 -19
  39. package/dist/footer/footer.js.map +1 -1
  40. package/dist/footer/footer.mjs +6 -3
  41. package/dist/footer/index.js +37 -19
  42. package/dist/footer/index.js.map +1 -1
  43. package/dist/footer/index.mjs +6 -3
  44. package/dist/form/date-picker/date-picker.d.ts +2 -2
  45. package/dist/form/date-picker/date-picker.d.ts.map +1 -1
  46. package/dist/form/date-picker/date-picker.js +7 -6
  47. package/dist/form/date-picker/date-picker.js.map +1 -1
  48. package/dist/form/date-picker/date-picker.mjs +3 -3
  49. package/dist/form/date-picker/index.js +7 -6
  50. package/dist/form/date-picker/index.js.map +1 -1
  51. package/dist/form/date-picker/index.mjs +3 -3
  52. package/dist/form/error-summary/error-summary.d.ts +5 -5
  53. package/dist/form/error-summary/error-summary.d.ts.map +1 -1
  54. package/dist/form/error-summary/error-summary.js +47 -93
  55. package/dist/form/error-summary/error-summary.js.map +1 -1
  56. package/dist/form/error-summary/error-summary.mjs +5 -6
  57. package/dist/form/error-summary/index.js +47 -93
  58. package/dist/form/error-summary/index.js.map +1 -1
  59. package/dist/form/error-summary/index.mjs +5 -6
  60. package/dist/form/index.js +87 -133
  61. package/dist/form/index.js.map +1 -1
  62. package/dist/form/index.mjs +10 -11
  63. package/dist/form/input/index.js +5 -5
  64. package/dist/form/input/index.js.map +1 -1
  65. package/dist/form/input/index.mjs +2 -2
  66. package/dist/form/input/input.d.ts +8 -1
  67. package/dist/form/input/input.d.ts.map +1 -1
  68. package/dist/form/input/input.js +5 -5
  69. package/dist/form/input/input.js.map +1 -1
  70. package/dist/form/input/input.mjs +2 -2
  71. package/dist/form/input-group/index.js +3 -3
  72. package/dist/form/input-group/index.js.map +1 -1
  73. package/dist/form/input-group/index.mjs +1 -1
  74. package/dist/form/input-group/input-group.d.ts +1 -1
  75. package/dist/form/input-group/input-group.d.ts.map +1 -1
  76. package/dist/form/input-group/input-group.js +3 -3
  77. package/dist/form/input-group/input-group.js.map +1 -1
  78. package/dist/form/input-group/input-group.mjs +1 -1
  79. package/dist/form/select/index.js +5 -5
  80. package/dist/form/select/index.js.map +1 -1
  81. package/dist/form/select/index.mjs +2 -2
  82. package/dist/form/select/select.d.ts +2 -2
  83. package/dist/form/select/select.d.ts.map +1 -1
  84. package/dist/form/select/select.js +5 -5
  85. package/dist/form/select/select.js.map +1 -1
  86. package/dist/form/select/select.mjs +2 -2
  87. package/dist/form/textarea/index.js +5 -5
  88. package/dist/form/textarea/index.js.map +1 -1
  89. package/dist/form/textarea/index.mjs +2 -2
  90. package/dist/form/textarea/textarea.js +5 -5
  91. package/dist/form/textarea/textarea.js.map +1 -1
  92. package/dist/form/textarea/textarea.mjs +2 -2
  93. package/dist/index.js +567 -552
  94. package/dist/index.js.map +1 -1
  95. package/dist/index.mjs +38 -36
  96. package/dist/modal/index.js +1 -0
  97. package/dist/modal/index.js.map +1 -1
  98. package/dist/modal/index.mjs +2 -2
  99. package/dist/modal/modal.js +1 -0
  100. package/dist/modal/modal.js.map +1 -1
  101. package/dist/modal/modal.mjs +2 -2
  102. package/dist/navbar/index.js +3 -1
  103. package/dist/navbar/index.js.map +1 -1
  104. package/dist/navbar/index.mjs +3 -3
  105. package/dist/navbar/navbar-expandable-menu.d.ts.map +1 -1
  106. package/dist/navbar/navbar-expandable-menu.js +3 -1
  107. package/dist/navbar/navbar-expandable-menu.js.map +1 -1
  108. package/dist/navbar/navbar-expandable-menu.mjs +2 -2
  109. package/dist/navbar/navbar.js +3 -1
  110. package/dist/navbar/navbar.js.map +1 -1
  111. package/dist/navbar/navbar.mjs +3 -3
  112. package/dist/skeleton/index.js +20 -2
  113. package/dist/skeleton/index.js.map +1 -1
  114. package/dist/skeleton/index.mjs +4 -1
  115. package/dist/skeleton/skeleton.d.ts.map +1 -1
  116. package/dist/skeleton/skeleton.js +20 -2
  117. package/dist/skeleton/skeleton.js.map +1 -1
  118. package/dist/skeleton/skeleton.mjs +4 -1
  119. package/dist/tabs/index.js +1 -0
  120. package/dist/tabs/index.js.map +1 -1
  121. package/dist/tabs/index.mjs +3 -3
  122. package/dist/tabs/tabs-list.js +1 -0
  123. package/dist/tabs/tabs-list.js.map +1 -1
  124. package/dist/tabs/tabs-list.mjs +2 -2
  125. package/dist/tabs/tabs.js +1 -0
  126. package/dist/tabs/tabs.js.map +1 -1
  127. package/dist/tabs/tabs.mjs +3 -3
  128. package/dist/utils/auto-animate-height.js +1 -0
  129. package/dist/utils/auto-animate-height.js.map +1 -1
  130. package/dist/utils/auto-animate-height.mjs +2 -2
  131. package/dist/utils/index.js +4 -0
  132. package/dist/utils/index.js.map +1 -1
  133. package/dist/utils/index.mjs +4 -2
  134. package/dist/utils/utils.d.ts +4 -0
  135. package/dist/utils/utils.d.ts.map +1 -1
  136. package/dist/utils/utils.js +4 -0
  137. package/dist/utils/utils.js.map +1 -1
  138. package/dist/utils/utils.mjs +3 -1
  139. package/package.json +2 -2
  140. package/src/accordion/accordion-content.tsx +2 -1
  141. package/src/form/date-picker/date-picker.stories.tsx +2 -2
  142. package/src/form/date-picker/date-picker.tsx +3 -3
  143. package/src/form/error-summary/error-summary.tsx +32 -31
  144. package/src/form/input/input.stories.tsx +2 -2
  145. package/src/form/input/input.tsx +13 -3
  146. package/src/form/input-group/input-group.tsx +3 -3
  147. package/src/form/select/select.stories.tsx +2 -2
  148. package/src/form/select/select.tsx +4 -4
  149. package/src/form/textarea/textarea.stories.tsx +2 -2
  150. package/src/form/textarea/textarea.tsx +2 -2
  151. package/src/navbar/navbar-expandable-menu.tsx +3 -2
  152. package/src/skeleton/skeleton.tsx +2 -1
  153. package/src/utils/utils.ts +14 -1
  154. package/dist/chunk-5FWY7FIX.mjs.map +0 -1
  155. package/dist/chunk-AXEAIXG7.mjs.map +0 -1
  156. package/dist/chunk-DRSAVDIE.mjs.map +0 -1
  157. package/dist/chunk-GVO57ZWU.mjs.map +0 -1
  158. package/dist/chunk-ILFK3VKS.mjs.map +0 -1
  159. package/dist/chunk-ITLZQ47H.mjs.map +0 -1
  160. package/dist/chunk-JEAGKB4V.mjs.map +0 -1
  161. package/dist/chunk-WLESNP6Z.mjs.map +0 -1
  162. package/dist/chunk-XZ43OSZ5.mjs.map +0 -1
  163. package/dist/chunk-ZSYBCM2L.mjs.map +0 -1
  164. /package/dist/{chunk-KNGG6M2I.mjs.map → chunk-5RXT5GLF.mjs.map} +0 -0
  165. /package/dist/{chunk-GXIKHXWC.mjs.map → chunk-EQFY63YP.mjs.map} +0 -0
  166. /package/dist/{chunk-KCEWKQ4W.mjs.map → chunk-GYI4NCUY.mjs.map} +0 -0
  167. /package/dist/{chunk-J5SCUELT.mjs.map → chunk-HBGFFKP3.mjs.map} +0 -0
  168. /package/dist/{chunk-4C76JM3T.mjs.map → chunk-I4NL4ESV.mjs.map} +0 -0
  169. /package/dist/{chunk-DTU7AXY3.mjs.map → chunk-NUP7ZBVE.mjs.map} +0 -0
  170. /package/dist/{chunk-CKG2XRMX.mjs.map → chunk-R6MQFVHE.mjs.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/form/date-picker/date-picker.tsx","../../../src/form/input-group/input-group.tsx","../../../src/form/error-message/error-message.tsx","../../../src/utils/utils.ts"],"sourcesContent":["import { forwardRef, useRef, type InputHTMLAttributes } from \"react\";\nimport { clsx } from \"@postenbring/hedwig-css/typed-classname\";\nimport { InputGroup, type InputGroupProps } from \"../input-group\";\nimport { useMergeRefs } from \"../../utils/utils\";\n\nexport type DatePickerProps = Omit<\n InputGroupProps & InputHTMLAttributes<HTMLInputElement>,\n \"children\" | \"type\"\n> & {\n /**\n * Accessible title for the calendar button\n *\n * This button currently only shows in Chrome.\n *\n * @defaultValue \"Åpne kalender\"\n */\n calendarButtonTitle?: string;\n};\n\n/**\n * A basic implementation of a date picker\n *\n * This date picker is an implementation of native date picker, as you get\n * with `<input type=\"date\" />`, where the input field is dressed in Hedwig styling.\n *\n * Due to accessibility concerns you will only see the appropriate Hedwig calendar\n * icon in Chrome. Firefox will show built in icon and Safari will show no icon.\n * Not tested in Edge.\n */\nexport const DatePicker = forwardRef<HTMLInputElement, DatePickerProps>(function DatePicker(\n {\n className,\n variant,\n errorMessage,\n labelProps,\n label,\n id,\n style,\n disabled,\n readOnly,\n calendarButtonTitle = \"Åpne kalender\",\n ...rest\n },\n ref,\n) {\n const inputRef = useRef<HTMLInputElement>(null);\n const mergedRef = useMergeRefs([inputRef, ref]);\n\n return (\n <InputGroup\n className={clsx(\"hds-date-picker\", className as undefined)}\n disabled={disabled}\n errorMessage={errorMessage}\n id={id}\n label={label}\n labelProps={labelProps}\n readOnly={readOnly}\n style={style}\n variant={variant}\n >\n {(inputProps) => (\n <>\n <input\n {...rest}\n {...inputProps}\n disabled={disabled}\n readOnly={readOnly}\n ref={mergedRef}\n type=\"date\"\n />\n <button\n className={clsx(\"hds-date-picker__calendar-button\")}\n type=\"button\"\n title={calendarButtonTitle}\n onClick={() => {\n inputRef.current?.showPicker();\n }}\n />\n </>\n )}\n </InputGroup>\n );\n});\n\nDatePicker.displayName = \"DatePicker\";\n","import { useId, forwardRef, Children, isValidElement, cloneElement } from \"react\";\nimport type { LabelHTMLAttributes, ReactNode, CSSProperties } from \"react\";\nimport { clsx } from \"@postenbring/hedwig-css/typed-classname\";\nimport { ErrorMessage, type ErrorMessageProps } from \"../error-message\";\n\ninterface InputProps {\n \"aria-describedby\"?: string;\n \"aria-invalid\"?: boolean;\n id?: string;\n className?: string;\n}\n\nexport interface InputGroupProps {\n id?: string;\n className?: string;\n style?: CSSProperties;\n variant?: \"default\" | \"white\";\n errorMessage?: ReactNode;\n errorMessageProps?: Partial<ErrorMessageProps>;\n labelProps?: LabelHTMLAttributes<HTMLLabelElement>;\n label: ReactNode;\n disabled?: boolean;\n readOnly?: boolean;\n /**\n * `children` must be either a single input element or a render function.\n *\n * If you use a render function, make sure you spread the input props to the appropriate element.\n */\n children: Exclude<ReactNode, Iterable<ReactNode>> | ((inputProps: InputProps) => ReactNode);\n}\n\nexport const InputGroup = forwardRef<HTMLDivElement, InputGroupProps>(function InputGroup(\n {\n id,\n className,\n style,\n variant = \"default\",\n errorMessage,\n errorMessageProps,\n labelProps: { className: labelClassName, ...labelProps } = {},\n label,\n disabled,\n readOnly,\n children,\n ...rest\n },\n ref,\n) {\n const errorMessageId = useId();\n const inputId = useId();\n\n const renderInput = () => {\n const inputProps: InputProps = {\n \"aria-describedby\": errorMessage ? errorMessageId : undefined,\n \"aria-invalid\": errorMessage ? true : undefined,\n id: id ?? inputId,\n className: clsx(\"hds-input-group__input\"),\n };\n\n if (typeof children === \"function\") {\n return children(inputProps);\n }\n\n const input: ReactNode = Children.toArray(children)[0];\n\n if (!isValidElement<InputProps>(input)) {\n return;\n }\n\n return cloneElement<InputProps>(input, {\n ...inputProps,\n ...input.props,\n className: `${inputProps.className} ${input.props.className ?? \"\"}`,\n });\n };\n\n return (\n <div\n className={clsx(\n \"hds-input-group\",\n {\n [`hds-input-group--${variant}`]: variant,\n \"hds-input-group--error\": errorMessage,\n },\n className as undefined,\n )}\n ref={ref}\n style={style}\n {...rest}\n >\n <label\n className={clsx(\"hds-input-group__label\", labelClassName as undefined)}\n {...labelProps}\n htmlFor={id ?? inputId}\n >\n {label}\n </label>\n <div\n className={clsx(\"hds-input-group__input-wrapper\")}\n data-disabled={disabled}\n data-readonly={readOnly}\n >\n {renderInput()}\n </div>\n <ErrorMessage id={errorMessageId} {...errorMessageProps}>\n {errorMessage}\n </ErrorMessage>\n </div>\n );\n});\n","import { clsx } from \"@postenbring/hedwig-css/typed-classname\";\nimport { forwardRef, type ReactNode } from \"react\";\n\nexport interface ErrorMessageProps extends React.HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n id: string;\n className?: string;\n}\n\nexport const ErrorMessage = forwardRef<HTMLDivElement, ErrorMessageProps>(\n ({ children, id, className, ...rest }, ref) => {\n return (\n <div\n aria-live=\"polite\"\n className={clsx(\"hds-error-message\", className as undefined)}\n id={id}\n ref={ref}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\nErrorMessage.displayName = \"ErrorMessage\";\n","import * as React from \"react\";\nimport { useCallback, useEffect, useState } from \"react\";\n\n/**\n * Merges an array of refs into a single memoized callback ref or `null`.\n * @see https://floating-ui.com/docs/useMergeRefs\n */\nexport function useMergeRefs<Instance>(\n refs: (React.Ref<Instance> | undefined)[],\n): React.RefCallback<Instance> | null {\n return React.useMemo(() => {\n if (refs.every((ref) => ref === null)) {\n return null;\n }\n\n return (value) => {\n refs.forEach((ref) => {\n if (typeof ref === \"function\") {\n ref(value);\n } else if (ref !== null) {\n (ref as React.MutableRefObject<Instance | null>).current = value;\n }\n });\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps -- It's ok\n }, refs);\n}\n\nexport function useResize<Instance extends HTMLElement>(\n ref: React.RefObject<Instance> | undefined | null,\n): { width: number; height: number } {\n const [width, setWidth] = useState<number>(0);\n const [height, setHeight] = useState<number>(0);\n const handleResize = useCallback(() => {\n if (ref?.current !== null) {\n setWidth(ref?.current?.offsetWidth ?? 0);\n setHeight(ref?.current?.offsetHeight ?? 0);\n }\n }, [ref]);\n useEffect(() => {\n window.addEventListener(\"load\", handleResize);\n window.addEventListener(\"resize\", handleResize);\n return () => {\n window.removeEventListener(\"load\", handleResize);\n window.removeEventListener(\"resize\", handleResize);\n };\n }, [ref, handleResize]);\n useEffect(() => {\n handleResize();\n // eslint-disable-next-line react-hooks/exhaustive-deps -- It's ok\n }, []);\n return { width, height };\n}\n\nfunction subscribe() {\n // eslint-disable-next-line @typescript-eslint/no-empty-function -- It's ok\n return () => {};\n}\n\nexport function useHydrated() {\n return React.useSyncExternalStore(\n subscribe,\n () => true,\n () => false,\n );\n}\n\n/**\n * Trap focus inside an element using the `inert` attribute.\n *\n * Adds `inert` to all siblings of the given element, and all their ancestors up to the body.\n * Returns a cleanup function which removes the `inert` property from the elements, effectively giving focus back to rest of the document.\n *\n * NOTE: Does not support portals, i.e. elements outside the DOM hierarchy of the given element.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/inert\n * @see https://web.dev/articles/inert\n */\nexport function focusTrap(element: HTMLElement) {\n // eslint-disable-next-line @typescript-eslint/no-empty-function -- NOP on focus trapping the body element\n if (element === document.body) return () => {};\n\n let inertElements: HTMLElement[] = [];\n for (let el: HTMLElement | null = element; el; el = el.parentElement) {\n if (el === document.body) break;\n\n for (const sibling of el.parentElement?.children ?? []) {\n if (sibling === el) continue;\n if (!(sibling instanceof HTMLElement)) continue;\n if (sibling.hasAttribute(\"inert\")) continue;\n\n sibling.setAttribute(\"inert\", \"true\");\n inertElements.push(sibling);\n }\n }\n\n return () => {\n releaseFocusTrap(inertElements);\n inertElements = [];\n };\n}\n\n/**\n * Unset the `inert` attribute on all elements given\n */\nfunction releaseFocusTrap(inertElements: Iterable<HTMLElement>) {\n for (const el of inertElements) {\n el.removeAttribute(\"inert\");\n }\n}\n"],"mappings":"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","names":["import_react","import_typed_classname","import_react","import_typed_classname","import_jsx_runtime","InputGroup","_a","import_react","import_jsx_runtime","DatePicker","_a"]}
1
+ {"version":3,"sources":["../../../src/form/date-picker/date-picker.tsx","../../../src/form/input-group/input-group.tsx","../../../src/form/error-message/error-message.tsx","../../../src/utils/utils.ts"],"sourcesContent":["import { forwardRef, useRef, type InputHTMLAttributes } from \"react\";\nimport { clsx } from \"@postenbring/hedwig-css/typed-classname\";\nimport { InputGroup, type InputGroupProps } from \"../input-group\";\nimport { useMergeRefs } from \"../../utils/utils\";\n\nexport type DatePickerProps = Omit<\n InputGroupProps & Omit<InputHTMLAttributes<HTMLInputElement>, \"size\">,\n \"children\" | \"type\"\n> & {\n /**\n * Accessible title for the calendar button\n *\n * This button currently only shows in Chrome.\n *\n * @defaultValue \"Åpne kalender\"\n */\n calendarButtonTitle?: string;\n};\n\n/**\n * A basic implementation of a date picker\n *\n * This date picker is an implementation of native date picker, as you get\n * with `<input type=\"date\" />`, where the input field is dressed in Hedwig styling.\n *\n * Due to accessibility concerns you will only see the appropriate Hedwig calendar\n * icon in Chrome. Firefox will show built in icon and Safari will show no icon.\n * Not tested in Edge.\n */\nexport const DatePicker = forwardRef<HTMLInputElement, DatePickerProps>(function DatePicker(\n {\n className,\n size,\n errorMessage,\n labelProps,\n label,\n id,\n style,\n disabled,\n readOnly,\n calendarButtonTitle = \"Åpne kalender\",\n ...rest\n },\n ref,\n) {\n const inputRef = useRef<HTMLInputElement>(null);\n const mergedRef = useMergeRefs([inputRef, ref]);\n\n return (\n <InputGroup\n className={clsx(\"hds-date-picker\", className as undefined)}\n disabled={disabled}\n errorMessage={errorMessage}\n id={id}\n label={label}\n labelProps={labelProps}\n readOnly={readOnly}\n style={style}\n size={size}\n >\n {(inputProps) => (\n <>\n <input\n {...rest}\n {...inputProps}\n disabled={disabled}\n readOnly={readOnly}\n ref={mergedRef}\n type=\"date\"\n />\n <button\n className={clsx(\"hds-date-picker__calendar-button\")}\n type=\"button\"\n title={calendarButtonTitle}\n onClick={() => {\n inputRef.current?.showPicker();\n }}\n />\n </>\n )}\n </InputGroup>\n );\n});\n\nDatePicker.displayName = \"DatePicker\";\n","import { useId, forwardRef, Children, isValidElement, cloneElement } from \"react\";\nimport type { LabelHTMLAttributes, ReactNode, CSSProperties } from \"react\";\nimport { clsx } from \"@postenbring/hedwig-css/typed-classname\";\nimport { ErrorMessage, type ErrorMessageProps } from \"../error-message\";\n\ninterface InputProps {\n \"aria-describedby\"?: string;\n \"aria-invalid\"?: boolean;\n id?: string;\n className?: string;\n}\n\nexport interface InputGroupProps {\n id?: string;\n className?: string;\n style?: CSSProperties;\n size?: \"large\" | \"small\";\n errorMessage?: ReactNode;\n errorMessageProps?: Partial<ErrorMessageProps>;\n labelProps?: LabelHTMLAttributes<HTMLLabelElement>;\n label: ReactNode;\n disabled?: boolean;\n readOnly?: boolean;\n /**\n * `children` must be either a single input element or a render function.\n *\n * If you use a render function, make sure you spread the input props to the appropriate element.\n */\n children: Exclude<ReactNode, Iterable<ReactNode>> | ((inputProps: InputProps) => ReactNode);\n}\n\nexport const InputGroup = forwardRef<HTMLDivElement, InputGroupProps>(function InputGroup(\n {\n id,\n className,\n style,\n size = \"large\",\n errorMessage,\n errorMessageProps,\n labelProps: { className: labelClassName, ...labelProps } = {},\n label,\n disabled,\n readOnly,\n children,\n ...rest\n },\n ref,\n) {\n const errorMessageId = useId();\n const inputId = useId();\n\n const renderInput = () => {\n const inputProps: InputProps = {\n \"aria-describedby\": errorMessage ? errorMessageId : undefined,\n \"aria-invalid\": errorMessage ? true : undefined,\n id: id ?? inputId,\n className: clsx(\"hds-input-group__input\"),\n };\n\n if (typeof children === \"function\") {\n return children(inputProps);\n }\n\n const input: ReactNode = Children.toArray(children)[0];\n\n if (!isValidElement<InputProps>(input)) {\n return;\n }\n\n return cloneElement<InputProps>(input, {\n ...inputProps,\n ...input.props,\n className: `${inputProps.className} ${input.props.className ?? \"\"}`,\n });\n };\n\n return (\n <div\n className={clsx(\n \"hds-input-group\",\n {\n [`hds-input-group--${size}`]: size,\n \"hds-input-group--error\": errorMessage,\n },\n className as undefined,\n )}\n ref={ref}\n style={style}\n {...rest}\n >\n <label\n className={clsx(\"hds-input-group__label\", labelClassName as undefined)}\n {...labelProps}\n htmlFor={id ?? inputId}\n >\n {label}\n </label>\n <div\n className={clsx(\"hds-input-group__input-wrapper\")}\n data-disabled={disabled}\n data-readonly={readOnly}\n >\n {renderInput()}\n </div>\n <ErrorMessage id={errorMessageId} {...errorMessageProps}>\n {errorMessage}\n </ErrorMessage>\n </div>\n );\n});\n","import { clsx } from \"@postenbring/hedwig-css/typed-classname\";\nimport { forwardRef, type ReactNode } from \"react\";\n\nexport interface ErrorMessageProps extends React.HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n id: string;\n className?: string;\n}\n\nexport const ErrorMessage = forwardRef<HTMLDivElement, ErrorMessageProps>(\n ({ children, id, className, ...rest }, ref) => {\n return (\n <div\n aria-live=\"polite\"\n className={clsx(\"hds-error-message\", className as undefined)}\n id={id}\n ref={ref}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\nErrorMessage.displayName = \"ErrorMessage\";\n","import * as React from \"react\";\nimport { useCallback, useEffect, useState, version } from \"react\";\n\n/**\n * Merges an array of refs into a single memoized callback ref or `null`.\n * @see https://floating-ui.com/docs/useMergeRefs\n */\nexport function useMergeRefs<Instance>(\n refs: (React.Ref<Instance> | undefined)[],\n): React.RefCallback<Instance> | null {\n return React.useMemo(() => {\n if (refs.every((ref) => ref === null)) {\n return null;\n }\n\n return (value) => {\n refs.forEach((ref) => {\n if (typeof ref === \"function\") {\n ref(value);\n } else if (ref !== null) {\n (ref as React.MutableRefObject<Instance | null>).current = value;\n }\n });\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps -- It's ok\n }, refs);\n}\n\nexport function useResize<Instance extends HTMLElement>(\n ref: React.RefObject<Instance> | undefined | null,\n): { width: number; height: number } {\n const [width, setWidth] = useState<number>(0);\n const [height, setHeight] = useState<number>(0);\n const handleResize = useCallback(() => {\n if (ref?.current !== null) {\n setWidth(ref?.current?.offsetWidth ?? 0);\n setHeight(ref?.current?.offsetHeight ?? 0);\n }\n }, [ref]);\n useEffect(() => {\n window.addEventListener(\"load\", handleResize);\n window.addEventListener(\"resize\", handleResize);\n return () => {\n window.removeEventListener(\"load\", handleResize);\n window.removeEventListener(\"resize\", handleResize);\n };\n }, [ref, handleResize]);\n useEffect(() => {\n handleResize();\n // eslint-disable-next-line react-hooks/exhaustive-deps -- It's ok\n }, []);\n return { width, height };\n}\n\nfunction subscribe() {\n // eslint-disable-next-line @typescript-eslint/no-empty-function -- It's ok\n return () => {};\n}\n\nexport function useHydrated() {\n return React.useSyncExternalStore(\n subscribe,\n () => true,\n () => false,\n );\n}\n\n/**\n * Trap focus inside an element using the `inert` attribute.\n *\n * Adds `inert` to all siblings of the given element, and all their ancestors up to the body.\n * Returns a cleanup function which removes the `inert` property from the elements, effectively giving focus back to rest of the document.\n *\n * NOTE: Does not support portals, i.e. elements outside the DOM hierarchy of the given element.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/inert\n * @see https://web.dev/articles/inert\n */\nexport function focusTrap(element: HTMLElement) {\n // eslint-disable-next-line @typescript-eslint/no-empty-function -- NOP on focus trapping the body element\n if (element === document.body) return () => {};\n\n let inertElements: HTMLElement[] = [];\n for (let el: HTMLElement | null = element; el; el = el.parentElement) {\n if (el === document.body) break;\n\n for (const sibling of el.parentElement?.children ?? []) {\n if (sibling === el) continue;\n if (!(sibling instanceof HTMLElement)) continue;\n if (sibling.hasAttribute(\"inert\")) continue;\n\n sibling.setAttribute(\"inert\", \"true\");\n inertElements.push(sibling);\n }\n }\n\n return () => {\n releaseFocusTrap(inertElements);\n inertElements = [];\n };\n}\n\n/**\n * Unset the `inert` attribute on all elements given\n */\nfunction releaseFocusTrap(inertElements: Iterable<HTMLElement>) {\n for (const el of inertElements) {\n el.removeAttribute(\"inert\");\n }\n}\n\n/**\n * React 19 supports inert prop\n * React 18 needs inert to be a string\n */\nconst inertBooleanSupported: boolean = Number(version.split(\".\")[0]) >= 19;\n\n/**\n * Returns the inert prop value based on the React version.\n */\nexport const inertPropValue: (x: boolean) => boolean | \"\" | undefined = inertBooleanSupported\n ? (x: boolean): boolean => x\n : (x: boolean): \"\" | undefined => (x ? \"\" : undefined);\n"],"mappings":"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","names":["import_react","import_typed_classname","import_react","import_typed_classname","import_jsx_runtime","InputGroup","_a","import_react","import_jsx_runtime","DatePicker","_a"]}
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  DatePicker
3
- } from "../../chunk-GVO57ZWU.mjs";
3
+ } from "../../chunk-J35DWEJX.mjs";
4
4
  import "../../chunk-Y5SUMFYJ.mjs";
5
- import "../../chunk-XZ43OSZ5.mjs";
5
+ import "../../chunk-6OJINZ37.mjs";
6
6
  import "../../chunk-NSLSA7F7.mjs";
7
7
  import "../../chunk-LHIG6RW7.mjs";
8
- import "../../chunk-ILFK3VKS.mjs";
8
+ import "../../chunk-77M2ZTP7.mjs";
9
9
  import "../../chunk-YOSPWY5K.mjs";
10
10
  export {
11
11
  DatePicker
@@ -100,7 +100,7 @@ var InputGroup = (0, import_react2.forwardRef)(function InputGroup2(_a, ref) {
100
100
  id,
101
101
  className,
102
102
  style,
103
- variant = "default",
103
+ size = "large",
104
104
  errorMessage,
105
105
  errorMessageProps,
106
106
  labelProps: _c = {}
@@ -113,7 +113,7 @@ var InputGroup = (0, import_react2.forwardRef)(function InputGroup2(_a, ref) {
113
113
  "id",
114
114
  "className",
115
115
  "style",
116
- "variant",
116
+ "size",
117
117
  "errorMessage",
118
118
  "errorMessageProps",
119
119
  "labelProps",
@@ -149,7 +149,7 @@ var InputGroup = (0, import_react2.forwardRef)(function InputGroup2(_a, ref) {
149
149
  className: (0, import_typed_classname2.clsx)(
150
150
  "hds-input-group",
151
151
  {
152
- [`hds-input-group--${variant}`]: variant,
152
+ [`hds-input-group--${size}`]: size,
153
153
  "hds-input-group--error": errorMessage
154
154
  },
155
155
  className
@@ -201,13 +201,14 @@ function useMergeRefs(refs) {
201
201
  };
202
202
  }, refs);
203
203
  }
204
+ var inertBooleanSupported = Number(import_react3.version.split(".")[0]) >= 19;
204
205
 
205
206
  // src/form/date-picker/date-picker.tsx
206
207
  var import_jsx_runtime3 = require("react/jsx-runtime");
207
208
  var DatePicker = (0, import_react4.forwardRef)(function DatePicker2(_a, ref) {
208
209
  var _b = _a, {
209
210
  className,
210
- variant,
211
+ size,
211
212
  errorMessage,
212
213
  labelProps,
213
214
  label,
@@ -218,7 +219,7 @@ var DatePicker = (0, import_react4.forwardRef)(function DatePicker2(_a, ref) {
218
219
  calendarButtonTitle = "\xC5pne kalender"
219
220
  } = _b, rest = __objRest(_b, [
220
221
  "className",
221
- "variant",
222
+ "size",
222
223
  "errorMessage",
223
224
  "labelProps",
224
225
  "label",
@@ -241,7 +242,7 @@ var DatePicker = (0, import_react4.forwardRef)(function DatePicker2(_a, ref) {
241
242
  labelProps,
242
243
  readOnly,
243
244
  style,
244
- variant,
245
+ size,
245
246
  children: (inputProps) => /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
246
247
  /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
247
248
  "input",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/form/date-picker/index.tsx","../../../src/form/date-picker/date-picker.tsx","../../../src/form/input-group/input-group.tsx","../../../src/form/error-message/error-message.tsx","../../../src/utils/utils.ts"],"sourcesContent":["export { DatePicker } from \"./date-picker\";\nexport type * from \"./date-picker\";\n","import { forwardRef, useRef, type InputHTMLAttributes } from \"react\";\nimport { clsx } from \"@postenbring/hedwig-css/typed-classname\";\nimport { InputGroup, type InputGroupProps } from \"../input-group\";\nimport { useMergeRefs } from \"../../utils/utils\";\n\nexport type DatePickerProps = Omit<\n InputGroupProps & InputHTMLAttributes<HTMLInputElement>,\n \"children\" | \"type\"\n> & {\n /**\n * Accessible title for the calendar button\n *\n * This button currently only shows in Chrome.\n *\n * @defaultValue \"Åpne kalender\"\n */\n calendarButtonTitle?: string;\n};\n\n/**\n * A basic implementation of a date picker\n *\n * This date picker is an implementation of native date picker, as you get\n * with `<input type=\"date\" />`, where the input field is dressed in Hedwig styling.\n *\n * Due to accessibility concerns you will only see the appropriate Hedwig calendar\n * icon in Chrome. Firefox will show built in icon and Safari will show no icon.\n * Not tested in Edge.\n */\nexport const DatePicker = forwardRef<HTMLInputElement, DatePickerProps>(function DatePicker(\n {\n className,\n variant,\n errorMessage,\n labelProps,\n label,\n id,\n style,\n disabled,\n readOnly,\n calendarButtonTitle = \"Åpne kalender\",\n ...rest\n },\n ref,\n) {\n const inputRef = useRef<HTMLInputElement>(null);\n const mergedRef = useMergeRefs([inputRef, ref]);\n\n return (\n <InputGroup\n className={clsx(\"hds-date-picker\", className as undefined)}\n disabled={disabled}\n errorMessage={errorMessage}\n id={id}\n label={label}\n labelProps={labelProps}\n readOnly={readOnly}\n style={style}\n variant={variant}\n >\n {(inputProps) => (\n <>\n <input\n {...rest}\n {...inputProps}\n disabled={disabled}\n readOnly={readOnly}\n ref={mergedRef}\n type=\"date\"\n />\n <button\n className={clsx(\"hds-date-picker__calendar-button\")}\n type=\"button\"\n title={calendarButtonTitle}\n onClick={() => {\n inputRef.current?.showPicker();\n }}\n />\n </>\n )}\n </InputGroup>\n );\n});\n\nDatePicker.displayName = \"DatePicker\";\n","import { useId, forwardRef, Children, isValidElement, cloneElement } from \"react\";\nimport type { LabelHTMLAttributes, ReactNode, CSSProperties } from \"react\";\nimport { clsx } from \"@postenbring/hedwig-css/typed-classname\";\nimport { ErrorMessage, type ErrorMessageProps } from \"../error-message\";\n\ninterface InputProps {\n \"aria-describedby\"?: string;\n \"aria-invalid\"?: boolean;\n id?: string;\n className?: string;\n}\n\nexport interface InputGroupProps {\n id?: string;\n className?: string;\n style?: CSSProperties;\n variant?: \"default\" | \"white\";\n errorMessage?: ReactNode;\n errorMessageProps?: Partial<ErrorMessageProps>;\n labelProps?: LabelHTMLAttributes<HTMLLabelElement>;\n label: ReactNode;\n disabled?: boolean;\n readOnly?: boolean;\n /**\n * `children` must be either a single input element or a render function.\n *\n * If you use a render function, make sure you spread the input props to the appropriate element.\n */\n children: Exclude<ReactNode, Iterable<ReactNode>> | ((inputProps: InputProps) => ReactNode);\n}\n\nexport const InputGroup = forwardRef<HTMLDivElement, InputGroupProps>(function InputGroup(\n {\n id,\n className,\n style,\n variant = \"default\",\n errorMessage,\n errorMessageProps,\n labelProps: { className: labelClassName, ...labelProps } = {},\n label,\n disabled,\n readOnly,\n children,\n ...rest\n },\n ref,\n) {\n const errorMessageId = useId();\n const inputId = useId();\n\n const renderInput = () => {\n const inputProps: InputProps = {\n \"aria-describedby\": errorMessage ? errorMessageId : undefined,\n \"aria-invalid\": errorMessage ? true : undefined,\n id: id ?? inputId,\n className: clsx(\"hds-input-group__input\"),\n };\n\n if (typeof children === \"function\") {\n return children(inputProps);\n }\n\n const input: ReactNode = Children.toArray(children)[0];\n\n if (!isValidElement<InputProps>(input)) {\n return;\n }\n\n return cloneElement<InputProps>(input, {\n ...inputProps,\n ...input.props,\n className: `${inputProps.className} ${input.props.className ?? \"\"}`,\n });\n };\n\n return (\n <div\n className={clsx(\n \"hds-input-group\",\n {\n [`hds-input-group--${variant}`]: variant,\n \"hds-input-group--error\": errorMessage,\n },\n className as undefined,\n )}\n ref={ref}\n style={style}\n {...rest}\n >\n <label\n className={clsx(\"hds-input-group__label\", labelClassName as undefined)}\n {...labelProps}\n htmlFor={id ?? inputId}\n >\n {label}\n </label>\n <div\n className={clsx(\"hds-input-group__input-wrapper\")}\n data-disabled={disabled}\n data-readonly={readOnly}\n >\n {renderInput()}\n </div>\n <ErrorMessage id={errorMessageId} {...errorMessageProps}>\n {errorMessage}\n </ErrorMessage>\n </div>\n );\n});\n","import { clsx } from \"@postenbring/hedwig-css/typed-classname\";\nimport { forwardRef, type ReactNode } from \"react\";\n\nexport interface ErrorMessageProps extends React.HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n id: string;\n className?: string;\n}\n\nexport const ErrorMessage = forwardRef<HTMLDivElement, ErrorMessageProps>(\n ({ children, id, className, ...rest }, ref) => {\n return (\n <div\n aria-live=\"polite\"\n className={clsx(\"hds-error-message\", className as undefined)}\n id={id}\n ref={ref}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\nErrorMessage.displayName = \"ErrorMessage\";\n","import * as React from \"react\";\nimport { useCallback, useEffect, useState } from \"react\";\n\n/**\n * Merges an array of refs into a single memoized callback ref or `null`.\n * @see https://floating-ui.com/docs/useMergeRefs\n */\nexport function useMergeRefs<Instance>(\n refs: (React.Ref<Instance> | undefined)[],\n): React.RefCallback<Instance> | null {\n return React.useMemo(() => {\n if (refs.every((ref) => ref === null)) {\n return null;\n }\n\n return (value) => {\n refs.forEach((ref) => {\n if (typeof ref === \"function\") {\n ref(value);\n } else if (ref !== null) {\n (ref as React.MutableRefObject<Instance | null>).current = value;\n }\n });\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps -- It's ok\n }, refs);\n}\n\nexport function useResize<Instance extends HTMLElement>(\n ref: React.RefObject<Instance> | undefined | null,\n): { width: number; height: number } {\n const [width, setWidth] = useState<number>(0);\n const [height, setHeight] = useState<number>(0);\n const handleResize = useCallback(() => {\n if (ref?.current !== null) {\n setWidth(ref?.current?.offsetWidth ?? 0);\n setHeight(ref?.current?.offsetHeight ?? 0);\n }\n }, [ref]);\n useEffect(() => {\n window.addEventListener(\"load\", handleResize);\n window.addEventListener(\"resize\", handleResize);\n return () => {\n window.removeEventListener(\"load\", handleResize);\n window.removeEventListener(\"resize\", handleResize);\n };\n }, [ref, handleResize]);\n useEffect(() => {\n handleResize();\n // eslint-disable-next-line react-hooks/exhaustive-deps -- It's ok\n }, []);\n return { width, height };\n}\n\nfunction subscribe() {\n // eslint-disable-next-line @typescript-eslint/no-empty-function -- It's ok\n return () => {};\n}\n\nexport function useHydrated() {\n return React.useSyncExternalStore(\n subscribe,\n () => true,\n () => false,\n );\n}\n\n/**\n * Trap focus inside an element using the `inert` attribute.\n *\n * Adds `inert` to all siblings of the given element, and all their ancestors up to the body.\n * Returns a cleanup function which removes the `inert` property from the elements, effectively giving focus back to rest of the document.\n *\n * NOTE: Does not support portals, i.e. elements outside the DOM hierarchy of the given element.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/inert\n * @see https://web.dev/articles/inert\n */\nexport function focusTrap(element: HTMLElement) {\n // eslint-disable-next-line @typescript-eslint/no-empty-function -- NOP on focus trapping the body element\n if (element === document.body) return () => {};\n\n let inertElements: HTMLElement[] = [];\n for (let el: HTMLElement | null = element; el; el = el.parentElement) {\n if (el === document.body) break;\n\n for (const sibling of el.parentElement?.children ?? []) {\n if (sibling === el) continue;\n if (!(sibling instanceof HTMLElement)) continue;\n if (sibling.hasAttribute(\"inert\")) continue;\n\n sibling.setAttribute(\"inert\", \"true\");\n inertElements.push(sibling);\n }\n }\n\n return () => {\n releaseFocusTrap(inertElements);\n inertElements = [];\n };\n}\n\n/**\n * Unset the `inert` attribute on all elements given\n */\nfunction releaseFocusTrap(inertElements: Iterable<HTMLElement>) {\n for (const el of inertElements) {\n el.removeAttribute(\"inert\");\n }\n}\n"],"mappings":"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","names":["import_react","import_typed_classname","import_react","import_typed_classname","import_jsx_runtime","InputGroup","_a","import_react","import_jsx_runtime","DatePicker","_a"]}
1
+ {"version":3,"sources":["../../../src/form/date-picker/index.tsx","../../../src/form/date-picker/date-picker.tsx","../../../src/form/input-group/input-group.tsx","../../../src/form/error-message/error-message.tsx","../../../src/utils/utils.ts"],"sourcesContent":["export { DatePicker } from \"./date-picker\";\nexport type * from \"./date-picker\";\n","import { forwardRef, useRef, type InputHTMLAttributes } from \"react\";\nimport { clsx } from \"@postenbring/hedwig-css/typed-classname\";\nimport { InputGroup, type InputGroupProps } from \"../input-group\";\nimport { useMergeRefs } from \"../../utils/utils\";\n\nexport type DatePickerProps = Omit<\n InputGroupProps & Omit<InputHTMLAttributes<HTMLInputElement>, \"size\">,\n \"children\" | \"type\"\n> & {\n /**\n * Accessible title for the calendar button\n *\n * This button currently only shows in Chrome.\n *\n * @defaultValue \"Åpne kalender\"\n */\n calendarButtonTitle?: string;\n};\n\n/**\n * A basic implementation of a date picker\n *\n * This date picker is an implementation of native date picker, as you get\n * with `<input type=\"date\" />`, where the input field is dressed in Hedwig styling.\n *\n * Due to accessibility concerns you will only see the appropriate Hedwig calendar\n * icon in Chrome. Firefox will show built in icon and Safari will show no icon.\n * Not tested in Edge.\n */\nexport const DatePicker = forwardRef<HTMLInputElement, DatePickerProps>(function DatePicker(\n {\n className,\n size,\n errorMessage,\n labelProps,\n label,\n id,\n style,\n disabled,\n readOnly,\n calendarButtonTitle = \"Åpne kalender\",\n ...rest\n },\n ref,\n) {\n const inputRef = useRef<HTMLInputElement>(null);\n const mergedRef = useMergeRefs([inputRef, ref]);\n\n return (\n <InputGroup\n className={clsx(\"hds-date-picker\", className as undefined)}\n disabled={disabled}\n errorMessage={errorMessage}\n id={id}\n label={label}\n labelProps={labelProps}\n readOnly={readOnly}\n style={style}\n size={size}\n >\n {(inputProps) => (\n <>\n <input\n {...rest}\n {...inputProps}\n disabled={disabled}\n readOnly={readOnly}\n ref={mergedRef}\n type=\"date\"\n />\n <button\n className={clsx(\"hds-date-picker__calendar-button\")}\n type=\"button\"\n title={calendarButtonTitle}\n onClick={() => {\n inputRef.current?.showPicker();\n }}\n />\n </>\n )}\n </InputGroup>\n );\n});\n\nDatePicker.displayName = \"DatePicker\";\n","import { useId, forwardRef, Children, isValidElement, cloneElement } from \"react\";\nimport type { LabelHTMLAttributes, ReactNode, CSSProperties } from \"react\";\nimport { clsx } from \"@postenbring/hedwig-css/typed-classname\";\nimport { ErrorMessage, type ErrorMessageProps } from \"../error-message\";\n\ninterface InputProps {\n \"aria-describedby\"?: string;\n \"aria-invalid\"?: boolean;\n id?: string;\n className?: string;\n}\n\nexport interface InputGroupProps {\n id?: string;\n className?: string;\n style?: CSSProperties;\n size?: \"large\" | \"small\";\n errorMessage?: ReactNode;\n errorMessageProps?: Partial<ErrorMessageProps>;\n labelProps?: LabelHTMLAttributes<HTMLLabelElement>;\n label: ReactNode;\n disabled?: boolean;\n readOnly?: boolean;\n /**\n * `children` must be either a single input element or a render function.\n *\n * If you use a render function, make sure you spread the input props to the appropriate element.\n */\n children: Exclude<ReactNode, Iterable<ReactNode>> | ((inputProps: InputProps) => ReactNode);\n}\n\nexport const InputGroup = forwardRef<HTMLDivElement, InputGroupProps>(function InputGroup(\n {\n id,\n className,\n style,\n size = \"large\",\n errorMessage,\n errorMessageProps,\n labelProps: { className: labelClassName, ...labelProps } = {},\n label,\n disabled,\n readOnly,\n children,\n ...rest\n },\n ref,\n) {\n const errorMessageId = useId();\n const inputId = useId();\n\n const renderInput = () => {\n const inputProps: InputProps = {\n \"aria-describedby\": errorMessage ? errorMessageId : undefined,\n \"aria-invalid\": errorMessage ? true : undefined,\n id: id ?? inputId,\n className: clsx(\"hds-input-group__input\"),\n };\n\n if (typeof children === \"function\") {\n return children(inputProps);\n }\n\n const input: ReactNode = Children.toArray(children)[0];\n\n if (!isValidElement<InputProps>(input)) {\n return;\n }\n\n return cloneElement<InputProps>(input, {\n ...inputProps,\n ...input.props,\n className: `${inputProps.className} ${input.props.className ?? \"\"}`,\n });\n };\n\n return (\n <div\n className={clsx(\n \"hds-input-group\",\n {\n [`hds-input-group--${size}`]: size,\n \"hds-input-group--error\": errorMessage,\n },\n className as undefined,\n )}\n ref={ref}\n style={style}\n {...rest}\n >\n <label\n className={clsx(\"hds-input-group__label\", labelClassName as undefined)}\n {...labelProps}\n htmlFor={id ?? inputId}\n >\n {label}\n </label>\n <div\n className={clsx(\"hds-input-group__input-wrapper\")}\n data-disabled={disabled}\n data-readonly={readOnly}\n >\n {renderInput()}\n </div>\n <ErrorMessage id={errorMessageId} {...errorMessageProps}>\n {errorMessage}\n </ErrorMessage>\n </div>\n );\n});\n","import { clsx } from \"@postenbring/hedwig-css/typed-classname\";\nimport { forwardRef, type ReactNode } from \"react\";\n\nexport interface ErrorMessageProps extends React.HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n id: string;\n className?: string;\n}\n\nexport const ErrorMessage = forwardRef<HTMLDivElement, ErrorMessageProps>(\n ({ children, id, className, ...rest }, ref) => {\n return (\n <div\n aria-live=\"polite\"\n className={clsx(\"hds-error-message\", className as undefined)}\n id={id}\n ref={ref}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\nErrorMessage.displayName = \"ErrorMessage\";\n","import * as React from \"react\";\nimport { useCallback, useEffect, useState, version } from \"react\";\n\n/**\n * Merges an array of refs into a single memoized callback ref or `null`.\n * @see https://floating-ui.com/docs/useMergeRefs\n */\nexport function useMergeRefs<Instance>(\n refs: (React.Ref<Instance> | undefined)[],\n): React.RefCallback<Instance> | null {\n return React.useMemo(() => {\n if (refs.every((ref) => ref === null)) {\n return null;\n }\n\n return (value) => {\n refs.forEach((ref) => {\n if (typeof ref === \"function\") {\n ref(value);\n } else if (ref !== null) {\n (ref as React.MutableRefObject<Instance | null>).current = value;\n }\n });\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps -- It's ok\n }, refs);\n}\n\nexport function useResize<Instance extends HTMLElement>(\n ref: React.RefObject<Instance> | undefined | null,\n): { width: number; height: number } {\n const [width, setWidth] = useState<number>(0);\n const [height, setHeight] = useState<number>(0);\n const handleResize = useCallback(() => {\n if (ref?.current !== null) {\n setWidth(ref?.current?.offsetWidth ?? 0);\n setHeight(ref?.current?.offsetHeight ?? 0);\n }\n }, [ref]);\n useEffect(() => {\n window.addEventListener(\"load\", handleResize);\n window.addEventListener(\"resize\", handleResize);\n return () => {\n window.removeEventListener(\"load\", handleResize);\n window.removeEventListener(\"resize\", handleResize);\n };\n }, [ref, handleResize]);\n useEffect(() => {\n handleResize();\n // eslint-disable-next-line react-hooks/exhaustive-deps -- It's ok\n }, []);\n return { width, height };\n}\n\nfunction subscribe() {\n // eslint-disable-next-line @typescript-eslint/no-empty-function -- It's ok\n return () => {};\n}\n\nexport function useHydrated() {\n return React.useSyncExternalStore(\n subscribe,\n () => true,\n () => false,\n );\n}\n\n/**\n * Trap focus inside an element using the `inert` attribute.\n *\n * Adds `inert` to all siblings of the given element, and all their ancestors up to the body.\n * Returns a cleanup function which removes the `inert` property from the elements, effectively giving focus back to rest of the document.\n *\n * NOTE: Does not support portals, i.e. elements outside the DOM hierarchy of the given element.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/inert\n * @see https://web.dev/articles/inert\n */\nexport function focusTrap(element: HTMLElement) {\n // eslint-disable-next-line @typescript-eslint/no-empty-function -- NOP on focus trapping the body element\n if (element === document.body) return () => {};\n\n let inertElements: HTMLElement[] = [];\n for (let el: HTMLElement | null = element; el; el = el.parentElement) {\n if (el === document.body) break;\n\n for (const sibling of el.parentElement?.children ?? []) {\n if (sibling === el) continue;\n if (!(sibling instanceof HTMLElement)) continue;\n if (sibling.hasAttribute(\"inert\")) continue;\n\n sibling.setAttribute(\"inert\", \"true\");\n inertElements.push(sibling);\n }\n }\n\n return () => {\n releaseFocusTrap(inertElements);\n inertElements = [];\n };\n}\n\n/**\n * Unset the `inert` attribute on all elements given\n */\nfunction releaseFocusTrap(inertElements: Iterable<HTMLElement>) {\n for (const el of inertElements) {\n el.removeAttribute(\"inert\");\n }\n}\n\n/**\n * React 19 supports inert prop\n * React 18 needs inert to be a string\n */\nconst inertBooleanSupported: boolean = Number(version.split(\".\")[0]) >= 19;\n\n/**\n * Returns the inert prop value based on the React version.\n */\nexport const inertPropValue: (x: boolean) => boolean | \"\" | undefined = inertBooleanSupported\n ? (x: boolean): boolean => x\n : (x: boolean): \"\" | undefined => (x ? \"\" : undefined);\n"],"mappings":"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","names":["import_react","import_typed_classname","import_react","import_typed_classname","import_jsx_runtime","InputGroup","_a","import_react","import_jsx_runtime","DatePicker","_a"]}
@@ -1,12 +1,12 @@
1
1
  import "../../chunk-TDLSHJ4Z.mjs";
2
2
  import {
3
3
  DatePicker
4
- } from "../../chunk-GVO57ZWU.mjs";
4
+ } from "../../chunk-J35DWEJX.mjs";
5
5
  import "../../chunk-Y5SUMFYJ.mjs";
6
- import "../../chunk-XZ43OSZ5.mjs";
6
+ import "../../chunk-6OJINZ37.mjs";
7
7
  import "../../chunk-NSLSA7F7.mjs";
8
8
  import "../../chunk-LHIG6RW7.mjs";
9
- import "../../chunk-ILFK3VKS.mjs";
9
+ import "../../chunk-77M2ZTP7.mjs";
10
10
  import "../../chunk-YOSPWY5K.mjs";
11
11
  export {
12
12
  DatePicker
@@ -1,5 +1,5 @@
1
- import { forwardRef } from "react";
2
- import { type MessageProps, type MessageTitleProps } from "../../message";
1
+ import { forwardRef, type HTMLAttributes } from "react";
2
+ import { type BoxProps } from "../../box";
3
3
  import { type ListProps } from "../../list";
4
4
  interface ErrorSummaryHeadingPropsAutoFocus {
5
5
  /**
@@ -28,8 +28,8 @@ interface ErrorSummaryHeadingPropsAsChild {
28
28
  asChild: true;
29
29
  as?: never;
30
30
  }
31
- export type ErrorSummaryHeadingProps = MessageTitleProps & ErrorSummaryHeadingPropsAutoFocus & (ErrorSummaryHeadingPropsAs | ErrorSummaryHeadingPropsAsChild);
32
- export declare const ErrorSummaryHeading: import("react").ForwardRefExoticComponent<((MessageTitleProps & ErrorSummaryHeadingPropsAutoFocus & ErrorSummaryHeadingPropsAs) | (MessageTitleProps & ErrorSummaryHeadingPropsAutoFocus & ErrorSummaryHeadingPropsAsChild)) & import("react").RefAttributes<HTMLParagraphElement>>;
31
+ export type ErrorSummaryHeadingProps = HTMLAttributes<HTMLElement> & ErrorSummaryHeadingPropsAutoFocus & (ErrorSummaryHeadingPropsAs | ErrorSummaryHeadingPropsAsChild);
32
+ export declare const ErrorSummaryHeading: import("react").ForwardRefExoticComponent<((HTMLAttributes<HTMLElement> & ErrorSummaryHeadingPropsAutoFocus & ErrorSummaryHeadingPropsAs) | (HTMLAttributes<HTMLElement> & ErrorSummaryHeadingPropsAutoFocus & ErrorSummaryHeadingPropsAsChild)) & import("react").RefAttributes<HTMLParagraphElement>>;
33
33
  export interface ErrorSummaryListProps extends ListProps {
34
34
  /**
35
35
  * Sets the size of the items (font)
@@ -54,7 +54,7 @@ export interface ErrorSummaryItemProps extends React.HTMLAttributes<HTMLLIElemen
54
54
  linkProps?: React.AnchorHTMLAttributes<HTMLAnchorElement>;
55
55
  }
56
56
  export declare const ErrorSummaryItem: import("react").ForwardRefExoticComponent<ErrorSummaryItemProps & import("react").RefAttributes<HTMLLIElement>>;
57
- export type ErrorSummaryProps = Omit<MessageProps, "variant" | "icon" | "iconClassName">;
57
+ export type ErrorSummaryProps = Omit<BoxProps, "variant" | "closeable" | "onClose" | "closed" | "closeButtonProps">;
58
58
  export declare const ErrorSummary: ErrorSummaryType;
59
59
  type ErrorSummaryType = ReturnType<typeof forwardRef<HTMLDivElement, ErrorSummaryProps>> & {
60
60
  Heading: typeof ErrorSummaryHeading;
@@ -1 +1 @@
1
- {"version":3,"file":"error-summary.d.ts","sourceRoot":"","sources":["../../../src/form/error-summary/error-summary.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAqB,MAAM,OAAO,CAAC;AACtD,OAAO,EAAW,KAAK,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACnF,OAAO,EAAiB,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAK3D,UAAU,iCAAiC;IACzC;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,UAAU,0BAA0B;IAClC;;;;OAIG;IACH,EAAE,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,GAAG,CAAC;IACtE,OAAO,CAAC,EAAE,KAAK,CAAC;CACjB;AAED,UAAU,+BAA+B;IACvC;;OAEG;IACH,OAAO,EAAE,IAAI,CAAC;IACd,EAAE,CAAC,EAAE,KAAK,CAAC;CACZ;AAED,MAAM,MAAM,wBAAwB,GAAG,iBAAiB,GACtD,iCAAiC,GACjC,CAAC,0BAA0B,GAAG,+BAA+B,CAAC,CAAC;AAEjE,eAAO,MAAM,mBAAmB,qRAyB9B,CAAC;AAGH,MAAM,WAAW,qBAAsB,SAAQ,SAAS;IACtD;;;;OAIG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;CAC1B;AACD,eAAO,MAAM,gBAAgB,oHAe5B,CAAC;AAGF,MAAM,WAAW,qBAAsB,SAAQ,KAAK,CAAC,cAAc,CAAC,aAAa,CAAC;IAChF;;;;;;OAMG;IACH,IAAI,EAAE,IAAI,MAAM,EAAE,CAAC;IAEnB;;OAEG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;CAC3D;AACD,eAAO,MAAM,gBAAgB,iHAiB5B,CAAC;AAGF,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,YAAY,EAAE,SAAS,GAAG,MAAM,GAAG,eAAe,CAAC,CAAC;AAEzF,eAAO,MAAM,YAAY,EAQpB,gBAAgB,CAAC;AAGtB,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC,GAAG;IACzF,OAAO,EAAE,OAAO,mBAAmB,CAAC;IACpC,IAAI,EAAE,OAAO,gBAAgB,CAAC;IAC9B,IAAI,EAAE,OAAO,gBAAgB,CAAC;CAC/B,CAAC"}
1
+ {"version":3,"file":"error-summary.d.ts","sourceRoot":"","sources":["../../../src/form/error-summary/error-summary.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAqB,KAAK,cAAc,EAAE,MAAM,OAAO,CAAC;AAG3E,OAAO,EAAO,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAiB,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAK3D,UAAU,iCAAiC;IACzC;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,UAAU,0BAA0B;IAClC;;;;OAIG;IACH,EAAE,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,GAAG,CAAC;IACtE,OAAO,CAAC,EAAE,KAAK,CAAC;CACjB;AAED,UAAU,+BAA+B;IACvC;;OAEG;IACH,OAAO,EAAE,IAAI,CAAC;IACd,EAAE,CAAC,EAAE,KAAK,CAAC;CACZ;AAED,MAAM,MAAM,wBAAwB,GAAG,cAAc,CAAC,WAAW,CAAC,GAChE,iCAAiC,GACjC,CAAC,0BAA0B,GAAG,+BAA+B,CAAC,CAAC;AAEjE,eAAO,MAAM,mBAAmB,ySA0B9B,CAAC;AAGH,MAAM,WAAW,qBAAsB,SAAQ,SAAS;IACtD;;;;OAIG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;CAC1B;AACD,eAAO,MAAM,gBAAgB,oHAM5B,CAAC;AAGF,MAAM,WAAW,qBAAsB,SAAQ,KAAK,CAAC,cAAc,CAAC,aAAa,CAAC;IAChF;;;;;;OAMG;IACH,IAAI,EAAE,IAAI,MAAM,EAAE,CAAC;IAEnB;;OAEG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;CAC3D;AACD,eAAO,MAAM,gBAAgB,iHAuB5B,CAAC;AAGF,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAClC,QAAQ,EACR,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,kBAAkB,CACpE,CAAC;AAEF,eAAO,MAAM,YAAY,EAMpB,gBAAgB,CAAC;AAGtB,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC,GAAG;IACzF,OAAO,EAAE,OAAO,mBAAmB,CAAC;IACpC,IAAI,EAAE,OAAO,gBAAgB,CAAC;IAC9B,IAAI,EAAE,OAAO,gBAAgB,CAAC;CAC/B,CAAC"}
@@ -65,12 +65,9 @@ __export(error_summary_exports, {
65
65
  ErrorSummaryList: () => ErrorSummaryList
66
66
  });
67
67
  module.exports = __toCommonJS(error_summary_exports);
68
- var import_react6 = require("react");
69
-
70
- // src/message/message.tsx
71
- var import_react2 = require("react");
72
- var import_typed_classname2 = require("@postenbring/hedwig-css/typed-classname");
73
- var import_react_slot2 = require("@radix-ui/react-slot");
68
+ var import_react5 = require("react");
69
+ var import_typed_classname4 = require("@postenbring/hedwig-css/typed-classname");
70
+ var import_react_slot3 = require("@radix-ui/react-slot");
74
71
 
75
72
  // src/box/box.tsx
76
73
  var import_react = require("react");
@@ -147,69 +144,18 @@ var Box = (0, import_react.forwardRef)(
147
144
  Box.displayName = "Box";
148
145
  Box.CloseButton = BoxCloseButton;
149
146
 
150
- // src/message/message.tsx
151
- var import_jsx_runtime2 = require("react/jsx-runtime");
152
- var MessageTitle = (0, import_react2.forwardRef)(
153
- (_a, ref) => {
154
- var _b = _a, { asChild, className } = _b, rest = __objRest(_b, ["asChild", "className"]);
155
- const Component = asChild ? import_react_slot2.Slot : "div";
156
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
157
- Component,
158
- __spreadValues({
159
- className: (0, import_typed_classname2.clsx)("hds-message__title", className),
160
- ref
161
- }, rest)
162
- );
163
- }
164
- );
165
- MessageTitle.displayName = "Message.Title";
166
- var MessageDescription = (0, import_react2.forwardRef)(
167
- (_a, ref) => {
168
- var _b = _a, { asChild, className } = _b, rest = __objRest(_b, ["asChild", "className"]);
169
- const Component = asChild ? import_react_slot2.Slot : "div";
170
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
171
- Component,
172
- __spreadValues({
173
- className: (0, import_typed_classname2.clsx)("hds-message__description", className),
174
- ref
175
- }, rest)
176
- );
177
- }
178
- );
179
- MessageDescription.displayName = "Message.Description";
180
- var Message = (0, import_react2.forwardRef)(
181
- (_a, ref) => {
182
- var _b = _a, { children, className, variant = "success", icon, iconClassName } = _b, rest = __objRest(_b, ["children", "className", "variant", "icon", "iconClassName"]);
183
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
184
- Box,
185
- __spreadProps(__spreadValues({
186
- className: (0, import_typed_classname2.clsx)(`hds-message`, `hds-message--${variant}`, className),
187
- ref
188
- }, rest), {
189
- children: [
190
- variant === "neutral" && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: (0, import_typed_classname2.clsx)("hds-message--neutral__icon", iconClassName), children: icon }),
191
- children
192
- ]
193
- })
194
- );
195
- }
196
- );
197
- Message.displayName = "Message";
198
- Message.Title = MessageTitle;
199
- Message.Description = MessageDescription;
200
-
201
147
  // src/list/list.tsx
202
- var import_react3 = require("react");
203
- var import_typed_classname3 = require("@postenbring/hedwig-css/typed-classname");
204
- var import_jsx_runtime3 = require("react/jsx-runtime");
205
- var UnorderedList = (0, import_react3.forwardRef)(
148
+ var import_react2 = require("react");
149
+ var import_typed_classname2 = require("@postenbring/hedwig-css/typed-classname");
150
+ var import_jsx_runtime2 = require("react/jsx-runtime");
151
+ var UnorderedList = (0, import_react2.forwardRef)(
206
152
  (_a, ref) => {
207
153
  var _b = _a, { size = "default", className } = _b, rest = __objRest(_b, ["size", "className"]);
208
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
154
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
209
155
  "ul",
210
156
  __spreadValues({
211
157
  ref,
212
- className: (0, import_typed_classname3.clsx)(
158
+ className: (0, import_typed_classname2.clsx)(
213
159
  "hds-list",
214
160
  size !== "default" && `hds-list--${size}`,
215
161
  className
@@ -219,14 +165,14 @@ var UnorderedList = (0, import_react3.forwardRef)(
219
165
  }
220
166
  );
221
167
  UnorderedList.displayName = "UnorderedList";
222
- var OrderedList = (0, import_react3.forwardRef)(
168
+ var OrderedList = (0, import_react2.forwardRef)(
223
169
  (_a, ref) => {
224
170
  var _b = _a, { size = "medium", className } = _b, rest = __objRest(_b, ["size", "className"]);
225
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
171
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
226
172
  "ol",
227
173
  __spreadValues({
228
174
  ref,
229
- className: (0, import_typed_classname3.clsx)(
175
+ className: (0, import_typed_classname2.clsx)(
230
176
  "hds-list",
231
177
  size !== "default" && `hds-list--${size}`,
232
178
  className
@@ -239,18 +185,18 @@ OrderedList.displayName = "OrderedList";
239
185
 
240
186
  // src/link/link.tsx
241
187
  var React = require("react");
242
- var import_typed_classname4 = require("@postenbring/hedwig-css/typed-classname");
243
- var import_react4 = require("react");
244
- var import_react_slot3 = require("@radix-ui/react-slot");
245
- var import_jsx_runtime4 = require("react/jsx-runtime");
246
- var Link = (0, import_react4.forwardRef)(
188
+ var import_typed_classname3 = require("@postenbring/hedwig-css/typed-classname");
189
+ var import_react3 = require("react");
190
+ var import_react_slot2 = require("@radix-ui/react-slot");
191
+ var import_jsx_runtime3 = require("react/jsx-runtime");
192
+ var Link = (0, import_react3.forwardRef)(
247
193
  (_a, ref) => {
248
194
  var _b = _a, { asChild, children, variant = "underline", size = "default", icon, className } = _b, rest = __objRest(_b, ["asChild", "children", "variant", "size", "icon", "className"]);
249
- const Component = asChild ? import_react_slot3.Slot : "a";
250
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
195
+ const Component = asChild ? import_react_slot2.Slot : "a";
196
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
251
197
  Component,
252
198
  __spreadProps(__spreadValues({
253
- className: (0, import_typed_classname4.clsx)(
199
+ className: (0, import_typed_classname3.clsx)(
254
200
  "hds-link",
255
201
  variant !== "underline" && `hds-link--${variant}`,
256
202
  size !== "default" && `hds-link--${size}`,
@@ -269,7 +215,7 @@ Link.displayName = "Link";
269
215
 
270
216
  // src/utils/utils.ts
271
217
  var React2 = __toESM(require("react"));
272
- var import_react5 = require("react");
218
+ var import_react4 = require("react");
273
219
  function useMergeRefs(refs) {
274
220
  return React2.useMemo(() => {
275
221
  if (refs.every((ref) => ref === null)) {
@@ -286,6 +232,7 @@ function useMergeRefs(refs) {
286
232
  };
287
233
  }, refs);
288
234
  }
235
+ var inertBooleanSupported = Number(import_react4.version.split(".")[0]) >= 19;
289
236
 
290
237
  // src/form/error-summary/focus.ts
291
238
  function focusWithLegendOrLabelInViewport(id) {
@@ -329,33 +276,30 @@ function labelForInput(input) {
329
276
  }
330
277
 
331
278
  // src/form/error-summary/error-summary.tsx
332
- var import_jsx_runtime5 = require("react/jsx-runtime");
333
- var ErrorSummaryHeading = (0, import_react6.forwardRef)((_a, ref) => {
334
- var _b = _a, { children, as: Tag, autoFocus = true } = _b, rest = __objRest(_b, ["children", "as", "autoFocus"]);
335
- const focusRef = (0, import_react6.useRef)(null);
279
+ var import_jsx_runtime4 = require("react/jsx-runtime");
280
+ var ErrorSummaryHeading = (0, import_react5.forwardRef)((_a, ref) => {
281
+ var _b = _a, { asChild, children, as: Tag, autoFocus = true } = _b, rest = __objRest(_b, ["asChild", "children", "as", "autoFocus"]);
282
+ const focusRef = (0, import_react5.useRef)(null);
336
283
  const mergedRef = useMergeRefs([focusRef, ref]);
337
- (0, import_react6.useEffect)(() => {
284
+ const Component = asChild ? import_react_slot3.Slot : Tag;
285
+ (0, import_react5.useEffect)(() => {
338
286
  setTimeout(() => {
339
287
  if (focusRef.current && autoFocus) {
340
288
  focusRef.current.focus();
341
289
  }
342
290
  });
343
291
  }, []);
344
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Message.Title, __spreadProps(__spreadValues({ ref: mergedRef, tabIndex: -1, asChild: true }, rest), { children: Tag ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Tag, { children }) : children }));
292
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(Component, __spreadProps(__spreadValues({ className: (0, import_typed_classname4.clsx)(`hds-error-summary__title`), ref: mergedRef, tabIndex: -1 }, rest), { children }));
345
293
  });
346
294
  ErrorSummaryHeading.displayName = "ErrorSummary.Heading";
347
- var ErrorSummaryList = (0, import_react6.forwardRef)(
295
+ var ErrorSummaryList = (0, import_react5.forwardRef)(
348
296
  (_a, ref) => {
349
- var _b = _a, { children, style: _style, size = "small" } = _b, rest = __objRest(_b, ["children", "style", "size"]);
350
- const style = __spreadValues({
351
- // Match the link `solid` style, which black underline
352
- "--_hds-list-marker-color": "var(--hds-ui-colors-black)"
353
- }, _style);
354
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Message.Description, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(UnorderedList, __spreadProps(__spreadValues({ size, ref, style }, rest), { children })) });
297
+ var _b = _a, { children, size = "small" } = _b, rest = __objRest(_b, ["children", "size"]);
298
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(UnorderedList, __spreadProps(__spreadValues({ size, ref }, rest), { children }));
355
299
  }
356
300
  );
357
301
  ErrorSummaryList.displayName = "ErrorSummary.List";
358
- var ErrorSummaryItem = (0, import_react6.forwardRef)(
302
+ var ErrorSummaryItem = (0, import_react5.forwardRef)(
359
303
  (_a, ref) => {
360
304
  var _b = _a, { children, href, linkProps } = _b, rest = __objRest(_b, ["children", "href", "linkProps"]);
361
305
  function onClick(e) {
@@ -365,14 +309,24 @@ var ErrorSummaryItem = (0, import_react6.forwardRef)(
365
309
  e.preventDefault();
366
310
  }
367
311
  }
368
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("li", __spreadProps(__spreadValues({ ref }, rest), { children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Link, __spreadProps(__spreadValues({ size: "small", href, variant: "solid" }, linkProps), { onClick, children })) }));
312
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("li", __spreadProps(__spreadValues({ className: (0, import_typed_classname4.clsx)(`hds-error-summary__list-item`), ref }, rest), { children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
313
+ Link,
314
+ __spreadProps(__spreadValues({
315
+ size: "small",
316
+ href,
317
+ variant: "inverted-no-underline"
318
+ }, linkProps), {
319
+ onClick,
320
+ children
321
+ })
322
+ ) }));
369
323
  }
370
324
  );
371
325
  ErrorSummaryItem.displayName = "ErrorSummary.Item";
372
- var ErrorSummary = (0, import_react6.forwardRef)(
326
+ var ErrorSummary = (0, import_react5.forwardRef)(
373
327
  (_a, ref) => {
374
- var _b = _a, { children } = _b, rest = __objRest(_b, ["children"]);
375
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Message, __spreadProps(__spreadValues({ variant: "warning", ref }, rest), { children }));
328
+ var _b = _a, { children, className } = _b, rest = __objRest(_b, ["children", "className"]);
329
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(Box, __spreadProps(__spreadValues({ ref }, rest), { className: (0, import_typed_classname4.clsx)(`hds-error-summary`, className), children }));
376
330
  }
377
331
  );
378
332
  ErrorSummary.displayName = "ErrorSummary";