@axzydev/axzy_ui_system 1.3.4 → 1.3.6

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 (35) hide show
  1. package/README.md +1 -1
  2. package/dist/index.cjs +754 -613
  3. package/dist/index.cjs.map +1 -1
  4. package/dist/index.css +1 -1
  5. package/dist/index.css.map +1 -1
  6. package/dist/index.d.cts +148 -5
  7. package/dist/index.d.ts +148 -5
  8. package/dist/index.js +628 -488
  9. package/dist/index.js.map +1 -1
  10. package/package.json +9 -3
  11. package/src/App.tsx +6 -0
  12. package/src/components/atoms/input/input.props.ts +5 -0
  13. package/src/components/atoms/input/input.tsx +24 -17
  14. package/src/components/atoms/input-number/input-number.doc.mdx +74 -0
  15. package/src/components/atoms/input-number/input-number.props.ts +66 -0
  16. package/src/components/atoms/input-number/input-number.stories.tsx +111 -0
  17. package/src/components/atoms/input-number/input-number.tsx +86 -0
  18. package/src/components/molecules/table/table.doc.mdx +12 -1
  19. package/src/components/molecules/table/table.props.ts +17 -0
  20. package/src/components/molecules/table/table.stories.tsx +45 -0
  21. package/src/components/molecules/table/table.tsx +37 -8
  22. package/src/components/organisms/data-table/ITDataTable.doc.mdx +14 -1
  23. package/src/components/organisms/data-table/ITDataTable.stories.tsx +25 -0
  24. package/src/components/organisms/data-table/dataTable.tsx +37 -8
  25. package/src/components/organisms/sidebar/sidebar.doc.mdx +50 -12
  26. package/src/components/organisms/sidebar/sidebar.props.ts +28 -2
  27. package/src/components/organisms/sidebar/sidebar.stories.tsx +61 -1
  28. package/src/components/organisms/sidebar/sidebar.tsx +111 -57
  29. package/src/index.css +10 -0
  30. package/src/index.ts +6 -3
  31. package/src/sandbox/navigation.ts +2 -0
  32. package/src/showcases/DataShowcases.tsx +61 -0
  33. package/src/showcases/FormShowcases.tsx +287 -1
  34. package/src/showcases/StructureShowcases.tsx +34 -6
  35. package/src/utils/table.utils.ts +83 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.css"],"sourcesContent":["@import \"tailwindcss\";\n\n@source \"./**/*.{ts,tsx}\";\n@source \"../.storybook/**/*.{ts,tsx}\";\n\n@variant dark (&:is(.dark &));\n\n@theme {\n --animate-fadeIn: fadeIn 0.5s ease-out forwards;\n --animate-fade-in: fadeIn 0.5s ease-out forwards;\n\n --color-primary-50: #eff6ff;\n --color-primary-100: #dbeafe;\n --color-primary-200: #bfdbfe;\n --color-primary-300: #93c5fd;\n --color-primary-400: #60a5fa;\n --color-primary-500: #3b82f6;\n --color-primary-600: #2563eb;\n --color-primary-700: #1d4ed8;\n --color-primary-800: #1e40af;\n --color-primary-900: #1e3a8a;\n --color-primary-950: #172554;\n\n --color-secondary-50: #f8fafc;\n --color-secondary-100: #f1f5f9;\n --color-secondary-200: #e2e8f0;\n --color-secondary-300: #cbd5e1;\n --color-secondary-400: #94a3b8;\n --color-secondary-500: #64748b;\n --color-secondary-600: #475569;\n\n --color-text-muted: #475569;\n --color-secondary-700: #334155;\n --color-secondary-800: #1e293b;\n --color-secondary-900: #0f172a;\n --color-secondary-950: #020617;\n\n --color-success-50: #ecfdf5;\n --color-success-100: #d1fae5;\n --color-success-200: #a7f3d0;\n --color-success-300: #6ee7b7;\n --color-success-400: #34d399;\n --color-success-500: #10b981;\n --color-success-600: #059669;\n --color-success-700: #047857;\n --color-success-800: #065f46;\n --color-success-900: #064e3b;\n --color-success-950: #022c22;\n\n --color-danger-50: #fff1f2;\n --color-danger-100: #ffe4e6;\n --color-danger-200: #fecdd3;\n --color-danger-300: #fda4af;\n --color-danger-400: #fb7185;\n --color-danger-500: #f43f5e;\n --color-danger-600: #e11d48;\n --color-danger-700: #be123c;\n --color-danger-800: #9f1239;\n --color-danger-900: #881337;\n --color-danger-950: #4c0519;\n\n --color-warning-50: #fffbeb;\n --color-warning-100: #fef3c7;\n --color-warning-200: #fde68a;\n --color-warning-300: #fcd34d;\n --color-warning-400: #fbbf24;\n --color-warning-500: #f59e0b;\n --color-warning-600: #d97706;\n --color-warning-700: #b45309;\n --color-warning-800: #92400e;\n --color-warning-900: #78350f;\n --color-warning-950: #451a03;\n\n --color-purple-50: #f5f3ff;\n --color-purple-100: #ede9fe;\n --color-purple-200: #ddd6fe;\n --color-purple-300: #c4b5fd;\n --color-purple-400: #a78bfa;\n --color-purple-500: #8b5cf6;\n --color-purple-600: #7c3aed;\n --color-purple-700: #6d28d9;\n --color-purple-800: #5b21b6;\n --color-purple-900: #4c1d95;\n --color-purple-950: #2e1065;\n\n --color-info-50: #f0f9ff;\n --color-info-100: #e0f2fe;\n --color-info-200: #bae6fd;\n --color-info-300: #7dd3fc;\n --color-info-400: #38bdf8;\n --color-info-500: #0ea5e9;\n --color-info-600: #0284c7;\n --color-info-700: #0369a1;\n --color-info-800: #075985;\n --color-info-900: #0c4a6e;\n --color-info-950: #082f49;\n\n /* Soft-depth radius scale: larger, more consistent rounding across the system */\n --radius-xs: 0.25rem;\n --radius-sm: 0.375rem;\n --radius-md: 0.625rem;\n --radius-lg: 0.875rem;\n --radius-xl: 1.125rem;\n --radius-2xl: 1.5rem;\n --radius-3xl: 2rem;\n\n /* Soft-depth shadow scale: cool slate-tinted, low-opacity, multi-layer.\n Overrides Tailwind's default shadow-* tokens system-wide so every\n existing shadow-* usage picks up the new \"floating\" look with no\n per-component changes. */\n --shadow-2xs: 0 1px 2px 0 rgb(15 23 42 / 0.04);\n --shadow-xs: 0 1px 3px 0 rgb(15 23 42 / 0.05), 0 1px 2px -1px rgb(15 23 42 / 0.04);\n --shadow-sm: 0 2px 6px -1px rgb(15 23 42 / 0.06), 0 1px 3px -1px rgb(15 23 42 / 0.05);\n --shadow-md: 0 6px 16px -4px rgb(15 23 42 / 0.08), 0 3px 6px -3px rgb(15 23 42 / 0.05);\n --shadow-lg: 0 12px 28px -6px rgb(15 23 42 / 0.1), 0 6px 12px -6px rgb(15 23 42 / 0.06);\n --shadow-xl: 0 20px 40px -8px rgb(15 23 42 / 0.12), 0 10px 20px -8px rgb(15 23 42 / 0.06);\n --shadow-2xl: 0 32px 64px -16px rgb(15 23 42 / 0.18);\n --shadow: 0 2px 6px -1px rgb(15 23 42 / 0.06), 0 1px 3px -1px rgb(15 23 42 / 0.05);\n --shadow-inner: inset 0 2px 4px 0 rgb(15 23 42 / 0.04);\n}\n\n@keyframes fadeIn {\n from { opacity: 0; transform: translateY(8px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n/* ──────────────────────────────────────────────\n GRID DINÁMICO (grid-cols-* / col-span-*)\n Tailwind v4 ya genera estas utilities nativamente (incl. variants sm/md/lg/xl).\n Estas @source inline son un safelist: fuerzan la generación de los valores\n dinámicos construidos en runtime (grid.tsx, styles.ts → `col-span-${n}`),\n que el scanner estático no puede ver. Sin esto, las clases dinámicas no\n existirían en el bundle.\n ────────────────────────────────────────────── */\n@source inline(\"grid-cols-1 grid-cols-2 grid-cols-3 grid-cols-4 grid-cols-5 grid-cols-6 grid-cols-7 grid-cols-8 grid-cols-9 grid-cols-10 grid-cols-11 grid-cols-12\");\n@source inline(\"col-span-1 col-span-2 col-span-3 col-span-4 col-span-5 col-span-6 col-span-7 col-span-8 col-span-9 col-span-10 col-span-11 col-span-12 col-span-full\");\n@source inline(\"sm:col-span-1 sm:col-span-2 sm:col-span-3 sm:col-span-4 sm:col-span-5 sm:col-span-6 sm:col-span-7 sm:col-span-8 sm:col-span-9 sm:col-span-10 sm:col-span-11 sm:col-span-12 sm:col-span-full\");\n@source inline(\"md:col-span-1 md:col-span-2 md:col-span-3 md:col-span-4 md:col-span-5 md:col-span-6 md:col-span-7 md:col-span-8 md:col-span-9 md:col-span-10 md:col-span-11 md:col-span-12 md:col-span-full\");\n@source inline(\"lg:col-span-1 lg:col-span-2 lg:col-span-3 lg:col-span-4 lg:col-span-5 lg:col-span-6 lg:col-span-7 lg:col-span-8 lg:col-span-9 lg:col-span-10 lg:col-span-11 lg:col-span-12 lg:col-span-full\");\n@source inline(\"xl:col-span-1 xl:col-span-2 xl:col-span-3 xl:col-span-4 xl:col-span-5 xl:col-span-6 xl:col-span-7 xl:col-span-8 xl:col-span-9 xl:col-span-10 xl:col-span-11 xl:col-span-12 xl:col-span-full\");\n\n/* ──────────────────────────────────────────────\n ANIMACIONES DE COMPONENTES (scoped it-*)\n Antes vivían en toast.css / stepper.css sueltos que NUNCA llegaban al bundle\n de dist (bug: animaciones muertas para consumidores) y usaban clases\n genéricas sin prefijo. Ahora van en @layer components con prefijo it-*.\n ────────────────────────────────────────────── */\n@layer components {\n @keyframes it-slide-in-right {\n from { opacity: 0; transform: translateX(24px); }\n to { opacity: 1; transform: translateX(0); }\n }\n @keyframes it-slide-in-left {\n from { opacity: 0; transform: translateX(-24px); }\n to { opacity: 1; transform: translateX(0); }\n }\n .it-stepper-slide-in-right {\n animation: it-slide-in-right 320ms cubic-bezier(0.2, 0.8, 0.2, 1) both;\n }\n .it-stepper-slide-in-left {\n animation: it-slide-in-left 320ms cubic-bezier(0.2, 0.8, 0.2, 1) both;\n }\n}"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/index.css"],"sourcesContent":["@import \"tailwindcss\";\n\n@source \"./**/*.{ts,tsx}\";\n@source \"../.storybook/**/*.{ts,tsx}\";\n\n@variant dark (&:is(.dark &));\n\n@theme {\n --animate-fadeIn: fadeIn 0.5s ease-out forwards;\n --animate-fade-in: fadeIn 0.5s ease-out forwards;\n\n --color-primary-50: #eff6ff;\n --color-primary-100: #dbeafe;\n --color-primary-200: #bfdbfe;\n --color-primary-300: #93c5fd;\n --color-primary-400: #60a5fa;\n --color-primary-500: #3b82f6;\n --color-primary-600: #2563eb;\n --color-primary-700: #1d4ed8;\n --color-primary-800: #1e40af;\n --color-primary-900: #1e3a8a;\n --color-primary-950: #172554;\n\n --color-secondary-50: #f8fafc;\n --color-secondary-100: #f1f5f9;\n --color-secondary-200: #e2e8f0;\n --color-secondary-300: #cbd5e1;\n --color-secondary-400: #94a3b8;\n --color-secondary-500: #64748b;\n --color-secondary-600: #475569;\n\n --color-text-muted: #475569;\n --color-secondary-700: #334155;\n --color-secondary-800: #1e293b;\n --color-secondary-900: #0f172a;\n --color-secondary-950: #020617;\n\n --color-success-50: #ecfdf5;\n --color-success-100: #d1fae5;\n --color-success-200: #a7f3d0;\n --color-success-300: #6ee7b7;\n --color-success-400: #34d399;\n --color-success-500: #10b981;\n --color-success-600: #059669;\n --color-success-700: #047857;\n --color-success-800: #065f46;\n --color-success-900: #064e3b;\n --color-success-950: #022c22;\n\n --color-danger-50: #fff1f2;\n --color-danger-100: #ffe4e6;\n --color-danger-200: #fecdd3;\n --color-danger-300: #fda4af;\n --color-danger-400: #fb7185;\n --color-danger-500: #f43f5e;\n --color-danger-600: #e11d48;\n --color-danger-700: #be123c;\n --color-danger-800: #9f1239;\n --color-danger-900: #881337;\n --color-danger-950: #4c0519;\n\n --color-warning-50: #fffbeb;\n --color-warning-100: #fef3c7;\n --color-warning-200: #fde68a;\n --color-warning-300: #fcd34d;\n --color-warning-400: #fbbf24;\n --color-warning-500: #f59e0b;\n --color-warning-600: #d97706;\n --color-warning-700: #b45309;\n --color-warning-800: #92400e;\n --color-warning-900: #78350f;\n --color-warning-950: #451a03;\n\n --color-purple-50: #f5f3ff;\n --color-purple-100: #ede9fe;\n --color-purple-200: #ddd6fe;\n --color-purple-300: #c4b5fd;\n --color-purple-400: #a78bfa;\n --color-purple-500: #8b5cf6;\n --color-purple-600: #7c3aed;\n --color-purple-700: #6d28d9;\n --color-purple-800: #5b21b6;\n --color-purple-900: #4c1d95;\n --color-purple-950: #2e1065;\n\n --color-info-50: #f0f9ff;\n --color-info-100: #e0f2fe;\n --color-info-200: #bae6fd;\n --color-info-300: #7dd3fc;\n --color-info-400: #38bdf8;\n --color-info-500: #0ea5e9;\n --color-info-600: #0284c7;\n --color-info-700: #0369a1;\n --color-info-800: #075985;\n --color-info-900: #0c4a6e;\n --color-info-950: #082f49;\n\n /* Soft-depth radius scale: larger, more consistent rounding across the system */\n --radius-xs: 0.25rem;\n --radius-sm: 0.375rem;\n --radius-md: 0.625rem;\n --radius-lg: 0.875rem;\n --radius-xl: 1.125rem;\n --radius-2xl: 1.5rem;\n --radius-3xl: 2rem;\n\n /* Soft-depth shadow scale: cool slate-tinted, low-opacity, multi-layer.\n Overrides Tailwind's default shadow-* tokens system-wide so every\n existing shadow-* usage picks up the new \"floating\" look with no\n per-component changes. */\n --shadow-2xs: 0 1px 2px 0 rgb(15 23 42 / 0.04);\n --shadow-xs: 0 1px 3px 0 rgb(15 23 42 / 0.05), 0 1px 2px -1px rgb(15 23 42 / 0.04);\n --shadow-sm: 0 2px 6px -1px rgb(15 23 42 / 0.06), 0 1px 3px -1px rgb(15 23 42 / 0.05);\n --shadow-md: 0 6px 16px -4px rgb(15 23 42 / 0.08), 0 3px 6px -3px rgb(15 23 42 / 0.05);\n --shadow-lg: 0 12px 28px -6px rgb(15 23 42 / 0.1), 0 6px 12px -6px rgb(15 23 42 / 0.06);\n --shadow-xl: 0 20px 40px -8px rgb(15 23 42 / 0.12), 0 10px 20px -8px rgb(15 23 42 / 0.06);\n --shadow-2xl: 0 32px 64px -16px rgb(15 23 42 / 0.18);\n --shadow: 0 2px 6px -1px rgb(15 23 42 / 0.06), 0 1px 3px -1px rgb(15 23 42 / 0.05);\n --shadow-inner: inset 0 2px 4px 0 rgb(15 23 42 / 0.04);\n}\n\n@keyframes fadeIn {\n from { opacity: 0; transform: translateY(8px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n/* ──────────────────────────────────────────────\n GRID DINÁMICO (grid-cols-* / col-span-*)\n Tailwind v4 ya genera estas utilities nativamente (incl. variants sm/md/lg/xl).\n Estas @source inline son un safelist: fuerzan la generación de los valores\n dinámicos construidos en runtime (grid.tsx, styles.ts → `col-span-${n}`),\n que el scanner estático no puede ver. Sin esto, las clases dinámicas no\n existirían en el bundle.\n ────────────────────────────────────────────── */\n@source inline(\"grid-cols-1 grid-cols-2 grid-cols-3 grid-cols-4 grid-cols-5 grid-cols-6 grid-cols-7 grid-cols-8 grid-cols-9 grid-cols-10 grid-cols-11 grid-cols-12\");\n@source inline(\"col-span-1 col-span-2 col-span-3 col-span-4 col-span-5 col-span-6 col-span-7 col-span-8 col-span-9 col-span-10 col-span-11 col-span-12 col-span-full\");\n@source inline(\"sm:col-span-1 sm:col-span-2 sm:col-span-3 sm:col-span-4 sm:col-span-5 sm:col-span-6 sm:col-span-7 sm:col-span-8 sm:col-span-9 sm:col-span-10 sm:col-span-11 sm:col-span-12 sm:col-span-full\");\n@source inline(\"md:col-span-1 md:col-span-2 md:col-span-3 md:col-span-4 md:col-span-5 md:col-span-6 md:col-span-7 md:col-span-8 md:col-span-9 md:col-span-10 md:col-span-11 md:col-span-12 md:col-span-full\");\n@source inline(\"lg:col-span-1 lg:col-span-2 lg:col-span-3 lg:col-span-4 lg:col-span-5 lg:col-span-6 lg:col-span-7 lg:col-span-8 lg:col-span-9 lg:col-span-10 lg:col-span-11 lg:col-span-12 lg:col-span-full\");\n@source inline(\"xl:col-span-1 xl:col-span-2 xl:col-span-3 xl:col-span-4 xl:col-span-5 xl:col-span-6 xl:col-span-7 xl:col-span-8 xl:col-span-9 xl:col-span-10 xl:col-span-11 xl:col-span-12 xl:col-span-full\");\n\n/* ──────────────────────────────────────────────\n ANIMACIONES DE COMPONENTES (scoped it-*)\n Antes vivían en toast.css / stepper.css sueltos que NUNCA llegaban al bundle\n de dist (bug: animaciones muertas para consumidores) y usaban clases\n genéricas sin prefijo. Ahora van en @layer components con prefijo it-*.\n ────────────────────────────────────────────── */\n@layer components {\n @keyframes it-slide-in-right {\n from { opacity: 0; transform: translateX(24px); }\n to { opacity: 1; transform: translateX(0); }\n }\n @keyframes it-slide-in-left {\n from { opacity: 0; transform: translateX(-24px); }\n to { opacity: 1; transform: translateX(0); }\n }\n .it-stepper-slide-in-right {\n animation: it-slide-in-right 320ms cubic-bezier(0.2, 0.8, 0.2, 1) both;\n }\n .it-stepper-slide-in-left {\n animation: it-slide-in-left 320ms cubic-bezier(0.2, 0.8, 0.2, 1) both;\n }\n\n /* Pinned (frozen) table columns: 1px edge separator on the frozen side.\n Background + hover live in the component as Tailwind arbitrary utilities so\n the cell matches --color-table-rowBg / --color-table-rowHover. */\n :where(.it-table-pinned-left) {\n box-shadow: inset -1px 0 0 0 var(--color-secondary-200);\n }\n :where(.it-table-pinned-right) {\n box-shadow: inset 1px 0 0 0 var(--color-secondary-200);\n }\n}"],"mappings":"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","names":[]}
