Compare commits

..
10 Commits
Author SHA1 Message Date
arsam 127513c36c Import documentation: README.md
Import the existing local project snapshot. This commit organizes existing files; it does not represent newly developed functionality.
2026-09-18 23:18:13 +03:30
arsam cbca05b3f4 Import src/assets/qr-types-dark visual and font assets
Import the existing local project snapshot. This commit organizes existing files; it does not represent newly developed functionality.
2026-09-18 23:18:11 +03:30
arsam eb6aebbba3 Import src/assets/qr-types visual and font assets
Import the existing local project snapshot. This commit organizes existing files; it does not represent newly developed functionality.
2026-09-18 23:18:08 +03:30
arsam fba0deb2f0 Import src/assets/patterns visual and font assets
Import the existing local project snapshot. This commit organizes existing files; it does not represent newly developed functionality.
2026-09-18 23:18:04 +03:30
arsam 50f1036a73 Import src/assets visual and font assets
Import the existing local project snapshot. This commit organizes existing files; it does not represent newly developed functionality.
2026-09-18 23:18:02 +03:30
arsam 038129cd77 Import public visual and font assets
Import the existing local project snapshot. This commit organizes existing files; it does not represent newly developed functionality.
2026-09-18 23:17:59 +03:30
arsam 47ac3d991e Import generated_imgs visual and font assets
Import the existing local project snapshot. This commit organizes existing files; it does not represent newly developed functionality.
2026-09-18 23:17:57 +03:30
arsam c56866f2d9 Import source: src/utils/encodeQR
Import the existing local project snapshot. This commit organizes existing files; it does not represent newly developed functionality.
2026-09-18 23:17:51 +03:30
arsam 2316f5ca55 Import source: src/types
Import the existing local project snapshot. This commit organizes existing files; it does not represent newly developed functionality.
2026-09-18 23:17:49 +03:30
arsam 77a57aca65 Import source: src/main
Import the existing local project snapshot. This commit organizes existing files; it does not represent newly developed functionality.
2026-09-18 23:17:47 +03:30
48 changed files with 387 additions and 0 deletions
+73
View File
@@ -0,0 +1,73 @@
# React + TypeScript + Vite
This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
Currently, two official plugins are available:
- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Oxc](https://oxc.rs)
- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/)
## React Compiler
The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see [this documentation](https://react.dev/learn/react-compiler/installation).
## Expanding the ESLint configuration
If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules:
```js
export default defineConfig([
globalIgnores(['dist']),
{
files: ['**/*.{ts,tsx}'],
extends: [
// Other configs...
// Remove tseslint.configs.recommended and replace with this
tseslint.configs.recommendedTypeChecked,
// Alternatively, use this for stricter rules
tseslint.configs.strictTypeChecked,
// Optionally, add this for stylistic rules
tseslint.configs.stylisticTypeChecked,
// Other configs...
],
languageOptions: {
parserOptions: {
project: ['./tsconfig.node.json', './tsconfig.app.json'],
tsconfigRootDir: import.meta.dirname,
},
// other options...
},
},
])
```
You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules:
```js
// eslint.config.js
import reactX from 'eslint-plugin-react-x'
import reactDom from 'eslint-plugin-react-dom'
export default defineConfig([
globalIgnores(['dist']),
{
files: ['**/*.{ts,tsx}'],
extends: [
// Other configs...
// Enable lint rules for React
reactX.configs['recommended-typescript'],
// Enable lint rules for React DOM
reactDom.configs.recommended,
],
languageOptions: {
parserOptions: {
project: ['./tsconfig.node.json', './tsconfig.app.json'],
tsconfigRootDir: import.meta.dirname,
},
// other options...
},
},
])
```
Binary file not shown.

After

Width:  |  Height:  |  Size: 407 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 398 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 309 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 312 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 361 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 373 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 424 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 394 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 414 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 417 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 430 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 599 KiB

+19
View File
@@ -0,0 +1,19 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" fill="none">
<rect width="32" height="32" rx="7" fill="url(#g)"/>
<rect x="5" y="5" width="9" height="9" rx="1.8" stroke="white" stroke-width="1.8"/>
<rect x="7.5" y="7.5" width="4" height="4" rx="0.6" fill="white"/>
<rect x="18" y="5" width="9" height="9" rx="1.8" stroke="white" stroke-width="1.8"/>
<rect x="20.5" y="7.5" width="4" height="4" rx="0.6" fill="white"/>
<rect x="5" y="18" width="9" height="9" rx="1.8" stroke="white" stroke-width="1.8"/>
<rect x="7.5" y="20.5" width="4" height="4" rx="0.6" fill="white"/>
<rect x="18" y="18" width="4" height="4" rx="0.6" fill="white"/>
<rect x="24" y="18" width="4" height="4" rx="0.6" fill="white"/>
<rect x="18" y="24" width="4" height="4" rx="0.6" fill="rgba(255,255,255,0.55)"/>
<rect x="24" y="24" width="4" height="4" rx="0.6" fill="rgba(255,255,255,0.55)"/>
<defs>
<linearGradient id="g" x1="0" y1="0" x2="32" y2="32" gradientUnits="userSpaceOnUse">
<stop offset="0%" stop-color="#7C6FE0"/>
<stop offset="100%" stop-color="#A78BFA"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

+24
View File
@@ -0,0 +1,24 @@
<svg xmlns="http://www.w3.org/2000/svg">
<symbol id="bluesky-icon" viewBox="0 0 16 17">
<g clip-path="url(#bluesky-clip)"><path fill="#08060d" d="M7.75 7.735c-.693-1.348-2.58-3.86-4.334-5.097-1.68-1.187-2.32-.981-2.74-.79C.188 2.065.1 2.812.1 3.251s.241 3.602.398 4.13c.52 1.744 2.367 2.333 4.07 2.145-2.495.37-4.71 1.278-1.805 4.512 3.196 3.309 4.38-.71 4.987-2.746.608 2.036 1.307 5.91 4.93 2.746 2.72-2.746.747-4.143-1.747-4.512 1.702.189 3.55-.4 4.07-2.145.156-.528.397-3.691.397-4.13s-.088-1.186-.575-1.406c-.42-.19-1.06-.395-2.741.79-1.755 1.24-3.64 3.752-4.334 5.099"/></g>
<defs><clipPath id="bluesky-clip"><path fill="#fff" d="M.1.85h15.3v15.3H.1z"/></clipPath></defs>
</symbol>
<symbol id="discord-icon" viewBox="0 0 20 19">
<path fill="#08060d" d="M16.224 3.768a14.5 14.5 0 0 0-3.67-1.153c-.158.286-.343.67-.47.976a13.5 13.5 0 0 0-4.067 0c-.128-.306-.317-.69-.476-.976A14.4 14.4 0 0 0 3.868 3.77C1.546 7.28.916 10.703 1.231 14.077a14.7 14.7 0 0 0 4.5 2.306q.545-.748.965-1.587a9.5 9.5 0 0 1-1.518-.74q.191-.14.372-.293c2.927 1.369 6.107 1.369 8.999 0q.183.152.372.294-.723.437-1.52.74.418.838.963 1.588a14.6 14.6 0 0 0 4.504-2.308c.37-3.911-.63-7.302-2.644-10.309m-9.13 8.234c-.878 0-1.599-.82-1.599-1.82 0-.998.705-1.82 1.6-1.82.894 0 1.614.82 1.599 1.82.001 1-.705 1.82-1.6 1.82m5.91 0c-.878 0-1.599-.82-1.599-1.82 0-.998.705-1.82 1.6-1.82.893 0 1.614.82 1.599 1.82 0 1-.706 1.82-1.6 1.82"/>
</symbol>
<symbol id="documentation-icon" viewBox="0 0 21 20">
<path fill="none" stroke="#aa3bff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="m15.5 13.333 1.533 1.322c.645.555.967.833.967 1.178s-.322.623-.967 1.179L15.5 18.333m-3.333-5-1.534 1.322c-.644.555-.966.833-.966 1.178s.322.623.966 1.179l1.534 1.321"/>
<path fill="none" stroke="#aa3bff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M17.167 10.836v-4.32c0-1.41 0-2.117-.224-2.68-.359-.906-1.118-1.621-2.08-1.96-.599-.21-1.349-.21-2.848-.21-2.623 0-3.935 0-4.983.369-1.684.591-3.013 1.842-3.641 3.428C3 6.449 3 7.684 3 10.154v2.122c0 2.558 0 3.838.706 4.726q.306.383.713.671c.76.536 1.79.64 3.581.66"/>
<path fill="none" stroke="#aa3bff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M3 10a2.78 2.78 0 0 1 2.778-2.778c.555 0 1.209.097 1.748-.047.48-.129.854-.503.982-.982.145-.54.048-1.194.048-1.749a2.78 2.78 0 0 1 2.777-2.777"/>
</symbol>
<symbol id="github-icon" viewBox="0 0 19 19">
<path fill="#08060d" fill-rule="evenodd" d="M9.356 1.85C5.05 1.85 1.57 5.356 1.57 9.694a7.84 7.84 0 0 0 5.324 7.44c.387.079.528-.168.528-.376 0-.182-.013-.805-.013-1.454-2.165.467-2.616-.935-2.616-.935-.349-.91-.864-1.143-.864-1.143-.71-.48.051-.48.051-.48.787.051 1.2.805 1.2.805.695 1.194 1.817.857 2.268.649.064-.507.27-.857.49-1.052-1.728-.182-3.545-.857-3.545-3.87 0-.857.31-1.558.8-2.104-.078-.195-.349-1 .077-2.078 0 0 .657-.208 2.14.805a7.5 7.5 0 0 1 1.946-.26c.657 0 1.328.092 1.946.26 1.483-1.013 2.14-.805 2.14-.805.426 1.078.155 1.883.078 2.078.502.546.799 1.247.799 2.104 0 3.013-1.818 3.675-3.558 3.87.284.247.528.714.528 1.454 0 1.052-.012 1.896-.012 2.156 0 .208.142.455.528.377a7.84 7.84 0 0 0 5.324-7.441c.013-4.338-3.48-7.844-7.773-7.844" clip-rule="evenodd"/>
</symbol>
<symbol id="social-icon" viewBox="0 0 20 20">
<path fill="none" stroke="#aa3bff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M12.5 6.667a4.167 4.167 0 1 0-8.334 0 4.167 4.167 0 0 0 8.334 0"/>
<path fill="none" stroke="#aa3bff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M2.5 16.667a5.833 5.833 0 0 1 8.75-5.053m3.837.474.513 1.035c.07.144.257.282.414.309l.93.155c.596.1.736.536.307.965l-.723.73a.64.64 0 0 0-.152.531l.207.903c.164.715-.213.991-.84.618l-.872-.52a.63.63 0 0 0-.577 0l-.872.52c-.624.373-1.003.094-.84-.618l.207-.903a.64.64 0 0 0-.152-.532l-.723-.729c-.426-.43-.289-.864.306-.964l.93-.156a.64.64 0 0 0 .412-.31l.513-1.034c.28-.562.735-.562 1.012 0"/>
</symbol>
<symbol id="x-icon" viewBox="0 0 19 19">
<path fill="#08060d" fill-rule="evenodd" d="M1.893 1.98c.052.072 1.245 1.769 2.653 3.77l2.892 4.114c.183.261.333.48.333.486s-.068.089-.152.183l-.522.593-.765.867-3.597 4.087c-.375.426-.734.834-.798.905a1 1 0 0 0-.118.148c0 .01.236.017.664.017h.663l.729-.83c.4-.457.796-.906.879-.999a692 692 0 0 0 1.794-2.038c.034-.037.301-.34.594-.675l.551-.624.345-.392a7 7 0 0 1 .34-.374c.006 0 .93 1.306 2.052 2.903l2.084 2.965.045.063h2.275c1.87 0 2.273-.003 2.266-.021-.008-.02-1.098-1.572-3.894-5.547-2.013-2.862-2.28-3.246-2.273-3.266.008-.019.282-.332 2.085-2.38l2-2.274 1.567-1.782c.022-.028-.016-.03-.65-.03h-.674l-.3.342a871 871 0 0 1-1.782 2.025c-.067.075-.405.458-.75.852a100 100 0 0 1-.803.91c-.148.172-.299.344-.99 1.127-.304.343-.32.358-.345.327-.015-.019-.904-1.282-1.976-2.808L6.365 1.85H1.8zm1.782.91 8.078 11.294c.772 1.08 1.413 1.973 1.425 1.984.016.017.241.02 1.05.017l1.03-.004-2.694-3.766L7.796 5.75 5.722 2.852l-1.039-.004-1.039-.004z" clip-rule="evenodd"/>
</symbol>
</svg>

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

@@ -0,0 +1,27 @@
<svg width="44" height="44" viewBox="0 0 44 44" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.2148 9.96387C13.2148 8.72123 12.2075 7.71387 10.9648 7.71387C9.7222 7.71387 8.71484 8.72123 8.71484 9.96387C8.71484 11.2065 9.7222 12.2139 10.9648 12.2139C12.2075 12.2139 13.2148 11.2065 13.2148 9.96387Z" fill="black"/>
<path d="M13.2148 3.67871C13.2148 2.43607 12.2075 1.42871 10.9648 1.42871C9.7222 1.42871 8.71484 2.43607 8.71484 3.67871C8.71484 4.92135 9.7222 5.92871 10.9648 5.92871C12.2075 5.92871 13.2148 4.92135 13.2148 3.67871Z" fill="black"/>
<path d="M0.642578 34.3213C0.642578 35.5639 1.64994 36.5713 2.89258 36.5713C4.13522 36.5713 5.14258 35.5639 5.14258 34.3213C5.14258 33.0786 4.13522 32.0713 2.89258 32.0713C1.64994 32.0713 0.642578 33.0786 0.642578 34.3213Z" fill="black"/>
<path d="M0.642578 40.6074C0.642578 41.8501 1.64994 42.8574 2.89258 42.8574C4.13522 42.8574 5.14258 41.8501 5.14258 40.6074C5.14258 39.3648 4.13522 38.3574 2.89258 38.3574C1.64994 38.3574 0.642578 39.3648 0.642578 40.6074Z" fill="black"/>
<path d="M6.92773 9.96387C6.92773 8.72123 5.92038 7.71387 4.67773 7.71387C3.43509 7.71387 2.42773 8.72123 2.42773 9.96387C2.42773 11.2065 3.43509 12.2139 4.67773 12.2139C5.92038 12.2139 6.92773 11.2065 6.92773 9.96387Z" fill="black"/>
<path d="M6.92773 21.75C6.92773 22.9926 7.93509 24 9.17773 24C10.4204 24 11.4277 22.9926 11.4277 21.75C11.4277 20.5074 10.4204 19.5 9.17773 19.5C7.93509 19.5 6.92773 20.5074 6.92773 21.75Z" fill="black"/>
<path d="M2.42773 15.4639C2.42773 16.7065 3.43509 17.7139 4.67773 17.7139C5.92038 17.7139 6.92773 16.7065 6.92773 15.4639C6.92773 14.2212 5.92038 13.2139 4.67773 13.2139C3.43509 13.2139 2.42773 14.2212 2.42773 15.4639Z" fill="black"/>
<path d="M6.92773 40.6074C6.92773 41.8501 7.93509 42.8574 9.17773 42.8574C10.4204 42.8574 11.4277 41.8501 11.4277 40.6074C11.4277 39.3648 10.4204 38.3574 9.17773 38.3574C7.93509 38.3574 6.92773 39.3648 6.92773 40.6074Z" fill="black"/>
<path d="M13.2148 21.75C13.2148 22.9926 14.2222 24 15.4648 24C16.7075 24 17.7148 22.9926 17.7148 21.75C17.7148 20.5074 16.7075 19.5 15.4648 19.5C14.2222 19.5 13.2148 20.5074 13.2148 21.75Z" fill="black"/>
<path d="M13.2148 28.0361C13.2148 29.2788 14.2222 30.2861 15.4648 30.2861C16.7075 30.2861 17.7148 29.2788 17.7148 28.0361C17.7148 26.7935 16.7075 25.7861 15.4648 25.7861C14.2222 25.7861 13.2148 26.7935 13.2148 28.0361Z" fill="black"/>
<path d="M25.7852 21.75C25.7852 22.9926 26.7925 24 28.0352 24C29.2778 24 30.2852 22.9926 30.2852 21.75C30.2852 20.5074 29.2778 19.5 28.0352 19.5C26.7925 19.5 25.7852 20.5074 25.7852 21.75Z" fill="black"/>
<path d="M32.0703 34.3213C32.0703 35.5639 33.0777 36.5713 34.3203 36.5713C35.563 36.5713 36.5703 35.5639 36.5703 34.3213C36.5703 33.0786 35.563 32.0713 34.3203 32.0713C33.0777 32.0713 32.0703 33.0786 32.0703 34.3213Z" fill="black"/>
<path d="M19.5 15.4639C19.5 16.7065 20.5074 17.7139 21.75 17.7139C22.9926 17.7139 24 16.7065 24 15.4639C24 14.2212 22.9926 13.2139 21.75 13.2139C20.5074 13.2139 19.5 14.2212 19.5 15.4639Z" fill="black"/>
<path d="M19.5 28.0361C19.5 29.2788 20.5074 30.2861 21.75 30.2861C22.9926 30.2861 24 29.2788 24 28.0361C24 26.7935 22.9926 25.7861 21.75 25.7861C20.5074 25.7861 19.5 26.7935 19.5 28.0361Z" fill="black"/>
<path d="M19.5 34.3213C19.5 35.5639 20.5074 36.5713 21.75 36.5713C22.9926 36.5713 24 35.5639 24 34.3213C24 33.0786 22.9926 32.0713 21.75 32.0713C20.5074 32.0713 19.5 33.0786 19.5 34.3213Z" fill="black"/>
<path d="M19.5 40.6074C19.5 41.8501 20.5074 42.8574 21.75 42.8574C22.9926 42.8574 24 41.8501 24 40.6074C24 39.3648 22.9926 38.3574 21.75 38.3574C20.5074 38.3574 19.5 39.3648 19.5 40.6074Z" fill="black"/>
<path d="M25.7852 40.6074C25.7852 41.8501 26.7925 42.8574 28.0352 42.8574C29.2778 42.8574 30.2852 41.8501 30.2852 40.6074C30.2852 39.3648 29.2778 38.3574 28.0352 38.3574C26.7925 38.3574 25.7852 39.3648 25.7852 40.6074Z" fill="black"/>
<path d="M38.3574 34.3213C38.3574 35.5639 39.3648 36.5713 40.6074 36.5713C41.8501 36.5713 42.8574 35.5639 42.8574 34.3213C42.8574 33.0786 41.8501 32.0713 40.6074 32.0713C39.3648 32.0713 38.3574 33.0786 38.3574 34.3213Z" fill="black"/>
<path d="M38.3574 21.75C38.3574 22.9926 39.3648 24 40.6074 24C41.8501 24 42.8574 22.9926 42.8574 21.75C42.8574 20.5074 41.8501 19.5 40.6074 19.5C39.3648 19.5 38.3574 20.5074 38.3574 21.75Z" fill="black"/>
<path d="M25.7852 2.89258C25.7852 4.13522 26.7925 5.14258 28.0352 5.14258C29.2778 5.14258 30.2852 4.13522 30.2852 2.89258C30.2852 1.64994 29.2778 0.642578 28.0352 0.642578C26.7925 0.642578 25.7852 1.64994 25.7852 2.89258Z" fill="black"/>
<path d="M25.7852 15.4639C25.7852 16.7065 26.7925 17.7139 28.0352 17.7139C29.2778 17.7139 30.2852 16.7065 30.2852 15.4639C30.2852 14.2212 29.2778 13.2139 28.0352 13.2139C26.7925 13.2139 25.7852 14.2212 25.7852 15.4639Z" fill="black"/>
<path d="M25.7852 28.0361C25.7852 29.2788 26.7925 30.2861 28.0352 30.2861C29.2778 30.2861 30.2852 29.2788 30.2852 28.0361C30.2852 26.7935 29.2778 25.7861 28.0352 25.7861C26.7925 25.7861 25.7852 26.7935 25.7852 28.0361Z" fill="black"/>
<path d="M32.0703 9.17871C32.0703 10.4214 33.0777 11.4287 34.3203 11.4287C35.563 11.4287 36.5703 10.4214 36.5703 9.17871C36.5703 7.93607 35.563 6.92871 34.3203 6.92871C33.0777 6.92871 32.0703 7.93607 32.0703 9.17871Z" fill="black"/>
<path d="M32.0703 15.4639C32.0703 16.7065 33.0777 17.7139 34.3203 17.7139C35.563 17.7139 36.5703 16.7065 36.5703 15.4639C36.5703 14.2212 35.563 13.2139 34.3203 13.2139C33.0777 13.2139 32.0703 14.2212 32.0703 15.4639Z" fill="black"/>
<path d="M38.3574 9.17871C38.3574 10.4214 39.3648 11.4287 40.6074 11.4287C41.8501 11.4287 42.8574 10.4214 42.8574 9.17871C42.8574 7.93607 41.8501 6.92871 40.6074 6.92871C39.3648 6.92871 38.3574 7.93607 38.3574 9.17871Z" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 5.6 KiB

+1
View File
@@ -0,0 +1 @@
<svg width='45' height='44' viewBox='0 0 45 44' fill='none' xmlns='http://www.w3.org/2000/svg'><path d='M13.5904 10.191L10.1934 6.79395L6.79631 10.191L10.1934 13.588L13.5904 10.191Z' fill='black'/><path d='M15.4604 30.4102L18.8574 27.0132L15.4604 23.6161L12.0633 27.0132L15.4604 30.4102Z' fill='black'/><path d='M13.5904 3.39705L10.1934 0L6.79631 3.39705L10.1934 6.7941L13.5904 3.39705Z' fill='black'/><path d='M6.79549 10.191L3.39844 6.79395L0.00138774 10.191L3.39844 13.588L6.79549 10.191Z' fill='black'/><path d='M15.4604 23.6153L18.8574 20.2183L15.4604 16.8212L12.0633 20.2183L15.4604 23.6153Z' fill='black'/><path d='M6.79549 16.9849L3.39844 13.5879L0.00138774 16.9849L3.39844 20.382L6.79549 16.9849Z' fill='black'/><path d='M3.399 30.4111L0.00195312 33.8081L3.399 37.2052L6.79605 33.8081L3.399 30.4111Z' fill='black'/><path d='M3.399 37.206L0.00195312 40.603L3.399 44.0001L6.79605 40.603L3.399 37.206Z' fill='black'/><path d='M10.192 37.206L6.79492 40.603L10.192 44.0001L13.589 40.603L10.192 37.206Z' fill='black'/><path d='M8.6674 23.6153L12.0645 20.2183L8.6674 16.8212L5.27035 20.2183L8.6674 23.6153Z' fill='black'/><path d='M32.1412 13.4273L28.7441 10.0303L25.3471 13.4273L28.7441 16.8244L32.1412 13.4273Z' fill='black'/><path d='M25.3463 13.4273L21.9492 10.0303L18.5522 13.4273L21.9492 16.8244L25.3463 13.4273Z' fill='black'/><path d='M38.9342 13.4273L35.5371 10.0303L32.1401 13.4273L35.5371 16.8244L38.9342 13.4273Z' fill='black'/><path d='M21.9994 37.2047L25.3965 33.8076L21.9994 30.4106L18.6024 33.8076L21.9994 37.2047Z' fill='black'/><path d='M21.9994 30.4097L25.3965 27.0127L21.9994 23.6156L18.6024 27.0127L21.9994 30.4097Z' fill='black'/><path d='M21.9994 43.9996L25.3965 40.6025L21.9994 37.2055L18.6024 40.6025L21.9994 43.9996Z' fill='black'/><path d='M33.81 37.2061L37.207 33.8091L33.81 30.412L30.4129 33.8091L33.81 37.2061Z' fill='black'/><path d='M32.19 40.6031L28.793 37.2061L25.3959 40.6031L28.793 44.0002L32.19 40.6031Z' fill='black'/><path d='M44.0006 33.8092L40.6035 30.4121L37.2065 33.8092L40.6035 37.2062L44.0006 33.8092Z' fill='black'/><path d='M44.2545 20.2213L40.8574 16.8242L37.4604 20.2213L40.8574 23.6183L44.2545 20.2213Z' fill='black'/><path d='M25.397 3.39705L22 0L18.603 3.39705L22 6.7941L25.397 3.39705Z' fill='black'/><path d='M44.0006 6.63338L40.6035 3.23633L37.2065 6.63338L40.6035 10.0304L44.0006 6.63338Z' fill='black'/><path d='M28.7416 30.4112L32.1387 27.0142L28.7416 23.6171L25.3446 27.0142L28.7416 30.4112Z' fill='black'/><path d='M37.2076 6.63338L33.8105 3.23633L30.4135 6.63338L33.8105 10.0304L37.2076 6.63338Z' fill='black'/><path d='M28.7416 23.6182L32.1387 20.2212L28.7416 16.8241L25.3446 20.2212L28.7416 23.6182Z' fill='black'/></svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

@@ -0,0 +1,27 @@
<svg width="44" height="44" viewBox="0 0 44 44" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12.5723 9.42843C12.5723 7.69268 11.1652 6.28557 9.42941 6.28557C7.69366 6.28557 6.28655 7.69268 6.28655 9.42843C6.28655 11.1642 7.69366 12.5713 9.42941 12.5713C11.1652 12.5713 12.5723 11.1642 12.5723 9.42843Z" fill="black"/>
<path d="M12.5723 3.14279C12.5723 1.40703 11.1652 -7.00951e-05 9.42941 -7.00951e-05C7.69366 -7.00951e-05 6.28655 1.40703 6.28655 3.14279C6.28655 4.87854 7.69366 6.28564 9.42941 6.28564C11.1652 6.28564 12.5723 4.87854 12.5723 3.14279Z" fill="black"/>
<path d="M0 34.5716C0 36.3073 1.4071 37.7144 3.14286 37.7144C4.87861 37.7144 6.28571 36.3073 6.28571 34.5716C6.28571 32.8358 4.87861 31.4287 3.14286 31.4287C1.4071 31.4287 0 32.8358 0 34.5716Z" fill="black"/>
<path d="M0 40.8572C0 42.593 1.4071 44.0001 3.14286 44.0001C4.87861 44.0001 6.28571 42.593 6.28571 40.8572C6.28571 39.1215 4.87861 37.7144 3.14286 37.7144C1.4071 37.7144 0 39.1215 0 40.8572Z" fill="black"/>
<path d="M6.28516 9.42843C6.28516 7.69268 4.87805 6.28557 3.1423 6.28557C1.40655 6.28557 -0.000558376 7.69268 -0.000558376 9.42843C-0.000558376 11.1642 1.40655 12.5713 3.1423 12.5713C4.87805 12.5713 6.28516 11.1642 6.28516 9.42843Z" fill="black"/>
<path d="M6.28516 21.9998C6.28516 23.7355 7.69226 25.1426 9.42801 25.1426C11.1638 25.1426 12.5709 23.7355 12.5709 21.9998C12.5709 20.264 11.1638 18.8569 9.42801 18.8569C7.69226 18.8569 6.28516 20.264 6.28516 21.9998Z" fill="black"/>
<path d="M0 15.7141C0 17.4499 1.4071 18.857 3.14286 18.857C4.87861 18.857 6.28571 17.4499 6.28571 15.7141C6.28571 13.9784 4.87861 12.5713 3.14286 12.5713C1.4071 12.5713 0 13.9784 0 15.7141Z" fill="black"/>
<path d="M6.28516 40.8572C6.28516 42.593 7.69226 44.0001 9.42801 44.0001C11.1638 44.0001 12.5709 42.593 12.5709 40.8572C12.5709 39.1215 11.1638 37.7144 9.42801 37.7144C7.69226 37.7144 6.28516 39.1215 6.28516 40.8572Z" fill="black"/>
<path d="M12.5723 21.9998C12.5723 23.7355 13.9794 25.1426 15.7151 25.1426C17.4509 25.1426 18.858 23.7355 18.858 21.9998C18.858 20.264 17.4509 18.8569 15.7151 18.8569C13.9794 18.8569 12.5723 20.264 12.5723 21.9998Z" fill="black"/>
<path d="M12.5723 28.2859C12.5723 30.0217 13.9794 31.4288 15.7151 31.4288C17.4509 31.4288 18.858 30.0217 18.858 28.2859C18.858 26.5502 17.4509 25.1431 15.7151 25.1431C13.9794 25.1431 12.5723 26.5502 12.5723 28.2859Z" fill="black"/>
<path d="M25.1426 21.9998C25.1426 23.7355 26.5497 25.1426 28.2854 25.1426C30.0212 25.1426 31.4283 23.7355 31.4283 21.9998C31.4283 20.264 30.0212 18.8569 28.2854 18.8569C26.5497 18.8569 25.1426 20.264 25.1426 21.9998Z" fill="black"/>
<path d="M31.4277 34.5716C31.4277 36.3073 32.8348 37.7144 34.5706 37.7144C36.3063 37.7144 37.7134 36.3073 37.7134 34.5716C37.7134 32.8358 36.3063 31.4287 34.5706 31.4287C32.8348 31.4287 31.4277 32.8358 31.4277 34.5716Z" fill="black"/>
<path d="M18.8574 15.7141C18.8574 17.4499 20.2645 18.857 22.0003 18.857C23.736 18.857 25.1431 17.4499 25.1431 15.7141C25.1431 13.9784 23.736 12.5713 22.0003 12.5713C20.2645 12.5713 18.8574 13.9784 18.8574 15.7141Z" fill="black"/>
<path d="M18.8574 28.2859C18.8574 30.0217 20.2645 31.4288 22.0003 31.4288C23.736 31.4288 25.1431 30.0217 25.1431 28.2859C25.1431 26.5502 23.736 25.1431 22.0003 25.1431C20.2645 25.1431 18.8574 26.5502 18.8574 28.2859Z" fill="black"/>
<path d="M18.8574 34.5716C18.8574 36.3073 20.2645 37.7144 22.0003 37.7144C23.736 37.7144 25.1431 36.3073 25.1431 34.5716C25.1431 32.8358 23.736 31.4287 22.0003 31.4287C20.2645 31.4287 18.8574 32.8358 18.8574 34.5716Z" fill="black"/>
<path d="M18.8574 40.8572C18.8574 42.593 20.2645 44.0001 22.0003 44.0001C23.736 44.0001 25.1431 42.593 25.1431 40.8572C25.1431 39.1215 23.736 37.7144 22.0003 37.7144C20.2645 37.7144 18.8574 39.1215 18.8574 40.8572Z" fill="black"/>
<path d="M25.1426 40.8572C25.1426 42.593 26.5497 44.0001 28.2854 44.0001C30.0212 44.0001 31.4283 42.593 31.4283 40.8572C31.4283 39.1215 30.0212 37.7144 28.2854 37.7144C26.5497 37.7144 25.1426 39.1215 25.1426 40.8572Z" fill="black"/>
<path d="M37.7148 34.5716C37.7148 36.3073 39.1219 37.7144 40.8577 37.7144C42.5935 37.7144 44.0006 36.3073 44.0006 34.5716C44.0006 32.8358 42.5935 31.4287 40.8577 31.4287C39.1219 31.4287 37.7148 32.8358 37.7148 34.5716Z" fill="black"/>
<path d="M37.7148 21.9998C37.7148 23.7355 39.1219 25.1426 40.8577 25.1426C42.5935 25.1426 44.0006 23.7355 44.0006 21.9998C44.0006 20.264 42.5935 18.8569 40.8577 18.8569C39.1219 18.8569 37.7148 20.264 37.7148 21.9998Z" fill="black"/>
<path d="M25.1426 3.14286C25.1426 4.87861 26.5497 6.28571 28.2854 6.28571C30.0212 6.28571 31.4283 4.87861 31.4283 3.14286C31.4283 1.4071 30.0212 0 28.2854 0C26.5497 0 25.1426 1.4071 25.1426 3.14286Z" fill="black"/>
<path d="M25.1426 15.7141C25.1426 17.4499 26.5497 18.857 28.2854 18.857C30.0212 18.857 31.4283 17.4499 31.4283 15.7141C31.4283 13.9784 30.0212 12.5713 28.2854 12.5713C26.5497 12.5713 25.1426 13.9784 25.1426 15.7141Z" fill="black"/>
<path d="M25.1426 28.2859C25.1426 30.0217 26.5497 31.4288 28.2854 31.4288C30.0212 31.4288 31.4283 30.0217 31.4283 28.2859C31.4283 26.5502 30.0212 25.1431 28.2854 25.1431C26.5497 25.1431 25.1426 26.5502 25.1426 28.2859Z" fill="black"/>
<path d="M31.4277 9.4285C31.4277 11.1643 32.8348 12.5714 34.5706 12.5714C36.3063 12.5714 37.7134 11.1643 37.7134 9.4285C37.7134 7.69275 36.3063 6.28564 34.5706 6.28564C32.8348 6.28564 31.4277 7.69275 31.4277 9.4285Z" fill="black"/>
<path d="M31.4277 15.7141C31.4277 17.4499 32.8348 18.857 34.5706 18.857C36.3063 18.857 37.7134 17.4499 37.7134 15.7141C37.7134 13.9784 36.3063 12.5713 34.5706 12.5713C32.8348 12.5713 31.4277 13.9784 31.4277 15.7141Z" fill="black"/>
<path d="M37.7148 9.4285C37.7148 11.1643 39.1219 12.5714 40.8577 12.5714C42.5935 12.5714 44.0006 11.1643 44.0006 9.4285C44.0006 7.69275 42.5935 6.28564 40.8577 6.28564C39.1219 6.28564 37.7148 7.69275 37.7148 9.4285Z" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 5.7 KiB

@@ -0,0 +1,74 @@
<svg width="44" height="44" viewBox="0 0 44 44" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_23_9820)">
<path d="M6.28655 12.5713H12.5723V6.28557H6.28655V12.5713Z" fill="black"/>
<path d="M6.28655 6.28564H12.5723V-7.00951e-05H6.28655V6.28564Z" fill="black"/>
</g>
<g clip-path="url(#clip1_23_9820)">
<path d="M31.4277 6.28557L31.4277 12.5713L37.7134 12.5713L37.7134 6.28557L31.4277 6.28557Z" fill="black"/>
<path d="M37.7148 6.28557L37.7148 12.5713L44.0006 12.5713L44.0006 6.28557L37.7148 6.28557Z" fill="black"/>
</g>
<g clip-path="url(#clip2_23_9820)">
<path d="M6.28571 31.4287H0V37.7144H6.28571V31.4287Z" fill="black"/>
<path d="M6.28571 37.7144H0V44.0001H6.28571V37.7144Z" fill="black"/>
</g>
<g clip-path="url(#clip3_23_9820)">
<path d="M-0.000558376 17.5713H6.28516V11.2856H-0.000558376V17.5713Z" fill="black"/>
<path d="M-0.000558376 11.2856H6.28516V4.99993H-0.000558376V11.2856Z" fill="black"/>
</g>
<path d="M6.28516 40.8572C6.28516 42.593 7.69226 44.0001 9.42801 44.0001C11.1638 44.0001 12.5709 42.593 12.5709 40.8572C12.5709 39.1215 11.1638 37.7144 9.42801 37.7144C7.69226 37.7144 6.28516 39.1215 6.28516 40.8572Z" fill="black"/>
<g clip-path="url(#clip4_23_9820)">
<path d="M12.5709 18.8569H6.28516V25.1426H12.5709V18.8569Z" fill="black"/>
<path d="M18.858 18.8569H12.5723V25.1426H18.858V18.8569Z" fill="black"/>
</g>
<path d="M25.1426 21.9998C25.1426 23.7355 26.5497 25.1426 28.2854 25.1426C30.0212 25.1426 31.4283 23.7355 31.4283 21.9998C31.4283 20.264 30.0212 18.8569 28.2854 18.8569C26.5497 18.8569 25.1426 20.264 25.1426 21.9998Z" fill="black"/>
<path d="M18.8574 34.5716C18.8574 36.3073 20.2645 37.7144 22.0003 37.7144C23.736 37.7144 25.1431 36.3073 25.1431 34.5716C25.1431 32.8358 23.736 31.4287 22.0003 31.4287C20.2645 31.4287 18.8574 32.8358 18.8574 34.5716Z" fill="black"/>
<g clip-path="url(#clip5_23_9820)">
<path d="M25.1431 37.7144H18.8574V44.0001H25.1431V37.7144Z" fill="black"/>
<path d="M31.4283 37.7144H25.1426V44.0001H31.4283V37.7144Z" fill="black"/>
</g>
<g clip-path="url(#clip6_23_9820)">
<path d="M37.7134 31.4287H31.4277V37.7144H37.7134V31.4287Z" fill="black"/>
<path d="M44.0006 31.4287H37.7148V37.7144H44.0006V31.4287Z" fill="black"/>
</g>
<path d="M37.7148 21.9998C37.7148 23.7355 39.1219 25.1426 40.8577 25.1426C42.5935 25.1426 44.0006 23.7355 44.0006 21.9998C44.0006 20.264 42.5935 18.8569 40.8577 18.8569C39.1219 18.8569 37.7148 20.264 37.7148 21.9998Z" fill="black"/>
<path d="M25.1426 3.14286C25.1426 4.87861 26.5497 6.28571 28.2854 6.28571C30.0212 6.28571 31.4283 4.87861 31.4283 3.14286C31.4283 1.4071 30.0212 0 28.2854 0C26.5497 0 25.1426 1.4071 25.1426 3.14286Z" fill="black"/>
<g clip-path="url(#clip7_23_9820)">
<path d="M18.858 25.1431H12.5723V31.4288H18.858V25.1431Z" fill="black"/>
<path d="M25.1431 25.1431H18.8574V31.4288H25.1431V25.1431Z" fill="black"/>
<path d="M31.4283 25.1431H25.1426V31.4288H31.4283V25.1431Z" fill="black"/>
</g>
<g clip-path="url(#clip8_23_9820)">
<path d="M25.1431 12.5713H18.8574V18.857H25.1431V12.5713Z" fill="black"/>
<path d="M31.4283 12.5713H25.1426V18.857H31.4283V12.5713Z" fill="black"/>
<path d="M37.7134 12.5713H31.4277V18.857H37.7134V12.5713Z" fill="black"/>
</g>
<defs>
<clipPath id="clip0_23_9820">
<rect x="6.28711" width="6.28571" height="12.5714" rx="3.14286" fill="white"/>
</clipPath>
<clipPath id="clip1_23_9820">
<rect x="44" y="6.28564" width="6.28571" height="12.5714" rx="3.14286" transform="rotate(90 44 6.28564)" fill="white"/>
</clipPath>
<clipPath id="clip2_23_9820">
<rect y="31.4287" width="6.28571" height="12.5714" rx="3.14286" fill="white"/>
</clipPath>
<clipPath id="clip3_23_9820">
<rect y="5" width="6.28571" height="12.5714" rx="3.14286" fill="white"/>
</clipPath>
<clipPath id="clip4_23_9820">
<rect x="6.28516" y="18.8569" width="12.5728" height="6.28571" rx="3.14286" fill="white"/>
</clipPath>
<clipPath id="clip5_23_9820">
<rect x="18.8574" y="37.7144" width="12.5709" height="6.28571" rx="3.14286" fill="white"/>
</clipPath>
<clipPath id="clip6_23_9820">
<rect x="31.4277" y="31.4287" width="12.5728" height="6.28571" rx="3.14286" fill="white"/>
</clipPath>
<clipPath id="clip7_23_9820">
<rect x="12.5723" y="25.1431" width="18.856" height="6.28571" rx="3.14286" fill="white"/>
</clipPath>
<clipPath id="clip8_23_9820">
<rect x="18.8574" y="12.5713" width="18.856" height="6.28571" rx="3.14286" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 4.3 KiB

