react-restyle-components 0.4.23 → 0.4.24

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 (194) hide show
  1. package/lib/src/core-components/src/components/AlertBanner/AlertBanner.d.ts +4 -0
  2. package/lib/src/core-components/src/components/AlertBanner/AlertBanner.d.ts.map +1 -0
  3. package/lib/src/core-components/src/components/AlertBanner/AlertBanner.js +45 -0
  4. package/lib/src/core-components/src/components/AlertBanner/elements.d.ts +27 -0
  5. package/lib/src/core-components/src/components/AlertBanner/elements.d.ts.map +1 -0
  6. package/lib/src/core-components/src/components/AlertBanner/elements.js +233 -0
  7. package/lib/src/core-components/src/components/AlertBanner/index.d.ts +3 -0
  8. package/lib/src/core-components/src/components/AlertBanner/index.d.ts.map +1 -0
  9. package/lib/src/core-components/src/components/AlertBanner/index.js +2 -0
  10. package/lib/src/core-components/src/components/AlertBanner/types.d.ts +46 -0
  11. package/lib/src/core-components/src/components/AlertBanner/types.d.ts.map +1 -0
  12. package/lib/src/core-components/src/components/AlertBanner/types.js +10 -0
  13. package/lib/src/core-components/src/components/AutoComplete/auto-complete-filter-multiple-select-multiple-fields-display/auto-complete-filter-multiple-select-multiple-fields-display.component.d.ts.map +1 -1
  14. package/lib/src/core-components/src/components/Badge/Badge.d.ts +33 -33
  15. package/lib/src/core-components/src/components/Breadcrumb/Breadcrumb.d.ts +28 -0
  16. package/lib/src/core-components/src/components/Breadcrumb/Breadcrumb.d.ts.map +1 -0
  17. package/lib/src/core-components/src/components/Breadcrumb/Breadcrumb.js +83 -0
  18. package/lib/src/core-components/src/components/Breadcrumb/elements.d.ts +44 -0
  19. package/lib/src/core-components/src/components/Breadcrumb/elements.d.ts.map +1 -0
  20. package/lib/src/core-components/src/components/Breadcrumb/elements.js +370 -0
  21. package/lib/src/core-components/src/components/Breadcrumb/index.d.ts +4 -0
  22. package/lib/src/core-components/src/components/Breadcrumb/index.d.ts.map +1 -0
  23. package/lib/src/core-components/src/components/Breadcrumb/index.js +3 -0
  24. package/lib/src/core-components/src/components/Breadcrumb/types.d.ts +14 -0
  25. package/lib/src/core-components/src/components/Breadcrumb/types.d.ts.map +1 -0
  26. package/lib/src/core-components/src/components/Breadcrumb/types.js +3 -0
  27. package/lib/src/core-components/src/components/Button/Button.spec.js +1 -1
  28. package/lib/src/core-components/src/components/Button/button.component.js +1 -1
  29. package/lib/src/core-components/src/components/Chip/Chip.d.ts +5 -0
  30. package/lib/src/core-components/src/components/Chip/Chip.d.ts.map +1 -0
  31. package/lib/src/core-components/src/components/Chip/Chip.js +64 -0
  32. package/lib/src/core-components/src/components/Chip/elements.d.ts +27 -0
  33. package/lib/src/core-components/src/components/Chip/elements.d.ts.map +1 -0
  34. package/lib/src/core-components/src/components/Chip/elements.js +253 -0
  35. package/lib/src/core-components/src/components/Chip/index.d.ts +3 -0
  36. package/lib/src/core-components/src/components/Chip/index.d.ts.map +1 -0
  37. package/lib/src/core-components/src/components/Chip/index.js +2 -0
  38. package/lib/src/core-components/src/components/Chip/types.d.ts +54 -0
  39. package/lib/src/core-components/src/components/Chip/types.d.ts.map +1 -0
  40. package/lib/src/core-components/src/components/Chip/types.js +4 -0
  41. package/lib/src/core-components/src/components/Divider/Divider.d.ts +4 -0
  42. package/lib/src/core-components/src/components/Divider/Divider.d.ts.map +1 -0
  43. package/lib/src/core-components/src/components/Divider/Divider.js +25 -0
  44. package/lib/src/core-components/src/components/Divider/elements.d.ts +22 -0
  45. package/lib/src/core-components/src/components/Divider/elements.d.ts.map +1 -0
  46. package/lib/src/core-components/src/components/Divider/elements.js +103 -0
  47. package/lib/src/core-components/src/components/Divider/index.d.ts +3 -0
  48. package/lib/src/core-components/src/components/Divider/index.d.ts.map +1 -0
  49. package/lib/src/core-components/src/components/Divider/index.js +2 -0
  50. package/lib/src/core-components/src/components/Divider/types.d.ts +30 -0
  51. package/lib/src/core-components/src/components/Divider/types.d.ts.map +1 -0
  52. package/lib/src/core-components/src/components/Divider/types.js +4 -0
  53. package/lib/src/core-components/src/components/DynamicGrid/DynamicGrid.d.ts +6 -0
  54. package/lib/src/core-components/src/components/DynamicGrid/DynamicGrid.d.ts.map +1 -0
  55. package/lib/src/core-components/src/components/DynamicGrid/DynamicGrid.js +147 -0
  56. package/lib/src/core-components/src/components/DynamicGrid/GridContainer.d.ts +12 -0
  57. package/lib/src/core-components/src/components/DynamicGrid/GridContainer.d.ts.map +1 -0
  58. package/lib/src/core-components/src/components/DynamicGrid/GridContainer.js +89 -0
  59. package/lib/src/core-components/src/components/DynamicGrid/elements.d.ts +49 -0
  60. package/lib/src/core-components/src/components/DynamicGrid/elements.d.ts.map +1 -0
  61. package/lib/src/core-components/src/components/DynamicGrid/elements.js +409 -0
  62. package/lib/src/core-components/src/components/DynamicGrid/index.d.ts +4 -0
  63. package/lib/src/core-components/src/components/DynamicGrid/index.d.ts.map +1 -0
  64. package/lib/src/core-components/src/components/DynamicGrid/index.js +3 -0
  65. package/lib/src/core-components/src/components/DynamicGrid/types.d.ts +173 -0
  66. package/lib/src/core-components/src/components/DynamicGrid/types.d.ts.map +1 -0
  67. package/lib/src/core-components/src/components/DynamicGrid/types.js +28 -0
  68. package/lib/src/core-components/src/components/DynamicGrid/utils.d.ts +65 -0
  69. package/lib/src/core-components/src/components/DynamicGrid/utils.d.ts.map +1 -0
  70. package/lib/src/core-components/src/components/DynamicGrid/utils.js +193 -0
  71. package/lib/src/core-components/src/components/FormField/FormField.d.ts +1 -1
  72. package/lib/src/core-components/src/components/Icon/Icon.js +1 -1
  73. package/lib/src/core-components/src/components/Masonry/Masonry.d.ts +7 -0
  74. package/lib/src/core-components/src/components/Masonry/Masonry.d.ts.map +1 -0
  75. package/lib/src/core-components/src/components/Masonry/Masonry.js +73 -0
  76. package/lib/src/core-components/src/components/Masonry/elements.d.ts +31 -0
  77. package/lib/src/core-components/src/components/Masonry/elements.d.ts.map +1 -0
  78. package/lib/src/core-components/src/components/Masonry/elements.js +122 -0
  79. package/lib/src/core-components/src/components/Masonry/hooks.d.ts +21 -0
  80. package/lib/src/core-components/src/components/Masonry/hooks.d.ts.map +1 -0
  81. package/lib/src/core-components/src/components/Masonry/hooks.js +100 -0
  82. package/lib/src/core-components/src/components/Masonry/index.d.ts +4 -0
  83. package/lib/src/core-components/src/components/Masonry/index.d.ts.map +1 -0
  84. package/lib/src/core-components/src/components/Masonry/index.js +3 -0
  85. package/lib/src/core-components/src/components/Masonry/types.d.ts +117 -0
  86. package/lib/src/core-components/src/components/Masonry/types.d.ts.map +1 -0
  87. package/lib/src/core-components/src/components/Masonry/types.js +1 -0
  88. package/lib/src/core-components/src/components/Picker/color-picker-modal/color-picker-modal.component.js +1 -1
  89. package/lib/src/core-components/src/components/Skeleton/Skeleton.d.ts +8 -0
  90. package/lib/src/core-components/src/components/Skeleton/Skeleton.d.ts.map +1 -0
  91. package/lib/src/core-components/src/components/Skeleton/Skeleton.js +51 -0
  92. package/lib/src/core-components/src/components/Skeleton/elements.d.ts +33 -0
  93. package/lib/src/core-components/src/components/Skeleton/elements.d.ts.map +1 -0
  94. package/lib/src/core-components/src/components/Skeleton/elements.js +238 -0
  95. package/lib/src/core-components/src/components/Skeleton/index.d.ts +3 -0
  96. package/lib/src/core-components/src/components/Skeleton/index.d.ts.map +1 -0
  97. package/lib/src/core-components/src/components/Skeleton/index.js +2 -0
  98. package/lib/src/core-components/src/components/Skeleton/types.d.ts +80 -0
  99. package/lib/src/core-components/src/components/Skeleton/types.d.ts.map +1 -0
  100. package/lib/src/core-components/src/components/Skeleton/types.js +4 -0
  101. package/lib/src/core-components/src/components/SpeedDial/SpeedDial.d.ts +4 -0
  102. package/lib/src/core-components/src/components/SpeedDial/SpeedDial.d.ts.map +1 -0
  103. package/lib/src/core-components/src/components/SpeedDial/SpeedDial.js +128 -0
  104. package/lib/src/core-components/src/components/SpeedDial/elements.d.ts +57 -0
  105. package/lib/src/core-components/src/components/SpeedDial/elements.d.ts.map +1 -0
  106. package/lib/src/core-components/src/components/SpeedDial/elements.js +299 -0
  107. package/lib/src/core-components/src/components/SpeedDial/index.d.ts +3 -0
  108. package/lib/src/core-components/src/components/SpeedDial/index.d.ts.map +1 -0
  109. package/lib/src/core-components/src/components/SpeedDial/index.js +2 -0
  110. package/lib/src/core-components/src/components/SpeedDial/types.d.ts +149 -0
  111. package/lib/src/core-components/src/components/SpeedDial/types.d.ts.map +1 -0
  112. package/lib/src/core-components/src/components/SpeedDial/types.js +3 -0
  113. package/lib/src/core-components/src/components/Switch/Switch.d.ts +4 -0
  114. package/lib/src/core-components/src/components/Switch/Switch.d.ts.map +1 -0
  115. package/lib/src/core-components/src/components/Switch/Switch.js +26 -0
  116. package/lib/src/core-components/src/components/Switch/elements.d.ts +33 -0
  117. package/lib/src/core-components/src/components/Switch/elements.d.ts.map +1 -0
  118. package/lib/src/core-components/src/components/Switch/elements.js +167 -0
  119. package/lib/src/core-components/src/components/Switch/index.d.ts +3 -0
  120. package/lib/src/core-components/src/components/Switch/index.d.ts.map +1 -0
  121. package/lib/src/core-components/src/components/Switch/index.js +2 -0
  122. package/lib/src/core-components/src/components/Switch/types.d.ts +32 -0
  123. package/lib/src/core-components/src/components/Switch/types.d.ts.map +1 -0
  124. package/lib/src/core-components/src/components/Switch/types.js +3 -0
  125. package/lib/src/core-components/src/components/Table/Table.d.ts +7 -0
  126. package/lib/src/core-components/src/components/Table/Table.d.ts.map +1 -0
  127. package/lib/src/core-components/src/components/Table/Table.js +357 -0
  128. package/lib/src/core-components/src/components/Table/elements.d.ts +89 -0
  129. package/lib/src/core-components/src/components/Table/elements.d.ts.map +1 -0
  130. package/lib/src/core-components/src/components/Table/elements.js +604 -0
  131. package/lib/src/core-components/src/components/Table/filters.d.ts +23 -0
  132. package/lib/src/core-components/src/components/Table/filters.d.ts.map +1 -0
  133. package/lib/src/core-components/src/components/Table/filters.js +181 -0
  134. package/lib/src/core-components/src/components/Table/hooks.d.ts +107 -0
  135. package/lib/src/core-components/src/components/Table/hooks.d.ts.map +1 -0
  136. package/lib/src/core-components/src/components/Table/hooks.js +451 -0
  137. package/lib/src/core-components/src/components/Table/index.d.ts +5 -0
  138. package/lib/src/core-components/src/components/Table/index.d.ts.map +1 -0
  139. package/lib/src/core-components/src/components/Table/index.js +4 -0
  140. package/lib/src/core-components/src/components/Table/types.d.ts +358 -0
  141. package/lib/src/core-components/src/components/Table/types.d.ts.map +1 -0
  142. package/lib/src/core-components/src/components/Table/types.js +1 -0
  143. package/lib/src/core-components/src/components/Toast/Toast.d.ts +5 -0
  144. package/lib/src/core-components/src/components/Toast/Toast.d.ts.map +1 -0
  145. package/lib/src/core-components/src/components/Toast/Toast.js +50 -0
  146. package/lib/src/core-components/src/components/Toast/elements.d.ts +28 -0
  147. package/lib/src/core-components/src/components/Toast/elements.d.ts.map +1 -0
  148. package/lib/src/core-components/src/components/Toast/elements.js +272 -0
  149. package/lib/src/core-components/src/components/Toast/index.d.ts +3 -0
  150. package/lib/src/core-components/src/components/Toast/index.d.ts.map +1 -0
  151. package/lib/src/core-components/src/components/Toast/index.js +2 -0
  152. package/lib/src/core-components/src/components/Toast/types.d.ts +52 -0
  153. package/lib/src/core-components/src/components/Toast/types.d.ts.map +1 -0
  154. package/lib/src/core-components/src/components/Toast/types.js +9 -0
  155. package/lib/src/core-components/src/components/Tooltip/Tooltip.d.ts +7 -0
  156. package/lib/src/core-components/src/components/Tooltip/Tooltip.d.ts.map +1 -0
  157. package/lib/src/core-components/src/components/Tooltip/Tooltip.js +200 -0
  158. package/lib/src/core-components/src/components/Tooltip/elements.d.ts +19 -0
  159. package/lib/src/core-components/src/components/Tooltip/elements.d.ts.map +1 -0
  160. package/lib/src/core-components/src/components/Tooltip/elements.js +195 -0
  161. package/lib/src/core-components/src/components/Tooltip/index.d.ts +3 -0
  162. package/lib/src/core-components/src/components/Tooltip/index.d.ts.map +1 -0
  163. package/lib/src/core-components/src/components/Tooltip/index.js +2 -0
  164. package/lib/src/core-components/src/components/Tooltip/types.d.ts +81 -17
  165. package/lib/src/core-components/src/components/Tooltip/types.d.ts.map +1 -1
  166. package/lib/src/core-components/src/components/Tooltip/types.js +17 -1
  167. package/lib/src/core-components/src/components/Tooltip/utils.d.ts +26 -0
  168. package/lib/src/core-components/src/components/Tooltip/utils.d.ts.map +1 -0
  169. package/lib/src/core-components/src/components/Tooltip/utils.js +140 -0
  170. package/lib/src/core-components/src/components/TreeSelect/TreeSelect.d.ts +5 -0
  171. package/lib/src/core-components/src/components/TreeSelect/TreeSelect.d.ts.map +1 -0
  172. package/lib/src/core-components/src/components/TreeSelect/TreeSelect.js +303 -0
  173. package/lib/src/core-components/src/components/TreeSelect/elements.d.ts +74 -0
  174. package/lib/src/core-components/src/components/TreeSelect/elements.d.ts.map +1 -0
  175. package/lib/src/core-components/src/components/TreeSelect/elements.js +494 -0
  176. package/lib/src/core-components/src/components/TreeSelect/hooks.d.ts +57 -0
  177. package/lib/src/core-components/src/components/TreeSelect/hooks.d.ts.map +1 -0
  178. package/lib/src/core-components/src/components/TreeSelect/hooks.js +252 -0
  179. package/lib/src/core-components/src/components/TreeSelect/index.d.ts +4 -0
  180. package/lib/src/core-components/src/components/TreeSelect/index.d.ts.map +1 -0
  181. package/lib/src/core-components/src/components/TreeSelect/index.js +3 -0
  182. package/lib/src/core-components/src/components/TreeSelect/types.d.ts +205 -0
  183. package/lib/src/core-components/src/components/TreeSelect/types.d.ts.map +1 -0
  184. package/lib/src/core-components/src/components/TreeSelect/types.js +1 -0
  185. package/lib/src/core-components/src/components/index.d.ts +13 -1
  186. package/lib/src/core-components/src/components/index.d.ts.map +1 -1
  187. package/lib/src/core-components/src/components/index.js +14 -1
  188. package/lib/src/core-components/src/core-components/CoreButton/CoreButton.d.ts +2 -2
  189. package/lib/src/core-components/src/tc.global.css +7 -3
  190. package/lib/src/core-components/src/tc.module.css +2 -2
  191. package/package.json +1 -1
  192. package/lib/src/core-components/src/components/Tooltip/tooltip.component.d.ts +0 -29
  193. package/lib/src/core-components/src/components/Tooltip/tooltip.component.d.ts.map +0 -1
  194. package/lib/src/core-components/src/components/Tooltip/tooltip.component.js +0 -10
