@dmsi/wedgekit-react 0.0.369 → 0.0.371

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 (205) hide show
  1. package/dist/{chunk-RLLQRVM7.js → chunk-2H35FETR.js} +18 -10
  2. package/dist/chunk-2IKT6IHB.js +190 -0
  3. package/dist/chunk-4UNWXB4A.js +89 -0
  4. package/dist/chunk-5IFPG6TS.js +17 -0
  5. package/dist/{chunk-6GAYJCFE.js → chunk-6DPFKSCT.js} +1 -1
  6. package/dist/{chunk-ZFOANBWG.js → chunk-AG43RS4Q.js} +2 -1
  7. package/dist/chunk-AJ5M6MVX.js +7 -0
  8. package/dist/chunk-AT4AWD6B.js +44 -0
  9. package/dist/chunk-BQNPOGD5.js +105 -0
  10. package/dist/chunk-CQFPNZTN.js +172 -0
  11. package/dist/chunk-EJSPFQCY.js +29 -0
  12. package/dist/chunk-ER6RCOH3.js +97 -0
  13. package/dist/{chunk-4VER5OEU.js → chunk-FBE2HGEF.js} +35 -11
  14. package/dist/chunk-HPQWEZJL.js +45 -0
  15. package/dist/{chunk-URCLLHO5.js → chunk-IBX6DVHU.js} +376 -102
  16. package/dist/{chunk-I3WFZOFY.js → chunk-J5V2JRIK.js} +1 -1
  17. package/dist/chunk-JGJUVJKD.js +283 -0
  18. package/dist/chunk-KEMCFN4U.js +78 -0
  19. package/dist/chunk-M6TSTDNZ.js +22 -0
  20. package/dist/chunk-M7INAUAJ.js +140 -0
  21. package/dist/chunk-MBZ55T2D.js +51 -0
  22. package/dist/chunk-N6PNLLNS.js +77 -0
  23. package/dist/{chunk-ZA5E7ZYM.js → chunk-NXGUDYRR.js} +1 -1
  24. package/dist/chunk-P36QKH26.js +143 -0
  25. package/dist/chunk-PTRZHGHA.js +89 -0
  26. package/dist/chunk-QVWYTQKL.js +29 -0
  27. package/dist/{chunk-6CPGOW6J.js → chunk-T36HX6QY.js} +6 -4
  28. package/dist/chunk-U6PUOGG4.js +114 -0
  29. package/dist/{chunk-NQXZBWDZ.js → chunk-V6U7LU6M.js} +15 -6
  30. package/dist/chunk-VJVY6NPF.js +32 -0
  31. package/dist/chunk-VVXPGI2P.js +61 -0
  32. package/dist/{chunk-ARQBSR3I.js → chunk-YCKRVNJ3.js} +4 -4
  33. package/dist/chunk-YYHQLQDQ.js +68 -0
  34. package/dist/components/Accordion.cjs +47 -14
  35. package/dist/components/Accordion.js +2 -2
  36. package/dist/components/CalendarRange.cjs +700 -46
  37. package/dist/components/CalendarRange.css +186 -3
  38. package/dist/components/CalendarRange.js +43 -11
  39. package/dist/components/CompactImagesPreview.cjs +485 -0
  40. package/dist/components/CompactImagesPreview.js +13 -0
  41. package/dist/components/ContentTabs.cjs +3 -2
  42. package/dist/components/ContentTabs.js +3 -2
  43. package/dist/components/DataGrid/ColumnSelectorHeaderCell/ColumnSelectorMenuOption.cjs +4687 -0
  44. package/dist/components/DataGrid/ColumnSelectorHeaderCell/ColumnSelectorMenuOption.css +5051 -0
  45. package/dist/components/DataGrid/ColumnSelectorHeaderCell/ColumnSelectorMenuOption.js +62 -0
  46. package/dist/components/DataGrid/ColumnSelectorHeaderCell/index.cjs +4687 -0
  47. package/dist/components/DataGrid/ColumnSelectorHeaderCell/index.css +5051 -0
  48. package/dist/components/DataGrid/ColumnSelectorHeaderCell/index.js +62 -0
  49. package/dist/components/DataGrid/PinnedColumns.cjs +4687 -0
  50. package/dist/components/DataGrid/PinnedColumns.css +5051 -0
  51. package/dist/components/DataGrid/PinnedColumns.js +62 -0
  52. package/dist/components/DataGrid/TableBody/LoadingCell.cjs +4689 -0
  53. package/dist/components/DataGrid/TableBody/LoadingCell.css +5051 -0
  54. package/dist/components/DataGrid/TableBody/LoadingCell.js +62 -0
  55. package/dist/components/DataGrid/TableBody/TableBodyRow.cjs +4689 -0
  56. package/dist/components/DataGrid/TableBody/TableBodyRow.css +5051 -0
  57. package/dist/components/DataGrid/TableBody/TableBodyRow.js +62 -0
  58. package/dist/components/DataGrid/TableBody/index.cjs +4689 -0
  59. package/dist/components/DataGrid/TableBody/index.css +5051 -0
  60. package/dist/components/DataGrid/TableBody/index.js +62 -0
  61. package/dist/components/DataGrid/index.cjs +4692 -0
  62. package/dist/components/DataGrid/index.css +5051 -0
  63. package/dist/components/DataGrid/index.js +65 -0
  64. package/dist/components/DataGrid/utils.cjs +4687 -0
  65. package/dist/components/DataGrid/utils.css +5051 -0
  66. package/dist/components/DataGrid/utils.js +62 -0
  67. package/dist/components/DataGridCell.js +6 -6
  68. package/dist/components/DateInput.cjs +721 -67
  69. package/dist/components/DateInput.css +186 -3
  70. package/dist/components/DateInput.js +45 -13
  71. package/dist/components/DateRangeInput.cjs +721 -67
  72. package/dist/components/DateRangeInput.css +186 -3
  73. package/dist/components/DateRangeInput.js +45 -13
  74. package/dist/components/FilterGroup.js +3 -3
  75. package/dist/components/Grid.cjs +3 -1
  76. package/dist/components/Grid.js +3 -92
  77. package/dist/components/ImagePlaceholder.cjs +65 -0
  78. package/dist/components/ImagePlaceholder.js +7 -0
  79. package/dist/components/Input.js +2 -2
  80. package/dist/components/MenuOption.js +2 -2
  81. package/dist/components/MobileDataGrid/ColumnList.cjs +845 -0
  82. package/dist/components/MobileDataGrid/ColumnList.js +17 -0
  83. package/dist/components/MobileDataGrid/ColumnSelector/index.cjs +4797 -0
  84. package/dist/components/MobileDataGrid/ColumnSelector/index.css +5051 -0
  85. package/dist/components/MobileDataGrid/ColumnSelector/index.js +62 -0
  86. package/dist/components/MobileDataGrid/GridContextProvider/GridContext.cjs +31 -0
  87. package/dist/components/MobileDataGrid/GridContextProvider/GridContext.js +7 -0
  88. package/dist/components/MobileDataGrid/GridContextProvider/index.cjs +177 -0
  89. package/dist/components/MobileDataGrid/GridContextProvider/index.js +8 -0
  90. package/dist/components/MobileDataGrid/MobileDataGridCard/MobileDataGridColumn.cjs +269 -0
  91. package/dist/components/MobileDataGrid/MobileDataGridCard/MobileDataGridColumn.js +9 -0
  92. package/dist/components/MobileDataGrid/MobileDataGridCard/index.cjs +790 -0
  93. package/dist/components/MobileDataGrid/MobileDataGridCard/index.js +16 -0
  94. package/dist/components/MobileDataGrid/MobileDataGridHeader.cjs +5059 -0
  95. package/dist/components/MobileDataGrid/MobileDataGridHeader.css +5051 -0
  96. package/dist/components/MobileDataGrid/MobileDataGridHeader.js +62 -0
  97. package/dist/components/MobileDataGrid/RowDetailModalProvider/ModalContent.cjs +509 -0
  98. package/dist/components/MobileDataGrid/RowDetailModalProvider/ModalContent.js +13 -0
  99. package/dist/components/MobileDataGrid/RowDetailModalProvider/index.cjs +1261 -0
  100. package/dist/components/MobileDataGrid/RowDetailModalProvider/index.js +27 -0
  101. package/dist/components/MobileDataGrid/index.cjs +5521 -0
  102. package/dist/components/MobileDataGrid/index.css +5051 -0
  103. package/dist/components/MobileDataGrid/index.js +62 -0
  104. package/dist/components/Modal.cjs +24 -13
  105. package/dist/components/Modal.js +3 -3
  106. package/dist/components/ModalHeader.cjs +6 -4
  107. package/dist/components/ModalHeader.js +1 -1
  108. package/dist/components/ModalScrim.cjs +2 -1
  109. package/dist/components/ModalScrim.js +1 -1
  110. package/dist/components/NestedMenu.js +4 -4
  111. package/dist/components/Notification.cjs +15 -6
  112. package/dist/components/Notification.js +1 -1
  113. package/dist/components/PDFViewer/DownloadIcon.cjs +394 -0
  114. package/dist/components/PDFViewer/DownloadIcon.js +10 -0
  115. package/dist/components/PDFViewer/PDFElement.cjs +515 -0
  116. package/dist/components/PDFViewer/PDFElement.js +11 -0
  117. package/dist/components/{MobileDataGrid.cjs → PDFViewer/PDFNavigation.cjs} +318 -402
  118. package/dist/components/PDFViewer/PDFNavigation.js +13 -0
  119. package/dist/components/PDFViewer/PDFPage.cjs +56 -0
  120. package/dist/components/PDFViewer/PDFPage.js +7 -0
  121. package/dist/components/{PDFViewer.cjs → PDFViewer/index.cjs} +290 -202
  122. package/dist/components/PDFViewer/index.js +29 -0
  123. package/dist/components/Password.js +2 -2
  124. package/dist/components/ProductImagePreview/CarouselPagination.cjs +75 -0
  125. package/dist/components/ProductImagePreview/CarouselPagination.js +7 -0
  126. package/dist/components/ProductImagePreview/MobileImageCarousel.cjs +214 -0
  127. package/dist/components/ProductImagePreview/MobileImageCarousel.js +7 -0
  128. package/dist/components/ProductImagePreview/ProductPrimaryImage.cjs +255 -0
  129. package/dist/components/ProductImagePreview/ProductPrimaryImage.js +9 -0
  130. package/dist/components/ProductImagePreview/Thumbnail.cjs +105 -0
  131. package/dist/components/ProductImagePreview/Thumbnail.js +8 -0
  132. package/dist/components/ProductImagePreview/ZoomWindow.cjs +198 -0
  133. package/dist/components/ProductImagePreview/ZoomWindow.js +8 -0
  134. package/dist/components/ProductImagePreview/index.cjs +1369 -0
  135. package/dist/components/ProductImagePreview/index.js +22 -0
  136. package/dist/components/Search.js +3 -3
  137. package/dist/components/Select.js +3 -3
  138. package/dist/components/SideMenuGroup.cjs +15 -6
  139. package/dist/components/SideMenuGroup.js +1 -1
  140. package/dist/components/SideMenuItem.cjs +15 -6
  141. package/dist/components/SideMenuItem.js +1 -1
  142. package/dist/components/SkeletonParagraph.cjs +33 -0
  143. package/dist/components/SkeletonParagraph.js +10 -0
  144. package/dist/components/Stack.cjs +15 -6
  145. package/dist/components/Stack.js +1 -1
  146. package/dist/components/Stepper.cjs +61 -53
  147. package/dist/components/Stepper.js +63 -55
  148. package/dist/components/Surface.js +3 -39
  149. package/dist/components/Swatch.cjs +15 -6
  150. package/dist/components/Swatch.js +4 -4
  151. package/dist/components/Time.cjs +15 -6
  152. package/dist/components/Time.js +5 -5
  153. package/dist/components/Upload.cjs +15 -6
  154. package/dist/components/Upload.js +1 -1
  155. package/dist/components/index.cjs +2559 -14
  156. package/dist/components/index.css +186 -3
  157. package/dist/components/index.js +57 -14
  158. package/dist/index.css +186 -3
  159. package/package.json +1 -1
  160. package/src/components/Accordion.tsx +23 -4
  161. package/src/components/CompactImagesPreview.tsx +99 -0
  162. package/src/components/ContentTabs.tsx +3 -1
  163. package/src/components/DataGrid/types.ts +5 -0
  164. package/src/components/Grid.tsx +2 -0
  165. package/src/components/ImagePlaceholder.tsx +22 -0
  166. package/src/components/MobileDataGrid/ColumnList.tsx +66 -0
  167. package/src/components/MobileDataGrid/ColumnSelector/index.tsx +97 -0
  168. package/src/components/MobileDataGrid/GridContextProvider/GridContext.tsx +25 -0
  169. package/src/components/MobileDataGrid/GridContextProvider/index.tsx +132 -0
  170. package/src/components/MobileDataGrid/GridContextProvider/useGridContext.ts +10 -0
  171. package/src/components/MobileDataGrid/MobileDataGridCard/MobileDataGridColumn.tsx +20 -0
  172. package/src/components/MobileDataGrid/MobileDataGridCard/index.tsx +129 -0
  173. package/src/components/MobileDataGrid/MobileDataGridHeader.tsx +80 -0
  174. package/src/components/MobileDataGrid/RowDetailModalProvider/ModalContent.tsx +42 -0
  175. package/src/components/MobileDataGrid/RowDetailModalProvider/index.tsx +68 -0
  176. package/src/components/MobileDataGrid/dataGridReducer.ts +55 -0
  177. package/src/components/MobileDataGrid/index.tsx +92 -0
  178. package/src/components/MobileDataGrid/types.ts +4 -0
  179. package/src/components/Modal.tsx +31 -12
  180. package/src/components/ModalButtons.tsx +1 -1
  181. package/src/components/ModalHeader.tsx +5 -2
  182. package/src/components/ModalScrim.tsx +3 -2
  183. package/src/components/PDFViewer/DownloadIcon.tsx +22 -0
  184. package/src/components/PDFViewer/PDFElement.tsx +90 -0
  185. package/src/components/PDFViewer/PDFNavigation.tsx +68 -0
  186. package/src/components/PDFViewer/PDFPage.tsx +34 -0
  187. package/src/components/PDFViewer/index.tsx +128 -0
  188. package/src/components/ProductImagePreview/CarouselPagination.tsx +54 -0
  189. package/src/components/ProductImagePreview/MobileImageCarousel.tsx +226 -0
  190. package/src/components/ProductImagePreview/ProductPrimaryImage.tsx +218 -0
  191. package/src/components/ProductImagePreview/Thumbnail.tsx +49 -0
  192. package/src/components/ProductImagePreview/ZoomWindow.tsx +136 -0
  193. package/src/components/ProductImagePreview/index.tsx +182 -0
  194. package/src/components/ProductImagePreview/useProductImagePreview.ts +211 -0
  195. package/src/components/SkeletonParagraph.tsx +5 -0
  196. package/src/components/Stack.tsx +29 -6
  197. package/src/components/Stepper.tsx +5 -1
  198. package/src/components/index.ts +4 -0
  199. package/src/types.ts +2 -1
  200. package/dist/components/MobileDataGrid.js +0 -150
  201. package/dist/components/PDFViewer.js +0 -250
  202. package/src/components/MobileDataGrid.tsx +0 -163
  203. package/src/components/PDFViewer.tsx +0 -264
  204. package/dist/{chunk-OXSBIBGT.js → chunk-CKQNJNU3.js} +3 -3
  205. package/dist/{chunk-RJUN52HJ.js → chunk-ZL5X7KP6.js} +3 -3
