@axzydev/axzy_ui_system 1.2.1 → 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (202) hide show
  1. package/dist/index.css +82 -1
  2. package/dist/index.css.map +1 -1
  3. package/package.json +2 -2
  4. package/src/App.tsx +354 -0
  5. package/src/assets/logo.png +0 -0
  6. package/src/assets/react.svg +1 -0
  7. package/src/components/alert/alert.props.ts +13 -0
  8. package/src/components/alert/alert.stories.tsx +41 -0
  9. package/src/components/alert/alert.tsx +53 -0
  10. package/src/components/avatar/avatar.props.ts +14 -0
  11. package/src/components/avatar/avatar.stories.tsx +46 -0
  12. package/src/components/avatar/avatar.tsx +53 -0
  13. package/src/components/badget/badget.props.ts +12 -0
  14. package/src/components/badget/badget.stories.tsx +76 -0
  15. package/src/components/badget/badget.tsx +61 -0
  16. package/src/components/breadcrumbs/breadcrumbs.props.ts +13 -0
  17. package/src/components/breadcrumbs/breadcrumbs.stories.tsx +21 -0
  18. package/src/components/breadcrumbs/breadcrumbs.tsx +34 -0
  19. package/src/components/button/button.props.ts +18 -0
  20. package/src/components/button/button.stories.tsx +174 -0
  21. package/src/components/button/button.tsx +117 -0
  22. package/src/components/calendar/calendar.props.ts +33 -0
  23. package/src/components/calendar/calendar.stories.tsx +91 -0
  24. package/src/components/calendar/calendar.tsx +608 -0
  25. package/src/components/calendar/index.ts +3 -0
  26. package/src/components/card/card.props.ts +13 -0
  27. package/src/components/card/card.stories.tsx +58 -0
  28. package/src/components/card/card.tsx +79 -0
  29. package/src/components/checkbox/checkbox.props.ts +11 -0
  30. package/src/components/checkbox/checkbox.stories.tsx +54 -0
  31. package/src/components/checkbox/checkbox.tsx +52 -0
  32. package/src/components/confirm-dialog/confirm-dialog.props.ts +14 -0
  33. package/src/components/confirm-dialog/confirm-dialog.stories.tsx +33 -0
  34. package/src/components/confirm-dialog/confirm-dialog.tsx +45 -0
  35. package/src/components/data-table/ITDataTable.stories.tsx +213 -0
  36. package/src/components/data-table/dataTable.props.ts +69 -0
  37. package/src/components/data-table/dataTable.tsx +313 -0
  38. package/src/components/date-picker/date-picker.props.ts +30 -0
  39. package/src/components/date-picker/date-picker.stories.tsx +90 -0
  40. package/src/components/date-picker/datePicker.tsx +307 -0
  41. package/src/components/dialog/dialog.props.ts +9 -0
  42. package/src/components/dialog/dialog.stories.tsx +80 -0
  43. package/src/components/dialog/dialog.tsx +88 -0
  44. package/src/components/divider/divider.props.ts +8 -0
  45. package/src/components/divider/divider.stories.tsx +34 -0
  46. package/src/components/divider/divider.tsx +21 -0
  47. package/src/components/drawer/drawer.props.ts +14 -0
  48. package/src/components/drawer/drawer.stories.tsx +41 -0
  49. package/src/components/drawer/drawer.tsx +53 -0
  50. package/src/components/dropfile/dropfile.stories.tsx +75 -0
  51. package/src/components/dropfile/dropfile.tsx +407 -0
  52. package/src/components/empty-state/empty-state.props.ts +9 -0
  53. package/src/components/empty-state/empty-state.stories.tsx +20 -0
  54. package/src/components/empty-state/empty-state.tsx +21 -0
  55. package/src/components/flex/flex.props.ts +22 -0
  56. package/src/components/flex/flex.stories.tsx +71 -0
  57. package/src/components/flex/flex.tsx +79 -0
  58. package/src/components/form-builder/fieldRenderer.tsx +218 -0
  59. package/src/components/form-builder/formBuilder.context.tsx +70 -0
  60. package/src/components/form-builder/formBuilder.props.ts +43 -0
  61. package/src/components/form-builder/formBuilder.stories.tsx +317 -0
  62. package/src/components/form-builder/formBuilder.tsx +186 -0
  63. package/src/components/form-builder/useFormBuilder.ts +80 -0
  64. package/src/components/form-header/form-header.props.ts +5 -0
  65. package/src/components/form-header/form-header.tsx +38 -0
  66. package/src/components/grid/grid.props.ts +17 -0
  67. package/src/components/grid/grid.stories.tsx +72 -0
  68. package/src/components/grid/grid.tsx +69 -0
  69. package/src/components/image/image.props.ts +7 -0
  70. package/src/components/image/image.tsx +38 -0
  71. package/src/components/input/input.props.ts +49 -0
  72. package/src/components/input/input.stories.tsx +115 -0
  73. package/src/components/input/input.tsx +615 -0
  74. package/src/components/layout/layout.props.ts +10 -0
  75. package/src/components/layout/layout.stories.tsx +114 -0
  76. package/src/components/layout/layout.tsx +80 -0
  77. package/src/components/loader/loader.props.ts +8 -0
  78. package/src/components/loader/loader.stories.tsx +105 -0
  79. package/src/components/loader/loader.tsx +108 -0
  80. package/src/components/navbar/navbar.props.ts +37 -0
  81. package/src/components/navbar/navbar.tsx +328 -0
  82. package/src/components/page/page.props.ts +19 -0
  83. package/src/components/page/page.stories.tsx +98 -0
  84. package/src/components/page/page.tsx +90 -0
  85. package/src/components/page-header/page-header.props.ts +11 -0
  86. package/src/components/page-header/page-header.stories.tsx +61 -0
  87. package/src/components/page-header/page-header.tsx +62 -0
  88. package/src/components/pagination/pagination.props.ts +53 -0
  89. package/src/components/pagination/pagination.stories.tsx +111 -0
  90. package/src/components/pagination/pagination.tsx +241 -0
  91. package/src/components/popover/popover.props.ts +12 -0
  92. package/src/components/popover/popover.stories.tsx +25 -0
  93. package/src/components/popover/popover.tsx +45 -0
  94. package/src/components/progress/progress.props.ts +12 -0
  95. package/src/components/progress/progress.stories.tsx +40 -0
  96. package/src/components/progress/progress.tsx +52 -0
  97. package/src/components/radio/radio.props.ts +16 -0
  98. package/src/components/radio/radio.stories.tsx +50 -0
  99. package/src/components/radio/radio.tsx +58 -0
  100. package/src/components/search-select/index.ts +2 -0
  101. package/src/components/search-select/search-select.props.ts +46 -0
  102. package/src/components/search-select/search-select.stories.tsx +129 -0
  103. package/src/components/search-select/search-select.tsx +229 -0
  104. package/src/components/searchTable/components/EditableCell.tsx +149 -0
  105. package/src/components/searchTable/components/PaginationControls.tsx +86 -0
  106. package/src/components/searchTable/components/PaginationInfo.tsx +20 -0
  107. package/src/components/searchTable/components/SearchAndSortBar.tsx +53 -0
  108. package/src/components/searchTable/components/SearchInput.tsx +33 -0
  109. package/src/components/searchTable/components/SortButton.tsx +50 -0
  110. package/src/components/searchTable/components/TableEmptyState.tsx +22 -0
  111. package/src/components/searchTable/components/TableHeader.tsx +35 -0
  112. package/src/components/searchTable/components/TableHeaderCell.tsx +43 -0
  113. package/src/components/searchTable/components/TableRow.tsx +144 -0
  114. package/src/components/searchTable/searchTable.props.ts +56 -0
  115. package/src/components/searchTable/searchTable.tsx +187 -0
  116. package/src/components/segmented-control/segmented-control.props.ts +18 -0
  117. package/src/components/segmented-control/segmented-control.stories.tsx +63 -0
  118. package/src/components/segmented-control/segmented-control.tsx +52 -0
  119. package/src/components/select/select.props.ts +25 -0
  120. package/src/components/select/select.stories.tsx +86 -0
  121. package/src/components/select/select.tsx +150 -0
  122. package/src/components/sidebar/sidebar.props.ts +28 -0
  123. package/src/components/sidebar/sidebar.stories.tsx +117 -0
  124. package/src/components/sidebar/sidebar.tsx +313 -0
  125. package/src/components/skeleton/skeleton.props.ts +12 -0
  126. package/src/components/skeleton/skeleton.stories.tsx +30 -0
  127. package/src/components/skeleton/skeleton.tsx +45 -0
  128. package/src/components/slide/slide.props.ts +45 -0
  129. package/src/components/slide/slide.stories.tsx +121 -0
  130. package/src/components/slide/slide.tsx +109 -0
  131. package/src/components/slider/slider.props.ts +10 -0
  132. package/src/components/slider/slider.stories.tsx +30 -0
  133. package/src/components/slider/slider.tsx +49 -0
  134. package/src/components/stack/stack.props.ts +19 -0
  135. package/src/components/stack/stack.stories.tsx +79 -0
  136. package/src/components/stack/stack.tsx +79 -0
  137. package/src/components/stat-card/stat-card.props.ts +13 -0
  138. package/src/components/stat-card/stat-card.stories.tsx +41 -0
  139. package/src/components/stat-card/stat-card.tsx +44 -0
  140. package/src/components/stepper/stepper.css +26 -0
  141. package/src/components/stepper/stepper.props.ts +29 -0
  142. package/src/components/stepper/stepper.stories.tsx +155 -0
  143. package/src/components/stepper/stepper.tsx +227 -0
  144. package/src/components/table/table.props.ts +43 -0
  145. package/src/components/table/table.stories.tsx +189 -0
  146. package/src/components/table/table.tsx +376 -0
  147. package/src/components/tabs/tabs.props.ts +18 -0
  148. package/src/components/tabs/tabs.stories.tsx +32 -0
  149. package/src/components/tabs/tabs.tsx +74 -0
  150. package/src/components/text/text.props.ts +9 -0
  151. package/src/components/text/text.tsx +20 -0
  152. package/src/components/textarea/textarea.props.ts +15 -0
  153. package/src/components/textarea/textarea.stories.tsx +27 -0
  154. package/src/components/textarea/textarea.tsx +55 -0
  155. package/src/components/theme-provider/themeProvider.props.ts +28 -0
  156. package/src/components/theme-provider/themeProvider.tsx +1854 -0
  157. package/src/components/time-picker/timePicker.props.ts +16 -0
  158. package/src/components/time-picker/timePicker.stories.tsx +131 -0
  159. package/src/components/time-picker/timePicker.tsx +317 -0
  160. package/src/components/toast/toast.css +32 -0
  161. package/src/components/toast/toast.props.ts +13 -0
  162. package/src/components/toast/toast.stories.tsx +138 -0
  163. package/src/components/toast/toast.tsx +87 -0
  164. package/src/components/tooltip/tooltip.props.ts +11 -0
  165. package/src/components/tooltip/tooltip.stories.tsx +20 -0
  166. package/src/components/tooltip/tooltip.tsx +55 -0
  167. package/src/components/topbar/topbar.props.ts +21 -0
  168. package/src/components/topbar/topbar.stories.tsx +80 -0
  169. package/src/components/topbar/topbar.tsx +205 -0
  170. package/src/components/triple-filter/tripleFilter.props.ts +15 -0
  171. package/src/components/triple-filter/tripleFilter.stories.tsx +32 -0
  172. package/src/components/triple-filter/tripleFilter.tsx +50 -0
  173. package/src/hooks/useClickOutside.ts +21 -0
  174. package/src/hooks/useDebouncedSearch.ts +55 -0
  175. package/src/hooks/useEditableRow.ts +157 -0
  176. package/src/hooks/useTableState.ts +122 -0
  177. package/src/index.css +168 -0
  178. package/src/index.ts +165 -0
  179. package/src/main.tsx +9 -0
  180. package/src/showcases/DataShowcases.tsx +260 -0
  181. package/src/showcases/FeedbackShowcases.tsx +268 -0
  182. package/src/showcases/FormShowcases.tsx +1159 -0
  183. package/src/showcases/HomeShowcase.tsx +324 -0
  184. package/src/showcases/LayoutPrimitivesShowcases.tsx +569 -0
  185. package/src/showcases/NavigationShowcases.tsx +193 -0
  186. package/src/showcases/PageShowcases.tsx +207 -0
  187. package/src/showcases/ShowcaseLayout.tsx +139 -0
  188. package/src/showcases/StructureShowcases.tsx +152 -0
  189. package/src/types/badget.types.ts +37 -0
  190. package/src/types/button.types.ts +16 -0
  191. package/src/types/colors.types.ts +3 -0
  192. package/src/types/field.types.ts +103 -0
  193. package/src/types/formik.types.ts +15 -0
  194. package/src/types/input.types.ts +14 -0
  195. package/src/types/loader.types.ts +9 -0
  196. package/src/types/sizes.types.ts +1 -0
  197. package/src/types/table.types.ts +15 -0
  198. package/src/types/toast.types.ts +8 -0
  199. package/src/types/yup.types.ts +11 -0
  200. package/src/utils/color.utils.ts +99 -0
  201. package/src/utils/styles.ts +120 -0
  202. package/src/utils/table.utils.ts +10 -0
