@nccirtu/tablefy 0.8.3 → 0.9.0

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 (251) hide show
  1. package/README.md +224 -200
  2. package/dist/columns/badge-column.d.ts +7 -0
  3. package/dist/columns/columns/badge-column.d.ts +7 -0
  4. package/dist/columns/columns/types.d.ts +7 -0
  5. package/dist/columns/forms/builders/actions-builder.d.ts +14 -0
  6. package/dist/columns/forms/builders/form-schema.d.ts +35 -0
  7. package/dist/columns/forms/builders/index.d.ts +5 -0
  8. package/dist/columns/forms/builders/section-builder.d.ts +16 -0
  9. package/dist/columns/forms/builders/tab-builder.d.ts +16 -0
  10. package/dist/columns/forms/builders/wizard-builder.d.ts +17 -0
  11. package/dist/columns/forms/components/field-renderer.d.ts +12 -0
  12. package/dist/columns/forms/components/form-actions.d.ts +9 -0
  13. package/dist/columns/forms/components/form-renderer.d.ts +14 -0
  14. package/dist/columns/forms/components/grid-layout.d.ts +7 -0
  15. package/dist/columns/forms/components/index.d.ts +9 -0
  16. package/dist/columns/forms/components/section-renderer.d.ts +14 -0
  17. package/dist/columns/forms/components/tab-renderer.d.ts +15 -0
  18. package/dist/columns/forms/components/wizard-renderer.d.ts +17 -0
  19. package/dist/columns/forms/fields/base-field.d.ts +24 -0
  20. package/dist/columns/forms/fields/checkbox-group.d.ts +12 -0
  21. package/dist/columns/forms/fields/checkbox.d.ts +9 -0
  22. package/dist/columns/forms/fields/date-picker.d.ts +15 -0
  23. package/dist/columns/forms/fields/file-upload.d.ts +17 -0
  24. package/dist/columns/forms/fields/hidden.d.ts +9 -0
  25. package/dist/columns/forms/fields/index.d.ts +12 -0
  26. package/dist/columns/forms/fields/radio-group.d.ts +14 -0
  27. package/dist/columns/forms/fields/repeater.d.ts +21 -0
  28. package/dist/columns/forms/fields/select.d.ts +16 -0
  29. package/dist/columns/forms/fields/text-input.d.ts +20 -0
  30. package/dist/columns/forms/fields/textarea.d.ts +14 -0
  31. package/dist/columns/forms/fields/toggle.d.ts +11 -0
  32. package/dist/columns/forms/index.d.ts +26 -0
  33. package/dist/columns/forms/types/actions.d.ts +11 -0
  34. package/dist/columns/forms/types/field.d.ts +98 -0
  35. package/dist/columns/forms/types/form.d.ts +37 -0
  36. package/dist/columns/forms/types/index.d.ts +4 -0
  37. package/dist/columns/forms/types/layout.d.ts +31 -0
  38. package/dist/columns/index.d.ts +2 -0
  39. package/dist/columns/index.esm.js +35 -12
  40. package/dist/columns/index.esm.js.map +1 -1
  41. package/dist/columns/index.js +35 -12
  42. package/dist/columns/index.js.map +1 -1
  43. package/dist/columns/inertia/index.d.ts +4 -0
  44. package/dist/columns/inertia/precognition.d.ts +6 -0
  45. package/dist/columns/inertia/types.d.ts +63 -0
  46. package/dist/columns/inertia/use-inertia-form.d.ts +2 -0
  47. package/dist/columns/inertia/use-server-table.d.ts +2 -0
  48. package/dist/columns/types.d.ts +7 -0
  49. package/dist/forms/builders/actions-builder.d.ts +14 -0
  50. package/dist/forms/builders/empty-state.d.ts +46 -0
  51. package/dist/forms/builders/form-schema.d.ts +35 -0
  52. package/dist/forms/builders/index.d.ts +2 -0
  53. package/dist/forms/builders/section-builder.d.ts +16 -0
  54. package/dist/forms/builders/tab-builder.d.ts +16 -0
  55. package/dist/forms/builders/table-schema.d.ts +45 -0
  56. package/dist/forms/builders/wizard-builder.d.ts +17 -0
  57. package/dist/forms/columns/actions-column.d.ts +26 -0
  58. package/dist/forms/columns/avatar-group-column.d.ts +38 -0
  59. package/dist/forms/columns/badge-column.d.ts +29 -0
  60. package/dist/forms/columns/base-column.d.ts +21 -0
  61. package/dist/forms/columns/button-column.d.ts +14 -0
  62. package/dist/forms/columns/checkbox-column.d.ts +5 -0
  63. package/dist/forms/columns/date-column.d.ts +24 -0
  64. package/dist/forms/columns/dropdown-column.d.ts +17 -0
  65. package/dist/forms/columns/enum-column.d.ts +52 -0
  66. package/dist/forms/columns/icon-column.d.ts +58 -0
  67. package/dist/forms/columns/image-column.d.ts +21 -0
  68. package/dist/forms/columns/index.d.ts +18 -0
  69. package/dist/forms/columns/input-column.d.ts +27 -0
  70. package/dist/forms/columns/link-column.d.ts +27 -0
  71. package/dist/forms/columns/number-column.d.ts +23 -0
  72. package/dist/forms/columns/progress-column.d.ts +30 -0
  73. package/dist/forms/columns/select-column.d.ts +24 -0
  74. package/dist/forms/columns/text-column.d.ts +14 -0
  75. package/dist/forms/columns/types.d.ts +46 -0
  76. package/dist/forms/components/field-renderer.d.ts +12 -0
  77. package/dist/forms/components/form-actions.d.ts +9 -0
  78. package/dist/forms/components/form-renderer.d.ts +14 -0
  79. package/dist/forms/components/grid-layout.d.ts +7 -0
  80. package/dist/forms/components/index.d.ts +9 -0
  81. package/dist/forms/components/section-renderer.d.ts +14 -0
  82. package/dist/forms/components/tab-renderer.d.ts +15 -0
  83. package/dist/forms/components/wizard-renderer.d.ts +17 -0
  84. package/dist/forms/confirm/ConfirmProvider.d.ts +6 -0
  85. package/dist/forms/confirm/confirm.d.ts +3 -0
  86. package/dist/forms/confirm/index.d.ts +3 -0
  87. package/dist/forms/confirm/types.d.ts +10 -0
  88. package/dist/forms/fields/base-field.d.ts +24 -0
  89. package/dist/forms/fields/checkbox-group.d.ts +12 -0
  90. package/dist/forms/fields/checkbox.d.ts +9 -0
  91. package/dist/forms/fields/date-picker.d.ts +15 -0
  92. package/dist/forms/fields/file-upload.d.ts +17 -0
  93. package/dist/forms/fields/hidden.d.ts +9 -0
  94. package/dist/forms/fields/index.d.ts +12 -0
  95. package/dist/forms/fields/radio-group.d.ts +14 -0
  96. package/dist/forms/fields/repeater.d.ts +21 -0
  97. package/dist/forms/fields/select.d.ts +16 -0
  98. package/dist/forms/fields/text-input.d.ts +20 -0
  99. package/dist/forms/fields/textarea.d.ts +14 -0
  100. package/dist/forms/fields/toggle.d.ts +11 -0
  101. package/dist/forms/forms/builders/actions-builder.d.ts +14 -0
  102. package/dist/forms/forms/builders/form-schema.d.ts +35 -0
  103. package/dist/forms/forms/builders/index.d.ts +5 -0
  104. package/dist/forms/forms/builders/section-builder.d.ts +16 -0
  105. package/dist/forms/forms/builders/tab-builder.d.ts +16 -0
  106. package/dist/forms/forms/builders/wizard-builder.d.ts +17 -0
  107. package/dist/forms/forms/components/field-renderer.d.ts +12 -0
  108. package/dist/forms/forms/components/form-actions.d.ts +9 -0
  109. package/dist/forms/forms/components/form-renderer.d.ts +14 -0
  110. package/dist/forms/forms/components/grid-layout.d.ts +7 -0
  111. package/dist/forms/forms/components/index.d.ts +9 -0
  112. package/dist/forms/forms/components/section-renderer.d.ts +14 -0
  113. package/dist/forms/forms/components/tab-renderer.d.ts +15 -0
  114. package/dist/forms/forms/components/wizard-renderer.d.ts +17 -0
  115. package/dist/forms/forms/fields/base-field.d.ts +24 -0
  116. package/dist/forms/forms/fields/checkbox-group.d.ts +12 -0
  117. package/dist/forms/forms/fields/checkbox.d.ts +9 -0
  118. package/dist/forms/forms/fields/date-picker.d.ts +15 -0
  119. package/dist/forms/forms/fields/file-upload.d.ts +17 -0
  120. package/dist/forms/forms/fields/hidden.d.ts +9 -0
  121. package/dist/forms/forms/fields/index.d.ts +12 -0
  122. package/dist/forms/forms/fields/radio-group.d.ts +14 -0
  123. package/dist/forms/forms/fields/repeater.d.ts +21 -0
  124. package/dist/forms/forms/fields/select.d.ts +16 -0
  125. package/dist/forms/forms/fields/text-input.d.ts +20 -0
  126. package/dist/forms/forms/fields/textarea.d.ts +14 -0
  127. package/dist/forms/forms/fields/toggle.d.ts +11 -0
  128. package/dist/forms/forms/index.d.ts +26 -0
  129. package/dist/forms/forms/types/actions.d.ts +11 -0
  130. package/dist/forms/forms/types/field.d.ts +98 -0
  131. package/dist/forms/forms/types/form.d.ts +37 -0
  132. package/dist/forms/forms/types/index.d.ts +4 -0
  133. package/dist/forms/forms/types/layout.d.ts +31 -0
  134. package/dist/forms/index.d.ts +25 -0
  135. package/dist/forms/index.esm.js +1052 -0
  136. package/dist/forms/index.esm.js.map +1 -0
  137. package/dist/forms/index.js +1077 -0
  138. package/dist/forms/index.js.map +1 -0
  139. package/dist/forms/inertia/index.d.ts +4 -0
  140. package/dist/forms/inertia/precognition.d.ts +6 -0
  141. package/dist/forms/inertia/types.d.ts +63 -0
  142. package/dist/forms/inertia/use-inertia-form.d.ts +2 -0
  143. package/dist/forms/inertia/use-server-table.d.ts +2 -0
  144. package/dist/forms/tablefy/avatar-list.d.ts +15 -0
  145. package/dist/forms/tablefy/data-table-empty.d.ts +8 -0
  146. package/dist/forms/tablefy/data-table-header.d.ts +17 -0
  147. package/dist/forms/tablefy/data-table-pagination.d.ts +9 -0
  148. package/dist/forms/tablefy/data-table-schema.d.ts +1 -0
  149. package/dist/forms/tablefy/data-table.d.ts +13 -0
  150. package/dist/forms/tablefy/index.d.ts +6 -0
  151. package/dist/forms/types/actions.d.ts +21 -0
  152. package/dist/forms/types/empty-state.d.ts +18 -0
  153. package/dist/forms/types/field.d.ts +98 -0
  154. package/dist/forms/types/filters.d.ts +25 -0
  155. package/dist/forms/types/form.d.ts +37 -0
  156. package/dist/forms/types/index.d.ts +4 -0
  157. package/dist/forms/types/layout.d.ts +31 -0
  158. package/dist/forms/types/table.d.ts +42 -0
  159. package/dist/forms/utils.d.ts +1 -0
  160. package/dist/index.d.ts +2 -0
  161. package/dist/index.esm.js +1085 -21
  162. package/dist/index.esm.js.map +1 -1
  163. package/dist/index.js +1093 -12
  164. package/dist/index.js.map +1 -1
  165. package/dist/inertia/builders/empty-state.d.ts +46 -0
  166. package/dist/inertia/builders/index.d.ts +2 -0
  167. package/dist/inertia/builders/table-schema.d.ts +45 -0
  168. package/dist/inertia/columns/actions-column.d.ts +26 -0
  169. package/dist/inertia/columns/avatar-group-column.d.ts +38 -0
  170. package/dist/inertia/columns/badge-column.d.ts +29 -0
  171. package/dist/inertia/columns/base-column.d.ts +21 -0
  172. package/dist/inertia/columns/button-column.d.ts +14 -0
  173. package/dist/inertia/columns/checkbox-column.d.ts +5 -0
  174. package/dist/inertia/columns/date-column.d.ts +24 -0
  175. package/dist/inertia/columns/dropdown-column.d.ts +17 -0
  176. package/dist/inertia/columns/enum-column.d.ts +52 -0
  177. package/dist/inertia/columns/icon-column.d.ts +58 -0
  178. package/dist/inertia/columns/image-column.d.ts +21 -0
  179. package/dist/inertia/columns/index.d.ts +18 -0
  180. package/dist/inertia/columns/input-column.d.ts +27 -0
  181. package/dist/inertia/columns/link-column.d.ts +27 -0
  182. package/dist/inertia/columns/number-column.d.ts +23 -0
  183. package/dist/inertia/columns/progress-column.d.ts +30 -0
  184. package/dist/inertia/columns/select-column.d.ts +24 -0
  185. package/dist/inertia/columns/text-column.d.ts +14 -0
  186. package/dist/inertia/columns/types.d.ts +46 -0
  187. package/dist/inertia/confirm/ConfirmProvider.d.ts +6 -0
  188. package/dist/inertia/confirm/confirm.d.ts +3 -0
  189. package/dist/inertia/confirm/index.d.ts +3 -0
  190. package/dist/inertia/confirm/types.d.ts +10 -0
  191. package/dist/inertia/forms/builders/actions-builder.d.ts +14 -0
  192. package/dist/inertia/forms/builders/form-schema.d.ts +35 -0
  193. package/dist/inertia/forms/builders/index.d.ts +5 -0
  194. package/dist/inertia/forms/builders/section-builder.d.ts +16 -0
  195. package/dist/inertia/forms/builders/tab-builder.d.ts +16 -0
  196. package/dist/inertia/forms/builders/wizard-builder.d.ts +17 -0
  197. package/dist/inertia/forms/components/field-renderer.d.ts +12 -0
  198. package/dist/inertia/forms/components/form-actions.d.ts +9 -0
  199. package/dist/inertia/forms/components/form-renderer.d.ts +14 -0
  200. package/dist/inertia/forms/components/grid-layout.d.ts +7 -0
  201. package/dist/inertia/forms/components/index.d.ts +9 -0
  202. package/dist/inertia/forms/components/section-renderer.d.ts +14 -0
  203. package/dist/inertia/forms/components/tab-renderer.d.ts +15 -0
  204. package/dist/inertia/forms/components/wizard-renderer.d.ts +17 -0
  205. package/dist/inertia/forms/fields/base-field.d.ts +24 -0
  206. package/dist/inertia/forms/fields/checkbox-group.d.ts +12 -0
  207. package/dist/inertia/forms/fields/checkbox.d.ts +9 -0
  208. package/dist/inertia/forms/fields/date-picker.d.ts +15 -0
  209. package/dist/inertia/forms/fields/file-upload.d.ts +17 -0
  210. package/dist/inertia/forms/fields/hidden.d.ts +9 -0
  211. package/dist/inertia/forms/fields/index.d.ts +12 -0
  212. package/dist/inertia/forms/fields/radio-group.d.ts +14 -0
  213. package/dist/inertia/forms/fields/repeater.d.ts +21 -0
  214. package/dist/inertia/forms/fields/select.d.ts +16 -0
  215. package/dist/inertia/forms/fields/text-input.d.ts +20 -0
  216. package/dist/inertia/forms/fields/textarea.d.ts +14 -0
  217. package/dist/inertia/forms/fields/toggle.d.ts +11 -0
  218. package/dist/inertia/forms/index.d.ts +26 -0
  219. package/dist/inertia/forms/types/actions.d.ts +11 -0
  220. package/dist/inertia/forms/types/field.d.ts +98 -0
  221. package/dist/inertia/forms/types/form.d.ts +37 -0
  222. package/dist/inertia/forms/types/index.d.ts +4 -0
  223. package/dist/inertia/forms/types/layout.d.ts +31 -0
  224. package/dist/inertia/index.d.ts +25 -0
  225. package/dist/inertia/index.esm.js +149 -0
  226. package/dist/inertia/index.esm.js.map +1 -0
  227. package/dist/inertia/index.js +153 -0
  228. package/dist/inertia/index.js.map +1 -0
  229. package/dist/inertia/inertia/index.d.ts +4 -0
  230. package/dist/inertia/inertia/precognition.d.ts +6 -0
  231. package/dist/inertia/inertia/types.d.ts +63 -0
  232. package/dist/inertia/inertia/use-inertia-form.d.ts +2 -0
  233. package/dist/inertia/inertia/use-server-table.d.ts +2 -0
  234. package/dist/inertia/precognition.d.ts +6 -0
  235. package/dist/inertia/tablefy/avatar-list.d.ts +15 -0
  236. package/dist/inertia/tablefy/data-table-empty.d.ts +8 -0
  237. package/dist/inertia/tablefy/data-table-header.d.ts +17 -0
  238. package/dist/inertia/tablefy/data-table-pagination.d.ts +9 -0
  239. package/dist/inertia/tablefy/data-table-schema.d.ts +1 -0
  240. package/dist/inertia/tablefy/data-table.d.ts +13 -0
  241. package/dist/inertia/tablefy/index.d.ts +6 -0
  242. package/dist/inertia/types/actions.d.ts +21 -0
  243. package/dist/inertia/types/empty-state.d.ts +18 -0
  244. package/dist/inertia/types/filters.d.ts +25 -0
  245. package/dist/inertia/types/index.d.ts +4 -0
  246. package/dist/inertia/types/table.d.ts +42 -0
  247. package/dist/inertia/types.d.ts +63 -0
  248. package/dist/inertia/use-inertia-form.d.ts +2 -0
  249. package/dist/inertia/use-server-table.d.ts +2 -0
  250. package/dist/inertia/utils.d.ts +1 -0
  251. package/package.json +39 -13
