@mindlogic-ai/logician-ui 4.0.0-alpha.13 → 4.0.0-alpha.15

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 (166) hide show
  1. package/dist/components/Button/Button.styles.d.ts.map +1 -1
  2. package/dist/components/Button/Button.styles.js +18 -12
  3. package/dist/components/Button/Button.styles.js.map +1 -1
  4. package/dist/components/Button/Button.styles.mjs +18 -12
  5. package/dist/components/Button/Button.styles.mjs.map +1 -1
  6. package/dist/components/Card/Card.styles.d.ts +4 -0
  7. package/dist/components/Card/Card.styles.d.ts.map +1 -1
  8. package/dist/components/Card/Card.styles.js +8 -0
  9. package/dist/components/Card/Card.styles.js.map +1 -1
  10. package/dist/components/Card/Card.styles.mjs +8 -0
  11. package/dist/components/Card/Card.styles.mjs.map +1 -1
  12. package/dist/components/Card/Card.types.d.ts +1 -1
  13. package/dist/components/Card/Card.types.d.ts.map +1 -1
  14. package/dist/components/Form/FieldError/FieldError.d.ts +15 -0
  15. package/dist/components/Form/FieldError/FieldError.d.ts.map +1 -0
  16. package/dist/components/Form/FieldError/FieldError.js +22 -0
  17. package/dist/components/Form/FieldError/FieldError.js.map +1 -0
  18. package/dist/components/Form/FieldError/FieldError.mjs +20 -0
  19. package/dist/components/Form/FieldError/FieldError.mjs.map +1 -0
  20. package/dist/components/Form/FieldError/index.d.ts +3 -0
  21. package/dist/components/Form/FieldError/index.d.ts.map +1 -0
  22. package/dist/components/Form/FieldHelp/FieldHelp.d.ts +14 -0
  23. package/dist/components/Form/FieldHelp/FieldHelp.d.ts.map +1 -0
  24. package/dist/components/Form/FieldHelp/FieldHelp.js +19 -0
  25. package/dist/components/Form/FieldHelp/FieldHelp.js.map +1 -0
  26. package/dist/components/Form/FieldHelp/FieldHelp.mjs +17 -0
  27. package/dist/components/Form/FieldHelp/FieldHelp.mjs.map +1 -0
  28. package/dist/components/Form/FieldHelp/index.d.ts +3 -0
  29. package/dist/components/Form/FieldHelp/index.d.ts.map +1 -0
  30. package/dist/components/Form/FieldLabel/FieldLabel.d.ts +12 -0
  31. package/dist/components/Form/FieldLabel/FieldLabel.d.ts.map +1 -0
  32. package/dist/components/Form/FieldLabel/FieldLabel.js +32 -0
  33. package/dist/components/Form/FieldLabel/FieldLabel.js.map +1 -0
  34. package/dist/components/Form/FieldLabel/FieldLabel.mjs +30 -0
  35. package/dist/components/Form/FieldLabel/FieldLabel.mjs.map +1 -0
  36. package/dist/components/Form/FieldLabel/FieldLabel.types.d.ts +21 -0
  37. package/dist/components/Form/FieldLabel/FieldLabel.types.d.ts.map +1 -0
  38. package/dist/components/Form/FieldLabel/index.d.ts +3 -0
  39. package/dist/components/Form/FieldLabel/index.d.ts.map +1 -0
  40. package/dist/components/Form/FieldRow/FieldRow.d.ts +15 -0
  41. package/dist/components/Form/FieldRow/FieldRow.d.ts.map +1 -0
  42. package/dist/components/Form/FieldRow/FieldRow.js +27 -0
  43. package/dist/components/Form/FieldRow/FieldRow.js.map +1 -0
  44. package/dist/components/Form/FieldRow/FieldRow.mjs +25 -0
  45. package/dist/components/Form/FieldRow/FieldRow.mjs.map +1 -0
  46. package/dist/components/Form/FieldRow/FieldRow.types.d.ts +27 -0
  47. package/dist/components/Form/FieldRow/FieldRow.types.d.ts.map +1 -0
  48. package/dist/components/Form/FieldRow/index.d.ts +3 -0
  49. package/dist/components/Form/FieldRow/index.d.ts.map +1 -0
  50. package/dist/components/Form/FormFooter/FormFooter.d.ts +11 -0
  51. package/dist/components/Form/FormFooter/FormFooter.d.ts.map +1 -0
  52. package/dist/components/Form/FormFooter/FormFooter.js +20 -0
  53. package/dist/components/Form/FormFooter/FormFooter.js.map +1 -0
  54. package/dist/components/Form/FormFooter/FormFooter.mjs +18 -0
  55. package/dist/components/Form/FormFooter/FormFooter.mjs.map +1 -0
  56. package/dist/components/Form/FormFooter/FormFooter.types.d.ts +23 -0
  57. package/dist/components/Form/FormFooter/FormFooter.types.d.ts.map +1 -0
  58. package/dist/components/Form/FormFooter/index.d.ts +3 -0
  59. package/dist/components/Form/FormFooter/index.d.ts.map +1 -0
  60. package/dist/components/Form/FormModalFooter/FormModalFooter.d.ts +19 -0
  61. package/dist/components/Form/FormModalFooter/FormModalFooter.d.ts.map +1 -0
  62. package/dist/components/Form/FormModalFooter/FormModalFooter.js +42 -0
  63. package/dist/components/Form/FormModalFooter/FormModalFooter.js.map +1 -0
  64. package/dist/components/Form/FormModalFooter/FormModalFooter.mjs +40 -0
  65. package/dist/components/Form/FormModalFooter/FormModalFooter.mjs.map +1 -0
  66. package/dist/components/Form/FormModalFooter/FormModalFooter.types.d.ts +49 -0
  67. package/dist/components/Form/FormModalFooter/FormModalFooter.types.d.ts.map +1 -0
  68. package/dist/components/Form/FormModalFooter/index.d.ts +3 -0
  69. package/dist/components/Form/FormModalFooter/index.d.ts.map +1 -0
  70. package/dist/components/Form/FormScrollArea/FormScrollArea.d.ts +14 -0
  71. package/dist/components/Form/FormScrollArea/FormScrollArea.d.ts.map +1 -0
  72. package/dist/components/Form/FormScrollArea/FormScrollArea.js +18 -0
  73. package/dist/components/Form/FormScrollArea/FormScrollArea.js.map +1 -0
  74. package/dist/components/Form/FormScrollArea/FormScrollArea.mjs +16 -0
  75. package/dist/components/Form/FormScrollArea/FormScrollArea.mjs.map +1 -0
  76. package/dist/components/Form/FormScrollArea/index.d.ts +2 -0
  77. package/dist/components/Form/FormScrollArea/index.d.ts.map +1 -0
  78. package/dist/components/Form/FormSection/CollapsibleFormSection.d.ts +10 -0
  79. package/dist/components/Form/FormSection/CollapsibleFormSection.d.ts.map +1 -0
  80. package/dist/components/Form/FormSection/CollapsibleFormSection.js +43 -0
  81. package/dist/components/Form/FormSection/CollapsibleFormSection.js.map +1 -0
  82. package/dist/components/Form/FormSection/CollapsibleFormSection.mjs +41 -0
  83. package/dist/components/Form/FormSection/CollapsibleFormSection.mjs.map +1 -0
  84. package/dist/components/Form/FormSection/FlatFormSection.d.ts +6 -0
  85. package/dist/components/Form/FormSection/FlatFormSection.d.ts.map +1 -0
  86. package/dist/components/Form/FormSection/FlatFormSection.js +12 -0
  87. package/dist/components/Form/FormSection/FlatFormSection.js.map +1 -0
  88. package/dist/components/Form/FormSection/FlatFormSection.mjs +10 -0
  89. package/dist/components/Form/FormSection/FlatFormSection.mjs.map +1 -0
  90. package/dist/components/Form/FormSection/FormSection.d.ts +13 -0
  91. package/dist/components/Form/FormSection/FormSection.d.ts.map +1 -0
  92. package/dist/components/Form/FormSection/FormSection.js +21 -0
  93. package/dist/components/Form/FormSection/FormSection.js.map +1 -0
  94. package/dist/components/Form/FormSection/FormSection.mjs +19 -0
  95. package/dist/components/Form/FormSection/FormSection.mjs.map +1 -0
  96. package/dist/components/Form/FormSection/FormSection.types.d.ts +34 -0
  97. package/dist/components/Form/FormSection/FormSection.types.d.ts.map +1 -0
  98. package/dist/components/Form/FormSection/index.d.ts +3 -0
  99. package/dist/components/Form/FormSection/index.d.ts.map +1 -0
  100. package/dist/components/Form/FormSectionHeader/FormSectionHeader.d.ts +13 -0
  101. package/dist/components/Form/FormSectionHeader/FormSectionHeader.d.ts.map +1 -0
  102. package/dist/components/Form/FormSectionHeader/FormSectionHeader.js +30 -0
  103. package/dist/components/Form/FormSectionHeader/FormSectionHeader.js.map +1 -0
  104. package/dist/components/Form/FormSectionHeader/FormSectionHeader.mjs +28 -0
  105. package/dist/components/Form/FormSectionHeader/FormSectionHeader.mjs.map +1 -0
  106. package/dist/components/Form/FormSectionHeader/FormSectionHeader.types.d.ts +17 -0
  107. package/dist/components/Form/FormSectionHeader/FormSectionHeader.types.d.ts.map +1 -0
  108. package/dist/components/Form/FormSectionHeader/index.d.ts +3 -0
  109. package/dist/components/Form/FormSectionHeader/index.d.ts.map +1 -0
  110. package/dist/components/Form/index.d.ts +18 -0
  111. package/dist/components/Form/index.d.ts.map +1 -0
  112. package/dist/components/Tag/Tag.styles.js +5 -5
  113. package/dist/components/Tag/Tag.styles.js.map +1 -1
  114. package/dist/components/Tag/Tag.styles.mjs +5 -5
  115. package/dist/components/Tag/Tag.styles.mjs.map +1 -1
  116. package/dist/index.d.ts +1 -0
  117. package/dist/index.d.ts.map +1 -1
  118. package/dist/index.js +18 -0
  119. package/dist/index.js.map +1 -1
  120. package/dist/index.mjs +9 -0
  121. package/dist/index.mjs.map +1 -1
  122. package/package.json +1 -1
  123. package/src/components/Button/Button.styles.ts +18 -12
  124. package/src/components/Card/Card.stories.tsx +7 -0
  125. package/src/components/Card/Card.styles.ts +8 -0
  126. package/src/components/Card/Card.types.ts +1 -1
  127. package/src/components/Form/FieldError/FieldError.test.tsx +33 -0
  128. package/src/components/Form/FieldError/FieldError.tsx +20 -0
  129. package/src/components/Form/FieldError/index.ts +2 -0
  130. package/src/components/Form/FieldHelp/FieldHelp.tsx +18 -0
  131. package/src/components/Form/FieldHelp/index.ts +2 -0
  132. package/src/components/Form/FieldLabel/FieldLabel.tsx +46 -0
  133. package/src/components/Form/FieldLabel/FieldLabel.types.ts +21 -0
  134. package/src/components/Form/FieldLabel/index.ts +2 -0
  135. package/src/components/Form/FieldRow/FieldRow.stories.tsx +85 -0
  136. package/src/components/Form/FieldRow/FieldRow.test.tsx +89 -0
  137. package/src/components/Form/FieldRow/FieldRow.tsx +46 -0
  138. package/src/components/Form/FieldRow/FieldRow.types.ts +32 -0
  139. package/src/components/Form/FieldRow/index.ts +2 -0
  140. package/src/components/Form/FormFooter/FormFooter.stories.tsx +70 -0
  141. package/src/components/Form/FormFooter/FormFooter.test.tsx +67 -0
  142. package/src/components/Form/FormFooter/FormFooter.tsx +46 -0
  143. package/src/components/Form/FormFooter/FormFooter.types.ts +23 -0
  144. package/src/components/Form/FormFooter/index.ts +2 -0
  145. package/src/components/Form/FormModalFooter/FormModalFooter.stories.tsx +64 -0
  146. package/src/components/Form/FormModalFooter/FormModalFooter.test.tsx +155 -0
  147. package/src/components/Form/FormModalFooter/FormModalFooter.tsx +83 -0
  148. package/src/components/Form/FormModalFooter/FormModalFooter.types.ts +53 -0
  149. package/src/components/Form/FormModalFooter/index.ts +2 -0
  150. package/src/components/Form/FormScrollArea/FormScrollArea.tsx +27 -0
  151. package/src/components/Form/FormScrollArea/index.ts +1 -0
  152. package/src/components/Form/FormSection/CollapsibleFormSection.tsx +35 -0
  153. package/src/components/Form/FormSection/FlatFormSection.tsx +41 -0
  154. package/src/components/Form/FormSection/FormSection.stories.tsx +115 -0
  155. package/src/components/Form/FormSection/FormSection.test.tsx +89 -0
  156. package/src/components/Form/FormSection/FormSection.tsx +33 -0
  157. package/src/components/Form/FormSection/FormSection.types.ts +34 -0
  158. package/src/components/Form/FormSection/index.ts +2 -0
  159. package/src/components/Form/FormSectionHeader/FormSectionHeader.stories.tsx +53 -0
  160. package/src/components/Form/FormSectionHeader/FormSectionHeader.test.tsx +74 -0
  161. package/src/components/Form/FormSectionHeader/FormSectionHeader.tsx +48 -0
  162. package/src/components/Form/FormSectionHeader/FormSectionHeader.types.ts +17 -0
  163. package/src/components/Form/FormSectionHeader/index.ts +2 -0
  164. package/src/components/Form/index.ts +17 -0
  165. package/src/components/Tag/Tag.styles.ts +5 -5
  166. package/src/index.ts +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/Form/FieldLabel/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { FieldRowProps } from './FieldRow.types';
