@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.
@@ -0,0 +1,367 @@
1
+ "use client";
2
+
3
+ // src/animated/AlertTriangle.tsx
4
+ import { motion as motion2 } from "motion/react";
5
+
6
+ // src/animated/AnimatedSvg.tsx
7
+ import { motion } from "motion/react";
8
+
9
+ // src/animated/useIconAnimation.ts
10
+ import { useState } from "react";
11
+ import { useReducedMotion } from "motion/react";
12
+ function useIconAnimation(animate, { onPointerEnter, onPointerLeave }) {
13
+ const [hovered, setHovered] = useState(false);
14
+ const reducedMotion = useReducedMotion();
15
+ const playing = !reducedMotion && (animate ?? hovered);
16
+ const handlers = {
17
+ onPointerEnter(event) {
18
+ if (event.pointerType === "mouse") setHovered(true);
19
+ onPointerEnter?.(event);
20
+ },
21
+ onPointerLeave(event) {
22
+ setHovered(false);
23
+ onPointerLeave?.(event);
24
+ }
25
+ };
26
+ return { state: playing ? "play" : "rest", handlers };
27
+ }
28
+
29
+ // src/animated/AnimatedSvg.tsx
30
+ import { jsx } from "react/jsx-runtime";
31
+ function AnimatedSvg({
32
+ animate,
33
+ children,
34
+ onPointerEnter,
35
+ onPointerLeave,
36
+ ...props
37
+ }) {
38
+ const { state, handlers } = useIconAnimation(animate, {
39
+ onPointerEnter,
40
+ onPointerLeave
41
+ });
42
+ return /* @__PURE__ */ jsx(
43
+ "svg",
44
+ {
45
+ xmlns: "http://www.w3.org/2000/svg",
46
+ fill: "none",
47
+ viewBox: "0 0 24 24",
48
+ overflow: "visible",
49
+ focusable: "false",
50
+ "aria-hidden": "true",
51
+ "data-animating": state === "play",
52
+ ...props,
53
+ ...handlers,
54
+ children: /* @__PURE__ */ jsx(motion.g, { initial: false, animate: state, children })
55
+ }
56
+ );
57
+ }
58
+
59
+ // src/animated/transition.ts
60
+ var holdSpring = { type: "spring", stiffness: 260, damping: 15 };
61
+ var settleSpring = { type: "spring", stiffness: 320, damping: 26 };
62
+ var settleTween = { duration: 0.2, ease: "easeOut" };
63
+ var gesture = { duration: 0.45, ease: "easeInOut" };
64
+ var stagger = 0.06;
65
+
66
+ // src/animated/AlertTriangle.tsx
67
+ import { jsx as jsx2, jsxs } from "react/jsx-runtime";
68
+ var shake = {
69
+ rest: { rotate: 0, transition: settleSpring },
70
+ play: { rotate: [0, -8, 8, -6, 6, -3, 0], transition: { ...gesture, duration: 0.5 } }
71
+ };
72
+ var AlertTriangle = (props) => /* @__PURE__ */ jsxs(
73
+ AnimatedSvg,
74
+ {
75
+ stroke: "currentColor",
76
+ strokeLinecap: "round",
77
+ strokeLinejoin: "round",
78
+ strokeWidth: 1.8,
79
+ ...props,
80
+ children: [
81
+ /* @__PURE__ */ jsx2(
82
+ motion2.path,
83
+ {
84
+ variants: shake,
85
+ style: { originX: 0.5, originY: 1 },
86
+ 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"
87
+ }
88
+ ),
89
+ /* @__PURE__ */ jsx2("path", { d: "M12 9v4M12 17h.01" })
90
+ ]
91
+ }
92
+ );
93
+ var AlertTriangle_default = AlertTriangle;
94
+
95
+ // src/animated/Box.tsx
96
+ import { motion as motion3 } from "motion/react";
97
+ import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
98
+ var lid = {
99
+ rest: { y: 0, rotate: 0, transition: settleSpring },
100
+ play: { y: -2, rotate: -8, transition: holdSpring }
101
+ };
102
+ var Box = (props) => /* @__PURE__ */ jsx3(AnimatedSvg, { ...props, children: /* @__PURE__ */ jsxs2("g", { stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 1.8, children: [
103
+ /* @__PURE__ */ jsx3("path", { d: "M19.364 8v13H4.636V8M10.364 12h3.272" }),
104
+ /* @__PURE__ */ jsx3(
105
+ motion3.path,
106
+ {
107
+ variants: lid,
108
+ style: { originX: 0, originY: 1 },
109
+ d: "M3 3h18v5H3z"
110
+ }
111
+ )
112
+ ] }) });
113
+ var Box_default = Box;
114
+
115
+ // src/animated/Dashboard.tsx
116
+ import { motion as motion4 } from "motion/react";
117
+ import { jsx as jsx4 } from "react/jsx-runtime";
118
+ 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";
119
+ var STARTS = ["M9.6 4.5", "M20.6 4.5", "M20.6 15.5", "M9.6 15.5"];
120
+ var pulse = {
121
+ rest: { scale: 1, transition: settleTween },
122
+ play: (i) => ({
123
+ scale: [1, 0.85, 1],
124
+ transition: { ...gesture, duration: 0.35, delay: i * stagger }
125
+ })
126
+ };
127
+ var Dashboard = (props) => /* @__PURE__ */ jsx4(AnimatedSvg, { ...props, children: STARTS.map((start, i) => /* @__PURE__ */ jsx4(
128
+ motion4.path,
129
+ {
130
+ custom: i,
131
+ variants: pulse,
132
+ fill: "currentColor",
133
+ d: `${start}${TILE}`
134
+ },
135
+ start
136
+ )) });
137
+ var Dashboard_default = Dashboard;
138
+
139
+ // src/animated/Database.tsx
140
+ import { motion as motion5 } from "motion/react";
141
+ import { jsx as jsx5, jsxs as jsxs3 } from "react/jsx-runtime";
142
+ var topDisc = {
143
+ rest: { y: 0, transition: settleSpring },
144
+ play: { y: [0, -1, 0], transition: gesture }
145
+ };
146
+ var band = {
147
+ rest: { y: 0, transition: settleSpring },
148
+ play: { y: [0, 1.5, 0], transition: { ...gesture, delay: stagger } }
149
+ };
150
+ var Database = (props) => /* @__PURE__ */ jsxs3(
151
+ AnimatedSvg,
152
+ {
153
+ stroke: "currentColor",
154
+ strokeLinecap: "round",
155
+ strokeLinejoin: "round",
156
+ strokeWidth: 1.8,
157
+ ...props,
158
+ children: [
159
+ /* @__PURE__ */ jsx5("path", { d: "M21 5v14c0 1.66-4 3-9 3s-9-1.34-9-3V5" }),
160
+ /* @__PURE__ */ jsx5(motion5.path, { variants: band, d: "M21 12c0 1.66-4 3-9 3s-9-1.34-9-3" }),
161
+ /* @__PURE__ */ jsx5(
162
+ motion5.path,
163
+ {
164
+ variants: topDisc,
165
+ 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"
166
+ }
167
+ )
168
+ ]
169
+ }
170
+ );
171
+ var Database_default = Database;
172
+
173
+ // src/animated/Idea.tsx
174
+ import { motion as motion6 } from "motion/react";
175
+ import { jsx as jsx6, jsxs as jsxs4 } from "react/jsx-runtime";
176
+ var RAYS = [
177
+ "M3.9 10.889H3",
178
+ "M6.272 5.232l-.636-.628",
179
+ "M12 2.889V2",
180
+ "M17.4 4.667l.45-.445",
181
+ "M20.1 10.889h.9"
182
+ ];
183
+ var ray = {
184
+ rest: { pathLength: 1, opacity: 1, transition: settleTween },
185
+ play: (i) => ({
186
+ pathLength: [0, 1],
187
+ opacity: [0, 1],
188
+ transition: { ...gesture, duration: 0.3, delay: i * stagger }
189
+ })
190
+ };
191
+ var Idea = (props) => /* @__PURE__ */ jsxs4(
192
+ AnimatedSvg,
193
+ {
194
+ stroke: "currentColor",
195
+ strokeLinecap: "round",
196
+ strokeLinejoin: "round",
197
+ strokeWidth: 1.8,
198
+ ...props,
199
+ children: [
200
+ /* @__PURE__ */ jsx6("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" }),
201
+ RAYS.map((d, i) => /* @__PURE__ */ jsx6(motion6.path, { d, custom: i, variants: ray }, d))
202
+ ]
203
+ }
204
+ );
205
+ var Idea_default = Idea;
206
+
207
+ // src/animated/Menu.tsx
208
+ import { motion as motion7 } from "motion/react";
209
+ import { jsx as jsx7 } from "react/jsx-runtime";
210
+ var LINES = ["M4 6h16", "M4 12h16", "M4 18h16"];
211
+ var shrink = {
212
+ rest: { pathLength: 1, transition: settleTween },
213
+ play: (i) => ({
214
+ pathLength: [1, 0.6, 1],
215
+ transition: { ...gesture, delay: i * stagger }
216
+ })
217
+ };
218
+ var Menu = (props) => /* @__PURE__ */ jsx7(
219
+ AnimatedSvg,
220
+ {
221
+ stroke: "currentColor",
222
+ strokeLinecap: "round",
223
+ strokeLinejoin: "round",
224
+ strokeWidth: 1.8,
225
+ ...props,
226
+ children: LINES.map((d, i) => /* @__PURE__ */ jsx7(motion7.path, { d, custom: i, variants: shrink }, d))
227
+ }
228
+ );
229
+ var Menu_default = Menu;
230
+
231
+ // src/animated/Puzzle.tsx
232
+ import { motion as motion8 } from "motion/react";
233
+ import { jsx as jsx8 } from "react/jsx-runtime";
234
+ var snap = {
235
+ rest: { x: 0, y: 0, transition: settleSpring },
236
+ play: { x: [0, 1, 0], y: [0, -1, 0], transition: gesture }
237
+ };
238
+ var Puzzle = (props) => /* @__PURE__ */ jsx8(AnimatedSvg, { ...props, children: /* @__PURE__ */ jsx8(
239
+ motion8.path,
240
+ {
241
+ variants: snap,
242
+ stroke: "currentColor",
243
+ strokeWidth: 1.8,
244
+ 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"
245
+ }
246
+ ) });
247
+ var Puzzle_default = Puzzle;
248
+
249
+ // src/animated/Rocket.tsx
250
+ import { motion as motion9 } from "motion/react";
251
+ import { jsx as jsx9, jsxs as jsxs5 } from "react/jsx-runtime";
252
+ var liftOff = {
253
+ rest: { x: 0, y: 0, transition: settleSpring },
254
+ play: { x: 2, y: -2, transition: holdSpring }
255
+ };
256
+ var Rocket = (props) => /* @__PURE__ */ jsxs5(
257
+ AnimatedSvg,
258
+ {
259
+ stroke: "currentColor",
260
+ strokeLinecap: "round",
261
+ strokeLinejoin: "round",
262
+ strokeWidth: 1.8,
263
+ ...props,
264
+ children: [
265
+ /* @__PURE__ */ jsx9(
266
+ motion9.path,
267
+ {
268
+ variants: liftOff,
269
+ 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"
270
+ }
271
+ ),
272
+ /* @__PURE__ */ jsx9("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" })
273
+ ]
274
+ }
275
+ );
276
+ var Rocket_default = Rocket;
277
+
278
+ // src/animated/Settings.tsx
279
+ import { motion as motion10 } from "motion/react";
280
+ import { jsx as jsx10, jsxs as jsxs6 } from "react/jsx-runtime";
281
+ var gear = {
282
+ rest: { rotate: 0, transition: settleSpring },
283
+ play: { rotate: 90, transition: holdSpring }
284
+ };
285
+ var Settings = (props) => /* @__PURE__ */ jsx10(
286
+ AnimatedSvg,
287
+ {
288
+ stroke: "currentColor",
289
+ strokeLinecap: "round",
290
+ strokeLinejoin: "round",
291
+ strokeWidth: 1.8,
292
+ ...props,
293
+ children: /* @__PURE__ */ jsxs6(motion10.g, { variants: gear, children: [
294
+ /* @__PURE__ */ jsx10("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" }),
295
+ /* @__PURE__ */ jsx10("path", { d: "M12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6" })
296
+ ] })
297
+ }
298
+ );
299
+ var Settings_default = Settings;
300
+
301
+ // src/animated/Ticket.tsx
302
+ import { motion as motion11 } from "motion/react";
303
+ import { jsx as jsx11 } from "react/jsx-runtime";
304
+ var tilt = {
305
+ rest: { rotate: 0, transition: settleSpring },
306
+ play: { rotate: [0, -10, 4, 0], transition: gesture }
307
+ };
308
+ var Ticket = (props) => /* @__PURE__ */ jsx11(
309
+ AnimatedSvg,
310
+ {
311
+ stroke: "currentColor",
312
+ strokeLinecap: "round",
313
+ strokeLinejoin: "round",
314
+ strokeWidth: 1.8,
315
+ ...props,
316
+ children: /* @__PURE__ */ jsx11(
317
+ motion11.path,
318
+ {
319
+ variants: tilt,
320
+ 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"
321
+ }
322
+ )
323
+ }
324
+ );
325
+ var Ticket_default = Ticket;
326
+
327
+ // src/animated/UserShield.tsx
328
+ import { motion as motion12 } from "motion/react";
329
+ import { jsx as jsx12, jsxs as jsxs7 } from "react/jsx-runtime";
330
+ var bob = {
331
+ rest: { y: 0, transition: settleSpring },
332
+ play: { y: [0, -1.5, 0], transition: gesture }
333
+ };
334
+ var UserShield = (props) => /* @__PURE__ */ jsxs7(AnimatedSvg, { ...props, children: [
335
+ /* @__PURE__ */ jsx12(
336
+ "path",
337
+ {
338
+ stroke: "currentColor",
339
+ strokeLinecap: "round",
340
+ strokeLinejoin: "round",
341
+ strokeWidth: 1.8,
342
+ d: "M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10"
343
+ }
344
+ ),
345
+ /* @__PURE__ */ jsx12(
346
+ motion12.path,
347
+ {
348
+ variants: bob,
349
+ fill: "currentColor",
350
+ 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"
351
+ }
352
+ )
353
+ ] });
354
+ var UserShield_default = UserShield;
355
+ export {
356
+ AlertTriangle_default as AlertTriangle,
357
+ Box_default as Box,
358
+ Dashboard_default as Dashboard,
359
+ Database_default as Database,
360
+ Idea_default as Idea,
361
+ Menu_default as Menu,
362
+ Puzzle_default as Puzzle,
363
+ Rocket_default as Rocket,
364
+ Settings_default as Settings,
365
+ Ticket_default as Ticket,
366
+ UserShield_default as UserShield
367
+ };