boreal-ui 0.0.9 → 0.0.10

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 (40) hide show
  1. package/README.md +4 -4
  2. package/dist/core/{TextArea-B88b8dFf.js → TextArea-B0it55lO.js} +6 -2
  3. package/dist/core/TextArea-B0it55lO.js.map +1 -0
  4. package/dist/core/{TextArea-CxJexFDv.cjs → TextArea-Dn9aynnY.cjs} +6 -2
  5. package/dist/core/TextArea-Dn9aynnY.cjs.map +1 -0
  6. package/dist/core/TextArea.cjs.js +1 -1
  7. package/dist/core/TextArea.js +1 -1
  8. package/dist/core/index.cjs.js +1 -1
  9. package/dist/core/index.js +1 -1
  10. package/dist/core/style.css +2 -2
  11. package/dist/next/{FileUpload-jh5iTgY-.cjs → FileUpload-427ZyzCY.cjs} +2 -2
  12. package/dist/next/{FileUpload-jh5iTgY-.cjs.map → FileUpload-427ZyzCY.cjs.map} +1 -1
  13. package/dist/next/{FileUpload-CgPHe6Nn.js → FileUpload-DQhKhtgc.js} +2 -2
  14. package/dist/next/{FileUpload-CgPHe6Nn.js.map → FileUpload-DQhKhtgc.js.map} +1 -1
  15. package/dist/next/FileUpload.cjs.js +1 -1
  16. package/dist/next/FileUpload.js +1 -1
  17. package/dist/next/{FormGroup-DuBfLAMv.js → FormGroup-BMLGXHiz.js} +29 -29
  18. package/dist/next/{FormGroup-DuBfLAMv.js.map → FormGroup-BMLGXHiz.js.map} +1 -1
  19. package/dist/next/{FormGroup-BAtifQGH.cjs → FormGroup-Bstsn_US.cjs} +29 -29
  20. package/dist/next/{FormGroup-BAtifQGH.cjs.map → FormGroup-Bstsn_US.cjs.map} +1 -1
  21. package/dist/next/FormGroup.cjs.js +1 -1
  22. package/dist/next/FormGroup.js +1 -1
  23. package/dist/next/{TextArea-CRo_5ZL_.cjs → TextArea-BfVBd3wl.cjs} +6 -2
  24. package/dist/next/TextArea-BfVBd3wl.cjs.map +1 -0
  25. package/dist/next/{TextArea-W9ekr3ij.js → TextArea-CwR4vrML.js} +6 -2
  26. package/dist/next/TextArea-CwR4vrML.js.map +1 -0
  27. package/dist/next/TextArea.cjs.js +1 -1
  28. package/dist/next/TextArea.js +1 -1
  29. package/dist/next/index.cjs.js +3 -3
  30. package/dist/next/index.js +3 -3
  31. package/dist/next/style.css +46 -45
  32. package/dist/tsconfig.build.tsbuildinfo +1 -1
  33. package/dist/types/components/TextArea/TextArea.types.d.ts +4 -0
  34. package/dist/types/components/TextArea/TextArea.types.d.ts.map +1 -1
  35. package/dist/types/components/TextArea/TextAreaBase.d.ts.map +1 -1
  36. package/package.json +1 -4
  37. package/dist/core/TextArea-B88b8dFf.js.map +0 -1
  38. package/dist/core/TextArea-CxJexFDv.cjs.map +0 -1
  39. package/dist/next/TextArea-CRo_5ZL_.cjs.map +0 -1
  40. package/dist/next/TextArea-W9ekr3ij.js.map +0 -1
