@tarsis/toolkit 0.5.6 → 0.5.8-beta.0

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.
@@ -52114,11 +52114,11 @@ const BubblyParticlesButton = () => {
52114
52114
  return /* @__PURE__ */ jsxRuntime.jsx("button", { className: styles$4H.root, onClick: handleClick, children: "Click me!" });
52115
52115
  };
52116
52116
 
52117
- const root$4i = "_root_1pxow_1";
52118
- const button$o = "_button_1pxow_13";
52119
- const p$1 = "_p_1pxow_26";
52120
- const text$z = "_text_1pxow_26";
52121
- const effects = "_effects_1pxow_240";
52117
+ const root$4i = "_root_3ip19_1";
52118
+ const button$o = "_button_3ip19_13";
52119
+ const p$1 = "_p_3ip19_26";
52120
+ const text$z = "_text_3ip19_26";
52121
+ const effects = "_effects_3ip19_240";
52122
52122
  const styles$4G = {
52123
52123
  root: root$4i,
52124
52124
  button: button$o,
@@ -59681,11 +59681,6 @@ var module$1 = {};
59681
59681
  const confetti = module$1.exports;
59682
59682
  module$1.exports.create;
59683
59683
 
59684
- const root$4d = "_root_s1prb_1";
59685
- const styles$4z = {
59686
- root: root$4d
59687
- };
59688
-
59689
59684
  const LayoutGroupContext = React.createContext({});
59690
59685
 
59691
59686
  const useIsomorphicLayoutEffect$2 = useWindowReady.isBrowser ? React.useLayoutEffect : React.useEffect;
@@ -61799,11 +61794,12 @@ function distance2D(a, b) {
61799
61794
  return Math.sqrt(xDelta ** 2 + yDelta ** 2);
61800
61795
  }
61801
61796
 
61797
+ const overflowStyles = /*#__PURE__*/ new Set(["auto", "scroll"]);
61802
61798
  /**
61803
61799
  * @internal
61804
61800
  */
61805
61801
  class PanSession {
61806
- constructor(event, handlers, { transformPagePoint, contextWindow = window, dragSnapToOrigin = false, distanceThreshold = 3, } = {}) {
61802
+ constructor(event, handlers, { transformPagePoint, contextWindow = window, dragSnapToOrigin = false, distanceThreshold = 3, element, } = {}) {
61807
61803
  /**
61808
61804
  * @internal
61809
61805
  */
@@ -61824,6 +61820,22 @@ class PanSession {
61824
61820
  * @internal
61825
61821
  */
61826
61822
  this.contextWindow = window;
61823
+ /**
61824
+ * Scroll positions of scrollable ancestors and window.
61825
+ * @internal
61826
+ */
61827
+ this.scrollPositions = new Map();
61828
+ /**
61829
+ * Cleanup function for scroll listeners.
61830
+ * @internal
61831
+ */
61832
+ this.removeScrollListeners = null;
61833
+ this.onElementScroll = (event) => {
61834
+ this.handleScroll(event.target);
61835
+ };
61836
+ this.onWindowScroll = () => {
61837
+ this.handleScroll(window);
61838
+ };
61827
61839
  this.updatePoint = () => {
61828
61840
  if (!(this.lastMoveEvent && this.lastMoveEventInfo))
61829
61841
  return;
@@ -61886,12 +61898,93 @@ class PanSession {
61886
61898
  onSessionStart &&
61887
61899
  onSessionStart(event, getPanInfo(initialInfo, this.history));
61888
61900
  this.removeListeners = useWindowReady.pipe(addPointerEvent(this.contextWindow, "pointermove", this.handlePointerMove), addPointerEvent(this.contextWindow, "pointerup", this.handlePointerUp), addPointerEvent(this.contextWindow, "pointercancel", this.handlePointerUp));
61901
+ // Start scroll tracking if element provided
61902
+ if (element) {
61903
+ this.startScrollTracking(element);
61904
+ }
61905
+ }
61906
+ /**
61907
+ * Start tracking scroll on ancestors and window.
61908
+ */
61909
+ startScrollTracking(element) {
61910
+ // Store initial scroll positions for scrollable ancestors
61911
+ let current = element.parentElement;
61912
+ while (current) {
61913
+ const style = getComputedStyle(current);
61914
+ if (overflowStyles.has(style.overflowX) ||
61915
+ overflowStyles.has(style.overflowY)) {
61916
+ this.scrollPositions.set(current, {
61917
+ x: current.scrollLeft,
61918
+ y: current.scrollTop,
61919
+ });
61920
+ }
61921
+ current = current.parentElement;
61922
+ }
61923
+ // Track window scroll
61924
+ this.scrollPositions.set(window, {
61925
+ x: window.scrollX,
61926
+ y: window.scrollY,
61927
+ });
61928
+ // Capture listener catches element scroll events as they bubble
61929
+ window.addEventListener("scroll", this.onElementScroll, {
61930
+ capture: true,
61931
+ passive: true,
61932
+ });
61933
+ // Direct window scroll listener (window scroll doesn't bubble)
61934
+ window.addEventListener("scroll", this.onWindowScroll, {
61935
+ passive: true,
61936
+ });
61937
+ this.removeScrollListeners = () => {
61938
+ window.removeEventListener("scroll", this.onElementScroll, {
61939
+ capture: true,
61940
+ });
61941
+ window.removeEventListener("scroll", this.onWindowScroll);
61942
+ };
61943
+ }
61944
+ /**
61945
+ * Handle scroll compensation during drag.
61946
+ *
61947
+ * For element scroll: adjusts history origin since pageX/pageY doesn't change.
61948
+ * For window scroll: adjusts lastMoveEventInfo since pageX/pageY would change.
61949
+ */
61950
+ handleScroll(target) {
61951
+ const initial = this.scrollPositions.get(target);
61952
+ if (!initial)
61953
+ return;
61954
+ const isWindow = target === window;
61955
+ const current = isWindow
61956
+ ? { x: window.scrollX, y: window.scrollY }
61957
+ : {
61958
+ x: target.scrollLeft,
61959
+ y: target.scrollTop,
61960
+ };
61961
+ const delta = { x: current.x - initial.x, y: current.y - initial.y };
61962
+ if (delta.x === 0 && delta.y === 0)
61963
+ return;
61964
+ if (isWindow) {
61965
+ // Window scroll: pageX/pageY changes, so update lastMoveEventInfo
61966
+ if (this.lastMoveEventInfo) {
61967
+ this.lastMoveEventInfo.point.x += delta.x;
61968
+ this.lastMoveEventInfo.point.y += delta.y;
61969
+ }
61970
+ }
61971
+ else {
61972
+ // Element scroll: pageX/pageY unchanged, so adjust history origin
61973
+ if (this.history.length > 0) {
61974
+ this.history[0].x -= delta.x;
61975
+ this.history[0].y -= delta.y;
61976
+ }
61977
+ }
61978
+ this.scrollPositions.set(target, current);
61979
+ useWindowReady.frame.update(this.updatePoint, true);
61889
61980
  }
61890
61981
  updateHandlers(handlers) {
61891
61982
  this.handlers = handlers;
61892
61983
  }
61893
61984
  end() {
61894
61985
  this.removeListeners && this.removeListeners();
61986
+ this.removeScrollListeners && this.removeScrollListeners();
61987
+ this.scrollPositions.clear();
61895
61988
  useWindowReady.cancelFrame(this.updatePoint);
61896
61989
  }
61897
61990
  }
@@ -62142,7 +62235,7 @@ class VisualElementDragControls {
62142
62235
  this.visualElement.projection.target = undefined;
62143
62236
  }
62144
62237
  /**
62145
- * Record gesture origin
62238
+ * Record gesture origin and pointer offset
62146
62239
  */
62147
62240
  eachAxis((axis) => {
62148
62241
  let current = this.getAxisMotionValue(axis).get() || 0;
@@ -62223,6 +62316,7 @@ class VisualElementDragControls {
62223
62316
  dragSnapToOrigin,
62224
62317
  distanceThreshold,
62225
62318
  contextWindow: getContextWindow(this.visualElement),
62319
+ element: this.visualElement.current,
62226
62320
  });
62227
62321
  }
62228
62322
  /**
@@ -65142,6 +65236,11 @@ function useAnimate() {
65142
65236
  return [scope, animate];
65143
65237
  }
65144
65238
 
65239
+ const root$4d = "_root_s1prb_1";
65240
+ const styles$4z = {
65241
+ root: root$4d
65242
+ };
65243
+
65145
65244
  const useConfetti = () => React.useCallback(async (rect, options = {}) => {
65146
65245
  const { x, y, width, height } = rect;
65147
65246
  const origin = {
@@ -68127,9 +68226,9 @@ const NeonButton = ({ className = "", ...rest }) => {
68127
68226
  return /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", ...rest, className: clsx(styles$48.root, className), children: "Neon" });
68128
68227
  };
68129
68228
 
68130
- const root$3P = "_root_1u78n_2";
68131
- const i$6 = "_i_1u78n_22";
68132
- const text$s = "_text_1u78n_482";
68229
+ const root$3P = "_root_186y2_2";
68230
+ const i$6 = "_i_186y2_22";
68231
+ const text$s = "_text_186y2_482";
68133
68232
  const styles$47 = {
68134
68233
  root: root$3P,
68135
68234
  i: i$6,
@@ -68654,11 +68753,11 @@ const ProgressButton = ({
68654
68753
  );
68655
68754
  };
68656
68755
 
68657
- const root$3H = "_root_1pabj_1";
68658
- const button$f = "_button_1pabj_17";
68659
- const wavy = "_wavy_1pabj_62";
68660
- const linear = "_linear_1pabj_63";
68661
- const glance = "_glance_1pabj_86";
68756
+ const root$3H = "_root_1gjmi_1";
68757
+ const button$f = "_button_1gjmi_17";
68758
+ const wavy = "_wavy_1gjmi_62";
68759
+ const linear = "_linear_1gjmi_63";
68760
+ const glance = "_glance_1gjmi_86";
68662
68761
  const styles$3$ = {
68663
68762
  root: root$3H,
68664
68763
  button: button$f,
@@ -68668,7 +68767,101 @@ const styles$3$ = {
68668
68767
  };
68669
68768
 
68670
68769
  const PsychedelicButton = ({ variant }) => {
68671
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles$3$.root, children: /* @__PURE__ */ jsxRuntime.jsx("button", { className: clsx(styles$3$.button, styles$3$[variant]), children: "hover me" }) });
68770
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
68771
+ /* @__PURE__ */ jsxRuntime.jsx("svg", { style: { position: "absolute", width: 0, height: 0 }, children: /* @__PURE__ */ jsxRuntime.jsxs("defs", { children: [
68772
+ /* @__PURE__ */ jsxRuntime.jsxs(
68773
+ "filter",
68774
+ {
68775
+ id: "psychedelic-wavy-filter",
68776
+ x: "-20%",
68777
+ y: "-20%",
68778
+ width: "140%",
68779
+ height: "140%",
68780
+ filterUnits: "objectBoundingBox",
68781
+ primitiveUnits: "userSpaceOnUse",
68782
+ colorInterpolationFilters: "linearRGB",
68783
+ children: [
68784
+ /* @__PURE__ */ jsxRuntime.jsx(
68785
+ "feTurbulence",
68786
+ {
68787
+ type: "turbulence",
68788
+ baseFrequency: "0.04 0.03",
68789
+ numOctaves: "12",
68790
+ seed: "27",
68791
+ stitchTiles: "stitch",
68792
+ x: "0%",
68793
+ y: "0%",
68794
+ width: "100%",
68795
+ height: "100%",
68796
+ result: "turbulence"
68797
+ }
68798
+ ),
68799
+ /* @__PURE__ */ jsxRuntime.jsx(
68800
+ "feDisplacementMap",
68801
+ {
68802
+ in: "SourceGraphic",
68803
+ in2: "turbulence",
68804
+ scale: "15",
68805
+ xChannelSelector: "R",
68806
+ yChannelSelector: "B",
68807
+ x: "0%",
68808
+ y: "0%",
68809
+ width: "100%",
68810
+ height: "100%",
68811
+ result: "displacementMap2"
68812
+ }
68813
+ )
68814
+ ]
68815
+ }
68816
+ ),
68817
+ /* @__PURE__ */ jsxRuntime.jsxs(
68818
+ "filter",
68819
+ {
68820
+ id: "psychedelic-glance-filter",
68821
+ x: "-20%",
68822
+ y: "-20%",
68823
+ width: "140%",
68824
+ height: "140%",
68825
+ filterUnits: "objectBoundingBox",
68826
+ primitiveUnits: "userSpaceOnUse",
68827
+ colorInterpolationFilters: "linearRGB",
68828
+ children: [
68829
+ /* @__PURE__ */ jsxRuntime.jsx(
68830
+ "feTurbulence",
68831
+ {
68832
+ type: "turbulence",
68833
+ baseFrequency: "0.02 0.03",
68834
+ numOctaves: "1",
68835
+ seed: "13",
68836
+ stitchTiles: "stitch",
68837
+ x: "0%",
68838
+ y: "0%",
68839
+ width: "100%",
68840
+ height: "100%",
68841
+ result: "turbulence"
68842
+ }
68843
+ ),
68844
+ /* @__PURE__ */ jsxRuntime.jsx(
68845
+ "feDisplacementMap",
68846
+ {
68847
+ in: "SourceGraphic",
68848
+ in2: "turbulence",
68849
+ scale: "126",
68850
+ xChannelSelector: "R",
68851
+ yChannelSelector: "B",
68852
+ x: "0%",
68853
+ y: "0%",
68854
+ width: "100%",
68855
+ height: "100%",
68856
+ result: "displacementMap2"
68857
+ }
68858
+ )
68859
+ ]
68860
+ }
68861
+ )
68862
+ ] }) }),
68863
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles$3$.root, children: /* @__PURE__ */ jsxRuntime.jsx("button", { className: clsx(styles$3$.button, styles$3$[variant]), children: "hover me" }) })
68864
+ ] });
68672
68865
  };
