@clyrex-digital/clyrex-controls-dev 0.8.1-dev.20260923125229 → 0.8.1-dev.20260924103055

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.
@@ -3,7 +3,7 @@
3
3
  "use client";
4
4
 
5
5
  // src/components/Slider.tsx
6
- import React, { useState, useEffect, Children, cloneElement } from "react";
6
+ import React, { useState, useEffect, Children, cloneElement, useRef } from "react";
7
7
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
8
8
  var Slider = ({
9
9
  children,
@@ -32,6 +32,9 @@ var Slider = ({
32
32
  typeof initialSlidesToShow === "number" ? initialSlidesToShow : initialSlidesToShow.large
33
33
  );
34
34
  const [isPlaying, setIsPlaying] = useState(autoplay);
35
+ const trackRef = useRef(null);
36
+ console.log("trackRef:", trackRef);
37
+ const [videoProgress, setVideoProgress] = useState(null);
35
38
  useEffect(() => {
36
39
  if (typeof initialSlidesToShow === "number") {
37
40
  setSlidesToShowState(initialSlidesToShow);
@@ -52,6 +55,42 @@ var Slider = ({
52
55
  }, [initialSlidesToShow]);
53
56
  useEffect(() => {
54
57
  if (!autoplay) return;
58
+ const activeSlideElement = trackRef.current?.children[currentSlide];
59
+ const videoElement = activeSlideElement?.querySelector("video");
60
+ if (videoElement) {
61
+ videoElement.loop = false;
62
+ setVideoProgress(0);
63
+ if (videoElement.ended) {
64
+ videoElement.currentTime = 0;
65
+ }
66
+ videoElement.play().catch(() => {
67
+ });
68
+ const handleTimeUpdate = () => {
69
+ if (videoElement.duration && !isNaN(videoElement.duration) && videoElement.duration > 0) {
70
+ const pct = videoElement.currentTime / videoElement.duration * 100;
71
+ setVideoProgress(pct);
72
+ }
73
+ };
74
+ const handleVideoEnded = () => {
75
+ setVideoProgress(100);
76
+ nextSlide();
77
+ };
78
+ const handleVideoError = () => {
79
+ nextSlide();
80
+ };
81
+ videoElement.addEventListener("timeupdate", handleTimeUpdate);
82
+ videoElement.addEventListener("loadedmetadata", handleTimeUpdate);
83
+ videoElement.addEventListener("ended", handleVideoEnded, { once: true });
84
+ videoElement.addEventListener("error", handleVideoError, { once: true });
85
+ return () => {
86
+ videoElement.removeEventListener("timeupdate", handleTimeUpdate);
87
+ videoElement.removeEventListener("loadedmetadata", handleTimeUpdate);
88
+ videoElement.removeEventListener("ended", handleVideoEnded);
89
+ videoElement.removeEventListener("error", handleVideoError);
90
+ videoElement.pause();
91
+ setVideoProgress(null);
92
+ };
93
+ }
55
94
  const timer = setInterval(() => {
56
95
  if (isPlaying) {
57
96
  nextSlide();
@@ -148,7 +187,8 @@ var Slider = ({
148
187
  activeClassName: dotActiveClassName,
149
188
  inactiveClassName: dotInactiveClassName,
150
189
  currentSlide,
151
- totalSlides
190
+ totalSlides,
191
+ customProgress: index === currentSlide ? videoProgress : null
152
192
  },
153
193
  index
154
194
  )) }),
@@ -162,6 +202,7 @@ var Slider = ({
162
202
  /* @__PURE__ */ jsx(
163
203
  "div",
164
204
  {
205
+ ref: trackRef,
165
206
  className: "flex h-full",
166
207
  style: {
167
208
  transition: transition ? "transform 0.5s ease" : "none",
@@ -207,7 +248,8 @@ var Slider = ({
207
248
  activeClassName: dotActiveClassName,
208
249
  inactiveClassName: dotInactiveClassName,
209
250
  currentSlide,
210
- totalSlides
251
+ totalSlides,
252
+ customProgress: index === currentSlide ? videoProgress : null
211
253
  },
212
254
  index
213
255
  )) })
@@ -243,7 +285,8 @@ var ProgressPill = ({
243
285
  activeClassName = "",
244
286
  inactiveClassName = "",
245
287
  currentSlide,
246
- totalSlides
288
+ totalSlides,
289
+ customProgress = null
247
290
  }) => {
248
291
  const [progress, setProgress] = useState(0);
249
292
  useEffect(() => {
@@ -252,7 +295,7 @@ var ProgressPill = ({
252
295
  }
253
296
  }, [active, index]);
254
297
  useEffect(() => {
255
- if (!active || !isPlaying) {
298
+ if (!active || !isPlaying || customProgress !== null) {
256
299
  if (!active) {
257
300
  setProgress(0);
258
301
  }
@@ -270,7 +313,7 @@ var ProgressPill = ({
270
313
  }
271
314
  }, 50);
272
315
  return () => clearInterval(interval);
273
- }, [active, isPlaying, duration, index]);
316
+ }, [active, isPlaying, duration, index, customProgress]);
274
317
  const isFilled = index < currentSlide;
275
318
  const isActive = index === currentSlide;
276
319
  const shouldShowProgress = isActive || style === "cumulative" && isFilled;
@@ -305,7 +348,7 @@ var ProgressPill = ({
305
348
  };
306
349
  const renderProgressBar = () => {
307
350
  if (style === "modern" && isActive || style === "cumulative" && shouldShowProgress) {
308
- const displayProgress = style === "cumulative" && isFilled ? 100 : progress;
351
+ const displayProgress = style === "cumulative" && isFilled ? 100 : customProgress !== null && customProgress !== void 0 ? customProgress : progress;
309
352
  return /* @__PURE__ */ jsx(
310
353
  "div",
311
354
  {
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
 
3
3
  // src/components/Slider.tsx
4
- import React, { useState, useEffect, Children, cloneElement } from "react";
4
+ import React, { useState, useEffect, Children, cloneElement, useRef } from "react";
5
5
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
6
6
  var Slider = ({
7
7
  children,
@@ -30,6 +30,9 @@ var Slider = ({
30
30
  typeof initialSlidesToShow === "number" ? initialSlidesToShow : initialSlidesToShow.large
31
31
  );
32
32
  const [isPlaying, setIsPlaying] = useState(autoplay);
33
+ const trackRef = useRef(null);
34
+ console.log("trackRef:", trackRef);
35
+ const [videoProgress, setVideoProgress] = useState(null);
33
36
  useEffect(() => {
34
37
  if (typeof initialSlidesToShow === "number") {
35
38
  setSlidesToShowState(initialSlidesToShow);
@@ -50,6 +53,42 @@ var Slider = ({
50
53
  }, [initialSlidesToShow]);
51
54
  useEffect(() => {
52
55
  if (!autoplay) return;
56
+ const activeSlideElement = trackRef.current?.children[currentSlide];
57
+ const videoElement = activeSlideElement?.querySelector("video");
58
+ if (videoElement) {
59
+ videoElement.loop = false;
60
+ setVideoProgress(0);
61
+ if (videoElement.ended) {
62
+ videoElement.currentTime = 0;
63
+ }
64
+ videoElement.play().catch(() => {
65
+ });
66
+ const handleTimeUpdate = () => {
67
+ if (videoElement.duration && !isNaN(videoElement.duration) && videoElement.duration > 0) {
68
+ const pct = videoElement.currentTime / videoElement.duration * 100;
69
+ setVideoProgress(pct);
70
+ }
71
+ };
72
+ const handleVideoEnded = () => {
73
+ setVideoProgress(100);
74
+ nextSlide();
75
+ };
76
+ const handleVideoError = () => {
77
+ nextSlide();
78
+ };
79
+ videoElement.addEventListener("timeupdate", handleTimeUpdate);
80
+ videoElement.addEventListener("loadedmetadata", handleTimeUpdate);
81
+ videoElement.addEventListener("ended", handleVideoEnded, { once: true });
82
+ videoElement.addEventListener("error", handleVideoError, { once: true });
83
+ return () => {
84
+ videoElement.removeEventListener("timeupdate", handleTimeUpdate);
85
+ videoElement.removeEventListener("loadedmetadata", handleTimeUpdate);
86
+ videoElement.removeEventListener("ended", handleVideoEnded);
87
+ videoElement.removeEventListener("error", handleVideoError);
88
+ videoElement.pause();
89
+ setVideoProgress(null);
90
+ };
91
+ }
53
92
  const timer = setInterval(() => {
54
93
  if (isPlaying) {
55
94
  nextSlide();
@@ -146,7 +185,8 @@ var Slider = ({
146
185
  activeClassName: dotActiveClassName,
147
186
  inactiveClassName: dotInactiveClassName,
148
187
  currentSlide,
149
- totalSlides
188
+ totalSlides,
189
+ customProgress: index === currentSlide ? videoProgress : null
150
190
  },
151
191
  index
152
192
  )) }),
@@ -160,6 +200,7 @@ var Slider = ({
160
200
  /* @__PURE__ */ jsx(
161
201
  "div",
162
202
  {
203
+ ref: trackRef,
163
204
  className: "flex h-full",
164
205
  style: {
165
206
  transition: transition ? "transform 0.5s ease" : "none",
@@ -205,7 +246,8 @@ var Slider = ({
205
246
  activeClassName: dotActiveClassName,
206
247
  inactiveClassName: dotInactiveClassName,
207
248
  currentSlide,
208
- totalSlides
249
+ totalSlides,
250
+ customProgress: index === currentSlide ? videoProgress : null
209
251
  },
210
252
  index
211
253
  )) })
@@ -241,7 +283,8 @@ var ProgressPill = ({
241
283
  activeClassName = "",
242
284
  inactiveClassName = "",
243
285
  currentSlide,
244
- totalSlides
286
+ totalSlides,
287
+ customProgress = null
245
288
  }) => {
246
289
  const [progress, setProgress] = useState(0);
247
290
  useEffect(() => {
@@ -250,7 +293,7 @@ var ProgressPill = ({
250
293
  }
251
294
  }, [active, index]);
252
295
  useEffect(() => {
253
- if (!active || !isPlaying) {
296
+ if (!active || !isPlaying || customProgress !== null) {
254
297
  if (!active) {
255
298
  setProgress(0);
256
299
  }
@@ -268,7 +311,7 @@ var ProgressPill = ({
268
311
  }
269
312
  }, 50);
270
313
  return () => clearInterval(interval);
271
- }, [active, isPlaying, duration, index]);
314
+ }, [active, isPlaying, duration, index, customProgress]);
272
315
  const isFilled = index < currentSlide;
273
316
  const isActive = index === currentSlide;
274
317
  const shouldShowProgress = isActive || style === "cumulative" && isFilled;
@@ -303,7 +346,7 @@ var ProgressPill = ({
303
346
  };
304
347
  const renderProgressBar = () => {
305
348
  if (style === "modern" && isActive || style === "cumulative" && shouldShowProgress) {
306
- const displayProgress = style === "cumulative" && isFilled ? 100 : progress;
349
+ const displayProgress = style === "cumulative" && isFilled ? 100 : customProgress !== null && customProgress !== void 0 ? customProgress : progress;
307
350
  return /* @__PURE__ */ jsx(
308
351
  "div",
309
352
  {
package/dist/index.js CHANGED
@@ -6096,6 +6096,9 @@ var init_Slider = __esm({
6096
6096
  typeof initialSlidesToShow === "number" ? initialSlidesToShow : initialSlidesToShow.large
6097
6097
  );
6098
6098
  const [isPlaying, setIsPlaying] = (0, import_react60.useState)(autoplay);
6099
+ const trackRef = (0, import_react60.useRef)(null);
6100
+ console.log("trackRef:", trackRef);
6101
+ const [videoProgress, setVideoProgress] = (0, import_react60.useState)(null);
6099
6102
  (0, import_react60.useEffect)(() => {
6100
6103
  if (typeof initialSlidesToShow === "number") {
6101
6104
  setSlidesToShowState(initialSlidesToShow);
@@ -6116,6 +6119,42 @@ var init_Slider = __esm({
6116
6119
  }, [initialSlidesToShow]);
6117
6120
  (0, import_react60.useEffect)(() => {
6118
6121
  if (!autoplay) return;
6122
+ const activeSlideElement = trackRef.current?.children[currentSlide];
6123
+ const videoElement = activeSlideElement?.querySelector("video");
6124
+ if (videoElement) {
6125
+ videoElement.loop = false;
6126
+ setVideoProgress(0);
6127
+ if (videoElement.ended) {
6128
+ videoElement.currentTime = 0;
6129
+ }
6130
+ videoElement.play().catch(() => {
6131
+ });
6132
+ const handleTimeUpdate = () => {
6133
+ if (videoElement.duration && !isNaN(videoElement.duration) && videoElement.duration > 0) {
6134
+ const pct = videoElement.currentTime / videoElement.duration * 100;
6135
+ setVideoProgress(pct);
6136
+ }
6137
+ };
6138
+ const handleVideoEnded = () => {
6139
+ setVideoProgress(100);
6140
+ nextSlide();
6141
+ };
6142
+ const handleVideoError = () => {
6143
+ nextSlide();
6144
+ };
6145
+ videoElement.addEventListener("timeupdate", handleTimeUpdate);
6146
+ videoElement.addEventListener("loadedmetadata", handleTimeUpdate);
6147
+ videoElement.addEventListener("ended", handleVideoEnded, { once: true });
6148
+ videoElement.addEventListener("error", handleVideoError, { once: true });
6149
+ return () => {
6150
+ videoElement.removeEventListener("timeupdate", handleTimeUpdate);
6151
+ videoElement.removeEventListener("loadedmetadata", handleTimeUpdate);
6152
+ videoElement.removeEventListener("ended", handleVideoEnded);
6153
+ videoElement.removeEventListener("error", handleVideoError);
6154
+ videoElement.pause();
6155
+ setVideoProgress(null);
6156
+ };
6157
+ }
6119
6158
  const timer = setInterval(() => {
6120
6159
  if (isPlaying) {
6121
6160
  nextSlide();
@@ -6212,7 +6251,8 @@ var init_Slider = __esm({
6212
6251
  activeClassName: dotActiveClassName,
6213
6252
  inactiveClassName: dotInactiveClassName,
6214
6253
  currentSlide,
6215
- totalSlides
6254
+ totalSlides,
6255
+ customProgress: index === currentSlide ? videoProgress : null
6216
6256
  },
6217
6257
  index
6218
6258
  )) }),
@@ -6226,6 +6266,7 @@ var init_Slider = __esm({
6226
6266
  /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(
6227
6267
  "div",
6228
6268
  {
6269
+ ref: trackRef,
6229
6270
  className: "flex h-full",
6230
6271
  style: {
6231
6272
  transition: transition ? "transform 0.5s ease" : "none",
@@ -6271,7 +6312,8 @@ var init_Slider = __esm({
6271
6312
  activeClassName: dotActiveClassName,
6272
6313
  inactiveClassName: dotInactiveClassName,
6273
6314
  currentSlide,
6274
- totalSlides
6315
+ totalSlides,
6316
+ customProgress: index === currentSlide ? videoProgress : null
6275
6317
  },
6276
6318
  index
6277
6319
  )) })
@@ -6307,7 +6349,8 @@ var init_Slider = __esm({
6307
6349
  activeClassName = "",
6308
6350
  inactiveClassName = "",
6309
6351
  currentSlide,
6310
- totalSlides
6352
+ totalSlides,
6353
+ customProgress = null
6311
6354
  }) => {
6312
6355
  const [progress, setProgress] = (0, import_react60.useState)(0);
6313
6356
  (0, import_react60.useEffect)(() => {
@@ -6316,7 +6359,7 @@ var init_Slider = __esm({
6316
6359
  }
6317
6360
  }, [active, index]);
6318
6361
  (0, import_react60.useEffect)(() => {
6319
- if (!active || !isPlaying) {
6362
+ if (!active || !isPlaying || customProgress !== null) {
6320
6363
  if (!active) {
6321
6364
  setProgress(0);
6322
6365
  }
@@ -6334,7 +6377,7 @@ var init_Slider = __esm({
6334
6377
  }
6335
6378
  }, 50);
6336
6379
  return () => clearInterval(interval);
6337
- }, [active, isPlaying, duration, index]);
6380
+ }, [active, isPlaying, duration, index, customProgress]);
6338
6381
  const isFilled = index < currentSlide;
6339
6382
  const isActive = index === currentSlide;
6340
6383
  const shouldShowProgress = isActive || style === "cumulative" && isFilled;
@@ -6369,7 +6412,7 @@ var init_Slider = __esm({
6369
6412
  };
6370
6413
  const renderProgressBar = () => {
6371
6414
  if (style === "modern" && isActive || style === "cumulative" && shouldShowProgress) {
6372
- const displayProgress = style === "cumulative" && isFilled ? 100 : progress;
6415
+ const displayProgress = style === "cumulative" && isFilled ? 100 : customProgress !== null && customProgress !== void 0 ? customProgress : progress;
6373
6416
  return /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(
6374
6417
  "div",
6375
6418
  {
package/dist/index.mjs CHANGED
@@ -2423,7 +2423,7 @@ var Pagination = dynamic13(() => import("./Pagination-STOHS3LO.mjs"), { ssr: tru
2423
2423
  var DataBindingControls = dynamic13(() => import("./DataBindingControls-SLNZLI3I.mjs"), {
2424
2424
  ssr: true
2425
2425
  });
2426
- var Slider = dynamic13(() => import("./Slider-IVPJBPE5.mjs"), {
2426
+ var Slider = dynamic13(() => import("./Slider-42T6THEQ.mjs"), {
2427
2427
  ssr: false
2428
2428
  });
2429
2429
  function toCamelCase(str) {
package/dist/server.js CHANGED
@@ -6094,6 +6094,9 @@ var init_Slider = __esm({
6094
6094
  typeof initialSlidesToShow === "number" ? initialSlidesToShow : initialSlidesToShow.large
6095
6095
  );
6096
6096
  const [isPlaying, setIsPlaying] = (0, import_react60.useState)(autoplay);
6097
+ const trackRef = (0, import_react60.useRef)(null);
6098
+ console.log("trackRef:", trackRef);
6099
+ const [videoProgress, setVideoProgress] = (0, import_react60.useState)(null);
6097
6100
  (0, import_react60.useEffect)(() => {
6098
6101
  if (typeof initialSlidesToShow === "number") {
6099
6102
  setSlidesToShowState(initialSlidesToShow);
@@ -6114,6 +6117,42 @@ var init_Slider = __esm({
6114
6117
  }, [initialSlidesToShow]);
6115
6118
  (0, import_react60.useEffect)(() => {
6116
6119
  if (!autoplay) return;
6120
+ const activeSlideElement = trackRef.current?.children[currentSlide];
6121
+ const videoElement = activeSlideElement?.querySelector("video");
6122
+ if (videoElement) {
6123
+ videoElement.loop = false;
6124
+ setVideoProgress(0);
6125
+ if (videoElement.ended) {
6126
+ videoElement.currentTime = 0;
6127
+ }
6128
+ videoElement.play().catch(() => {
6129
+ });
6130
+ const handleTimeUpdate = () => {
6131
+ if (videoElement.duration && !isNaN(videoElement.duration) && videoElement.duration > 0) {
6132
+ const pct = videoElement.currentTime / videoElement.duration * 100;
6133
+ setVideoProgress(pct);
6134
+ }
6135
+ };
6136
+ const handleVideoEnded = () => {
6137
+ setVideoProgress(100);
6138
+ nextSlide();
6139
+ };
6140
+ const handleVideoError = () => {
6141
+ nextSlide();
6142
+ };
6143
+ videoElement.addEventListener("timeupdate", handleTimeUpdate);
6144
+ videoElement.addEventListener("loadedmetadata", handleTimeUpdate);
6145
+ videoElement.addEventListener("ended", handleVideoEnded, { once: true });
6146
+ videoElement.addEventListener("error", handleVideoError, { once: true });
6147
+ return () => {
6148
+ videoElement.removeEventListener("timeupdate", handleTimeUpdate);
6149
+ videoElement.removeEventListener("loadedmetadata", handleTimeUpdate);
6150
+ videoElement.removeEventListener("ended", handleVideoEnded);
6151
+ videoElement.removeEventListener("error", handleVideoError);
6152
+ videoElement.pause();
6153
+ setVideoProgress(null);
6154
+ };
6155
+ }
6117
6156
  const timer = setInterval(() => {
6118
6157
  if (isPlaying) {
6119
6158
  nextSlide();
@@ -6210,7 +6249,8 @@ var init_Slider = __esm({
6210
6249
  activeClassName: dotActiveClassName,
6211
6250
  inactiveClassName: dotInactiveClassName,
6212
6251
  currentSlide,
6213
- totalSlides
6252
+ totalSlides,
6253
+ customProgress: index === currentSlide ? videoProgress : null
6214
6254
  },
6215
6255
  index
6216
6256
  )) }),
@@ -6224,6 +6264,7 @@ var init_Slider = __esm({
6224
6264
  /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(
6225
6265
  "div",
6226
6266
  {
6267
+ ref: trackRef,
6227
6268
  className: "flex h-full",
6228
6269
  style: {
6229
6270
  transition: transition ? "transform 0.5s ease" : "none",
@@ -6269,7 +6310,8 @@ var init_Slider = __esm({
6269
6310
  activeClassName: dotActiveClassName,
6270
6311
  inactiveClassName: dotInactiveClassName,
6271
6312
  currentSlide,
6272
- totalSlides
6313
+ totalSlides,
6314
+ customProgress: index === currentSlide ? videoProgress : null
6273
6315
  },
6274
6316
  index
6275
6317
  )) })
@@ -6305,7 +6347,8 @@ var init_Slider = __esm({
6305
6347
  activeClassName = "",
6306
6348
  inactiveClassName = "",
6307
6349
  currentSlide,
6308
- totalSlides
6350
+ totalSlides,
6351
+ customProgress = null
6309
6352
  }) => {
6310
6353
  const [progress, setProgress] = (0, import_react60.useState)(0);
6311
6354
  (0, import_react60.useEffect)(() => {
@@ -6314,7 +6357,7 @@ var init_Slider = __esm({
6314
6357
  }
6315
6358
  }, [active, index]);
6316
6359
  (0, import_react60.useEffect)(() => {
6317
- if (!active || !isPlaying) {
6360
+ if (!active || !isPlaying || customProgress !== null) {
6318
6361
  if (!active) {
6319
6362
  setProgress(0);
6320
6363
  }
@@ -6332,7 +6375,7 @@ var init_Slider = __esm({
6332
6375
  }
6333
6376
  }, 50);
6334
6377
  return () => clearInterval(interval);
6335
- }, [active, isPlaying, duration, index]);
6378
+ }, [active, isPlaying, duration, index, customProgress]);
6336
6379
  const isFilled = index < currentSlide;
6337
6380
  const isActive = index === currentSlide;
6338
6381
  const shouldShowProgress = isActive || style === "cumulative" && isFilled;
@@ -6367,7 +6410,7 @@ var init_Slider = __esm({
6367
6410
  };
6368
6411
  const renderProgressBar = () => {
6369
6412
  if (style === "modern" && isActive || style === "cumulative" && shouldShowProgress) {
6370
- const displayProgress = style === "cumulative" && isFilled ? 100 : progress;
6413
+ const displayProgress = style === "cumulative" && isFilled ? 100 : customProgress !== null && customProgress !== void 0 ? customProgress : progress;
6371
6414
  return /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(
6372
6415
  "div",
6373
6416
  {
package/dist/server.mjs CHANGED
@@ -2391,7 +2391,7 @@ var Pagination = dynamic13(() => import("./Pagination-V53JCR6P.mjs"), { ssr: tru
2391
2391
  var DataBindingControls = dynamic13(() => import("./DataBindingControls-UDRT7JFF.mjs"), {
2392
2392
  ssr: true
2393
2393
  });
2394
- var Slider = dynamic13(() => import("./Slider-QIGKP6AE.mjs"), {
2394
+ var Slider = dynamic13(() => import("./Slider-UNNVADVP.mjs"), {
2395
2395
  ssr: false
2396
2396
  });
2397
2397
  function toCamelCase(str) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clyrex-digital/clyrex-controls-dev",
3
- "version": "0.8.1-dev.20260923125229",
3
+ "version": "0.8.1-dev.20260924103055",
4
4
  "description": "Reusable React components",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",