@mindlogic-ai/logician-ui 4.0.0-alpha.13 → 4.0.0-alpha.14
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.
- package/dist/components/Button/Button.styles.d.ts.map +1 -1
- package/dist/components/Button/Button.styles.js +17 -12
- package/dist/components/Button/Button.styles.js.map +1 -1
- package/dist/components/Button/Button.styles.mjs +17 -12
- package/dist/components/Button/Button.styles.mjs.map +1 -1
- package/dist/components/Card/Card.styles.d.ts +4 -0
- package/dist/components/Card/Card.styles.d.ts.map +1 -1
- package/dist/components/Card/Card.styles.js +8 -0
- package/dist/components/Card/Card.styles.js.map +1 -1
- package/dist/components/Card/Card.styles.mjs +8 -0
- package/dist/components/Card/Card.styles.mjs.map +1 -1
- package/dist/components/Card/Card.types.d.ts +1 -1
- package/dist/components/Card/Card.types.d.ts.map +1 -1
- package/dist/components/Form/FieldError/FieldError.d.ts +15 -0
- package/dist/components/Form/FieldError/FieldError.d.ts.map +1 -0
- package/dist/components/Form/FieldError/FieldError.js +22 -0
- package/dist/components/Form/FieldError/FieldError.js.map +1 -0
- package/dist/components/Form/FieldError/FieldError.mjs +20 -0
- package/dist/components/Form/FieldError/FieldError.mjs.map +1 -0
- package/dist/components/Form/FieldError/index.d.ts +3 -0
- package/dist/components/Form/FieldError/index.d.ts.map +1 -0
- package/dist/components/Form/FieldHelp/FieldHelp.d.ts +14 -0
- package/dist/components/Form/FieldHelp/FieldHelp.d.ts.map +1 -0
- package/dist/components/Form/FieldHelp/FieldHelp.js +19 -0
- package/dist/components/Form/FieldHelp/FieldHelp.js.map +1 -0
- package/dist/components/Form/FieldHelp/FieldHelp.mjs +17 -0
- package/dist/components/Form/FieldHelp/FieldHelp.mjs.map +1 -0
- package/dist/components/Form/FieldHelp/index.d.ts +3 -0
- package/dist/components/Form/FieldHelp/index.d.ts.map +1 -0
- package/dist/components/Form/FieldLabel/FieldLabel.d.ts +12 -0
- package/dist/components/Form/FieldLabel/FieldLabel.d.ts.map +1 -0
- package/dist/components/Form/FieldLabel/FieldLabel.js +32 -0
- package/dist/components/Form/FieldLabel/FieldLabel.js.map +1 -0
- package/dist/components/Form/FieldLabel/FieldLabel.mjs +30 -0
- package/dist/components/Form/FieldLabel/FieldLabel.mjs.map +1 -0
- package/dist/components/Form/FieldLabel/FieldLabel.types.d.ts +21 -0
- package/dist/components/Form/FieldLabel/FieldLabel.types.d.ts.map +1 -0
- package/dist/components/Form/FieldLabel/index.d.ts +3 -0
- package/dist/components/Form/FieldLabel/index.d.ts.map +1 -0
- package/dist/components/Form/FieldRow/FieldRow.d.ts +15 -0
- package/dist/components/Form/FieldRow/FieldRow.d.ts.map +1 -0
- package/dist/components/Form/FieldRow/FieldRow.js +27 -0
- package/dist/components/Form/FieldRow/FieldRow.js.map +1 -0
- package/dist/components/Form/FieldRow/FieldRow.mjs +25 -0
- package/dist/components/Form/FieldRow/FieldRow.mjs.map +1 -0
- package/dist/components/Form/FieldRow/FieldRow.types.d.ts +27 -0
- package/dist/components/Form/FieldRow/FieldRow.types.d.ts.map +1 -0
- package/dist/components/Form/FieldRow/index.d.ts +3 -0
- package/dist/components/Form/FieldRow/index.d.ts.map +1 -0
- package/dist/components/Form/FormFooter/FormFooter.d.ts +11 -0
- package/dist/components/Form/FormFooter/FormFooter.d.ts.map +1 -0
- package/dist/components/Form/FormFooter/FormFooter.js +20 -0
- package/dist/components/Form/FormFooter/FormFooter.js.map +1 -0
- package/dist/components/Form/FormFooter/FormFooter.mjs +18 -0
- package/dist/components/Form/FormFooter/FormFooter.mjs.map +1 -0
- package/dist/components/Form/FormFooter/FormFooter.types.d.ts +23 -0
- package/dist/components/Form/FormFooter/FormFooter.types.d.ts.map +1 -0
- package/dist/components/Form/FormFooter/index.d.ts +3 -0
- package/dist/components/Form/FormFooter/index.d.ts.map +1 -0
- package/dist/components/Form/FormModalFooter/FormModalFooter.d.ts +19 -0
- package/dist/components/Form/FormModalFooter/FormModalFooter.d.ts.map +1 -0
- package/dist/components/Form/FormModalFooter/FormModalFooter.js +42 -0
- package/dist/components/Form/FormModalFooter/FormModalFooter.js.map +1 -0
- package/dist/components/Form/FormModalFooter/FormModalFooter.mjs +40 -0
- package/dist/components/Form/FormModalFooter/FormModalFooter.mjs.map +1 -0
- package/dist/components/Form/FormModalFooter/FormModalFooter.types.d.ts +49 -0
- package/dist/components/Form/FormModalFooter/FormModalFooter.types.d.ts.map +1 -0
- package/dist/components/Form/FormModalFooter/index.d.ts +3 -0
- package/dist/components/Form/FormModalFooter/index.d.ts.map +1 -0
- package/dist/components/Form/FormScrollArea/FormScrollArea.d.ts +14 -0
- package/dist/components/Form/FormScrollArea/FormScrollArea.d.ts.map +1 -0
- package/dist/components/Form/FormScrollArea/FormScrollArea.js +18 -0
- package/dist/components/Form/FormScrollArea/FormScrollArea.js.map +1 -0
- package/dist/components/Form/FormScrollArea/FormScrollArea.mjs +16 -0
- package/dist/components/Form/FormScrollArea/FormScrollArea.mjs.map +1 -0
- package/dist/components/Form/FormScrollArea/index.d.ts +2 -0
- package/dist/components/Form/FormScrollArea/index.d.ts.map +1 -0
- package/dist/components/Form/FormSection/CollapsibleFormSection.d.ts +10 -0
- package/dist/components/Form/FormSection/CollapsibleFormSection.d.ts.map +1 -0
- package/dist/components/Form/FormSection/CollapsibleFormSection.js +43 -0
- package/dist/components/Form/FormSection/CollapsibleFormSection.js.map +1 -0
- package/dist/components/Form/FormSection/CollapsibleFormSection.mjs +41 -0
- package/dist/components/Form/FormSection/CollapsibleFormSection.mjs.map +1 -0
- package/dist/components/Form/FormSection/FlatFormSection.d.ts +6 -0
- package/dist/components/Form/FormSection/FlatFormSection.d.ts.map +1 -0
- package/dist/components/Form/FormSection/FlatFormSection.js +12 -0
- package/dist/components/Form/FormSection/FlatFormSection.js.map +1 -0
- package/dist/components/Form/FormSection/FlatFormSection.mjs +10 -0
- package/dist/components/Form/FormSection/FlatFormSection.mjs.map +1 -0
- package/dist/components/Form/FormSection/FormSection.d.ts +13 -0
- package/dist/components/Form/FormSection/FormSection.d.ts.map +1 -0
- package/dist/components/Form/FormSection/FormSection.js +21 -0
- package/dist/components/Form/FormSection/FormSection.js.map +1 -0
- package/dist/components/Form/FormSection/FormSection.mjs +19 -0
- package/dist/components/Form/FormSection/FormSection.mjs.map +1 -0
- package/dist/components/Form/FormSection/FormSection.types.d.ts +34 -0
- package/dist/components/Form/FormSection/FormSection.types.d.ts.map +1 -0
- package/dist/components/Form/FormSection/index.d.ts +3 -0
- package/dist/components/Form/FormSection/index.d.ts.map +1 -0
- package/dist/components/Form/FormSectionHeader/FormSectionHeader.d.ts +13 -0
- package/dist/components/Form/FormSectionHeader/FormSectionHeader.d.ts.map +1 -0
- package/dist/components/Form/FormSectionHeader/FormSectionHeader.js +30 -0
- package/dist/components/Form/FormSectionHeader/FormSectionHeader.js.map +1 -0
- package/dist/components/Form/FormSectionHeader/FormSectionHeader.mjs +28 -0
- package/dist/components/Form/FormSectionHeader/FormSectionHeader.mjs.map +1 -0
- package/dist/components/Form/FormSectionHeader/FormSectionHeader.types.d.ts +17 -0
- package/dist/components/Form/FormSectionHeader/FormSectionHeader.types.d.ts.map +1 -0
- package/dist/components/Form/FormSectionHeader/index.d.ts +3 -0
- package/dist/components/Form/FormSectionHeader/index.d.ts.map +1 -0
- package/dist/components/Form/index.d.ts +18 -0
- package/dist/components/Form/index.d.ts.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +9 -0
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/components/Button/Button.styles.ts +17 -12
- package/src/components/Card/Card.stories.tsx +7 -0
- package/src/components/Card/Card.styles.ts +8 -0
- package/src/components/Card/Card.types.ts +1 -1
- package/src/components/Form/FieldError/FieldError.test.tsx +33 -0
- package/src/components/Form/FieldError/FieldError.tsx +20 -0
- package/src/components/Form/FieldError/index.ts +2 -0
- package/src/components/Form/FieldHelp/FieldHelp.tsx +18 -0
- package/src/components/Form/FieldHelp/index.ts +2 -0
- package/src/components/Form/FieldLabel/FieldLabel.tsx +46 -0
- package/src/components/Form/FieldLabel/FieldLabel.types.ts +21 -0
- package/src/components/Form/FieldLabel/index.ts +2 -0
- package/src/components/Form/FieldRow/FieldRow.stories.tsx +85 -0
- package/src/components/Form/FieldRow/FieldRow.test.tsx +89 -0
- package/src/components/Form/FieldRow/FieldRow.tsx +46 -0
- package/src/components/Form/FieldRow/FieldRow.types.ts +32 -0
- package/src/components/Form/FieldRow/index.ts +2 -0
- package/src/components/Form/FormFooter/FormFooter.stories.tsx +70 -0
- package/src/components/Form/FormFooter/FormFooter.test.tsx +67 -0
- package/src/components/Form/FormFooter/FormFooter.tsx +46 -0
- package/src/components/Form/FormFooter/FormFooter.types.ts +23 -0
- package/src/components/Form/FormFooter/index.ts +2 -0
- package/src/components/Form/FormModalFooter/FormModalFooter.stories.tsx +64 -0
- package/src/components/Form/FormModalFooter/FormModalFooter.test.tsx +155 -0
- package/src/components/Form/FormModalFooter/FormModalFooter.tsx +83 -0
- package/src/components/Form/FormModalFooter/FormModalFooter.types.ts +53 -0
- package/src/components/Form/FormModalFooter/index.ts +2 -0
- package/src/components/Form/FormScrollArea/FormScrollArea.tsx +27 -0
- package/src/components/Form/FormScrollArea/index.ts +1 -0
- package/src/components/Form/FormSection/CollapsibleFormSection.tsx +35 -0
- package/src/components/Form/FormSection/FlatFormSection.tsx +41 -0
- package/src/components/Form/FormSection/FormSection.stories.tsx +115 -0
- package/src/components/Form/FormSection/FormSection.test.tsx +89 -0
- package/src/components/Form/FormSection/FormSection.tsx +33 -0
- package/src/components/Form/FormSection/FormSection.types.ts +34 -0
- package/src/components/Form/FormSection/index.ts +2 -0
- package/src/components/Form/FormSectionHeader/FormSectionHeader.stories.tsx +53 -0
- package/src/components/Form/FormSectionHeader/FormSectionHeader.test.tsx +74 -0
- package/src/components/Form/FormSectionHeader/FormSectionHeader.tsx +48 -0
- package/src/components/Form/FormSectionHeader/FormSectionHeader.types.ts +17 -0
- package/src/components/Form/FormSectionHeader/index.ts +2 -0
- package/src/components/Form/index.ts +17 -0
- package/src/index.ts +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FlatFormSection.d.ts","sourceRoot":"","sources":["../../../../src/components/Form/FormSection/FlatFormSection.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,KAAK,oBAAoB,GAAG,IAAI,CAC9B,gBAAgB,EAChB,aAAa,GAAG,aAAa,GAAG,UAAU,CAC3C,CAAC;AAEF,wDAAwD;AACxD,eAAO,MAAM,eAAe,GAAI,qFAS7B,oBAAoB,4CAoBtB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
5
|
+
var react = require('@chakra-ui/react');
|
|
6
|
+
var FormSectionHeader = require('../FormSectionHeader/FormSectionHeader.js');
|
|
7
|
+
|
|
8
|
+
/** The flat (non-collapsible) `FormSection` variant. */
|
|
9
|
+
const FlatFormSection = ({ title, titleAdornment, description, action, divider = false, gap = 4, children, ...boxProps }) => (jsxRuntime.jsxs(react.Box, { w: "100%", pt: divider ? 4 : undefined, borderTopWidth: divider ? '1px' : undefined, borderColor: divider ? 'border.subtle' : undefined, ...boxProps, children: [(title || titleAdornment || description || action) && (jsxRuntime.jsx(FormSectionHeader.FormSectionHeader, { title: title, titleAdornment: titleAdornment, description: description, action: action })), jsxRuntime.jsx(react.VStack, { align: "stretch", gap: gap, w: "100%", children: children })] }));
|
|
10
|
+
|
|
11
|
+
exports.FlatFormSection = FlatFormSection;
|
|
12
|
+
//# sourceMappingURL=FlatFormSection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FlatFormSection.js","sources":["../../../../src/components/Form/FormSection/FlatFormSection.tsx"],"sourcesContent":[null],"names":["_jsxs","Box","_jsx","FormSectionHeader","VStack"],"mappings":";;;;;;;AAUA;AACO,MAAM,eAAe,GAAG,CAAC,EAC9B,KAAK,EACL,cAAc,EACd,WAAW,EACX,MAAM,EACN,OAAO,GAAG,KAAK,EACf,GAAG,GAAG,CAAC,EACP,QAAQ,EACR,GAAG,QAAQ,EACU,MACrBA,eAAA,CAACC,SAAG,EAAA,EACF,CAAC,EAAC,MAAM,EACR,EAAE,EAAE,OAAO,GAAG,CAAC,GAAG,SAAS,EAC3B,cAAc,EAAE,OAAO,GAAG,KAAK,GAAG,SAAS,EAC3C,WAAW,EAAE,OAAO,GAAG,eAAe,GAAG,SAAS,EAAA,GAC9C,QAAQ,EAAA,QAAA,EAAA,CAEX,CAAC,KAAK,IAAI,cAAc,IAAI,WAAW,IAAI,MAAM,MAChDC,cAAA,CAACC,mCAAiB,EAAA,EAChB,KAAK,EAAE,KAAK,EACZ,cAAc,EAAE,cAAc,EAC9B,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,MAAM,EAAA,CACd,CACH,EACDD,cAAA,CAACE,YAAM,EAAA,EAAC,KAAK,EAAC,SAAS,EAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAC,MAAM,EAAA,QAAA,EACvC,QAAQ,EAAA,CACF,CAAA,EAAA,CACL;;;;"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { Box, VStack } from '@chakra-ui/react';
|
|
4
|
+
import { FormSectionHeader } from '../FormSectionHeader/FormSectionHeader.mjs';
|
|
5
|
+
|
|
6
|
+
/** The flat (non-collapsible) `FormSection` variant. */
|
|
7
|
+
const FlatFormSection = ({ title, titleAdornment, description, action, divider = false, gap = 4, children, ...boxProps }) => (jsxs(Box, { w: "100%", pt: divider ? 4 : undefined, borderTopWidth: divider ? '1px' : undefined, borderColor: divider ? 'border.subtle' : undefined, ...boxProps, children: [(title || titleAdornment || description || action) && (jsx(FormSectionHeader, { title: title, titleAdornment: titleAdornment, description: description, action: action })), jsx(VStack, { align: "stretch", gap: gap, w: "100%", children: children })] }));
|
|
8
|
+
|
|
9
|
+
export { FlatFormSection };
|
|
10
|
+
//# sourceMappingURL=FlatFormSection.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FlatFormSection.mjs","sources":["../../../../src/components/Form/FormSection/FlatFormSection.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":";;;;;AAUA;AACO,MAAM,eAAe,GAAG,CAAC,EAC9B,KAAK,EACL,cAAc,EACd,WAAW,EACX,MAAM,EACN,OAAO,GAAG,KAAK,EACf,GAAG,GAAG,CAAC,EACP,QAAQ,EACR,GAAG,QAAQ,EACU,MACrBA,IAAA,CAAC,GAAG,EAAA,EACF,CAAC,EAAC,MAAM,EACR,EAAE,EAAE,OAAO,GAAG,CAAC,GAAG,SAAS,EAC3B,cAAc,EAAE,OAAO,GAAG,KAAK,GAAG,SAAS,EAC3C,WAAW,EAAE,OAAO,GAAG,eAAe,GAAG,SAAS,EAAA,GAC9C,QAAQ,EAAA,QAAA,EAAA,CAEX,CAAC,KAAK,IAAI,cAAc,IAAI,WAAW,IAAI,MAAM,MAChDC,GAAA,CAAC,iBAAiB,EAAA,EAChB,KAAK,EAAE,KAAK,EACZ,cAAc,EAAE,cAAc,EAC9B,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,MAAM,EAAA,CACd,CACH,EACDA,GAAA,CAAC,MAAM,EAAA,EAAC,KAAK,EAAC,SAAS,EAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAC,MAAM,EAAA,QAAA,EACvC,QAAQ,EAAA,CACF,CAAA,EAAA,CACL;;;;"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { FormSectionProps } from './FormSection.types';
|
|
2
|
+
/**
|
|
3
|
+
* A titled group of form fields with one consistent rhythm — the shared
|
|
4
|
+
* replacement for the studio panels' ad-hoc `GroupHeader`/`ModeSection` +
|
|
5
|
+
* per-tab `VStack` gaps (8/6/12) and the workflow inspector's per-node section
|
|
6
|
+
* headers. Renders flat by default; set `collapsible` (with a `title`) to render
|
|
7
|
+
* the logician `CollapsibleSection` accordion. `gap` standardizes the field
|
|
8
|
+
* spacing so sections read the same everywhere.
|
|
9
|
+
*
|
|
10
|
+
* Thin dispatcher over the two single-purpose variants so each has one return.
|
|
11
|
+
*/
|
|
12
|
+
export declare const FormSection: ({ collapsible, defaultOpen, hasError, ...rest }: FormSectionProps) => import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
//# sourceMappingURL=FormSection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormSection.d.ts","sourceRoot":"","sources":["../../../../src/components/Form/FormSection/FormSection.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD;;;;;;;;;GASG;AACH,eAAO,MAAM,WAAW,GAAI,iDAKzB,gBAAgB,4CAahB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
5
|
+
var CollapsibleFormSection = require('./CollapsibleFormSection.js');
|
|
6
|
+
var FlatFormSection = require('./FlatFormSection.js');
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* A titled group of form fields with one consistent rhythm — the shared
|
|
10
|
+
* replacement for the studio panels' ad-hoc `GroupHeader`/`ModeSection` +
|
|
11
|
+
* per-tab `VStack` gaps (8/6/12) and the workflow inspector's per-node section
|
|
12
|
+
* headers. Renders flat by default; set `collapsible` (with a `title`) to render
|
|
13
|
+
* the logician `CollapsibleSection` accordion. `gap` standardizes the field
|
|
14
|
+
* spacing so sections read the same everywhere.
|
|
15
|
+
*
|
|
16
|
+
* Thin dispatcher over the two single-purpose variants so each has one return.
|
|
17
|
+
*/
|
|
18
|
+
const FormSection = ({ collapsible = false, defaultOpen = true, hasError = false, ...rest }) => collapsible && rest.title ? (jsxRuntime.jsx(CollapsibleFormSection.CollapsibleFormSection, { title: rest.title, action: rest.action, gap: rest.gap, defaultOpen: defaultOpen, hasError: hasError, children: rest.children })) : (jsxRuntime.jsx(FlatFormSection.FlatFormSection, { ...rest }));
|
|
19
|
+
|
|
20
|
+
exports.FormSection = FormSection;
|
|
21
|
+
//# sourceMappingURL=FormSection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormSection.js","sources":["../../../../src/components/Form/FormSection/FormSection.tsx"],"sourcesContent":[null],"names":["_jsx","CollapsibleFormSection","FlatFormSection"],"mappings":";;;;;;;AAIA;;;;;;;;;AASG;AACI,MAAM,WAAW,GAAG,CAAC,EAC1B,WAAW,GAAG,KAAK,EACnB,WAAW,GAAG,IAAI,EAClB,QAAQ,GAAG,KAAK,EAChB,GAAG,IAAI,EACU,KACjB,WAAW,IAAI,IAAI,CAAC,KAAK,IACvBA,cAAA,CAACC,6CAAsB,IACrB,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,GAAG,EAAE,IAAI,CAAC,GAAG,EACb,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,QAAQ,EAAA,QAAA,EAEjB,IAAI,CAAC,QAAQ,GACS,KAEzBD,cAAA,CAACE,+BAAe,OAAK,IAAI,EAAA,CAAI;;;;"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { CollapsibleFormSection } from './CollapsibleFormSection.mjs';
|
|
4
|
+
import { FlatFormSection } from './FlatFormSection.mjs';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* A titled group of form fields with one consistent rhythm — the shared
|
|
8
|
+
* replacement for the studio panels' ad-hoc `GroupHeader`/`ModeSection` +
|
|
9
|
+
* per-tab `VStack` gaps (8/6/12) and the workflow inspector's per-node section
|
|
10
|
+
* headers. Renders flat by default; set `collapsible` (with a `title`) to render
|
|
11
|
+
* the logician `CollapsibleSection` accordion. `gap` standardizes the field
|
|
12
|
+
* spacing so sections read the same everywhere.
|
|
13
|
+
*
|
|
14
|
+
* Thin dispatcher over the two single-purpose variants so each has one return.
|
|
15
|
+
*/
|
|
16
|
+
const FormSection = ({ collapsible = false, defaultOpen = true, hasError = false, ...rest }) => collapsible && rest.title ? (jsx(CollapsibleFormSection, { title: rest.title, action: rest.action, gap: rest.gap, defaultOpen: defaultOpen, hasError: hasError, children: rest.children })) : (jsx(FlatFormSection, { ...rest }));
|
|
17
|
+
|
|
18
|
+
export { FormSection };
|
|
19
|
+
//# sourceMappingURL=FormSection.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormSection.mjs","sources":["../../../../src/components/Form/FormSection/FormSection.tsx"],"sourcesContent":[null],"names":["_jsx"],"mappings":";;;;;AAIA;;;;;;;;;AASG;AACI,MAAM,WAAW,GAAG,CAAC,EAC1B,WAAW,GAAG,KAAK,EACnB,WAAW,GAAG,IAAI,EAClB,QAAQ,GAAG,KAAK,EAChB,GAAG,IAAI,EACU,KACjB,WAAW,IAAI,IAAI,CAAC,KAAK,IACvBA,GAAA,CAAC,sBAAsB,IACrB,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,GAAG,EAAE,IAAI,CAAC,GAAG,EACb,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,QAAQ,EAAA,QAAA,EAEjB,IAAI,CAAC,QAAQ,GACS,KAEzBA,GAAA,CAAC,eAAe,OAAK,IAAI,EAAA,CAAI;;;;"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { BoxProps } from '@chakra-ui/react';
|
|
3
|
+
export interface FormSectionProps extends Omit<BoxProps, 'title'> {
|
|
4
|
+
/** Section heading. */
|
|
5
|
+
title?: string;
|
|
6
|
+
/**
|
|
7
|
+
* Inline element rendered immediately after the heading (e.g. an
|
|
8
|
+
* `InfoSprinkle`). Flat variant only — the collapsible variant owns its own
|
|
9
|
+
* header. Distinct from `action`, which sits at the far right.
|
|
10
|
+
*/
|
|
11
|
+
titleAdornment?: ReactNode;
|
|
12
|
+
/** Secondary description under the heading. */
|
|
13
|
+
description?: ReactNode;
|
|
14
|
+
/** Right-aligned header slot (e.g. an add button or info-sprinkle trigger). */
|
|
15
|
+
action?: ReactNode;
|
|
16
|
+
/** Draw a top divider to separate this section from the previous one. */
|
|
17
|
+
divider?: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Render as a collapsible accordion (delegates to logician `CollapsibleSection`).
|
|
20
|
+
* Requires `title`.
|
|
21
|
+
*/
|
|
22
|
+
collapsible?: boolean;
|
|
23
|
+
/** Initial expanded state when `collapsible`. Defaults to open. */
|
|
24
|
+
defaultOpen?: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Flag a section that contains errors. When `collapsible` and collapsed, the
|
|
27
|
+
* chevron is replaced by a danger glyph so hidden errors aren't missed.
|
|
28
|
+
*/
|
|
29
|
+
hasError?: boolean;
|
|
30
|
+
/** Vertical gap between child fields. Defaults to the standard field rhythm. */
|
|
31
|
+
gap?: BoxProps['gap'];
|
|
32
|
+
children: ReactNode;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=FormSection.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormSection.types.d.ts","sourceRoot":"","sources":["../../../../src/components/Form/FormSection/FormSection.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC/D,uBAAuB;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,+CAA+C;IAC/C,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,+EAA+E;IAC/E,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,yEAAyE;IACzE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,mEAAmE;IACnE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gFAAgF;IAChF,GAAG,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtB,QAAQ,EAAE,SAAS,CAAC;CACrB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/Form/FormSection/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { FormSectionHeaderProps } from './FormSectionHeader.types';
|
|
2
|
+
/**
|
|
3
|
+
* The standardized section (fieldset) header — the section-level counterpart to
|
|
4
|
+
* {@link FieldLabel}. A heading, an optional inline adornment, a description,
|
|
5
|
+
* and a right-aligned action, laid out with one consistent rhythm (`H5` over a
|
|
6
|
+
* muted `Subtext`). Shared by `FormSection` and the studio `GroupHeader` so
|
|
7
|
+
* every titled field group reads the same everywhere.
|
|
8
|
+
*
|
|
9
|
+
* The description sits inside the left column so a tall `action` centers against
|
|
10
|
+
* the whole heading+description block, matching the prior studio `GroupHeader`.
|
|
11
|
+
*/
|
|
12
|
+
export declare const FormSectionHeader: ({ title, titleAdornment, description, action, mb, ...flexProps }: FormSectionHeaderProps) => import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
//# sourceMappingURL=FormSectionHeader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormSectionHeader.d.ts","sourceRoot":"","sources":["../../../../src/components/Form/FormSectionHeader/FormSectionHeader.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAEnE;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,GAAI,kEAO/B,sBAAsB,4CAwBxB,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
5
|
+
var react = require('@chakra-ui/react');
|
|
6
|
+
require('../../Typography/H1.js');
|
|
7
|
+
require('../../Typography/H2.js');
|
|
8
|
+
require('../../Typography/H3.js');
|
|
9
|
+
require('../../Typography/H4.js');
|
|
10
|
+
var H5 = require('../../Typography/H5.js');
|
|
11
|
+
require('../../Typography/Link.js');
|
|
12
|
+
require('../../Typography/Overline.js');
|
|
13
|
+
var Subtext = require('../../Typography/Subtext.js');
|
|
14
|
+
require('../../Typography/Subtitle.js');
|
|
15
|
+
require('../../Typography/Text.js');
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* The standardized section (fieldset) header — the section-level counterpart to
|
|
19
|
+
* {@link FieldLabel}. A heading, an optional inline adornment, a description,
|
|
20
|
+
* and a right-aligned action, laid out with one consistent rhythm (`H5` over a
|
|
21
|
+
* muted `Subtext`). Shared by `FormSection` and the studio `GroupHeader` so
|
|
22
|
+
* every titled field group reads the same everywhere.
|
|
23
|
+
*
|
|
24
|
+
* The description sits inside the left column so a tall `action` centers against
|
|
25
|
+
* the whole heading+description block, matching the prior studio `GroupHeader`.
|
|
26
|
+
*/
|
|
27
|
+
const FormSectionHeader = ({ title, titleAdornment, description, action, mb = 3, ...flexProps }) => (jsxRuntime.jsxs(react.Flex, { align: "center", justify: "space-between", gap: 2, mb: mb, w: "100%", ...flexProps, children: [jsxRuntime.jsxs(react.Box, { children: [(title || titleAdornment) && (jsxRuntime.jsxs(react.Flex, { align: "center", gap: 1, mb: description ? 1 : 0, children: [title && jsxRuntime.jsx(H5.H5, { children: title }), titleAdornment] })), description && (jsxRuntime.jsx(Subtext.Subtext, { color: "fg.muted", fontWeight: "normal", children: description }))] }), action] }));
|
|
28
|
+
|
|
29
|
+
exports.FormSectionHeader = FormSectionHeader;
|
|
30
|
+
//# sourceMappingURL=FormSectionHeader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormSectionHeader.js","sources":["../../../../src/components/Form/FormSectionHeader/FormSectionHeader.tsx"],"sourcesContent":[null],"names":["_jsxs","Flex","Box","_jsx","H5","Subtext"],"mappings":";;;;;;;;;;;;;;;;AAMA;;;;;;;;;AASG;AACI,MAAM,iBAAiB,GAAG,CAAC,EAChC,KAAK,EACL,cAAc,EACd,WAAW,EACX,MAAM,EACN,EAAE,GAAG,CAAC,EACN,GAAG,SAAS,EACW,MACvBA,eAAA,CAACC,UAAI,EAAA,EACH,KAAK,EAAC,QAAQ,EACd,OAAO,EAAC,eAAe,EACvB,GAAG,EAAE,CAAC,EACN,EAAE,EAAE,EAAE,EACN,CAAC,EAAC,MAAM,EAAA,GACJ,SAAS,EAAA,QAAA,EAAA,CAEbD,eAAA,CAACE,SAAG,EAAA,EAAA,QAAA,EAAA,CACD,CAAC,KAAK,IAAI,cAAc,MACvBF,eAAA,CAACC,UAAI,EAAA,EAAC,KAAK,EAAC,QAAQ,EAAC,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,WAAW,GAAG,CAAC,GAAG,CAAC,EAAA,QAAA,EAAA,CACjD,KAAK,IAAIE,cAAA,CAACC,KAAE,EAAA,EAAA,QAAA,EAAE,KAAK,EAAA,CAAM,EACzB,cAAc,CAAA,EAAA,CACV,CACR,EACA,WAAW,KACVD,cAAA,CAACE,eAAO,EAAA,EAAC,KAAK,EAAC,UAAU,EAAC,UAAU,EAAC,QAAQ,EAAA,QAAA,EAC1C,WAAW,EAAA,CACJ,CACX,CAAA,EAAA,CACG,EACL,MAAM,CAAA,EAAA,CACF;;;;"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { Flex, Box } from '@chakra-ui/react';
|
|
4
|
+
import '../../Typography/H1.mjs';
|
|
5
|
+
import '../../Typography/H2.mjs';
|
|
6
|
+
import '../../Typography/H3.mjs';
|
|
7
|
+
import '../../Typography/H4.mjs';
|
|
8
|
+
import { H5 } from '../../Typography/H5.mjs';
|
|
9
|
+
import '../../Typography/Link.mjs';
|
|
10
|
+
import '../../Typography/Overline.mjs';
|
|
11
|
+
import { Subtext } from '../../Typography/Subtext.mjs';
|
|
12
|
+
import '../../Typography/Subtitle.mjs';
|
|
13
|
+
import '../../Typography/Text.mjs';
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* The standardized section (fieldset) header — the section-level counterpart to
|
|
17
|
+
* {@link FieldLabel}. A heading, an optional inline adornment, a description,
|
|
18
|
+
* and a right-aligned action, laid out with one consistent rhythm (`H5` over a
|
|
19
|
+
* muted `Subtext`). Shared by `FormSection` and the studio `GroupHeader` so
|
|
20
|
+
* every titled field group reads the same everywhere.
|
|
21
|
+
*
|
|
22
|
+
* The description sits inside the left column so a tall `action` centers against
|
|
23
|
+
* the whole heading+description block, matching the prior studio `GroupHeader`.
|
|
24
|
+
*/
|
|
25
|
+
const FormSectionHeader = ({ title, titleAdornment, description, action, mb = 3, ...flexProps }) => (jsxs(Flex, { align: "center", justify: "space-between", gap: 2, mb: mb, w: "100%", ...flexProps, children: [jsxs(Box, { children: [(title || titleAdornment) && (jsxs(Flex, { align: "center", gap: 1, mb: description ? 1 : 0, children: [title && jsx(H5, { children: title }), titleAdornment] })), description && (jsx(Subtext, { color: "fg.muted", fontWeight: "normal", children: description }))] }), action] }));
|
|
26
|
+
|
|
27
|
+
export { FormSectionHeader };
|
|
28
|
+
//# sourceMappingURL=FormSectionHeader.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormSectionHeader.mjs","sources":["../../../../src/components/Form/FormSectionHeader/FormSectionHeader.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":";;;;;;;;;;;;;;AAMA;;;;;;;;;AASG;AACI,MAAM,iBAAiB,GAAG,CAAC,EAChC,KAAK,EACL,cAAc,EACd,WAAW,EACX,MAAM,EACN,EAAE,GAAG,CAAC,EACN,GAAG,SAAS,EACW,MACvBA,IAAA,CAAC,IAAI,EAAA,EACH,KAAK,EAAC,QAAQ,EACd,OAAO,EAAC,eAAe,EACvB,GAAG,EAAE,CAAC,EACN,EAAE,EAAE,EAAE,EACN,CAAC,EAAC,MAAM,EAAA,GACJ,SAAS,EAAA,QAAA,EAAA,CAEbA,IAAA,CAAC,GAAG,EAAA,EAAA,QAAA,EAAA,CACD,CAAC,KAAK,IAAI,cAAc,MACvBA,IAAA,CAAC,IAAI,EAAA,EAAC,KAAK,EAAC,QAAQ,EAAC,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,WAAW,GAAG,CAAC,GAAG,CAAC,EAAA,QAAA,EAAA,CACjD,KAAK,IAAIC,GAAA,CAAC,EAAE,EAAA,EAAA,QAAA,EAAE,KAAK,EAAA,CAAM,EACzB,cAAc,CAAA,EAAA,CACV,CACR,EACA,WAAW,KACVA,GAAA,CAAC,OAAO,EAAA,EAAC,KAAK,EAAC,UAAU,EAAC,UAAU,EAAC,QAAQ,EAAA,QAAA,EAC1C,WAAW,EAAA,CACJ,CACX,CAAA,EAAA,CACG,EACL,MAAM,CAAA,EAAA,CACF;;;;"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { FlexProps } from '@chakra-ui/react';
|
|
3
|
+
export interface FormSectionHeaderProps extends Omit<FlexProps, 'title'> {
|
|
4
|
+
/** Section heading — the fieldset-level label. */
|
|
5
|
+
title?: ReactNode;
|
|
6
|
+
/**
|
|
7
|
+
* Inline element rendered immediately after the title text (e.g. an
|
|
8
|
+
* `InfoSprinkle`). Distinct from `action`, which sits at the far right of
|
|
9
|
+
* the row.
|
|
10
|
+
*/
|
|
11
|
+
titleAdornment?: ReactNode;
|
|
12
|
+
/** Secondary description under the title. */
|
|
13
|
+
description?: ReactNode;
|
|
14
|
+
/** Right-aligned slot on the title row (e.g. an add button). */
|
|
15
|
+
action?: ReactNode;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=FormSectionHeader.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormSectionHeader.types.d.ts","sourceRoot":"","sources":["../../../../src/components/Form/FormSectionHeader/FormSectionHeader.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,MAAM,WAAW,sBAAuB,SAAQ,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC;IACtE,kDAAkD;IAClD,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;;OAIG;IACH,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,6CAA6C;IAC7C,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,gEAAgE;IAChE,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/Form/FormSectionHeader/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,YAAY,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export type { FieldErrorProps } from './FieldError';
|
|
2
|
+
export { FieldError } from './FieldError';
|
|
3
|
+
export type { FieldHelpProps } from './FieldHelp';
|
|
4
|
+
export { FieldHelp } from './FieldHelp';
|
|
5
|
+
export type { FieldLabelProps } from './FieldLabel';
|
|
6
|
+
export { FieldLabel } from './FieldLabel';
|
|
7
|
+
export type { FieldRowProps } from './FieldRow';
|
|
8
|
+
export { FieldRow } from './FieldRow';
|
|
9
|
+
export type { FormFooterProps } from './FormFooter';
|
|
10
|
+
export { FormFooter } from './FormFooter';
|
|
11
|
+
export type { FormModalFooterProps } from './FormModalFooter';
|
|
12
|
+
export { FormModalFooter } from './FormModalFooter';
|
|
13
|
+
export { FormScrollArea } from './FormScrollArea';
|
|
14
|
+
export type { FormSectionProps } from './FormSection';
|
|
15
|
+
export { FormSection } from './FormSection';
|
|
16
|
+
export type { FormSectionHeaderProps } from './FormSectionHeader';
|
|
17
|
+
export { FormSectionHeader } from './FormSectionHeader';
|
|
18
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Form/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -19,6 +19,7 @@ export * from './components/ExpandableText';
|
|
|
19
19
|
export * from './components/FileInput';
|
|
20
20
|
export * from './components/FileItem';
|
|
21
21
|
export * from './components/FileList';
|
|
22
|
+
export * from './components/Form';
|
|
22
23
|
export * from './components/FormControl';
|
|
23
24
|
export * from './components/FormLabel';
|
|
24
25
|
export type { IconProps } from './components/Icon/_utils/createIcon';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAG5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AAGvC,YAAY,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AACrE,cAAc,yBAAyB,CAAC;AAGxC,YAAY,EACV,WAAW,EACX,SAAS,IAAI,eAAe,GAC7B,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAG3E,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AAGxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AAGvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iCAAiC,CAAC;AAChD,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,yBAAyB,CAAC;AAGxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AAGtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAG5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC;AAClD,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AAEtC,OAAO,EACL,EAAE,EACF,EAAE,EACF,EAAE,EACF,EAAE,EACF,EAAE,EACF,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,IAAI,GACL,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,YAAY,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGnE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,EACL,MAAM,EACN,KAAK,kBAAkB,EACvB,cAAc,GACf,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAG5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AAGvC,YAAY,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AACrE,cAAc,yBAAyB,CAAC;AAGxC,YAAY,EACV,WAAW,EACX,SAAS,IAAI,eAAe,GAC7B,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAG3E,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AAGxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AAGvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iCAAiC,CAAC;AAChD,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,yBAAyB,CAAC;AAGxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AAGtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAG5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC;AAClD,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AAEtC,OAAO,EACL,EAAE,EACF,EAAE,EACF,EAAE,EACF,EAAE,EACF,EAAE,EACF,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,IAAI,GACL,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,YAAY,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGnE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,EACL,MAAM,EACN,KAAK,kBAAkB,EACvB,cAAc,GACf,MAAM,gBAAgB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -38,6 +38,15 @@ var ExpandableText = require('./components/ExpandableText/ExpandableText.js');
|
|
|
38
38
|
var FileInput = require('./components/FileInput/FileInput.js');
|
|
39
39
|
var FileItem = require('./components/FileItem/FileItem.js');
|
|
40
40
|
var FileList = require('./components/FileList/FileList.js');
|
|
41
|
+
var FieldError = require('./components/Form/FieldError/FieldError.js');
|
|
42
|
+
var FieldHelp = require('./components/Form/FieldHelp/FieldHelp.js');
|
|
43
|
+
var FieldLabel = require('./components/Form/FieldLabel/FieldLabel.js');
|
|
44
|
+
var FieldRow = require('./components/Form/FieldRow/FieldRow.js');
|
|
45
|
+
var FormFooter = require('./components/Form/FormFooter/FormFooter.js');
|
|
46
|
+
var FormModalFooter = require('./components/Form/FormModalFooter/FormModalFooter.js');
|
|
47
|
+
var FormScrollArea = require('./components/Form/FormScrollArea/FormScrollArea.js');
|
|
48
|
+
var FormSection = require('./components/Form/FormSection/FormSection.js');
|
|
49
|
+
var FormSectionHeader = require('./components/Form/FormSectionHeader/FormSectionHeader.js');
|
|
41
50
|
var FormControl = require('./components/FormControl/FormControl.js');
|
|
42
51
|
var FormLabel = require('./components/FormLabel/FormLabel.js');
|
|
43
52
|
var IconButton = require('./components/IconButton/IconButton.js');
|
|
@@ -213,6 +222,15 @@ exports.ExpandableText = ExpandableText.ExpandableText;
|
|
|
213
222
|
exports.FileInput = FileInput.FileInput;
|
|
214
223
|
exports.FileItem = FileItem.FileItem;
|
|
215
224
|
exports.FileList = FileList.FileList;
|
|
225
|
+
exports.FieldError = FieldError.FieldError;
|
|
226
|
+
exports.FieldHelp = FieldHelp.FieldHelp;
|
|
227
|
+
exports.FieldLabel = FieldLabel.FieldLabel;
|
|
228
|
+
exports.FieldRow = FieldRow.FieldRow;
|
|
229
|
+
exports.FormFooter = FormFooter.FormFooter;
|
|
230
|
+
exports.FormModalFooter = FormModalFooter.FormModalFooter;
|
|
231
|
+
exports.FormScrollArea = FormScrollArea.FormScrollArea;
|
|
232
|
+
exports.FormSection = FormSection.FormSection;
|
|
233
|
+
exports.FormSectionHeader = FormSectionHeader.FormSectionHeader;
|
|
216
234
|
exports.FormControl = FormControl.FormControl;
|
|
217
235
|
exports.FormLabel = FormLabel.FormLabel;
|
|
218
236
|
exports.IconButton = IconButton.IconButton;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/index.mjs
CHANGED
|
@@ -36,6 +36,15 @@ export { ExpandableText } from './components/ExpandableText/ExpandableText.mjs';
|
|
|
36
36
|
export { FileInput } from './components/FileInput/FileInput.mjs';
|
|
37
37
|
export { FileItem } from './components/FileItem/FileItem.mjs';
|
|
38
38
|
export { FileList } from './components/FileList/FileList.mjs';
|
|
39
|
+
export { FieldError } from './components/Form/FieldError/FieldError.mjs';
|
|
40
|
+
export { FieldHelp } from './components/Form/FieldHelp/FieldHelp.mjs';
|
|
41
|
+
export { FieldLabel } from './components/Form/FieldLabel/FieldLabel.mjs';
|
|
42
|
+
export { FieldRow } from './components/Form/FieldRow/FieldRow.mjs';
|
|
43
|
+
export { FormFooter } from './components/Form/FormFooter/FormFooter.mjs';
|
|
44
|
+
export { FormModalFooter } from './components/Form/FormModalFooter/FormModalFooter.mjs';
|
|
45
|
+
export { FormScrollArea } from './components/Form/FormScrollArea/FormScrollArea.mjs';
|
|
46
|
+
export { FormSection } from './components/Form/FormSection/FormSection.mjs';
|
|
47
|
+
export { FormSectionHeader } from './components/Form/FormSectionHeader/FormSectionHeader.mjs';
|
|
39
48
|
export { FormControl } from './components/FormControl/FormControl.mjs';
|
|
40
49
|
export { FormLabel } from './components/FormLabel/FormLabel.mjs';
|
|
41
50
|
export { IconButton } from './components/IconButton/IconButton.mjs';
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/package.json
CHANGED
|
@@ -46,11 +46,14 @@ export const buttonColorPaletteStyles: Record<
|
|
|
46
46
|
},
|
|
47
47
|
},
|
|
48
48
|
soft: {
|
|
49
|
-
|
|
49
|
+
// Same-hue hairline so soft reads as a defined control on white, not a
|
|
50
|
+
// floating fill. `light` sits well below `outline`'s `.main` border, so
|
|
51
|
+
// soft stays the quieter of the two bordered variants.
|
|
52
|
+
borderColor: 'primary.light',
|
|
50
53
|
bgColor: 'primary.extralight', // #E8EEFB
|
|
51
54
|
color: 'primary.dark', // #0D317D
|
|
52
55
|
_hover: {
|
|
53
|
-
borderColor: '
|
|
56
|
+
borderColor: 'primary.light',
|
|
54
57
|
bgColor: 'primary.lighter', // #B9CBF3
|
|
55
58
|
},
|
|
56
59
|
_active: {
|
|
@@ -102,11 +105,11 @@ export const buttonColorPaletteStyles: Record<
|
|
|
102
105
|
},
|
|
103
106
|
},
|
|
104
107
|
soft: {
|
|
105
|
-
borderColor: '
|
|
108
|
+
borderColor: 'secondary.light',
|
|
106
109
|
bgColor: 'secondary.extralight', // #F4E8FB
|
|
107
110
|
color: 'secondary.dark', // #570D7D
|
|
108
111
|
_hover: {
|
|
109
|
-
borderColor: '
|
|
112
|
+
borderColor: 'secondary.light',
|
|
110
113
|
bgColor: 'secondary.lighter', // #DEB9F3
|
|
111
114
|
},
|
|
112
115
|
_active: {
|
|
@@ -158,11 +161,11 @@ export const buttonColorPaletteStyles: Record<
|
|
|
158
161
|
},
|
|
159
162
|
},
|
|
160
163
|
soft: {
|
|
161
|
-
borderColor: '
|
|
164
|
+
borderColor: 'danger.light',
|
|
162
165
|
bgColor: 'danger.extralight', // #FBE8E9
|
|
163
166
|
color: 'danger.dark', // #7D0D14
|
|
164
167
|
_hover: {
|
|
165
|
-
borderColor: '
|
|
168
|
+
borderColor: 'danger.light',
|
|
166
169
|
bgColor: 'danger.lighter', // #F3B9BD
|
|
167
170
|
},
|
|
168
171
|
_active: {
|
|
@@ -214,11 +217,11 @@ export const buttonColorPaletteStyles: Record<
|
|
|
214
217
|
},
|
|
215
218
|
},
|
|
216
219
|
soft: {
|
|
217
|
-
borderColor: '
|
|
220
|
+
borderColor: 'success.light',
|
|
218
221
|
bgColor: 'success.extralight', // #E9FBE8
|
|
219
222
|
color: 'success.dark', // #147D0D
|
|
220
223
|
_hover: {
|
|
221
|
-
borderColor: '
|
|
224
|
+
borderColor: 'success.light',
|
|
222
225
|
bgColor: 'success.lighter', // #BDF3B9
|
|
223
226
|
},
|
|
224
227
|
_active: {
|
|
@@ -273,11 +276,11 @@ export const buttonColorPaletteStyles: Record<
|
|
|
273
276
|
},
|
|
274
277
|
},
|
|
275
278
|
soft: {
|
|
276
|
-
borderColor: '
|
|
279
|
+
borderColor: 'warning.light',
|
|
277
280
|
bgColor: 'warning.extralight', // #FBF6E8
|
|
278
281
|
color: 'warning.dark', // #7D610D
|
|
279
282
|
_hover: {
|
|
280
|
-
borderColor: '
|
|
283
|
+
borderColor: 'warning.light',
|
|
281
284
|
bgColor: 'warning.lighter', // #F3E4B9
|
|
282
285
|
},
|
|
283
286
|
_active: {
|
|
@@ -329,14 +332,16 @@ export const buttonColorPaletteStyles: Record<
|
|
|
329
332
|
},
|
|
330
333
|
},
|
|
331
334
|
soft: {
|
|
332
|
-
|
|
335
|
+
// `border.default` (not a gray tint) so the neutral hairline stays visible
|
|
336
|
+
// in dark mode, where `border.subtle` collapses into the fill.
|
|
337
|
+
borderColor: 'border.default', // gray.300 / gray.1100 (_dark)
|
|
333
338
|
// Neutral fills flip with the mode (light values preserved: bg.subtle →
|
|
334
339
|
// gray.50, bg.muted → gray.100). Without this the surface stayed light in
|
|
335
340
|
// dark mode while the fg.default text flipped to light = invisible.
|
|
336
341
|
bgColor: 'bg.subtle', // gray.50 / gray.1300 (_dark)
|
|
337
342
|
color: 'fg.default',
|
|
338
343
|
_hover: {
|
|
339
|
-
borderColor: '
|
|
344
|
+
borderColor: 'border.default',
|
|
340
345
|
bgColor: 'bg.muted', // gray.100 / gray.1200 (_dark)
|
|
341
346
|
},
|
|
342
347
|
_active: {
|
|
@@ -16,4 +16,12 @@ export const variantStyles = {
|
|
|
16
16
|
border: '1px solid',
|
|
17
17
|
borderColor: 'primary.light',
|
|
18
18
|
},
|
|
19
|
+
// Soft resting elevation — a gentle shadow does the separating, so the border
|
|
20
|
+
// can soften to `border.subtle` (which alone would be too faint, especially in
|
|
21
|
+
// dark mode). Use for standalone content cards that should read as raised
|
|
22
|
+
// objects rather than flat framed boxes.
|
|
23
|
+
elevated: {
|
|
24
|
+
boxShadow: 'sm',
|
|
25
|
+
borderColor: 'border.subtle',
|
|
26
|
+
},
|
|
19
27
|
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import { render, screen } from '@testing-library/react';
|
|
3
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
4
|
+
|
|
5
|
+
import { FieldError } from './FieldError';
|
|
6
|
+
|
|
7
|
+
// Field.ErrorText needs a Field.Root + invalid context to render; stub it to a
|
|
8
|
+
// passthrough so the test isolates FieldError's own null-when-empty guard.
|
|
9
|
+
vi.mock('@chakra-ui/react', () => ({
|
|
10
|
+
Field: {
|
|
11
|
+
ErrorText: ({ children }: { children?: ReactNode }) => (
|
|
12
|
+
<span data-testid="error-text">{children}</span>
|
|
13
|
+
),
|
|
14
|
+
},
|
|
15
|
+
}));
|
|
16
|
+
|
|
17
|
+
describe('FieldError', () => {
|
|
18
|
+
it('renders nothing when empty (safe to mount unconditionally)', () => {
|
|
19
|
+
const { rerender } = render(<FieldError />);
|
|
20
|
+
expect(screen.queryByTestId('error-text')).toBeNull();
|
|
21
|
+
|
|
22
|
+
rerender(<FieldError>{''}</FieldError>);
|
|
23
|
+
expect(screen.queryByTestId('error-text')).toBeNull();
|
|
24
|
+
|
|
25
|
+
rerender(<FieldError>{false}</FieldError>);
|
|
26
|
+
expect(screen.queryByTestId('error-text')).toBeNull();
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
it('renders the message when present', () => {
|
|
30
|
+
render(<FieldError>Display name is required.</FieldError>);
|
|
31
|
+
expect(screen.getByText('Display name is required.')).toBeInTheDocument();
|
|
32
|
+
});
|
|
33
|
+
});
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { Field } from '@chakra-ui/react';
|
|
3
|
+
|
|
4
|
+
export interface FieldErrorProps {
|
|
5
|
+
/** Error message. Renders nothing when empty, so it is safe to mount always. */
|
|
6
|
+
children?: ReactNode;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Field-level error message. Renders through Chakra's `Field.ErrorText`, so it
|
|
11
|
+
* shows only when the enclosing `FormControl`/`Field.Root` is `invalid`, and is
|
|
12
|
+
* wired to the control via `aria-describedby` + `aria-invalid` automatically.
|
|
13
|
+
* Use it inside a `FieldRow` (which flips the field to invalid when an `error`
|
|
14
|
+
* is set) — it replaces the hand-rolled `<Subtext color="danger.main">` error
|
|
15
|
+
* rows scattered across the app.
|
|
16
|
+
*/
|
|
17
|
+
export const FieldError = ({ children }: FieldErrorProps) => {
|
|
18
|
+
if (children == null || children === false || children === '') return null;
|
|
19
|
+
return <Field.ErrorText color="danger.main">{children}</Field.ErrorText>;
|
|
20
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { Field } from '@chakra-ui/react';
|
|
3
|
+
|
|
4
|
+
export interface FieldHelpProps {
|
|
5
|
+
/** Helper text rendered under the control. */
|
|
6
|
+
children: ReactNode;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Inline helper text under a form control. Renders through Chakra's
|
|
11
|
+
* `Field.HelperText`, so it is associated with the control via
|
|
12
|
+
* `aria-describedby` when used inside a `FieldRow`/`FormControl`. For a hover
|
|
13
|
+
* info-popover instead of always-visible text, pass a logician `InfoSprinkle`
|
|
14
|
+
* into the `FieldRow` `endAdornment` slot.
|
|
15
|
+
*/
|
|
16
|
+
export const FieldHelp = ({ children }: FieldHelpProps) => {
|
|
17
|
+
return <Field.HelperText>{children}</Field.HelperText>;
|
|
18
|
+
};
|