68673
68866
 
68674
68867
  const root$3G = "_root_qhbgz_1";
@@ -69455,30 +69648,15 @@ const SquishButton = ({ children, className = "", ...rest }) => {
69455
69648
  return /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", ...rest, className: clsx(styles$3P.root, className), children });
69456
69649
  };
69457
69650
 
69458
- const root$3w = "_root_v4ko6_1";
69459
- const pending = "_pending_v4ko6_12";
69460
- const loading$1 = "_loading_v4ko6_17";
69461
- const success$1 = "_success_v4ko6_20";
69462
- const icon$f = "_icon_v4ko6_25";
69463
- const fingerprint = "_fingerprint_v4ko6_50";
69464
- const styles$3O = {
69465
- root: root$3w,
69466
- pending: pending,
69467
- loading: loading$1,
69468
- success: success$1,
69469
- icon: icon$f,
69470
- fingerprint: fingerprint
69471
- };
69472
-
69473
- const root$3v = "_root_g5l4r_1";
69651
+ const root$3w = "_root_g5l4r_1";
69474
69652
  const a$3 = "_a_g5l4r_9";
69475
69653
  const b$2 = "_b_g5l4r_10";
69476
69654
  const c$3 = "_c_g5l4r_11";
69477
69655
  const d$3 = "_d_g5l4r_12";