package/dist/index.d.cts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as Yup from 'yup';
2
2
  import * as React$1 from 'react';
3
- import React__default, { RefObject, CSSProperties, ReactNode, ElementType, FocusEvent, HTMLAttributes } from 'react';
3
+ import React__default, { RefObject, CSSProperties, ReactNode, ElementType, ChangeEvent, FocusEvent, KeyboardEvent, HTMLAttributes } from 'react';
4
4
  import * as react_jsx_runtime from 'react/jsx-runtime';
5
5
 
6
6
  declare const useClickOutside: (ref: React.RefObject<HTMLElement>, callback: () => void) => void;
@@ -1218,6 +1218,23 @@ interface Column<T = any> {
1218
1218
  * @default false
1219
1219
  */
1220
1220
  truncate?: boolean;
1221
+ /**
1222
+ * Pins this column to a horizontal edge so it stays visible while the table
1223
+ * scrolls sideways.
1224
+ *
1225
+ * - `"left"` — freezes the column flush to the left edge.
1226
+ * - `"right"` — freezes the column flush to the right edge.
1227
+ *
1228
+ * Omit to leave the column unpinned. When more than one column shares a side,
1229
+ * sticky offsets accumulate from each preceding pinned column's `width` /
1230
+ * `minWidth`; a column without a pixel width resolves to `0px`, so declare a
1231
+ * pixel `width` on every pinned column of that side to avoid overlap. The
1232
+ * pinned cell renders an opaque background (row background + row hover) and a
1233
+ * 1px separator shadow on its frozen edge.
1234
+ *
1235
+ * @default undefined (column not pinned)
1236
+ */
1237
+ pinned?: "left" | "right";
1221
1238
  }