@@ -0,0 +1,147 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import React, { Children, forwardRef, useMemo, useRef, useState, useCallback, createContext, useContext, } from 'react';
4
+ import { cn } from '../../utils';
5
+ import s from '../../tc.module.css';
6
+ import { GridWrapper, GridContainer, GridItem, SkeletonItem, EmptyState, ScrollArrow, ScrollDots, ScrollDot, } from './elements';
7
+ import { gapSizeValues, } from './types';
8
+ import { calcColumns, getGapValue, getResponsiveColumns, useWindowWidth, useElementResize, useScrollToKeyboardFocus, useScrollNavigation, getItemCount, } from './utils';
9
+ // Grid context for nested components
10
+ const GridContext = createContext(null);
11
+ export const useGridContext = () => useContext(GridContext);
12
+ // Arrow icons
13
+ const ChevronLeftIcon = () => (_jsx("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: _jsx("polyline", { points: "15 18 9 12 15 6" }) }));
14
+ const ChevronRightIcon = () => (_jsx("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: _jsx("polyline", { points: "9 18 15 12 9 6" }) }));
15
+ // Empty icon
16
+ const EmptyIcon = () => (_jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("rect", { x: "3", y: "3", width: "18", height: "18", rx: "2", ry: "2" }), _jsx("line", { x1: "9", y1: "9", x2: "15", y2: "15" }), _jsx("line", { x1: "15", y1: "9", x2: "9", y2: "15" })] }));
17
+ // Default empty state
18
+ const DefaultEmptyState = () => (_jsxs(EmptyState, { children: [_jsx(EmptyIcon, {}), _jsx("p", { className: cn(s['text-gray-500'], s['text-sm']), children: "No items to display" })] }));
19
+ // Default skeleton renderer
20
+ const DefaultSkeleton = ({ aspectRatio }) => (_jsx(SkeletonItem, { "$aspectRatio": aspectRatio }));
21
+ export const DynamicGrid = forwardRef(function DynamicGridComponent(props, fRef) {
22
+ const { children,
23
+ // Layout
24
+ minWidth = 10, maxWidth, columns: fixedColumns, responsiveColumns, maxColumns = Infinity, maxRows, autoFit = false, modulo = 1,
25
+ // Spacing
26
+ gap = 'md', rowGap, columnGap,
27
+ // Styling
28
+ variant = 'default', alignItems, justifyItems, alignContent, justifyContent,
29
+ // Scroll
30
+ scroll, scrollEnabled,
31
+ // Animation
32
+ animation,
33
+ // Item config
34
+ itemConfig,
35
+ // Accessibility
36
+ role = 'none', elementRole, ariaLabel,
37
+ // State
38
+ isLoading = false, skeletonCount = 6, renderSkeleton, emptyState,
39
+ // Events
40
+ onLayoutChange, onScrollChange,
41
+ // Styling
42
+ className, style, containerClassName, itemClassName, ...rest } = props;
43
+ const innerRef = useRef(null);
44
+ const gridRef = useRef(null);
45
+ const [elementWidth, setElementWidth] = useState(0);
46
+ const windowWidth = useWindowWidth();
47
+ // Merge scroll config
48
+ const scrollConfig = useMemo(() => scroll?.enabled || scrollEnabled
49
+ ? {
50
+ enabled: true,
51
+ scrollHint: scroll?.scrollHint ?? 0.5,
52
+ hideScrollbar: scroll?.hideScrollbar ?? false,
53
+ scrollSnapAlign: scroll?.scrollSnapAlign ?? 'start',
54
+ smoothScroll: scroll?.smoothScroll ?? true,
55
+ showArrows: scroll?.showArrows ?? true,
56
+ showDots: scroll?.showDots ?? false,
57
+ ...scroll,
58
+ }
59
+ : undefined, [scroll, scrollEnabled]);
60
+ // Handle element resize
61
+ const handleResize = useCallback((width) => {
62
+ setElementWidth(width);
63
+ }, []);
64
+ useElementResize(innerRef, handleResize);
65
+ // Calculate columns
66
+ const calculatedColumns = useMemo(() => {
67
+ // Use fixed columns if provided
68
+ if (fixedColumns)
69
+ return fixedColumns;
70
+ // Use responsive columns if provided
71
+ if (responsiveColumns) {
72
+ return getResponsiveColumns(responsiveColumns, windowWidth);
73
+ }
74
+ // Calculate based on container width
75
+ const gapValue = getGapValue(gap);
76
+ return calcColumns({
77
+ minWidth,
78
+ elementWidth,
79
+ gap: gapValue,
80
+ modulo,
81
+ maxColumns,
82
+ scrollHint: scrollConfig?.scrollHint,
83
+ });
84
+ }, [
85
+ fixedColumns,
86
+ responsiveColumns,
87
+ windowWidth,
88
+ minWidth,
89
+ elementWidth,
90
+ gap,
91
+ modulo,
92
+ maxColumns,
93
+ scrollConfig?.scrollHint,
94
+ ]);
95
+ // Handle keyboard focus scroll
96
+ useScrollToKeyboardFocus(gridRef, scrollConfig);
97
+ // Scroll navigation
98
+ const itemCount = getItemCount(children);
99
+ const scrollNav = useScrollNavigation(gridRef, itemCount, calculatedColumns);
100
+ // Notify layout changes
101
+ React.useEffect(() => {
102
+ if (onLayoutChange) {
103
+ const rows = Math.ceil(itemCount / calculatedColumns);
104
+ onLayoutChange(calculatedColumns, rows);
105
+ }
106
+ }, [calculatedColumns, itemCount, onLayoutChange]);
107
+ // Get gap values
108
+ const gapValue = getGapValue(gap);
109
+ const rowGapValue = rowGap ? gapSizeValues[rowGap] : undefined;
110
+ const columnGapValue = columnGap ? gapSizeValues[columnGap] : undefined;
111
+ // Process children
112
+ const processedChildren = useMemo(() => {
113
+ const childArray = Children.toArray(children);
114
+ return childArray.map((child, index) => (_jsx(GridItem, { "$animation": animation, "$animationIndex": index, "$borderRadius": itemConfig?.borderRadius, "$padding": itemConfig?.padding, "$aspectRatio": itemConfig?.aspectRatio, className: itemClassName, children: child }, index)));
115
+ }, [children, animation, itemConfig, itemClassName]);
116
+ // Render as list items if role is list
117
+ const gridRole = role || elementRole || 'none';
118
+ const renderChildren = useMemo(() => {
119
+ if (gridRole === 'list') {
120
+ return processedChildren.map((child, index) => (_jsx("li", { style: { display: 'contents' }, children: child }, index)));
121
+ }
122
+ return processedChildren;
123
+ }, [processedChildren, gridRole]);
124
+ // Render skeletons
125
+ const skeletons = useMemo(() => {
126
+ if (!isLoading)
127
+ return null;
128
+ return Array.from({ length: skeletonCount }, (_, index) => (_jsx(GridItem, { "$animation": { enabled: true, type: 'fade', duration: 200 }, "$animationIndex": index, "$borderRadius": itemConfig?.borderRadius, "$aspectRatio": itemConfig?.aspectRatio, children: renderSkeleton ? (renderSkeleton()) : (_jsx(DefaultSkeleton, { aspectRatio: itemConfig?.aspectRatio })) }, `skeleton-${index}`)));
129
+ }, [isLoading, skeletonCount, renderSkeleton, itemConfig]);
130
+ // Check if empty
131
+ const isEmpty = !isLoading && itemCount === 0;
132
+ // Grid context value
133
+ const contextValue = useMemo(() => ({
134
+ columns: calculatedColumns,
135
+ gap: gapValue,
136
+ variant,
137
+ itemConfig,
138
+ }), [calculatedColumns, gapValue, variant, itemConfig]);
139
+ return (_jsx(GridContext.Provider, { value: contextValue, children: _jsxs(GridWrapper, { ref: innerRef, "$variant": variant, className: cn(containerClassName, className), style: style, "data-aui": "dynamic-grid", ...rest, children: [_jsx(GridContainer, { ref: gridRef, as: gridRole === 'list' ? 'ul' : 'div', role: gridRole === 'grid' ? 'grid' : undefined, "aria-label": ariaLabel, "$columns": calculatedColumns, "$minWidth": minWidth, "$maxWidth": maxWidth, "$gap": gapValue, "$rowGap": rowGapValue, "$columnGap": columnGapValue, "$autoFit": autoFit, "$maxRows": maxRows, "$alignItems": alignItems, "$justifyItems": justifyItems, "$alignContent": alignContent, "$justifyContent": justifyContent, "$scroll": scrollConfig, "$animation": animation, "$variant": variant, children: isLoading ? skeletons : isEmpty ? null : renderChildren }), isEmpty && (emptyState || _jsx(DefaultEmptyState, {})), scrollConfig?.enabled && scrollConfig.showArrows && !isEmpty && (_jsxs(_Fragment, { children: [_jsx(ScrollArrow, { "$direction": "left", "$visible": scrollNav.canScrollLeft, onClick: scrollNav.scrollLeft, "aria-label": "Scroll left", disabled: !scrollNav.canScrollLeft, children: _jsx(ChevronLeftIcon, {}) }), _jsx(ScrollArrow, { "$direction": "right", "$visible": scrollNav.canScrollRight, onClick: scrollNav.scrollRight, "aria-label": "Scroll right", disabled: !scrollNav.canScrollRight, children: _jsx(ChevronRightIcon, {}) })] })), scrollConfig?.enabled && scrollConfig.showDots && !isEmpty && (_jsx(ScrollDots, { children: Array.from({ length: scrollNav.totalPages }, (_, index) => (_jsx(ScrollDot, { "$active": index === scrollNav.currentPage, onClick: () => scrollNav.scrollTo(index), "aria-label": `Go to page ${index + 1}` }, index))) }))] }) }));
140
+ });
141
+ // Grid Item component for advanced usage
142
+ export const DynamicGridItem = forwardRef(function DynamicGridItemComponent({ children, colSpan, rowSpan, order, alignSelf, justifySelf, className, ...rest }, ref) {
143
+ const gridContext = useGridContext();
144
+ return (_jsx(GridItem, { ref: ref, "$colSpan": colSpan, "$rowSpan": rowSpan, "$order": order, "$alignSelf": alignSelf, "$justifySelf": justifySelf, "$borderRadius": gridContext?.itemConfig?.borderRadius, "$padding": gridContext?.itemConfig?.padding, className: className, ...rest, children: children }));
145
+ });
146
+ DynamicGrid.displayName = 'DynamicGrid';
147
+ DynamicGridItem.displayName = 'DynamicGridItem';
@@ -0,0 +1,12 @@
1
+ /// <reference types="react" />
2
+ import { ScrollProps } from './types';
3
+ declare const GridContainer: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
4
+ $autoFit: boolean | undefined;
5
+ $columns: number;
6
+ $gap: string;
7
+ $minWidth: number;
8
+ $maxRows: number | undefined;
9
+ $scroll: ScrollProps;
10
+ }>> & string;
11
+ export default GridContainer;
12
+ //# sourceMappingURL=GridContainer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GridContainer.d.ts","sourceRoot":"","sources":["../../../../../../src/core-components/src/components/DynamicGrid/GridContainer.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,QAAA,MAAM,aAAa;cACP,OAAO,GAAG,SAAS;cACnB,MAAM;UACV,MAAM;eACD,MAAM;cACP,MAAM,GAAG,SAAS;aACnB,WAAW;YA2FrB,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -0,0 +1,89 @@
1
+ import { styled, css } from 'styled-components';
2
+ const GridContainer = styled.div `
3
+ display: grid;
4
+ gap: ${({ $gap }) => $gap};
5
+
6
+ & > li {
7
+ display: flex;
8
+ box-sizing: border-box;
9
+
10
+ & > * {
11
+ width: 100%;
12
+ height: auto;
13
+ }
14
+ }
15
+
16
+ ${({ $autoFit, $columns, $gap }) => $autoFit &&
17
+ css `
18
+ & > *:only-child {
19
+ width: 100%;
20
+ max-width: calc((100% - ${$columns - 1} * ${$gap}) / ${$columns});
21
+ }
22
+ `}
23
+
24
+ ${({ $minWidth, $columns, $autoFit }) => css `
25
+ grid-template-columns: repeat(
26
+ ${$autoFit ? 'auto-fit' : $columns},
27
+ minmax(${$minWidth}rem, 1fr)
28
+ );
29
+ `};
30
+
31
+ ${({ $maxRows, $columns, $scroll }) => $maxRows &&
32
+ !$scroll &&
33
+ css `
34
+ & > *:nth-child(n + ${$columns * $maxRows + 1}) {
35
+ display: none;
36
+ }
37
+ `}
38
+
39
+ ${({ $scroll, $minWidth, $columns, $gap, $maxRows }) => $scroll &&
40
+ css `
41
+ &&& {
42
+ scroll-behavior: smooth;
43
+ overflow-x: scroll;
44
+ scroll-snap-type: x mandatory;
45
+ grid-auto-flow: column;
46
+ -webkit-overflow-scrolling: touch;
47
+
48
+ /* prevent overflow from hiding the focus outline */
49
+ & > *:focus,
50
+ & > li > *:focus {
51
+ outline-offset: -2px;
52
+ }
53
+
54
+ ${$scroll.hideScrollbar &&
55
+ css `
56
+ scrollbar-width: none;
57
+ -ms-overflow-style: none;
58
+ &::-webkit-scrollbar {
59
+ display: none;
60
+ height: 0;
61
+ background: transparent;
62
+ }
63
+ `}
64
+
65
+ grid-template-columns: unset;
66
+ grid-template-rows: repeat(${$maxRows || 1}, max-content);
67
+ grid-auto-columns: max(
68
+ calc(
69
+ (100% - ${$columns + ($scroll.scrollHint || 0) - 1} * ${$gap}) /
70
+ ${$columns + ($scroll.scrollHint || 0)}
71
+ ),
72
+ ${$minWidth}rem
73
+ );
74
+ }
75
+
76
+ &&& > * {
77
+ scroll-snap-align: ${$scroll.scrollSnapAlign || 'start'};
78
+ }
79
+
80
+ &&& > *:first-child {
81
+ scroll-snap-align: start;
82
+ }
83
+
84
+ &&& > *:last-child {
85
+ scroll-snap-align: end;
86
+ }
87
+ `}
88
+ `;
89
+ export default GridContainer;
@@ -0,0 +1,49 @@
1
+ /// <reference types="react" />
2
+ import { GridVariant, ScrollConfig, AnimationConfig } from './types';
3
+ export declare const GridWrapper: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
4
+ $variant: GridVariant;
5
+ }>> & string;
6
+ export declare const GridContainer: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
7
+ $columns: number;
8
+ $minWidth: number;
9
+ $maxWidth?: number | undefined;
10
+ $gap: string;
11
+ $rowGap?: string | undefined;
12
+ $columnGap?: string | undefined;
13
+ $autoFit: boolean;
14
+ $maxRows?: number | undefined;
15
+ $alignItems?: "center" | "start" | "end" | "stretch" | undefined;
16
+ $justifyItems?: "center" | "start" | "end" | "stretch" | undefined;
17
+ $alignContent?: "center" | "start" | "end" | "stretch" | undefined;
18
+ $justifyContent?: "center" | "start" | "end" | "space-around" | "space-between" | "space-evenly" | undefined;
19
+ $scroll?: ScrollConfig | undefined;
20
+ $animation?: AnimationConfig | undefined;
21
+ $variant: GridVariant;
22
+ }>> & string;
23
+ export declare const GridItem: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
24
+ $colSpan?: number | undefined;
25
+ $rowSpan?: number | undefined;
26
+ $order?: number | undefined;
27
+ $alignSelf?: "center" | "start" | "end" | "stretch" | undefined;
28
+ $justifySelf?: "center" | "start" | "end" | "stretch" | undefined;
29
+ $animation?: AnimationConfig | undefined;
30
+ $animationIndex?: number | undefined;
31
+ $borderRadius?: string | undefined;
32
+ $padding?: string | undefined;
33
+ $aspectRatio?: string | undefined;
34
+ }>> & string;
35
+ export declare const SkeletonItem: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
36
+ $aspectRatio?: string | undefined;
37
+ $borderRadius?: string | undefined;
38
+ }>> & string;
39
+ export declare const EmptyState: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
40
+ export declare const ScrollArrow: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, {
41
+ $direction: 'left' | 'right';
42
+ $visible: boolean;
43
+ }>> & string;
44
+ export declare const ScrollDots: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
45
+ export declare const ScrollDot: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, {
46
+ $active: boolean;
47
+ }>> & string;
48
+ export declare const LoadingOverlay: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
49
+ //# sourceMappingURL=elements.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elements.d.ts","sourceRoot":"","sources":["../../../../../../src/core-components/src/components/DynamicGrid/elements.tsx"],"names":[],"mappings":";AAGA,OAAO,EACL,WAAW,EAGX,YAAY,EACZ,eAAe,EAGhB,MAAM,SAAS,CAAC;AAgEjB,eAAO,MAAM,WAAW;cACZ,WAAW;YA6BtB,CAAC;AAGF,eAAO,MAAM,aAAa;cACd,MAAM;eACL,MAAM;;UAEX,MAAM;;;cAGF,OAAO;;;;;;;;cAQP,WAAW;YAsJtB,CAAC;AAGF,eAAO,MAAM,QAAQ;;;;;;;;;;;YA+EpB,CAAC;AAGF,eAAO,MAAM,YAAY;;;YAoBxB,CAAC;AAGF,eAAO,MAAM,UAAU,6NAgBtB,CAAC;AAGF,eAAO,MAAM,WAAW;gBACV,MAAM,GAAG,OAAO;cAClB,OAAO;YA2ClB,CAAC;AAGF,eAAO,MAAM,UAAU,6NAKtB,CAAC;AAEF,eAAO,MAAM,SAAS;aACX,OAAO;YAqBjB,CAAC;AAGF,eAAO,MAAM,cAAc,6NAS1B,CAAC"}