69478
69656
  const e$3 = "_e_g5l4r_13";
69479
69657
  const active$m = "_active_g5l4r_20";
69480
- const styles$3N = {
69481
- root: root$3v,
69658
+ const styles$3O = {
69659
+ root: root$3w,
69482
69660
  a: a$3,
69483
69661
  b: b$2,
69484
69662
  c: c$3,
@@ -69491,7 +69669,7 @@ const Fingerprint = ({ className = "" }) => {
69491
69669
  return /* @__PURE__ */ jsxRuntime.jsx(
69492
69670
  "svg",
69493
69671
  {
69494
- className: clsx(styles$3N.root, className),
69672
+ className: clsx(styles$3O.root, className),
69495
69673
  width: "34px",
69496
69674
  height: "34px",
69497
69675
  viewBox: "0 0 34 34",
@@ -69513,35 +69691,35 @@ const Fingerprint = ({ className = "" }) => {
69513
69691
  /* @__PURE__ */ jsxRuntime.jsx(
69514
69692
  "path",
69515
69693
  {
69516
- className: clsx(styles$3N.a, { [styles$3N.active]: isActive }),
69694
+ className: clsx(styles$3O.a, { [styles$3O.active]: isActive }),
69517
69695
  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"
69518
69696
  }
69519
69697
  ),
69520
69698
  /* @__PURE__ */ jsxRuntime.jsx(
69521
69699
  "path",
69522
69700
  {
69523
- className: clsx(styles$3N.b, { [styles$3N.active]: isActive }),
69701
+ className: clsx(styles$3O.b, { [styles$3O.active]: isActive }),
69524
69702
  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"
69525
69703
  }
69526
69704
  ),
69527
69705
  /* @__PURE__ */ jsxRuntime.jsx(
69528
69706
  "path",
69529
69707
  {
69530
- className: clsx(styles$3N.c, { [styles$3N.active]: isActive }),
69708
+ className: clsx(styles$3O.c, { [styles$3O.active]: isActive }),
69531
69709
  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"
69532
69710
  }
69533
69711
  ),
69534
69712
  /* @__PURE__ */ jsxRuntime.jsx(
69535
69713
  "path",
69536
69714
  {
69537
- className: clsx(styles$3N.d, { [styles$3N.active]: isActive }),
69715
+ className: clsx(styles$3O.d, { [styles$3O.active]: isActive }),
69538
69716
  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"
69539
69717
  }
69540
69718
  ),
69541
69719
  /* @__PURE__ */ jsxRuntime.jsx(
69542
69720
  "path",
69543
69721
  {
69544
- className: clsx(styles$3N.e, { [styles$3N.active]: isActive }),
69722
+ className: clsx(styles$3O.e, { [styles$3O.active]: isActive }),
69545
69723
  d: "M8.95538742,12.6694189 C8.95538742,12.6694189 9.04883608,18.1288401 15.069217,17.3610597"
69546
69724
  }
69547
69725
  )
@@ -69552,15 +69730,30 @@ const Fingerprint = ({ className = "" }) => {
69552
69730
  );
69553
69731
  };
69554
69732
 
69733
+ const root$3v = "_root_v4ko6_1";
69734
+ const pending = "_pending_v4ko6_12";
69735
+ const loading$1 = "_loading_v4ko6_17";
69736
+ const success$1 = "_success_v4ko6_20";
69737
+ const icon$f = "_icon_v4ko6_25";
69738
+ const fingerprint = "_fingerprint_v4ko6_50";
69739
+ const styles$3N = {
69740
+ root: root$3v,
69741
+ pending: pending,
69742
+ loading: loading$1,
69743
+ success: success$1,
69744
+ icon: icon$f,
69745
+ fingerprint: fingerprint
69746
+ };
69747
+
69555
69748
  const SuccessLoader = ({ status }) => /* @__PURE__ */ jsxRuntime.jsx(
69556
69749
  "div",
69557
69750
  {
69558
- className: clsx(styles$3O.root, {
69559
- [styles$3O.success]: status === "success",
69560
- [styles$3O.loading]: status === "loading",
69561
- [styles$3O.pending]: status === "pending"
69751
+ className: clsx(styles$3N.root, {
69752
+ [styles$3N.success]: status === "success",
69753
+ [styles$3N.loading]: status === "loading",
69754
+ [styles$3N.pending]: status === "pending"
69562
69755
  }),
69563
- children: status === "success" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles$3O.icon }) : status === "pending" ? /* @__PURE__ */ jsxRuntime.jsx(Fingerprint, { className: styles$3O.fingerprint }) : null
69756
+ children: status === "success" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles$3N.icon }) : status === "pending" ? /* @__PURE__ */ jsxRuntime.jsx(Fingerprint, { className: styles$3N.fingerprint }) : null
69564
69757
  }
69565
69758
  );
69566
69759
 
@@ -71076,54 +71269,6 @@ const BulletsCarousel = () => {
71076
71269
  ] }) });
