@bearmenu/ui 0.8.4 → 0.8.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. package/dist/chunk-637L7XQ3.js +85 -0
  2. package/dist/chunk-6XMYEZVR.js +26 -0
  3. package/dist/chunk-DNSXMHYX.js +8 -0
  4. package/dist/chunk-FDITZ2VM.js +16 -0
  5. package/dist/chunk-GPH6L4DX.js +55 -0
  6. package/dist/{chunk-N2KNBPAQ.js → chunk-QXHMPJ35.js} +1 -0
  7. package/dist/chunk-TT3WFS6S.js +379 -0
  8. package/dist/chunk-UXWAOISG.js +170 -0
  9. package/dist/{chunk-UZ3PCIE5.js → chunk-XWMRABZW.js} +2 -2
  10. package/dist/{chunk-VBA45GLP.js → chunk-ZDAHKI3A.js} +12 -2
  11. package/dist/components/alert.d.ts +2 -2
  12. package/dist/components/badge.d.ts +1 -1
  13. package/dist/components/button.d.ts +1 -1
  14. package/dist/components/card.d.ts +2 -2
  15. package/dist/components/card.js +4 -127
  16. package/dist/components/category-deck.d.ts +50 -0
  17. package/dist/components/category-deck.js +128 -0
  18. package/dist/components/command.d.ts +15 -15
  19. package/dist/components/concept-card.d.ts +43 -0
  20. package/dist/components/concept-card.js +81 -0
  21. package/dist/components/coverflow.d.ts +123 -0
  22. package/dist/components/coverflow.js +300 -0
  23. package/dist/components/date-input.d.ts +1 -1
  24. package/dist/components/day-rail-chip.d.ts +82 -0
  25. package/dist/components/day-rail-chip.js +105 -0
  26. package/dist/components/drift-rail.d.ts +28 -0
  27. package/dist/components/drift-rail.js +3 -0
  28. package/dist/components/event-card.d.ts +97 -0
  29. package/dist/components/event-card.js +161 -0
  30. package/dist/components/event-compact-row.d.ts +72 -0
  31. package/dist/components/event-compact-row.js +133 -0
  32. package/dist/components/event-day-header.d.ts +65 -0
  33. package/dist/components/event-day-header.js +95 -0
  34. package/dist/components/event-day-separator.d.ts +46 -0
  35. package/dist/components/event-day-separator.js +50 -0
  36. package/dist/components/event-detail-panel.d.ts +80 -0
  37. package/dist/components/event-detail-panel.js +251 -0
  38. package/dist/components/event-hub-hero.d.ts +34 -0
  39. package/dist/components/event-hub-hero.js +57 -0
  40. package/dist/components/event-index-row.d.ts +68 -0
  41. package/dist/components/event-index-row.js +84 -0
  42. package/dist/components/event-list-row-wide.d.ts +101 -0
  43. package/dist/components/event-list-row-wide.js +218 -0
  44. package/dist/components/event-list-row.d.ts +82 -0
  45. package/dist/components/event-list-row.js +173 -0
  46. package/dist/components/event-poster-fallback.d.ts +20 -0
  47. package/dist/components/event-poster-fallback.js +3 -0
  48. package/dist/components/event-types.d.ts +118 -0
  49. package/dist/components/event-types.js +2 -0
  50. package/dist/components/events-empty-state.d.ts +44 -0
  51. package/dist/components/events-empty-state.js +73 -0
  52. package/dist/components/facet-group.d.ts +93 -0
  53. package/dist/components/facet-group.js +222 -0
  54. package/dist/components/featured-rail-item.d.ts +42 -0
  55. package/dist/components/featured-rail-item.js +88 -0
  56. package/dist/components/hour-band.d.ts +68 -0
  57. package/dist/components/hour-band.js +53 -0
  58. package/dist/components/hour-group.d.ts +67 -0
  59. package/dist/components/hour-group.js +59 -0
  60. package/dist/components/item.d.ts +2 -2
  61. package/dist/components/motion-icon-controls.js +3 -379
  62. package/dist/components/multi-select-combobox.js +1 -1
  63. package/dist/components/place-about-tab.js +3 -3
  64. package/dist/components/place-details-mobile.js +3 -3
  65. package/dist/components/poster-stack.d.ts +30 -0
  66. package/dist/components/poster-stack.js +104 -0
  67. package/dist/components/poster-tape.d.ts +36 -0
  68. package/dist/components/poster-tape.js +64 -0
  69. package/dist/components/poster-wall.d.ts +25 -0
  70. package/dist/components/poster-wall.js +183 -0
  71. package/dist/components/quiet-stretch.d.ts +43 -0
  72. package/dist/components/quiet-stretch.js +54 -0
  73. package/dist/components/section-header.d.ts +53 -0
  74. package/dist/components/section-header.js +63 -0
  75. package/dist/components/segmented-nav.d.ts +62 -0
  76. package/dist/components/segmented-nav.js +54 -0
  77. package/dist/components/skeleton-card.js +1 -1
  78. package/dist/components/skeleton.d.ts +17 -0
  79. package/dist/components/skeleton.js +1 -1
  80. package/dist/components/spinner.d.ts +2 -2
  81. package/dist/components/tag-group.js +3 -26
  82. package/dist/components/tag.d.ts +2 -2
  83. package/dist/components/tag.js +1 -1
  84. package/dist/components/text.d.ts +3 -3
  85. package/dist/components/timeline-band.d.ts +46 -0
  86. package/dist/components/timeline-band.js +5 -0
  87. package/dist/components/venue-events-block.d.ts +143 -0
  88. package/dist/components/venue-events-block.js +222 -0
  89. package/dist/components/weekend-panel.d.ts +44 -0
  90. package/dist/components/weekend-panel.js +231 -0
  91. package/package.json +1 -1
  92. package/src/components/card.tsx +44 -1
  93. package/src/components/category-deck.stories.tsx +96 -0
  94. package/src/components/category-deck.tsx +227 -0
  95. package/src/components/concept-card.stories.tsx +80 -0
  96. package/src/components/concept-card.tsx +143 -0
  97. package/src/components/coverflow.stories.tsx +240 -0
  98. package/src/components/coverflow.test.tsx +193 -0
  99. package/src/components/coverflow.tsx +550 -0
  100. package/src/components/day-rail-chip.stories.tsx +145 -0
  101. package/src/components/day-rail-chip.tsx +201 -0
  102. package/src/components/drift-rail.stories.tsx +92 -0
  103. package/src/components/drift-rail.tsx +86 -0
  104. package/src/components/event-card.stories.tsx +248 -0
  105. package/src/components/event-card.test.tsx +177 -0
  106. package/src/components/event-card.tsx +321 -0
  107. package/src/components/event-compact-row.stories.tsx +221 -0
  108. package/src/components/event-compact-row.tsx +268 -0
  109. package/src/components/event-day-header.stories.tsx +124 -0
  110. package/src/components/event-day-header.tsx +180 -0
  111. package/src/components/event-day-separator.stories.tsx +70 -0
  112. package/src/components/event-day-separator.tsx +95 -0
  113. package/src/components/event-detail-panel.stories.tsx +191 -0
  114. package/src/components/event-detail-panel.tsx +360 -0
  115. package/src/components/event-hub-hero.stories.tsx +66 -0
  116. package/src/components/event-hub-hero.tsx +110 -0
  117. package/src/components/event-index-row.stories.tsx +116 -0
  118. package/src/components/event-index-row.tsx +181 -0
  119. package/src/components/event-list-row-wide.stories.tsx +204 -0
  120. package/src/components/event-list-row-wide.tsx +386 -0
  121. package/src/components/event-list-row.stories.tsx +159 -0
  122. package/src/components/event-list-row.tsx +335 -0
  123. package/src/components/event-poster-fallback.stories.tsx +52 -0
  124. package/src/components/event-poster-fallback.tsx +31 -0
  125. package/src/components/event-types.ts +133 -0
  126. package/src/components/events-empty-state.stories.tsx +59 -0
  127. package/src/components/events-empty-state.tsx +131 -0
  128. package/src/components/facet-group.stories.tsx +247 -0
  129. package/src/components/facet-group.test.tsx +225 -0
  130. package/src/components/facet-group.tsx +352 -0
  131. package/src/components/featured-rail-item.stories.tsx +86 -0
  132. package/src/components/featured-rail-item.tsx +153 -0
  133. package/src/components/hour-band.stories.tsx +159 -0
  134. package/src/components/hour-band.tsx +126 -0
  135. package/src/components/hour-group.stories.tsx +100 -0
  136. package/src/components/hour-group.tsx +124 -0
  137. package/src/components/poster-stack.stories.tsx +68 -0
  138. package/src/components/poster-stack.tsx +155 -0
  139. package/src/components/poster-tape.stories.tsx +70 -0
  140. package/src/components/poster-tape.tsx +122 -0
  141. package/src/components/poster-wall.stories.tsx +95 -0
  142. package/src/components/poster-wall.tsx +220 -0
  143. package/src/components/quiet-stretch.stories.tsx +62 -0
  144. package/src/components/quiet-stretch.tsx +115 -0
  145. package/src/components/section-header.stories.tsx +70 -0
  146. package/src/components/section-header.tsx +134 -0
  147. package/src/components/segmented-nav.stories.tsx +118 -0
  148. package/src/components/segmented-nav.tsx +113 -0
  149. package/src/components/skeleton.tsx +18 -0
  150. package/src/components/tag.tsx +11 -1
  151. package/src/components/timeline-band.stories.tsx +206 -0
  152. package/src/components/timeline-band.tsx +207 -0
  153. package/src/components/venue-events-block.stories.tsx +216 -0
  154. package/src/components/venue-events-block.tsx +408 -0
  155. package/src/components/weekend-panel.stories.tsx +92 -0
  156. package/src/components/weekend-panel.tsx +322 -0
  157. package/src/globals.css +19 -0