@@ -0,0 +1,12 @@
1
+ import { ReactNode } from "react";
2
+ import { BuiltField } from "../types/form";
3
+ export interface FieldRendererProps<TData extends Record<string, any>> {
4
+ field: BuiltField<TData>;
5
+ value: any;
6
+ error?: string;
7
+ disabled?: boolean;
8
+ data: TData;
9
+ onChange: (value: any) => void;
10
+ onBlur?: () => void;
11
+ }
12
+ export declare function FieldRenderer<TData extends Record<string, any>>({ field, value, error, disabled, data, onChange, onBlur, }: FieldRendererProps<TData>): ReactNode;
@@ -0,0 +1,9 @@
1
+ import { ReactNode } from "react";
2
+ import { FormActionConfig } from "../types/actions";
3
+ export interface FormActionsProps<TData extends Record<string, any>> {
4
+ actions: FormActionConfig<TData>[];
5
+ position?: "start" | "end" | "between" | "center";
6
+ data: TData;
7
+ processing?: boolean;
8
+ }
9
+ export declare function FormActions<TData extends Record<string, any>>({ actions, position, data, processing, }: FormActionsProps<TData>): ReactNode;
@@ -0,0 +1,14 @@
1
+ import { ReactNode } from "react";
2
+ import { FormBuildResult } from "../types/form";
3
+ export interface FormRendererProps<TData extends Record<string, any>> {
4
+ schema: FormBuildResult<TData>;
5
+ data: TData;
6
+ errors: Partial<Record<keyof TData, string>>;
7
+ onChange: (field: keyof TData, value: any) => void;
8
+ onSubmit: () => void;
9
+ processing?: boolean;
10
+ className?: string;
11
+ disabled?: boolean;
12
+ onBlur?: (field: string) => void;
13
+ }
14
+ export declare function FormRenderer<TData extends Record<string, any>>({ schema, data, errors, onChange, onSubmit, processing, className, disabled, onBlur, }: FormRendererProps<TData>): ReactNode;
@@ -0,0 +1,7 @@
1
+ import { ReactNode } from "react";
2
+ export interface GridLayoutProps {
3
+ columns?: number;
4
+ children: ReactNode;
5
+ className?: string;
6
+ }
7
+ export declare function GridLayout({ columns, children, className, }: GridLayoutProps): ReactNode;
@@ -0,0 +1,9 @@
1
+ export { FormRenderer } from "./form-renderer";
2
+ export type { FormRendererProps } from "./form-renderer";
3
+ export { FieldRenderer } from "./field-renderer";
4
+ export type { FieldRendererProps } from "./field-renderer";
5
+ export { GridLayout } from "./grid-layout";
6
+ export { FormActions } from "./form-actions";
7
+ export { SectionRenderer } from "./section-renderer";
8
+ export { TabRenderer } from "./tab-renderer";
9
+ export { WizardRenderer } from "./wizard-renderer";
@@ -0,0 +1,14 @@
1
+ import { ReactNode } from "react";
2
+ import { SectionConfig } from "../types/layout";
3
+ import { BuiltField } from "../types/form";
4
+ export interface SectionRendererProps<TData extends Record<string, any>> {
5
+ section: SectionConfig<TData>;
6
+ fields: BuiltField<TData>[];
7
+ data: TData;
8
+ errors: Partial<Record<keyof TData, string>>;
9
+ onChange: (field: keyof TData, value: any) => void;
10
+ onBlur?: (field: string) => void;
11
+ isFieldVisible: (field: BuiltField<TData>) => boolean;
12
+ isFieldDisabled: (field: BuiltField<TData>) => boolean;
13
+ }
14
+ export declare function SectionRenderer<TData extends Record<string, any>>({ section, fields, data, errors, onChange, onBlur, isFieldVisible, isFieldDisabled, }: SectionRendererProps<TData>): ReactNode;
@@ -0,0 +1,15 @@
1
+ import { ReactNode } from "react";
2
+ import { TabConfig } from "../types/layout";
3
+ import { BuiltField } from "../types/form";
4
+ export interface TabRendererProps<TData extends Record<string, any>> {
5
+ tabs: TabConfig<TData>[];
6
+ fields: BuiltField<TData>[];
7
+ data: TData;
8
+ errors: Partial<Record<keyof TData, string>>;
9
+ onChange: (field: keyof TData, value: any) => void;
10
+ onBlur?: (field: string) => void;
11
+ isFieldVisible: (field: BuiltField<TData>) => boolean;
12
+ isFieldDisabled: (field: BuiltField<TData>) => boolean;
13
+ columns?: number;
14
+ }
15
+ export declare function TabRenderer<TData extends Record<string, any>>({ tabs, fields, data, errors, onChange, onBlur, isFieldVisible, isFieldDisabled, columns, }: TabRendererProps<TData>): ReactNode;
@@ -0,0 +1,17 @@
1
+ import { ReactNode } from "react";
2
+ import { WizardStepConfig } from "../types/layout";
3
+ import { BuiltField } from "../types/form";
4
+ export interface WizardRendererProps<TData extends Record<string, any>> {
5
+ steps: WizardStepConfig<TData>[];
6
+ fields: BuiltField<TData>[];
7
+ data: TData;
8
+ errors: Partial<Record<keyof TData, string>>;
9
+ onChange: (field: keyof TData, value: any) => void;
10
+ onBlur?: (field: string) => void;
11
+ isFieldVisible: (field: BuiltField<TData>) => boolean;
12
+ isFieldDisabled: (field: BuiltField<TData>) => boolean;
13
+ columns?: number;
14
+ onSubmit: () => void;
15
+ processing?: boolean;
16
+ }
17
+ export declare function WizardRenderer<TData extends Record<string, any>>({ steps, fields, data, errors, onChange, onBlur, isFieldVisible, isFieldDisabled, columns, onSubmit, processing, }: WizardRendererProps<TData>): ReactNode;
@@ -0,0 +1,24 @@
1
+ import { ReactNode } from "react";
2
+ import { BaseFieldConfig, ValidationRule } from "../types/field";
3
+ import { FieldType, FieldRenderProps, BuiltField } from "../types/form";
4
+ export declare abstract class BaseField<TData extends Record<string, any>, TConfig extends BaseFieldConfig<TData>> {
5
+ protected config: TConfig;
6
+ constructor(name: string);
7
+ label(label: string): this;
8
+ placeholder(placeholder: string): this;
9
+ helperText(text: string): this;
10
+ required(required?: boolean): this;
11
+ disabled(disabled?: boolean | ((data: TData) => boolean)): this;
12
+ readOnly(readOnly?: boolean): this;
13
+ hidden(hidden?: boolean | ((data: TData) => boolean)): this;
14
+ default(value: any): this;
15
+ columnSpan(span: number): this;
16
+ className(className: string): this;
17
+ rules(rules: ValidationRule[]): this;
18
+ zodSchema(schema: any): this;
19
+ dependsOn<K extends string & keyof TData>(field: K, condition: (value: TData[K], data: TData) => boolean, effect?: "show" | "hide" | "enable" | "disable" | "setValue", effectValue?: any): this;
20
+ reactive(reactive?: boolean): this;
21
+ abstract readonly fieldType: FieldType;
22
+ abstract renderField(props: FieldRenderProps<TData>): ReactNode;
23
+ build(): BuiltField<TData>;
24
+ }
@@ -0,0 +1,12 @@
1
+ import { ReactNode } from "react";
2
+ import { BaseField } from "./base-field";
3
+ import { CheckboxGroupConfig, SelectOption } from "../types/field";
4
+ import { FieldType, FieldRenderProps } from "../types/form";
5
+ export declare class CheckboxGroup<TData extends Record<string, any>> extends BaseField<TData, CheckboxGroupConfig<TData>> {
6
+ readonly fieldType: FieldType;
7
+ constructor(name: string);
8
+ static make<TData extends Record<string, any>>(name: string & keyof TData | string): CheckboxGroup<TData>;
9
+ options(options: SelectOption[]): this;
10
+ columns(columns: number): this;
11
+ renderField({ value, onChange, error, disabled, }: FieldRenderProps<TData>): ReactNode;
12
+ }
@@ -0,0 +1,9 @@
1
+ import { ReactNode } from "react";
2
+ import { BaseField } from "./base-field";
3
+ import { CheckboxConfig } from "../types/field";
4
+ import { FieldType, FieldRenderProps } from "../types/form";
5
+ export declare class Checkbox<TData extends Record<string, any>> extends BaseField<TData, CheckboxConfig<TData>> {
6
+ readonly fieldType: FieldType;
7
+ static make<TData extends Record<string, any>>(name: string & keyof TData | string): Checkbox<TData>;
8
+ renderField({ value, onChange, error, disabled, }: FieldRenderProps<TData>): ReactNode;
9
+ }
@@ -0,0 +1,15 @@
1
+ import { ReactNode } from "react";
2
+ import { BaseField } from "./base-field";
3
+ import { DatePickerConfig } from "../types/field";
4
+ import { FieldType, FieldRenderProps } from "../types/form";
5
+ export declare class DatePicker<TData extends Record<string, any>> extends BaseField<TData, DatePickerConfig<TData>> {
6
+ readonly fieldType: FieldType;
7
+ constructor(name: string);
8
+ static make<TData extends Record<string, any>>(name: string & keyof TData | string): DatePicker<TData>;
9
+ minDate(date: Date | ((data: TData) => Date)): this;
10
+ maxDate(date: Date | ((data: TData) => Date)): this;
11
+ format(format: string): this;
12
+ includeTime(includeTime?: boolean): this;
13
+ locale(locale: string): this;
14
+ renderField({ value, onChange, error, disabled, data, }: FieldRenderProps<TData>): ReactNode;
15
+ }
@@ -0,0 +1,17 @@
1
+ import { ReactNode } from "react";
2
+ import { BaseField } from "./base-field";
3
+ import { FileUploadConfig } from "../types/field";
4
+ import { FieldType, FieldRenderProps } from "../types/form";
5
+ export declare class FileUpload<TData extends Record<string, any>> extends BaseField<TData, FileUploadConfig<TData>> {
6
+ readonly fieldType: FieldType;
7
+ constructor(name: string);
8
+ static make<TData extends Record<string, any>>(name: string & keyof TData | string): FileUpload<TData>;
9
+ accept(accept: string): this;
10
+ maxSize(bytes: number): this;
11
+ multiple(multiple?: boolean): this;
12
+ maxFiles(max: number): this;
13
+ preview(preview?: boolean): this;
14
+ image(): this;
15
+ pdf(): this;
16
+ renderField({ value, onChange, error, disabled, }: FieldRenderProps<TData>): ReactNode;
17
+ }
@@ -0,0 +1,9 @@
1
+ import { ReactNode } from "react";
2
+ import { BaseField } from "./base-field";
3
+ import { HiddenConfig } from "../types/field";
4
+ import { FieldType, FieldRenderProps } from "../types/form";
5
+ export declare class Hidden<TData extends Record<string, any>> extends BaseField<TData, HiddenConfig<TData>> {
6
+ readonly fieldType: FieldType;
7
+ static make<TData extends Record<string, any>>(name: string & keyof TData | string): Hidden<TData>;
8
+ renderField({ value }: FieldRenderProps<TData>): ReactNode;
9
+ }
@@ -0,0 +1,12 @@
1
+ export { BaseField } from "./base-field";
2
+ export { TextInput } from "./text-input";
3
+ export { Textarea } from "./textarea";
4
+ export { Select } from "./select";
5
+ export { Checkbox } from "./checkbox";
6
+ export { Toggle } from "./toggle";
7
+ export { RadioGroup } from "./radio-group";
8
+ export { DatePicker } from "./date-picker";
9
+ export { Hidden } from "./hidden";
10
+ export { FileUpload } from "./file-upload";
11
+ export { CheckboxGroup } from "./checkbox-group";
12
+ export { Repeater } from "./repeater";
@@ -0,0 +1,14 @@
1
+ import { ReactNode } from "react";
2
+ import { BaseField } from "./base-field";
3
+ import { RadioGroupConfig, SelectOption } from "../types/field";
4
+ import { FieldType, FieldRenderProps } from "../types/form";
5
+ export declare class RadioGroup<TData extends Record<string, any>> extends BaseField<TData, RadioGroupConfig<TData>> {
6
+ readonly fieldType: FieldType;
7
+ constructor(name: string);
8
+ static make<TData extends Record<string, any>>(name: string & keyof TData | string): RadioGroup<TData>;
9
+ options(options: SelectOption[]): this;
10
+ orientation(orientation: "horizontal" | "vertical"): this;
11
+ horizontal(): this;
12
+ vertical(): this;
13
+ renderField({ value, onChange, error, disabled, }: FieldRenderProps<TData>): ReactNode;
14
+ }
@@ -0,0 +1,21 @@
1
+ import { ReactNode } from "react";
2
+ import { BaseField } from "./base-field";
3
+ import { RepeaterConfig } from "../types/field";
4
+ import { FieldType, FieldRenderProps, BuiltField } from "../types/form";
5
+ type FieldBuilder<TData extends Record<string, any>> = {
6
+ build(): BuiltField<TData>;
7
+ };
8
+ export declare class Repeater<TData extends Record<string, any>> extends BaseField<TData, RepeaterConfig<TData>> {
9
+ readonly fieldType: FieldType;
10
+ private fieldBuilders;
11
+ constructor(name: string);
12
+ static make<TData extends Record<string, any>>(name: string & keyof TData | string): Repeater<TData>;
13
+ fields(...builders: FieldBuilder<any>[]): this;
14
+ minItems(min: number): this;
15
+ maxItems(max: number): this;
16
+ addLabel(label: string): this;
17
+ collapsible(collapsible?: boolean): this;
18
+ orderable(orderable?: boolean): this;
19
+ renderField({ value, onChange, error, disabled, data, }: FieldRenderProps<TData>): ReactNode;
20
+ }
21
+ export {};
@@ -0,0 +1,16 @@
1
+ import { ReactNode } from "react";
2
+ import { BaseField } from "./base-field";
3
+ import { SelectConfig, SelectOption } from "../types/field";
4
+ import { FieldType, FieldRenderProps } from "../types/form";
5
+ export declare class Select<TData extends Record<string, any>> extends BaseField<TData, SelectConfig<TData>> {
6
+ readonly fieldType: FieldType;
7
+ constructor(name: string);
8
+ static make<TData extends Record<string, any>>(name: string & keyof TData | string): Select<TData>;
9
+ options(options: SelectOption[] | ((data: TData) => SelectOption[])): this;
10
+ multiple(multiple?: boolean): this;
11
+ searchable(searchable?: boolean): this;
12
+ clearable(clearable?: boolean): this;
13
+ maxItems(max: number): this;
14
+ loadOptions(fn: (query: string) => Promise<SelectOption[]>): this;
15
+ renderField({ value, onChange, error, disabled, data, }: FieldRenderProps<TData>): ReactNode;
16
+ }
@@ -0,0 +1,20 @@
1
+ import { ReactNode } from "react";
2
+ import { BaseField } from "./base-field";
3
+ import { TextInputConfig } from "../types/field";
4
+ import { FieldType, FieldRenderProps } from "../types/form";
5
+ export declare class TextInput<TData extends Record<string, any>> extends BaseField<TData, TextInputConfig<TData>> {
6
+ readonly fieldType: FieldType;
7
+ static make<TData extends Record<string, any>>(name: string & keyof TData | string): TextInput<TData>;
8
+ type(type: "text" | "email" | "password" | "number" | "url" | "tel"): this;
9
+ email(): this;
10
+ password(): this;
11
+ number(): this;
12
+ url(): this;
13
+ tel(): this;
14
+ minLength(min: number): this;
15
+ maxLength(max: number): this;
16
+ prefix(prefix: string | ReactNode): this;
17
+ suffix(suffix: string | ReactNode): this;
18
+ autocomplete(value: string): this;
19
+ renderField({ value, onChange, onBlur, error, disabled, }: FieldRenderProps<TData>): ReactNode;
20
+ }
@@ -0,0 +1,14 @@
1
+ import { ReactNode } from "react";
2
+ import { BaseField } from "./base-field";
3
+ import { TextareaConfig } from "../types/field";
4
+ import { FieldType, FieldRenderProps } from "../types/form";
5
+ export declare class Textarea<TData extends Record<string, any>> extends BaseField<TData, TextareaConfig<TData>> {
6
+ readonly fieldType: FieldType;
7
+ constructor(name: string);
8
+ static make<TData extends Record<string, any>>(name: string & keyof TData | string): Textarea<TData>;
9
+ rows(rows: number): this;
10
+ minLength(min: number): this;
11
+ maxLength(max: number): this;
12
+ autoResize(autoResize?: boolean): this;
13
+ renderField({ value, onChange, onBlur, error, disabled, }: FieldRenderProps<TData>): ReactNode;
14
+ }
@@ -0,0 +1,11 @@
1
+ import { ReactNode } from "react";
2
+ import { BaseField } from "./base-field";
3
+ import { ToggleConfig } from "../types/field";
4
+ import { FieldType, FieldRenderProps } from "../types/form";
5
+ export declare class Toggle<TData extends Record<string, any>> extends BaseField<TData, ToggleConfig<TData>> {
6
+ readonly fieldType: FieldType;
7
+ static make<TData extends Record<string, any>>(name: string & keyof TData | string): Toggle<TData>;
8
+ onLabel(label: string): this;
9
+ offLabel(label: string): this;
10
+ renderField({ value, onChange, error, disabled, }: FieldRenderProps<TData>): ReactNode;
11
+ }
@@ -0,0 +1,26 @@
1
+ export { FormSchema } from "./builders/form-schema";
2
+ export { ActionsBuilder } from "./builders/actions-builder";
3
+ export { SectionBuilder } from "./builders/section-builder";
4
+ export { TabBuilder } from "./builders/tab-builder";
5
+ export { WizardStep } from "./builders/wizard-builder";
6
+ export { BaseField } from "./fields/base-field";
7
+ export { TextInput } from "./fields/text-input";
8
+ export { Textarea } from "./fields/textarea";
9
+ export { Select } from "./fields/select";
10
+ export { Checkbox } from "./fields/checkbox";
11
+ export { Toggle } from "./fields/toggle";
12
+ export { RadioGroup } from "./fields/radio-group";
13
+ export { DatePicker } from "./fields/date-picker";
14
+ export { Hidden } from "./fields/hidden";
15
+ export { FileUpload } from "./fields/file-upload";
16
+ export { CheckboxGroup } from "./fields/checkbox-group";
17
+ export { Repeater } from "./fields/repeater";
18
+ export { FormRenderer } from "./components/form-renderer";
19
+ export type { FormRendererProps } from "./components/form-renderer";
20
+ export { FieldRenderer } from "./components/field-renderer";
21
+ export { GridLayout } from "./components/grid-layout";
22
+ export { FormActions } from "./components/form-actions";
23
+ export { SectionRenderer } from "./components/section-renderer";
24
+ export { TabRenderer } from "./components/tab-renderer";
25
+ export { WizardRenderer } from "./components/wizard-renderer";
26
+ export type { BaseFieldConfig, ValidationRule, DependencyConfig, TextInputConfig, TextareaConfig, SelectOption, SelectConfig, CheckboxConfig, CheckboxGroupConfig, ToggleConfig, RadioGroupConfig, DatePickerConfig, FileUploadConfig, RepeaterConfig, HiddenConfig, FieldType, FieldRenderProps, BuiltField, FormSchemaConfig, FormBuildResult, SectionConfig, TabConfig, WizardStepConfig, FormActionConfig, } from "./types";
@@ -0,0 +1,11 @@
1
+ import { ReactNode } from "react";
2
+ export interface FormActionConfig<TData extends Record<string, any> = Record<string, any>> {
3
+ type: "submit" | "cancel" | "custom";
4
+ label: string;
5
+ variant?: "default" | "secondary" | "outline" | "ghost" | "destructive";
6
+ disabled?: boolean | ((data: TData, processing: boolean) => boolean);
7
+ loading?: boolean;
8
+ icon?: ReactNode;
9
+ onClick?: () => void;
10
+ href?: string;
11
+ }
@@ -0,0 +1,98 @@
1
+ import { ReactNode } from "react";
2
+ export interface BaseFieldConfig<TData extends Record<string, any>> {
3
+ name: string;
4
+ label?: string;
5
+ placeholder?: string;
6
+ helperText?: string;
7
+ required?: boolean;
8
+ disabled?: boolean | ((data: TData) => boolean);
9
+ readOnly?: boolean;
10
+ hidden?: boolean | ((data: TData) => boolean);
11
+ defaultValue?: any;
12
+ columnSpan?: number;
13
+ className?: string;
14
+ rules?: ValidationRule[];
15
+ zodSchema?: any;
16
+ dependsOn?: DependencyConfig<TData>[];
17
+ reactive?: boolean;
18
+ }
19
+ export interface ValidationRule {
20
+ type: string;
21
+ value?: any;
22
+ message?: string;
23
+ }
24
+ export interface DependencyConfig<TData> {
25
+ field: string & keyof TData;
26
+ condition: (value: any, data: TData) => boolean;
27
+ effect: "show" | "hide" | "enable" | "disable" | "setValue";
28
+ effectValue?: any;
29
+ }
30
+ export interface TextInputConfig<TData extends Record<string, any>> extends BaseFieldConfig<TData> {
31
+ type?: "text" | "email" | "password" | "number" | "url" | "tel";
32
+ minLength?: number;
33
+ maxLength?: number;
34
+ prefix?: string | ReactNode;
35
+ suffix?: string | ReactNode;
36
+ mask?: string;
37
+ autocomplete?: string;
38
+ }
39
+ export interface TextareaConfig<TData extends Record<string, any>> extends BaseFieldConfig<TData> {
40
+ rows?: number;
41
+ minLength?: number;
42
+ maxLength?: number;
43
+ autoResize?: boolean;
44
+ }
45
+ export interface SelectOption {
46
+ label: string;
47
+ value: string;
48
+ disabled?: boolean;
49
+ group?: string;
50
+ description?: string;
51
+ icon?: ReactNode;
52
+ }
53
+ export interface SelectConfig<TData extends Record<string, any>> extends BaseFieldConfig<TData> {
54
+ options: SelectOption[] | ((data: TData) => SelectOption[]);
55
+ multiple?: boolean;
56
+ searchable?: boolean;
57
+ clearable?: boolean;
58
+ maxItems?: number;
59
+ loadOptions?: (query: string) => Promise<SelectOption[]>;
60
+ }
61
+ export interface CheckboxConfig<TData extends Record<string, any>> extends BaseFieldConfig<TData> {
62
+ }
63
+ export interface CheckboxGroupConfig<TData extends Record<string, any>> extends BaseFieldConfig<TData> {
64
+ options: SelectOption[];
65
+ columns?: number;
66
+ }
67
+ export interface ToggleConfig<TData extends Record<string, any>> extends BaseFieldConfig<TData> {
68
+ onLabel?: string;
69
+ offLabel?: string;
70
+ }
71
+ export interface RadioGroupConfig<TData extends Record<string, any>> extends BaseFieldConfig<TData> {
72
+ options: SelectOption[];
73
+ orientation?: "horizontal" | "vertical";
74
+ }
75
+ export interface DatePickerConfig<TData extends Record<string, any>> extends BaseFieldConfig<TData> {
76
+ minDate?: Date | ((data: TData) => Date);
77
+ maxDate?: Date | ((data: TData) => Date);
78
+ format?: string;
79
+ includeTime?: boolean;
80
+ locale?: string;
81
+ }
82
+ export interface FileUploadConfig<TData extends Record<string, any>> extends BaseFieldConfig<TData> {
83
+ accept?: string;
84
+ maxSize?: number;
85
+ multiple?: boolean;
86
+ maxFiles?: number;
87
+ preview?: boolean;
88
+ }
89
+ export interface RepeaterConfig<TData extends Record<string, any>> extends BaseFieldConfig<TData> {
90
+ fields: any[];
91
+ minItems?: number;
92
+ maxItems?: number;
93
+ addLabel?: string;
94
+ collapsible?: boolean;
95
+ orderable?: boolean;
96
+ }
97
+ export interface HiddenConfig<TData extends Record<string, any>> extends BaseFieldConfig<TData> {
98
+ }
@@ -0,0 +1,37 @@
1
+ import { ReactNode } from "react";
2
+ import { BaseFieldConfig } from "./field";
3
+ import { SectionConfig, TabConfig, WizardStepConfig } from "./layout";
4
+ import { FormActionConfig } from "./actions";
5
+ export type FieldType = "text" | "textarea" | "select" | "multi-select" | "checkbox" | "checkbox-group" | "toggle" | "radio-group" | "date-picker" | "date-time-picker" | "file-upload" | "repeater" | "hidden";
6
+ export interface FieldRenderProps<TData extends Record<string, any> = Record<string, any>> {
7
+ value: any;
8
+ onChange: (value: any) => void;
9
+ onBlur?: () => void;
10
+ error?: string;
11
+ disabled?: boolean;
12
+ data: TData;
13
+ }
14
+ export interface BuiltField<TData extends Record<string, any> = Record<string, any>> {
15
+ name: string;
16
+ type: FieldType;
17
+ config: BaseFieldConfig<TData> & Record<string, any>;
18
+ render: (props: FieldRenderProps<TData>) => ReactNode;
19
+ }
20
+ export interface FormSchemaConfig<TData extends Record<string, any>> {
21
+ title?: string | ((data: TData) => string);
22
+ description?: string | ((data: TData) => string);
23
+ columns?: number;
24
+ bordered?: boolean;
25
+ spacing?: "compact" | "normal" | "relaxed";
26
+ fields: BuiltField<TData>[];
27
+ sections?: SectionConfig<TData>[];
28
+ tabs?: TabConfig<TData>[];
29
+ wizardSteps?: WizardStepConfig<TData>[];
30
+ actions?: FormActionConfig<TData>[];
31
+ actionsPosition?: "start" | "end" | "between" | "center";
32
+ disabled?: boolean | ((data: TData) => boolean);
33
+ }
34
+ export interface FormBuildResult<TData extends Record<string, any>> {
35
+ fields: BuiltField<TData>[];
36
+ config: FormSchemaConfig<TData>;
37
+ }
@@ -0,0 +1,4 @@
1
+ export type { BaseFieldConfig, ValidationRule, DependencyConfig, TextInputConfig, TextareaConfig, SelectOption, SelectConfig, CheckboxConfig, CheckboxGroupConfig, ToggleConfig, RadioGroupConfig, DatePickerConfig, FileUploadConfig, RepeaterConfig, HiddenConfig, } from "./field";
2
+ export type { FieldType, FieldRenderProps, BuiltField, FormSchemaConfig, FormBuildResult, } from "./form";
3
+ export type { SectionConfig, TabConfig, WizardStepConfig, } from "./layout";
4
+ export type { FormActionConfig } from "./actions";
@@ -0,0 +1,31 @@
1
+ import { ReactNode } from "react";
2
+ export interface SectionConfig<TData extends Record<string, any>> {
3
+ id: string;
4
+ title: string;
5
+ description?: string;
6
+ fields: string[];
7
+ columns?: number;
8
+ collapsible?: boolean;
9
+ collapsed?: boolean;
10
+ icon?: ReactNode;
11
+ hidden?: (data: TData) => boolean;
12
+ }
13
+ export interface TabConfig<TData extends Record<string, any>> {
14
+ id: string;
15
+ label: string;
16
+ icon?: ReactNode;
17
+ fields?: string[];
18
+ sections?: SectionConfig<TData>[];
19
+ badge?: string | number | ((data: TData) => string | number);
20
+ disabled?: (data: TData) => boolean;
21
+ }
22
+ export interface WizardStepConfig<TData extends Record<string, any>> {
23
+ id: string;
24
+ label: string;
25
+ description?: string;
26
+ icon?: ReactNode;
27
+ fields?: string[];
28
+ sections?: SectionConfig<TData>[];
29
+ canProceed?: (data: TData) => boolean;
30
+ beforeNext?: (data: TData) => Promise<boolean> | boolean;
31
+ }
@@ -21,3 +21,5 @@ export type { EnumOption } from "./columns/enum-column";
21
21
  export { ConfirmProvider, confirm } from "./confirm";
