@tarsis/toolkit 0.5.5 → 0.5.7

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.
@@ -52070,28 +52070,35 @@ const styles$4H = {
52070
52070
  animate: animate$1};
52071
52071
 
52072
52072
  const BubblyParticlesButton = () => {
52073
- return /* @__PURE__ */ jsx(
52074
- "button",
52075
- {
52076
- className: styles$4H.root,
52077
- onClick: (e) => {
52078
- const button = e.currentTarget;
52073
+ const animationRef = useRef(null);
52074
+ const handleClick = (e) => {
52075
+ const button = e.currentTarget;
52076
+ if (animationRef.current) {
52077
+ animationRef.current.cancel();
52078
+ animationRef.current = null;
52079
+ }
52080
+ button.classList.remove(styles$4H.animate);
52081
+ requestAnimationFrame(() => {
52082
+ button.classList.add(styles$4H.animate);
52083
+ animationRef.current = button.animate([{ opacity: 1 }, { opacity: 1 }], {
52084
+ duration: 750,
52085
+ fill: "forwards",
52086
+ easing: "ease-in-out"
52087
+ });
52088
+ animationRef.current.addEventListener("finish", () => {
52079
52089
  button.classList.remove(styles$4H.animate);
52080
- button.classList.add(styles$4H.animate);
52081
- setTimeout(() => {
52082
- button.classList.remove(styles$4H.animate);
52083
- }, 700);
52084
- },
52085
- children: "Click me!"
52086
- }
52087
- );
52090
+ animationRef.current = null;
52091
+ });
52092
+ });
52093
+ };
52094
+ return /* @__PURE__ */ jsx("button", { className: styles$4H.root, onClick: handleClick, children: "Click me!" });
52088
52095
  };
52089
52096
 
