@salt-ds/lab 1.0.0-alpha.6 → 1.0.0-alpha.7

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 (72) hide show
  1. package/dist-cjs/packages/lab/src/form-field-context/FormFieldContextNext.js.map +1 -1
  2. package/dist-cjs/packages/lab/src/form-field-next/FormFieldControlWrapper.css.js +9 -0
  3. package/dist-cjs/packages/lab/src/form-field-next/FormFieldControlWrapper.css.js.map +1 -0
  4. package/dist-cjs/packages/lab/src/form-field-next/FormFieldControlWrapper.js +16 -0
  5. package/dist-cjs/packages/lab/src/form-field-next/FormFieldControlWrapper.js.map +1 -0
  6. package/dist-cjs/packages/lab/src/form-field-next/FormFieldHelperText.css.js +1 -1
  7. package/dist-cjs/packages/lab/src/form-field-next/FormFieldHelperText.js +24 -9
  8. package/dist-cjs/packages/lab/src/form-field-next/FormFieldHelperText.js.map +1 -1
  9. package/dist-cjs/packages/lab/src/form-field-next/FormFieldLabel.css.js +1 -1
  10. package/dist-cjs/packages/lab/src/form-field-next/FormFieldLabel.js +16 -10
  11. package/dist-cjs/packages/lab/src/form-field-next/FormFieldLabel.js.map +1 -1
  12. package/dist-cjs/packages/lab/src/form-field-next/FormFieldNext.css.js +1 -1
  13. package/dist-cjs/packages/lab/src/form-field-next/FormFieldNext.js +11 -44
  14. package/dist-cjs/packages/lab/src/form-field-next/FormFieldNext.js.map +1 -1
  15. package/dist-cjs/packages/lab/src/index.js +6 -2
  16. package/dist-cjs/packages/lab/src/index.js.map +1 -1
  17. package/dist-cjs/packages/lab/src/input-next/InputNext.css.js +1 -1
  18. package/dist-cjs/packages/lab/src/input-next/InputNext.js +46 -36
  19. package/dist-cjs/packages/lab/src/input-next/InputNext.js.map +1 -1
  20. package/dist-cjs/packages/lab/src/status-adornment/ErrorAdornment.js +24 -0
  21. package/dist-cjs/packages/lab/src/status-adornment/ErrorAdornment.js.map +1 -0
  22. package/dist-cjs/packages/lab/src/status-adornment/StatusAdornment.css.js +9 -0
  23. package/dist-cjs/packages/lab/src/status-adornment/StatusAdornment.css.js.map +1 -0
  24. package/dist-cjs/packages/lab/src/status-adornment/StatusAdornment.js +39 -0
  25. package/dist-cjs/packages/lab/src/status-adornment/StatusAdornment.js.map +1 -0
  26. package/dist-cjs/packages/lab/src/status-adornment/SuccessAdornment.js +24 -0
  27. package/dist-cjs/packages/lab/src/status-adornment/SuccessAdornment.js.map +1 -0
  28. package/dist-cjs/packages/lab/src/status-adornment/WarningAdornment.js +22 -0
  29. package/dist-cjs/packages/lab/src/status-adornment/WarningAdornment.js.map +1 -0
  30. package/dist-es/packages/lab/src/form-field-context/FormFieldContextNext.js.map +1 -1
  31. package/dist-es/packages/lab/src/form-field-next/FormFieldControlWrapper.css.js +7 -0
  32. package/dist-es/packages/lab/src/form-field-next/FormFieldControlWrapper.css.js.map +1 -0
  33. package/dist-es/packages/lab/src/form-field-next/FormFieldControlWrapper.js +12 -0
  34. package/dist-es/packages/lab/src/form-field-next/FormFieldControlWrapper.js.map +1 -0
  35. package/dist-es/packages/lab/src/form-field-next/FormFieldHelperText.css.js +1 -1
  36. package/dist-es/packages/lab/src/form-field-next/FormFieldHelperText.js +26 -11
  37. package/dist-es/packages/lab/src/form-field-next/FormFieldHelperText.js.map +1 -1
  38. package/dist-es/packages/lab/src/form-field-next/FormFieldLabel.css.js +1 -1
  39. package/dist-es/packages/lab/src/form-field-next/FormFieldLabel.js +16 -10
  40. package/dist-es/packages/lab/src/form-field-next/FormFieldLabel.js.map +1 -1
  41. package/dist-es/packages/lab/src/form-field-next/FormFieldNext.css.js +1 -1
  42. package/dist-es/packages/lab/src/form-field-next/FormFieldNext.js +12 -45
  43. package/dist-es/packages/lab/src/form-field-next/FormFieldNext.js.map +1 -1
  44. package/dist-es/packages/lab/src/index.js +3 -2
  45. package/dist-es/packages/lab/src/index.js.map +1 -1
  46. package/dist-es/packages/lab/src/input-next/InputNext.css.js +1 -1
  47. package/dist-es/packages/lab/src/input-next/InputNext.js +47 -37
  48. package/dist-es/packages/lab/src/input-next/InputNext.js.map +1 -1
  49. package/dist-es/packages/lab/src/status-adornment/ErrorAdornment.js +20 -0
  50. package/dist-es/packages/lab/src/status-adornment/ErrorAdornment.js.map +1 -0
  51. package/dist-es/packages/lab/src/status-adornment/StatusAdornment.css.js +7 -0
  52. package/dist-es/packages/lab/src/status-adornment/StatusAdornment.css.js.map +1 -0
  53. package/dist-es/packages/lab/src/status-adornment/StatusAdornment.js +35 -0
  54. package/dist-es/packages/lab/src/status-adornment/StatusAdornment.js.map +1 -0
  55. package/dist-es/packages/lab/src/status-adornment/SuccessAdornment.js +20 -0
  56. package/dist-es/packages/lab/src/status-adornment/SuccessAdornment.js.map +1 -0
  57. package/dist-es/packages/lab/src/status-adornment/WarningAdornment.js +18 -0
  58. package/dist-es/packages/lab/src/status-adornment/WarningAdornment.js.map +1 -0
  59. package/dist-types/form-field-context/FormFieldContextNext.d.ts +5 -2
  60. package/dist-types/form-field-next/FormFieldControlWrapper.d.ts +3 -0
  61. package/dist-types/form-field-next/FormFieldHelperText.d.ts +1 -6
  62. package/dist-types/form-field-next/FormFieldLabel.d.ts +1 -11
  63. package/dist-types/form-field-next/FormFieldNext.d.ts +9 -19
  64. package/dist-types/form-field-next/index.d.ts +1 -0
  65. package/dist-types/index.d.ts +1 -1
  66. package/dist-types/input-next/InputNext.d.ts +14 -7
  67. package/dist-types/status-adornment/ErrorAdornment.d.ts +4 -0
  68. package/dist-types/status-adornment/StatusAdornment.d.ts +13 -0
  69. package/dist-types/status-adornment/SuccessAdornment.d.ts +4 -0
  70. package/dist-types/status-adornment/WarningAdornment.d.ts +4 -0
  71. package/dist-types/status-adornment/index.d.ts +1 -0
  72. package/package.json +2 -2