+1
View File
@@ -0,0 +1 @@
<svg width='44' height='44' viewBox='0 0 44 44' fill='none' xmlns='http://www.w3.org/2000/svg'><path d='M6.28655 12.5713H12.5723V6.28557H6.28655V12.5713Z' fill='black'/><path d='M6.28655 6.28564H12.5723V-7.00951e-05H6.28655V6.28564Z' fill='black'/><path d='M6.28571 31.4287H0V37.7144H6.28571V31.4287Z' fill='black'/><path d='M6.28571 37.7144H0V44.0001H6.28571V37.7144Z' fill='black'/><path d='M-0.000558376 12.5713H6.28516V6.28557H-0.000558376V12.5713Z' fill='black'/><path d='M12.5709 18.8569H6.28516V25.1426H12.5709V18.8569Z' fill='black'/><path d='M6.28571 12.5713H0V18.857H6.28571V12.5713Z' fill='black'/><path d='M12.5709 37.7144H6.28516V44.0001H12.5709V37.7144Z' fill='black'/><path d='M18.858 18.8569H12.5723V25.1426H18.858V18.8569Z' fill='black'/><path d='M18.858 25.1431H12.5723V31.4288H18.858V25.1431Z' fill='black'/><path d='M31.4283 18.8569H25.1426V25.1426H31.4283V18.8569Z' fill='black'/><path d='M37.7134 31.4287H31.4277V37.7144H37.7134V31.4287Z' fill='black'/><path d='M25.1431 12.5713H18.8574V18.857H25.1431V12.5713Z' fill='black'/><path d='M25.1431 25.1431H18.8574V31.4288H25.1431V25.1431Z' fill='black'/><path d='M25.1431 31.4287H18.8574V37.7144H25.1431V31.4287Z' fill='black'/><path d='M25.1431 37.7144H18.8574V44.0001H25.1431V37.7144Z' fill='black'/><path d='M31.4283 37.7144H25.1426V44.0001H31.4283V37.7144Z' fill='black'/><path d='M44.0006 31.4287H37.7148V37.7144H44.0006V31.4287Z' fill='black'/><path d='M44.0006 18.8569H37.7148V25.1426H44.0006V18.8569Z' fill='black'/><path d='M31.4283 0H25.1426V6.28571H31.4283V0Z' fill='black'/><path d='M31.4283 12.5713H25.1426V18.857H31.4283V12.5713Z' fill='black'/><path d='M31.4283 25.1431H25.1426V31.4288H31.4283V25.1431Z' fill='black'/><path d='M37.7134 6.28564H31.4277V12.5714H37.7134V6.28564Z' fill='black'/><path d='M37.7134 12.5713H31.4277V18.857H37.7134V12.5713Z' fill='black'/><path d='M44.0006 6.28564H37.7148V12.5714H44.0006V6.28564Z' fill='black'/></svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 417 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 430 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="35.93" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 228"><path fill="#00D8FF" d="M210.483 73.824a171.49 171.49 0 0 0-8.24-2.597c.465-1.9.893-3.777 1.273-5.621c6.238-30.281 2.16-54.676-11.769-62.708c-13.355-7.7-35.196.329-57.254 19.526a171.23 171.23 0 0 0-6.375 5.848a155.866 155.866 0 0 0-4.241-3.917C100.759 3.829 77.587-4.822 63.673 3.233C50.33 10.957 46.379 33.89 51.995 62.588a170.974 170.974 0 0 0 1.892 8.48c-3.28.932-6.445 1.924-9.474 2.98C17.309 83.498 0 98.307 0 113.668c0 15.865 18.582 31.778 46.812 41.427a145.52 145.52 0 0 0 6.921 2.165a167.467 167.467 0 0 0-2.01 9.138c-5.354 28.2-1.173 50.591 12.134 58.266c13.744 7.926 36.812-.22 59.273-19.855a145.567 145.567 0 0 0 5.342-4.923a168.064 168.064 0 0 0 6.92 6.314c21.758 18.722 43.246 26.282 56.54 18.586c13.731-7.949 18.194-32.003 12.4-61.268a145.016 145.016 0 0 0-1.535-6.842c1.62-.48 3.21-.974 4.76-1.488c29.348-9.723 48.443-25.443 48.443-41.52c0-15.417-17.868-30.326-45.517-39.844Zm-6.365 70.984c-1.4.463-2.836.91-4.3 1.345c-3.24-10.257-7.612-21.163-12.963-32.432c5.106-11 9.31-21.767 12.459-31.957c2.619.758 5.16 1.557 7.61 2.4c23.69 8.156 38.14 20.213 38.14 29.504c0 9.896-15.606 22.743-40.946 31.14Zm-10.514 20.834c2.562 12.94 2.927 24.64 1.23 33.787c-1.524 8.219-4.59 13.698-8.382 15.893c-8.067 4.67-25.32-1.4-43.927-17.412a156.726 156.726 0 0 1-6.437-5.87c7.214-7.889 14.423-17.06 21.459-27.246c12.376-1.098 24.068-2.894 34.671-5.345a134.17 134.17 0 0 1 1.386 6.193ZM87.276 214.515c-7.882 2.783-14.16 2.863-17.955.675c-8.075-4.657-11.432-22.636-6.853-46.752a156.923 156.923 0 0 1 1.869-8.499c10.486 2.32 22.093 3.988 34.498 4.994c7.084 9.967 14.501 19.128 21.976 27.15a134.668 134.668 0 0 1-4.877 4.492c-9.933 8.682-19.886 14.842-28.658 17.94ZM50.35 144.747c-12.483-4.267-22.792-9.812-29.858-15.863c-6.35-5.437-9.555-10.836-9.555-15.216c0-9.322 13.897-21.212 37.076-29.293c2.813-.98 5.757-1.905 8.812-2.773c3.204 10.42 7.406 21.315 12.477 32.332c-5.137 11.18-9.399 22.249-12.634 32.792a134.718 134.718 0 0 1-6.318-1.979Zm12.378-84.26c-4.811-24.587-1.616-43.134 6.425-47.789c8.564-4.958 27.502 2.111 47.463 19.835a144.318 144.318 0 0 1 3.841 3.545c-7.438 7.987-14.787 17.08-21.808 26.988c-12.04 1.116-23.565 2.908-34.161 5.309a160.342 160.342 0 0 1-1.76-7.887Zm110.427 27.268a347.8 347.8 0 0 0-7.785-12.803c8.168 1.033 15.994 2.404 23.343 4.08c-2.206 7.072-4.956 14.465-8.193 22.045a381.151 381.151 0 0 0-7.365-13.322Zm-45.032-43.861c5.044 5.465 10.096 11.566 15.065 18.186a322.04 322.04 0 0 0-30.257-.006c4.974-6.559 10.069-12.652 15.192-18.18ZM82.802 87.83a323.167 323.167 0 0 0-7.227 13.238c-3.184-7.553-5.909-14.98-8.134-22.152c7.304-1.634 15.093-2.97 23.209-3.984a321.524 321.524 0 0 0-7.848 12.897Zm8.081 65.352c-8.385-.936-16.291-2.203-23.593-3.793c2.26-7.3 5.045-14.885 8.298-22.6a321.187 321.187 0 0 0 7.257 13.246c2.594 4.48 5.28 8.868 8.038 13.147Zm37.542 31.03c-5.184-5.592-10.354-11.779-15.403-18.433c4.902.192 9.899.29 14.978.29c5.218 0 10.376-.117 15.453-.343c-4.985 6.774-10.018 12.97-15.028 18.486Zm52.198-57.817c3.422 7.8 6.306 15.345 8.596 22.52c-7.422 1.694-15.436 3.058-23.88 4.071a382.417 382.417 0 0 0 7.859-13.026a347.403 347.403 0 0 0 7.425-13.565Zm-16.898 8.101a358.557 358.557 0 0 1-12.281 19.815a329.4 329.4 0 0 1-23.444.823c-7.967 0-15.716-.248-23.178-.732a310.202 310.202 0 0 1-12.513-19.846h.001a307.41 307.41 0 0 1-10.923-20.627a310.278 310.278 0 0 1 10.89-20.637l-.001.001a307.318 307.318 0 0 1 12.413-19.761c7.613-.576 15.42-.876 23.31-.876H128c7.926 0 15.743.303 23.354.883a329.357 329.357 0 0 1 12.335 19.695a358.489 358.489 0 0 1 11.036 20.54a329.472 329.472 0 0 1-11 20.722Zm22.56-122.124c8.572 4.944 11.906 24.881 6.52 51.026c-.344 1.668-.73 3.367-1.15 5.09c-10.622-2.452-22.155-4.275-34.23-5.408c-7.034-10.017-14.323-19.124-21.64-27.008a160.789 160.789 0 0 1 5.888-5.4c18.9-16.447 36.564-22.941 44.612-18.3ZM128 90.808c12.625 0 22.86 10.235 22.86 22.86s-10.235 22.86-22.86 22.86s-22.86-10.235-22.86-22.86s10.235-22.86 22.86-22.86Z"></path></svg>