package/README.md CHANGED
@@ -81,7 +81,7 @@ Boreal UI lets you define project-wide style defaults (theme, rounding, shadow,
81
81
  **Call the config API**
82
82
 
83
83
  ```ts
84
- import { setBorealStyleConfig } from "boreal-ui/config/boreal-style-config";
84
+ import { setBorealStyleConfig } from "boreal-ui/config/[next|core]";
85
85
 
86
86
  setBorealStyleConfig({
87
87
  defaultTheme: "secondary", // "primary" | "secondary" | "tertiary" | "quaternary"
@@ -95,11 +95,11 @@ Call this once early in your app before rendering any components.
95
95
 
96
96
  These defaults apply globally, but you can override them per component as needed:
97
97
 
98
- ````tsx
98
+ ```tsx
99
99
  <Button theme="secondary" size="large" shadow="strong">
100
100
  Custom Button
101
101
  </Button>
102
- ---
102
+ ```
103
103
 
104
104
  ## Theming & Custom Color Schemes
105
105
 
@@ -133,7 +133,7 @@ export default function RootLayout({ children }) {
133
133
  </html>
134
134
  );
135
135
  }
136
- ````
136
+ ```
137
137
 
138
138
  **Theme property reference:**
139
139
 
@@ -14,6 +14,7 @@ const TextAreaBase = forwardRef(
14
14
  rounding = getDefaultRounding(),
15
15
  shadow = getDefaultShadow(),
16
16
  state = "",
17
+ resizable = true,
17
18
  ariaLabel,
18
19
  ariaDescription,
19
20
  disabled = false,
@@ -59,7 +60,10 @@ const TextAreaBase = forwardRef(
59
60
  autoComplete,
60
61
  readOnly,
61
62
  disabled,
62
- style: { height },
63
+ style: {
64
+ height,
65
+ resize: resizable ? void 0 : "none"
66
+ },
63
67
  className: classMap.textInput,
64
68
  "data-testid": `${testId}-input`,
65
69
  ...props
@@ -122,4 +126,4 @@ TextArea.displayName = "TextArea";
122
126
  export {
123
127
  TextArea as T
124
128
  };
125
- //# sourceMappingURL=TextArea-B88b8dFf.js.map
129
+ //# sourceMappingURL=TextArea-B0it55lO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextArea-B0it55lO.js","sources":["../../src/components/TextArea/TextAreaBase.tsx","../../src/components/TextArea/core/TextArea.tsx"],"sourcesContent":["import { forwardRef, useId, useMemo } from \"react\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { TextAreaProps } from \"./TextArea.types\";\r\nimport { capitalize } from \"../../utils/capitalize\";\r\nimport {\r\n getDefaultRounding,\r\n getDefaultShadow,\r\n getDefaultTheme,\r\n} from \"../../config/boreal-style-config\";\r\n\r\nconst TextAreaBase = forwardRef<\r\n HTMLTextAreaElement,\r\n TextAreaProps & { classMap: Record<string, string> }\r\n>(\r\n (\r\n {\r\n icon: Icon,\r\n placeholder = \"Enter text\",\r\n readOnly = false,\r\n outline = false,\r\n autoComplete = \"off\",\r\n theme = getDefaultTheme(),\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n state = \"\",\r\n resizable = true,\r\n ariaLabel,\r\n ariaDescription,\r\n disabled = false,\r\n height,\r\n classMap,\r\n className = \"\",\r\n \"data-testid\": testId = \"text-area\",\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const id = useId();\r\n const descriptionId = ariaDescription ? `${id}-description` : undefined;\r\n\r\n const wrapperClass = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.textArea,\r\n classMap[theme],\r\n classMap[state],\r\n outline && classMap.outline,\r\n disabled && classMap.disabled,\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n className\r\n ),\r\n [classMap, outline, disabled, rounding, shadow, className]\r\n );\r\n\r\n return (\r\n <div className={wrapperClass} data-testid={testId}>\r\n {Icon && (\r\n <div\r\n className={classMap.iconContainer}\r\n aria-hidden=\"true\"\r\n data-testid={`${testId}-icon`}\r\n >\r\n <Icon />\r\n </div>\r\n )}\r\n\r\n <textarea\r\n ref={ref}\r\n id={id}\r\n placeholder={placeholder}\r\n aria-label={ariaLabel || placeholder}\r\n aria-describedby={descriptionId}\r\n autoComplete={autoComplete}\r\n readOnly={readOnly}\r\n disabled={disabled}\r\n style={{\r\n height,\r\n resize: resizable ? undefined : \"none\",\r\n }}\r\n className={classMap.textInput}\r\n data-testid={`${testId}-input`}\r\n {...props}\r\n />\r\n\r\n <div\r\n className={classMap.customResizeHandle}\r\n aria-hidden=\"true\"\r\n data-testid={`${testId}-resize-handle`}\r\n />\r\n\r\n {ariaDescription && (\r\n <span\r\n id={descriptionId}\r\n className={\"sr_only\"}\r\n data-testid={`${testId}-description`}\r\n >\r\n {ariaDescription}\r\n </span>\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nTextAreaBase.displayName = \"TextAreaBase\";\r\n\r\nexport default TextAreaBase;\r\n","import { forwardRef } from \"react\";\r\nimport TextAreaBase from \"../TextAreaBase\";\r\nimport type { TextAreaProps } from \"../TextArea.types\";\r\nimport \"./TextArea.scss\";\r\n\r\nconst classes = {\r\n textArea: \"textArea\",\r\n textInput: \"textArea_textInput\",\r\n icon: \"textArea_icon\",\r\n\r\n primary: \"textArea_primary\",\r\n secondary: \"textArea_secondary\",\r\n tertiary: \"textArea_tertiary\",\r\n quaternary: \"textArea_quaternary\",\r\n\r\n success: \"textArea_success\",\r\n error: \"textArea_error\",\r\n warning: \"textArea_warning\",\r\n\r\n clear: \"textArea_clear\",\r\n\r\n outline: \"textArea_outline\",\r\n\r\n disabled: \"textArea_disabled\",\r\n\r\n errorMessage: \"textArea_errorMessage\",\r\n iconContainer: \"textArea_iconContainer\",\r\n errorMessageContainer: \"textArea_errorMessageContainer\",\r\n\r\n shadowNone: \"textArea_shadow-None\",\r\n shadowLight: \"textArea_shadow-Light\",\r\n shadowMedium: \"textArea_shadow-Medium\",\r\n shadowStrong: \"textArea_shadow-Strong\",\r\n shadowIntense: \"textArea_shadow-Intense\",\r\n\r\n roundNone: \"textArea_round-None\",\r\n roundSmall: \"textArea_round-Small\",\r\n roundMedium: \"textArea_round-Medium\",\r\n roundLarge: \"textArea_round-Large\",\r\n};\r\n\r\nconst TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(\r\n (props, ref) => {\r\n return <TextAreaBase {...props} ref={ref} classMap={classes} />;\r\n }\r\n);\r\n\r\nTextArea.displayName = \"TextArea\";\r\n\r\nexport default TextArea;\r\n"],"names":[],"mappings":";;;;;AAUA,MAAM,eAAe;AAAA,EAInB,CACE;AAAA,IACE,MAAM;AAAA,IACN,cAAc;AAAA,IACd,WAAW;AAAA,IACX,UAAU;AAAA,IACV,eAAe;AAAA,IACf,QAAQ,gBAAA;AAAA,IACR,WAAW,mBAAA;AAAA,IACX,SAAS,iBAAA;AAAA,IACT,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ,eAAe,SAAS;AAAA,IACxB,GAAG;AAAA,EAAA,GAEL,QACG;AACH,UAAM,KAAK,MAAA;AACX,UAAM,gBAAgB,kBAAkB,GAAG,EAAE,iBAAiB;AAE9D,UAAM,eAAe;AAAA,MACnB,MACE;AAAA,QACE,SAAS;AAAA,QACT,SAAS,KAAK;AAAA,QACd,SAAS,KAAK;AAAA,QACd,WAAW,SAAS;AAAA,QACpB,YAAY,SAAS;AAAA,QACrB,UAAU,SAAS,SAAS,WAAW,MAAM,CAAC,EAAE;AAAA,QAChD,YAAY,SAAS,QAAQ,WAAW,QAAQ,CAAC,EAAE;AAAA,QACnD;AAAA,MAAA;AAAA,MAEJ,CAAC,UAAU,SAAS,UAAU,UAAU,QAAQ,SAAS;AAAA,IAAA;AAG3D,WACE,qBAAC,OAAA,EAAI,WAAW,cAAc,eAAa,QACxC,UAAA;AAAA,MAAA,QACC;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAW,SAAS;AAAA,UACpB,eAAY;AAAA,UACZ,eAAa,GAAG,MAAM;AAAA,UAEtB,8BAAC,MAAA,CAAA,CAAK;AAAA,QAAA;AAAA,MAAA;AAAA,MAIV;AAAA,QAAC;AAAA,QAAA;AAAA,UACC;AAAA,UACA;AAAA,UACA;AAAA,UACA,cAAY,aAAa;AAAA,UACzB,oBAAkB;AAAA,UAClB;AAAA,UACA;AAAA,UACA;AAAA,UACA,OAAO;AAAA,YACL;AAAA,YACA,QAAQ,YAAY,SAAY;AAAA,UAAA;AAAA,UAElC,WAAW,SAAS;AAAA,UACpB,eAAa,GAAG,MAAM;AAAA,UACrB,GAAG;AAAA,QAAA;AAAA,MAAA;AAAA,MAGN;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAW,SAAS;AAAA,UACpB,eAAY;AAAA,UACZ,eAAa,GAAG,MAAM;AAAA,QAAA;AAAA,MAAA;AAAA,MAGvB,mBACC;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,IAAI;AAAA,UACJ,WAAW;AAAA,UACX,eAAa,GAAG,MAAM;AAAA,UAErB,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IACH,GAEJ;AAAA,EAEJ;AACF;AAEA,aAAa,cAAc;ACpG3B,MAAM,UAAU;AAAA,EACd,UAAU;AAAA,EACV,WAAW;AAAA,EACX,MAAM;AAAA,EAEN,SAAS;AAAA,EACT,WAAW;AAAA,EACX,UAAU;AAAA,EACV,YAAY;AAAA,EAEZ,SAAS;AAAA,EACT,OAAO;AAAA,EACP,SAAS;AAAA,EAET,OAAO;AAAA,EAEP,SAAS;AAAA,EAET,UAAU;AAAA,EAEV,cAAc;AAAA,EACd,eAAe;AAAA,EACf,uBAAuB;AAAA,EAEvB,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,cAAc;AAAA,EACd,cAAc;AAAA,EACd,eAAe;AAAA,EAEf,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,YAAY;AACd;AAEA,MAAM,WAAW;AAAA,EACf,CAAC,OAAO,QAAQ;AACd,+BAAQ,cAAA,EAAc,GAAG,OAAO,KAAU,UAAU,SAAS;AAAA,EAC/D;AACF;AAEA,SAAS,cAAc;"}
@@ -15,6 +15,7 @@ const TextAreaBase = React.forwardRef(
15
15
  rounding = borealStyleConfig.getDefaultRounding(),
16
16
  shadow = borealStyleConfig.getDefaultShadow(),
17
17
  state = "",
18
+ resizable = true,
18
19
  ariaLabel,
19
20
  ariaDescription,
20
21
  disabled = false,
@@ -60,7 +61,10 @@ const TextAreaBase = React.forwardRef(
60
61
  autoComplete,
61
62
  readOnly,
62
63
  disabled,
63
- style: { height },
64
+ style: {
65
+ height,
66
+ resize: resizable ? void 0 : "none"
67
+ },
64
68
  className: classMap.textInput,
65
69
  "data-testid": `${testId}-input`,
66
70
  ...props
@@ -121,4 +125,4 @@ const TextArea = React.forwardRef(
121
125
  );
122
126
  TextArea.displayName = "TextArea";
123
127
  exports.TextArea = TextArea;
124
- //# sourceMappingURL=TextArea-CxJexFDv.cjs.map
128
+ //# sourceMappingURL=TextArea-Dn9aynnY.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextArea-Dn9aynnY.cjs","sources":["../../src/components/TextArea/TextAreaBase.tsx","../../src/components/TextArea/core/TextArea.tsx"],"sourcesContent":["import { forwardRef, useId, useMemo } from \"react\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { TextAreaProps } from \"./TextArea.types\";\r\nimport { capitalize } from \"../../utils/capitalize\";\r\nimport {\r\n getDefaultRounding,\r\n getDefaultShadow,\r\n getDefaultTheme,\r\n} from \"../../config/boreal-style-config\";\r\n\r\nconst TextAreaBase = forwardRef<\r\n HTMLTextAreaElement,\r\n TextAreaProps & { classMap: Record<string, string> }\r\n>(\r\n (\r\n {\r\n icon: Icon,\r\n placeholder = \"Enter text\",\r\n readOnly = false,\r\n outline = false,\r\n autoComplete = \"off\",\r\n theme = getDefaultTheme(),\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n state = \"\",\r\n resizable = true,\r\n ariaLabel,\r\n ariaDescription,\r\n disabled = false,\r\n height,\r\n classMap,\r\n className = \"\",\r\n \"data-testid\": testId = \"text-area\",\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const id = useId();\r\n const descriptionId = ariaDescription ? `${id}-description` : undefined;\r\n\r\n const wrapperClass = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.textArea,\r\n classMap[theme],\r\n classMap[state],\r\n outline && classMap.outline,\r\n disabled && classMap.disabled,\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n className\r\n ),\r\n [classMap, outline, disabled, rounding, shadow, className]\r\n );\r\n\r\n return (\r\n <div className={wrapperClass} data-testid={testId}>\r\n {Icon && (\r\n <div\r\n className={classMap.iconContainer}\r\n aria-hidden=\"true\"\r\n data-testid={`${testId}-icon`}\r\n >\r\n <Icon />\r\n </div>\r\n )}\r\n\r\n <textarea\r\n ref={ref}\r\n id={id}\r\n placeholder={placeholder}\r\n aria-label={ariaLabel || placeholder}\r\n aria-describedby={descriptionId}\r\n autoComplete={autoComplete}\r\n readOnly={readOnly}\r\n disabled={disabled}\r\n style={{\r\n height,\r\n resize: resizable ? undefined : \"none\",\r\n }}\r\n className={classMap.textInput}\r\n data-testid={`${testId}-input`}\r\n {...props}\r\n />\r\n\r\n <div\r\n className={classMap.customResizeHandle}\r\n aria-hidden=\"true\"\r\n data-testid={`${testId}-resize-handle`}\r\n />\r\n\r\n {ariaDescription && (\r\n <span\r\n id={descriptionId}\r\n className={\"sr_only\"}\r\n data-testid={`${testId}-description`}\r\n >\r\n {ariaDescription}\r\n </span>\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nTextAreaBase.displayName = \"TextAreaBase\";\r\n\r\nexport default TextAreaBase;\r\n","import { forwardRef } from \"react\";\r\nimport TextAreaBase from \"../TextAreaBase\";\r\nimport type { TextAreaProps } from \"../TextArea.types\";\r\nimport \"./TextArea.scss\";\r\n\r\nconst classes = {\r\n textArea: \"textArea\",\r\n textInput: \"textArea_textInput\",\r\n icon: \"textArea_icon\",\r\n\r\n primary: \"textArea_primary\",\r\n secondary: \"textArea_secondary\",\r\n tertiary: \"textArea_tertiary\",\r\n quaternary: \"textArea_quaternary\",\r\n\r\n success: \"textArea_success\",\r\n error: \"textArea_error\",\r\n warning: \"textArea_warning\",\r\n\r\n clear: \"textArea_clear\",\r\n\r\n outline: \"textArea_outline\",\r\n\r\n disabled: \"textArea_disabled\",\r\n\r\n errorMessage: \"textArea_errorMessage\",\r\n iconContainer: \"textArea_iconContainer\",\r\n errorMessageContainer: \"textArea_errorMessageContainer\",\r\n\r\n shadowNone: \"textArea_shadow-None\",\r\n shadowLight: \"textArea_shadow-Light\",\r\n shadowMedium: \"textArea_shadow-Medium\",\r\n shadowStrong: \"textArea_shadow-Strong\",\r\n shadowIntense: \"textArea_shadow-Intense\",\r\n\r\n roundNone: \"textArea_round-None\",\r\n roundSmall: \"textArea_round-Small\",\r\n roundMedium: \"textArea_round-Medium\",\r\n roundLarge: \"textArea_round-Large\",\r\n};\r\n\r\nconst TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(\r\n (props, ref) => {\r\n return <TextAreaBase {...props} ref={ref} classMap={classes} />;\r\n }\r\n);\r\n\r\nTextArea.displayName = \"TextArea\";\r\n\r\nexport default TextArea;\r\n"],"names":["forwardRef","getDefaultTheme","getDefaultRounding","getDefaultShadow","useId","useMemo","combineClassNames","capitalize","jsxs","jsx"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
- const TextArea = require("./TextArea-CxJexFDv.cjs");
2
+ const TextArea = require("./TextArea-Dn9aynnY.cjs");
3
3
  module.exports = TextArea.TextArea;
4
4
  //# sourceMappingURL=TextArea.cjs.js.map
@@ -1,4 +1,4 @@
1
- import { T } from "./TextArea-B88b8dFf.js";
1
+ import { T } from "./TextArea-B0it55lO.js";
2
2
  export {
3
3
  T as default
4
4
  };
@@ -9,7 +9,7 @@ const Button = require("./Button-wz_We8xU.cjs");
9
9
  const IconButton = require("./IconButton-BxUXK-xn.cjs");
10
10
  const STT = require("./STT-D6L-amjZ.cjs");
11
11
  const TextInput = require("./TextInput-8AbKEfUH.cjs");
12
- const TextArea = require("./TextArea-CxJexFDv.cjs");
12
+ const TextArea = require("./TextArea-Dn9aynnY.cjs");
13
13
  const Select = require("./Select-9F6p9ghR.cjs");
14
14
  const Footer = require("./Footer-B4Owy88y.cjs");
15
15
  const FileUpload = require("./FileUpload-Dv2cvYI2.cjs");
@@ -7,7 +7,7 @@ import { B } from "./Button-DEYbr8xW.js";
7
7
  import { I } from "./IconButton-B6cAP2hY.js";
8
8
  import { S } from "./STT-aXWWubSC.js";
9
9
  import { T as T2 } from "./TextInput-CtI8fsXR.js";
10
- import { T as T3 } from "./TextArea-B88b8dFf.js";
10
+ import { T as T3 } from "./TextArea-B0it55lO.js";
11
11
  import { S as S2 } from "./Select-C4a_4B87.js";
12
12
  import { F, U } from "./Footer-bKgKgU6L.js";
13
13
  import { F as F2 } from "./FileUpload-DxjQ2wnn.js";
@@ -12545,7 +12545,7 @@ a:hover {
12545
12545
  display: flex;
12546
12546
  flex-direction: column;
12547
12547
  margin-bottom: 16px;
12548
- max-width: 400px;
12548
+ width: fit-content;
12549
12549
  }
12550
12550
  .form_group_label {
12551
12551
  color: var(--text-color-primary);
@@ -12622,7 +12622,7 @@ a:hover {
12622
12622
  }
12623
12623
  }
12624
12624
  .form_group_horizontal_input_field {
12625
- width: 100%;
12625
+ width: fit-content;
12626
12626
  flex: 1;
12627
12627
  }
12628
12628
  .form_group_horizontal_input_field_form-error {
@@ -6,7 +6,7 @@ const capitalize = require("./capitalize-DoV-nOmN.cjs");
6
6
  const borealStyleConfig = require("./boreal-style-config-Rr5d5Qts.cjs");
7
7
  const Button = require("./Button-WSFdkLsa.cjs");
8
8
  const IconButton = require("./IconButton-CNzF48hu.cjs");
9
- const FormGroup = require("./FormGroup-BAtifQGH.cjs");
9
+ const FormGroup = require("./FormGroup-Bstsn_US.cjs");
10
10
  const ProgressBar = require("./ProgressBar-Cvf0uNKW.cjs");
11
11
  const FileIcon = (props) => /* @__PURE__ */ require$$2.jsxs(
12
12
  "svg",
@@ -444,4 +444,4 @@ const FileUpload = (props) => {
444
444
  );
445
445
  };
446
446
  exports.FileUpload = FileUpload;
447
- //# sourceMappingURL=FileUpload-jh5iTgY-.cjs.map
447
+ //# sourceMappingURL=FileUpload-427ZyzCY.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"FileUpload-jh5iTgY-.cjs","sources":["../../src/Icons/FileIcon.tsx","../../src/Icons/TrashIcon.tsx","../../src/components/FileUpload/FileUploadBase.tsx","../../src/components/FileUpload/next/FileUpload.tsx"],"sourcesContent":["const FileIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\r\n <svg\r\n width=\"24px\"\r\n height=\"24px\"\r\n viewBox=\"0 0 24 24\"\r\n strokeWidth=\"1.5\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n color=\"currentColor\"\r\n {...props}\r\n >\r\n <path\r\n d=\"M3 20.5V6.5C3 5.67157 3.67157 5 4.5 5H14.2515C14.4106 5 14.5632 5.06321 14.6757 5.17574L17.8243 8.32426C17.9368 8.43679 18 8.5894 18 8.74853V20.5C18 21.3284 17.3284 22 16.5 22H4.5C3.67157 22 3 21.3284 3 20.5Z\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M14 5V8.4C14 8.73137 14.2686 9 14.6 9H18\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n </svg>\r\n);\r\n\r\nexport default FileIcon;\r\n","const TrashIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\r\n <svg\r\n width=\"24px\"\r\n height=\"24px\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n color=\"currentColor\"\r\n stroke-width=\"1.5\"\r\n {...props}\r\n >\r\n <path\r\n d=\"M20 9L18.005 20.3463C17.8369 21.3026 17.0062 22 16.0353 22H7.96474C6.99379 22 6.1631 21.3026 5.99496 20.3463L4 9\"\r\n fill=\"currentColor\"\r\n ></path>\r\n <path\r\n d=\"M20 9L18.005 20.3463C17.8369 21.3026 17.0062 22 16.0353 22H7.96474C6.99379 22 6.1631 21.3026 5.99496 20.3463L4 9H20Z\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M21 6H15.375M3 6H8.625M8.625 6V4C8.625 2.89543 9.52043 2 10.625 2H13.375C14.4796 2 15.375 2.89543 15.375 4V6M8.625 6H15.375\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n </svg>\r\n);\r\n\r\nexport default TrashIcon;\r\n","import React, { useMemo, useRef, useState } from \"react\";\r\nimport { FileUploadProps } from \"./FileUpload.types\";\r\nimport { FileIcon, TrashIcon } from \"../../Icons\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { capitalize } from \"../../utils/capitalize\";\r\nimport {\r\n getDefaultRounding,\r\n getDefaultShadow,\r\n getDefaultTheme,\r\n} from \"../../config/boreal-style-config\";\r\n\r\nexport interface BaseFileUploadProps extends FileUploadProps {\r\n FormGroup: React.ComponentType<any>;\r\n Button: React.ComponentType<any>;\r\n IconButton: React.ComponentType<any>;\r\n ProgressBar: React.ComponentType<any>;\r\n classMap: Record<string, string>;\r\n}\r\n\r\nconst BaseFileUpload: React.FC<BaseFileUploadProps> = ({\r\n label = \"Upload File\",\r\n description,\r\n error,\r\n required = false,\r\n theme = getDefaultTheme(),\r\n controlRounding = getDefaultRounding(),\r\n controlShadow = getDefaultShadow(),\r\n outline = false,\r\n outlineRounding = getDefaultRounding(),\r\n outlineShadow = getDefaultShadow(),\r\n state = \"\",\r\n multiple = false,\r\n maxFileSizeBytes = Infinity,\r\n allowedFileTypes = [],\r\n onSubmit,\r\n uploadProgress,\r\n \"data-testid\": testId = \"file-upload\",\r\n FormGroup,\r\n disabled = false,\r\n Button,\r\n IconButton,\r\n ProgressBar,\r\n classMap,\r\n}) => {\r\n const [fileNames, setFileNames] = useState<string[]>([]);\r\n const [files, setFiles] = useState<File[]>([]);\r\n const [rejectedFiles, setRejectedFiles] = useState<\r\n { name: string; reason: string }[]\r\n >([]);\r\n const [internalProgress, setInternalProgress] = useState<number>(0);\r\n const [uploading, setUploading] = useState(false);\r\n const [isDragging, setIsDragging] = useState(false);\r\n const [uploadMessage, setUploadMessage] = useState<string | null>(null);\r\n const fileInput = useRef<HTMLInputElement | null>(null);\r\n\r\n const validateFiles = (newFiles: File[]) => {\r\n const valid: File[] = [];\r\n const rejected: { name: string; reason: string }[] = [];\r\n\r\n newFiles.forEach((file) => {\r\n const isSizeOk = file.size <= maxFileSizeBytes;\r\n const isTypeOk =\r\n allowedFileTypes.length === 0 || allowedFileTypes.includes(file.type);\r\n\r\n if (isSizeOk && isTypeOk) {\r\n valid.push(file);\r\n } else {\r\n rejected.push({\r\n name: file.name,\r\n reason: !isSizeOk\r\n ? `Exceeds size limit (${(file.size / 1024 / 1024).toFixed(2)}MB)`\r\n : `Invalid type (${file.type || \"unknown\"})`,\r\n });\r\n }\r\n });\r\n\r\n return { valid, rejected };\r\n };\r\n\r\n const handleFileChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const selected = e.target.files;\r\n if (!selected || selected.length === 0) return;\r\n\r\n const { valid, rejected } = validateFiles(Array.from(selected));\r\n const updatedFiles = multiple ? [...files, ...valid] : valid;\r\n\r\n setFiles(updatedFiles);\r\n setFileNames(\r\n updatedFiles.map((file) =>\r\n file.name.length > 30 ? file.name.slice(0, 27) + \"...\" : file.name\r\n )\r\n );\r\n setRejectedFiles(rejected);\r\n };\r\n\r\n const removeFile = (index: number) => {\r\n const updatedFiles = files.filter((_, i) => i !== index);\r\n setFiles(updatedFiles);\r\n setFileNames(\r\n updatedFiles.map((file) =>\r\n file.name.length > 30 ? file.name.slice(0, 27) + \"...\" : file.name\r\n )\r\n );\r\n };\r\n\r\n const getButtonLabel = () => {\r\n if (fileNames.length > 0) return multiple ? \"Add Files\" : \"Select New\";\r\n return \"Choose File\";\r\n };\r\n\r\n const handleDragOver = (e: React.DragEvent) => {\r\n e.preventDefault();\r\n setIsDragging(true);\r\n };\r\n\r\n const handleDragLeave = () => {\r\n setIsDragging(false);\r\n };\r\n\r\n const handleDrop = (e: React.DragEvent) => {\r\n e.preventDefault();\r\n setIsDragging(false);\r\n const droppedFiles = e.dataTransfer.files;\r\n if (droppedFiles.length > 0) {\r\n handleFileChange({\r\n target: { files: droppedFiles },\r\n } as React.ChangeEvent<HTMLInputElement>);\r\n }\r\n };\r\n\r\n const handleUpload = () => {\r\n if (!files || uploading) return;\r\n setUploading(true);\r\n setInternalProgress(0);\r\n setUploadMessage(null);\r\n\r\n const interval = setInterval(() => {\r\n setInternalProgress((prev) => {\r\n if (prev >= 100) {\r\n clearInterval(interval);\r\n setTimeout(() => {\r\n setUploading(false);\r\n try {\r\n onSubmit(files);\r\n setUploadMessage(\"Upload successful.\");\r\n } catch {\r\n setUploadMessage(\"Upload failed. Please try again.\");\r\n }\r\n }, 500);\r\n return 100;\r\n }\r\n return prev + 10;\r\n });\r\n }, 100);\r\n };\r\n\r\n const containerClassName = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.fileUpload,\r\n classMap[state],\r\n classMap[theme],\r\n outlineShadow && classMap[`shadow${capitalize(outlineShadow)}`],\r\n outlineRounding && classMap[`round${capitalize(outlineRounding)}`],\r\n error && classMap.error,\r\n isDragging ? \"dragging\" : \"\",\r\n disabled && classMap.disabled\r\n ),\r\n [classMap, isDragging, theme, state, disabled]\r\n );\r\n\r\n return (\r\n <FormGroup\r\n label={label}\r\n description={description}\r\n error={error}\r\n required={required}\r\n data-testid={testId}\r\n >\r\n <div\r\n className={containerClassName}\r\n onDragOver={handleDragOver}\r\n onDragLeave={handleDragLeave}\r\n onDrop={handleDrop}\r\n data-testid={testId ? `${testId}-wrapper` : undefined}\r\n >\r\n <input\r\n ref={fileInput}\r\n id={`${testId}-input`}\r\n type=\"file\"\r\n multiple={multiple}\r\n onChange={handleFileChange}\r\n className={classMap.hiddenInput}\r\n aria-required={required}\r\n aria-label={label}\r\n aria-describedby={`${testId}-description ${testId}-error`}\r\n data-testid={testId ? `${testId}-input` : undefined}\r\n />\r\n\r\n <div className={classMap.uploadActions}>\r\n <Button\r\n icon={FileIcon}\r\n size=\"small\"\r\n theme={theme}\r\n state={error && classMap.error}\r\n className={classMap.fileInput}\r\n disabled={uploading || disabled}\r\n outline={outline}\r\n rounding={controlRounding}\r\n shadow={controlShadow}\r\n onClick={() => fileInput.current?.click()}\r\n aria-label={\r\n fileNames.length > 0 ? fileNames.join(\", \") : \"Choose File\"\r\n }\r\n data-testid={testId ? `${testId}-file-button` : undefined}\r\n >\r\n {getButtonLabel()}\r\n </Button>\r\n </div>\r\n\r\n {rejectedFiles.length > 0 && (\r\n <div className={classMap.rejectedFiles}>\r\n <p className={classMap.rejectedLabel}>Rejected Files:</p>\r\n <ul className={classMap.rejectedList}>\r\n {rejectedFiles.map((file, index) => (\r\n <li key={index} className={classMap.rejectedItem}>\r\n <span>{file.name}</span>\r\n <span className={classMap.rejectedReason}>\r\n {\" \"}\r\n – {file.reason}\r\n </span>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n\r\n {fileNames.length > 0 && (\r\n <div\r\n className={classMap.uploadControls}\r\n data-testid={testId ? `${testId}-controls` : undefined}\r\n >\r\n <ul className={classMap.fileList}>\r\n {fileNames.map((name, index) => (\r\n <li key={index} className={classMap.fileListItem}>\r\n <span>{name}</span>\r\n <IconButton\r\n icon={TrashIcon}\r\n theme=\"error\"\r\n size=\"xsmall\"\r\n outline\r\n aria-label={`Remove ${name}`}\r\n onClick={() => removeFile(index)}\r\n className={classMap.removeButton}\r\n />\r\n </li>\r\n ))}\r\n </ul>\r\n {uploading && (\r\n <ProgressBar\r\n theme={theme}\r\n className={classMap.uploadProgress}\r\n progress={uploadProgress ?? internalProgress}\r\n indeterminate={uploadProgress === undefined}\r\n data-testid={testId ? `${testId}-progress` : undefined}\r\n />\r\n )}\r\n {!uploading && (\r\n <Button\r\n theme={theme}\r\n state={(error && classMap.error) || state}\r\n disabled={uploading}\r\n onClick={handleUpload}\r\n loading={uploading}\r\n size=\"small\"\r\n className={classMap.uploadButton}\r\n data-testid={testId ? `${testId}-upload-button` : undefined}\r\n >\r\n Upload\r\n </Button>\r\n )}\r\n </div>\r\n )}\r\n <div\r\n className=\"sr_only\"\r\n aria-live=\"polite\"\r\n aria-atomic=\"true\"\r\n data-testid={testId ? `${testId}-upload-message` : undefined}\r\n >\r\n {uploadMessage}\r\n </div>\r\n </div>\r\n </FormGroup>\r\n );\r\n};\r\n\r\nexport default BaseFileUpload;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport BaseFileUpload from \"../FileUploadBase\";\r\nimport { FileUploadProps } from \"../FileUpload.types\";\r\nimport { Button, IconButton, Progressbar, FormGroup } from \"@/index.next\";\r\nimport styles from \"./FileUpload.module.scss\";\r\n\r\nconst FileUpload: React.FC<FileUploadProps> = (props) => {\r\n return (\r\n <BaseFileUpload\r\n {...props}\r\n FormGroup={FormGroup}\r\n Button={Button}\r\n IconButton={IconButton}\r\n ProgressBar={Progressbar}\r\n classMap={styles}\r\n />\r\n );\r\n};\r\n\r\nexport default FileUpload;\r\n"],"names":["jsxs","jsx","error","getDefaultTheme","getDefaultRounding","getDefaultShadow","uploadProgress","FormGroup","disabled","Button","IconButton","ProgressBar","useState","rejectedFiles","useRef","useMemo","combineClassNames","capitalize","Progressbar"],"mappings":"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"}
1
+ {"version":3,"file":"FileUpload-427ZyzCY.cjs","sources":["../../src/Icons/FileIcon.tsx","../../src/Icons/TrashIcon.tsx","../../src/components/FileUpload/FileUploadBase.tsx","../../src/components/FileUpload/next/FileUpload.tsx"],"sourcesContent":["const FileIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\r\n <svg\r\n width=\"24px\"\r\n height=\"24px\"\r\n viewBox=\"0 0 24 24\"\r\n strokeWidth=\"1.5\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n color=\"currentColor\"\r\n {...props}\r\n >\r\n <path\r\n d=\"M3 20.5V6.5C3 5.67157 3.67157 5 4.5 5H14.2515C14.4106 5 14.5632 5.06321 14.6757 5.17574L17.8243 8.32426C17.9368 8.43679 18 8.5894 18 8.74853V20.5C18 21.3284 17.3284 22 16.5 22H4.5C3.67157 22 3 21.3284 3 20.5Z\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M14 5V8.4C14 8.73137 14.2686 9 14.6 9H18\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n </svg>\r\n);\r\n\r\nexport default FileIcon;\r\n","const TrashIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\r\n <svg\r\n width=\"24px\"\r\n height=\"24px\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n color=\"currentColor\"\r\n stroke-width=\"1.5\"\r\n {...props}\r\n >\r\n <path\r\n d=\"M20 9L18.005 20.3463C17.8369 21.3026 17.0062 22 16.0353 22H7.96474C6.99379 22 6.1631 21.3026 5.99496 20.3463L4 9\"\r\n fill=\"currentColor\"\r\n ></path>\r\n <path\r\n d=\"M20 9L18.005 20.3463C17.8369 21.3026 17.0062 22 16.0353 22H7.96474C6.99379 22 6.1631 21.3026 5.99496 20.3463L4 9H20Z\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M21 6H15.375M3 6H8.625M8.625 6V4C8.625 2.89543 9.52043 2 10.625 2H13.375C14.4796 2 15.375 2.89543 15.375 4V6M8.625 6H15.375\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n </svg>\r\n);\r\n\r\nexport default TrashIcon;\r\n","import React, { useMemo, useRef, useState } from \"react\";\r\nimport { FileUploadProps } from \"./FileUpload.types\";\r\nimport { FileIcon, TrashIcon } from \"../../Icons\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { capitalize } from \"../../utils/capitalize\";\r\nimport {\r\n getDefaultRounding,\r\n getDefaultShadow,\r\n getDefaultTheme,\r\n} from \"../../config/boreal-style-config\";\r\n\r\nexport interface BaseFileUploadProps extends FileUploadProps {\r\n FormGroup: React.ComponentType<any>;\r\n Button: React.ComponentType<any>;\r\n IconButton: React.ComponentType<any>;\r\n ProgressBar: React.ComponentType<any>;\r\n classMap: Record<string, string>;\r\n}\r\n\r\nconst BaseFileUpload: React.FC<BaseFileUploadProps> = ({\r\n label = \"Upload File\",\r\n description,\r\n error,\r\n required = false,\r\n theme = getDefaultTheme(),\r\n controlRounding = getDefaultRounding(),\r\n controlShadow = getDefaultShadow(),\r\n outline = false,\r\n outlineRounding = getDefaultRounding(),\r\n outlineShadow = getDefaultShadow(),\r\n state = \"\",\r\n multiple = false,\r\n maxFileSizeBytes = Infinity,\r\n allowedFileTypes = [],\r\n onSubmit,\r\n uploadProgress,\r\n \"data-testid\": testId = \"file-upload\",\r\n FormGroup,\r\n disabled = false,\r\n Button,\r\n IconButton,\r\n ProgressBar,\r\n classMap,\r\n}) => {\r\n const [fileNames, setFileNames] = useState<string[]>([]);\r\n const [files, setFiles] = useState<File[]>([]);\r\n const [rejectedFiles, setRejectedFiles] = useState<\r\n { name: string; reason: string }[]\r\n >([]);\r\n const [internalProgress, setInternalProgress] = useState<number>(0);\r\n const [uploading, setUploading] = useState(false);\r\n const [isDragging, setIsDragging] = useState(false);\r\n const [uploadMessage, setUploadMessage] = useState<string | null>(null);\r\n const fileInput = useRef<HTMLInputElement | null>(null);\r\n\r\n const validateFiles = (newFiles: File[]) => {\r\n const valid: File[] = [];\r\n const rejected: { name: string; reason: string }[] = [];\r\n\r\n newFiles.forEach((file) => {\r\n const isSizeOk = file.size <= maxFileSizeBytes;\r\n const isTypeOk =\r\n allowedFileTypes.length === 0 || allowedFileTypes.includes(file.type);\r\n\r\n if (isSizeOk && isTypeOk) {\r\n valid.push(file);\r\n } else {\r\n rejected.push({\r\n name: file.name,\r\n reason: !isSizeOk\r\n ? `Exceeds size limit (${(file.size / 1024 / 1024).toFixed(2)}MB)`\r\n : `Invalid type (${file.type || \"unknown\"})`,\r\n });\r\n }\r\n });\r\n\r\n return { valid, rejected };\r\n };\r\n\r\n const handleFileChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const selected = e.target.files;\r\n if (!selected || selected.length === 0) return;\r\n\r\n const { valid, rejected } = validateFiles(Array.from(selected));\r\n const updatedFiles = multiple ? [...files, ...valid] : valid;\r\n\r\n setFiles(updatedFiles);\r\n setFileNames(\r\n updatedFiles.map((file) =>\r\n file.name.length > 30 ? file.name.slice(0, 27) + \"...\" : file.name\r\n )\r\n );\r\n setRejectedFiles(rejected);\r\n };\r\n\r\n const removeFile = (index: number) => {\r\n const updatedFiles = files.filter((_, i) => i !== index);\r\n setFiles(updatedFiles);\r\n setFileNames(\r\n updatedFiles.map((file) =>\r\n file.name.length > 30 ? file.name.slice(0, 27) + \"...\" : file.name\r\n )\r\n );\r\n };\r\n\r\n const getButtonLabel = () => {\r\n if (fileNames.length > 0) return multiple ? \"Add Files\" : \"Select New\";\r\n return \"Choose File\";\r\n };\r\n\r\n const handleDragOver = (e: React.DragEvent) => {\r\n e.preventDefault();\r\n setIsDragging(true);\r\n };\r\n\r\n const handleDragLeave = () => {\r\n setIsDragging(false);\r\n };\r\n\r\n const handleDrop = (e: React.DragEvent) => {\r\n e.preventDefault();\r\n setIsDragging(false);\r\n const droppedFiles = e.dataTransfer.files;\r\n if (droppedFiles.length > 0) {\r\n handleFileChange({\r\n target: { files: droppedFiles },\r\n } as React.ChangeEvent<HTMLInputElement>);\r\n }\r\n };\r\n\r\n const handleUpload = () => {\r\n if (!files || uploading) return;\r\n setUploading(true);\r\n setInternalProgress(0);\r\n setUploadMessage(null);\r\n\r\n const interval = setInterval(() => {\r\n setInternalProgress((prev) => {\r\n if (prev >= 100) {\r\n clearInterval(interval);\r\n setTimeout(() => {\r\n setUploading(false);\r\n try {\r\n onSubmit(files);\r\n setUploadMessage(\"Upload successful.\");\r\n } catch {\r\n setUploadMessage(\"Upload failed. Please try again.\");\r\n }\r\n }, 500);\r\n return 100;\r\n }\r\n return prev + 10;\r\n });\r\n }, 100);\r\n };\r\n\r\n const containerClassName = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.fileUpload,\r\n classMap[state],\r\n classMap[theme],\r\n outlineShadow && classMap[`shadow${capitalize(outlineShadow)}`],\r\n outlineRounding && classMap[`round${capitalize(outlineRounding)}`],\r\n error && classMap.error,\r\n isDragging ? \"dragging\" : \"\",\r\n disabled && classMap.disabled\r\n ),\r\n [classMap, isDragging, theme, state, disabled]\r\n );\r\n\r\n return (\r\n <FormGroup\r\n label={label}\r\n description={description}\r\n error={error}\r\n required={required}\r\n data-testid={testId}\r\n >\r\n <div\r\n className={containerClassName}\r\n onDragOver={handleDragOver}\r\n onDragLeave={handleDragLeave}\r\n onDrop={handleDrop}\r\n data-testid={testId ? `${testId}-wrapper` : undefined}\r\n >\r\n <input\r\n ref={fileInput}\r\n id={`${testId}-input`}\r\n type=\"file\"\r\n multiple={multiple}\r\n onChange={handleFileChange}\r\n className={classMap.hiddenInput}\r\n aria-required={required}\r\n aria-label={label}\r\n aria-describedby={`${testId}-description ${testId}-error`}\r\n data-testid={testId ? `${testId}-input` : undefined}\r\n />\r\n\r\n <div className={classMap.uploadActions}>\r\n <Button\r\n icon={FileIcon}\r\n size=\"small\"\r\n theme={theme}\r\n state={error && classMap.error}\r\n className={classMap.fileInput}\r\n disabled={uploading || disabled}\r\n outline={outline}\r\n rounding={controlRounding}\r\n shadow={controlShadow}\r\n onClick={() => fileInput.current?.click()}\r\n aria-label={\r\n fileNames.length > 0 ? fileNames.join(\", \") : \"Choose File\"\r\n }\r\n data-testid={testId ? `${testId}-file-button` : undefined}\r\n >\r\n {getButtonLabel()}\r\n </Button>\r\n </div>\r\n\r\n {rejectedFiles.length > 0 && (\r\n <div className={classMap.rejectedFiles}>\r\n <p className={classMap.rejectedLabel}>Rejected Files:</p>\r\n <ul className={classMap.rejectedList}>\r\n {rejectedFiles.map((file, index) => (\r\n <li key={index} className={classMap.rejectedItem}>\r\n <span>{file.name}</span>\r\n <span className={classMap.rejectedReason}>\r\n {\" \"}\r\n – {file.reason}\r\n </span>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n\r\n {fileNames.length > 0 && (\r\n <div\r\n className={classMap.uploadControls}\r\n data-testid={testId ? `${testId}-controls` : undefined}\r\n >\r\n <ul className={classMap.fileList}>\r\n {fileNames.map((name, index) => (\r\n <li key={index} className={classMap.fileListItem}>\r\n <span>{name}</span>\r\n <IconButton\r\n icon={TrashIcon}\r\n theme=\"error\"\r\n size=\"xsmall\"\r\n outline\r\n aria-label={`Remove ${name}`}\r\n onClick={() => removeFile(index)}\r\n className={classMap.removeButton}\r\n />\r\n </li>\r\n ))}\r\n </ul>\r\n {uploading && (\r\n <ProgressBar\r\n theme={theme}\r\n className={classMap.uploadProgress}\r\n progress={uploadProgress ?? internalProgress}\r\n indeterminate={uploadProgress === undefined}\r\n data-testid={testId ? `${testId}-progress` : undefined}\r\n />\r\n )}\r\n {!uploading && (\r\n <Button\r\n theme={theme}\r\n state={(error && classMap.error) || state}\r\n disabled={uploading}\r\n onClick={handleUpload}\r\n loading={uploading}\r\n size=\"small\"\r\n className={classMap.uploadButton}\r\n data-testid={testId ? `${testId}-upload-button` : undefined}\r\n >\r\n Upload\r\n </Button>\r\n )}\r\n </div>\r\n )}\r\n <div\r\n className=\"sr_only\"\r\n aria-live=\"polite\"\r\n aria-atomic=\"true\"\r\n data-testid={testId ? `${testId}-upload-message` : undefined}\r\n >\r\n {uploadMessage}\r\n </div>\r\n </div>\r\n </FormGroup>\r\n );\r\n};\r\n\r\nexport default BaseFileUpload;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport BaseFileUpload from \"../FileUploadBase\";\r\nimport { FileUploadProps } from \"../FileUpload.types\";\r\nimport { Button, IconButton, Progressbar, FormGroup } from \"@/index.next\";\r\nimport styles from \"./FileUpload.module.scss\";\r\n\r\nconst FileUpload: React.FC<FileUploadProps> = (props) => {\r\n return (\r\n <BaseFileUpload\r\n {...props}\r\n FormGroup={FormGroup}\r\n Button={Button}\r\n IconButton={IconButton}\r\n ProgressBar={Progressbar}\r\n classMap={styles}\r\n />\r\n );\r\n};\r\n\r\nexport default FileUpload;\r\n"],"names":["jsxs","jsx","error","getDefaultTheme","getDefaultRounding","getDefaultShadow","uploadProgress","FormGroup","disabled","Button","IconButton","ProgressBar","useState","rejectedFiles","useRef","useMemo","combineClassNames","capitalize","Progressbar"],"mappings":";;;;;;;;;;AAAA,MAAM,WAAoD,CAAC,UACzDA,2BAAAA;AAAAA,EAAC;AAAA,EAAA;AAAA,IACC,OAAM;AAAA,IACN,QAAO;AAAA,IACP,SAAQ;AAAA,IACR,aAAY;AAAA,IACZ,MAAK;AAAA,IACL,OAAM;AAAA,IACN,OAAM;AAAA,IACL,GAAG;AAAA,IAEJ,UAAA;AAAA,MAAAC,2BAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,GAAE;AAAA,UACF,QAAO;AAAA,UACP,aAAY;AAAA,UACZ,eAAc;AAAA,UACd,gBAAe;AAAA,QAAA;AAAA,MAAA;AAAA,MAEjBA,2BAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,GAAE;AAAA,UACF,QAAO;AAAA,UACP,aAAY;AAAA,UACZ,eAAc;AAAA,UACd,gBAAe;AAAA,QAAA;AAAA,MAAA;AAAA,IAChB;AAAA,EAAA;AACH;ACzBF,MAAM,YAAqD,CAAC,UAC1DD,2BAAAA;AAAAA,EAAC;AAAA,EAAA;AAAA,IACC,OAAM;AAAA,IACN,QAAO;AAAA,IACP,SAAQ;AAAA,IACR,MAAK;AAAA,IACL,OAAM;AAAA,IACN,OAAM;AAAA,IACN,gBAAa;AAAA,IACZ,GAAG;AAAA,IAEJ,UAAA;AAAA,MAAAC,2BAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,GAAE;AAAA,UACF,MAAK;AAAA,QAAA;AAAA,MAAA;AAAA,MAEPA,2BAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,GAAE;AAAA,UACF,QAAO;AAAA,UACP,aAAY;AAAA,UACZ,eAAc;AAAA,UACd,gBAAe;AAAA,QAAA;AAAA,MAAA;AAAA,MAEjBA,2BAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,GAAE;AAAA,UACF,QAAO;AAAA,UACP,aAAY;AAAA,UACZ,eAAc;AAAA,UACd,gBAAe;AAAA,QAAA;AAAA,MAAA;AAAA,IAChB;AAAA,EAAA;AACH;ACVF,MAAM,iBAAgD,CAAC;AAAA,EACrD,QAAQ;AAAA,EACR;AAAA,EACA,OAAAC;AAAA,EACA,WAAW;AAAA,EACX,QAAQC,kBAAAA,gBAAA;AAAA,EACR,kBAAkBC,kBAAAA,mBAAA;AAAA,EAClB,gBAAgBC,kBAAAA,iBAAA;AAAA,EAChB,UAAU;AAAA,EACV,kBAAkBD,kBAAAA,mBAAA;AAAA,EAClB,gBAAgBC,kBAAAA,iBAAA;AAAA,EAChB,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,mBAAmB;AAAA,EACnB,mBAAmB,CAAA;AAAA,EACnB;AAAA,EACA,gBAAAC;AAAA,EACA,eAAe,SAAS;AAAA,EACxB,WAAAC;AAAA,EACA,UAAAC,YAAW;AAAA,EACX,QAAAC;AAAA,EACA,YAAAC;AAAA,EACA,aAAAC;AAAA,EACA;AACF,MAAM;AACJ,QAAM,CAAC,WAAW,YAAY,IAAIC,MAAAA,SAAmB,CAAA,CAAE;AACvD,QAAM,CAAC,OAAO,QAAQ,IAAIA,MAAAA,SAAiB,CAAA,CAAE;AAC7C,QAAM,CAACC,gBAAe,gBAAgB,IAAID,MAAAA,SAExC,CAAA,CAAE;AACJ,QAAM,CAAC,kBAAkB,mBAAmB,IAAIA,MAAAA,SAAiB,CAAC;AAClE,QAAM,CAAC,WAAW,YAAY,IAAIA,MAAAA,SAAS,KAAK;AAChD,QAAM,CAAC,YAAY,aAAa,IAAIA,MAAAA,SAAS,KAAK;AAClD,QAAM,CAAC,eAAe,gBAAgB,IAAIA,MAAAA,SAAwB,IAAI;AACtE,QAAM,YAAYE,MAAAA,OAAgC,IAAI;AAEtD,QAAM,gBAAgB,CAAC,aAAqB;AAC1C,UAAM,QAAgB,CAAA;AACtB,UAAM,WAA+C,CAAA;AAErD,aAAS,QAAQ,CAAC,SAAS;AACzB,YAAM,WAAW,KAAK,QAAQ;AAC9B,YAAM,WACJ,iBAAiB,WAAW,KAAK,iBAAiB,SAAS,KAAK,IAAI;AAEtE,UAAI,YAAY,UAAU;AACxB,cAAM,KAAK,IAAI;AAAA,MACjB,OAAO;AACL,iBAAS,KAAK;AAAA,UACZ,MAAM,KAAK;AAAA,UACX,QAAQ,CAAC,WACL,wBAAwB,KAAK,OAAO,OAAO,MAAM,QAAQ,CAAC,CAAC,QAC3D,iBAAiB,KAAK,QAAQ,SAAS;AAAA,QAAA,CAC5C;AAAA,MACH;AAAA,IACF,CAAC;AAED,WAAO,EAAE,OAAO,SAAA;AAAA,EAClB;AAEA,QAAM,mBAAmB,CAAC,MAA2C;AACnE,UAAM,WAAW,EAAE,OAAO;AAC1B,QAAI,CAAC,YAAY,SAAS,WAAW,EAAG;AAExC,UAAM,EAAE,OAAO,SAAA,IAAa,cAAc,MAAM,KAAK,QAAQ,CAAC;AAC9D,UAAM,eAAe,WAAW,CAAC,GAAG,OAAO,GAAG,KAAK,IAAI;AAEvD,aAAS,YAAY;AACrB;AAAA,MACE,aAAa;AAAA,QAAI,CAAC,SAChB,KAAK,KAAK,SAAS,KAAK,KAAK,KAAK,MAAM,GAAG,EAAE,IAAI,QAAQ,KAAK;AAAA,MAAA;AAAA,IAChE;AAEF,qBAAiB,QAAQ;AAAA,EAC3B;AAEA,QAAM,aAAa,CAAC,UAAkB;AACpC,UAAM,eAAe,MAAM,OAAO,CAAC,GAAG,MAAM,MAAM,KAAK;AACvD,aAAS,YAAY;AACrB;AAAA,MACE,aAAa;AAAA,QAAI,CAAC,SAChB,KAAK,KAAK,SAAS,KAAK,KAAK,KAAK,MAAM,GAAG,EAAE,IAAI,QAAQ,KAAK;AAAA,MAAA;AAAA,IAChE;AAAA,EAEJ;AAEA,QAAM,iBAAiB,MAAM;AAC3B,QAAI,UAAU,SAAS,EAAG,QAAO,WAAW,cAAc;AAC1D,WAAO;AAAA,EACT;AAEA,QAAM,iBAAiB,CAAC,MAAuB;AAC7C,MAAE,eAAA;AACF,kBAAc,IAAI;AAAA,EACpB;AAEA,QAAM,kBAAkB,MAAM;AAC5B,kBAAc,KAAK;AAAA,EACrB;AAEA,QAAM,aAAa,CAAC,MAAuB;AACzC,MAAE,eAAA;AACF,kBAAc,KAAK;AACnB,UAAM,eAAe,EAAE,aAAa;AACpC,QAAI,aAAa,SAAS,GAAG;AAC3B,uBAAiB;AAAA,QACf,QAAQ,EAAE,OAAO,aAAA;AAAA,MAAa,CACQ;AAAA,IAC1C;AAAA,EACF;AAEA,QAAM,eAAe,MAAM;AACzB,QAAI,CAAC,SAAS,UAAW;AACzB,iBAAa,IAAI;AACjB,wBAAoB,CAAC;AACrB,qBAAiB,IAAI;AAErB,UAAM,WAAW,YAAY,MAAM;AACjC,0BAAoB,CAAC,SAAS;AAC5B,YAAI,QAAQ,KAAK;AACf,wBAAc,QAAQ;AACtB,qBAAW,MAAM;AACf,yBAAa,KAAK;AAClB,gBAAI;AACF,uBAAS,KAAK;AACd,+BAAiB,oBAAoB;AAAA,YACvC,QAAQ;AACN,+BAAiB,kCAAkC;AAAA,YACrD;AAAA,UACF,GAAG,GAAG;AACN,iBAAO;AAAA,QACT;AACA,eAAO,OAAO;AAAA,MAChB,CAAC;AAAA,IACH,GAAG,GAAG;AAAA,EACR;AAEA,QAAM,qBAAqBC,MAAAA;AAAAA,IACzB,MACEC,WAAAA;AAAAA,MACE,SAAS;AAAA,MACT,SAAS,KAAK;AAAA,MACd,SAAS,KAAK;AAAA,MACd,iBAAiB,SAAS,SAASC,WAAAA,WAAW,aAAa,CAAC,EAAE;AAAA,MAC9D,mBAAmB,SAAS,QAAQA,WAAAA,WAAW,eAAe,CAAC,EAAE;AAAA,MACjEf,UAAS,SAAS;AAAA,MAClB,aAAa,aAAa;AAAA,MAC1BM,aAAY,SAAS;AAAA,IAAA;AAAA,IAEzB,CAAC,UAAU,YAAY,OAAO,OAAOA,SAAQ;AAAA,EAAA;AAG/C,SACEP,2BAAAA;AAAAA,IAACM;AAAA,IAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,OAAAL;AAAA,MACA;AAAA,MACA,eAAa;AAAA,MAEb,UAAAF,2BAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAW;AAAA,UACX,YAAY;AAAA,UACZ,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,eAAa,SAAS,GAAG,MAAM,aAAa;AAAA,UAE5C,UAAA;AAAA,YAAAC,2BAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACC,KAAK;AAAA,gBACL,IAAI,GAAG,MAAM;AAAA,gBACb,MAAK;AAAA,gBACL;AAAA,gBACA,UAAU;AAAA,gBACV,WAAW,SAAS;AAAA,gBACpB,iBAAe;AAAA,gBACf,cAAY;AAAA,gBACZ,oBAAkB,GAAG,MAAM,gBAAgB,MAAM;AAAA,gBACjD,eAAa,SAAS,GAAG,MAAM,WAAW;AAAA,cAAA;AAAA,YAAA;AAAA,YAG5CA,2BAAAA,IAAC,OAAA,EAAI,WAAW,SAAS,eACvB,UAAAA,2BAAAA;AAAAA,cAACQ;AAAA,cAAA;AAAA,gBACC,MAAM;AAAA,gBACN,MAAK;AAAA,gBACL;AAAA,gBACA,OAAOP,UAAS,SAAS;AAAA,gBACzB,WAAW,SAAS;AAAA,gBACpB,UAAU,aAAaM;AAAA,gBACvB;AAAA,gBACA,UAAU;AAAA,gBACV,QAAQ;AAAA,gBACR,SAAS,MAAA;;AAAM,yCAAU,YAAV,mBAAmB;AAAA;AAAA,gBAClC,cACE,UAAU,SAAS,IAAI,UAAU,KAAK,IAAI,IAAI;AAAA,gBAEhD,eAAa,SAAS,GAAG,MAAM,iBAAiB;AAAA,gBAE/C,UAAA,eAAA;AAAA,cAAe;AAAA,YAAA,GAEpB;AAAA,YAECK,eAAc,SAAS,qCACrB,OAAA,EAAI,WAAW,SAAS,eACvB,UAAA;AAAA,cAAAZ,2BAAAA,IAAC,KAAA,EAAE,WAAW,SAAS,eAAe,UAAA,mBAAe;AAAA,cACrDA,2BAAAA,IAAC,MAAA,EAAG,WAAW,SAAS,cACrB,UAAAY,eAAc,IAAI,CAAC,MAAM,UACxBb,2BAAAA,KAAC,MAAA,EAAe,WAAW,SAAS,cAClC,UAAA;AAAA,gBAAAC,2BAAAA,IAAC,QAAA,EAAM,eAAK,KAAA,CAAK;AAAA,gBACjBD,2BAAAA,KAAC,QAAA,EAAK,WAAW,SAAS,gBACvB,UAAA;AAAA,kBAAA;AAAA,kBAAI;AAAA,kBACF,KAAK;AAAA,gBAAA,EAAA,CACV;AAAA,cAAA,EAAA,GALO,KAMT,CACD,EAAA,CACH;AAAA,YAAA,GACF;AAAA,YAGD,UAAU,SAAS,KAClBA,2BAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAW,SAAS;AAAA,gBACpB,eAAa,SAAS,GAAG,MAAM,cAAc;AAAA,gBAE7C,UAAA;AAAA,kBAAAC,2BAAAA,IAAC,MAAA,EAAG,WAAW,SAAS,UACrB,UAAA,UAAU,IAAI,CAAC,MAAM,UACpBD,2BAAAA,KAAC,MAAA,EAAe,WAAW,SAAS,cAClC,UAAA;AAAA,oBAAAC,2BAAAA,IAAC,UAAM,UAAA,KAAA,CAAK;AAAA,oBACZA,2BAAAA;AAAAA,sBAACS;AAAA,sBAAA;AAAA,wBACC,MAAM;AAAA,wBACN,OAAM;AAAA,wBACN,MAAK;AAAA,wBACL,SAAO;AAAA,wBACP,cAAY,UAAU,IAAI;AAAA,wBAC1B,SAAS,MAAM,WAAW,KAAK;AAAA,wBAC/B,WAAW,SAAS;AAAA,sBAAA;AAAA,oBAAA;AAAA,kBACtB,KAVO,KAWT,CACD,GACH;AAAA,kBACC,aACCT,2BAAAA;AAAAA,oBAACU;AAAA,oBAAA;AAAA,sBACC;AAAA,sBACA,WAAW,SAAS;AAAA,sBACpB,UAAUL,mBAAkB;AAAA,sBAC5B,eAAeA,oBAAmB;AAAA,sBAClC,eAAa,SAAS,GAAG,MAAM,cAAc;AAAA,oBAAA;AAAA,kBAAA;AAAA,kBAGhD,CAAC,aACAL,2BAAAA;AAAAA,oBAACQ;AAAA,oBAAA;AAAA,sBACC;AAAA,sBACA,OAAQP,UAAS,SAAS,SAAU;AAAA,sBACpC,UAAU;AAAA,sBACV,SAAS;AAAA,sBACT,SAAS;AAAA,sBACT,MAAK;AAAA,sBACL,WAAW,SAAS;AAAA,sBACpB,eAAa,SAAS,GAAG,MAAM,mBAAmB;AAAA,sBACnD,UAAA;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBAED;AAAA,cAAA;AAAA,YAAA;AAAA,YAIND,2BAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAU;AAAA,gBACV,aAAU;AAAA,gBACV,eAAY;AAAA,gBACZ,eAAa,SAAS,GAAG,MAAM,oBAAoB;AAAA,gBAElD,UAAA;AAAA,cAAA;AAAA,YAAA;AAAA,UACH;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAGN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9RA,MAAM,aAAwC,CAAC,UAAU;AACvD,SACEA,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAG;AAAA,MAAA,WACJM,UAAAA;AAAAA,MAAA,QACAE,OAAAA;AAAAA,MAAA,YACAC,WAAAA;AAAAA,MACA,aAAaQ,YAAAA;AAAAA,MACb,UAAU;AAAA,IAAA;AAAA,EAAA;AAGhB;;"}
@@ -5,7 +5,7 @@ import { c as capitalize } from "./capitalize-C0TSQSPh.js";
5
5
  import { a as getDefaultRounding, b as getDefaultShadow, d as getDefaultTheme } from "./boreal-style-config-BILmxkZG.js";
6
6
  import { B as Button } from "./Button-CbX-VlK_.js";
7
7
  import { I as IconButton } from "./IconButton-DFrFh0kg.js";
8
- import { F as FormGroup } from "./FormGroup-DuBfLAMv.js";
8
+ import { F as FormGroup } from "./FormGroup-BMLGXHiz.js";
9
9
  import { P as ProgressBar } from "./ProgressBar-D_fi1WW3.js";
10
10
  const FileIcon = (props) => /* @__PURE__ */ jsxs(
11
11
  "svg",
@@ -445,4 +445,4 @@ const FileUpload = (props) => {
445
445
  export {
446
446
  FileUpload as F
447
447
  };
448
- //# sourceMappingURL=FileUpload-CgPHe6Nn.js.map
448
+ //# sourceMappingURL=FileUpload-DQhKhtgc.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FileUpload-CgPHe6Nn.js","sources":["../../src/Icons/FileIcon.tsx","../../src/Icons/TrashIcon.tsx","../../src/components/FileUpload/FileUploadBase.tsx","../../src/components/FileUpload/next/FileUpload.tsx"],"sourcesContent":["const FileIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\r\n <svg\r\n width=\"24px\"\r\n height=\"24px\"\r\n viewBox=\"0 0 24 24\"\r\n strokeWidth=\"1.5\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n color=\"currentColor\"\r\n {...props}\r\n >\r\n <path\r\n d=\"M3 20.5V6.5C3 5.67157 3.67157 5 4.5 5H14.2515C14.4106 5 14.5632 5.06321 14.6757 5.17574L17.8243 8.32426C17.9368 8.43679 18 8.5894 18 8.74853V20.5C18 21.3284 17.3284 22 16.5 22H4.5C3.67157 22 3 21.3284 3 20.5Z\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M14 5V8.4C14 8.73137 14.2686 9 14.6 9H18\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n </svg>\r\n);\r\n\r\nexport default FileIcon;\r\n","const TrashIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\r\n <svg\r\n width=\"24px\"\r\n height=\"24px\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n color=\"currentColor\"\r\n stroke-width=\"1.5\"\r\n {...props}\r\n >\r\n <path\r\n d=\"M20 9L18.005 20.3463C17.8369 21.3026 17.0062 22 16.0353 22H7.96474C6.99379 22 6.1631 21.3026 5.99496 20.3463L4 9\"\r\n fill=\"currentColor\"\r\n ></path>\r\n <path\r\n d=\"M20 9L18.005 20.3463C17.8369 21.3026 17.0062 22 16.0353 22H7.96474C6.99379 22 6.1631 21.3026 5.99496 20.3463L4 9H20Z\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M21 6H15.375M3 6H8.625M8.625 6V4C8.625 2.89543 9.52043 2 10.625 2H13.375C14.4796 2 15.375 2.89543 15.375 4V6M8.625 6H15.375\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n </svg>\r\n);\r\n\r\nexport default TrashIcon;\r\n","import React, { useMemo, useRef, useState } from \"react\";\r\nimport { FileUploadProps } from \"./FileUpload.types\";\r\nimport { FileIcon, TrashIcon } from \"../../Icons\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { capitalize } from \"../../utils/capitalize\";\r\nimport {\r\n getDefaultRounding,\r\n getDefaultShadow,\r\n getDefaultTheme,\r\n} from \"../../config/boreal-style-config\";\r\n\r\nexport interface BaseFileUploadProps extends FileUploadProps {\r\n FormGroup: React.ComponentType<any>;\r\n Button: React.ComponentType<any>;\r\n IconButton: React.ComponentType<any>;\r\n ProgressBar: React.ComponentType<any>;\r\n classMap: Record<string, string>;\r\n}\r\n\r\nconst BaseFileUpload: React.FC<BaseFileUploadProps> = ({\r\n label = \"Upload File\",\r\n description,\r\n error,\r\n required = false,\r\n theme = getDefaultTheme(),\r\n controlRounding = getDefaultRounding(),\r\n controlShadow = getDefaultShadow(),\r\n outline = false,\r\n outlineRounding = getDefaultRounding(),\r\n outlineShadow = getDefaultShadow(),\r\n state = \"\",\r\n multiple = false,\r\n maxFileSizeBytes = Infinity,\r\n allowedFileTypes = [],\r\n onSubmit,\r\n uploadProgress,\r\n \"data-testid\": testId = \"file-upload\",\r\n FormGroup,\r\n disabled = false,\r\n Button,\r\n IconButton,\r\n ProgressBar,\r\n classMap,\r\n}) => {\r\n const [fileNames, setFileNames] = useState<string[]>([]);\r\n const [files, setFiles] = useState<File[]>([]);\r\n const [rejectedFiles, setRejectedFiles] = useState<\r\n { name: string; reason: string }[]\r\n >([]);\r\n const [internalProgress, setInternalProgress] = useState<number>(0);\r\n const [uploading, setUploading] = useState(false);\r\n const [isDragging, setIsDragging] = useState(false);\r\n const [uploadMessage, setUploadMessage] = useState<string | null>(null);\r\n const fileInput = useRef<HTMLInputElement | null>(null);\r\n\r\n const validateFiles = (newFiles: File[]) => {\r\n const valid: File[] = [];\r\n const rejected: { name: string; reason: string }[] = [];\r\n\r\n newFiles.forEach((file) => {\r\n const isSizeOk = file.size <= maxFileSizeBytes;\r\n const isTypeOk =\r\n allowedFileTypes.length === 0 || allowedFileTypes.includes(file.type);\r\n\r\n if (isSizeOk && isTypeOk) {\r\n valid.push(file);\r\n } else {\r\n rejected.push({\r\n name: file.name,\r\n reason: !isSizeOk\r\n ? `Exceeds size limit (${(file.size / 1024 / 1024).toFixed(2)}MB)`\r\n : `Invalid type (${file.type || \"unknown\"})`,\r\n });\r\n }\r\n });\r\n\r\n return { valid, rejected };\r\n };\r\n\r\n const handleFileChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const selected = e.target.files;\r\n if (!selected || selected.length === 0) return;\r\n\r\n const { valid, rejected } = validateFiles(Array.from(selected));\r\n const updatedFiles = multiple ? [...files, ...valid] : valid;\r\n\r\n setFiles(updatedFiles);\r\n setFileNames(\r\n updatedFiles.map((file) =>\r\n file.name.length > 30 ? file.name.slice(0, 27) + \"...\" : file.name\r\n )\r\n );\r\n setRejectedFiles(rejected);\r\n };\r\n\r\n const removeFile = (index: number) => {\r\n const updatedFiles = files.filter((_, i) => i !== index);\r\n setFiles(updatedFiles);\r\n setFileNames(\r\n updatedFiles.map((file) =>\r\n file.name.length > 30 ? file.name.slice(0, 27) + \"...\" : file.name\r\n )\r\n );\r\n };\r\n\r\n const getButtonLabel = () => {\r\n if (fileNames.length > 0) return multiple ? \"Add Files\" : \"Select New\";\r\n return \"Choose File\";\r\n };\r\n\r\n const handleDragOver = (e: React.DragEvent) => {\r\n e.preventDefault();\r\n setIsDragging(true);\r\n };\r\n\r\n const handleDragLeave = () => {\r\n setIsDragging(false);\r\n };\r\n\r\n const handleDrop = (e: React.DragEvent) => {\r\n e.preventDefault();\r\n setIsDragging(false);\r\n const droppedFiles = e.dataTransfer.files;\r\n if (droppedFiles.length > 0) {\r\n handleFileChange({\r\n target: { files: droppedFiles },\r\n } as React.ChangeEvent<HTMLInputElement>);\r\n }\r\n };\r\n\r\n const handleUpload = () => {\r\n if (!files || uploading) return;\r\n setUploading(true);\r\n setInternalProgress(0);\r\n setUploadMessage(null);\r\n\r\n const interval = setInterval(() => {\r\n setInternalProgress((prev) => {\r\n if (prev >= 100) {\r\n clearInterval(interval);\r\n setTimeout(() => {\r\n setUploading(false);\r\n try {\r\n onSubmit(files);\r\n setUploadMessage(\"Upload successful.\");\r\n } catch {\r\n setUploadMessage(\"Upload failed. Please try again.\");\r\n }\r\n }, 500);\r\n return 100;\r\n }\r\n return prev + 10;\r\n });\r\n }, 100);\r\n };\r\n\r\n const containerClassName = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.fileUpload,\r\n classMap[state],\r\n classMap[theme],\r\n outlineShadow && classMap[`shadow${capitalize(outlineShadow)}`],\r\n outlineRounding && classMap[`round${capitalize(outlineRounding)}`],\r\n error && classMap.error,\r\n isDragging ? \"dragging\" : \"\",\r\n disabled && classMap.disabled\r\n ),\r\n [classMap, isDragging, theme, state, disabled]\r\n );\r\n\r\n return (\r\n <FormGroup\r\n label={label}\r\n description={description}\r\n error={error}\r\n required={required}\r\n data-testid={testId}\r\n >\r\n <div\r\n className={containerClassName}\r\n onDragOver={handleDragOver}\r\n onDragLeave={handleDragLeave}\r\n onDrop={handleDrop}\r\n data-testid={testId ? `${testId}-wrapper` : undefined}\r\n >\r\n <input\r\n ref={fileInput}\r\n id={`${testId}-input`}\r\n type=\"file\"\r\n multiple={multiple}\r\n onChange={handleFileChange}\r\n className={classMap.hiddenInput}\r\n aria-required={required}\r\n aria-label={label}\r\n aria-describedby={`${testId}-description ${testId}-error`}\r\n data-testid={testId ? `${testId}-input` : undefined}\r\n />\r\n\r\n <div className={classMap.uploadActions}>\r\n <Button\r\n icon={FileIcon}\r\n size=\"small\"\r\n theme={theme}\r\n state={error && classMap.error}\r\n className={classMap.fileInput}\r\n disabled={uploading || disabled}\r\n outline={outline}\r\n rounding={controlRounding}\r\n shadow={controlShadow}\r\n onClick={() => fileInput.current?.click()}\r\n aria-label={\r\n fileNames.length > 0 ? fileNames.join(\", \") : \"Choose File\"\r\n }\r\n data-testid={testId ? `${testId}-file-button` : undefined}\r\n >\r\n {getButtonLabel()}\r\n </Button>\r\n </div>\r\n\r\n {rejectedFiles.length > 0 && (\r\n <div className={classMap.rejectedFiles}>\r\n <p className={classMap.rejectedLabel}>Rejected Files:</p>\r\n <ul className={classMap.rejectedList}>\r\n {rejectedFiles.map((file, index) => (\r\n <li key={index} className={classMap.rejectedItem}>\r\n <span>{file.name}</span>\r\n <span className={classMap.rejectedReason}>\r\n {\" \"}\r\n – {file.reason}\r\n </span>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n\r\n {fileNames.length > 0 && (\r\n <div\r\n className={classMap.uploadControls}\r\n data-testid={testId ? `${testId}-controls` : undefined}\r\n >\r\n <ul className={classMap.fileList}>\r\n {fileNames.map((name, index) => (\r\n <li key={index} className={classMap.fileListItem}>\r\n <span>{name}</span>\r\n <IconButton\r\n icon={TrashIcon}\r\n theme=\"error\"\r\n size=\"xsmall\"\r\n outline\r\n aria-label={`Remove ${name}`}\r\n onClick={() => removeFile(index)}\r\n className={classMap.removeButton}\r\n />\r\n </li>\r\n ))}\r\n </ul>\r\n {uploading && (\r\n <ProgressBar\r\n theme={theme}\r\n className={classMap.uploadProgress}\r\n progress={uploadProgress ?? internalProgress}\r\n indeterminate={uploadProgress === undefined}\r\n data-testid={testId ? `${testId}-progress` : undefined}\r\n />\r\n )}\r\n {!uploading && (\r\n <Button\r\n theme={theme}\r\n state={(error && classMap.error) || state}\r\n disabled={uploading}\r\n onClick={handleUpload}\r\n loading={uploading}\r\n size=\"small\"\r\n className={classMap.uploadButton}\r\n data-testid={testId ? `${testId}-upload-button` : undefined}\r\n >\r\n Upload\r\n </Button>\r\n )}\r\n </div>\r\n )}\r\n <div\r\n className=\"sr_only\"\r\n aria-live=\"polite\"\r\n aria-atomic=\"true\"\r\n data-testid={testId ? `${testId}-upload-message` : undefined}\r\n >\r\n {uploadMessage}\r\n </div>\r\n </div>\r\n </FormGroup>\r\n );\r\n};\r\n\r\nexport default BaseFileUpload;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport BaseFileUpload from \"../FileUploadBase\";\r\nimport { FileUploadProps } from \"../FileUpload.types\";\r\nimport { Button, IconButton, Progressbar, FormGroup } from \"@/index.next\";\r\nimport styles from \"./FileUpload.module.scss\";\r\n\r\nconst FileUpload: React.FC<FileUploadProps> = (props) => {\r\n return (\r\n <BaseFileUpload\r\n {...props}\r\n FormGroup={FormGroup}\r\n Button={Button}\r\n IconButton={IconButton}\r\n ProgressBar={Progressbar}\r\n classMap={styles}\r\n />\r\n );\r\n};\r\n\r\nexport default FileUpload;\r\n"],"names":["error","uploadProgress","FormGroup","disabled","Button","IconButton","ProgressBar","rejectedFiles"],"mappings":"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"}
1
+ {"version":3,"file":"FileUpload-DQhKhtgc.js","sources":["../../src/Icons/FileIcon.tsx","../../src/Icons/TrashIcon.tsx","../../src/components/FileUpload/FileUploadBase.tsx","../../src/components/FileUpload/next/FileUpload.tsx"],"sourcesContent":["const FileIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\r\n <svg\r\n width=\"24px\"\r\n height=\"24px\"\r\n viewBox=\"0 0 24 24\"\r\n strokeWidth=\"1.5\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n color=\"currentColor\"\r\n {...props}\r\n >\r\n <path\r\n d=\"M3 20.5V6.5C3 5.67157 3.67157 5 4.5 5H14.2515C14.4106 5 14.5632 5.06321 14.6757 5.17574L17.8243 8.32426C17.9368 8.43679 18 8.5894 18 8.74853V20.5C18 21.3284 17.3284 22 16.5 22H4.5C3.67157 22 3 21.3284 3 20.5Z\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M14 5V8.4C14 8.73137 14.2686 9 14.6 9H18\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n </svg>\r\n);\r\n\r\nexport default FileIcon;\r\n","const TrashIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\r\n <svg\r\n width=\"24px\"\r\n height=\"24px\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n color=\"currentColor\"\r\n stroke-width=\"1.5\"\r\n {...props}\r\n >\r\n <path\r\n d=\"M20 9L18.005 20.3463C17.8369 21.3026 17.0062 22 16.0353 22H7.96474C6.99379 22 6.1631 21.3026 5.99496 20.3463L4 9\"\r\n fill=\"currentColor\"\r\n ></path>\r\n <path\r\n d=\"M20 9L18.005 20.3463C17.8369 21.3026 17.0062 22 16.0353 22H7.96474C6.99379 22 6.1631 21.3026 5.99496 20.3463L4 9H20Z\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M21 6H15.375M3 6H8.625M8.625 6V4C8.625 2.89543 9.52043 2 10.625 2H13.375C14.4796 2 15.375 2.89543 15.375 4V6M8.625 6H15.375\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n </svg>\r\n);\r\n\r\nexport default TrashIcon;\r\n","import React, { useMemo, useRef, useState } from \"react\";\r\nimport { FileUploadProps } from \"./FileUpload.types\";\r\nimport { FileIcon, TrashIcon } from \"../../Icons\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { capitalize } from \"../../utils/capitalize\";\r\nimport {\r\n getDefaultRounding,\r\n getDefaultShadow,\r\n getDefaultTheme,\r\n} from \"../../config/boreal-style-config\";\r\n\r\nexport interface BaseFileUploadProps extends FileUploadProps {\r\n FormGroup: React.ComponentType<any>;\r\n Button: React.ComponentType<any>;\r\n IconButton: React.ComponentType<any>;\r\n ProgressBar: React.ComponentType<any>;\r\n classMap: Record<string, string>;\r\n}\r\n\r\nconst BaseFileUpload: React.FC<BaseFileUploadProps> = ({\r\n label = \"Upload File\",\r\n description,\r\n error,\r\n required = false,\r\n theme = getDefaultTheme(),\r\n controlRounding = getDefaultRounding(),\r\n controlShadow = getDefaultShadow(),\r\n outline = false,\r\n outlineRounding = getDefaultRounding(),\r\n outlineShadow = getDefaultShadow(),\r\n state = \"\",\r\n multiple = false,\r\n maxFileSizeBytes = Infinity,\r\n allowedFileTypes = [],\r\n onSubmit,\r\n uploadProgress,\r\n \"data-testid\": testId = \"file-upload\",\r\n FormGroup,\r\n disabled = false,\r\n Button,\r\n IconButton,\r\n ProgressBar,\r\n classMap,\r\n}) => {\r\n const [fileNames, setFileNames] = useState<string[]>([]);\r\n const [files, setFiles] = useState<File[]>([]);\r\n const [rejectedFiles, setRejectedFiles] = useState<\r\n { name: string; reason: string }[]\r\n >([]);\r\n const [internalProgress, setInternalProgress] = useState<number>(0);\r\n const [uploading, setUploading] = useState(false);\r\n const [isDragging, setIsDragging] = useState(false);\r\n const [uploadMessage, setUploadMessage] = useState<string | null>(null);\r\n const fileInput = useRef<HTMLInputElement | null>(null);\r\n\r\n const validateFiles = (newFiles: File[]) => {\r\n const valid: File[] = [];\r\n const rejected: { name: string; reason: string }[] = [];\r\n\r\n newFiles.forEach((file) => {\r\n const isSizeOk = file.size <= maxFileSizeBytes;\r\n const isTypeOk =\r\n allowedFileTypes.length === 0 || allowedFileTypes.includes(file.type);\r\n\r\n if (isSizeOk && isTypeOk) {\r\n valid.push(file);\r\n } else {\r\n rejected.push({\r\n name: file.name,\r\n reason: !isSizeOk\r\n ? `Exceeds size limit (${(file.size / 1024 / 1024).toFixed(2)}MB)`\r\n : `Invalid type (${file.type || \"unknown\"})`,\r\n });\r\n }\r\n });\r\n\r\n return { valid, rejected };\r\n };\r\n\r\n const handleFileChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const selected = e.target.files;\r\n if (!selected || selected.length === 0) return;\r\n\r\n const { valid, rejected } = validateFiles(Array.from(selected));\r\n const updatedFiles = multiple ? [...files, ...valid] : valid;\r\n\r\n setFiles(updatedFiles);\r\n setFileNames(\r\n updatedFiles.map((file) =>\r\n file.name.length > 30 ? file.name.slice(0, 27) + \"...\" : file.name\r\n )\r\n );\r\n setRejectedFiles(rejected);\r\n };\r\n\r\n const removeFile = (index: number) => {\r\n const updatedFiles = files.filter((_, i) => i !== index);\r\n setFiles(updatedFiles);\r\n setFileNames(\r\n updatedFiles.map((file) =>\r\n file.name.length > 30 ? file.name.slice(0, 27) + \"...\" : file.name\r\n )\r\n );\r\n };\r\n\r\n const getButtonLabel = () => {\r\n if (fileNames.length > 0) return multiple ? \"Add Files\" : \"Select New\";\r\n return \"Choose File\";\r\n };\r\n\r\n const handleDragOver = (e: React.DragEvent) => {\r\n e.preventDefault();\r\n setIsDragging(true);\r\n };\r\n\r\n const handleDragLeave = () => {\r\n setIsDragging(false);\r\n };\r\n\r\n const handleDrop = (e: React.DragEvent) => {\r\n e.preventDefault();\r\n setIsDragging(false);\r\n const droppedFiles = e.dataTransfer.files;\r\n if (droppedFiles.length > 0) {\r\n handleFileChange({\r\n target: { files: droppedFiles },\r\n } as React.ChangeEvent<HTMLInputElement>);\r\n }\r\n };\r\n\r\n const handleUpload = () => {\r\n if (!files || uploading) return;\r\n setUploading(true);\r\n setInternalProgress(0);\r\n setUploadMessage(null);\r\n\r\n const interval = setInterval(() => {\r\n setInternalProgress((prev) => {\r\n if (prev >= 100) {\r\n clearInterval(interval);\r\n setTimeout(() => {\r\n setUploading(false);\r\n try {\r\n onSubmit(files);\r\n setUploadMessage(\"Upload successful.\");\r\n } catch {\r\n setUploadMessage(\"Upload failed. Please try again.\");\r\n }\r\n }, 500);\r\n return 100;\r\n }\r\n return prev + 10;\r\n });\r\n }, 100);\r\n };\r\n\r\n const containerClassName = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.fileUpload,\r\n classMap[state],\r\n classMap[theme],\r\n outlineShadow && classMap[`shadow${capitalize(outlineShadow)}`],\r\n outlineRounding && classMap[`round${capitalize(outlineRounding)}`],\r\n error && classMap.error,\r\n isDragging ? \"dragging\" : \"\",\r\n disabled && classMap.disabled\r\n ),\r\n [classMap, isDragging, theme, state, disabled]\r\n );\r\n\r\n return (\r\n <FormGroup\r\n label={label}\r\n description={description}\r\n error={error}\r\n required={required}\r\n data-testid={testId}\r\n >\r\n <div\r\n className={containerClassName}\r\n onDragOver={handleDragOver}\r\n onDragLeave={handleDragLeave}\r\n onDrop={handleDrop}\r\n data-testid={testId ? `${testId}-wrapper` : undefined}\r\n >\r\n <input\r\n ref={fileInput}\r\n id={`${testId}-input`}\r\n type=\"file\"\r\n multiple={multiple}\r\n onChange={handleFileChange}\r\n className={classMap.hiddenInput}\r\n aria-required={required}\r\n aria-label={label}\r\n aria-describedby={`${testId}-description ${testId}-error`}\r\n data-testid={testId ? `${testId}-input` : undefined}\r\n />\r\n\r\n <div className={classMap.uploadActions}>\r\n <Button\r\n icon={FileIcon}\r\n size=\"small\"\r\n theme={theme}\r\n state={error && classMap.error}\r\n className={classMap.fileInput}\r\n disabled={uploading || disabled}\r\n outline={outline}\r\n rounding={controlRounding}\r\n shadow={controlShadow}\r\n onClick={() => fileInput.current?.click()}\r\n aria-label={\r\n fileNames.length > 0 ? fileNames.join(\", \") : \"Choose File\"\r\n }\r\n data-testid={testId ? `${testId}-file-button` : undefined}\r\n >\r\n {getButtonLabel()}\r\n </Button>\r\n </div>\r\n\r\n {rejectedFiles.length > 0 && (\r\n <div className={classMap.rejectedFiles}>\r\n <p className={classMap.rejectedLabel}>Rejected Files:</p>\r\n <ul className={classMap.rejectedList}>\r\n {rejectedFiles.map((file, index) => (\r\n <li key={index} className={classMap.rejectedItem}>\r\n <span>{file.name}</span>\r\n <span className={classMap.rejectedReason}>\r\n {\" \"}\r\n – {file.reason}\r\n </span>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n\r\n {fileNames.length > 0 && (\r\n <div\r\n className={classMap.uploadControls}\r\n data-testid={testId ? `${testId}-controls` : undefined}\r\n >\r\n <ul className={classMap.fileList}>\r\n {fileNames.map((name, index) => (\r\n <li key={index} className={classMap.fileListItem}>\r\n <span>{name}</span>\r\n <IconButton\r\n icon={TrashIcon}\r\n theme=\"error\"\r\n size=\"xsmall\"\r\n outline\r\n aria-label={`Remove ${name}`}\r\n onClick={() => removeFile(index)}\r\n className={classMap.removeButton}\r\n />\r\n </li>\r\n ))}\r\n </ul>\r\n {uploading && (\r\n <ProgressBar\r\n theme={theme}\r\n className={classMap.uploadProgress}\r\n progress={uploadProgress ?? internalProgress}\r\n indeterminate={uploadProgress === undefined}\r\n data-testid={testId ? `${testId}-progress` : undefined}\r\n />\r\n )}\r\n {!uploading && (\r\n <Button\r\n theme={theme}\r\n state={(error && classMap.error) || state}\r\n disabled={uploading}\r\n onClick={handleUpload}\r\n loading={uploading}\r\n size=\"small\"\r\n className={classMap.uploadButton}\r\n data-testid={testId ? `${testId}-upload-button` : undefined}\r\n >\r\n Upload\r\n </Button>\r\n )}\r\n </div>\r\n )}\r\n <div\r\n className=\"sr_only\"\r\n aria-live=\"polite\"\r\n aria-atomic=\"true\"\r\n data-testid={testId ? `${testId}-upload-message` : undefined}\r\n >\r\n {uploadMessage}\r\n </div>\r\n </div>\r\n </FormGroup>\r\n );\r\n};\r\n\r\nexport default BaseFileUpload;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport BaseFileUpload from \"../FileUploadBase\";\r\nimport { FileUploadProps } from \"../FileUpload.types\";\r\nimport { Button, IconButton, Progressbar, FormGroup } from \"@/index.next\";\r\nimport styles from \"./FileUpload.module.scss\";\r\n\r\nconst FileUpload: React.FC<FileUploadProps> = (props) => {\r\n return (\r\n <BaseFileUpload\r\n {...props}\r\n FormGroup={FormGroup}\r\n Button={Button}\r\n IconButton={IconButton}\r\n ProgressBar={Progressbar}\r\n classMap={styles}\r\n />\r\n );\r\n};\r\n\r\nexport default FileUpload;\r\n"],"names":["error","uploadProgress","FormGroup","disabled","Button","IconButton","ProgressBar","rejectedFiles"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
- const FileUpload = require("./FileUpload-jh5iTgY-.cjs");
2
+ const FileUpload = require("./FileUpload-427ZyzCY.cjs");
3
3
  module.exports = FileUpload.FileUpload;
4
4
  //# sourceMappingURL=FileUpload.cjs.js.map
@@ -1,4 +1,4 @@
1
- import { F } from "./FileUpload-CgPHe6Nn.js";
1
+ import { F } from "./FileUpload-DQhKhtgc.js";
2
2
  export {
3
3
  F as default
4
4
  };
@@ -105,27 +105,27 @@ const BaseFormGroup = ({
105
105
  }
106
106
  );
107
107
  };
108
- const noScroll = "_noScroll_1a958_91";
109
- const errorMessage = "_errorMessage_1a958_92";
110
- const loadingContainer = "_loadingContainer_1a958_93";
111
- const hideScrollbar = "_hideScrollbar_1a958_85";
112
- const sr_only = "_sr_only_1a958_94";
113
- const wrapper = "_wrapper_1a958_479";
114
- const label = "_label_1a958_486";
115
- const required = "_required_1a958_492";
116
- const inputWrapper = "_inputWrapper_1a958_497";
117
- const inputField = "_inputField_1a958_509";
118
- const controller = "_controller_1a958_513";
119
- const description = "_description_1a958_525";
120
- const horizontal = "_horizontal_1a958_539";
121
- const error = "_error_1a958_92";
122
- const xs = "_xs_1a958_588";
123
- const small = "_small_1a958_592";
124
- const medium = "_medium_1a958_596";
125
- const large = "_large_1a958_600";
126
- const xl = "_xl_1a958_604";
127
- const spin = "_spin_1a958_1";
128
- const pulse = "_pulse_1a958_1";
108
+ const noScroll = "_noScroll_g0yqm_91";
109
+ const errorMessage = "_errorMessage_g0yqm_92";
110
+ const loadingContainer = "_loadingContainer_g0yqm_93";
111
+ const hideScrollbar = "_hideScrollbar_g0yqm_85";
112
+ const sr_only = "_sr_only_g0yqm_94";
113
+ const wrapper = "_wrapper_g0yqm_479";
114
+ const label = "_label_g0yqm_486";
115
+ const required = "_required_g0yqm_492";
116
+ const inputWrapper = "_inputWrapper_g0yqm_497";
117
+ const inputField = "_inputField_g0yqm_510";
118
+ const controller = "_controller_g0yqm_514";
119
+ const description = "_description_g0yqm_526";
120
+ const horizontal = "_horizontal_g0yqm_540";
121
+ const error = "_error_g0yqm_92";
122
+ const xs = "_xs_g0yqm_589";
123
+ const small = "_small_g0yqm_593";
124
+ const medium = "_medium_g0yqm_597";
125
+ const large = "_large_g0yqm_601";
126
+ const xl = "_xl_g0yqm_605";
127
+ const spin = "_spin_g0yqm_1";
128
+ const pulse = "_pulse_g0yqm_1";
129
129
  const styles = {
130
130
  noScroll,
131
131
  errorMessage,
@@ -146,15 +146,15 @@ const styles = {
146
146
  medium,
147
147
  large,
148
148
  xl,
149
- "fade-in": "_fade-in_1a958_1",
150
- "slide-up": "_slide-up_1a958_1",
151
- "spin-3d": "_spin-3d_1a958_1",
149
+ "fade-in": "_fade-in_g0yqm_1",
150
+ "slide-up": "_slide-up_g0yqm_1",
151
+ "spin-3d": "_spin-3d_g0yqm_1",
152
152
  spin,
153
153
  pulse,
154
- "fade-in-up": "_fade-in-up_1a958_1",
155
- "progress-grow": "_progress-grow_1a958_1",
156
- "indeterminate-move": "_indeterminate-move_1a958_1",
157
- "skeleton-loading": "_skeleton-loading_1a958_1"
154
+ "fade-in-up": "_fade-in-up_g0yqm_1",
155
+ "progress-grow": "_progress-grow_g0yqm_1",
156
+ "indeterminate-move": "_indeterminate-move_g0yqm_1",
157
+ "skeleton-loading": "_skeleton-loading_g0yqm_1"
158
158
  };
159
159
  const FormGroup = (props) => {
160
160
  return /* @__PURE__ */ jsx(BaseFormGroup, { ...props, classMap: styles });
@@ -162,4 +162,4 @@ const FormGroup = (props) => {
162
162
  export {
163
163
  FormGroup as F
164
164
  };
165
- //# sourceMappingURL=FormGroup-DuBfLAMv.js.map
165
+ //# sourceMappingURL=FormGroup-BMLGXHiz.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FormGroup-DuBfLAMv.js","sources":["../../src/components/FormGroup/FormGroupBase.tsx","../../src/components/FormGroup/next/FormGroup.tsx"],"sourcesContent":["import React from \"react\";\r\nimport { FormGroupProps } from \"./FormGroup.types\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\n\r\nexport interface BaseFormGroupProps extends FormGroupProps {\r\n classMap: Record<string, string>;\r\n}\r\n\r\nconst BaseFormGroup: React.FC<BaseFormGroupProps> = ({\r\n label,\r\n description,\r\n error,\r\n children,\r\n id,\r\n required = false,\r\n className = \"\",\r\n layout = \"vertical\",\r\n hideLabel = false,\r\n spacing = \"xs\",\r\n controller,\r\n \"data-testid\": testId = \"form-group\",\r\n classMap,\r\n}) => {\r\n const labelId = id ? `${id}-label` : undefined;\r\n const descriptionId = description ? `${id}-description` : undefined;\r\n const errorId = error ? `${id}-error` : undefined;\r\n\r\n const describedBy =\r\n [errorId, descriptionId].filter(Boolean).join(\" \") || undefined;\r\n\r\n const childrenArray = React.Children.toArray(children);\r\n\r\n return (\r\n <div\r\n className={combineClassNames(\r\n classMap.wrapper,\r\n classMap[layout],\r\n classMap[spacing],\r\n error && classMap.error,\r\n className\r\n )}\r\n role=\"group\"\r\n aria-labelledby={labelId}\r\n aria-describedby={describedBy}\r\n data-testid={testId}\r\n >\r\n {label && (\r\n <label\r\n id={labelId}\r\n className={combineClassNames(classMap.label, hideLabel && \"sr_only\")}\r\n data-testid={`${testId}-label`}\r\n >\r\n {label}\r\n {required && (\r\n <span\r\n className={classMap.required}\r\n aria-hidden=\"true\"\r\n data-testid={`${testId}-required`}\r\n >\r\n *\r\n </span>\r\n )}\r\n </label>\r\n )}\r\n\r\n {childrenArray.map((child, index) => (\r\n <div\r\n key={index}\r\n className={classMap.inputWrapper}\r\n data-testid={`${testId}-wrapper-${index}`}\r\n >\r\n <div\r\n className={classMap.inputField}\r\n data-testid={`${testId}-input-field-${index}`}\r\n >\r\n {child}\r\n </div>\r\n\r\n {controller && index === 0 && (\r\n <div\r\n className={classMap.controller}\r\n data-testid={`${testId}-controller`}\r\n >\r\n {controller}\r\n </div>\r\n )}\r\n </div>\r\n ))}\r\n\r\n {description && !error && (\r\n <p\r\n id={descriptionId}\r\n className={`${classMap.description}`}\r\n data-testid={`${testId}-description`}\r\n >\r\n {description}\r\n </p>\r\n )}\r\n\r\n {error && (\r\n <p\r\n id={errorId}\r\n className={classMap.errorMessage}\r\n role=\"alert\"\r\n data-testid={`${testId}-error`}\r\n >\r\n {error}\r\n </p>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default BaseFormGroup;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport BaseFormGroup from \"../FormGroupBase\";\r\nimport styles from \"./FormGroup.module.scss\";\r\nimport { FormGroupProps } from \"../FormGroup.types\";\r\n\r\nconst FormGroup: React.FC<FormGroupProps> = (props) => {\r\n return <BaseFormGroup {...props} classMap={styles} />;\r\n};\r\n\r\nexport default FormGroup;\r\n"],"names":["label","description","error","required","controller"],"mappings":";;;AAQA,MAAM,gBAA8C,CAAC;AAAA,EACnD,OAAAA;AAAA,EACA,aAAAC;AAAA,EACA,OAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAAC,YAAW;AAAA,EACX,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,YAAAC;AAAA,EACA,eAAe,SAAS;AAAA,EACxB;AACF,MAAM;AACJ,QAAM,UAAU,KAAK,GAAG,EAAE,WAAW;AACrC,QAAM,gBAAgBH,eAAc,GAAG,EAAE,iBAAiB;AAC1D,QAAM,UAAUC,SAAQ,GAAG,EAAE,WAAW;AAExC,QAAM,cACJ,CAAC,SAAS,aAAa,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,KAAK;AAExD,QAAM,gBAAgB,MAAM,SAAS,QAAQ,QAAQ;AAErD,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW;AAAA,QACT,SAAS;AAAA,QACT,SAAS,MAAM;AAAA,QACf,SAAS,OAAO;AAAA,QAChBA,UAAS,SAAS;AAAA,QAClB;AAAA,MAAA;AAAA,MAEF,MAAK;AAAA,MACL,mBAAiB;AAAA,MACjB,oBAAkB;AAAA,MAClB,eAAa;AAAA,MAEZ,UAAA;AAAA,QAAAF,UACC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,IAAI;AAAA,YACJ,WAAW,kBAAkB,SAAS,OAAO,aAAa,SAAS;AAAA,YACnE,eAAa,GAAG,MAAM;AAAA,YAErB,UAAA;AAAA,cAAAA;AAAA,cACAG,aACC;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,WAAW,SAAS;AAAA,kBACpB,eAAY;AAAA,kBACZ,eAAa,GAAG,MAAM;AAAA,kBACvB,UAAA;AAAA,gBAAA;AAAA,cAAA;AAAA,YAED;AAAA,UAAA;AAAA,QAAA;AAAA,QAKL,cAAc,IAAI,CAAC,OAAO,UACzB;AAAA,UAAC;AAAA,UAAA;AAAA,YAEC,WAAW,SAAS;AAAA,YACpB,eAAa,GAAG,MAAM,YAAY,KAAK;AAAA,YAEvC,UAAA;AAAA,cAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,WAAW,SAAS;AAAA,kBACpB,eAAa,GAAG,MAAM,gBAAgB,KAAK;AAAA,kBAE1C,UAAA;AAAA,gBAAA;AAAA,cAAA;AAAA,cAGFC,eAAc,UAAU,KACvB;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,WAAW,SAAS;AAAA,kBACpB,eAAa,GAAG,MAAM;AAAA,kBAErB,UAAAA;AAAA,gBAAA;AAAA,cAAA;AAAA,YACH;AAAA,UAAA;AAAA,UAjBG;AAAA,QAAA,CAoBR;AAAA,QAEAH,gBAAe,CAACC,UACf;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,IAAI;AAAA,YACJ,WAAW,GAAG,SAAS,WAAW;AAAA,YAClC,eAAa,GAAG,MAAM;AAAA,YAErB,UAAAD;AAAA,UAAA;AAAA,QAAA;AAAA,QAIJC,UACC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,IAAI;AAAA,YACJ,WAAW,SAAS;AAAA,YACpB,MAAK;AAAA,YACL,eAAa,GAAG,MAAM;AAAA,YAErB,UAAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MACH;AAAA,IAAA;AAAA,EAAA;AAIR;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxGA,MAAM,YAAsC,CAAC,UAAU;AACrD,SAAO,oBAAC,eAAA,EAAe,GAAG,OAAO,UAAU,QAAQ;AACrD;"}
1
+ {"version":3,"file":"FormGroup-BMLGXHiz.js","sources":["../../src/components/FormGroup/FormGroupBase.tsx","../../src/components/FormGroup/next/FormGroup.tsx"],"sourcesContent":["import React from \"react\";\r\nimport { FormGroupProps } from \"./FormGroup.types\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\n\r\nexport interface BaseFormGroupProps extends FormGroupProps {\r\n classMap: Record<string, string>;\r\n}\r\n\r\nconst BaseFormGroup: React.FC<BaseFormGroupProps> = ({\r\n label,\r\n description,\r\n error,\r\n children,\r\n id,\r\n required = false,\r\n className = \"\",\r\n layout = \"vertical\",\r\n hideLabel = false,\r\n spacing = \"xs\",\r\n controller,\r\n \"data-testid\": testId = \"form-group\",\r\n classMap,\r\n}) => {\r\n const labelId = id ? `${id}-label` : undefined;\r\n const descriptionId = description ? `${id}-description` : undefined;\r\n const errorId = error ? `${id}-error` : undefined;\r\n\r\n const describedBy =\r\n [errorId, descriptionId].filter(Boolean).join(\" \") || undefined;\r\n\r\n const childrenArray = React.Children.toArray(children);\r\n\r\n return (\r\n <div\r\n className={combineClassNames(\r\n classMap.wrapper,\r\n classMap[layout],\r\n classMap[spacing],\r\n error && classMap.error,\r\n className\r\n )}\r\n role=\"group\"\r\n aria-labelledby={labelId}\r\n aria-describedby={describedBy}\r\n data-testid={testId}\r\n >\r\n {label && (\r\n <label\r\n id={labelId}\r\n className={combineClassNames(classMap.label, hideLabel && \"sr_only\")}\r\n data-testid={`${testId}-label`}\r\n >\r\n {label}\r\n {required && (\r\n <span\r\n className={classMap.required}\r\n aria-hidden=\"true\"\r\n data-testid={`${testId}-required`}\r\n >\r\n *\r\n </span>\r\n )}\r\n </label>\r\n )}\r\n\r\n {childrenArray.map((child, index) => (\r\n <div\r\n key={index}\r\n className={classMap.inputWrapper}\r\n data-testid={`${testId}-wrapper-${index}`}\r\n >\r\n <div\r\n className={classMap.inputField}\r\n data-testid={`${testId}-input-field-${index}`}\r\n >\r\n {child}\r\n </div>\r\n\r\n {controller && index === 0 && (\r\n <div\r\n className={classMap.controller}\r\n data-testid={`${testId}-controller`}\r\n >\r\n {controller}\r\n </div>\r\n )}\r\n </div>\r\n ))}\r\n\r\n {description && !error && (\r\n <p\r\n id={descriptionId}\r\n className={`${classMap.description}`}\r\n data-testid={`${testId}-description`}\r\n >\r\n {description}\r\n </p>\r\n )}\r\n\r\n {error && (\r\n <p\r\n id={errorId}\r\n className={classMap.errorMessage}\r\n role=\"alert\"\r\n data-testid={`${testId}-error`}\r\n >\r\n {error}\r\n </p>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default BaseFormGroup;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport BaseFormGroup from \"../FormGroupBase\";\r\nimport styles from \"./FormGroup.module.scss\";\r\nimport { FormGroupProps } from \"../FormGroup.types\";\r\n\r\nconst FormGroup: React.FC<FormGroupProps> = (props) => {\r\n return <BaseFormGroup {...props} classMap={styles} />;\r\n};\r\n\r\nexport default FormGroup;\r\n"],"names":["label","description","error","required","controller"],"mappings":";;;AAQA,MAAM,gBAA8C,CAAC;AAAA,EACnD,OAAAA;AAAA,EACA,aAAAC;AAAA,EACA,OAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAAC,YAAW;AAAA,EACX,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,YAAAC;AAAA,EACA,eAAe,SAAS;AAAA,EACxB;AACF,MAAM;AACJ,QAAM,UAAU,KAAK,GAAG,EAAE,WAAW;AACrC,QAAM,gBAAgBH,eAAc,GAAG,EAAE,iBAAiB;AAC1D,QAAM,UAAUC,SAAQ,GAAG,EAAE,WAAW;AAExC,QAAM,cACJ,CAAC,SAAS,aAAa,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,KAAK;AAExD,QAAM,gBAAgB,MAAM,SAAS,QAAQ,QAAQ;AAErD,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW;AAAA,QACT,SAAS;AAAA,QACT,SAAS,MAAM;AAAA,QACf,SAAS,OAAO;AAAA,QAChBA,UAAS,SAAS;AAAA,QAClB;AAAA,MAAA;AAAA,MAEF,MAAK;AAAA,MACL,mBAAiB;AAAA,MACjB,oBAAkB;AAAA,MAClB,eAAa;AAAA,MAEZ,UAAA;AAAA,QAAAF,UACC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,IAAI;AAAA,YACJ,WAAW,kBAAkB,SAAS,OAAO,aAAa,SAAS;AAAA,YACnE,eAAa,GAAG,MAAM;AAAA,YAErB,UAAA;AAAA,cAAAA;AAAA,cACAG,aACC;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,WAAW,SAAS;AAAA,kBACpB,eAAY;AAAA,kBACZ,eAAa,GAAG,MAAM;AAAA,kBACvB,UAAA;AAAA,gBAAA;AAAA,cAAA;AAAA,YAED;AAAA,UAAA;AAAA,QAAA;AAAA,QAKL,cAAc,IAAI,CAAC,OAAO,UACzB;AAAA,UAAC;AAAA,UAAA;AAAA,YAEC,WAAW,SAAS;AAAA,YACpB,eAAa,GAAG,MAAM,YAAY,KAAK;AAAA,YAEvC,UAAA;AAAA,cAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,WAAW,SAAS;AAAA,kBACpB,eAAa,GAAG,MAAM,gBAAgB,KAAK;AAAA,kBAE1C,UAAA;AAAA,gBAAA;AAAA,cAAA;AAAA,cAGFC,eAAc,UAAU,KACvB;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,WAAW,SAAS;AAAA,kBACpB,eAAa,GAAG,MAAM;AAAA,kBAErB,UAAAA;AAAA,gBAAA;AAAA,cAAA;AAAA,YACH;AAAA,UAAA;AAAA,UAjBG;AAAA,QAAA,CAoBR;AAAA,QAEAH,gBAAe,CAACC,UACf;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,IAAI;AAAA,YACJ,WAAW,GAAG,SAAS,WAAW;AAAA,YAClC,eAAa,GAAG,MAAM;AAAA,YAErB,UAAAD;AAAA,UAAA;AAAA,QAAA;AAAA,QAIJC,UACC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,IAAI;AAAA,YACJ,WAAW,SAAS;AAAA,YACpB,MAAK;AAAA,YACL,eAAa,GAAG,MAAM;AAAA,YAErB,UAAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MACH;AAAA,IAAA;AAAA,EAAA;AAIR;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxGA,MAAM,YAAsC,CAAC,UAAU;AACrD,SAAO,oBAAC,eAAA,EAAe,GAAG,OAAO,UAAU,QAAQ;AACrD;"}
@@ -106,27 +106,27 @@ const BaseFormGroup = ({
106
106
  }
107
107
  );
108
108
  };
109
- const noScroll = "_noScroll_1a958_91";
110
- const errorMessage = "_errorMessage_1a958_92";
111
- const loadingContainer = "_loadingContainer_1a958_93";
112
- const hideScrollbar = "_hideScrollbar_1a958_85";
113
- const sr_only = "_sr_only_1a958_94";
114
- const wrapper = "_wrapper_1a958_479";
115
- const label = "_label_1a958_486";
116
- const required = "_required_1a958_492";
117
- const inputWrapper = "_inputWrapper_1a958_497";
118
- const inputField = "_inputField_1a958_509";
119
- const controller = "_controller_1a958_513";
120
- const description = "_description_1a958_525";
121
- const horizontal = "_horizontal_1a958_539";
122
- const error = "_error_1a958_92";
123
- const xs = "_xs_1a958_588";
124
- const small = "_small_1a958_592";
125
- const medium = "_medium_1a958_596";
126
- const large = "_large_1a958_600";
127
- const xl = "_xl_1a958_604";
128
- const spin = "_spin_1a958_1";
129
- const pulse = "_pulse_1a958_1";
109
+ const noScroll = "_noScroll_g0yqm_91";
110
+ const errorMessage = "_errorMessage_g0yqm_92";
111
+ const loadingContainer = "_loadingContainer_g0yqm_93";
112
+ const hideScrollbar = "_hideScrollbar_g0yqm_85";
113
+ const sr_only = "_sr_only_g0yqm_94";
114
+ const wrapper = "_wrapper_g0yqm_479";
115
+ const label = "_label_g0yqm_486";
116
+ const required = "_required_g0yqm_492";
117
+ const inputWrapper = "_inputWrapper_g0yqm_497";
118
+ const inputField = "_inputField_g0yqm_510";
119
+ const controller = "_controller_g0yqm_514";
120
+ const description = "_description_g0yqm_526";
121
+ const horizontal = "_horizontal_g0yqm_540";
122
+ const error = "_error_g0yqm_92";
123
+ const xs = "_xs_g0yqm_589";
124
+ const small = "_small_g0yqm_593";
125
+ const medium = "_medium_g0yqm_597";
126
+ const large = "_large_g0yqm_601";
127
+ const xl = "_xl_g0yqm_605";
128
+ const spin = "_spin_g0yqm_1";
129
+ const pulse = "_pulse_g0yqm_1";
130
130
  const styles = {
131
131
  noScroll,
132
132
  errorMessage,
@@ -147,18 +147,18 @@ const styles = {
147
147
  medium,
148
148
  large,
149
149
  xl,
150
- "fade-in": "_fade-in_1a958_1",
151
- "slide-up": "_slide-up_1a958_1",
152
- "spin-3d": "_spin-3d_1a958_1",
150
+ "fade-in": "_fade-in_g0yqm_1",
151
+ "slide-up": "_slide-up_g0yqm_1",
152
+ "spin-3d": "_spin-3d_g0yqm_1",
153
153
  spin,
154
154
  pulse,
155
- "fade-in-up": "_fade-in-up_1a958_1",
156
- "progress-grow": "_progress-grow_1a958_1",
157
- "indeterminate-move": "_indeterminate-move_1a958_1",
158
- "skeleton-loading": "_skeleton-loading_1a958_1"
155
+ "fade-in-up": "_fade-in-up_g0yqm_1",
156
+ "progress-grow": "_progress-grow_g0yqm_1",
157
+ "indeterminate-move": "_indeterminate-move_g0yqm_1",
158
+ "skeleton-loading": "_skeleton-loading_g0yqm_1"
159
159
  };
160
160
  const FormGroup = (props) => {
161
161
  return /* @__PURE__ */ require$$2.jsx(BaseFormGroup, { ...props, classMap: styles });
162
162
  };
163
163
  exports.FormGroup = FormGroup;
164
- //# sourceMappingURL=FormGroup-BAtifQGH.cjs.map
164
+ //# sourceMappingURL=FormGroup-Bstsn_US.cjs.map