52090
- const root$4i = "_root_cfvmf_1";
52091
- const button$o = "_button_cfvmf_13";
52092
- const p$1 = "_p_cfvmf_26";
52093
- const text$z = "_text_cfvmf_26";
52094
- const effects = "_effects_cfvmf_240";
52097
+ const root$4i = "_root_1wli6_1";
52098
+ const button$o = "_button_1wli6_13";
52099
+ const p$1 = "_p_1wli6_26";
52100
+ const text$z = "_text_1wli6_26";
52101
+ const effects = "_effects_1wli6_240";
52095
52102
  const styles$4G = {
52096
52103
  root: root$4i,
52097
52104
  button: button$o,
@@ -59654,11 +59661,6 @@ var module = {};
59654
59661
  const confetti = module.exports;
59655
59662
  module.exports.create;
59656
59663
 
59657
- const root$4d = "_root_s1prb_1";
59658
- const styles$4z = {
59659
- root: root$4d
59660
- };
59661
-
59662
59664
  const LayoutGroupContext = createContext({});
59663
59665
 
59664
59666
  const useIsomorphicLayoutEffect$2 = isBrowser$1 ? useLayoutEffect : useEffect;
@@ -61772,11 +61774,12 @@ function distance2D(a, b) {
61772
61774
  return Math.sqrt(xDelta ** 2 + yDelta ** 2);
61773
61775
  }
61774
61776
 
61777
+ const overflowStyles = /*#__PURE__*/ new Set(["auto", "scroll"]);
61775
61778
  /**
61776
61779
  * @internal
61777
61780
  */
61778
61781
  class PanSession {
61779
- constructor(event, handlers, { transformPagePoint, contextWindow = window, dragSnapToOrigin = false, distanceThreshold = 3, } = {}) {
61782
+ constructor(event, handlers, { transformPagePoint, contextWindow = window, dragSnapToOrigin = false, distanceThreshold = 3, element, } = {}) {
61780
61783
  /**
61781
61784
  * @internal
61782
61785
  */
@@ -61797,6 +61800,22 @@ class PanSession {
61797
61800
  * @internal
61798
61801
  */
61799
61802
  this.contextWindow = window;
61803
+ /**
61804
+ * Scroll positions of scrollable ancestors and window.
61805
+ * @internal
61806
+ */
61807
+ this.scrollPositions = new Map();
61808
+ /**
61809
+ * Cleanup function for scroll listeners.
61810
+ * @internal
61811
+ */
61812
+ this.removeScrollListeners = null;
61813
+ this.onElementScroll = (event) => {
61814
+ this.handleScroll(event.target);
61815
+ };
61816
+ this.onWindowScroll = () => {
61817
+ this.handleScroll(window);
61818
+ };
61800
61819
  this.updatePoint = () => {
61801
61820
  if (!(this.lastMoveEvent && this.lastMoveEventInfo))
61802
61821
  return;
@@ -61859,12 +61878,93 @@ class PanSession {
61859
61878
  onSessionStart &&
61860
61879
  onSessionStart(event, getPanInfo(initialInfo, this.history));
61861
61880
  this.removeListeners = pipe$1(addPointerEvent(this.contextWindow, "pointermove", this.handlePointerMove), addPointerEvent(this.contextWindow, "pointerup", this.handlePointerUp), addPointerEvent(this.contextWindow, "pointercancel", this.handlePointerUp));
61881
+ // Start scroll tracking if element provided
61882
+ if (element) {
61883
+ this.startScrollTracking(element);
61884
+ }
61885
+ }
61886
+ /**
61887
+ * Start tracking scroll on ancestors and window.
61888
+ */
61889
+ startScrollTracking(element) {
61890
+ // Store initial scroll positions for scrollable ancestors
61891
+ let current = element.parentElement;
61892
+ while (current) {
61893
+ const style = getComputedStyle(current);
61894
+ if (overflowStyles.has(style.overflowX) ||
61895
+ overflowStyles.has(style.overflowY)) {
61896
+ this.scrollPositions.set(current, {
61897
+ x: current.scrollLeft,
61898
+ y: current.scrollTop,
61899
+ });
61900
+ }
61901
+ current = current.parentElement;
61902
+ }
61903
+ // Track window scroll
61904
+ this.scrollPositions.set(window, {
61905
+ x: window.scrollX,
61906
+ y: window.scrollY,
61907
+ });
61908
+ // Capture listener catches element scroll events as they bubble
61909
+ window.addEventListener("scroll", this.onElementScroll, {
61910
+ capture: true,
61911
+ passive: true,
61912
+ });
61913
+ // Direct window scroll listener (window scroll doesn't bubble)
61914
+ window.addEventListener("scroll", this.onWindowScroll, {
61915
+ passive: true,
61916
+ });
61917
+ this.removeScrollListeners = () => {
61918
+ window.removeEventListener("scroll", this.onElementScroll, {
61919
+ capture: true,
61920
+ });
61921
+ window.removeEventListener("scroll", this.onWindowScroll);
61922
+ };
61923
+ }
61924
+ /**
61925
+ * Handle scroll compensation during drag.
61926
+ *
61927
+ * For element scroll: adjusts history origin since pageX/pageY doesn't change.
61928
+ * For window scroll: adjusts lastMoveEventInfo since pageX/pageY would change.
61929
+ */
61930
+ handleScroll(target) {
61931
+ const initial = this.scrollPositions.get(target);
61932
+ if (!initial)
61933
+ return;
61934
+ const isWindow = target === window;
61935
+ const current = isWindow
61936
+ ? { x: window.scrollX, y: window.scrollY }
61937
+ : {
61938
+ x: target.scrollLeft,
61939
+ y: target.scrollTop,
61940
+ };
61941
+ const delta = { x: current.x - initial.x, y: current.y - initial.y };
61942
+ if (delta.x === 0 && delta.y === 0)
61943
+ return;
61944
+ if (isWindow) {
61945
+ // Window scroll: pageX/pageY changes, so update lastMoveEventInfo
61946
+ if (this.lastMoveEventInfo) {
61947
+ this.lastMoveEventInfo.point.x += delta.x;
61948
+ this.lastMoveEventInfo.point.y += delta.y;
61949
+ }
61950
+ }
61951
+ else {
61952
+ // Element scroll: pageX/pageY unchanged, so adjust history origin
61953
+ if (this.history.length > 0) {
61954
+ this.history[0].x -= delta.x;
61955
+ this.history[0].y -= delta.y;
61956
+ }
61957
+ }
61958
+ this.scrollPositions.set(target, current);
61959
+ frame$2.update(this.updatePoint, true);
61862
61960
  }
61863
61961
  updateHandlers(handlers) {
61864
61962
  this.handlers = handlers;
61865
61963
  }
61866
61964
  end() {
61867
61965
  this.removeListeners && this.removeListeners();
61966
+ this.removeScrollListeners && this.removeScrollListeners();
61967
+ this.scrollPositions.clear();
61868
61968
  cancelFrame(this.updatePoint);
61869
61969
  }
61870
61970
  }
@@ -62115,7 +62215,7 @@ class VisualElementDragControls {
62115
62215
  this.visualElement.projection.target = undefined;
62116
62216
  }
62117
62217
  /**
62118
- * Record gesture origin
62218
+ * Record gesture origin and pointer offset
62119
62219
  */
62120
62220
  eachAxis((axis) => {
62121
62221
  let current = this.getAxisMotionValue(axis).get() || 0;
@@ -62196,6 +62296,7 @@ class VisualElementDragControls {
62196
62296
  dragSnapToOrigin,
62197
62297
  distanceThreshold,
62198
62298
  contextWindow: getContextWindow(this.visualElement),
62299
+ element: this.visualElement.current,
62199
62300
  });
62200
62301
  }
62201
62302
  /**
@@ -65115,6 +65216,11 @@ function useAnimate() {
65115
65216
  return [scope, animate];
65116
65217
  }
65117
65218
 
65219
+ const root$4d = "_root_s1prb_1";
65220
+ const styles$4z = {
65221
+ root: root$4d
65222
+ };
65223
+
65118
65224
  const useConfetti = () => useCallback(async (rect, options = {}) => {
65119
65225
  const { x, y, width, height } = rect;
65120
65226
  const origin = {
@@ -68100,9 +68206,9 @@ const NeonButton = ({ className = "", ...rest }) => {
68100
68206
  return /* @__PURE__ */ jsx("button", { type: "button", ...rest, className: clsx(styles$48.root, className), children: "Neon" });
68101
68207
  };
68102
68208
 
68103
- const root$3P = "_root_1xfid_2";
68104
- const i$6 = "_i_1xfid_22";
68105
- const text$s = "_text_1xfid_482";
68209
+ const root$3P = "_root_1cxbn_2";
68210
+ const i$6 = "_i_1cxbn_22";
68211
+ const text$s = "_text_1cxbn_482";
68106
68212
  const styles$47 = {
68107
68213
  root: root$3P,
68108
68214
  i: i$6,
@@ -69428,30 +69534,15 @@ const SquishButton = ({ children, className = "", ...rest }) => {
69428
69534
  return /* @__PURE__ */ jsx("button", { type: "button", ...rest, className: clsx(styles$3P.root, className), children });
69429
69535
  };
69430
69536
 
69431
- const root$3w = "_root_v4ko6_1";
69432
- const pending = "_pending_v4ko6_12";
69433
- const loading$1 = "_loading_v4ko6_17";
69434
- const success$1 = "_success_v4ko6_20";
69435
- const icon$f = "_icon_v4ko6_25";
69436
- const fingerprint = "_fingerprint_v4ko6_50";
69437
- const styles$3O = {
69438
- root: root$3w,
69439
- pending: pending,
69440
- loading: loading$1,
69441
- success: success$1,
69442
- icon: icon$f,
69443
- fingerprint: fingerprint
69444
- };
69445
-
69446
- const root$3v = "_root_g5l4r_1";
69537
+ const root$3w = "_root_g5l4r_1";
69447
69538
  const a$3 = "_a_g5l4r_9";
69448
69539
  const b$2 = "_b_g5l4r_10";
69449
69540
  const c$3 = "_c_g5l4r_11";
69450
69541
  const d$3 = "_d_g5l4r_12";
69451
69542
  const e$3 = "_e_g5l4r_13";
69452
69543
  const active$m = "_active_g5l4r_20";
69453
- const styles$3N = {
69454
- root: root$3v,
69544
+ const styles$3O = {
69545
+ root: root$3w,
69455
69546
  a: a$3,
69456
69547
  b: b$2,
69457
69548
  c: c$3,
@@ -69464,7 +69555,7 @@ const Fingerprint = ({ className = "" }) => {
69464
69555
  return /* @__PURE__ */ jsx(
69465
69556
  "svg",
69466
69557
  {
69467
- className: clsx(styles$3N.root, className),
69558
+ className: clsx(styles$3O.root, className),
69468
69559
  width: "34px",
69469
69560
  height: "34px",
69470
69561
  viewBox: "0 0 34 34",
@@ -69486,35 +69577,35 @@ const Fingerprint = ({ className = "" }) => {
69486
69577
  /* @__PURE__ */ jsx(
69487
69578
  "path",
69488
69579
  {
69489
- className: clsx(styles$3N.a, { [styles$3N.active]: isActive }),
69580
+ className: clsx(styles$3O.a, { [styles$3O.active]: isActive }),
69490
69581
  d: "M3.14414922,1.97419264 C3.14414922,1.97419264 5.30885997,0.506351808 9.06036082,0.506351808 C12.8118617,0.506351808 14.781903,1.97419264 14.781903,1.97419264"
69491
69582
  }
69492
69583
  ),
69493
69584
  /* @__PURE__ */ jsx(
69494
69585
  "path",
69495
69586
  {
69496
- className: clsx(styles$3N.b, { [styles$3N.active]: isActive }),
69587
+ className: clsx(styles$3O.b, { [styles$3O.active]: isActive }),
69497
69588
  d: "M0.466210729,7.27628774 C0.466210729,7.27628774 3.19024811,2.75878123 9.09512428,2.96502806 C15.0000005,3.17127489 17.4745821,7.17202872 17.4745821,7.17202872"
69498
69589
  }
69499
69590
  ),
69500
69591
  /* @__PURE__ */ jsx(
69501
69592
  "path",
69502
69593
  {
69503
- className: clsx(styles$3N.c, { [styles$3N.active]: isActive }),
69594
+ className: clsx(styles$3O.c, { [styles$3O.active]: isActive }),
69504
69595
  d: "M2,16.4687762 C2,16.4687762 1.12580828,14.9305411 1.27082278,11.9727304 C1.45871447,8.14036841 5.19587478,5.30175361 9.05270871,5.30175361 C12.9095426,5.30175361 15.0000001,7.82879552 15.8975926,9.33195218 C16.5919575,10.4947729 17.7597991,14.4361492 14.6226101,15.0206592 C12.41268,15.4324056 11.5911303,13.4911155 11.5911303,12.9859143 C11.5911303,11.9727302 11.1054172,10.2336826 9.05270848,10.2336826 C6.99999978,10.2336826 6.11384543,11.8665663 6.4593664,13.7955614 C6.6532895,14.8782069 7.59887942,18.3701197 12.0173963,19.5605638"
69505
69596
  }
69506
69597
  ),
69507
69598
  /* @__PURE__ */ jsx(
69508
69599
  "path",
69509
69600
  {
69510
- className: clsx(styles$3N.d, { [styles$3N.active]: isActive }),
69601
+ className: clsx(styles$3O.d, { [styles$3O.active]: isActive }),
69511
69602
  d: "M7.0204614,19.6657197 C7.0204614,19.6657197 3.88328263,16.5690127 3.88328268,12.9603117 C3.88328274,9.35161068 6.59923746,7.80642537 9.0076008,7.80642554 C11.4159641,7.8064257 14.1798468,9.55747124 14.1798468,12.759562"
69512
69603
  }
69513
69604
  ),
69514
69605
  /* @__PURE__ */ jsx(
69515
69606
  "path",
69516
69607
  {
69517
- className: clsx(styles$3N.e, { [styles$3N.active]: isActive }),
69608
+ className: clsx(styles$3O.e, { [styles$3O.active]: isActive }),
69518
69609
  d: "M8.95538742,12.6694189 C8.95538742,12.6694189 9.04883608,18.1288401 15.069217,17.3610597"
69519
69610
  }
69520
69611
  )
@@ -69525,15 +69616,30 @@ const Fingerprint = ({ className = "" }) => {
69525
69616
  );
69526
69617
  };
69527
69618
 
69619
+ const root$3v = "_root_v4ko6_1";
69620
+ const pending = "_pending_v4ko6_12";
69621
+ const loading$1 = "_loading_v4ko6_17";
69622
+ const success$1 = "_success_v4ko6_20";
69623
+ const icon$f = "_icon_v4ko6_25";
69624
+ const fingerprint = "_fingerprint_v4ko6_50";
69625
+ const styles$3N = {
69626
+ root: root$3v,
69627
+ pending: pending,
69628
+ loading: loading$1,
69629
+ success: success$1,
69630
+ icon: icon$f,
69631
+ fingerprint: fingerprint
69632
+ };
69633
+
69528
69634
  const SuccessLoader = ({ status }) => /* @__PURE__ */ jsx(
69529
69635
  "div",
69530
69636
  {
69531
- className: clsx(styles$3O.root, {
69532
- [styles$3O.success]: status === "success",
69533
- [styles$3O.loading]: status === "loading",
69534
- [styles$3O.pending]: status === "pending"
69637
+ className: clsx(styles$3N.root, {
69638
+ [styles$3N.success]: status === "success",
69639
+ [styles$3N.loading]: status === "loading",
69640
+ [styles$3N.pending]: status === "pending"
69535
69641
  }),
69536
- children: status === "success" ? /* @__PURE__ */ jsx("span", { className: styles$3O.icon }) : status === "pending" ? /* @__PURE__ */ jsx(Fingerprint, { className: styles$3O.fingerprint }) : null
69642
+ children: status === "success" ? /* @__PURE__ */ jsx("span", { className: styles$3N.icon }) : status === "pending" ? /* @__PURE__ */ jsx(Fingerprint, { className: styles$3N.fingerprint }) : null
69537
69643
  }
69538
69644
  );
69539
69645
 
@@ -71049,54 +71155,6 @@ const BulletsCarousel = () => {
71049
71155
  ] }) });
71050
71156
  };
71051
71157
 
71052
- const MOCK_CARD_CAROUSEL_ITEMS = [
71053
- {
71054
- id: "Tour",
71055
- image: "https://images.pexels.com/photos/991012/pexels-photo-991012.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940",
71056
- subtitle: "The grand moment",
71057
- title: "Le tour",
71058
- description: "Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam.",
71059
- href: "#",
71060
- hrefTitle: "Explore the tour"
71061
- },
71062
- {
71063
- id: "Window",
71064
- image: "https://images.pexels.com/photos/921294/pexels-photo-921294.png?auto=compress&cs=tinysrgb&h=750&w=1260",
71065
- subtitle: "The big window",
71066
- title: "Minimal window",
71067
- description: "Clear Glass Window With Brown and White Wooden Frame iste natus error sit voluptatem accusantium doloremque laudantium.",
71068
- href: "#",
71069
- hrefTitle: "Read the article"
71070
- },
71071
- {
71072
- id: "Palms",
71073
- image: "https://images.pexels.com/photos/92733/pexels-photo-92733.jpeg?auto=compress&cs=tinysrgb&h=750&w=1260",
71074
- subtitle: "Tropical palms",
71075
- title: "Palms",
71076
- description: "Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam.",
71077
- href: "#",
71078
- hrefTitle: "Explore the palms"
71079
- },
71080
- {
71081
- id: "Beach",
71082
- image: "https://images.pexels.com/photos/1008732/pexels-photo-1008732.jpeg?auto=compress&cs=tinysrgb&h=750&w=1260",
71083
- subtitle: "Beach",
71084
- title: "The beach",
71085
- description: "Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam.",
71086
- href: "#",
71087
- hrefTitle: "Explore the beach"
71088
- },
71089
- {
71090
- id: "Building",
71091
- image: "https://images.pexels.com/photos/1029614/pexels-photo-1029614.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940",
71092
- subtitle: "The white building",
71093
- title: "White Building",
71094
- description: "Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam.",
71095
- href: "#",
71096
- hrefTitle: "Read article"
71097
- }
71098
- ];
71099
-
71100
71158
  const root$35 = "_root_1f7ly_1";
71101
71159
  const item$m = "_item_1f7ly_14";
71102
71160
  const itemInfo = "_itemInfo_1f7ly_32";
@@ -71152,6 +71210,54 @@ const CardCarouselItem = ({
71152
71210
  ] });
71153
71211
  };
71154
71212
 
71213
+ const MOCK_CARD_CAROUSEL_ITEMS = [
71214
+ {
71215
+ id: "Tour",
71216
+ image: "https://images.pexels.com/photos/991012/pexels-photo-991012.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940",
71217
+ subtitle: "The grand moment",
71218
+ title: "Le tour",
71219
+ description: "Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam.",
71220
+ href: "#",
71221
+ hrefTitle: "Explore the tour"
71222
+ },
71223
+ {
71224
+ id: "Window",
71225
+ image: "https://images.pexels.com/photos/921294/pexels-photo-921294.png?auto=compress&cs=tinysrgb&h=750&w=1260",
71226
+ subtitle: "The big window",
71227
+ title: "Minimal window",
71228
+ description: "Clear Glass Window With Brown and White Wooden Frame iste natus error sit voluptatem accusantium doloremque laudantium.",
71229
+ href: "#",
71230
+ hrefTitle: "Read the article"
71231
+ },
71232
+ {
71233
+ id: "Palms",
71234
+ image: "https://images.pexels.com/photos/92733/pexels-photo-92733.jpeg?auto=compress&cs=tinysrgb&h=750&w=1260",
71235
+ subtitle: "Tropical palms",
71236
+ title: "Palms",
71237
+ description: "Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam.",
71238
+ href: "#",
71239
+ hrefTitle: "Explore the palms"
71240
+ },
71241
+ {
71242
+ id: "Beach",
71243
+ image: "https://images.pexels.com/photos/1008732/pexels-photo-1008732.jpeg?auto=compress&cs=tinysrgb&h=750&w=1260",
71244
+ subtitle: "Beach",
71245
+ title: "The beach",
71246
+ description: "Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam.",
71247
+ href: "#",
71248
+ hrefTitle: "Explore the beach"
71249
+ },
71250
+ {
71251
+ id: "Building",
71252
+ image: "https://images.pexels.com/photos/1029614/pexels-photo-1029614.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940",
71253
+ subtitle: "The white building",
71254
+ title: "White Building",
71255
+ description: "Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam.",
71256
+ href: "#",
71257
+ hrefTitle: "Read article"
71258
+ }
71259
+ ];
71260
+
71155
71261
  const CardCarousel = ({ items = MOCK_CARD_CAROUSEL_ITEMS }) => {
71156
71262
  const [activeIndex, setActiveIndex] = useState(0);
71157
71263
  return /* @__PURE__ */ jsxs("div", { className: styles$3l.root, children: [
@@ -71302,7 +71408,7 @@ const styles$3j = {
71302
71408
  };
71303
71409
 
71304
71410
  const THROTTLE_DURATION = 500;
71305
- const ITEMS$2 = [
71411
+ const ITEMS$1 = [
71306
71412
  {
71307
71413
  title: "Lossless Youths",
71308
71414
  image: "https://cdn.mos.cms.futurecdn.net/dP3N4qnEZ4tCTCLq59iysd.jpg",
@@ -71336,7 +71442,7 @@ const ITEMS$2 = [
71336
71442
  ].map((item) => ({ ...item, renderKey: 0 }));
71337
71443
  const FullScreenImageCarousel = () => {
71338
71444
  const sliderRef = useRef(null);
71339
- const [items, setItems] = useState(ITEMS$2);
71445
+ const [items, setItems] = useState(ITEMS$1);
71340
71446
  const handlePrevClick = useThrottle(() => {
71341
71447
  setItems((prev) => {
71342
71448
  const newItems = items.slice();
@@ -74031,17 +74137,6 @@ const DockMotionEmbedded = ({ children }) => {
74031
74137
  return /* @__PURE__ */ jsx("span", { className: styles$2T.root, children });
74032
74138
  };
74033
74139
 
74034
- const root$2F = "_root_1oncf_1";
74035
- const block = "_block_1oncf_4";
74036
- const item$g = "_item_1oncf_14";
74037
- const gloss = "_gloss_1oncf_31";
74038
- const styles$2S = {
74039
- root: root$2F,
74040
- block: block,
74041
- item: item$g,
74042
- gloss: gloss
74043
- };
74044
-
74045
74140
  function hasWindow() {
74046
74141
  return typeof window !== 'undefined';
74047
74142
  }
@@ -78095,7 +78190,7 @@ function useRole(context, props) {
78095
78190
 
78096
78191
  const tooltip = "_tooltip_pli88_1";
78097
78192
  const tooltipContent = "_tooltipContent_pli88_6";
78098
- const styles$2R = {
78193
+ const styles$2S = {
78099
78194
  tooltip: tooltip,
78100
78195
  tooltipContent: tooltipContent
78101
78196
  };
@@ -78111,6 +78206,9 @@ const Tooltip = ({
78111
78206
  }) => {
78112
78207
  const [isOpen, setIsOpen] = useState(false);
78113
78208
  const shouldReduceMotion = useReducedMotion();
78209
+ const hasFinePointer = useMatchMedia("(pointer: fine)");
78210
+ const isMobile = hasFinePointer === false;
78211
+ const timeoutRef = useRef(null);
78114
78212
  const variants = shouldReduceMotion ? void 0 : {
78115
78213
  initial: {
78116
78214
  scale: animate ? 0.6 : 1,
@@ -78156,6 +78254,28 @@ const Tooltip = ({
78156
78254
  dismiss,
78157
78255
  role
78158
78256
  ]);
78257
+ useEffect(() => {
78258
+ if (timeoutRef.current) {
78259
+ clearTimeout(timeoutRef.current);
78260
+ timeoutRef.current = null;
78261
+ }
78262
+ if (isOpen && isMobile) {
78263
+ timeoutRef.current = setTimeout(() => {
78264
+ setIsOpen(false);
78265
+ }, 2e3);
78266
+ }
78267
+ return () => {
78268
+ if (timeoutRef.current) {
78269
+ clearTimeout(timeoutRef.current);
78270
+ timeoutRef.current = null;
78271
+ }
78272
+ };
78273
+ }, [isOpen, isMobile]);
78274
+ const handleMobileClick = (_e) => {
78275
+ if (isMobile) {
78276
+ setIsOpen(true);
78277
+ }
78278
+ };
78159
78279
  const childRef = isValidElement(children) && children.props && children.props.ref ? children.props.ref : null;
78160
78280
  const mergedRef = useMergeRefs([refs.setReference, childRef]);
78161
78281
  if (isValidElement(children)) {
@@ -78171,6 +78291,10 @@ const Tooltip = ({
78171
78291
  const mergedProps = {
78172
78292
  ...childProps,
78173
78293
  ref: mergedRef,
78294
+ onClick: mergeEventHandler(
78295
+ childProps.onClick,
78296
+ handleMobileClick
78297
+ ),
78174
78298
  onMouseEnter: mergeEventHandler(
78175
78299
  childProps.onMouseEnter,
78176
78300
  tooltipProps.onMouseEnter
@@ -78196,11 +78320,11 @@ const Tooltip = ({
78196
78320
  ref: refs.setFloating,
78197
78321
  style: floatingStyles,
78198
78322
  ...getFloatingProps(),
78199
- className: styles$2R.tooltip,
78323
+ className: styles$2S.tooltip,
78200
78324
  children: /* @__PURE__ */ jsx(
78201
78325
  motion.div,
78202
78326
  {
78203
- className: clsx(styles$2R.tooltipContent, className),
78327
+ className: clsx(styles$2S.tooltipContent, className),
78204
78328
  variants,
78205
78329
  initial: shouldReduceMotion ? void 0 : "initial",
78206
78330
  animate: shouldReduceMotion ? void 0 : "animate",
@@ -78219,6 +78343,7 @@ const Tooltip = ({
78219
78343
  {
78220
78344
  ref: refs.setReference,
78221
78345
  ...getReferenceProps(),
78346
+ onClick: handleMobileClick,
78222
78347
  style: { display: "contents" },
78223
78348
  children
78224
78349
  }
@@ -78229,11 +78354,11 @@ const Tooltip = ({
78229
78354
  ref: refs.setFloating,
78230
78355
  style: floatingStyles,
78231
78356
  ...getFloatingProps(),
78232
- className: styles$2R.tooltip,
78357
+ className: styles$2S.tooltip,
78233
78358
  children: /* @__PURE__ */ jsx(
78234
78359
  motion.div,
78235
78360
  {
78236
- className: clsx(styles$2R.tooltipContent, className),
78361
+ className: clsx(styles$2S.tooltipContent, className),
78237
78362
  variants,
78238
78363
  initial: shouldReduceMotion ? void 0 : "initial",
78239
78364
  animate: shouldReduceMotion ? void 0 : "animate",
@@ -78247,15 +78372,15 @@ const Tooltip = ({
78247
78372
  ] });
78248
78373
  };
78249
78374
 
78250
- const root$2E = "_root_1uu8h_1";
78375
+ const root$2F = "_root_1uu8h_1";
78251
78376
  const label$8 = "_label_1uu8h_21";
78252
78377
  const input$m = "_input_1uu8h_28";
78253
78378
  const output = "_output_1uu8h_88";
78254
78379
  const valueTrack = "_valueTrack_1uu8h_90";
78255
78380
  const outputValues = "_outputValues_1uu8h_91";
78256
78381
  const outputValue = "_outputValue_1uu8h_91";
78257
- const styles$2Q = {
78258
- root: root$2E,
78382
+ const styles$2R = {
78383
+ root: root$2F,
78259
78384
  label: label$8,
78260
78385
  input: input$m,
78261
78386
  output: output,
@@ -78295,18 +78420,18 @@ const TooltipRangeSlider = () => {
78295
78420
  return /* @__PURE__ */ jsxs(
78296
78421
  "form",
78297
78422
  {
78298
- className: styles$2Q.root,
78423
+ className: styles$2R.root,
78299
78424
  action: "",
78300
78425
  style: {
78301
78426
  "--percent": `${percent}%`,
78302
78427
  "--transX": `${transX}em`
78303
78428
  },
78304
78429
  children: [
78305
- /* @__PURE__ */ jsx("label", { className: styles$2Q.label, htmlFor: "dummy", children: "Range" }),
78430
+ /* @__PURE__ */ jsx("label", { className: styles$2R.label, htmlFor: "dummy", children: "Range" }),
78306
78431
  /* @__PURE__ */ jsx(
78307
78432
  "input",
78308
78433
  {
78309
- className: styles$2Q.input,
78434
+ className: styles$2R.input,
78310
78435
  type: "range",
78311
78436
  value,
78312
78437
  min: min$1,
@@ -78315,12 +78440,12 @@ const TooltipRangeSlider = () => {
78315
78440
  onChange: update
78316
78441
  }
78317
78442
  ),
78318
- /* @__PURE__ */ jsx("div", { className: styles$2Q.output, "aria-hidden": "true", children: /* @__PURE__ */ jsx("div", { className: styles$2Q.valueTrack, children: /* @__PURE__ */ jsx("div", { className: styles$2Q.outputValues, children: useMemo(() => {
78443
+ /* @__PURE__ */ jsx("div", { className: styles$2R.output, "aria-hidden": "true", children: /* @__PURE__ */ jsx("div", { className: styles$2R.valueTrack, children: /* @__PURE__ */ jsx("div", { className: styles$2R.outputValues, children: useMemo(() => {
78319
78444
  const totalValues = (Math.abs(max$1) + Math.abs(min$1)) / step$2 + 1;
78320
78445
  const values = [];
78321
78446
  for (let i = min$1; i < totalValues; i += 1) {
78322
78447
  values.push(
78323
- /* @__PURE__ */ jsx("span", { className: styles$2Q.outputValue, children: i }, i)
78448
+ /* @__PURE__ */ jsx("span", { className: styles$2R.outputValue, children: i }, i)
78324
78449
  );
78325
78450
  }
78326
78451
  return values;
@@ -78330,6 +78455,17 @@ const TooltipRangeSlider = () => {
78330
78455
  );
78331
78456
  };
78332
78457
 
78458
+ const root$2E = "_root_1oncf_1";
78459
+ const block = "_block_1oncf_4";
78460
+ const item$g = "_item_1oncf_14";
78461
+ const gloss = "_gloss_1oncf_31";
78462
+ const styles$2Q = {
78463
+ root: root$2E,
78464
+ block: block,
78465
+ item: item$g,
78466
+ gloss: gloss
78467
+ };
78468
+
78333
78469
  const baseWidth = 48;
78334
78470
  const distanceLimit = baseWidth * 5;
78335
78471
  const distanceInput = [
@@ -78372,6 +78508,7 @@ const DockMotionItem = ({
78372
78508
  });
78373
78509
  const audioRef = useRef(null);
78374
78510
  const hover = useMatchMedia("(pointer: fine)");
78511
+ const isMobile = hover === false;
78375
78512
  const [scope, animate] = useAnimate();
78376
78513
  const dynamicWidth = useTransform(
78377
78514
  size,
@@ -78443,7 +78580,7 @@ const DockMotionItem = ({
78443
78580
  const isInteractive = rest.use !== "div";
78444
78581
  const ContentElement = useMemo(() => {
78445
78582
  if (rest.use && typeof rest.use !== "string") {
78446
- return motion(rest.use);
78583
+ return motion.create(rest.use);
78447
78584
  }
78448
78585
  switch (rest.use) {
78449
78586
  case "a":
@@ -78463,13 +78600,13 @@ const DockMotionItem = ({
78463
78600
  "div",
78464
78601
  {
78465
78602
  ref,
78466
- className: clsx(styles$2S.root, { [styles$2S.block]: type === "block" }),
78603
+ className: clsx(styles$2Q.root, { [styles$2Q.block]: type === "block" }),
78467
78604
  children: /* @__PURE__ */ jsxs(
78468
78605
  ContentElement,
78469
78606
  {
78470
78607
  ref: scope,
78471
78608
  layoutId: itemId,
78472
- className: clsx(styles$2S.item, className),
78609
+ className: clsx(styles$2Q.item, className),
78473
78610
  onMouseEnter,
78474
78611
  style: contentStyle,
78475
78612
  "data-action": isInteractive,
@@ -78492,11 +78629,14 @@ const DockMotionItem = ({
78492
78629
  if (audio) {
78493
78630
  audio.pause();
78494
78631
  audio.currentTime = 0;
78495
- audio.play().catch(() => {
78496
- });
78632
+ const playPromise = audio.play();
78633
+ if (playPromise && typeof playPromise.catch === "function") {
78634
+ playPromise.catch(() => {
78635
+ });
78636
+ }
78497
78637
  }
78498
78638
  }
78499
- if (isInteractive && bounce) {
78639
+ if (isInteractive && bounce && !isMobile) {
78500
78640
  animate([
78501
78641
  [scope.current, { top: -24 }, { duration: 0.3 }],
78502
78642
  [
@@ -78516,7 +78656,7 @@ const DockMotionItem = ({
78516
78656
  whileDrag: { zIndex: 1 },
78517
78657
  ...linkProps,
78518
78658
  children: [
78519
- /* @__PURE__ */ jsx("div", { className: styles$2S.gloss }),
78659
+ /* @__PURE__ */ jsx("div", { className: styles$2Q.gloss }),
78520
78660
  children
78521
78661
  ]
78522
78662
  },
@@ -80611,7 +80751,7 @@ const EndlessLoader = ({ container }) => {
80611
80751
  return;
80612
80752
  }
80613
80753
  try {
80614
- const GLModule = await import('./gl-DdwJz_mF.js');
80754
+ const GLModule = await import('./gl-Bd0Q7rQc.js');
80615
80755
  if (!isActiveRef.current) {
80616
80756
  return;
80617
80757
  }
@@ -82468,7 +82608,7 @@ const styles$1P = {
82468
82608
  icon: icon$6
82469
82609
  };
82470
82610
 
82471
- const ITEMS$1 = [
82611
+ const ITEMS = [
82472
82612
  {
82473
82613
  title: "Home",
82474
82614
  url: "https://images.unsplash.com/photo-1666091863721-54331a5db52d"
@@ -82494,7 +82634,7 @@ const CurtainRevealMenu = () => {
82494
82634
  const [toggle, setToggle] = useState(false);
82495
82635
  return /* @__PURE__ */ jsxs("div", { className: styles$1P.root, "data-nav": toggle, children: [
82496
82636
  /* @__PURE__ */ jsx("main", { className: styles$1P.main }),
82497
- /* @__PURE__ */ jsx("nav", { className: styles$1P.nav, children: /* @__PURE__ */ jsx("div", { className: styles$1P.navLinks, children: ITEMS$1.map((item, i) => /* @__PURE__ */ jsxs("a", { className: styles$1P.navLink, href: "#", children: [
82637
+ /* @__PURE__ */ jsx("nav", { className: styles$1P.nav, children: /* @__PURE__ */ jsx("div", { className: styles$1P.navLinks, children: ITEMS.map((item, i) => /* @__PURE__ */ jsxs("a", { className: styles$1P.navLink, href: "#", children: [
82498
82638
  /* @__PURE__ */ jsx("h2", { className: styles$1P.navLinkLabel, children: item.title }),
82499
82639
  /* @__PURE__ */ jsx("img", { className: styles$1P.navLinkImage, src: item.url, alt: "" })
82500
82640
  ] }, i)) }) }),
@@ -82567,41 +82707,7 @@ const styles$1N = {
82567
82707
  };
82568
82708
 
82569
82709
  const ICON_SIZE = 32;
82570
- const ICONS = {
82571
- linkedin: "M0 1.146C0 .513.526 0 1.175 0h13.65C15.474 0 16 .513 16 1.146v13.708c0 .633-.526 1.146-1.175 1.146H1.175C.526 16 0 15.487 0 14.854V1.146zm4.943 12.248V6.169H2.542v7.225h2.401zm-1.2-8.212c.837 0 1.358-.554 1.358-1.248-.015-.709-.52-1.248-1.342-1.248-.822 0-1.359.54-1.359 1.248 0 .694.521 1.248 1.327 1.248h.016zm4.908 8.212V9.359c0-.216.016-.432.08-.586.173-.431.568-.878 1.232-.878.869 0 1.216.662 1.216 1.634v3.865h2.401V9.25c0-2.22-1.184-3.252-2.764-3.252-1.274 0-1.845.7-2.165 1.193v.025h-.016a5.54 5.54 0 0 1 .016-.025V6.169h-2.4c.03.678 0 7.225 0 7.225h2.4z",
82572
- instagram: "M8 0C5.829 0 5.556.01 4.703.048 3.85.088 3.269.222 2.76.42a3.917 3.917 0 0 0-1.417.923A3.927 3.927 0 0 0 .42 2.76C.222 3.268.087 3.85.048 4.7.01 5.555 0 5.827 0 8.001c0 2.172.01 2.444.048 3.297.04.852.174 1.433.372 1.942.205.526.478.972.923 1.417.444.445.89.719 1.416.923.51.198 1.09.333 1.942.372C5.555 15.99 5.827 16 8 16s2.444-.01 3.298-.048c.851-.04 1.434-.174 1.943-.372a3.916 3.916 0 0 0 1.416-.923c.445-.445.718-.891.923-1.417.197-.509.332-1.09.372-1.942C15.99 10.445 16 10.173 16 8s-.01-2.445-.048-3.299c-.04-.851-.175-1.433-.372-1.941a3.926 3.926 0 0 0-.923-1.417A3.911 3.911 0 0 0 13.24.42c-.51-.198-1.092-.333-1.943-.372C10.443.01 10.172 0 7.998 0h.003zm-.717 1.442h.718c2.136 0 2.389.007 3.232.046.78.035 1.204.166 1.486.275.373.145.64.319.92.599.28.28.453.546.598.92.11.281.24.705.275 1.485.039.843.047 1.096.047 3.231s-.008 2.389-.047 3.232c-.035.78-.166 1.203-.275 1.485a2.47 2.47 0 0 1-.599.919c-.28.28-.546.453-.92.598-.28.11-.704.24-1.485.276-.843.038-1.096.047-3.232.047s-2.39-.009-3.233-.047c-.78-.036-1.203-.166-1.485-.276a2.478 2.478 0 0 1-.92-.598 2.48 2.48 0 0 1-.6-.92c-.109-.281-.24-.705-.275-1.485-.038-.843-.046-1.096-.046-3.233 0-2.136.008-2.388.046-3.231.036-.78.166-1.204.276-1.486.145-.373.319-.64.599-.92.28-.28.546-.453.92-.598.282-.11.705-.24 1.485-.276.738-.034 1.024-.044 2.515-.045v.002zm4.988 1.328a.96.96 0 1 0 0 1.92.96.96 0 0 0 0-1.92zm-4.27 1.122a4.109 4.109 0 1 0 0 8.217 4.109 4.109 0 0 0 0-8.217zm0 1.441a2.667 2.667 0 1 1 0 5.334 2.667 2.667 0 0 1 0-5.334z",
82573
- facebook: "M16 8.049c0-4.446-3.582-8.05-8-8.05C3.58 0-.002 3.603-.002 8.05c0 4.017 2.926 7.347 6.75 7.951v-5.625h-2.03V8.05H6.75V6.275c0-2.017 1.195-3.131 3.022-3.131.876 0 1.791.157 1.791.157v1.98h-1.009c-.993 0-1.303.621-1.303 1.258v1.51h2.218l-.354 2.326H9.25V16c3.824-.604 6.75-3.934 6.75-7.951z",
82574
- twitter: "M5.026 15c6.038 0 9.341-5.003 9.341-9.334 0-.14 0-.282-.006-.422A6.685 6.685 0 0 0 16 3.542a6.658 6.658 0 0 1-1.889.518 3.301 3.301 0 0 0 1.447-1.817 6.533 6.533 0 0 1-2.087.793A3.286 3.286 0 0 0 7.875 6.03a9.325 9.325 0 0 1-6.767-3.429 3.289 3.289 0 0 0 1.018 4.382A3.323 3.323 0 0 1 .64 6.575v.045a3.288 3.288 0 0 0 2.632 3.218 3.203 3.203 0 0 1-.865.115 3.23 3.23 0 0 1-.614-.057 3.283 3.283 0 0 0 3.067 2.277A6.588 6.588 0 0 1 .78 13.58a6.32 6.32 0 0 1-.78-.045A9.344 9.344 0 0 0 5.026 15z",
82575
- youtube: "M8.051 1.999h.089c.822.003 4.987.033 6.11.335a2.01 2.01 0 0 1 1.415 1.42c.101.38.172.883.22 1.402l.01.104.022.26.008.104c.065.914.073 1.77.074 1.957v.075c-.001.194-.01 1.108-.082 2.06l-.008.105-.009.104c-.05.572-.124 1.14-.235 1.558a2.007 2.007 0 0 1-1.415 1.42c-1.16.312-5.569.334-6.18.335h-.142c-.309 0-1.587-.006-2.927-.052l-.17-.006-.087-.004-.171-.007-.171-.007c-1.11-.049-2.167-.128-2.654-.26a2.007 2.007 0 0 1-1.415-1.419c-.111-.417-.185-.986-.235-1.558L.09 9.82l-.008-.104A31.4 31.4 0 0 1 0 7.68v-.123c.002-.215.01-.958.064-1.778l.007-.103.003-.052.008-.104.022-.26.01-.104c.048-.519.119-1.023.22-1.402a2.007 2.007 0 0 1 1.415-1.42c.487-.13 1.544-.21 2.654-.26l.17-.007.172-.006.086-.003.171-.007A99.788 99.788 0 0 1 7.858 2h.193zM6.4 5.209v4.818l4.157-2.408L6.4 5.209z"
82576
- };
82577
- const ITEMS = [
82578
- {
82579
- id: "li",
82580
- title: "LinkedIn",
82581
- icon: ICONS["linkedin"]
82582
- },
82583
- {
82584
- id: "ig",
82585
- title: "Instagram",
82586
- icon: ICONS["instagram"]
82587
- },
82588
- {
82589
- id: "fb",
82590
- title: "Facebook",
82591
- icon: ICONS["facebook"]
82592
- },
82593
- {
82594
- id: "tw",
82595
- title: "Twitter",
82596
- icon: ICONS["twitter"]
82597
- },
82598
- {
82599
- id: "yt",
82600
- title: "YouTube",
82601
- icon: ICONS["youtube"]
82602
- }
82603
- ];
82604
- const DropdownMenu = ({ value, items = ITEMS }) => {
82710
+ const DropdownMenu = ({ value, items }) => {
82605
82711
  const [iconLeft, setIconLeft] = useState(0);
82606
82712
  const [iconTop, setIconTop] = useState(0);
82607
82713
  const [rotateArrow, setRotateArrow] = useState(0);
@@ -82644,7 +82750,7 @@ const DropdownMenu = ({ value, items = ITEMS }) => {
82644
82750
  className: clsx(styles$1N.mainButton, styles$1N.dropdownButton),
82645
82751
  onClick: () => {
82646
82752
  const listWrapperSizes = 3.5;
82647
- const dropdownOpenHeight = 4.6 * ITEMS.length + listWrapperSizes;
82753
+ const dropdownOpenHeight = 4.6 * items.length + listWrapperSizes;
82648
82754
  dropdownHeight === 0 ? setDropdownProps(180, dropdownOpenHeight, 1) : setDropdownProps(0, 0, 0);
82649
82755
  },
82650
82756
  children: [
@@ -82684,12 +82790,12 @@ const DropdownMenu = ({ value, items = ITEMS }) => {
82684
82790
  onMouseLeave: () => {
82685
82791
  setFloatingIcon(null);
82686
82792
  },
82687
- children: ITEMS.map((item, index) => /* @__PURE__ */ jsx(
82793
+ children: items.map((item, index) => /* @__PURE__ */ jsx(
82688
82794
  "li",
82689
82795
  {
82690
82796
  className: styles$1N.dropdownListItem,
82691
82797
  onMouseMove: () => {
82692
- setFloatingIcon(item.icon);
82798
+ setFloatingIcon(item.icon ?? null);
82693
82799
  },
82694
82800
  onClick: () => {
82695
82801
  setActive(item);
@@ -83221,7 +83327,7 @@ const MagnifiedNavItems = () => {
83221
83327
  return () => {
83222
83328
  window.removeEventListener("resize", debouncedUpdateGlassPos);
83223
83329
  };
83224
- }, []);
83330
+ }, [debouncedUpdateGlassPos]);
83225
83331
  return /* @__PURE__ */ jsxs("div", { className: styles$1I.root, children: [
83226
83332
  /* @__PURE__ */ jsxs("svg", { display: "none", children: [
83227
83333
  /* @__PURE__ */ jsx("symbol", { id: "home", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx("g", { fill: "currentColor", children: /* @__PURE__ */ jsx("polygon", { points: "12 0,24 8,24 24,16 24,16 14,8 14,8 24,0 24,0 8" }) }) }),
@@ -84659,6 +84765,7 @@ const TabBarAnimation = () => {
84659
84765
  });
84660
84766
  },
84661
84767
  onComplete: () => {
84768
+ navElement.classList.remove(styles$1z.before, styles$1z.after);
84662
84769
  gsapWithCSS.set(activeElement, {
84663
84770
  x: getOffsetLeft(buttonElement),
84664
84771
  "--active-element-show": "1"
@@ -86552,11 +86659,11 @@ const ScrambledText = ({ children, reveal = false }) => {
86552
86659
  );
86553
86660
  };
86554
86661
 
86555
- const root$Y = "_root_ys1oi_1";
86556
- const line = "_line_ys1oi_9";
86557
- const word$1 = "_word_ys1oi_14";
86558
- const link = "_link_ys1oi_18";
86559
- const letter = "_letter_ys1oi_22";
86662
+ const root$Y = "_root_j4qg1_1";
86663
+ const line = "_line_j4qg1_9";
86664
+ const word$1 = "_word_j4qg1_14";
86665
+ const link = "_link_j4qg1_18";
86666
+ const letter = "_letter_j4qg1_22";
86560
86667
  const styles$11 = {
86561
86668
  root: root$Y,
86562
86669
  line: line,
@@ -96510,7 +96617,7 @@ const Lock = () => {
96510
96617
  }
96511
96618
  };
96512
96619
  const asynchronously = async () => {
96513
- const Flickity = await import('./index-2z8s0Prr.js').then(n => n.i).then((m) => m.default);
96620
+ const Flickity = await import('./index-DrWf0hU5.js').then(n => n.i).then((m) => m.default);
96514
96621
  if (!rowsRef.current || !window) return;
96515
96622
  const rows = rowsRef.current.children;
96516
96623
  for (let i = 0, len = rows.length; i < len; i++) {
@@ -102310,6 +102417,34 @@ function useDrag(handler, config) {
102310
102417
  }, config || {}, 'drag');
102311
102418
  }
102312
102419
 
102420
+ function normalize(value, min, max) {
102421
+ return (value - min) / (max - min);
102422
+ }
102423
+ function calculateDistance(coordinates1, coordinates2) {
102424
+ const h = coordinates1.x - coordinates2.x;
102425
+ const v = coordinates1.y - coordinates2.y;
102426
+ return Math.sqrt(h * h + v * v);
102427
+ }
102428
+ function calculateAngle(coordinates1, coordinates2) {
102429
+ let theta = 0;
102430
+ const dy = coordinates2.y - coordinates1.y;
102431
+ const dx = coordinates2.x - coordinates1.x;
102432
+ theta = Math.atan2(dy, dx);
102433
+ theta *= 180 / Math.PI;
102434
+ return theta;
102435
+ }
102436
+ function getGlowLayers(factor, intensity) {
102437
+ const glowMap = [1, 2, 7, 14, 24, 42, 86, 124];
102438
+ const scale = intensity * factor;
102439
+ const glowLayers = Array.from({ length: 8 }, (_, i) => {
102440
+ return {
102441
+ radius: scale * glowMap[i],
102442
+ opacity: i > 0 ? 1 / i : 1
102443
+ };
102444
+ });
102445
+ return glowLayers;
102446
+ }
102447
+
102313
102448
  const root$h = "_root_1xwkj_1";
102314
102449
  const sun = "_sun_1xwkj_9";
102315
102450
  const moon = "_moon_1xwkj_20";
@@ -102363,34 +102498,6 @@ const BaileysBead = ({ theta, offset = 0, opa }) => {
102363
102498
  );
102364
102499
  };
102365
102500
 
102366
- function normalize(value, min, max) {
102367
- return (value - min) / (max - min);
102368
- }
102369
- function calculateDistance(coordinates1, coordinates2) {
102370
- const h = coordinates1.x - coordinates2.x;
102371
- const v = coordinates1.y - coordinates2.y;
102372
- return Math.sqrt(h * h + v * v);
102373
- }
102374
- function calculateAngle(coordinates1, coordinates2) {
102375
- let theta = 0;
102376
- const dy = coordinates2.y - coordinates1.y;
102377
- const dx = coordinates2.x - coordinates1.x;
102378
- theta = Math.atan2(dy, dx);
102379
- theta *= 180 / Math.PI;
102380
- return theta;
102381
- }
102382
- function getGlowLayers(factor, intensity) {
102383
- const glowMap = [1, 2, 7, 14, 24, 42, 86, 124];
102384
- const scale = intensity * factor;
102385
- const glowLayers = Array.from({ length: 8 }, (_, i) => {
102386
- return {
102387
- radius: scale * glowMap[i],
102388
- opacity: i > 0 ? 1 / i : 1
102389
- };
102390
- });
102391
- return glowLayers;
102392
- }
102393
-
102394
102501
  const SolarEclipse = () => {
102395
102502
  const [theta, setTheta] = useState(0);
102396
102503
  const [obscurity, setObscurity] = useState(0);
@@ -114233,4 +114340,4 @@ const ViewTransitionImageGallery = () => {
114233
114340
  ] });
114234
114341
  };
114235
114342
 
114236
- export { RealisticSmoke as $, AdjoinedFilters as A, BackgroundSlider as B, Clock as C, DoubleSide as D, GlitterCard as E, FadeUp as F, GlidingReveal as G, GlowingShadows as H, GradientBorder as I, ImageClipping as J, Lock as K, LayeredComponents as L, Mesh as M, NamedPointer as N, MotionDigits as O, PerspectiveCamera as P, MouseMoveGallery as Q, RawShaderMaterial as R, Scene as S, THREE as T, MultiGradientBackground as U, MultipathSvgAnimation as V, WebGLRenderer as W, NotificationBell as X, PhotoZoom as Y, PolaroidStack as Z, QuickTimeClock as _, getAugmentedNamespace as a, GravityButton as a$, RevealImageAnimation as a0, SchrodingerFormControls as a1, SlideIn as a2, SmokeTextDisappearance as a3, SolarEclipse as a4, SpeechToText as a5, StaticSolarEclipse as a6, StickyList as a7, TranslucentBackdrop as a8, TurbulenceFilter as a9, AuroraButton as aA, BubblyParticlesButton as aB, BurningButton as aC, ButtonHoverFill as aD, ButtonShimmer as aE, ButtonWithDot as aF, ClaymorphicHeart as aG, ClickButtonParticles as aH, ColorfulButtons as aI, ConfettiButton as aJ, DarkMatterButton as aK, DDDButton as aL, DockButton as aM, DoubleArrowButton as aN, DoubleArrowCollabButton as aO, DoubleStateButton as aP, DynamicIconButton as aQ, EchoClickButton as aR, ElectrifiedButton as aS, ElectrifiedButtonGS as aT, FailedDownloadButton as aU, FootprintButton as aV, GalaxyButton as aW, GlowButton as aX, GodRaysButton as aY, GoHoverButton as aZ, GooeyButton as a_, LoveGlow as aa, TextImageHover as ab, VoiceAnimation as ac, BlurVignette as ad, BorderGradient as ae, CircleParticles as af, Counter as ag, Illumination as ah, LandingXYScroll as ai, RhombusGallery as aj, ThanosDisappearEffect as ak, ThanosDisappearEffectList as al, ViewTransitionAddToCard as am, ViewTransitionImageGallery as an, Expand as ao, GridAccordion as ap, BackgroundCircles as aq, ComplexGradient as ar, RaysBackground as as, Texture$1 as at, WebGLSmoke as au, ComingSoonBadge as av, ActivateButton as aw, AirplaneAnimation as ax, AnimatedHoverButton as ay, AnimatedHoverGlowButton as az, TextureLoader as b, RotatedCardsCarousel as b$, HeartFoldButton as b0, HoldSubmitButton as b1, HoverGlowButton as b2, Ios15Button as b3, MagneticButton as b4, MinimalisticGlassButton as b5, MorphingSubmitButton as b6, MultiStageButton as b7, NeonButton as b8, NoisyButton as b9, AnimatedBlendedCard as bA, BrandCard as bB, FigmaLogo as bC, CaptionCard as bD, CardGlow as bE, CardTile as bF, ChequeredCard as bG, DDDHoverCard as bH, EnvelopeTile as bI, GlowingTile as bJ, GradientGlowingTile as bK, HoverTile as bL, Hoverable3DCard as bM, ImageCard as bN, PhotoCard$1 as bO, ProductTile as bP, ProfileCard as bQ, ShineAnimation as bR, ShineCard as bS, StackingCards as bT, BulletsCarousel as bU, CardCarousel as bV, CoverFlowGallery as bW, FullScreenImageCarousel as bX, GalleryReverseScroll as bY, GlideImageGallery as bZ, ListItemHover as b_, OrbitalSubmitButton as ba, PaperPlanButton as bb, PlayPauseButton as bc, PlayPauseMusicButton as bd, PositionHover as be, PredictionButton as bf, ProgressButton as bg, PsychedelicButton as bh, RepostButton as bi, RubberButton as bj, RunningButton as bk, ShimmerButton as bl, ShimmeringBorderGradient as bm, ShinyButton as bn, SkeuomorphicLikeButton as bo, SlidingButton as bp, SlidingStepper as bq, SparkleButton as br, SparklyButton as bs, SquishButton as bt, SuccessLoadingButton as bu, ThreadsLikeButton as bv, ThumbsUpButton as bw, TicklishButton as bx, TrickButton as by, AccentShardCard as bz, commonjsGlobal as c, CircleDotsLoader as c$, Scroller as c0, ShadowedCardsList as c1, SlidingImages as c2, Checkbox as c3, IndeterminateCheckboxes as c4, StrikethroughCheckbox as c5, StrikethroughCheckboxes as c6, Chips as c7, FlipChips as c8, DailClock as c9, ContrastBackgroundText as cA, FluidGooeyTextBackground as cB, GlassIcon as cC, NeumorphicLogo as cD, SlidingIcon as cE, SquircleAvatar as cF, ClearInput as cG, FloatingLabelInput as cH, GlowingInput as cI, InputFirework as cJ, SearchInput as cK, EmailInput as cL, NewsletterInput as cM, PasswordInput as cN, ShadowedClick as cO, BorderLink as cP, CircleLink as cQ, ForwardArrowLink as cR, PaintedLink as cS, RegularLink as cT, ShakyLine as cU, UnderlinedLink as cV, UnderlinedLink2 as cW, AcrobaticPreloader as cX, AlienSkeuomorphicLoaders as cY, CanOfDigits as cZ, ChaseLoader as c_, MotionClock as ca, NeumorphicAnalogClock as cb, CircleTextHover as cc, ClickSpark as cd, DarkMatterMouseEffect as ce, ElasticCursor as cf, SplashCursor as cg, MagicMouseEffect as ch, DialControl as ci, DialFuturistic as cj, MetalCircleController as ck, Dock as cl, DockHas as cm, DockMotion as cn, AutoMasonryGrid as co, DenseGrid as cp, Grid3DCards as cq, GridHover as cr, GridViewTransition as cs, LeaningCards as ct, BoldHamburger as cu, HamburgerMusic as cv, HamburgerX as cw, Header as cx, StickyHeader as cy, AnimatedHeroTitle as cz, WebGLRenderTarget as d, DaySwitch as d$, CubeLoader as d0, EndlessLoader as d1, InfiniteLoader as d2, LoaderGenerator as d3, LoadingBook as d4, LoadingWave as d5, OffTrackPreloader as d6, PieLoader as d7, PulseInLoader as d8, PulseOutLoader as d9, MobileNavBar as dA, NavigationMenu as dB, ParallaxMenu as dC, PianoNav as dD, PinDropdown as dE, RadialMenu as dF, RadialNavigation as dG, SinglePopoverMenu as dH, TabBarAnimation as dI, WavyMenu as dJ, CronRedirectPage as dK, EmojiLayer as dL, ParallaxEmoji as dM, ApertureVideo as dN, RadioRolling as dO, RadioParticles as dP, RadioHopping as dQ, ScrollCountdown as dR, ScrollDrivenTextBlowOut as dS, ScrollingTextReveal as dT, ScrollTextHighlight as dU, ScrollTimeline as dV, ScrollWithLight as dW, DDDRangeSlider as dX, GlowSlider as dY, NeumorphicSlider as dZ, FeedbackReactions as d_, RingLoader as da, RoundScaleLoader as db, SkateboardPreloader as dc, SmileyPreloader as dd, SnowballPreloader as de, SpinningClickAnimation as df, StretchyLoader as dg, StuntPreloader as dh, SubtleBorderAnimation as di, SuccessLoader as dj, ThreeDotsLoader as dk, TimeCirclesLoader as dl, CardMarquee as dm, Ticker as dn, AnimatedIconsNav as dp, AnimatedShareMenu as dq, ITEMS$1 as dr, CurtainRevealMenu as ds, DetachedMenu as dt, DropdownMenu as du, Futuristic3DHoverMenu as dv, GlowingDropdown as dw, GlowingTabs as dx, GlowingTabs2 as dy, MagnifiedNavItems as dz, Color$1 as e, GlassSwitch as e0, IosSwitch as e1, NeonToggleSwitch as e2, NeuromorphicToggle as e3, SegmentedToggle as e4, StretchToggle as e5, TippingSwitch as e6, ToggleBubble as e7, ToggleClipPath as e8, EnlightenedText as e9, GlowingText as ea, GrainyGradientText as eb, JellyText as ec, MagicalText as ed, ScrambledText as ee, ScramblingLetters as ef, ShakingText as eg, ShiningText as eh, TextMorphing as ei, TextOutline as ej, TextShadow as ek, WeightText as el, Tooltip as em, TooltipRangeSlider as en, TorusKnotGeometry as f, getDefaultExportFromCjs as g, ShaderMaterial as h, Toasts as i, Duck as j, DynamicIsland as k, Fingerprint as l, SegmentedControls as m, ShapeSelection as n, SmoothScroll as o, Appearance as p, AreaLight as q, AvatarHover as r, BlurredBackground as s, BouncyClock as t, BreakingProgress as u, CardDetails as v, ChromaticAberration as w, CircleLinesAnimation as x, CollapseAnimation as y, FileIcons as z };
114343
+ export { RealisticSmoke as $, AdjoinedFilters as A, BackgroundSlider as B, Clock as C, DoubleSide as D, GlitterCard as E, FadeUp as F, GlidingReveal as G, GlowingShadows as H, GradientBorder as I, ImageClipping as J, Lock as K, LayeredComponents as L, Mesh as M, NamedPointer as N, MotionDigits as O, PerspectiveCamera as P, MouseMoveGallery as Q, RawShaderMaterial as R, Scene as S, THREE as T, MultiGradientBackground as U, MultipathSvgAnimation as V, WebGLRenderer as W, NotificationBell as X, PhotoZoom as Y, PolaroidStack as Z, QuickTimeClock as _, getAugmentedNamespace as a, GravityButton as a$, RevealImageAnimation as a0, SchrodingerFormControls as a1, SlideIn as a2, SmokeTextDisappearance as a3, SolarEclipse as a4, SpeechToText as a5, StaticSolarEclipse as a6, StickyList as a7, TranslucentBackdrop as a8, TurbulenceFilter as a9, AuroraButton as aA, BubblyParticlesButton as aB, BurningButton as aC, ButtonHoverFill as aD, ButtonShimmer as aE, ButtonWithDot as aF, ClaymorphicHeart as aG, ClickButtonParticles as aH, ColorfulButtons as aI, ConfettiButton as aJ, DarkMatterButton as aK, DDDButton as aL, DockButton as aM, DoubleArrowButton as aN, DoubleArrowCollabButton as aO, DoubleStateButton as aP, DynamicIconButton as aQ, EchoClickButton as aR, ElectrifiedButton as aS, ElectrifiedButtonGS as aT, FailedDownloadButton as aU, FootprintButton as aV, GalaxyButton as aW, GlowButton as aX, GodRaysButton as aY, GoHoverButton as aZ, GooeyButton as a_, LoveGlow as aa, TextImageHover as ab, VoiceAnimation as ac, BlurVignette as ad, BorderGradient as ae, CircleParticles as af, Counter as ag, Illumination as ah, LandingXYScroll as ai, RhombusGallery as aj, ThanosDisappearEffect as ak, ThanosDisappearEffectList as al, ViewTransitionAddToCard as am, ViewTransitionImageGallery as an, Expand as ao, GridAccordion as ap, BackgroundCircles as aq, ComplexGradient as ar, RaysBackground as as, Texture$1 as at, WebGLSmoke as au, ComingSoonBadge as av, ActivateButton as aw, AirplaneAnimation as ax, AnimatedHoverButton as ay, AnimatedHoverGlowButton as az, TextureLoader as b, RotatedCardsCarousel as b$, HeartFoldButton as b0, HoldSubmitButton as b1, HoverGlowButton as b2, Ios15Button as b3, MagneticButton as b4, MinimalisticGlassButton as b5, MorphingSubmitButton as b6, MultiStageButton as b7, NeonButton as b8, NoisyButton as b9, AnimatedBlendedCard as bA, BrandCard as bB, FigmaLogo as bC, CaptionCard as bD, CardGlow as bE, CardTile as bF, ChequeredCard as bG, DDDHoverCard as bH, EnvelopeTile as bI, GlowingTile as bJ, GradientGlowingTile as bK, HoverTile as bL, Hoverable3DCard as bM, ImageCard as bN, PhotoCard$1 as bO, ProductTile as bP, ProfileCard as bQ, ShineAnimation as bR, ShineCard as bS, StackingCards as bT, BulletsCarousel as bU, CardCarousel as bV, CoverFlowGallery as bW, FullScreenImageCarousel as bX, GalleryReverseScroll as bY, GlideImageGallery as bZ, ListItemHover as b_, OrbitalSubmitButton as ba, PaperPlanButton as bb, PlayPauseButton as bc, PlayPauseMusicButton as bd, PositionHover as be, PredictionButton as bf, ProgressButton as bg, PsychedelicButton as bh, RepostButton as bi, RubberButton as bj, RunningButton as bk, ShimmerButton as bl, ShimmeringBorderGradient as bm, ShinyButton as bn, SkeuomorphicLikeButton as bo, SlidingButton as bp, SlidingStepper as bq, SparkleButton as br, SparklyButton as bs, SquishButton as bt, SuccessLoadingButton as bu, ThreadsLikeButton as bv, ThumbsUpButton as bw, TicklishButton as bx, TrickButton as by, AccentShardCard as bz, commonjsGlobal as c, CircleDotsLoader as c$, Scroller as c0, ShadowedCardsList as c1, SlidingImages as c2, Checkbox as c3, IndeterminateCheckboxes as c4, StrikethroughCheckbox as c5, StrikethroughCheckboxes as c6, Chips as c7, FlipChips as c8, DailClock as c9, ContrastBackgroundText as cA, FluidGooeyTextBackground as cB, GlassIcon as cC, NeumorphicLogo as cD, SlidingIcon as cE, SquircleAvatar as cF, ClearInput as cG, FloatingLabelInput as cH, GlowingInput as cI, InputFirework as cJ, SearchInput as cK, EmailInput as cL, NewsletterInput as cM, PasswordInput as cN, ShadowedClick as cO, BorderLink as cP, CircleLink as cQ, ForwardArrowLink as cR, PaintedLink as cS, RegularLink as cT, ShakyLine as cU, UnderlinedLink as cV, UnderlinedLink2 as cW, AcrobaticPreloader as cX, AlienSkeuomorphicLoaders as cY, CanOfDigits as cZ, ChaseLoader as c_, MotionClock as ca, NeumorphicAnalogClock as cb, CircleTextHover as cc, ClickSpark as cd, DarkMatterMouseEffect as ce, ElasticCursor as cf, SplashCursor as cg, MagicMouseEffect as ch, DialControl as ci, DialFuturistic as cj, MetalCircleController as ck, Dock as cl, DockHas as cm, DockMotion as cn, AutoMasonryGrid as co, DenseGrid as cp, Grid3DCards as cq, GridHover as cr, GridViewTransition as cs, LeaningCards as ct, BoldHamburger as cu, HamburgerMusic as cv, HamburgerX as cw, Header as cx, StickyHeader as cy, AnimatedHeroTitle as cz, WebGLRenderTarget as d, DaySwitch as d$, CubeLoader as d0, EndlessLoader as d1, InfiniteLoader as d2, LoaderGenerator as d3, LoadingBook as d4, LoadingWave as d5, OffTrackPreloader as d6, PieLoader as d7, PulseInLoader as d8, PulseOutLoader as d9, MobileNavBar as dA, NavigationMenu as dB, ParallaxMenu as dC, PianoNav as dD, PinDropdown as dE, RadialMenu as dF, RadialNavigation as dG, SinglePopoverMenu as dH, TabBarAnimation as dI, WavyMenu as dJ, CronRedirectPage as dK, EmojiLayer as dL, ParallaxEmoji as dM, ApertureVideo as dN, RadioRolling as dO, RadioParticles as dP, RadioHopping as dQ, ScrollCountdown as dR, ScrollDrivenTextBlowOut as dS, ScrollingTextReveal as dT, ScrollTextHighlight as dU, ScrollTimeline as dV, ScrollWithLight as dW, DDDRangeSlider as dX, GlowSlider as dY, NeumorphicSlider as dZ, FeedbackReactions as d_, RingLoader as da, RoundScaleLoader as db, SkateboardPreloader as dc, SmileyPreloader as dd, SnowballPreloader as de, SpinningClickAnimation as df, StretchyLoader as dg, StuntPreloader as dh, SubtleBorderAnimation as di, SuccessLoader as dj, ThreeDotsLoader as dk, TimeCirclesLoader as dl, CardMarquee as dm, Ticker as dn, AnimatedIconsNav as dp, AnimatedShareMenu as dq, ITEMS as dr, CurtainRevealMenu as ds, DetachedMenu as dt, DropdownMenu as du, Futuristic3DHoverMenu as dv, GlowingDropdown as dw, GlowingTabs as dx, GlowingTabs2 as dy, MagnifiedNavItems as dz, Color$1 as e, GlassSwitch as e0, IosSwitch as e1, NeonToggleSwitch as e2, NeuromorphicToggle as e3, SegmentedToggle as e4, StretchToggle as e5, TippingSwitch as e6, ToggleBubble as e7, ToggleClipPath as e8, EnlightenedText as e9, GlowingText as ea, GrainyGradientText as eb, JellyText as ec, MagicalText as ed, ScrambledText as ee, ScramblingLetters as ef, ShakingText as eg, ShiningText as eh, TextMorphing as ei, TextOutline as ej, TextShadow as ek, WeightText as el, Tooltip as em, TooltipRangeSlider as en, TorusKnotGeometry as f, getDefaultExportFromCjs as g, ShaderMaterial as h, Toasts as i, Duck as j, DynamicIsland as k, Fingerprint as l, SegmentedControls as m, ShapeSelection as n, SmoothScroll as o, Appearance as p, AreaLight as q, AvatarHover as r, BlurredBackground as s, BouncyClock as t, BreakingProgress as u, CardDetails as v, ChromaticAberration as w, CircleLinesAnimation as x, CollapseAnimation as y, FileIcons as z };