@hyddenlabs/hydn-ui 0.3.6 → 0.3.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,265 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import React, { useState, useRef, useEffect, useCallback, useImperativeHandle } from "react";
3
+ import FormGridRow from "./form-grid-row.js";
4
+ import ButtonWithIcon from "../button/button-with-icon.js";
5
+ const MOBILE_BREAKPOINT = 640;
6
+ function getCheckboxColumnWidth(label) {
7
+ const minCh = 8;
8
+ return `${Math.max(minCh, label.length + 2)}ch`;
9
+ }
10
+ function tailwindWidthToCss(width) {
11
+ if (width === "flex-1" || width === "w-full") return "minmax(0, 1fr)";
12
+ if (width === "w-auto") return "auto";
13
+ const numMatch = width.match(/^w-(\d+)$/);
14
+ if (numMatch) return `${parseInt(numMatch[1]) * 0.25}rem`;
15
+ const fracMatch = width.match(/^w-(\d+)\/(\d+)$/);
16
+ if (fracMatch) return `${(parseInt(fracMatch[1]) / parseInt(fracMatch[2]) * 100).toFixed(2)}%`;
17
+ if (/\d+(px|rem|em|%|fr|ch|vw|vh)/.test(width) || /^(auto|min-content|max-content|fit-content)$/.test(width)) {
18
+ return width;
19
+ }
20
+ return "auto";
21
+ }
22
+ function getDesktopGridTemplate(columns) {
23
+ const columnTracks = columns.map((col) => {
24
+ if (col.width) {
25
+ return tailwindWidthToCss(col.width);
26
+ }
27
+ if (col.type === "checkbox") {
28
+ return getCheckboxColumnWidth(col.label);
29
+ }
30
+ return "minmax(0, 1fr)";
31
+ });
32
+ return `${columnTracks.join(" ")} 4rem`;
33
+ }
34
+ function generateId() {
35
+ return crypto.randomUUID();
36
+ }
37
+ function createEmptyRow(columns) {
38
+ const values = {};
39
+ columns.forEach((col) => {
40
+ if (col.defaultValue !== void 0) {
41
+ values[col.key] = col.defaultValue;
42
+ } else if (col.type === "checkbox") {
43
+ values[col.key] = false;
44
+ } else {
45
+ values[col.key] = "";
46
+ }
47
+ });
48
+ return { id: generateId(), values };
49
+ }
50
+ function updateRowInTree(rows, targetId, updater) {
51
+ return rows.map((row) => {
52
+ if (row.id === targetId) {
53
+ return updater(row);
54
+ }
55
+ if (row.subRows && row.subRows.length > 0) {
56
+ return { ...row, subRows: updateRowInTree(row.subRows, targetId, updater) };
57
+ }
58
+ return row;
59
+ });
60
+ }
61
+ function removeRowFromTree(rows, targetId) {
62
+ return rows.filter((row) => row.id !== targetId).map((row) => ({
63
+ ...row,
64
+ subRows: row.subRows ? removeRowFromTree(row.subRows, targetId) : void 0
65
+ }));
66
+ }
67
+ function addSubRowToParent(rows, parentId, newRow) {
68
+ return rows.map((row) => {
69
+ if (row.id === parentId) {
70
+ return { ...row, subRows: [...row.subRows || [], newRow] };
71
+ }
72
+ if (row.subRows && row.subRows.length > 0) {
73
+ return { ...row, subRows: addSubRowToParent(row.subRows, parentId, newRow) };
74
+ }
75
+ return row;
76
+ });
77
+ }
78
+ function validateRows(rows, columns) {
79
+ const requiredKeys = columns.filter((c) => c.required).map((c) => c.key);
80
+ const checkRow = (row) => {
81
+ for (const key of requiredKeys) {
82
+ const value = row.values[key];
83
+ if (value === void 0 || value === null || value === "") {
84
+ return false;
85
+ }
86
+ }
87
+ if (row.subRows) {
88
+ return row.subRows.every(checkRow);
89
+ }
90
+ return true;
91
+ };
92
+ return rows.every(checkRow);
93
+ }
94
+ function getRowDepth(rows, targetId, currentDepth = 0) {
95
+ for (const row of rows) {
96
+ if (row.id === targetId) {
97
+ return currentDepth;
98
+ }
99
+ if (row.subRows) {
100
+ const foundDepth = getRowDepth(row.subRows, targetId, currentDepth + 1);
101
+ if (foundDepth !== null) {
102
+ return foundDepth;
103
+ }
104
+ }
105
+ }
106
+ return null;
107
+ }
108
+ const FormGrid = React.forwardRef(
109
+ ({
110
+ columns,
111
+ defaultRows,
112
+ onChange,
113
+ size = "md",
114
+ maxDepth = 3,
115
+ addRowLabel = "Add Row",
116
+ addSubRowLabel = "Add Sub-Row",
117
+ allowSubRows = true,
118
+ autoSubRow,
119
+ disabled = false,
120
+ showHeaders = true,
121
+ className = "",
122
+ validationStates = {}
123
+ }, ref) => {
124
+ const [rows, setRows] = useState(() => {
125
+ if (defaultRows && defaultRows.length > 0) {
126
+ return defaultRows;
127
+ }
128
+ return [createEmptyRow(columns)];
129
+ });
130
+ const [isMobile, setIsMobile] = useState(false);
131
+ const containerRef = useRef(null);
132
+ const desktopGridTemplate = getDesktopGridTemplate(columns);
133
+ useEffect(() => {
134
+ const container = containerRef.current;
135
+ if (!container) return;
136
+ const updateLayout = () => {
137
+ const containerWidth = container.offsetWidth;
138
+ setIsMobile(containerWidth < MOBILE_BREAKPOINT);
139
+ };
140
+ updateLayout();
141
+ const resizeObserver = new ResizeObserver(updateLayout);
142
+ resizeObserver.observe(container);
143
+ return () => resizeObserver.disconnect();
144
+ }, []);
145
+ useEffect(() => {
146
+ onChange?.(rows);
147
+ }, [rows, onChange]);
148
+ const handleAddRow = useCallback(() => {
149
+ setRows((prev) => [...prev, createEmptyRow(columns)]);
150
+ }, [columns]);
151
+ const handleAddSubRow = useCallback(
152
+ (parentId) => {
153
+ setRows((prev) => addSubRowToParent(prev, parentId, createEmptyRow(columns)));
154
+ },
155
+ [columns]
156
+ );
157
+ const handleRemoveRow = useCallback((id) => {
158
+ setRows((prev) => {
159
+ const result = removeRowFromTree(prev, id);
160
+ if (result.length === 0) {
161
+ return prev;
162
+ }
163
+ return result;
164
+ });
165
+ }, []);
166
+ const handleValueChange = useCallback(
167
+ (rowId, key, value) => {
168
+ setRows((prev) => {
169
+ let updated = updateRowInTree(prev, rowId, (row) => ({
170
+ ...row,
171
+ values: { ...row.values, [key]: value }
172
+ }));
173
+ if (autoSubRow) {
174
+ const rowDepth = getRowDepth(updated, rowId);
175
+ updated = updateRowInTree(updated, rowId, (row) => {
176
+ const shouldHaveSubRows = autoSubRow(row);
177
+ const hasSubRows = row.subRows && row.subRows.length > 0;
178
+ const canAddMore = rowDepth !== null && rowDepth < maxDepth;
179
+ if (shouldHaveSubRows && !hasSubRows && canAddMore) {
180
+ return { ...row, subRows: [createEmptyRow(columns)] };
181
+ } else if (!shouldHaveSubRows && hasSubRows) {
182
+ return { ...row, subRows: void 0 };
183
+ }
184
+ return row;
185
+ });
186
+ }
187
+ return updated;
188
+ });
189
+ },
190
+ [autoSubRow, columns, maxDepth]
191
+ );
192
+ useImperativeHandle(
193
+ ref,
194
+ () => ({
195
+ getData: () => rows,
196
+ addRow: (parentId) => {
197
+ if (parentId) {
198
+ handleAddSubRow(parentId);
199
+ } else {
200
+ handleAddRow();
201
+ }
202
+ },
203
+ removeRow: (id) => handleRemoveRow(id),
204
+ validate: () => validateRows(rows, columns),
205
+ reset: () => setRows([createEmptyRow(columns)])
206
+ }),
207
+ [rows, columns, handleAddRow, handleAddSubRow, handleRemoveRow]
208
+ );
209
+ return /* @__PURE__ */ jsxs("div", { ref: containerRef, className: `w-full ${className}`, children: [
210
+ showHeaders && !isMobile && /* @__PURE__ */ jsxs("div", { className: "grid items-center gap-3 mb-2", style: { gridTemplateColumns: desktopGridTemplate }, children: [
211
+ columns.map((col) => /* @__PURE__ */ jsxs(
212
+ "div",
213
+ {
214
+ className: `text-sm font-medium text-muted-foreground min-w-0 ${col.type === "checkbox" ? "text-center" : ""}`,
215
+ children: [
216
+ col.label,
217
+ col.required && /* @__PURE__ */ jsx("span", { className: "text-error ml-0.5", children: "*" })
218
+ ]
219
+ },
220
+ col.key
221
+ )),
222
+ /* @__PURE__ */ jsx("div", { className: "w-16 shrink-0" })
223
+ ] }),
224
+ /* @__PURE__ */ jsx("div", { className: "space-y-2", children: rows.map((row, index) => /* @__PURE__ */ jsx(
225
+ FormGridRow,
226
+ {
227
+ row,
228
+ columns,
229
+ depth: 0,
230
+ maxDepth,
231
+ isMobile,
232
+ size,
233
+ allowSubRows: allowSubRows && !autoSubRow,
234
+ autoSubRow,
235
+ disabled,
236
+ addSubRowLabel,
237
+ onValueChange: handleValueChange,
238
+ onAddSubRow: handleAddSubRow,
239
+ onRemove: handleRemoveRow,
240
+ canRemove: rows.length > 1 || index > 0,
241
+ validationStates: validationStates[row.id]
242
+ },
243
+ row.id
244
+ )) }),
245
+ /* @__PURE__ */ jsx("div", { className: "flex items-center gap-2", children: /* @__PURE__ */ jsx(
246
+ ButtonWithIcon,
247
+ {
248
+ icon: "plus",
249
+ ariaLabel: addRowLabel,
250
+ onClick: handleAddRow,
251
+ disabled,
252
+ size,
253
+ buttonStyle: "link",
254
+ className: "pl-0!",
255
+ children: addRowLabel
256
+ }
257
+ ) })
258
+ ] });
259
+ }
260
+ );
261
+ FormGrid.displayName = "FormGrid";
262
+ export {
263
+ FormGrid as default
264
+ };
265
+ //# sourceMappingURL=form-grid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-grid.js","sources":["../../../../src/components/forms/form-grid/form-grid.tsx"],"sourcesContent":["import React, { useState, useImperativeHandle, useEffect, useRef, useCallback, ReactNode } from 'react';\nimport FormGridRow from './form-grid-row';\nimport type { InteractiveSize, ValidationState } from '../../../theme/size-tokens';\nimport { ButtonWithIcon } from '../..';\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/**\n * Column definition for FormGrid fields\n */\nexport type FormGridColumn = {\n /** Unique key identifying this column in row data */\n key: string;\n /** Display label for the column header */\n label: string;\n /** Type of form control to render */\n type: 'input' | 'select' | 'checkbox' | 'textarea' | 'custom';\n /** HTML input type (only for type='input') */\n inputType?: 'text' | 'email' | 'number' | 'tel' | 'url' | 'password';\n /** Placeholder text for input/textarea/select */\n placeholder?: string;\n /** Options for select type */\n options?: { value: string; label: string }[];\n /** Custom render function for type='custom' */\n render?: (value: unknown, row: FormGridRowData, onChange: (value: unknown) => void, rowIndex: number) => ReactNode;\n /** Width of the field (Tailwind width class or 'flex-1') */\n width?: string;\n /** Whether this field is required */\n required?: boolean;\n /** Default value for new rows */\n defaultValue?: unknown;\n};\n\n/**\n * Row data structure with recursive sub-rows\n */\nexport type FormGridRowData = {\n /** Unique identifier for the row */\n id: string;\n /** Key-value map of field values */\n values: Record<string, unknown>;\n /** Nested sub-rows */\n subRows?: FormGridRowData[];\n};\n\n/**\n * Methods exposed via ref for uncontrolled usage\n */\nexport type FormGridRef = {\n /** Get all row data including sub-rows */\n getData: () => FormGridRowData[];\n /** Add a new row at root level or as sub-row of parentId */\n addRow: (parentId?: string) => void;\n /** Remove a row by id (searches recursively) */\n removeRow: (id: string) => void;\n /** Validate all rows, returns true if valid */\n validate: () => boolean;\n /** Reset to initial state with one empty row */\n reset: () => void;\n};\n\n/**\n * Props for the FormGrid component\n */\nexport type FormGridProps = {\n /** Column definitions describing each field */\n columns: FormGridColumn[];\n /** Initial rows data (defaults to one empty row) */\n defaultRows?: FormGridRowData[];\n /** Callback when data changes */\n onChange?: (rows: FormGridRowData[]) => void;\n /** Size variant for form controls */\n size?: InteractiveSize;\n /** Maximum nesting depth for sub-rows (default: 3) */\n maxDepth?: number;\n /** Label for add row button */\n addRowLabel?: string;\n /** Label for add sub-row button */\n addSubRowLabel?: string;\n /** Whether to allow sub-rows (manual add button) */\n allowSubRows?: boolean;\n /** Callback to determine if a row should automatically have sub-rows. When provided, sub-rows are auto-managed based on row data (e.g., type === 'object'). No manual add button is shown. */\n autoSubRow?: (row: FormGridRowData) => boolean;\n /** Whether the entire grid is disabled */\n disabled?: boolean;\n /** Whether to show column headers */\n showHeaders?: boolean;\n /** Custom class name */\n className?: string;\n /** Validation state map by row id and column key */\n validationStates?: Record<string, Record<string, ValidationState>>;\n};\n\n// =============================================================================\n// HELPERS\n// =============================================================================\n\nconst MOBILE_BREAKPOINT = 640;\n\nfunction getCheckboxColumnWidth(label: string): string {\n const minCh = 8;\n return `${Math.max(minCh, label.length + 2)}ch`;\n}\n\n/**\n * Convert a Tailwind width utility class to a valid CSS grid track value.\n * e.g. 'w-24' → '6rem', 'flex-1' → 'minmax(0, 1fr)', 'w-1/2' → '50%'\n */\nfunction tailwindWidthToCss(width: string): string {\n if (width === 'flex-1' || width === 'w-full') return 'minmax(0, 1fr)';\n if (width === 'w-auto') return 'auto';\n // w-{number} → n * 0.25rem\n const numMatch = width.match(/^w-(\\d+)$/);\n if (numMatch) return `${parseInt(numMatch[1]) * 0.25}rem`;\n // w-{num}/{den} fraction\n const fracMatch = width.match(/^w-(\\d+)\\/(\\d+)$/);\n if (fracMatch) return `${((parseInt(fracMatch[1]) / parseInt(fracMatch[2])) * 100).toFixed(2)}%`;\n // Already a valid CSS value (contains a unit or keyword)\n if (/\\d+(px|rem|em|%|fr|ch|vw|vh)/.test(width) || /^(auto|min-content|max-content|fit-content)$/.test(width)) {\n return width;\n }\n return 'auto';\n}\n\nfunction getDesktopGridTemplate(columns: FormGridColumn[]): string {\n const columnTracks = columns.map((col) => {\n if (col.width) {\n return tailwindWidthToCss(col.width);\n }\n if (col.type === 'checkbox') {\n return getCheckboxColumnWidth(col.label);\n }\n return 'minmax(0, 1fr)';\n });\n\n return `${columnTracks.join(' ')} 4rem`;\n}\n\n/** Generate a unique ID for rows */\nfunction generateId(): string {\n return crypto.randomUUID();\n}\n\n/** Create an empty row with default values from columns */\nfunction createEmptyRow(columns: FormGridColumn[]): FormGridRowData {\n const values: Record<string, unknown> = {};\n columns.forEach((col) => {\n if (col.defaultValue !== undefined) {\n values[col.key] = col.defaultValue;\n } else if (col.type === 'checkbox') {\n values[col.key] = false;\n } else {\n values[col.key] = '';\n }\n });\n return { id: generateId(), values };\n}\n\n/** Recursively find and update a row */\nfunction updateRowInTree(\n rows: FormGridRowData[],\n targetId: string,\n updater: (row: FormGridRowData) => FormGridRowData\n): FormGridRowData[] {\n return rows.map((row) => {\n if (row.id === targetId) {\n return updater(row);\n }\n if (row.subRows && row.subRows.length > 0) {\n return { ...row, subRows: updateRowInTree(row.subRows, targetId, updater) };\n }\n return row;\n });\n}\n\n/** Recursively remove a row */\nfunction removeRowFromTree(rows: FormGridRowData[], targetId: string): FormGridRowData[] {\n return rows\n .filter((row) => row.id !== targetId)\n .map((row) => ({\n ...row,\n subRows: row.subRows ? removeRowFromTree(row.subRows, targetId) : undefined\n }));\n}\n\n/** Recursively add a sub-row to a parent */\nfunction addSubRowToParent(rows: FormGridRowData[], parentId: string, newRow: FormGridRowData): FormGridRowData[] {\n return rows.map((row) => {\n if (row.id === parentId) {\n return { ...row, subRows: [...(row.subRows || []), newRow] };\n }\n if (row.subRows && row.subRows.length > 0) {\n return { ...row, subRows: addSubRowToParent(row.subRows, parentId, newRow) };\n }\n return row;\n });\n}\n\n/** Check if any required fields are empty */\nfunction validateRows(rows: FormGridRowData[], columns: FormGridColumn[]): boolean {\n const requiredKeys = columns.filter((c) => c.required).map((c) => c.key);\n\n const checkRow = (row: FormGridRowData): boolean => {\n for (const key of requiredKeys) {\n const value = row.values[key];\n if (value === undefined || value === null || value === '') {\n return false;\n }\n }\n if (row.subRows) {\n return row.subRows.every(checkRow);\n }\n return true;\n };\n\n return rows.every(checkRow);\n}\n\n/** Get the depth of a row in the tree (0-indexed) */\nfunction getRowDepth(rows: FormGridRowData[], targetId: string, currentDepth: number = 0): number | null {\n for (const row of rows) {\n if (row.id === targetId) {\n return currentDepth;\n }\n if (row.subRows) {\n const foundDepth = getRowDepth(row.subRows, targetId, currentDepth + 1);\n if (foundDepth !== null) {\n return foundDepth;\n }\n }\n }\n return null;\n}\n\n// =============================================================================\n// COMPONENT\n// =============================================================================\n\n/**\n * FormGrid - Dynamic form builder with support for adding/removing rows and nested sub-rows.\n *\n * The component manages its own state internally and exposes methods via ref for\n * uncontrolled usage. Use `onChange` callback to react to data changes.\n *\n * @example\n * ```tsx\n * const formGridRef = useRef<FormGridRef>(null);\n *\n * const columns: FormGridColumn[] = [\n * { key: 'name', label: 'Field Name', type: 'input', placeholder: 'Enter name' },\n * { key: 'type', label: 'Type', type: 'select', options: [\n * { value: 'string', label: 'String' },\n * { value: 'number', label: 'Number' },\n * ]},\n * { key: 'required', label: 'Required', type: 'checkbox' },\n * ];\n *\n * <FormGrid ref={formGridRef} columns={columns} onChange={console.log} />\n *\n * // Get data via ref\n * const data = formGridRef.current?.getData();\n * ```\n */\nconst FormGrid = React.forwardRef<FormGridRef, FormGridProps>(\n (\n {\n columns,\n defaultRows,\n onChange,\n size = 'md',\n maxDepth = 3,\n addRowLabel = 'Add Row',\n addSubRowLabel = 'Add Sub-Row',\n allowSubRows = true,\n autoSubRow,\n disabled = false,\n showHeaders = true,\n className = '',\n validationStates = {}\n },\n ref\n ) => {\n // Internal state\n const [rows, setRows] = useState<FormGridRowData[]>(() => {\n if (defaultRows && defaultRows.length > 0) {\n return defaultRows;\n }\n return [createEmptyRow(columns)];\n });\n\n const [isMobile, setIsMobile] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n const desktopGridTemplate = getDesktopGridTemplate(columns);\n\n // Responsive detection via ResizeObserver\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const updateLayout = () => {\n const containerWidth = container.offsetWidth;\n setIsMobile(containerWidth < MOBILE_BREAKPOINT);\n };\n\n updateLayout();\n\n const resizeObserver = new ResizeObserver(updateLayout);\n resizeObserver.observe(container);\n\n return () => resizeObserver.disconnect();\n }, []);\n\n // Notify parent of changes\n useEffect(() => {\n onChange?.(rows);\n }, [rows, onChange]);\n\n // Row management handlers\n const handleAddRow = useCallback(() => {\n setRows((prev) => [...prev, createEmptyRow(columns)]);\n }, [columns]);\n\n const handleAddSubRow = useCallback(\n (parentId: string) => {\n setRows((prev) => addSubRowToParent(prev, parentId, createEmptyRow(columns)));\n },\n [columns]\n );\n\n const handleRemoveRow = useCallback((id: string) => {\n setRows((prev) => {\n const result = removeRowFromTree(prev, id);\n // Ensure at least one row remains\n if (result.length === 0) {\n return prev;\n }\n return result;\n });\n }, []);\n\n const handleValueChange = useCallback(\n (rowId: string, key: string, value: unknown) => {\n setRows((prev) => {\n // First update the value\n let updated = updateRowInTree(prev, rowId, (row) => ({\n ...row,\n values: { ...row.values, [key]: value }\n }));\n\n // If autoSubRow is provided, check if we need to add/remove sub-rows\n if (autoSubRow) {\n // Get the row's current depth to respect maxDepth\n const rowDepth = getRowDepth(updated, rowId);\n\n updated = updateRowInTree(updated, rowId, (row) => {\n const shouldHaveSubRows = autoSubRow(row);\n const hasSubRows = row.subRows && row.subRows.length > 0;\n const canAddMore = rowDepth !== null && rowDepth < maxDepth;\n\n if (shouldHaveSubRows && !hasSubRows && canAddMore) {\n // Auto-add a sub-row\n return { ...row, subRows: [createEmptyRow(columns)] };\n } else if (!shouldHaveSubRows && hasSubRows) {\n // Remove sub-rows when condition no longer applies\n return { ...row, subRows: undefined };\n }\n return row;\n });\n }\n\n return updated;\n });\n },\n [autoSubRow, columns, maxDepth]\n );\n\n // Expose methods via ref\n useImperativeHandle(\n ref,\n () => ({\n getData: () => rows,\n addRow: (parentId?: string) => {\n if (parentId) {\n handleAddSubRow(parentId);\n } else {\n handleAddRow();\n }\n },\n removeRow: (id: string) => handleRemoveRow(id),\n validate: () => validateRows(rows, columns),\n reset: () => setRows([createEmptyRow(columns)])\n }),\n [rows, columns, handleAddRow, handleAddSubRow, handleRemoveRow]\n );\n\n return (\n <div ref={containerRef} className={`w-full ${className}`}>\n {/* Column Headers (desktop only) */}\n {showHeaders && !isMobile && (\n <div className=\"grid items-center gap-3 mb-2\" style={{ gridTemplateColumns: desktopGridTemplate }}>\n {columns.map((col) => (\n <div\n key={col.key}\n className={`text-sm font-medium text-muted-foreground min-w-0 ${col.type === 'checkbox' ? 'text-center' : ''}`}\n >\n {col.label}\n {col.required && <span className=\"text-error ml-0.5\">*</span>}\n </div>\n ))}\n {/* Spacer for action buttons */}\n <div className=\"w-16 shrink-0\" />\n </div>\n )}\n\n {/* Rows */}\n <div className=\"space-y-2\">\n {rows.map((row, index) => (\n <FormGridRow\n key={row.id}\n row={row}\n columns={columns}\n depth={0}\n maxDepth={maxDepth}\n isMobile={isMobile}\n size={size}\n allowSubRows={allowSubRows && !autoSubRow}\n autoSubRow={autoSubRow}\n disabled={disabled}\n addSubRowLabel={addSubRowLabel}\n onValueChange={handleValueChange}\n onAddSubRow={handleAddSubRow}\n onRemove={handleRemoveRow}\n canRemove={rows.length > 1 || index > 0}\n validationStates={validationStates[row.id]}\n />\n ))}\n </div>\n\n {/* Add Row Button */}\n <div className=\"flex items-center gap-2\">\n <ButtonWithIcon\n icon=\"plus\"\n ariaLabel={addRowLabel}\n onClick={handleAddRow}\n disabled={disabled}\n size={size}\n buttonStyle=\"link\"\n className=\"pl-0!\"\n >\n {addRowLabel}\n </ButtonWithIcon>\n </div>\n </div>\n );\n }\n);\n\nFormGrid.displayName = 'FormGrid';\n\nexport default FormGrid;\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { default } from './form-grid';
2
+ export type { FormGridProps, FormGridColumn, FormGridRowData, FormGridRef } from './form-grid';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/form-grid/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}
@@ -109,6 +109,8 @@ export { default as FormCheckbox } from './forms/form-checkbox/form-checkbox';
109
109
  export { default as FormCheckboxGroup } from './forms/form-checkbox-group/form-checkbox-group';
110
110
  export type { FormCheckboxProps } from './forms/form-checkbox/form-checkbox';
111
111
  export type { FormCheckboxGroupProps } from './forms/form-checkbox-group/form-checkbox-group';
112
+ export { default as FormGrid } from './forms/form-grid/form-grid';
113
+ export type { FormGridProps, FormGridColumn, FormGridRowData, FormGridRef } from './forms/form-grid/form-grid';
112
114
  export { default as FormInput } from './forms/form-input/form-input';
113
115
  export { default as FormSelect } from './forms/form-select/form-select';
114
116
  export { default as FormTextarea } from './forms/form-textarea/form-textarea';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"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"}