@@ -0,0 +1,85 @@
1
+ import { Separator } from './chunk-WSRWFA6K.js';
2
+ import { Skeleton } from './chunk-QXHMPJ35.js';
3
+ import { cn } from './chunk-FEK5XGZW.js';
4
+ import { jsxs, jsx } from 'react/jsx-runtime';
5
+
6
+ var LIVE_PUCK_PULSE_CLASS = "bm-timeline-live-puck-pulse";
7
+ function TimelineHourPuck({ time, isLive, liveLabel, className }) {
8
+ return /* @__PURE__ */ jsxs("span", { className: cn("relative flex justify-center", className), children: [
9
+ isLive && /* @__PURE__ */ jsx("style", { children: `
10
+ @keyframes ${LIVE_PUCK_PULSE_CLASS} {
11
+ 0%, 100% { box-shadow: 0 0 0 0 color-mix(in oklch, var(--success) 40%, transparent); }
12
+ 50% { box-shadow: 0 0 0 4px color-mix(in oklch, var(--success) 0%, transparent); }
13
+ }
14
+ .${LIVE_PUCK_PULSE_CLASS} {
15
+ animation: ${LIVE_PUCK_PULSE_CLASS} 2.4s ease-in-out infinite;
16
+ }
17
+ @media (prefers-reduced-motion: reduce) {
18
+ .${LIVE_PUCK_PULSE_CLASS} { animation: none; }
19
+ }
20
+ ` }),
21
+ /* @__PURE__ */ jsx(
22
+ "span",
23
+ {
24
+ className: cn(
25
+ "whitespace-nowrap rounded-[7px] border bg-background px-[7px] py-[3px]",
26
+ "font-mono text-[12.5px] font-medium tabular-nums",
27
+ isLive ? cn("border-success/40 text-success", LIVE_PUCK_PULSE_CLASS) : "border-border text-foreground"
28
+ ),
29
+ children: time
30
+ }
31
+ ),
32
+ isLive && !!liveLabel && /* @__PURE__ */ jsx(
33
+ "span",
34
+ {
35
+ className: cn(
36
+ "absolute top-[calc(100%+6px)] whitespace-nowrap bg-background px-1",
37
+ "text-[9.5px] font-extrabold tracking-[0.08em] text-success"
38
+ ),
39
+ children: liveLabel
40
+ }
41
+ )
42
+ ] });
43
+ }
44
+ function TimelineBand({ lane, children, className }) {
45
+ return /* @__PURE__ */ jsxs("div", { className: cn("flex items-stretch", className), children: [
46
+ /* @__PURE__ */ jsx("div", { className: "w-[var(--timeline-lane)] shrink-0", children: lane }),
47
+ /* @__PURE__ */ jsx("div", { className: "relative flex w-[var(--timeline-spine)] shrink-0 justify-center self-stretch", children: /* @__PURE__ */ jsx(Separator, { orientation: "vertical", className: "h-full" }) }),
48
+ /* @__PURE__ */ jsx("div", { className: "flex min-w-0 flex-1 flex-col", children })
49
+ ] });
50
+ }
51
+ function sk(width, height, radiusPx = 12) {
52
+ return /* @__PURE__ */ jsx(
53
+ Skeleton,
54
+ {
55
+ style: { width, height: `${height}px`, borderRadius: `${radiusPx}px` }
56
+ }
57
+ );
58
+ }
59
+ function TimelineBandSkeleton({ className }) {
60
+ return /* @__PURE__ */ jsxs("div", { className: cn("flex items-stretch", className), "aria-hidden": "true", children: [
61
+ /* @__PURE__ */ jsxs("div", { className: "flex w-[var(--timeline-lane)] shrink-0 flex-col gap-3", children: [
62
+ sk("100%", 297, 12),
63
+ sk("70%", 18),
64
+ sk("45%", 13)
65
+ ] }),
66
+ /* @__PURE__ */ jsx("div", { className: "relative flex w-[var(--timeline-spine)] shrink-0 justify-center self-stretch", children: /* @__PURE__ */ jsx(Separator, { orientation: "vertical", className: "h-full" }) }),
67
+ /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-4", children: [
68
+ /* @__PURE__ */ jsx("div", { className: "grid grid-cols-3 gap-[10px]", children: Array.from({ length: 3 }, (_, index) => /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
69
+ sk("100%", 190, 12),
70
+ sk("85%", 15),
71
+ sk("55%", 12)
72
+ ] }, index)) }),
73
+ /* @__PURE__ */ jsx("div", { className: "flex flex-col", children: Array.from({ length: 3 }, (_, index) => /* @__PURE__ */ jsxs("div", { className: "relative flex items-center gap-[11px] py-2", children: [
74
+ /* @__PURE__ */ jsx(Separator, { className: "absolute inset-x-0 top-0" }),
75
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-[34px] w-[34px] shrink-0 rounded-md" }),
76
+ /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-1.5", children: [
77
+ sk("60%", 13),
78
+ sk("40%", 11.5)
79
+ ] })
80
+ ] }, index)) })
81
+ ] })
82
+ ] });
83
+ }
84
+
85
+ export { TimelineBand, TimelineBandSkeleton, TimelineHourPuck };
@@ -0,0 +1,26 @@
1
+ import { cn } from './chunk-FEK5XGZW.js';
2
+ import { __objRest, __spreadProps, __spreadValues } from './chunk-3GWWZKX7.js';
3
+ import * as React from 'react';
4
+ import { jsxs, jsx } from 'react/jsx-runtime';
5
+
6
+ var TagGroup = React.forwardRef((_a, ref) => {
7
+ var _b = _a, { className, label, srLabel = true, children } = _b, props = __objRest(_b, ["className", "label", "srLabel", "children"]);
8
+ return /* @__PURE__ */ jsxs(
9
+ "div",
10
+ __spreadProps(__spreadValues({
11
+ ref,
12
+ role: "group",
13
+ "aria-label": label,
14
+ "data-slot": "tag-group",
15
+ className: cn("flex flex-wrap items-center gap-1.5", className)
16
+ }, props), {
17
+ children: [
18
+ label && !srLabel && /* @__PURE__ */ jsx("span", { className: "mr-1 text-xs font-semibold text-muted-foreground", children: label }),
19
+ children
20
+ ]
21
+ })
22
+ );
23
+ });
24
+ TagGroup.displayName = "TagGroup";
25
+
26
+ export { TagGroup };
@@ -0,0 +1,8 @@
1
+ // src/components/event-types.ts
2
+ function resolveEventEntryFee(event) {
3
+ if (event.entry_fee === void 0) return { kind: "unknown" };
4
+ if (event.entry_fee === 0) return { kind: "free" };
5
+ return { kind: "paid", amountRon: event.entry_fee };
6
+ }
7
+
8
+ export { resolveEventEntryFee };
@@ -0,0 +1,16 @@
1
+ import { cn } from './chunk-FEK5XGZW.js';
2
+ import { CalendarDays } from 'lucide-react';
3
+ import { jsx } from 'react/jsx-runtime';
4
+
5
+ function EventPosterFallback({ icon, className }) {
6
+ return /* @__PURE__ */ jsx(
7
+ "div",
8
+ {
9
+ className: cn("flex h-full w-full items-center justify-center", className),
10
+ style: { background: "var(--gradient-primary)" },
11
+ children: /* @__PURE__ */ jsx("span", { className: "text-primary-foreground/85 drop-shadow-[0_2px_6px_oklch(0_0_0/0.35)]", children: icon != null ? icon : /* @__PURE__ */ jsx(CalendarDays, { className: "h-10 w-10", "aria-hidden": true }) })
12
+ }
13
+ );
14
+ }
15
+
16
+ export { EventPosterFallback };
@@ -0,0 +1,55 @@
1
+ import { cn } from './chunk-FEK5XGZW.js';
2
+ import { useId, useRef, useEffect } from 'react';
3
+ import { jsxs, jsx } from 'react/jsx-runtime';
4
+
5
+ var DRIFT_RAIL_DEFAULT_DURATION_SECONDS = 42;
6
+ function DriftRail({
7
+ children,
8
+ reverse = false,
9
+ durationSeconds = DRIFT_RAIL_DEFAULT_DURATION_SECONDS,
10
+ pauseOnHover = true,
11
+ className
12
+ }) {
13
+ const scopeId = useId().replace(/[^a-zA-Z0-9]/g, "");
14
+ const scopeClass = `drift-rail-${scopeId}`;
15
+ const containerRef = useRef(null);
16
+ useEffect(() => {
17
+ const node = containerRef.current;
18
+ if (!node || typeof IntersectionObserver === "undefined") return void 0;
19
+ const observer = new IntersectionObserver(
20
+ ([entry]) => {
21
+ node.dataset.offscreen = entry.isIntersecting ? "false" : "true";
22
+ },
23
+ { threshold: 0 }
24
+ );
25
+ observer.observe(node);
26
+ return () => observer.disconnect();
27
+ }, []);
28
+ return /* @__PURE__ */ jsxs("div", { ref: containerRef, className: cn(scopeClass, "overflow-hidden py-1.5", className), children: [
29
+ /* @__PURE__ */ jsx("style", { children: `
30
+ .${scopeClass} .drift-rail-run {
31
+ animation: ${scopeClass}-run ${durationSeconds}s linear infinite;
32
+ animation-direction: ${reverse ? "reverse" : "normal"};
33
+ }
34
+ .${scopeClass}[data-offscreen="true"] .drift-rail-run {
35
+ animation-play-state: paused;
36
+ }
37
+ @keyframes ${scopeClass}-run {
38
+ from { transform: translateX(0); }
39
+ to { transform: translateX(-50%); }
40
+ }
41
+ @media (prefers-reduced-motion: reduce) {
42
+ .${scopeClass} .drift-rail-run {
43
+ animation: none;
44
+ }
45
+ }
46
+ ${pauseOnHover ? `.${scopeClass}:hover .drift-rail-run { animation-play-state: paused; }` : ""}
47
+ ` }),
48
+ /* @__PURE__ */ jsxs("div", { className: "drift-rail-run flex w-max items-stretch gap-3.5 motion-reduce:[animation:none]", children: [
49
+ children,
50
+ /* @__PURE__ */ jsx("div", { className: "contents", "aria-hidden": "true", children })
51
+ ] })
52
+ ] });
53
+ }
54
+
55
+ export { DriftRail };
@@ -11,6 +11,7 @@ function Skeleton(_a) {
11
11
  className: cn(
12
12
  "relative overflow-hidden rounded-xl bg-muted",
13
13
  "before:absolute before:inset-0 before:-translate-x-full before:animate-[shimmer_2s_infinite] before:bg-gradient-to-r before:from-transparent before:via-foreground/[0.04] before:to-transparent",
14
+ "motion-reduce:before:animate-none motion-reduce:before:hidden",
14
15
  className
15
16
  )
16
17
  }, props)