@@ -0,0 +1,39 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var clsx = require('clsx');
7
+ var React = require('react');
8
+ var core = require('@salt-ds/core');
9
+ var ErrorAdornment = require('./ErrorAdornment.js');
10
+ var SuccessAdornment = require('./SuccessAdornment.js');
11
+ var WarningAdornment = require('./WarningAdornment.js');
12
+ require('./StatusAdornment.css.js');
13
+
14
+ const icons = {
15
+ error: ErrorAdornment.ErrorAdornmentIcon,
16
+ warning: WarningAdornment.WarningAdornmentIcon,
17
+ success: SuccessAdornment.SuccessAdornmentIcon
18
+ };
19
+ const statusToAriaLabelMap = {
20
+ error: "error",
21
+ warning: "warning",
22
+ success: "success"
23
+ };
24
+ const withBaseName = core.makePrefixer("saltStatusAdornment");
25
+ const StatusAdornment = React.forwardRef(
26
+ function StatusAdornment2({ className, status, ...restProps }, ref) {
27
+ const AdornmentComponent = icons[status];
28
+ const ariaLabel = statusToAriaLabelMap[status];
29
+ return /* @__PURE__ */ jsxRuntime.jsx(AdornmentComponent, {
30
+ className: clsx.clsx(withBaseName(), withBaseName(status), className),
31
+ "aria-label": ariaLabel,
32
+ ...restProps,
33
+ ref
34
+ });
35
+ }
36
+ );
37
+
38
+ exports.StatusAdornment = StatusAdornment;
39
+ //# sourceMappingURL=StatusAdornment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatusAdornment.js","sources":["../src/status-adornment/StatusAdornment.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport { forwardRef } from \"react\";\nimport { makePrefixer, ValidationStatus } from \"@salt-ds/core\";\nimport { IconProps } from \"@salt-ds/icons\";\nimport { ErrorAdornmentIcon } from \"./ErrorAdornment\";\nimport { SuccessAdornmentIcon } from \"./SuccessAdornment\";\nimport { WarningAdornmentIcon } from \"./WarningAdornment\";\n\nimport \"./StatusAdornment.css\";\n\nconst icons = {\n error: ErrorAdornmentIcon,\n warning: WarningAdornmentIcon,\n success: SuccessAdornmentIcon,\n};\n\ntype AdornmentValidationStatus = Exclude<ValidationStatus, \"info\">;\n\nexport interface StatusAdornmentProps extends IconProps {\n /**\n * Status adornment to be displayed.\n */\n status: AdornmentValidationStatus;\n}\n\nconst statusToAriaLabelMap: Record<AdornmentValidationStatus, string> = {\n error: \"error\",\n warning: \"warning\",\n success: \"success\",\n};\n\nconst withBaseName = makePrefixer(\"saltStatusAdornment\");\n\nexport const StatusAdornment = forwardRef<SVGSVGElement, StatusAdornmentProps>(\n function StatusAdornment({ className, status, ...restProps }, ref) {\n const AdornmentComponent = icons[status];\n const ariaLabel = statusToAriaLabelMap[status];\n\n return (\n <AdornmentComponent\n className={clsx(withBaseName(), withBaseName(status), className)}\n aria-label={ariaLabel}\n {...restProps}\n ref={ref}\n />\n );\n }\n);\n"],"names":["ErrorAdornmentIcon","WarningAdornmentIcon","SuccessAdornmentIcon","makePrefixer","forwardRef","StatusAdornment","jsx","clsx"],"mappings":";;;;;;;;;;;;;AAUA,MAAM,KAAQ,GAAA;AAAA,EACZ,KAAO,EAAAA,iCAAA;AAAA,EACP,OAAS,EAAAC,qCAAA;AAAA,EACT,OAAS,EAAAC,qCAAA;AACX,CAAA,CAAA;AAWA,MAAM,oBAAkE,GAAA;AAAA,EACtE,KAAO,EAAA,OAAA;AAAA,EACP,OAAS,EAAA,SAAA;AAAA,EACT,OAAS,EAAA,SAAA;AACX,CAAA,CAAA;AAEA,MAAM,YAAA,GAAeC,kBAAa,qBAAqB,CAAA,CAAA;AAEhD,MAAM,eAAkB,GAAAC,gBAAA;AAAA,EAC7B,SAASC,gBAAgB,CAAA,EAAE,WAAW,MAAW,EAAA,GAAA,SAAA,IAAa,GAAK,EAAA;AACjE,IAAA,MAAM,qBAAqB,KAAM,CAAA,MAAA,CAAA,CAAA;AACjC,IAAA,MAAM,YAAY,oBAAqB,CAAA,MAAA,CAAA,CAAA;AAEvC,IAAA,uBACGC,cAAA,CAAA,kBAAA,EAAA;AAAA,MACC,WAAWC,SAAK,CAAA,YAAA,IAAgB,YAAa,CAAA,MAAM,GAAG,SAAS,CAAA;AAAA,MAC/D,YAAY,EAAA,SAAA;AAAA,MACX,GAAG,SAAA;AAAA,MACJ,GAAA;AAAA,KACF,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
@@ -0,0 +1,24 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var React = require('react');
7
+
8
+ const SuccessAdornmentIcon = React.forwardRef(function SuccessAdornmentIcon2({ children, className, ...rest }, ref) {
9
+ return /* @__PURE__ */ jsxRuntime.jsx("svg", {
10
+ className,
11
+ ...rest,
12
+ role: "img",
13
+ viewBox: "0 0 10 8",
14
+ ref,
15
+ children: /* @__PURE__ */ jsxRuntime.jsx("path", {
16
+ "fill-rule": "evenodd",
17
+ "clip-rule": "evenodd",
18
+ d: "M2.92089 5.95735L8.96399 0L10 1.02133L2.92088 8L0 5.1205L1.03602 4.09918L2.92089 5.95735Z"
19
+ })
20
+ });
21
+ });
22
+
23
+ exports.SuccessAdornmentIcon = SuccessAdornmentIcon;
24
+ //# sourceMappingURL=SuccessAdornment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SuccessAdornment.js","sources":["../src/status-adornment/SuccessAdornment.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport { IconProps } from \"@salt-ds/icons\";\n\nexport type SuccessAdornmentIconProps = IconProps;\n\nexport const SuccessAdornmentIcon = forwardRef<\n SVGSVGElement,\n SuccessAdornmentIconProps\n>(function SuccessAdornmentIcon(\n { children, className, ...rest }: SuccessAdornmentIconProps,\n ref\n) {\n return (\n <svg\n className={className}\n {...rest}\n role=\"img\"\n viewBox=\"0 0 10 8\"\n ref={ref}\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M2.92089 5.95735L8.96399 0L10 1.02133L2.92088 8L0 5.1205L1.03602 4.09918L2.92089 5.95735Z\"\n />\n </svg>\n );\n});\n"],"names":["forwardRef","SuccessAdornmentIcon","jsx"],"mappings":";;;;;;;AAKa,MAAA,oBAAA,GAAuBA,iBAGlC,SAASC,qBAAAA,CACT,EAAE,QAAU,EAAA,SAAA,EAAA,GAAc,IAAK,EAAA,EAC/B,GACA,EAAA;AACA,EAAA,uBACGC,cAAA,CAAA,KAAA,EAAA;AAAA,IACC,SAAA;AAAA,IACC,GAAG,IAAA;AAAA,IACJ,IAAK,EAAA,KAAA;AAAA,IACL,OAAQ,EAAA,UAAA;AAAA,IACR,GAAA;AAAA,IAEA,QAAC,kBAAAA,cAAA,CAAA,MAAA,EAAA;AAAA,MACC,WAAU,EAAA,SAAA;AAAA,MACV,WAAU,EAAA,SAAA;AAAA,MACV,CAAE,EAAA,2FAAA;AAAA,KACJ,CAAA;AAAA,GACF,CAAA,CAAA;AAEJ,CAAC;;;;"}
@@ -0,0 +1,22 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var React = require('react');
7
+
8
+ const WarningAdornmentIcon = React.forwardRef(function WarningAdornmentIcon2({ children, className, ...rest }, ref) {
9
+ return /* @__PURE__ */ jsxRuntime.jsx("svg", {
10
+ className,
11
+ ...rest,
12
+ role: "img",
13
+ viewBox: "0 0 9 8",
14
+ ref,
15
+ children: /* @__PURE__ */ jsxRuntime.jsx("path", {
16
+ d: "M0 8L4.5 0L9 8H0Z"
17
+ })
18
+ });
19
+ });
20
+
21
+ exports.WarningAdornmentIcon = WarningAdornmentIcon;
22
+ //# sourceMappingURL=WarningAdornment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WarningAdornment.js","sources":["../src/status-adornment/WarningAdornment.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport { IconProps } from \"@salt-ds/icons\";\n\nexport type WarningAdornmentIconProps = IconProps;\n\nexport const WarningAdornmentIcon = forwardRef<\n SVGSVGElement,\n WarningAdornmentIconProps\n>(function WarningAdornmentIcon(\n { children, className, ...rest }: WarningAdornmentIconProps,\n ref\n) {\n return (\n <svg className={className} {...rest} role=\"img\" viewBox=\"0 0 9 8\" ref={ref}>\n <path d=\"M0 8L4.5 0L9 8H0Z\" />\n </svg>\n );\n});\n"],"names":["forwardRef","WarningAdornmentIcon","jsx"],"mappings":";;;;;;;AAKa,MAAA,oBAAA,GAAuBA,iBAGlC,SAASC,qBAAAA,CACT,EAAE,QAAU,EAAA,SAAA,EAAA,GAAc,IAAK,EAAA,EAC/B,GACA,EAAA;AACA,EAAA,uBACGC,cAAA,CAAA,KAAA,EAAA;AAAA,IAAI,SAAA;AAAA,IAAuB,GAAG,IAAA;AAAA,IAAM,IAAK,EAAA,KAAA;AAAA,IAAM,OAAQ,EAAA,SAAA;AAAA,IAAU,GAAA;AAAA,IAChE,QAAC,kBAAAA,cAAA,CAAA,MAAA,EAAA;AAAA,MAAK,CAAE,EAAA,mBAAA;AAAA,KAAoB,CAAA;AAAA,GAC9B,CAAA,CAAA;AAEJ,CAAC;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"FormFieldContextNext.js","sources":["../src/form-field-context/FormFieldContextNext.ts"],"sourcesContent":["import { createContext } from \"@salt-ds/core\";\nimport { useA11yValueValue } from \"../form-field-next\";\n\nexport interface FormFieldContextNextValue {\n a11yProps: useA11yValueValue;\n}\n\nexport const FormFieldContextNext = createContext(\n \"FormFieldContext\",\n {} as FormFieldContextNextValue\n);\n"],"names":[],"mappings":";;AAOO,MAAM,oBAAuB,GAAA,aAAA;AAAA,EAClC,kBAAA;AAAA,EACA,EAAC;AACH;;;;"}
1
+ {"version":3,"file":"FormFieldContextNext.js","sources":["../src/form-field-context/FormFieldContextNext.ts"],"sourcesContent":["import { createContext } from \"@salt-ds/core\";\nimport { a11yValueAriaProps } from \"../form-field-next\";\n\nexport interface FormFieldContextNextValue {\n a11yProps: a11yValueAriaProps;\n disabled: boolean;\n readOnly: boolean;\n validationStatus: \"error\" | \"warning\" | \"success\" | undefined;\n}\n\nexport const FormFieldContextNext = createContext(\n \"FormFieldContext\",\n {} as FormFieldContextNextValue\n);\n"],"names":[],"mappings":";;AAUO,MAAM,oBAAuB,GAAA,aAAA;AAAA,EAClC,kBAAA;AAAA,EACA,EAAC;AACH;;;;"}
@@ -0,0 +1,7 @@
1
+ import styleInject from '../../../../node_modules/style-inject/dist/style-inject.es.js';
2
+
3
+ var css_248z = ".saltFormFieldControlWrapper {\n align-items: center;\n display: grid;\n grid-auto-columns: minmax(min-content, 1fr);\n grid-auto-flow: column;\n grid-column-gap: var(--salt-size-unit);\n}\n";
4
+ styleInject(css_248z);
5
+
6
+ export { css_248z as default };
7
+ //# sourceMappingURL=FormFieldControlWrapper.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormFieldControlWrapper.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
@@ -0,0 +1,12 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { makePrefixer } from '@salt-ds/core';
3
+ import './FormFieldControlWrapper.css.js';
4
+
5
+ const withBaseName = makePrefixer("saltFormFieldControlWrapper");
6
+ const FormFieldControlWrapper = ({ children }) => /* @__PURE__ */ jsx("div", {
7
+ className: withBaseName(),
8
+ children
9
+ });
10
+
11
+ export { FormFieldControlWrapper };
12
+ //# sourceMappingURL=FormFieldControlWrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormFieldControlWrapper.js","sources":["../src/form-field-next/FormFieldControlWrapper.tsx"],"sourcesContent":["import { PropsWithChildren } from \"react\";\nimport { makePrefixer } from \"@salt-ds/core\";\n\nimport \"./FormFieldControlWrapper.css\";\n\nconst withBaseName = makePrefixer(\"saltFormFieldControlWrapper\");\n\nexport const FormFieldControlWrapper = ({ children }: PropsWithChildren) => (\n <div className={withBaseName()}>{children}</div>\n);\n"],"names":[],"mappings":";;;;AAKA,MAAM,YAAA,GAAe,aAAa,6BAA6B,CAAA,CAAA;AAExD,MAAM,uBAA0B,GAAA,CAAC,EAAE,QAAA,uBACvC,GAAA,CAAA,KAAA,EAAA;AAAA,EAAI,WAAW,YAAa,EAAA;AAAA,EAAI,QAAA;AAAA,CAAS;;;;"}
@@ -1,6 +1,6 @@
1
1
  import styleInject from '../../../../node_modules/style-inject/dist/style-inject.es.js';
