├── site
├── next.config.js
├── public
│ └── respinner.gif
└── app
│ ├── opengraph-image.png
│ ├── icon.svg
│ ├── layout.js
│ ├── page.js
│ └── styles.css
├── .gitignore
├── tsconfig.json
├── src
├── index.ts
└── components
│ ├── rotate.tsx
│ ├── beat.tsx
│ ├── bounce.tsx
│ ├── clock.tsx
│ ├── copper.tsx
│ ├── dash.tsx
│ ├── circular.tsx
│ ├── wave.tsx
│ └── spin.tsx
├── package.json
├── index.d.ts
├── README.md
└── pnpm-lock.yaml
/site/next.config.js:
--------------------------------------------------------------------------------
1 | export default {
2 | cacheComponents: true,
3 | }
4 |
--------------------------------------------------------------------------------
/site/public/respinner.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/huozhi/respinner/HEAD/site/public/respinner.gif
--------------------------------------------------------------------------------
/site/app/opengraph-image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/huozhi/respinner/HEAD/site/app/opengraph-image.png
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | docs/dist
3 | dist/
4 | *.log
5 | package-lock.json
6 | .DS_Store
7 | .next
8 |
9 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ES2022",
4 | "module": "ESNext",
5 | "moduleResolution": "bundler",
6 | "jsx": "react"
7 | },
8 | "include": [
9 | "src"
10 | ]
11 | }
--------------------------------------------------------------------------------
/site/app/icon.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/index.ts:
--------------------------------------------------------------------------------
1 | export { default as BeatLoading } from './components/beat'
2 | export { default as BounceLoading } from './components/bounce'
3 | export { default as CircularLoading } from './components/circular'
4 | export { default as ClockLoading } from './components/clock'
5 | export { default as RotateLoading } from './components/rotate'
6 | export { default as SpinLoading } from './components/spin'
7 | export { default as WaveLoading } from './components/wave'
8 | export { default as DashLoading } from './components/dash'
9 | export { default as CopperLoading } from './components/copper'
10 |
--------------------------------------------------------------------------------
/site/app/layout.js:
--------------------------------------------------------------------------------
1 | import './styles.css'
2 | import { JetBrains_Mono, Space_Mono } from 'next/font/google'
3 |
4 | const jetbrainsMono = JetBrains_Mono({
5 | subsets: ['latin'],
6 | weight: ['400', '500', '600', '700', '800'],
7 | variable: '--font-jetbrains-mono',
8 | display: 'swap',
9 | })
10 |
11 | const spaceMono = Space_Mono({
12 | subsets: ['latin'],
13 | weight: ['400', '700'],
14 | variable: '--font-space-mono',
15 | display: 'swap',
16 | })
17 |
18 | export default function layout({ children }) {
19 | return (
20 |
21 |
22 |
23 |
24 | {children}
25 |
26 |
27 | )
28 | }
29 |
30 | export const metadata = {
31 | title: 'Respinner | SVG react spinners',
32 | description: 'Pretty and customizable SVG spinners for React.js',
33 | }
34 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "respinner",
3 | "version": "5.0.0",
4 | "description": "React SVG spinner components",
5 | "type": "module",
6 | "main": "./dist/index.js",
7 | "types": "./dist/index.d.ts",
8 | "scripts": {
9 | "clean": "rm -rf ./dist",
10 | "prepublishOnly": "npm run clean && npm run build",
11 | "build:docs": "pnpm build && next build ./site",
12 | "build": "bunchee",
13 | "build:watch": "pnpm build --watch",
14 | "dev": "next dev ./site"
15 | },
16 | "sideEffects": false,
17 | "files": [
18 | "*.md",
19 | "dist"
20 | ],
21 | "repository": {
22 | "type": "git",
23 | "url": "git+https://github.com/huozhi/respinner.git"
24 | },
25 | "keywords": [
26 | "react",
27 | "loading"
28 | ],
29 | "author": "huozhi",
30 | "license": "MIT",
31 | "homepage": "https://github.com/huozhi/respinner#readme",
32 | "devDependencies": {
33 | "@types/react": "^19.2.6",
34 | "@types/react-dom": "^19.2.3",
35 | "bunchee": "^6.6.2",
36 | "next": "16.0.7",
37 | "react": "^19.2.1",
38 | "react-dom": "^19.2.1",
39 | "respinner": "link:./",
40 | "typescript": "^5.9.3"
41 | },
42 | "peerDependencies": {
43 | "react": ">= 18"
44 | },
45 | "packageManager": "pnpm@7.33.5"
46 | }
47 |
--------------------------------------------------------------------------------
/src/components/rotate.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 |
3 | const RotateLoading = (
4 | { size = 40, opacity = 0.2, strokeWidth = 4, duration = 1.6, color, stroke, ...rest }: {
5 | size?: number
6 | opacity?: number
7 | strokeWidth?: number
8 | duration?: number
9 | color?: string
10 | stroke?: string
11 | } & React.SVGProps) => {
12 | const radius = size / 2 - strokeWidth
13 | const center = radius + strokeWidth
14 | const strokeColor = color || stroke
15 | const circleProps = {
16 | strokeWidth,
17 | stroke: strokeColor,
18 | r: radius,
19 | cx: radius + strokeWidth,
20 | cy: radius + strokeWidth,
21 | fill: 'none',
22 | }
23 |
24 | return (
25 |
39 | )
40 | }
41 |
42 | export default RotateLoading
43 |
--------------------------------------------------------------------------------
/src/components/beat.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 |
3 | const BeatLoading = (
4 | { duration = 0.8, count = 6, size = 8, gap = 6, color, fill, ...rest }: {
5 | duration?: number
6 | count?: number
7 | size?: number
8 | gap?: number
9 | color?: string
10 | } & React.SVGProps) => {
11 | const viewWidth = (size + gap) * count - gap
12 | const fillColor = color || fill
13 |
14 | return (
15 |
36 | )
37 | }
38 |
39 | export default BeatLoading
40 |
--------------------------------------------------------------------------------
/src/components/bounce.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 |
3 | const BounceLoading = (
4 | { gap = 6, count = 4, barWidth = 4, barHeight = 16, duration = 0.8, color, fill, ...rest }: {
5 | gap?: number
6 | count?: number
7 | barWidth?: number
8 | barHeight?: number
9 | duration?: number
10 | color?: string
11 | } & React.SVGProps) => {
12 | const viewWidth = (barWidth + gap) * count - gap
13 | const fillColor = color || fill
14 |
15 | return (
16 |
40 | )
41 | }
42 |
43 | export default BounceLoading
44 |
--------------------------------------------------------------------------------
/src/components/clock.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 |
3 | const ClockLoading = (
4 | { size = 40, duration = 2, strokeWidth = 2, color, stroke, ...rest }: {
5 | size?: number
6 | duration?: number
7 | strokeWidth?: number
8 | color?: string
9 | stroke?: string
10 | } & React.SVGProps) => {
11 | const center = size / 2
12 | const strokeColor = color || stroke
13 | const needleProps = {
14 | strokeWidth: strokeWidth,
15 | stroke: strokeColor,
16 | strokeLinecap: 'round' as const,
17 | x1: center,
18 | y1: strokeWidth * 2,
19 | x2: center,
20 | y2: size - strokeWidth * 2,
21 | }
22 |
23 | return (
24 |
38 | )
39 | }
40 |
41 | export default ClockLoading
42 |
--------------------------------------------------------------------------------
/src/components/copper.tsx:
--------------------------------------------------------------------------------
1 | import React, { useId } from 'react'
2 |
3 | const createTransRotate = (uniqId: string) => (
4 | `@keyframes TransRotate${uniqId}` +
5 | '{' +
6 | '0% {transform:rotate(45deg) scale(1);}' +
7 | '50% {transform:rotate(405deg) scale(.2);}' +
8 | '100% {transform:rotate(765deg) scale(1);}'
9 | )
10 |
11 | const CopperLoading = (
12 | { size = 40, strokeWidth = 4, duration = 2, color, stroke, fill, ...rest }: {
13 | size?: number
14 | strokeWidth?: number
15 | duration?: number
16 | color?: string
17 | } & React.SVGProps) => {
18 | const uniqId = useId()
19 | const fillColor = color || fill
20 | const strokeColor = color || stroke || fill
21 | const commonStyle = {
22 | transformOrigin: 'center',
23 | animation: `TransRotate${uniqId} ${duration}s infinite`,
24 | }
25 | return (
26 |
42 | )
43 | }
44 |
45 | export default CopperLoading
46 |
--------------------------------------------------------------------------------
/src/components/dash.tsx:
--------------------------------------------------------------------------------
1 | import React, { useId } from 'react'
2 |
3 | const DashedRotateAnimation = (uniqId: string, dash: number) =>
4 | `@keyframes DashedRotate${uniqId}` +
5 | '{' +
6 | `0% {stroke-dasharray:${dash} ${dash} 1 ${dash};transform:rotate(0deg);}` +
7 | `50% {stroke-dasharray:${dash};transform:rotate(360deg);}` +
8 | `100% {stroke-dasharray:${dash} ${dash} 1 ${dash};transform:rotate(720deg);}` +
9 | '}'
10 |
11 | const DashLoading = (
12 | { size = 40, strokeWidth = 4, duration = 1.8, color, stroke, ...rest }: {
13 | size?: number
14 | strokeWidth?: number
15 | duration?: number
16 | color?: string
17 | stroke?: string
18 | } & React.SVGProps) => {
19 | const radius = size / 2 - strokeWidth
20 | const dash = (Math.PI * radius) / 5
21 | const uniqId = useId()
22 | const strokeColor = color || stroke
23 |
24 | return (
25 |
43 | )
44 | }
45 |
46 | export default DashLoading
47 |
--------------------------------------------------------------------------------
/index.d.ts:
--------------------------------------------------------------------------------
1 | import type { FunctionComponent, SVGAttributes } from 'react'
2 |
3 | export const BeatLoading: FunctionComponent<{
4 | duration?: number,
5 | count?: number,
6 | fill?: string,
7 | size?: number,
8 | gap?: number
9 | } & SVGAttributes>;
10 | export const BounceLoading: FunctionComponent<{
11 | duration?: number,
12 | count?: number,
13 | barWidth?: number,
14 | barHeight?: number,
15 | gap?: number
16 | } & SVGAttributes>;
17 | export const CircularLoading: FunctionComponent<{
18 | duration?: number,
19 | size?: number,
20 | } & SVGAttributes>;
21 | export const ClockLoading: FunctionComponent<{
22 | size?: number,
23 | duration?: number,
24 | } & SVGAttributes>;
25 | export const RotateLoading: FunctionComponent<{
26 | size?: number,
27 | duration?: number,
28 | opacity?: number,
29 | } & SVGAttributes>;
30 | export const SpinLoading: FunctionComponent<{
31 | size?: number,
32 | barWidth?: number,
33 | barHeight?: number,
34 | count?: number,
35 | duration?: number, fill, borderRadius
36 | } & SVGAttributes>;
37 | export const WaveLoading: FunctionComponent<{
38 | size?: number,
39 | count?: number,
40 | duration?: number,
41 | } & SVGAttributes>;
42 | export const DashLoading: FunctionComponent<{
43 | size?: number,
44 | duration?: number,
45 | } & SVGAttributes>;
46 | export const CopperLoading: FunctionComponent<{
47 | size?: number,
48 | duration?: number
49 | } & SVGAttributes>;
50 |
--------------------------------------------------------------------------------
/src/components/circular.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 |
3 | // View box is based on 50x50 size
4 | // from: https://codepen.io/jczimm/pen/vEBpoL
5 | const CIRCLE_RADIUS = 50 / 2
6 |
7 | const CircularLoading = (
8 | { size = 40, strokeWidth = 5, linecap = 'round', duration = 1, color, stroke, ...rest }: {
9 | size?: number
10 | strokeWidth?: number
11 | linecap?: React.SVGAttributes['strokeLinecap']
12 | duration?: number
13 | color?: string
14 | stroke?: string
15 | } & React.SVGProps) => {
16 | const center = CIRCLE_RADIUS
17 | const strokeColor = color || stroke
18 | return (
19 |
47 | )
48 | }
49 |
50 | export default CircularLoading
51 |
--------------------------------------------------------------------------------
/src/components/wave.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 |
3 | const WaveLoading = (
4 | { size = 40, count = 3, duration = 1.5, strokeWidth = 2, color, stroke, ...rest }: {
5 | size?: number
6 | count?: number
7 | duration?: number
8 | strokeWidth?: number
9 | color?: string
10 | } & React.SVGProps) => {
11 | const radius = size / 2 - strokeWidth
12 | const strokeColor = color || stroke
13 |
14 | return (
15 |
52 | )
53 | }
54 |
55 | export default WaveLoading
56 |
--------------------------------------------------------------------------------
/src/components/spin.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 |
3 | const SpinLoading = ({
4 | size = 40,
5 | count = 8,
6 | barWidth = 4,
7 | barHeight = 10,
8 | duration = 1,
9 | borderRadius = 1,
10 | color,
11 | fill,
12 | ...rest
13 | }: {
14 | size?: number
15 | count?: number
16 | barWidth?: number
17 | barHeight?: number
18 | duration?: number
19 | borderRadius?: number
20 | color?: string
21 | } & React.SVGProps) => {
22 | const radius = size / 2 - barHeight / 2
23 | const fillColor = color || fill
24 |
25 | return (
26 |
56 | )
57 | }
58 |
59 | export default SpinLoading
60 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Respinner
2 | 
3 |
4 | > react components for spinners or loaders. Each loader was combined css animation and render dom as svg.
5 | easily controlled by react porps.
6 |
7 | You could change the count of spinner's children by props `count`, also the `color` of themselves. All of them built with SVG, so you can easily scale them with `width` and `height`.
8 |
9 | ### Examples
10 |
11 | 
12 |
13 | See more details in `demo` directory or visit [website](https://respinner.vercel.app/)
14 |
15 | ### Usage
16 |
17 | ```sh
18 | npm install --save respinner
19 | ```
20 |
21 | Just import it when use with react. Issues go to [issues](https://github.com/huozhi/respinner/issues).
22 |
23 | #### Basic
24 |
25 | ```tsx
26 | import React from 'react'
27 | import {
28 | BeatLoading, BounceLoading, CircularLoading,
29 | ClockLoading, RotateLoading, SpinLoading,
30 | WaveLoading, DashLoading, CopperLoading
31 | } from 'respinner'
32 |
33 | function LoadingComponents() {
34 |
35 | // use with color prop
36 | // color sets both fill and stroke
37 | // or use fill/stroke directly
38 |
39 | }
40 | ```
41 |
42 | #### Use with SVG `use`
43 |
44 | ```tsx
45 | // pre-define a spinner
46 |
47 |
48 | // reuse them
49 |
50 |
51 | ```
52 |
53 | ### API
54 |
55 | Any SVG props could be used in these components. All components support a `color` prop that sets both `fill` and `stroke` properties. If `color` is specified, it takes precedence over `fill` or `stroke` props.
56 |
57 | The following are the default props for these components:
58 |
59 |
60 | 1. BeatLoading
61 |
62 | - `gap`: `6`
63 | - `size`: `8`
64 | - `count`: `6`
65 | - `duration`: `0.8`
66 | - `color`: Sets `fill` (prefers `color` over `fill`)
67 |
68 |
69 |
70 |
71 | 2. CircularLoading
72 |
73 | - `size`: `40`
74 | - `strokeWidth`: `4`
75 | - `linecap`: `'round'`
76 | - `color`: Sets `stroke` (prefers `color` over `stroke`)
77 |
78 |
79 |
80 |
81 | 3. BounceLoading
82 |
83 | - `gap`: `6`
84 | - `count`: `4`
85 | - `barWidth`: `4`
86 | - `barHeight`: `16`
87 | - `duration`: `0.8`
88 | - `color`: Sets `fill` (prefers `color` over `fill`)
89 |
90 |
91 |
92 |
93 | 4. RotateLoading
94 |
95 | - `size`: `40`
96 | - `opacity`: `0.2`
97 | - `strokeWidth`: `4`
98 | - `color`: Sets `stroke` (prefers `color` over `stroke`)
99 |
100 |
101 |
102 |
103 | 5. SpinLoading
104 |
105 | - `size`: `40`
106 | - `count`: `8`
107 | - `barWidth`: `4`
108 | - `duration`: `1`
109 | - `barHeight`: `10`
110 | - `borderRadius`: `1`
111 | - `color`: Sets `fill` (prefers `color` over `fill`)
112 |
113 |
114 |
115 |
116 | 6. WaveLoading
117 |
118 | - `size`: `40`
119 | - `count`: `3`
120 | - `duration`: `1.5`
121 | - `strokeWidth`: `2`
122 | - `color`: Sets `stroke` (prefers `color` over `stroke`)
123 |
124 |
125 |
126 |
127 | 7. ClockLoading
128 |
129 | - `size`: `40`
130 | - `duration`: `2`
131 | - `strokeWidth`: `2`
132 | - `color`: Sets `stroke` (prefers `color` over `stroke`)
133 |
134 |
135 |
136 |
137 | 8. DashLoading
138 |
139 | - `size`: `40`
140 | - `duration`: `1.8`
141 | - `strokeWidth`: `4`
142 | - `color`: Sets `stroke` (prefers `color` over `stroke`)
143 |
144 |
145 |
146 |
147 | 9. CopperLoading
148 |
149 | - `size`: `40`
150 | - `strokeWidth`: `4`
151 | - `color`: Sets both `fill` and `stroke` (prefers `color` over `fill`/`stroke`)
152 |
153 |
154 |
155 | ### Development
156 |
157 | ```sh
158 | pnpm install
159 | pnpm dev
160 |
161 | # see demo in http://localhost:3000
162 | ```
163 |
164 | ### Build
165 |
166 | ```sh
167 | pnpm run build # build lib
168 | pnpm run build:docs # build docs
169 | ```
170 |
171 | ### License
172 |
173 | MIT
--------------------------------------------------------------------------------
/site/app/page.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import {
3 | BeatLoading,
4 | BounceLoading,
5 | CircularLoading,
6 | ClockLoading,
7 | RotateLoading,
8 | SpinLoading,
9 | WaveLoading,
10 | CopperLoading,
11 | DashLoading,
12 | } from '../../src/index'
13 |
14 | const color = '#111111'
15 |
16 | const spinners = [
17 | {
18 | name: 'Beat',
19 | code: ``,
20 | component: ,
21 | id: 'RSP-01'
22 | },
23 | {
24 | name: 'Circular',
25 | code: ``,
26 | component: ,
27 | id: 'RSP-02'
28 | },
29 | {
30 | name: 'Bounce',
31 | code: ``,
32 | component: ,
33 | id: 'RSP-03'
34 | },
35 | {
36 | name: 'Rotate',
37 | code: ``,
38 | component: ,
39 | id: 'RSP-04'
40 | },
41 | {
42 | name: 'Spin',
43 | code: ``,
44 | component: ,
45 | id: 'RSP-05'
46 | },
47 | {
48 | name: 'Wave',
49 | code: ``,
50 | component: ,
51 | id: 'RSP-06'
52 | },
53 | {
54 | name: 'Clock',
55 | code: ``,
56 | component: ,
57 | id: 'RSP-07'
58 | },
59 | {
60 | name: 'Dash',
61 | code: ``,
62 | component: ,
63 | id: 'RSP-08'
64 | },
65 | {
66 | name: 'Copper',
67 | code: ``,
68 | component: ,
69 | id: 'RSP-09'
70 | },
71 | ]
72 |
73 | export default function App() {
74 | return (
75 |
76 |
114 |
115 |
116 |
117 | {spinners.map(({ code, component, name, id }, idx) => (
118 |
119 |
120 | {id}
121 |
122 |
123 |
124 | {component}
125 |
126 |
{name}
127 |
128 |
129 |
130 | SOURCE
131 | JSX
132 |
133 |
134 | {code}
135 |
136 |
137 |
138 | ))}
139 |
140 |
141 |
142 | )
143 | }
144 |
--------------------------------------------------------------------------------
/site/app/styles.css:
--------------------------------------------------------------------------------
1 | :root {
2 | --bg-color: #e6e6e6;
3 | --ink-color: #111111;
4 | --grid-line: #1111113d;
5 | }
6 |
7 | * {
8 | box-sizing: border-box;
9 | margin: 0;
10 | padding: 0;
11 | }
12 |
13 | html, body {
14 | margin: 0;
15 | padding: 0;
16 | width: 100%;
17 | min-height: 100vh;
18 | overflow-x: hidden;
19 | }
20 |
21 | body {
22 | font-family: var(--font-space-mono), var(--font-jetbrains-mono), monospace;
23 | -webkit-font-smoothing: antialiased;
24 | background-color: var(--bg-color);
25 | color: var(--ink-color);
26 | line-height: 1.4;
27 | font-size: 14px;
28 | /* Noise texture effect */
29 | background-image:
30 | linear-gradient(var(--grid-line) 1px, transparent 1px),
31 | linear-gradient(90deg, var(--grid-line) 1px, transparent 1px);
32 | background-size: 20px 20px;
33 | }
34 |
35 | /* Paper texture overlay */
36 | body::before {
37 | content: "";
38 | position: fixed;
39 | top: 0;
40 | left: 0;
41 | width: 100%;
42 | height: 100%;
43 | /* Updated to match the fine-grain white noise reference */
44 | background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)' opacity='0.15'/%3E%3C/svg%3E");
45 | pointer-events: none;
46 | z-index: 999;
47 | mix-blend-mode: multiply;
48 | }
49 |
50 | .App {
51 | position: relative;
52 | min-height: 100vh;
53 | width: 100%;
54 | padding: 2rem;
55 | display: flex;
56 | flex-direction: column;
57 | align-items: center;
58 | }
59 |
60 | .App-header {
61 | width: 100%;
62 | max-width: 1200px;
63 | border: 2px solid var(--ink-color);
64 | padding: 2rem;
65 | margin-bottom: 3rem;
66 | background: #f0f0f0;
67 | position: relative;
68 | display: grid;
69 | grid-template-columns: 1fr auto;
70 | gap: 2rem;
71 | box-shadow: 4px 4px 0 var(--ink-color);
72 | }
73 |
74 | /* Decorative markings for header */
75 | .App-header::before {
76 | content: "REF: RSP-2025";
77 | position: absolute;
78 | top: 4px;
79 | left: 4px;
80 | font-size: 8px;
81 | opacity: 0.6;
82 | }
83 | .App-header::after {
84 | content: "";
85 | position: absolute;
86 | bottom: 4px;
87 | right: 4px;
88 | width: 20px;
89 | height: 20px;
90 | border-bottom: 2px solid var(--ink-color);
91 | border-right: 2px solid var(--ink-color);
92 | }
93 |
94 | .header-content {
95 | display: flex;
96 | flex-direction: column;
97 | gap: 1rem;
98 | }
99 |
100 | .App-title__main {
101 | font-family: var(--font-jetbrains-mono), monospace;
102 | font-size: clamp(2rem, 6vw, 4rem);
103 | font-weight: 800;
104 | text-transform: uppercase;
105 | letter-spacing: -0.05em;
106 | line-height: 0.9;
107 | border-bottom: 2px solid var(--ink-color);
108 | padding-bottom: 1rem;
109 | margin-bottom: 1rem;
110 | display: inline-block;
111 | }
112 |
113 | .App-title__subtitle {
114 | font-size: 0.9rem;
115 | text-transform: uppercase;
116 | letter-spacing: 0.05em;
117 | opacity: 0.8;
118 | max-width: 600px;
119 | }
120 |
121 | /* Technical side panel in header */
122 | .header-meta {
123 | display: flex;
124 | flex-direction: column;
125 | justify-content: space-between;
126 | border-left: 2px solid var(--ink-color);
127 | padding-left: 2rem;
128 | min-width: 200px;
129 | }
130 |
131 | .meta-barcode {
132 | height: 40px;
133 | width: 100%;
134 | background: repeating-linear-gradient(
135 | 90deg,
136 | var(--ink-color) 0px, var(--ink-color) 2px,
137 | transparent 2px, transparent 4px,
138 | var(--ink-color) 4px, var(--ink-color) 5px,
139 | transparent 5px, transparent 8px,
140 | var(--ink-color) 8px, var(--ink-color) 12px,
141 | transparent 12px, transparent 14px,
142 | var(--ink-color) 14px, var(--ink-color) 15px,
143 | transparent 15px, transparent 18px,
144 | var(--ink-color) 18px, var(--ink-color) 20px,
145 | transparent 20px, transparent 21px,
146 | var(--ink-color) 21px, var(--ink-color) 25px,
147 | transparent 25px, transparent 28px
148 | );
149 | margin-bottom: 10px;
150 | }
151 |
152 | .App-install {
153 | margin-top: auto;
154 | }
155 |
156 | .install-box {
157 | display: flex;
158 | flex-direction: column;
159 | border: 1px solid var(--ink-color);
160 | background: #fff;
161 | }
162 |
163 | .install-label {
164 | font-size: 10px;
165 | padding: 4px 8px;
166 | border-bottom: 1px solid var(--ink-color);
167 | background: #e0e0e0;
168 | font-weight: 700;
169 | }
170 |
171 | .install-content {
172 | display: flex;
173 | align-items: center;
174 | justify-content: space-between;
175 | }
176 |
177 | .install-code {
178 | padding: 8px 12px;
179 | font-size: 12px;
180 | font-weight: 600;
181 | }
182 |
183 | .App-links {
184 | display: flex;
185 | gap: 1rem;
186 | margin-top: 1.5rem;
187 | }
188 |
189 | .link-button {
190 | text-decoration: none;
191 | color: var(--ink-color);
192 | font-weight: 700;
193 | text-transform: uppercase;
194 | font-size: 12px;
195 | border: 1px solid var(--ink-color);
196 | padding: 8px 16px;
197 | display: flex;
198 | align-items: center;
199 | gap: 8px;
200 | background: #fff;
201 | transition: all 0.1s;
202 | }
203 |
204 | .link-button:hover {
205 | background: var(--ink-color);
206 | color: #fff;
207 | }
208 |
209 | .App-container {
210 | width: 100%;
211 | max-width: 1200px;
212 | }
213 |
214 | .spinners-grid {
215 | display: grid;
216 | grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
217 | gap: 2rem;
218 | }
219 |
220 | .spinner-card {
221 | border: 2px solid var(--ink-color);
222 | background: #fff;
223 | position: relative;
224 | transition: transform 0.2s;
225 | }
226 |
227 | .spinner-card:hover {
228 | transform: translate(-4px, -4px);
229 | box-shadow: 6px 6px 0 var(--ink-color);
230 | }
231 |
232 | /* Fix flickering on hover by expanding hit area to cover the void */
233 | .spinner-card::after {
234 | content: "";
235 | position: absolute;
236 | inset: 0;
237 | z-index: -1;
238 | transition: inherit;
239 | }
240 | .spinner-card:hover::after {
241 | transform: translate(4px, 4px);
242 | }
243 |
244 | /* Card decorative header */
245 | .card-header {
246 | display: flex;
247 | justify-content: space-between;
248 | border-bottom: 1px solid var(--ink-color);
249 | padding: 8px 12px;
250 | background: #f0f0f0;
251 | font-size: 10px;
252 | font-weight: 700;
253 | }
254 |
255 | .card-id {
256 | font-family: var(--font-jetbrains-mono), monospace;
257 | }
258 |
259 | .spinner-preview {
260 | height: 180px;
261 | display: flex;
262 | align-items: center;
263 | justify-content: center;
264 | background-image: radial-gradient(var(--grid-line) 1px, transparent 1px);
265 | background-size: 10px 10px;
266 | position: relative;
267 | }
268 |
269 | /* Crosshair decorations */
270 | .spinner-preview::before, .spinner-preview::after {
271 | content: "";
272 | position: absolute;
273 | background: var(--ink-color);
274 | opacity: 0.2;
275 | }
276 | .spinner-preview::before {
277 | width: 100%;
278 | height: 1px;
279 | top: 50%;
280 | }
281 | .spinner-preview::after {
282 | height: 100%;
283 | width: 1px;
284 | left: 50%;
285 | }
286 |
287 | .spinner-name {
288 | position: absolute;
289 | bottom: 8px;
290 | left: 12px;
291 | font-size: 1rem;
292 | font-weight: 800;
293 | text-transform: uppercase;
294 | background: #fff;
295 | padding: 2px 6px;
296 | border: 1px solid var(--ink-color);
297 | }
298 |
299 | .spinner-code {
300 | border-top: 2px solid var(--ink-color);
301 | padding: 0;
302 | }
303 |
304 | .code-top {
305 | display: flex;
306 | justify-content: space-between;
307 | align-items: center;
308 | border-bottom: 1px solid var(--ink-color);
309 | padding: 4px 8px;
310 | font-size: 10px;
311 | background: #e0e0e0;
312 | }
313 |
314 | .code-content {
315 | padding: 12px;
316 | font-size: 11px;
317 | overflow-x: auto;
318 | background: #fff;
319 | }
320 |
321 | /* Responsive */
322 | @media (max-width: 768px) {
323 | .App-header {
324 | grid-template-columns: 1fr;
325 | }
326 | .header-meta {
327 | border-left: none;
328 | border-top: 2px solid var(--ink-color);
329 | padding-left: 0;
330 | padding-top: 1rem;
331 | flex-direction: row;
332 | align-items: center;
333 | }
334 | .meta-barcode {
335 | width: 100px;
336 | margin-bottom: 0;
337 | margin-right: 10px;
338 | }
339 | }
340 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: 5.4
2 |
3 | specifiers:
4 | '@types/react': ^19.2.6
5 | '@types/react-dom': ^19.2.3
6 | bunchee: ^6.6.2
7 | next: 16.0.7
8 | react: ^19.2.1
9 | react-dom: ^19.2.1
10 | respinner: link:./
11 | typescript: ^5.9.3
12 |
13 | devDependencies:
14 | '@types/react': 19.2.6
15 | '@types/react-dom': 19.2.3_@types+react@19.2.6
16 | bunchee: 6.6.2_typescript@5.9.3
17 | next: 16.0.7_bokjwhiew3ov3ffvbmafuwoalq
18 | react: 19.2.1
19 | react-dom: 19.2.1_react@19.2.1
20 | respinner: 'link:'
21 | typescript: 5.9.3
22 |
23 | packages:
24 |
25 | /@babel/code-frame/7.27.1:
26 | resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==}
27 | engines: {node: '>=6.9.0'}
28 | requiresBuild: true
29 | dependencies:
30 | '@babel/helper-validator-identifier': 7.28.5
31 | js-tokens: 4.0.0
32 | picocolors: 1.1.1
33 | dev: true
34 | optional: true
35 |
36 | /@babel/helper-validator-identifier/7.28.5:
37 | resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==}
38 | engines: {node: '>=6.9.0'}
39 | dev: true
40 | optional: true
41 |
42 | /@emnapi/runtime/1.7.1:
43 | resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==}
44 | requiresBuild: true
45 | dependencies:
46 | tslib: 2.8.1
47 | dev: true
48 | optional: true
49 |
50 | /@fastify/deepmerge/1.3.0:
51 | resolution: {integrity: sha512-J8TOSBq3SoZbDhM9+R/u77hP93gz/rajSA+K2kGyijPpORPWUXHUpTaleoj+92As0S9uPRP7Oi8IqMf0u+ro6A==}
52 | dev: true
53 |
54 | /@img/colour/1.0.0:
55 | resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==}
56 | engines: {node: '>=18'}
57 | dev: true
58 | optional: true
59 |
60 | /@img/sharp-darwin-arm64/0.34.5:
61 | resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==}
62 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
63 | cpu: [arm64]
64 | os: [darwin]
65 | requiresBuild: true
66 | optionalDependencies:
67 | '@img/sharp-libvips-darwin-arm64': 1.2.4
68 | dev: true
69 | optional: true
70 |
71 | /@img/sharp-darwin-x64/0.34.5:
72 | resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==}
73 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
74 | cpu: [x64]
75 | os: [darwin]
76 | requiresBuild: true
77 | optionalDependencies:
78 | '@img/sharp-libvips-darwin-x64': 1.2.4
79 | dev: true
80 | optional: true
81 |
82 | /@img/sharp-libvips-darwin-arm64/1.2.4:
83 | resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==}
84 | cpu: [arm64]
85 | os: [darwin]
86 | requiresBuild: true
87 | dev: true
88 | optional: true
89 |
90 | /@img/sharp-libvips-darwin-x64/1.2.4:
91 | resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==}
92 | cpu: [x64]
93 | os: [darwin]
94 | requiresBuild: true
95 | dev: true
96 | optional: true
97 |
98 | /@img/sharp-libvips-linux-arm/1.2.4:
99 | resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==}
100 | cpu: [arm]
101 | os: [linux]
102 | requiresBuild: true
103 | dev: true
104 | optional: true
105 |
106 | /@img/sharp-libvips-linux-arm64/1.2.4:
107 | resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==}
108 | cpu: [arm64]
109 | os: [linux]
110 | requiresBuild: true
111 | dev: true
112 | optional: true
113 |
114 | /@img/sharp-libvips-linux-ppc64/1.2.4:
115 | resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==}
116 | cpu: [ppc64]
117 | os: [linux]
118 | requiresBuild: true
119 | dev: true
120 | optional: true
121 |
122 | /@img/sharp-libvips-linux-riscv64/1.2.4:
123 | resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==}
124 | cpu: [riscv64]
125 | os: [linux]
126 | requiresBuild: true
127 | dev: true
128 | optional: true
129 |
130 | /@img/sharp-libvips-linux-s390x/1.2.4:
131 | resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==}
132 | cpu: [s390x]
133 | os: [linux]
134 | requiresBuild: true
135 | dev: true
136 | optional: true
137 |
138 | /@img/sharp-libvips-linux-x64/1.2.4:
139 | resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==}
140 | cpu: [x64]
141 | os: [linux]
142 | requiresBuild: true
143 | dev: true
144 | optional: true
145 |
146 | /@img/sharp-libvips-linuxmusl-arm64/1.2.4:
147 | resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==}
148 | cpu: [arm64]
149 | os: [linux]
150 | requiresBuild: true
151 | dev: true
152 | optional: true
153 |
154 | /@img/sharp-libvips-linuxmusl-x64/1.2.4:
155 | resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==}
156 | cpu: [x64]
157 | os: [linux]
158 | requiresBuild: true
159 | dev: true
160 | optional: true
161 |
162 | /@img/sharp-linux-arm/0.34.5:
163 | resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==}
164 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
165 | cpu: [arm]
166 | os: [linux]
167 | requiresBuild: true
168 | optionalDependencies:
169 | '@img/sharp-libvips-linux-arm': 1.2.4
170 | dev: true
171 | optional: true
172 |
173 | /@img/sharp-linux-arm64/0.34.5:
174 | resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==}
175 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
176 | cpu: [arm64]
177 | os: [linux]
178 | requiresBuild: true
179 | optionalDependencies:
180 | '@img/sharp-libvips-linux-arm64': 1.2.4
181 | dev: true
182 | optional: true
183 |
184 | /@img/sharp-linux-ppc64/0.34.5:
185 | resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==}
186 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
187 | cpu: [ppc64]
188 | os: [linux]
189 | requiresBuild: true
190 | optionalDependencies:
191 | '@img/sharp-libvips-linux-ppc64': 1.2.4
192 | dev: true
193 | optional: true
194 |
195 | /@img/sharp-linux-riscv64/0.34.5:
196 | resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==}
197 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
198 | cpu: [riscv64]
199 | os: [linux]
200 | requiresBuild: true
201 | optionalDependencies:
202 | '@img/sharp-libvips-linux-riscv64': 1.2.4
203 | dev: true
204 | optional: true
205 |
206 | /@img/sharp-linux-s390x/0.34.5:
207 | resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==}
208 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
209 | cpu: [s390x]
210 | os: [linux]
211 | requiresBuild: true
212 | optionalDependencies:
213 | '@img/sharp-libvips-linux-s390x': 1.2.4
214 | dev: true
215 | optional: true
216 |
217 | /@img/sharp-linux-x64/0.34.5:
218 | resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==}
219 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
220 | cpu: [x64]
221 | os: [linux]
222 | requiresBuild: true
223 | optionalDependencies:
224 | '@img/sharp-libvips-linux-x64': 1.2.4
225 | dev: true
226 | optional: true
227 |
228 | /@img/sharp-linuxmusl-arm64/0.34.5:
229 | resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==}
230 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
231 | cpu: [arm64]
232 | os: [linux]
233 | requiresBuild: true
234 | optionalDependencies:
235 | '@img/sharp-libvips-linuxmusl-arm64': 1.2.4
236 | dev: true
237 | optional: true
238 |
239 | /@img/sharp-linuxmusl-x64/0.34.5:
240 | resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==}
241 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
242 | cpu: [x64]
243 | os: [linux]
244 | requiresBuild: true
245 | optionalDependencies:
246 | '@img/sharp-libvips-linuxmusl-x64': 1.2.4
247 | dev: true
248 | optional: true
249 |
250 | /@img/sharp-wasm32/0.34.5:
251 | resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==}
252 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
253 | cpu: [wasm32]
254 | requiresBuild: true
255 | dependencies:
256 | '@emnapi/runtime': 1.7.1
257 | dev: true
258 | optional: true
259 |
260 | /@img/sharp-win32-arm64/0.34.5:
261 | resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==}
262 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
263 | cpu: [arm64]
264 | os: [win32]
265 | requiresBuild: true
266 | dev: true
267 | optional: true
268 |
269 | /@img/sharp-win32-ia32/0.34.5:
270 | resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==}
271 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
272 | cpu: [ia32]
273 | os: [win32]
274 | requiresBuild: true
275 | dev: true
276 | optional: true
277 |
278 | /@img/sharp-win32-x64/0.34.5:
279 | resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==}
280 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
281 | cpu: [x64]
282 | os: [win32]
283 | requiresBuild: true
284 | dev: true
285 | optional: true
286 |
287 | /@jridgewell/sourcemap-codec/1.5.5:
288 | resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
289 | dev: true
290 |
291 | /@next/env/16.0.7:
292 | resolution: {integrity: sha512-gpaNgUh5nftFKRkRQGnVi5dpcYSKGcZZkQffZ172OrG/XkrnS7UBTQ648YY+8ME92cC4IojpI2LqTC8sTDhAaw==}
293 | dev: true
294 |
295 | /@next/swc-darwin-arm64/16.0.7:
296 | resolution: {integrity: sha512-LlDtCYOEj/rfSnEn/Idi+j1QKHxY9BJFmxx7108A6D8K0SB+bNgfYQATPk/4LqOl4C0Wo3LACg2ie6s7xqMpJg==}
297 | engines: {node: '>= 10'}
298 | cpu: [arm64]
299 | os: [darwin]
300 | requiresBuild: true
301 | dev: true
302 | optional: true
303 |
304 | /@next/swc-darwin-x64/16.0.7:
305 | resolution: {integrity: sha512-rtZ7BhnVvO1ICf3QzfW9H3aPz7GhBrnSIMZyr4Qy6boXF0b5E3QLs+cvJmg3PsTCG2M1PBoC+DANUi4wCOKXpA==}
306 | engines: {node: '>= 10'}
307 | cpu: [x64]
308 | os: [darwin]
309 | requiresBuild: true
310 | dev: true
311 | optional: true
312 |
313 | /@next/swc-linux-arm64-gnu/16.0.7:
314 | resolution: {integrity: sha512-mloD5WcPIeIeeZqAIP5c2kdaTa6StwP4/2EGy1mUw8HiexSHGK/jcM7lFuS3u3i2zn+xH9+wXJs6njO7VrAqww==}
315 | engines: {node: '>= 10'}
316 | cpu: [arm64]
317 | os: [linux]
318 | requiresBuild: true
319 | dev: true
320 | optional: true
321 |
322 | /@next/swc-linux-arm64-musl/16.0.7:
323 | resolution: {integrity: sha512-+ksWNrZrthisXuo9gd1XnjHRowCbMtl/YgMpbRvFeDEqEBd523YHPWpBuDjomod88U8Xliw5DHhekBC3EOOd9g==}
324 | engines: {node: '>= 10'}
325 | cpu: [arm64]
326 | os: [linux]
327 | requiresBuild: true
328 | dev: true
329 | optional: true
330 |
331 | /@next/swc-linux-x64-gnu/16.0.7:
332 | resolution: {integrity: sha512-4WtJU5cRDxpEE44Ana2Xro1284hnyVpBb62lIpU5k85D8xXxatT+rXxBgPkc7C1XwkZMWpK5rXLXTh9PFipWsA==}
333 | engines: {node: '>= 10'}
334 | cpu: [x64]
335 | os: [linux]
336 | requiresBuild: true
337 | dev: true
338 | optional: true
339 |
340 | /@next/swc-linux-x64-musl/16.0.7:
341 | resolution: {integrity: sha512-HYlhqIP6kBPXalW2dbMTSuB4+8fe+j9juyxwfMwCe9kQPPeiyFn7NMjNfoFOfJ2eXkeQsoUGXg+O2SE3m4Qg2w==}
342 | engines: {node: '>= 10'}
343 | cpu: [x64]
344 | os: [linux]
345 | requiresBuild: true
346 | dev: true
347 | optional: true
348 |
349 | /@next/swc-win32-arm64-msvc/16.0.7:
350 | resolution: {integrity: sha512-EviG+43iOoBRZg9deGauXExjRphhuYmIOJ12b9sAPy0eQ6iwcPxfED2asb/s2/yiLYOdm37kPaiZu8uXSYPs0Q==}
351 | engines: {node: '>= 10'}
352 | cpu: [arm64]
353 | os: [win32]
354 | requiresBuild: true
355 | dev: true
356 | optional: true
357 |
358 | /@next/swc-win32-x64-msvc/16.0.7:
359 | resolution: {integrity: sha512-gniPjy55zp5Eg0896qSrf3yB1dw4F/3s8VK1ephdsZZ129j2n6e1WqCbE2YgcKhW9hPB9TVZENugquWJD5x0ug==}
360 | engines: {node: '>= 10'}
361 | cpu: [x64]
362 | os: [win32]
363 | requiresBuild: true
364 | dev: true
365 | optional: true
366 |
367 | /@rollup/plugin-commonjs/28.0.9_rollup@4.53.3:
368 | resolution: {integrity: sha512-PIR4/OHZ79romx0BVVll/PkwWpJ7e5lsqFa3gFfcrFPWwLXLV39JVUzQV9RKjWerE7B845Hqjj9VYlQeieZ2dA==}
369 | engines: {node: '>=16.0.0 || 14 >= 14.17'}
370 | peerDependencies:
371 | rollup: ^2.68.0||^3.0.0||^4.0.0
372 | peerDependenciesMeta:
373 | rollup:
374 | optional: true
375 | dependencies:
376 | '@rollup/pluginutils': 5.3.0_rollup@4.53.3
377 | commondir: 1.0.1
378 | estree-walker: 2.0.2
379 | fdir: 6.5.0_picomatch@4.0.3
380 | is-reference: 1.2.1
381 | magic-string: 0.30.21
382 | picomatch: 4.0.3
383 | rollup: 4.53.3
384 | dev: true
385 |
386 | /@rollup/plugin-json/6.1.0_rollup@4.53.3:
387 | resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==}
388 | engines: {node: '>=14.0.0'}
389 | peerDependencies:
390 | rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
391 | peerDependenciesMeta:
392 | rollup:
393 | optional: true
394 | dependencies:
395 | '@rollup/pluginutils': 5.3.0_rollup@4.53.3
396 | rollup: 4.53.3
397 | dev: true
398 |
399 | /@rollup/plugin-node-resolve/16.0.3_rollup@4.53.3:
400 | resolution: {integrity: sha512-lUYM3UBGuM93CnMPG1YocWu7X802BrNF3jW2zny5gQyLQgRFJhV1Sq0Zi74+dh/6NBx1DxFC4b4GXg9wUCG5Qg==}
401 | engines: {node: '>=14.0.0'}
402 | peerDependencies:
403 | rollup: ^2.78.0||^3.0.0||^4.0.0
404 | peerDependenciesMeta:
405 | rollup:
406 | optional: true
407 | dependencies:
408 | '@rollup/pluginutils': 5.3.0_rollup@4.53.3
409 | '@types/resolve': 1.20.2
410 | deepmerge: 4.3.1
411 | is-module: 1.0.0
412 | resolve: 1.22.8
413 | rollup: 4.53.3
414 | dev: true
415 |
416 | /@rollup/plugin-replace/6.0.3_rollup@4.53.3:
417 | resolution: {integrity: sha512-J4RZarRvQAm5IF0/LwUUg+obsm+xZhYnbMXmXROyoSE1ATJe3oXSb9L5MMppdxP2ylNSjv6zFBwKYjcKMucVfA==}
418 | engines: {node: '>=14.0.0'}
419 | peerDependencies:
420 | rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
421 | peerDependenciesMeta:
422 | rollup:
423 | optional: true
424 | dependencies:
425 | '@rollup/pluginutils': 5.3.0_rollup@4.53.3
426 | magic-string: 0.30.21
427 | rollup: 4.53.3
428 | dev: true
429 |
430 | /@rollup/plugin-wasm/6.2.2_rollup@4.53.3:
431 | resolution: {integrity: sha512-gpC4R1G9Ni92ZIRTexqbhX7U+9estZrbhP+9SRb0DW9xpB9g7j34r+J2hqrcW/lRI7dJaU84MxZM0Rt82tqYPQ==}
432 | engines: {node: '>=14.0.0'}
433 | peerDependencies:
434 | rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
435 | peerDependenciesMeta:
436 | rollup:
437 | optional: true
438 | dependencies:
439 | '@rollup/pluginutils': 5.3.0_rollup@4.53.3
440 | rollup: 4.53.3
441 | dev: true
442 |
443 | /@rollup/pluginutils/5.3.0_rollup@4.53.3:
444 | resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==}
445 | engines: {node: '>=14.0.0'}
446 | peerDependencies:
447 | rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
448 | peerDependenciesMeta:
449 | rollup:
450 | optional: true
451 | dependencies:
452 | '@types/estree': 1.0.5
453 | estree-walker: 2.0.2
454 | picomatch: 4.0.3
455 | rollup: 4.53.3
456 | dev: true
457 |
458 | /@rollup/rollup-android-arm-eabi/4.53.3:
459 | resolution: {integrity: sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==}
460 | cpu: [arm]
461 | os: [android]
462 | requiresBuild: true
463 | dev: true
464 | optional: true
465 |
466 | /@rollup/rollup-android-arm64/4.53.3:
467 | resolution: {integrity: sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==}
468 | cpu: [arm64]
469 | os: [android]
470 | requiresBuild: true
471 | dev: true
472 | optional: true
473 |
474 | /@rollup/rollup-darwin-arm64/4.53.3:
475 | resolution: {integrity: sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==}
476 | cpu: [arm64]
477 | os: [darwin]
478 | requiresBuild: true
479 | dev: true
480 | optional: true
481 |
482 | /@rollup/rollup-darwin-x64/4.53.3:
483 | resolution: {integrity: sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==}
484 | cpu: [x64]
485 | os: [darwin]
486 | requiresBuild: true
487 | dev: true
488 | optional: true
489 |
490 | /@rollup/rollup-freebsd-arm64/4.53.3:
491 | resolution: {integrity: sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==}
492 | cpu: [arm64]
493 | os: [freebsd]
494 | requiresBuild: true
495 | dev: true
496 | optional: true
497 |
498 | /@rollup/rollup-freebsd-x64/4.53.3:
499 | resolution: {integrity: sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==}
500 | cpu: [x64]
501 | os: [freebsd]
502 | requiresBuild: true
503 | dev: true
504 | optional: true
505 |
506 | /@rollup/rollup-linux-arm-gnueabihf/4.53.3:
507 | resolution: {integrity: sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==}
508 | cpu: [arm]
509 | os: [linux]
510 | requiresBuild: true
511 | dev: true
512 | optional: true
513 |
514 | /@rollup/rollup-linux-arm-musleabihf/4.53.3:
515 | resolution: {integrity: sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==}
516 | cpu: [arm]
517 | os: [linux]
518 | requiresBuild: true
519 | dev: true
520 | optional: true
521 |
522 | /@rollup/rollup-linux-arm64-gnu/4.53.3:
523 | resolution: {integrity: sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==}
524 | cpu: [arm64]
525 | os: [linux]
526 | requiresBuild: true
527 | dev: true
528 | optional: true
529 |
530 | /@rollup/rollup-linux-arm64-musl/4.53.3:
531 | resolution: {integrity: sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==}
532 | cpu: [arm64]
533 | os: [linux]
534 | requiresBuild: true
535 | dev: true
536 | optional: true
537 |
538 | /@rollup/rollup-linux-loong64-gnu/4.53.3:
539 | resolution: {integrity: sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==}
540 | cpu: [loong64]
541 | os: [linux]
542 | requiresBuild: true
543 | dev: true
544 | optional: true
545 |
546 | /@rollup/rollup-linux-ppc64-gnu/4.53.3:
547 | resolution: {integrity: sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==}
548 | cpu: [ppc64]
549 | os: [linux]
550 | requiresBuild: true
551 | dev: true
552 | optional: true
553 |
554 | /@rollup/rollup-linux-riscv64-gnu/4.53.3:
555 | resolution: {integrity: sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==}
556 | cpu: [riscv64]
557 | os: [linux]
558 | requiresBuild: true
559 | dev: true
560 | optional: true
561 |
562 | /@rollup/rollup-linux-riscv64-musl/4.53.3:
563 | resolution: {integrity: sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==}
564 | cpu: [riscv64]
565 | os: [linux]
566 | requiresBuild: true
567 | dev: true
568 | optional: true
569 |
570 | /@rollup/rollup-linux-s390x-gnu/4.53.3:
571 | resolution: {integrity: sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==}
572 | cpu: [s390x]
573 | os: [linux]
574 | requiresBuild: true
575 | dev: true
576 | optional: true
577 |
578 | /@rollup/rollup-linux-x64-gnu/4.53.3:
579 | resolution: {integrity: sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==}
580 | cpu: [x64]
581 | os: [linux]
582 | requiresBuild: true
583 | dev: true
584 | optional: true
585 |
586 | /@rollup/rollup-linux-x64-musl/4.53.3:
587 | resolution: {integrity: sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==}
588 | cpu: [x64]
589 | os: [linux]
590 | requiresBuild: true
591 | dev: true
592 | optional: true
593 |
594 | /@rollup/rollup-openharmony-arm64/4.53.3:
595 | resolution: {integrity: sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==}
596 | cpu: [arm64]
597 | os: [openharmony]
598 | requiresBuild: true
599 | dev: true
600 | optional: true
601 |
602 | /@rollup/rollup-win32-arm64-msvc/4.53.3:
603 | resolution: {integrity: sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==}
604 | cpu: [arm64]
605 | os: [win32]
606 | requiresBuild: true
607 | dev: true
608 | optional: true
609 |
610 | /@rollup/rollup-win32-ia32-msvc/4.53.3:
611 | resolution: {integrity: sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==}
612 | cpu: [ia32]
613 | os: [win32]
614 | requiresBuild: true
615 | dev: true
616 | optional: true
617 |
618 | /@rollup/rollup-win32-x64-gnu/4.53.3:
619 | resolution: {integrity: sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==}
620 | cpu: [x64]
621 | os: [win32]
622 | requiresBuild: true
623 | dev: true
624 | optional: true
625 |
626 | /@rollup/rollup-win32-x64-msvc/4.53.3:
627 | resolution: {integrity: sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==}
628 | cpu: [x64]
629 | os: [win32]
630 | requiresBuild: true
631 | dev: true
632 | optional: true
633 |
634 | /@swc/core-darwin-arm64/1.15.3:
635 | resolution: {integrity: sha512-AXfeQn0CvcQ4cndlIshETx6jrAM45oeUrK8YeEY6oUZU/qzz0Id0CyvlEywxkWVC81Ajpd8TQQ1fW5yx6zQWkQ==}
636 | engines: {node: '>=10'}
637 | cpu: [arm64]
638 | os: [darwin]
639 | requiresBuild: true
640 | dev: true
641 | optional: true
642 |
643 | /@swc/core-darwin-x64/1.15.3:
644 | resolution: {integrity: sha512-p68OeCz1ui+MZYG4wmfJGvcsAcFYb6Sl25H9TxWl+GkBgmNimIiRdnypK9nBGlqMZAcxngNPtnG3kEMNnvoJ2A==}
645 | engines: {node: '>=10'}
646 | cpu: [x64]
647 | os: [darwin]
648 | requiresBuild: true
649 | dev: true
650 | optional: true
651 |
652 | /@swc/core-linux-arm-gnueabihf/1.15.3:
653 | resolution: {integrity: sha512-Nuj5iF4JteFgwrai97mUX+xUOl+rQRHqTvnvHMATL/l9xE6/TJfPBpd3hk/PVpClMXG3Uvk1MxUFOEzM1JrMYg==}
654 | engines: {node: '>=10'}
655 | cpu: [arm]
656 | os: [linux]
657 | requiresBuild: true
658 | dev: true
659 | optional: true
660 |
661 | /@swc/core-linux-arm64-gnu/1.15.3:
662 | resolution: {integrity: sha512-2Nc/s8jE6mW2EjXWxO/lyQuLKShcmTrym2LRf5Ayp3ICEMX6HwFqB1EzDhwoMa2DcUgmnZIalesq2lG3krrUNw==}
663 | engines: {node: '>=10'}
664 | cpu: [arm64]
665 | os: [linux]
666 | requiresBuild: true
667 | dev: true
668 | optional: true
669 |
670 | /@swc/core-linux-arm64-musl/1.15.3:
671 | resolution: {integrity: sha512-j4SJniZ/qaZ5g8op+p1G9K1z22s/EYGg1UXIb3+Cg4nsxEpF5uSIGEE4mHUfA70L0BR9wKT2QF/zv3vkhfpX4g==}
672 | engines: {node: '>=10'}
673 | cpu: [arm64]
674 | os: [linux]
675 | requiresBuild: true
676 | dev: true
677 | optional: true
678 |
679 | /@swc/core-linux-x64-gnu/1.15.3:
680 | resolution: {integrity: sha512-aKttAZnz8YB1VJwPQZtyU8Uk0BfMP63iDMkvjhJzRZVgySmqt/apWSdnoIcZlUoGheBrcqbMC17GGUmur7OT5A==}
681 | engines: {node: '>=10'}
682 | cpu: [x64]
683 | os: [linux]
684 | requiresBuild: true
685 | dev: true
686 | optional: true
687 |
688 | /@swc/core-linux-x64-musl/1.15.3:
689 | resolution: {integrity: sha512-oe8FctPu1gnUsdtGJRO2rvOUIkkIIaHqsO9xxN0bTR7dFTlPTGi2Fhk1tnvXeyAvCPxLIcwD8phzKg6wLv9yug==}
690 | engines: {node: '>=10'}
691 | cpu: [x64]
692 | os: [linux]
693 | requiresBuild: true
694 | dev: true
695 | optional: true
696 |
697 | /@swc/core-win32-arm64-msvc/1.15.3:
698 | resolution: {integrity: sha512-L9AjzP2ZQ/Xh58e0lTRMLvEDrcJpR7GwZqAtIeNLcTK7JVE+QineSyHp0kLkO1rttCHyCy0U74kDTj0dRz6raA==}
699 | engines: {node: '>=10'}
700 | cpu: [arm64]
701 | os: [win32]
702 | requiresBuild: true
703 | dev: true
704 | optional: true
705 |
706 | /@swc/core-win32-ia32-msvc/1.15.3:
707 | resolution: {integrity: sha512-B8UtogMzErUPDWUoKONSVBdsgKYd58rRyv2sHJWKOIMCHfZ22FVXICR4O/VwIYtlnZ7ahERcjayBHDlBZpR0aw==}
708 | engines: {node: '>=10'}
709 | cpu: [ia32]
710 | os: [win32]
711 | requiresBuild: true
712 | dev: true
713 | optional: true
714 |
715 | /@swc/core-win32-x64-msvc/1.15.3:
716 | resolution: {integrity: sha512-SpZKMR9QBTecHeqpzJdYEfgw30Oo8b/Xl6rjSzBt1g0ZsXyy60KLXrp6IagQyfTYqNYE/caDvwtF2FPn7pomog==}
717 | engines: {node: '>=10'}
718 | cpu: [x64]
719 | os: [win32]
720 | requiresBuild: true
721 | dev: true
722 | optional: true
723 |
724 | /@swc/core/1.15.3_@swc+helpers@0.5.17:
725 | resolution: {integrity: sha512-Qd8eBPkUFL4eAONgGjycZXj1jFCBW8Fd+xF0PzdTlBCWQIV1xnUT7B93wUANtW3KGjl3TRcOyxwSx/u/jyKw/Q==}
726 | engines: {node: '>=10'}
727 | requiresBuild: true
728 | peerDependencies:
729 | '@swc/helpers': '>=0.5.17'
730 | peerDependenciesMeta:
731 | '@swc/helpers':
732 | optional: true
733 | dependencies:
734 | '@swc/counter': 0.1.3
735 | '@swc/helpers': 0.5.17
736 | '@swc/types': 0.1.25
737 | optionalDependencies:
738 | '@swc/core-darwin-arm64': 1.15.3
739 | '@swc/core-darwin-x64': 1.15.3
740 | '@swc/core-linux-arm-gnueabihf': 1.15.3
741 | '@swc/core-linux-arm64-gnu': 1.15.3
742 | '@swc/core-linux-arm64-musl': 1.15.3
743 | '@swc/core-linux-x64-gnu': 1.15.3
744 | '@swc/core-linux-x64-musl': 1.15.3
745 | '@swc/core-win32-arm64-msvc': 1.15.3
746 | '@swc/core-win32-ia32-msvc': 1.15.3
747 | '@swc/core-win32-x64-msvc': 1.15.3
748 | dev: true
749 |
750 | /@swc/counter/0.1.3:
751 | resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==}
752 | dev: true
753 |
754 | /@swc/helpers/0.5.15:
755 | resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==}
756 | dependencies:
757 | tslib: 2.8.1
758 | dev: true
759 |
760 | /@swc/helpers/0.5.17:
761 | resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==}
762 | dependencies:
763 | tslib: 2.8.1
764 | dev: true
765 |
766 | /@swc/types/0.1.25:
767 | resolution: {integrity: sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g==}
768 | dependencies:
769 | '@swc/counter': 0.1.3
770 | dev: true
771 |
772 | /@types/estree/1.0.5:
773 | resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
774 | dev: true
775 |
776 | /@types/estree/1.0.8:
777 | resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
778 | dev: true
779 |
780 | /@types/react-dom/19.2.3_@types+react@19.2.6:
781 | resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==}
782 | peerDependencies:
783 | '@types/react': ^19.2.0
784 | dependencies:
785 | '@types/react': 19.2.6
786 | dev: true
787 |
788 | /@types/react/19.2.6:
789 | resolution: {integrity: sha512-p/jUvulfgU7oKtj6Xpk8cA2Y1xKTtICGpJYeJXz2YVO2UcvjQgeRMLDGfDeqeRW2Ta+0QNFwcc8X3GH8SxZz6w==}
790 | dependencies:
791 | csstype: 3.2.3
792 | dev: true
793 |
794 | /@types/resolve/1.20.2:
795 | resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==}
796 | dev: true
797 |
798 | /ansi-regex/5.0.1:
799 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
800 | engines: {node: '>=8'}
801 | dev: true
802 |
803 | /ansi-styles/4.3.0:
804 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
805 | engines: {node: '>=8'}
806 | dependencies:
807 | color-convert: 2.0.1
808 | dev: true
809 |
810 | /bunchee/6.6.2_typescript@5.9.3:
811 | resolution: {integrity: sha512-hf9B4X/2jgFl0hYhE1NT/mnhnxEBxDNfiZnhtAVMWSUPIAtPLqcoLXUZYsmRhureNGcsowQI8a22e8kQ9Un/AA==}
812 | engines: {node: '>= 18.0.0'}
813 | hasBin: true
814 | peerDependencies:
815 | typescript: ^4.1 || ^5.0
816 | peerDependenciesMeta:
817 | '@swc/helpers':
818 | optional: true
819 | typescript:
820 | optional: true
821 | dependencies:
822 | '@rollup/plugin-commonjs': 28.0.9_rollup@4.53.3
823 | '@rollup/plugin-json': 6.1.0_rollup@4.53.3
824 | '@rollup/plugin-node-resolve': 16.0.3_rollup@4.53.3
825 | '@rollup/plugin-replace': 6.0.3_rollup@4.53.3
826 | '@rollup/plugin-wasm': 6.2.2_rollup@4.53.3
827 | '@rollup/pluginutils': 5.3.0_rollup@4.53.3
828 | '@swc/core': 1.15.3_@swc+helpers@0.5.17
829 | '@swc/helpers': 0.5.17
830 | clean-css: 5.3.3
831 | magic-string: 0.30.21
832 | nanospinner: 1.2.2
833 | picomatch: 4.0.3
834 | pretty-bytes: 5.6.0
835 | rollup: 4.53.3
836 | rollup-plugin-dts: 6.2.3_3jsbhhsoex72d34xgcre5hhnz4
837 | rollup-plugin-swc3: 0.11.2_hoybrzrbqbushw54gsgu55q7dy
838 | rollup-preserve-directives: 1.1.3_rollup@4.53.3
839 | tinyglobby: 0.2.15
840 | tslib: 2.8.1
841 | typescript: 5.9.3
842 | yargs: 17.7.2
843 | dev: true
844 |
845 | /caniuse-lite/1.0.30001669:
846 | resolution: {integrity: sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w==}
847 | dev: true
848 |
849 | /clean-css/5.3.3:
850 | resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==}
851 | engines: {node: '>= 10.0'}
852 | dependencies:
853 | source-map: 0.6.1
854 | dev: true
855 |
856 | /client-only/0.0.1:
857 | resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==}
858 | dev: true
859 |
860 | /cliui/8.0.1:
861 | resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
862 | engines: {node: '>=12'}
863 | dependencies:
864 | string-width: 4.2.3
865 | strip-ansi: 6.0.1
866 | wrap-ansi: 7.0.0
867 | dev: true
868 |
869 | /color-convert/2.0.1:
870 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
871 | engines: {node: '>=7.0.0'}
872 | dependencies:
873 | color-name: 1.1.4
874 | dev: true
875 |
876 | /color-name/1.1.4:
877 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
878 | dev: true
879 |
880 | /commondir/1.0.1:
881 | resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==}
882 | dev: true
883 |
884 | /csstype/3.2.3:
885 | resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==}
886 | dev: true
887 |
888 | /deepmerge/4.3.1:
889 | resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
890 | engines: {node: '>=0.10.0'}
891 | dev: true
892 |
893 | /detect-libc/2.1.2:
894 | resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
895 | engines: {node: '>=8'}
896 | dev: true
897 | optional: true
898 |
899 | /emoji-regex/8.0.0:
900 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
901 | dev: true
902 |
903 | /escalade/3.2.0:
904 | resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
905 | engines: {node: '>=6'}
906 | dev: true
907 |
908 | /estree-walker/2.0.2:
909 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
910 | dev: true
911 |
912 | /fdir/6.5.0_picomatch@4.0.3:
913 | resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
914 | engines: {node: '>=12.0.0'}
915 | peerDependencies:
916 | picomatch: ^3 || ^4
917 | peerDependenciesMeta:
918 | picomatch:
919 | optional: true
920 | dependencies:
921 | picomatch: 4.0.3
922 | dev: true
923 |
924 | /fsevents/2.3.3:
925 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
926 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
927 | os: [darwin]
928 | requiresBuild: true
929 | dev: true
930 | optional: true
931 |
932 | /function-bind/1.1.2:
933 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
934 | dev: true
935 |
936 | /get-caller-file/2.0.5:
937 | resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
938 | engines: {node: 6.* || 8.* || >= 10.*}
939 | dev: true
940 |
941 | /get-tsconfig/4.8.0:
942 | resolution: {integrity: sha512-Pgba6TExTZ0FJAn1qkJAjIeKoDJ3CsI2ChuLohJnZl/tTU8MVrq3b+2t5UOPfRa4RMsorClBjJALkJUMjG1PAw==}
943 | dependencies:
944 | resolve-pkg-maps: 1.0.0
945 | dev: true
946 |
947 | /hasown/2.0.0:
948 | resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==}
949 | engines: {node: '>= 0.4'}
950 | dependencies:
951 | function-bind: 1.1.2
952 | dev: true
953 |
954 | /is-core-module/2.13.1:
955 | resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==}
956 | dependencies:
957 | hasown: 2.0.0
958 | dev: true
959 |
960 | /is-fullwidth-code-point/3.0.0:
961 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
962 | engines: {node: '>=8'}
963 | dev: true
964 |
965 | /is-module/1.0.0:
966 | resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==}
967 | dev: true
968 |
969 | /is-reference/1.2.1:
970 | resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==}
971 | dependencies:
972 | '@types/estree': 1.0.5
973 | dev: true
974 |
975 | /js-tokens/4.0.0:
976 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
977 | dev: true
978 | optional: true
979 |
980 | /magic-string/0.30.21:
981 | resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
982 | dependencies:
983 | '@jridgewell/sourcemap-codec': 1.5.5
984 | dev: true
985 |
986 | /nanoid/3.3.7:
987 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
988 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
989 | hasBin: true
990 | dev: true
991 |
992 | /nanospinner/1.2.2:
993 | resolution: {integrity: sha512-Zt/AmG6qRU3e+WnzGGLuMCEAO/dAu45stNbHY223tUxldaDAeE+FxSPsd9Q+j+paejmm0ZbrNVs5Sraqy3dRxA==}
994 | dependencies:
995 | picocolors: 1.1.1
996 | dev: true
997 |
998 | /next/16.0.7_bokjwhiew3ov3ffvbmafuwoalq:
999 | resolution: {integrity: sha512-3mBRJyPxT4LOxAJI6IsXeFtKfiJUbjCLgvXO02fV8Wy/lIhPvP94Fe7dGhUgHXcQy4sSuYwQNcOLhIfOm0rL0A==}
1000 | engines: {node: '>=20.9.0'}
1001 | hasBin: true
1002 | peerDependencies:
1003 | '@opentelemetry/api': ^1.1.0
1004 | '@playwright/test': ^1.51.1
1005 | babel-plugin-react-compiler: '*'
1006 | react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
1007 | react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
1008 | sass: ^1.3.0
1009 | peerDependenciesMeta:
1010 | '@opentelemetry/api':
1011 | optional: true
1012 | '@playwright/test':
1013 | optional: true
1014 | babel-plugin-react-compiler:
1015 | optional: true
1016 | sass:
1017 | optional: true
1018 | dependencies:
1019 | '@next/env': 16.0.7
1020 | '@swc/helpers': 0.5.15
1021 | caniuse-lite: 1.0.30001669
1022 | postcss: 8.4.31
1023 | react: 19.2.1
1024 | react-dom: 19.2.1_react@19.2.1
1025 | styled-jsx: 5.1.6_react@19.2.1
1026 | optionalDependencies:
1027 | '@next/swc-darwin-arm64': 16.0.7
1028 | '@next/swc-darwin-x64': 16.0.7
1029 | '@next/swc-linux-arm64-gnu': 16.0.7
1030 | '@next/swc-linux-arm64-musl': 16.0.7
1031 | '@next/swc-linux-x64-gnu': 16.0.7
1032 | '@next/swc-linux-x64-musl': 16.0.7
1033 | '@next/swc-win32-arm64-msvc': 16.0.7
1034 | '@next/swc-win32-x64-msvc': 16.0.7
1035 | sharp: 0.34.5
1036 | transitivePeerDependencies:
1037 | - '@babel/core'
1038 | - babel-plugin-macros
1039 | dev: true
1040 |
1041 | /path-parse/1.0.7:
1042 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
1043 | dev: true
1044 |
1045 | /picocolors/1.1.1:
1046 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
1047 | dev: true
1048 |
1049 | /picomatch/4.0.3:
1050 | resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==}
1051 | engines: {node: '>=12'}
1052 | dev: true
1053 |
1054 | /postcss/8.4.31:
1055 | resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==}
1056 | engines: {node: ^10 || ^12 || >=14}
1057 | dependencies:
1058 | nanoid: 3.3.7
1059 | picocolors: 1.1.1
1060 | source-map-js: 1.0.2
1061 | dev: true
1062 |
1063 | /pretty-bytes/5.6.0:
1064 | resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==}
1065 | engines: {node: '>=6'}
1066 | dev: true
1067 |
1068 | /react-dom/19.2.1_react@19.2.1:
1069 | resolution: {integrity: sha512-ibrK8llX2a4eOskq1mXKu/TGZj9qzomO+sNfO98M6d9zIPOEhlBkMkBUBLd1vgS0gQsLDBzA+8jJBVXDnfHmJg==}
1070 | peerDependencies:
1071 | react: ^19.2.1
1072 | dependencies:
1073 | react: 19.2.1
1074 | scheduler: 0.27.0
1075 | dev: true
1076 |
1077 | /react/19.2.1:
1078 | resolution: {integrity: sha512-DGrYcCWK7tvYMnWh79yrPHt+vdx9tY+1gPZa7nJQtO/p8bLTDaHp4dzwEhQB7pZ4Xe3ok4XKuEPrVuc+wlpkmw==}
1079 | engines: {node: '>=0.10.0'}
1080 | dev: true
1081 |
1082 | /require-directory/2.1.1:
1083 | resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
1084 | engines: {node: '>=0.10.0'}
1085 | dev: true
1086 |
1087 | /resolve-pkg-maps/1.0.0:
1088 | resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
1089 | dev: true
1090 |
1091 | /resolve/1.22.8:
1092 | resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
1093 | hasBin: true
1094 | dependencies:
1095 | is-core-module: 2.13.1
1096 | path-parse: 1.0.7
1097 | supports-preserve-symlinks-flag: 1.0.0
1098 | dev: true
1099 |
1100 | /rollup-plugin-dts/6.2.3_3jsbhhsoex72d34xgcre5hhnz4:
1101 | resolution: {integrity: sha512-UgnEsfciXSPpASuOelix7m4DrmyQgiaWBnvI0TM4GxuDh5FkqW8E5hu57bCxXB90VvR1WNfLV80yEDN18UogSA==}
1102 | engines: {node: '>=16'}
1103 | peerDependencies:
1104 | rollup: ^3.29.4 || ^4
1105 | typescript: ^4.5 || ^5.0
1106 | dependencies:
1107 | magic-string: 0.30.21
1108 | rollup: 4.53.3
1109 | typescript: 5.9.3
1110 | optionalDependencies:
1111 | '@babel/code-frame': 7.27.1
1112 | dev: true
1113 |
1114 | /rollup-plugin-swc3/0.11.2_hoybrzrbqbushw54gsgu55q7dy:
1115 | resolution: {integrity: sha512-o1ih9B806fV2wBSNk46T0cYfTF2eiiKmYXRpWw3K4j/Cp3tCAt10UCVsTqvUhGP58pcB3/GZcAVl5e7TCSKN6Q==}
1116 | engines: {node: '>=12'}
1117 | peerDependencies:
1118 | '@swc/core': '>=1.2.165'
1119 | rollup: ^2.0.0 || ^3.0.0 || ^4.0.0
1120 | dependencies:
1121 | '@fastify/deepmerge': 1.3.0
1122 | '@rollup/pluginutils': 5.3.0_rollup@4.53.3
1123 | '@swc/core': 1.15.3_@swc+helpers@0.5.17
1124 | get-tsconfig: 4.8.0
1125 | rollup: 4.53.3
1126 | rollup-preserve-directives: 1.1.3_rollup@4.53.3
1127 | dev: true
1128 |
1129 | /rollup-preserve-directives/1.1.3_rollup@4.53.3:
1130 | resolution: {integrity: sha512-oXqxd6ZzkoQej8Qt0k+S/yvO2+S4CEVEVv2g85oL15o0cjAKTKEuo2MzyA8FcsBBXbtytBzBMFAbhvQg4YyPUQ==}
1131 | peerDependencies:
1132 | rollup: ^2.0.0 || ^3.0.0 || ^4.0.0
1133 | dependencies:
1134 | magic-string: 0.30.21
1135 | rollup: 4.53.3
1136 | dev: true
1137 |
1138 | /rollup/4.53.3:
1139 | resolution: {integrity: sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==}
1140 | engines: {node: '>=18.0.0', npm: '>=8.0.0'}
1141 | hasBin: true
1142 | dependencies:
1143 | '@types/estree': 1.0.8
1144 | optionalDependencies:
1145 | '@rollup/rollup-android-arm-eabi': 4.53.3
1146 | '@rollup/rollup-android-arm64': 4.53.3
1147 | '@rollup/rollup-darwin-arm64': 4.53.3
1148 | '@rollup/rollup-darwin-x64': 4.53.3
1149 | '@rollup/rollup-freebsd-arm64': 4.53.3
1150 | '@rollup/rollup-freebsd-x64': 4.53.3
1151 | '@rollup/rollup-linux-arm-gnueabihf': 4.53.3
1152 | '@rollup/rollup-linux-arm-musleabihf': 4.53.3
1153 | '@rollup/rollup-linux-arm64-gnu': 4.53.3
1154 | '@rollup/rollup-linux-arm64-musl': 4.53.3
1155 | '@rollup/rollup-linux-loong64-gnu': 4.53.3
1156 | '@rollup/rollup-linux-ppc64-gnu': 4.53.3
1157 | '@rollup/rollup-linux-riscv64-gnu': 4.53.3
1158 | '@rollup/rollup-linux-riscv64-musl': 4.53.3
1159 | '@rollup/rollup-linux-s390x-gnu': 4.53.3
1160 | '@rollup/rollup-linux-x64-gnu': 4.53.3
1161 | '@rollup/rollup-linux-x64-musl': 4.53.3
1162 | '@rollup/rollup-openharmony-arm64': 4.53.3
1163 | '@rollup/rollup-win32-arm64-msvc': 4.53.3
1164 | '@rollup/rollup-win32-ia32-msvc': 4.53.3
1165 | '@rollup/rollup-win32-x64-gnu': 4.53.3
1166 | '@rollup/rollup-win32-x64-msvc': 4.53.3
1167 | fsevents: 2.3.3
1168 | dev: true
1169 |
1170 | /scheduler/0.27.0:
1171 | resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==}
1172 | dev: true
1173 |
1174 | /semver/7.7.3:
1175 | resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==}
1176 | engines: {node: '>=10'}
1177 | hasBin: true
1178 | dev: true
1179 | optional: true
1180 |
1181 | /sharp/0.34.5:
1182 | resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==}
1183 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
1184 | requiresBuild: true
1185 | dependencies:
1186 | '@img/colour': 1.0.0
1187 | detect-libc: 2.1.2
1188 | semver: 7.7.3
1189 | optionalDependencies:
1190 | '@img/sharp-darwin-arm64': 0.34.5
1191 | '@img/sharp-darwin-x64': 0.34.5
1192 | '@img/sharp-libvips-darwin-arm64': 1.2.4
1193 | '@img/sharp-libvips-darwin-x64': 1.2.4
1194 | '@img/sharp-libvips-linux-arm': 1.2.4
1195 | '@img/sharp-libvips-linux-arm64': 1.2.4
1196 | '@img/sharp-libvips-linux-ppc64': 1.2.4
1197 | '@img/sharp-libvips-linux-riscv64': 1.2.4
1198 | '@img/sharp-libvips-linux-s390x': 1.2.4
1199 | '@img/sharp-libvips-linux-x64': 1.2.4
1200 | '@img/sharp-libvips-linuxmusl-arm64': 1.2.4
1201 | '@img/sharp-libvips-linuxmusl-x64': 1.2.4
1202 | '@img/sharp-linux-arm': 0.34.5
1203 | '@img/sharp-linux-arm64': 0.34.5
1204 | '@img/sharp-linux-ppc64': 0.34.5
1205 | '@img/sharp-linux-riscv64': 0.34.5
1206 | '@img/sharp-linux-s390x': 0.34.5
1207 | '@img/sharp-linux-x64': 0.34.5
1208 | '@img/sharp-linuxmusl-arm64': 0.34.5
1209 | '@img/sharp-linuxmusl-x64': 0.34.5
1210 | '@img/sharp-wasm32': 0.34.5
1211 | '@img/sharp-win32-arm64': 0.34.5
1212 | '@img/sharp-win32-ia32': 0.34.5
1213 | '@img/sharp-win32-x64': 0.34.5
1214 | dev: true
1215 | optional: true
1216 |
1217 | /source-map-js/1.0.2:
1218 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
1219 | engines: {node: '>=0.10.0'}
1220 | dev: true
1221 |
1222 | /source-map/0.6.1:
1223 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
1224 | engines: {node: '>=0.10.0'}
1225 | dev: true
1226 |
1227 | /string-width/4.2.3:
1228 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
1229 | engines: {node: '>=8'}
1230 | dependencies:
1231 | emoji-regex: 8.0.0
1232 | is-fullwidth-code-point: 3.0.0
1233 | strip-ansi: 6.0.1
1234 | dev: true
1235 |
1236 | /strip-ansi/6.0.1:
1237 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
1238 | engines: {node: '>=8'}
1239 | dependencies:
1240 | ansi-regex: 5.0.1
1241 | dev: true
1242 |
1243 | /styled-jsx/5.1.6_react@19.2.1:
1244 | resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==}
1245 | engines: {node: '>= 12.0.0'}
1246 | peerDependencies:
1247 | '@babel/core': '*'
1248 | babel-plugin-macros: '*'
1249 | react: '>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0'
1250 | peerDependenciesMeta:
1251 | '@babel/core':
1252 | optional: true
1253 | babel-plugin-macros:
1254 | optional: true
1255 | dependencies:
1256 | client-only: 0.0.1
1257 | react: 19.2.1
1258 | dev: true
1259 |
1260 | /supports-preserve-symlinks-flag/1.0.0:
1261 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
1262 | engines: {node: '>= 0.4'}
1263 | dev: true
1264 |
1265 | /tinyglobby/0.2.15:
1266 | resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==}
1267 | engines: {node: '>=12.0.0'}
1268 | dependencies:
1269 | fdir: 6.5.0_picomatch@4.0.3
1270 | picomatch: 4.0.3
1271 | dev: true
1272 |
1273 | /tslib/2.8.1:
1274 | resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
1275 | dev: true
1276 |
1277 | /typescript/5.9.3:
1278 | resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==}
1279 | engines: {node: '>=14.17'}
1280 | hasBin: true
1281 | dev: true
1282 |
1283 | /wrap-ansi/7.0.0:
1284 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
1285 | engines: {node: '>=10'}
1286 | dependencies:
1287 | ansi-styles: 4.3.0
1288 | string-width: 4.2.3
1289 | strip-ansi: 6.0.1
1290 | dev: true
1291 |
1292 | /y18n/5.0.8:
1293 | resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
1294 | engines: {node: '>=10'}
1295 | dev: true
1296 |
1297 | /yargs-parser/21.1.1:
1298 | resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
1299 | engines: {node: '>=12'}
1300 | dev: true
1301 |
1302 | /yargs/17.7.2:
1303 | resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
1304 | engines: {node: '>=12'}
1305 | dependencies:
1306 | cliui: 8.0.1
1307 | escalade: 3.2.0
1308 | get-caller-file: 2.0.5
1309 | require-directory: 2.1.1
1310 | string-width: 4.2.3
1311 | y18n: 5.0.8
1312 | yargs-parser: 21.1.1
1313 | dev: true
1314 |
--------------------------------------------------------------------------------