71077
71270
  };
71078
71271
 
71079
- const MOCK_CARD_CAROUSEL_ITEMS = [
71080
- {
71081
- id: "Tour",
71082
- image: "https://images.pexels.com/photos/991012/pexels-photo-991012.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940",
71083
- subtitle: "The grand moment",
71084
- title: "Le tour",
71085
- description: "Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam.",
71086
- href: "#",
71087
- hrefTitle: "Explore the tour"
71088
- },
71089
- {
71090
- id: "Window",
71091
- image: "https://images.pexels.com/photos/921294/pexels-photo-921294.png?auto=compress&cs=tinysrgb&h=750&w=1260",
71092
- subtitle: "The big window",
71093
- title: "Minimal window",
71094
- description: "Clear Glass Window With Brown and White Wooden Frame iste natus error sit voluptatem accusantium doloremque laudantium.",
71095
- href: "#",
71096
- hrefTitle: "Read the article"
71097
- },
71098
- {
71099
- id: "Palms",
71100
- image: "https://images.pexels.com/photos/92733/pexels-photo-92733.jpeg?auto=compress&cs=tinysrgb&h=750&w=1260",
71101
- subtitle: "Tropical palms",
71102
- title: "Palms",
71103
- description: "Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam.",
71104
- href: "#",
71105
- hrefTitle: "Explore the palms"
71106
- },
71107
- {
71108
- id: "Beach",
71109
- image: "https://images.pexels.com/photos/1008732/pexels-photo-1008732.jpeg?auto=compress&cs=tinysrgb&h=750&w=1260",
71110
- subtitle: "Beach",
71111
- title: "The beach",
71112
- description: "Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam.",
71113
- href: "#",
71114
- hrefTitle: "Explore the beach"
71115
- },
71116
- {
71117
- id: "Building",
71118
- image: "https://images.pexels.com/photos/1029614/pexels-photo-1029614.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940",
71119
- subtitle: "The white building",
71120
- title: "White Building",
71121
- description: "Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam.",
71122
- href: "#",
71123
- hrefTitle: "Read article"
71124
- }
71125
- ];
71126
-
71127
71272
  const root$35 = "_root_1f7ly_1";
71128
71273
  const item$m = "_item_1f7ly_14";
71129
71274
  const itemInfo = "_itemInfo_1f7ly_32";
@@ -71179,6 +71324,54 @@ const CardCarouselItem = ({
71179
71324
  ] });
71180
71325
  };
71181
71326
 