2
2
 
3
- var css_248z = ".saltFormFieldHelperText.saltText {\n font-style: var(--saltFormField-helperText-fontStyle, var(--salt-editable-help-fontStyle));\n width: 100%;\n}\n";
3
+ var css_248z = ".saltFormFieldHelperText {\n display: flex;\n flex-direction: row;\n width: 100%;\n}\n\n.saltFormFieldHelperText .saltText {\n font-style: var(--saltFormField-helperText-fontStyle, var(--salt-editable-help-fontStyle));\n}\n\n.saltFormFieldHelperText-withValidation {\n column-gap: var(--salt-size-adornmentGap);\n}\n";
4
4
  styleInject(css_248z);
5
5
 
6
6
  export { css_248z as default };
@@ -1,22 +1,37 @@
1
- import { jsx } from 'react/jsx-runtime';
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import clsx from 'clsx';
3
- import { makePrefixer, Text } from '@salt-ds/core';
3
+ import { makePrefixer, StatusIndicator, Text } from '@salt-ds/core';
4
+ import '../form-field-context/FormFieldContext.js';
5
+ import '../form-field-context/FormFieldContextNext.js';
6
+ import 'react';
7
+ import { useFormFieldPropsNext } from '../form-field-context/useFormFieldPropsNext.js';
4
8
  import './FormFieldHelperText.css.js';
5
9
 
6
10
  const withBaseName = makePrefixer("saltFormFieldHelperText");
7
11
  const FormFieldHelperText = ({
8
12
  className,
9
- disabled,
10
- helperText,
13
+ children,
11
14
  ...restProps
12
15
  }) => {
13
- return /* @__PURE__ */ jsx(Text, {
14
- className: clsx(withBaseName(), className),
15
- disabled,
16
- variant: "secondary",
17
- styleAs: "label",
18
- ...restProps,
19
- children: helperText
16
+ const { disabled, readOnly, validationStatus } = useFormFieldPropsNext();
17
+ return /* @__PURE__ */ jsxs("div", {
18
+ className: clsx(
19
+ withBaseName(),
20
+ { [withBaseName("withValidation")]: validationStatus },
21
+ className
22
+ ),
23
+ children: [
24
+ !disabled && !readOnly && validationStatus && /* @__PURE__ */ jsx(StatusIndicator, {
25
+ status: validationStatus
26
+ }),
27
+ /* @__PURE__ */ jsx(Text, {
28
+ disabled,
29
+ variant: "secondary",
30
+ styleAs: "label",
31
+ ...restProps,
32
+ children
33
+ })
34
+ ]
20
35
  });
21
36
  };
22
37
 
@@ -1 +1 @@
1
- {"version":3,"file":"FormFieldHelperText.js","sources":["../src/form-field-next/FormFieldHelperText.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { makePrefixer, Text, TextProps } from \"@salt-ds/core\";\nimport { FormFieldProps } from \"./FormFieldNext\";\n\nimport \"./FormFieldHelperText.css\";\n\nconst withBaseName = makePrefixer(\"saltFormFieldHelperText\");\n\nexport interface FormFieldHelperTextProps\n extends Omit<TextProps<\"label\">, \"variant\" | \"styleAs\"> {\n helperText: FormFieldProps[\"helperText\"];\n disabled?: boolean;\n}\n\nexport const FormFieldHelperText = ({\n className,\n disabled,\n helperText,\n ...restProps\n}: FormFieldHelperTextProps) => {\n return (\n <Text\n className={clsx(withBaseName(), className)}\n disabled={disabled}\n variant=\"secondary\"\n styleAs=\"label\"\n {...restProps}\n >\n {helperText}\n </Text>\n );\n};\n"],"names":[],"mappings":";;;;;AAMA,MAAM,YAAA,GAAe,aAAa,yBAAyB,CAAA,CAAA;AAQpD,MAAM,sBAAsB,CAAC;AAAA,EAClC,SAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACG,GAAA,SAAA;AACL,CAAgC,KAAA;AAC9B,EAAA,uBACG,GAAA,CAAA,IAAA,EAAA;AAAA,IACC,SAAW,EAAA,IAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,IACzC,QAAA;AAAA,IACA,OAAQ,EAAA,WAAA;AAAA,IACR,OAAQ,EAAA,OAAA;AAAA,IACP,GAAG,SAAA;AAAA,IAEH,QAAA,EAAA,UAAA;AAAA,GACH,CAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"FormFieldHelperText.js","sources":["../src/form-field-next/FormFieldHelperText.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { makePrefixer, StatusIndicator, Text, TextProps } from \"@salt-ds/core\";\nimport { useFormFieldPropsNext } from \"../form-field-context\";\n\nimport \"./FormFieldHelperText.css\";\n\nconst withBaseName = makePrefixer(\"saltFormFieldHelperText\");\n\nexport const FormFieldHelperText = ({\n className,\n children,\n ...restProps\n}: Omit<TextProps<\"label\">, \"variant\" | \"styleAs\">) => {\n const { disabled, readOnly, validationStatus } = useFormFieldPropsNext();\n\n return (\n <div\n className={clsx(\n withBaseName(),\n { [withBaseName(\"withValidation\")]: validationStatus },\n className\n )}\n >\n {!disabled && !readOnly && validationStatus && (\n <StatusIndicator status={validationStatus} />\n )}\n <Text\n disabled={disabled}\n variant=\"secondary\"\n styleAs=\"label\"\n {...restProps}\n >\n {children}\n </Text>\n </div>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;AAMA,MAAM,YAAA,GAAe,aAAa,yBAAyB,CAAA,CAAA;AAEpD,MAAM,sBAAsB,CAAC;AAAA,EAClC,SAAA;AAAA,EACA,QAAA;AAAA,EACG,GAAA,SAAA;AACL,CAAuD,KAAA;AACrD,EAAA,MAAM,EAAE,QAAA,EAAU,QAAU,EAAA,gBAAA,KAAqB,qBAAsB,EAAA,CAAA;AAEvE,EAAA,uBACG,IAAA,CAAA,KAAA,EAAA;AAAA,IACC,SAAW,EAAA,IAAA;AAAA,MACT,YAAa,EAAA;AAAA,MACb,EAAE,CAAC,YAAa,CAAA,gBAAgB,IAAI,gBAAiB,EAAA;AAAA,MACrD,SAAA;AAAA,KACF;AAAA,IAEC,QAAA,EAAA;AAAA,MAAA,CAAC,QAAY,IAAA,CAAC,QAAY,IAAA,gBAAA,oBACxB,GAAA,CAAA,eAAA,EAAA;AAAA,QAAgB,MAAQ,EAAA,gBAAA;AAAA,OAAkB,CAAA;AAAA,sBAE5C,GAAA,CAAA,IAAA,EAAA;AAAA,QACC,QAAA;AAAA,QACA,OAAQ,EAAA,WAAA;AAAA,QACR,OAAQ,EAAA,OAAA;AAAA,QACP,GAAG,SAAA;AAAA,QAEH,QAAA;AAAA,OACH,CAAA;AAAA,KAAA;AAAA,GACF,CAAA,CAAA;AAEJ;;;;"}
@@ -1,6 +1,6 @@
1
1
  import styleInject from '../../../../node_modules/style-inject/dist/style-inject.es.js';
2
2
 
3
- var css_248z = ".saltFormFieldLabel.saltText {\n align-self: center;\n font-weight: var(--saltFormField-label-fontWeight, var(--salt-text-fontWeight-strong));\n width: 100%;\n}\n\n.saltFormFieldLabel:hover + .saltFormFieldNext-controls * {\n --inputNext-borderColor: var(--salt-editable-borderColor-hover);\n}\n";
3
+ var css_248z = ".saltFormFieldLabel.saltText {\n align-self: center;\n font-weight: var(--saltFormField-label-fontWeight, var(--salt-text-fontWeight-strong));\n width: 100%;\n}\n\n.saltFormFieldLabel:hover + .saltFormFieldNext-controls * {\n --inputNext-borderColor: var(--inputNext-borderColor-hover);\n}\n";
4
4
  styleInject(css_248z);
5
5
 
6
6
  export { css_248z as default };
@@ -1,22 +1,28 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { clsx } from 'clsx';
3
3
  import { makePrefixer, Label } from '@salt-ds/core';
4
+ import '../form-field-context/FormFieldContext.js';
5
+ import '../form-field-context/FormFieldContextNext.js';
6
+ import 'react';
7
+ import { useFormFieldPropsNext } from '../form-field-context/useFormFieldPropsNext.js';
4
8
  import './FormFieldLabel.css.js';
5
9
 
6
10
  const withBaseName = makePrefixer("saltFormFieldLabel");
7
11
  const FormFieldLabel = ({
8
12
  className,
9
- disabled,
10
- label,
13
+ children,
11
14
  ...restProps
12
- }) => /* @__PURE__ */ jsx(Label, {
13
- as: "label",
14
- className: clsx(withBaseName(), className),
15
- disabled,
16
- variant: "secondary",
17
- ...restProps,
18
- children: label
19
- });
15
+ }) => {
16
+ const { disabled } = useFormFieldPropsNext();
17
+ return /* @__PURE__ */ jsx(Label, {
18
+ as: "label",
19
+ className: clsx(withBaseName(), className),
20
+ disabled,
21
+ variant: "secondary",
22
+ ...restProps,
23
+ children
24
+ });
25
+ };
20
26
 