@@ -0,0 +1,172 @@
1
+ import {
2
+ Spinner
3
+ } from "./chunk-SBRRNFOP.js";
4
+ import {
5
+ ImagePlaceholder
6
+ } from "./chunk-QVWYTQKL.js";
7
+ import {
8
+ __spreadProps,
9
+ __spreadValues
10
+ } from "./chunk-ORMEWXMH.js";
11
+
12
+ // src/components/ProductImagePreview/ProductPrimaryImage.tsx
13
+ import { useRef, useState, useCallback, useMemo, useEffect } from "react";
14
+ import { jsx, jsxs } from "react/jsx-runtime";
15
+ function ProductPrimaryImage({
16
+ image,
17
+ width,
18
+ height,
19
+ zoomEnabled = false,
20
+ zoomLensSize = 140,
21
+ scrollToZoomEnabled = false,
22
+ className = "",
23
+ isPlaceholder = false,
24
+ onZoomPositionChange,
25
+ onScrollZoom
26
+ }) {
27
+ const containerRef = useRef(null);
28
+ const lastPointRef = useRef(null);
29
+ const rafRef = useRef(null);
30
+ const [active, setActive] = useState(false);
31
+ const [, forceRerender] = useState(0);
32
+ const [imageLoading, setImageLoading] = useState(true);
33
+ const [imageError, setImageError] = useState(false);
34
+ const imageSrc = useMemo(() => image == null ? void 0 : image.src, [image == null ? void 0 : image.src]);
35
+ const schedule = () => {
36
+ if (rafRef.current != null) return;
37
+ rafRef.current = requestAnimationFrame(() => {
38
+ rafRef.current = null;
39
+ forceRerender((n) => n + 1);
40
+ });
41
+ };
42
+ const handlePointerEnter = useCallback(() => {
43
+ if (!zoomEnabled) return;
44
+ setActive(true);
45
+ const el = containerRef.current;
46
+ if (el) {
47
+ const r = el.getBoundingClientRect();
48
+ const pt2 = lastPointRef.current;
49
+ onZoomPositionChange == null ? void 0 : onZoomPositionChange(
50
+ pt2 ? __spreadProps(__spreadValues({}, pt2), { w: r.width, h: r.height, lensSize: zoomLensSize }) : null,
51
+ true
52
+ );
53
+ }
54
+ }, [zoomEnabled, onZoomPositionChange, zoomLensSize]);
55
+ const handlePointerLeave = useCallback(() => {
56
+ if (!zoomEnabled) return;
57
+ setActive(false);
58
+ lastPointRef.current = null;
59
+ onZoomPositionChange == null ? void 0 : onZoomPositionChange(null, false);
60
+ }, [zoomEnabled, onZoomPositionChange]);
61
+ const handlePointerMove = useCallback(
62
+ (e) => {
63
+ if (!zoomEnabled || !active) return;
64
+ if (e.pointerType === "touch") return;
65
+ const el = containerRef.current;
66
+ if (!el) return;
67
+ const rect = el.getBoundingClientRect();
68
+ const rawX = (e.clientX - rect.left) / rect.width;
69
+ const rawY = (e.clientY - rect.top) / rect.height;
70
+ const size = zoomLensSize != null ? zoomLensSize : 140;
71
+ const left = Math.max(
72
+ 0,
73
+ Math.min(rect.width - size, rawX * rect.width - size / 2)
74
+ );
75
+ const top = Math.max(
76
+ 0,
77
+ Math.min(rect.height - size, rawY * rect.height - size / 2)
78
+ );
79
+ const centerXNorm = (left + size / 2) / rect.width;
80
+ const centerYNorm = (top + size / 2) / rect.height;
81
+ lastPointRef.current = {
82
+ x: centerXNorm,
83
+ y: centerYNorm
84
+ };
85
+ schedule();
86
+ onZoomPositionChange == null ? void 0 : onZoomPositionChange(
87
+ lastPointRef.current ? __spreadProps(__spreadValues({}, lastPointRef.current), {
88
+ w: rect.width,
89
+ h: rect.height,
90
+ lensSize: zoomLensSize
91
+ }) : null,
92
+ true
93
+ );
94
+ },
95
+ [zoomEnabled, active, onZoomPositionChange, zoomLensSize]
96
+ );
97
+ useEffect(() => {
98
+ const container = containerRef.current;
99
+ if (!container || !scrollToZoomEnabled) return;
100
+ const handleNativeWheel = (e) => {
101
+ e.preventDefault();
102
+ e.stopPropagation();
103
+ if (!zoomEnabled || !active) return;
104
+ const delta = e.deltaY > 0 ? -0.2 : 0.2;
105
+ onScrollZoom == null ? void 0 : onScrollZoom(delta);
106
+ };
107
+ container.addEventListener("wheel", handleNativeWheel, { passive: false });
108
+ return () => {
109
+ container.removeEventListener("wheel", handleNativeWheel);
110
+ };
111
+ }, [scrollToZoomEnabled, zoomEnabled, active, onScrollZoom]);
112
+ if (!image && !isPlaceholder) return null;
113
+ const pt = lastPointRef.current;
114
+ let lensStyle;
115
+ if (pt && active && zoomEnabled) {
116
+ const size = zoomLensSize;
117
+ const leftRaw = pt.x * width - size / 2;
118
+ const topRaw = pt.y * height - size / 2;
119
+ lensStyle = {
120
+ width: size,
121
+ height: size,
122
+ left: Math.max(0, Math.min(width - size, leftRaw)),
123
+ top: Math.max(0, Math.min(height - size, topRaw))
124
+ };
125
+ }
126
+ return /* @__PURE__ */ jsxs(
127
+ "div",
128
+ {
129
+ ref: containerRef,
130
+ className: [
131
+ "relative overflow-hidden bg-white rounded flex items-center justify-center select-none",
132
+ zoomEnabled ? "cursor-crosshair" : "",
133
+ className
134
+ ].join(" "),
135
+ style: { maxWidth: width, maxHeight: height, aspectRatio: "1 / 1" },
136
+ onPointerEnter: handlePointerEnter,
137
+ onPointerLeave: handlePointerLeave,
138
+ onPointerMove: handlePointerMove,
139
+ children: [
140
+ imageLoading && !imageError && !isPlaceholder && /* @__PURE__ */ jsx("div", { className: "absolute inset-0 flex items-center justify-center bg-neutral-50", children: /* @__PURE__ */ jsx(Spinner, { size: "small" }) }),
141
+ isPlaceholder ? /* @__PURE__ */ jsx(ImagePlaceholder, { width, height }) : /* @__PURE__ */ jsx(
142
+ "img",
143
+ {
144
+ src: imageSrc,
145
+ alt: (image == null ? void 0 : image.alt) || "Product image",
146
+ className: "object-cover w-full h-full select-none",
147
+ draggable: false,
148
+ loading: "lazy",
149
+ onLoad: () => setImageLoading(false),
150
+ onError: () => {
151
+ setImageLoading(false);
152
+ setImageError(true);
153
+ }
154
+ },
155
+ imageSrc
156
+ ),
157
+ zoomEnabled && active && lensStyle && /* @__PURE__ */ jsx(
158
+ "div",
159
+ {
160
+ "aria-hidden": true,
161
+ className: "absolute pointer-events-none border border-white/70 shadow-[0_0_0_1px_rgba(0,0,0,0.15)] rounded-md bg-white/10 backdrop-blur-[1px]",
162
+ style: lensStyle
163
+ }
164
+ )
165
+ ]
166
+ }
167
+ );
168
+ }
169
+
170
+ export {
171
+ ProductPrimaryImage
172
+ };
@@ -0,0 +1,29 @@
1
+ import {
2
+ Icon
3
+ } from "./chunk-NKUETCDA.js";
4
+ import {
5
+ Button
6
+ } from "./chunk-WWAPK5PH.js";
7
+
8
+ // src/components/PDFViewer/DownloadIcon.tsx
9
+ import { jsx } from "react/jsx-runtime";
10
+ function DownloadIcon({
11
+ onClick,
12
+ isDownloading,
13
+ testid
14
+ }) {
15
+ return /* @__PURE__ */ jsx(
16
+ Button,
17
+ {
18
+ testid,
19
+ iconOnly: true,
20
+ variant: "tertiary",
21
+ leftIcon: /* @__PURE__ */ jsx(Icon, { name: isDownloading ? "cached" : "download" }),
22
+ onClick
23
+ }
24
+ );
25
+ }
26
+
27
+ export {
28
+ DownloadIcon
29
+ };
@@ -0,0 +1,97 @@
1
+ // src/components/Grid.tsx
2
+ import { Children } from "react";
3
+ import clsx from "clsx";
4
+ import { jsx } from "react/jsx-runtime";
5
+ var COLUMNS_WITH_SIDE_MENU_MAP = {
6
+ 1: "grid-cols-1",
7
+ 2: "sm:grid-cols-2",
8
+ 3: "sm:grid-cols-2 md:grid-cols-3",
9
+ 4: "sm:grid-cols-2 md:grid-cols-3 xl:grid-cols-4",
10
+ 5: "sm:grid-cols-2 md:grid-cols-3 xl:grid-cols-4",
11
+ 6: "sm:grid-cols-2 md:grid-cols-3 xl:grid-cols-4",
12
+ 7: "sm:grid-cols-2 md:grid-cols-3 xl:grid-cols-4 2xl:grid-cols-6",
13
+ 8: "sm:grid-cols-2 md:grid-cols-3 xl:grid-cols-4 2xl:grid-cols-6",
14
+ 9: "sm:grid-cols-2 md:grid-cols-3 xl:grid-cols-4 2xl:grid-cols-6",
15
+ 10: "sm:grid-cols-2 md:grid-cols-3 xl:grid-cols-4 2xl:grid-cols-6",
16
+ 11: "sm:grid-cols-2 md:grid-cols-3 xl:grid-cols-4 2xl:grid-cols-8",
17
+ 12: "sm:grid-cols-2 md:grid-cols-3 xl:grid-cols-4 2xl:grid-cols-8"
18
+ };
19
+ var COLUMNS_WITHOUT_SIDE_MENU_MAP = {
20
+ 1: "grid-cols-1",
21
+ 2: "sm:grid-cols-2",
22
+ 3: "sm:grid-cols-2 md:grid-cols-3",
23
+ 4: "sm:grid-cols-2 md:grid-cols-3 xl:grid-cols-4",
24
+ 5: "sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5",
25
+ 6: "sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-6",
26
+ 7: "sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-6 2xl:grid-cols-7",
27
+ 8: "sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-6 2xl:grid-cols-8",
28
+ 9: "sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-6 2xl:grid-cols-9",
29
+ 10: "sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-8 2xl:grid-cols-10",
30
+ 11: "sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-8 2xl:grid-cols-11",
31
+ 12: "sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-8 2xl:grid-cols-12"
32
+ };
33
+ var getChildCountBasedClasses = (childCount, hasSideMenu) => {
34
+ if (hasSideMenu) {
35
+ if (childCount <= 1) return "grid-cols-1";
36
+ if (childCount <= 2) return "sm:grid-cols-2";
37
+ if (childCount === 3) return "sm:grid-cols-2 md:grid-cols-3";
38
+ if (childCount <= 5) return "sm:grid-cols-2 md:grid-cols-3";
39
+ return "sm:grid-cols-2 md:grid-cols-3 xl:grid-cols-4 2xl:grid-cols-6";
40
+ }
41
+ if (childCount <= 1) return "grid-cols-1";
42
+ if (childCount <= 2) return "sm:grid-cols-2";
43
+ if (childCount === 3) return "sm:grid-cols-2 md:grid-cols-3";
44
+ if (childCount <= 5) return "sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4";
45
+ if (childCount <= 6)
46
+ return "sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-6";
47
+ if (childCount === 7)
48
+ return "sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-6";
49
+ if (childCount <= 11)
50
+ return "sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-6 2xl:grid-cols-8";
51
+ return "sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-8 2xl:grid-cols-12";
52
+ };
53
+ var getGridClasses = (childCount, hasSideMenu, columns) => {
54
+ var _a;
55
+ if (columns) {
56
+ const map = hasSideMenu ? COLUMNS_WITH_SIDE_MENU_MAP : COLUMNS_WITHOUT_SIDE_MENU_MAP;
57
+ return (_a = map[columns]) != null ? _a : map[12];
58
+ }
59
+ return getChildCountBasedClasses(childCount, hasSideMenu != null ? hasSideMenu : false);
60
+ };
61
+ var Grid = ({
62
+ children,
63
+ sizing = "container",
64
+ padding,
65
+ hasSideMenu = false,
66
+ columns,
67
+ id,
68
+ testid,
69
+ style
70
+ }) => {
71
+ const childCount = Children.count(children);
72
+ return /* @__PURE__ */ jsx(
73
+ "div",
74
+ {
75
+ id,
76
+ "data-testid": testid,
77
+ className: clsx(
78
+ padding && sizing === "container" && "p-mobile-container-padding desktop:p-desktop-container-padding compact:p-desktop-compact-container-padding",
79
+ padding && sizing === "layout" && "p-mobile-layout-padding desktop:p-desktop-layout-padding compact:p-desktop-compact-layout-padding",
80
+ padding && sizing === "layout-group" && "p-mobile-layout-group-padding desktop:p-desktop-layout-group-padding compact:p-desktop-compact-layout-group-padding",
81
+ padding && sizing === "component" && "p-mobile-component-padding desktop:p-desktop-component-padding compact:p-desktop-compact-component-padding",
82
+ sizing === "layout-group" && "gap-mobile-layout-group-gap desktop:gap-desktop-layout-group-gap compact:gap-compact-layout-group-gap",
83
+ sizing === "layout" && "gap-mobile-layout-gap desktop:gap-desktop-layout-gap compact:gap-compact-layout-gap",
84
+ sizing === "container" && "gap-mobile-container-gap desktop:gap-desktop-container-gap compact:gap-compact-container-gap",
85
+ sizing === "component" && "gap-mobile-component-gap desktop:gap-desktop-component-gap compact:gap-compact-component-gap",
86
+ "w-full grid",
87
+ getGridClasses(childCount, hasSideMenu, columns)
88
+ ),
89
+ style,
90
+ children
91
+ }
92
+ );
93
+ };
94
+
95
+ export {
96
+ Grid
97
+ };
@@ -1,9 +1,9 @@
1
- import {
2
- Stack
3
- } from "./chunk-NQXZBWDZ.js";
4
1
  import {
5
2
  Card
6
3
  } from "./chunk-4LXG6QNT.js";
