├── .gitignore
├── .npmignore
├── .npmrc
├── .prettierignore
├── .prettierrc
├── README.md
├── images
└── svelte-textcircle.jpg
├── package.json
├── pnpm-lock.yaml
├── src
├── app.d.ts
├── app.html
├── lib
│ └── svelte-textcircle
│ │ ├── index.ts
│ │ └── textcircle.svelte
└── routes
│ └── +page.svelte
├── static
└── favicon.png
├── svelte.config.js
├── tsconfig.json
└── vite.config.ts
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 |
3 | # Output
4 | .output
5 | .vercel
6 | .netlify
7 | .wrangler
8 | /.svelte-kit
9 | /build
10 | /dist
11 |
12 | # OS
13 | .DS_Store
14 | Thumbs.db
15 |
16 | # Env
17 | .env
18 | .env.*
19 | !.env.example
20 | !.env.test
21 |
22 | # Vite
23 | vite.config.js.timestamp-*
24 | vite.config.ts.timestamp-*
25 |
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | images
2 | node_modules
--------------------------------------------------------------------------------
/.npmrc:
--------------------------------------------------------------------------------
1 | engine-strict=true
2 |
--------------------------------------------------------------------------------
/.prettierignore:
--------------------------------------------------------------------------------
1 | # Package Managers
2 | package-lock.json
3 | pnpm-lock.yaml
4 | yarn.lock
5 | bun.lock
6 | bun.lockb
7 |
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "useTabs": true,
3 | "singleQuote": true,
4 | "trailingComma": "none",
5 | "printWidth": 100,
6 | "plugins": ["prettier-plugin-svelte"],
7 | "overrides": [
8 | {
9 | "files": "*.svelte",
10 | "options": {
11 | "parser": "svelte"
12 | }
13 | },
14 | {
15 | "files": "README.md",
16 | "options": {
17 | "proseWrap": "never"
18 | }
19 | }
20 | ]
21 | }
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # svelte-textcircle
2 |
3 | A Svelte component that displays text in a circular layout with customizable animations and styling.
4 |
5 | 
6 |
7 | ### You can check out the [Demo](https://svelte.dev/playground/a0daad6ee5204737aae3511184c9e335?version=5.28.2) in a Svelte Playground!
8 |
9 | ## Features
10 |
11 | - Display text strings in a circular arrangement.
12 | - Customize circle size, typography (font size, weight, transform), and appearance.
13 | - Add a custom divider character between words.
14 | - Set initial rotation.
15 | - Control animation: duration, easing, delay, direction, iteration count.
16 | - Trigger animation on component hover or when it enters the viewport.
17 | - Option to stop animation on hover.
18 | - Place custom content (like images, icons, or other components) in the center.
19 | - Highly customizable via props.
20 | - Automatically pauses animation when the component scrolls out of view and resumes it upon re-entry, leveraging `IntersectionObserver` for improved performance.
21 | - Built for Svelte 5 using runes.
22 | - Respects `prefers-reduced-motion`.
23 |
24 | ## Installation
25 |
26 | ```bash
27 | # npm
28 | npm install @lostisworld/svelte-textcircle
29 |
30 | # pnpm
31 | pnpm add @lostisworld/svelte-textcircle
32 | ```
33 |
34 | ## Basic Usage
35 |
36 | ```svelte
37 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 | ```
49 |
50 | ## Props
51 |
52 | ### Main Props
53 |
54 | | Property | Type | Default | Description |
55 | | --------- | -------- | -------- | -------------------------------------------------- |
56 | | text | string[] | Required | An array of text strings to display in the circle. |
57 | | class | string | '' | Additional CSS class(es) for the main container. |
58 | | options | object | {} | Object for visual customization options. |
59 | | animation | object | {} | Object for animation settings. |
60 | | children | Snippet | null | Svelte Snippet for content in the center. |
61 |
62 | ### Options Props (`options={{...}}`)
63 |
64 | | Property | Type | Default | Description |
65 | | --- | --- | --- | --- |
66 | | circlesize | string | '250px' | Size (width & height) of the circle. |
67 | | textTransform | 'uppercase' \| 'lowercase' \| 'none' | 'uppercase' | CSS `text-transform` for the text. |
68 | | fontSize | string | '1em' | CSS `font-size` for the text. |
69 | | fontWeight | 'lighter' \| 'normal' \| 'bold' \| 'bolder' \| string | 'normal' | CSS `font-weight` for the text. |
70 | | divider | string | '♦' | HTML entity or character to place between words. Set to `''` or `undefined` to disable. |
71 | | dividerColor | string | currentColor | CSS color for the divider character. Defaults to text color. |
72 | | rotate | number | undefined | Initial rotation offset in degrees. |
73 |
74 | ### Animation Props (`animation={{...}}`)
75 |
76 | | Property | Type | Default | Description |
77 | | --- | --- | --- | --- |
78 | | duration | string | '30s' | CSS `animation-duration`. |
79 | | easing | 'ease' \| 'ease-in' \| 'ease-out' \| 'ease-in-out' \| 'linear' \| string | 'linear' | CSS `animation-timing-function`. |
80 | | delay | string | '0s' | CSS `animation-delay`. |
81 | | direction | 'normal' \| 'reverse' | 'normal' | CSS `animation-direction`. |
82 | | count | 'infinite' \| number | 'infinite' | CSS `animation-iteration-count`. |
83 | | animateInView | boolean | true | Start animation only when component is in viewport. Overridden by `animateOnHover`. |
84 | | animateOnHover | boolean | false | Pause animation initially, play only on hover. |
85 | | stopAnimateOnHover | boolean | false | If animating by default (`animateInView` is true and `animateOnHover` is false), pause animation on hover. |
86 |
87 | ## Examples
88 |
89 | ### Custom Options
90 |
91 | ```svelte
92 |
103 | ```
104 |
105 | ### Custom Animation
106 |
107 | ```svelte
108 |
118 | ```
119 |
120 | ### Stop Animation on Hover
121 |
122 | ```svelte
123 |
130 | ```
131 |
132 | ### Central Content
133 |
134 | ```svelte
135 |
136 |
139 |

140 |
141 |
142 | ```
143 |
144 | ## CSS Customization
145 |
146 | You can target the component's elements using these CSS classes for further styling:
147 |
148 | - `.textcircle`: The main container `div`.
149 | - `.textcircle-container`: The `p` element holding the rotating text.
150 | - `.textcircle-char`: Individual `span` elements for each character.
151 | - `.textcircle-char-divider`: The `span` element for the divider character.
152 | - `.textcircle-children`: The `div` containing the slotted central content.
153 |
154 | You can also override the CSS variables used internally, although using the props is recommended:
155 |
156 | - `--s`: Circle size
157 | - `--fs`: Font size
158 | - `--fw`: Font weight
159 | - `--tt`: Text transform
160 | - `--ro`: Initial rotation (in degrees, applied via style)
161 | - `--du`: Animation duration
162 | - `--ti`: Animation timing function (easing)
163 | - `--de`: Animation delay
164 | - `--di`: Animation direction
165 | - `--c`: Animation iteration count
166 | - `--dc`: Divider color
167 | - `--aoh`: Animation play state (controlled internally)
168 |
169 | ## Notes
170 |
171 | - For optimal appearance with longer text, you might need to decrease `fontSize` or increase `circlesize`.
172 | - The component maintains its aspect ratio, but ensure the `circlesize` is appropriate for different screen sizes.
173 |
174 | ## Contributing
175 |
176 | Contributions are welcome! Please ensure all changes are well-documented and tested.
177 |
178 | 1. Fork the repository.
179 | 2. Create a new branch for your feature or bugfix.
180 | 3. Commit your changes with clear and descriptive messages.
181 | 4. Submit a pull request.
182 |
183 | ## License
184 |
185 | MIT
186 |
--------------------------------------------------------------------------------
/images/svelte-textcircle.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LoStis-World/svelte-textcircle/c80daff6e8f2bc4de692da80390ca6ba88d99bab/images/svelte-textcircle.jpg
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@lostisworld/svelte-textcircle",
3 | "version": "0.0.3",
4 | "keywords": [
5 | "svelte",
6 | "svelte component",
7 | "svelte text circle",
8 | "svelte text circle component",
9 | "animation",
10 | "css",
11 | "css animation",
12 | "css text circle"
13 | ],
14 | "author": "LoSti's World",
15 | "license": "MIT",
16 | "homepage": "https://github.com/LoStis-World/svelte-textcircle#readme",
17 | "bugs": {
18 | "url": "https://github.com/LoStis-World/svelte-textcircle/issues"
19 | },
20 | "repository": {
21 | "type": "git",
22 | "url": "git+https://github.com/LoStis-World/svelte-textcircle.git"
23 | },
24 | "scripts": {
25 | "dev": "vite dev",
26 | "build": "vite build && npm run prepack",
27 | "preview": "vite preview",
28 | "prepare": "svelte-kit sync || echo ''",
29 | "prepack": "svelte-kit sync && svelte-package && publint",
30 | "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
31 | "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
32 | "format": "prettier --write .",
33 | "lint": "prettier --check ."
34 | },
35 | "files": [
36 | "dist/svelte-textcircle",
37 | "!dist/**/*.test.*",
38 | "!dist/**/*.spec.*"
39 | ],
40 | "sideEffects": [
41 | "**/*.css"
42 | ],
43 | "svelte": "./dist/svelte-textcircle/index.js",
44 | "types": "./dist/svelte-textcircle/index.d.ts",
45 | "type": "module",
46 | "exports": {
47 | ".": {
48 | "types": "./dist/svelte-textcircle/index.d.ts",
49 | "svelte": "./dist/svelte-textcircle/index.js"
50 | }
51 | },
52 | "peerDependencies": {
53 | "svelte": "^5.16.0"
54 | },
55 | "devDependencies": {
56 | "@sveltejs/adapter-auto": "^6.0.0",
57 | "@sveltejs/kit": "^2.16.0",
58 | "@sveltejs/package": "^2.0.0",
59 | "@sveltejs/vite-plugin-svelte": "^5.0.0",
60 | "prettier": "^3.4.2",
61 | "prettier-plugin-svelte": "^3.3.3",
62 | "publint": "^0.3.2",
63 | "svelte": "^5.0.0",
64 | "svelte-check": "^4.0.0",
65 | "typescript": "^5.0.0",
66 | "vite": "^6.2.6"
67 | },
68 | "pnpm": {
69 | "onlyBuiltDependencies": [
70 | "esbuild"
71 | ]
72 | }
73 | }
74 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: '9.0'
2 |
3 | settings:
4 | autoInstallPeers: true
5 | excludeLinksFromLockfile: false
6 |
7 | importers:
8 |
9 | .:
10 | devDependencies:
11 | '@sveltejs/adapter-auto':
12 | specifier: ^6.0.0
13 | version: 6.0.0(@sveltejs/kit@2.20.8(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.28.2)(vite@6.3.4))(svelte@5.28.2)(vite@6.3.4))
14 | '@sveltejs/kit':
15 | specifier: ^2.16.0
16 | version: 2.20.8(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.28.2)(vite@6.3.4))(svelte@5.28.2)(vite@6.3.4)
17 | '@sveltejs/package':
18 | specifier: ^2.0.0
19 | version: 2.3.11(svelte@5.28.2)(typescript@5.8.3)
20 | '@sveltejs/vite-plugin-svelte':
21 | specifier: ^5.0.0
22 | version: 5.0.3(svelte@5.28.2)(vite@6.3.4)
23 | prettier:
24 | specifier: ^3.4.2
25 | version: 3.5.3
26 | prettier-plugin-svelte:
27 | specifier: ^3.3.3
28 | version: 3.3.3(prettier@3.5.3)(svelte@5.28.2)
29 | publint:
30 | specifier: ^0.3.2
31 | version: 0.3.12
32 | svelte:
33 | specifier: ^5.0.0
34 | version: 5.28.2
35 | svelte-check:
36 | specifier: ^4.0.0
37 | version: 4.1.7(picomatch@4.0.2)(svelte@5.28.2)(typescript@5.8.3)
38 | typescript:
39 | specifier: ^5.0.0
40 | version: 5.8.3
41 | vite:
42 | specifier: ^6.2.6
43 | version: 6.3.4
44 |
45 | packages:
46 |
47 | '@ampproject/remapping@2.3.0':
48 | resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
49 | engines: {node: '>=6.0.0'}
50 |
51 | '@esbuild/aix-ppc64@0.25.3':
52 | resolution: {integrity: sha512-W8bFfPA8DowP8l//sxjJLSLkD8iEjMc7cBVyP+u4cEv9sM7mdUCkgsj+t0n/BWPFtv7WWCN5Yzj0N6FJNUUqBQ==}
53 | engines: {node: '>=18'}
54 | cpu: [ppc64]
55 | os: [aix]
56 |
57 | '@esbuild/android-arm64@0.25.3':
58 | resolution: {integrity: sha512-XelR6MzjlZuBM4f5z2IQHK6LkK34Cvv6Rj2EntER3lwCBFdg6h2lKbtRjpTTsdEjD/WSe1q8UyPBXP1x3i/wYQ==}
59 | engines: {node: '>=18'}
60 | cpu: [arm64]
61 | os: [android]
62 |
63 | '@esbuild/android-arm@0.25.3':
64 | resolution: {integrity: sha512-PuwVXbnP87Tcff5I9ngV0lmiSu40xw1At6i3GsU77U7cjDDB4s0X2cyFuBiDa1SBk9DnvWwnGvVaGBqoFWPb7A==}
65 | engines: {node: '>=18'}
66 | cpu: [arm]
67 | os: [android]
68 |
69 | '@esbuild/android-x64@0.25.3':
70 | resolution: {integrity: sha512-ogtTpYHT/g1GWS/zKM0cc/tIebFjm1F9Aw1boQ2Y0eUQ+J89d0jFY//s9ei9jVIlkYi8AfOjiixcLJSGNSOAdQ==}
71 | engines: {node: '>=18'}
72 | cpu: [x64]
73 | os: [android]
74 |
75 | '@esbuild/darwin-arm64@0.25.3':
76 | resolution: {integrity: sha512-eESK5yfPNTqpAmDfFWNsOhmIOaQA59tAcF/EfYvo5/QWQCzXn5iUSOnqt3ra3UdzBv073ykTtmeLJZGt3HhA+w==}
77 | engines: {node: '>=18'}
78 | cpu: [arm64]
79 | os: [darwin]
80 |
81 | '@esbuild/darwin-x64@0.25.3':
82 | resolution: {integrity: sha512-Kd8glo7sIZtwOLcPbW0yLpKmBNWMANZhrC1r6K++uDR2zyzb6AeOYtI6udbtabmQpFaxJ8uduXMAo1gs5ozz8A==}
83 | engines: {node: '>=18'}
84 | cpu: [x64]
85 | os: [darwin]
86 |
87 | '@esbuild/freebsd-arm64@0.25.3':
88 | resolution: {integrity: sha512-EJiyS70BYybOBpJth3M0KLOus0n+RRMKTYzhYhFeMwp7e/RaajXvP+BWlmEXNk6uk+KAu46j/kaQzr6au+JcIw==}
89 | engines: {node: '>=18'}
90 | cpu: [arm64]
91 | os: [freebsd]
92 |
93 | '@esbuild/freebsd-x64@0.25.3':
94 | resolution: {integrity: sha512-Q+wSjaLpGxYf7zC0kL0nDlhsfuFkoN+EXrx2KSB33RhinWzejOd6AvgmP5JbkgXKmjhmpfgKZq24pneodYqE8Q==}
95 | engines: {node: '>=18'}
96 | cpu: [x64]
97 | os: [freebsd]
98 |
99 | '@esbuild/linux-arm64@0.25.3':
100 | resolution: {integrity: sha512-xCUgnNYhRD5bb1C1nqrDV1PfkwgbswTTBRbAd8aH5PhYzikdf/ddtsYyMXFfGSsb/6t6QaPSzxtbfAZr9uox4A==}
101 | engines: {node: '>=18'}
102 | cpu: [arm64]
103 | os: [linux]
104 |
105 | '@esbuild/linux-arm@0.25.3':
106 | resolution: {integrity: sha512-dUOVmAUzuHy2ZOKIHIKHCm58HKzFqd+puLaS424h6I85GlSDRZIA5ycBixb3mFgM0Jdh+ZOSB6KptX30DD8YOQ==}
107 | engines: {node: '>=18'}
108 | cpu: [arm]
109 | os: [linux]
110 |
111 | '@esbuild/linux-ia32@0.25.3':
112 | resolution: {integrity: sha512-yplPOpczHOO4jTYKmuYuANI3WhvIPSVANGcNUeMlxH4twz/TeXuzEP41tGKNGWJjuMhotpGabeFYGAOU2ummBw==}
113 | engines: {node: '>=18'}
114 | cpu: [ia32]
115 | os: [linux]
116 |
117 | '@esbuild/linux-loong64@0.25.3':
118 | resolution: {integrity: sha512-P4BLP5/fjyihmXCELRGrLd793q/lBtKMQl8ARGpDxgzgIKJDRJ/u4r1A/HgpBpKpKZelGct2PGI4T+axcedf6g==}
119 | engines: {node: '>=18'}
120 | cpu: [loong64]
121 | os: [linux]
122 |
123 | '@esbuild/linux-mips64el@0.25.3':
124 | resolution: {integrity: sha512-eRAOV2ODpu6P5divMEMa26RRqb2yUoYsuQQOuFUexUoQndm4MdpXXDBbUoKIc0iPa4aCO7gIhtnYomkn2x+bag==}
125 | engines: {node: '>=18'}
126 | cpu: [mips64el]
127 | os: [linux]
128 |
129 | '@esbuild/linux-ppc64@0.25.3':
130 | resolution: {integrity: sha512-ZC4jV2p7VbzTlnl8nZKLcBkfzIf4Yad1SJM4ZMKYnJqZFD4rTI+pBG65u8ev4jk3/MPwY9DvGn50wi3uhdaghg==}
131 | engines: {node: '>=18'}
132 | cpu: [ppc64]
133 | os: [linux]
134 |
135 | '@esbuild/linux-riscv64@0.25.3':
136 | resolution: {integrity: sha512-LDDODcFzNtECTrUUbVCs6j9/bDVqy7DDRsuIXJg6so+mFksgwG7ZVnTruYi5V+z3eE5y+BJZw7VvUadkbfg7QA==}
137 | engines: {node: '>=18'}
138 | cpu: [riscv64]
139 | os: [linux]
140 |
141 | '@esbuild/linux-s390x@0.25.3':
142 | resolution: {integrity: sha512-s+w/NOY2k0yC2p9SLen+ymflgcpRkvwwa02fqmAwhBRI3SC12uiS10edHHXlVWwfAagYSY5UpmT/zISXPMW3tQ==}
143 | engines: {node: '>=18'}
144 | cpu: [s390x]
145 | os: [linux]
146 |
147 | '@esbuild/linux-x64@0.25.3':
148 | resolution: {integrity: sha512-nQHDz4pXjSDC6UfOE1Fw9Q8d6GCAd9KdvMZpfVGWSJztYCarRgSDfOVBY5xwhQXseiyxapkiSJi/5/ja8mRFFA==}
149 | engines: {node: '>=18'}
150 | cpu: [x64]
151 | os: [linux]
152 |
153 | '@esbuild/netbsd-arm64@0.25.3':
154 | resolution: {integrity: sha512-1QaLtOWq0mzK6tzzp0jRN3eccmN3hezey7mhLnzC6oNlJoUJz4nym5ZD7mDnS/LZQgkrhEbEiTn515lPeLpgWA==}
155 | engines: {node: '>=18'}
156 | cpu: [arm64]
157 | os: [netbsd]
158 |
159 | '@esbuild/netbsd-x64@0.25.3':
160 | resolution: {integrity: sha512-i5Hm68HXHdgv8wkrt+10Bc50zM0/eonPb/a/OFVfB6Qvpiirco5gBA5bz7S2SHuU+Y4LWn/zehzNX14Sp4r27g==}
161 | engines: {node: '>=18'}
162 | cpu: [x64]
163 | os: [netbsd]
164 |
165 | '@esbuild/openbsd-arm64@0.25.3':
166 | resolution: {integrity: sha512-zGAVApJEYTbOC6H/3QBr2mq3upG/LBEXr85/pTtKiv2IXcgKV0RT0QA/hSXZqSvLEpXeIxah7LczB4lkiYhTAQ==}
167 | engines: {node: '>=18'}
168 | cpu: [arm64]
169 | os: [openbsd]
170 |
171 | '@esbuild/openbsd-x64@0.25.3':
172 | resolution: {integrity: sha512-fpqctI45NnCIDKBH5AXQBsD0NDPbEFczK98hk/aa6HJxbl+UtLkJV2+Bvy5hLSLk3LHmqt0NTkKNso1A9y1a4w==}
173 | engines: {node: '>=18'}
174 | cpu: [x64]
175 | os: [openbsd]
176 |
177 | '@esbuild/sunos-x64@0.25.3':
178 | resolution: {integrity: sha512-ROJhm7d8bk9dMCUZjkS8fgzsPAZEjtRJqCAmVgB0gMrvG7hfmPmz9k1rwO4jSiblFjYmNvbECL9uhaPzONMfgA==}
179 | engines: {node: '>=18'}
180 | cpu: [x64]
181 | os: [sunos]
182 |
183 | '@esbuild/win32-arm64@0.25.3':
184 | resolution: {integrity: sha512-YWcow8peiHpNBiIXHwaswPnAXLsLVygFwCB3A7Bh5jRkIBFWHGmNQ48AlX4xDvQNoMZlPYzjVOQDYEzWCqufMQ==}
185 | engines: {node: '>=18'}
186 | cpu: [arm64]
187 | os: [win32]
188 |
189 | '@esbuild/win32-ia32@0.25.3':
190 | resolution: {integrity: sha512-qspTZOIGoXVS4DpNqUYUs9UxVb04khS1Degaw/MnfMe7goQ3lTfQ13Vw4qY/Nj0979BGvMRpAYbs/BAxEvU8ew==}
191 | engines: {node: '>=18'}
192 | cpu: [ia32]
193 | os: [win32]
194 |
195 | '@esbuild/win32-x64@0.25.3':
196 | resolution: {integrity: sha512-ICgUR+kPimx0vvRzf+N/7L7tVSQeE3BYY+NhHRHXS1kBuPO7z2+7ea2HbhDyZdTephgvNvKrlDDKUexuCVBVvg==}
197 | engines: {node: '>=18'}
198 | cpu: [x64]
199 | os: [win32]
200 |
201 | '@jridgewell/gen-mapping@0.3.8':
202 | resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==}
203 | engines: {node: '>=6.0.0'}
204 |
205 | '@jridgewell/resolve-uri@3.1.2':
206 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
207 | engines: {node: '>=6.0.0'}
208 |
209 | '@jridgewell/set-array@1.2.1':
210 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
211 | engines: {node: '>=6.0.0'}
212 |
213 | '@jridgewell/sourcemap-codec@1.5.0':
214 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
215 |
216 | '@jridgewell/trace-mapping@0.3.25':
217 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
218 |
219 | '@polka/url@1.0.0-next.29':
220 | resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==}
221 |
222 | '@publint/pack@0.1.2':
223 | resolution: {integrity: sha512-S+9ANAvUmjutrshV4jZjaiG8XQyuJIZ8a4utWmN/vW1sgQ9IfBnPndwkmQYw53QmouOIytT874u65HEmu6H5jw==}
224 | engines: {node: '>=18'}
225 |
226 | '@rollup/rollup-android-arm-eabi@4.40.1':
227 | resolution: {integrity: sha512-kxz0YeeCrRUHz3zyqvd7n+TVRlNyTifBsmnmNPtk3hQURUyG9eAB+usz6DAwagMusjx/zb3AjvDUvhFGDAexGw==}
228 | cpu: [arm]
229 | os: [android]
230 |
231 | '@rollup/rollup-android-arm64@4.40.1':
232 | resolution: {integrity: sha512-PPkxTOisoNC6TpnDKatjKkjRMsdaWIhyuMkA4UsBXT9WEZY4uHezBTjs6Vl4PbqQQeu6oION1w2voYZv9yquCw==}
233 | cpu: [arm64]
234 | os: [android]
235 |
236 | '@rollup/rollup-darwin-arm64@4.40.1':
237 | resolution: {integrity: sha512-VWXGISWFY18v/0JyNUy4A46KCFCb9NVsH+1100XP31lud+TzlezBbz24CYzbnA4x6w4hx+NYCXDfnvDVO6lcAA==}
238 | cpu: [arm64]
239 | os: [darwin]
240 |
241 | '@rollup/rollup-darwin-x64@4.40.1':
242 | resolution: {integrity: sha512-nIwkXafAI1/QCS7pxSpv/ZtFW6TXcNUEHAIA9EIyw5OzxJZQ1YDrX+CL6JAIQgZ33CInl1R6mHet9Y/UZTg2Bw==}
243 | cpu: [x64]
244 | os: [darwin]
245 |
246 | '@rollup/rollup-freebsd-arm64@4.40.1':
247 | resolution: {integrity: sha512-BdrLJ2mHTrIYdaS2I99mriyJfGGenSaP+UwGi1kB9BLOCu9SR8ZpbkmmalKIALnRw24kM7qCN0IOm6L0S44iWw==}
248 | cpu: [arm64]
249 | os: [freebsd]
250 |
251 | '@rollup/rollup-freebsd-x64@4.40.1':
252 | resolution: {integrity: sha512-VXeo/puqvCG8JBPNZXZf5Dqq7BzElNJzHRRw3vjBE27WujdzuOPecDPc/+1DcdcTptNBep3861jNq0mYkT8Z6Q==}
253 | cpu: [x64]
254 | os: [freebsd]
255 |
256 | '@rollup/rollup-linux-arm-gnueabihf@4.40.1':
257 | resolution: {integrity: sha512-ehSKrewwsESPt1TgSE/na9nIhWCosfGSFqv7vwEtjyAqZcvbGIg4JAcV7ZEh2tfj/IlfBeZjgOXm35iOOjadcg==}
258 | cpu: [arm]
259 | os: [linux]
260 |
261 | '@rollup/rollup-linux-arm-musleabihf@4.40.1':
262 | resolution: {integrity: sha512-m39iO/aaurh5FVIu/F4/Zsl8xppd76S4qoID8E+dSRQvTyZTOI2gVk3T4oqzfq1PtcvOfAVlwLMK3KRQMaR8lg==}
263 | cpu: [arm]
264 | os: [linux]
265 |
266 | '@rollup/rollup-linux-arm64-gnu@4.40.1':
267 | resolution: {integrity: sha512-Y+GHnGaku4aVLSgrT0uWe2o2Rq8te9hi+MwqGF9r9ORgXhmHK5Q71N757u0F8yU1OIwUIFy6YiJtKjtyktk5hg==}
268 | cpu: [arm64]
269 | os: [linux]
270 |
271 | '@rollup/rollup-linux-arm64-musl@4.40.1':
272 | resolution: {integrity: sha512-jEwjn3jCA+tQGswK3aEWcD09/7M5wGwc6+flhva7dsQNRZZTe30vkalgIzV4tjkopsTS9Jd7Y1Bsj6a4lzz8gQ==}
273 | cpu: [arm64]
274 | os: [linux]
275 |
276 | '@rollup/rollup-linux-loongarch64-gnu@4.40.1':
277 | resolution: {integrity: sha512-ySyWikVhNzv+BV/IDCsrraOAZ3UaC8SZB67FZlqVwXwnFhPihOso9rPOxzZbjp81suB1O2Topw+6Ug3JNegejQ==}
278 | cpu: [loong64]
279 | os: [linux]
280 |
281 | '@rollup/rollup-linux-powerpc64le-gnu@4.40.1':
282 | resolution: {integrity: sha512-BvvA64QxZlh7WZWqDPPdt0GH4bznuL6uOO1pmgPnnv86rpUpc8ZxgZwcEgXvo02GRIZX1hQ0j0pAnhwkhwPqWg==}
283 | cpu: [ppc64]
284 | os: [linux]
285 |
286 | '@rollup/rollup-linux-riscv64-gnu@4.40.1':
287 | resolution: {integrity: sha512-EQSP+8+1VuSulm9RKSMKitTav89fKbHymTf25n5+Yr6gAPZxYWpj3DzAsQqoaHAk9YX2lwEyAf9S4W8F4l3VBQ==}
288 | cpu: [riscv64]
289 | os: [linux]
290 |
291 | '@rollup/rollup-linux-riscv64-musl@4.40.1':
292 | resolution: {integrity: sha512-n/vQ4xRZXKuIpqukkMXZt9RWdl+2zgGNx7Uda8NtmLJ06NL8jiHxUawbwC+hdSq1rrw/9CghCpEONor+l1e2gA==}
293 | cpu: [riscv64]
294 | os: [linux]
295 |
296 | '@rollup/rollup-linux-s390x-gnu@4.40.1':
297 | resolution: {integrity: sha512-h8d28xzYb98fMQKUz0w2fMc1XuGzLLjdyxVIbhbil4ELfk5/orZlSTpF/xdI9C8K0I8lCkq+1En2RJsawZekkg==}
298 | cpu: [s390x]
299 | os: [linux]
300 |
301 | '@rollup/rollup-linux-x64-gnu@4.40.1':
302 | resolution: {integrity: sha512-XiK5z70PEFEFqcNj3/zRSz/qX4bp4QIraTy9QjwJAb/Z8GM7kVUsD0Uk8maIPeTyPCP03ChdI+VVmJriKYbRHQ==}
303 | cpu: [x64]
304 | os: [linux]
305 |
306 | '@rollup/rollup-linux-x64-musl@4.40.1':
307 | resolution: {integrity: sha512-2BRORitq5rQ4Da9blVovzNCMaUlyKrzMSvkVR0D4qPuOy/+pMCrh1d7o01RATwVy+6Fa1WBw+da7QPeLWU/1mQ==}
308 | cpu: [x64]
309 | os: [linux]
310 |
311 | '@rollup/rollup-win32-arm64-msvc@4.40.1':
312 | resolution: {integrity: sha512-b2bcNm9Kbde03H+q+Jjw9tSfhYkzrDUf2d5MAd1bOJuVplXvFhWz7tRtWvD8/ORZi7qSCy0idW6tf2HgxSXQSg==}
313 | cpu: [arm64]
314 | os: [win32]
315 |
316 | '@rollup/rollup-win32-ia32-msvc@4.40.1':
317 | resolution: {integrity: sha512-DfcogW8N7Zg7llVEfpqWMZcaErKfsj9VvmfSyRjCyo4BI3wPEfrzTtJkZG6gKP/Z92wFm6rz2aDO7/JfiR/whA==}
318 | cpu: [ia32]
319 | os: [win32]
320 |
321 | '@rollup/rollup-win32-x64-msvc@4.40.1':
322 | resolution: {integrity: sha512-ECyOuDeH3C1I8jH2MK1RtBJW+YPMvSfT0a5NN0nHfQYnDSJ6tUiZH3gzwVP5/Kfh/+Tt7tpWVF9LXNTnhTJ3kA==}
323 | cpu: [x64]
324 | os: [win32]
325 |
326 | '@sveltejs/acorn-typescript@1.0.5':
327 | resolution: {integrity: sha512-IwQk4yfwLdibDlrXVE04jTZYlLnwsTT2PIOQQGNLWfjavGifnk1JD1LcZjZaBTRcxZu2FfPfNLOE04DSu9lqtQ==}
328 | peerDependencies:
329 | acorn: ^8.9.0
330 |
331 | '@sveltejs/adapter-auto@6.0.0':
332 | resolution: {integrity: sha512-7mR2/G7vlXakaOj6QBSG9dwBfTgWjV+UnEMB5Z6Xu0ZbdXda6c0su1fNkg0ab0zlilSkloMA2NjCna02/DR7sA==}
333 | peerDependencies:
334 | '@sveltejs/kit': ^2.0.0
335 |
336 | '@sveltejs/kit@2.20.8':
337 | resolution: {integrity: sha512-ep9qTxL7WALhfm0kFecL3VHeuNew8IccbYGqv5TqL/KSqWRKzEgDG8blNlIu1CkLTTua/kHjI+f5T8eCmWIxKw==}
338 | engines: {node: '>=18.13'}
339 | hasBin: true
340 | peerDependencies:
341 | '@sveltejs/vite-plugin-svelte': ^3.0.0 || ^4.0.0-next.1 || ^5.0.0
342 | svelte: ^4.0.0 || ^5.0.0-next.0
343 | vite: ^5.0.3 || ^6.0.0
344 |
345 | '@sveltejs/package@2.3.11':
346 | resolution: {integrity: sha512-DSMt2U0XNAdoQBYksrmgQi5dKy7jUTVDJLiagS/iXF7AShjAmTbGJQKruBuT/FfYAWvNxfQTSjkXU8eAIjVeNg==}
347 | engines: {node: ^16.14 || >=18}
348 | hasBin: true
349 | peerDependencies:
350 | svelte: ^3.44.0 || ^4.0.0 || ^5.0.0-next.1
351 |
352 | '@sveltejs/vite-plugin-svelte-inspector@4.0.1':
353 | resolution: {integrity: sha512-J/Nmb2Q2y7mck2hyCX4ckVHcR5tu2J+MtBEQqpDrrgELZ2uvraQcK/ioCV61AqkdXFgriksOKIceDcQmqnGhVw==}
354 | engines: {node: ^18.0.0 || ^20.0.0 || >=22}
355 | peerDependencies:
356 | '@sveltejs/vite-plugin-svelte': ^5.0.0
357 | svelte: ^5.0.0
358 | vite: ^6.0.0
359 |
360 | '@sveltejs/vite-plugin-svelte@5.0.3':
361 | resolution: {integrity: sha512-MCFS6CrQDu1yGwspm4qtli0e63vaPCehf6V7pIMP15AsWgMKrqDGCPFF/0kn4SP0ii4aySu4Pa62+fIRGFMjgw==}
362 | engines: {node: ^18.0.0 || ^20.0.0 || >=22}
363 | peerDependencies:
364 | svelte: ^5.0.0
365 | vite: ^6.0.0
366 |
367 | '@types/cookie@0.6.0':
368 | resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==}
369 |
370 | '@types/estree@1.0.7':
371 | resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==}
372 |
373 | acorn@8.14.1:
374 | resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==}
375 | engines: {node: '>=0.4.0'}
376 | hasBin: true
377 |
378 | aria-query@5.3.2:
379 | resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==}
380 | engines: {node: '>= 0.4'}
381 |
382 | axobject-query@4.1.0:
383 | resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==}
384 | engines: {node: '>= 0.4'}
385 |
386 | chokidar@4.0.3:
387 | resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==}
388 | engines: {node: '>= 14.16.0'}
389 |
390 | clsx@2.1.1:
391 | resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
392 | engines: {node: '>=6'}
393 |
394 | cookie@0.6.0:
395 | resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==}
396 | engines: {node: '>= 0.6'}
397 |
398 | debug@4.4.0:
399 | resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==}
400 | engines: {node: '>=6.0'}
401 | peerDependencies:
402 | supports-color: '*'
403 | peerDependenciesMeta:
404 | supports-color:
405 | optional: true
406 |
407 | dedent-js@1.0.1:
408 | resolution: {integrity: sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==}
409 |
410 | deepmerge@4.3.1:
411 | resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
412 | engines: {node: '>=0.10.0'}
413 |
414 | devalue@5.1.1:
415 | resolution: {integrity: sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==}
416 |
417 | esbuild@0.25.3:
418 | resolution: {integrity: sha512-qKA6Pvai73+M2FtftpNKRxJ78GIjmFXFxd/1DVBqGo/qNhLSfv+G12n9pNoWdytJC8U00TrViOwpjT0zgqQS8Q==}
419 | engines: {node: '>=18'}
420 | hasBin: true
421 |
422 | esm-env@1.2.2:
423 | resolution: {integrity: sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==}
424 |
425 | esrap@1.4.6:
426 | resolution: {integrity: sha512-F/D2mADJ9SHY3IwksD4DAXjTt7qt7GWUf3/8RhCNWmC/67tyb55dpimHmy7EplakFaflV0R/PC+fdSPqrRHAQw==}
427 |
428 | fdir@6.4.4:
429 | resolution: {integrity: sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==}
430 | peerDependencies:
431 | picomatch: ^3 || ^4
432 | peerDependenciesMeta:
433 | picomatch:
434 | optional: true
435 |
436 | fsevents@2.3.3:
437 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
438 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
439 | os: [darwin]
440 |
441 | import-meta-resolve@4.1.0:
442 | resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==}
443 |
444 | is-reference@3.0.3:
445 | resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==}
446 |
447 | kleur@4.1.5:
448 | resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
449 | engines: {node: '>=6'}
450 |
451 | locate-character@3.0.0:
452 | resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==}
453 |
454 | lower-case@2.0.2:
455 | resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==}
456 |
457 | magic-string@0.30.17:
458 | resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==}
459 |
460 | mri@1.2.0:
461 | resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
462 | engines: {node: '>=4'}
463 |
464 | mrmime@2.0.1:
465 | resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==}
466 | engines: {node: '>=10'}
467 |
468 | ms@2.1.3:
469 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
470 |
471 | nanoid@3.3.11:
472 | resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
473 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
474 | hasBin: true
475 |
476 | no-case@3.0.4:
477 | resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==}
478 |
479 | package-manager-detector@1.2.0:
480 | resolution: {integrity: sha512-PutJepsOtsqVfUsxCzgTTpyXmiAgvKptIgY4th5eq5UXXFhj5PxfQ9hnGkypMeovpAvVshFRItoFHYO18TCOqA==}
481 |
482 | pascal-case@3.1.2:
483 | resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==}
484 |
485 | picocolors@1.1.1:
486 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
487 |
488 | picomatch@4.0.2:
489 | resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==}
490 | engines: {node: '>=12'}
491 |
492 | postcss@8.5.3:
493 | resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==}
494 | engines: {node: ^10 || ^12 || >=14}
495 |
496 | prettier-plugin-svelte@3.3.3:
497 | resolution: {integrity: sha512-yViK9zqQ+H2qZD1w/bH7W8i+bVfKrD8GIFjkFe4Thl6kCT9SlAsXVNmt3jCvQOCsnOhcvYgsoVlRV/Eu6x5nNw==}
498 | peerDependencies:
499 | prettier: ^3.0.0
500 | svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0
501 |
502 | prettier@3.5.3:
503 | resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==}
504 | engines: {node: '>=14'}
505 | hasBin: true
506 |
507 | publint@0.3.12:
508 | resolution: {integrity: sha512-1w3MMtL9iotBjm1mmXtG3Nk06wnq9UhGNRpQ2j6n1Zq7YAD6gnxMMZMIxlRPAydVjVbjSm+n0lhwqsD1m4LD5w==}
509 | engines: {node: '>=18'}
510 | hasBin: true
511 |
512 | readdirp@4.1.2:
513 | resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==}
514 | engines: {node: '>= 14.18.0'}
515 |
516 | rollup@4.40.1:
517 | resolution: {integrity: sha512-C5VvvgCCyfyotVITIAv+4efVytl5F7wt+/I2i9q9GZcEXW9BP52YYOXC58igUi+LFZVHukErIIqQSWwv/M3WRw==}
518 | engines: {node: '>=18.0.0', npm: '>=8.0.0'}
519 | hasBin: true
520 |
521 | sade@1.8.1:
522 | resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==}
523 | engines: {node: '>=6'}
524 |
525 | semver@7.7.1:
526 | resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==}
527 | engines: {node: '>=10'}
528 | hasBin: true
529 |
530 | set-cookie-parser@2.7.1:
531 | resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==}
532 |
533 | sirv@3.0.1:
534 | resolution: {integrity: sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==}
535 | engines: {node: '>=18'}
536 |
537 | source-map-js@1.2.1:
538 | resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
539 | engines: {node: '>=0.10.0'}
540 |
541 | svelte-check@4.1.7:
542 | resolution: {integrity: sha512-1jX4BzXrQJhC/Jt3SqYf6Ntu//vmfc6VWp07JkRfK2nn+22yIblspVUo96gzMkg0Zov8lQicxhxsMzOctwcMQQ==}
543 | engines: {node: '>= 18.0.0'}
544 | hasBin: true
545 | peerDependencies:
546 | svelte: ^4.0.0 || ^5.0.0-next.0
547 | typescript: '>=5.0.0'
548 |
549 | svelte2tsx@0.7.37:
550 | resolution: {integrity: sha512-uQCWibXwUNPGQBGTZP1axIpFGFHTXXN30/ppodLVXCnX23U1nzEhqiVtFSEQjtUK3pFVxPhdnfyxD6ikxMCzPQ==}
551 | peerDependencies:
552 | svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0
553 | typescript: ^4.9.4 || ^5.0.0
554 |
555 | svelte@5.28.2:
556 | resolution: {integrity: sha512-FbWBxgWOpQfhKvoGJv/TFwzqb4EhJbwCD17dB0tEpQiw1XyUEKZJtgm4nA4xq3LLsMo7hu5UY/BOFmroAxKTMg==}
557 | engines: {node: '>=18'}
558 |
559 | tinyglobby@0.2.13:
560 | resolution: {integrity: sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==}
561 | engines: {node: '>=12.0.0'}
562 |
563 | totalist@3.0.1:
564 | resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==}
565 | engines: {node: '>=6'}
566 |
567 | tslib@2.8.1:
568 | resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
569 |
570 | typescript@5.8.3:
571 | resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==}
572 | engines: {node: '>=14.17'}
573 | hasBin: true
574 |
575 | vite@6.3.4:
576 | resolution: {integrity: sha512-BiReIiMS2fyFqbqNT/Qqt4CVITDU9M9vE+DKcVAsB+ZV0wvTKd+3hMbkpxz1b+NmEDMegpVbisKiAZOnvO92Sw==}
577 | engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
578 | hasBin: true
579 | peerDependencies:
580 | '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0
581 | jiti: '>=1.21.0'
582 | less: '*'
583 | lightningcss: ^1.21.0
584 | sass: '*'
585 | sass-embedded: '*'
586 | stylus: '*'
587 | sugarss: '*'
588 | terser: ^5.16.0
589 | tsx: ^4.8.1
590 | yaml: ^2.4.2
591 | peerDependenciesMeta:
592 | '@types/node':
593 | optional: true
594 | jiti:
595 | optional: true
596 | less:
597 | optional: true
598 | lightningcss:
599 | optional: true
600 | sass:
601 | optional: true
602 | sass-embedded:
603 | optional: true
604 | stylus:
605 | optional: true
606 | sugarss:
607 | optional: true
608 | terser:
609 | optional: true
610 | tsx:
611 | optional: true
612 | yaml:
613 | optional: true
614 |
615 | vitefu@1.0.6:
616 | resolution: {integrity: sha512-+Rex1GlappUyNN6UfwbVZne/9cYC4+R2XDk9xkNXBKMw6HQagdX9PgZ8V2v1WUSK1wfBLp7qbI1+XSNIlB1xmA==}
617 | peerDependencies:
618 | vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0
619 | peerDependenciesMeta:
620 | vite:
621 | optional: true
622 |
623 | zimmerframe@1.1.2:
624 | resolution: {integrity: sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==}
625 |
626 | snapshots:
627 |
628 | '@ampproject/remapping@2.3.0':
629 | dependencies:
630 | '@jridgewell/gen-mapping': 0.3.8
631 | '@jridgewell/trace-mapping': 0.3.25
632 |
633 | '@esbuild/aix-ppc64@0.25.3':
634 | optional: true
635 |
636 | '@esbuild/android-arm64@0.25.3':
637 | optional: true
638 |
639 | '@esbuild/android-arm@0.25.3':
640 | optional: true
641 |
642 | '@esbuild/android-x64@0.25.3':
643 | optional: true
644 |
645 | '@esbuild/darwin-arm64@0.25.3':
646 | optional: true
647 |
648 | '@esbuild/darwin-x64@0.25.3':
649 | optional: true
650 |
651 | '@esbuild/freebsd-arm64@0.25.3':
652 | optional: true
653 |
654 | '@esbuild/freebsd-x64@0.25.3':
655 | optional: true
656 |
657 | '@esbuild/linux-arm64@0.25.3':
658 | optional: true
659 |
660 | '@esbuild/linux-arm@0.25.3':
661 | optional: true
662 |
663 | '@esbuild/linux-ia32@0.25.3':
664 | optional: true
665 |
666 | '@esbuild/linux-loong64@0.25.3':
667 | optional: true
668 |
669 | '@esbuild/linux-mips64el@0.25.3':
670 | optional: true
671 |
672 | '@esbuild/linux-ppc64@0.25.3':
673 | optional: true
674 |
675 | '@esbuild/linux-riscv64@0.25.3':
676 | optional: true
677 |
678 | '@esbuild/linux-s390x@0.25.3':
679 | optional: true
680 |
681 | '@esbuild/linux-x64@0.25.3':
682 | optional: true
683 |
684 | '@esbuild/netbsd-arm64@0.25.3':
685 | optional: true
686 |
687 | '@esbuild/netbsd-x64@0.25.3':
688 | optional: true
689 |
690 | '@esbuild/openbsd-arm64@0.25.3':
691 | optional: true
692 |
693 | '@esbuild/openbsd-x64@0.25.3':
694 | optional: true
695 |
696 | '@esbuild/sunos-x64@0.25.3':
697 | optional: true
698 |
699 | '@esbuild/win32-arm64@0.25.3':
700 | optional: true
701 |
702 | '@esbuild/win32-ia32@0.25.3':
703 | optional: true
704 |
705 | '@esbuild/win32-x64@0.25.3':
706 | optional: true
707 |
708 | '@jridgewell/gen-mapping@0.3.8':
709 | dependencies:
710 | '@jridgewell/set-array': 1.2.1
711 | '@jridgewell/sourcemap-codec': 1.5.0
712 | '@jridgewell/trace-mapping': 0.3.25
713 |
714 | '@jridgewell/resolve-uri@3.1.2': {}
715 |
716 | '@jridgewell/set-array@1.2.1': {}
717 |
718 | '@jridgewell/sourcemap-codec@1.5.0': {}
719 |
720 | '@jridgewell/trace-mapping@0.3.25':
721 | dependencies:
722 | '@jridgewell/resolve-uri': 3.1.2
723 | '@jridgewell/sourcemap-codec': 1.5.0
724 |
725 | '@polka/url@1.0.0-next.29': {}
726 |
727 | '@publint/pack@0.1.2': {}
728 |
729 | '@rollup/rollup-android-arm-eabi@4.40.1':
730 | optional: true
731 |
732 | '@rollup/rollup-android-arm64@4.40.1':
733 | optional: true
734 |
735 | '@rollup/rollup-darwin-arm64@4.40.1':
736 | optional: true
737 |
738 | '@rollup/rollup-darwin-x64@4.40.1':
739 | optional: true
740 |
741 | '@rollup/rollup-freebsd-arm64@4.40.1':
742 | optional: true
743 |
744 | '@rollup/rollup-freebsd-x64@4.40.1':
745 | optional: true
746 |
747 | '@rollup/rollup-linux-arm-gnueabihf@4.40.1':
748 | optional: true
749 |
750 | '@rollup/rollup-linux-arm-musleabihf@4.40.1':
751 | optional: true
752 |
753 | '@rollup/rollup-linux-arm64-gnu@4.40.1':
754 | optional: true
755 |
756 | '@rollup/rollup-linux-arm64-musl@4.40.1':
757 | optional: true
758 |
759 | '@rollup/rollup-linux-loongarch64-gnu@4.40.1':
760 | optional: true
761 |
762 | '@rollup/rollup-linux-powerpc64le-gnu@4.40.1':
763 | optional: true
764 |
765 | '@rollup/rollup-linux-riscv64-gnu@4.40.1':
766 | optional: true
767 |
768 | '@rollup/rollup-linux-riscv64-musl@4.40.1':
769 | optional: true
770 |
771 | '@rollup/rollup-linux-s390x-gnu@4.40.1':
772 | optional: true
773 |
774 | '@rollup/rollup-linux-x64-gnu@4.40.1':
775 | optional: true
776 |
777 | '@rollup/rollup-linux-x64-musl@4.40.1':
778 | optional: true
779 |
780 | '@rollup/rollup-win32-arm64-msvc@4.40.1':
781 | optional: true
782 |
783 | '@rollup/rollup-win32-ia32-msvc@4.40.1':
784 | optional: true
785 |
786 | '@rollup/rollup-win32-x64-msvc@4.40.1':
787 | optional: true
788 |
789 | '@sveltejs/acorn-typescript@1.0.5(acorn@8.14.1)':
790 | dependencies:
791 | acorn: 8.14.1
792 |
793 | '@sveltejs/adapter-auto@6.0.0(@sveltejs/kit@2.20.8(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.28.2)(vite@6.3.4))(svelte@5.28.2)(vite@6.3.4))':
794 | dependencies:
795 | '@sveltejs/kit': 2.20.8(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.28.2)(vite@6.3.4))(svelte@5.28.2)(vite@6.3.4)
796 | import-meta-resolve: 4.1.0
797 |
798 | '@sveltejs/kit@2.20.8(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.28.2)(vite@6.3.4))(svelte@5.28.2)(vite@6.3.4)':
799 | dependencies:
800 | '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.28.2)(vite@6.3.4)
801 | '@types/cookie': 0.6.0
802 | cookie: 0.6.0
803 | devalue: 5.1.1
804 | esm-env: 1.2.2
805 | import-meta-resolve: 4.1.0
806 | kleur: 4.1.5
807 | magic-string: 0.30.17
808 | mrmime: 2.0.1
809 | sade: 1.8.1
810 | set-cookie-parser: 2.7.1
811 | sirv: 3.0.1
812 | svelte: 5.28.2
813 | vite: 6.3.4
814 |
815 | '@sveltejs/package@2.3.11(svelte@5.28.2)(typescript@5.8.3)':
816 | dependencies:
817 | chokidar: 4.0.3
818 | kleur: 4.1.5
819 | sade: 1.8.1
820 | semver: 7.7.1
821 | svelte: 5.28.2
822 | svelte2tsx: 0.7.37(svelte@5.28.2)(typescript@5.8.3)
823 | transitivePeerDependencies:
824 | - typescript
825 |
826 | '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.28.2)(vite@6.3.4))(svelte@5.28.2)(vite@6.3.4)':
827 | dependencies:
828 | '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.28.2)(vite@6.3.4)
829 | debug: 4.4.0
830 | svelte: 5.28.2
831 | vite: 6.3.4
832 | transitivePeerDependencies:
833 | - supports-color
834 |
835 | '@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.28.2)(vite@6.3.4)':
836 | dependencies:
837 | '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.28.2)(vite@6.3.4))(svelte@5.28.2)(vite@6.3.4)
838 | debug: 4.4.0
839 | deepmerge: 4.3.1
840 | kleur: 4.1.5
841 | magic-string: 0.30.17
842 | svelte: 5.28.2
843 | vite: 6.3.4
844 | vitefu: 1.0.6(vite@6.3.4)
845 | transitivePeerDependencies:
846 | - supports-color
847 |
848 | '@types/cookie@0.6.0': {}
849 |
850 | '@types/estree@1.0.7': {}
851 |
852 | acorn@8.14.1: {}
853 |
854 | aria-query@5.3.2: {}
855 |
856 | axobject-query@4.1.0: {}
857 |
858 | chokidar@4.0.3:
859 | dependencies:
860 | readdirp: 4.1.2
861 |
862 | clsx@2.1.1: {}
863 |
864 | cookie@0.6.0: {}
865 |
866 | debug@4.4.0:
867 | dependencies:
868 | ms: 2.1.3
869 |
870 | dedent-js@1.0.1: {}
871 |
872 | deepmerge@4.3.1: {}
873 |
874 | devalue@5.1.1: {}
875 |
876 | esbuild@0.25.3:
877 | optionalDependencies:
878 | '@esbuild/aix-ppc64': 0.25.3
879 | '@esbuild/android-arm': 0.25.3
880 | '@esbuild/android-arm64': 0.25.3
881 | '@esbuild/android-x64': 0.25.3
882 | '@esbuild/darwin-arm64': 0.25.3
883 | '@esbuild/darwin-x64': 0.25.3
884 | '@esbuild/freebsd-arm64': 0.25.3
885 | '@esbuild/freebsd-x64': 0.25.3
886 | '@esbuild/linux-arm': 0.25.3
887 | '@esbuild/linux-arm64': 0.25.3
888 | '@esbuild/linux-ia32': 0.25.3
889 | '@esbuild/linux-loong64': 0.25.3
890 | '@esbuild/linux-mips64el': 0.25.3
891 | '@esbuild/linux-ppc64': 0.25.3
892 | '@esbuild/linux-riscv64': 0.25.3
893 | '@esbuild/linux-s390x': 0.25.3
894 | '@esbuild/linux-x64': 0.25.3
895 | '@esbuild/netbsd-arm64': 0.25.3
896 | '@esbuild/netbsd-x64': 0.25.3
897 | '@esbuild/openbsd-arm64': 0.25.3
898 | '@esbuild/openbsd-x64': 0.25.3
899 | '@esbuild/sunos-x64': 0.25.3
900 | '@esbuild/win32-arm64': 0.25.3
901 | '@esbuild/win32-ia32': 0.25.3
902 | '@esbuild/win32-x64': 0.25.3
903 |
904 | esm-env@1.2.2: {}
905 |
906 | esrap@1.4.6:
907 | dependencies:
908 | '@jridgewell/sourcemap-codec': 1.5.0
909 |
910 | fdir@6.4.4(picomatch@4.0.2):
911 | optionalDependencies:
912 | picomatch: 4.0.2
913 |
914 | fsevents@2.3.3:
915 | optional: true
916 |
917 | import-meta-resolve@4.1.0: {}
918 |
919 | is-reference@3.0.3:
920 | dependencies:
921 | '@types/estree': 1.0.7
922 |
923 | kleur@4.1.5: {}
924 |
925 | locate-character@3.0.0: {}
926 |
927 | lower-case@2.0.2:
928 | dependencies:
929 | tslib: 2.8.1
930 |
931 | magic-string@0.30.17:
932 | dependencies:
933 | '@jridgewell/sourcemap-codec': 1.5.0
934 |
935 | mri@1.2.0: {}
936 |
937 | mrmime@2.0.1: {}
938 |
939 | ms@2.1.3: {}
940 |
941 | nanoid@3.3.11: {}
942 |
943 | no-case@3.0.4:
944 | dependencies:
945 | lower-case: 2.0.2
946 | tslib: 2.8.1
947 |
948 | package-manager-detector@1.2.0: {}
949 |
950 | pascal-case@3.1.2:
951 | dependencies:
952 | no-case: 3.0.4
953 | tslib: 2.8.1
954 |
955 | picocolors@1.1.1: {}
956 |
957 | picomatch@4.0.2: {}
958 |
959 | postcss@8.5.3:
960 | dependencies:
961 | nanoid: 3.3.11
962 | picocolors: 1.1.1
963 | source-map-js: 1.2.1
964 |
965 | prettier-plugin-svelte@3.3.3(prettier@3.5.3)(svelte@5.28.2):
966 | dependencies:
967 | prettier: 3.5.3
968 | svelte: 5.28.2
969 |
970 | prettier@3.5.3: {}
971 |
972 | publint@0.3.12:
973 | dependencies:
974 | '@publint/pack': 0.1.2
975 | package-manager-detector: 1.2.0
976 | picocolors: 1.1.1
977 | sade: 1.8.1
978 |
979 | readdirp@4.1.2: {}
980 |
981 | rollup@4.40.1:
982 | dependencies:
983 | '@types/estree': 1.0.7
984 | optionalDependencies:
985 | '@rollup/rollup-android-arm-eabi': 4.40.1
986 | '@rollup/rollup-android-arm64': 4.40.1
987 | '@rollup/rollup-darwin-arm64': 4.40.1
988 | '@rollup/rollup-darwin-x64': 4.40.1
989 | '@rollup/rollup-freebsd-arm64': 4.40.1
990 | '@rollup/rollup-freebsd-x64': 4.40.1
991 | '@rollup/rollup-linux-arm-gnueabihf': 4.40.1
992 | '@rollup/rollup-linux-arm-musleabihf': 4.40.1
993 | '@rollup/rollup-linux-arm64-gnu': 4.40.1
994 | '@rollup/rollup-linux-arm64-musl': 4.40.1
995 | '@rollup/rollup-linux-loongarch64-gnu': 4.40.1
996 | '@rollup/rollup-linux-powerpc64le-gnu': 4.40.1
997 | '@rollup/rollup-linux-riscv64-gnu': 4.40.1
998 | '@rollup/rollup-linux-riscv64-musl': 4.40.1
999 | '@rollup/rollup-linux-s390x-gnu': 4.40.1
1000 | '@rollup/rollup-linux-x64-gnu': 4.40.1
1001 | '@rollup/rollup-linux-x64-musl': 4.40.1
1002 | '@rollup/rollup-win32-arm64-msvc': 4.40.1
1003 | '@rollup/rollup-win32-ia32-msvc': 4.40.1
1004 | '@rollup/rollup-win32-x64-msvc': 4.40.1
1005 | fsevents: 2.3.3
1006 |
1007 | sade@1.8.1:
1008 | dependencies:
1009 | mri: 1.2.0
1010 |
1011 | semver@7.7.1: {}
1012 |
1013 | set-cookie-parser@2.7.1: {}
1014 |
1015 | sirv@3.0.1:
1016 | dependencies:
1017 | '@polka/url': 1.0.0-next.29
1018 | mrmime: 2.0.1
1019 | totalist: 3.0.1
1020 |
1021 | source-map-js@1.2.1: {}
1022 |
1023 | svelte-check@4.1.7(picomatch@4.0.2)(svelte@5.28.2)(typescript@5.8.3):
1024 | dependencies:
1025 | '@jridgewell/trace-mapping': 0.3.25
1026 | chokidar: 4.0.3
1027 | fdir: 6.4.4(picomatch@4.0.2)
1028 | picocolors: 1.1.1
1029 | sade: 1.8.1
1030 | svelte: 5.28.2
1031 | typescript: 5.8.3
1032 | transitivePeerDependencies:
1033 | - picomatch
1034 |
1035 | svelte2tsx@0.7.37(svelte@5.28.2)(typescript@5.8.3):
1036 | dependencies:
1037 | dedent-js: 1.0.1
1038 | pascal-case: 3.1.2
1039 | svelte: 5.28.2
1040 | typescript: 5.8.3
1041 |
1042 | svelte@5.28.2:
1043 | dependencies:
1044 | '@ampproject/remapping': 2.3.0
1045 | '@jridgewell/sourcemap-codec': 1.5.0
1046 | '@sveltejs/acorn-typescript': 1.0.5(acorn@8.14.1)
1047 | '@types/estree': 1.0.7
1048 | acorn: 8.14.1
1049 | aria-query: 5.3.2
1050 | axobject-query: 4.1.0
1051 | clsx: 2.1.1
1052 | esm-env: 1.2.2
1053 | esrap: 1.4.6
1054 | is-reference: 3.0.3
1055 | locate-character: 3.0.0
1056 | magic-string: 0.30.17
1057 | zimmerframe: 1.1.2
1058 |
1059 | tinyglobby@0.2.13:
1060 | dependencies:
1061 | fdir: 6.4.4(picomatch@4.0.2)
1062 | picomatch: 4.0.2
1063 |
1064 | totalist@3.0.1: {}
1065 |
1066 | tslib@2.8.1: {}
1067 |
1068 | typescript@5.8.3: {}
1069 |
1070 | vite@6.3.4:
1071 | dependencies:
1072 | esbuild: 0.25.3
1073 | fdir: 6.4.4(picomatch@4.0.2)
1074 | picomatch: 4.0.2
1075 | postcss: 8.5.3
1076 | rollup: 4.40.1
1077 | tinyglobby: 0.2.13
1078 | optionalDependencies:
1079 | fsevents: 2.3.3
1080 |
1081 | vitefu@1.0.6(vite@6.3.4):
1082 | optionalDependencies:
1083 | vite: 6.3.4
1084 |
1085 | zimmerframe@1.1.2: {}
1086 |
--------------------------------------------------------------------------------
/src/app.d.ts:
--------------------------------------------------------------------------------
1 | // See https://svelte.dev/docs/kit/types#app.d.ts
2 | // for information about these interfaces
3 | declare global {
4 | namespace App {
5 | // interface Error {}
6 | // interface Locals {}
7 | // interface PageData {}
8 | // interface PageState {}
9 | // interface Platform {}
10 | }
11 | }
12 |
13 | export {};
14 |
--------------------------------------------------------------------------------
/src/app.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | %sveltekit.head%
8 |
9 |
10 | %sveltekit.body%
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/lib/svelte-textcircle/index.ts:
--------------------------------------------------------------------------------
1 | import type { Snippet } from 'svelte';
2 | import Textcircle from './textcircle.svelte';
3 |
4 | type TextcircleProps = {
5 | class?: string;
6 | text: string[];
7 | options?: TextcircleOptions;
8 | animation?: TextcircleAnimation;
9 | children?: Snippet;
10 | };
11 |
12 | type TextcircleOptions = {
13 | circlesize?: '250px' | '300px' | string | null | undefined;
14 | textTransform?: 'uppercase' | 'lowercase' | 'none' | null | undefined;
15 | fontSize?: '1em' | '1.5em' | '1rem' | string | null | undefined;
16 | fontWeight?: 'lighter' | 'normal' | 'bold' | 'bolder' | null | undefined;
17 | divider?: string | null | undefined;
18 | dividerColor?: string | null | undefined;
19 | rotate?: number | null | undefined;
20 | };
21 |
22 | type TextcircleAnimation = {
23 | duration?: string | null | undefined;
24 | easing?: 'ease' | 'ease-in' | 'ease-out' | 'ease-in-out' | 'linear' | string | null | undefined;
25 | delay?: string | null | undefined;
26 | direction?: 'normal' | 'reverse' | null | undefined;
27 | count?: 'infinite' | number | null | undefined;
28 | animateOnHover?: boolean | null | undefined;
29 | stopAnimateOnHover?: boolean | null | undefined;
30 | animateInView?: boolean | null | undefined;
31 | };
32 |
33 | export { Textcircle, type TextcircleProps, type TextcircleAnimation, type TextcircleOptions };
34 |
--------------------------------------------------------------------------------
/src/lib/svelte-textcircle/textcircle.svelte:
--------------------------------------------------------------------------------
1 |
60 |
61 |
73 |
86 | {text.join(' ')}
87 | {#each textArray as char, idx}
88 | {#if char === ' '}
89 |
94 |
95 |
96 | {:else if char === divider?.trim()}
97 |
102 | {@html char}
103 |
104 | {:else}
105 |
110 | {char}
111 |
112 | {/if}
113 | {/each}
114 |
115 |
116 | {#if children}
117 |
118 | {@render children()}
119 |
120 | {/if}
121 |
122 |
123 |
217 |
--------------------------------------------------------------------------------
/src/routes/+page.svelte:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 | Basic Usage
8 | Display an array of words in a simple circular layout with default settings.
9 |
10 |
11 |
12 |
13 |
14 | Custom Options
15 | Adjust size, typography, divider, and initial rotation for unique styles.
16 |
28 |
29 |
30 |
31 |
32 | Animation on hover
33 | Fine-tune animation duration, easing, delay, direction, and iteration count.
34 |
45 |
46 |
47 |
48 |
49 | Stop Animation on Hover
50 | Pause the ongoing animation when the user hovers over the component.
51 |
58 |
59 |
60 |
61 |
62 | Central Content
63 | Embed custom content like images or icons in the circle’s center.
64 |
65 |
70 |
71 |
72 |
73 |
125 |
--------------------------------------------------------------------------------
/static/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LoStis-World/svelte-textcircle/c80daff6e8f2bc4de692da80390ca6ba88d99bab/static/favicon.png
--------------------------------------------------------------------------------
/svelte.config.js:
--------------------------------------------------------------------------------
1 | import adapter from '@sveltejs/adapter-auto';
2 | import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
3 |
4 | /** @type {import('@sveltejs/kit').Config} */
5 | const config = {
6 | // Consult https://svelte.dev/docs/kit/integrations
7 | // for more information about preprocessors
8 | preprocess: vitePreprocess(),
9 |
10 | kit: {
11 | // adapter-auto only supports some environments, see https://svelte.dev/docs/kit/adapter-auto for a list.
12 | // If your environment is not supported, or you settled on a specific environment, switch out the adapter.
13 | // See https://svelte.dev/docs/kit/adapters for more information about adapters.
14 | adapter: adapter()
15 | }
16 | };
17 |
18 | export default config;
19 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./.svelte-kit/tsconfig.json",
3 | "compilerOptions": {
4 | "allowJs": true,
5 | "checkJs": true,
6 | "esModuleInterop": true,
7 | "forceConsistentCasingInFileNames": true,
8 | "resolveJsonModule": true,
9 | "skipLibCheck": true,
10 | "sourceMap": true,
11 | "strict": true,
12 | "module": "NodeNext",
13 | "moduleResolution": "NodeNext"
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { sveltekit } from '@sveltejs/kit/vite';
2 | import { defineConfig } from 'vite';
3 |
4 | export default defineConfig({
5 | plugins: [sveltekit()]
6 | });
7 |
--------------------------------------------------------------------------------