@fogpipe/forma-react 0.11.2 → 0.12.0-alpha.2

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/index.d.ts CHANGED
@@ -34,12 +34,22 @@ interface BaseFieldProps {
34
34
  visible: boolean;
35
35
  /** Whether field is enabled (inverse of disabled) */
36
36
  enabled: boolean;
37
+ /** Whether field is readonly (visible, not editable, value still submitted) */
38
+ readonly: boolean;
37
39
  /** Display label from field definition */
38
40
  label: string;
39
41
  /** Help text or description from field definition */
40
42
  description?: string;
41
43
  /** Placeholder text from field definition */
42
44
  placeholder?: string;
45
+ /** Prefix adorner text (e.g., "$") - only for adornable field types */
46
+ prefix?: string;
47
+ /** Suffix adorner text (e.g., "kg") - only for adornable field types */
48
+ suffix?: string;
49
+ /** Presentation variant hint (e.g., "slider", "radio", "nps") */
50
+ variant?: string;
51
+ /** Variant-specific configuration */
52
+ variantConfig?: Record<string, unknown>;
43
53
  }
44
54
  /**
45
55
  * Props for text-based fields (text, email, password, url, textarea)
@@ -226,10 +236,25 @@ interface ArrayItemFieldProps extends Omit<BaseFieldProps, "value" | "onChange">
226
236
  /** Field name within the item */
227
237
  fieldName: string;
228
238
  }
239
+ /**
240
+ * Props for display fields (read-only presentation content)
241
+ */
242
+ interface DisplayFieldProps extends Omit<BaseFieldProps, "value" | "onChange"> {
243
+ fieldType: "display";
244
+ /** Static content (markdown/text) */
245
+ content?: string;
246
+ /** Computed source value (resolved by useForma from display field's source property) */
247
+ sourceValue?: unknown;
248
+ /** Display format string */
249
+ format?: string;
250
+ /** No onChange - display fields are read-only */
251
+ onChange?: never;
252
+ value?: never;
253
+ }
229
254
  /**
230
255
  * Union of all field prop types
231
256
  */
232
- type FieldProps = TextFieldProps | NumberFieldProps | IntegerFieldProps | BooleanFieldProps | DateFieldProps | DateTimeFieldProps | SelectFieldProps | MultiSelectFieldProps | ArrayFieldProps | ObjectFieldProps | ComputedFieldProps;
257
+ type FieldProps = TextFieldProps | NumberFieldProps | IntegerFieldProps | BooleanFieldProps | DateFieldProps | DateTimeFieldProps | SelectFieldProps | MultiSelectFieldProps | ArrayFieldProps | ObjectFieldProps | ComputedFieldProps | DisplayFieldProps;
233
258
  /**
234
259
  * Map of field types to React components
235
260
  * Components receive wrapper props with { field, spec } structure
@@ -250,6 +275,7 @@ interface ComponentMap {
250
275
  array?: React.ComponentType<ArrayComponentProps>;
251
276
  object?: React.ComponentType<ObjectComponentProps>;
252
277
  computed?: React.ComponentType<ComputedComponentProps>;
278
+ display?: React.ComponentType<DisplayComponentProps>;
253
279
  fallback?: React.ComponentType<FieldComponentProps>;
254
280
  }
255
281
  /**
@@ -338,6 +364,10 @@ interface ComputedComponentProps {
338
364
  field: ComputedFieldProps;
339
365
  spec: Forma;
340
366
  }
367
+ interface DisplayComponentProps {
368
+ field: DisplayFieldProps;
369
+ spec: Forma;
370
+ }
341
371
  /**
342
372
  * Generic field component props (for fallback/dynamic components)
343
373
  */
@@ -367,6 +397,8 @@ interface GetFieldPropsResult {
367
397
  visible: boolean;
368
398
  /** Whether field is enabled (not disabled) */
369
399
  enabled: boolean;
400
+ /** Whether field is readonly (visible, not editable, value still submitted) */
401
+ readonly: boolean;
370
402
  /** Whether field is required (for validation) */
371
403
  required: boolean;
372
404
  /**
@@ -390,6 +422,14 @@ interface GetFieldPropsResult {
390
422
  "aria-required"?: boolean;
391
423
  /** Options for select/multiselect fields (filtered by visibleWhen) */
392
424
  options?: SelectOption[];
425
+ /** Prefix adorner text (e.g., "$") */
426
+ prefix?: string;
427
+ /** Suffix adorner text (e.g., "kg") */
428
+ suffix?: string;
429
+ /** Presentation variant hint */
430
+ variant?: string;
431
+ /** Variant-specific configuration */
432
+ variantConfig?: Record<string, unknown>;
393
433
  }
