@sportswik/icons-react 1.0.0 → 1.1.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.
package/README.md CHANGED
@@ -11,7 +11,7 @@ npm i @sportswik/icons-react
11
11
  ## Usage
12
12
 
13
13
  ```tsx
14
- import PlayCircle from "@sportswik/icons-react/PlayCircle";
14
+ import { PlayCircle } from "@sportswik/icons-react";
15
15
 
16
16
  export function Button() {
17
17
  return <PlayCircle width={24} height={24} />;
@@ -24,6 +24,26 @@ All icons inherit color via `currentColor`. Use CSS or inline styles to tint:
24
24
  <PlayCircle style={{ color: "#0EA5E9" }} />
25
25
  ```
26
26
 
27
+ ## Animated icons
28
+
29
+ A hand-written subset animates on hover. Same names and props as the static
30
+ icons, plus `animate`:
31
+
32
+ ```tsx
33
+ import { Settings } from "@sportswik/icons-react/animated";
34
+
35
+ <Settings /> // animates on its own mouse hover
36
+ <Settings animate={hovered} /> // a parent (e.g. a nav row) drives it
37
+ ```
38
+
39
+ - `animate={true}` plays once and holds; `false` eases back to rest.
40
+ - Touch never plays, and `prefers-reduced-motion` keeps icons at rest.
41
+ - Requires React 18+ and `motion` (`npm i motion`), an optional peer dependency.
42
+ - The entry is a client module (`"use client"`); the static entry is not.
43
+
44
+ Available: AlertTriangle, Box, Dashboard, Database, Idea, Menu, Puzzle, Rocket,
45
+ Settings, Ticket, UserShield.
46
+
27
47
  ## Storybook & Chromatic
28
48
 
29
49
  View all icons in Storybook:
@@ -0,0 +1,42 @@
1
+ import { ComponentType, SVGProps } from 'react';
2
+
3
+ declare const animatedIconBrand: unique symbol;
4
+ type AnimatedIconProps = SVGProps<SVGSVGElement> & {
5
+ /**
6
+ * `true` plays the animation once and holds its end state; `false` eases back
7
+ * to rest. Leave it out and the icon animates on its own mouse hover.
8
+ */
9
+ animate?: boolean;
10
+ };
11
+ /**
12
+ * An animated icon. The brand exists only in the type system: it stops a static
13
+ * icon, whose props are a subset of these, from being accepted wherever a
14
+ * consumer means to pass `animate`.
15
+ */
16
+ type AnimatedIcon = ComponentType<AnimatedIconProps> & {
17
+ readonly [animatedIconBrand]: true;
18
+ };
19
+
20
+ declare const _default$a: AnimatedIcon;
21
+
22
+ declare const _default$9: AnimatedIcon;
23
+
24
+ declare const _default$8: AnimatedIcon;
25
+
26
+ declare const _default$7: AnimatedIcon;
27
+
28
+ declare const _default$6: AnimatedIcon;
29
+
30
+ declare const _default$5: AnimatedIcon;
31
+
32
+ declare const _default$4: AnimatedIcon;
33
+
34
+ declare const _default$3: AnimatedIcon;
35
+
36
+ declare const _default$2: AnimatedIcon;
37
+
38
+ declare const _default$1: AnimatedIcon;
39
+
40
+ declare const _default: AnimatedIcon;
41
+
42
+ export { _default$a as AlertTriangle, type AnimatedIcon, type AnimatedIconProps, _default$9 as Box, _default$8 as Dashboard, _default$7 as Database, _default$6 as Idea, _default$5 as Menu, _default$4 as Puzzle, _default$3 as Rocket, _default$2 as Settings, _default$1 as Ticket, _default as UserShield };
@@ -0,0 +1,42 @@
1
+ import { ComponentType, SVGProps } from 'react';
2
+
3
+ declare const animatedIconBrand: unique symbol;
4
+ type AnimatedIconProps = SVGProps<SVGSVGElement> & {
5
+ /**
6
+ * `true` plays the animation once and holds its end state; `false` eases back
7
+ * to rest. Leave it out and the icon animates on its own mouse hover.
8
+ */
9
+ animate?: boolean;
10
+ };
11
+ /**
12
+ * An animated icon. The brand exists only in the type system: it stops a static
13
+ * icon, whose props are a subset of these, from being accepted wherever a
14
+ * consumer means to pass `animate`.
15
+ */
16
+ type AnimatedIcon = ComponentType<AnimatedIconProps> & {
17
+ readonly [animatedIconBrand]: true;
18
+ };
19
+
20
+ declare const _default$a: AnimatedIcon;
21
+
22
+ declare const _default$9: AnimatedIcon;
23
+
24
+ declare const _default$8: AnimatedIcon;
25
+
26
+ declare const _default$7: AnimatedIcon;
27
+
28
+ declare const _default$6: AnimatedIcon;
29
+
30
+ declare const _default$5: AnimatedIcon;
31
+
32
+ declare const _default$4: AnimatedIcon;
33
+
34
+ declare const _default$3: AnimatedIcon;
35
+
36
+ declare const _default$2: AnimatedIcon;
37
+
38
+ declare const _default$1: AnimatedIcon;
39
+
40
+ declare const _default: AnimatedIcon;
41
+
42
+ export { _default$a as AlertTriangle, type AnimatedIcon, type AnimatedIconProps, _default$9 as Box, _default$8 as Dashboard, _default$7 as Database, _default$6 as Idea, _default$5 as Menu, _default$4 as Puzzle, _default$3 as Rocket, _default$2 as Settings, _default$1 as Ticket, _default as UserShield };
@@ -0,0 +1,403 @@
1
+ "use client";
2
+ "use strict";
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+
21
+ // src/animated/index.ts
22
+ var animated_exports = {};
23
+ __export(animated_exports, {
24
+ AlertTriangle: () => AlertTriangle_default,
25
+ Box: () => Box_default,
26
+ Dashboard: () => Dashboard_default,
27
+ Database: () => Database_default,
28
+ Idea: () => Idea_default,
29
+ Menu: () => Menu_default,
30
+ Puzzle: () => Puzzle_default,
31
+ Rocket: () => Rocket_default,
32
+ Settings: () => Settings_default,
33
+ Ticket: () => Ticket_default,
34
+ UserShield: () => UserShield_default
35
+ });
36
+ module.exports = __toCommonJS(animated_exports);
37
+
38
+ // src/animated/AlertTriangle.tsx
39
+ var import_react4 = require("motion/react");
40
+
41
+ // src/animated/AnimatedSvg.tsx
42
+ var import_react3 = require("motion/react");
43
+
44
+ // src/animated/useIconAnimation.ts
45
+ var import_react = require("react");
46
+ var import_react2 = require("motion/react");
47
+ function useIconAnimation(animate, { onPointerEnter, onPointerLeave }) {
48
+ const [hovered, setHovered] = (0, import_react.useState)(false);
49
+ const reducedMotion = (0, import_react2.useReducedMotion)();
50
+ const playing = !reducedMotion && (animate ?? hovered);
51
+ const handlers = {
52
+ onPointerEnter(event) {
53
+ if (event.pointerType === "mouse") setHovered(true);
54
+ onPointerEnter?.(event);
55
+ },
56
+ onPointerLeave(event) {
57
+ setHovered(false);
58
+ onPointerLeave?.(event);
59
+ }
60
+ };
61
+ return { state: playing ? "play" : "rest", handlers };
62
+ }
63
+
64
+ // src/animated/AnimatedSvg.tsx
65
+ var import_jsx_runtime = require("react/jsx-runtime");
66
+ function AnimatedSvg({
67
+ animate,
68
+ children,
69
+ onPointerEnter,
70
+ onPointerLeave,
71
+ ...props
72
+ }) {
73
+ const { state, handlers } = useIconAnimation(animate, {
74
+ onPointerEnter,
75
+ onPointerLeave
76
+ });
77
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
78
+ "svg",
79
+ {
80
+ xmlns: "http://www.w3.org/2000/svg",
81
+ fill: "none",
82
+ viewBox: "0 0 24 24",
83
+ overflow: "visible",
84
+ focusable: "false",
85
+ "aria-hidden": "true",
86
+ "data-animating": state === "play",
87
+ ...props,
88
+ ...handlers,
89
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react3.motion.g, { initial: false, animate: state, children })
90
+ }
91
+ );
92
+ }
93
+
94
+ // src/animated/transition.ts
95
+ var holdSpring = { type: "spring", stiffness: 260, damping: 15 };
96
+ var settleSpring = { type: "spring", stiffness: 320, damping: 26 };
97
+ var settleTween = { duration: 0.2, ease: "easeOut" };
98
+ var gesture = { duration: 0.45, ease: "easeInOut" };
99
+ var stagger = 0.06;
100
+
101
+ // src/animated/AlertTriangle.tsx
102
+ var import_jsx_runtime2 = require("react/jsx-runtime");
103
+ var shake = {
104
+ rest: { rotate: 0, transition: settleSpring },
105
+ play: { rotate: [0, -8, 8, -6, 6, -3, 0], transition: { ...gesture, duration: 0.5 } }
106
+ };
107
+ var AlertTriangle = (props) => /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
108
+ AnimatedSvg,
109
+ {
110
+ stroke: "currentColor",
111
+ strokeLinecap: "round",
112
+ strokeLinejoin: "round",
113
+ strokeWidth: 1.8,
114
+ ...props,
115
+ children: [
116
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
117
+ import_react4.motion.path,
118
+ {
119
+ variants: shake,
120
+ style: { originX: 0.5, originY: 1 },
121
+ d: "M21.73 18l-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3"
122
+ }
123
+ ),
124
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { d: "M12 9v4M12 17h.01" })
125
+ ]
126
+ }
127
+ );
128
+ var AlertTriangle_default = AlertTriangle;
129
+
130
+ // src/animated/Box.tsx
131
+ var import_react5 = require("motion/react");
132
+ var import_jsx_runtime3 = require("react/jsx-runtime");
133
+ var lid = {
134
+ rest: { y: 0, rotate: 0, transition: settleSpring },
135
+ play: { y: -2, rotate: -8, transition: holdSpring }
136
+ };
137
+ var Box = (props) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(AnimatedSvg, { ...props, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("g", { stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 1.8, children: [
138
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M19.364 8v13H4.636V8M10.364 12h3.272" }),
139
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
140
+ import_react5.motion.path,
141
+ {
142
+ variants: lid,
143
+ style: { originX: 0, originY: 1 },
144
+ d: "M3 3h18v5H3z"
145
+ }
146
+ )
147
+ ] }) });
148
+ var Box_default = Box;
149
+
150
+ // src/animated/Dashboard.tsx
151
+ var import_react6 = require("motion/react");
152
+ var import_jsx_runtime4 = require("react/jsx-runtime");
153
+ var TILE = "a1.1 1.1 0 0 0-1.1-1.1h-4a1.1 1.1 0 0 0-1.1 1.1v4a1.1 1.1 0 0 0 1.1 1.1h4a1.1 1.1 0 0 0 1.1-1.1zm1.8 4a2.9 2.9 0 0 1-2.9 2.9h-4a2.9 2.9 0 0 1-2.9-2.9v-4a2.9 2.9 0 0 1 2.9-2.9h4a2.9 2.9 0 0 1 2.9 2.9z";
154
+ var STARTS = ["M9.6 4.5", "M20.6 4.5", "M20.6 15.5", "M9.6 15.5"];
155
+ var pulse = {
156
+ rest: { scale: 1, transition: settleTween },
157
+ play: (i) => ({
158
+ scale: [1, 0.85, 1],
159
+ transition: { ...gesture, duration: 0.35, delay: i * stagger }
160
+ })
161
+ };
162
+ var Dashboard = (props) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(AnimatedSvg, { ...props, children: STARTS.map((start, i) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
163
+ import_react6.motion.path,
164
+ {
165
+ custom: i,
166
+ variants: pulse,
167
+ fill: "currentColor",
168
+ d: `${start}${TILE}`
169
+ },
170
+ start
171
+ )) });
172
+ var Dashboard_default = Dashboard;
173
+
174
+ // src/animated/Database.tsx
175
+ var import_react7 = require("motion/react");
176
+ var import_jsx_runtime5 = require("react/jsx-runtime");
177
+ var topDisc = {
178
+ rest: { y: 0, transition: settleSpring },
179
+ play: { y: [0, -1, 0], transition: gesture }
180
+ };
181
+ var band = {
182
+ rest: { y: 0, transition: settleSpring },
183
+ play: { y: [0, 1.5, 0], transition: { ...gesture, delay: stagger } }
184
+ };
185
+ var Database = (props) => /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
186
+ AnimatedSvg,
187
+ {
188
+ stroke: "currentColor",
189
+ strokeLinecap: "round",
190
+ strokeLinejoin: "round",
191
+ strokeWidth: 1.8,
192
+ ...props,
193
+ children: [
194
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M21 5v14c0 1.66-4 3-9 3s-9-1.34-9-3V5" }),
195
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_react7.motion.path, { variants: band, d: "M21 12c0 1.66-4 3-9 3s-9-1.34-9-3" }),
196
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
197
+ import_react7.motion.path,
198
+ {
199
+ variants: topDisc,
200
+ d: "M21 5c0 1.657-4.03 3-9 3S3 6.657 3 5M21 5c0-1.657-4.03-3-9-3S3 3.343 3 5"
201
+ }
202
+ )
203
+ ]
204
+ }
205
+ );
206
+ var Database_default = Database;
207
+
208
+ // src/animated/Idea.tsx
209
+ var import_react8 = require("motion/react");
210
+ var import_jsx_runtime6 = require("react/jsx-runtime");
211
+ var RAYS = [
212
+ "M3.9 10.889H3",
213
+ "M6.272 5.232l-.636-.628",
214
+ "M12 2.889V2",
215
+ "M17.4 4.667l.45-.445",
216
+ "M20.1 10.889h.9"
217
+ ];
218
+ var ray = {
219
+ rest: { pathLength: 1, opacity: 1, transition: settleTween },
220
+ play: (i) => ({
221
+ pathLength: [0, 1],
222
+ opacity: [0, 1],
223
+ transition: { ...gesture, duration: 0.3, delay: i * stagger }
224
+ })
225
+ };
226
+ var Idea = (props) => /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
227
+ AnimatedSvg,
228
+ {
229
+ stroke: "currentColor",
230
+ strokeLinecap: "round",
231
+ strokeLinejoin: "round",
232
+ strokeWidth: 1.8,
233
+ ...props,
234
+ children: [
235
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M14.25 15.778c.15-.778.525-1.322 1.125-1.945.75-.7 1.125-1.71 1.125-2.722a4.76 4.76 0 0 0-1.318-3.3A4.42 4.42 0 0 0 12 6.444a4.42 4.42 0 0 0-3.182 1.367 4.76 4.76 0 0 0-1.318 3.3c0 .778.15 1.711 1.125 2.722.525.545.975 1.167 1.125 1.945M9.75 18.888h4.5M10.5 22h3" }),
236
+ RAYS.map((d, i) => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_react8.motion.path, { d, custom: i, variants: ray }, d))
237
+ ]
238
+ }
239
+ );
240
+ var Idea_default = Idea;
241
+
242
+ // src/animated/Menu.tsx
243
+ var import_react9 = require("motion/react");
244
+ var import_jsx_runtime7 = require("react/jsx-runtime");
245
+ var LINES = ["M4 6h16", "M4 12h16", "M4 18h16"];
246
+ var shrink = {
247
+ rest: { pathLength: 1, transition: settleTween },
248
+ play: (i) => ({
249
+ pathLength: [1, 0.6, 1],
250
+ transition: { ...gesture, delay: i * stagger }
251
+ })
252
+ };
253
+ var Menu = (props) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
254
+ AnimatedSvg,
255
+ {
256
+ stroke: "currentColor",
257
+ strokeLinecap: "round",
258
+ strokeLinejoin: "round",
259
+ strokeWidth: 1.8,
260
+ ...props,
261
+ children: LINES.map((d, i) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_react9.motion.path, { d, custom: i, variants: shrink }, d))
262
+ }
263
+ );
264
+ var Menu_default = Menu;
265
+
266
+ // src/animated/Puzzle.tsx
267
+ var import_react10 = require("motion/react");
268
+ var import_jsx_runtime8 = require("react/jsx-runtime");
269
+ var snap = {
270
+ rest: { x: 0, y: 0, transition: settleSpring },
271
+ play: { x: [0, 1, 0], y: [0, -1, 0], transition: gesture }
272
+ };
273
+ var Puzzle = (props) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(AnimatedSvg, { ...props, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
274
+ import_react10.motion.path,
275
+ {
276
+ variants: snap,
277
+ stroke: "currentColor",
278
+ strokeWidth: 1.8,
279
+ d: "M10.15 2.25a2.25 2.25 0 0 1 1.717 3.703c-.284.334-.321.925.048 1.16.088.057.19.087.295.087h3.69a.9.9 0 0 1 .9.9v3.69c0 .104.03.207.086.295.236.37.827.332 1.16.048a2.25 2.25 0 1 1 0 3.433c-.333-.283-.924-.32-1.16.049a.55.55 0 0 0-.086.295v4.69a.9.9 0 0 1-.9.9h-3.69a.55.55 0 0 1-.295-.086c-.37-.236-.332-.827-.048-1.16a2.25 2.25 0 1 0-3.433 0c.283.333.32.924-.049 1.16a.55.55 0 0 1-.295.086H3.4a.9.9 0 0 1-.9-.9v-4.69c0-.104.03-.207.086-.295.236-.37.827-.332 1.16-.049a2.25 2.25 0 1 0 0-3.433c-.333.284-.924.321-1.16-.048a.55.55 0 0 1-.086-.295V8.1a.9.9 0 0 1 .9-.9h4.69c.104 0 .207-.03.295-.086.37-.236.332-.827.049-1.16A2.25 2.25 0 0 1 10.15 2.25Z"
280
+ }
281
+ ) });
282
+ var Puzzle_default = Puzzle;
283
+
284
+ // src/animated/Rocket.tsx
285
+ var import_react11 = require("motion/react");
286
+ var import_jsx_runtime9 = require("react/jsx-runtime");
287
+ var liftOff = {
288
+ rest: { x: 0, y: 0, transition: settleSpring },
289
+ play: { x: 2, y: -2, transition: holdSpring }
290
+ };
291
+ var Rocket = (props) => /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
292
+ AnimatedSvg,
293
+ {
294
+ stroke: "currentColor",
295
+ strokeLinecap: "round",
296
+ strokeLinejoin: "round",
297
+ strokeWidth: 1.8,
298
+ ...props,
299
+ children: [
300
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
301
+ import_react11.motion.path,
302
+ {
303
+ variants: liftOff,
304
+ d: "M12 15l-3-3m3 3a22.4 22.4 0 0 0 4-2m-4 2v5s3.03-.55 4-2c1.08-1.62 0-5 0-5m-7-1a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11m-7-1H4s.55-3.03 2-4c1.62-1.08 5 0 5 0"
305
+ }
306
+ ),
307
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("path", { d: "M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09" })
308
+ ]
309
+ }
310
+ );
311
+ var Rocket_default = Rocket;
312
+
313
+ // src/animated/Settings.tsx
314
+ var import_react12 = require("motion/react");
315
+ var import_jsx_runtime10 = require("react/jsx-runtime");
316
+ var gear = {
317
+ rest: { rotate: 0, transition: settleSpring },
318
+ play: { rotate: 90, transition: holdSpring }
319
+ };
320
+ var Settings = (props) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
321
+ AnimatedSvg,
322
+ {
323
+ stroke: "currentColor",
324
+ strokeLinecap: "round",
325
+ strokeLinejoin: "round",
326
+ strokeWidth: 1.8,
327
+ ...props,
328
+ children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(import_react12.motion.g, { variants: gear, children: [
329
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("path", { d: "M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2" }),
330
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("path", { d: "M12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6" })
331
+ ] })
332
+ }
333
+ );
334
+ var Settings_default = Settings;
335
+
336
+ // src/animated/Ticket.tsx
337
+ var import_react13 = require("motion/react");
338
+ var import_jsx_runtime11 = require("react/jsx-runtime");
339
+ var tilt = {
340
+ rest: { rotate: 0, transition: settleSpring },
341
+ play: { rotate: [0, -10, 4, 0], transition: gesture }
342
+ };
343
+ var Ticket = (props) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
344
+ AnimatedSvg,
345
+ {
346
+ stroke: "currentColor",
347
+ strokeLinecap: "round",
348
+ strokeLinejoin: "round",
349
+ strokeWidth: 1.8,
350
+ ...props,
351
+ children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
352
+ import_react13.motion.path,
353
+ {
354
+ variants: tilt,
355
+ d: "M13 5v2m0 10v2m0-8v2M2 9a3 3 0 1 1 0 6v2a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-2a3 3 0 0 1 0-6V7a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2z"
356
+ }
357
+ )
358
+ }
359
+ );
360
+ var Ticket_default = Ticket;
361
+
362
+ // src/animated/UserShield.tsx
363
+ var import_react14 = require("motion/react");
364
+ var import_jsx_runtime12 = require("react/jsx-runtime");
365
+ var bob = {
366
+ rest: { y: 0, transition: settleSpring },
367
+ play: { y: [0, -1.5, 0], transition: gesture }
368
+ };
369
+ var UserShield = (props) => /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(AnimatedSvg, { ...props, children: [
370
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
371
+ "path",
372
+ {
373
+ stroke: "currentColor",
374
+ strokeLinecap: "round",
375
+ strokeLinejoin: "round",
376
+ strokeWidth: 1.8,
377
+ d: "M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10"
378
+ }
379
+ ),
380
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
381
+ import_react14.motion.path,
382
+ {
383
+ variants: bob,
384
+ fill: "currentColor",
385
+ d: "M12 11.85c1.68 0 3.4 1.121 3.4 2.9a.9.9 0 0 1-.9.9h-5a.9.9 0 0 1-.9-.9c0-1.779 1.72-2.9 3.4-2.9m0-5.25a2.4 2.4 0 1 1 0 4.8 2.4 2.4 0 0 1 0-4.8"
386
+ }
387
+ )
388
+ ] });
389
+ var UserShield_default = UserShield;
390
+ // Annotate the CommonJS export names for ESM import in node:
391
+ 0 && (module.exports = {
392
+ AlertTriangle,
393
+ Box,
394
+ Dashboard,
395
+ Database,
396
+ Idea,
397
+ Menu,
398
+ Puzzle,
399
+ Rocket,
400
+ Settings,
401
+ Ticket,
402
+ UserShield
403
+ });