22
22
  export type { ConfirmOptions } from "./confirm";
23
23
  export type { DataTableConfig, EmptyStateConfig, FilterConfig, HeaderAction, PaginationConfig, SearchConfig, } from "./types";
24
+ export { FormSchema, ActionsBuilder, SectionBuilder, TabBuilder, WizardStep, TextInput, Textarea, Select, Checkbox, Toggle, RadioGroup, DatePicker, Hidden, FileUpload, CheckboxGroup, Repeater, FormRenderer, } from "./forms";
25
+ export type { FormSchemaConfig, FormBuildResult, FormRendererProps, BuiltField, FieldType, FieldRenderProps, BaseFieldConfig, SelectOption as FormSelectOption, FormActionConfig, SectionConfig, TabConfig, WizardStepConfig, } from "./forms";
@@ -241,8 +241,18 @@ class BadgeColumn extends BaseColumn {
241
241
  this.config.variants = variants;
242
242
  return this;
243
243
  }
244
+ // Dynamische Variante basierend auf Row-Daten
245
+ variantFn(fn) {
246
+ this.config.variantFn = fn;
247
+ return this;
248
+ }
249
+ // Dynamische className basierend auf Row-Daten
250
+ classNameFn(fn) {
251
+ this.config.classNameFn = fn;
252
+ return this;
253
+ }
244
254
  build() {
245
- const { accessor, label, sortable, variants } = this.config;
255
+ const { accessor, label, sortable, variants, variantFn, classNameFn } = this.config;
246
256
  return {
247
257
  accessorKey: accessor,
248
258
  header: ({ column }) => {
@@ -252,18 +262,31 @@ class BadgeColumn extends BaseColumn {
252
262
  }
253
263
  return (jsxs(Button, { variant: "table_header", size: "table_header", onClick: () => column.toggleSorting(column.getIsSorted() === "asc"), className: cn("text-muted-foreground font-medium", this.getAlignmentClass(), this.config.headerClassName), children: [displayLabel, jsx(ArrowUpDown, { className: "ml-2 h-4 w-4" })] }));
254
264
  },
255
- cell: ({ getValue }) => {
256
- const value = String(getValue());
257
- const variantConfig = variants?.[value];
258
- if (!variantConfig) {
259
- return (jsx(Badge, { variant: "outline", className: this.config.cellClassName, children: value }));
265
+ cell: ({ getValue, row }) => {
266
+ const value = getValue();
267
+ const stringValue = String(value);
268
+ // Priority 1: Dynamic variantFn (highest priority)
269
+ if (variantFn) {
270
+ const dynamicConfig = variantFn(value, row.original);
271
+ return (jsxs(Badge, { variant: dynamicConfig.variant === "success" ||
272
+ dynamicConfig.variant === "warning" ||
273
+ dynamicConfig.variant === "info" ||
274
+ dynamicConfig.variant === "muted"
275
+ ? "default"
276
+ : dynamicConfig.variant || "default", className: cn(dynamicConfig.className, classNameFn?.(value, row.original), this.config.cellClassName), children: [dynamicConfig.icon, dynamicConfig.label || stringValue] }));
277
+ }
278
+ // Priority 2: Static variants lookup
279
+ const variantConfig = variants?.[stringValue];
280
+ if (variantConfig) {
281
+ return (jsxs(Badge, { variant: variantConfig.variant === "success" ||
282
+ variantConfig.variant === "warning" ||
283
+ variantConfig.variant === "info" ||
284
+ variantConfig.variant === "muted"
285
+ ? "default"
286
+ : variantConfig.variant || "default", className: cn(variantConfig.className, classNameFn?.(value, row.original), this.config.cellClassName), children: [variantConfig.icon, variantConfig.label || stringValue] }));
260
287
  }
261
- return (jsxs(Badge, { variant: variantConfig.variant === "success" ||
262
- variantConfig.variant === "warning" ||
263
- variantConfig.variant === "info" ||
264
- variantConfig.variant === "muted"
265
- ? "default"
266
- : variantConfig.variant || "default", className: cn(variantConfig.className, this.config.cellClassName), children: [variantConfig.icon, variantConfig.label || value] }));
288
+ // Priority 3: Default badge with optional dynamic className
289
+ return (jsx(Badge, { variant: "outline", className: cn(classNameFn?.(value, row.original), this.config.cellClassName), children: stringValue }));
267
290
  },
268
291
  };
269
292
  }