@@ -0,0 +1,379 @@
1
+ import { beats, returnTransition, MotionIcon } from './chunk-2WDJR6K7.js';
2
+ import { __spreadProps, __spreadValues } from './chunk-3GWWZKX7.js';
3
+ import { motion } from 'framer-motion';
4
+ import { jsx, jsxs } from 'react/jsx-runtime';
5
+
6
+ var HEART_TIMES = [0, 0.18, 0.5, 0.76, 1];
7
+ var heartBody = {
8
+ rest: { scaleX: 1, scaleY: 1, fillOpacity: 0, transition: returnTransition },
9
+ active: { scaleX: 1, scaleY: 1, fillOpacity: 1, transition: returnTransition },
10
+ play: {
11
+ scaleX: [1, 1.14, 0.9, 1.03, 1],
12
+ scaleY: [1, 0.82, 1.26, 0.96, 1],
13
+ fillOpacity: [0, 0, 1, 1, 1],
14
+ transition: beats(HEART_TIMES, 0.58)
15
+ }
16
+ };
17
+ function MotionHeart(props) {
18
+ return /* @__PURE__ */ jsx(MotionIcon, __spreadProps(__spreadValues({}, props), { children: /* @__PURE__ */ jsx(
19
+ motion.path,
20
+ {
21
+ variants: heartBody,
22
+ style: { originX: "12px", originY: "13px" },
23
+ fill: "currentColor",
24
+ fillOpacity: 0,
25
+ d: "M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5"
26
+ }
27
+ ) }));
28
+ }
29
+ var BOOKMARK_TIMES = [0, 0.2, 0.56, 0.8, 1];
30
+ var bookmarkBody = {
31
+ rest: { y: 0, scaleY: 1, fillOpacity: 0, transition: returnTransition },
32
+ active: { y: 0, scaleY: 1, fillOpacity: 1, transition: returnTransition },
33
+ play: {
34
+ // Lifts clear, drops, compresses against the notch, settles filled.
35
+ y: [0, -7, 1.5, 0, 0],
36
+ scaleY: [1, 1.07, 0.88, 1.02, 1],
37
+ fillOpacity: [0, 0, 0, 1, 1],
38
+ transition: beats(BOOKMARK_TIMES, 0.6)
39
+ }
40
+ };
41
+ function MotionBookmark(props) {
42
+ return /* @__PURE__ */ jsx(MotionIcon, __spreadProps(__spreadValues({}, props), { children: /* @__PURE__ */ jsx(
43
+ motion.path,
44
+ {
45
+ variants: bookmarkBody,
46
+ style: { originX: "12px", originY: "21px" },
47
+ fill: "currentColor",
48
+ fillOpacity: 0,
49
+ d: "M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z"
50
+ }
51
+ ) }));
52
+ }
53
+ var SLIDER_ROWS = [5, 12, 19];
54
+ var HANDLE_X = [14, 8, 16];
55
+ var HANDLE_ACTIVE_DX = [-6, 7, -4];
56
+ function sliderHandle(index) {
57
+ const dx = HANDLE_ACTIVE_DX[index];
58
+ return {
59
+ rest: { x: 0, transition: returnTransition },
60
+ active: { x: dx, transition: returnTransition },
61
+ play: {
62
+ x: [0, -dx * 0.12, dx * 1.12, dx],
63
+ transition: beats([0, 0.16, 0.72, 1], 0.55 + index * 0.04)
64
+ }
65
+ };
66
+ }
67
+ function MotionSliders(props) {
68
+ return /* @__PURE__ */ jsxs(MotionIcon, __spreadProps(__spreadValues({}, props), { children: [
69
+ SLIDER_ROWS.map((y) => /* @__PURE__ */ jsx("path", { d: `M3 ${y}h18`, opacity: 0.45 }, `track-${y}`)),
70
+ SLIDER_ROWS.map((y, i) => /* @__PURE__ */ jsx(motion.path, { variants: sliderHandle(i), d: `M${HANDLE_X[i]} ${y - 2}v4` }, `handle-${y}`))
71
+ ] }));
72
+ }
73
+ var lens = {
74
+ rest: { rotate: 0, transition: returnTransition },
75
+ active: { rotate: 0, transition: returnTransition },
76
+ play: {
77
+ // Pivots on the handle end, so the glass sweeps an arc like someone scanning.
78
+ rotate: [0, 9, -16, 4, 0],
79
+ transition: beats([0, 0.16, 0.48, 0.78, 1], 0.6)
80
+ }
81
+ };
82
+ var found = {
83
+ rest: { scale: 0, opacity: 0, transition: { duration: 0.15 } },
84
+ active: { scale: 1, opacity: 1, transition: { duration: 0.15 } },
85
+ play: {
86
+ scale: [0, 0, 0, 1.3, 1],
87
+ opacity: [0, 0, 0, 1, 1],
88
+ transition: beats([0, 0.16, 0.48, 0.78, 1], 0.6)
89
+ }
90
+ };
91
+ function MotionSearch(props) {
92
+ return /* @__PURE__ */ jsx(MotionIcon, __spreadProps(__spreadValues({}, props), { children: /* @__PURE__ */ jsxs(motion.g, { variants: lens, style: { originX: "21px", originY: "21px" }, children: [
93
+ /* @__PURE__ */ jsx("circle", { cx: "11", cy: "11", r: "8" }),
94
+ /* @__PURE__ */ jsx("path", { d: "m21 21-4.34-4.34" }),
95
+ /* @__PURE__ */ jsx(
96
+ motion.circle,
97
+ {
98
+ variants: found,
99
+ opacity: 0,
100
+ style: { originX: "11px", originY: "11px" },
101
+ fill: "currentColor",
102
+ cx: "11",
103
+ cy: "11",
104
+ r: "2.5"
105
+ }
106
+ )
107
+ ] }) }));
108
+ }
109
+ var SHARE_TIMES = [0, 0.2, 0.62, 1];
110
+ function shareNode(dx, dy) {
111
+ return {
112
+ rest: { x: 0, y: 0, opacity: 1, transition: returnTransition },
113
+ active: { x: 0, y: 0, opacity: 1, transition: returnTransition },
114
+ play: {
115
+ x: [0, -dx * 0.18, dx, 0],
116
+ y: [0, -dy * 0.18, dy, 0],
117
+ opacity: [1, 1, 0.15, 1],
118
+ transition: beats(SHARE_TIMES, 0.58)
119
+ }
120
+ };
121
+ }
122
+ var shareTop = shareNode(7, -4);
123
+ var shareBottom = shareNode(7, 4);
124
+ function MotionShare(props) {
125
+ return /* @__PURE__ */ jsxs(MotionIcon, __spreadProps(__spreadValues({}, props), { children: [
126
+ /* @__PURE__ */ jsx("circle", { cx: "6", cy: "12", r: "3" }),
127
+ /* @__PURE__ */ jsxs(motion.g, { variants: shareTop, children: [
128
+ /* @__PURE__ */ jsx("circle", { cx: "18", cy: "5", r: "3" }),
129
+ /* @__PURE__ */ jsx("line", { x1: "15.41", x2: "8.59", y1: "6.51", y2: "10.49" })
130
+ ] }),
131
+ /* @__PURE__ */ jsxs(motion.g, { variants: shareBottom, children: [
132
+ /* @__PURE__ */ jsx("circle", { cx: "18", cy: "19", r: "3" }),
133
+ /* @__PURE__ */ jsx("line", { x1: "8.59", x2: "15.42", y1: "13.51", y2: "17.49" })
134
+ ] })
135
+ ] }));
136
+ }
137
+ var SORT_TIMES = [0, 0.18, 0.6, 1];
138
+ function sortArm(dy) {
139
+ return {
140
+ rest: { y: 0, transition: returnTransition },
141
+ active: { y: 0, transition: returnTransition },
142
+ play: {
143
+ y: [0, -dy * 0.2, dy, 0],
144
+ transition: beats(SORT_TIMES, 0.56)
145
+ }
146
+ };
147
+ }
148
+ var sortDown = sortArm(6);
149
+ var sortUp = sortArm(-6);
150
+ function MotionSort(props) {
151
+ return /* @__PURE__ */ jsxs(MotionIcon, __spreadProps(__spreadValues({}, props), { children: [
152
+ /* @__PURE__ */ jsxs(motion.g, { variants: sortDown, children: [
153
+ /* @__PURE__ */ jsx("path", { d: "m21 16-4 4-4-4" }),
154
+ /* @__PURE__ */ jsx("path", { d: "M17 20V4" })
155
+ ] }),
156
+ /* @__PURE__ */ jsxs(motion.g, { variants: sortUp, children: [
157
+ /* @__PURE__ */ jsx("path", { d: "m3 8 4-4 4 4" }),
158
+ /* @__PURE__ */ jsx("path", { d: "M7 4v16" })
159
+ ] })
160
+ ] }));
161
+ }
162
+ var checkStroke = {
163
+ rest: { pathLength: 0, opacity: 0, transition: { duration: 0.15 } },
164
+ active: { pathLength: 1, opacity: 1, transition: { duration: 0.15 } },
165
+ play: {
166
+ pathLength: [0, 1],
167
+ opacity: [1, 1],
168
+ transition: { duration: 0.26, ease: "easeOut" }
169
+ }
170
+ };
171
+ function MotionCheck(props) {
172
+ return /* @__PURE__ */ jsx(MotionIcon, __spreadProps(__spreadValues({}, props), { children: /* @__PURE__ */ jsx(motion.path, { variants: checkStroke, opacity: 0, d: "M20 6 9 17l-5-5" }) }));
173
+ }
174
+ var SUN_RAYS = [
175
+ "M12 2v2",
176
+ "M12 20v2",
177
+ "m4.93 4.93 1.41 1.41",
178
+ "m17.66 17.66 1.41 1.41",
179
+ "M2 12h2",
180
+ "M20 12h2",
181
+ "m6.34 17.66-1.41 1.41",
182
+ "m19.07 4.93-1.41 1.41"
183
+ ];
184
+ var THEME_TIMES = [0, 0.3, 0.7, 1];
185
+ var rays = {
186
+ rest: { scale: 1, opacity: 1, transition: returnTransition },
187
+ active: { scale: 0, opacity: 0, transition: returnTransition },
188
+ play: {
189
+ scale: [1, 0.4, 0, 0],
190
+ opacity: [1, 0.5, 0, 0],
191
+ transition: beats(THEME_TIMES, 0.5)
192
+ }
193
+ };
194
+ var disc = {
195
+ rest: { scale: 1, opacity: 1, transition: returnTransition },
196
+ active: { scale: 0.6, opacity: 0, transition: returnTransition },
197
+ play: { scale: [1, 0.85, 0.6, 0.6], opacity: [1, 1, 0, 0], transition: beats(THEME_TIMES, 0.5) }
198
+ };
199
+ var crescent = {
200
+ rest: { scale: 0.6, opacity: 0, rotate: -35, transition: returnTransition },
201
+ active: { scale: 1, opacity: 1, rotate: 0, transition: returnTransition },
202
+ play: {
203
+ scale: [0.6, 0.7, 1.06, 1],
204
+ opacity: [0, 0, 1, 1],
205
+ rotate: [-35, -22, 4, 0],
206
+ transition: beats(THEME_TIMES, 0.5)
207
+ }
208
+ };
209
+ function MotionTheme(props) {
210
+ const origin = { originX: "12px", originY: "12px" };
211
+ return /* @__PURE__ */ jsxs(MotionIcon, __spreadProps(__spreadValues({}, props), { children: [
212
+ /* @__PURE__ */ jsx(motion.g, { variants: rays, style: origin, children: SUN_RAYS.map((d) => /* @__PURE__ */ jsx("path", { d }, d)) }),
213
+ /* @__PURE__ */ jsx(motion.circle, { variants: disc, style: origin, cx: "12", cy: "12", r: "4" }),
214
+ /* @__PURE__ */ jsx(
215
+ motion.path,
216
+ {
217
+ variants: crescent,
218
+ opacity: 0,
219
+ style: origin,
220
+ d: "M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401"
221
+ }
222
+ )
223
+ ] }));
224
+ }
225
+ var chevron = {
226
+ rest: { rotate: 0, y: 0, transition: returnTransition },
227
+ active: { rotate: 180, y: 0, transition: returnTransition },
228
+ play: {
229
+ rotate: [0, -12, 196, 180],
230
+ y: [0, 1, -1, 0],
231
+ transition: beats([0, 0.16, 0.72, 1], 0.44)
232
+ }
233
+ };
234
+ function MotionChevron(props) {
235
+ return /* @__PURE__ */ jsx(MotionIcon, __spreadProps(__spreadValues({}, props), { children: /* @__PURE__ */ jsx(motion.path, { variants: chevron, style: { originX: "12px", originY: "12px" }, d: "m6 9 6 6 6-6" }) }));
236
+ }
237
+ var PLAYPAUSE_TIMES = [0, 0.24, 0.72, 1];
238
+ var playHead = {
239
+ rest: { scale: 1, opacity: 1, transition: returnTransition },
240
+ active: { scale: 0.2, opacity: 0, transition: returnTransition },
241
+ play: { scale: [1, 1.1, 0.2, 0.2], opacity: [1, 1, 0, 0], transition: beats(PLAYPAUSE_TIMES, 0.46) }
242
+ };
243
+ function pauseBar(dx) {
244
+ return {
245
+ rest: { x: dx, scaleY: 0.2, opacity: 0, transition: returnTransition },
246
+ active: { x: 0, scaleY: 1, opacity: 1, transition: returnTransition },
247
+ play: {
248
+ x: [dx, dx * 0.7, -dx * 0.08, 0],
249
+ scaleY: [0.2, 0.4, 1.08, 1],
250
+ opacity: [0, 0.4, 1, 1],
251
+ transition: beats(PLAYPAUSE_TIMES, 0.46)
252
+ }
253
+ };
254
+ }
255
+ var barLeft = pauseBar(5);
256
+ var barRight = pauseBar(-5);
257
+ function MotionPlayPause(props) {
258
+ const origin = { originX: "12px", originY: "12px" };
259
+ return /* @__PURE__ */ jsxs(MotionIcon, __spreadProps(__spreadValues({}, props), { children: [
260
+ /* @__PURE__ */ jsx(
261
+ motion.path,
262
+ {
263
+ variants: playHead,
264
+ style: origin,
265
+ d: "M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z"
266
+ }
267
+ ),
268
+ /* @__PURE__ */ jsx(motion.rect, { variants: barLeft, opacity: 0, style: origin, x: "5", y: "3", width: "5", height: "18", rx: "1" }),
269
+ /* @__PURE__ */ jsx(motion.rect, { variants: barRight, opacity: 0, style: origin, x: "14", y: "3", width: "5", height: "18", rx: "1" })
270
+ ] }));
271
+ }
272
+ var EYE_TIMES = [0, 0.3, 0.74, 1];
273
+ var lid = {
274
+ rest: { scaleY: 1, transition: returnTransition },
275
+ active: { scaleY: 0.18, transition: returnTransition },
276
+ play: { scaleY: [1, 1.06, 0.14, 0.18], transition: beats(EYE_TIMES, 0.46) }
277
+ };
278
+ var pupil = {
279
+ rest: { scale: 1, opacity: 1, transition: returnTransition },
280
+ active: { scale: 0.2, opacity: 0, transition: returnTransition },
281
+ play: { scale: [1, 1, 0.2, 0.2], opacity: [1, 1, 0, 0], transition: beats(EYE_TIMES, 0.46) }
282
+ };
283
+ var slash = {
284
+ rest: { pathLength: 0, opacity: 0, transition: { duration: 0.16 } },
285
+ active: { pathLength: 1, opacity: 1, transition: { duration: 0.16 } },
286
+ play: {
287
+ pathLength: [0, 0, 1, 1],
288
+ opacity: [0, 1, 1, 1],
289
+ transition: beats(EYE_TIMES, 0.46)
290
+ }
291
+ };
292
+ function MotionEye(props) {
293
+ const origin = { originX: "12px", originY: "12px" };
294
+ return /* @__PURE__ */ jsxs(MotionIcon, __spreadProps(__spreadValues({}, props), { children: [
295
+ /* @__PURE__ */ jsx(
296
+ motion.path,
297
+ {
298
+ variants: lid,
299
+ style: origin,
300
+ d: "M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0"
301
+ }
302
+ ),
303
+ /* @__PURE__ */ jsx(motion.circle, { variants: pupil, style: origin, cx: "12", cy: "12", r: "3" }),
304
+ /* @__PURE__ */ jsx(motion.path, { variants: slash, opacity: 0, d: "m2 2 20 20" })
305
+ ] }));
306
+ }
307
+ var STAR_TIMES = [0, 0.2, 0.62, 1];
308
+ var starBody = {
309
+ rest: { scale: 1, rotate: 0, fillOpacity: 0, transition: returnTransition },
310
+ active: { scale: 1, rotate: 0, fillOpacity: 1, transition: returnTransition },
311
+ play: {
312
+ scale: [1, 0.72, 1.22, 1],
313
+ rotate: [0, -14, 6, 0],
314
+ fillOpacity: [0, 0, 1, 1],
315
+ transition: beats(STAR_TIMES, 0.5)
316
+ }
317
+ };
318
+ function MotionStar(props) {
319
+ return /* @__PURE__ */ jsx(MotionIcon, __spreadProps(__spreadValues({}, props), { children: /* @__PURE__ */ jsx(
320
+ motion.path,
321
+ {
322
+ variants: starBody,
323
+ style: { originX: "12px", originY: "12px" },
324
+ fill: "currentColor",
325
+ fillOpacity: 0,
326
+ d: "M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"
327
+ }
328
+ ) }));
329
+ }
330
+ var COPY_TIMES = [0, 0.22, 0.5, 0.76, 1];
331
+ var copySheet = {
332
+ rest: { x: 0, y: 0, opacity: 1, transition: returnTransition },
333
+ active: { x: 0, y: 0, opacity: 0, transition: returnTransition },
334
+ play: {
335
+ x: [0, 2.5, 4, 0, 0],
336
+ y: [0, -2.5, -4, 0, 0],
337
+ opacity: [1, 1, 1, 0, 0],
338
+ transition: beats(COPY_TIMES, 0.6)
339
+ }
340
+ };
341
+ var copyBack = {
342
+ rest: { opacity: 1, transition: returnTransition },
343
+ active: { opacity: 0, transition: returnTransition },
344
+ play: { opacity: [1, 1, 1, 0, 0], transition: beats(COPY_TIMES, 0.6) }
345
+ };
346
+ var copyCheck = {
347
+ rest: { pathLength: 0, opacity: 0, transition: { duration: 0.14 } },
348
+ active: { pathLength: 1, opacity: 1, transition: { duration: 0.14 } },
349
+ play: {
350
+ pathLength: [0, 0, 0, 0, 1],
351
+ opacity: [0, 0, 0, 1, 1],
352
+ transition: beats(COPY_TIMES, 0.6)
353
+ }
354
+ };
355
+ function MotionCopy(props) {
356
+ return /* @__PURE__ */ jsxs(MotionIcon, __spreadProps(__spreadValues({}, props), { children: [
357
+ /* @__PURE__ */ jsx(motion.path, { variants: copyBack, d: "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2" }),
358
+ /* @__PURE__ */ jsx(motion.rect, { variants: copySheet, width: "14", height: "14", x: "8", y: "8", rx: "2", ry: "2" }),
359
+ /* @__PURE__ */ jsx(motion.path, { variants: copyCheck, opacity: 0, d: "M20 6 9 17l-5-5" })
360
+ ] }));
361
+ }
362
+ var refreshRing = {
363
+ rest: { rotate: 0, transition: returnTransition },
364
+ active: { rotate: 0, transition: returnTransition },
365
+ play: {
366
+ rotate: [0, -18, 372, 360],
367
+ transition: beats([0, 0.14, 0.8, 1], 0.66)
368
+ }
369
+ };
370
+ function MotionRefresh(props) {
371
+ return /* @__PURE__ */ jsx(MotionIcon, __spreadProps(__spreadValues({}, props), { children: /* @__PURE__ */ jsxs(motion.g, { variants: refreshRing, style: { originX: "12px", originY: "12px" }, children: [
372
+ /* @__PURE__ */ jsx("path", { d: "M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8" }),
373
+ /* @__PURE__ */ jsx("path", { d: "M21 3v5h-5" }),
374
+ /* @__PURE__ */ jsx("path", { d: "M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16" }),
375
+ /* @__PURE__ */ jsx("path", { d: "M8 16H3v5" })
376
+ ] }) }));
377
+ }
378
+
379
+ export { MotionBookmark, MotionCheck, MotionChevron, MotionCopy, MotionEye, MotionHeart, MotionPlayPause, MotionRefresh, MotionSearch, MotionShare, MotionSliders, MotionSort, MotionStar, MotionTheme };