394
434
  /**
395
435
  * Select field props returned by getSelectFieldProps()
@@ -501,6 +541,8 @@ interface UseFormaReturn {
501
541
  required: Record<string, boolean>;
502
542
  /** Field enabled state map */
503
543
  enabled: Record<string, boolean>;
544
+ /** Field readonly state map */
545
+ readonly: Record<string, boolean>;
504
546
  /** Visible options for select/multiselect fields, keyed by field path */
505
547
  optionsVisibility: OptionsVisibilityResult;
506
548
  /** Field touched state map */
@@ -616,7 +658,7 @@ interface FieldRendererProps {
616
658
  * <FieldRenderer fieldPath="email" components={componentMap} />
617
659
  * ```
618
660
  */
619
- declare function FieldRenderer({ fieldPath, components, className }: FieldRendererProps): react_jsx_runtime.JSX.Element | null;
661
+ declare function FieldRenderer({ fieldPath, components, className, }: FieldRendererProps): react_jsx_runtime.JSX.Element | null;
620
662
 
621
663
  /**
622
664
  * FormaErrorBoundary Component
@@ -680,4 +722,4 @@ declare const FormaContext: React$1.Context<UseFormaReturn | null>;
680
722
  */
681
723
  declare function useFormaContext(): UseFormaReturn;
682
724
 
683
- export { type ArrayComponentProps, type ArrayFieldProps, type ArrayHelpers, type ArrayItemFieldProps, type ArrayItemFieldPropsResult, type BaseFieldProps, type BooleanComponentProps, type BooleanFieldProps, type ComponentMap, type ComputedComponentProps, type ComputedFieldProps, type DateComponentProps, type DateFieldProps, type DateTimeComponentProps, type DateTimeFieldProps, type FieldComponentProps, type FieldProps, FieldRenderer, type FieldRendererProps, type FieldWrapperProps, FormRenderer, type FormRendererHandle, type FormRendererProps, type UseFormaReturn as FormState, FormaContext, FormaErrorBoundary, type FormaErrorBoundaryProps, type GetArrayHelpersResult, type GetFieldPropsResult, type GetSelectFieldPropsResult, type IntegerComponentProps, type IntegerFieldProps, type LayoutProps, type LegacyFieldProps, type MultiSelectComponentProps, type MultiSelectFieldProps, type NumberComponentProps, type NumberFieldProps, type ObjectComponentProps, type ObjectFieldProps, type PageState, type PageWrapperProps, type SelectComponentProps, type SelectFieldProps, type SelectionFieldProps, type TextComponentProps, type TextFieldProps, type UseFormaOptions, type UseFormaReturn, type WizardHelpers, useForma, useFormaContext };
725
+ export { type ArrayComponentProps, type ArrayFieldProps, type ArrayHelpers, type ArrayItemFieldProps, type ArrayItemFieldPropsResult, type BaseFieldProps, type BooleanComponentProps, type BooleanFieldProps, type ComponentMap, type ComputedComponentProps, type ComputedFieldProps, type DateComponentProps, type DateFieldProps, type DateTimeComponentProps, type DateTimeFieldProps, type DisplayComponentProps, type DisplayFieldProps, type FieldComponentProps, type FieldProps, FieldRenderer, type FieldRendererProps, type FieldWrapperProps, FormRenderer, type FormRendererHandle, type FormRendererProps, type UseFormaReturn as FormState, FormaContext, FormaErrorBoundary, type FormaErrorBoundaryProps, type GetArrayHelpersResult, type GetFieldPropsResult, type GetSelectFieldPropsResult, type IntegerComponentProps, type IntegerFieldProps, type LayoutProps, type LegacyFieldProps, type MultiSelectComponentProps, type MultiSelectFieldProps, type NumberComponentProps, type NumberFieldProps, type ObjectComponentProps, type ObjectFieldProps, type PageState, type PageWrapperProps, type SelectComponentProps, type SelectFieldProps, type SelectionFieldProps, type TextComponentProps, type TextFieldProps, type UseFormaOptions, type UseFormaReturn, type WizardHelpers, useForma, useFormaContext };