2
+ /**
3
+ * The composition keystone for a form field: wraps a control in a logician
4
+ * `FormControl` (Chakra `Field.Root`) and lays out its label, optional
5
+ * description/help, and error consistently. Because it delegates to the `Field`
6
+ * context, the label↔control association, the `required` asterisk, `aria-invalid`
7
+ * and the error/helper `aria-describedby` wiring are all handled automatically —
8
+ * callers never thread ids by hand.
9
+ *
10
+ * It is form-library agnostic: pass `value`/`onChange` controls directly (media
11
+ * forms) or render a form-connected adapter as the child (studio/admin forms). Set
12
+ * `error` to flip the field to invalid and surface the message.
13
+ */
14
+ export declare const FieldRow: ({ label, description, endAdornment, helperText, error, invalid, children, labelProps, ...rootProps }: FieldRowProps) => import("react/jsx-runtime").JSX.Element;
15
+ //# sourceMappingURL=FieldRow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FieldRow.d.ts","sourceRoot":"","sources":["../../../../src/components/Form/FieldRow/FieldRow.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,QAAQ,GAAI,sGAUtB,aAAa,4CAgBf,CAAC"}
@@ -0,0 +1,27 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var FormControl = require('../../FormControl/FormControl.js');
6
+ var FieldError = require('../FieldError/FieldError.js');
7
+ var FieldHelp = require('../FieldHelp/FieldHelp.js');
8
+ var FieldLabel = require('../FieldLabel/FieldLabel.js');
9
+
10
+ /**
11
+ * The composition keystone for a form field: wraps a control in a logician
12
+ * `FormControl` (Chakra `Field.Root`) and lays out its label, optional
13
+ * description/help, and error consistently. Because it delegates to the `Field`
14
+ * context, the label↔control association, the `required` asterisk, `aria-invalid`
15
+ * and the error/helper `aria-describedby` wiring are all handled automatically —
16
+ * callers never thread ids by hand.
17
+ *
18
+ * It is form-library agnostic: pass `value`/`onChange` controls directly (media
19
+ * forms) or render a form-connected adapter as the child (studio/admin forms). Set
20
+ * `error` to flip the field to invalid and surface the message.
21
+ */
22
+ const FieldRow = ({ label, description, endAdornment, helperText, error, invalid, children, labelProps, ...rootProps }) => {
23
+ return (jsxRuntime.jsxs(FormControl.FormControl, { invalid: invalid ?? Boolean(error), ...rootProps, children: [(label != null || endAdornment != null) && (jsxRuntime.jsx(FieldLabel.FieldLabel, { heading: label, description: description, endAdornment: endAdornment, ...labelProps })), children, helperText != null && jsxRuntime.jsx(FieldHelp.FieldHelp, { children: helperText }), jsxRuntime.jsx(FieldError.FieldError, { children: error })] }));
24
+ };
25
+
26
+ exports.FieldRow = FieldRow;
27
+ //# sourceMappingURL=FieldRow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FieldRow.js","sources":["../../../../src/components/Form/FieldRow/FieldRow.tsx"],"sourcesContent":[null],"names":["_jsxs","FormControl","_jsx","FieldLabel","FieldHelp","FieldError"],"mappings":";;;;;;;;;AAOA;;;;;;;;;;;AAWG;AACI,MAAM,QAAQ,GAAG,CAAC,EACvB,KAAK,EACL,WAAW,EACX,YAAY,EACZ,UAAU,EACV,KAAK,EACL,OAAO,EACP,QAAQ,EACR,UAAU,EACV,GAAG,SAAS,EACE,KAAI;AAClB,IAAA,QACEA,eAAA,CAACC,uBAAW,EAAA,EAAC,OAAO,EAAE,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,KAAM,SAAS,EAAA,QAAA,EAAA,CAC3D,CAAC,KAAK,IAAI,IAAI,IAAI,YAAY,IAAI,IAAI,MACrCC,cAAA,CAACC,qBAAU,EAAA,EACT,OAAO,EAAE,KAAK,EACd,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,EAAA,GACtB,UAAU,EAAA,CACd,CACH,EACA,QAAQ,EACR,UAAU,IAAI,IAAI,IAAID,cAAA,CAACE,mBAAS,EAAA,EAAA,QAAA,EAAE,UAAU,EAAA,CAAa,EAC1DF,cAAA,CAACG,qBAAU,EAAA,EAAA,QAAA,EAAE,KAAK,EAAA,CAAc,CAAA,EAAA,CACpB;AAElB;;;;"}
@@ -0,0 +1,25 @@
1
+ "use client";
2
+ import { jsxs, jsx } from 'react/jsx-runtime';
3
+ import { FormControl } from '../../FormControl/FormControl.mjs';
4
+ import { FieldError } from '../FieldError/FieldError.mjs';
5
+ import { FieldHelp } from '../FieldHelp/FieldHelp.mjs';
6
+ import { FieldLabel } from '../FieldLabel/FieldLabel.mjs';
7
+
8
+ /**
9
+ * The composition keystone for a form field: wraps a control in a logician
10
+ * `FormControl` (Chakra `Field.Root`) and lays out its label, optional
11
+ * description/help, and error consistently. Because it delegates to the `Field`
12
+ * context, the label↔control association, the `required` asterisk, `aria-invalid`
13
+ * and the error/helper `aria-describedby` wiring are all handled automatically —
14
+ * callers never thread ids by hand.
15
+ *
16
+ * It is form-library agnostic: pass `value`/`onChange` controls directly (media
17
+ * forms) or render a form-connected adapter as the child (studio/admin forms). Set
18
+ * `error` to flip the field to invalid and surface the message.
19
+ */
20
+ const FieldRow = ({ label, description, endAdornment, helperText, error, invalid, children, labelProps, ...rootProps }) => {
21
+ return (jsxs(FormControl, { invalid: invalid ?? Boolean(error), ...rootProps, children: [(label != null || endAdornment != null) && (jsx(FieldLabel, { heading: label, description: description, endAdornment: endAdornment, ...labelProps })), children, helperText != null && jsx(FieldHelp, { children: helperText }), jsx(FieldError, { children: error })] }));
22
+ };
23
+
24
+ export { FieldRow };
25
+ //# sourceMappingURL=FieldRow.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FieldRow.mjs","sources":["../../../../src/components/Form/FieldRow/FieldRow.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":";;;;;;;AAOA;;;;;;;;;;;AAWG;AACI,MAAM,QAAQ,GAAG,CAAC,EACvB,KAAK,EACL,WAAW,EACX,YAAY,EACZ,UAAU,EACV,KAAK,EACL,OAAO,EACP,QAAQ,EACR,UAAU,EACV,GAAG,SAAS,EACE,KAAI;AAClB,IAAA,QACEA,IAAA,CAAC,WAAW,EAAA,EAAC,OAAO,EAAE,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,KAAM,SAAS,EAAA,QAAA,EAAA,CAC3D,CAAC,KAAK,IAAI,IAAI,IAAI,YAAY,IAAI,IAAI,MACrCC,GAAA,CAAC,UAAU,EAAA,EACT,OAAO,EAAE,KAAK,EACd,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,EAAA,GACtB,UAAU,EAAA,CACd,CACH,EACA,QAAQ,EACR,UAAU,IAAI,IAAI,IAAIA,GAAA,CAAC,SAAS,EAAA,EAAA,QAAA,EAAE,UAAU,EAAA,CAAa,EAC1DA,GAAA,CAAC,UAAU,EAAA,EAAA,QAAA,EAAE,KAAK,EAAA,CAAc,CAAA,EAAA,CACpB;AAElB;;;;"}
@@ -0,0 +1,27 @@
1
+ import { ReactNode } from 'react';
2
+ import { FormControlProps } from '@/components/FormControl';
3
+ import { FieldLabelProps } from '../FieldLabel';
4
+ export interface FieldRowProps extends Omit<FormControlProps, 'label'> {
5
+ /** Field label heading. Omit for an unlabeled control row. */
6
+ label?: ReactNode;
7
+ /** Secondary description rendered under the label. */
8
+ description?: ReactNode;
9
+ /**
10
+ * Inline node at the right of the label row — a count badge, an action
11
+ * button, or a logician `InfoSprinkle` help popover.
12
+ */
13
+ endAdornment?: ReactNode;
14
+ /** Always-visible helper text rendered under the control. */
15
+ helperText?: ReactNode;
16
+ /**
17
+ * Error message. When set (and `invalid` is not explicitly overridden) the
18
+ * field renders as invalid, so the control gets `aria-invalid` and the error
19
+ * is announced and associated via `aria-describedby`.
20
+ */
21
+ error?: ReactNode;
22
+ /** The control (input/select/switch/…) this row wraps. */
23
+ children: ReactNode;
24
+ /** Extra props forwarded to the inner `FieldLabel` (e.g. custom `mb`). */
25
+ labelProps?: Omit<FieldLabelProps, 'heading' | 'description' | 'endAdornment'>;
26
+ }
27
+ //# sourceMappingURL=FieldRow.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FieldRow.types.d.ts","sourceRoot":"","sources":["../../../../src/components/Form/FieldRow/FieldRow.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACpE,8DAA8D;IAC9D,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,sDAAsD;IACtD,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;;OAGG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,6DAA6D;IAC7D,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,0DAA0D;IAC1D,QAAQ,EAAE,SAAS,CAAC;IACpB,0EAA0E;IAC1E,UAAU,CAAC,EAAE,IAAI,CACf,eAAe,EACf,SAAS,GAAG,aAAa,GAAG,cAAc,CAC3C,CAAC;CACH"}
@@ -0,0 +1,3 @@
1
+ export { FieldRow } from './FieldRow';
2
+ export type { FieldRowProps } from './FieldRow.types';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/Form/FieldRow/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { FormFooterProps } from './FormFooter.types';
2
+ /**
3
+ * The sticky footer shell shared by the form-in-sidebar surfaces — the studio
4
+ * settings footer and the image/video generation footers. It standardizes the
5
+ * chrome (sticky bottom, `bg.surface`, hairline top border) and lays out an
6
+ * optional left `start` slot against a right group of `meta` + `action`. The
7
+ * action's own loading/disabled state lives on the button passed in, so this is
8
+ * a pure layout shell.
9
+ */
10
+ export declare const FormFooter: ({ start, meta, action, sticky, ...rest }: FormFooterProps) => import("react/jsx-runtime").JSX.Element;
11
+ //# sourceMappingURL=FormFooter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormFooter.d.ts","sourceRoot":"","sources":["../../../../src/components/Form/FormFooter/FormFooter.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,GAAI,0CAMxB,eAAe,4CA2BjB,CAAC"}
@@ -0,0 +1,20 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var react = require('@chakra-ui/react');
6
+
7
+ /**
8
+ * The sticky footer shell shared by the form-in-sidebar surfaces — the studio
9
+ * settings footer and the image/video generation footers. It standardizes the
10
+ * chrome (sticky bottom, `bg.surface`, hairline top border) and lays out an
11
+ * optional left `start` slot against a right group of `meta` + `action`. The
12
+ * action's own loading/disabled state lives on the button passed in, so this is
13
+ * a pure layout shell.
14
+ */
15
+ const FormFooter = ({ start, meta, action, sticky = true, ...rest }) => {
16
+ return (jsxRuntime.jsxs(react.Flex, { ...(sticky ? { position: 'sticky', bottom: 0 } : { flexShrink: 0 }), p: 4, borderTopWidth: "1px", borderColor: "border.subtle", w: "100%", bgColor: "bg.surface", justify: start ? 'space-between' : 'flex-end', align: "center", ...rest, children: [start, (meta != null || action != null) && (jsxRuntime.jsxs(react.Flex, { align: "center", justify: "flex-end", gap: 4, flex: start ? undefined : 1, children: [meta, action] }))] }));
17
+ };
18
+
19
+ exports.FormFooter = FormFooter;
20
+ //# sourceMappingURL=FormFooter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormFooter.js","sources":["../../../../src/components/Form/FormFooter/FormFooter.tsx"],"sourcesContent":[null],"names":["_jsxs","Flex"],"mappings":";;;;;;AAIA;;;;;;;AAOG;MACU,UAAU,GAAG,CAAC,EACzB,KAAK,EACL,IAAI,EACJ,MAAM,EACN,MAAM,GAAG,IAAI,EACb,GAAG,IAAI,EACS,KAAI;IACpB,QACEA,eAAA,CAACC,UAAI,EAAA,EAAA,IACE,MAAM,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,EACpE,CAAC,EAAE,CAAC,EACJ,cAAc,EAAC,KAAK,EACpB,WAAW,EAAC,eAAe,EAC3B,CAAC,EAAC,MAAM,EACR,OAAO,EAAC,YAAY,EACpB,OAAO,EAAE,KAAK,GAAG,eAAe,GAAG,UAAU,EAC7C,KAAK,EAAC,QAAQ,KACV,IAAI,EAAA,QAAA,EAAA,CAEP,KAAK,EACL,CAAC,IAAI,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,MAC9BD,eAAA,CAACC,UAAI,EAAA,EACH,KAAK,EAAC,QAAQ,EACd,OAAO,EAAC,UAAU,EAClB,GAAG,EAAE,CAAC,EACN,IAAI,EAAE,KAAK,GAAG,SAAS,GAAG,CAAC,EAAA,QAAA,EAAA,CAE1B,IAAI,EACJ,MAAM,CAAA,EAAA,CACF,CACR,CAAA,EAAA,CACI;AAEX;;;;"}
@@ -0,0 +1,18 @@
1
+ "use client";
2
+ import { jsxs } from 'react/jsx-runtime';
3
+ import { Flex } from '@chakra-ui/react';
4
+
5
+ /**
6
+ * The sticky footer shell shared by the form-in-sidebar surfaces — the studio
7
+ * settings footer and the image/video generation footers. It standardizes the
8
+ * chrome (sticky bottom, `bg.surface`, hairline top border) and lays out an
9
+ * optional left `start` slot against a right group of `meta` + `action`. The
10
+ * action's own loading/disabled state lives on the button passed in, so this is
11
+ * a pure layout shell.
12
+ */
13
+ const FormFooter = ({ start, meta, action, sticky = true, ...rest }) => {
14
+ return (jsxs(Flex, { ...(sticky ? { position: 'sticky', bottom: 0 } : { flexShrink: 0 }), p: 4, borderTopWidth: "1px", borderColor: "border.subtle", w: "100%", bgColor: "bg.surface", justify: start ? 'space-between' : 'flex-end', align: "center", ...rest, children: [start, (meta != null || action != null) && (jsxs(Flex, { align: "center", justify: "flex-end", gap: 4, flex: start ? undefined : 1, children: [meta, action] }))] }));
15
+ };
16
+
17
+ export { FormFooter };
18
+ //# sourceMappingURL=FormFooter.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormFooter.mjs","sources":["../../../../src/components/Form/FormFooter/FormFooter.tsx"],"sourcesContent":[null],"names":["_jsxs"],"mappings":";;;;AAIA;;;;;;;AAOG;MACU,UAAU,GAAG,CAAC,EACzB,KAAK,EACL,IAAI,EACJ,MAAM,EACN,MAAM,GAAG,IAAI,EACb,GAAG,IAAI,EACS,KAAI;IACpB,QACEA,IAAA,CAAC,IAAI,EAAA,EAAA,IACE,MAAM,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,EACpE,CAAC,EAAE,CAAC,EACJ,cAAc,EAAC,KAAK,EACpB,WAAW,EAAC,eAAe,EAC3B,CAAC,EAAC,MAAM,EACR,OAAO,EAAC,YAAY,EACpB,OAAO,EAAE,KAAK,GAAG,eAAe,GAAG,UAAU,EAC7C,KAAK,EAAC,QAAQ,KACV,IAAI,EAAA,QAAA,EAAA,CAEP,KAAK,EACL,CAAC,IAAI,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,MAC9BA,IAAA,CAAC,IAAI,EAAA,EACH,KAAK,EAAC,QAAQ,EACd,OAAO,EAAC,UAAU,EAClB,GAAG,EAAE,CAAC,EACN,IAAI,EAAE,KAAK,GAAG,SAAS,GAAG,CAAC,EAAA,QAAA,EAAA,CAE1B,IAAI,EACJ,MAAM,CAAA,EAAA,CACF,CACR,CAAA,EAAA,CACI;AAEX;;;;"}
@@ -0,0 +1,23 @@
1
+ import { ReactNode } from 'react';
2
+ import { FlexProps } from '@chakra-ui/react';
3
+ export interface FormFooterProps extends Omit<FlexProps, 'children'> {
4
+ /**
5
+ * Left-aligned slot — typically a destructive or back action (e.g. delete).
6
+ * When present the footer justifies its content `space-between`; otherwise the
7
+ * right group fills the width.
8
+ */
9
+ start?: ReactNode;
10
+ /**
11
+ * Right-aligned metadata rendered before the action — a saved-at timestamp or
12
+ * a credit cost.
13
+ */
14
+ meta?: ReactNode;
15
+ /** The primary action, right-aligned. */
16
+ action?: ReactNode;
17
+ /**
18
+ * Pin the footer to the bottom of its scroll container. Defaults to true; set
19
+ * false for a footer that flows at the end of non-scrolling content.
20
+ */
21
+ sticky?: boolean;
22
+ }
23
+ //# sourceMappingURL=FormFooter.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormFooter.types.d.ts","sourceRoot":"","sources":["../../../../src/components/Form/FormFooter/FormFooter.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC;IAClE;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;OAGG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,yCAAyC;IACzC,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB"}
@@ -0,0 +1,3 @@
1
+ export { FormFooter } from './FormFooter';
2
+ export type { FormFooterProps } from './FormFooter.types';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/Form/FormFooter/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { FormModalFooterProps } from './FormModalFooter.types';
2
+ /**
3
+ * The action footer shared by form-in-a-modal surfaces — the form analog of a
4
+ * confirm-modal footer. It standardizes the button trio every create/edit modal
5
+ * hand-rolls: an optional far-left destructive action, a neutral Cancel, and the
6
+ * primary submit that carries its own loading + disabled state.
7
+ *
8
+ * Copy-agnostic by design: as a design-system component it owns no strings, so
9
+ * `cancelLabel` is required and `deleteLabel` is rendered verbatim — the
10
+ * consuming app supplies its own (translated) labels.
11
+ *
12
+ * Submit path: inside a `<form onSubmit>` leave `onSubmit` unset so the button
13
+ * stays `type="submit"` (Enter submits); for a portaled or no-`<form>` modal
14
+ * pass `onSubmit` and it becomes a `type="button"` onClick. `...rest` forwards to
15
+ * the logician `ModalFooter`, so callers pin it (`position="sticky"` /
16
+ * `flexShrink={0}`) or zero its padding (`px={0}`) per modal.
17
+ */
18
+ export declare const FormModalFooter: ({ onDelete, deleteLabel, onCancel, cancelLabel, submitLabel, submitColorPalette, isSubmitting, submitDisabled, onSubmit, bordered, ...rest }: FormModalFooterProps) => import("react/jsx-runtime").JSX.Element;
19
+ //# sourceMappingURL=FormModalFooter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormModalFooter.d.ts","sourceRoot":"","sources":["../../../../src/components/Form/FormModalFooter/FormModalFooter.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE/D;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,eAAe,GAAI,8IAY7B,oBAAoB,4CAgDtB,CAAC"}
@@ -0,0 +1,42 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var Button = require('../../Button/Button.js');
6
+ var index = require('../../Icon/index.js');
7
+ require('react');
8
+ require('@chakra-ui/react');
9
+ require('../../Modal/ModalContext.js');
10
+ require('../../IconButton/IconButton.js');
11
+ require('../../IconButton/IconButton.styles.js');
12
+ require('../../ScaledContext/ScaledContext.js');
13
+ var ModalFooter = require('../../Modal/ModalFooter/ModalFooter.js');
14
+
15
+ /**
16
+ * The action footer shared by form-in-a-modal surfaces — the form analog of a
17
+ * confirm-modal footer. It standardizes the button trio every create/edit modal
18
+ * hand-rolls: an optional far-left destructive action, a neutral Cancel, and the
19
+ * primary submit that carries its own loading + disabled state.
20
+ *
21
+ * Copy-agnostic by design: as a design-system component it owns no strings, so
22
+ * `cancelLabel` is required and `deleteLabel` is rendered verbatim — the
23
+ * consuming app supplies its own (translated) labels.
24
+ *
25
+ * Submit path: inside a `<form onSubmit>` leave `onSubmit` unset so the button
26
+ * stays `type="submit"` (Enter submits); for a portaled or no-`<form>` modal
27
+ * pass `onSubmit` and it becomes a `type="button"` onClick. `...rest` forwards to
28
+ * the logician `ModalFooter`, so callers pin it (`position="sticky"` /
29
+ * `flexShrink={0}`) or zero its padding (`px={0}`) per modal.
30
+ */
31
+ const FormModalFooter = ({ onDelete, deleteLabel, onCancel, cancelLabel, submitLabel, submitColorPalette = 'primary', isSubmitting = false, submitDisabled = false, onSubmit, bordered = false, ...rest }) => {
32
+ return (jsxRuntime.jsxs(ModalFooter.ModalFooter, { justifyContent: "flex-end", gap: 2, ...(bordered
33
+ ? {
34
+ bg: 'bg.surface',
35
+ borderTop: '1px solid',
36
+ borderColor: 'border.subtle',
37
+ }
38
+ : {}), ...rest, children: [onDelete && (jsxRuntime.jsxs(Button.Button, { colorPalette: "danger", variant: "solid", type: "button", onClick: onDelete, disabled: isSubmitting, mr: "auto", children: [jsxRuntime.jsx(index.TrashIcon, { boxSize: "sm" }), deleteLabel] })), jsxRuntime.jsx(Button.Button, { colorPalette: "neutral", variant: "outline", type: "button", onClick: onCancel, disabled: isSubmitting, children: cancelLabel }), jsxRuntime.jsx(Button.Button, { colorPalette: submitColorPalette, variant: "solid", type: onSubmit ? 'button' : 'submit', onClick: onSubmit, loading: isSubmitting, disabled: isSubmitting || submitDisabled, children: submitLabel })] }));
39
+ };
40
+
41
+ exports.FormModalFooter = FormModalFooter;
42
+ //# sourceMappingURL=FormModalFooter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormModalFooter.js","sources":["../../../../src/components/Form/FormModalFooter/FormModalFooter.tsx"],"sourcesContent":[null],"names":["_jsxs","ModalFooter","Button","_jsx","TrashIcon"],"mappings":";;;;;;;;;;;;;;AAMA;;;;;;;;;;;;;;;AAeG;AACI,MAAM,eAAe,GAAG,CAAC,EAC9B,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,WAAW,EACX,WAAW,EACX,kBAAkB,GAAG,SAAS,EAC9B,YAAY,GAAG,KAAK,EACpB,cAAc,GAAG,KAAK,EACtB,QAAQ,EACR,QAAQ,GAAG,KAAK,EAChB,GAAG,IAAI,EACc,KAAI;AACzB,IAAA,QACEA,eAAA,CAACC,uBAAW,EAAA,EACV,cAAc,EAAC,UAAU,EACzB,GAAG,EAAE,CAAC,EAAA,IACD;AACH,cAAE;AACE,gBAAA,EAAE,EAAE,YAAY;AAChB,gBAAA,SAAS,EAAE,WAAW;AACtB,gBAAA,WAAW,EAAE,eAAe;AAC7B;cACD,EAAE,CAAC,EAAA,GACH,IAAI,aAEP,QAAQ,KACPD,eAAA,CAACE,aAAM,EAAA,EACL,YAAY,EAAC,QAAQ,EACrB,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,QAAQ,EACjB,QAAQ,EAAE,YAAY,EACtB,EAAE,EAAC,MAAM,EAAA,QAAA,EAAA,CAETC,cAAA,CAACC,eAAS,EAAA,EAAC,OAAO,EAAC,IAAI,GAAG,EACzB,WAAW,CAAA,EAAA,CACL,CACV,EACDD,cAAA,CAACD,aAAM,EAAA,EACL,YAAY,EAAC,SAAS,EACtB,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,QAAQ,EACjB,QAAQ,EAAE,YAAY,EAAA,QAAA,EAErB,WAAW,GACL,EACTC,cAAA,CAACD,aAAM,EAAA,EACL,YAAY,EAAE,kBAAkB,EAChC,OAAO,EAAC,OAAO,EACf,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,EACpC,OAAO,EAAE,QAAQ,EACjB,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,YAAY,IAAI,cAAc,EAAA,QAAA,EAEvC,WAAW,EAAA,CACL,CAAA,EAAA,CACG;AAElB;;;;"}
@@ -0,0 +1,40 @@
1
+ "use client";
2
+ import { jsxs, jsx } from 'react/jsx-runtime';
3
+ import { Button } from '../../Button/Button.mjs';
4
+ import { TrashIcon } from '../../Icon/index.mjs';
5
+ import 'react';
6
+ import '@chakra-ui/react';
7
+ import '../../Modal/ModalContext.mjs';
8
+ import '../../IconButton/IconButton.mjs';
9
+ import '../../IconButton/IconButton.styles.mjs';
10
+ import '../../ScaledContext/ScaledContext.mjs';
11
+ import { ModalFooter } from '../../Modal/ModalFooter/ModalFooter.mjs';
12
+
13
+ /**
14
+ * The action footer shared by form-in-a-modal surfaces — the form analog of a
15
+ * confirm-modal footer. It standardizes the button trio every create/edit modal
16
+ * hand-rolls: an optional far-left destructive action, a neutral Cancel, and the
17
+ * primary submit that carries its own loading + disabled state.
18
+ *
19
+ * Copy-agnostic by design: as a design-system component it owns no strings, so
20
+ * `cancelLabel` is required and `deleteLabel` is rendered verbatim — the
21
+ * consuming app supplies its own (translated) labels.
22
+ *
23
+ * Submit path: inside a `<form onSubmit>` leave `onSubmit` unset so the button
24
+ * stays `type="submit"` (Enter submits); for a portaled or no-`<form>` modal
25
+ * pass `onSubmit` and it becomes a `type="button"` onClick. `...rest` forwards to
26
+ * the logician `ModalFooter`, so callers pin it (`position="sticky"` /
27
+ * `flexShrink={0}`) or zero its padding (`px={0}`) per modal.
28
+ */
29
+ const FormModalFooter = ({ onDelete, deleteLabel, onCancel, cancelLabel, submitLabel, submitColorPalette = 'primary', isSubmitting = false, submitDisabled = false, onSubmit, bordered = false, ...rest }) => {
30
+ return (jsxs(ModalFooter, { justifyContent: "flex-end", gap: 2, ...(bordered
31
+ ? {
32
+ bg: 'bg.surface',
33
+ borderTop: '1px solid',
34
+ borderColor: 'border.subtle',
35
+ }
36
+ : {}), ...rest, children: [onDelete && (jsxs(Button, { colorPalette: "danger", variant: "solid", type: "button", onClick: onDelete, disabled: isSubmitting, mr: "auto", children: [jsx(TrashIcon, { boxSize: "sm" }), deleteLabel] })), jsx(Button, { colorPalette: "neutral", variant: "outline", type: "button", onClick: onCancel, disabled: isSubmitting, children: cancelLabel }), jsx(Button, { colorPalette: submitColorPalette, variant: "solid", type: onSubmit ? 'button' : 'submit', onClick: onSubmit, loading: isSubmitting, disabled: isSubmitting || submitDisabled, children: submitLabel })] }));
37
+ };
38
+
39
+ export { FormModalFooter };
40
+ //# sourceMappingURL=FormModalFooter.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormModalFooter.mjs","sources":["../../../../src/components/Form/FormModalFooter/FormModalFooter.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":";;;;;;;;;;;;AAMA;;;;;;;;;;;;;;;AAeG;AACI,MAAM,eAAe,GAAG,CAAC,EAC9B,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,WAAW,EACX,WAAW,EACX,kBAAkB,GAAG,SAAS,EAC9B,YAAY,GAAG,KAAK,EACpB,cAAc,GAAG,KAAK,EACtB,QAAQ,EACR,QAAQ,GAAG,KAAK,EAChB,GAAG,IAAI,EACc,KAAI;AACzB,IAAA,QACEA,IAAA,CAAC,WAAW,EAAA,EACV,cAAc,EAAC,UAAU,EACzB,GAAG,EAAE,CAAC,EAAA,IACD;AACH,cAAE;AACE,gBAAA,EAAE,EAAE,YAAY;AAChB,gBAAA,SAAS,EAAE,WAAW;AACtB,gBAAA,WAAW,EAAE,eAAe;AAC7B;cACD,EAAE,CAAC,EAAA,GACH,IAAI,aAEP,QAAQ,KACPA,IAAA,CAAC,MAAM,EAAA,EACL,YAAY,EAAC,QAAQ,EACrB,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,QAAQ,EACjB,QAAQ,EAAE,YAAY,EACtB,EAAE,EAAC,MAAM,EAAA,QAAA,EAAA,CAETC,GAAA,CAAC,SAAS,EAAA,EAAC,OAAO,EAAC,IAAI,GAAG,EACzB,WAAW,CAAA,EAAA,CACL,CACV,EACDA,GAAA,CAAC,MAAM,EAAA,EACL,YAAY,EAAC,SAAS,EACtB,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,QAAQ,EACjB,QAAQ,EAAE,YAAY,EAAA,QAAA,EAErB,WAAW,GACL,EACTA,GAAA,CAAC,MAAM,EAAA,EACL,YAAY,EAAE,kBAAkB,EAChC,OAAO,EAAC,OAAO,EACf,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,EACpC,OAAO,EAAE,QAAQ,EACjB,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,YAAY,IAAI,cAAc,EAAA,QAAA,EAEvC,WAAW,EAAA,CACL,CAAA,EAAA,CACG;AAElB;;;;"}
@@ -0,0 +1,49 @@
1
+ import { ComponentProps, ReactNode } from 'react';
2
+ import { ButtonColorPalette } from '@/components/Button';
3
+ import { ModalFooter } from '@/components/Modal';
4
+ type ModalFooterProps = ComponentProps<typeof ModalFooter>;
5
+ export interface FormModalFooterProps extends Omit<ModalFooterProps, 'children' | 'onSubmit' | 'title'> {
6
+ /**
7
+ * Optional left-aligned destructive action. Renders the standard danger
8
+ * delete button (trash glyph + label), pushed to the far left of the footer.
9
+ */
10
+ onDelete?: () => void;
11
+ /** Delete button label. Rendered verbatim (no default — the app owns copy). */
12
+ deleteLabel?: ReactNode;
13
+ /** Cancel/dismiss handler. */
14
+ onCancel: () => void;
15
+ /**
16
+ * Cancel button label. Required — a design-system component owns no copy, so
17
+ * the consuming app must supply the (translated) label.
18
+ */
19
+ cancelLabel: ReactNode;
20
+ /** Primary submit button label. */
21
+ submitLabel: ReactNode;
22
+ /** Palette for the primary button. Defaults to `primary`. */
23
+ submitColorPalette?: ButtonColorPalette;
24
+ /**
25
+ * In-flight state — shows the submit spinner and disables every button so the
26
+ * modal can't be dismissed or re-submitted mid-request.
27
+ */
28
+ isSubmitting?: boolean;
29
+ /**
30
+ * Extra disable condition for the primary button beyond `isSubmitting` — a
31
+ * pristine/invalid gate (e.g. `!name.trim()`).
32
+ */
33
+ submitDisabled?: boolean;
34
+ /**
35
+ * Submit via `onClick` instead of native form submission. Pass this for a
36
+ * portaled or no-`<form>` modal, where a `type="submit"` button can't reach
37
+ * the enclosing `<form>`. Omit inside a `<form onSubmit>` so the button stays
38
+ * `type="submit"` and Enter still submits.
39
+ */
40
+ onSubmit?: () => void;
41
+ /**
42
+ * Draw the scroll-separator chrome (surface background + top hairline). Set on
43
+ * a tall scroll-inside modal so the pinned footer reads as separate from the
44
+ * scrolling body; omit on a short modal.
45
+ */
46
+ bordered?: boolean;
47
+ }
48
+ export {};
49
+ //# sourceMappingURL=FormModalFooter.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormModalFooter.types.d.ts","sourceRoot":"","sources":["../../../../src/components/Form/FormModalFooter/FormModalFooter.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,KAAK,gBAAgB,GAAG,cAAc,CAAC,OAAO,WAAW,CAAC,CAAC;AAE3D,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAChD,gBAAgB,EAChB,UAAU,GAAG,UAAU,GAAG,OAAO,CAClC;IACC;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,+EAA+E;IAC/E,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB;;;OAGG;IACH,WAAW,EAAE,SAAS,CAAC;IACvB,mCAAmC;IACnC,WAAW,EAAE,SAAS,CAAC;IACvB,6DAA6D;IAC7D,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB"}
@@ -0,0 +1,3 @@
1
+ export { FormModalFooter } from './FormModalFooter';
2
+ export type { FormModalFooterProps } from './FormModalFooter.types';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/Form/FormModalFooter/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { PropsWithChildren } from 'react';
2
+ import { BoxProps } from '@chakra-ui/react';
3
+ /**
4
+ * The scrolling body of a form panel: a full-height flex column that scrolls
5
+ * vertically, so a `position="sticky" bottom={0}` `FormFooter` pins to its
6
+ * bottom edge. Extracted from `FloatingPanelCard` so the same "scroll column +
7
+ * pinned footer" geometry can back any left-panel form without pulling in the
8
+ * card chrome.
9
+ */
10
+ export declare const FormScrollArea: {
11
+ ({ children, ...rest }: PropsWithChildren<BoxProps>): import("react/jsx-runtime").JSX.Element;
12
+ displayName: string;
13
+ };
14
+ //# sourceMappingURL=FormScrollArea.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormScrollArea.d.ts","sourceRoot":"","sources":["../../../../src/components/Form/FormScrollArea/FormScrollArea.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAO,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD;;;;;;GAMG;AACH,eAAO,MAAM,cAAc;4BAGxB,iBAAiB,CAAC,QAAQ,CAAC;;CAW7B,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var react = require('@chakra-ui/react');
6
+
7
+ /**
8
+ * The scrolling body of a form panel: a full-height flex column that scrolls
9
+ * vertically, so a `position="sticky" bottom={0}` `FormFooter` pins to its
10
+ * bottom edge. Extracted from `FloatingPanelCard` so the same "scroll column +
11
+ * pinned footer" geometry can back any left-panel form without pulling in the
12
+ * card chrome.
13
+ */
14
+ const FormScrollArea = ({ children, ...rest }) => (jsxRuntime.jsx(react.Box, { h: "100%", overflowY: "auto", position: "relative", display: "flex", flexDirection: "column", ...rest, children: children }));
15
+ FormScrollArea.displayName = 'FormScrollArea';
16
+
17
+ exports.FormScrollArea = FormScrollArea;
18
+ //# sourceMappingURL=FormScrollArea.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormScrollArea.js","sources":["../../../../src/components/Form/FormScrollArea/FormScrollArea.tsx"],"sourcesContent":[null],"names":["_jsx","Box"],"mappings":";;;;;;AAGA;;;;;;AAMG;AACI,MAAM,cAAc,GAAG,CAAC,EAC7B,QAAQ,EACR,GAAG,IAAI,EACqB,MAC5BA,eAACC,SAAG,EAAA,EACF,CAAC,EAAC,MAAM,EACR,SAAS,EAAC,MAAM,EAChB,QAAQ,EAAC,UAAU,EACnB,OAAO,EAAC,MAAM,EACd,aAAa,EAAC,QAAQ,EAAA,GAClB,IAAI,YAEP,QAAQ,EAAA,CACL;AAGR,cAAc,CAAC,WAAW,GAAG,gBAAgB;;;;"}
@@ -0,0 +1,16 @@
1
+ "use client";
2
+ import { jsx } from 'react/jsx-runtime';
3
+ import { Box } from '@chakra-ui/react';
4
+
5
+ /**
6
+ * The scrolling body of a form panel: a full-height flex column that scrolls
7
+ * vertically, so a `position="sticky" bottom={0}` `FormFooter` pins to its
8
+ * bottom edge. Extracted from `FloatingPanelCard` so the same "scroll column +
9
+ * pinned footer" geometry can back any left-panel form without pulling in the
10
+ * card chrome.
11
+ */
12
+ const FormScrollArea = ({ children, ...rest }) => (jsx(Box, { h: "100%", overflowY: "auto", position: "relative", display: "flex", flexDirection: "column", ...rest, children: children }));
13
+ FormScrollArea.displayName = 'FormScrollArea';
14
+
15
+ export { FormScrollArea };
16
+ //# sourceMappingURL=FormScrollArea.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormScrollArea.mjs","sources":["../../../../src/components/Form/FormScrollArea/FormScrollArea.tsx"],"sourcesContent":[null],"names":["_jsx"],"mappings":";;;;AAGA;;;;;;AAMG;AACI,MAAM,cAAc,GAAG,CAAC,EAC7B,QAAQ,EACR,GAAG,IAAI,EACqB,MAC5BA,IAAC,GAAG,EAAA,EACF,CAAC,EAAC,MAAM,EACR,SAAS,EAAC,MAAM,EAChB,QAAQ,EAAC,UAAU,EACnB,OAAO,EAAC,MAAM,EACd,aAAa,EAAC,QAAQ,EAAA,GAClB,IAAI,YAEP,QAAQ,EAAA,CACL;AAGR,cAAc,CAAC,WAAW,GAAG,gBAAgB;;;;"}
@@ -0,0 +1,2 @@
1
+ export { FormScrollArea } from './FormScrollArea';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/Form/FormScrollArea/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { FormSectionProps } from './FormSection.types';
2
+ type CollapsibleFormSectionProps = Pick<FormSectionProps, 'title' | 'action' | 'defaultOpen' | 'hasError' | 'gap' | 'children'>;
3
+ /**
4
+ * The collapsible `FormSection` variant — delegates to the logician
5
+ * `CollapsibleSection` accordion (which owns its own layout, so container style
6
+ * overrides apply to the flat variant only). Requires a title.
7
+ */
8
+ export declare const CollapsibleFormSection: ({ title, action, defaultOpen, hasError, gap, children, }: CollapsibleFormSectionProps) => import("react/jsx-runtime").JSX.Element;
9
+ export {};
10
+ //# sourceMappingURL=CollapsibleFormSection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CollapsibleFormSection.d.ts","sourceRoot":"","sources":["../../../../src/components/Form/FormSection/CollapsibleFormSection.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,KAAK,2BAA2B,GAAG,IAAI,CACrC,gBAAgB,EAChB,OAAO,GAAG,QAAQ,GAAG,aAAa,GAAG,UAAU,GAAG,KAAK,GAAG,UAAU,CACrE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GAAI,0DAOpC,2BAA2B,4CAW7B,CAAC"}
@@ -0,0 +1,43 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var react = require('@chakra-ui/react');
6
+ var CollapsibleSection = require('../../Workflow/canvas/CollapsibleSection/CollapsibleSection.js');
7
+ require('react');
8
+ require('../../Button/Button.js');
9
+ require('../../Icon/index.js');
10
+ require('../../Menu/Menu.js');
11
+ require('../../Menu/MenuList.js');
12
+ require('../../Typography/H1.js');
13
+ require('../../Typography/H2.js');
14
+ require('../../Typography/H3.js');
15
+ require('../../Typography/H4.js');
16
+ require('../../Typography/H5.js');
17
+ require('../../Typography/Link.js');
18
+ require('../../Typography/Overline.js');
19
+ require('../../Typography/Subtext.js');
20
+ require('../../Typography/Subtitle.js');
21
+ require('../../Typography/Text.js');
22
+ require('../../Workflow/WorkflowContext/WorkflowContext.js');
23
+ require('../../Input/Input.js');
24
+ require('../../Toast/Toaster.js');
25
+ require('../../Card/Card.js');
26
+ require('../../IconButton/IconButton.js');
27
+ require('../../IconButton/IconButton.styles.js');
28
+ require('@xyflow/react');
29
+ require('../../Chip/Chip.js');
30
+ require('../../Badge/Badge.js');
31
+ require('../../Workflow/canvas/NodeShell/NodeShell.styles.js');
32
+ require('../../Workflow/graphObserver.js');
33
+ require('../../Workflow/canvas/Canvas/Canvas.js');
34
+
35
+ /**
36
+ * The collapsible `FormSection` variant — delegates to the logician
37
+ * `CollapsibleSection` accordion (which owns its own layout, so container style
38
+ * overrides apply to the flat variant only). Requires a title.
39
+ */
40
+ const CollapsibleFormSection = ({ title, action, defaultOpen = true, hasError = false, gap = 4, children, }) => (jsxRuntime.jsx(CollapsibleSection.CollapsibleSection, { label: title ?? '', defaultExpanded: defaultOpen, hasError: hasError, headerAction: action, children: jsxRuntime.jsx(react.VStack, { align: "stretch", gap: gap, w: "100%", children: children }) }));
41
+
42
+ exports.CollapsibleFormSection = CollapsibleFormSection;
43
+ //# sourceMappingURL=CollapsibleFormSection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CollapsibleFormSection.js","sources":["../../../../src/components/Form/FormSection/CollapsibleFormSection.tsx"],"sourcesContent":[null],"names":["_jsx","CollapsibleSection","VStack"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA;;;;AAIG;AACI,MAAM,sBAAsB,GAAG,CAAC,EACrC,KAAK,EACL,MAAM,EACN,WAAW,GAAG,IAAI,EAClB,QAAQ,GAAG,KAAK,EAChB,GAAG,GAAG,CAAC,EACP,QAAQ,GACoB,MAC5BA,cAAA,CAACC,qCAAkB,EAAA,EACjB,KAAK,EAAE,KAAK,IAAI,EAAE,EAClB,eAAe,EAAE,WAAW,EAC5B,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,MAAM,EAAA,QAAA,EAEpBD,eAACE,YAAM,EAAA,EAAC,KAAK,EAAC,SAAS,EAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAC,MAAM,EAAA,QAAA,EACvC,QAAQ,EAAA,CACF,EAAA,CACU;;;;"}
@@ -0,0 +1,41 @@
1
+ "use client";
2
+ import { jsx } from 'react/jsx-runtime';
3
+ import { VStack } from '@chakra-ui/react';
4
+ import { CollapsibleSection } from '../../Workflow/canvas/CollapsibleSection/CollapsibleSection.mjs';
5
+ import 'react';
6
+ import '../../Button/Button.mjs';
7
+ import '../../Icon/index.mjs';
8
+ import '../../Menu/Menu.mjs';
9
+ import '../../Menu/MenuList.mjs';
10
+ import '../../Typography/H1.mjs';
11
+ import '../../Typography/H2.mjs';
12
+ import '../../Typography/H3.mjs';
13
+ import '../../Typography/H4.mjs';
14
+ import '../../Typography/H5.mjs';
15
+ import '../../Typography/Link.mjs';
16
+ import '../../Typography/Overline.mjs';
17
+ import '../../Typography/Subtext.mjs';
18
+ import '../../Typography/Subtitle.mjs';
19
+ import '../../Typography/Text.mjs';
20
+ import '../../Workflow/WorkflowContext/WorkflowContext.mjs';
21
+ import '../../Input/Input.mjs';
22
+ import '../../Toast/Toaster.mjs';
23
+ import '../../Card/Card.mjs';
24
+ import '../../IconButton/IconButton.mjs';
25
+ import '../../IconButton/IconButton.styles.mjs';
26
+ import '@xyflow/react';
27
+ import '../../Chip/Chip.mjs';
28
+ import '../../Badge/Badge.mjs';
29
+ import '../../Workflow/canvas/NodeShell/NodeShell.styles.mjs';
30
+ import '../../Workflow/graphObserver.mjs';
31
+ import '../../Workflow/canvas/Canvas/Canvas.mjs';
32
+
33
+ /**
34
+ * The collapsible `FormSection` variant — delegates to the logician
35
+ * `CollapsibleSection` accordion (which owns its own layout, so container style
36
+ * overrides apply to the flat variant only). Requires a title.
37
+ */
38
+ const CollapsibleFormSection = ({ title, action, defaultOpen = true, hasError = false, gap = 4, children, }) => (jsx(CollapsibleSection, { label: title ?? '', defaultExpanded: defaultOpen, hasError: hasError, headerAction: action, children: jsx(VStack, { align: "stretch", gap: gap, w: "100%", children: children }) }));
39
+
40
+ export { CollapsibleFormSection };
41
+ //# sourceMappingURL=CollapsibleFormSection.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CollapsibleFormSection.mjs","sources":["../../../../src/components/Form/FormSection/CollapsibleFormSection.tsx"],"sourcesContent":[null],"names":["_jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA;;;;AAIG;AACI,MAAM,sBAAsB,GAAG,CAAC,EACrC,KAAK,EACL,MAAM,EACN,WAAW,GAAG,IAAI,EAClB,QAAQ,GAAG,KAAK,EAChB,GAAG,GAAG,CAAC,EACP,QAAQ,GACoB,MAC5BA,GAAA,CAAC,kBAAkB,EAAA,EACjB,KAAK,EAAE,KAAK,IAAI,EAAE,EAClB,eAAe,EAAE,WAAW,EAC5B,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,MAAM,EAAA,QAAA,EAEpBA,IAAC,MAAM,EAAA,EAAC,KAAK,EAAC,SAAS,EAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAC,MAAM,EAAA,QAAA,EACvC,QAAQ,EAAA,CACF,EAAA,CACU;;;;"}