1222
1239
  interface ITTableProps<T> {
1223
1240
  /** Column definitions: key, label, type, sortable behavior, filters, and custom rendering. */
@@ -2197,6 +2214,11 @@ interface ITInputProps {
2197
2214
  label?: string;
2198
2215
  /** Enable currency formatting for number inputs (MX locale) */
2199
2216
  currencyFormat?: boolean;
2217
+ /**
2218
+ * Decimal places allowed for number inputs. `0` restricts to integers.
2219
+ * @default currencyFormat ? 2 : 0
2220
+ */
2221
+ decimals?: number;
2200
2222
  /** Placeholder text */
2201
2223
  placeholder?: string;
2202
2224
  /** Current input value */
@@ -2284,7 +2306,106 @@ interface ITInputProps {
2284
2306
  * maxLength={10}
2285
2307
  * />
2286
2308
  */
2287
- declare function ITInput({ name, type, label, placeholder, value, onChange, onBlur, disabled, className, containerClassName, labelClassName, touched, error, formatNumber, required, autoFocus, onClick, onKeyDown, iconLeft, iconRight, maxLength, minLength, checked, showHintLength, currencyFormat, rows, min, max, readOnly, focusContent, size }: ITInputProps): react_jsx_runtime.JSX.Element;
2309
+ declare function ITInput({ name, type, label, placeholder, value, onChange, onBlur, disabled, className, containerClassName, labelClassName, touched, error, formatNumber, required, autoFocus, onClick, onKeyDown, iconLeft, iconRight, maxLength, minLength, checked, showHintLength, currencyFormat, rows, min, max, readOnly, focusContent, size, decimals }: ITInputProps): react_jsx_runtime.JSX.Element;
2310
+
2311
+ /**
2312
+ * Props for the ITInputNumber component.
2313
+ *
2314
+ * Same surface as `ITInput` for numeric entry, but the value is always
2315
+ * formatted as currency (thousand separators + decimals) and emitted as a
2316
+ * real `number` instead of a string.
2317
+ */
2318
+ interface ITInputNumberProps {
2319
+ /** Field name used for form identification. */
2320
+ name: string;
2321
+ /** Current numeric value. Pass `null`/`undefined` for "empty". */
2322
+ value?: number | null;
2323
+ /**
2324
+ * Called with the parsed value on every change.
2325
+ * Receives `undefined` when the field is empty, plus the original input event.
2326
+ */
2327
+ onChange: (value: number | undefined, event: ChangeEvent<HTMLInputElement>) => void;
2328
+ /**
2329
+ * Called on blur with the parsed (and min/max clamped) value, plus the
2330
+ * original focus event.
2331
+ */
2332
+ onBlur?: (value: number | undefined, event: FocusEvent<HTMLInputElement>) => void;
2333
+ /** Number of decimal places allowed. `0` restricts to integers. @default 2 */
2334
+ decimals?: number;
2335
+ /** Text prefix rendered inside the field, e.g. `"$"`. Ignored when `iconLeft` is set. */
2336
+ prefix?: string;
2337
+ /** Label displayed above the input. */
2338
+ label?: string;
2339
+ /** Placeholder text. */
2340
+ placeholder?: string;
2341
+ /** Minimum numeric value. Values below are clamped on blur. */
2342
+ min?: number;
2343
+ /** Maximum numeric value. Values above are clamped on blur. */
2344
+ max?: number;
2345
+ /** Size preset: "sm" | "md" | "lg". @default "md" */
2346
+ size?: SizesTypes;
2347
+ /** Disable the input. @default false */
2348
+ disabled?: boolean;
2349
+ /** Render the input in read-only mode. @default false */
2350
+ readOnly?: boolean;
2351
+ /** Mark the field as required. @default false */
2352
+ required?: boolean;
2353
+ /** Whether the field has been touched by the user. */
2354
+ touched?: boolean;
2355
+ /** Validation error. Pass `true` for a generic message, or a string for a custom one. */
2356
+ error?: string | boolean;
2357
+ /** Icon element rendered on the left side of the input. Takes precedence over `prefix`. */
2358
+ iconLeft?: ReactNode;
2359
+ /** Icon element rendered on the right side of the input. */
2360
+ iconRight?: ReactNode;
2361
+ /** Additional CSS classes for the outer container. */
2362
+ containerClassName?: string;
2363
+ /** Additional CSS classes for the label. */
2364
+ labelClassName?: string;
2365
+ /** Additional CSS classes for the input element. */
2366
+ className?: string;
2367
+ /** Auto-focus the input on mount. @default false */
2368
+ autoFocus?: boolean;
2369
+ /** Select all content on click. @default false */
2370
+ focusContent?: boolean;
2371
+ /** Keydown handler for the underlying input. */
2372
+ onKeyDown?: (event: KeyboardEvent<HTMLInputElement>) => void;
2373
+ }
2374
+
2375
+ /**
2376
+ * Numeric field that always renders currency-style formatting (thousand
2377
+ * separators + fixed decimals) and emits a real `number`.
2378
+ *
2379
+ * Built on top of `ITInput`: it is the same field, but `onChange`/`onBlur`
2380
+ * already receive the parsed value, so consumers can do math directly instead
2381
+ * of converting strings first.
2382
+ *
2383
+ * @example
2384
+ * ```tsx
2385
+ * <ITInputNumber
2386
+ * name="amount"
2387
+ * label="Monto"
2388
+ * value={amount}
2389
+ * prefix="$"
2390
+ * onChange={(value) => setAmount(value)}
2391
+ * />
2392
+ * ```
2393
+ *
2394
+ * @example
2395
+ * ```tsx
2396
+ * // Enteros (sin decimales) con límites
2397
+ * <ITInputNumber
2398
+ * name="qty"
2399
+ * label="Cantidad"
2400
+ * decimals={0}
2401
+ * min={1}
2402
+ * max={99}
2403
+ * value={qty}
2404
+ * onChange={(value) => setQty(value)}
2405
+ * />
2406
+ * ```
2407
+ */
2408
+ declare function ITInputNumber({ value, onChange, onBlur, decimals, prefix, iconLeft, ...rest }: ITInputNumberProps): react_jsx_runtime.JSX.Element;
2288
2409
 
2289
2410
  /** Represents a navigation item in the sidebar. */
2290
2411
  interface ITNavigationItem$1 {
@@ -2895,6 +3016,24 @@ interface ITNavigationSubItem {
2895
3016
  /** Whether this sub-item is currently active/highlighted. */
2896
3017
  isActive?: boolean;
2897
3018
  }
3019
+ /**
3020
+ * A titled group of sub-navigation items rendered under a parent menu.
3021
+ * Groups only add a visual heading: they are never clickable and never open
3022
+ * a third level (the sidebar supports exactly one level of nesting).
3023
+ */
3024
+ interface ITNavigationSubItemGroup {
3025
+ /** Unique identifier for the group. Used for the React key and the heading id. */
3026
+ id: string;
3027
+ /** Heading text rendered above the group's items. */
3028
+ label: string;
3029
+ /** Sub-items belonging to this group. Nesting a group inside a group is not supported. */
3030
+ items: ITNavigationSubItem[];
3031
+ }
3032
+ /**
3033
+ * A submenu entry: either a plain {@link ITNavigationSubItem} or a titled
3034
+ * {@link ITNavigationSubItemGroup}. Discriminate with `"items" in entry`.
3035
+ */
3036
+ type ITNavigationSubItemEntry = ITNavigationSubItem | ITNavigationSubItemGroup;
2898
3037
  /** A top-level navigation item, optionally with sub-items. */
2899
3038
  interface ITNavigationItem {
2900
3039
  /** Unique identifier. */
@@ -2907,8 +3046,12 @@ interface ITNavigationItem {
2907
3046
  action?: () => void;
2908
3047
  /** Whether this item is currently active/highlighted. */
2909
3048
  isActive?: boolean;
2910
- /** Nested sub-navigation items (renders as expandable submenu). */
2911
- subitems?: ITNavigationSubItem[];
3049
+ /**
3050
+ * Nested sub-navigation entries (renders as an expandable submenu).
3051
+ * Each entry is either a plain sub-item or a titled group of sub-items.
3052
+ * The field `items` is reserved for {@link ITNavigationSubItemGroup}.
3053
+ */
3054
+ subitems?: ITNavigationSubItemEntry[];
2912
3055
  /** Badge text displayed on the item (e.g. notification count). */
2913
3056
  badge?: string;
2914
3057
  }
@@ -4017,4 +4160,4 @@ declare const resolveCssColor: (colorStr: string, palette?: ITThemePalette$1, is
4017
4160
  */
4018
4161
  declare const getContrastTextColor: (bgColor: string, palette?: ITThemePalette$1, isDarkMode?: boolean) => "text-white" | "text-slate-800";
4019
4162
 
4020
- export { type Column, type ColumnFilterMode, type ColumnFilterValue, type ColumnFilters, type FieldConfig, type FieldConfigV2, FileTypeEnum, ITAccordion, type ITAccordionItem, type ITAccordionProps, ITAlert, type ITAlertProps, ITAvatar, type ITAvatarProps, ITBadget, type ITBadgetProps, type ITBreadcrumbItem, ITBreadcrumbs, type ITBreadcrumbsProps, ITButton, type ITButtonProps, ITCalendar, type ITCalendarProps, ITCard, type ITCardProps, ITCheckbox, type ITCheckboxProps, ITChip, ITChipInput, type ITChipInputProps, type ITChipProps, ITConfirmDialog, type ITConfirmDialogProps, ITDataTable, type ITDataTableFetchParams, type ITDataTableProps, type ITDataTableResponse, ITDatePicker, type ITDatePickerProps, ITDialog, type ITDialogProps, ITDivider, type ITDividerProps, ITDrawer, type ITDrawerProps, ITDropdownMenu, type ITDropdownMenuItem, type ITDropdownMenuProps, ITDropfile, ITEmptyState, type ITEmptyStateProps, ITField, type ITFieldProps, ITFlex, type ITFlexProps, ITFormBuilder, type ITFormBuilderProps, ITFormHeader, type ITFormHeaderProps, ITGrid, type ITGridProps, ITImage, type ITImageProps, ITInput, type ITInputProps, ITLayout, type ITLayoutProps, ITLoader, type LoaderProps as ITLoaderProps, ITMaskedInput, type ITMaskedInputProps, ITMultiSelect, type ITMultiSelectOption, type ITMultiSelectProps, ITNavbar, type ITNavbarProps, type ITNavigationItem, type ITNavigationSubItem, ITPage, ITPageHeader, type ITPageHeaderProps, type ITPageProps, ITPagination, type ITPaginationProps, ITPopover, type ITPopoverProps, ITProgress, type ITProgressProps, ITRadioGroup, type ITRadioGroupProps, type ITRadioOption, ITSearchSelect, type ITSearchSelectProps, ITSearchTable, type ITSearchTableProps, ITSegmentedControl, type ITSegmentedControlProps, ITSelect, type ITSelectProps, ITSidebar, type ITSidebarProps, ITSkeleton, type ITSkeletonProps, ITSlideToggle, type ITSlideToggleProps, ITSlider, type ITSliderProps, ITStack, type ITStackProps, ITStatCard, type ITStatCardProps, ITStepper, type ITStepperProps, type ITTabItem, ITTable, type ITTableProps, ITTabs, type ITTabsProps, ITText, type ITTextProps, ITTextarea, type ITTextareaProps, type ITThemeConfig, type ITThemePalette$1 as ITThemePalette, ITThemeProvider, type ITThemeProviderProps, ITTimePicker, type ITTimePickerProps, ITToast, type ITToastProps, ITTripleFilter, type ITTripleFilterOption, type ITTripleFilterProps, ITWysiwyg, type ITWysiwygProps, type TableDensity, UploadStatus, type UseTableStateOptions, type UseTableStateResult, createValidationSchema, getContrastTextColor, isLightColor, resolveCssColor, useClickOutside, useDebouncedSearch, useEditableRow, useFloatingPanel, useITTheme, useITThemeSafe, useTableState };
4163
+ export { type Column, type ColumnFilterMode, type ColumnFilterValue, type ColumnFilters, type FieldConfig, type FieldConfigV2, FileTypeEnum, ITAccordion, type ITAccordionItem, type ITAccordionProps, ITAlert, type ITAlertProps, ITAvatar, type ITAvatarProps, ITBadget, type ITBadgetProps, type ITBreadcrumbItem, ITBreadcrumbs, type ITBreadcrumbsProps, ITButton, type ITButtonProps, ITCalendar, type ITCalendarProps, ITCard, type ITCardProps, ITCheckbox, type ITCheckboxProps, ITChip, ITChipInput, type ITChipInputProps, type ITChipProps, ITConfirmDialog, type ITConfirmDialogProps, ITDataTable, type ITDataTableFetchParams, type ITDataTableProps, type ITDataTableResponse, ITDatePicker, type ITDatePickerProps, ITDialog, type ITDialogProps, ITDivider, type ITDividerProps, ITDrawer, type ITDrawerProps, ITDropdownMenu, type ITDropdownMenuItem, type ITDropdownMenuProps, ITDropfile, ITEmptyState, type ITEmptyStateProps, ITField, type ITFieldProps, ITFlex, type ITFlexProps, ITFormBuilder, type ITFormBuilderProps, ITFormHeader, type ITFormHeaderProps, ITGrid, type ITGridProps, ITImage, type ITImageProps, ITInput, ITInputNumber, type ITInputNumberProps, type ITInputProps, ITLayout, type ITLayoutProps, ITLoader, type LoaderProps as ITLoaderProps, ITMaskedInput, type ITMaskedInputProps, ITMultiSelect, type ITMultiSelectOption, type ITMultiSelectProps, ITNavbar, type ITNavbarProps, type ITNavigationItem, type ITNavigationSubItem, type ITNavigationSubItemEntry, type ITNavigationSubItemGroup, ITPage, ITPageHeader, type ITPageHeaderProps, type ITPageProps, ITPagination, type ITPaginationProps, ITPopover, type ITPopoverProps, ITProgress, type ITProgressProps, ITRadioGroup, type ITRadioGroupProps, type ITRadioOption, ITSearchSelect, type ITSearchSelectProps, ITSearchTable, type ITSearchTableProps, ITSegmentedControl, type ITSegmentedControlProps, ITSelect, type ITSelectProps, ITSidebar, type ITSidebarProps, ITSkeleton, type ITSkeletonProps, ITSlideToggle, type ITSlideToggleProps, ITSlider, type ITSliderProps, ITStack, type ITStackProps, ITStatCard, type ITStatCardProps, ITStepper, type ITStepperProps, type ITTabItem, ITTable, type ITTableProps, ITTabs, type ITTabsProps, ITText, type ITTextProps, ITTextarea, type ITTextareaProps, type ITThemeConfig, type ITThemePalette$1 as ITThemePalette, ITThemeProvider, type ITThemeProviderProps, ITTimePicker, type ITTimePickerProps, ITToast, type ITToastProps, ITTripleFilter, type ITTripleFilterOption, type ITTripleFilterProps, ITWysiwyg, type ITWysiwygProps, type TableDensity, UploadStatus, type UseTableStateOptions, type UseTableStateResult, createValidationSchema, getContrastTextColor, isLightColor, resolveCssColor, useClickOutside, useDebouncedSearch, useEditableRow, useFloatingPanel, useITTheme, useITThemeSafe, useTableState };
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as Yup from 'yup';
2
2
  import * as React$1 from 'react';
3
- import React__default, { RefObject, CSSProperties, ReactNode, ElementType, FocusEvent, HTMLAttributes } from 'react';
3
+ import React__default, { RefObject, CSSProperties, ReactNode, ElementType, ChangeEvent, FocusEvent, KeyboardEvent, HTMLAttributes } from 'react';
4
4
  import * as react_jsx_runtime from 'react/jsx-runtime';
5
5
 
6
6
  declare const useClickOutside: (ref: React.RefObject<HTMLElement>, callback: () => void) => void;
@@ -1218,6 +1218,23 @@ interface Column<T = any> {
1218
1218
  * @default false
1219
1219
  */
1220
1220
  truncate?: boolean;
1221
+ /**
1222
+ * Pins this column to a horizontal edge so it stays visible while the table
1223
+ * scrolls sideways.
1224
+ *
1225
+ * - `"left"` — freezes the column flush to the left edge.
1226
+ * - `"right"` — freezes the column flush to the right edge.
1227
+ *
1228
+ * Omit to leave the column unpinned. When more than one column shares a side,
1229
+ * sticky offsets accumulate from each preceding pinned column's `width` /
1230
+ * `minWidth`; a column without a pixel width resolves to `0px`, so declare a
1231
+ * pixel `width` on every pinned column of that side to avoid overlap. The
1232
+ * pinned cell renders an opaque background (row background + row hover) and a
1233
+ * 1px separator shadow on its frozen edge.
1234
+ *
1235
+ * @default undefined (column not pinned)
1236
+ */
1237
+ pinned?: "left" | "right";
1221
1238
  }
1222
1239
  interface ITTableProps<T> {
1223
1240
  /** Column definitions: key, label, type, sortable behavior, filters, and custom rendering. */
@@ -2197,6 +2214,11 @@ interface ITInputProps {
2197
2214
  label?: string;
2198
2215
  /** Enable currency formatting for number inputs (MX locale) */
2199
2216
  currencyFormat?: boolean;
2217
+ /**
2218
+ * Decimal places allowed for number inputs. `0` restricts to integers.
2219
+ * @default currencyFormat ? 2 : 0
2220
+ */
2221
+ decimals?: number;
2200
2222
  /** Placeholder text */
2201
2223
  placeholder?: string;
2202
2224
  /** Current input value */
@@ -2284,7 +2306,106 @@ interface ITInputProps {
2284
2306
  * maxLength={10}
2285
2307
  * />
2286
2308
  */
2287
- declare function ITInput({ name, type, label, placeholder, value, onChange, onBlur, disabled, className, containerClassName, labelClassName, touched, error, formatNumber, required, autoFocus, onClick, onKeyDown, iconLeft, iconRight, maxLength, minLength, checked, showHintLength, currencyFormat, rows, min, max, readOnly, focusContent, size }: ITInputProps): react_jsx_runtime.JSX.Element;
2309
+ declare function ITInput({ name, type, label, placeholder, value, onChange, onBlur, disabled, className, containerClassName, labelClassName, touched, error, formatNumber, required, autoFocus, onClick, onKeyDown, iconLeft, iconRight, maxLength, minLength, checked, showHintLength, currencyFormat, rows, min, max, readOnly, focusContent, size, decimals }: ITInputProps): react_jsx_runtime.JSX.Element;
2310
+
2311
+ /**
2312
+ * Props for the ITInputNumber component.
2313
+ *
2314
+ * Same surface as `ITInput` for numeric entry, but the value is always
2315
+ * formatted as currency (thousand separators + decimals) and emitted as a
2316
+ * real `number` instead of a string.
2317
+ */
2318
+ interface ITInputNumberProps {
2319
+ /** Field name used for form identification. */
2320
+ name: string;
2321
+ /** Current numeric value. Pass `null`/`undefined` for "empty". */
2322
+ value?: number | null;
2323
+ /**
2324
+ * Called with the parsed value on every change.
2325
+ * Receives `undefined` when the field is empty, plus the original input event.
2326
+ */
2327
+ onChange: (value: number | undefined, event: ChangeEvent<HTMLInputElement>) => void;
2328
+ /**
2329
+ * Called on blur with the parsed (and min/max clamped) value, plus the
2330
+ * original focus event.
2331
+ */
2332
+ onBlur?: (value: number | undefined, event: FocusEvent<HTMLInputElement>) => void;
2333
+ /** Number of decimal places allowed. `0` restricts to integers. @default 2 */
2334
+ decimals?: number;
2335
+ /** Text prefix rendered inside the field, e.g. `"$"`. Ignored when `iconLeft` is set. */
2336
+ prefix?: string;
2337
+ /** Label displayed above the input. */
2338
+ label?: string;
2339
+ /** Placeholder text. */
2340
+ placeholder?: string;
2341
+ /** Minimum numeric value. Values below are clamped on blur. */
2342
+ min?: number;
2343
+ /** Maximum numeric value. Values above are clamped on blur. */
2344
+ max?: number;
2345
+ /** Size preset: "sm" | "md" | "lg". @default "md" */
2346
+ size?: SizesTypes;
2347
+ /** Disable the input. @default false */
2348
+ disabled?: boolean;
2349
+ /** Render the input in read-only mode. @default false */
2350
+ readOnly?: boolean;
2351
+ /** Mark the field as required. @default false */
2352
+ required?: boolean;
2353
+ /** Whether the field has been touched by the user. */
2354
+ touched?: boolean;
2355
+ /** Validation error. Pass `true` for a generic message, or a string for a custom one. */
2356
+ error?: string | boolean;
2357
+ /** Icon element rendered on the left side of the input. Takes precedence over `prefix`. */
2358
+ iconLeft?: ReactNode;
2359
+ /** Icon element rendered on the right side of the input. */
2360
+ iconRight?: ReactNode;
2361
+ /** Additional CSS classes for the outer container. */
2362
+ containerClassName?: string;
2363
+ /** Additional CSS classes for the label. */
2364
+ labelClassName?: string;
2365
+ /** Additional CSS classes for the input element. */
2366
+ className?: string;
2367
+ /** Auto-focus the input on mount. @default false */
2368
+ autoFocus?: boolean;
2369
+ /** Select all content on click. @default false */
2370
+ focusContent?: boolean;
2371
+ /** Keydown handler for the underlying input. */
2372
+ onKeyDown?: (event: KeyboardEvent<HTMLInputElement>) => void;
2373
+ }
2374
+
2375
+ /**
2376
+ * Numeric field that always renders currency-style formatting (thousand
2377
+ * separators + fixed decimals) and emits a real `number`.
2378
+ *
2379
+ * Built on top of `ITInput`: it is the same field, but `onChange`/`onBlur`
2380
+ * already receive the parsed value, so consumers can do math directly instead
2381
+ * of converting strings first.
2382
+ *
2383
+ * @example
2384
+ * ```tsx
2385
+ * <ITInputNumber
2386
+ * name="amount"
2387
+ * label="Monto"
2388
+ * value={amount}
2389
+ * prefix="$"
2390
+ * onChange={(value) => setAmount(value)}
2391
+ * />
2392
+ * ```
2393
+ *
2394
+ * @example
2395
+ * ```tsx
2396
+ * // Enteros (sin decimales) con límites
2397
+ * <ITInputNumber
2398
+ * name="qty"
2399
+ * label="Cantidad"
2400
+ * decimals={0}
2401
+ * min={1}
2402
+ * max={99}
2403
+ * value={qty}
2404
+ * onChange={(value) => setQty(value)}
2405
+ * />
2406
+ * ```
2407
+ */
2408
+ declare function ITInputNumber({ value, onChange, onBlur, decimals, prefix, iconLeft, ...rest }: ITInputNumberProps): react_jsx_runtime.JSX.Element;
2288
2409
 
2289
2410
  /** Represents a navigation item in the sidebar. */
2290
2411
  interface ITNavigationItem$1 {
@@ -2895,6 +3016,24 @@ interface ITNavigationSubItem {
2895
3016
  /** Whether this sub-item is currently active/highlighted. */
2896
3017
  isActive?: boolean;
2897
3018
  }
3019
+ /**
3020
+ * A titled group of sub-navigation items rendered under a parent menu.
3021
+ * Groups only add a visual heading: they are never clickable and never open
3022
+ * a third level (the sidebar supports exactly one level of nesting).
3023
+ */
3024
+ interface ITNavigationSubItemGroup {
3025
+ /** Unique identifier for the group. Used for the React key and the heading id. */
3026
+ id: string;
3027
+ /** Heading text rendered above the group's items. */
3028
+ label: string;
3029
+ /** Sub-items belonging to this group. Nesting a group inside a group is not supported. */
3030
+ items: ITNavigationSubItem[];
3031
+ }
3032
+ /**
3033
+ * A submenu entry: either a plain {@link ITNavigationSubItem} or a titled
3034
+ * {@link ITNavigationSubItemGroup}. Discriminate with `"items" in entry`.
3035
+ */
3036
+ type ITNavigationSubItemEntry = ITNavigationSubItem | ITNavigationSubItemGroup;
2898
3037
  /** A top-level navigation item, optionally with sub-items. */
2899
3038
  interface ITNavigationItem {
2900
3039
  /** Unique identifier. */
@@ -2907,8 +3046,12 @@ interface ITNavigationItem {
2907
3046
  action?: () => void;
2908
3047
  /** Whether this item is currently active/highlighted. */
2909
3048
  isActive?: boolean;
2910
- /** Nested sub-navigation items (renders as expandable submenu). */
2911
- subitems?: ITNavigationSubItem[];
3049
+ /**
3050
+ * Nested sub-navigation entries (renders as an expandable submenu).
3051
+ * Each entry is either a plain sub-item or a titled group of sub-items.
3052
+ * The field `items` is reserved for {@link ITNavigationSubItemGroup}.
3053
+ */
3054
+ subitems?: ITNavigationSubItemEntry[];
2912
3055
  /** Badge text displayed on the item (e.g. notification count). */
2913
3056
  badge?: string;
2914
3057
  }
@@ -4017,4 +4160,4 @@ declare const resolveCssColor: (colorStr: string, palette?: ITThemePalette$1, is
4017
4160
  */
4018
4161
  declare const getContrastTextColor: (bgColor: string, palette?: ITThemePalette$1, isDarkMode?: boolean) => "text-white" | "text-slate-800";
4019
4162
 
4020
- export { type Column, type ColumnFilterMode, type ColumnFilterValue, type ColumnFilters, type FieldConfig, type FieldConfigV2, FileTypeEnum, ITAccordion, type ITAccordionItem, type ITAccordionProps, ITAlert, type ITAlertProps, ITAvatar, type ITAvatarProps, ITBadget, type ITBadgetProps, type ITBreadcrumbItem, ITBreadcrumbs, type ITBreadcrumbsProps, ITButton, type ITButtonProps, ITCalendar, type ITCalendarProps, ITCard, type ITCardProps, ITCheckbox, type ITCheckboxProps, ITChip, ITChipInput, type ITChipInputProps, type ITChipProps, ITConfirmDialog, type ITConfirmDialogProps, ITDataTable, type ITDataTableFetchParams, type ITDataTableProps, type ITDataTableResponse, ITDatePicker, type ITDatePickerProps, ITDialog, type ITDialogProps, ITDivider, type ITDividerProps, ITDrawer, type ITDrawerProps, ITDropdownMenu, type ITDropdownMenuItem, type ITDropdownMenuProps, ITDropfile, ITEmptyState, type ITEmptyStateProps, ITField, type ITFieldProps, ITFlex, type ITFlexProps, ITFormBuilder, type ITFormBuilderProps, ITFormHeader, type ITFormHeaderProps, ITGrid, type ITGridProps, ITImage, type ITImageProps, ITInput, type ITInputProps, ITLayout, type ITLayoutProps, ITLoader, type LoaderProps as ITLoaderProps, ITMaskedInput, type ITMaskedInputProps, ITMultiSelect, type ITMultiSelectOption, type ITMultiSelectProps, ITNavbar, type ITNavbarProps, type ITNavigationItem, type ITNavigationSubItem, ITPage, ITPageHeader, type ITPageHeaderProps, type ITPageProps, ITPagination, type ITPaginationProps, ITPopover, type ITPopoverProps, ITProgress, type ITProgressProps, ITRadioGroup, type ITRadioGroupProps, type ITRadioOption, ITSearchSelect, type ITSearchSelectProps, ITSearchTable, type ITSearchTableProps, ITSegmentedControl, type ITSegmentedControlProps, ITSelect, type ITSelectProps, ITSidebar, type ITSidebarProps, ITSkeleton, type ITSkeletonProps, ITSlideToggle, type ITSlideToggleProps, ITSlider, type ITSliderProps, ITStack, type ITStackProps, ITStatCard, type ITStatCardProps, ITStepper, type ITStepperProps, type ITTabItem, ITTable, type ITTableProps, ITTabs, type ITTabsProps, ITText, type ITTextProps, ITTextarea, type ITTextareaProps, type ITThemeConfig, type ITThemePalette$1 as ITThemePalette, ITThemeProvider, type ITThemeProviderProps, ITTimePicker, type ITTimePickerProps, ITToast, type ITToastProps, ITTripleFilter, type ITTripleFilterOption, type ITTripleFilterProps, ITWysiwyg, type ITWysiwygProps, type TableDensity, UploadStatus, type UseTableStateOptions, type UseTableStateResult, createValidationSchema, getContrastTextColor, isLightColor, resolveCssColor, useClickOutside, useDebouncedSearch, useEditableRow, useFloatingPanel, useITTheme, useITThemeSafe, useTableState };
4163
+ export { type Column, type ColumnFilterMode, type ColumnFilterValue, type ColumnFilters, type FieldConfig, type FieldConfigV2, FileTypeEnum, ITAccordion, type ITAccordionItem, type ITAccordionProps, ITAlert, type ITAlertProps, ITAvatar, type ITAvatarProps, ITBadget, type ITBadgetProps, type ITBreadcrumbItem, ITBreadcrumbs, type ITBreadcrumbsProps, ITButton, type ITButtonProps, ITCalendar, type ITCalendarProps, ITCard, type ITCardProps, ITCheckbox, type ITCheckboxProps, ITChip, ITChipInput, type ITChipInputProps, type ITChipProps, ITConfirmDialog, type ITConfirmDialogProps, ITDataTable, type ITDataTableFetchParams, type ITDataTableProps, type ITDataTableResponse, ITDatePicker, type ITDatePickerProps, ITDialog, type ITDialogProps, ITDivider, type ITDividerProps, ITDrawer, type ITDrawerProps, ITDropdownMenu, type ITDropdownMenuItem, type ITDropdownMenuProps, ITDropfile, ITEmptyState, type ITEmptyStateProps, ITField, type ITFieldProps, ITFlex, type ITFlexProps, ITFormBuilder, type ITFormBuilderProps, ITFormHeader, type ITFormHeaderProps, ITGrid, type ITGridProps, ITImage, type ITImageProps, ITInput, ITInputNumber, type ITInputNumberProps, type ITInputProps, ITLayout, type ITLayoutProps, ITLoader, type LoaderProps as ITLoaderProps, ITMaskedInput, type ITMaskedInputProps, ITMultiSelect, type ITMultiSelectOption, type ITMultiSelectProps, ITNavbar, type ITNavbarProps, type ITNavigationItem, type ITNavigationSubItem, type ITNavigationSubItemEntry, type ITNavigationSubItemGroup, ITPage, ITPageHeader, type ITPageHeaderProps, type ITPageProps, ITPagination, type ITPaginationProps, ITPopover, type ITPopoverProps, ITProgress, type ITProgressProps, ITRadioGroup, type ITRadioGroupProps, type ITRadioOption, ITSearchSelect, type ITSearchSelectProps, ITSearchTable, type ITSearchTableProps, ITSegmentedControl, type ITSegmentedControlProps, ITSelect, type ITSelectProps, ITSidebar, type ITSidebarProps, ITSkeleton, type ITSkeletonProps, ITSlideToggle, type ITSlideToggleProps, ITSlider, type ITSliderProps, ITStack, type ITStackProps, ITStatCard, type ITStatCardProps, ITStepper, type ITStepperProps, type ITTabItem, ITTable, type ITTableProps, ITTabs, type ITTabsProps, ITText, type ITTextProps, ITTextarea, type ITTextareaProps, type ITThemeConfig, type ITThemePalette$1 as ITThemePalette, ITThemeProvider, type ITThemeProviderProps, ITTimePicker, type ITTimePickerProps, ITToast, type ITToastProps, ITTripleFilter, type ITTripleFilterOption, type ITTripleFilterProps, ITWysiwyg, type ITWysiwygProps, type TableDensity, UploadStatus, type UseTableStateOptions, type UseTableStateResult, createValidationSchema, getContrastTextColor, isLightColor, resolveCssColor, useClickOutside, useDebouncedSearch, useEditableRow, useFloatingPanel, useITTheme, useITThemeSafe, useTableState };