71327
+ const MOCK_CARD_CAROUSEL_ITEMS = [
71328
+ {
71329
+ id: "Tour",
71330
+ image: "https://images.pexels.com/photos/991012/pexels-photo-991012.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940",
71331
+ subtitle: "The grand moment",
71332
+ title: "Le tour",
71333
+ description: "Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam.",
71334
+ href: "#",
71335
+ hrefTitle: "Explore the tour"
71336
+ },
71337
+ {
71338
+ id: "Window",
71339
+ image: "https://images.pexels.com/photos/921294/pexels-photo-921294.png?auto=compress&cs=tinysrgb&h=750&w=1260",
71340
+ subtitle: "The big window",
71341
+ title: "Minimal window",
71342
+ description: "Clear Glass Window With Brown and White Wooden Frame iste natus error sit voluptatem accusantium doloremque laudantium.",
71343
+ href: "#",
71344
+ hrefTitle: "Read the article"
71345
+ },
71346
+ {
71347
+ id: "Palms",
71348
+ image: "https://images.pexels.com/photos/92733/pexels-photo-92733.jpeg?auto=compress&cs=tinysrgb&h=750&w=1260",
71349
+ subtitle: "Tropical palms",
71350
+ title: "Palms",
71351
+ description: "Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam.",
71352
+ href: "#",
71353
+ hrefTitle: "Explore the palms"
71354
+ },
71355
+ {
71356
+ id: "Beach",
71357
+ image: "https://images.pexels.com/photos/1008732/pexels-photo-1008732.jpeg?auto=compress&cs=tinysrgb&h=750&w=1260",
71358
+ subtitle: "Beach",
71359
+ title: "The beach",
71360
+ description: "Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam.",
71361
+ href: "#",
71362
+ hrefTitle: "Explore the beach"
71363
+ },
71364
+ {
71365
+ id: "Building",
71366
+ image: "https://images.pexels.com/photos/1029614/pexels-photo-1029614.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940",
71367
+ subtitle: "The white building",
71368
+ title: "White Building",
71369
+ description: "Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam.",
71370
+ href: "#",
71371
+ hrefTitle: "Read article"
71372
+ }
71373
+ ];
71374
+
71182
71375
  const CardCarousel = ({ items = MOCK_CARD_CAROUSEL_ITEMS }) => {
71183
71376
  const [activeIndex, setActiveIndex] = React.useState(0);
71184
71377
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles$3l.root, children: [
@@ -73782,12 +73975,12 @@ const DialControl = ({ limit = true }) => {
73782
73975
  ] });
73783
73976
  };
73784
73977
 
73785
- const root$2L = "_root_ibak3_58";
73786
- const selector = "_selector_ibak3_136";
73787
- const knob$1 = "_knob_ibak3_150";
73788
- const active$i = "_active_ibak3_189";
73789
- const list$5 = "_list_ibak3_392";
73790
- const item$j = "_item_ibak3_436";
73978
+ const root$2L = "_root_1v201_58";
73979
+ const selector = "_selector_1v201_136";
73980
+ const knob$1 = "_knob_1v201_150";
73981
+ const active$i = "_active_1v201_189";
73982
+ const list$5 = "_list_1v201_392";
73983
+ const item$j = "_item_1v201_436";
73791
73984
  const styles$2Y = {
73792
73985
  root: root$2L,
73793
73986
  selector: selector,
@@ -74058,17 +74251,6 @@ const DockMotionEmbedded = ({ children }) => {
74058
74251
  return /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles$2T.root, children });
74059
74252
  };
74060
74253
 
74061
- const root$2F = "_root_1oncf_1";
74062
- const block = "_block_1oncf_4";
74063
- const item$g = "_item_1oncf_14";
74064
- const gloss = "_gloss_1oncf_31";
74065
- const styles$2S = {
74066
- root: root$2F,
74067
- block: block,
74068
- item: item$g,
74069
- gloss: gloss
74070
- };
74071
-
74072
74254
  function hasWindow() {
74073
74255
  return typeof window !== 'undefined';
74074
74256
  }