4
+ import {
5
+ Stack
6
+ } from "./chunk-V6U7LU6M.js";
7
7
  import {
8
8
  Paragraph
9
9
  } from "./chunk-OGIFIPKH.js";
@@ -18,7 +18,14 @@ import {
18
18
  import clsx from "clsx";
19
19
  import { jsx, jsxs } from "react/jsx-runtime";
20
20
  function Accordion(props) {
21
- const { isOpen, onClick, className, disabled, testid } = props;
21
+ const {
22
+ isOpen,
23
+ onClick,
24
+ className,
25
+ disabled,
26
+ testid,
27
+ titleAlign = "center"
28
+ } = props;
22
29
  const {
23
30
  title,
24
31
  before,
@@ -51,13 +58,30 @@ function Accordion(props) {
51
58
  onClick: handleClick,
52
59
  testid,
53
60
  children: [
54
- /* @__PURE__ */ jsxs(Stack, { sizing: "component", horizontal: true, justify: "between", items: "center", children: [
55
- /* @__PURE__ */ jsxs(Stack, { sizing: "layout-group", horizontal: true, items: "center", children: [
56
- before,
57
- typeof title === "string" ? /* @__PURE__ */ jsx(Paragraph, { testid: testid ? `${testid}-title` : void 0, className: "text-text-primary-normal", children: title }) : title
58
- ] }),
59
- after
60
- ] }),
61
+ /* @__PURE__ */ jsxs(
62
+ Stack,
63
+ {
64
+ sizing: "component",
65
+ horizontal: true,
66
+ horizontalMobile: true,
67
+ justify: "between",
68
+ items: "center",
69
+ children: [
70
+ /* @__PURE__ */ jsxs(Stack, { sizing: "layout-group", horizontal: true, items: titleAlign, children: [
71
+ before,
72
+ typeof title === "string" ? /* @__PURE__ */ jsx(
73
+ Paragraph,
74
+ {
75
+ testid: testid ? `${testid}-title` : void 0,
76
+ className: "text-text-primary-normal",
77
+ children: title
78
+ }
79
+ ) : title
80
+ ] }),
81
+ after
82
+ ]
83
+ }
84
+ ),
61
85
  /* @__PURE__ */ jsx(
62
86
  "div",
63
87
  {
@@ -0,0 +1,45 @@
1
+ import {
2
+ ImagePlaceholder
3
+ } from "./chunk-QVWYTQKL.js";
4
+
5
+ // src/components/ProductImagePreview/Thumbnail.tsx
6
+ import { jsx } from "react/jsx-runtime";
7
+ function Thumbnail({
8
+ width,
9
+ height,
10
+ src,
11
+ alt,
12
+ isActive,
13
+ onClick,
14
+ isPlaceholder = false
15
+ }) {
16
+ return /* @__PURE__ */ jsx(
17
+ "button",
18
+ {
19
+ type: "button",
20
+ onClick,
21
+ className: [
22
+ "cursor-pointer relative overflow-hidden rounded aspect-square w-full",
23
+ // base radius, square when no explicit size
24
+ "focus:outline-none",
25
+ isActive && !isPlaceholder && "ring-[3px] ring-offset-1 ring-border-action-normal ring-offset-white opacity-70"
26
+ ].join(" "),
27
+ style: { maxWidth: width, maxHeight: height, aspectRatio: "1 / 1" },
28
+ "aria-pressed": isActive && !isPlaceholder ? "true" : "false",
29
+ children: isPlaceholder ? /* @__PURE__ */ jsx(ImagePlaceholder, { width: 115, height: 115 }) : /* @__PURE__ */ jsx(
30
+ "img",
31
+ {
32
+ src,
33
+ alt,
34
+ className: "object-cover w-full h-full select-none",
35
+ draggable: false,
36
+ loading: "lazy"
37
+ }
38
+ )
39
+ }
40
+ );
41
+ }
42
+
43
+ export {
44
+ Thumbnail
45
+ };