21
27
  export { FormFieldLabel };
22
28
  //# sourceMappingURL=FormFieldLabel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FormFieldLabel.js","sources":["../src/form-field-next/FormFieldLabel.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport { Label, makePrefixer, TextProps } from \"@salt-ds/core\";\n\nimport \"./FormFieldLabel.css\";\n\nconst withBaseName = makePrefixer(\"saltFormFieldLabel\");\nexport interface FormFieldLabelProps\n extends Omit<TextProps<\"label\">, \"variant\" | \"styleAs\"> {\n /**\n * Whether the Form Field is disabled.\n */\n disabled?: boolean;\n /**\n * The label value for the FormFieldLabel\n */\n label?: string;\n}\n\nexport const FormFieldLabel = ({\n className,\n disabled,\n label,\n ...restProps\n}: FormFieldLabelProps) => (\n <Label\n as=\"label\"\n className={clsx(withBaseName(), className)}\n disabled={disabled}\n variant=\"secondary\"\n {...restProps}\n >\n {label}\n </Label>\n);\n"],"names":[],"mappings":";;;;;AAKA,MAAM,YAAA,GAAe,aAAa,oBAAoB,CAAA,CAAA;AAa/C,MAAM,iBAAiB,CAAC;AAAA,EAC7B,SAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACG,GAAA,SAAA;AACL,CAAA,qBACG,GAAA,CAAA,KAAA,EAAA;AAAA,EACC,EAAG,EAAA,OAAA;AAAA,EACH,SAAW,EAAA,IAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,EACzC,QAAA;AAAA,EACA,OAAQ,EAAA,WAAA;AAAA,EACP,GAAG,SAAA;AAAA,EAEH,QAAA,EAAA,KAAA;AAAA,CACH;;;;"}
