@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,5 +1,7 @@
1
- import { forwardRef, useEffect, useRef } from "react";
2
- import { Message, type MessageProps, type MessageTitleProps } from "../../message";
1
+ import { forwardRef, useEffect, useRef, type HTMLAttributes } from "react";
2
+ import { clsx } from "@postenbring/hedwig-css/typed-classname";
3
+ import { Slot } from "@radix-ui/react-slot";
4
+ import { Box, type BoxProps } from "../../box";
3
5
  import { UnorderedList, type ListProps } from "../../list";
4
6
  import { Link } from "../../link";
5
7
  import { useMergeRefs } from "../../utils";
@@ -35,16 +37,17 @@ interface ErrorSummaryHeadingPropsAsChild {
35
37
  as?: never;
36
38
  }
37
39
 
38
- export type ErrorSummaryHeadingProps = MessageTitleProps &
40
+ export type ErrorSummaryHeadingProps = HTMLAttributes<HTMLElement> &
39
41
  ErrorSummaryHeadingPropsAutoFocus &
40
42
  (ErrorSummaryHeadingPropsAs | ErrorSummaryHeadingPropsAsChild);
41
43
 
42
44
  export const ErrorSummaryHeading = forwardRef<
43
45
  HTMLParagraphElement,
44
46
  ErrorSummaryHeadingProps & (ErrorSummaryHeadingPropsAs | ErrorSummaryHeadingPropsAsChild)