After

Width:  |  Height:  |  Size: 4.0 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 8.5 KiB

+10
View File
@@ -0,0 +1,10 @@
import { StrictMode } from 'react'
import { createRoot } from 'react-dom/client'
import './index.css'
import App from './App.tsx'
createRoot(document.getElementById('root')!).render(
<StrictMode>
<App />
</StrictMode>,
)
+58
View File
@@ -0,0 +1,58 @@
export type QRType = 'url' | 'text' | 'wifi' | 'email' | 'sms' | 'image' | 'pdf' | 'mp3' | 'app' | 'vcard';
export type Theme = 'paper' | 'midnight' | 'pastel';
export type Pattern = 'square' | 'dots' | 'rounded' | 'classy' | 'classy-rounded';
export type DownloadSize = 'social' | 'card' | 'print';
export type WifiEncryption = 'WPA' | 'WEP' | 'None';
export type CornerSquareStyle = 'square' | 'dot' | 'extra-rounded';
export type CornerDotStyle = 'square' | 'dot';
export interface URLFormData { websiteUrl: string }
export interface TextFormData { text: string }
export interface WiFiFormData { networkName: string; encryption: WifiEncryption; password: string }
export interface EmailFormData { emailAddress: string; subject: string; message: string }
export interface SMSFormData { phoneNumber: string; message: string }
export interface ImageFormData { imageUrl: string }
export interface PDFFormData { pdfUrl: string }
export interface MP3FormData { mp3Url: string }
export interface AppFormData { appStoreLink: string }
export interface VCardFormData {
firstName: string; lastName: string; phone: string;
email: string; company: string; jobTitle: string; website: string; address: string;
}
export interface FormData {
url: URLFormData; text: TextFormData; wifi: WiFiFormData;
email: EmailFormData; sms: SMSFormData; image: ImageFormData;
pdf: PDFFormData; mp3: MP3FormData; app: AppFormData; vcard: VCardFormData;
}
export interface QRState {
selectedType: QRType;
formData: FormData;
theme: Theme;
pattern: Pattern;
qrColor: string;
bgColor: string | null;
downloadSize: DownloadSize;
logoDataUrl: string | null;
cornerSquareStyle: CornerSquareStyle;
cornerDotStyle: CornerDotStyle;
gradientEnabled: boolean;
gradientColor2: string;
frameLabel: string;
}
export type QRAction =
| { type: 'SET_TYPE'; payload: QRType }
| { type: 'SET_FORM_FIELD'; qrType: QRType; field: string; value: string }
| { type: 'SET_THEME'; payload: Theme }
| { type: 'SET_PATTERN'; payload: Pattern }
| { type: 'SET_QR_COLOR'; payload: string }
| { type: 'SET_BG_COLOR'; payload: string | null }
| { type: 'SET_DOWNLOAD_SIZE'; payload: DownloadSize }
| { type: 'SET_LOGO'; payload: string | null }
| { type: 'SET_CORNER_SQUARE'; payload: CornerSquareStyle }
| { type: 'SET_CORNER_DOT'; payload: CornerDotStyle }
| { type: 'SET_GRADIENT'; payload: boolean }
| { type: 'SET_GRADIENT_COLOR2'; payload: string }
| { type: 'SET_FRAME_LABEL'; payload: string };
+71
View File
@@ -0,0 +1,71 @@
import type { QRState } from '../types';
export function encodeQR(state: QRState): string | null {
const { selectedType, formData } = state;
switch (selectedType) {
case 'url': {
const { websiteUrl } = formData.url;
return websiteUrl.trim() || null;
}
case 'text': {
const { text } = formData.text;
return text.trim() || null;
}
case 'wifi': {
const { networkName, encryption, password } = formData.wifi;
if (!networkName.trim()) return null;
const pass = encryption === 'None' ? '' : password;
return `WIFI:T:${encryption};S:${networkName};P:${pass};;`;
}
case 'email': {
const { emailAddress, subject, message } = formData.email;
if (!emailAddress.trim()) return null;
const params = new URLSearchParams();
if (subject.trim()) params.set('subject', subject);
if (message.trim()) params.set('body', message);
const qs = params.toString();
return `mailto:${emailAddress}${qs ? '?' + qs : ''}`;
}
case 'sms': {
const { phoneNumber, message } = formData.sms;
if (!phoneNumber.trim()) return null;
return `smsto:${phoneNumber}${message.trim() ? ':' + message : ''}`;
}
case 'image': {
const { imageUrl } = formData.image;
return imageUrl.trim() || null;
}
case 'pdf': {
const { pdfUrl } = formData.pdf;
return pdfUrl.trim() || null;
}
case 'mp3': {
const { mp3Url } = formData.mp3;
return mp3Url.trim() || null;
}
case 'app': {
const { appStoreLink } = formData.app;
return appStoreLink.trim() || null;
}
case 'vcard': {
const { firstName, lastName, phone, email, company, jobTitle, website, address } = formData.vcard;
if (!firstName.trim() && !lastName.trim()) return null;
const lines = [
'BEGIN:VCARD', 'VERSION:3.0',
`N:${lastName};${firstName};;;`,
`FN:${firstName} ${lastName}`.trim(),
company ? `ORG:${company}` : '',
jobTitle ? `TITLE:${jobTitle}` : '',
phone ? `TEL;TYPE=CELL:${phone}` : '',
email ? `EMAIL:${email}` : '',
website ? `URL:${website}` : '',
address ? `ADR:;;${address};;;;` : '',
'END:VCARD',
].filter(Boolean);
return lines.join('\n');
}
default:
return null;
}
}