1
+ {"version":3,"file":"FormFieldLabel.js","sources":["../src/form-field-next/FormFieldLabel.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport { Label, makePrefixer, TextProps } from \"@salt-ds/core\";\nimport { useFormFieldPropsNext } from \"../form-field-context\";\n\nimport \"./FormFieldLabel.css\";\n\nconst withBaseName = makePrefixer(\"saltFormFieldLabel\");\n\nexport const FormFieldLabel = ({\n className,\n children,\n ...restProps\n}: Omit<TextProps<\"label\">, \"variant\" | \"styleAs\">) => {\n const { disabled } = useFormFieldPropsNext();\n\n return (\n <Label\n as=\"label\"\n className={clsx(withBaseName(), className)}\n disabled={disabled}\n variant=\"secondary\"\n {...restProps}\n >\n {children}\n </Label>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;AAMA,MAAM,YAAA,GAAe,aAAa,oBAAoB,CAAA,CAAA;AAE/C,MAAM,iBAAiB,CAAC;AAAA,EAC7B,SAAA;AAAA,EACA,QAAA;AAAA,EACG,GAAA,SAAA;AACL,CAAuD,KAAA;AACrD,EAAM,MAAA,EAAE,QAAS,EAAA,GAAI,qBAAsB,EAAA,CAAA;AAE3C,EAAA,uBACG,GAAA,CAAA,KAAA,EAAA;AAAA,IACC,EAAG,EAAA,OAAA;AAAA,IACH,SAAW,EAAA,IAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,IACzC,QAAA;AAAA,IACA,OAAQ,EAAA,WAAA;AAAA,IACP,GAAG,SAAA;AAAA,IAEH,QAAA;AAAA,GACH,CAAA,CAAA;AAEJ;;;;"}
@@ -1,6 +1,6 @@
1
1
  import styleInject from '../../../../node_modules/style-inject/dist/style-inject.es.js';
2
2
 
3
- var css_248z = ".saltFormFieldNext {\n display: inline-grid;\n position: relative;\n column-gap: var(--salt-size-adornmentGap);\n row-gap: var(--salt-size-adornmentGap);\n vertical-align: top;\n width: var(--saltFormFieldNext-width, 100%);\n}\n\n.saltFormFieldNext-labelLeft {\n align-self: center;\n grid-template-columns: auto 1fr;\n}\n\n.saltFormFieldNext-labelTop {\n}\n\n.saltFormFieldNext-controls {\n align-items: center;\n display: grid;\n grid-auto-columns: minmax(0, 1fr);\n grid-auto-flow: column;\n grid-column-gap: var(--salt-size-adornmentGap);\n}\n\n.saltFormFieldNext > * {\n grid-row-start: 2;\n grid-row-end: 3;\n}\n\n.saltFormFieldNext > .saltFormFieldLabel {\n grid-row-start: 1;\n grid-row-end: 2;\n}\n\n.saltFormFieldNext-labelLeft > * {\n grid-row-start: 1;\n grid-row-end: 2;\n}\n\n.saltFormFieldNext > .saltFormFieldHelperText {\n grid-row-start: 3;\n grid-row-end: 4;\n}\n\n.saltFormFieldNext.saltFormFieldNext-labelLeft > .saltFormFieldHelperText {\n grid-row-start: 2;\n grid-row-end: 3;\n}\n\n.saltFormFieldNext-labelLeft > .saltFormFieldLabel ~ * {\n grid-column-start: 2;\n grid-column-end: 2;\n}\n\n.saltFormFieldNext-disabled .saltInputNext-focused {\n outline: none;\n}\n";
3
+ var css_248z = ".saltFormFieldNext {\n display: inline-grid;\n position: relative;\n column-gap: var(--salt-size-adornmentGap);\n row-gap: var(--salt-size-adornmentGap);\n vertical-align: top;\n width: var(--saltFormFieldNext-width, 100%);\n}\n\n.saltFormFieldNext-labelLeft {\n align-self: center;\n grid-template-columns: 40% 1fr;\n}\n\n.saltFormFieldNext-labelTop {\n}\n\n.saltFormFieldNext-controls {\n align-items: center;\n display: grid;\n grid-auto-columns: minmax(0, 1fr);\n grid-auto-flow: column;\n grid-column-gap: var(--salt-size-adornmentGap);\n}\n\n.saltFormFieldNext > * {\n grid-row-start: 2;\n grid-row-end: 3;\n}\n\n.saltFormFieldNext > .saltFormFieldLabel {\n grid-row-start: 1;\n grid-row-end: 2;\n}\n\n.saltFormFieldNext-labelLeft > * {\n grid-row-start: 1;\n grid-row-end: 2;\n}\n\n.saltFormFieldNext > .saltFormFieldHelperText {\n grid-row-start: 3;\n grid-row-end: 4;\n}\n\n.saltFormFieldNext.saltFormFieldNext-labelLeft > .saltFormFieldHelperText {\n grid-row-start: 2;\n grid-row-end: 3;\n}\n\n.saltFormFieldNext-labelLeft > .saltFormFieldLabel ~ * {\n grid-column-start: 2;\n grid-column-end: 2;\n}\n\n.saltFormFieldNext-disabled .saltInputNext-focused {\n outline: none;\n}\n";
4
4
  styleInject(css_248z);
5
5
 
6
6
  export { css_248z as default };
@@ -1,52 +1,34 @@
1
- import { jsx, jsxs } from 'react/jsx-runtime';
1
+ import { jsx } from 'react/jsx-runtime';
2
2
  import { clsx } from 'clsx';
3
3
  import { forwardRef, useMemo } from 'react';
4
4
  import { makePrefixer, useId, capitalize } from '@salt-ds/core';
5
5
  import '../form-field-context/FormFieldContext.js';
6
6
  import { FormFieldContextNext } from '../form-field-context/FormFieldContextNext.js';
7
- import { FormFieldLabel } from './FormFieldLabel.js';
8
- import { FormFieldHelperText } from './FormFieldHelperText.js';
9
7
  import './FormFieldNext.css.js';
10
8
 
11
- const useA11yValue = ({
12
- disabled,
13
- labelId,
14
- helperTextId,
15
- readOnly
16
- }) => {
17
- return useMemo(
18
- () => ({
19
- "aria-labelledby": labelId,
20
- "aria-describedby": helperTextId,
21
- disabled,
22
- readOnly
23
- }),
24
- [labelId, disabled, helperTextId, readOnly]
25
- );
26
- };
27
9
  const withBaseName = makePrefixer("saltFormFieldNext");
28
10
  const FormField = forwardRef(
29
11
  ({
30
12
  children,
31
13
  className,
32
14
  disabled = false,
33
- helperText,
34
- label,
35
15
  labelPlacement = "top",
36
16
  onBlur,
37
17
  onFocus,
38
18
  readOnly = false,
39
19
  id: idProp,
20
+ validationStatus,
40
21
  ...restProps
41
22
  }, ref) => {
42
23
  const labelId = useId();
43
24
  const helperTextId = useId();
44
- const a11yValue = useA11yValue({
45
- labelId,
46
- helperTextId,
47
- disabled,
48
- readOnly
49
- });
25
+ const a11yProps = useMemo(
26
+ () => ({
27
+ "aria-labelledby": labelId,
28
+ "aria-describedby": helperTextId
29
+ }),
30
+ [labelId, helperTextId]
31
+ );
50
32
  return /* @__PURE__ */ jsx("div", {
51
33
  ref,
52
34
  className: clsx(
@@ -59,24 +41,9 @@ const FormField = forwardRef(
59
41
  className
60
42
  ),
61
43
  ...restProps,
62
- children: /* @__PURE__ */ jsxs(FormFieldContextNext.Provider, {
63
- value: { a11yProps: a11yValue },
64
- children: [
65
- label && /* @__PURE__ */ jsx(FormFieldLabel, {
66
- id: labelId,
67
- disabled,
68
- label
69
- }),
70
- /* @__PURE__ */ jsx("div", {
71
- className: withBaseName("controls"),
72
- children
73
- }),
74
- helperText && /* @__PURE__ */ jsx(FormFieldHelperText, {
75
- id: helperTextId,
76
- disabled,
77
- helperText
78
- })
79
- ]
44
+ children: /* @__PURE__ */ jsx(FormFieldContextNext.Provider, {
45
+ value: { a11yProps, disabled, readOnly, validationStatus },
46
+ children
80
47
  })
81
48
  });
82
49
  }
@@ -1 +1 @@
1
- {"version":3,"file":"FormFieldNext.js","sources":["../src/form-field-next/FormFieldNext.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport { ForwardedRef, forwardRef, HTMLAttributes, useMemo } from \"react\";\nimport { makePrefixer, useId, capitalize } from \"@salt-ds/core\";\nimport { FormFieldContextNext } from \"../form-field-context\";\nimport { FormFieldLabel } from \"./FormFieldLabel\";\nimport { FormFieldHelperText } from \"./FormFieldHelperText\";\n\nimport \"./FormFieldNext.css\";\n\nexport type FormFieldLabelPlacement = \"top\" | \"left\";\n\nexport interface FormFieldProps\n extends HTMLAttributes<HTMLDivElement>,\n A11yValueProps {\n /**\n * Disabled prop\n */\n disabled?: boolean;\n /**\n * The helper text content\n */\n helperText?: string;\n /**\n * The label value for the FormField\n */\n label?: string;\n /**\n * Location the label, values: 'top' (default) or 'left'\n */\n labelPlacement?: FormFieldLabelPlacement;\n /**\n * Readonly prop\n */\n readOnly?: boolean;\n /**\n * Optional id prop\n */\n id?: string;\n}\n\nexport interface A11yValueProps {\n /**\n * If `true`, the FormField will be disabled.\n */\n disabled?: boolean;\n /** Helper Text */\n helperTextId?: string;\n /** id of the label node */\n labelId?: string;\n /**\n * If `true`, the FormField will be readonly.\n */\n readOnly?: boolean;\n}\nexport interface useA11yValueValue {\n \"aria-labelledby\": A11yValueProps[\"labelId\"];\n \"aria-describedby\": A11yValueProps[\"helperTextId\"] | undefined;\n disabled: A11yValueProps[\"disabled\"];\n readOnly: A11yValueProps[\"readOnly\"];\n}\n\nconst useA11yValue = ({\n disabled,\n labelId,\n helperTextId,\n readOnly,\n}: A11yValueProps) => {\n return useMemo(\n () => ({\n \"aria-labelledby\": labelId,\n \"aria-describedby\": helperTextId,\n disabled,\n readOnly,\n }),\n [labelId, disabled, helperTextId, readOnly]\n );\n};\n\nconst withBaseName = makePrefixer(\"saltFormFieldNext\");\n\nexport const FormField = forwardRef(\n (\n {\n children,\n className,\n disabled = false,\n helperText,\n label,\n labelPlacement = \"top\",\n onBlur,\n onFocus,\n readOnly = false,\n id: idProp,\n ...restProps\n }: FormFieldProps,\n ref: ForwardedRef<HTMLDivElement>\n ) => {\n const labelId = useId();\n const helperTextId = useId();\n\n const a11yValue = useA11yValue({\n labelId,\n helperTextId,\n disabled,\n readOnly,\n });\n\n return (\n <div\n ref={ref}\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"disabled\")]: disabled,\n [withBaseName(\"readOnly\")]: readOnly,\n [withBaseName(`label${capitalize(labelPlacement)}`)]:\n labelPlacement,\n },\n className\n )}\n {...restProps}\n >\n <FormFieldContextNext.Provider value={{ a11yProps: a11yValue }}>\n {label && (\n <FormFieldLabel id={labelId} disabled={disabled} label={label} />\n )}\n <div className={withBaseName(\"controls\")}>{children}</div>\n {helperText && (\n <FormFieldHelperText\n id={helperTextId}\n disabled={disabled}\n helperText={helperText}\n />\n )}\n </FormFieldContextNext.Provider>\n </div>\n );\n }\n);\n"],"names":[],"mappings":";;;;;;;;;;AA6DA,MAAM,eAAe,CAAC;AAAA,EACpB,QAAA;AAAA,EACA,OAAA;AAAA,EACA,YAAA;AAAA,EACA,QAAA;AACF,CAAsB,KAAA;AACpB,EAAO,OAAA,OAAA;AAAA,IACL,OAAO;AAAA,MACL,iBAAmB,EAAA,OAAA;AAAA,MACnB,kBAAoB,EAAA,YAAA;AAAA,MACpB,QAAA;AAAA,MACA,QAAA;AAAA,KACF,CAAA;AAAA,IACA,CAAC,OAAA,EAAS,QAAU,EAAA,YAAA,EAAc,QAAQ,CAAA;AAAA,GAC5C,CAAA;AACF,CAAA,CAAA;AAEA,MAAM,YAAA,GAAe,aAAa,mBAAmB,CAAA,CAAA;AAE9C,MAAM,SAAY,GAAA,UAAA;AAAA,EACvB,CACE;AAAA,IACE,QAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAW,GAAA,KAAA;AAAA,IACX,UAAA;AAAA,IACA,KAAA;AAAA,IACA,cAAiB,GAAA,KAAA;AAAA,IACjB,MAAA;AAAA,IACA,OAAA;AAAA,IACA,QAAW,GAAA,KAAA;AAAA,IACX,EAAI,EAAA,MAAA;AAAA,IACD,GAAA,SAAA;AAAA,KAEL,GACG,KAAA;AACH,IAAA,MAAM,UAAU,KAAM,EAAA,CAAA;AACtB,IAAA,MAAM,eAAe,KAAM,EAAA,CAAA;AAE3B,IAAA,MAAM,YAAY,YAAa,CAAA;AAAA,MAC7B,OAAA;AAAA,MACA,YAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,KACD,CAAA,CAAA;AAED,IAAA,uBACG,GAAA,CAAA,KAAA,EAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAW,EAAA,IAAA;AAAA,QACT,YAAa,EAAA;AAAA,QACb;AAAA,UACE,CAAC,YAAa,CAAA,UAAU,CAAI,GAAA,QAAA;AAAA,UAC5B,CAAC,YAAa,CAAA,UAAU,CAAI,GAAA,QAAA;AAAA,UAC5B,CAAC,YAAa,CAAA,CAAA,KAAA,EAAQ,UAAW,CAAA,cAAc,GAAG,CAChD,GAAA,cAAA;AAAA,SACJ;AAAA,QACA,SAAA;AAAA,OACF;AAAA,MACC,GAAG,SAAA;AAAA,MAEJ,QAAA,kBAAA,IAAA,CAAC,qBAAqB,QAArB,EAAA;AAAA,QAA8B,KAAA,EAAO,EAAE,SAAA,EAAW,SAAU,EAAA;AAAA,QAC1D,QAAA,EAAA;AAAA,UAAA,KAAA,oBACE,GAAA,CAAA,cAAA,EAAA;AAAA,YAAe,EAAI,EAAA,OAAA;AAAA,YAAS,QAAA;AAAA,YAAoB,KAAA;AAAA,WAAc,CAAA;AAAA,0BAEhE,GAAA,CAAA,KAAA,EAAA;AAAA,YAAI,SAAA,EAAW,aAAa,UAAU,CAAA;AAAA,YAAI,QAAA;AAAA,WAAS,CAAA;AAAA,UACnD,8BACE,GAAA,CAAA,mBAAA,EAAA;AAAA,YACC,EAAI,EAAA,YAAA;AAAA,YACJ,QAAA;AAAA,YACA,UAAA;AAAA,WACF,CAAA;AAAA,SAAA;AAAA,OAEJ,CAAA;AAAA,KACF,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
1
+ {"version":3,"file":"FormFieldNext.js","sources":["../src/form-field-next/FormFieldNext.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport { ForwardedRef, forwardRef, HTMLAttributes, useMemo } from \"react\";\nimport { makePrefixer, useId, capitalize } from \"@salt-ds/core\";\nimport { FormFieldContextNext } from \"../form-field-context\";\n\nimport \"./FormFieldNext.css\";\n\nexport type FormFieldLabelPlacement = \"top\" | \"left\";\n\nexport interface FormFieldProps\n extends HTMLAttributes<HTMLDivElement>,\n A11yValueProps {\n /**\n * Disabled prop\n */\n disabled?: boolean;\n /**\n * Location of the label, values: 'top' (default) or 'left'\n */\n labelPlacement?: FormFieldLabelPlacement;\n /**\n * Readonly prop\n */\n readOnly?: boolean;\n /**\n * Optional id prop\n */\n id?: string;\n /**\n * Validation status\n */\n validationStatus?: \"error\" | \"warning\" | \"success\";\n}\n\nexport interface A11yValueProps {\n /**\n * id for FormFieldHelperText\n */\n helperTextId?: string;\n /**\n * id for FormFieldLabel\n */\n labelId?: string;\n}\nexport interface a11yValueAriaProps {\n \"aria-labelledby\": A11yValueProps[\"labelId\"];\n \"aria-describedby\": A11yValueProps[\"helperTextId\"] | undefined;\n}\n\nconst withBaseName = makePrefixer(\"saltFormFieldNext\");\n\nexport const FormField = forwardRef(\n (\n {\n children,\n className,\n disabled = false,\n labelPlacement = \"top\",\n onBlur,\n onFocus,\n readOnly = false,\n id: idProp,\n validationStatus,\n ...restProps\n }: FormFieldProps,\n ref: ForwardedRef<HTMLDivElement>\n ) => {\n const labelId = useId();\n const helperTextId = useId();\n\n const a11yProps = useMemo(\n () => ({\n \"aria-labelledby\": labelId,\n \"aria-describedby\": helperTextId,\n }),\n [labelId, helperTextId]\n );\n\n return (\n <div\n ref={ref}\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"disabled\")]: disabled,\n [withBaseName(\"readOnly\")]: readOnly,\n [withBaseName(`label${capitalize(labelPlacement)}`)]:\n labelPlacement,\n },\n className\n )}\n {...restProps}\n >\n <FormFieldContextNext.Provider\n value={{ a11yProps, disabled, readOnly, validationStatus }}\n >\n {children}\n </FormFieldContextNext.Provider>\n </div>\n );\n }\n);\n"],"names":[],"mappings":";;;;;;;;AAiDA,MAAM,YAAA,GAAe,aAAa,mBAAmB,CAAA,CAAA;AAE9C,MAAM,SAAY,GAAA,UAAA;AAAA,EACvB,CACE;AAAA,IACE,QAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAW,GAAA,KAAA;AAAA,IACX,cAAiB,GAAA,KAAA;AAAA,IACjB,MAAA;AAAA,IACA,OAAA;AAAA,IACA,QAAW,GAAA,KAAA;AAAA,IACX,EAAI,EAAA,MAAA;AAAA,IACJ,gBAAA;AAAA,IACG,GAAA,SAAA;AAAA,KAEL,GACG,KAAA;AACH,IAAA,MAAM,UAAU,KAAM,EAAA,CAAA;AACtB,IAAA,MAAM,eAAe,KAAM,EAAA,CAAA;AAE3B,IAAA,MAAM,SAAY,GAAA,OAAA;AAAA,MAChB,OAAO;AAAA,QACL,iBAAmB,EAAA,OAAA;AAAA,QACnB,kBAAoB,EAAA,YAAA;AAAA,OACtB,CAAA;AAAA,MACA,CAAC,SAAS,YAAY,CAAA;AAAA,KACxB,CAAA;AAEA,IAAA,uBACG,GAAA,CAAA,KAAA,EAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAW,EAAA,IAAA;AAAA,QACT,YAAa,EAAA;AAAA,QACb;AAAA,UACE,CAAC,YAAa,CAAA,UAAU,CAAI,GAAA,QAAA;AAAA,UAC5B,CAAC,YAAa,CAAA,UAAU,CAAI,GAAA,QAAA;AAAA,UAC5B,CAAC,YAAa,CAAA,CAAA,KAAA,EAAQ,UAAW,CAAA,cAAc,GAAG,CAChD,GAAA,cAAA;AAAA,SACJ;AAAA,QACA,SAAA;AAAA,OACF;AAAA,MACC,GAAG,SAAA;AAAA,MAEJ,QAAA,kBAAA,GAAA,CAAC,qBAAqB,QAArB,EAAA;AAAA,QACC,KAAO,EAAA,EAAE,SAAW,EAAA,QAAA,EAAU,UAAU,gBAAiB,EAAA;AAAA,QAExD,QAAA;AAAA,OACH,CAAA;AAAA,KACF,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
@@ -78,9 +78,10 @@ export { FileDropZone } from './file-drop-zone/FileDropZone.js';
78
78
  export { createFileTypeValidator, createTotalSizeValidator } from './file-drop-zone/validators.js';
79
79
  export { FormField, useFormField } from './form-field/FormField.js';
80
80
  export { FormLabel } from './form-field/FormLabel.js';
81
+ export { FormFieldControlWrapper } from './form-field-next/FormFieldControlWrapper.js';
81
82
  export { FormField as FormFieldNext } from './form-field-next/FormFieldNext.js';
82
- import './form-field-next/FormFieldHelperText.js';
83
- import './form-field-next/FormFieldLabel.js';
83
+ export { FormFieldHelperText } from './form-field-next/FormFieldHelperText.js';
84
+ export { FormFieldLabel } from './form-field-next/FormFieldLabel.js';
84
85
  export { FormFieldContext } from './form-field-context/FormFieldContext.js';
85
86
  export { FormFieldContextNext } from './form-field-context/FormFieldContextNext.js';
86
87
  export { useFormFieldProps } from './form-field-context/useFormFieldProps.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  import styleInject from '../../../../node_modules/style-inject/dist/style-inject.es.js';
2
2
 
3
- var css_248z = "/* Style applied to the root element */\n.saltInputNext {\n --inputNext-borderColor: var(--salt-editable-borderColor);\n --inputNext-borderStyle: var(--salt-editable-borderStyle);\n\n align-items: center;\n background: var(--saltInputNext-background, var(--inputNext-background));\n border-color: var(--saltInputNext-borderColor, var(--inputNext-borderColor));\n border-width: var(--saltInputNext-borderWidth, 0 0 var(--salt-size-border) 0);\n border-style: var(--saltInputNext-borderStyle, var(--inputNext-borderStyle));\n border-radius: var(--saltInputNext-borderRadius, 0);\n color: var(--saltInputNext-color, var(--salt-text-primary-foreground));\n display: inline-flex;\n font-family: var(--saltInputNext-fontFamily, var(--salt-text-fontFamily));\n font-size: var(--saltInputNext-fontSize, var(--salt-text-fontSize));\n height: var(--saltInputNext-height, var(--salt-size-base));\n line-height: var(--salt-text-lineHeight);\n min-height: var(--saltInputNext-minHeight, var(--salt-size-base));\n min-width: var(--saltInputNext-minWidth, 8em);\n padding: var(--saltInputNext-padding, 0 var(--salt-size-unit));\n position: var(--saltInputNext-position, relative);\n width: 100%;\n}\n\n.saltInputNext:hover {\n --inputNext-background: var(--inputNext-background-hover);\n --inputNext-borderColor: var(--salt-editable-borderColor-hover);\n --inputNext-borderStyle: var(--salt-editable-borderStyle-hover);\n}\n\n.saltInputNext:active {\n --inputNext-background: var(--inputNext-background-active);\n --inputNext-borderColor: var(--salt-editable-borderColor-active);\n --inputNext-borderStyle: var(--salt-editable-borderStyle-active);\n}\n\n/* Class applied if `variant=\"primary\"` */\n.saltInputNext-primary {\n --inputNext-background: var(--salt-editable-primary-background);\n --inputNext-background-active: var(--salt-editable-primary-background-active);\n --inputNext-background-hover: var(--salt-editable-primary-background-hover);\n --inputNext-background-disabled: var(--salt-editable-primary-background-disabled);\n --inputNext-background-readonly: var(--salt-editable-primary-background-readonly);\n}\n\n/* Class applied if `variant=\"secondary\"` */\n.saltInputNext-secondary {\n --inputNext-background: var(--salt-editable-secondary-background);\n --inputNext-background-active: var(--salt-editable-secondary-background-active);\n --inputNext-background-hover: var(--salt-editable-secondary-background-active);\n --inputNext-background-disabled: var(--salt-editable-secondary-background-disabled);\n --inputNext-background-readonly: var(--salt-editable-secondary-background-readonly);\n}\n\n/* Style applied to inner input component */\n.saltInputNext-input {\n background: none;\n border: none;\n box-sizing: content-box;\n color: inherit;\n cursor: var(--saltInputNext-cursor, default);\n display: block;\n flex: 1;\n font: inherit;\n height: 100%;\n letter-spacing: var(--saltInputNext-letterSpacing, 0);\n margin: 0;\n min-width: 0;\n overflow: hidden;\n padding: 0;\n text-align: var(--saltInputNext-textAlign, left);\n width: 100%;\n}\n\n/* Style applied if `readOnly={true}` */\n.saltInputNext.saltInputNext-readOnly {\n --inputNext-background: var(--inputNext-background-readonly);\n --inputNext-background-hover: var(--inputNext-background-readonly);\n --inputNext-borderColor: var(--salt-editable-borderColor-readonly);\n --inputNext-borderStyle: var(--salt-editable-borderStyle-readonly);\n}\n\n/* Reset in the next class */\n.saltInputNext-input:focus {\n outline: none;\n}\n\n/* Styling when focused */\n.saltInputNext-focused {\n outline-style: var(--saltInputNext-focused-outlineStyle, var(--salt-focused-outlineStyle));\n outline-width: var(--saltInputNext-focused-outlineWidth, var(--salt-focused-outlineWidth));\n outline-color: var(--saltInputNext-focused-outlineColor, var(--salt-focused-outlineColor));\n outline-offset: var(--saltInputNext-focused-outlineOffset, var(--salt-focused-outlineOffset));\n}\n\n/* Styling when focused if `disabled={true}` or `readOnly={true}` */\n.saltInputNext-focused.saltInputNext-readOnly,\n.saltInputNext-disabled .saltInputNext-focused {\n outline: none;\n}\n\n/* Style applied to selected input */\n.saltInputNext-input::selection {\n background: var(--saltInputNext-highlight-color, var(--salt-text-background-selected));\n}\n\n/* Style applied to selected input if `disabled={true}` */\n.saltInputNext-disabled .saltInputNext-input::selection {\n background: none;\n}\n\n/* Style applied to input if `disabled={true}` */\n.saltInputNext-disabled .saltInputNext-input,\n.saltInputNext.saltInputNext-disabled,\n.saltInputNext.saltInputNext-disabled:hover,\n.saltInputNext.saltInputNext-disabled:active {\n --inputNext-background: var(--inputNext-background-disabled);\n --inputNext-borderColor: var(--salt-editable-borderColor-disabled);\n --inputNext-borderStyle: var(--salt-editable-borderStyle-disabled);\n\n cursor: var(--salt-editable-cursor-disabled);\n color: var(--saltInputNext-text-color-disabled, var(--salt-text-primary-foreground-disabled));\n}\n";
3
+ var css_248z = "/* Style applied to the root element */\n.saltInputNext {\n --inputNext-borderColor: var(--salt-editable-borderColor);\n --inputNext-borderColor-hover: var(--salt-editable-borderColor-hover);\n --inputNext-borderStyle: var(--salt-editable-borderStyle);\n\n align-items: center;\n background: var(--saltInputNext-background, var(--inputNext-background));\n border-color: var(--saltInputNext-borderColor, var(--inputNext-borderColor));\n border-width: var(--saltInputNext-borderWidth, 0 0 var(--salt-size-border) 0);\n border-style: var(--saltInputNext-borderStyle, var(--inputNext-borderStyle));\n border-radius: var(--saltInputNext-borderRadius, 0);\n color: var(--saltInputNext-color, var(--salt-text-primary-foreground));\n display: inline-flex;\n font-family: var(--saltInputNext-fontFamily, var(--salt-text-fontFamily));\n font-size: var(--saltInputNext-fontSize, var(--salt-text-fontSize));\n height: var(--saltInputNext-height, var(--salt-size-base));\n line-height: var(--salt-text-lineHeight);\n min-height: var(--saltInputNext-minHeight, var(--salt-size-base));\n min-width: var(--saltInputNext-minWidth, 8em);\n padding: var(--saltInputNext-padding, 0 var(--salt-size-unit));\n position: var(--saltInputNext-position, relative);\n width: 100%;\n}\n\n.saltInputNext:hover {\n --inputNext-background: var(--inputNext-background-hover);\n --inputNext-borderColor: var(--inputNext-borderColor-hover);\n --inputNext-borderStyle: var(--salt-editable-borderStyle-hover);\n --inputNext-cursor: var(--salt-editable-cursor-hover);\n}\n\n.saltInputNext:active {\n --inputNext-background: var(--inputNext-background-active);\n --inputNext-borderColor: var(--salt-editable-borderColor-active);\n --inputNext-borderStyle: var(--salt-editable-borderStyle-active);\n --inputNext-cursor: var(--salt-editable-cursor-active);\n}\n\n/* Class applied if `variant=\"primary\"` */\n.saltInputNext-primary {\n --inputNext-background: var(--salt-editable-primary-background);\n --inputNext-background-active: var(--salt-editable-primary-background-active);\n --inputNext-background-hover: var(--salt-editable-primary-background-hover);\n --inputNext-background-disabled: var(--salt-editable-primary-background-disabled);\n --inputNext-background-readonly: var(--salt-editable-primary-background-readonly);\n}\n\n/* Class applied if `variant=\"secondary\"` */\n.saltInputNext-secondary {\n --inputNext-background: var(--salt-editable-secondary-background);\n --inputNext-background-active: var(--salt-editable-secondary-background-active);\n --inputNext-background-hover: var(--salt-editable-secondary-background-active);\n --inputNext-background-disabled: var(--salt-editable-secondary-background-disabled);\n --inputNext-background-readonly: var(--salt-editable-secondary-background-readonly);\n}\n\n/* Style applied to input if `validationState=\"error\"` */\n.saltInputNext-error,\n.saltInputNext-error:hover {\n --inputNext-background: var(--salt-status-error-background);\n --inputNext-outlineColor: var(--salt-status-error-borderColor);\n --inputNext-borderColor: var(--salt-status-error-borderColor);\n --inputNext-borderColor-hover: var(--salt-status-error-borderColor);\n}\n\n/* Style applied to input if `validationState=\"warning\"` */\n.saltInputNext-warning,\n.saltInputNext-warning:hover {\n --inputNext-background: var(--salt-status-warning-background);\n --inputNext-outlineColor: var(--salt-status-warning-borderColor);\n --inputNext-borderColor: var(--salt-status-warning-borderColor);\n --inputNext-borderColor-hover: var(--salt-status-warning-borderColor);\n}\n\n/* Style applied to input if `validationState=\"success\"` */\n.saltInputNext-success,\n.saltInputNext-success:hover {\n --inputNext-background: var(--salt-status-success-background);\n --inputNext-outlineColor: var(--salt-status-success-borderColor);\n --inputNext-borderColor: var(--salt-status-success-borderColor);\n --inputNext-borderColor-hover: var(--salt-status-success-borderColor);\n}\n\n/* Style applied to inner input component */\n.saltInputNext-input {\n background: none;\n border: none;\n box-sizing: content-box;\n color: inherit;\n cursor: var(--saltInputNext-cursor, var(--inputNext-cursor));\n display: block;\n flex: 1;\n font: inherit;\n height: 100%;\n letter-spacing: var(--saltInputNext-letterSpacing, 0);\n margin: 0;\n min-width: 0;\n overflow: hidden;\n padding: 0;\n text-align: var(--saltInputNext-textAlign, left);\n width: 100%;\n}\n\n/* Reset in the next class */\n.saltInputNext-input:focus {\n outline: none;\n}\n\n/* Style applied to selected input */\n.saltInputNext-input::selection {\n background: var(--saltInputNext-highlight-color, var(--salt-text-background-selected));\n}\n\n/* Styling when focused */\n.saltInputNext-focused {\n --inputNext-outlineColor: var(--salt-focused-outlineColor);\n\n outline-style: var(--saltInputNext-focused-outlineStyle, var(--salt-focused-outlineStyle));\n outline-width: var(--saltInputNext-focused-outlineWidth, var(--salt-focused-outlineWidth));\n outline-color: var(--saltInputNext-focused-outlineColor, var(--inputNext-outlineColor));\n outline-offset: var(--saltInputNext-focused-outlineOffset, var(--salt-focused-outlineOffset));\n}\n\n/* Style applied if `readOnly={true}` */\n.saltInputNext.saltInputNext-readOnly {\n --inputNext-background: var(--inputNext-background-readonly);\n --inputNext-background-hover: var(--inputNext-background-readonly);\n --inputNext-borderColor: var(--salt-editable-borderColor-readonly);\n --inputNext-borderColor-hover: var(--salt-editable-borderColor-readonly);\n --inputNext-borderStyle: var(--salt-editable-borderStyle-readonly);\n --inputNext-cursor: var(--salt-editable-cursor-readonly);\n}\n\n/* Styling when focused if `disabled={true}` or `readOnly={true}` */\n.saltInputNext-focused.saltInputNext-readOnly,\n.saltInputNext-disabled .saltInputNext-focused {\n outline: none;\n}\n\n/* Style applied to selected input if `disabled={true}` */\n.saltInputNext-disabled .saltInputNext-input::selection {\n background: none;\n}\n\n/* Style applied to input if `disabled={true}` */\n.saltInputNext-disabled .saltInputNext-input,\n.saltInputNext.saltInputNext-disabled,\n.saltInputNext.saltInputNext-disabled:hover,\n.saltInputNext.saltInputNext-disabled:active {\n --inputNext-background: var(--inputNext-background-disabled);\n --inputNext-borderColor: var(--salt-editable-borderColor-disabled);\n --inputNext-borderColor-hover: var(--salt-editable-borderColor-disabled);\n --inputNext-borderStyle: var(--salt-editable-borderStyle-disabled);\n\n cursor: var(--salt-editable-cursor-disabled);\n color: var(--saltInputNext-text-color-disabled, var(--salt-text-primary-foreground-disabled));\n}\n\n/* Style applied to input if adornment provided */\n.saltInputNext-withAdornment {\n padding-right: var(--salt-size-adornmentGap);\n}\n\n/* Style applied to start adornments */\n.saltInputNext-startAdornmentContainer {\n align-items: center;\n display: inline-flex;\n padding-right: var(--salt-size-adornmentGap);\n column-gap: var(--salt-size-adornmentGap);\n}\n\n/* Style applied to end adornments */\n.saltInputNext-endAdornmentContainer {\n align-items: center;\n display: inline-flex;\n padding-left: var(--salt-size-adornmentGap);\n column-gap: var(--salt-size-adornmentGap);\n}\n";
4
4
  styleInject(css_248z);
5
5
 
6
6
  export { css_248z as default };
@@ -1,10 +1,11 @@
1
- import { jsx } from 'react/jsx-runtime';
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { clsx } from 'clsx';
3
3
  import { forwardRef, useState } from 'react';
4
4
  import { makePrefixer, useControlled } from '@salt-ds/core';
5
5
  import '../form-field-context/FormFieldContext.js';
6
6
  import '../form-field-context/FormFieldContextNext.js';
7
7
  import { useFormFieldPropsNext } from '../form-field-context/useFormFieldPropsNext.js';
8
+ import { StatusAdornment } from '../status-adornment/StatusAdornment.js';
8
9
  import './InputNext.css.js';
9
10
 
10
11
  const withBaseName = makePrefixer("saltInputNext");
@@ -26,27 +27,28 @@ const Input = forwardRef(function Input2({
26
27
  "aria-owns": ariaOwns,
27
28
  className: classNameProp,
28
29
  disabled,
30
+ endAdornment,
29
31
  id,
30
32
  inputProps: inputPropsProp,
31
- onChange,
32
33
  readOnly: readOnlyProp,
33
34
  role,
35
+ startAdornment,
34
36
  style,
35
- type = "text",
36
37
  value: valueProp,
37
38
  defaultValue: defaultValueProp = valueProp === void 0 ? "" : void 0,
39
+ validationStatus: validationStatusProp,
38
40
  variant = "primary",
39
41
  ...other
40
42
  }, ref) {
41
43
  const {
42
- a11yProps: {
43
- disabled: a11yDisabled,
44
- readOnly: a11yReadOnly,
45
- ...restA11y
46
- } = {}
44
+ disabled: formFieldDisabled,
45
+ readOnly: formFieldReadOnly,
46
+ validationStatus: formFieldValidationStatus,
47
+ a11yProps
47
48
  } = useFormFieldPropsNext();
48
- const isDisabled = disabled || a11yDisabled;
49
- const isReadOnly = readOnlyProp || a11yReadOnly;
49
+ const isDisabled = disabled || formFieldDisabled;
50
+ const isReadOnly = readOnlyProp || formFieldReadOnly;
51
+ const validationStatus = formFieldValidationStatus != null ? formFieldValidationStatus : validationStatusProp;
50
52
  const [focused, setFocused] = useState(false);
51
53
  const misplacedAriaProps = {
52
54
  "aria-activedescendant": ariaActiveDescendant,
@@ -55,20 +57,11 @@ const Input = forwardRef(function Input2({
55
57
  role
56
58
  };
57
59
  const inputProps = mergeA11yProps(
58
- restA11y,
60
+ a11yProps,
59
61
  inputPropsProp,
60
62
  misplacedAriaProps
61
63
  );
62
- const {
63
- onBlur,
64
- onFocus,
65
- onKeyDown,
66
- onKeyUp,
67
- onMouseUp,
68
- onMouseMove,
69
- onMouseDown,
70
- ...restInputProps
71
- } = inputProps;
64
+ const { onBlur, onChange, onFocus, ...restInputProps } = inputProps;
72
65
  const [value, setValue] = useControlled({
73
66
  controlled: valueProp,
74
67
  default: defaultValueProp,
@@ -78,7 +71,7 @@ const Input = forwardRef(function Input2({
78
71
  const handleChange = (event) => {
79
72
  const value2 = event.target.value;
80
73
  setValue(value2);
81
- onChange == null ? void 0 : onChange(event, value2);
74
+ onChange == null ? void 0 : onChange(event);
82
75
  };
83
76
  const handleBlur = (event) => {
84
77
  onBlur == null ? void 0 : onBlur(event);
@@ -88,33 +81,50 @@ const Input = forwardRef(function Input2({
88
81
  onFocus == null ? void 0 : onFocus(event);
89
82
  setFocused(true);
90
83
  };
91
- return /* @__PURE__ */ jsx("div", {
84
+ return /* @__PURE__ */ jsxs("div", {
92
85
  className: clsx(
93
86
  withBaseName(),
94
87
  {
95
88
  [withBaseName("focused")]: !isDisabled && focused,
96
89
  [withBaseName("disabled")]: isDisabled,
97
90
  [withBaseName("readOnly")]: isReadOnly,
91
+ [withBaseName(validationStatus || "")]: validationStatus,
98
92
  [withBaseName(variant)]: variant
99
93
  },
100
94
  classNameProp
101
95
  ),
102
96
  style,
103
97
  ...other,
104
- children: /* @__PURE__ */ jsx("input", {
105
- type,
106
- id,
107
- className: clsx(withBaseName("input"), inputProps == null ? void 0 : inputProps.className),
108
- disabled: isDisabled,
109
- readOnly: isReadOnly,
110
- ref,
111
- value,
112
- tabIndex: isReadOnly || isDisabled ? -1 : 0,
113
- onBlur: handleBlur,
114
- onChange: handleChange,
115
- onFocus: !isDisabled ? handleFocus : void 0,
116
- ...restInputProps
117
- })
98
+ children: [
99
+ startAdornment && /* @__PURE__ */ jsx("div", {
100
+ className: withBaseName("startAdornmentContainer"),
101
+ children: startAdornment
102
+ }),
103
+ /* @__PURE__ */ jsx("input", {
104
+ id,
105
+ className: clsx(
106
+ withBaseName("input"),
107
+ { [withBaseName("withAdornment")]: validationStatus },
108
+ inputProps == null ? void 0 : inputProps.className
109
+ ),
110
+ disabled: isDisabled,
111
+ readOnly: isReadOnly,
112
+ ref,
113
+ value,
114
+ tabIndex: isReadOnly || isDisabled ? -1 : 0,
115
+ onBlur: handleBlur,
116
+ onChange: handleChange,
117
+ onFocus: !isDisabled ? handleFocus : void 0,
118
+ ...restInputProps
119
+ }),
120
+ !isDisabled && !isReadOnly && validationStatus && /* @__PURE__ */ jsx(StatusAdornment, {
121
+ status: validationStatus
122
+ }),
123
+ endAdornment && /* @__PURE__ */ jsx("div", {
124
+ className: withBaseName("endAdornmentContainer"),
125
+ children: endAdornment
126
+ })
127
+ ]
118
128
  });
119
129
  });
120
130