45
- >(({ children, as: Tag, autoFocus = true, ...rest }, ref) => {
47
+ >(({ asChild, children, as: Tag, autoFocus = true, ...rest }, ref) => {
46
48
  const focusRef = useRef<HTMLElement>(null);
47
49
  const mergedRef = useMergeRefs([focusRef, ref]);
50
+ const Component = asChild ? Slot : Tag;
48
51
 
49
52
  useEffect(() => {
50
53
  /**
@@ -60,9 +63,9 @@ export const ErrorSummaryHeading = forwardRef<
60
63
  }, []);
61
64
 
62
65
  return (
63
- <Message.Title ref={mergedRef} tabIndex={-1} asChild {...rest}>
64
- {Tag ? <Tag>{children}</Tag> : children}
65
- </Message.Title>
66
+ <Component className={clsx(`hds-error-summary__title`)} ref={mergedRef} tabIndex={-1} {...rest}>
67
+ {children}
68
+ </Component>
66
69
  );
67
70
  });
68
71
  ErrorSummaryHeading.displayName = "ErrorSummary.Heading";
@@ -76,20 +79,11 @@ export interface ErrorSummaryListProps extends ListProps {
76
79
  size?: ListProps["size"];
77
80
  }
78
81
  export const ErrorSummaryList = forwardRef<HTMLUListElement, ErrorSummaryListProps>(
79
- ({ children, style: _style, size = "small", ...rest }, ref) => {
80
- const style = {
81
- // Match the link `solid` style, which black underline
82
- "--_hds-list-marker-color": "var(--hds-ui-colors-black)",
83
- ..._style,
84
- };
85
- return (
86
- <Message.Description asChild>
87
- <UnorderedList size={size} ref={ref} style={style} {...rest}>
88
- {children}
89
- </UnorderedList>
90
- </Message.Description>
91
- );
92
- },
82
+ ({ children, size = "small", ...rest }, ref) => (
83
+ <UnorderedList size={size} ref={ref} {...rest}>
84
+ {children}
85
+ </UnorderedList>
86
+ ),
93
87
  );
94
88
  ErrorSummaryList.displayName = "ErrorSummary.List";
95
89
 
@@ -118,8 +112,14 @@ export const ErrorSummaryItem = forwardRef<HTMLLIElement, ErrorSummaryItemProps>
118
112
  }
119
113
 
120
114
  return (
121
- <li ref={ref} {...rest}>
122
- <Link size="small" href={href} variant="solid" {...linkProps} onClick={onClick}>
115
+ <li className={clsx(`hds-error-summary__list-item`)} ref={ref} {...rest}>
116
+ <Link
117
+ size="small"
118
+ href={href}
119
+ variant="inverted-no-underline"
120
+ {...linkProps}
121
+ onClick={onClick}
122
+ >
123
123
  {children}
124
124
  </Link>
125
125
  </li>
@@ -128,16 +128,17 @@ export const ErrorSummaryItem = forwardRef<HTMLLIElement, ErrorSummaryItemProps>
128
128
  );
129
129
  ErrorSummaryItem.displayName = "ErrorSummary.Item";
130
130
 
131
- export type ErrorSummaryProps = Omit<MessageProps, "variant" | "icon" | "iconClassName">;
131
+ export type ErrorSummaryProps = Omit<
132
+ BoxProps,
133
+ "variant" | "closeable" | "onClose" | "closed" | "closeButtonProps"
134
+ >;
132
135
 
133
136
  export const ErrorSummary = forwardRef<HTMLDivElement, ErrorSummaryProps>(
134
- ({ children, ...rest }, ref) => {
135
- return (
136
- <Message variant="warning" ref={ref} {...rest}>
137
- {children}
138
- </Message>
139
- );
140
- },
137
+ ({ children, className, ...rest }, ref) => (
138
+ <Box ref={ref} {...rest} className={clsx(`hds-error-summary`, className as undefined)}>
139
+ {children}
140
+ </Box>
141
+ ),
141
142
  ) as ErrorSummaryType;
142
143
  ErrorSummary.displayName = "ErrorSummary";
143
144
 
@@ -18,9 +18,9 @@ export const Preview: Story = {
18
18
  placeholder: "I am a placeholder",
19
19
  errorMessage: "",
20
20
  readOnly: false,
21
- variant: "default",
21
+ size: "large",
22
22
  },
23
23
  argTypes: {
24
- variant: { control: "inline-radio", options: ["default", "white"] },
24
+ size: { control: "inline-radio", options: ["large", "small"] },
25
25
  },
26
26
  };
@@ -4,10 +4,20 @@ import { clsx } from "@postenbring/hedwig-css/typed-classname";
4
4
  import { InputGroup } from "../input-group";
5
5
  import type { InputGroupProps } from "../input-group";
6
6
 
7
- export type InputProps = Omit<InputGroupProps & InputHTMLAttributes<HTMLInputElement>, "children">;
7
+ /**
8
+ * Omitting:
9
+ * - `size` from InputHTMLAttributes
10
+ * - `children` from InputGroupProps
11
+ * The original `size` prop that input elements have is not in use in HDS.
12
+ * It is overridden by styling.
13
+ */
14
+ export type InputProps = Omit<
15
+ InputGroupProps & Omit<InputHTMLAttributes<HTMLInputElement>, "size">,
16
+ "children"
17
+ >;
8
18
 
9
19
  export const Input = forwardRef<HTMLInputElement, InputProps>(function Input(
10
- { className, variant, errorMessage, labelProps, label, id, style, disabled, readOnly, ...rest },
20
+ { className, size, errorMessage, labelProps, label, id, style, disabled, readOnly, ...rest },
11
21
  ref,
12
22
  ) {
13
23
  return (
@@ -20,7 +30,7 @@ export const Input = forwardRef<HTMLInputElement, InputProps>(function Input(
20
30
  labelProps={labelProps}
21
31
  readOnly={readOnly}
22
32
  style={style}
23
- variant={variant}
33
+ size={size}
24
34
  >
25
35
  <input {...rest} disabled={disabled} readOnly={readOnly} ref={ref} />
26
36
  </InputGroup>
@@ -14,7 +14,7 @@ export interface InputGroupProps {
14
14
  id?: string;
15
15
  className?: string;
16
16
  style?: CSSProperties;
17
- variant?: "default" | "white";
17
+ size?: "large" | "small";
18
18
  errorMessage?: ReactNode;
19
19
  errorMessageProps?: Partial<ErrorMessageProps>;
20
20
  labelProps?: LabelHTMLAttributes<HTMLLabelElement>;
@@ -34,7 +34,7 @@ export const InputGroup = forwardRef<HTMLDivElement, InputGroupProps>(function I
34
34
  id,
35
35
  className,
36
36
  style,
37
- variant = "default",
37
+ size = "large",
38
38
  errorMessage,
39
39
  errorMessageProps,
40
40
  labelProps: { className: labelClassName, ...labelProps } = {},
@@ -79,7 +79,7 @@ export const InputGroup = forwardRef<HTMLDivElement, InputGroupProps>(function I
79
79
  className={clsx(
80
80
  "hds-input-group",
81
81
  {
82
- [`hds-input-group--${variant}`]: variant,
82
+ [`hds-input-group--${size}`]: size,
83
83
  "hds-input-group--error": errorMessage,
84
84
  },
85
85
  className as undefined,
@@ -16,10 +16,10 @@ export const Preview: Story = {
16
16
  args: {
17
17
  label: "Default select",
18
18
  errorMessage: "",
19
- variant: "default",
19
+ size: "large",
20
20
  },
21
21
  argTypes: {
22
- variant: { control: "inline-radio", options: ["default", "white"] },
22
+ size: { control: "inline-radio", options: ["large", "small"] },
23
23
  },
24
24
  render: (props) => (
25
25
  <Select {...props} defaultValue="">
@@ -1,15 +1,15 @@
1
- import { forwardRef, type ReactNode , type SelectHTMLAttributes } from "react";
1
+ import { forwardRef, type ReactNode, type SelectHTMLAttributes } from "react";
2
2
  import { clsx } from "@postenbring/hedwig-css/typed-classname";
3
3
  import { InputGroup } from "../input-group";
4
4
  import type { InputGroupProps } from "../input-group";
5
5
 
6
6
  export type SelectProps = Omit<
7
- InputGroupProps & SelectHTMLAttributes<HTMLSelectElement>,
7
+ InputGroupProps & Omit<SelectHTMLAttributes<HTMLSelectElement>, "size">,
8
8
  "readOnly" | "children"
9
9
  > & { children: ReactNode };
10
10
 
11
11
  export const Select = forwardRef<HTMLSelectElement, SelectProps>(function Select(
12
- { className, variant, errorMessage, labelProps, label, id, style, disabled, children, ...rest },
12
+ { className, size, errorMessage, labelProps, label, id, style, disabled, children, ...rest },
13
13
  ref,
14
14
  ) {
15
15
  return (
@@ -21,7 +21,7 @@ export const Select = forwardRef<HTMLSelectElement, SelectProps>(function Select
21
21
  label={label}
22
22
  labelProps={labelProps}
23
23
  style={style}
24
- variant={variant}
24
+ size={size}
25
25
  >
26
26
  <select {...rest} disabled={disabled} ref={ref}>
27
27
  {children}
@@ -6,7 +6,7 @@ const meta: Meta<typeof Textarea> = {
6
6
  title: "Form/Textarea",
7
7
  component: Textarea,
8
8
  argTypes: {
9
- variant: { control: "inline-radio", options: ["default", "white"] },
9
+ size: { control: "inline-radio", options: ["large", "small"] },
10
10
  },
11
11
  };
12
12
 
@@ -21,6 +21,6 @@ export const Preview: Story = {
21
21
  placeholder: "I am a placeholder",
22
22
  errorMessage: "",
23
23
  readOnly: false,
24
- variant: "default",
24
+ size: "large",
25
25
  },
26
26
  };
@@ -10,7 +10,7 @@ export type TextareaProps = Omit<
10
10
  >;
11
11
 
12
12
  export const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(function Textarea(
13
- { className, variant, errorMessage, labelProps, label, id, style, disabled, readOnly, ...rest },
13
+ { className, size, errorMessage, labelProps, label, id, style, disabled, readOnly, ...rest },
14
14
  ref,
15
15
  ) {
16
16
  return (
@@ -23,7 +23,7 @@ export const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(function
23
23
  labelProps={labelProps}
24
24
  readOnly={readOnly}
25
25
  style={style}
26
- variant={variant}
26
+ size={size}
27
27
  >
28
28
  <textarea {...rest} disabled={disabled} readOnly={readOnly} ref={ref} />
29
29
  </InputGroup>
@@ -1,6 +1,6 @@
1
1
  import { createContext, useContext, forwardRef, useState, useEffect, useId } from "react";
2
2
  import { clsx } from "@postenbring/hedwig-css/typed-classname";
3
- import { focusTrap } from "../utils/utils";
3
+ import { focusTrap, inertPropValue } from "../utils/utils";
4
4
  import { CloseIcon, MenuIcon } from "./icons";
5
5
 
6
6
  interface ExpandableMenuContextProps {
@@ -137,13 +137,14 @@ export const NavbarExpandableMenuContent = forwardRef<
137
137
  NavbarExpandableMenuContentProps
138
138
  >(({ children, className, ...rest }, ref) => {
139
139
  const { contentId, open } = useNavbarExpendableMenuContext();
140
+
140
141
  return (
141
142
  <section
142
143
  {...rest}
143
144
  id={contentId}
144
145
  className={clsx("hds-navbar__expandable-menu-content", className as undefined)}
145
146
  data-state={open ? "open" : "closed"}
146
- {...{ inert: open ? undefined : "true" }}
147
+ {...{ inert: inertPropValue(!open) }}
147
148
  ref={ref}
148
149
  >
149
150
  <div className={clsx("hds-navbar__expandable-menu-content-inner")}>{children}</div>
@@ -4,6 +4,7 @@
4
4
  import { clsx } from "@postenbring/hedwig-css/typed-classname";
5
5
  import { Slot } from "@radix-ui/react-slot";
6
6
  import { forwardRef } from "react";
7
+ import { inertPropValue } from "../utils";
7
8
 
8
9
  interface DimensionsFromWidthAndHeight {
9
10
  height?: number | string;
@@ -102,7 +103,7 @@ export const Skeleton = forwardRef<HTMLDivElement, SkeletonProps>(
102
103
  )}
103
104
  style={{ ...style, width, height }}
104
105
  aria-hidden
105
- {...{ inert: "true" }}
106
+ {...{ inert: inertPropValue(true) }}
106
107
  ref={ref as any}
107
108
  {...(rest as any)}
108
109
  >
@@ -1,5 +1,5 @@
1
1
  import * as React from "react";
2
- import { useCallback, useEffect, useState } from "react";
2
+ import { useCallback, useEffect, useState, version } from "react";
3
3
 
4
4
  /**
5
5
  * Merges an array of refs into a single memoized callback ref or `null`.
@@ -108,3 +108,16 @@ function releaseFocusTrap(inertElements: Iterable<HTMLElement>) {
108
108
  el.removeAttribute("inert");
109
109
  }
110
110
  }
111
+
112
+ /**
113
+ * React 19 supports inert prop
114
+ * React 18 needs inert to be a string
115
+ */
116
+ const inertBooleanSupported: boolean = Number(version.split(".")[0]) >= 19;
117
+
118
+ /**
119
+ * Returns the inert prop value based on the React version.
120
+ */
121
+ export const inertPropValue: (x: boolean) => boolean | "" | undefined = inertBooleanSupported
122
+ ? (x: boolean): boolean => x
123
+ : (x: boolean): "" | undefined => (x ? "" : undefined);
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/accordion/accordion-content.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { forwardRef, useContext } from \"react\";\nimport { clsx } from \"@postenbring/hedwig-css/typed-classname\";\nimport { AccordionItemContext } from \"./context\";\n\nexport interface AccordionContentProps extends React.HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n}\n\nexport const AccordionContent = forwardRef<HTMLDivElement, AccordionContentProps>(\n ({ children, className, ...rest }, ref) => {\n const context = useContext(AccordionItemContext);\n if (context === null) {\n return null;\n }\n return (\n <div\n id={context.contentId}\n data-state={context.open ? \"open\" : \"closed\"}\n {...{ inert: context.open ? undefined : \"true\" }}\n className={clsx(\"hds-accordion-item-content\", className as undefined)}\n ref={ref}\n {...rest}\n >\n <div className={clsx(\"hds-accordion-item-content-inner\")}>{children}</div>\n </div>\n );\n },\n);\n\nAccordionContent.displayName = \"Accordion.Content\";\n"],"mappings":";;;;;;;;;;AACA,SAAS,YAAY,kBAAkB;AACvC,SAAS,YAAY;AAsBb;AAfD,IAAM,mBAAmB;AAAA,EAC9B,CAAC,IAAkC,QAAQ;AAA1C,iBAAE,YAAU,UAVf,IAUG,IAA0B,iBAA1B,IAA0B,CAAxB,YAAU;AACX,UAAM,UAAU,WAAW,oBAAoB;AAC/C,QAAI,YAAY,MAAM;AACpB,aAAO;AAAA,IACT;AACA,WACE;AAAA,MAAC;AAAA;AAAA,QACC,IAAI,QAAQ;AAAA,QACZ,cAAY,QAAQ,OAAO,SAAS;AAAA,SAChC,EAAE,OAAO,QAAQ,OAAO,SAAY,OAAO,IAHhD;AAAA,QAIC,WAAW,KAAK,8BAA8B,SAAsB;AAAA,QACpE;AAAA,UACI,OANL;AAAA,QAQC,8BAAC,SAAI,WAAW,KAAK,kCAAkC,GAAI,UAAS;AAAA;AAAA,IACtE;AAAA,EAEJ;AACF;AAEA,iBAAiB,cAAc;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/form/select/select.tsx"],"sourcesContent":["import { forwardRef, type ReactNode , type SelectHTMLAttributes } from \"react\";\nimport { clsx } from \"@postenbring/hedwig-css/typed-classname\";\nimport { InputGroup } from \"../input-group\";\nimport type { InputGroupProps } from \"../input-group\";\n\nexport type SelectProps = Omit<\n InputGroupProps & SelectHTMLAttributes<HTMLSelectElement>,\n \"readOnly\" | \"children\"\n> & { children: ReactNode };\n\nexport const Select = forwardRef<HTMLSelectElement, SelectProps>(function Select(\n { className, variant, errorMessage, labelProps, label, id, style, disabled, children, ...rest },\n ref,\n) {\n return (\n <InputGroup\n className={clsx(\"hds-select\", className as undefined)}\n disabled={disabled}\n errorMessage={errorMessage}\n id={id}\n label={label}\n labelProps={labelProps}\n style={style}\n variant={variant}\n >\n <select {...rest} disabled={disabled} ref={ref}>\n {children}\n </select>\n </InputGroup>\n );\n});\n\nSelect.displayName = \"Select\";\n"],"mappings":";;;;;;;;;;AAAA,SAAS,kBAA8D;AACvE,SAAS,YAAY;AAwBf;AAfC,IAAM,SAAS,WAA2C,SAASA,QACxE,IACA,KACA;AAFA,eAAE,aAAW,SAAS,cAAc,YAAY,OAAO,IAAI,OAAO,UAAU,SAX9E,IAWE,IAAyF,iBAAzF,IAAyF,CAAvF,aAAW,WAAS,gBAAc,cAAY,SAAO,MAAI,SAAO,YAAU;AAG5E,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,KAAK,cAAc,SAAsB;AAAA,MACpD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEA,8BAAC,2CAAW,OAAX,EAAiB,UAAoB,KACnC,WACH;AAAA;AAAA,EACF;AAEJ,CAAC;AAED,OAAO,cAAc;","names":["Select"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/navbar/navbar-expandable-menu.tsx"],"sourcesContent":["import { createContext, useContext, forwardRef, useState, useEffect, useId } from \"react\";\nimport { clsx } from \"@postenbring/hedwig-css/typed-classname\";\nimport { focusTrap } from \"../utils/utils\";\nimport { CloseIcon, MenuIcon } from \"./icons\";\n\ninterface ExpandableMenuContextProps {\n open: boolean;\n setOpen: (open: boolean) => void;\n contentId: string;\n}\n\nconst ExpandableMenuContext = createContext<ExpandableMenuContextProps | null>(null);\nexport const useNavbarExpendableMenuContext = () => {\n const value = useContext(ExpandableMenuContext);\n if (value === null) {\n throw new Error(\"useNavbarExpendableMenuContext must be used within a Navbar.ExpandableMenu\");\n }\n return value;\n};\n\nexport interface NavbarExpandableMenuProps {\n children: React.ReactNode;\n}\n\n/**\n * Expandable Menu Provider\n * Handles scroll and focus locking,\n * as well as scrolling the user to the top of the page.\n *\n * If we want a sticky header in the future the scrolling should be configurable\n */\nexport function NavbarExpandableMenu({ children }: NavbarExpandableMenuProps) {\n const contentId = useId();\n const [open, setOpen] = useState(false);\n\n useEffect(() => {\n if (open) {\n window.scrollTo(0, 0);\n document.body.classList.add(clsx(\"hds-navbar-scroll-lock\"));\n const releaseFocusTrap = focusTrap(\n document.getElementsByClassName(clsx(\"hds-navbar\"))[0] as HTMLElement,\n );\n\n return () => {\n document.body.classList.remove(clsx(\"hds-navbar-scroll-lock\"));\n releaseFocusTrap();\n };\n }\n }, [open]);\n\n return (\n <ExpandableMenuContext.Provider value={{ contentId, open, setOpen }}>\n {children}\n </ExpandableMenuContext.Provider>\n );\n}\n\nNavbarExpandableMenu.displayName = \"NavbarExpandableMenu\";\n\n/**\n * Trigger\n */\nexport interface NavbarExpandableMenuTriggerProps\n extends Omit<React.HTMLAttributes<HTMLButtonElement>, \"children\"> {\n whenClosedText: React.ReactNode;\n whenClosedHelperTitle?: string;\n\n whenOpenText: React.ReactNode;\n whenOpenHelperTitle?: string;\n}\n\nexport const NavbarExpandableMenuTrigger = forwardRef<\n HTMLButtonElement,\n NavbarExpandableMenuTriggerProps\n>(\n (\n {\n whenClosedText,\n whenClosedHelperTitle,\n\n whenOpenText,\n whenOpenHelperTitle,\n\n style,\n className,\n ...rest\n },\n ref,\n ) => {\n const { contentId, open, setOpen } = useNavbarExpendableMenuContext();\n\n function toggleOpen() {\n setOpen(!open);\n }\n\n return (\n <button\n aria-expanded={open}\n aria-controls={contentId}\n className={clsx(\n \"hds-navbar__item\",\n className as undefined,\n open ? \"hds-navbar__item--open\" : \"hds-navbar__item--closed\",\n )}\n onClick={toggleOpen}\n ref={ref}\n title={open ? whenOpenHelperTitle : whenClosedHelperTitle}\n type=\"button\"\n style={{ position: \"relative\", ...style }}\n {...rest}\n >\n <span className=\"hds-navbar__item-responsive-text\">\n <span aria-hidden={!open} className={clsx(\"hds-navbar__item-whenopentext\")}>\n {whenOpenText}\n </span>\n <span aria-hidden={open} className={clsx(\"hds-navbar__item-whenclosedtext\")}>\n {whenClosedText}\n </span>\n </span>\n <span style={{ width: 32, height: 32 }}>{open ? <CloseIcon /> : <MenuIcon />}</span>\n </button>\n );\n },\n);\nNavbarExpandableMenuTrigger.displayName = \"Navbar.ExpandableMenuTrigger\";\n\n/**\n * Content\n */\nexport interface NavbarExpandableMenuContentProps {\n children: React.ReactNode;\n className?: string;\n}\n\nexport const NavbarExpandableMenuContent = forwardRef<\n HTMLDivElement,\n NavbarExpandableMenuContentProps\n>(({ children, className, ...rest }, ref) => {\n const { contentId, open } = useNavbarExpendableMenuContext();\n return (\n <section\n {...rest}\n id={contentId}\n className={clsx(\"hds-navbar__expandable-menu-content\", className as undefined)}\n data-state={open ? \"open\" : \"closed\"}\n {...{ inert: open ? undefined : \"true\" }}\n ref={ref}\n >\n <div className={clsx(\"hds-navbar__expandable-menu-content-inner\")}>{children}</div>\n </section>\n );\n});\nNavbarExpandableMenuContent.displayName = \"Navbar.ExpandableMenuContent\";\n"],"mappings":";;;;;;;;;;;;;;AAAA,SAAS,eAAe,YAAY,YAAY,UAAU,WAAW,aAAa;AAClF,SAAS,YAAY;AAkDjB,cA4DI,YA5DJ;AAxCJ,IAAM,wBAAwB,cAAiD,IAAI;AAC5E,IAAM,iCAAiC,MAAM;AAClD,QAAM,QAAQ,WAAW,qBAAqB;AAC9C,MAAI,UAAU,MAAM;AAClB,UAAM,IAAI,MAAM,4EAA4E;AAAA,EAC9F;AACA,SAAO;AACT;AAaO,SAAS,qBAAqB,EAAE,SAAS,GAA8B;AAC5E,QAAM,YAAY,MAAM;AACxB,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,KAAK;AAEtC,YAAU,MAAM;AACd,QAAI,MAAM;AACR,aAAO,SAAS,GAAG,CAAC;AACpB,eAAS,KAAK,UAAU,IAAI,KAAK,wBAAwB,CAAC;AAC1D,YAAM,mBAAmB;AAAA,QACvB,SAAS,uBAAuB,KAAK,YAAY,CAAC,EAAE,CAAC;AAAA,MACvD;AAEA,aAAO,MAAM;AACX,iBAAS,KAAK,UAAU,OAAO,KAAK,wBAAwB,CAAC;AAC7D,yBAAiB;AAAA,MACnB;AAAA,IACF;AAAA,EACF,GAAG,CAAC,IAAI,CAAC;AAET,SACE,oBAAC,sBAAsB,UAAtB,EAA+B,OAAO,EAAE,WAAW,MAAM,QAAQ,GAC/D,UACH;AAEJ;AAEA,qBAAqB,cAAc;AAc5B,IAAM,8BAA8B;AAAA,EAIzC,CACE,IAWA,QACG;AAZH,iBACE;AAAA;AAAA,MACA;AAAA,MAEA;AAAA,MACA;AAAA,MAEA;AAAA,MACA;AAAA,IApFN,IA4EI,IASK,iBATL,IASK;AAAA,MARH;AAAA,MACA;AAAA,MAEA;AAAA,MACA;AAAA,MAEA;AAAA,MACA;AAAA;AAKF,UAAM,EAAE,WAAW,MAAM,QAAQ,IAAI,+BAA+B;AAEpE,aAAS,aAAa;AACpB,cAAQ,CAAC,IAAI;AAAA,IACf;AAEA,WACE;AAAA,MAAC;AAAA;AAAA,QACC,iBAAe;AAAA,QACf,iBAAe;AAAA,QACf,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA,OAAO,2BAA2B;AAAA,QACpC;AAAA,QACA,SAAS;AAAA,QACT;AAAA,QACA,OAAO,OAAO,sBAAsB;AAAA,QACpC,MAAK;AAAA,QACL,OAAO,iBAAE,UAAU,cAAe;AAAA,SAC9B,OAbL;AAAA,QAeC;AAAA,+BAAC,UAAK,WAAU,oCACd;AAAA,gCAAC,UAAK,eAAa,CAAC,MAAM,WAAW,KAAK,+BAA+B,GACtE,wBACH;AAAA,YACA,oBAAC,UAAK,eAAa,MAAM,WAAW,KAAK,iCAAiC,GACvE,0BACH;AAAA,aACF;AAAA,UACA,oBAAC,UAAK,OAAO,EAAE,OAAO,IAAI,QAAQ,GAAG,GAAI,iBAAO,oBAAC,aAAU,IAAK,oBAAC,YAAS,GAAG;AAAA;AAAA;AAAA,IAC/E;AAAA,EAEJ;AACF;AACA,4BAA4B,cAAc;AAUnC,IAAM,8BAA8B,WAGzC,CAAC,IAAkC,QAAQ;AAA1C,eAAE,YAAU,UAzIf,IAyIG,IAA0B,iBAA1B,IAA0B,CAAxB,YAAU;AACb,QAAM,EAAE,WAAW,KAAK,IAAI,+BAA+B;AAC3D,SACE;AAAA,IAAC;AAAA,kEACK,OADL;AAAA,MAEC,IAAI;AAAA,MACJ,WAAW,KAAK,uCAAuC,SAAsB;AAAA,MAC7E,cAAY,OAAO,SAAS;AAAA,QACxB,EAAE,OAAO,OAAO,SAAY,OAAO,IALxC;AAAA,MAMC;AAAA,MAEA,8BAAC,SAAI,WAAW,KAAK,2CAA2C,GAAI,UAAS;AAAA;AAAA,EAC/E;AAEJ,CAAC;AACD,4BAA4B,cAAc;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/form/date-picker/date-picker.tsx"],"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"],"mappings":";;;;;;;;;;;;;AAAA,SAAS,YAAY,cAAwC;AAC7D,SAAS,YAAY;AA4Db,mBACE,KADF;AAhCD,IAAM,aAAa,WAA8C,SAASA,YAC/E,IAaA,KACA;AAdA,eACE;AAAA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,sBAAsB;AAAA,EAxC1B,IA8BE,IAWK,iBAXL,IAWK;AAAA,IAVH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAKF,QAAM,WAAW,OAAyB,IAAI;AAC9C,QAAM,YAAY,aAAa,CAAC,UAAU,GAAG,CAAC;AAE9C,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,KAAK,mBAAmB,SAAsB;AAAA,MACzD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEC,WAAC,eACA,iCACE;AAAA;AAAA,UAAC;AAAA,0DACK,OACA,aAFL;AAAA,YAGC;AAAA,YACA;AAAA,YACA,KAAK;AAAA,YACL,MAAK;AAAA;AAAA,QACP;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,WAAW,KAAK,kCAAkC;AAAA,YAClD,MAAK;AAAA,YACL,OAAO;AAAA,YACP,SAAS,MAAM;AA1E3B,kBAAAC;AA2Ec,eAAAA,MAAA,SAAS,YAAT,gBAAAA,IAAkB;AAAA,YACpB;AAAA;AAAA,QACF;AAAA,SACF;AAAA;AAAA,EAEJ;AAEJ,CAAC;AAED,WAAW,cAAc;","names":["DatePicker","_a"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/utils.ts"],"sourcesContent":["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":";AAAA,YAAY,WAAW;AACvB,SAAS,aAAa,WAAW,gBAAgB;AAM1C,SAAS,aACd,MACoC;AACpC,SAAa,cAAQ,MAAM;AACzB,QAAI,KAAK,MAAM,CAAC,QAAQ,QAAQ,IAAI,GAAG;AACrC,aAAO;AAAA,IACT;AAEA,WAAO,CAAC,UAAU;AAChB,WAAK,QAAQ,CAAC,QAAQ;AACpB,YAAI,OAAO,QAAQ,YAAY;AAC7B,cAAI,KAAK;AAAA,QACX,WAAW,QAAQ,MAAM;AACvB,UAAC,IAAgD,UAAU;AAAA,QAC7D;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EAEF,GAAG,IAAI;AACT;AAEO,SAAS,UACd,KACmC;AACnC,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAiB,CAAC;AAC5C,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAiB,CAAC;AAC9C,QAAM,eAAe,YAAY,MAAM;AAjCzC;AAkCI,SAAI,2BAAK,aAAY,MAAM;AACzB,gBAAS,sCAAK,YAAL,mBAAc,gBAAd,YAA6B,CAAC;AACvC,iBAAU,sCAAK,YAAL,mBAAc,iBAAd,YAA8B,CAAC;AAAA,IAC3C;AAAA,EACF,GAAG,CAAC,GAAG,CAAC;AACR,YAAU,MAAM;AACd,WAAO,iBAAiB,QAAQ,YAAY;AAC5C,WAAO,iBAAiB,UAAU,YAAY;AAC9C,WAAO,MAAM;AACX,aAAO,oBAAoB,QAAQ,YAAY;AAC/C,aAAO,oBAAoB,UAAU,YAAY;AAAA,IACnD;AAAA,EACF,GAAG,CAAC,KAAK,YAAY,CAAC;AACtB,YAAU,MAAM;AACd,iBAAa;AAAA,EAEf,GAAG,CAAC,CAAC;AACL,SAAO,EAAE,OAAO,OAAO;AACzB;AAEA,SAAS,YAAY;AAEnB,SAAO,MAAM;AAAA,EAAC;AAChB;AAEO,SAAS,cAAc;AAC5B,SAAa;AAAA,IACX;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AACF;AAaO,SAAS,UAAU,SAAsB;AA9EhD;AAgFE,MAAI,YAAY,SAAS,KAAM,QAAO,MAAM;AAAA,EAAC;AAE7C,MAAI,gBAA+B,CAAC;AACpC,WAAS,KAAyB,SAAS,IAAI,KAAK,GAAG,eAAe;AACpE,QAAI,OAAO,SAAS,KAAM;AAE1B,eAAW,YAAW,cAAG,kBAAH,mBAAkB,aAAlB,YAA8B,CAAC,GAAG;AACtD,UAAI,YAAY,GAAI;AACpB,UAAI,EAAE,mBAAmB,aAAc;AACvC,UAAI,QAAQ,aAAa,OAAO,EAAG;AAEnC,cAAQ,aAAa,SAAS,MAAM;AACpC,oBAAc,KAAK,OAAO;AAAA,IAC5B;AAAA,EACF;AAEA,SAAO,MAAM;AACX,qBAAiB,aAAa;AAC9B,oBAAgB,CAAC;AAAA,EACnB;AACF;AAKA,SAAS,iBAAiB,eAAsC;AAC9D,aAAW,MAAM,eAAe;AAC9B,OAAG,gBAAgB,OAAO;AAAA,EAC5B;AACF;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/form/input/input.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport type { InputHTMLAttributes } from \"react\";\nimport { clsx } from \"@postenbring/hedwig-css/typed-classname\";\nimport { InputGroup } from \"../input-group\";\nimport type { InputGroupProps } from \"../input-group\";\n\nexport type InputProps = Omit<InputGroupProps & InputHTMLAttributes<HTMLInputElement>, \"children\">;\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(function Input(\n { className, variant, errorMessage, labelProps, label, id, style, disabled, readOnly, ...rest },\n ref,\n) {\n return (\n <InputGroup\n className={clsx(\"hds-input\", 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 <input {...rest} disabled={disabled} readOnly={readOnly} ref={ref} />\n </InputGroup>\n );\n});\n\nInput.displayName = \"Input\";\n"],"mappings":";;;;;;;;;;AAAA,SAAS,kBAAkB;AAE3B,SAAS,YAAY;AAsBf;AAhBC,IAAM,QAAQ,WAAyC,SAASA,OACrE,IACA,KACA;AAFA,eAAE,aAAW,SAAS,cAAc,YAAY,OAAO,IAAI,OAAO,UAAU,SAT9E,IASE,IAAyF,iBAAzF,IAAyF,CAAvF,aAAW,WAAS,gBAAc,cAAY,SAAO,MAAI,SAAO,YAAU;AAG5E,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,KAAK,aAAa,SAAsB;AAAA,MACnD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEA,8BAAC,0CAAU,OAAV,EAAgB,UAAoB,UAAoB,MAAU;AAAA;AAAA,EACrE;AAEJ,CAAC;AAED,MAAM,cAAc;","names":["Input"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/form/textarea/textarea.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport type { TextareaHTMLAttributes } from \"react\";\nimport { clsx } from \"@postenbring/hedwig-css/typed-classname\";\nimport { InputGroup } from \"../input-group\";\nimport type { InputGroupProps } from \"../input-group\";\n\nexport type TextareaProps = Omit<\n InputGroupProps & TextareaHTMLAttributes<HTMLTextAreaElement>,\n \"children\"\n>;\n\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(function Textarea(\n { className, variant, errorMessage, labelProps, label, id, style, disabled, readOnly, ...rest },\n ref,\n) {\n return (\n <InputGroup\n className={clsx(\"hds-textarea\", 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 <textarea {...rest} disabled={disabled} readOnly={readOnly} ref={ref} />\n </InputGroup>\n );\n});\n\nTextarea.displayName = \"Textarea\";\n"],"mappings":";;;;;;;;;;AAAA,SAAS,kBAAkB;AAE3B,SAAS,YAAY;AAyBf;AAhBC,IAAM,WAAW,WAA+C,SAASA,UAC9E,IACA,KACA;AAFA,eAAE,aAAW,SAAS,cAAc,YAAY,OAAO,IAAI,OAAO,UAAU,SAZ9E,IAYE,IAAyF,iBAAzF,IAAyF,CAAvF,aAAW,WAAS,gBAAc,cAAY,SAAO,MAAI,SAAO,YAAU;AAG5E,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,KAAK,gBAAgB,SAAsB;AAAA,MACtD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEA,8BAAC,6CAAa,OAAb,EAAmB,UAAoB,UAAoB,MAAU;AAAA;AAAA,EACxE;AAEJ,CAAC;AAED,SAAS,cAAc;","names":["Textarea"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/skeleton/skeleton.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unsafe-assignment -- Typings for the differnt html elements */\n/* eslint-disable @typescript-eslint/no-explicit-any -- Typings for the differnt html elements */\n\nimport { clsx } from \"@postenbring/hedwig-css/typed-classname\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { forwardRef } from \"react\";\n\ninterface DimensionsFromWidthAndHeight {\n height?: number | string;\n width?: number | string;\n}\n\ninterface SkeletonPropsInner extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * The visual style of the Skeleton\n */\n variant?: \"text\" | \"circle\" | \"rectangle\" | \"rounded\";\n\n /**\n * Whether to show animation or not\n * In the future the animation effect might become configurable\n *\n * default true\n */\n animation?: boolean;\n\n children?: React.ReactNode;\n\n /**\n * Change the default rendered element for the one passed as a child, merging their props and behavior.\n *\n * @default false\n */\n asChild?: boolean;\n\n /**\n * Convienence prop to change the rendered element.\n *\n * Use {@link SkeletonProps.asChild} if you need more control of the rendered element.\n */\n as?: \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"span\" | \"div\" | \"label\" | \"p\";\n}\n\nexport type SkeletonProps = SkeletonPropsInner & DimensionsFromWidthAndHeight;\n\n/**\n * Make skeleton loading states as placeholders for your content while waiting for data to load.\n *\n * **Note**\n *\n * Consider if this is really needed. The best experience is to avoid loading states altogether.\n * If your loading takes under 1 second, it better to not show anything at all.\n *\n * - Make your backend faster\n * - Preload/prefetch data\n * - Avoid data loading waterfalls\n * - Use optimistic ui when doing mutations\n *\n * **Usage**\n *\n * ```tsx\n * <Skeleton variant=\"circle\" width=\"2rem\" height=\"2rem\" />\n * <Skeleton variant=\"text\" />\n * <Skeleton variant=\"text\" width=\"80%\" />\n * <Skeleton variant=\"text\">Uses content to determine width</Skeleton>\n * <Skeleton variant=\"rectangle\" width=\"300px\" height=\"400px\" />\n * ```\n *\n * Remember to set `aria-hidden` on top level components you use that are not the `Skeleton` component.\n *\n * The `Skeleton` component does this for it self, but if you are using other components higher up in the tree, it might cause problems with screen readers\n *\n * **References**\n * - https://aksel.nav.no/komponenter/core/skeleton\n * - https://chakra-ui.com/docs/components/skeleton\n * - https://mui.com/material-ui/react-skeleton/\n */\nexport const Skeleton = forwardRef<HTMLDivElement, SkeletonProps>(\n (\n {\n as: Tag = \"div\",\n asChild,\n children,\n animation = true,\n variant = \"text\",\n width,\n height,\n className,\n style,\n ...rest\n },\n ref,\n ) => {\n const Component = asChild ? Slot : Tag;\n return (\n <Component\n className={clsx(\n \"hds-skeleton\",\n `hds-skeleton--${variant}`,\n !animation && `hds-skeleton--no-animation`,\n className as undefined,\n )}\n style={{ ...style, width, height }}\n aria-hidden\n {...{ inert: \"true\" }}\n ref={ref as any}\n {...(rest as any)}\n >\n {children}\n </Component>\n );\n },\n);\nSkeleton.displayName = \"Skeleton\";\n"],"mappings":";;;;;;;AAGA,SAAS,YAAY;AACrB,SAAS,YAAY;AACrB,SAAS,kBAAkB;AA0FrB;AAlBC,IAAM,WAAW;AAAA,EACtB,CACE,IAYA,QACG;AAbH,iBACE;AAAA,UAAI,MAAM;AAAA,MACV;AAAA,MACA;AAAA,MACA,YAAY;AAAA,MACZ,UAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAxFN,IA+EI,IAUK,iBAVL,IAUK;AAAA,MATH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAKF,UAAM,YAAY,UAAU,OAAO;AACnC,WACE;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACA,iBAAiB,OAAO;AAAA,UACxB,CAAC,aAAa;AAAA,UACd;AAAA,QACF;AAAA,QACA,OAAO,iCAAK,QAAL,EAAY,OAAO,OAAO;AAAA,QACjC,eAAW;AAAA,SACP,EAAE,OAAO,OAAO,IATrB;AAAA,QAUC;AAAA,UACK,OAXN;AAAA,QAaE;AAAA;AAAA,IACH;AAAA,EAEJ;AACF;AACA,SAAS,cAAc;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/form/input-group/input-group.tsx"],"sourcesContent":["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"],"mappings":";;;;;;;;;;AAAA,SAAS,OAAO,YAAY,UAAU,gBAAgB,oBAAoB;AAE1E,SAAS,YAAY;AA2EjB,SAaE,KAbF;AA9CG,IAAM,aAAa,WAA4C,SAASA,YAC7E,IAcA,KACA;AAfA,eAOc;AAAA,IANZ;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA,YAAY,KAA+C,CAAC;AAAA,EAvChE,IAgCE,IAOc,SAAE,aAAW,eAvC7B,IAuCgB,IAAgC,uBAAhC,IAAgC,CAA9B,eAPhB,SAQE;AAAA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EA3CJ,IAgCE,IAYK,iBAZL,IAYK;AAAA,IAXH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAKF,QAAM,iBAAiB,MAAM;AAC7B,QAAM,UAAU,MAAM;AAEtB,QAAM,cAAc,MAAM;AAnD5B,QAAAC;AAoDI,UAAM,aAAyB;AAAA,MAC7B,oBAAoB,eAAe,iBAAiB;AAAA,MACpD,gBAAgB,eAAe,OAAO;AAAA,MACtC,IAAI,kBAAM;AAAA,MACV,WAAW,KAAK,wBAAwB;AAAA,IAC1C;AAEA,QAAI,OAAO,aAAa,YAAY;AAClC,aAAO,SAAS,UAAU;AAAA,IAC5B;AAEA,UAAM,QAAmB,SAAS,QAAQ,QAAQ,EAAE,CAAC;AAErD,QAAI,CAAC,eAA2B,KAAK,GAAG;AACtC;AAAA,IACF;AAEA,WAAO,aAAyB,OAAO,gDAClC,aACA,MAAM,QAF4B;AAAA,MAGrC,WAAW,GAAG,WAAW,SAAS,KAAIA,MAAA,MAAM,MAAM,cAAZ,OAAAA,MAAyB,EAAE;AAAA,IACnE,EAAC;AAAA,EACH;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,UACE,CAAC,oBAAoB,OAAO,EAAE,GAAG;AAAA,UACjC,0BAA0B;AAAA,QAC5B;AAAA,QACA;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,OACI,OAXL;AAAA,MAaC;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,WAAW,KAAK,0BAA0B,cAA2B;AAAA,aACjE,aAFL;AAAA,YAGC,SAAS,kBAAM;AAAA,YAEd;AAAA;AAAA,QACH;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,WAAW,KAAK,gCAAgC;AAAA,YAChD,iBAAe;AAAA,YACf,iBAAe;AAAA,YAEd,sBAAY;AAAA;AAAA,QACf;AAAA,QACA,oBAAC,6CAAa,IAAI,kBAAoB,oBAArC,EACE,yBACH;AAAA;AAAA;AAAA,EACF;AAEJ,CAAC;","names":["InputGroup","_a"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/form/error-summary/error-summary.tsx"],"sourcesContent":["import { forwardRef, useEffect, useRef } from \"react\";\nimport { Message, type MessageProps, type MessageTitleProps } from \"../../message\";\nimport { UnorderedList, type ListProps } from \"../../list\";\nimport { Link } from \"../../link\";\nimport { useMergeRefs } from \"../../utils\";\nimport { focusWithLegendOrLabelInViewport } from \"./focus\";\n\ninterface ErrorSummaryHeadingPropsAutoFocus {\n /**\n * The heading will be focused when the component mounts\n *\n * On following errornous form submissions you should manually focus the heading\n * e.g. by passing a ref and calling `ref.current.focus()`\n *\n * @default true\n */\n autoFocus?: boolean;\n}\n\ninterface ErrorSummaryHeadingPropsAs {\n /**\n * A heading level must be selected, or optionally opting out for a different element\n *\n * Use {@link ErrorSummaryHeadingPropsAsChild.asChild} if you need more control of the rendered element.\n */\n as: \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"span\" | \"div\" | \"label\" | \"p\";\n asChild?: never;\n}\n\ninterface ErrorSummaryHeadingPropsAsChild {\n /**\n * Change the default rendered element for the one passed as a child, merging their props and behavior.\n */\n asChild: true;\n as?: never;\n}\n\nexport type ErrorSummaryHeadingProps = MessageTitleProps &\n ErrorSummaryHeadingPropsAutoFocus &\n (ErrorSummaryHeadingPropsAs | ErrorSummaryHeadingPropsAsChild);\n\nexport const ErrorSummaryHeading = forwardRef<\n HTMLParagraphElement,\n ErrorSummaryHeadingProps & (ErrorSummaryHeadingPropsAs | ErrorSummaryHeadingPropsAsChild)\n>(({ children, as: Tag, autoFocus = true, ...rest }, ref) => {\n const focusRef = useRef<HTMLElement>(null);\n const mergedRef = useMergeRefs([focusRef, ref]);\n\n useEffect(() => {\n /**\n * Hack: Safari 18 on mac at the time of writing\n * does not correctly focus it with VoiceOver without the timeout\n */\n setTimeout(() => {\n if (focusRef.current && autoFocus) {\n focusRef.current.focus();\n }\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps -- Only on initial render\n }, []);\n\n return (\n <Message.Title ref={mergedRef} tabIndex={-1} asChild {...rest}>\n {Tag ? <Tag>{children}</Tag> : children}\n </Message.Title>\n );\n});\nErrorSummaryHeading.displayName = \"ErrorSummary.Heading\";\n\nexport interface ErrorSummaryListProps extends ListProps {\n /**\n * Sets the size of the items (font)\n *\n * @default \"small\"\n */\n size?: ListProps[\"size\"];\n}\nexport const ErrorSummaryList = forwardRef<HTMLUListElement, ErrorSummaryListProps>(\n ({ children, style: _style, size = \"small\", ...rest }, ref) => {\n const style = {\n // Match the link `solid` style, which black underline\n \"--_hds-list-marker-color\": \"var(--hds-ui-colors-black)\",\n ..._style,\n };\n return (\n <Message.Description asChild>\n <UnorderedList size={size} ref={ref} style={style} {...rest}>\n {children}\n </UnorderedList>\n </Message.Description>\n );\n },\n);\nErrorSummaryList.displayName = \"ErrorSummary.List\";\n\nexport interface ErrorSummaryItemProps extends React.HTMLAttributes<HTMLLIElement> {\n /**\n * A hash link to the element that the error message refers to\n *\n * Must start with \"#\" as it's passed to the `href` attribute of an anchor element\n *\n * @example \"#email\"\n */\n href: `#${string}`;\n\n /**\n * Extra props to pass to the link element\n */\n linkProps?: React.AnchorHTMLAttributes<HTMLAnchorElement>;\n}\nexport const ErrorSummaryItem = forwardRef<HTMLLIElement, ErrorSummaryItemProps>(\n ({ children, href, linkProps, ...rest }, ref) => {\n function onClick(e: React.MouseEvent<HTMLAnchorElement>) {\n linkProps?.onClick?.(e);\n if (focusWithLegendOrLabelInViewport(href.replace(\"#\", \"\"))) {\n e.preventDefault();\n }\n }\n\n return (\n <li ref={ref} {...rest}>\n <Link size=\"small\" href={href} variant=\"solid\" {...linkProps} onClick={onClick}>\n {children}\n </Link>\n </li>\n );\n },\n);\nErrorSummaryItem.displayName = \"ErrorSummary.Item\";\n\nexport type ErrorSummaryProps = Omit<MessageProps, \"variant\" | \"icon\" | \"iconClassName\">;\n\nexport const ErrorSummary = forwardRef<HTMLDivElement, ErrorSummaryProps>(\n ({ children, ...rest }, ref) => {\n return (\n <Message variant=\"warning\" ref={ref} {...rest}>\n {children}\n </Message>\n );\n },\n) as ErrorSummaryType;\nErrorSummary.displayName = \"ErrorSummary\";\n\ntype ErrorSummaryType = ReturnType<typeof forwardRef<HTMLDivElement, ErrorSummaryProps>> & {\n Heading: typeof ErrorSummaryHeading;\n List: typeof ErrorSummaryList;\n Item: typeof ErrorSummaryItem;\n};\nErrorSummary.Heading = ErrorSummaryHeading;\nErrorSummary.List = ErrorSummaryList;\nErrorSummary.Item = ErrorSummaryItem;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,YAAY,WAAW,cAAc;AA+DjC;AAtBN,IAAM,sBAAsB,WAGjC,CAAC,IAAkD,QAAQ;AAA1D,eAAE,YAAU,IAAI,KAAK,YAAY,KA5CpC,IA4CG,IAA0C,iBAA1C,IAA0C,CAAxC,YAAU,MAAS;AACtB,QAAM,WAAW,OAAoB,IAAI;AACzC,QAAM,YAAY,aAAa,CAAC,UAAU,GAAG,CAAC;AAE9C,YAAU,MAAM;AAKd,eAAW,MAAM;AACf,UAAI,SAAS,WAAW,WAAW;AACjC,iBAAS,QAAQ,MAAM;AAAA,MACzB;AAAA,IACF,CAAC;AAAA,EAEH,GAAG,CAAC,CAAC;AAEL,SACE,oBAAC,QAAQ,OAAR,+BAAc,KAAK,WAAW,UAAU,IAAI,SAAO,QAAK,OAAxD,EACE,gBAAM,oBAAC,OAAK,UAAS,IAAS,WACjC;AAEJ,CAAC;AACD,oBAAoB,cAAc;AAU3B,IAAM,mBAAmB;AAAA,EAC9B,CAAC,IAAsD,QAAQ;AAA9D,iBAAE,YAAU,OAAO,QAAQ,OAAO,QA9ErC,IA8EG,IAA8C,iBAA9C,IAA8C,CAA5C,YAAU,SAAe;AAC1B,UAAM,QAAQ;AAAA;AAAA,MAEZ,4BAA4B;AAAA,OACzB;AAEL,WACE,oBAAC,QAAQ,aAAR,EAAoB,SAAO,MAC1B,8BAAC,8CAAc,MAAY,KAAU,SAAkB,OAAtD,EACE,WACH,GACF;AAAA,EAEJ;AACF;AACA,iBAAiB,cAAc;AAiBxB,IAAM,mBAAmB;AAAA,EAC9B,CAAC,IAAwC,QAAQ;AAAhD,iBAAE,YAAU,MAAM,UA/GrB,IA+GG,IAAgC,iBAAhC,IAAgC,CAA9B,YAAU,QAAM;AACjB,aAAS,QAAQ,GAAwC;AAhH7D,UAAAA;AAiHM,OAAAA,MAAA,uCAAW,YAAX,gBAAAA,IAAA,gBAAqB;AACrB,UAAI,iCAAiC,KAAK,QAAQ,KAAK,EAAE,CAAC,GAAG;AAC3D,UAAE,eAAe;AAAA,MACnB;AAAA,IACF;AAEA,WACE,oBAAC,qCAAG,OAAc,OAAjB,EACC,8BAAC,qCAAK,MAAK,SAAQ,MAAY,SAAQ,WAAY,YAAlD,EAA6D,SAC3D,WACH,IACF;AAAA,EAEJ;AACF;AACA,iBAAiB,cAAc;AAIxB,IAAM,eAAe;AAAA,EAC1B,CAAC,IAAuB,QAAQ;AAA/B,iBAAE,WArIL,IAqIG,IAAe,iBAAf,IAAe,CAAb;AACD,WACE,oBAAC,wCAAQ,SAAQ,WAAU,OAAc,OAAxC,EACE,WACH;AAAA,EAEJ;AACF;AACA,aAAa,cAAc;AAO3B,aAAa,UAAU;AACvB,aAAa,OAAO;AACpB,aAAa,OAAO;","names":["_a"]}