@@ -78122,7 +78304,7 @@ function useRole(context, props) {
78122
78304
 
78123
78305
  const tooltip = "_tooltip_pli88_1";
78124
78306
  const tooltipContent = "_tooltipContent_pli88_6";
78125
- const styles$2R = {
78307
+ const styles$2S = {
78126
78308
  tooltip: tooltip,
78127
78309
  tooltipContent: tooltipContent
78128
78310
  };
@@ -78138,6 +78320,9 @@ const Tooltip = ({
78138
78320
  }) => {
78139
78321
  const [isOpen, setIsOpen] = React.useState(false);
78140
78322
  const shouldReduceMotion = useReducedMotion();
78323
+ const hasFinePointer = useWindowReady.useMatchMedia("(pointer: fine)");
78324
+ const isMobile = hasFinePointer === false;
78325
+ const timeoutRef = React.useRef(null);
78141
78326
  const variants = shouldReduceMotion ? void 0 : {
78142
78327
  initial: {
78143
78328
  scale: animate ? 0.6 : 1,
@@ -78183,6 +78368,28 @@ const Tooltip = ({
78183
78368
  dismiss,
78184
78369
  role
78185
78370
  ]);
78371
+ React.useEffect(() => {
78372
+ if (timeoutRef.current) {
78373
+ clearTimeout(timeoutRef.current);
78374
+ timeoutRef.current = null;
78375
+ }
78376
+ if (isOpen && isMobile) {
78377
+ timeoutRef.current = setTimeout(() => {
78378
+ setIsOpen(false);
78379
+ }, 2e3);
78380
+ }
78381
+ return () => {
78382
+ if (timeoutRef.current) {
78383
+ clearTimeout(timeoutRef.current);
78384
+ timeoutRef.current = null;
78385
+ }
78386
+ };
78387
+ }, [isOpen, isMobile]);
78388
+ const handleMobileClick = (_e) => {
78389
+ if (isMobile) {
78390
+ setIsOpen(true);
78391
+ }
78392
+ };
78186
78393
  const childRef = React.isValidElement(children) && children.props && children.props.ref ? children.props.ref : null;
78187
78394
  const mergedRef = useMergeRefs([refs.setReference, childRef]);
78188
78395
  if (React.isValidElement(children)) {
@@ -78198,6 +78405,10 @@ const Tooltip = ({
78198
78405
  const mergedProps = {
78199
78406
  ...childProps,
78200
78407
  ref: mergedRef,
78408
+ onClick: mergeEventHandler(
78409
+ childProps.onClick,
78410
+ handleMobileClick
78411
+ ),
78201
78412
  onMouseEnter: mergeEventHandler(
78202
78413
  childProps.onMouseEnter,
78203
78414
  tooltipProps.onMouseEnter
@@ -78223,11 +78434,11 @@ const Tooltip = ({
78223
78434
  ref: refs.setFloating,
78224
78435
  style: floatingStyles,
78225
78436
  ...getFloatingProps(),
78226
- className: styles$2R.tooltip,
78437
+ className: styles$2S.tooltip,
78227
78438
  children: /* @__PURE__ */ jsxRuntime.jsx(
78228
78439
  motion.div,
78229
78440
  {
78230
- className: clsx(styles$2R.tooltipContent, className),
78441
+ className: clsx(styles$2S.tooltipContent, className),
78231
78442
  variants,
78232
78443
  initial: shouldReduceMotion ? void 0 : "initial",
78233
78444
  animate: shouldReduceMotion ? void 0 : "animate",
@@ -78246,6 +78457,7 @@ const Tooltip = ({
78246
78457
  {
78247
78458
  ref: refs.setReference,
78248
78459
  ...getReferenceProps(),
78460
+ onClick: handleMobileClick,
78249
78461
  style: { display: "contents" },
78250
78462
  children
78251
78463
  }
@@ -78256,11 +78468,11 @@ const Tooltip = ({
78256
78468
  ref: refs.setFloating,
78257
78469
  style: floatingStyles,
78258
78470
  ...getFloatingProps(),
78259
- className: styles$2R.tooltip,
78471
+ className: styles$2S.tooltip,
78260
78472
  children: /* @__PURE__ */ jsxRuntime.jsx(
78261
78473
  motion.div,
78262
78474
  {
78263
- className: clsx(styles$2R.tooltipContent, className),
78475
+ className: clsx(styles$2S.tooltipContent, className),
78264
78476
  variants,
78265
78477
  initial: shouldReduceMotion ? void 0 : "initial",
78266
78478
  animate: shouldReduceMotion ? void 0 : "animate",
@@ -78274,15 +78486,15 @@ const Tooltip = ({
78274
78486
  ] });
78275
78487
  };
78276
78488
 
78277
- const root$2E = "_root_1uu8h_1";
78489
+ const root$2F = "_root_1uu8h_1";
78278
78490
  const label$8 = "_label_1uu8h_21";
78279
78491
  const input$m = "_input_1uu8h_28";
78280
78492
  const output = "_output_1uu8h_88";
78281
78493
  const valueTrack = "_valueTrack_1uu8h_90";
78282
78494
  const outputValues = "_outputValues_1uu8h_91";
78283
78495
  const outputValue = "_outputValue_1uu8h_91";
78284
- const styles$2Q = {
78285
- root: root$2E,
78496
+ const styles$2R = {
78497
+ root: root$2F,
78286
78498
  label: label$8,
78287
78499
  input: input$m,
78288
78500
  output: output,
@@ -78322,18 +78534,18 @@ const TooltipRangeSlider = () => {
78322
78534
  return /* @__PURE__ */ jsxRuntime.jsxs(
78323
78535
  "form",
78324
78536
  {
78325
- className: styles$2Q.root,
78537
+ className: styles$2R.root,
78326
78538
  action: "",
78327
78539
  style: {
78328
78540
  "--percent": `${percent}%`,
78329
78541
  "--transX": `${transX}em`
78330
78542
  },
78331
78543
  children: [
78332
- /* @__PURE__ */ jsxRuntime.jsx("label", { className: styles$2Q.label, htmlFor: "dummy", children: "Range" }),
78544
+ /* @__PURE__ */ jsxRuntime.jsx("label", { className: styles$2R.label, htmlFor: "dummy", children: "Range" }),
78333
78545
  /* @__PURE__ */ jsxRuntime.jsx(
78334
78546
  "input",
78335
78547
  {
78336
- className: styles$2Q.input,
78548
+ className: styles$2R.input,
78337
78549
  type: "range",
78338
78550
  value,
78339
78551
  min: min$1,
@@ -78342,12 +78554,12 @@ const TooltipRangeSlider = () => {
78342
78554
  onChange: update
78343
78555
  }
78344
78556
  ),
78345
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles$2Q.output, "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles$2Q.valueTrack, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles$2Q.outputValues, children: React.useMemo(() => {
78557
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles$2R.output, "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles$2R.valueTrack, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles$2R.outputValues, children: React.useMemo(() => {
78346
78558
  const totalValues = (Math.abs(max$1) + Math.abs(min$1)) / step$2 + 1;
78347
78559
  const values = [];
78348
78560
  for (let i = min$1; i < totalValues; i += 1) {
78349
78561
  values.push(
78350
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles$2Q.outputValue, children: i }, i)
78562
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles$2R.outputValue, children: i }, i)
78351
78563
  );
78352
78564
  }
78353
78565
  return values;
@@ -78357,6 +78569,17 @@ const TooltipRangeSlider = () => {
78357
78569
  );
78358
78570
  };
78359
78571
 
78572
+ const root$2E = "_root_1oncf_1";
78573
+ const block = "_block_1oncf_4";
78574
+ const item$g = "_item_1oncf_14";
78575
+ const gloss = "_gloss_1oncf_31";
78576
+ const styles$2Q = {
78577
+ root: root$2E,
78578
+ block: block,
78579
+ item: item$g,
78580
+ gloss: gloss
78581
+ };
78582
+
78360
78583
  const baseWidth = 48;
78361
78584
  const distanceLimit = baseWidth * 5;
78362
78585
  const distanceInput = [
@@ -78471,7 +78694,7 @@ const DockMotionItem = ({
78471
78694
  const isInteractive = rest.use !== "div";
78472
78695
  const ContentElement = React.useMemo(() => {
78473
78696
  if (rest.use && typeof rest.use !== "string") {
78474
- return motion(rest.use);
78697
+ return motion.create(rest.use);
78475
78698
  }
78476
78699
  switch (rest.use) {
78477
78700
  case "a":
@@ -78491,13 +78714,13 @@ const DockMotionItem = ({
78491
78714
  "div",
78492
78715
  {
78493
78716
  ref,
78494
- className: clsx(styles$2S.root, { [styles$2S.block]: type === "block" }),
78717
+ className: clsx(styles$2Q.root, { [styles$2Q.block]: type === "block" }),
78495
78718
  children: /* @__PURE__ */ jsxRuntime.jsxs(
78496
78719
  ContentElement,
78497
78720
  {
78498
78721
  ref: scope,
78499
78722
  layoutId: itemId,
78500
- className: clsx(styles$2S.item, className),
78723
+ className: clsx(styles$2Q.item, className),
78501
78724
  onMouseEnter,
78502
78725
  style: contentStyle,
78503
78726
  "data-action": isInteractive,
@@ -78547,7 +78770,7 @@ const DockMotionItem = ({
78547
78770
  whileDrag: { zIndex: 1 },
78548
78771
  ...linkProps,
78549
78772
  children: [
78550
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles$2S.gloss }),
78773
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles$2Q.gloss }),
78551
78774
  children
78552
78775
  ]
78553
78776
  },
@@ -79195,9 +79418,9 @@ const ContrastBackgroundText = () => {
79195
79418
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles$2D.bg, children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles$2D.text, children: "One place to stack all your cards" }) });
79196
79419
  };
79197
79420
 
79198
- const root$2s = "_root_1077x_1";
79199
- const title$5 = "_title_1077x_10";
79200
- const image$c = "_image_1077x_89";
79421
+ const root$2s = "_root_7opbl_1";
79422
+ const title$5 = "_title_7opbl_10";
79423
+ const image$c = "_image_7opbl_89";
79201
79424
  const styles$2C = {
79202
79425
  root: root$2s,
79203
79426
  title: title$5,
@@ -79205,21 +79428,78 @@ const styles$2C = {
79205
79428
  };
79206
79429
 
79207
79430
  const FluidGooeyTextBackground = () => {
79208
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles$2C.root, children: [
79209
- /* @__PURE__ */ jsxRuntime.jsx("h1", { className: styles$2C.title, children: /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
79210
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Business intelligence" }),
79211
- /* @__PURE__ */ jsxRuntime.jsx("br", {}),
79212
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: "built around" }),
79213
- /* @__PURE__ */ jsxRuntime.jsx("br", {}),
79214
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: "data teams" })
79431
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
79432
+ /* @__PURE__ */ jsxRuntime.jsx("svg", { style: { position: "absolute", width: 0, height: 0 }, children: /* @__PURE__ */ jsxRuntime.jsxs("defs", { children: [
79433
+ /* @__PURE__ */ jsxRuntime.jsxs("filter", { id: "round-desktop", children: [
79434
+ /* @__PURE__ */ jsxRuntime.jsx(
79435
+ "feGaussianBlur",
79436
+ {
79437
+ in: "SourceGraphic",
79438
+ stdDeviation: "10",
79439
+ result: "blur"
79440
+ }
79441
+ ),
79442
+ /* @__PURE__ */ jsxRuntime.jsx(
79443
+ "feColorMatrix",
79444
+ {
79445
+ in: "blur",
79446
+ mode: "matrix",
79447
+ values: "1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 20 -10",
79448
+ result: "goo"
79449
+ }
79450
+ ),
79451
+ /* @__PURE__ */ jsxRuntime.jsx("feComposite", { in: "SourceGraphic", in2: "goo", operator: "atop" })
79452
+ ] }),
79453
+ /* @__PURE__ */ jsxRuntime.jsxs("filter", { id: "round-tablet", children: [
79454
+ /* @__PURE__ */ jsxRuntime.jsx(
79455
+ "feGaussianBlur",
79456
+ {
79457
+ in: "SourceGraphic",
79458
+ stdDeviation: "7.5",
79459
+ result: "blur"
79460
+ }
79461
+ ),
79462
+ /* @__PURE__ */ jsxRuntime.jsx(
79463
+ "feColorMatrix",
79464
+ {
79465
+ in: "blur",
79466
+ mode: "matrix",
79467
+ values: "1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 15 -7.5",
79468
+ result: "goo"
79469
+ }
79470
+ ),
79471
+ /* @__PURE__ */ jsxRuntime.jsx("feComposite", { in: "SourceGraphic", in2: "goo", operator: "atop" })
79472
+ ] }),
79473
+ /* @__PURE__ */ jsxRuntime.jsxs("filter", { id: "round-mobile", children: [
79474
+ /* @__PURE__ */ jsxRuntime.jsx("feGaussianBlur", { in: "SourceGraphic", stdDeviation: "4", result: "blur" }),
79475
+ /* @__PURE__ */ jsxRuntime.jsx(
79476
+ "feColorMatrix",
79477
+ {
79478
+ in: "blur",
79479
+ mode: "matrix",
79480
+ values: "1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 8 -4",
79481
+ result: "goo"
79482
+ }
79483
+ ),
79484
+ /* @__PURE__ */ jsxRuntime.jsx("feComposite", { in: "SourceGraphic", in2: "goo", operator: "atop" })
79485
+ ] })
79215
79486
  ] }) }),
79216
- /* @__PURE__ */ jsxRuntime.jsx(
79217
- "img",
79218
- {
79219
- className: styles$2C.image,
79220
- src: "https://cdn.sanity.io/images/0nccms3b/production/51f800179e473cc6ae3b5523d21c0dcdde1bb8ea-1358x854.png?w=1358&h=854&q=95&fit=max&auto=format"
79221
- }
79222
- )
79487
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles$2C.root, children: [
79488
+ /* @__PURE__ */ jsxRuntime.jsx("h1", { className: styles$2C.title, children: /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
79489
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Business intelligence" }),
79490
+ /* @__PURE__ */ jsxRuntime.jsx("br", {}),
79491
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: "built around" }),
79492
+ /* @__PURE__ */ jsxRuntime.jsx("br", {}),
79493
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: "data teams" })
79494
+ ] }) }),
79495
+ /* @__PURE__ */ jsxRuntime.jsx(
79496
+ "img",
79497
+ {
79498
+ className: styles$2C.image,
79499
+ src: "https://cdn.sanity.io/images/0nccms3b/production/51f800179e473cc6ae3b5523d21c0dcdde1bb8ea-1358x854.png?w=1358&h=854&q=95&fit=max&auto=format"
79500
+ }
79501
+ )
79502
+ ] })
79223
79503
  ] });
79224
79504
  };
79225
79505
 
@@ -80642,7 +80922,7 @@ const EndlessLoader = ({ container }) => {
80642
80922
  return;
80643
80923
  }
80644
80924
  try {
80645
- const GLModule = await Promise.resolve().then(() => require('./gl-Bb5NStwh.cjs'));
80925
+ const GLModule = await Promise.resolve().then(() => require('./gl-B5V-Tq8D.cjs'));
80646
80926
  if (!isActiveRef.current) {
80647
80927
  return;
80648
80928
  }
@@ -86550,11 +86830,11 @@ const ScrambledText = ({ children, reveal = false }) => {
86550
86830
  );
86551
86831
  };
86552
86832
 
86553
- const root$Y = "_root_1d8jp_1";
86554
- const line = "_line_1d8jp_9";
86555
- const word$1 = "_word_1d8jp_14";
86556
- const link = "_link_1d8jp_18";
86557
- const letter = "_letter_1d8jp_22";
86833
+ const root$Y = "_root_kw2ds_1";
86834
+ const line = "_line_kw2ds_9";
86835
+ const word$1 = "_word_kw2ds_14";
86836
+ const link = "_link_kw2ds_18";
86837
+ const letter = "_letter_kw2ds_22";
86558
86838
  const styles$11 = {
86559
86839
  root: root$Y,
86560
86840
  line: line,
@@ -96508,7 +96788,7 @@ const Lock = () => {
96508
96788
  }
96509
96789
  };
96510
96790
  const asynchronously = async () => {
96511
- const Flickity = await Promise.resolve().then(() => require('./index-BoOtR9fl.cjs')).then(n => n.index).then((m) => m.default);
96791
+ const Flickity = await Promise.resolve().then(() => require('./index-n7f8R1ii.cjs')).then(n => n.index).then((m) => m.default);
96512
96792
  if (!rowsRef.current || !window) return;
96513
96793
  const rows = rowsRef.current.children;
96514
96794
  for (let i = 0, len = rows.length; i < len; i++) {
@@ -102308,6 +102588,34 @@ function useDrag(handler, config) {
102308
102588
  }, config || {}, 'drag');
102309
102589
  }
102310
102590
 
102591
+ function normalize(value, min, max) {
102592
+ return (value - min) / (max - min);
102593
+ }
102594
+ function calculateDistance(coordinates1, coordinates2) {
102595
+ const h = coordinates1.x - coordinates2.x;
102596
+ const v = coordinates1.y - coordinates2.y;
102597
+ return Math.sqrt(h * h + v * v);
102598
+ }
102599
+ function calculateAngle(coordinates1, coordinates2) {
102600
+ let theta = 0;
102601
+ const dy = coordinates2.y - coordinates1.y;
102602
+ const dx = coordinates2.x - coordinates1.x;
102603
+ theta = Math.atan2(dy, dx);
102604
+ theta *= 180 / Math.PI;
102605
+ return theta;
102606
+ }
102607
+ function getGlowLayers(factor, intensity) {
102608
+ const glowMap = [1, 2, 7, 14, 24, 42, 86, 124];
102609
+ const scale = intensity * factor;
102610
+ const glowLayers = Array.from({ length: 8 }, (_, i) => {
102611
+ return {
102612
+ radius: scale * glowMap[i],
102613
+ opacity: i > 0 ? 1 / i : 1
102614
+ };
102615
+ });
102616
+ return glowLayers;
102617
+ }
102618
+
102311
102619
  const root$h = "_root_1xwkj_1";
102312
102620
  const sun = "_sun_1xwkj_9";
102313
102621
  const moon = "_moon_1xwkj_20";
@@ -102361,34 +102669,6 @@ const BaileysBead = ({ theta, offset = 0, opa }) => {
102361
102669
  );
102362
102670
  };
102363
102671
 
102364
- function normalize(value, min, max) {
102365
- return (value - min) / (max - min);
102366
- }
102367
- function calculateDistance(coordinates1, coordinates2) {
102368
- const h = coordinates1.x - coordinates2.x;
102369
- const v = coordinates1.y - coordinates2.y;
102370
- return Math.sqrt(h * h + v * v);
102371
- }
102372
- function calculateAngle(coordinates1, coordinates2) {
102373
- let theta = 0;
102374
- const dy = coordinates2.y - coordinates1.y;
102375
- const dx = coordinates2.x - coordinates1.x;
102376
- theta = Math.atan2(dy, dx);
102377
- theta *= 180 / Math.PI;
102378
- return theta;
102379
- }
102380
- function getGlowLayers(factor, intensity) {
102381
- const glowMap = [1, 2, 7, 14, 24, 42, 86, 124];
102382
- const scale = intensity * factor;
102383
- const glowLayers = Array.from({ length: 8 }, (_, i) => {
102384
- return {
102385
- radius: scale * glowMap[i],
102386
- opacity: i > 0 ? 1 / i : 1
102387
- };
102388
- });
102389
- return glowLayers;
102390
- }
102391
-
102392
102672
  const SolarEclipse = () => {
102393
102673
  const [theta, setTheta] = React.useState(0);
102394
102674
  const [obscurity, setObscurity] = React.useState(0);