Compare commits
No commits in common. "main" and "main" have entirely different histories.
42
README.md
|
|
@ -15,8 +15,9 @@ A simple and user-friendly Matrix client made with Flutter and a Gomuks backend.
|
||||||
|
|
||||||
## Progress
|
## Progress
|
||||||
|
|
||||||
- [x] New logo
|
- [ ] New logo
|
||||||
- [x] Move from the Dart SDK to the Gomuks Backend with Dart bindings: https://git.federated.nexus/Nexus/nexus/pulls/2
|
- [ ] Make context menus appear as bottom sheets on mobile
|
||||||
|
- [x] Move from the Dart SDK to the Gomuks Backend with Dart bindings: https://git.federated.nexus/Henry-Hiles/nexus/pulls/2
|
||||||
- [ ] Allow using remote Gomuks over websocket
|
- [ ] Allow using remote Gomuks over websocket
|
||||||
- [ ] Platform Support
|
- [ ] Platform Support
|
||||||
- [x] Linux
|
- [x] Linux
|
||||||
|
|
@ -117,7 +118,6 @@ A simple and user-friendly Matrix client made with Flutter and a Gomuks backend.
|
||||||
- [ ] Matrix: URIs vs Matrix.to links
|
- [ ] Matrix: URIs vs Matrix.to links
|
||||||
- [ ] Light/Dark mode
|
- [ ] Light/Dark mode
|
||||||
- [ ] SSD or CSD
|
- [ ] SSD or CSD
|
||||||
- [ ] Align your message bubbles to left or right
|
|
||||||
- [ ] Show media by default
|
- [ ] Show media by default
|
||||||
- [ ] Dynamic Theming
|
- [ ] Dynamic Theming
|
||||||
- [ ] Devices
|
- [ ] Devices
|
||||||
|
|
@ -145,7 +145,7 @@ If you want to try out Nexus, grab one of the following artifacts from CI:
|
||||||
- [AArch64/Arm64](https://nightly.link/Henry-Hiles/nexus/workflows/flatpak/main/flatpak-aarch64.zip)
|
- [AArch64/Arm64](https://nightly.link/Henry-Hiles/nexus/workflows/flatpak/main/flatpak-aarch64.zip)
|
||||||
- [x86_64/AMD64](https://nightly.link/Henry-Hiles/nexus/workflows/flatpak/main/flatpak-x86_64.zip)
|
- [x86_64/AMD64](https://nightly.link/Henry-Hiles/nexus/workflows/flatpak/main/flatpak-x86_64.zip)
|
||||||
|
|
||||||
Or, try the Nix package: `nix run git+https://git.federated.nexus/Nexus/nexus`
|
Or, try the Nix package: `nix run git+https://git.federated.nexus/Henry-Hiles/nexus`
|
||||||
|
|
||||||
## Build it yourself
|
## Build it yourself
|
||||||
|
|
||||||
|
|
@ -156,39 +156,16 @@ Or, try the Nix package: `nix run git+https://git.federated.nexus/Nexus/nexus`
|
||||||
- With Nix: Either use direnv and `direnv allow`, or `nix flake develop`
|
- With Nix: Either use direnv and `direnv allow`, or `nix flake develop`
|
||||||
- Without Nix: Install Flutter, Go, Git, Libclang, and Glibc. Do not use any Snap packages, they cause various compilation issues.
|
- Without Nix: Install Flutter, Go, Git, Libclang, and Glibc. Do not use any Snap packages, they cause various compilation issues.
|
||||||
|
|
||||||
#### Windows
|
#### Windows / MacOS
|
||||||
|
|
||||||
You will need:
|
I don't really know. You will need Flutter, Git, Go, and Visual Studio tools, and otherwise I guess just keep installing stuff until there aren't any errors. I will look into this sometimeTM.
|
||||||
|
|
||||||
- Flutter
|
|
||||||
- Android SDK + NDK
|
|
||||||
- Git
|
|
||||||
- Go
|
|
||||||
- Visual Studio 2022 (Desktop development with C++)
|
|
||||||
- [MSYS2/MinGW-w64 GCC](https://www.msys2.org/) (for CGO)
|
|
||||||
- [LLVM/Clang + libclang](https://clang.llvm.org/get_started.html) (for `ffigen`)
|
|
||||||
|
|
||||||
On Windows, make sure these are available in your shell `PATH`:
|
|
||||||
|
|
||||||
- `C:\msys64\ucrt64\bin` (or your MinGW bin path containing `x86_64-w64-mingw32-gcc.exe`)
|
|
||||||
- `C:\Program Files\LLVM\bin` (contains `clang.exe` and `libclang.dll`)
|
|
||||||
|
|
||||||
For `dart scripts/generate.dart`, you may also need:
|
|
||||||
|
|
||||||
```powershell
|
|
||||||
$env:CPATH = "C:\msys64\ucrt64\include"
|
|
||||||
```
|
|
||||||
|
|
||||||
#### MacOS
|
|
||||||
|
|
||||||
Similar prerequisites apply (Flutter, Git, Go, C toolchain, LLVM/libclang), but exact setup has not been fully documented yet.
|
|
||||||
|
|
||||||
### Clone repo
|
### Clone repo
|
||||||
|
|
||||||
First, clone and open the repo:
|
First, clone and open the repo:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
git clone --recurse-submodules https://git.federated.nexus/Nexus/nexus
|
git clone --recurse-submodules https://git.federated.nexus/Henry-Hiles/nexus
|
||||||
cd nexus
|
cd nexus
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
@ -221,8 +198,3 @@ flutter run
|
||||||
## Community
|
## Community
|
||||||
|
|
||||||
Join the [Nexus Client Matrix Room](https://matrix.to/#/#nexus:federated.nexus) for questions or help with developing or using Nexus Client.
|
Join the [Nexus Client Matrix Room](https://matrix.to/#/#nexus:federated.nexus) for questions or help with developing or using Nexus Client.
|
||||||
|
|
||||||
# Credits
|
|
||||||
|
|
||||||
Thank you Hylke Bons (https://planetpeanut.studio) for making the amazing icon for Nexus!
|
|
||||||
Thank you Tulir Asokan for making [Gomuks](https://github.com/gomuks/gomuks), and helping us integrate it into Nexus!
|
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 6.8 KiB |
|
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 6.2 KiB |
|
Before Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 4 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 4.1 KiB |
|
Before Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 7.1 KiB After Width: | Height: | Size: 9.7 KiB |
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 8.4 KiB |
|
Before Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 7.4 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 5.9 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 8.2 KiB |
|
|
@ -6,9 +6,4 @@
|
||||||
android:drawable="@drawable/ic_launcher_foreground"
|
android:drawable="@drawable/ic_launcher_foreground"
|
||||||
android:inset="16%" />
|
android:inset="16%" />
|
||||||
</foreground>
|
</foreground>
|
||||||
<monochrome>
|
|
||||||
<inset
|
|
||||||
android:drawable="@drawable/ic_launcher_monochrome"
|
|
||||||
android:inset="16%" />
|
|
||||||
</monochrome>
|
|
||||||
</adaptive-icon>
|
</adaptive-icon>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 6.6 KiB |
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 4.1 KiB |
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 8.9 KiB |
|
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 9.8 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 41 KiB |
|
|
@ -1,22 +1,21 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
<svg
|
<svg
|
||||||
width="512"
|
width="100mm"
|
||||||
height="512"
|
height="100mm"
|
||||||
viewBox="0 0 512 512"
|
viewBox="0 0 100 100"
|
||||||
fill="none"
|
|
||||||
version="1.1"
|
version="1.1"
|
||||||
id="svg11"
|
id="svg1"
|
||||||
sodipodi:docname="background.svg"
|
xml:space="preserve"
|
||||||
inkscape:version="1.4.3 (0d15f75042, 2025-12-25)"
|
inkscape:version="1.4.3 (0d15f75042, 2025-12-25)"
|
||||||
inkscape:export-filename="background.png"
|
sodipodi:docname="background.svg"
|
||||||
inkscape:export-xdpi="96"
|
|
||||||
inkscape:export-ydpi="96"
|
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
xmlns:svg="http://www.w3.org/2000/svg">
|
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
|
||||||
<sodipodi:namedview
|
id="namedview1"
|
||||||
id="namedview11"
|
|
||||||
pagecolor="#505050"
|
pagecolor="#505050"
|
||||||
bordercolor="#eeeeee"
|
bordercolor="#eeeeee"
|
||||||
borderopacity="1"
|
borderopacity="1"
|
||||||
|
|
@ -24,234 +23,40 @@
|
||||||
inkscape:pageopacity="0"
|
inkscape:pageopacity="0"
|
||||||
inkscape:pagecheckerboard="0"
|
inkscape:pagecheckerboard="0"
|
||||||
inkscape:deskcolor="#505050"
|
inkscape:deskcolor="#505050"
|
||||||
inkscape:zoom="0.69191503"
|
inkscape:document-units="mm"
|
||||||
inkscape:cx="-71.540576"
|
inkscape:zoom="1.0847363"
|
||||||
inkscape:cy="281.10388"
|
inkscape:cx="57.156749"
|
||||||
inkscape:window-width="2544"
|
inkscape:cy="214.33781"
|
||||||
inkscape:window-height="1363"
|
inkscape:window-width="1904"
|
||||||
|
inkscape:window-height="971"
|
||||||
inkscape:window-x="35"
|
inkscape:window-x="35"
|
||||||
inkscape:window-y="32"
|
inkscape:window-y="32"
|
||||||
inkscape:window-maximized="0"
|
inkscape:window-maximized="0"
|
||||||
inkscape:current-layer="svg11" />
|
inkscape:current-layer="layer1" /><defs
|
||||||
<defs
|
id="defs1"><linearGradient
|
||||||
id="defs11">
|
id="linearGradient10"
|
||||||
<radialGradient
|
inkscape:collect="always"><stop
|
||||||
id="paint0_radial_4033_8"
|
style="stop-color:#c7a312;stop-opacity:1;"
|
||||||
cx="0"
|
offset="0"
|
||||||
cy="0"
|
id="stop10" /><stop
|
||||||
r="1"
|
style="stop-color:#26a0b3;stop-opacity:1;"
|
||||||
gradientTransform="matrix(3.5,24.5214,-15.8099,2.26053,80,52.9904)"
|
|
||||||
gradientUnits="userSpaceOnUse">
|
|
||||||
<stop
|
|
||||||
stop-color="#72AAEE"
|
|
||||||
id="stop10" />
|
|
||||||
<stop
|
|
||||||
offset="1"
|
offset="1"
|
||||||
stop-color="#3584E4"
|
id="stop11" /></linearGradient><linearGradient
|
||||||
id="stop11" />
|
inkscape:collect="always"
|
||||||
</radialGradient>
|
xlink:href="#linearGradient10"
|
||||||
<mask
|
id="linearGradient11"
|
||||||
id="mask0_4033_8"
|
x1="20.031296"
|
||||||
maskUnits="userSpaceOnUse"
|
y1="32.697563"
|
||||||
x="56"
|
x2="90.709213"
|
||||||
y="46"
|
y2="66.3423"
|
||||||
width="21"
|
gradientUnits="userSpaceOnUse" /></defs><g
|
||||||
height="36">
|
inkscape:label="Layer 1"
|
||||||
<path
|
inkscape:groupmode="layer"
|
||||||
d="m 76.4223,63.1501 c 0.3482,0.5123 0.3457,1.1859 -0.0063,1.6956 L 65.0175,81.3524 C 64.7375,81.7579 64.2761,82 63.7832,82 h -5.9804 c -1.1981,0 -1.9127,-1.3352 -1.2481,-2.332 l 9.8906,-14.8359 c 0.3359,-0.5039 0.3359,-1.1603 0,-1.6641 L 57.0729,49.1094 C 56.1869,47.7803 57.1396,46 58.737,46 h 5.2334 c 0.4967,0 0.9613,0.2459 1.2405,0.6568 z"
|
id="layer1"><rect
|
||||||
fill="#2779dd"
|
style="fill:url(#linearGradient11);fill-opacity:1;stroke:none;stroke-width:7.99999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||||
id="path9" />
|
id="rect10"
|
||||||
</mask>
|
width="100"
|
||||||
<clipPath
|
height="100"
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath11">
|
|
||||||
<rect
|
|
||||||
width="128"
|
|
||||||
height="128"
|
|
||||||
fill="#ffffff"
|
|
||||||
id="rect12"
|
|
||||||
x="0"
|
x="0"
|
||||||
y="0"
|
y="0"
|
||||||
transform="rotate(-30)" />
|
ry="28.294127" /></g></svg>
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath12">
|
|
||||||
<rect
|
|
||||||
width="128"
|
|
||||||
height="128"
|
|
||||||
fill="#ffffff"
|
|
||||||
id="rect13"
|
|
||||||
x="0"
|
|
||||||
y="0"
|
|
||||||
transform="rotate(-30)" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath13">
|
|
||||||
<rect
|
|
||||||
width="128"
|
|
||||||
height="128"
|
|
||||||
fill="#ffffff"
|
|
||||||
id="rect14"
|
|
||||||
x="0"
|
|
||||||
y="0"
|
|
||||||
transform="rotate(-30)" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath14">
|
|
||||||
<rect
|
|
||||||
width="128"
|
|
||||||
height="128"
|
|
||||||
fill="#ffffff"
|
|
||||||
id="rect15"
|
|
||||||
x="0"
|
|
||||||
y="0"
|
|
||||||
transform="rotate(-30)" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath15">
|
|
||||||
<rect
|
|
||||||
width="128"
|
|
||||||
height="128"
|
|
||||||
fill="#ffffff"
|
|
||||||
id="rect16"
|
|
||||||
x="0"
|
|
||||||
y="0"
|
|
||||||
transform="rotate(-30)" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath16">
|
|
||||||
<rect
|
|
||||||
width="128"
|
|
||||||
height="128"
|
|
||||||
fill="#ffffff"
|
|
||||||
id="rect17"
|
|
||||||
x="0"
|
|
||||||
y="0"
|
|
||||||
transform="rotate(-30)" />
|
|
||||||
</clipPath>
|
|
||||||
<radialGradient
|
|
||||||
id="paint0_radial_4033_8-3"
|
|
||||||
cx="0"
|
|
||||||
cy="0"
|
|
||||||
r="1"
|
|
||||||
gradientTransform="matrix(3.5,24.5214,-15.8099,2.26053,174.26633,65.9904)"
|
|
||||||
gradientUnits="userSpaceOnUse">
|
|
||||||
<stop
|
|
||||||
stop-color="#72AAEE"
|
|
||||||
id="stop10-6" />
|
|
||||||
<stop
|
|
||||||
offset="1"
|
|
||||||
stop-color="#3584E4"
|
|
||||||
id="stop11-7" />
|
|
||||||
</radialGradient>
|
|
||||||
<radialGradient
|
|
||||||
id="paint0_radial_4033_8-35"
|
|
||||||
cx="0"
|
|
||||||
cy="0"
|
|
||||||
r="1"
|
|
||||||
gradientTransform="matrix(3.5,24.5214,-15.8099,2.26053,80,52.9904)"
|
|
||||||
gradientUnits="userSpaceOnUse">
|
|
||||||
<stop
|
|
||||||
stop-color="#72AAEE"
|
|
||||||
id="stop10-62" />
|
|
||||||
<stop
|
|
||||||
offset="1"
|
|
||||||
stop-color="#3584E4"
|
|
||||||
id="stop11-9" />
|
|
||||||
</radialGradient>
|
|
||||||
<mask
|
|
||||||
id="mask0_4033_8-1"
|
|
||||||
maskUnits="userSpaceOnUse"
|
|
||||||
x="56"
|
|
||||||
y="46"
|
|
||||||
width="21"
|
|
||||||
height="36">
|
|
||||||
<path
|
|
||||||
d="m 76.4223,63.1501 c 0.3482,0.5123 0.3457,1.1859 -0.0063,1.6956 L 65.0175,81.3524 C 64.7375,81.7579 64.2761,82 63.7832,82 h -5.9804 c -1.1981,0 -1.9127,-1.3352 -1.2481,-2.332 l 9.8906,-14.8359 c 0.3359,-0.5039 0.3359,-1.1603 0,-1.6641 L 57.0729,49.1094 C 56.1869,47.7803 57.1396,46 58.737,46 h 5.2334 c 0.4967,0 0.9613,0.2459 1.2405,0.6568 z"
|
|
||||||
fill="#2779dd"
|
|
||||||
id="path9-2" />
|
|
||||||
</mask>
|
|
||||||
<radialGradient
|
|
||||||
id="paint0_radial_4033_8-9"
|
|
||||||
cx="0"
|
|
||||||
cy="0"
|
|
||||||
r="1"
|
|
||||||
gradientTransform="matrix(14,98.0856,-63.2396,9.04212,320,211.9616)"
|
|
||||||
gradientUnits="userSpaceOnUse">
|
|
||||||
<stop
|
|
||||||
stop-color="#72AAEE"
|
|
||||||
id="stop10-3" />
|
|
||||||
<stop
|
|
||||||
offset="1"
|
|
||||||
stop-color="#3584E4"
|
|
||||||
id="stop11-6" />
|
|
||||||
</radialGradient>
|
|
||||||
</defs>
|
|
||||||
<rect
|
|
||||||
width="512"
|
|
||||||
height="512"
|
|
||||||
fill="#ffffff"
|
|
||||||
id="rect1"
|
|
||||||
x="0"
|
|
||||||
y="0"
|
|
||||||
style="stroke-width:4" />
|
|
||||||
<rect
|
|
||||||
x="-1.5384758"
|
|
||||||
y="-122.66472"
|
|
||||||
width="35.5569"
|
|
||||||
height="291.86301"
|
|
||||||
transform="matrix(3.4641016,2,-2,3.4641016,0,0)"
|
|
||||||
fill="#9141ac"
|
|
||||||
id="rect2"
|
|
||||||
clip-path="url(#clipPath16)" />
|
|
||||||
<rect
|
|
||||||
x="34.018467"
|
|
||||||
y="-122.66468"
|
|
||||||
width="26.6677"
|
|
||||||
height="291.86301"
|
|
||||||
transform="matrix(3.4641016,2,-2,3.4641016,0,0)"
|
|
||||||
fill="#62a0ea"
|
|
||||||
id="rect3"
|
|
||||||
clip-path="url(#clipPath15)" />
|
|
||||||
<rect
|
|
||||||
x="60.68605"
|
|
||||||
y="-122.66468"
|
|
||||||
width="26.6677"
|
|
||||||
height="291.86301"
|
|
||||||
transform="matrix(3.4641016,2,-2,3.4641016,0,0)"
|
|
||||||
fill="#57e389"
|
|
||||||
id="rect4"
|
|
||||||
clip-path="url(#clipPath14)" />
|
|
||||||
<rect
|
|
||||||
x="87.353859"
|
|
||||||
y="-122.66468"
|
|
||||||
width="26.6677"
|
|
||||||
height="291.86301"
|
|
||||||
transform="matrix(3.4641016,2,-2,3.4641016,0,0)"
|
|
||||||
fill="#f5c211"
|
|
||||||
id="rect5"
|
|
||||||
clip-path="url(#clipPath13)" />
|
|
||||||
<rect
|
|
||||||
x="114.02161"
|
|
||||||
y="-122.66477"
|
|
||||||
width="26.6677"
|
|
||||||
height="291.86301"
|
|
||||||
transform="matrix(3.4641016,2,-2,3.4641016,0,0)"
|
|
||||||
fill="#ff7800"
|
|
||||||
id="rect6"
|
|
||||||
clip-path="url(#clipPath12)" />
|
|
||||||
<rect
|
|
||||||
x="140.68942"
|
|
||||||
y="-122.66477"
|
|
||||||
width="35.5569"
|
|
||||||
height="291.86301"
|
|
||||||
transform="matrix(3.4641016,2,-2,3.4641016,0,0)"
|
|
||||||
fill="#ed333b"
|
|
||||||
id="rect7"
|
|
||||||
clip-path="url(#clipPath11)" />
|
|
||||||
</svg>
|
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 6.7 KiB After Width: | Height: | Size: 2 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 45 KiB |
|
|
@ -1,19 +1,20 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
<svg
|
<svg
|
||||||
width="512"
|
width="100mm"
|
||||||
height="512"
|
height="100mm"
|
||||||
viewBox="0 0 512 512"
|
viewBox="0 0 100 100"
|
||||||
fill="none"
|
|
||||||
version="1.1"
|
version="1.1"
|
||||||
id="svg11"
|
id="svg1"
|
||||||
sodipodi:docname="foreground.svg"
|
xml:space="preserve"
|
||||||
inkscape:version="1.4.3 (0d15f75042, 2025-12-25)"
|
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
|
||||||
|
sodipodi:docname="nexus.svg"
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
xmlns:svg="http://www.w3.org/2000/svg">
|
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
|
||||||
<sodipodi:namedview
|
id="namedview1"
|
||||||
id="namedview11"
|
|
||||||
pagecolor="#505050"
|
pagecolor="#505050"
|
||||||
bordercolor="#eeeeee"
|
bordercolor="#eeeeee"
|
||||||
borderopacity="1"
|
borderopacity="1"
|
||||||
|
|
@ -21,137 +22,105 @@
|
||||||
inkscape:pageopacity="0"
|
inkscape:pageopacity="0"
|
||||||
inkscape:pagecheckerboard="0"
|
inkscape:pagecheckerboard="0"
|
||||||
inkscape:deskcolor="#505050"
|
inkscape:deskcolor="#505050"
|
||||||
inkscape:zoom="0.87695313"
|
inkscape:document-units="mm"
|
||||||
inkscape:cx="152.23163"
|
inkscape:zoom="1.0847363"
|
||||||
inkscape:cy="347.22494"
|
inkscape:cx="58.07863"
|
||||||
inkscape:window-width="2544"
|
inkscape:cy="214.3378"
|
||||||
inkscape:window-height="1363"
|
inkscape:window-width="1896"
|
||||||
|
inkscape:window-height="987"
|
||||||
inkscape:window-x="35"
|
inkscape:window-x="35"
|
||||||
inkscape:window-y="32"
|
inkscape:window-y="32"
|
||||||
inkscape:window-maximized="0"
|
inkscape:window-maximized="0"
|
||||||
inkscape:current-layer="svg11" />
|
inkscape:current-layer="layer1" /><defs
|
||||||
<path
|
id="defs1" /><g
|
||||||
d="m 256,92 c 90.5748,0 164,73.4252 164,164 0,90.5748 -73.4252,164 -164,164 -34.5828,0 -66.6592,-10.712 -93.1092,-28.9884 l -39.2072,8.7656 c -6.8668,1.5348 -12.9952,-4.594 -11.4608,-11.4608 l 8.7616,-39.2108 C 102.7104,322.6564 92,290.5808 92,256 92,165.4252 165.4252,92 256,92 Z"
|
inkscape:label="Layer 1"
|
||||||
fill="#ffffff"
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"><path
|
||||||
|
style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:8;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||||
|
d="M 19.377906,68.106953 80.937684,32.43771"
|
||||||
|
id="path10" /><path
|
||||||
|
style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:8;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||||
|
d="m 19.044488,32.469148 61.61782,35.569625"
|
||||||
|
id="path9" /><path
|
||||||
|
style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:8;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||||
|
d="M 50,85.574911 V 14.425087"
|
||||||
|
id="path8" /><circle
|
||||||
|
style="fill:none;stroke:#ffffff;stroke-width:7.11498;stroke-linecap:round;stroke-linejoin:round"
|
||||||
|
id="path1"
|
||||||
|
cx="50"
|
||||||
|
cy="50"
|
||||||
|
r="35.574913" /><circle
|
||||||
|
style="fill:#09bd05;stroke:#ffffff;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;fill-opacity:1;stroke-dasharray:none"
|
||||||
|
id="path2"
|
||||||
|
cx="50"
|
||||||
|
cy="84.604881"
|
||||||
|
r="8.2508707" /><circle
|
||||||
|
style="fill:#fe1e24;stroke:#ffffff;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;fill-opacity:1;stroke-dasharray:none"
|
||||||
|
id="circle2"
|
||||||
|
cx="50"
|
||||||
|
cy="15.395123"
|
||||||
|
r="8.2508707" /><circle
|
||||||
|
style="fill:#fe941d;stroke:#ffffff;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;fill-opacity:1;stroke-dasharray:none"
|
||||||
|
id="circle3"
|
||||||
|
cx="-68.30127"
|
||||||
|
cy="52.906147"
|
||||||
|
r="8.2508707"
|
||||||
|
transform="rotate(-120)" /><circle
|
||||||
|
style="fill:#001996;stroke:#ffffff;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;fill-opacity:1;stroke-dasharray:none"
|
||||||
|
id="circle4"
|
||||||
|
cx="-68.30127"
|
||||||
|
cy="-16.30361"
|
||||||
|
r="8.2508707"
|
||||||
|
transform="rotate(-120)" /><circle
|
||||||
|
style="fill:#ffff04;stroke:#ffffff;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;fill-opacity:1;stroke-dasharray:none"
|
||||||
|
id="circle5"
|
||||||
|
cx="-18.301271"
|
||||||
|
cy="102.90615"
|
||||||
|
r="8.2508707"
|
||||||
|
transform="rotate(-60)" /><circle
|
||||||
|
style="fill:#770287;stroke:#ffffff;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;fill-opacity:1;stroke-dasharray:none"
|
||||||
|
id="circle6"
|
||||||
|
cx="-18.301271"
|
||||||
|
cy="33.696392"
|
||||||
|
r="8.2508707"
|
||||||
|
transform="rotate(-60)" /><circle
|
||||||
|
style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:6.75;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||||
id="path7"
|
id="path7"
|
||||||
style="stroke-width:4" />
|
cx="50"
|
||||||
<path
|
cy="50"
|
||||||
d="m 304.9188,251.4672 c 1.8572,2.732 1.844,6.3248 -0.0332,9.0432 L 260.6664,324.546 C 259.1728,326.7088 256.712,328 254.0836,328 H 234.948 c -6.3896,0 -10.2004,-7.1212 -6.6564,-12.4376 l 36.75,-55.1248 c 1.7916,-2.6872 1.7916,-6.188 0,-8.8752 l -36.75,-55.1248 C 224.7476,191.1212 228.5584,184 234.948,184 h 19.8748 c 2.6492,0 5.1268,1.3116 6.616,3.5028 z"
|
r="9.7918472" /><g
|
||||||
fill="url(#paint0_radial_4033_8)"
|
inkscape:label="Layer 1"
|
||||||
id="path8"
|
id="layer1-3"
|
||||||
style="fill:url(#paint0_radial_4033_8);stroke-width:4" />
|
transform="matrix(0.08246781,0,0,0.08246781,38.828362,38.828362)"
|
||||||
<g
|
style="stroke:#ffffff"><text
|
||||||
mask="url(#mask0_4033_8)"
|
xml:space="preserve"
|
||||||
id="g9"
|
style="font-style:normal;font-variant:normal;font-weight:900;font-stretch:normal;font-size:96.3615px;line-height:0;font-family:'Noto Serif';-inkscape-font-specification:'Noto Serif, Heavy';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:end;text-anchor:end;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-dasharray:none;stroke-opacity:1"
|
||||||
transform="scale(4)">
|
x="-305.64749"
|
||||||
<rect
|
y="194.14493"
|
||||||
x="52"
|
id="text2819"><tspan
|
||||||
y="46"
|
sodipodi:role="line"
|
||||||
width="17"
|
id="tspan2817"
|
||||||
height="4"
|
style="stroke:#ffffff;stroke-width:0"
|
||||||
fill="#2779dd"
|
x="-305.64749"
|
||||||
id="rect9" />
|
y="194.14493" /></text><circle
|
||||||
</g>
|
style="fill:#354b5f;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-dasharray:none;stroke-opacity:1"
|
||||||
<defs
|
id="path342"
|
||||||
id="defs11">
|
cx="135.46666"
|
||||||
<radialGradient
|
cy="135.46666"
|
||||||
id="paint0_radial_4033_8"
|
r="135.46666" /><text
|
||||||
cx="0"
|
xml:space="preserve"
|
||||||
cy="0"
|
style="font-style:normal;font-variant:normal;font-weight:900;font-stretch:normal;font-size:96.3615px;line-height:0;font-family:'Noto Serif';-inkscape-font-specification:'Noto Serif, Heavy';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:end;text-anchor:end;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-dasharray:none;stroke-opacity:1"
|
||||||
r="1"
|
x="-305.64749"
|
||||||
gradientTransform="matrix(14,98.0856,-63.2396,9.04212,320,211.9616)"
|
y="194.14493"
|
||||||
gradientUnits="userSpaceOnUse">
|
id="text2819-3"><tspan
|
||||||
<stop
|
sodipodi:role="line"
|
||||||
stop-color="#72AAEE"
|
id="tspan2817-5"
|
||||||
id="stop10" />
|
style="stroke:#ffffff;stroke-width:0"
|
||||||
<stop
|
x="-305.64749"
|
||||||
offset="1"
|
y="194.14493" /></text><g
|
||||||
stop-color="#3584E4"
|
aria-label="❯"
|
||||||
id="stop11" />
|
id="text2827-6"
|
||||||
</radialGradient>
|
style="font-size:132.452px;line-height:0;font-family:PowerlineSymbols;-inkscape-font-specification:'PowerlineSymbols, Normal';text-align:end;text-anchor:end;fill:#4e94e4;fill-opacity:1;stroke:#ffffff;stroke-width:0"><path
|
||||||
<mask
|
d="M 95.096912,209.8167 143.88912,135.46666 95.096912,61.116629 h 32.818568 l 47.92093,74.350031 -47.92093,74.35004 z"
|
||||||
id="mask0_4033_8"
|
id="path2883-2"
|
||||||
maskUnits="userSpaceOnUse"
|
style="fill:#4e94e4;fill-opacity:1;stroke:#ffffff;stroke-width:0" /></g></g></g></svg>
|
||||||
x="56"
|
|
||||||
y="46"
|
|
||||||
width="21"
|
|
||||||
height="36">
|
|
||||||
<path
|
|
||||||
d="m 76.4223,63.1501 c 0.3482,0.5123 0.3457,1.1859 -0.0063,1.6956 L 65.0175,81.3524 C 64.7375,81.7579 64.2761,82 63.7832,82 h -5.9804 c -1.1981,0 -1.9127,-1.3352 -1.2481,-2.332 l 9.8906,-14.8359 c 0.3359,-0.5039 0.3359,-1.1603 0,-1.6641 L 57.0729,49.1094 C 56.1869,47.7803 57.1396,46 58.737,46 h 5.2334 c 0.4967,0 0.9613,0.2459 1.2405,0.6568 z"
|
|
||||||
fill="#2779dd"
|
|
||||||
id="path9" />
|
|
||||||
</mask>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath11">
|
|
||||||
<rect
|
|
||||||
width="128"
|
|
||||||
height="128"
|
|
||||||
fill="#ffffff"
|
|
||||||
id="rect12"
|
|
||||||
x="0"
|
|
||||||
y="0"
|
|
||||||
transform="rotate(-30)" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath12">
|
|
||||||
<rect
|
|
||||||
width="128"
|
|
||||||
height="128"
|
|
||||||
fill="#ffffff"
|
|
||||||
id="rect13"
|
|
||||||
x="0"
|
|
||||||
y="0"
|
|
||||||
transform="rotate(-30)" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath13">
|
|
||||||
<rect
|
|
||||||
width="128"
|
|
||||||
height="128"
|
|
||||||
fill="#ffffff"
|
|
||||||
id="rect14"
|
|
||||||
x="0"
|
|
||||||
y="0"
|
|
||||||
transform="rotate(-30)" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath14">
|
|
||||||
<rect
|
|
||||||
width="128"
|
|
||||||
height="128"
|
|
||||||
fill="#ffffff"
|
|
||||||
id="rect15"
|
|
||||||
x="0"
|
|
||||||
y="0"
|
|
||||||
transform="rotate(-30)" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath15">
|
|
||||||
<rect
|
|
||||||
width="128"
|
|
||||||
height="128"
|
|
||||||
fill="#ffffff"
|
|
||||||
id="rect16"
|
|
||||||
x="0"
|
|
||||||
y="0"
|
|
||||||
transform="rotate(-30)" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath16">
|
|
||||||
<rect
|
|
||||||
width="128"
|
|
||||||
height="128"
|
|
||||||
fill="#ffffff"
|
|
||||||
id="rect17"
|
|
||||||
x="0"
|
|
||||||
y="0"
|
|
||||||
transform="rotate(-30)" />
|
|
||||||
</clipPath>
|
|
||||||
</defs>
|
|
||||||
</svg>
|
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 6 KiB |
BIN
assets/icon.png
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 35 KiB |
448
assets/icon.svg
|
|
@ -1,22 +1,21 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
<svg
|
<svg
|
||||||
width="512"
|
width="100mm"
|
||||||
height="512"
|
height="100mm"
|
||||||
viewBox="0 0 512 512"
|
viewBox="0 0 100 100"
|
||||||
fill="none"
|
|
||||||
version="1.1"
|
version="1.1"
|
||||||
id="svg35"
|
id="svg1"
|
||||||
|
xml:space="preserve"
|
||||||
|
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
|
||||||
sodipodi:docname="icon.svg"
|
sodipodi:docname="icon.svg"
|
||||||
inkscape:version="1.4.3 (0d15f75042, 2025-12-25)"
|
|
||||||
inkscape:export-filename="icon.png"
|
|
||||||
inkscape:export-xdpi="96"
|
|
||||||
inkscape:export-ydpi="96"
|
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
xmlns:svg="http://www.w3.org/2000/svg">
|
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
|
||||||
<sodipodi:namedview
|
id="namedview1"
|
||||||
id="namedview35"
|
|
||||||
pagecolor="#505050"
|
pagecolor="#505050"
|
||||||
bordercolor="#eeeeee"
|
bordercolor="#eeeeee"
|
||||||
borderopacity="1"
|
borderopacity="1"
|
||||||
|
|
@ -24,311 +23,128 @@
|
||||||
inkscape:pageopacity="0"
|
inkscape:pageopacity="0"
|
||||||
inkscape:pagecheckerboard="0"
|
inkscape:pagecheckerboard="0"
|
||||||
inkscape:deskcolor="#505050"
|
inkscape:deskcolor="#505050"
|
||||||
inkscape:zoom="1.321682"
|
inkscape:document-units="mm"
|
||||||
inkscape:cx="69.608271"
|
inkscape:zoom="1.0847363"
|
||||||
inkscape:cy="120.67956"
|
inkscape:cx="57.61769"
|
||||||
inkscape:window-width="2544"
|
inkscape:cy="214.33781"
|
||||||
inkscape:window-height="1363"
|
inkscape:window-width="1896"
|
||||||
|
inkscape:window-height="963"
|
||||||
inkscape:window-x="35"
|
inkscape:window-x="35"
|
||||||
inkscape:window-y="32"
|
inkscape:window-y="32"
|
||||||
inkscape:window-maximized="0"
|
inkscape:window-maximized="0"
|
||||||
inkscape:current-layer="svg35" />
|
inkscape:current-layer="layer1" /><defs
|
||||||
<mask
|
id="defs1"><linearGradient
|
||||||
id="mask0_4023_558"
|
id="linearGradient10"
|
||||||
maskUnits="userSpaceOnUse"
|
inkscape:collect="always"><stop
|
||||||
x="12"
|
style="stop-color:#c7a312;stop-opacity:1;"
|
||||||
y="100"
|
offset="0"
|
||||||
width="88"
|
id="stop10" /><stop
|
||||||
height="16">
|
style="stop-color:#26a0b3;stop-opacity:1;"
|
||||||
<path
|
offset="1"
|
||||||
d="m 100,104 c 0,6.627 -5.3726,12 -12,12 H 24 c -6.6274,0 -12,-5.373 -12,-12 v -4 c 0,6.627 5.3726,12 12,12 h 64 c 6.6274,0 12,-5.373 12,-12 z"
|
id="stop11" /></linearGradient><linearGradient
|
||||||
fill="#d9d9d9"
|
inkscape:collect="always"
|
||||||
id="path6" />
|
xlink:href="#linearGradient10"
|
||||||
</mask>
|
id="linearGradient11"
|
||||||
<mask
|
x1="20.031296"
|
||||||
id="mask1_4023_558"
|
y1="32.697563"
|
||||||
maskUnits="userSpaceOnUse"
|
x2="90.709213"
|
||||||
x="77"
|
y2="66.3423"
|
||||||
y="27"
|
gradientUnits="userSpaceOnUse" /></defs><g
|
||||||
width="21"
|
inkscape:label="Layer 1"
|
||||||
height="36">
|
inkscape:groupmode="layer"
|
||||||
<path
|
id="layer1"><rect
|
||||||
d="m 97.4223,44.1501 c 0.3482,0.5122 0.3457,1.1859 -0.0063,1.6956 L 86.0175,62.3523 C 85.7375,62.7579 85.2761,63 84.7832,63 h -5.9804 c -1.1981,0 -1.9127,-1.3352 -1.2481,-2.3321 l 9.8906,-14.8358 c 0.3359,-0.5039 0.3359,-1.1603 0,-1.6642 L 78.0729,30.1094 C 77.1869,28.7803 78.1396,27 79.737,27 h 5.2334 c 0.4967,0 0.9613,0.2459 1.2405,0.6567 z"
|
style="fill:url(#linearGradient11);fill-opacity:1;stroke:none;stroke-width:7.99999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||||
fill="#2779dd"
|
|
||||||
id="path14" />
|
|
||||||
</mask>
|
|
||||||
<g
|
|
||||||
id="g36"
|
|
||||||
transform="scale(4)">
|
|
||||||
<g
|
|
||||||
clip-path="url(#clip0_4023_558)"
|
|
||||||
id="g6">
|
|
||||||
<rect
|
|
||||||
x="62.0205"
|
|
||||||
y="-52.425598"
|
|
||||||
width="24"
|
|
||||||
height="197"
|
|
||||||
transform="rotate(30,62.0205,-52.4256)"
|
|
||||||
fill="#9141ac"
|
|
||||||
id="rect1" />
|
|
||||||
<rect
|
|
||||||
x="82.805099"
|
|
||||||
y="-40.425598"
|
|
||||||
width="18"
|
|
||||||
height="197"
|
|
||||||
transform="rotate(30,82.8051,-40.4256)"
|
|
||||||
fill="#62a0ea"
|
|
||||||
id="rect2" />
|
|
||||||
<rect
|
|
||||||
x="98.3936"
|
|
||||||
y="-31.4256"
|
|
||||||
width="18"
|
|
||||||
height="197"
|
|
||||||
transform="rotate(30,98.3936,-31.4256)"
|
|
||||||
fill="#57e389"
|
|
||||||
id="rect3" />
|
|
||||||
<rect
|
|
||||||
x="113.982"
|
|
||||||
y="-22.4256"
|
|
||||||
width="18"
|
|
||||||
height="197"
|
|
||||||
transform="rotate(30,113.982,-22.4256)"
|
|
||||||
fill="#f5c211"
|
|
||||||
id="rect4" />
|
|
||||||
<rect
|
|
||||||
x="129.57001"
|
|
||||||
y="-13.4256"
|
|
||||||
width="18"
|
|
||||||
height="197"
|
|
||||||
transform="rotate(30,129.57,-13.4256)"
|
|
||||||
fill="#ff7800"
|
|
||||||
id="rect5" />
|
|
||||||
<rect
|
|
||||||
x="145.159"
|
|
||||||
y="-4.4256301"
|
|
||||||
width="24"
|
|
||||||
height="197"
|
|
||||||
transform="rotate(30,145.159,-4.42563)"
|
|
||||||
fill="#ed333b"
|
|
||||||
id="rect6" />
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
mask="url(#mask0_4023_558)"
|
|
||||||
id="g10">
|
|
||||||
<path
|
|
||||||
d="m 12,100 h 24 v 16 H 12 Z"
|
|
||||||
fill="url(#paint0_linear_4023_558)"
|
|
||||||
id="path7"
|
|
||||||
style="fill:url(#paint0_linear_4023_558)" />
|
|
||||||
<path
|
|
||||||
d="m 12,100 h 5 v 16 h -5 z"
|
|
||||||
fill="url(#paint1_linear_4023_558)"
|
|
||||||
id="path8"
|
|
||||||
style="fill:url(#paint1_linear_4023_558)" />
|
|
||||||
<rect
|
|
||||||
x="36"
|
|
||||||
y="100"
|
|
||||||
width="21"
|
|
||||||
height="16"
|
|
||||||
fill="#ca9005"
|
|
||||||
id="rect8" />
|
|
||||||
<rect
|
|
||||||
x="57"
|
|
||||||
y="100"
|
|
||||||
width="21"
|
|
||||||
height="16"
|
|
||||||
fill="#c64600"
|
|
||||||
id="rect9" />
|
|
||||||
<rect
|
|
||||||
x="78"
|
|
||||||
y="100"
|
|
||||||
width="22"
|
|
||||||
height="16"
|
|
||||||
fill="url(#paint2_linear_4023_558)"
|
|
||||||
id="rect10"
|
id="rect10"
|
||||||
style="fill:url(#paint2_linear_4023_558)" />
|
width="100"
|
||||||
</g>
|
height="100"
|
||||||
<rect
|
x="0"
|
||||||
opacity="0.2"
|
y="0"
|
||||||
x="24.5"
|
ry="28.294127" /><path
|
||||||
y="110.5"
|
style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:8;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||||
width="63"
|
d="M 19.377906,68.106953 80.937684,32.43771"
|
||||||
height="1"
|
id="path10" /><path
|
||||||
stroke="url(#paint3_linear_4023_558)"
|
style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:8;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||||
id="rect11"
|
d="m 19.044488,32.469148 61.61782,35.569625"
|
||||||
style="stroke:url(#paint3_linear_4023_558)" />
|
id="path9" /><path
|
||||||
<path
|
style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:8;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||||
d="m 85,4 c 22.644,0 41,18.3563 41,41 v 4 c 0,22.6437 -18.356,41 -41,41 -8.3322,0 -16.0825,-2.4875 -22.5526,-6.7576 -0.4653,-0.3071 -1.0341,-0.4203 -1.5783,-0.2987 l -8.8369,1.9749 C 52.0134,84.9228 52,84.9395 52,84.9588 52,84.9816 51.9816,85 51.9588,85 h -0.4617 c -0.0787,0.0036 -0.1564,0.004 -0.2334,0 H 51 c -1.1046,0 -2,-0.8954 -2,-2 v -0.2617 c -0.0043,-0.0811 -0.0042,-0.1632 0,-0.2461 V 78.9749 C 49,78.7126 49.2126,78.5 49.4749,78.5 c 0.2224,0 0.4151,-0.1543 0.4635,-0.3714 l 1.117,-4.9987 C 51.177,72.5857 51.0638,72.017 50.7567,71.5517 46.487,65.0818 44,57.3317 44,49 V 45 C 44,22.3563 62.3563,4 85,4 Z"
|
d="M 50,85.574911 V 14.425087"
|
||||||
fill="url(#paint4_linear_4023_558)"
|
id="path8" /><circle
|
||||||
id="path11"
|
style="fill:none;stroke:#ffffff;stroke-width:7.11498;stroke-linecap:round;stroke-linejoin:round"
|
||||||
style="fill:url(#paint4_linear_4023_558)" />
|
id="path1"
|
||||||
<path
|
cx="50"
|
||||||
d="m 85,4 c 22.644,0 41,18.3563 41,41 0,22.6437 -18.356,41 -41,41 -8.6457,0 -16.6648,-2.6781 -23.2773,-7.2471 l -9.8018,2.1914 c -1.7167,0.3836 -3.2488,-1.1485 -2.8652,-2.8652 l 2.1904,-9.8027 C 46.6776,61.6641 44,53.6452 44,45 44,22.3563 62.3563,4 85,4 Z"
|
cy="50"
|
||||||
fill="#ffffff"
|
r="35.574913" /><circle
|
||||||
id="path12" />
|
style="fill:#09bd05;stroke:#ffffff;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;fill-opacity:1;stroke-dasharray:none"
|
||||||
<path
|
id="path2"
|
||||||
d="m 97.2297,43.8668 c 0.4642,0.683 0.4609,1.5812 -0.0083,2.2608 L 86.1666,62.1365 C 85.7932,62.6772 85.178,63 84.5209,63 H 79.737 c -1.5974,0 -2.5502,-1.7803 -1.6641,-3.1094 l 9.1875,-13.7812 c 0.4478,-0.6718 0.4478,-1.547 0,-2.2188 L 78.0729,30.1094 C 77.1868,28.7803 78.1396,27 79.737,27 h 4.9687 c 0.6623,0 1.2817,0.3279 1.654,0.8757 z"
|
cx="50"
|
||||||
fill="url(#paint5_radial_4023_558)"
|
cy="84.604881"
|
||||||
id="path13"
|
r="8.2508707" /><circle
|
||||||
style="fill:url(#paint5_radial_4023_558)" />
|
style="fill:#fe1e24;stroke:#ffffff;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;fill-opacity:1;stroke-dasharray:none"
|
||||||
<g
|
id="circle2"
|
||||||
mask="url(#mask1_4023_558)"
|
cx="50"
|
||||||
id="g14">
|
cy="15.395123"
|
||||||
<rect
|
r="8.2508707" /><circle
|
||||||
x="73"
|
style="fill:#fe941d;stroke:#ffffff;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;fill-opacity:1;stroke-dasharray:none"
|
||||||
y="27"
|
id="circle3"
|
||||||
width="17"
|
cx="-68.30127"
|
||||||
height="4"
|
cy="52.906147"
|
||||||
fill="#2779dd"
|
r="8.2508707"
|
||||||
id="rect14" />
|
transform="rotate(-120)" /><circle
|
||||||
</g>
|
style="fill:#001996;stroke:#ffffff;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;fill-opacity:1;stroke-dasharray:none"
|
||||||
</g>
|
id="circle4"
|
||||||
<defs
|
cx="-68.30127"
|
||||||
id="defs35">
|
cy="-16.30361"
|
||||||
<linearGradient
|
r="8.2508707"
|
||||||
id="paint0_linear_4023_558"
|
transform="rotate(-120)" /><circle
|
||||||
x1="34"
|
style="fill:#ffff04;stroke:#ffffff;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;fill-opacity:1;stroke-dasharray:none"
|
||||||
y1="108"
|
id="circle5"
|
||||||
x2="12"
|
cx="-18.301271"
|
||||||
y2="108"
|
cy="102.90615"
|
||||||
gradientUnits="userSpaceOnUse">
|
r="8.2508707"
|
||||||
<stop
|
transform="rotate(-60)" /><circle
|
||||||
offset="0.401381"
|
style="fill:#770287;stroke:#ffffff;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;fill-opacity:1;stroke-dasharray:none"
|
||||||
stop-color="#26A269"
|
id="circle6"
|
||||||
id="stop14" />
|
cx="-18.301271"
|
||||||
<stop
|
cy="33.696392"
|
||||||
offset="0.801049"
|
r="8.2508707"
|
||||||
stop-color="#8AEB52"
|
transform="rotate(-60)" /><circle
|
||||||
id="stop15" />
|
style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:6.75;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||||
<stop
|
id="path7"
|
||||||
offset="1"
|
cx="50"
|
||||||
stop-color="#26A269"
|
cy="50"
|
||||||
id="stop16" />
|
r="9.7918472" /><g
|
||||||
</linearGradient>
|
inkscape:label="Layer 1"
|
||||||
<linearGradient
|
id="layer1-3"
|
||||||
id="paint1_linear_4023_558"
|
transform="matrix(0.08246781,0,0,0.08246781,38.828362,38.828362)"
|
||||||
x1="12"
|
style="stroke:#ffffff"><text
|
||||||
y1="108"
|
xml:space="preserve"
|
||||||
x2="17"
|
style="font-style:normal;font-variant:normal;font-weight:900;font-stretch:normal;font-size:96.3615px;line-height:0;font-family:'Noto Serif';-inkscape-font-specification:'Noto Serif, Heavy';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:end;text-anchor:end;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-dasharray:none;stroke-opacity:1"
|
||||||
y2="108"
|
x="-305.64749"
|
||||||
gradientUnits="userSpaceOnUse">
|
y="194.14493"
|
||||||
<stop
|
id="text2819"><tspan
|
||||||
stop-color="#1A5FB4"
|
sodipodi:role="line"
|
||||||
id="stop17" />
|
id="tspan2817"
|
||||||
<stop
|
style="stroke:#ffffff;stroke-width:0"
|
||||||
offset="1"
|
x="-305.64749"
|
||||||
stop-color="#35E0F6"
|
y="194.14493" /></text><circle
|
||||||
id="stop18" />
|
style="fill:#354b5f;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-dasharray:none;stroke-opacity:1"
|
||||||
</linearGradient>
|
id="path342"
|
||||||
<linearGradient
|
cx="135.46666"
|
||||||
id="paint2_linear_4023_558"
|
cy="135.46666"
|
||||||
x1="100"
|
r="135.46666" /><text
|
||||||
y1="108"
|
xml:space="preserve"
|
||||||
x2="78"
|
style="font-style:normal;font-variant:normal;font-weight:900;font-stretch:normal;font-size:96.3615px;line-height:0;font-family:'Noto Serif';-inkscape-font-specification:'Noto Serif, Heavy';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:end;text-anchor:end;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-dasharray:none;stroke-opacity:1"
|
||||||
y2="108"
|
x="-305.64749"
|
||||||
gradientUnits="userSpaceOnUse">
|
y="194.14493"
|
||||||
<stop
|
id="text2819-3"><tspan
|
||||||
stop-color="#A51D2D"
|
sodipodi:role="line"
|
||||||
id="stop19" />
|
id="tspan2817-5"
|
||||||
<stop
|
style="stroke:#ffffff;stroke-width:0"
|
||||||
offset="0.195858"
|
x="-305.64749"
|
||||||
stop-color="#E5673C"
|
y="194.14493" /></text><g
|
||||||
id="stop20" />
|
aria-label="❯"
|
||||||
<stop
|
id="text2827-6"
|
||||||
offset="0.5983"
|
style="font-size:132.452px;line-height:0;font-family:PowerlineSymbols;-inkscape-font-specification:'PowerlineSymbols, Normal';text-align:end;text-anchor:end;fill:#4e94e4;fill-opacity:1;stroke:#ffffff;stroke-width:0"><path
|
||||||
stop-color="#A51D2D"
|
d="M 95.096912,209.8167 143.88912,135.46666 95.096912,61.116629 h 32.818568 l 47.92093,74.350031 -47.92093,74.35004 z"
|
||||||
id="stop21" />
|
id="path2883-2"
|
||||||
</linearGradient>
|
style="fill:#4e94e4;fill-opacity:1;stroke:#ffffff;stroke-width:0" /></g></g></g></svg>
|
||||||
<linearGradient
|
|
||||||
id="paint3_linear_4023_558"
|
|
||||||
x1="88"
|
|
||||||
y1="111.329"
|
|
||||||
x2="24"
|
|
||||||
y2="111.329"
|
|
||||||
gradientUnits="userSpaceOnUse">
|
|
||||||
<stop
|
|
||||||
offset="0.102371"
|
|
||||||
stop-color="white"
|
|
||||||
stop-opacity="0"
|
|
||||||
id="stop22" />
|
|
||||||
<stop
|
|
||||||
offset="0.253808"
|
|
||||||
stop-color="white"
|
|
||||||
id="stop23" />
|
|
||||||
<stop
|
|
||||||
offset="0.747697"
|
|
||||||
stop-color="white"
|
|
||||||
id="stop24" />
|
|
||||||
<stop
|
|
||||||
offset="0.895556"
|
|
||||||
stop-color="white"
|
|
||||||
stop-opacity="0"
|
|
||||||
id="stop25" />
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient
|
|
||||||
id="paint4_linear_4023_558"
|
|
||||||
x1="44"
|
|
||||||
y1="48.036098"
|
|
||||||
x2="126"
|
|
||||||
y2="48.036098"
|
|
||||||
gradientUnits="userSpaceOnUse">
|
|
||||||
<stop
|
|
||||||
stop-color="#DBEBF4"
|
|
||||||
id="stop26" />
|
|
||||||
<stop
|
|
||||||
offset="0.147387"
|
|
||||||
stop-color="#B1D4E7"
|
|
||||||
id="stop27" />
|
|
||||||
<stop
|
|
||||||
offset="0.186621"
|
|
||||||
stop-color="#8DC0DC"
|
|
||||||
id="stop28" />
|
|
||||||
<stop
|
|
||||||
offset="0.203755"
|
|
||||||
stop-color="#49AEE7"
|
|
||||||
id="stop29" />
|
|
||||||
<stop
|
|
||||||
offset="0.276122"
|
|
||||||
stop-color="#7AB5D7"
|
|
||||||
id="stop30" />
|
|
||||||
<stop
|
|
||||||
offset="0.399628"
|
|
||||||
stop-color="#B3D6E7"
|
|
||||||
id="stop31" />
|
|
||||||
<stop
|
|
||||||
offset="0.507537"
|
|
||||||
stop-color="#B3D6E7"
|
|
||||||
id="stop32" />
|
|
||||||
<stop
|
|
||||||
offset="1"
|
|
||||||
stop-color="#DBEBF4"
|
|
||||||
id="stop33" />
|
|
||||||
</linearGradient>
|
|
||||||
<radialGradient
|
|
||||||
id="paint5_radial_4023_558"
|
|
||||||
cx="0"
|
|
||||||
cy="0"
|
|
||||||
r="1"
|
|
||||||
gradientTransform="matrix(3.5,24.5214,-15.8099,2.26053,101,33.9904)"
|
|
||||||
gradientUnits="userSpaceOnUse">
|
|
||||||
<stop
|
|
||||||
stop-color="#72AAEE"
|
|
||||||
id="stop34" />
|
|
||||||
<stop
|
|
||||||
offset="1"
|
|
||||||
stop-color="#3584E4"
|
|
||||||
id="stop35" />
|
|
||||||
</radialGradient>
|
|
||||||
<clipPath
|
|
||||||
id="clip0_4023_558">
|
|
||||||
<rect
|
|
||||||
x="12"
|
|
||||||
y="36"
|
|
||||||
width="88"
|
|
||||||
height="80"
|
|
||||||
rx="12"
|
|
||||||
fill="#ffffff"
|
|
||||||
id="rect35" />
|
|
||||||
</clipPath>
|
|
||||||
</defs>
|
|
||||||
</svg>
|
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 9.2 KiB After Width: | Height: | Size: 6.8 KiB |
|
Before Width: | Height: | Size: 25 KiB |
|
|
@ -1,156 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<svg
|
|
||||||
width="512"
|
|
||||||
height="512"
|
|
||||||
viewBox="0 0 512 512"
|
|
||||||
fill="none"
|
|
||||||
version="1.1"
|
|
||||||
id="svg11"
|
|
||||||
sodipodi:docname="mobile.svg"
|
|
||||||
inkscape:version="1.4.3 (0d15f75042, 2025-12-25)"
|
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg">
|
|
||||||
<sodipodi:namedview
|
|
||||||
id="namedview11"
|
|
||||||
pagecolor="#505050"
|
|
||||||
bordercolor="#eeeeee"
|
|
||||||
borderopacity="1"
|
|
||||||
inkscape:showpageshadow="0"
|
|
||||||
inkscape:pageopacity="0"
|
|
||||||
inkscape:pagecheckerboard="0"
|
|
||||||
inkscape:deskcolor="#505050"
|
|
||||||
inkscape:zoom="30.03125"
|
|
||||||
inkscape:cx="14.51821"
|
|
||||||
inkscape:cy="11.038502"
|
|
||||||
inkscape:window-width="2544"
|
|
||||||
inkscape:window-height="1363"
|
|
||||||
inkscape:window-x="35"
|
|
||||||
inkscape:window-y="32"
|
|
||||||
inkscape:window-maximized="0"
|
|
||||||
inkscape:current-layer="svg11" />
|
|
||||||
<g
|
|
||||||
id="g11"
|
|
||||||
transform="scale(4)">
|
|
||||||
<g
|
|
||||||
clip-path="url(#clip0_4033_8)"
|
|
||||||
id="g10">
|
|
||||||
<rect
|
|
||||||
width="128"
|
|
||||||
height="128"
|
|
||||||
fill="#ffffff"
|
|
||||||
id="rect1"
|
|
||||||
x="0"
|
|
||||||
y="0" />
|
|
||||||
<rect
|
|
||||||
x="60"
|
|
||||||
y="-107"
|
|
||||||
width="35.5569"
|
|
||||||
height="291.86301"
|
|
||||||
transform="rotate(30,60,-107)"
|
|
||||||
fill="#9141ac"
|
|
||||||
id="rect2" />
|
|
||||||
<rect
|
|
||||||
x="90.793198"
|
|
||||||
y="-89.221497"
|
|
||||||
width="26.6677"
|
|
||||||
height="291.86301"
|
|
||||||
transform="rotate(30,90.7932,-89.2215)"
|
|
||||||
fill="#62a0ea"
|
|
||||||
id="rect3" />
|
|
||||||
<rect
|
|
||||||
x="113.888"
|
|
||||||
y="-75.887703"
|
|
||||||
width="26.6677"
|
|
||||||
height="291.86301"
|
|
||||||
transform="rotate(30,113.888,-75.8877)"
|
|
||||||
fill="#57e389"
|
|
||||||
id="rect4" />
|
|
||||||
<rect
|
|
||||||
x="136.983"
|
|
||||||
y="-62.553799"
|
|
||||||
width="26.6677"
|
|
||||||
height="291.86301"
|
|
||||||
transform="rotate(30,136.983,-62.5538)"
|
|
||||||
fill="#f5c211"
|
|
||||||
id="rect5" />
|
|
||||||
<rect
|
|
||||||
x="160.078"
|
|
||||||
y="-49.220001"
|
|
||||||
width="26.6677"
|
|
||||||
height="291.86301"
|
|
||||||
transform="rotate(30,160.078,-49.22)"
|
|
||||||
fill="#ff7800"
|
|
||||||
id="rect6" />
|
|
||||||
<rect
|
|
||||||
x="183.173"
|
|
||||||
y="-35.886101"
|
|
||||||
width="35.5569"
|
|
||||||
height="291.86301"
|
|
||||||
transform="rotate(30,183.173,-35.8861)"
|
|
||||||
fill="#ed333b"
|
|
||||||
id="rect7" />
|
|
||||||
<path
|
|
||||||
d="m 64,23 c 22.6437,0 41,18.3563 41,41 0,22.6437 -18.3563,41 -41,41 -8.6457,0 -16.6648,-2.678 -23.2773,-7.2471 l -9.8018,2.1914 c -1.7167,0.3837 -3.2488,-1.1485 -2.8652,-2.8652 l 2.1904,-9.8027 C 25.6776,80.6641 23,72.6452 23,64 23,41.3563 41.3563,23 64,23 Z"
|
|
||||||
fill="#ffffff"
|
|
||||||
id="path7" />
|
|
||||||
<path
|
|
||||||
d="m 76.2297,62.8668 c 0.4643,0.683 0.461,1.5812 -0.0083,2.2608 L 65.1666,81.1365 C 64.7932,81.6772 64.178,82 63.5209,82 H 58.737 c -1.5974,0 -2.5501,-1.7803 -1.6641,-3.1094 l 9.1875,-13.7812 c 0.4479,-0.6718 0.4479,-1.547 0,-2.2188 L 57.0729,49.1094 C 56.1869,47.7803 57.1396,46 58.737,46 h 4.9687 c 0.6623,0 1.2817,0.3279 1.654,0.8757 z"
|
|
||||||
fill="url(#paint0_radial_4033_8)"
|
|
||||||
id="path8"
|
|
||||||
style="fill:url(#paint0_radial_4033_8)" />
|
|
||||||
<mask
|
|
||||||
id="mask0_4033_8"
|
|
||||||
maskUnits="userSpaceOnUse"
|
|
||||||
x="56"
|
|
||||||
y="46"
|
|
||||||
width="21"
|
|
||||||
height="36">
|
|
||||||
<path
|
|
||||||
d="m 76.4223,63.1501 c 0.3482,0.5123 0.3457,1.1859 -0.0063,1.6956 L 65.0175,81.3524 C 64.7375,81.7579 64.2761,82 63.7832,82 h -5.9804 c -1.1981,0 -1.9127,-1.3352 -1.2481,-2.332 l 9.8906,-14.8359 c 0.3359,-0.5039 0.3359,-1.1603 0,-1.6641 L 57.0729,49.1094 C 56.1869,47.7803 57.1396,46 58.737,46 h 5.2334 c 0.4967,0 0.9613,0.2459 1.2405,0.6568 z"
|
|
||||||
fill="#2779dd"
|
|
||||||
id="path9" />
|
|
||||||
</mask>
|
|
||||||
<g
|
|
||||||
mask="url(#mask0_4033_8)"
|
|
||||||
id="g9">
|
|
||||||
<rect
|
|
||||||
x="52"
|
|
||||||
y="46"
|
|
||||||
width="17"
|
|
||||||
height="4"
|
|
||||||
fill="#2779dd"
|
|
||||||
id="rect9" />
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<defs
|
|
||||||
id="defs11">
|
|
||||||
<radialGradient
|
|
||||||
id="paint0_radial_4033_8"
|
|
||||||
cx="0"
|
|
||||||
cy="0"
|
|
||||||
r="1"
|
|
||||||
gradientTransform="matrix(3.5,24.5214,-15.8099,2.26053,80,52.9904)"
|
|
||||||
gradientUnits="userSpaceOnUse">
|
|
||||||
<stop
|
|
||||||
stop-color="#72AAEE"
|
|
||||||
id="stop10" />
|
|
||||||
<stop
|
|
||||||
offset="1"
|
|
||||||
stop-color="#3584E4"
|
|
||||||
id="stop11" />
|
|
||||||
</radialGradient>
|
|
||||||
<clipPath
|
|
||||||
id="clip0_4033_8">
|
|
||||||
<rect
|
|
||||||
width="128"
|
|
||||||
height="128"
|
|
||||||
fill="#ffffff"
|
|
||||||
id="rect11"
|
|
||||||
x="0"
|
|
||||||
y="0" />
|
|
||||||
</clipPath>
|
|
||||||
</defs>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 4.6 KiB |
|
Before Width: | Height: | Size: 9.1 KiB |
|
|
@ -1,178 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<svg
|
|
||||||
width="512"
|
|
||||||
height="512"
|
|
||||||
viewBox="0 0 512 512"
|
|
||||||
fill="none"
|
|
||||||
version="1.1"
|
|
||||||
id="svg11"
|
|
||||||
sodipodi:docname="monochrome.svg"
|
|
||||||
inkscape:version="1.4.3 (0d15f75042, 2025-12-25)"
|
|
||||||
inkscape:export-filename="foreground.png"
|
|
||||||
inkscape:export-xdpi="96"
|
|
||||||
inkscape:export-ydpi="96"
|
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
||||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg">
|
|
||||||
<sodipodi:namedview
|
|
||||||
id="namedview11"
|
|
||||||
pagecolor="#505050"
|
|
||||||
bordercolor="#eeeeee"
|
|
||||||
borderopacity="1"
|
|
||||||
inkscape:showpageshadow="0"
|
|
||||||
inkscape:pageopacity="0"
|
|
||||||
inkscape:pagecheckerboard="0"
|
|
||||||
inkscape:deskcolor="#505050"
|
|
||||||
inkscape:zoom="1.240199"
|
|
||||||
inkscape:cx="156.02335"
|
|
||||||
inkscape:cy="321.3194"
|
|
||||||
inkscape:window-width="2544"
|
|
||||||
inkscape:window-height="1363"
|
|
||||||
inkscape:window-x="35"
|
|
||||||
inkscape:window-y="32"
|
|
||||||
inkscape:window-maximized="0"
|
|
||||||
inkscape:current-layer="svg11" />
|
|
||||||
<path
|
|
||||||
d="m 256,92 c 90.5748,0 164,73.4252 164,164 0,90.5748 -73.4252,164 -164,164 -34.5828,0 -66.6592,-10.712 -93.1092,-28.9884 l -39.2072,8.7656 c -6.8668,1.5348 -12.9952,-4.594 -11.4608,-11.4608 l 8.7616,-39.2108 C 102.7104,322.6564 92,290.5808 92,256 92,165.4252 165.4252,92 256,92 Z"
|
|
||||||
fill="#ffffff"
|
|
||||||
id="path7"
|
|
||||||
style="stroke-width:4"
|
|
||||||
clip-path="url(#clipPath1)"
|
|
||||||
inkscape:path-effect="#path-effect1" />
|
|
||||||
<defs
|
|
||||||
id="defs11">
|
|
||||||
<inkscape:path-effect
|
|
||||||
effect="powerclip"
|
|
||||||
message=""
|
|
||||||
id="path-effect1"
|
|
||||||
is_visible="true"
|
|
||||||
lpeversion="1"
|
|
||||||
inverse="true"
|
|
||||||
flatten="false"
|
|
||||||
hide_clip="false" />
|
|
||||||
<radialGradient
|
|
||||||
id="paint0_radial_4033_8"
|
|
||||||
cx="0"
|
|
||||||
cy="0"
|
|
||||||
r="1"
|
|
||||||
gradientTransform="matrix(14,98.0856,-63.2396,9.04212,320,211.9616)"
|
|
||||||
gradientUnits="userSpaceOnUse">
|
|
||||||
<stop
|
|
||||||
stop-color="#72AAEE"
|
|
||||||
id="stop10" />
|
|
||||||
<stop
|
|
||||||
offset="1"
|
|
||||||
stop-color="#3584E4"
|
|
||||||
id="stop11" />
|
|
||||||
</radialGradient>
|
|
||||||
<mask
|
|
||||||
id="mask0_4033_8"
|
|
||||||
maskUnits="userSpaceOnUse"
|
|
||||||
x="56"
|
|
||||||
y="46"
|
|
||||||
width="21"
|
|
||||||
height="36">
|
|
||||||
<path
|
|
||||||
d="m 76.4223,63.1501 c 0.3482,0.5123 0.3457,1.1859 -0.0063,1.6956 L 65.0175,81.3524 C 64.7375,81.7579 64.2761,82 63.7832,82 h -5.9804 c -1.1981,0 -1.9127,-1.3352 -1.2481,-2.332 l 9.8906,-14.8359 c 0.3359,-0.5039 0.3359,-1.1603 0,-1.6641 L 57.0729,49.1094 C 56.1869,47.7803 57.1396,46 58.737,46 h 5.2334 c 0.4967,0 0.9613,0.2459 1.2405,0.6568 z"
|
|
||||||
fill="#2779dd"
|
|
||||||
id="path9" />
|
|
||||||
</mask>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath11">
|
|
||||||
<rect
|
|
||||||
width="128"
|
|
||||||
height="128"
|
|
||||||
fill="#ffffff"
|
|
||||||
id="rect12"
|
|
||||||
x="0"
|
|
||||||
y="0"
|
|
||||||
transform="rotate(-30)" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath12">
|
|
||||||
<rect
|
|
||||||
width="128"
|
|
||||||
height="128"
|
|
||||||
fill="#ffffff"
|
|
||||||
id="rect13"
|
|
||||||
x="0"
|
|
||||||
y="0"
|
|
||||||
transform="rotate(-30)" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath13">
|
|
||||||
<rect
|
|
||||||
width="128"
|
|
||||||
height="128"
|
|
||||||
fill="#ffffff"
|
|
||||||
id="rect14"
|
|
||||||
x="0"
|
|
||||||
y="0"
|
|
||||||
transform="rotate(-30)" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath14">
|
|
||||||
<rect
|
|
||||||
width="128"
|
|
||||||
height="128"
|
|
||||||
fill="#ffffff"
|
|
||||||
id="rect15"
|
|
||||||
x="0"
|
|
||||||
y="0"
|
|
||||||
transform="rotate(-30)" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath15">
|
|
||||||
<rect
|
|
||||||
width="128"
|
|
||||||
height="128"
|
|
||||||
fill="#ffffff"
|
|
||||||
id="rect16"
|
|
||||||
x="0"
|
|
||||||
y="0"
|
|
||||||
transform="rotate(-30)" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath16">
|
|
||||||
<rect
|
|
||||||
width="128"
|
|
||||||
height="128"
|
|
||||||
fill="#ffffff"
|
|
||||||
id="rect17"
|
|
||||||
x="0"
|
|
||||||
y="0"
|
|
||||||
transform="rotate(-30)" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath1">
|
|
||||||
<path
|
|
||||||
d="m 304.9188,251.4672 c 1.8572,2.732 1.844,6.3248 -0.0332,9.0432 L 260.6664,324.546 C 259.1728,326.7088 256.712,328 254.0836,328 H 234.948 c -6.3896,0 -10.2004,-7.1212 -6.6564,-12.4376 l 36.75,-55.1248 c 1.7916,-2.6872 1.7916,-6.188 0,-8.8752 l -36.75,-55.1248 C 224.7476,191.1212 228.5584,184 234.948,184 h 19.8748 c 2.6492,0 5.1268,1.3116 6.616,3.5028 z"
|
|
||||||
fill="url(#paint0_radial_4033_8)"
|
|
||||||
id="path1"
|
|
||||||
style="display:none;fill:url(#radialGradient1);stroke-width:4" />
|
|
||||||
<path
|
|
||||||
id="lpe_path-effect1"
|
|
||||||
style="fill:url(#radialGradient1);stroke-width:4"
|
|
||||||
class="powerclip"
|
|
||||||
d="M 87,87 H 425 V 425 H 87 Z m 217.9188,164.4672 -43.48,-63.9644 C 259.9496,185.3116 257.472,184 254.8228,184 H 234.948 c -6.3896,0 -10.2004,7.1212 -6.6564,12.4376 l 36.75,55.1248 c 1.7916,2.6872 1.7916,6.188 0,8.8752 l -36.75,55.1248 C 224.7476,320.8788 228.5584,328 234.948,328 h 19.1356 c 2.6284,0 5.0892,-1.2912 6.5828,-3.454 l 44.2192,-64.0356 c 1.8772,-2.7184 1.8904,-6.3112 0.0332,-9.0432 z" />
|
|
||||||
</clipPath>
|
|
||||||
<radialGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#paint0_radial_4033_8"
|
|
||||||
id="radialGradient1"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
gradientTransform="matrix(14,98.0856,-63.2396,9.04212,320,211.9616)"
|
|
||||||
cx="0"
|
|
||||||
cy="0"
|
|
||||||
r="1" />
|
|
||||||
</defs>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 5.6 KiB |
BIN
assets/smallerForeground.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
126
assets/smallerForeground.svg
Normal file
|
|
@ -0,0 +1,126 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="100mm"
|
||||||
|
height="100mm"
|
||||||
|
viewBox="0 0 100 100"
|
||||||
|
version="1.1"
|
||||||
|
id="svg1"
|
||||||
|
xml:space="preserve"
|
||||||
|
inkscape:version="1.4.3 (0d15f75042, 2025-12-25)"
|
||||||
|
sodipodi:docname="smallerForeground.svg"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
|
||||||
|
id="namedview1"
|
||||||
|
pagecolor="#505050"
|
||||||
|
bordercolor="#eeeeee"
|
||||||
|
borderopacity="1"
|
||||||
|
inkscape:showpageshadow="0"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:deskcolor="#505050"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
inkscape:zoom="1.0847363"
|
||||||
|
inkscape:cx="58.078632"
|
||||||
|
inkscape:cy="213.41592"
|
||||||
|
inkscape:window-width="2544"
|
||||||
|
inkscape:window-height="1363"
|
||||||
|
inkscape:window-x="35"
|
||||||
|
inkscape:window-y="32"
|
||||||
|
inkscape:window-maximized="0"
|
||||||
|
inkscape:current-layer="layer1" /><defs
|
||||||
|
id="defs1" /><g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"><path
|
||||||
|
style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:5.41161;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||||
|
d="M 29.285638,62.248476 70.927843,38.119963"
|
||||||
|
id="path10" /><path
|
||||||
|
style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:5.41161;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||||
|
d="M 29.060097,38.141229 70.741564,62.202356"
|
||||||
|
id="path9" /><path
|
||||||
|
style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:5.41161;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||||
|
d="M 50,74.064703 V 25.935297"
|
||||||
|
id="path8" /><circle
|
||||||
|
style="fill:none;stroke:#ffffff;stroke-width:4.81294;stroke-linecap:round;stroke-linejoin:round"
|
||||||
|
id="path1"
|
||||||
|
cx="50"
|
||||||
|
cy="50"
|
||||||
|
r="24.064703" /><circle
|
||||||
|
style="fill:#09bd05;fill-opacity:1;stroke:#ffffff;stroke-width:3.38226;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||||
|
id="path2"
|
||||||
|
cx="50"
|
||||||
|
cy="73.408524"
|
||||||
|
r="5.5813141" /><circle
|
||||||
|
style="fill:#fe1e24;fill-opacity:1;stroke:#ffffff;stroke-width:3.38226;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||||
|
id="circle2"
|
||||||
|
cx="50"
|
||||||
|
cy="26.59148"
|
||||||
|
r="5.5813141" /><circle
|
||||||
|
style="fill:#fe941d;fill-opacity:1;stroke:#ffffff;stroke-width:3.38226;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||||
|
id="circle3"
|
||||||
|
cx="-68.30127"
|
||||||
|
cy="41.709789"
|
||||||
|
r="5.5813141"
|
||||||
|
transform="rotate(-120)" /><circle
|
||||||
|
style="fill:#001996;fill-opacity:1;stroke:#ffffff;stroke-width:3.38226;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||||
|
id="circle4"
|
||||||
|
cx="-68.30127"
|
||||||
|
cy="-5.1072531"
|
||||||
|
r="5.5813141"
|
||||||
|
transform="rotate(-120)" /><circle
|
||||||
|
style="fill:#ffff04;fill-opacity:1;stroke:#ffffff;stroke-width:3.38226;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||||
|
id="circle5"
|
||||||
|
cx="-18.301271"
|
||||||
|
cy="91.709793"
|
||||||
|
r="5.5813141"
|
||||||
|
transform="rotate(-60)" /><circle
|
||||||
|
style="fill:#770287;fill-opacity:1;stroke:#ffffff;stroke-width:3.38226;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||||
|
id="circle6"
|
||||||
|
cx="-18.301271"
|
||||||
|
cy="44.89275"
|
||||||
|
r="5.5813141"
|
||||||
|
transform="rotate(-60)" /><circle
|
||||||
|
style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:4.56605;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||||
|
id="path7"
|
||||||
|
cx="50"
|
||||||
|
cy="50"
|
||||||
|
r="6.6237097" /><g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
id="layer1-3"
|
||||||
|
transform="matrix(0.05578547,0,0,0.05578547,42.442929,42.442929)"
|
||||||
|
style="stroke:#ffffff"><text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:900;font-stretch:normal;font-size:96.3615px;line-height:0;font-family:'Noto Serif';-inkscape-font-specification:'Noto Serif, Heavy';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:end;text-anchor:end;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
x="-305.64749"
|
||||||
|
y="194.14493"
|
||||||
|
id="text2819"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan2817"
|
||||||
|
style="stroke:#ffffff;stroke-width:0"
|
||||||
|
x="-305.64749"
|
||||||
|
y="194.14493" /></text><circle
|
||||||
|
style="fill:#354b5f;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="path342"
|
||||||
|
cx="135.46666"
|
||||||
|
cy="135.46666"
|
||||||
|
r="135.46666" /><text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:900;font-stretch:normal;font-size:96.3615px;line-height:0;font-family:'Noto Serif';-inkscape-font-specification:'Noto Serif, Heavy';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:end;text-anchor:end;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
x="-305.64749"
|
||||||
|
y="194.14493"
|
||||||
|
id="text2819-3"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan2817-5"
|
||||||
|
style="stroke:#ffffff;stroke-width:0"
|
||||||
|
x="-305.64749"
|
||||||
|
y="194.14493" /></text><g
|
||||||
|
aria-label="❯"
|
||||||
|
id="text2827-6"
|
||||||
|
style="font-size:132.452px;line-height:0;font-family:PowerlineSymbols;-inkscape-font-specification:'PowerlineSymbols, Normal';text-align:end;text-anchor:end;fill:#4e94e4;fill-opacity:1;stroke:#ffffff;stroke-width:0"><path
|
||||||
|
d="M 95.096912,209.8167 143.88912,135.46666 95.096912,61.116629 h 32.818568 l 47.92093,74.350031 -47.92093,74.35004 z"
|
||||||
|
id="path2883-2"
|
||||||
|
style="fill:#4e94e4;fill-opacity:1;stroke:#ffffff;stroke-width:0" /></g></g></g></svg>
|
||||||
|
After Width: | Height: | Size: 6 KiB |
|
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 176 KiB |
|
Before Width: | Height: | Size: 712 B After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 4.8 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 2 KiB |
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 4.6 KiB |
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 7.3 KiB |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 6.6 KiB |
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 8.6 KiB |
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 4.6 KiB |
|
Before Width: | Height: | Size: 4.6 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 7.6 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 5.9 KiB |
|
Before Width: | Height: | Size: 5.9 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 6.2 KiB |
|
Before Width: | Height: | Size: 6.2 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 6.9 KiB After Width: | Height: | Size: 16 KiB |
|
|
@ -1,88 +0,0 @@
|
||||||
import "dart:convert";
|
|
||||||
import "package:emoji_text_field/models/emoji_category.dart";
|
|
||||||
import "package:fast_immutable_collections/fast_immutable_collections.dart";
|
|
||||||
import "package:flutter/material.dart";
|
|
||||||
import "package:flutter_riverpod/flutter_riverpod.dart";
|
|
||||||
import "package:http/http.dart";
|
|
||||||
import "package:nexus/models/emoji.dart";
|
|
||||||
|
|
||||||
typedef EmojiTuple = (IMap<String, EmojiCategory>, IMap<String, List<String>>);
|
|
||||||
|
|
||||||
class EmojiController extends AsyncNotifier<EmojiTuple> {
|
|
||||||
@override
|
|
||||||
Future<EmojiTuple> build() async {
|
|
||||||
final response = await get(
|
|
||||||
Uri.https(
|
|
||||||
"github.com",
|
|
||||||
"github/gemoji/raw/refs/heads/master/db/emoji.json",
|
|
||||||
),
|
|
||||||
);
|
|
||||||
|
|
||||||
if (response.statusCode != 200) {
|
|
||||||
throw Exception("Failed to load emoji data");
|
|
||||||
}
|
|
||||||
|
|
||||||
final data = json.decode(response.body);
|
|
||||||
|
|
||||||
final entries = (data as List)
|
|
||||||
.cast<Map<String, dynamic>>()
|
|
||||||
.map(Emoji.fromJson)
|
|
||||||
.toIList();
|
|
||||||
|
|
||||||
final categoryMap = entries.fold<IMap<String, IList<String>>>(
|
|
||||||
const IMap.empty(),
|
|
||||||
(acc, entry) => acc.update(
|
|
||||||
entry.category,
|
|
||||||
(list) => list.add(entry.emoji),
|
|
||||||
ifAbsent: () => IList([entry.emoji]),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
|
|
||||||
final keywordMap = entries.fold<IMap<String, IList<String>>>(
|
|
||||||
const IMap.empty(),
|
|
||||||
(acc, entry) => acc.add(
|
|
||||||
entry.emoji,
|
|
||||||
IList<String>([...entry.tags, ...entry.aliases, entry.description]),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
|
|
||||||
final customCategories = IMap.fromEntries(
|
|
||||||
categoryMap.entries.map(
|
|
||||||
(entry) => MapEntry(
|
|
||||||
entry.key,
|
|
||||||
EmojiCategory(
|
|
||||||
name: entry.key,
|
|
||||||
icon: switch (entry.key) {
|
|
||||||
"Smileys & Emotion" => Icons.emoji_emotions,
|
|
||||||
"People & Body" => Icons.emoji_people,
|
|
||||||
"Animals & Nature" => Icons.emoji_nature,
|
|
||||||
"Food & Drink" => Icons.emoji_food_beverage,
|
|
||||||
"Travel & Places" => Icons.travel_explore,
|
|
||||||
"Activities" => Icons.sports_soccer,
|
|
||||||
"Objects" => Icons.emoji_objects,
|
|
||||||
"Symbols" => Icons.emoji_symbols,
|
|
||||||
"Flags" => Icons.emoji_flags,
|
|
||||||
_ => Icons.category,
|
|
||||||
},
|
|
||||||
emojis: entry.value.toList(growable: false),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
|
|
||||||
final customKeywords = IMap(
|
|
||||||
Map.fromEntries(
|
|
||||||
keywordMap.entries.map(
|
|
||||||
(e) => MapEntry(e.key, e.value.toList(growable: false)),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
|
|
||||||
return (customCategories, customKeywords);
|
|
||||||
}
|
|
||||||
|
|
||||||
static final provider =
|
|
||||||
AsyncNotifierProvider.autoDispose<EmojiController, EmojiTuple>(
|
|
||||||
EmojiController.new,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
@ -1,17 +0,0 @@
|
||||||
import "package:fast_immutable_collections/fast_immutable_collections.dart";
|
|
||||||
import "package:freezed_annotation/freezed_annotation.dart";
|
|
||||||
part "emoji.freezed.dart";
|
|
||||||
part "emoji.g.dart";
|
|
||||||
|
|
||||||
@freezed
|
|
||||||
abstract class Emoji with _$Emoji {
|
|
||||||
const factory Emoji({
|
|
||||||
required String emoji,
|
|
||||||
required String category,
|
|
||||||
required IList<String> aliases,
|
|
||||||
required String description,
|
|
||||||
required IList<String> tags,
|
|
||||||
}) = _Emoji;
|
|
||||||
|
|
||||||
factory Emoji.fromJson(Map<String, Object?> json) => _$EmojiFromJson(json);
|
|
||||||
}
|
|
||||||
|
|
@ -62,7 +62,7 @@ class LoginPage extends HookConsumerWidget {
|
||||||
children: [
|
children: [
|
||||||
Row(
|
Row(
|
||||||
children: [
|
children: [
|
||||||
SvgPicture.asset("assets/icon.svg", width: 128),
|
SvgPicture.asset("assets/icon.svg"),
|
||||||
SizedBox(width: 12),
|
SizedBox(width: 12),
|
||||||
Expanded(
|
Expanded(
|
||||||
child: Column(
|
child: Column(
|
||||||
|
|
|
||||||
|
|
@ -91,9 +91,7 @@ class ChatBox extends HookConsumerWidget {
|
||||||
padding: EdgeInsets.symmetric(horizontal: 8),
|
padding: EdgeInsets.symmetric(horizontal: 8),
|
||||||
child: Row(
|
child: Row(
|
||||||
spacing: 8,
|
spacing: 8,
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
children: [
|
||||||
children: canSendMessages
|
|
||||||
? [
|
|
||||||
EmojiPickerButton(
|
EmojiPickerButton(
|
||||||
context: context,
|
context: context,
|
||||||
onSelection: (_) => node?.requestFocus(),
|
onSelection: (_) => node?.requestFocus(),
|
||||||
|
|
@ -140,17 +138,16 @@ class ChatBox extends HookConsumerWidget {
|
||||||
triggerCharacter.value = newTriggerCharacter;
|
triggerCharacter.value = newTriggerCharacter;
|
||||||
query.value = newQuery;
|
query.value = newQuery;
|
||||||
},
|
},
|
||||||
triggerCharacterAndStyles: {
|
triggerCharacterAndStyles: {"@": style, "#": style},
|
||||||
"@": style,
|
|
||||||
"#": style,
|
|
||||||
},
|
|
||||||
builder: (context, key) => TextFormField(
|
builder: (context, key) => TextFormField(
|
||||||
enabled: canSendMessages,
|
enabled: canSendMessages,
|
||||||
maxLines: 12,
|
maxLines: 12,
|
||||||
minLines: 1,
|
minLines: 1,
|
||||||
autofocus: true,
|
autofocus: true,
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
hintText: "Your message here...",
|
hintText: canSendMessages
|
||||||
|
? "Your message here..."
|
||||||
|
: "You don't have permission to send messages in this room...",
|
||||||
border: InputBorder.none,
|
border: InputBorder.none,
|
||||||
),
|
),
|
||||||
controller: controller.value,
|
controller: controller.value,
|
||||||
|
|
@ -168,14 +165,6 @@ class ChatBox extends HookConsumerWidget {
|
||||||
icon: Icon(Icons.send),
|
icon: Icon(Icons.send),
|
||||||
tooltip: "Send message",
|
tooltip: "Send message",
|
||||||
),
|
),
|
||||||
]
|
|
||||||
: [
|
|
||||||
Padding(
|
|
||||||
padding: EdgeInsetsGeometry.all(8),
|
|
||||||
child: Text(
|
|
||||||
"You don't have permission to send messages in this room...",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,8 @@
|
||||||
import "package:emoji_text_field/emoji_text_field.dart";
|
import "package:emoji_text_field/emoji_text_field.dart";
|
||||||
import "package:flutter/material.dart";
|
import "package:flutter/material.dart";
|
||||||
import "package:hooks_riverpod/hooks_riverpod.dart";
|
import "package:flutter_hooks/flutter_hooks.dart";
|
||||||
import "package:nexus/controllers/emoji_controller.dart";
|
|
||||||
|
|
||||||
class EmojiPickerButton extends HookConsumerWidget {
|
class EmojiPickerButton extends HookWidget {
|
||||||
final TextEditingController? controller;
|
final TextEditingController? controller;
|
||||||
final void Function(String emoji)? onSelection;
|
final void Function(String emoji)? onSelection;
|
||||||
final VoidCallback? onPressed;
|
final VoidCallback? onPressed;
|
||||||
|
|
@ -17,34 +16,25 @@ class EmojiPickerButton extends HookConsumerWidget {
|
||||||
});
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(_, WidgetRef ref) => IconButton(
|
Widget build(_) => IconButton(
|
||||||
onPressed: () async {
|
onPressed: () {
|
||||||
onPressed?.call();
|
onPressed?.call();
|
||||||
final controller = this.controller ?? TextEditingController();
|
final controller = this.controller ?? TextEditingController();
|
||||||
|
|
||||||
final emojis = await ref.watch(EmojiController.provider.future);
|
|
||||||
if (context.mounted) {
|
|
||||||
showModalBottomSheet(
|
showModalBottomSheet(
|
||||||
context: context,
|
context: context,
|
||||||
builder: (context) => EmojiKeyboardView(
|
builder: (context) => EmojiKeyboardView(
|
||||||
config: EmojiViewConfig(
|
config: EmojiViewConfig(
|
||||||
showRecentTab: false,
|
showRecentTab: false,
|
||||||
customCategories: emojis.$1.unlock,
|
|
||||||
customKeywords: emojis.$2.unlock,
|
|
||||||
backgroundColor: Theme.of(context).colorScheme.surfaceContainer,
|
backgroundColor: Theme.of(context).colorScheme.surfaceContainer,
|
||||||
height: 600,
|
height: 600,
|
||||||
),
|
),
|
||||||
textController: controller
|
textController: controller
|
||||||
..addListener(() {
|
..addListener(() async {
|
||||||
// Without this, there will sometimes be a debugLocked is not true error sometimes
|
Navigator.of(context).pop();
|
||||||
Future.delayed(Duration.zero, () {
|
|
||||||
if (context.mounted) Navigator.of(context).pop();
|
|
||||||
});
|
|
||||||
onSelection?.call(controller.text);
|
onSelection?.call(controller.text);
|
||||||
}),
|
}),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
|
||||||
},
|
},
|
||||||
icon: Icon(Icons.emoji_emotions),
|
icon: Icon(Icons.emoji_emotions),
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -87,11 +87,6 @@ class RoomChat extends HookConsumerWidget {
|
||||||
List<PopupMenuEntry> getMessageOptions(Message message) {
|
List<PopupMenuEntry> getMessageOptions(Message message) {
|
||||||
final isSentByMe = message.authorId == userId;
|
final isSentByMe = message.authorId == userId;
|
||||||
return [
|
return [
|
||||||
if (ref.watch(
|
|
||||||
PowerLevelController.provider(
|
|
||||||
PowerLevelConfig(eventType: "m.reaction"),
|
|
||||||
),
|
|
||||||
))
|
|
||||||
PopupMenuItem(
|
PopupMenuItem(
|
||||||
child: Row(
|
child: Row(
|
||||||
children: [
|
children: [
|
||||||
|
|
@ -131,11 +126,6 @@ class RoomChat extends HookConsumerWidget {
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
if (ref.watch(
|
|
||||||
PowerLevelController.provider(
|
|
||||||
PowerLevelConfig(eventType: "m.room.message"),
|
|
||||||
),
|
|
||||||
))
|
|
||||||
PopupMenuItem(
|
PopupMenuItem(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
relatedMessage.value = message;
|
relatedMessage.value = message;
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ flutter.buildFlutterApplication {
|
||||||
dynamic_system_colors = "sha256-es6rjMK1drkqZBKYUP77yw/q5+0uLwWOEDOXRawy3Dc=";
|
dynamic_system_colors = "sha256-es6rjMK1drkqZBKYUP77yw/q5+0uLwWOEDOXRawy3Dc=";
|
||||||
flutter_chat_ui = "sha256-4fuag7lRH5cMBFD3fUzj2K541JwXLoz8HF/4OMr3uhk=";
|
flutter_chat_ui = "sha256-4fuag7lRH5cMBFD3fUzj2K541JwXLoz8HF/4OMr3uhk=";
|
||||||
flutter_link_previewer = "sha256-4fuag7lRH5cMBFD3fUzj2K541JwXLoz8HF/4OMr3uhk=";
|
flutter_link_previewer = "sha256-4fuag7lRH5cMBFD3fUzj2K541JwXLoz8HF/4OMr3uhk=";
|
||||||
emoji_text_field = "sha256-3TOys09EP2GRo6pUBGPXaqBlE39O2Cmwt42Hs1cTDKo=";
|
emoji_text_field = "sha256-F0QbIHP3wpKoL6QbJ20Oun0SsOdwnXe84IqsK2ad85w=";
|
||||||
};
|
};
|
||||||
|
|
||||||
postInstall = ''
|
postInstall = ''
|
||||||
|
|
|
||||||
|
|
@ -359,7 +359,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
path: "."
|
path: "."
|
||||||
ref: HEAD
|
ref: HEAD
|
||||||
resolved-ref: "5f7baaf8a6f059ec3ab8ff0f5d02339b00bf6997"
|
resolved-ref: "0e90703a6e876939be70bd1816c49cf14474de61"
|
||||||
url: "https://github.com/Henry-Hiles/emoji_text_field"
|
url: "https://github.com/Henry-Hiles/emoji_text_field"
|
||||||
source: git
|
source: git
|
||||||
version: "1.0.0"
|
version: "1.0.0"
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
name: nexus
|
name: nexus
|
||||||
description: "Yet another Matrix client"
|
description: "Yet another Matrix client"
|
||||||
version: 0.1.0
|
version: 1.0.0
|
||||||
publish_to: none
|
publish_to: none
|
||||||
|
|
||||||
flutter:
|
flutter:
|
||||||
|
|
@ -76,8 +76,7 @@ flutter_launcher_icons:
|
||||||
android: true
|
android: true
|
||||||
image_path: assets/icon.png
|
image_path: assets/icon.png
|
||||||
adaptive_icon_background: assets/background.png
|
adaptive_icon_background: assets/background.png
|
||||||
adaptive_icon_foreground: assets/foreground.png
|
adaptive_icon_foreground: assets/smallerForeground.png
|
||||||
adaptive_icon_monochrome: assets/monochrome.png
|
|
||||||
remove_alpha_ios: true
|
remove_alpha_ios: true
|
||||||
windows:
|
windows:
|
||||||
generate: true
|
generate: true
|
||||||
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 4.2 KiB |