@@ -0,0 +1,157 @@
1
+ import { useCallback, useMemo, useRef, useState } from "react";
2
+ import * as yup from "yup";
3
+ import type { SearchColumn } from "../components/searchTable/searchTable.props";
4
+
5
+ interface UseEditableRowOptions<T> {
6
+ row: T;
7
+ columns: SearchColumn<T>[];
8
+ getNestedValue: (obj: unknown, path: string) => unknown;
9
+ validationSchema?: yup.ObjectSchema<any>;
10
+ }
11
+
12
+ interface UseEditableRowResult<T> {
13
+ editedRow: T;
14
+ errors: Record<string, string>;
15
+ isHovered: boolean;
16
+ setIsHovered: (v: boolean) => void;
17
+ hasErrors: boolean;
18
+ handleEdit: (onEdit?: (row: T) => void) => Promise<void>;
19
+ handleSave: (onSave?: (row: T) => void) => Promise<void>;
20
+ handleCancel: (onCancel?: () => void) => void;
21
+ handleChange: (key: string, value: any) => Promise<void>;
22
+ reset: () => void;
23
+ }
24
+
25
+ export function useEditableRow<T>({
26
+ row,
27
+ columns,
28
+ getNestedValue,
29
+ validationSchema,
30
+ }: UseEditableRowOptions<T>): UseEditableRowResult<T> {
31
+ const [isHovered, setIsHovered] = useState(false);
32
+ const [editedRow, setEditedRow] = useState<T>({ ...row });
33
+ const [errors, setErrors] = useState<Record<string, string>>({});
34
+ const rowRef = useRef(row);
35
+ rowRef.current = row;
36
+
37
+ const validateAll = useCallback(
38
+ async (rowData: T): Promise<Record<string, string>> => {
39
+ const newErrors: Record<string, string> = {};
40
+
41
+ if (validationSchema) {
42
+ try {
43
+ await validationSchema.validate(rowData, { abortEarly: false });
44
+ } catch (yupError) {
45
+ if (yupError instanceof yup.ValidationError) {
46
+ yupError.inner.forEach((error) => {
47
+ if (error.path) newErrors[error.path] = error.message;
48
+ });
49
+ }
50
+ }
51
+ }
52
+
53
+ columns.forEach((col) => {
54
+ if (col.editable && col.validation && !newErrors[col.key]) {
55
+ const value = getNestedValue(rowData, col.key);
56
+ const error = col.validation(value, rowData);
57
+ if (error) newErrors[col.key] = error;
58
+ }
59
+ });
60
+
61
+ return newErrors;
62
+ },
63
+ [columns, getNestedValue, validationSchema]
64
+ );
65
+
66
+ const handleEdit = useCallback(
67
+ async (onEdit?: (row: T) => void) => {
68
+ if (onEdit) {
69
+ onEdit(rowRef.current);
70
+ const clone = { ...rowRef.current };
71
+ setEditedRow(clone);
72
+ const initialErrors = await validateAll(clone);
73
+ setErrors(initialErrors);
74
+ }
75
+ },
76
+ [validateAll]
77
+ );
78
+
79
+ const handleSave = useCallback(
80
+ async (onSave?: (row: T) => void) => {
81
+ const finalErrors = await validateAll(editedRow);
82
+ if (Object.keys(finalErrors).length > 0) {
83
+ setErrors(finalErrors);
84
+ return;
85
+ }
86
+ if (onSave) onSave(editedRow);
87
+ },
88
+ [editedRow, validateAll]
89
+ );
90
+
91
+ const handleCancel = useCallback((onCancel?: () => void) => {
92
+ if (onCancel) onCancel();
93
+ setEditedRow({ ...rowRef.current });
94
+ setErrors({});
95
+ }, []);
96
+
97
+ const handleChange = useCallback(
98
+ async (key: string, value: any) => {
99
+ const column = columns.find((col) => col.key === key);
100
+ let processedValue = value;
101
+
102
+ if (column) {
103
+ switch (column.type) {
104
+ case "number":
105
+ processedValue =
106
+ value === "" || value === null ? null : Number(value);
107
+ break;
108
+ case "boolean":
109
+ if (value === "" || value === null || value === undefined) {
110
+ processedValue = false;
111
+ } else if (typeof value === "string") {
112
+ processedValue = value === "true" || value === "1";
113
+ } else {
114
+ processedValue = Boolean(value);
115
+ }
116
+ break;
117
+ case "date":
118
+ processedValue = value ? new Date(value).toISOString() : null;
119
+ break;
120
+ case "catalog":
121
+ processedValue = value ?? null;
122
+ break;
123
+ default:
124
+ processedValue = value ?? "";
125
+ break;
126
+ }
127
+ }
128
+
129
+ setEditedRow((prev) => {
130
+ const updated = { ...prev, [key]: processedValue };
131
+ validateAll(updated).then(setErrors);
132
+ return updated;
133
+ });
134
+ },
135
+ [columns, validateAll]
136
+ );
137
+
138
+ const reset = useCallback(() => {
139
+ setEditedRow({ ...rowRef.current });
140
+ setErrors({});
141
+ }, []);
142
+
143
+ const hasErrors = useMemo(() => Object.keys(errors).length > 0, [errors]);
144
+
145
+ return {
146
+ editedRow,
147
+ errors,
148
+ isHovered,
149
+ setIsHovered,
150
+ hasErrors,
151
+ handleEdit,
152
+ handleSave,
153
+ handleCancel,
154
+ handleChange,
155
+ reset,
156
+ };
157
+ }
@@ -0,0 +1,122 @@
1
+ import { useCallback, useMemo, useState } from "react";
2
+
3
+ interface SortConfig {
4
+ key: string;
5
+ direction: "asc" | "desc";
6
+ }
7
+
8
+ export interface UseTableStateOptions {
9
+ defaultItemsPerPage?: number;
10
+ initialSort?: SortConfig | null;
11
+ }
12
+
13
+ export interface UseTableStateResult {
14
+ currentPage: number;
15
+ itemsPerPage: number;
16
+ filters: Record<string, string | boolean | number>;
17
+ sortConfig: SortConfig | null;
18
+ totalPages: number;
19
+ setTotalPages: (pages: number) => void;
20
+ goToPage: (page: number) => void;
21
+ handleItemsPerPageChange: (value: number) => void;
22
+ handleFilterChange: (
23
+ key: string,
24
+ value: string | boolean | number | undefined
25
+ ) => void;
26
+ handleSort: (key: string, sortable?: boolean) => void;
27
+ resetPage: () => void;
28
+ clearFilters: () => void;
29
+ }
30
+
31
+ export function useTableState({
32
+ defaultItemsPerPage = 10,
33
+ initialSort = null,
34
+ }: UseTableStateOptions = {}): UseTableStateResult {
35
+ const [currentPage, setCurrentPage] = useState(1);
36
+ const [itemsPerPage, setItemsPerPage] = useState(defaultItemsPerPage);
37
+ const [filters, setFilters] = useState<
38
+ Record<string, string | boolean | number>
39
+ >({});
40
+ const [sortConfig, setSortConfig] = useState<SortConfig | null>(initialSort);
41
+ const [totalPages, setTotalPages] = useState(1);
42
+
43
+ const goToPage = useCallback(
44
+ (page: number) => {
45
+ if (page >= 1 && page <= totalPages) {
46
+ setCurrentPage(page);
47
+ }
48
+ },
49
+ [totalPages]
50
+ );
51
+
52
+ const handleItemsPerPageChange = useCallback((value: number) => {
53
+ setItemsPerPage(value);
54
+ setCurrentPage(1);
55
+ }, []);
56
+
57
+ const handleFilterChange = useCallback(
58
+ (key: string, value: string | boolean | number | undefined) => {
59
+ setFilters((prev) => {
60
+ if (value === undefined || value === null || value === "") {
61
+ const next = { ...prev };
62
+ delete next[key];
63
+ return next;
64
+ }
65
+ return { ...prev, [key]: value };
66
+ });
67
+ setCurrentPage(1);
68
+ },
69
+ []
70
+ );
71
+
72
+ const handleSort = useCallback((key: string, sortable?: boolean) => {
73
+ if (sortable === false) return;
74
+ setSortConfig((prev) => {
75
+ let direction: "asc" | "desc" = "asc";
76
+ if (prev?.key === key && prev.direction === "asc") {
77
+ direction = "desc";
78
+ }
79
+ return { key, direction };
80
+ });
81
+ setCurrentPage(1);
82
+ }, []);
83
+
84
+ const resetPage = useCallback(() => setCurrentPage(1), []);
85
+ const clearFilters = useCallback(() => {
86
+ setFilters({});
87
+ setCurrentPage(1);
88
+ }, []);
89
+
90
+ const stable = useMemo(
91
+ () => ({
92
+ currentPage,
93
+ itemsPerPage,
94
+ filters,
95
+ sortConfig,
96
+ totalPages,
97
+ setTotalPages,
98
+ goToPage,
99
+ handleItemsPerPageChange,
100
+ handleFilterChange,
101
+ handleSort,
102
+ resetPage,
103
+ clearFilters,
104
+ }),
105
+ [
106
+ currentPage,
107
+ itemsPerPage,
108
+ filters,
109
+ sortConfig,
110
+ totalPages,
111
+ setTotalPages,
112
+ goToPage,
113
+ handleItemsPerPageChange,
114
+ handleFilterChange,
115
+ handleSort,
116
+ resetPage,
117
+ clearFilters,
118
+ ]
119
+ );
120
+
121
+ return stable;
122
+ }
package/src/index.css ADDED
@@ -0,0 +1,168 @@
1
+ @variant dark (&:is(.dark &));
2
+
3
+ :root, :host {
4
+ --animate-fadeIn: fadeIn 0.5s ease-out forwards;
5
+ --animate-fade-in: fadeIn 0.5s ease-out forwards;
6
+
7
+ --color-primary-50: #eff6ff;
8
+ --color-primary-100: #dbeafe;
9
+ --color-primary-200: #bfdbfe;
10
+ --color-primary-300: #93c5fd;
11
+ --color-primary-400: #60a5fa;
12
+ --color-primary-500: #3b82f6;
13
+ --color-primary-600: #2563eb;
14
+ --color-primary-700: #1d4ed8;
15
+ --color-primary-800: #1e40af;
16
+ --color-primary-900: #1e3a8a;
17
+ --color-primary-950: #172554;
18
+
19
+ --color-secondary-50: #f8fafc;
20
+ --color-secondary-100: #f1f5f9;
21
+ --color-secondary-200: #e2e8f0;
22
+ --color-secondary-300: #cbd5e1;
23
+ --color-secondary-400: #94a3b8;
24
+ --color-secondary-500: #64748b;
25
+ --color-secondary-600: #475569;
26
+ --color-secondary-700: #334155;
27
+ --color-secondary-800: #1e293b;
28
+ --color-secondary-900: #0f172a;
29
+ --color-secondary-950: #020617;
30
+
31
+ --color-success-50: #ecfdf5;
32
+ --color-success-100: #d1fae5;
33
+ --color-success-200: #a7f3d0;
34
+ --color-success-300: #6ee7b7;
35
+ --color-success-400: #34d399;
36
+ --color-success-500: #10b981;
37
+ --color-success-600: #059669;
38
+ --color-success-700: #047857;
39
+ --color-success-800: #065f46;
40
+ --color-success-900: #064e3b;
41
+ --color-success-950: #022c22;
42
+
43
+ --color-danger-50: #fff1f2;
44
+ --color-danger-100: #ffe4e6;
45
+ --color-danger-200: #fecdd3;
46
+ --color-danger-300: #fda4af;
47
+ --color-danger-400: #fb7185;
48
+ --color-danger-500: #f43f5e;
49
+ --color-danger-600: #e11d48;
50
+ --color-danger-700: #be123c;
51
+ --color-danger-800: #9f1239;
52
+ --color-danger-900: #881337;
53
+ --color-danger-950: #4c0519;
54
+
55
+ --color-warning-50: #fffbeb;
56
+ --color-warning-100: #fef3c7;
57
+ --color-warning-200: #fde68a;
58
+ --color-warning-300: #fcd34d;
59
+ --color-warning-400: #fbbf24;
60
+ --color-warning-500: #f59e0b;
61
+ --color-warning-600: #d97706;
62
+ --color-warning-700: #b45309;
63
+ --color-warning-800: #92400e;
64
+ --color-warning-900: #78350f;
65
+ --color-warning-950: #451a03;
66
+
67
+ --color-purple-50: #f5f3ff;
68
+ --color-purple-100: #ede9fe;
69
+ --color-purple-200: #ddd6fe;
70
+ --color-purple-300: #c4b5fd;
71
+ --color-purple-400: #a78bfa;
72
+ --color-purple-500: #8b5cf6;
73
+ --color-purple-600: #7c3aed;
74
+ --color-purple-700: #6d28d9;
75
+ --color-purple-800: #5b21b6;
76
+ --color-purple-900: #4c1d95;
77
+ --color-purple-950: #2e1065;
78
+
79
+ --color-info-50: #f0f9ff;
80
+ --color-info-100: #e0f2fe;
81
+ --color-info-200: #bae6fd;
82
+ --color-info-300: #7dd3fc;
83
+ --color-info-400: #38bdf8;
84
+ --color-info-500: #0ea5e9;
85
+ --color-info-600: #0284c7;
86
+ --color-info-700: #0369a1;
87
+ --color-info-800: #075985;
88
+ --color-info-900: #0c4a6e;
89
+ --color-info-950: #082f49;
90
+ }
91
+
92
+ @keyframes fadeIn {
93
+ from { opacity: 0; transform: translateY(8px); }
94
+ to { opacity: 1; transform: translateY(0); }
95
+ }
96
+
97
+ .col-span-1 { grid-column: span 1 / span 1; }
98
+ .col-span-2 { grid-column: span 2 / span 2; }
99
+ .col-span-3 { grid-column: span 3 / span 3; }
100
+ .col-span-4 { grid-column: span 4 / span 4; }
101
+ .col-span-5 { grid-column: span 5 / span 5; }
102
+ .col-span-6 { grid-column: span 6 / span 6; }
103
+ .col-span-7 { grid-column: span 7 / span 7; }
104
+ .col-span-8 { grid-column: span 8 / span 8; }
105
+ .col-span-9 { grid-column: span 9 / span 9; }
106
+ .col-span-10 { grid-column: span 10 / span 10; }
107
+ .col-span-11 { grid-column: span 11 / span 11; }
108
+ .col-span-12 { grid-column: span 12 / span 12; }
109
+
110
+ @media (width >= 40rem) {
111
+ .sm\:col-span-1 { grid-column: span 1 / span 1; }
112
+ .sm\:col-span-2 { grid-column: span 2 / span 2; }
113
+ .sm\:col-span-3 { grid-column: span 3 / span 3; }
114
+ .sm\:col-span-4 { grid-column: span 4 / span 4; }
115
+ .sm\:col-span-5 { grid-column: span 5 / span 5; }
116
+ .sm\:col-span-6 { grid-column: span 6 / span 6; }
117
+ .sm\:col-span-7 { grid-column: span 7 / span 7; }
118
+ .sm\:col-span-8 { grid-column: span 8 / span 8; }
119
+ .sm\:col-span-9 { grid-column: span 9 / span 9; }
120
+ .sm\:col-span-10 { grid-column: span 10 / span 10; }
121
+ .sm\:col-span-11 { grid-column: span 11 / span 11; }
122
+ .sm\:col-span-12 { grid-column: span 12 / span 12; }
123
+ }
124
+
125
+ @media (width >= 48rem) {
126
+ .md\:col-span-1 { grid-column: span 1 / span 1; }
127
+ .md\:col-span-2 { grid-column: span 2 / span 2; }
128
+ .md\:col-span-3 { grid-column: span 3 / span 3; }
129
+ .md\:col-span-4 { grid-column: span 4 / span 4; }
130
+ .md\:col-span-5 { grid-column: span 5 / span 5; }
131
+ .md\:col-span-6 { grid-column: span 6 / span 6; }
132
+ .md\:col-span-7 { grid-column: span 7 / span 7; }
133
+ .md\:col-span-8 { grid-column: span 8 / span 8; }
134
+ .md\:col-span-9 { grid-column: span 9 / span 9; }
135
+ .md\:col-span-10 { grid-column: span 10 / span 10; }
136
+ .md\:col-span-11 { grid-column: span 11 / span 11; }
137
+ .md\:col-span-12 { grid-column: span 12 / span 12; }
138
+ }
139
+
140
+ @media (width >= 64rem) {
141
+ .lg\:col-span-1 { grid-column: span 1 / span 1; }
142
+ .lg\:col-span-2 { grid-column: span 2 / span 2; }
143
+ .lg\:col-span-3 { grid-column: span 3 / span 3; }
144
+ .lg\:col-span-4 { grid-column: span 4 / span 4; }
145
+ .lg\:col-span-5 { grid-column: span 5 / span 5; }
146
+ .lg\:col-span-6 { grid-column: span 6 / span 6; }
147
+ .lg\:col-span-7 { grid-column: span 7 / span 7; }
148
+ .lg\:col-span-8 { grid-column: span 8 / span 8; }
149
+ .lg\:col-span-9 { grid-column: span 9 / span 9; }
150
+ .lg\:col-span-10 { grid-column: span 10 / span 10; }
151
+ .lg\:col-span-11 { grid-column: span 11 / span 11; }
152
+ .lg\:col-span-12 { grid-column: span 12 / span 12; }
153
+ }
154
+
155
+ @media (width >= 80rem) {
156
+ .xl\:col-span-1 { grid-column: span 1 / span 1; }
157
+ .xl\:col-span-2 { grid-column: span 2 / span 2; }
158
+ .xl\:col-span-3 { grid-column: span 3 / span 3; }
159
+ .xl\:col-span-4 { grid-column: span 4 / span 4; }
160
+ .xl\:col-span-5 { grid-column: span 5 / span 5; }
161
+ .xl\:col-span-6 { grid-column: span 6 / span 6; }
162
+ .xl\:col-span-7 { grid-column: span 7 / span 7; }
163
+ .xl\:col-span-8 { grid-column: span 8 / span 8; }
164
+ .xl\:col-span-9 { grid-column: span 9 / span 9; }
165
+ .xl\:col-span-10 { grid-column: span 10 / span 10; }
166
+ .xl\:col-span-11 { grid-column: span 11 / span 11; }
167
+ .xl\:col-span-12 { grid-column: span 12 / span 12; }
168
+ }
package/src/index.ts ADDED
@@ -0,0 +1,165 @@
1
+ import "./index.css";
2
+
3
+ // HOOKS
4
+ import useClickOutside from "./hooks/useClickOutside";
5
+ import { useDebouncedSearch } from "./hooks/useDebouncedSearch";
6
+ import { useEditableRow } from "./hooks/useEditableRow";
7
+ import { useTableState, UseTableStateOptions, UseTableStateResult } from "./hooks/useTableState";
8
+
9
+ // COMPONENTES
10
+ import ITAlert from "./components/alert/alert";
11
+ import ITAvatar from "./components/avatar/avatar";
12
+ import ITBadget from "./components/badget/badget";
13
+ import ITBreadcrumbs from "./components/breadcrumbs/breadcrumbs";
14
+ import ITButton from "./components/button/button";
15
+ import ITCalendar from "./components/calendar/calendar";
16
+ import ITCard from "./components/card/card";
17
+ import ITCheckbox from "./components/checkbox/checkbox";
18
+ import ITConfirmDialog from "./components/confirm-dialog/confirm-dialog";
19
+ import ITDataTable from "./components/data-table/dataTable";
20
+ import ITDatePicker from "./components/date-picker/datePicker";
21
+ import ITDialog from "./components/dialog/dialog";
22
+ import ITDivider from "./components/divider/divider";
23
+ import ITDrawer from "./components/drawer/drawer";
24
+ import ITEmptyState from "./components/empty-state/empty-state";
25
+ import ITFlex from "./components/flex/flex";
26
+ import ITFormBuilder from "./components/form-builder/formBuilder";
27
+ import ITFormHeader from "./components/form-header/form-header";
28
+ import ITGrid from "./components/grid/grid";
29
+ import ITImage from "./components/image/image";
30
+ import ITInput from "./components/input/input";
31
+ import ITNavbar from "./components/navbar/navbar";
32
+ import ITPage from "./components/page/page";
33
+ import ITPageHeader from "./components/page-header/page-header";
34
+ import ITPagination from "./components/pagination/pagination";
35
+ import ITPopover from "./components/popover/popover";
36
+ import ITProgress from "./components/progress/progress";
37
+ import ITRadioGroup from "./components/radio/radio";
38
+ import ITSearchSelect from "./components/search-select/search-select";
39
+ import ITSelect from "./components/select/select";
40
+ import ITSearchTable from "./components/searchTable/searchTable";
41
+ import ITSegmentedControl from "./components/segmented-control/segmented-control";
42
+ import ITSidebar from "./components/sidebar/sidebar";
43
+ import ITSkeleton from "./components/skeleton/skeleton";
44
+ import ITSlideToggle from "./components/slide/slide";
45
+ import ITSlider from "./components/slider/slider";
46
+ import ITStack from "./components/stack/stack";
47
+ import ITStatCard from "./components/stat-card/stat-card";
48
+ import ITTable from "./components/table/table";
49
+ import ITText from "./components/text/text";
50
+ import ITTextarea from "./components/textarea/textarea";
51
+ import ITTabs from "./components/tabs/tabs";
52
+ import ITTripleFilter from "./components/triple-filter/tripleFilter";
53
+ import ITToast from "./components/toast/toast";
54
+
55
+ // PROPS
56
+ import type { ITAlertProps } from "./components/alert/alert.props";
57
+ import type { ITAvatarProps } from "./components/avatar/avatar.props";
58
+ import type { ITBadgetProps } from "./components/badget/badget.props";
59
+ import type { ITBreadcrumbsProps, ITBreadcrumbItem } from "./components/breadcrumbs/breadcrumbs.props";
60
+ import type { ITButtonProps } from "./components/button/button.props";
61
+ import type { ITCalendarProps } from "./components/calendar/calendar.props";
62
+ import type { ITCardProps } from "./components/card/card.props";
63
+ import type { ITCheckboxProps } from "./components/checkbox/checkbox.props";
64
+ import type { ITConfirmDialogProps } from "./components/confirm-dialog/confirm-dialog.props";
65
+ import type { ITDataTableFetchParams, ITDataTableProps, ITDataTableResponse } from "./components/data-table/dataTable.props";
66
+ import type { ITDatePickerProps } from "./components/date-picker/date-picker.props";
67
+ import type { ITDialogProps } from "./components/dialog/dialog.props";
68
+ import type { ITDividerProps } from "./components/divider/divider.props";
69
+ import type { ITDrawerProps } from "./components/drawer/drawer.props";
70
+ import type { ITEmptyStateProps } from "./components/empty-state/empty-state.props";
71
+ import type { ITFlexProps } from "./components/flex/flex.props";
72
+ import type { ITFormBuilderProps } from "./components/form-builder/formBuilder.props";
73
+ import type { ITFormHeaderProps } from "./components/form-header/form-header.props";
74
+ import type { ITGridProps } from "./components/grid/grid.props";
75
+ import type { ITImageProps } from "./components/image/image.props";
76
+ import type { ITInputProps } from "./components/input/input.props";
77
+ import type { ITNavbarProps } from "./components/navbar/navbar.props";
78
+ import type { ITPageProps } from "./components/page/page.props";
79
+ import type { ITPageHeaderProps } from "./components/page-header/page-header.props";
80
+ import type { ITPaginationProps } from "./components/pagination/pagination.props";
81
+ import type { ITPopoverProps } from "./components/popover/popover.props";
82
+ import type { ITProgressProps } from "./components/progress/progress.props";
83
+ import type { ITRadioGroupProps, ITRadioOption } from "./components/radio/radio.props";
84
+ import type { ITSearchSelectProps } from "./components/search-select/search-select.props";
85
+ import type { ITSelectProps } from "./components/select/select.props";
86
+ import type { ITSearchTableProps } from "./components/searchTable/searchTable.props";
87
+ import type { ITSegmentedControlProps } from "./components/segmented-control/segmented-control.props";
88
+ import type { ITSidebarProps, ITNavigationItem, ITNavigationSubItem } from "./components/sidebar/sidebar.props";
89
+ import type { ITSkeletonProps } from "./components/skeleton/skeleton.props";
90
+ import type { ITSlideToggleProps } from "./components/slide/slide.props";
91
+ import type { ITSliderProps } from "./components/slider/slider.props";
92
+ import type { ITStackProps } from "./components/stack/stack.props";
93
+ import type { ITStatCardProps } from "./components/stat-card/stat-card.props";
94
+ import type { ITTableProps, Column } from "./components/table/table.props";
95
+ import type { ITTextProps } from "./components/text/text.props";
96
+ import type { ITTextareaProps } from "./components/textarea/textarea.props";
97
+ import type { ITTabsProps, ITTabItem } from "./components/tabs/tabs.props";
98
+ import type { ITTripleFilterProps, ITTripleFilterOption } from "./components/triple-filter/tripleFilter.props";
99
+ import type { ITToastProps } from "./components/toast/toast.props";
100
+ import type { FieldConfig, FieldConfigV2 } from "./types/field.types";
101
+
102
+ // UTILS
103
+ import ITDropfile, { UploadStatus, FileTypeEnum } from "./components/dropfile/dropfile";
104
+ import ITLayout from "./components/layout/layout";
105
+ import { ITLayoutProps } from "./components/layout/layout.props";
106
+ import ITLoader from "./components/loader/loader";
107
+ import type { LoaderProps as ITLoaderProps } from "./components/loader/loader.props";
108
+ import ITStepper from "./components/stepper/stepper";
109
+ import type { ITStepperProps } from "./components/stepper/stepper.props";
110
+ import ITThemeProvider, { useITTheme, useITThemeSafe } from "./components/theme-provider/themeProvider";
111
+ import type { ITThemeProviderProps, ITThemePalette } from "./components/theme-provider/themeProvider.props";
112
+ import ITTimePicker from "./components/time-picker/timePicker";
113
+ import type { ITTimePickerProps } from "./components/time-picker/timePicker.props";
114
+ import type { ITThemeConfig } from "./theme/theme.types";
115
+ import { createValidationSchema } from "./types/yup.types";
116
+
117
+ import { getContrastTextColor, isLightColor, resolveCssColor } from "./utils/color.utils";
118
+
119
+ export {
120
+ // Hooks
121
+ useClickOutside, useDebouncedSearch, useEditableRow, useTableState,
122
+ createValidationSchema,
123
+ // Components
124
+ ITAlert, ITAvatar, ITBadget, ITBreadcrumbs, ITButton,
125
+ ITCalendar,
126
+ ITCard, ITCheckbox, ITConfirmDialog, ITDataTable, ITDatePicker,
127
+ ITDialog, ITDivider, ITDrawer,
128
+ ITDropfile, ITEmptyState, ITFlex, ITFormBuilder, ITFormHeader, ITGrid, ITImage, ITInput, ITLayout,
129
+ ITLoader, ITNavbar, ITPage, ITPageHeader, ITPagination, ITPopover, ITProgress,
130
+ ITRadioGroup, ITSelect, ITSearchSelect,
131
+ ITSearchTable,
132
+ ITSegmentedControl, ITSidebar, ITSkeleton, ITSlideToggle, ITSlider, ITStack, ITStatCard, ITStepper,
133
+ ITTable, ITTabs, ITText, ITTextarea, ITTripleFilter, ITThemeProvider,
134
+ useITTheme, useITThemeSafe, ITTimePicker, ITToast,
135
+ UploadStatus, FileTypeEnum,
136
+ getContrastTextColor, isLightColor, resolveCssColor
137
+ };
138
+
139
+ export type {
140
+ Column, FieldConfig,
141
+ FieldConfigV2,
142
+ ITAlertProps, ITAvatarProps, ITBadgetProps,
143
+ ITBreadcrumbItem, ITBreadcrumbsProps, ITButtonProps,
144
+ ITCalendarProps,
145
+ ITCardProps, ITCheckboxProps, ITConfirmDialogProps,
146
+ ITDataTableFetchParams, ITDataTableProps, ITDataTableResponse, ITDatePickerProps,
147
+ ITDialogProps, ITDividerProps, ITDrawerProps,
148
+ ITEmptyStateProps, ITFlexProps,
149
+ ITFormBuilderProps, ITFormHeaderProps,
150
+ ITGridProps, ITImageProps, ITInputProps,
151
+ ITLayoutProps, ITLoaderProps, ITNavbarProps,
152
+ ITPageProps, ITPageHeaderProps,
153
+ ITNavigationItem, ITNavigationSubItem,
154
+ ITPaginationProps, ITPopoverProps, ITProgressProps,
155
+ ITRadioGroupProps, ITRadioOption, ITSelectProps, ITSearchSelectProps,
156
+ ITSearchTableProps,
157
+ ITSegmentedControlProps, ITSidebarProps, ITSkeletonProps, ITSlideToggleProps, ITSliderProps,
158
+ ITStackProps, ITStatCardProps, ITStepperProps,
159
+ ITTableProps, ITTabsProps, ITTabItem, ITTextProps, ITTextareaProps,
160
+ ITTripleFilterProps, ITTripleFilterOption, ITThemeConfig, ITThemeProviderProps, ITThemePalette,
161
+ ITTimePickerProps, ITToastProps,
162
+ UseTableStateOptions, UseTableStateResult
163
+ };
164
+
165
+
package/src/main.tsx ADDED
@@ -0,0 +1,9 @@
1
+ import { StrictMode } from "react";
2
+ import { createRoot } from "react-dom/client";
3
+ import "./index.css";
4
+ import App from "./App";
5
+ createRoot(document.getElementById("root")!).render(
6
+ <StrictMode>
7
+ <App />
8
+ </StrictMode>
9
+ );