From 701eaad5d1cc1c2f4f887d84917ba0f4902e03d8 Mon Sep 17 00:00:00 2001 From: cyanChill <83375816+cyanChill@users.noreply.github.com> Date: Tue, 16 Jun 2026 14:52:13 -0400 Subject: [PATCH 01/17] chore(deps): Add `react-native-nano-icons` --- THIRD_PARTY.md | 1 + mobile/package.json | 1 + mobile/pnpm-lock.yaml | 618 +++++++++++++++++++++++++++++ mobile/src/resources/licenses.json | 7 + 4 files changed, 627 insertions(+) diff --git a/THIRD_PARTY.md b/THIRD_PARTY.md index e55e0dfc5..693138cb7 100644 --- a/THIRD_PARTY.md +++ b/THIRD_PARTY.md @@ -42,6 +42,7 @@ | react-native-gesture-handler | MIT | https://github.com/software-mansion/react-native-gesture-handler | | react-native-keyboard-controller | MIT | https://github.com/kirillzyusko/react-native-keyboard-controller | | react-native-markdown-renderer | MIT | https://github.com/mientjan/react-native-markdown-renderer | +| react-native-nano-icons | MIT | https://github.com/software-mansion-labs/react-native-nano-icons | | react-native-nitro-modules | MIT | https://github.com/mrousavy/nitro | | react-native-pager-view | MIT | https://github.com/callstack/react-native-pager-view | | react-native-reanimated | MIT | https://github.com/software-mansion/react-native-reanimated | diff --git a/mobile/package.json b/mobile/package.json index 822cd2f04..9f1926c3a 100644 --- a/mobile/package.json +++ b/mobile/package.json @@ -60,6 +60,7 @@ "react-native-gesture-handler": "3.0.1", "react-native-keyboard-controller": "1.21.11", "react-native-markdown-renderer": "4.1.1", + "react-native-nano-icons": "0.1.8", "react-native-nitro-modules": "0.35.9", "react-native-pager-view": "8.0.2", "react-native-reanimated": "4.3.1", diff --git a/mobile/pnpm-lock.yaml b/mobile/pnpm-lock.yaml index d55cd413f..5f48f5bfa 100644 --- a/mobile/pnpm-lock.yaml +++ b/mobile/pnpm-lock.yaml @@ -123,6 +123,9 @@ importers: react-native-markdown-renderer: specifier: 4.1.1 version: 4.1.1(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7))(@types/react@19.2.17)(react@19.2.3))(react@19.2.3) + react-native-nano-icons: + specifier: 0.1.8 + version: 0.1.8(@noble/hashes@2.2.0)(expo@56.0.11)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7))(@types/react@19.2.17)(react@19.2.3))(react@19.2.3)(typescript@6.0.3) react-native-nitro-modules: specifier: 0.35.9 version: 0.35.9(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7))(@types/react@19.2.17)(react@19.2.3))(react@19.2.3) @@ -220,6 +223,23 @@ importers: packages: + '@acemir/cssom@0.9.31': + resolution: {integrity: sha512-ZnR3GSaH+/vJ0YlHau21FjfLYjMpYVIzTD8M8vIEQvIGxeOXyXdzCI140rrCY862p/C/BbzWsjc1dgnM9mkoTA==} + + '@asamuzakjp/css-color@5.1.11': + resolution: {integrity: sha512-KVw6qIiCTUQhByfTd78h2yD1/00waTmm9uy/R7Ck/ctUyAPj+AEDLkQIdJW0T8+qGgj3j5bpNKK7Q3G+LedJWg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + + '@asamuzakjp/dom-selector@6.8.1': + resolution: {integrity: sha512-MvRz1nCqW0fsy8Qz4dnLIvhOlMzqDVBabZx6lH+YywFDdjXhMY37SmpV1XFX3JzG5GWHn63j6HX6QPr3lZXHvQ==} + + '@asamuzakjp/generational-cache@1.0.1': + resolution: {integrity: sha512-wajfB8KqzMCN2KGNFdLkReeHncd0AslUSrvHVvvYWuU8ghncRJoA50kT3zP9MVL0+9g4/67H+cdvBskj9THPzg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + + '@asamuzakjp/nwsapi@2.3.9': + resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==} + '@babel/code-frame@7.29.7': resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==} engines: {node: '>=6.9.0'} @@ -610,6 +630,46 @@ packages: peerDependencies: react-native: '>=0.47.0' + '@bramus/specificity@2.4.2': + resolution: {integrity: sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw==} + hasBin: true + + '@csstools/color-helpers@6.0.2': + resolution: {integrity: sha512-LMGQLS9EuADloEFkcTBR3BwV/CGHV7zyDxVRtVDTwdI2Ca4it0CCVTT9wCkxSgokjE5Ho41hEPgb8OEUwoXr6Q==} + engines: {node: '>=20.19.0'} + + '@csstools/css-calc@3.2.1': + resolution: {integrity: sha512-DtdHlgXh5ZkA43cwBcAm+huzgJiwx3ZTWVjBs94kwz2xKqSimDA3lBgCjphYgwgVUMWatSM0pDd8TILB1yrVVg==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@csstools/css-parser-algorithms': ^4.0.0 + '@csstools/css-tokenizer': ^4.0.0 + + '@csstools/css-color-parser@4.1.7': + resolution: {integrity: sha512-CmjJFQTFQx/U/xNJhSjCQ0ilpesPmNQ8+eOUeM/+kDOVW33qsIjeOXc27vrQDdWVkf83ZSWwtg7kXSUvKDJ8cQ==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@csstools/css-parser-algorithms': ^4.0.0 + '@csstools/css-tokenizer': ^4.0.0 + + '@csstools/css-parser-algorithms@4.0.0': + resolution: {integrity: sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@csstools/css-tokenizer': ^4.0.0 + + '@csstools/css-syntax-patches-for-csstree@1.1.5': + resolution: {integrity: sha512-oNjBvzLq2GPZtJphCjLqXow/cHySHSgtxvKZb7OqSZ/xHgw6NWNhfad+6AB9cLeVm6eA9d/qMll3JdEHjy6M+A==} + peerDependencies: + css-tree: ^3.2.1 + peerDependenciesMeta: + css-tree: + optional: true + + '@csstools/css-tokenizer@4.0.0': + resolution: {integrity: sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==} + engines: {node: '>=20.19.0'} + '@drizzle-team/brocli@0.10.2': resolution: {integrity: sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w==} @@ -1115,6 +1175,15 @@ packages: resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@exodus/bytes@1.15.1': + resolution: {integrity: sha512-S6mL0yNB/Abt9Ei4tq8gDhcczc4S3+vQ4ra7vxnAf+YHC02srtqxKKZghx2Dq6p0e66THKwR6r8N6P95wEty7Q==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + peerDependencies: + '@noble/hashes': ^1.8.0 || ^2.0.0 + peerDependenciesMeta: + '@noble/hashes': + optional: true + '@expo/cli@56.1.15': resolution: {integrity: sha512-ik6++YzURB2d/mSEfYwbuNa19uOWZwVHy9THCQ/pPr6mzplKl4w9I4nlYF9lx7oluNC3NvxsSZ8/rgpVKEOJTA==} hasBin: true @@ -1451,6 +1520,10 @@ packages: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} + '@isaacs/cliui@9.0.0': + resolution: {integrity: sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==} + engines: {node: '>=18'} + '@isaacs/ttlcache@1.4.1': resolution: {integrity: sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==} engines: {node: '>=12'} @@ -1930,6 +2003,9 @@ packages: '@tybys/wasm-util@0.10.2': resolution: {integrity: sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==} + '@types/emscripten@1.41.5': + resolution: {integrity: sha512-cMQm7pxu6BxtHyqJ7mQZ2kXWV5SLmugybFdHCBbJ5eHzOo6VhBckEgAT3//rP5FwPHNPeEiq4SmQ5ucBwsOo4Q==} + '@types/estree@1.0.9': resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} @@ -1957,6 +2033,9 @@ packages: '@types/react@19.2.17': resolution: {integrity: sha512-MXfmqaVPEVgkBT/aY0aGCkRWWtByiYQXo3xdQ8r5RzuFrPiRn8Gar2tQdXSUQ2GKV3bkXckek89V8wQBY2Q/Aw==} + '@types/sax@1.2.7': + resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} + '@types/yargs-parser@21.0.3': resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} @@ -2353,6 +2432,9 @@ packages: resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==} engines: {node: '>= 0.8'} + bidi-js@1.0.3: + resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==} + big-integer@1.6.52: resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} engines: {node: '>=0.6'} @@ -2438,6 +2520,10 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} + chalk@5.6.2: + resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + chrome-launcher@0.15.2: resolution: {integrity: sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==} engines: {node: '>=12.13.0'} @@ -2457,10 +2543,18 @@ packages: resolution: {integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==} engines: {node: '>=4'} + cli-cursor@5.0.0: + resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} + engines: {node: '>=18'} + cli-spinners@2.9.2: resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} + cli-spinners@3.4.0: + resolution: {integrity: sha512-bXfOC4QcT1tKXGorxL3wbJm6XJPDqEnij2gQ2m7ESQuE+/z9YFIWnl/5RpTiKWbMq3EVKR4fRLJGn6DVfu0mpw==} + engines: {node: '>=18.20'} + cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} @@ -2555,17 +2649,32 @@ packages: resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} engines: {node: '>=8.0.0'} + css-tree@3.2.1: + resolution: {integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + css-what@6.2.2: resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} engines: {node: '>= 6'} + cssstyle@6.2.0: + resolution: {integrity: sha512-Fm5NvhYathRnXNVndkUsCCuR63DCLVVwGOOwQw782coXFi5HhkXdu289l59HlXZBawsyNccXfWRYvLzcDCdDig==} + engines: {node: '>=20'} + csstype@3.2.3: resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + cubic2quad@1.2.1: + resolution: {integrity: sha512-wT5Y7mO8abrV16gnssKdmIhIbA9wSkeMzhh27jAguKrV82i24wER0vL5TGhUJ9dbJNDcigoRZ0IAHFEEEI4THQ==} + culori@4.0.2: resolution: {integrity: sha512-1+BhOB8ahCn4O0cep0Sh2l9KCOfOdY+BXJnKMHFFzDEouSr/el18QwXEMRlOj9UY5nCeA8UN3a/82rUWRBeyBw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + data-urls@7.0.0: + resolution: {integrity: sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + data-view-buffer@1.0.2: resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} engines: {node: '>= 0.4'} @@ -2603,6 +2712,9 @@ packages: supports-color: optional: true + decimal.js@10.6.0: + resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} + decode-uri-component@0.2.2: resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} engines: {node: '>=0.10'} @@ -2796,6 +2908,10 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} + entities@8.0.0: + resolution: {integrity: sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA==} + engines: {node: '>=20.19.0'} + error-causes@3.0.2: resolution: {integrity: sha512-i0B8zq1dHL6mM85FGoxaJnVtx6LD5nL2v0hlpGdntg5FOSyzQ46c9lmz5qx0xRS2+PWHGOHcYxGIBC5Le2dRMw==} @@ -3228,6 +3344,9 @@ packages: flow-enums-runtime@0.0.6: resolution: {integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==} + fonteditor-core@2.6.3: + resolution: {integrity: sha512-YUryIKjkenjZ41E7JvM3V+02Ak4mTHDDTwBWgs9KBzypzHqLZHuua1UDRevZNTKawmnq1dbBAa70Jddl2+F4FQ==} + fontfaceobserver@2.3.0: resolution: {integrity: sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==} @@ -3278,6 +3397,10 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} + get-east-asian-width@1.6.0: + resolution: {integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==} + engines: {node: '>=18'} + get-intrinsic@1.3.0: resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} @@ -3310,6 +3433,12 @@ packages: deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me hasBin: true + glob@11.1.0: + resolution: {integrity: sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==} + engines: {node: 20 || >=22} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + hasBin: true + glob@13.0.6: resolution: {integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==} engines: {node: 18 || 20 || >=22} @@ -3397,6 +3526,10 @@ packages: resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} engines: {node: ^16.14.0 || >=18.0.0} + html-encoding-sniffer@6.0.0: + resolution: {integrity: sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + html-parse-stringify@3.0.1: resolution: {integrity: sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==} @@ -3404,6 +3537,10 @@ packages: resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} engines: {node: '>= 0.8'} + http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} + https-proxy-agent@7.0.6: resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} engines: {node: '>= 14'} @@ -3525,6 +3662,10 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} + is-interactive@2.0.0: + resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} + engines: {node: '>=12'} + is-map@2.0.3: resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} engines: {node: '>= 0.4'} @@ -3541,6 +3682,9 @@ packages: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} + is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + is-regex@1.2.1: resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} engines: {node: '>= 0.4'} @@ -3565,6 +3709,10 @@ packages: resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} engines: {node: '>= 0.4'} + is-unicode-supported@2.1.0: + resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} + engines: {node: '>=18'} + is-weakmap@2.0.2: resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} engines: {node: '>= 0.4'} @@ -3594,6 +3742,10 @@ packages: jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + jackspeak@4.2.3: + resolution: {integrity: sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==} + engines: {node: 20 || >=22} + jest-get-type@29.6.3: resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3645,6 +3797,15 @@ packages: jsc-safe-url@0.2.4: resolution: {integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==} + jsdom@28.1.0: + resolution: {integrity: sha512-0+MoQNYyr2rBHqO1xilltfDjV9G7ymYGlAUazgcDLQaUf8JDHbuGwsxN6U9qWaElZ4w1B2r7yEGIL3GdeW3Rug==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + peerDependencies: + canvas: ^3.0.0 + peerDependenciesMeta: + canvas: + optional: true + jsesc@3.1.0: resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} engines: {node: '>=6'} @@ -3864,10 +4025,17 @@ packages: lodash.throttle@4.1.1: resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} + lodash@4.18.1: + resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} + log-symbols@2.2.0: resolution: {integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==} engines: {node: '>=4'} + log-symbols@7.0.1: + resolution: {integrity: sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==} + engines: {node: '>=18'} + loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true @@ -3906,6 +4074,9 @@ packages: mdn-data@2.0.14: resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} + mdn-data@2.27.1: + resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==} + mdurl@2.0.0: resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} @@ -3988,6 +4159,9 @@ packages: engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} hasBin: true + microbuffer@1.0.0: + resolution: {integrity: sha512-O/SUXauVN4x6RaEJFqSPcXNtLFL+QzJHKZlyDVYFwcDDRVca3Fa/37QXXC+4zAGGa4YhHrHxKXuuHvLDIQECtA==} + micromatch@4.0.8: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} @@ -4017,6 +4191,10 @@ packages: resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==} engines: {node: '>=4'} + mimic-function@5.0.1: + resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} + engines: {node: '>=18'} + minimatch@10.2.5: resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} engines: {node: 18 || 20 || >=22} @@ -4174,6 +4352,10 @@ packages: resolution: {integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==} engines: {node: '>=4'} + onetime@7.0.0: + resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} + engines: {node: '>=18'} + open@7.4.2: resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} engines: {node: '>=8'} @@ -4190,6 +4372,10 @@ packages: resolution: {integrity: sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==} engines: {node: '>=6'} + ora@9.4.0: + resolution: {integrity: sha512-84cglkRILFxdtA8hAvLNdMrtBpPNBTrQ9/ulg0FA7xLMnD6mifv+enAIeRmvtv+WgdCE+LPGOfQmtJRrVaIVhQ==} + engines: {node: '>=20'} + own-keys@1.0.1: resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} engines: {node: '>= 0.4'} @@ -4213,6 +4399,9 @@ packages: resolution: {integrity: sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ==} engines: {node: '>=10'} + parse5@8.0.1: + resolution: {integrity: sha512-z1e/HMG90obSGeidlli3hj7cbocou0/wa5HacvI3ASx34PecNjNQeaHNo5WIZpWofN9kgkqV1q5YvXe3F0FoPw==} + parseurl@1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} @@ -4242,6 +4431,9 @@ packages: path-to-regexp@0.1.13: resolution: {integrity: sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==} + pathkit-wasm@1.0.0: + resolution: {integrity: sha512-oREIcGpwnBBto6PfB3C20aIw9jBPLcSNVF1AlL5tGlXsoL2zqWVuD0mi8WMJQHHNemm6aR1hHH2lz+TO551Fgw==} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -4374,6 +4566,10 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} + pyodide@0.29.4: + resolution: {integrity: sha512-tCseTsqU3kSxZIjkue5zXxTMNEwrKZwOIIEQRBA/VzHxFN1hoCxe4w41phfCdHd9it9RcCNQb5K/Re0InqMgvA==} + engines: {node: '>=18.0.0'} + qs@6.15.2: resolution: {integrity: sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw==} engines: {node: '>=0.6'} @@ -4484,6 +4680,17 @@ packages: react: '>=18.0.0' react-native: '>=0.73.0' + react-native-nano-icons@0.1.8: + resolution: {integrity: sha512-7BAiDFCslWsnpm6lpEezVkCA68xNqMrNiGCQR58MeuWaEtlCY2cojQQGCLXdfFPqd31el5buzPThQCEaLujZPg==} + hasBin: true + peerDependencies: + expo: '*' + react: '*' + react-native: '*' + peerDependenciesMeta: + expo: + optional: true + react-native-nitro-modules@0.35.9: resolution: {integrity: sha512-yCO6eJ85SPPUo4a4an7H5oj6wPCSIT72fbjr5WZ/20n6zswaJ2gNNpnWtg2We0AZwkAOjSqkOJ0Vjc05p6kGiA==} peerDependencies: @@ -4600,6 +4807,10 @@ packages: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + require-resolve@0.0.2: resolution: {integrity: sha512-eafQVaxdQsWUB8HybwognkdcIdKdQdQBwTxH48FuE6WI0owZGKp63QYr1MRp73PoX0AcyB7MDapZThYUY8FD0A==} @@ -4631,6 +4842,10 @@ packages: resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==} engines: {node: '>=4'} + restore-cursor@5.1.0: + resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} + engines: {node: '>=18'} + reusify@1.1.0: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -4663,6 +4878,10 @@ packages: resolution: {integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==} engines: {node: '>=11.0.0'} + saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} + scheduler@0.27.0: resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} @@ -4822,6 +5041,10 @@ packages: resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} engines: {node: '>= 0.8'} + stdin-discarder@0.3.2: + resolution: {integrity: sha512-eCPu1qRxPVkl5605OTWF8Wz40b4Mf45NY5LQmVPQ599knfs5QhASUm9GbJ5BDMDOXgrnh0wyEdvzmL//YMlw0A==} + engines: {node: '>=18'} + stop-iteration-iterator@1.1.0: resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} engines: {node: '>= 0.4'} @@ -4848,6 +5071,10 @@ packages: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} + string-width@8.2.1: + resolution: {integrity: sha512-IIaP0g3iy9Cyy18w3M9YcaDudujEAVHKt3a3QJg1+sr/oX96TbaGUubG0hJyCjCBThFH+tFpcIyoUHUn1ogaLA==} + engines: {node: '>=20'} + string.prototype.matchall@4.0.12: resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} engines: {node: '>= 0.4'} @@ -4910,6 +5137,25 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + svg-pathdata@7.2.0: + resolution: {integrity: sha512-qd+AxqMpfRrRQaWb2SrNFvn69cvl6piqY8TxhYl2Li1g4/LO5F9NJb5wI4vNwRryqgSgD43gYKLm/w3ag1bKvQ==} + engines: {node: '>=20.11.1'} + + svg2ttf@6.1.0: + resolution: {integrity: sha512-EjxgcmhKcBpx/3fR1hPwVtJAbUc/ZsDpwOTF74SI3PbzCg4pDHnxVmoSuqgEqxVJGqqkSCI6+82cucpn2D5aOw==} + hasBin: true + + svgicons2svgfont@15.0.1: + resolution: {integrity: sha512-rE3BoIipD6DxBejPswalKRZZYA+7sy4miHqiHgXB0zI1xJD3gSCVrXh2R6Sdh9E4XDTxYp7gDxGW2W8DIBif/g==} + engines: {node: '>=20.11.1'} + hasBin: true + + svgpath@2.6.0: + resolution: {integrity: sha512-OIWR6bKzXvdXYyO4DK/UWa1VA1JeKq8E+0ug2DG98Y/vOmMpfZNj+TIG988HjfYSqtcy/hFOtZq/n/j5GSESNg==} + + symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + synckit@0.11.13: resolution: {integrity: sha512-eNRKgb3z66Yp3D2CixVujOUvXLFUTij/zVnV8KRyvFdQwpz7I5DS8UfRkTeLzb64u+dkzDSdelE24izu+zSSUg==} engines: {node: ^14.18.0 || >=16.0.0} @@ -4943,6 +5189,13 @@ packages: resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} engines: {node: '>=12.0.0'} + tldts-core@7.4.3: + resolution: {integrity: sha512-27ep5H9PzdBrNd5OFM/j3WCU8F3kPwM9D0BOaOf7uYfxMJfyr0K5Tjj69Gri+sZlh2WXd5buIm47NuPF29CDiw==} + + tldts@7.4.3: + resolution: {integrity: sha512-A3BDQBeeukYPzB4QdQ1DtdlUmp4x2OCH8n5UVhEWbyANxNep8GavottKzd1xYKFJKjUgMyPT7EzOfnBO55s8Sg==} + hasBin: true + tmpl@1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} @@ -4957,6 +5210,17 @@ packages: toqr@0.1.1: resolution: {integrity: sha512-FWAPzCIHZHnrE/5/w9MPk0kK25hSQSH2IKhYh9PyjS3SG/+IEMvlwIHbhz+oF7xl54I+ueZlVnMjyzdSwLmAwA==} + tough-cookie@6.0.1: + resolution: {integrity: sha512-LktZQb3IeoUWB9lqR5EWTHgW/VTITCXg4D21M+lvybRVdylLrRMnqaIONLVb5mav8vM19m44HIcGq4qASeu2Qw==} + engines: {node: '>=16'} + + tr46@6.0.0: + resolution: {integrity: sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==} + engines: {node: '>=20'} + + transformation-matrix@3.1.0: + resolution: {integrity: sha512-oYubRWTi2tYFHAL2J8DLvPIqIYcYZ0fSOi2vmSy042Ho4jBW2ce6VP7QfD44t65WQz6bw5w1Pk22J7lcUpaTKA==} + treeify@1.1.0: resolution: {integrity: sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==} engines: {node: '>=0.6'} @@ -5040,6 +5304,10 @@ packages: resolution: {integrity: sha512-4yqz8a3n5HmGTlsbADNtr/dJlhkh/55Rq798G6ibiULcXbDtaLpTl1pvdqcbFfeoj3iSi52lePFM7h9H21cw/A==} engines: {node: '>=18.17'} + undici@7.28.0: + resolution: {integrity: sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA==} + engines: {node: '>=20.18.1'} + unicode-canonical-property-names-ecmascript@2.0.1: resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} engines: {node: '>=4'} @@ -5126,6 +5394,10 @@ packages: resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} engines: {node: '>=0.10.0'} + w3c-xmlserializer@5.0.0: + resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} + engines: {node: '>=18'} + walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} @@ -5135,12 +5407,24 @@ packages: wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + webidl-conversions@8.0.1: + resolution: {integrity: sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==} + engines: {node: '>=20'} + whatwg-fetch@3.6.20: resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} + whatwg-mimetype@5.0.0: + resolution: {integrity: sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==} + engines: {node: '>=20'} + whatwg-url-minimum@0.1.2: resolution: {integrity: sha512-XPEm0XFQWNVG292lII1PrRRJl3sItrs7CettZ4ncYxuDVpLyy+NwlGyut2hXI0JswcJUxeCH+CyOJK0ZzAXD6A==} + whatwg-url@16.0.1: + resolution: {integrity: sha512-1to4zXBxmXHV3IiSSEInrreIlu02vUOvrhxJJH5vcxYTBDAx51cqZiKdyTxlecdKNSjj8EcxGBxNf6Vg+945gw==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + which-boxed-primitive@1.1.1: resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} engines: {node: '>= 0.4'} @@ -5209,6 +5493,10 @@ packages: resolution: {integrity: sha512-+8qTc3zv2UcJ1v9IsSIce37Dl4MQG14Cp7tWrwmy202UaI1wqRukw5QMX1JHsV+DX64yw77EgGsj2s5wGvuMbQ==} engines: {node: '>= 16'} + xml-name-validator@5.0.0: + resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} + engines: {node: '>=18'} + xml-parser-xo@4.1.6: resolution: {integrity: sha512-mXbSNSM+rIwndoxSwmFa83bOdeP8G/cOGr7XvxA67X7ebCzoAuVez9JYDCDub3zRDNBZxIbfjuXLSsamr7NfwQ==} engines: {node: '>= 20'} @@ -5225,6 +5513,9 @@ packages: resolution: {integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==} engines: {node: '>=8.0'} + xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} @@ -5245,10 +5536,18 @@ packages: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} + yerror@8.0.0: + resolution: {integrity: sha512-FemWD5/UqNm8ffj8oZIbjWXIF2KE0mZssggYpdaQkWDDgXBQ/35PNIxEuz6/YLn9o0kOxDBNJe8x8k9ljD7k/g==} + engines: {node: '>=18.16.0'} + yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + yoctocolors@2.1.2: + resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} + engines: {node: '>=18'} + zod-validation-error@4.0.2: resolution: {integrity: sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==} engines: {node: '>=18.0.0'} @@ -5281,6 +5580,28 @@ packages: snapshots: + '@acemir/cssom@0.9.31': {} + + '@asamuzakjp/css-color@5.1.11': + dependencies: + '@asamuzakjp/generational-cache': 1.0.1 + '@csstools/css-calc': 3.2.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-color-parser': 4.1.7(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 + + '@asamuzakjp/dom-selector@6.8.1': + dependencies: + '@asamuzakjp/nwsapi': 2.3.9 + bidi-js: 1.0.3 + css-tree: 3.2.1 + is-potential-custom-element-name: 1.0.1 + lru-cache: 11.5.1 + + '@asamuzakjp/generational-cache@1.0.1': {} + + '@asamuzakjp/nwsapi@2.3.9': {} + '@babel/code-frame@7.29.7': dependencies: '@babel/helper-validator-identifier': 7.29.7 @@ -5769,6 +6090,34 @@ snapshots: dependencies: react-native: 0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7))(@types/react@19.2.17)(react@19.2.3) + '@bramus/specificity@2.4.2': + dependencies: + css-tree: 3.2.1 + + '@csstools/color-helpers@6.0.2': {} + + '@csstools/css-calc@3.2.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': + dependencies: + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 + + '@csstools/css-color-parser@4.1.7(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': + dependencies: + '@csstools/color-helpers': 6.0.2 + '@csstools/css-calc': 3.2.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 + + '@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0)': + dependencies: + '@csstools/css-tokenizer': 4.0.0 + + '@csstools/css-syntax-patches-for-csstree@1.1.5(css-tree@3.2.1)': + optionalDependencies: + css-tree: 3.2.1 + + '@csstools/css-tokenizer@4.0.0': {} + '@drizzle-team/brocli@0.10.2': {} '@emnapi/core@1.10.0': @@ -6070,6 +6419,10 @@ snapshots: '@eslint/core': 0.17.0 levn: 0.4.1 + '@exodus/bytes@1.15.1(@noble/hashes@2.2.0)': + optionalDependencies: + '@noble/hashes': 2.2.0 + '@expo/cli@56.1.15(@expo/dom-webview@56.0.5)(expo-constants@56.0.18(expo@56.0.11)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7))(@types/react@19.2.17)(react@19.2.3)))(expo-font@56.0.6(expo@56.0.11)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7))(@types/react@19.2.17)(react@19.2.3))(react@19.2.3))(expo@56.0.11)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7))(@types/react@19.2.17)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)': dependencies: '@expo/code-signing-certificates': 0.0.6 @@ -6545,6 +6898,8 @@ snapshots: wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 + '@isaacs/cliui@9.0.0': {} + '@isaacs/ttlcache@1.4.1': {} '@jest/schemas@29.6.3': @@ -7051,6 +7406,8 @@ snapshots: tslib: 2.8.1 optional: true + '@types/emscripten@1.41.5': {} + '@types/estree@1.0.9': {} '@types/istanbul-lib-coverage@2.0.6': {} @@ -7079,6 +7436,10 @@ snapshots: dependencies: csstype: 3.2.3 + '@types/sax@1.2.7': + dependencies: + '@types/node': 25.9.3 + '@types/yargs-parser@21.0.3': {} '@types/yargs@17.0.35': @@ -7507,6 +7868,10 @@ snapshots: dependencies: safe-buffer: 5.1.2 + bidi-js@1.0.3: + dependencies: + require-from-string: 2.0.2 + big-integer@1.6.52: {} bignumber.js@9.3.1: {} @@ -7609,6 +7974,8 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 + chalk@5.6.2: {} + chrome-launcher@0.15.2: dependencies: '@types/node': 25.9.3 @@ -7636,8 +8003,14 @@ snapshots: dependencies: restore-cursor: 2.0.0 + cli-cursor@5.0.0: + dependencies: + restore-cursor: 5.1.0 + cli-spinners@2.9.2: {} + cli-spinners@3.4.0: {} + cliui@8.0.1: dependencies: string-width: 4.2.3 @@ -7740,12 +8113,33 @@ snapshots: mdn-data: 2.0.14 source-map: 0.6.1 + css-tree@3.2.1: + dependencies: + mdn-data: 2.27.1 + source-map-js: 1.2.1 + css-what@6.2.2: {} + cssstyle@6.2.0: + dependencies: + '@asamuzakjp/css-color': 5.1.11 + '@csstools/css-syntax-patches-for-csstree': 1.1.5(css-tree@3.2.1) + css-tree: 3.2.1 + lru-cache: 11.5.1 + csstype@3.2.3: {} + cubic2quad@1.2.1: {} + culori@4.0.2: {} + data-urls@7.0.0(@noble/hashes@2.2.0): + dependencies: + whatwg-mimetype: 5.0.0 + whatwg-url: 16.0.1(@noble/hashes@2.2.0) + transitivePeerDependencies: + - '@noble/hashes' + data-view-buffer@1.0.2: dependencies: call-bound: 1.0.4 @@ -7776,6 +8170,8 @@ snapshots: dependencies: ms: 2.1.3 + decimal.js@10.6.0: {} + decode-uri-component@0.2.2: {} deep-is@0.1.4: {} @@ -7870,6 +8266,8 @@ snapshots: entities@4.5.0: {} + entities@8.0.0: {} + error-causes@3.0.2: {} error-stack-parser@2.1.4: @@ -8564,6 +8962,10 @@ snapshots: flow-enums-runtime@0.0.6: {} + fonteditor-core@2.6.3: + dependencies: + '@xmldom/xmldom': 0.8.13 + fontfaceobserver@2.3.0: {} for-each@0.3.5: @@ -8606,6 +9008,8 @@ snapshots: get-caller-file@2.0.5: {} + get-east-asian-width@1.6.0: {} + get-intrinsic@1.3.0: dependencies: call-bind-apply-helpers: 1.0.2 @@ -8653,6 +9057,15 @@ snapshots: package-json-from-dist: 1.0.1 path-scurry: 1.11.1 + glob@11.1.0: + dependencies: + foreground-child: 3.3.1 + jackspeak: 4.2.3 + minimatch: 10.2.5 + minipass: 7.1.3 + package-json-from-dist: 1.0.1 + path-scurry: 2.0.2 + glob@13.0.6: dependencies: minimatch: 10.2.5 @@ -8726,6 +9139,12 @@ snapshots: dependencies: lru-cache: 10.4.3 + html-encoding-sniffer@6.0.0(@noble/hashes@2.2.0): + dependencies: + '@exodus/bytes': 1.15.1(@noble/hashes@2.2.0) + transitivePeerDependencies: + - '@noble/hashes' + html-parse-stringify@3.0.1: dependencies: void-elements: 3.1.0 @@ -8738,6 +9157,13 @@ snapshots: statuses: 2.0.2 toidentifier: 1.0.1 + http-proxy-agent@7.0.2: + dependencies: + agent-base: 7.1.4 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + https-proxy-agent@7.0.6: dependencies: agent-base: 7.1.4 @@ -8856,6 +9282,8 @@ snapshots: dependencies: is-extglob: 2.1.1 + is-interactive@2.0.0: {} + is-map@2.0.3: {} is-negative-zero@2.0.3: {} @@ -8867,6 +9295,8 @@ snapshots: is-number@7.0.0: {} + is-potential-custom-element-name@1.0.1: {} + is-regex@1.2.1: dependencies: call-bound: 1.0.4 @@ -8895,6 +9325,8 @@ snapshots: dependencies: which-typed-array: 1.1.22 + is-unicode-supported@2.1.0: {} + is-weakmap@2.0.2: {} is-weakref@1.1.1: @@ -8929,6 +9361,10 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 + jackspeak@4.2.3: + dependencies: + '@isaacs/cliui': 9.0.0 + jest-get-type@29.6.3: {} jest-util@29.7.0: @@ -8975,6 +9411,33 @@ snapshots: jsc-safe-url@0.2.4: {} + jsdom@28.1.0(@noble/hashes@2.2.0): + dependencies: + '@acemir/cssom': 0.9.31 + '@asamuzakjp/dom-selector': 6.8.1 + '@bramus/specificity': 2.4.2 + '@exodus/bytes': 1.15.1(@noble/hashes@2.2.0) + cssstyle: 6.2.0 + data-urls: 7.0.0(@noble/hashes@2.2.0) + decimal.js: 10.6.0 + html-encoding-sniffer: 6.0.0(@noble/hashes@2.2.0) + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + is-potential-custom-element-name: 1.0.1 + parse5: 8.0.1 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 6.0.1 + undici: 7.28.0 + w3c-xmlserializer: 5.0.0 + webidl-conversions: 8.0.1 + whatwg-mimetype: 5.0.0 + whatwg-url: 16.0.1(@noble/hashes@2.2.0) + xml-name-validator: 5.0.0 + transitivePeerDependencies: + - '@noble/hashes' + - supports-color + jsesc@3.1.0: {} json-buffer@3.0.1: {} @@ -9146,10 +9609,17 @@ snapshots: lodash.throttle@4.1.1: {} + lodash@4.18.1: {} + log-symbols@2.2.0: dependencies: chalk: 2.4.2 + log-symbols@7.0.1: + dependencies: + is-unicode-supported: 2.1.0 + yoctocolors: 2.1.2 + loose-envify@1.4.0: dependencies: js-tokens: 4.0.0 @@ -9187,6 +9657,8 @@ snapshots: mdn-data@2.0.14: {} + mdn-data@2.27.1: {} + mdurl@2.0.0: {} media-typer@0.3.0: {} @@ -9375,6 +9847,8 @@ snapshots: - supports-color - utf-8-validate + microbuffer@1.0.0: {} + micromatch@4.0.8: dependencies: braces: 3.0.3 @@ -9396,6 +9870,8 @@ snapshots: mimic-fn@1.2.0: {} + mimic-function@5.0.1: {} + minimatch@10.2.5: dependencies: brace-expansion: 5.0.6 @@ -9548,6 +10024,10 @@ snapshots: dependencies: mimic-fn: 1.2.0 + onetime@7.0.0: + dependencies: + mimic-function: 5.0.1 + open@7.4.2: dependencies: is-docker: 2.2.1 @@ -9577,6 +10057,17 @@ snapshots: strip-ansi: 5.2.0 wcwidth: 1.0.1 + ora@9.4.0: + dependencies: + chalk: 5.6.2 + cli-cursor: 5.0.0 + cli-spinners: 3.4.0 + is-interactive: 2.0.0 + is-unicode-supported: 2.1.0 + log-symbols: 7.0.1 + stdin-discarder: 0.3.2 + string-width: 8.2.1 + own-keys@1.0.1: dependencies: get-intrinsic: 1.3.0 @@ -9601,6 +10092,10 @@ snapshots: dependencies: pngjs: 3.4.0 + parse5@8.0.1: + dependencies: + entities: 8.0.0 + parseurl@1.3.3: {} path-exists@4.0.0: {} @@ -9623,6 +10118,8 @@ snapshots: path-to-regexp@0.1.13: {} + pathkit-wasm@1.0.0: {} + picocolors@1.1.1: {} picomatch@2.3.2: {} @@ -9693,6 +10190,14 @@ snapshots: punycode@2.3.1: {} + pyodide@0.29.4: + dependencies: + '@types/emscripten': 1.41.5 + ws: 8.21.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + qs@6.15.2: dependencies: side-channel: 1.1.1 @@ -9805,6 +10310,31 @@ snapshots: react: 19.2.3 react-native: 0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7))(@types/react@19.2.17)(react@19.2.3) + react-native-nano-icons@0.1.8(@noble/hashes@2.2.0)(expo@56.0.11)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7))(@types/react@19.2.17)(react@19.2.3))(react@19.2.3)(typescript@6.0.3): + dependencies: + '@expo/config-plugins': 56.0.8(typescript@6.0.3) + chalk: 5.6.2 + fonteditor-core: 2.6.3 + jsdom: 28.1.0(@noble/hashes@2.2.0) + ora: 9.4.0 + pathkit-wasm: 1.0.0 + plist: 3.1.1 + pyodide: 0.29.4 + react: 19.2.3 + react-native: 0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7))(@types/react@19.2.17)(react@19.2.3) + svg2ttf: 6.1.0 + svgicons2svgfont: 15.0.1 + xcode: 3.0.1 + optionalDependencies: + expo: 56.0.11(@babel/core@7.29.7)(@expo/dom-webview@56.0.5)(react-native-worklets@0.8.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7))(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7))(@types/react@19.2.17)(react@19.2.3))(react@19.2.3))(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7))(@types/react@19.2.17)(react@19.2.3))(react@19.2.3)(typescript@6.0.3) + transitivePeerDependencies: + - '@noble/hashes' + - bufferutil + - canvas + - supports-color + - typescript + - utf-8-validate + react-native-nitro-modules@0.35.9(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7))(@types/react@19.2.17)(react@19.2.3))(react@19.2.3): dependencies: react: 19.2.3 @@ -9982,6 +10512,8 @@ snapshots: require-directory@2.1.1: {} + require-from-string@2.0.2: {} + require-resolve@0.0.2: dependencies: x-path: 0.0.2 @@ -10015,6 +10547,11 @@ snapshots: onetime: 2.0.1 signal-exit: 3.0.7 + restore-cursor@5.1.0: + dependencies: + onetime: 7.0.0 + signal-exit: 4.1.0 + reusify@1.1.0: {} run-parallel@1.2.0: @@ -10048,6 +10585,10 @@ snapshots: sax@1.6.0: {} + saxes@6.0.0: + dependencies: + xmlchars: 2.2.0 + scheduler@0.27.0: {} semver@6.3.1: {} @@ -10251,6 +10792,8 @@ snapshots: statuses@2.0.2: {} + stdin-discarder@0.3.2: {} + stop-iteration-iterator@1.1.0: dependencies: es-errors: 1.3.0 @@ -10278,6 +10821,11 @@ snapshots: emoji-regex: 9.2.2 strip-ansi: 7.2.0 + string-width@8.2.1: + dependencies: + get-east-asian-width: 1.6.0 + strip-ansi: 7.2.0 + string.prototype.matchall@4.0.12: dependencies: call-bind: 1.0.9 @@ -10360,6 +10908,34 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} + svg-pathdata@7.2.0: {} + + svg2ttf@6.1.0: + dependencies: + '@xmldom/xmldom': 0.9.10 + argparse: 2.0.1 + cubic2quad: 1.2.1 + lodash: 4.18.1 + microbuffer: 1.0.0 + svgpath: 2.6.0 + + svgicons2svgfont@15.0.1: + dependencies: + '@types/sax': 1.2.7 + commander: 12.1.0 + debug: 4.4.3 + glob: 11.1.0 + sax: 1.6.0 + svg-pathdata: 7.2.0 + transformation-matrix: 3.1.0 + yerror: 8.0.0 + transitivePeerDependencies: + - supports-color + + svgpath@2.6.0: {} + + symbol-tree@3.2.4: {} + synckit@0.11.13: dependencies: '@pkgr/core': 0.3.6 @@ -10391,6 +10967,12 @@ snapshots: fdir: 6.5.0(picomatch@4.0.4) picomatch: 4.0.4 + tldts-core@7.4.3: {} + + tldts@7.4.3: + dependencies: + tldts-core: 7.4.3 + tmpl@1.0.5: {} to-regex-range@5.0.1: @@ -10401,6 +10983,16 @@ snapshots: toqr@0.1.1: {} + tough-cookie@6.0.1: + dependencies: + tldts: 7.4.3 + + tr46@6.0.0: + dependencies: + punycode: 2.3.1 + + transformation-matrix@3.1.0: {} + treeify@1.1.0: {} ts-api-utils@2.5.0(typescript@6.0.3): @@ -10497,6 +11089,8 @@ snapshots: undici@6.26.0: {} + undici@7.28.0: {} + unicode-canonical-property-names-ecmascript@2.0.1: {} unicode-match-property-ecmascript@2.0.0: @@ -10587,6 +11181,10 @@ snapshots: void-elements@3.1.0: {} + w3c-xmlserializer@5.0.0: + dependencies: + xml-name-validator: 5.0.0 + walker@1.0.8: dependencies: makeerror: 1.0.12 @@ -10597,10 +11195,22 @@ snapshots: dependencies: defaults: 1.0.4 + webidl-conversions@8.0.1: {} + whatwg-fetch@3.6.20: {} + whatwg-mimetype@5.0.0: {} + whatwg-url-minimum@0.1.2: {} + whatwg-url@16.0.1(@noble/hashes@2.2.0): + dependencies: + '@exodus/bytes': 1.15.1(@noble/hashes@2.2.0) + tr46: 6.0.0 + webidl-conversions: 8.0.1 + transitivePeerDependencies: + - '@noble/hashes' + which-boxed-primitive@1.1.1: dependencies: is-bigint: 1.1.0 @@ -10677,6 +11287,8 @@ snapshots: dependencies: xml-parser-xo: 4.1.6 + xml-name-validator@5.0.0: {} + xml-parser-xo@4.1.6: {} xml2js@0.6.0: @@ -10688,6 +11300,8 @@ snapshots: xmlbuilder@15.1.1: {} + xmlchars@2.2.0: {} + y18n@5.0.8: {} yallist@3.1.1: {} @@ -10706,8 +11320,12 @@ snapshots: y18n: 5.0.8 yargs-parser: 21.1.1 + yerror@8.0.0: {} + yocto-queue@0.1.0: {} + yoctocolors@2.1.2: {} + zod-validation-error@4.0.2(zod@4.4.3): dependencies: zod: 4.4.3 diff --git a/mobile/src/resources/licenses.json b/mobile/src/resources/licenses.json index ef516b49b..b1aa8f074 100644 --- a/mobile/src/resources/licenses.json +++ b/mobile/src/resources/licenses.json @@ -293,6 +293,13 @@ "license": "MIT", "licenseText": "MIT License\n\nCopyright (c) 2018 Mient-jan Stelling\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE." }, + "react-native-nano-icons": { + "name": "react-native-nano-icons", + "version": "0.1.8", + "source": "https://github.com/software-mansion-labs/react-native-nano-icons", + "license": "MIT", + "licenseText": "The MIT License (MIT)\n\nCopyright (c) 2026 Software Mansion \n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE." + }, "react-native-nitro-modules": { "name": "react-native-nitro-modules", "version": "0.35.9", From 9e1c7277042b858040411ce82efe13e13327559b Mon Sep 17 00:00:00 2001 From: cyanChill <83375816+cyanChill@users.noreply.github.com> Date: Tue, 16 Jun 2026 15:05:13 -0400 Subject: [PATCH 02/17] chore: Switch to nightly version of `react-native-nano-icons` - As it reduced its dependency footprint via: https://redirect.github.com/software-mansion-labs/react-native-nano-icons/pull/17 --- mobile/package.json | 2 +- mobile/pnpm-lock.yaml | 455 +++-------------------------- mobile/src/resources/licenses.json | 2 +- 3 files changed, 36 insertions(+), 423 deletions(-) diff --git a/mobile/package.json b/mobile/package.json index 9f1926c3a..9e1199b75 100644 --- a/mobile/package.json +++ b/mobile/package.json @@ -60,7 +60,7 @@ "react-native-gesture-handler": "3.0.1", "react-native-keyboard-controller": "1.21.11", "react-native-markdown-renderer": "4.1.1", - "react-native-nano-icons": "0.1.8", + "react-native-nano-icons": "1.0.0-nightly-20260611-d07ca9613", "react-native-nitro-modules": "0.35.9", "react-native-pager-view": "8.0.2", "react-native-reanimated": "4.3.1", diff --git a/mobile/pnpm-lock.yaml b/mobile/pnpm-lock.yaml index 5f48f5bfa..b91943e5e 100644 --- a/mobile/pnpm-lock.yaml +++ b/mobile/pnpm-lock.yaml @@ -124,8 +124,8 @@ importers: specifier: 4.1.1 version: 4.1.1(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7))(@types/react@19.2.17)(react@19.2.3))(react@19.2.3) react-native-nano-icons: - specifier: 0.1.8 - version: 0.1.8(@noble/hashes@2.2.0)(expo@56.0.11)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7))(@types/react@19.2.17)(react@19.2.3))(react@19.2.3)(typescript@6.0.3) + specifier: 1.0.0-nightly-20260611-d07ca9613 + version: 1.0.0-nightly-20260611-d07ca9613(expo@56.0.11)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7))(@types/react@19.2.17)(react@19.2.3))(react@19.2.3)(typescript@6.0.3) react-native-nitro-modules: specifier: 0.35.9 version: 0.35.9(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7))(@types/react@19.2.17)(react@19.2.3))(react@19.2.3) @@ -223,23 +223,6 @@ importers: packages: - '@acemir/cssom@0.9.31': - resolution: {integrity: sha512-ZnR3GSaH+/vJ0YlHau21FjfLYjMpYVIzTD8M8vIEQvIGxeOXyXdzCI140rrCY862p/C/BbzWsjc1dgnM9mkoTA==} - - '@asamuzakjp/css-color@5.1.11': - resolution: {integrity: sha512-KVw6qIiCTUQhByfTd78h2yD1/00waTmm9uy/R7Ck/ctUyAPj+AEDLkQIdJW0T8+qGgj3j5bpNKK7Q3G+LedJWg==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - - '@asamuzakjp/dom-selector@6.8.1': - resolution: {integrity: sha512-MvRz1nCqW0fsy8Qz4dnLIvhOlMzqDVBabZx6lH+YywFDdjXhMY37SmpV1XFX3JzG5GWHn63j6HX6QPr3lZXHvQ==} - - '@asamuzakjp/generational-cache@1.0.1': - resolution: {integrity: sha512-wajfB8KqzMCN2KGNFdLkReeHncd0AslUSrvHVvvYWuU8ghncRJoA50kT3zP9MVL0+9g4/67H+cdvBskj9THPzg==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - - '@asamuzakjp/nwsapi@2.3.9': - resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==} - '@babel/code-frame@7.29.7': resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==} engines: {node: '>=6.9.0'} @@ -630,46 +613,6 @@ packages: peerDependencies: react-native: '>=0.47.0' - '@bramus/specificity@2.4.2': - resolution: {integrity: sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw==} - hasBin: true - - '@csstools/color-helpers@6.0.2': - resolution: {integrity: sha512-LMGQLS9EuADloEFkcTBR3BwV/CGHV7zyDxVRtVDTwdI2Ca4it0CCVTT9wCkxSgokjE5Ho41hEPgb8OEUwoXr6Q==} - engines: {node: '>=20.19.0'} - - '@csstools/css-calc@3.2.1': - resolution: {integrity: sha512-DtdHlgXh5ZkA43cwBcAm+huzgJiwx3ZTWVjBs94kwz2xKqSimDA3lBgCjphYgwgVUMWatSM0pDd8TILB1yrVVg==} - engines: {node: '>=20.19.0'} - peerDependencies: - '@csstools/css-parser-algorithms': ^4.0.0 - '@csstools/css-tokenizer': ^4.0.0 - - '@csstools/css-color-parser@4.1.7': - resolution: {integrity: sha512-CmjJFQTFQx/U/xNJhSjCQ0ilpesPmNQ8+eOUeM/+kDOVW33qsIjeOXc27vrQDdWVkf83ZSWwtg7kXSUvKDJ8cQ==} - engines: {node: '>=20.19.0'} - peerDependencies: - '@csstools/css-parser-algorithms': ^4.0.0 - '@csstools/css-tokenizer': ^4.0.0 - - '@csstools/css-parser-algorithms@4.0.0': - resolution: {integrity: sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==} - engines: {node: '>=20.19.0'} - peerDependencies: - '@csstools/css-tokenizer': ^4.0.0 - - '@csstools/css-syntax-patches-for-csstree@1.1.5': - resolution: {integrity: sha512-oNjBvzLq2GPZtJphCjLqXow/cHySHSgtxvKZb7OqSZ/xHgw6NWNhfad+6AB9cLeVm6eA9d/qMll3JdEHjy6M+A==} - peerDependencies: - css-tree: ^3.2.1 - peerDependenciesMeta: - css-tree: - optional: true - - '@csstools/css-tokenizer@4.0.0': - resolution: {integrity: sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==} - engines: {node: '>=20.19.0'} - '@drizzle-team/brocli@0.10.2': resolution: {integrity: sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w==} @@ -1175,15 +1118,6 @@ packages: resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@exodus/bytes@1.15.1': - resolution: {integrity: sha512-S6mL0yNB/Abt9Ei4tq8gDhcczc4S3+vQ4ra7vxnAf+YHC02srtqxKKZghx2Dq6p0e66THKwR6r8N6P95wEty7Q==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - peerDependencies: - '@noble/hashes': ^1.8.0 || ^2.0.0 - peerDependenciesMeta: - '@noble/hashes': - optional: true - '@expo/cli@56.1.15': resolution: {integrity: sha512-ik6++YzURB2d/mSEfYwbuNa19uOWZwVHy9THCQ/pPr6mzplKl4w9I4nlYF9lx7oluNC3NvxsSZ8/rgpVKEOJTA==} hasBin: true @@ -1203,9 +1137,15 @@ packages: '@expo/config-plugins@56.0.8': resolution: {integrity: sha512-phTuyBhgVLfqUHMjQkAfRtbyoY6yTxoKja1awtpVnEkoJDxPJuXx1KX5uvq1eZtt4bJQ08OBJ6P95INqRSHpRg==} + '@expo/config-plugins@56.0.9': + resolution: {integrity: sha512-/6a/S9USwx8OC9tGjHxbviLFiBHyueN3aoNWMLvWDEJoZ1CIVW800ZBzwXq/FYNK2qzcN1LxFmQtzD1zeFQKNA==} + '@expo/config-types@56.0.5': resolution: {integrity: sha512-GsAHO/MwW9ZRdgnmyfRXqVGLCP/zejD6rWnp5OROp8mBGRObKm4HfrjlUyT1skjMwCj1OrURx9ZfIc6yeBAkIA==} + '@expo/config-types@56.0.6': + resolution: {integrity: sha512-4Y6Aum5J4Re5NnxGVofRNe1aDwUBOmWhQYkynZsqzRtX/zEA1ADUeyHXuEckv9YD9djiyT7bKtLt5gKL3mA6VQ==} + '@expo/config@56.0.9': resolution: {integrity: sha512-/lqFeWGSrhpKJVP8tTN8LjuoIe8u8q2w7FzBL0C+wHgl+WM8l1qUIEYWy/sMvsG/NbpUIUsDHJRhQvOkU58eIw==} @@ -1520,10 +1460,6 @@ packages: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} - '@isaacs/cliui@9.0.0': - resolution: {integrity: sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==} - engines: {node: '>=18'} - '@isaacs/ttlcache@1.4.1': resolution: {integrity: sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==} engines: {node: '>=12'} @@ -2033,9 +1969,6 @@ packages: '@types/react@19.2.17': resolution: {integrity: sha512-MXfmqaVPEVgkBT/aY0aGCkRWWtByiYQXo3xdQ8r5RzuFrPiRn8Gar2tQdXSUQ2GKV3bkXckek89V8wQBY2Q/Aw==} - '@types/sax@1.2.7': - resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} - '@types/yargs-parser@21.0.3': resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} @@ -2432,9 +2365,6 @@ packages: resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==} engines: {node: '>= 0.8'} - bidi-js@1.0.3: - resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==} - big-integer@1.6.52: resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} engines: {node: '>=0.6'} @@ -2649,18 +2579,10 @@ packages: resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} engines: {node: '>=8.0.0'} - css-tree@3.2.1: - resolution: {integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} - css-what@6.2.2: resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} engines: {node: '>= 6'} - cssstyle@6.2.0: - resolution: {integrity: sha512-Fm5NvhYathRnXNVndkUsCCuR63DCLVVwGOOwQw782coXFi5HhkXdu289l59HlXZBawsyNccXfWRYvLzcDCdDig==} - engines: {node: '>=20'} - csstype@3.2.3: resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} @@ -2671,10 +2593,6 @@ packages: resolution: {integrity: sha512-1+BhOB8ahCn4O0cep0Sh2l9KCOfOdY+BXJnKMHFFzDEouSr/el18QwXEMRlOj9UY5nCeA8UN3a/82rUWRBeyBw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - data-urls@7.0.0: - resolution: {integrity: sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - data-view-buffer@1.0.2: resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} engines: {node: '>= 0.4'} @@ -2712,9 +2630,6 @@ packages: supports-color: optional: true - decimal.js@10.6.0: - resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} - decode-uri-component@0.2.2: resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} engines: {node: '>=0.10'} @@ -2908,10 +2823,6 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} - entities@8.0.0: - resolution: {integrity: sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA==} - engines: {node: '>=20.19.0'} - error-causes@3.0.2: resolution: {integrity: sha512-i0B8zq1dHL6mM85FGoxaJnVtx6LD5nL2v0hlpGdntg5FOSyzQ46c9lmz5qx0xRS2+PWHGOHcYxGIBC5Le2dRMw==} @@ -3433,12 +3344,6 @@ packages: deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me hasBin: true - glob@11.1.0: - resolution: {integrity: sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==} - engines: {node: 20 || >=22} - deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me - hasBin: true - glob@13.0.6: resolution: {integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==} engines: {node: 18 || 20 || >=22} @@ -3526,10 +3431,6 @@ packages: resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} engines: {node: ^16.14.0 || >=18.0.0} - html-encoding-sniffer@6.0.0: - resolution: {integrity: sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - html-parse-stringify@3.0.1: resolution: {integrity: sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==} @@ -3537,10 +3438,6 @@ packages: resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} engines: {node: '>= 0.8'} - http-proxy-agent@7.0.2: - resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} - engines: {node: '>= 14'} - https-proxy-agent@7.0.6: resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} engines: {node: '>= 14'} @@ -3682,9 +3579,6 @@ packages: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - is-potential-custom-element-name@1.0.1: - resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} - is-regex@1.2.1: resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} engines: {node: '>= 0.4'} @@ -3742,10 +3636,6 @@ packages: jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - jackspeak@4.2.3: - resolution: {integrity: sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==} - engines: {node: 20 || >=22} - jest-get-type@29.6.3: resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3797,15 +3687,6 @@ packages: jsc-safe-url@0.2.4: resolution: {integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==} - jsdom@28.1.0: - resolution: {integrity: sha512-0+MoQNYyr2rBHqO1xilltfDjV9G7ymYGlAUazgcDLQaUf8JDHbuGwsxN6U9qWaElZ4w1B2r7yEGIL3GdeW3Rug==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - peerDependencies: - canvas: ^3.0.0 - peerDependenciesMeta: - canvas: - optional: true - jsesc@3.1.0: resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} engines: {node: '>=6'} @@ -4074,9 +3955,6 @@ packages: mdn-data@2.0.14: resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} - mdn-data@2.27.1: - resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==} - mdurl@2.0.0: resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} @@ -4399,9 +4277,6 @@ packages: resolution: {integrity: sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ==} engines: {node: '>=10'} - parse5@8.0.1: - resolution: {integrity: sha512-z1e/HMG90obSGeidlli3hj7cbocou0/wa5HacvI3ASx34PecNjNQeaHNo5WIZpWofN9kgkqV1q5YvXe3F0FoPw==} - parseurl@1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} @@ -4680,8 +4555,8 @@ packages: react: '>=18.0.0' react-native: '>=0.73.0' - react-native-nano-icons@0.1.8: - resolution: {integrity: sha512-7BAiDFCslWsnpm6lpEezVkCA68xNqMrNiGCQR58MeuWaEtlCY2cojQQGCLXdfFPqd31el5buzPThQCEaLujZPg==} + react-native-nano-icons@1.0.0-nightly-20260611-d07ca9613: + resolution: {integrity: sha512-Fk0v+06QLtyOlZzaDg4YG/bGfW5La5PoLgdxFU+vJYCM3G/IdwLetBwP8O5goxsknhmiDA9YLMJG4SEMAGt+Pg==} hasBin: true peerDependencies: expo: '*' @@ -4807,10 +4682,6 @@ packages: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} - require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - require-resolve@0.0.2: resolution: {integrity: sha512-eafQVaxdQsWUB8HybwognkdcIdKdQdQBwTxH48FuE6WI0owZGKp63QYr1MRp73PoX0AcyB7MDapZThYUY8FD0A==} @@ -4878,10 +4749,6 @@ packages: resolution: {integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==} engines: {node: '>=11.0.0'} - saxes@6.0.0: - resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} - engines: {node: '>=v12.22.7'} - scheduler@0.27.0: resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} @@ -5137,25 +5004,13 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - svg-pathdata@7.2.0: - resolution: {integrity: sha512-qd+AxqMpfRrRQaWb2SrNFvn69cvl6piqY8TxhYl2Li1g4/LO5F9NJb5wI4vNwRryqgSgD43gYKLm/w3ag1bKvQ==} - engines: {node: '>=20.11.1'} - svg2ttf@6.1.0: resolution: {integrity: sha512-EjxgcmhKcBpx/3fR1hPwVtJAbUc/ZsDpwOTF74SI3PbzCg4pDHnxVmoSuqgEqxVJGqqkSCI6+82cucpn2D5aOw==} hasBin: true - svgicons2svgfont@15.0.1: - resolution: {integrity: sha512-rE3BoIipD6DxBejPswalKRZZYA+7sy4miHqiHgXB0zI1xJD3gSCVrXh2R6Sdh9E4XDTxYp7gDxGW2W8DIBif/g==} - engines: {node: '>=20.11.1'} - hasBin: true - svgpath@2.6.0: resolution: {integrity: sha512-OIWR6bKzXvdXYyO4DK/UWa1VA1JeKq8E+0ug2DG98Y/vOmMpfZNj+TIG988HjfYSqtcy/hFOtZq/n/j5GSESNg==} - symbol-tree@3.2.4: - resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - synckit@0.11.13: resolution: {integrity: sha512-eNRKgb3z66Yp3D2CixVujOUvXLFUTij/zVnV8KRyvFdQwpz7I5DS8UfRkTeLzb64u+dkzDSdelE24izu+zSSUg==} engines: {node: ^14.18.0 || >=16.0.0} @@ -5189,13 +5044,6 @@ packages: resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} engines: {node: '>=12.0.0'} - tldts-core@7.4.3: - resolution: {integrity: sha512-27ep5H9PzdBrNd5OFM/j3WCU8F3kPwM9D0BOaOf7uYfxMJfyr0K5Tjj69Gri+sZlh2WXd5buIm47NuPF29CDiw==} - - tldts@7.4.3: - resolution: {integrity: sha512-A3BDQBeeukYPzB4QdQ1DtdlUmp4x2OCH8n5UVhEWbyANxNep8GavottKzd1xYKFJKjUgMyPT7EzOfnBO55s8Sg==} - hasBin: true - tmpl@1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} @@ -5210,17 +5058,6 @@ packages: toqr@0.1.1: resolution: {integrity: sha512-FWAPzCIHZHnrE/5/w9MPk0kK25hSQSH2IKhYh9PyjS3SG/+IEMvlwIHbhz+oF7xl54I+ueZlVnMjyzdSwLmAwA==} - tough-cookie@6.0.1: - resolution: {integrity: sha512-LktZQb3IeoUWB9lqR5EWTHgW/VTITCXg4D21M+lvybRVdylLrRMnqaIONLVb5mav8vM19m44HIcGq4qASeu2Qw==} - engines: {node: '>=16'} - - tr46@6.0.0: - resolution: {integrity: sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==} - engines: {node: '>=20'} - - transformation-matrix@3.1.0: - resolution: {integrity: sha512-oYubRWTi2tYFHAL2J8DLvPIqIYcYZ0fSOi2vmSy042Ho4jBW2ce6VP7QfD44t65WQz6bw5w1Pk22J7lcUpaTKA==} - treeify@1.1.0: resolution: {integrity: sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==} engines: {node: '>=0.6'} @@ -5304,10 +5141,6 @@ packages: resolution: {integrity: sha512-4yqz8a3n5HmGTlsbADNtr/dJlhkh/55Rq798G6ibiULcXbDtaLpTl1pvdqcbFfeoj3iSi52lePFM7h9H21cw/A==} engines: {node: '>=18.17'} - undici@7.28.0: - resolution: {integrity: sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA==} - engines: {node: '>=20.18.1'} - unicode-canonical-property-names-ecmascript@2.0.1: resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} engines: {node: '>=4'} @@ -5394,10 +5227,6 @@ packages: resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} engines: {node: '>=0.10.0'} - w3c-xmlserializer@5.0.0: - resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} - engines: {node: '>=18'} - walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} @@ -5407,24 +5236,12 @@ packages: wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - webidl-conversions@8.0.1: - resolution: {integrity: sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==} - engines: {node: '>=20'} - whatwg-fetch@3.6.20: resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} - whatwg-mimetype@5.0.0: - resolution: {integrity: sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==} - engines: {node: '>=20'} - whatwg-url-minimum@0.1.2: resolution: {integrity: sha512-XPEm0XFQWNVG292lII1PrRRJl3sItrs7CettZ4ncYxuDVpLyy+NwlGyut2hXI0JswcJUxeCH+CyOJK0ZzAXD6A==} - whatwg-url@16.0.1: - resolution: {integrity: sha512-1to4zXBxmXHV3IiSSEInrreIlu02vUOvrhxJJH5vcxYTBDAx51cqZiKdyTxlecdKNSjj8EcxGBxNf6Vg+945gw==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - which-boxed-primitive@1.1.1: resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} engines: {node: '>= 0.4'} @@ -5493,10 +5310,6 @@ packages: resolution: {integrity: sha512-+8qTc3zv2UcJ1v9IsSIce37Dl4MQG14Cp7tWrwmy202UaI1wqRukw5QMX1JHsV+DX64yw77EgGsj2s5wGvuMbQ==} engines: {node: '>= 16'} - xml-name-validator@5.0.0: - resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} - engines: {node: '>=18'} - xml-parser-xo@4.1.6: resolution: {integrity: sha512-mXbSNSM+rIwndoxSwmFa83bOdeP8G/cOGr7XvxA67X7ebCzoAuVez9JYDCDub3zRDNBZxIbfjuXLSsamr7NfwQ==} engines: {node: '>= 20'} @@ -5513,9 +5326,6 @@ packages: resolution: {integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==} engines: {node: '>=8.0'} - xmlchars@2.2.0: - resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} - y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} @@ -5536,10 +5346,6 @@ packages: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} - yerror@8.0.0: - resolution: {integrity: sha512-FemWD5/UqNm8ffj8oZIbjWXIF2KE0mZssggYpdaQkWDDgXBQ/35PNIxEuz6/YLn9o0kOxDBNJe8x8k9ljD7k/g==} - engines: {node: '>=18.16.0'} - yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} @@ -5580,28 +5386,6 @@ packages: snapshots: - '@acemir/cssom@0.9.31': {} - - '@asamuzakjp/css-color@5.1.11': - dependencies: - '@asamuzakjp/generational-cache': 1.0.1 - '@csstools/css-calc': 3.2.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) - '@csstools/css-color-parser': 4.1.7(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) - '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) - '@csstools/css-tokenizer': 4.0.0 - - '@asamuzakjp/dom-selector@6.8.1': - dependencies: - '@asamuzakjp/nwsapi': 2.3.9 - bidi-js: 1.0.3 - css-tree: 3.2.1 - is-potential-custom-element-name: 1.0.1 - lru-cache: 11.5.1 - - '@asamuzakjp/generational-cache@1.0.1': {} - - '@asamuzakjp/nwsapi@2.3.9': {} - '@babel/code-frame@7.29.7': dependencies: '@babel/helper-validator-identifier': 7.29.7 @@ -6090,34 +5874,6 @@ snapshots: dependencies: react-native: 0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7))(@types/react@19.2.17)(react@19.2.3) - '@bramus/specificity@2.4.2': - dependencies: - css-tree: 3.2.1 - - '@csstools/color-helpers@6.0.2': {} - - '@csstools/css-calc@3.2.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': - dependencies: - '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) - '@csstools/css-tokenizer': 4.0.0 - - '@csstools/css-color-parser@4.1.7(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': - dependencies: - '@csstools/color-helpers': 6.0.2 - '@csstools/css-calc': 3.2.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) - '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) - '@csstools/css-tokenizer': 4.0.0 - - '@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0)': - dependencies: - '@csstools/css-tokenizer': 4.0.0 - - '@csstools/css-syntax-patches-for-csstree@1.1.5(css-tree@3.2.1)': - optionalDependencies: - css-tree: 3.2.1 - - '@csstools/css-tokenizer@4.0.0': {} - '@drizzle-team/brocli@0.10.2': {} '@emnapi/core@1.10.0': @@ -6419,10 +6175,6 @@ snapshots: '@eslint/core': 0.17.0 levn: 0.4.1 - '@exodus/bytes@1.15.1(@noble/hashes@2.2.0)': - optionalDependencies: - '@noble/hashes': 2.2.0 - '@expo/cli@56.1.15(@expo/dom-webview@56.0.5)(expo-constants@56.0.18(expo@56.0.11)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7))(@types/react@19.2.17)(react@19.2.3)))(expo-font@56.0.6(expo@56.0.11)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7))(@types/react@19.2.17)(react@19.2.3))(react@19.2.3))(expo@56.0.11)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7))(@types/react@19.2.17)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)': dependencies: '@expo/code-signing-certificates': 0.0.6 @@ -6521,8 +6273,29 @@ snapshots: - supports-color - typescript + '@expo/config-plugins@56.0.9(typescript@6.0.3)': + dependencies: + '@expo/config-types': 56.0.6 + '@expo/json-file': 10.2.0 + '@expo/plist': 0.7.0 + '@expo/require-utils': 56.1.3(typescript@6.0.3) + '@expo/sdk-runtime-versions': 1.0.0 + chalk: 4.1.2 + debug: 4.4.3 + getenv: 2.0.0 + glob: 13.0.6 + semver: 7.8.4 + slugify: 1.6.9 + xcode: 3.0.1 + xml2js: 0.6.0 + transitivePeerDependencies: + - supports-color + - typescript + '@expo/config-types@56.0.5': {} + '@expo/config-types@56.0.6': {} + '@expo/config@56.0.9(typescript@6.0.3)': dependencies: '@expo/config-plugins': 56.0.8(typescript@6.0.3) @@ -6898,8 +6671,6 @@ snapshots: wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 - '@isaacs/cliui@9.0.0': {} - '@isaacs/ttlcache@1.4.1': {} '@jest/schemas@29.6.3': @@ -7436,10 +7207,6 @@ snapshots: dependencies: csstype: 3.2.3 - '@types/sax@1.2.7': - dependencies: - '@types/node': 25.9.3 - '@types/yargs-parser@21.0.3': {} '@types/yargs@17.0.35': @@ -7868,10 +7635,6 @@ snapshots: dependencies: safe-buffer: 5.1.2 - bidi-js@1.0.3: - dependencies: - require-from-string: 2.0.2 - big-integer@1.6.52: {} bignumber.js@9.3.1: {} @@ -8113,33 +7876,14 @@ snapshots: mdn-data: 2.0.14 source-map: 0.6.1 - css-tree@3.2.1: - dependencies: - mdn-data: 2.27.1 - source-map-js: 1.2.1 - css-what@6.2.2: {} - cssstyle@6.2.0: - dependencies: - '@asamuzakjp/css-color': 5.1.11 - '@csstools/css-syntax-patches-for-csstree': 1.1.5(css-tree@3.2.1) - css-tree: 3.2.1 - lru-cache: 11.5.1 - csstype@3.2.3: {} cubic2quad@1.2.1: {} culori@4.0.2: {} - data-urls@7.0.0(@noble/hashes@2.2.0): - dependencies: - whatwg-mimetype: 5.0.0 - whatwg-url: 16.0.1(@noble/hashes@2.2.0) - transitivePeerDependencies: - - '@noble/hashes' - data-view-buffer@1.0.2: dependencies: call-bound: 1.0.4 @@ -8170,8 +7914,6 @@ snapshots: dependencies: ms: 2.1.3 - decimal.js@10.6.0: {} - decode-uri-component@0.2.2: {} deep-is@0.1.4: {} @@ -8266,8 +8008,6 @@ snapshots: entities@4.5.0: {} - entities@8.0.0: {} - error-causes@3.0.2: {} error-stack-parser@2.1.4: @@ -9057,15 +8797,6 @@ snapshots: package-json-from-dist: 1.0.1 path-scurry: 1.11.1 - glob@11.1.0: - dependencies: - foreground-child: 3.3.1 - jackspeak: 4.2.3 - minimatch: 10.2.5 - minipass: 7.1.3 - package-json-from-dist: 1.0.1 - path-scurry: 2.0.2 - glob@13.0.6: dependencies: minimatch: 10.2.5 @@ -9139,12 +8870,6 @@ snapshots: dependencies: lru-cache: 10.4.3 - html-encoding-sniffer@6.0.0(@noble/hashes@2.2.0): - dependencies: - '@exodus/bytes': 1.15.1(@noble/hashes@2.2.0) - transitivePeerDependencies: - - '@noble/hashes' - html-parse-stringify@3.0.1: dependencies: void-elements: 3.1.0 @@ -9157,13 +8882,6 @@ snapshots: statuses: 2.0.2 toidentifier: 1.0.1 - http-proxy-agent@7.0.2: - dependencies: - agent-base: 7.1.4 - debug: 4.4.3 - transitivePeerDependencies: - - supports-color - https-proxy-agent@7.0.6: dependencies: agent-base: 7.1.4 @@ -9295,8 +9013,6 @@ snapshots: is-number@7.0.0: {} - is-potential-custom-element-name@1.0.1: {} - is-regex@1.2.1: dependencies: call-bound: 1.0.4 @@ -9361,10 +9077,6 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 - jackspeak@4.2.3: - dependencies: - '@isaacs/cliui': 9.0.0 - jest-get-type@29.6.3: {} jest-util@29.7.0: @@ -9411,33 +9123,6 @@ snapshots: jsc-safe-url@0.2.4: {} - jsdom@28.1.0(@noble/hashes@2.2.0): - dependencies: - '@acemir/cssom': 0.9.31 - '@asamuzakjp/dom-selector': 6.8.1 - '@bramus/specificity': 2.4.2 - '@exodus/bytes': 1.15.1(@noble/hashes@2.2.0) - cssstyle: 6.2.0 - data-urls: 7.0.0(@noble/hashes@2.2.0) - decimal.js: 10.6.0 - html-encoding-sniffer: 6.0.0(@noble/hashes@2.2.0) - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.6 - is-potential-custom-element-name: 1.0.1 - parse5: 8.0.1 - saxes: 6.0.0 - symbol-tree: 3.2.4 - tough-cookie: 6.0.1 - undici: 7.28.0 - w3c-xmlserializer: 5.0.0 - webidl-conversions: 8.0.1 - whatwg-mimetype: 5.0.0 - whatwg-url: 16.0.1(@noble/hashes@2.2.0) - xml-name-validator: 5.0.0 - transitivePeerDependencies: - - '@noble/hashes' - - supports-color - jsesc@3.1.0: {} json-buffer@3.0.1: {} @@ -9657,8 +9342,6 @@ snapshots: mdn-data@2.0.14: {} - mdn-data@2.27.1: {} - mdurl@2.0.0: {} media-typer@0.3.0: {} @@ -10092,10 +9775,6 @@ snapshots: dependencies: pngjs: 3.4.0 - parse5@8.0.1: - dependencies: - entities: 8.0.0 - parseurl@1.3.3: {} path-exists@4.0.0: {} @@ -10310,12 +9989,12 @@ snapshots: react: 19.2.3 react-native: 0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7))(@types/react@19.2.17)(react@19.2.3) - react-native-nano-icons@0.1.8(@noble/hashes@2.2.0)(expo@56.0.11)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7))(@types/react@19.2.17)(react@19.2.3))(react@19.2.3)(typescript@6.0.3): + react-native-nano-icons@1.0.0-nightly-20260611-d07ca9613(expo@56.0.11)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7))(@types/react@19.2.17)(react@19.2.3))(react@19.2.3)(typescript@6.0.3): dependencies: - '@expo/config-plugins': 56.0.8(typescript@6.0.3) + '@expo/config-plugins': 56.0.9(typescript@6.0.3) + '@xmldom/xmldom': 0.9.10 chalk: 5.6.2 fonteditor-core: 2.6.3 - jsdom: 28.1.0(@noble/hashes@2.2.0) ora: 9.4.0 pathkit-wasm: 1.0.0 plist: 3.1.1 @@ -10323,14 +10002,11 @@ snapshots: react: 19.2.3 react-native: 0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7))(@types/react@19.2.17)(react@19.2.3) svg2ttf: 6.1.0 - svgicons2svgfont: 15.0.1 xcode: 3.0.1 optionalDependencies: expo: 56.0.11(@babel/core@7.29.7)(@expo/dom-webview@56.0.5)(react-native-worklets@0.8.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7))(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7))(@types/react@19.2.17)(react@19.2.3))(react@19.2.3))(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7))(@types/react@19.2.17)(react@19.2.3))(react@19.2.3)(typescript@6.0.3) transitivePeerDependencies: - - '@noble/hashes' - bufferutil - - canvas - supports-color - typescript - utf-8-validate @@ -10512,8 +10188,6 @@ snapshots: require-directory@2.1.1: {} - require-from-string@2.0.2: {} - require-resolve@0.0.2: dependencies: x-path: 0.0.2 @@ -10585,10 +10259,6 @@ snapshots: sax@1.6.0: {} - saxes@6.0.0: - dependencies: - xmlchars: 2.2.0 - scheduler@0.27.0: {} semver@6.3.1: {} @@ -10908,8 +10578,6 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svg-pathdata@7.2.0: {} - svg2ttf@6.1.0: dependencies: '@xmldom/xmldom': 0.9.10 @@ -10919,23 +10587,8 @@ snapshots: microbuffer: 1.0.0 svgpath: 2.6.0 - svgicons2svgfont@15.0.1: - dependencies: - '@types/sax': 1.2.7 - commander: 12.1.0 - debug: 4.4.3 - glob: 11.1.0 - sax: 1.6.0 - svg-pathdata: 7.2.0 - transformation-matrix: 3.1.0 - yerror: 8.0.0 - transitivePeerDependencies: - - supports-color - svgpath@2.6.0: {} - symbol-tree@3.2.4: {} - synckit@0.11.13: dependencies: '@pkgr/core': 0.3.6 @@ -10967,12 +10620,6 @@ snapshots: fdir: 6.5.0(picomatch@4.0.4) picomatch: 4.0.4 - tldts-core@7.4.3: {} - - tldts@7.4.3: - dependencies: - tldts-core: 7.4.3 - tmpl@1.0.5: {} to-regex-range@5.0.1: @@ -10983,16 +10630,6 @@ snapshots: toqr@0.1.1: {} - tough-cookie@6.0.1: - dependencies: - tldts: 7.4.3 - - tr46@6.0.0: - dependencies: - punycode: 2.3.1 - - transformation-matrix@3.1.0: {} - treeify@1.1.0: {} ts-api-utils@2.5.0(typescript@6.0.3): @@ -11089,8 +10726,6 @@ snapshots: undici@6.26.0: {} - undici@7.28.0: {} - unicode-canonical-property-names-ecmascript@2.0.1: {} unicode-match-property-ecmascript@2.0.0: @@ -11181,10 +10816,6 @@ snapshots: void-elements@3.1.0: {} - w3c-xmlserializer@5.0.0: - dependencies: - xml-name-validator: 5.0.0 - walker@1.0.8: dependencies: makeerror: 1.0.12 @@ -11195,22 +10826,10 @@ snapshots: dependencies: defaults: 1.0.4 - webidl-conversions@8.0.1: {} - whatwg-fetch@3.6.20: {} - whatwg-mimetype@5.0.0: {} - whatwg-url-minimum@0.1.2: {} - whatwg-url@16.0.1(@noble/hashes@2.2.0): - dependencies: - '@exodus/bytes': 1.15.1(@noble/hashes@2.2.0) - tr46: 6.0.0 - webidl-conversions: 8.0.1 - transitivePeerDependencies: - - '@noble/hashes' - which-boxed-primitive@1.1.1: dependencies: is-bigint: 1.1.0 @@ -11287,8 +10906,6 @@ snapshots: dependencies: xml-parser-xo: 4.1.6 - xml-name-validator@5.0.0: {} - xml-parser-xo@4.1.6: {} xml2js@0.6.0: @@ -11300,8 +10917,6 @@ snapshots: xmlbuilder@15.1.1: {} - xmlchars@2.2.0: {} - y18n@5.0.8: {} yallist@3.1.1: {} @@ -11320,8 +10935,6 @@ snapshots: y18n: 5.0.8 yargs-parser: 21.1.1 - yerror@8.0.0: {} - yocto-queue@0.1.0: {} yoctocolors@2.1.2: {} diff --git a/mobile/src/resources/licenses.json b/mobile/src/resources/licenses.json index b1aa8f074..2b3f683f0 100644 --- a/mobile/src/resources/licenses.json +++ b/mobile/src/resources/licenses.json @@ -295,7 +295,7 @@ }, "react-native-nano-icons": { "name": "react-native-nano-icons", - "version": "0.1.8", + "version": "1.0.0-nightly-20260611-d07ca9613", "source": "https://github.com/software-mansion-labs/react-native-nano-icons", "license": "MIT", "licenseText": "The MIT License (MIT)\n\nCopyright (c) 2026 Software Mansion \n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE." From 75fd10f2c99964a0b6f2b0215c07126615008d08 Mon Sep 17 00:00:00 2001 From: cyanChill <83375816+cyanChill@users.noreply.github.com> Date: Tue, 16 Jun 2026 15:08:46 -0400 Subject: [PATCH 03/17] chore: New icon folder for raw svg files for Material Symbols icons --- mobile/assets/icons/README.md | 8 ++++++++ mobile/assets/icons/material-symbols/activity-zone.svg | 1 + mobile/assets/icons/material-symbols/add.svg | 1 + mobile/assets/icons/material-symbols/archive.svg | 1 + mobile/assets/icons/material-symbols/arrow-back.svg | 1 + mobile/assets/icons/material-symbols/autoplay.svg | 1 + mobile/assets/icons/material-symbols/bar-chart-4-bars.svg | 1 + mobile/assets/icons/material-symbols/cached.svg | 1 + mobile/assets/icons/material-symbols/cancel.svg | 1 + mobile/assets/icons/material-symbols/check-circle.svg | 1 + mobile/assets/icons/material-symbols/check.svg | 1 + mobile/assets/icons/material-symbols/close.svg | 1 + mobile/assets/icons/material-symbols/conversion-path.svg | 1 + .../assets/icons/material-symbols/create-new-folder.svg | 1 + mobile/assets/icons/material-symbols/delete.svg | 1 + .../assets/icons/material-symbols/do-not-disturb-on.svg | 1 + mobile/assets/icons/material-symbols/document-search.svg | 1 + mobile/assets/icons/material-symbols/drag-handle.svg | 1 + mobile/assets/icons/material-symbols/edit.svg | 1 + mobile/assets/icons/material-symbols/favorite-filled.svg | 1 + mobile/assets/icons/material-symbols/favorite.svg | 1 + mobile/assets/icons/material-symbols/file-save.svg | 1 + mobile/assets/icons/material-symbols/folder.svg | 1 + mobile/assets/icons/material-symbols/format-paint.svg | 1 + mobile/assets/icons/material-symbols/graph-1.svg | 1 + mobile/assets/icons/material-symbols/graphic-eq.svg | 1 + mobile/assets/icons/material-symbols/grid-view.svg | 1 + mobile/assets/icons/material-symbols/history.svg | 1 + mobile/assets/icons/material-symbols/home-filled.svg | 1 + mobile/assets/icons/material-symbols/home.svg | 1 + mobile/assets/icons/material-symbols/image.svg | 1 + mobile/assets/icons/material-symbols/info.svg | 1 + .../assets/icons/material-symbols/keyboard-arrow-down.svg | 1 + mobile/assets/icons/material-symbols/link-off.svg | 1 + mobile/assets/icons/material-symbols/low-priority.svg | 1 + mobile/assets/icons/material-symbols/lyrics.svg | 1 + .../assets/icons/material-symbols/mobile-arrow-down.svg | 1 + mobile/assets/icons/material-symbols/more-horiz.svg | 1 + mobile/assets/icons/material-symbols/more-vert.svg | 1 + mobile/assets/icons/material-symbols/open-in-new.svg | 1 + .../assets/icons/material-symbols/play-arrow-filled.svg | 1 + mobile/assets/icons/material-symbols/playlist-add.svg | 1 + mobile/assets/icons/material-symbols/puase-filled.svg | 1 + mobile/assets/icons/material-symbols/queue-music.svg | 1 + mobile/assets/icons/material-symbols/remove.svg | 1 + mobile/assets/icons/material-symbols/save.svg | 1 + mobile/assets/icons/material-symbols/schedule.svg | 1 + mobile/assets/icons/material-symbols/search.svg | 1 + mobile/assets/icons/material-symbols/settings.svg | 1 + mobile/assets/icons/material-symbols/skip-next-filled.svg | 1 + .../icons/material-symbols/skip-previous-filled.svg | 1 + .../assets/icons/material-symbols/slow-motion-video.svg | 1 + mobile/assets/icons/material-symbols/sort.svg | 1 + mobile/assets/icons/material-symbols/timer.svg | 1 + mobile/assets/icons/material-symbols/translate.svg | 1 + mobile/assets/icons/material-symbols/view-agenda.svg | 1 + mobile/assets/icons/material-symbols/view-module.svg | 1 + .../icons/material-symbols/visibility-off-filled.svg | 1 + mobile/assets/icons/material-symbols/voice-selection.svg | 1 + mobile/assets/icons/material-symbols/volume-up-filled.svg | 1 + mobile/assets/icons/material-symbols/warning.svg | 1 + 61 files changed, 68 insertions(+) create mode 100644 mobile/assets/icons/README.md create mode 100644 mobile/assets/icons/material-symbols/activity-zone.svg create mode 100644 mobile/assets/icons/material-symbols/add.svg create mode 100644 mobile/assets/icons/material-symbols/archive.svg create mode 100644 mobile/assets/icons/material-symbols/arrow-back.svg create mode 100644 mobile/assets/icons/material-symbols/autoplay.svg create mode 100644 mobile/assets/icons/material-symbols/bar-chart-4-bars.svg create mode 100644 mobile/assets/icons/material-symbols/cached.svg create mode 100644 mobile/assets/icons/material-symbols/cancel.svg create mode 100644 mobile/assets/icons/material-symbols/check-circle.svg create mode 100644 mobile/assets/icons/material-symbols/check.svg create mode 100644 mobile/assets/icons/material-symbols/close.svg create mode 100644 mobile/assets/icons/material-symbols/conversion-path.svg create mode 100644 mobile/assets/icons/material-symbols/create-new-folder.svg create mode 100644 mobile/assets/icons/material-symbols/delete.svg create mode 100644 mobile/assets/icons/material-symbols/do-not-disturb-on.svg create mode 100644 mobile/assets/icons/material-symbols/document-search.svg create mode 100644 mobile/assets/icons/material-symbols/drag-handle.svg create mode 100644 mobile/assets/icons/material-symbols/edit.svg create mode 100644 mobile/assets/icons/material-symbols/favorite-filled.svg create mode 100644 mobile/assets/icons/material-symbols/favorite.svg create mode 100644 mobile/assets/icons/material-symbols/file-save.svg create mode 100644 mobile/assets/icons/material-symbols/folder.svg create mode 100644 mobile/assets/icons/material-symbols/format-paint.svg create mode 100644 mobile/assets/icons/material-symbols/graph-1.svg create mode 100644 mobile/assets/icons/material-symbols/graphic-eq.svg create mode 100644 mobile/assets/icons/material-symbols/grid-view.svg create mode 100644 mobile/assets/icons/material-symbols/history.svg create mode 100644 mobile/assets/icons/material-symbols/home-filled.svg create mode 100644 mobile/assets/icons/material-symbols/home.svg create mode 100644 mobile/assets/icons/material-symbols/image.svg create mode 100644 mobile/assets/icons/material-symbols/info.svg create mode 100644 mobile/assets/icons/material-symbols/keyboard-arrow-down.svg create mode 100644 mobile/assets/icons/material-symbols/link-off.svg create mode 100644 mobile/assets/icons/material-symbols/low-priority.svg create mode 100644 mobile/assets/icons/material-symbols/lyrics.svg create mode 100644 mobile/assets/icons/material-symbols/mobile-arrow-down.svg create mode 100644 mobile/assets/icons/material-symbols/more-horiz.svg create mode 100644 mobile/assets/icons/material-symbols/more-vert.svg create mode 100644 mobile/assets/icons/material-symbols/open-in-new.svg create mode 100644 mobile/assets/icons/material-symbols/play-arrow-filled.svg create mode 100644 mobile/assets/icons/material-symbols/playlist-add.svg create mode 100644 mobile/assets/icons/material-symbols/puase-filled.svg create mode 100644 mobile/assets/icons/material-symbols/queue-music.svg create mode 100644 mobile/assets/icons/material-symbols/remove.svg create mode 100644 mobile/assets/icons/material-symbols/save.svg create mode 100644 mobile/assets/icons/material-symbols/schedule.svg create mode 100644 mobile/assets/icons/material-symbols/search.svg create mode 100644 mobile/assets/icons/material-symbols/settings.svg create mode 100644 mobile/assets/icons/material-symbols/skip-next-filled.svg create mode 100644 mobile/assets/icons/material-symbols/skip-previous-filled.svg create mode 100644 mobile/assets/icons/material-symbols/slow-motion-video.svg create mode 100644 mobile/assets/icons/material-symbols/sort.svg create mode 100644 mobile/assets/icons/material-symbols/timer.svg create mode 100644 mobile/assets/icons/material-symbols/translate.svg create mode 100644 mobile/assets/icons/material-symbols/view-agenda.svg create mode 100644 mobile/assets/icons/material-symbols/view-module.svg create mode 100644 mobile/assets/icons/material-symbols/visibility-off-filled.svg create mode 100644 mobile/assets/icons/material-symbols/voice-selection.svg create mode 100644 mobile/assets/icons/material-symbols/volume-up-filled.svg create mode 100644 mobile/assets/icons/material-symbols/warning.svg diff --git a/mobile/assets/icons/README.md b/mobile/assets/icons/README.md new file mode 100644 index 000000000..2cb7173ab --- /dev/null +++ b/mobile/assets/icons/README.md @@ -0,0 +1,8 @@ +# Icon Specifications + +**Material Symbols** + +- Weight: `300` +- Grade: `-25` +- Optical Size: `24px` +- Rounded diff --git a/mobile/assets/icons/material-symbols/activity-zone.svg b/mobile/assets/icons/material-symbols/activity-zone.svg new file mode 100644 index 000000000..45992af47 --- /dev/null +++ b/mobile/assets/icons/material-symbols/activity-zone.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/add.svg b/mobile/assets/icons/material-symbols/add.svg new file mode 100644 index 000000000..c4d218198 --- /dev/null +++ b/mobile/assets/icons/material-symbols/add.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/archive.svg b/mobile/assets/icons/material-symbols/archive.svg new file mode 100644 index 000000000..a2f9f2962 --- /dev/null +++ b/mobile/assets/icons/material-symbols/archive.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/arrow-back.svg b/mobile/assets/icons/material-symbols/arrow-back.svg new file mode 100644 index 000000000..987a9a03d --- /dev/null +++ b/mobile/assets/icons/material-symbols/arrow-back.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/autoplay.svg b/mobile/assets/icons/material-symbols/autoplay.svg new file mode 100644 index 000000000..0f790b5ce --- /dev/null +++ b/mobile/assets/icons/material-symbols/autoplay.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/bar-chart-4-bars.svg b/mobile/assets/icons/material-symbols/bar-chart-4-bars.svg new file mode 100644 index 000000000..33d8efd48 --- /dev/null +++ b/mobile/assets/icons/material-symbols/bar-chart-4-bars.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/cached.svg b/mobile/assets/icons/material-symbols/cached.svg new file mode 100644 index 000000000..3b0eddfe3 --- /dev/null +++ b/mobile/assets/icons/material-symbols/cached.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/cancel.svg b/mobile/assets/icons/material-symbols/cancel.svg new file mode 100644 index 000000000..f3a6cb14b --- /dev/null +++ b/mobile/assets/icons/material-symbols/cancel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/check-circle.svg b/mobile/assets/icons/material-symbols/check-circle.svg new file mode 100644 index 000000000..c26b7484a --- /dev/null +++ b/mobile/assets/icons/material-symbols/check-circle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/check.svg b/mobile/assets/icons/material-symbols/check.svg new file mode 100644 index 000000000..51f970b1a --- /dev/null +++ b/mobile/assets/icons/material-symbols/check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/close.svg b/mobile/assets/icons/material-symbols/close.svg new file mode 100644 index 000000000..bff6a38fc --- /dev/null +++ b/mobile/assets/icons/material-symbols/close.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/conversion-path.svg b/mobile/assets/icons/material-symbols/conversion-path.svg new file mode 100644 index 000000000..eedca7443 --- /dev/null +++ b/mobile/assets/icons/material-symbols/conversion-path.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/create-new-folder.svg b/mobile/assets/icons/material-symbols/create-new-folder.svg new file mode 100644 index 000000000..380b7e8f3 --- /dev/null +++ b/mobile/assets/icons/material-symbols/create-new-folder.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/delete.svg b/mobile/assets/icons/material-symbols/delete.svg new file mode 100644 index 000000000..12493f47b --- /dev/null +++ b/mobile/assets/icons/material-symbols/delete.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/do-not-disturb-on.svg b/mobile/assets/icons/material-symbols/do-not-disturb-on.svg new file mode 100644 index 000000000..c334534c2 --- /dev/null +++ b/mobile/assets/icons/material-symbols/do-not-disturb-on.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/document-search.svg b/mobile/assets/icons/material-symbols/document-search.svg new file mode 100644 index 000000000..99e4bc973 --- /dev/null +++ b/mobile/assets/icons/material-symbols/document-search.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/drag-handle.svg b/mobile/assets/icons/material-symbols/drag-handle.svg new file mode 100644 index 000000000..36e3580d6 --- /dev/null +++ b/mobile/assets/icons/material-symbols/drag-handle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/edit.svg b/mobile/assets/icons/material-symbols/edit.svg new file mode 100644 index 000000000..13d6a5402 --- /dev/null +++ b/mobile/assets/icons/material-symbols/edit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/favorite-filled.svg b/mobile/assets/icons/material-symbols/favorite-filled.svg new file mode 100644 index 000000000..4b923af0f --- /dev/null +++ b/mobile/assets/icons/material-symbols/favorite-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/favorite.svg b/mobile/assets/icons/material-symbols/favorite.svg new file mode 100644 index 000000000..6923719f3 --- /dev/null +++ b/mobile/assets/icons/material-symbols/favorite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/file-save.svg b/mobile/assets/icons/material-symbols/file-save.svg new file mode 100644 index 000000000..c8e8b0168 --- /dev/null +++ b/mobile/assets/icons/material-symbols/file-save.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/folder.svg b/mobile/assets/icons/material-symbols/folder.svg new file mode 100644 index 000000000..203cf2baa --- /dev/null +++ b/mobile/assets/icons/material-symbols/folder.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/format-paint.svg b/mobile/assets/icons/material-symbols/format-paint.svg new file mode 100644 index 000000000..801de38f0 --- /dev/null +++ b/mobile/assets/icons/material-symbols/format-paint.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/graph-1.svg b/mobile/assets/icons/material-symbols/graph-1.svg new file mode 100644 index 000000000..b43ec3a98 --- /dev/null +++ b/mobile/assets/icons/material-symbols/graph-1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/graphic-eq.svg b/mobile/assets/icons/material-symbols/graphic-eq.svg new file mode 100644 index 000000000..d2b0985cd --- /dev/null +++ b/mobile/assets/icons/material-symbols/graphic-eq.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/grid-view.svg b/mobile/assets/icons/material-symbols/grid-view.svg new file mode 100644 index 000000000..ee265af1e --- /dev/null +++ b/mobile/assets/icons/material-symbols/grid-view.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/history.svg b/mobile/assets/icons/material-symbols/history.svg new file mode 100644 index 000000000..1df300375 --- /dev/null +++ b/mobile/assets/icons/material-symbols/history.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/home-filled.svg b/mobile/assets/icons/material-symbols/home-filled.svg new file mode 100644 index 000000000..9bf2398c0 --- /dev/null +++ b/mobile/assets/icons/material-symbols/home-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/home.svg b/mobile/assets/icons/material-symbols/home.svg new file mode 100644 index 000000000..e962a71f5 --- /dev/null +++ b/mobile/assets/icons/material-symbols/home.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/image.svg b/mobile/assets/icons/material-symbols/image.svg new file mode 100644 index 000000000..d74027e6e --- /dev/null +++ b/mobile/assets/icons/material-symbols/image.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/info.svg b/mobile/assets/icons/material-symbols/info.svg new file mode 100644 index 000000000..410368d5a --- /dev/null +++ b/mobile/assets/icons/material-symbols/info.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/keyboard-arrow-down.svg b/mobile/assets/icons/material-symbols/keyboard-arrow-down.svg new file mode 100644 index 000000000..fa477c2d7 --- /dev/null +++ b/mobile/assets/icons/material-symbols/keyboard-arrow-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/link-off.svg b/mobile/assets/icons/material-symbols/link-off.svg new file mode 100644 index 000000000..ddea8577e --- /dev/null +++ b/mobile/assets/icons/material-symbols/link-off.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/low-priority.svg b/mobile/assets/icons/material-symbols/low-priority.svg new file mode 100644 index 000000000..7cb3ea138 --- /dev/null +++ b/mobile/assets/icons/material-symbols/low-priority.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/lyrics.svg b/mobile/assets/icons/material-symbols/lyrics.svg new file mode 100644 index 000000000..beacb9c83 --- /dev/null +++ b/mobile/assets/icons/material-symbols/lyrics.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/mobile-arrow-down.svg b/mobile/assets/icons/material-symbols/mobile-arrow-down.svg new file mode 100644 index 000000000..ace967abb --- /dev/null +++ b/mobile/assets/icons/material-symbols/mobile-arrow-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/more-horiz.svg b/mobile/assets/icons/material-symbols/more-horiz.svg new file mode 100644 index 000000000..637450fa3 --- /dev/null +++ b/mobile/assets/icons/material-symbols/more-horiz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/more-vert.svg b/mobile/assets/icons/material-symbols/more-vert.svg new file mode 100644 index 000000000..6d8a86d75 --- /dev/null +++ b/mobile/assets/icons/material-symbols/more-vert.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/open-in-new.svg b/mobile/assets/icons/material-symbols/open-in-new.svg new file mode 100644 index 000000000..706a849e7 --- /dev/null +++ b/mobile/assets/icons/material-symbols/open-in-new.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/play-arrow-filled.svg b/mobile/assets/icons/material-symbols/play-arrow-filled.svg new file mode 100644 index 000000000..16da7a170 --- /dev/null +++ b/mobile/assets/icons/material-symbols/play-arrow-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/playlist-add.svg b/mobile/assets/icons/material-symbols/playlist-add.svg new file mode 100644 index 000000000..e609f7c38 --- /dev/null +++ b/mobile/assets/icons/material-symbols/playlist-add.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/puase-filled.svg b/mobile/assets/icons/material-symbols/puase-filled.svg new file mode 100644 index 000000000..a918853f0 --- /dev/null +++ b/mobile/assets/icons/material-symbols/puase-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/queue-music.svg b/mobile/assets/icons/material-symbols/queue-music.svg new file mode 100644 index 000000000..bfe68969f --- /dev/null +++ b/mobile/assets/icons/material-symbols/queue-music.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/remove.svg b/mobile/assets/icons/material-symbols/remove.svg new file mode 100644 index 000000000..973ac2454 --- /dev/null +++ b/mobile/assets/icons/material-symbols/remove.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/save.svg b/mobile/assets/icons/material-symbols/save.svg new file mode 100644 index 000000000..fb6adcdf9 --- /dev/null +++ b/mobile/assets/icons/material-symbols/save.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/schedule.svg b/mobile/assets/icons/material-symbols/schedule.svg new file mode 100644 index 000000000..f4d47ef73 --- /dev/null +++ b/mobile/assets/icons/material-symbols/schedule.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/search.svg b/mobile/assets/icons/material-symbols/search.svg new file mode 100644 index 000000000..fc2d2ea5f --- /dev/null +++ b/mobile/assets/icons/material-symbols/search.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/settings.svg b/mobile/assets/icons/material-symbols/settings.svg new file mode 100644 index 000000000..a346949e9 --- /dev/null +++ b/mobile/assets/icons/material-symbols/settings.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/skip-next-filled.svg b/mobile/assets/icons/material-symbols/skip-next-filled.svg new file mode 100644 index 000000000..0bbb8e2ed --- /dev/null +++ b/mobile/assets/icons/material-symbols/skip-next-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/skip-previous-filled.svg b/mobile/assets/icons/material-symbols/skip-previous-filled.svg new file mode 100644 index 000000000..e3238560b --- /dev/null +++ b/mobile/assets/icons/material-symbols/skip-previous-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/slow-motion-video.svg b/mobile/assets/icons/material-symbols/slow-motion-video.svg new file mode 100644 index 000000000..b82f0ca5b --- /dev/null +++ b/mobile/assets/icons/material-symbols/slow-motion-video.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/sort.svg b/mobile/assets/icons/material-symbols/sort.svg new file mode 100644 index 000000000..81a6109c7 --- /dev/null +++ b/mobile/assets/icons/material-symbols/sort.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/timer.svg b/mobile/assets/icons/material-symbols/timer.svg new file mode 100644 index 000000000..bdf42e01b --- /dev/null +++ b/mobile/assets/icons/material-symbols/timer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/translate.svg b/mobile/assets/icons/material-symbols/translate.svg new file mode 100644 index 000000000..02ec2e62e --- /dev/null +++ b/mobile/assets/icons/material-symbols/translate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/view-agenda.svg b/mobile/assets/icons/material-symbols/view-agenda.svg new file mode 100644 index 000000000..62e18f41f --- /dev/null +++ b/mobile/assets/icons/material-symbols/view-agenda.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/view-module.svg b/mobile/assets/icons/material-symbols/view-module.svg new file mode 100644 index 000000000..28966a614 --- /dev/null +++ b/mobile/assets/icons/material-symbols/view-module.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/visibility-off-filled.svg b/mobile/assets/icons/material-symbols/visibility-off-filled.svg new file mode 100644 index 000000000..c638b1b5e --- /dev/null +++ b/mobile/assets/icons/material-symbols/visibility-off-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/voice-selection.svg b/mobile/assets/icons/material-symbols/voice-selection.svg new file mode 100644 index 000000000..4882ca168 --- /dev/null +++ b/mobile/assets/icons/material-symbols/voice-selection.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/volume-up-filled.svg b/mobile/assets/icons/material-symbols/volume-up-filled.svg new file mode 100644 index 000000000..9f8b9c5c0 --- /dev/null +++ b/mobile/assets/icons/material-symbols/volume-up-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/warning.svg b/mobile/assets/icons/material-symbols/warning.svg new file mode 100644 index 000000000..fac914b4e --- /dev/null +++ b/mobile/assets/icons/material-symbols/warning.svg @@ -0,0 +1 @@ + \ No newline at end of file From dccdbf62db0b4ea8979e395a040c73cd286f4a00 Mon Sep 17 00:00:00 2001 From: cyanChill <83375816+cyanChill@users.noreply.github.com> Date: Tue, 16 Jun 2026 15:11:52 -0400 Subject: [PATCH 04/17] chore: Run pre-build to generate fonts --- .../src/main/assets/fonts/material-symbols.ttf | Bin 0 -> 12136 bytes mobile/app.config.ts | 11 +++++++++++ .../icons/material-symbols.glyphmap.json | 1 + mobile/src/resources/icons/material-symbols.ttf | Bin 0 -> 12136 bytes 4 files changed, 12 insertions(+) create mode 100644 mobile/android/app/src/main/assets/fonts/material-symbols.ttf create mode 100644 mobile/src/resources/icons/material-symbols.glyphmap.json create mode 100644 mobile/src/resources/icons/material-symbols.ttf diff --git a/mobile/android/app/src/main/assets/fonts/material-symbols.ttf b/mobile/android/app/src/main/assets/fonts/material-symbols.ttf new file mode 100644 index 0000000000000000000000000000000000000000..1f0a37b3fc7613446a0925c66760d7673269fcd3 GIT binary patch literal 12136 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 Fe*rXh=oSC~ literal 0 HcmV?d00001 diff --git a/mobile/app.config.ts b/mobile/app.config.ts index 8ac739ea6..78b022ffb 100644 --- a/mobile/app.config.ts +++ b/mobile/app.config.ts @@ -103,6 +103,17 @@ export default (): ExpoConfig => { }), navigationBarPlugin({ android: { enforceNavigationBarContrast: false } }), ["react-native-android-widget", widgetPluginConfig], + [ + "react-native-nano-icons", + { + iconSets: [ + { + inputDir: "./assets/icons/material-symbols", + outputDir: "./src/resources/icons", + }, + ], + }, + ], ...optionalPlugins, ], }; diff --git a/mobile/src/resources/icons/material-symbols.glyphmap.json b/mobile/src/resources/icons/material-symbols.glyphmap.json new file mode 100644 index 000000000..98020f0a4 --- /dev/null +++ b/mobile/src/resources/icons/material-symbols.glyphmap.json @@ -0,0 +1 @@ +{"m":{"f":"material-symbols","u":1024,"z":1020,"s":59648,"h":"f8dd7af908a96bdfb3bfae172f541b310a46bbd23cb52da8dbe3055a5c0977dd"},"i":{"activity-zone":[1024,[[59648,"#e8eaed"]]],"add":[1024,[[59649,"#e8eaed"]]],"archive":[1024,[[59650,"#e8eaed"]]],"arrow-back":[1024,[[59651,"#e8eaed"]]],"autoplay":[1024,[[59652,"#e8eaed"]]],"bar-chart-4-bars":[1024,[[59653,"#e8eaed"]]],"cached":[1024,[[59654,"#e8eaed"]]],"cancel":[1024,[[59655,"#e8eaed"]]],"check-circle":[1024,[[59656,"#e8eaed"]]],"check":[1024,[[59657,"#e8eaed"]]],"close":[1024,[[59658,"#e8eaed"]]],"conversion-path":[1024,[[59659,"#e8eaed"]]],"create-new-folder":[1024,[[59660,"#e8eaed"]]],"delete":[1024,[[59661,"#e8eaed"]]],"do-not-disturb-on":[1024,[[59662,"#e8eaed"]]],"document-search":[1024,[[59663,"#e8eaed"]]],"drag-handle":[1024,[[59664,"#e8eaed"]]],"edit":[1024,[[59665,"#e8eaed"]]],"favorite-filled":[1024,[[59666,"#e8eaed"]]],"favorite":[1024,[[59667,"#e8eaed"]]],"file-save":[1024,[[59668,"#e8eaed"]]],"folder":[1024,[[59669,"#e8eaed"]]],"format-paint":[1024,[[59670,"#e8eaed"]]],"graph-1":[1024,[[59671,"#e8eaed"]]],"graphic-eq":[1024,[[59672,"#e8eaed"]]],"grid-view":[1024,[[59673,"#e8eaed"]]],"history":[1024,[[59674,"#e8eaed"]]],"home-filled":[1024,[[59675,"#e8eaed"]]],"home":[1024,[[59676,"#e8eaed"]]],"image":[1024,[[59677,"#e8eaed"]]],"info":[1024,[[59678,"#e8eaed"]]],"keyboard-arrow-down":[1024,[[59679,"#e8eaed"]]],"link-off":[1024,[[59680,"#e8eaed"]]],"low-priority":[1024,[[59681,"#e8eaed"]]],"lyrics":[1024,[[59682,"#e8eaed"]]],"mobile-arrow-down":[1024,[[59683,"#e8eaed"]]],"more-horiz":[1024,[[59684,"#e8eaed"]]],"more-vert":[1024,[[59685,"#e8eaed"]]],"open-in-new":[1024,[[59686,"#e8eaed"]]],"play-arrow-filled":[1024,[[59687,"#e8eaed"]]],"playlist-add":[1024,[[59688,"#e8eaed"]]],"puase-filled":[1024,[[59689,"#e8eaed"]]],"queue-music":[1024,[[59690,"#e8eaed"]]],"remove":[1024,[[59691,"#e8eaed"]]],"save":[1024,[[59692,"#e8eaed"]]],"schedule":[1024,[[59693,"#e8eaed"]]],"search":[1024,[[59694,"#e8eaed"]]],"settings":[1024,[[59695,"#e8eaed"]]],"skip-next-filled":[1024,[[59696,"#e8eaed"]]],"skip-previous-filled":[1024,[[59697,"#e8eaed"]]],"slow-motion-video":[1024,[[59698,"#e8eaed"]]],"sort":[1024,[[59699,"#e8eaed"]]],"timer":[1024,[[59700,"#e8eaed"]]],"translate":[1024,[[59701,"#e8eaed"]]],"view-agenda":[1024,[[59702,"#e8eaed"]]],"view-module":[1024,[[59703,"#e8eaed"]]],"visibility-off-filled":[1024,[[59704,"#e8eaed"]]],"voice-selection":[1024,[[59705,"#e8eaed"]]],"volume-up-filled":[1024,[[59706,"#e8eaed"]]],"warning":[1024,[[59707,"#e8eaed"]]]}} \ No newline at end of file diff --git a/mobile/src/resources/icons/material-symbols.ttf b/mobile/src/resources/icons/material-symbols.ttf new file mode 100644 index 0000000000000000000000000000000000000000..1f0a37b3fc7613446a0925c66760d7673269fcd3 GIT binary patch literal 12136 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 Fe*rXh=oSC~ literal 0 HcmV?d00001 From 868cef11d0be1815833a872c321bbe841f79bdf1 Mon Sep 17 00:00:00 2001 From: cyanChill <83375816+cyanChill@users.noreply.github.com> Date: Tue, 16 Jun 2026 15:35:38 -0400 Subject: [PATCH 05/17] chore: Custom component to pre-apply default styling on icons --- mobile/src/resources/icons/index.tsx | 29 ++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 mobile/src/resources/icons/index.tsx diff --git a/mobile/src/resources/icons/index.tsx b/mobile/src/resources/icons/index.tsx new file mode 100644 index 000000000..e94f55255 --- /dev/null +++ b/mobile/src/resources/icons/index.tsx @@ -0,0 +1,29 @@ +import { createNanoIconSet } from "react-native-nano-icons"; + +import type { AppColor } from "~/modules/customization/theme/core/constants"; +import { useColor } from "~/modules/customization/theme/hooks"; +import glyphMap from "./material-symbols.glyphmap.json"; + +const MaterialIcon = createNanoIconSet(glyphMap); + +type SupportedIcoName = React.ComponentProps["name"]; + +type Props = { + name: SupportedIcoName; + /** Defaults to `24px`. */ + size?: number; + /** Defaults to theme's `onSurface` color. */ + color?: AppColor; +}; + +export function Icon({ name, size = 24, color }: Props) { + const usedColor = useColor(color, "onSurface"); + return ( + + ); +} From d0f5911d795be75c1d37bec55728ec07a1366f42 Mon Sep 17 00:00:00 2001 From: cyanChill <83375816+cyanChill@users.noreply.github.com> Date: Tue, 16 Jun 2026 15:52:48 -0400 Subject: [PATCH 06/17] chore: Testing out conversion of some icons --- .../sheets/PlaybackOptionsSheet.tsx | 7 ++-- .../src/navigation/screens/settings/View.tsx | 37 +++++++------------ mobile/src/resources/icons/ActivityZone.tsx | 13 ------- mobile/src/resources/icons/Archive.tsx | 13 ------- mobile/src/resources/icons/AutoPlay.tsx | 13 ------- mobile/src/resources/icons/BarChart4Bars.tsx | 13 ------- mobile/src/resources/icons/DocumentSearch.tsx | 13 ------- mobile/src/resources/icons/FormatPaint.tsx | 13 ------- mobile/src/resources/icons/GraphicEQ.tsx | 13 ------- mobile/src/resources/icons/Lyrics.tsx | 13 ------- .../src/resources/icons/MobileArrowDown.tsx | 13 ------- mobile/src/resources/icons/Translate.tsx | 13 ------- 12 files changed, 17 insertions(+), 157 deletions(-) delete mode 100644 mobile/src/resources/icons/ActivityZone.tsx delete mode 100644 mobile/src/resources/icons/Archive.tsx delete mode 100644 mobile/src/resources/icons/AutoPlay.tsx delete mode 100644 mobile/src/resources/icons/BarChart4Bars.tsx delete mode 100644 mobile/src/resources/icons/DocumentSearch.tsx delete mode 100644 mobile/src/resources/icons/FormatPaint.tsx delete mode 100644 mobile/src/resources/icons/GraphicEQ.tsx delete mode 100644 mobile/src/resources/icons/Lyrics.tsx delete mode 100644 mobile/src/resources/icons/MobileArrowDown.tsx delete mode 100644 mobile/src/resources/icons/Translate.tsx diff --git a/mobile/src/navigation/screens/now-playing/sheets/PlaybackOptionsSheet.tsx b/mobile/src/navigation/screens/now-playing/sheets/PlaybackOptionsSheet.tsx index 454c57a61..a5db9dbda 100644 --- a/mobile/src/navigation/screens/now-playing/sheets/PlaybackOptionsSheet.tsx +++ b/mobile/src/navigation/screens/now-playing/sheets/PlaybackOptionsSheet.tsx @@ -2,8 +2,7 @@ import { useNavigation } from "@react-navigation/native"; import { useCallback, useState } from "react"; import AudioBrowser from "react-native-audio-browser"; -import { ActivityZone } from "~/resources/icons/ActivityZone"; -import { GraphicEQ } from "~/resources/icons/GraphicEQ"; +import { Icon } from "~/resources/icons"; import { VolumeUp } from "~/resources/icons/VolumeUp"; import { playbackStore, usePlaybackStore } from "~/stores/Playback/store"; import { usePreferenceStore } from "~/stores/Preference/store"; @@ -133,13 +132,13 @@ export function PlaybackOptionsSheet(props: { } + LeftElement={} className="gap-4" /> } + LeftElement={} className="gap-4" /> diff --git a/mobile/src/navigation/screens/settings/View.tsx b/mobile/src/navigation/screens/settings/View.tsx index b4cd7d5f3..1c409a070 100644 --- a/mobile/src/navigation/screens/settings/View.tsx +++ b/mobile/src/navigation/screens/settings/View.tsx @@ -1,17 +1,8 @@ import { useNavigation } from "@react-navigation/native"; import { useTranslation } from "react-i18next"; -import { Archive } from "~/resources/icons/Archive"; -import { AutoPlay } from "~/resources/icons/AutoPlay"; -import { BarChart4Bars } from "~/resources/icons/BarChart4Bars"; -import { DocumentSearch } from "~/resources/icons/DocumentSearch"; +import { Icon } from "~/resources/icons"; import { Flask } from "~/resources/icons/Flask"; -import { FormatPaint } from "~/resources/icons/FormatPaint"; -import { GraphicEQ } from "~/resources/icons/GraphicEQ"; -import { Lyrics } from "~/resources/icons/Lyrics"; -import { MobileArrowDown } from "~/resources/icons/MobileArrowDown"; -import { OpenInNew } from "~/resources/icons/OpenInNew"; -import { Translate } from "~/resources/icons/Translate"; import { usePreferenceStore } from "~/stores/Preference/store"; import { PreferenceTogglers } from "~/stores/Preference/actions"; @@ -47,7 +38,7 @@ export default function Settings() { labelTextKey="feat.appUpdate.title" supportingText={t("feat.appUpdate.brief")} onPress={() => navigation.navigate("AppUpdate")} - LeftElement={} + LeftElement={} className="gap-4 rounded-full bg-secondary" _psuedoClassName="active:bg-secondaryDim" _textColor="onSecondary" @@ -58,13 +49,13 @@ export default function Settings() { navigation.navigate("AppearanceSettings")} - LeftElement={} + LeftElement={} className="gap-4" /> languageSheetRef.current?.present()} - LeftElement={} + LeftElement={} className="gap-4" /> @@ -73,13 +64,13 @@ export default function Settings() { backupSheetRef.current?.present()} - LeftElement={} + LeftElement={} className="gap-4" /> navigation.navigate("Insights")} - LeftElement={} + LeftElement={} className="gap-4" /> @@ -87,25 +78,25 @@ export default function Settings() { navigation.navigate("AudioEffects", {})} - LeftElement={} + LeftElement={} className="gap-4" /> navigation.navigate("Lyrics", {})} - LeftElement={} + LeftElement={} className="gap-4" /> navigation.navigate("PlaybackSettings")} - LeftElement={} + LeftElement={} className="gap-4" /> navigation.navigate("ScanningSettings")} - LeftElement={} + LeftElement={} className="gap-4" /> @@ -122,17 +113,17 @@ export default function Settings() { labelTextKey="feat.code.title" supportingText={t("feat.code.brief")} onPress={() => openLink(Links.GitHub)} - RightElement={} + RightElement={} /> openLink(Links.License)} - RightElement={} + RightElement={} /> openLink(Links.PrivacyPolicy)} - RightElement={} + RightElement={} /> openLink(Links.CurrentRelease)} - RightElement={} + RightElement={} className="rounded-none" /> diff --git a/mobile/src/resources/icons/ActivityZone.tsx b/mobile/src/resources/icons/ActivityZone.tsx deleted file mode 100644 index 2b518a613..000000000 --- a/mobile/src/resources/icons/ActivityZone.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function ActivityZone({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/Archive.tsx b/mobile/src/resources/icons/Archive.tsx deleted file mode 100644 index 1b0b3d58f..000000000 --- a/mobile/src/resources/icons/Archive.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function Archive({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/AutoPlay.tsx b/mobile/src/resources/icons/AutoPlay.tsx deleted file mode 100644 index febb340f6..000000000 --- a/mobile/src/resources/icons/AutoPlay.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function AutoPlay({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/BarChart4Bars.tsx b/mobile/src/resources/icons/BarChart4Bars.tsx deleted file mode 100644 index caa092817..000000000 --- a/mobile/src/resources/icons/BarChart4Bars.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function BarChart4Bars({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/DocumentSearch.tsx b/mobile/src/resources/icons/DocumentSearch.tsx deleted file mode 100644 index 4545a0321..000000000 --- a/mobile/src/resources/icons/DocumentSearch.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function DocumentSearch({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/FormatPaint.tsx b/mobile/src/resources/icons/FormatPaint.tsx deleted file mode 100644 index c132fe33b..000000000 --- a/mobile/src/resources/icons/FormatPaint.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function FormatPaint({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/GraphicEQ.tsx b/mobile/src/resources/icons/GraphicEQ.tsx deleted file mode 100644 index f4113d9ca..000000000 --- a/mobile/src/resources/icons/GraphicEQ.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function GraphicEQ({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/Lyrics.tsx b/mobile/src/resources/icons/Lyrics.tsx deleted file mode 100644 index a5ce86a55..000000000 --- a/mobile/src/resources/icons/Lyrics.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function Lyrics({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/MobileArrowDown.tsx b/mobile/src/resources/icons/MobileArrowDown.tsx deleted file mode 100644 index e1a9126a4..000000000 --- a/mobile/src/resources/icons/MobileArrowDown.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function MobileArrowDown({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/Translate.tsx b/mobile/src/resources/icons/Translate.tsx deleted file mode 100644 index bfa0cbc05..000000000 --- a/mobile/src/resources/icons/Translate.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function Translate({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} From 4e1987144d8109afc21c281c33f8eff801e3f4a2 Mon Sep 17 00:00:00 2001 From: cyanChill <83375816+cyanChill@users.noreply.github.com> Date: Tue, 16 Jun 2026 16:03:41 -0400 Subject: [PATCH 07/17] chore: Move icon conversions --- mobile/src/components/Form/Checkbox.tsx | 4 ++-- mobile/src/components/Form/Radio.tsx | 4 ++-- .../modules/customization/theme/screens/View.tsx | 6 ++++-- mobile/src/modules/lyric/screens/ProviderView.tsx | 7 +++---- mobile/src/modules/lyric/screens/View.tsx | 4 ++-- mobile/src/modules/media/components/MediaImage.tsx | 4 ++-- .../screens/playlists/components/ModifyViewBase.tsx | 13 ++++++------- .../navigation/screens/settings/AppUpdateView.tsx | 4 ++-- .../screens/settings/ExperimentalSettingsView.tsx | 7 +++---- .../screens/settings/sheets/LanguageSheet.tsx | 7 +++---- .../screens/settings/sheets/SeparatorsSheet.tsx | 4 ++-- mobile/src/navigation/screens/tracks/ModifyView.tsx | 4 ++-- mobile/src/resources/icons/Cancel.tsx | 13 ------------- mobile/src/resources/icons/CheckCircle.tsx | 13 ------------- mobile/src/resources/icons/Folder.tsx | 13 ------------- mobile/src/resources/icons/Info.tsx | 13 ------------- mobile/src/resources/icons/index.tsx | 4 +++- 17 files changed, 36 insertions(+), 88 deletions(-) delete mode 100644 mobile/src/resources/icons/Cancel.tsx delete mode 100644 mobile/src/resources/icons/CheckCircle.tsx delete mode 100644 mobile/src/resources/icons/Folder.tsx delete mode 100644 mobile/src/resources/icons/Info.tsx diff --git a/mobile/src/components/Form/Checkbox.tsx b/mobile/src/components/Form/Checkbox.tsx index 4b0da18d5..f167e0fc4 100644 --- a/mobile/src/components/Form/Checkbox.tsx +++ b/mobile/src/components/Form/Checkbox.tsx @@ -2,7 +2,7 @@ import type { ParseKeys } from "i18next"; import { memo } from "react"; import { View } from "react-native"; -import { Check } from "~/resources/icons/Check"; +import { Icon } from "~/resources/icons"; import { cn } from "~/lib/style"; import { Pressable } from "../Base/Pressable"; @@ -18,7 +18,7 @@ function Checkbox({ checked, size = 20 }: { checked: boolean; size?: number }) { { "border-0 bg-onSurface": checked }, )} > - {checked ? : null} + {checked ? : null} ); } diff --git a/mobile/src/components/Form/Radio.tsx b/mobile/src/components/Form/Radio.tsx index b6cd5412a..b97311151 100644 --- a/mobile/src/components/Form/Radio.tsx +++ b/mobile/src/components/Form/Radio.tsx @@ -1,7 +1,7 @@ import { memo } from "react"; import { View } from "react-native"; -import { Check } from "~/resources/icons/Check"; +import { Icon } from "~/resources/icons"; import { cn } from "~/lib/style"; import { Pressable } from "../Base/Pressable"; @@ -15,7 +15,7 @@ export function Radio({ selected }: { selected: boolean }) { { "border-0 bg-onSurface": selected }, )} > - {selected ? : null} + {selected ? : null} ); } diff --git a/mobile/src/modules/customization/theme/screens/View.tsx b/mobile/src/modules/customization/theme/screens/View.tsx index d3fd669dc..f652108cd 100644 --- a/mobile/src/modules/customization/theme/screens/View.tsx +++ b/mobile/src/modules/customization/theme/screens/View.tsx @@ -4,8 +4,8 @@ import { useMemo } from "react"; import { useTranslation } from "react-i18next"; import { View } from "react-native"; +import { Icon } from "~/resources/icons"; import { Add } from "~/resources/icons/Add"; -import { Check } from "~/resources/icons/Check"; import { Edit } from "~/resources/icons/Edit"; import { FileSave } from "~/resources/icons/FileSave"; import { usePreferenceStore } from "~/stores/Preference/store"; @@ -93,7 +93,9 @@ export default function Themes() { )} style={{ borderColor: themeColors.onSurface }} > - {selected ? : null} + {selected ? ( + + ) : null} openLink(Links.LyricsProviders)} className="flex-row items-start pl-2" > - + {t("feat.lyrics.extra.providersInstructions.line1")} {"\n\n"} {t("feat.lyrics.extra.providersInstructions.line2")} - + } + RightElement={} onPress={() => navigation.navigate("Lyric", { id: item.id })} className={cn({ "mt-0.75 rounded-t-xs": index > 0, diff --git a/mobile/src/modules/media/components/MediaImage.tsx b/mobile/src/modules/media/components/MediaImage.tsx index f32c9b66c..c3146c546 100644 --- a/mobile/src/modules/media/components/MediaImage.tsx +++ b/mobile/src/modules/media/components/MediaImage.tsx @@ -3,7 +3,7 @@ import { useMemo } from "react"; import { View } from "react-native"; import { withUniwind } from "uniwind"; -import { Folder } from "~/resources/icons/Folder"; +import { Icon } from "~/resources/icons"; import { usePreferenceStore } from "~/stores/Preference/store"; import { cn } from "~/lib/style"; @@ -62,7 +62,7 @@ export function MediaImage({ } else if (type === "folder") { return ( - + ); } diff --git a/mobile/src/navigation/screens/playlists/components/ModifyViewBase.tsx b/mobile/src/navigation/screens/playlists/components/ModifyViewBase.tsx index cf548517b..23c321849 100644 --- a/mobile/src/navigation/screens/playlists/components/ModifyViewBase.tsx +++ b/mobile/src/navigation/screens/playlists/components/ModifyViewBase.tsx @@ -6,9 +6,8 @@ import { useTranslation } from "react-i18next"; import { View } from "react-native"; import { z } from "zod/mini"; +import { Icon } from "~/resources/icons"; import { Add } from "~/resources/icons/Add"; -import { Cancel } from "~/resources/icons/Cancel"; -import { CheckCircle } from "~/resources/icons/CheckCircle"; import { DragHandle } from "~/resources/icons/DragHandle"; import { getArtistsString } from "~/data/artist/utils"; import { usePlaylistsNames } from "~/data/playlist/queries"; @@ -215,10 +214,6 @@ function AddTracksSheet(props: { ref: TrueSheetRef }) { function PlaylistNameField({ isFavoritesList }: { isFavoritesList?: boolean }) { const { passedConstraints } = useFormState(); - const ConstraintIcon = useMemo( - () => (passedConstraints ? CheckCircle : Cancel), - [passedConstraints], - ); const constraintColor = !passedConstraints ? "onSurfaceVariant" : undefined; return ( @@ -234,7 +229,11 @@ function PlaylistNameField({ isFavoritesList }: { isFavoritesList?: boolean }) { )} - + - + {children} ), diff --git a/mobile/src/navigation/screens/settings/ExperimentalSettingsView.tsx b/mobile/src/navigation/screens/settings/ExperimentalSettingsView.tsx index 3cc83374f..3ca50dc7d 100644 --- a/mobile/src/navigation/screens/settings/ExperimentalSettingsView.tsx +++ b/mobile/src/navigation/screens/settings/ExperimentalSettingsView.tsx @@ -5,8 +5,7 @@ import { useTranslation } from "react-i18next"; import { db } from "~/db"; import { waveformSamples } from "~/db/schema"; -import { OpenInNew } from "~/resources/icons/OpenInNew"; -import { Search } from "~/resources/icons/Search"; +import { Icon } from "~/resources/icons"; import { usePreferenceStore } from "~/stores/Preference/store"; import { PreferenceTogglers } from "~/stores/Preference/actions"; import { sessionStore } from "~/stores/Session/store"; @@ -55,13 +54,13 @@ export default function ExperimentalSettings() { openLink(Links.AndroidAuto)} - RightElement={} + RightElement={} /> navigation.navigate("LyricsProviders")} - LeftElement={} + LeftElement={} className="gap-4" /> diff --git a/mobile/src/navigation/screens/settings/sheets/LanguageSheet.tsx b/mobile/src/navigation/screens/settings/sheets/LanguageSheet.tsx index b03833f05..9f694c473 100644 --- a/mobile/src/navigation/screens/settings/sheets/LanguageSheet.tsx +++ b/mobile/src/navigation/screens/settings/sheets/LanguageSheet.tsx @@ -1,7 +1,6 @@ import { View } from "react-native"; -import { KeyboardArrowDown } from "~/resources/icons/KeyboardArrowDown"; -import { OpenInNew } from "~/resources/icons/OpenInNew"; +import { Icon } from "~/resources/icons"; import { usePreferenceStore } from "~/stores/Preference/store"; import { PreferenceSetters, @@ -46,7 +45,7 @@ export function LanguageSheet(props: { ref: TrueSheetRef }) { > {selectedLanguage?.name} - + @@ -66,7 +65,7 @@ export function LanguageSheet(props: { ref: TrueSheetRef }) { openLink(Links.Translations)} - RightElement={} + RightElement={} className="rounded-full" /> diff --git a/mobile/src/navigation/screens/settings/sheets/SeparatorsSheet.tsx b/mobile/src/navigation/screens/settings/sheets/SeparatorsSheet.tsx index 52972db09..0f5f1da3a 100644 --- a/mobile/src/navigation/screens/settings/sheets/SeparatorsSheet.tsx +++ b/mobile/src/navigation/screens/settings/sheets/SeparatorsSheet.tsx @@ -3,9 +3,9 @@ import { useTranslation } from "react-i18next"; import { Keyboard, View } from "react-native"; import i18next from "~/modules/i18n"; +import { Icon } from "~/resources/icons"; import { Add } from "~/resources/icons/Add"; import { Close } from "~/resources/icons/Close"; -import { Info } from "~/resources/icons/Info"; import { preferenceStore, usePreferenceStore } from "~/stores/Preference/store"; import { FlatList } from "~/components/Base/List"; @@ -59,7 +59,7 @@ export function SeparatorsSheet(props: { ref: TrueSheetRef }) { - + - + {t("feat.trackMetadata.description.line1")} {"\n\n"} diff --git a/mobile/src/resources/icons/Cancel.tsx b/mobile/src/resources/icons/Cancel.tsx deleted file mode 100644 index b58c1931f..000000000 --- a/mobile/src/resources/icons/Cancel.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function Cancel({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/CheckCircle.tsx b/mobile/src/resources/icons/CheckCircle.tsx deleted file mode 100644 index 71d39db0f..000000000 --- a/mobile/src/resources/icons/CheckCircle.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function CheckCircle({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/Folder.tsx b/mobile/src/resources/icons/Folder.tsx deleted file mode 100644 index 61a7413e8..000000000 --- a/mobile/src/resources/icons/Folder.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function Folder({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/Info.tsx b/mobile/src/resources/icons/Info.tsx deleted file mode 100644 index fdcc800a8..000000000 --- a/mobile/src/resources/icons/Info.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function Info({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/index.tsx b/mobile/src/resources/icons/index.tsx index e94f55255..02d3b87d2 100644 --- a/mobile/src/resources/icons/index.tsx +++ b/mobile/src/resources/icons/index.tsx @@ -6,7 +6,9 @@ import glyphMap from "./material-symbols.glyphmap.json"; const MaterialIcon = createNanoIconSet(glyphMap); -type SupportedIcoName = React.ComponentProps["name"]; +export type SupportedIcoName = React.ComponentProps< + typeof MaterialIcon +>["name"]; type Props = { name: SupportedIcoName; From a1520ec551332433cb4285f59993f06f595dbbab Mon Sep 17 00:00:00 2001 From: cyanChill <83375816+cyanChill@users.noreply.github.com> Date: Tue, 16 Jun 2026 16:07:01 -0400 Subject: [PATCH 08/17] chore: Last of icon conversions where we render the imported icon instead of passing it as a prop --- mobile/src/modules/search/components/SearchBar.tsx | 4 ++-- mobile/src/navigation/layouts/CurrentListLayout.tsx | 4 ++-- mobile/src/navigation/sheets/ViewOptionsSheet.tsx | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/mobile/src/modules/search/components/SearchBar.tsx b/mobile/src/modules/search/components/SearchBar.tsx index 3f6460aaa..2713a6cbc 100644 --- a/mobile/src/modules/search/components/SearchBar.tsx +++ b/mobile/src/modules/search/components/SearchBar.tsx @@ -1,8 +1,8 @@ import { useTranslation } from "react-i18next"; import { View } from "react-native"; +import { Icon } from "~/resources/icons"; import { Close } from "~/resources/icons/Close"; -import { Search } from "~/resources/icons/Search"; import { IconButton } from "~/components/Form/Button/Icon"; import { TextInput, useInputRef } from "~/components/Form/Input"; @@ -18,7 +18,7 @@ export function SearchBar(props: { return ( - + {" • "} - + {` ${props.metadata.at(-1)!}`} diff --git a/mobile/src/navigation/sheets/ViewOptionsSheet.tsx b/mobile/src/navigation/sheets/ViewOptionsSheet.tsx index b8dbf35af..9edf0e085 100644 --- a/mobile/src/navigation/sheets/ViewOptionsSheet.tsx +++ b/mobile/src/navigation/sheets/ViewOptionsSheet.tsx @@ -1,8 +1,8 @@ import { useTranslation } from "react-i18next"; import { View } from "react-native"; +import { Icon } from "~/resources/icons"; import { GridView } from "~/resources/icons/GridView"; -import { Sort } from "~/resources/icons/Sort"; import { ViewAgenda } from "~/resources/icons/ViewAgenda"; import { ViewModule } from "~/resources/icons/ViewModule"; import { usePreferenceStore } from "~/stores/Preference/store"; @@ -49,7 +49,7 @@ export function AlbumsViewOptionsSheet(props: { ref: TrueSheetRef }) { props.ref.current?.dismiss(); sortOrderSheetRef.current?.present(); }} - LeftElement={} + LeftElement={} className="gap-4" /> @@ -105,7 +105,7 @@ function ViewOptionsSheetTemplate(props: { props.ref.current?.dismiss(); sortOrderSheetRef.current?.present(); }} - LeftElement={} + LeftElement={} className="gap-4" /> From 7a5deac1fb6f6bf0e8948b6b6025a21a67b8872c Mon Sep 17 00:00:00 2001 From: cyanChill <83375816+cyanChill@users.noreply.github.com> Date: Tue, 16 Jun 2026 16:47:39 -0400 Subject: [PATCH 09/17] chore: Port over ionicons --- .../app/src/main/assets/fonts/ionicons.ttf | Bin 0 -> 3816 bytes .../main/assets/fonts/material-symbols.ttf | Bin 12136 -> 12136 bytes mobile/app.config.ts | 4 ++++ mobile/assets/icons/ionicons/color-wand.svg | 1 + mobile/assets/icons/ionicons/flask-filled.svg | 1 + mobile/assets/icons/ionicons/logo-github.svg | 1 + .../icons/ionicons/logo-google-playstore.svg | 1 + mobile/assets/icons/ionicons/repeat-one.svg | 2 ++ mobile/assets/icons/ionicons/repeat.svg | 1 + mobile/assets/icons/ionicons/shuffle.svg | 1 + .../{puase-filled.svg => pause-filled.svg} | 0 .../resources/icons/ionicons.glyphmap.json | 1 + mobile/src/resources/icons/ionicons.ttf | Bin 0 -> 3816 bytes .../icons/material-symbols.glyphmap.json | 2 +- .../src/resources/icons/material-symbols.ttf | Bin 12136 -> 12136 bytes 15 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 mobile/android/app/src/main/assets/fonts/ionicons.ttf create mode 100644 mobile/assets/icons/ionicons/color-wand.svg create mode 100644 mobile/assets/icons/ionicons/flask-filled.svg create mode 100644 mobile/assets/icons/ionicons/logo-github.svg create mode 100644 mobile/assets/icons/ionicons/logo-google-playstore.svg create mode 100644 mobile/assets/icons/ionicons/repeat-one.svg create mode 100644 mobile/assets/icons/ionicons/repeat.svg create mode 100644 mobile/assets/icons/ionicons/shuffle.svg rename mobile/assets/icons/material-symbols/{puase-filled.svg => pause-filled.svg} (100%) create mode 100644 mobile/src/resources/icons/ionicons.glyphmap.json create mode 100644 mobile/src/resources/icons/ionicons.ttf diff --git a/mobile/android/app/src/main/assets/fonts/ionicons.ttf b/mobile/android/app/src/main/assets/fonts/ionicons.ttf new file mode 100644 index 0000000000000000000000000000000000000000..0c639d36d2598acbf785c9477e926d8ef2f24610 GIT binary patch literal 3816 zcmeHKTWp+16`nJ)gEdu6Io?&O#OJ#<{pOO+rx8#IbknB(~SG zoed=V(7LlRA;80e^}oG zz6*GKar)XawX?qg#~PMenqDm5y#324@LA}HFIQLBe*M>1jx*M99rFuJim%g4OkwT| z{O6#2sXo%%EJq_Mo$pL);C*&j9z(5yGVj$m#-FvHcs zBuinG_<%nMZEm7xo0|#Rl0q8u|8K^MOnis`f_bbJUQ^5^C?3<@8R{QN=opY(aRf*= zO|?&T(2qMtr`l@=I}X`4y>7Qg?b<=RmA}@}Q9IZ^HEQOkqIRpHMq3R>-P(K`zsKNH zq$9E=DMqt0!l_KeEh&Vwo;`iWay>Mc-zLr-19}dqN=qW?UlhCu9&%1WpE*EfH0p?lbISYw?A1+Ow6iy*byh zIJX?yManf4H;e&<=dcsQGAWeSmR3qCb;zb?iO6$=AQECi;uK&xWY<28)!>9c&z;mp zAiw)iR@ieaN&}zwMb@>}&iLGix!_z#1-+A+o{>;xX|2`7Luu;Je-wFP$3h^PJG=|q z46zAVS>XKnTyc!DJl(B3VU;}W9T6=_-bMLzu2>R`#W}&2xkjhd)-1s{W$*yor zg}mD9{*b{1)iy0la;ZbHC%5y4?N7!+8mLuEn2XYaUsXa__BxlL+UIRW8G2DfW3M!Y zwdbg&umyA6i8a?QHbk3avF7Gz?~Wb4(Pkf}buLsa9>1eFy&R9n-n6k^S`H52pXWZ# zvkau$g1K8_i7raS{ZrwByEFZn;eNjxE#`;giFjf-o-c{ws3GthE z;yx^gqwTLT^pxP&tAVgH+BH|&iKMN#hc7x4T!l8L`hSU zY|8W~>gm@Bn{<4XGJP2I10Yg{*#`5V^trV{GLh<2$Sfwk$dejuQfnh=*q3Zsh(2ToiKQY- zYE~jm%xQ#8kR=Wu;Si4|t+T;VXtK~Py^um&_xFz%J2!*ua_k7Qm4jphfiu1wWS(_Bp^BPhV7ACcTgMrx+(66 z5^HA#c9LCVUx6iaFh+zLXeT$NQkaUMa>K?#5#gH$rK7}~bHk5>t}IEF&&89}MO&4# zyFW{Vg!+o`?5kH>(Ty4poDL9YM2@S4INo+*=+&T_emAwJ=@Y`mBIT7)(#it09$|FU zuad48kSo4#`c>70Dm;yZbpKWT*3gNzZ#3;mT@J)82l%T&+2-dj>3Z2-hN7szTf)R< ztnCC(2@Rp28`$laStPoyw$Dg?R+UXLHCqW`C&wmjQ&Q=96I)pO-(qX`z@OT>OstrK z?<2yh>v|}?P5Lj1u-7%P+plS;Yd4ep=DEoJzc9D{rv3e?O3Gx;tx?=Z=4LEZujzoW z=8-q>$50bNc~A4JfAB(n&xDT*v1izCX_EfHd&Lp)uKWS0MuNlMspo88lLMSFype;} z$bJ^+A?&5T!aUe5V0HZhP$YmQ;6wl`=CWh}YtVNDu)}t;TmZYQ85IIAb!py*ji~Z< zn4@BC1h4@8Rsc)DcLG?kIJ+0X8uYgU*nw~VDu7+qPdhGFmoCm!msX!H&s|xVUfDvo z#*^ihRlup?!J#eEM0u&aGQC!wOPmUf(2(B``+d&u S^L{_#_XWQ%`u(Wif8^gUioAUQ literal 0 HcmV?d00001 diff --git a/mobile/android/app/src/main/assets/fonts/material-symbols.ttf b/mobile/android/app/src/main/assets/fonts/material-symbols.ttf index 1f0a37b3fc7613446a0925c66760d7673269fcd3..6b62f4e04cc8322f5dcc49dc1c8ed8c014c1c1ca 100644 GIT binary patch delta 77 zcmaD6_abhBBlC7aj)^Y1%*eqoXY)px(>yZuJaMh@{5D@1xLFuL a;8}Q@5{%wFLzA14c@xjI&C9e7u>b%U7a5NL delta 77 zcmaD6_abhBBlEVWViR3-nRT@^HkLe;n!Hu|&*V_)gv}dePV>mr?by~B&u{aUft!T^ a1fGQlXu{~tGc>swnV0c0Y+j~yhy?(Xpc?T2 diff --git a/mobile/app.config.ts b/mobile/app.config.ts index 78b022ffb..f8a567e06 100644 --- a/mobile/app.config.ts +++ b/mobile/app.config.ts @@ -107,6 +107,10 @@ export default (): ExpoConfig => { "react-native-nano-icons", { iconSets: [ + { + inputDir: "./assets/icons/ionicons", + outputDir: "./src/resources/icons", + }, { inputDir: "./assets/icons/material-symbols", outputDir: "./src/resources/icons", diff --git a/mobile/assets/icons/ionicons/color-wand.svg b/mobile/assets/icons/ionicons/color-wand.svg new file mode 100644 index 000000000..4be45b308 --- /dev/null +++ b/mobile/assets/icons/ionicons/color-wand.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/ionicons/flask-filled.svg b/mobile/assets/icons/ionicons/flask-filled.svg new file mode 100644 index 000000000..6e730e436 --- /dev/null +++ b/mobile/assets/icons/ionicons/flask-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/ionicons/logo-github.svg b/mobile/assets/icons/ionicons/logo-github.svg new file mode 100644 index 000000000..92ffd5666 --- /dev/null +++ b/mobile/assets/icons/ionicons/logo-github.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/ionicons/logo-google-playstore.svg b/mobile/assets/icons/ionicons/logo-google-playstore.svg new file mode 100644 index 000000000..4107a4666 --- /dev/null +++ b/mobile/assets/icons/ionicons/logo-google-playstore.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/ionicons/repeat-one.svg b/mobile/assets/icons/ionicons/repeat-one.svg new file mode 100644 index 000000000..6821c71b5 --- /dev/null +++ b/mobile/assets/icons/ionicons/repeat-one.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/mobile/assets/icons/ionicons/repeat.svg b/mobile/assets/icons/ionicons/repeat.svg new file mode 100644 index 000000000..7277d9b96 --- /dev/null +++ b/mobile/assets/icons/ionicons/repeat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/ionicons/shuffle.svg b/mobile/assets/icons/ionicons/shuffle.svg new file mode 100644 index 000000000..f211696bd --- /dev/null +++ b/mobile/assets/icons/ionicons/shuffle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mobile/assets/icons/material-symbols/puase-filled.svg b/mobile/assets/icons/material-symbols/pause-filled.svg similarity index 100% rename from mobile/assets/icons/material-symbols/puase-filled.svg rename to mobile/assets/icons/material-symbols/pause-filled.svg diff --git a/mobile/src/resources/icons/ionicons.glyphmap.json b/mobile/src/resources/icons/ionicons.glyphmap.json new file mode 100644 index 000000000..bb4c92690 --- /dev/null +++ b/mobile/src/resources/icons/ionicons.glyphmap.json @@ -0,0 +1 @@ +{"m":{"f":"ionicons","u":1024,"z":1020,"s":59648,"h":"633d1e7296b5542ffd610875ee66cabb15ef3b6b1c4f4b3531485a504f71411e"},"i":{"color-wand":[1024,[[59648,"currentColor"],[59649,"black"],[59650,"currentColor"]]],"flask-filled":[1024,[[59651,"black"]]],"logo-github":[1024,[[59652,"black"]]],"logo-google-playstore":[1024,[[59653,"black"]]],"repeat-one":[1024,[[59654,"currentColor"]]],"repeat":[1024,[[59655,"currentColor"]]],"shuffle":[1024,[[59656,"currentColor"]]]}} \ No newline at end of file diff --git a/mobile/src/resources/icons/ionicons.ttf b/mobile/src/resources/icons/ionicons.ttf new file mode 100644 index 0000000000000000000000000000000000000000..0c639d36d2598acbf785c9477e926d8ef2f24610 GIT binary patch literal 3816 zcmeHKTWp+16`nJ)gEdu6Io?&O#OJ#<{pOO+rx8#IbknB(~SG zoed=V(7LlRA;80e^}oG zz6*GKar)XawX?qg#~PMenqDm5y#324@LA}HFIQLBe*M>1jx*M99rFuJim%g4OkwT| z{O6#2sXo%%EJq_Mo$pL);C*&j9z(5yGVj$m#-FvHcs zBuinG_<%nMZEm7xo0|#Rl0q8u|8K^MOnis`f_bbJUQ^5^C?3<@8R{QN=opY(aRf*= zO|?&T(2qMtr`l@=I}X`4y>7Qg?b<=RmA}@}Q9IZ^HEQOkqIRpHMq3R>-P(K`zsKNH zq$9E=DMqt0!l_KeEh&Vwo;`iWay>Mc-zLr-19}dqN=qW?UlhCu9&%1WpE*EfH0p?lbISYw?A1+Ow6iy*byh zIJX?yManf4H;e&<=dcsQGAWeSmR3qCb;zb?iO6$=AQECi;uK&xWY<28)!>9c&z;mp zAiw)iR@ieaN&}zwMb@>}&iLGix!_z#1-+A+o{>;xX|2`7Luu;Je-wFP$3h^PJG=|q z46zAVS>XKnTyc!DJl(B3VU;}W9T6=_-bMLzu2>R`#W}&2xkjhd)-1s{W$*yor zg}mD9{*b{1)iy0la;ZbHC%5y4?N7!+8mLuEn2XYaUsXa__BxlL+UIRW8G2DfW3M!Y zwdbg&umyA6i8a?QHbk3avF7Gz?~Wb4(Pkf}buLsa9>1eFy&R9n-n6k^S`H52pXWZ# zvkau$g1K8_i7raS{ZrwByEFZn;eNjxE#`;giFjf-o-c{ws3GthE z;yx^gqwTLT^pxP&tAVgH+BH|&iKMN#hc7x4T!l8L`hSU zY|8W~>gm@Bn{<4XGJP2I10Yg{*#`5V^trV{GLh<2$Sfwk$dejuQfnh=*q3Zsh(2ToiKQY- zYE~jm%xQ#8kR=Wu;Si4|t+T;VXtK~Py^um&_xFz%J2!*ua_k7Qm4jphfiu1wWS(_Bp^BPhV7ACcTgMrx+(66 z5^HA#c9LCVUx6iaFh+zLXeT$NQkaUMa>K?#5#gH$rK7}~bHk5>t}IEF&&89}MO&4# zyFW{Vg!+o`?5kH>(Ty4poDL9YM2@S4INo+*=+&T_emAwJ=@Y`mBIT7)(#it09$|FU zuad48kSo4#`c>70Dm;yZbpKWT*3gNzZ#3;mT@J)82l%T&+2-dj>3Z2-hN7szTf)R< ztnCC(2@Rp28`$laStPoyw$Dg?R+UXLHCqW`C&wmjQ&Q=96I)pO-(qX`z@OT>OstrK z?<2yh>v|}?P5Lj1u-7%P+plS;Yd4ep=DEoJzc9D{rv3e?O3Gx;tx?=Z=4LEZujzoW z=8-q>$50bNc~A4JfAB(n&xDT*v1izCX_EfHd&Lp)uKWS0MuNlMspo88lLMSFype;} z$bJ^+A?&5T!aUe5V0HZhP$YmQ;6wl`=CWh}YtVNDu)}t;TmZYQ85IIAb!py*ji~Z< zn4@BC1h4@8Rsc)DcLG?kIJ+0X8uYgU*nw~VDu7+qPdhGFmoCm!msX!H&s|xVUfDvo z#*^ihRlup?!J#eEM0u&aGQC!wOPmUf(2(B``+d&u S^L{_#_XWQ%`u(Wif8^gUioAUQ literal 0 HcmV?d00001 diff --git a/mobile/src/resources/icons/material-symbols.glyphmap.json b/mobile/src/resources/icons/material-symbols.glyphmap.json index 98020f0a4..56c7f8518 100644 --- a/mobile/src/resources/icons/material-symbols.glyphmap.json +++ b/mobile/src/resources/icons/material-symbols.glyphmap.json @@ -1 +1 @@ -{"m":{"f":"material-symbols","u":1024,"z":1020,"s":59648,"h":"f8dd7af908a96bdfb3bfae172f541b310a46bbd23cb52da8dbe3055a5c0977dd"},"i":{"activity-zone":[1024,[[59648,"#e8eaed"]]],"add":[1024,[[59649,"#e8eaed"]]],"archive":[1024,[[59650,"#e8eaed"]]],"arrow-back":[1024,[[59651,"#e8eaed"]]],"autoplay":[1024,[[59652,"#e8eaed"]]],"bar-chart-4-bars":[1024,[[59653,"#e8eaed"]]],"cached":[1024,[[59654,"#e8eaed"]]],"cancel":[1024,[[59655,"#e8eaed"]]],"check-circle":[1024,[[59656,"#e8eaed"]]],"check":[1024,[[59657,"#e8eaed"]]],"close":[1024,[[59658,"#e8eaed"]]],"conversion-path":[1024,[[59659,"#e8eaed"]]],"create-new-folder":[1024,[[59660,"#e8eaed"]]],"delete":[1024,[[59661,"#e8eaed"]]],"do-not-disturb-on":[1024,[[59662,"#e8eaed"]]],"document-search":[1024,[[59663,"#e8eaed"]]],"drag-handle":[1024,[[59664,"#e8eaed"]]],"edit":[1024,[[59665,"#e8eaed"]]],"favorite-filled":[1024,[[59666,"#e8eaed"]]],"favorite":[1024,[[59667,"#e8eaed"]]],"file-save":[1024,[[59668,"#e8eaed"]]],"folder":[1024,[[59669,"#e8eaed"]]],"format-paint":[1024,[[59670,"#e8eaed"]]],"graph-1":[1024,[[59671,"#e8eaed"]]],"graphic-eq":[1024,[[59672,"#e8eaed"]]],"grid-view":[1024,[[59673,"#e8eaed"]]],"history":[1024,[[59674,"#e8eaed"]]],"home-filled":[1024,[[59675,"#e8eaed"]]],"home":[1024,[[59676,"#e8eaed"]]],"image":[1024,[[59677,"#e8eaed"]]],"info":[1024,[[59678,"#e8eaed"]]],"keyboard-arrow-down":[1024,[[59679,"#e8eaed"]]],"link-off":[1024,[[59680,"#e8eaed"]]],"low-priority":[1024,[[59681,"#e8eaed"]]],"lyrics":[1024,[[59682,"#e8eaed"]]],"mobile-arrow-down":[1024,[[59683,"#e8eaed"]]],"more-horiz":[1024,[[59684,"#e8eaed"]]],"more-vert":[1024,[[59685,"#e8eaed"]]],"open-in-new":[1024,[[59686,"#e8eaed"]]],"play-arrow-filled":[1024,[[59687,"#e8eaed"]]],"playlist-add":[1024,[[59688,"#e8eaed"]]],"puase-filled":[1024,[[59689,"#e8eaed"]]],"queue-music":[1024,[[59690,"#e8eaed"]]],"remove":[1024,[[59691,"#e8eaed"]]],"save":[1024,[[59692,"#e8eaed"]]],"schedule":[1024,[[59693,"#e8eaed"]]],"search":[1024,[[59694,"#e8eaed"]]],"settings":[1024,[[59695,"#e8eaed"]]],"skip-next-filled":[1024,[[59696,"#e8eaed"]]],"skip-previous-filled":[1024,[[59697,"#e8eaed"]]],"slow-motion-video":[1024,[[59698,"#e8eaed"]]],"sort":[1024,[[59699,"#e8eaed"]]],"timer":[1024,[[59700,"#e8eaed"]]],"translate":[1024,[[59701,"#e8eaed"]]],"view-agenda":[1024,[[59702,"#e8eaed"]]],"view-module":[1024,[[59703,"#e8eaed"]]],"visibility-off-filled":[1024,[[59704,"#e8eaed"]]],"voice-selection":[1024,[[59705,"#e8eaed"]]],"volume-up-filled":[1024,[[59706,"#e8eaed"]]],"warning":[1024,[[59707,"#e8eaed"]]]}} \ No newline at end of file +{"m":{"f":"material-symbols","u":1024,"z":1020,"s":59648,"h":"618c327d558d22035342f9b421b96ed399acbe3bd2bca206d815ff80961dae63"},"i":{"activity-zone":[1024,[[59648,"#e8eaed"]]],"add":[1024,[[59649,"#e8eaed"]]],"archive":[1024,[[59650,"#e8eaed"]]],"arrow-back":[1024,[[59651,"#e8eaed"]]],"autoplay":[1024,[[59652,"#e8eaed"]]],"bar-chart-4-bars":[1024,[[59653,"#e8eaed"]]],"cached":[1024,[[59654,"#e8eaed"]]],"cancel":[1024,[[59655,"#e8eaed"]]],"check-circle":[1024,[[59656,"#e8eaed"]]],"check":[1024,[[59657,"#e8eaed"]]],"close":[1024,[[59658,"#e8eaed"]]],"conversion-path":[1024,[[59659,"#e8eaed"]]],"create-new-folder":[1024,[[59660,"#e8eaed"]]],"delete":[1024,[[59661,"#e8eaed"]]],"do-not-disturb-on":[1024,[[59662,"#e8eaed"]]],"document-search":[1024,[[59663,"#e8eaed"]]],"drag-handle":[1024,[[59664,"#e8eaed"]]],"edit":[1024,[[59665,"#e8eaed"]]],"favorite-filled":[1024,[[59666,"#e8eaed"]]],"favorite":[1024,[[59667,"#e8eaed"]]],"file-save":[1024,[[59668,"#e8eaed"]]],"folder":[1024,[[59669,"#e8eaed"]]],"format-paint":[1024,[[59670,"#e8eaed"]]],"graph-1":[1024,[[59671,"#e8eaed"]]],"graphic-eq":[1024,[[59672,"#e8eaed"]]],"grid-view":[1024,[[59673,"#e8eaed"]]],"history":[1024,[[59674,"#e8eaed"]]],"home-filled":[1024,[[59675,"#e8eaed"]]],"home":[1024,[[59676,"#e8eaed"]]],"image":[1024,[[59677,"#e8eaed"]]],"info":[1024,[[59678,"#e8eaed"]]],"keyboard-arrow-down":[1024,[[59679,"#e8eaed"]]],"link-off":[1024,[[59680,"#e8eaed"]]],"low-priority":[1024,[[59681,"#e8eaed"]]],"lyrics":[1024,[[59682,"#e8eaed"]]],"mobile-arrow-down":[1024,[[59683,"#e8eaed"]]],"more-horiz":[1024,[[59684,"#e8eaed"]]],"more-vert":[1024,[[59685,"#e8eaed"]]],"open-in-new":[1024,[[59686,"#e8eaed"]]],"pause-filled":[1024,[[59687,"#e8eaed"]]],"play-arrow-filled":[1024,[[59688,"#e8eaed"]]],"playlist-add":[1024,[[59689,"#e8eaed"]]],"queue-music":[1024,[[59690,"#e8eaed"]]],"remove":[1024,[[59691,"#e8eaed"]]],"save":[1024,[[59692,"#e8eaed"]]],"schedule":[1024,[[59693,"#e8eaed"]]],"search":[1024,[[59694,"#e8eaed"]]],"settings":[1024,[[59695,"#e8eaed"]]],"skip-next-filled":[1024,[[59696,"#e8eaed"]]],"skip-previous-filled":[1024,[[59697,"#e8eaed"]]],"slow-motion-video":[1024,[[59698,"#e8eaed"]]],"sort":[1024,[[59699,"#e8eaed"]]],"timer":[1024,[[59700,"#e8eaed"]]],"translate":[1024,[[59701,"#e8eaed"]]],"view-agenda":[1024,[[59702,"#e8eaed"]]],"view-module":[1024,[[59703,"#e8eaed"]]],"visibility-off-filled":[1024,[[59704,"#e8eaed"]]],"voice-selection":[1024,[[59705,"#e8eaed"]]],"volume-up-filled":[1024,[[59706,"#e8eaed"]]],"warning":[1024,[[59707,"#e8eaed"]]]}} \ No newline at end of file diff --git a/mobile/src/resources/icons/material-symbols.ttf b/mobile/src/resources/icons/material-symbols.ttf index 1f0a37b3fc7613446a0925c66760d7673269fcd3..6b62f4e04cc8322f5dcc49dc1c8ed8c014c1c1ca 100644 GIT binary patch delta 77 zcmaD6_abhBBlC7aj)^Y1%*eqoXY)px(>yZuJaMh@{5D@1xLFuL a;8}Q@5{%wFLzA14c@xjI&C9e7u>b%U7a5NL delta 77 zcmaD6_abhBBlEVWViR3-nRT@^HkLe;n!Hu|&*V_)gv}dePV>mr?by~B&u{aUft!T^ a1fGQlXu{~tGc>swnV0c0Y+j~yhy?(Xpc?T2 From 3e1f0dd75de8f0c6a5a75f1c9a018b7b85d36927 Mon Sep 17 00:00:00 2001 From: cyanChill <83375816+cyanChill@users.noreply.github.com> Date: Tue, 16 Jun 2026 16:50:48 -0400 Subject: [PATCH 10/17] chore: Export all icons under a single font - It would be nice if they add support for reading the svg files from nested folders. --- .../{material-symbols.ttf => app-icons.ttf} | Bin 12136 -> 14568 bytes .../app/src/main/assets/fonts/ionicons.ttf | Bin 3816 -> 0 bytes mobile/app.config.ts | 6 +----- mobile/assets/icons/README.md | 5 +++++ .../activity-zone.svg | 0 .../{material-symbols => app-icons}/add.svg | 0 .../archive.svg | 0 .../arrow-back.svg | 0 .../autoplay.svg | 0 .../bar-chart-4-bars.svg | 0 .../cached.svg | 0 .../cancel.svg | 0 .../check-circle.svg | 0 .../{material-symbols => app-icons}/check.svg | 0 .../{material-symbols => app-icons}/close.svg | 0 .../{ionicons => app-icons}/color-wand.svg | 0 .../conversion-path.svg | 0 .../create-new-folder.svg | 0 .../delete.svg | 0 .../do-not-disturb-on.svg | 0 .../document-search.svg | 0 .../drag-handle.svg | 0 .../{material-symbols => app-icons}/edit.svg | 0 .../favorite-filled.svg | 0 .../favorite.svg | 0 .../file-save.svg | 0 .../{ionicons => app-icons}/flask-filled.svg | 0 .../folder.svg | 0 .../format-paint.svg | 0 .../graph-1.svg | 0 .../graphic-eq.svg | 0 .../grid-view.svg | 0 .../history.svg | 0 .../home-filled.svg | 0 .../{material-symbols => app-icons}/home.svg | 0 .../{material-symbols => app-icons}/image.svg | 0 .../{material-symbols => app-icons}/info.svg | 0 .../keyboard-arrow-down.svg | 0 .../link-off.svg | 0 .../{ionicons => app-icons}/logo-github.svg | 0 .../logo-google-playstore.svg | 0 .../low-priority.svg | 0 .../lyrics.svg | 0 .../mobile-arrow-down.svg | 0 .../more-horiz.svg | 0 .../more-vert.svg | 0 .../open-in-new.svg | 0 .../pause-filled.svg | 0 .../play-arrow-filled.svg | 0 .../playlist-add.svg | 0 .../queue-music.svg | 0 .../remove.svg | 0 .../{ionicons => app-icons}/repeat-one.svg | 0 .../icons/{ionicons => app-icons}/repeat.svg | 0 .../{material-symbols => app-icons}/save.svg | 0 .../schedule.svg | 0 .../search.svg | 0 .../settings.svg | 0 .../icons/{ionicons => app-icons}/shuffle.svg | 0 .../skip-next-filled.svg | 0 .../skip-previous-filled.svg | 0 .../slow-motion-video.svg | 0 .../{material-symbols => app-icons}/sort.svg | 0 .../{material-symbols => app-icons}/timer.svg | 0 .../translate.svg | 0 .../view-agenda.svg | 0 .../view-module.svg | 0 .../visibility-off-filled.svg | 0 .../voice-selection.svg | 0 .../volume-up-filled.svg | 0 .../warning.svg | 0 .../resources/icons/app-icons.glyphmap.json | 1 + mobile/src/resources/icons/app-icons.ttf | Bin 0 -> 14568 bytes 73 files changed, 7 insertions(+), 5 deletions(-) rename mobile/android/app/src/main/assets/fonts/{material-symbols.ttf => app-icons.ttf} (68%) delete mode 100644 mobile/android/app/src/main/assets/fonts/ionicons.ttf rename mobile/assets/icons/{material-symbols => app-icons}/activity-zone.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/add.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/archive.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/arrow-back.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/autoplay.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/bar-chart-4-bars.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/cached.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/cancel.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/check-circle.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/check.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/close.svg (100%) rename mobile/assets/icons/{ionicons => app-icons}/color-wand.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/conversion-path.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/create-new-folder.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/delete.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/do-not-disturb-on.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/document-search.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/drag-handle.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/edit.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/favorite-filled.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/favorite.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/file-save.svg (100%) rename mobile/assets/icons/{ionicons => app-icons}/flask-filled.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/folder.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/format-paint.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/graph-1.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/graphic-eq.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/grid-view.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/history.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/home-filled.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/home.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/image.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/info.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/keyboard-arrow-down.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/link-off.svg (100%) rename mobile/assets/icons/{ionicons => app-icons}/logo-github.svg (100%) rename mobile/assets/icons/{ionicons => app-icons}/logo-google-playstore.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/low-priority.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/lyrics.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/mobile-arrow-down.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/more-horiz.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/more-vert.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/open-in-new.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/pause-filled.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/play-arrow-filled.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/playlist-add.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/queue-music.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/remove.svg (100%) rename mobile/assets/icons/{ionicons => app-icons}/repeat-one.svg (100%) rename mobile/assets/icons/{ionicons => app-icons}/repeat.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/save.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/schedule.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/search.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/settings.svg (100%) rename mobile/assets/icons/{ionicons => app-icons}/shuffle.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/skip-next-filled.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/skip-previous-filled.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/slow-motion-video.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/sort.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/timer.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/translate.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/view-agenda.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/view-module.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/visibility-off-filled.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/voice-selection.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/volume-up-filled.svg (100%) rename mobile/assets/icons/{material-symbols => app-icons}/warning.svg (100%) create mode 100644 mobile/src/resources/icons/app-icons.glyphmap.json create mode 100644 mobile/src/resources/icons/app-icons.ttf diff --git a/mobile/android/app/src/main/assets/fonts/material-symbols.ttf b/mobile/android/app/src/main/assets/fonts/app-icons.ttf similarity index 68% rename from mobile/android/app/src/main/assets/fonts/material-symbols.ttf rename to mobile/android/app/src/main/assets/fonts/app-icons.ttf index 6b62f4e04cc8322f5dcc49dc1c8ed8c014c1c1ca..f4f7fa5c89926849254ff6de0d46aba0cbc063fb 100644 GIT binary patch delta 3243 zcmbVOYiwLc6`nKCy^r1XzHP_e^{yZ5B(~Sy^{$g9&L+XNYv*Ce+bA!`UfUr~Y~my& zZRxsyk}54x6C*$rC7~*jN+G0J2qX$s%b)(L_ya#sgrZWSHti3Jgj6Efa_0Kxp{Nyz zE8V&0oI7)7&f`00KG^@k*UJP5Atsq8j5G{y&t!|?y|1F=C-@#5J32Z`ym#&p0ye%I zC#TO$l%5}ah7kH?LONfVDvge3ei@1rlD&!Z3sWdiAMqMOa$)3~rjDLC&5=NU6%H>> z&y0I5`O~;bYIbJs#K^6-4^j6I zkl#!=`{d${BJ^GS+W_<}u7a|s{8Rcau?g-8g=`F>VVO!pOLt6$k;xXikx9Yuvf(=T zbzRT!vPxgwpkcrpMorMD^cgku^}4!B-?HHz{eL)U)M#n2M$d3OLufUC;?E#8RKeyd1SA$YRSt(l+;x>=lv&aI}>Wp$9t6-XsCiOnS*qa+r|N z8c5KHpEhP#kwT~D>Or$KU!*L%^p~%M3`ZU`&m(@Z^t)M4XU^g>u0C`?+J+E@J!zSW zQe{FL2un*WFMd$)6dpxS8Dc_8C57NZ3>vT>0Bn;n0LBJ5nt@XWjmkH0HO@qZwlyTR zLVD$aF0XAWNFqO_Rjzlpt?YHCZ=#G+#szLXBw+`~y_A$v3_MUL2Ji1=drh@?!%(t( z1)bAL2GGw89gxcwdLcuTDOrzh$)U&nERvvc$R)FdBFkqe6pH82Go?7?(i47SIrS}nBJ7dKs!B{pN-}y%Fs6(%ln;6;WkWz3&a+_n zM**+2O%d=awC{2_R5|PmhQi@cDA=@OMN=^3&~Sz_5spSL3kt79qv5v`gRk7EMYi^m!y4i$g5xn1*3arCZWnEzZzW$aO_y(O6eBS7e1AEo{km>u(Wq zS^QCC30mkWtik1|DH;iDeF~RER2UWZtb?9HzFRM&a4!etr+Ir_;S_N>l8&>v|`TJUu?Ldp-_cV=JYQ3Jb?tb(!j-1dQ7 zusYoe9=nb!4pe&TY!9@itAn|L?cHs$ptR91-!#1tpWi(){`8T_-gU&O8SG{D7E#29 z;HyKl1QK9Cx=}!5i;Ni{qdkyrPOBIi-*Si=@KR-pdgzu4fHXt_E>>oxA<-Q$aN*p! z3n8D6o%`3{6@?e!0(=a$+$$>2R+7TYp?2=j*7^CZRyw`7IkrKTl@q%wEJGT|TC$JK zknfV;k&iHrojHv`rV+_9tQU$*By$dkMM|oB=#8to#Y zrKkXPiK0r#NII90^%w}0mL0Lo7iG+^A_-B%vXEf8B1c3>I*-ttV4P1_UfbXl>k!}M zV$Q5whs$musO-%TfeYFCLjPHyYzg#RHc4O}rwB+frWIjDSPj>49p{E!88XY3E+H13 zLfj}1K9XlRev}eeC%72F+Tlk;3(n|rQ)3$m0HG%vIJtv6v!%e=!o^py(CBKzcS)Sa zrPP|b9L-807_nAxT*@*a#yJ*^Nm)h|xkY2sW{Udp;cB023=HK{-1Z2>c}q)wq5d;FBSnlTqyBYN{mz9e|w|q1wFE zhgk~SKk~2+C;=#&mSk*u?at2E+&+7wVRhgu%)(W|E@7`LF}wyKq_#Ny)3ROhgp;LC zztynCoCC(Kf6u(yxwH0%fz=I1Ty?W9|C-y->A|nbrG`F>8wJY@?-?4W;o6hHq$mj7nqAXF{vToEa= zTb%Pt{5`QzTor$oeR5h}lfPF@>XN$aS>-wJxohk&-ZtarHuI`^$LhBBSnt>q_RC(= z`yKD6z9!!`-!`*A<{m@NEZMN8Rm1$ZaJ2IJoI@cwI%s--(0!qvbVrPIXm@@A2gOG}iu zyR=DGl7dTHBt%A018}V^NKUvk#rAd9r5VbcWce+UvKzjA4b@^@X@#Js-c z(iUlf!szU5`{A*fV{_X|lP9M~kKgC-6T3>s=MK*tYv}6eye}Il9V;ClJy9BOICQ3A z?$l&I=h1^Bl=0*p*+D65sGQtF*epzZ?D+MH9B$@Ujv0XS|^ zelkaf_Y-%BbnSd|PPgVc0@CkjThxpR

+^0pfHXH*{sbv%n1F0U2+|h|MUv`g-9< z1L@Dy6=<6z&4FXTtW*Y>{*|w%nSQ5_v4y7#67QUiJn}jZ52tuXZ;7(y z*?6PV5`QH$+Va@lE5TFWA^rW0%}Y~F)CaZiYWK_X+wKF?R5Zh_bH6;}o+ZzQXNMo+ zEBuZ(<*f*!FfUYnf-miR;@cJj;-a`I6{V^SIU(PcpUdz49sYa%HUGCjUmzDe790&O zhq^-3p^b1Nd_P=`T#o##KUcrHJK_P@ zlRxCLh!YrbSwcN-((^H#kDM5mU9Lj_6_@F8v0h`Fk~k6{+<*rM@!Mq{F(&G=h&0pV zvV^0|lCD^4F|TNCW=S76G;>7F&S^?uSD5AnX+{#u%M!d zJduVrm?%NVI1ExIT~b9BbHobe?3cY?JiXh=q+SMQXbPQ8NTB2YWy_7p$Ls(G%InGN J&Y9jE^9Nk(vIGDC diff --git a/mobile/android/app/src/main/assets/fonts/ionicons.ttf b/mobile/android/app/src/main/assets/fonts/ionicons.ttf deleted file mode 100644 index 0c639d36d2598acbf785c9477e926d8ef2f24610..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3816 zcmeHKTWp+16`nJ)gEdu6Io?&O#OJ#<{pOO+rx8#IbknB(~SG zoed=V(7LlRA;80e^}oG zz6*GKar)XawX?qg#~PMenqDm5y#324@LA}HFIQLBe*M>1jx*M99rFuJim%g4OkwT| z{O6#2sXo%%EJq_Mo$pL);C*&j9z(5yGVj$m#-FvHcs zBuinG_<%nMZEm7xo0|#Rl0q8u|8K^MOnis`f_bbJUQ^5^C?3<@8R{QN=opY(aRf*= zO|?&T(2qMtr`l@=I}X`4y>7Qg?b<=RmA}@}Q9IZ^HEQOkqIRpHMq3R>-P(K`zsKNH zq$9E=DMqt0!l_KeEh&Vwo;`iWay>Mc-zLr-19}dqN=qW?UlhCu9&%1WpE*EfH0p?lbISYw?A1+Ow6iy*byh zIJX?yManf4H;e&<=dcsQGAWeSmR3qCb;zb?iO6$=AQECi;uK&xWY<28)!>9c&z;mp zAiw)iR@ieaN&}zwMb@>}&iLGix!_z#1-+A+o{>;xX|2`7Luu;Je-wFP$3h^PJG=|q z46zAVS>XKnTyc!DJl(B3VU;}W9T6=_-bMLzu2>R`#W}&2xkjhd)-1s{W$*yor zg}mD9{*b{1)iy0la;ZbHC%5y4?N7!+8mLuEn2XYaUsXa__BxlL+UIRW8G2DfW3M!Y zwdbg&umyA6i8a?QHbk3avF7Gz?~Wb4(Pkf}buLsa9>1eFy&R9n-n6k^S`H52pXWZ# zvkau$g1K8_i7raS{ZrwByEFZn;eNjxE#`;giFjf-o-c{ws3GthE z;yx^gqwTLT^pxP&tAVgH+BH|&iKMN#hc7x4T!l8L`hSU zY|8W~>gm@Bn{<4XGJP2I10Yg{*#`5V^trV{GLh<2$Sfwk$dejuQfnh=*q3Zsh(2ToiKQY- zYE~jm%xQ#8kR=Wu;Si4|t+T;VXtK~Py^um&_xFz%J2!*ua_k7Qm4jphfiu1wWS(_Bp^BPhV7ACcTgMrx+(66 z5^HA#c9LCVUx6iaFh+zLXeT$NQkaUMa>K?#5#gH$rK7}~bHk5>t}IEF&&89}MO&4# zyFW{Vg!+o`?5kH>(Ty4poDL9YM2@S4INo+*=+&T_emAwJ=@Y`mBIT7)(#it09$|FU zuad48kSo4#`c>70Dm;yZbpKWT*3gNzZ#3;mT@J)82l%T&+2-dj>3Z2-hN7szTf)R< ztnCC(2@Rp28`$laStPoyw$Dg?R+UXLHCqW`C&wmjQ&Q=96I)pO-(qX`z@OT>OstrK z?<2yh>v|}?P5Lj1u-7%P+plS;Yd4ep=DEoJzc9D{rv3e?O3Gx;tx?=Z=4LEZujzoW z=8-q>$50bNc~A4JfAB(n&xDT*v1izCX_EfHd&Lp)uKWS0MuNlMspo88lLMSFype;} z$bJ^+A?&5T!aUe5V0HZhP$YmQ;6wl`=CWh}YtVNDu)}t;TmZYQ85IIAb!py*ji~Z< zn4@BC1h4@8Rsc)DcLG?kIJ+0X8uYgU*nw~VDu7+qPdhGFmoCm!msX!H&s|xVUfDvo z#*^ihRlup?!J#eEM0u&aGQC!wOPmUf(2(B``+d&u S^L{_#_XWQ%`u(Wif8^gUioAUQ diff --git a/mobile/app.config.ts b/mobile/app.config.ts index f8a567e06..4fc03ed80 100644 --- a/mobile/app.config.ts +++ b/mobile/app.config.ts @@ -108,11 +108,7 @@ export default (): ExpoConfig => { { iconSets: [ { - inputDir: "./assets/icons/ionicons", - outputDir: "./src/resources/icons", - }, - { - inputDir: "./assets/icons/material-symbols", + inputDir: "./assets/icons/app-icons", outputDir: "./src/resources/icons", }, ], diff --git a/mobile/assets/icons/README.md b/mobile/assets/icons/README.md index 2cb7173ab..3a3435f62 100644 --- a/mobile/assets/icons/README.md +++ b/mobile/assets/icons/README.md @@ -6,3 +6,8 @@ - Grade: `-25` - Optical Size: `24px` - Rounded + +**Ionicons** + +- We use `color-wand`, `flask-filled`, `logo-github`, `logo-google-playstore`, `repeat`, and `shuffle`. +- `repeat-one` is a custom icon based on Ionicons' `repeat` & `calendar-number` icons. diff --git a/mobile/assets/icons/material-symbols/activity-zone.svg b/mobile/assets/icons/app-icons/activity-zone.svg similarity index 100% rename from mobile/assets/icons/material-symbols/activity-zone.svg rename to mobile/assets/icons/app-icons/activity-zone.svg diff --git a/mobile/assets/icons/material-symbols/add.svg b/mobile/assets/icons/app-icons/add.svg similarity index 100% rename from mobile/assets/icons/material-symbols/add.svg rename to mobile/assets/icons/app-icons/add.svg diff --git a/mobile/assets/icons/material-symbols/archive.svg b/mobile/assets/icons/app-icons/archive.svg similarity index 100% rename from mobile/assets/icons/material-symbols/archive.svg rename to mobile/assets/icons/app-icons/archive.svg diff --git a/mobile/assets/icons/material-symbols/arrow-back.svg b/mobile/assets/icons/app-icons/arrow-back.svg similarity index 100% rename from mobile/assets/icons/material-symbols/arrow-back.svg rename to mobile/assets/icons/app-icons/arrow-back.svg diff --git a/mobile/assets/icons/material-symbols/autoplay.svg b/mobile/assets/icons/app-icons/autoplay.svg similarity index 100% rename from mobile/assets/icons/material-symbols/autoplay.svg rename to mobile/assets/icons/app-icons/autoplay.svg diff --git a/mobile/assets/icons/material-symbols/bar-chart-4-bars.svg b/mobile/assets/icons/app-icons/bar-chart-4-bars.svg similarity index 100% rename from mobile/assets/icons/material-symbols/bar-chart-4-bars.svg rename to mobile/assets/icons/app-icons/bar-chart-4-bars.svg diff --git a/mobile/assets/icons/material-symbols/cached.svg b/mobile/assets/icons/app-icons/cached.svg similarity index 100% rename from mobile/assets/icons/material-symbols/cached.svg rename to mobile/assets/icons/app-icons/cached.svg diff --git a/mobile/assets/icons/material-symbols/cancel.svg b/mobile/assets/icons/app-icons/cancel.svg similarity index 100% rename from mobile/assets/icons/material-symbols/cancel.svg rename to mobile/assets/icons/app-icons/cancel.svg diff --git a/mobile/assets/icons/material-symbols/check-circle.svg b/mobile/assets/icons/app-icons/check-circle.svg similarity index 100% rename from mobile/assets/icons/material-symbols/check-circle.svg rename to mobile/assets/icons/app-icons/check-circle.svg diff --git a/mobile/assets/icons/material-symbols/check.svg b/mobile/assets/icons/app-icons/check.svg similarity index 100% rename from mobile/assets/icons/material-symbols/check.svg rename to mobile/assets/icons/app-icons/check.svg diff --git a/mobile/assets/icons/material-symbols/close.svg b/mobile/assets/icons/app-icons/close.svg similarity index 100% rename from mobile/assets/icons/material-symbols/close.svg rename to mobile/assets/icons/app-icons/close.svg diff --git a/mobile/assets/icons/ionicons/color-wand.svg b/mobile/assets/icons/app-icons/color-wand.svg similarity index 100% rename from mobile/assets/icons/ionicons/color-wand.svg rename to mobile/assets/icons/app-icons/color-wand.svg diff --git a/mobile/assets/icons/material-symbols/conversion-path.svg b/mobile/assets/icons/app-icons/conversion-path.svg similarity index 100% rename from mobile/assets/icons/material-symbols/conversion-path.svg rename to mobile/assets/icons/app-icons/conversion-path.svg diff --git a/mobile/assets/icons/material-symbols/create-new-folder.svg b/mobile/assets/icons/app-icons/create-new-folder.svg similarity index 100% rename from mobile/assets/icons/material-symbols/create-new-folder.svg rename to mobile/assets/icons/app-icons/create-new-folder.svg diff --git a/mobile/assets/icons/material-symbols/delete.svg b/mobile/assets/icons/app-icons/delete.svg similarity index 100% rename from mobile/assets/icons/material-symbols/delete.svg rename to mobile/assets/icons/app-icons/delete.svg diff --git a/mobile/assets/icons/material-symbols/do-not-disturb-on.svg b/mobile/assets/icons/app-icons/do-not-disturb-on.svg similarity index 100% rename from mobile/assets/icons/material-symbols/do-not-disturb-on.svg rename to mobile/assets/icons/app-icons/do-not-disturb-on.svg diff --git a/mobile/assets/icons/material-symbols/document-search.svg b/mobile/assets/icons/app-icons/document-search.svg similarity index 100% rename from mobile/assets/icons/material-symbols/document-search.svg rename to mobile/assets/icons/app-icons/document-search.svg diff --git a/mobile/assets/icons/material-symbols/drag-handle.svg b/mobile/assets/icons/app-icons/drag-handle.svg similarity index 100% rename from mobile/assets/icons/material-symbols/drag-handle.svg rename to mobile/assets/icons/app-icons/drag-handle.svg diff --git a/mobile/assets/icons/material-symbols/edit.svg b/mobile/assets/icons/app-icons/edit.svg similarity index 100% rename from mobile/assets/icons/material-symbols/edit.svg rename to mobile/assets/icons/app-icons/edit.svg diff --git a/mobile/assets/icons/material-symbols/favorite-filled.svg b/mobile/assets/icons/app-icons/favorite-filled.svg similarity index 100% rename from mobile/assets/icons/material-symbols/favorite-filled.svg rename to mobile/assets/icons/app-icons/favorite-filled.svg diff --git a/mobile/assets/icons/material-symbols/favorite.svg b/mobile/assets/icons/app-icons/favorite.svg similarity index 100% rename from mobile/assets/icons/material-symbols/favorite.svg rename to mobile/assets/icons/app-icons/favorite.svg diff --git a/mobile/assets/icons/material-symbols/file-save.svg b/mobile/assets/icons/app-icons/file-save.svg similarity index 100% rename from mobile/assets/icons/material-symbols/file-save.svg rename to mobile/assets/icons/app-icons/file-save.svg diff --git a/mobile/assets/icons/ionicons/flask-filled.svg b/mobile/assets/icons/app-icons/flask-filled.svg similarity index 100% rename from mobile/assets/icons/ionicons/flask-filled.svg rename to mobile/assets/icons/app-icons/flask-filled.svg diff --git a/mobile/assets/icons/material-symbols/folder.svg b/mobile/assets/icons/app-icons/folder.svg similarity index 100% rename from mobile/assets/icons/material-symbols/folder.svg rename to mobile/assets/icons/app-icons/folder.svg diff --git a/mobile/assets/icons/material-symbols/format-paint.svg b/mobile/assets/icons/app-icons/format-paint.svg similarity index 100% rename from mobile/assets/icons/material-symbols/format-paint.svg rename to mobile/assets/icons/app-icons/format-paint.svg diff --git a/mobile/assets/icons/material-symbols/graph-1.svg b/mobile/assets/icons/app-icons/graph-1.svg similarity index 100% rename from mobile/assets/icons/material-symbols/graph-1.svg rename to mobile/assets/icons/app-icons/graph-1.svg diff --git a/mobile/assets/icons/material-symbols/graphic-eq.svg b/mobile/assets/icons/app-icons/graphic-eq.svg similarity index 100% rename from mobile/assets/icons/material-symbols/graphic-eq.svg rename to mobile/assets/icons/app-icons/graphic-eq.svg diff --git a/mobile/assets/icons/material-symbols/grid-view.svg b/mobile/assets/icons/app-icons/grid-view.svg similarity index 100% rename from mobile/assets/icons/material-symbols/grid-view.svg rename to mobile/assets/icons/app-icons/grid-view.svg diff --git a/mobile/assets/icons/material-symbols/history.svg b/mobile/assets/icons/app-icons/history.svg similarity index 100% rename from mobile/assets/icons/material-symbols/history.svg rename to mobile/assets/icons/app-icons/history.svg diff --git a/mobile/assets/icons/material-symbols/home-filled.svg b/mobile/assets/icons/app-icons/home-filled.svg similarity index 100% rename from mobile/assets/icons/material-symbols/home-filled.svg rename to mobile/assets/icons/app-icons/home-filled.svg diff --git a/mobile/assets/icons/material-symbols/home.svg b/mobile/assets/icons/app-icons/home.svg similarity index 100% rename from mobile/assets/icons/material-symbols/home.svg rename to mobile/assets/icons/app-icons/home.svg diff --git a/mobile/assets/icons/material-symbols/image.svg b/mobile/assets/icons/app-icons/image.svg similarity index 100% rename from mobile/assets/icons/material-symbols/image.svg rename to mobile/assets/icons/app-icons/image.svg diff --git a/mobile/assets/icons/material-symbols/info.svg b/mobile/assets/icons/app-icons/info.svg similarity index 100% rename from mobile/assets/icons/material-symbols/info.svg rename to mobile/assets/icons/app-icons/info.svg diff --git a/mobile/assets/icons/material-symbols/keyboard-arrow-down.svg b/mobile/assets/icons/app-icons/keyboard-arrow-down.svg similarity index 100% rename from mobile/assets/icons/material-symbols/keyboard-arrow-down.svg rename to mobile/assets/icons/app-icons/keyboard-arrow-down.svg diff --git a/mobile/assets/icons/material-symbols/link-off.svg b/mobile/assets/icons/app-icons/link-off.svg similarity index 100% rename from mobile/assets/icons/material-symbols/link-off.svg rename to mobile/assets/icons/app-icons/link-off.svg diff --git a/mobile/assets/icons/ionicons/logo-github.svg b/mobile/assets/icons/app-icons/logo-github.svg similarity index 100% rename from mobile/assets/icons/ionicons/logo-github.svg rename to mobile/assets/icons/app-icons/logo-github.svg diff --git a/mobile/assets/icons/ionicons/logo-google-playstore.svg b/mobile/assets/icons/app-icons/logo-google-playstore.svg similarity index 100% rename from mobile/assets/icons/ionicons/logo-google-playstore.svg rename to mobile/assets/icons/app-icons/logo-google-playstore.svg diff --git a/mobile/assets/icons/material-symbols/low-priority.svg b/mobile/assets/icons/app-icons/low-priority.svg similarity index 100% rename from mobile/assets/icons/material-symbols/low-priority.svg rename to mobile/assets/icons/app-icons/low-priority.svg diff --git a/mobile/assets/icons/material-symbols/lyrics.svg b/mobile/assets/icons/app-icons/lyrics.svg similarity index 100% rename from mobile/assets/icons/material-symbols/lyrics.svg rename to mobile/assets/icons/app-icons/lyrics.svg diff --git a/mobile/assets/icons/material-symbols/mobile-arrow-down.svg b/mobile/assets/icons/app-icons/mobile-arrow-down.svg similarity index 100% rename from mobile/assets/icons/material-symbols/mobile-arrow-down.svg rename to mobile/assets/icons/app-icons/mobile-arrow-down.svg diff --git a/mobile/assets/icons/material-symbols/more-horiz.svg b/mobile/assets/icons/app-icons/more-horiz.svg similarity index 100% rename from mobile/assets/icons/material-symbols/more-horiz.svg rename to mobile/assets/icons/app-icons/more-horiz.svg diff --git a/mobile/assets/icons/material-symbols/more-vert.svg b/mobile/assets/icons/app-icons/more-vert.svg similarity index 100% rename from mobile/assets/icons/material-symbols/more-vert.svg rename to mobile/assets/icons/app-icons/more-vert.svg diff --git a/mobile/assets/icons/material-symbols/open-in-new.svg b/mobile/assets/icons/app-icons/open-in-new.svg similarity index 100% rename from mobile/assets/icons/material-symbols/open-in-new.svg rename to mobile/assets/icons/app-icons/open-in-new.svg diff --git a/mobile/assets/icons/material-symbols/pause-filled.svg b/mobile/assets/icons/app-icons/pause-filled.svg similarity index 100% rename from mobile/assets/icons/material-symbols/pause-filled.svg rename to mobile/assets/icons/app-icons/pause-filled.svg diff --git a/mobile/assets/icons/material-symbols/play-arrow-filled.svg b/mobile/assets/icons/app-icons/play-arrow-filled.svg similarity index 100% rename from mobile/assets/icons/material-symbols/play-arrow-filled.svg rename to mobile/assets/icons/app-icons/play-arrow-filled.svg diff --git a/mobile/assets/icons/material-symbols/playlist-add.svg b/mobile/assets/icons/app-icons/playlist-add.svg similarity index 100% rename from mobile/assets/icons/material-symbols/playlist-add.svg rename to mobile/assets/icons/app-icons/playlist-add.svg diff --git a/mobile/assets/icons/material-symbols/queue-music.svg b/mobile/assets/icons/app-icons/queue-music.svg similarity index 100% rename from mobile/assets/icons/material-symbols/queue-music.svg rename to mobile/assets/icons/app-icons/queue-music.svg diff --git a/mobile/assets/icons/material-symbols/remove.svg b/mobile/assets/icons/app-icons/remove.svg similarity index 100% rename from mobile/assets/icons/material-symbols/remove.svg rename to mobile/assets/icons/app-icons/remove.svg diff --git a/mobile/assets/icons/ionicons/repeat-one.svg b/mobile/assets/icons/app-icons/repeat-one.svg similarity index 100% rename from mobile/assets/icons/ionicons/repeat-one.svg rename to mobile/assets/icons/app-icons/repeat-one.svg diff --git a/mobile/assets/icons/ionicons/repeat.svg b/mobile/assets/icons/app-icons/repeat.svg similarity index 100% rename from mobile/assets/icons/ionicons/repeat.svg rename to mobile/assets/icons/app-icons/repeat.svg diff --git a/mobile/assets/icons/material-symbols/save.svg b/mobile/assets/icons/app-icons/save.svg similarity index 100% rename from mobile/assets/icons/material-symbols/save.svg rename to mobile/assets/icons/app-icons/save.svg diff --git a/mobile/assets/icons/material-symbols/schedule.svg b/mobile/assets/icons/app-icons/schedule.svg similarity index 100% rename from mobile/assets/icons/material-symbols/schedule.svg rename to mobile/assets/icons/app-icons/schedule.svg diff --git a/mobile/assets/icons/material-symbols/search.svg b/mobile/assets/icons/app-icons/search.svg similarity index 100% rename from mobile/assets/icons/material-symbols/search.svg rename to mobile/assets/icons/app-icons/search.svg diff --git a/mobile/assets/icons/material-symbols/settings.svg b/mobile/assets/icons/app-icons/settings.svg similarity index 100% rename from mobile/assets/icons/material-symbols/settings.svg rename to mobile/assets/icons/app-icons/settings.svg diff --git a/mobile/assets/icons/ionicons/shuffle.svg b/mobile/assets/icons/app-icons/shuffle.svg similarity index 100% rename from mobile/assets/icons/ionicons/shuffle.svg rename to mobile/assets/icons/app-icons/shuffle.svg diff --git a/mobile/assets/icons/material-symbols/skip-next-filled.svg b/mobile/assets/icons/app-icons/skip-next-filled.svg similarity index 100% rename from mobile/assets/icons/material-symbols/skip-next-filled.svg rename to mobile/assets/icons/app-icons/skip-next-filled.svg diff --git a/mobile/assets/icons/material-symbols/skip-previous-filled.svg b/mobile/assets/icons/app-icons/skip-previous-filled.svg similarity index 100% rename from mobile/assets/icons/material-symbols/skip-previous-filled.svg rename to mobile/assets/icons/app-icons/skip-previous-filled.svg diff --git a/mobile/assets/icons/material-symbols/slow-motion-video.svg b/mobile/assets/icons/app-icons/slow-motion-video.svg similarity index 100% rename from mobile/assets/icons/material-symbols/slow-motion-video.svg rename to mobile/assets/icons/app-icons/slow-motion-video.svg diff --git a/mobile/assets/icons/material-symbols/sort.svg b/mobile/assets/icons/app-icons/sort.svg similarity index 100% rename from mobile/assets/icons/material-symbols/sort.svg rename to mobile/assets/icons/app-icons/sort.svg diff --git a/mobile/assets/icons/material-symbols/timer.svg b/mobile/assets/icons/app-icons/timer.svg similarity index 100% rename from mobile/assets/icons/material-symbols/timer.svg rename to mobile/assets/icons/app-icons/timer.svg diff --git a/mobile/assets/icons/material-symbols/translate.svg b/mobile/assets/icons/app-icons/translate.svg similarity index 100% rename from mobile/assets/icons/material-symbols/translate.svg rename to mobile/assets/icons/app-icons/translate.svg diff --git a/mobile/assets/icons/material-symbols/view-agenda.svg b/mobile/assets/icons/app-icons/view-agenda.svg similarity index 100% rename from mobile/assets/icons/material-symbols/view-agenda.svg rename to mobile/assets/icons/app-icons/view-agenda.svg diff --git a/mobile/assets/icons/material-symbols/view-module.svg b/mobile/assets/icons/app-icons/view-module.svg similarity index 100% rename from mobile/assets/icons/material-symbols/view-module.svg rename to mobile/assets/icons/app-icons/view-module.svg diff --git a/mobile/assets/icons/material-symbols/visibility-off-filled.svg b/mobile/assets/icons/app-icons/visibility-off-filled.svg similarity index 100% rename from mobile/assets/icons/material-symbols/visibility-off-filled.svg rename to mobile/assets/icons/app-icons/visibility-off-filled.svg diff --git a/mobile/assets/icons/material-symbols/voice-selection.svg b/mobile/assets/icons/app-icons/voice-selection.svg similarity index 100% rename from mobile/assets/icons/material-symbols/voice-selection.svg rename to mobile/assets/icons/app-icons/voice-selection.svg diff --git a/mobile/assets/icons/material-symbols/volume-up-filled.svg b/mobile/assets/icons/app-icons/volume-up-filled.svg similarity index 100% rename from mobile/assets/icons/material-symbols/volume-up-filled.svg rename to mobile/assets/icons/app-icons/volume-up-filled.svg diff --git a/mobile/assets/icons/material-symbols/warning.svg b/mobile/assets/icons/app-icons/warning.svg similarity index 100% rename from mobile/assets/icons/material-symbols/warning.svg rename to mobile/assets/icons/app-icons/warning.svg diff --git a/mobile/src/resources/icons/app-icons.glyphmap.json b/mobile/src/resources/icons/app-icons.glyphmap.json new file mode 100644 index 000000000..6c6449dcc --- /dev/null +++ b/mobile/src/resources/icons/app-icons.glyphmap.json @@ -0,0 +1 @@ +{"m":{"f":"app-icons","u":1024,"z":1020,"s":59648,"h":"2988b8cab4b549800b33786b46a337ab51da5eb27a7ed3cf25b78a46f079d739"},"i":{"activity-zone":[1024,[[59648,"#e8eaed"]]],"add":[1024,[[59649,"#e8eaed"]]],"archive":[1024,[[59650,"#e8eaed"]]],"arrow-back":[1024,[[59651,"#e8eaed"]]],"autoplay":[1024,[[59652,"#e8eaed"]]],"bar-chart-4-bars":[1024,[[59653,"#e8eaed"]]],"cached":[1024,[[59654,"#e8eaed"]]],"cancel":[1024,[[59655,"#e8eaed"]]],"check-circle":[1024,[[59656,"#e8eaed"]]],"check":[1024,[[59657,"#e8eaed"]]],"close":[1024,[[59658,"#e8eaed"]]],"color-wand":[1024,[[59659,"currentColor"],[59660,"black"],[59661,"currentColor"]]],"conversion-path":[1024,[[59662,"#e8eaed"]]],"create-new-folder":[1024,[[59663,"#e8eaed"]]],"delete":[1024,[[59664,"#e8eaed"]]],"do-not-disturb-on":[1024,[[59665,"#e8eaed"]]],"document-search":[1024,[[59666,"#e8eaed"]]],"drag-handle":[1024,[[59667,"#e8eaed"]]],"edit":[1024,[[59668,"#e8eaed"]]],"favorite-filled":[1024,[[59669,"#e8eaed"]]],"favorite":[1024,[[59670,"#e8eaed"]]],"file-save":[1024,[[59671,"#e8eaed"]]],"flask-filled":[1024,[[59672,"black"]]],"folder":[1024,[[59673,"#e8eaed"]]],"format-paint":[1024,[[59674,"#e8eaed"]]],"graph-1":[1024,[[59675,"#e8eaed"]]],"graphic-eq":[1024,[[59676,"#e8eaed"]]],"grid-view":[1024,[[59677,"#e8eaed"]]],"history":[1024,[[59678,"#e8eaed"]]],"home-filled":[1024,[[59679,"#e8eaed"]]],"home":[1024,[[59680,"#e8eaed"]]],"image":[1024,[[59681,"#e8eaed"]]],"info":[1024,[[59682,"#e8eaed"]]],"keyboard-arrow-down":[1024,[[59683,"#e8eaed"]]],"link-off":[1024,[[59684,"#e8eaed"]]],"logo-github":[1024,[[59685,"black"]]],"logo-google-playstore":[1024,[[59686,"black"]]],"low-priority":[1024,[[59687,"#e8eaed"]]],"lyrics":[1024,[[59688,"#e8eaed"]]],"mobile-arrow-down":[1024,[[59689,"#e8eaed"]]],"more-horiz":[1024,[[59690,"#e8eaed"]]],"more-vert":[1024,[[59691,"#e8eaed"]]],"open-in-new":[1024,[[59692,"#e8eaed"]]],"pause-filled":[1024,[[59693,"#e8eaed"]]],"play-arrow-filled":[1024,[[59694,"#e8eaed"]]],"playlist-add":[1024,[[59695,"#e8eaed"]]],"queue-music":[1024,[[59696,"#e8eaed"]]],"remove":[1024,[[59697,"#e8eaed"]]],"repeat-one":[1024,[[59698,"currentColor"]]],"repeat":[1024,[[59699,"currentColor"]]],"save":[1024,[[59700,"#e8eaed"]]],"schedule":[1024,[[59701,"#e8eaed"]]],"search":[1024,[[59702,"#e8eaed"]]],"settings":[1024,[[59703,"#e8eaed"]]],"shuffle":[1024,[[59704,"currentColor"]]],"skip-next-filled":[1024,[[59705,"#e8eaed"]]],"skip-previous-filled":[1024,[[59706,"#e8eaed"]]],"slow-motion-video":[1024,[[59707,"#e8eaed"]]],"sort":[1024,[[59708,"#e8eaed"]]],"timer":[1024,[[59709,"#e8eaed"]]],"translate":[1024,[[59710,"#e8eaed"]]],"view-agenda":[1024,[[59711,"#e8eaed"]]],"view-module":[1024,[[59712,"#e8eaed"]]],"visibility-off-filled":[1024,[[59713,"#e8eaed"]]],"voice-selection":[1024,[[59714,"#e8eaed"]]],"volume-up-filled":[1024,[[59715,"#e8eaed"]]],"warning":[1024,[[59716,"#e8eaed"]]]}} \ No newline at end of file diff --git a/mobile/src/resources/icons/app-icons.ttf b/mobile/src/resources/icons/app-icons.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f4f7fa5c89926849254ff6de0d46aba0cbc063fb GIT binary patch literal 14568 zcmeHud30RGmG`T+zt^w(^}bo%T3YJ1C2Q$!Ni9pVW9x@Mqui{b{0z#s>=?d$oUIc6Co6JZgrpRw?c{Os1+0mwcaOK&ER?7#&b3Z|L}(J#(Z}^ zZYt2)PklsWsXzT{ym$R5QL7q37V7Yn@rUvo^G}{cDx5r-U{xp#>-zs6fn!0sR=QRw z2pz%)Bv3IGJI;4km)n`GP^; zbHSv|GX#^9urw?U3rV3t=oRJzvYKH9LS8M4mj)Oi(#A0PhNe(7UIx0lLJWh1I=crL zuwP$_*D~Nf1mv^&LL1A~H>eu>t)ULE6GmS+>AbF~Vuz|t{8L@Kq4%2E z5c_s0YxZkKM|R?0#pX6q6`esz5ykns|DHZ0oHRE3&>LX-?(v7#I{m7qsqCqVciU^( zt5(un1=s+( z09(x~d=qA3ygugcN*3GGU6}12_Wf|R zWs62Gt0kj)Jgv)NHXIHV2I{R;L^hjOl>HG_G}BhyoO~c04wP0jTk zZ8XFHyMhILrh2^^#m`(gM#DT1jD=I7wL3nxB@on7_EmRY#&$*gW$GSDTlEBu?c{Lc zI*TN=3;@}qJ_A#b!fBdOMo&7gU@CL!Fcry%sRSZKkKoE+ork0m;5R8W2_<2GpL(2j zch{QogjphaY-@#+A~>63b>|N8%Yf5NDex?|hmUUXLUH8@K*-UZ09*Xv#!)g7kONppX+52trc>CZpjj zcH#h)=zORR?KqurB7|;~u-y`liMQi8y&0DtKtN~+IzT6!IZ?dvi9S7rbL7kTw&)Cm z*mra+(i8^un^v-zakGY%ET!Jt((FC@#CLAW^%C`N@u4@s^ybEnDynQG60)v|OBGEv z6LDGBpSZEH4?C4`8zv)0U*p(Oz9gO;k`96AOc%Q7JY~TW+G)1L7eJK6D6pJ(sgh`D z6FX;#rK}hYh=o#jFkhzz$cl`HLt*KMrQ!L5*oH^H^P%kuNuJ2)En)HDaWKXXr-0TL5-ymdt_AIlycZA;V z_MufWtWW&$Y*TUh^bGOe1t<>&cqEQF-&UO7Qi6S&Z8Lyj=Q@n{kP%55Y%6MTObqAa zmh}*E9!#At$dpXZ>pe;WvS+bc@CVMtun_@P5QXQd$Mer~;&}e_0z(NHf8hmSoEdmb z7EF&`zb5`fusD~biMfn2-%1{ma`q- zO72^^g|*8lGb+n5TXA1EQFE!8H!?9n|!7wikiu$GsQ=MS9Wl9oblC(g^D$rz+;arB^XbFIpZ?Q@M#d}V{@>{0H>QUazLAs+l zYk2D=q9lrvtYF;5DqA6AC{0yWWx*+E%A(1EEWfFFdw5j3RA?8V8H48(Jf(nin-)+9 zFOr(%sRyJH^^wpfxx^(qDoRpwVW#=ooYkx6teo1{H}!R2f1!Qu-1b7h@AcWMSI=HK zt*>v|Yi{Mly>@MDZEfq}_WbH=R`)LN%eT+HWbPRSaZzx3UETCLR|6(qUI7hE6V7q9 zHwa1+i?t+#xz5nUHHyxBt{&vw!WvZ6#+$$@OWiX`ZqiCf`+!!GqxqMg$Tl};e-xNv z_OWv*J8`9Wy`t-ibN5nF5r2d%yB`vZ>|Z6VxP{ zHLa#pIlaL8vdtEab~I*x(~cdrFg>d|>vvW|xjCrl&L4D)9!`D%hZo}Lo))lERmD#9O2a4H*_2pzhB1tdM?sfmDFg1Lg+s?-Pz_-Zq5v0d3_B6Fa`_jkk@C zE~@E_tu>M%T81mvE8-aNm;mP?rMs$$oRV&kBhbOYG6IvovAHEmMpdv1HsR8M>iQ{MJm{?4DHl zMfOP9Id^B=o{u9T#&p9lN_spQGbY|LEm2RGJy~){+C`kcDNpK!XFXMoCmVw`u-E)% z&+f19TUA;=b?W-ks(p`)^_b}?Pb)@w%hO}4_O*9+x9?ju{>+9>!|?Fp!mNB4RH==Q zZ7iCF;39KkmWacQ8fXj+d2h(eEHar&%BSHzR$TNGuDz3&(E~@&~u8tlprpvOB@5uevQ-YDcZaTvay3s8IvIY zz%XaBb`hs41F2YsytSoRtq2PQ=YK%zY8P4e0K_7zRc)rUvo7g|KZ&}W^+y%ma=ybK z1qf*8q^8NDtm@H))5O5Eg;8BaQF9U`s8vbar$~}!Tp`N3^S6cq5qhAX7Rm)UD zehuRASTy2n34|ljXe1JDY;JB0M|hrHAxcU#9zUjt?A~}h`aJ{vWzDRfwW_?Ra*e-2 zTKr{+@R!)XM<*4W%M`HL%Q-#gP*p-8S;g&Z7`a_J&%~R2g2E#}FxVLc7kfUHyP>vu zsE2*ejjg86Usa!5~d@}dUnMM9$;?d*B*@5HuIQxzt z7pI;Gcf!)E?GGgMBOtWfwlSJX>pM++v zDeJz9v6CPDhbgiR$3ybirYj$O@T&QjwG0uiZ?_VU)3f%PX?tMGq>L*S z1=YtsbD2LX`>pjKd*BZb^mm~qX5UP`7WB{US-1blHS2oV&fR2@T%}t2H|UKg?|P)g zpdq0G+Nj##?iuFWK<5E0lFoEP{-5l?+tH5b+W|Y5`~>M)mr(MFWbOpp6UzD?vF%5E z*^qN6*%-HfMz4Nm#~Z8sipEKhW!zK->A6R*4Arll+s6SGlRj_;#5!nfCLfFiKW)bj zO48f1F25~FeW%Ul3wC^KJn%)#N5OJ<-!Ip>0HSrU%L{e+wCrG!l?QjQeP{Qh_`D$31t(nK5 zp?dAIE&aN3s`1*0`EgCV{z6S#X+}K$MLMY^#DqMkN?>4_u5J&VFH%+hKG;kbV+KFB zrWvV;L}~(O(NO0Z)}wT6k+1=yCKAqs9p$XrDz~%6m&HQ@+)s=)4eVpm#3rri9aVXP z?EVKIBs=>%sz1PPmy{{0$NtX#4w|0ucV!$ild|;m={wP>k=D2!?)oF1gsw4;bv0<1Q!I)jo*<9bOftS3 z3i(1Y&yz}bxfoBx6UBIWK>bVPtBD4e!r#0d-J7qZ5yn38=NCi zKQ++Mn8T+~p9m>RP-0qZc1p3(>(>ot`DFQ`1BJrOzR}IncW2GqwC(B*7hSkN%lyVN zQDpU@P<_;tLvT~XEnf*HzA`PUg%hpi^B0uE$--2oTQ#yKGf~xRES*g)B*Wze=XXv| zgjEYz`Kak<+5Hz@wBhP)n`X}P=>7}R_dpu~P)7}9L#UP+tdLV!F0UpG9JdN9G!?W2 zxz$EQgB^7?i@LbfVN8X3^hsx2HB{h&Ex6@|8*YgN0@4lt{f;KG!|WFJ7E8;1#kt0* zSNt+d?;csUfB!OHp)h&gETIuPO~0@Z<3`~NfSpY=9)||#dMI<`XLc!(*dq1_?g3&> zP#w;a|Hh7?WGlIx%r!n{t}&p$wk0-hq z!Y%A^&dowA=dGQm8{dORJsEcXt7BfXyXyV!TW4g6szgHK2=U>F9uEwtF#IQ;@6y!U z195$G7H&@0rmRShK@Js!xvo|Sp+j~msevTsv=8L@BpJbeJsSvNAJ?0kWhFL~Tr2FR zY)dE}54B|B*}92Fb}oYmcwSWz(@7e=m})QgPAitZ7*gN_&GJS$9X>ZaMRGm@X@H2& z2|nYzs=Xtk8+N?+7~$(!FNFq-&8o{fxgIr39Dqg@64JzDh+%>b%kRrDmTqb)H#NPM zZfxvqZ2WbKm)LPCocZ-|BMwNjs&F}t5L~EZ?f{(kQjI9M0MlnYj?+-(CMLMBPr5~# zuIn2h8JiEHx zIU7Gr)b(>aj#^LLBIikD#q9{c&?RV&SR1<(FXQ&lsZVvD;_svY*HO960P3K5a!sJ# zJpq$t@o+MiOE!{b>3oXPMp8H5%_Z5r^uk#~>8U)niX-EM_!5_)M0oHxD%^>o@B_v! zjoY%RusS#=bmwKolU7!E3rOH$P1SDzMt$9*k1(mA=m#l>ij?-S89 zX)lC7FCTGTNwgwQ_xE@fnLiKH8GW1R?QP1jI|wJvwp01b^aE6N0LSehH9Hteu?;{U zzV~|%?<9r{>i}xp<~#!rk!zD35?>YK9#10tx+w6FT;)QiP5JccpPm=LNXAki?Tgtv z?P%1#V9vx_G&}g3F*WBT&wr6G;o?*If1bT&Hk_VQ(IXpmKHE0?k#Lfnbho?nzr&rs zw@;EKW`JM!e0dmTK?)bMmw8HYVnm3sr(|;q(mhhUPzUL8u`njwC467_E&6tp$)hfj ze_d*qX0icEsV{SvyaJ=3>WfDxDB(HZ;ft{4T)WaWAZzv9{a#PLdnHD-003CZfL5!< z3gucg0|{QORl5e%gssJDl>zwpYo+pl4F85I?uVm&qa@24eSXW3MZ^^3C7ui2bRJ^I zJh#5HrfV_t9PpX$!RwhQxi0*rOH?N5+@-H7>j@D2`!m=>=qJmD$lAr;QrP0I2HDaT_-yj| z!S2jSFLJQ#Ttp&F1QGynJ%@v+!rCeV5RIS+M2({JAu+oANTbMCqhijQHkVca6v>#N zT2C1TL5P-JTjE&8Z0>Ly!Z{f7vu%B z{%`iJFxZ*>(0yCSXnU#IX}fMB?&I*CPe4$G9@6t1xL?xe|$M zInWGTJC7Z=r4-oX};^ zM}9(GF3wPEaN(G}fI1-YbQ7}qsxet8SlseP2#CiR&tmLl!L=0SlcZhT{~k;4;L}e# zZ$ACBXx&dd@L|obev-5i=iT>Mc~7%AZ%J&-mDQ`I&A=J-Z%?~`gwXi?5DGR-y2aS1 zwjDY0-0j)ayAZ<0J9W!jmXD9$J3h{~-TvH>Bip8*pM8f+!FSS`{!71jDZa!eX%OjZ z>1Ozt_X@b%2DVO)_JXF8Q3*vW-&Me60BBfrYo-=IdXi|P+W`sO`EWJzcp`(_0kEvd zCr{I&XRc5tnk@ur;TJ(hrfuUf%(Pe0X zLE@3;1a!00tP2gI(pQjQEki;)8R{&2kXkoZPP9W zA5botwmsTc6IkJID5tkHuOXhcx_NWDtFBUBxNy_Lg?kgB3)Hx;UbE~qc7w0WFrvB{ zFZ*)#>VT!yTTyLQD3J(Vs7L&06IdN=@O7JdB%=Ged=2R0(;EC?zUN_1@nV-^|hh-3tLlJef`3X3-PVm2FIiU#LK&c3xvys+px=(5y+ zm^RATLs4MN^r@0`etKoc177s_8+9{6eOD z$RxhNeVHWtCdR(fu`>Pn(2Tlm9=LI@{D2px7T0Z6-7xhy1`11vos+zZrdNt}k_w<7 zo7&35$}k?Y=__URVr7(q$21ikGg-FSpb#>V$ln^c1sjcog6WvZpJldBmLVxurUxn?MS%Tul{M1bB@ULisI3Nm(# z&1aW$MdwDOB{n@6lcc-2u6U;`Mn7~MoH6finy2By%NB6QVGo`*1Pyt{Fwr~t0C!0e z{PE8QqhK2DeXoPk4OmZ&cjJq!&I;Xu$&&{$-UMxz93cVbUeW4~@Oxf7z(uEa7K_ZH zTQm4ZRm=_F2>8w!_r2&;)2z`ZNbVjO-m@6{@ne4fV*y;Uc+MY@wYaUp-qt|%qWuwr zX?9$dqp6^z)h4yXd?RfoD_JWP_BSugnetOXe{FZtN{2;XZqamKm|bz_9?K3{hradr z&Ay=DxA#+Q&t5&N?=^zKH-o`#A%B)Pm(1LvW-G!hBjrnVXZ@jw)x0QYN)vxDnHEfF zQZ!{tdN!e@#M}H4NlOGZ5f{7?m{h>I@$zq_rARU;rcXG(d@&^klMyNPEsr-2i@)&n z`oBu6e}Xpu3zG@EofE@$O2z9bWwq{>J{d}daT)DNSJ@>tT$PXC$9PGh4Bge`_nsXg zkwNCkppwLIERn(D-KwDoNkD9v3`Dc9&|nWyG8a+?cEKHU*7fwPyJpdxUBy}wPql?s z6mMgx3m*LagAe{*y1^sq9s}K=wj*&))S$)wbv@GySrS#*;;y+1;ky3h1=NFXNxSmn zKItmh@beJc5t>}zL740KcmO@Y2(zrEk~0d+wnlndgJ z85^m_M9A(SuLSo(({7N(5L**y4cyAy}7ozx%Os$<>O{D zu8}wcyoSGn!@63HeQ<4_5!lKq?z4wLKQ*xK%b*~5_u)6v5R9Q81^n>f!M3g(?$>~* zaukQ6saMTv@xa}>a_b96kN)f3w<@~-*1Pqe9Xe2L9rBV1s8sW)X2?{B27Rvbs@fl?378k-U`6ejB zc#GLZICJvY4cAD}lzd!t`H(ad*k~Z5s7gu-2udm*$q!At?#0<;ucT+>*YRs*;$w6< z(D^~2#(GYXM+QIs(rnl=O0*;EZ?G<+$gnsvXvKVbSZxmZI?9OqGQYAG7p7wQtB=_J zL%WP{B&;_NW!DqYO)Q4~#Qr3!&-$kX21nQrZ{Dqk!(pvyZpIP;FKGDUzQGYdm9%N$ zHlOk@c0Q&l>Lse5!RB_)%3*0IWPOGF(a^PE`D0<6iy}+snfo80)qTjjCfYxeM>ta& zogzYGH*sQe+2Gi5*9|=hQH*P7JO(W3{*WxUm&@(49I`Z1uJrd;WOJW|+SHUODb)H^ zQ?74ptd~vanUPZ7YSMCDGF2j)Cgkbme1ePEi2=Eq}0HI*(vvhQnzw=MZGM4-9~s-GM9$ZaS`W_iTAtrc=at|vbn&+mx>6KT7@}>CH!h?=DXM!5SpmCo(E#0) zD7sLgm%I+hl~SwE^_fP(zj|zJwLf8)zH?VQ)Ay3zzxV1uJ|Fm916WcnexZqt@nESWj<2vWHeQ&I_`~OSuaRDQ| zcHyR0%yjZ8k!PAB!razC4t?B~JdI0lx}GxX<9&Ebw@tO`|AFTL;ZdB4bJ>53tHh_I zv~-EIU;2jhvMkHD$*(GNmCq@^ROhSP)%(<+X^q-#+Mo3v{eb>wV})_t%$m#1&zW!f zI(@5r&sZC+FZfOWo&G-t8UxD%_XVC0{MlY%f7L!7d^2=Q=s&_!!>c06$V<^+bbj=; zST=Tf?A3UG{KiBe@laAoLJD$>4GM1otMnm!nfMa~{NIfC2?{^(@X7>Sob~b|IJtKV z74&Yv`s7|pY>0sy9&TQNe$e3MRn)h7c~fY?Z9lh-5BB0PATXJrg@rv{UPL74dM_`b z{&p`fBY&TlSKt$T+{>$||B073VV}J0<$Xe)bq|k^w{BTKwsZIL(M@}|5AT{RPi8I{ z-L-qm*v`6QTgPPGg3+C$yN36SZm1i%qHg!TO{G11Hr8$2HMXN}aBSzE(e2yE>c)4C zZ5>^|r)~3|J>$LY?Hj%Nw)JB>u&QzVwcRZs8E>gd(Cc9Usth0ov{4ZHIxuQN(TPgc0Eiq`QTE7_)@hJ;FwmHv-<6umib4 z4wG7M$KM!g#`(Lgs9BHJZNg^WYaDT)cKmI8Py05$t{tF=>Uku(dH-jSv@IqwiOEa> z+t8Sf(45J9%wm3Se+OBJg;|6}S&YS5f+bmsrP&l#gUAY9YpY}Rh!f{nBWq%LT!os- zrm<#Ne$!bi)U}cshfp!#o|~>3W`S;OQt&H&R;U@QWONk;5-?_(cxC z$l(_`{33^6l45{F;r@XH*2nZqx0_+<{i%;A?g{4$4M=J3lLewo8BbNFQr azs%v6Is7t*-^t;3a`>GbekX_D+4(;v&hlUY literal 0 HcmV?d00001 From e3888a456b48a5ab7c978d30e35b598c8c013ce8 Mon Sep 17 00:00:00 2001 From: cyanChill <83375816+cyanChill@users.noreply.github.com> Date: Tue, 16 Jun 2026 16:52:29 -0400 Subject: [PATCH 11/17] chore: Remove old glyph maps --- mobile/src/resources/icons/index.tsx | 10 ++++------ .../src/resources/icons/ionicons.glyphmap.json | 1 - mobile/src/resources/icons/ionicons.ttf | Bin 3816 -> 0 bytes .../icons/material-symbols.glyphmap.json | 1 - mobile/src/resources/icons/material-symbols.ttf | Bin 12136 -> 0 bytes 5 files changed, 4 insertions(+), 8 deletions(-) delete mode 100644 mobile/src/resources/icons/ionicons.glyphmap.json delete mode 100644 mobile/src/resources/icons/ionicons.ttf delete mode 100644 mobile/src/resources/icons/material-symbols.glyphmap.json delete mode 100644 mobile/src/resources/icons/material-symbols.ttf diff --git a/mobile/src/resources/icons/index.tsx b/mobile/src/resources/icons/index.tsx index 02d3b87d2..3952a8d13 100644 --- a/mobile/src/resources/icons/index.tsx +++ b/mobile/src/resources/icons/index.tsx @@ -2,13 +2,11 @@ import { createNanoIconSet } from "react-native-nano-icons"; import type { AppColor } from "~/modules/customization/theme/core/constants"; import { useColor } from "~/modules/customization/theme/hooks"; -import glyphMap from "./material-symbols.glyphmap.json"; +import glyphMap from "./app-icons.glyphmap.json"; -const MaterialIcon = createNanoIconSet(glyphMap); +const AppIcons = createNanoIconSet(glyphMap); -export type SupportedIcoName = React.ComponentProps< - typeof MaterialIcon ->["name"]; +export type SupportedIcoName = React.ComponentProps["name"]; type Props = { name: SupportedIcoName; @@ -21,7 +19,7 @@ type Props = { export function Icon({ name, size = 24, color }: Props) { const usedColor = useColor(color, "onSurface"); return ( - )gEdu6Io?&O#OJ#<{pOO+rx8#IbknB(~SG zoed=V(7LlRA;80e^}oG zz6*GKar)XawX?qg#~PMenqDm5y#324@LA}HFIQLBe*M>1jx*M99rFuJim%g4OkwT| z{O6#2sXo%%EJq_Mo$pL);C*&j9z(5yGVj$m#-FvHcs zBuinG_<%nMZEm7xo0|#Rl0q8u|8K^MOnis`f_bbJUQ^5^C?3<@8R{QN=opY(aRf*= zO|?&T(2qMtr`l@=I}X`4y>7Qg?b<=RmA}@}Q9IZ^HEQOkqIRpHMq3R>-P(K`zsKNH zq$9E=DMqt0!l_KeEh&Vwo;`iWay>Mc-zLr-19}dqN=qW?UlhCu9&%1WpE*EfH0p?lbISYw?A1+Ow6iy*byh zIJX?yManf4H;e&<=dcsQGAWeSmR3qCb;zb?iO6$=AQECi;uK&xWY<28)!>9c&z;mp zAiw)iR@ieaN&}zwMb@>}&iLGix!_z#1-+A+o{>;xX|2`7Luu;Je-wFP$3h^PJG=|q z46zAVS>XKnTyc!DJl(B3VU;}W9T6=_-bMLzu2>R`#W}&2xkjhd)-1s{W$*yor zg}mD9{*b{1)iy0la;ZbHC%5y4?N7!+8mLuEn2XYaUsXa__BxlL+UIRW8G2DfW3M!Y zwdbg&umyA6i8a?QHbk3avF7Gz?~Wb4(Pkf}buLsa9>1eFy&R9n-n6k^S`H52pXWZ# zvkau$g1K8_i7raS{ZrwByEFZn;eNjxE#`;giFjf-o-c{ws3GthE z;yx^gqwTLT^pxP&tAVgH+BH|&iKMN#hc7x4T!l8L`hSU zY|8W~>gm@Bn{<4XGJP2I10Yg{*#`5V^trV{GLh<2$Sfwk$dejuQfnh=*q3Zsh(2ToiKQY- zYE~jm%xQ#8kR=Wu;Si4|t+T;VXtK~Py^um&_xFz%J2!*ua_k7Qm4jphfiu1wWS(_Bp^BPhV7ACcTgMrx+(66 z5^HA#c9LCVUx6iaFh+zLXeT$NQkaUMa>K?#5#gH$rK7}~bHk5>t}IEF&&89}MO&4# zyFW{Vg!+o`?5kH>(Ty4poDL9YM2@S4INo+*=+&T_emAwJ=@Y`mBIT7)(#it09$|FU zuad48kSo4#`c>70Dm;yZbpKWT*3gNzZ#3;mT@J)82l%T&+2-dj>3Z2-hN7szTf)R< ztnCC(2@Rp28`$laStPoyw$Dg?R+UXLHCqW`C&wmjQ&Q=96I)pO-(qX`z@OT>OstrK z?<2yh>v|}?P5Lj1u-7%P+plS;Yd4ep=DEoJzc9D{rv3e?O3Gx;tx?=Z=4LEZujzoW z=8-q>$50bNc~A4JfAB(n&xDT*v1izCX_EfHd&Lp)uKWS0MuNlMspo88lLMSFype;} z$bJ^+A?&5T!aUe5V0HZhP$YmQ;6wl`=CWh}YtVNDu)}t;TmZYQ85IIAb!py*ji~Z< zn4@BC1h4@8Rsc)DcLG?kIJ+0X8uYgU*nw~VDu7+qPdhGFmoCm!msX!H&s|xVUfDvo z#*^ihRlup?!J#eEM0u&aGQC!wOPmUf(2(B``+d&u S^L{_#_XWQ%`u(Wif8^gUioAUQ diff --git a/mobile/src/resources/icons/material-symbols.glyphmap.json b/mobile/src/resources/icons/material-symbols.glyphmap.json deleted file mode 100644 index 56c7f8518..000000000 --- a/mobile/src/resources/icons/material-symbols.glyphmap.json +++ /dev/null @@ -1 +0,0 @@ -{"m":{"f":"material-symbols","u":1024,"z":1020,"s":59648,"h":"618c327d558d22035342f9b421b96ed399acbe3bd2bca206d815ff80961dae63"},"i":{"activity-zone":[1024,[[59648,"#e8eaed"]]],"add":[1024,[[59649,"#e8eaed"]]],"archive":[1024,[[59650,"#e8eaed"]]],"arrow-back":[1024,[[59651,"#e8eaed"]]],"autoplay":[1024,[[59652,"#e8eaed"]]],"bar-chart-4-bars":[1024,[[59653,"#e8eaed"]]],"cached":[1024,[[59654,"#e8eaed"]]],"cancel":[1024,[[59655,"#e8eaed"]]],"check-circle":[1024,[[59656,"#e8eaed"]]],"check":[1024,[[59657,"#e8eaed"]]],"close":[1024,[[59658,"#e8eaed"]]],"conversion-path":[1024,[[59659,"#e8eaed"]]],"create-new-folder":[1024,[[59660,"#e8eaed"]]],"delete":[1024,[[59661,"#e8eaed"]]],"do-not-disturb-on":[1024,[[59662,"#e8eaed"]]],"document-search":[1024,[[59663,"#e8eaed"]]],"drag-handle":[1024,[[59664,"#e8eaed"]]],"edit":[1024,[[59665,"#e8eaed"]]],"favorite-filled":[1024,[[59666,"#e8eaed"]]],"favorite":[1024,[[59667,"#e8eaed"]]],"file-save":[1024,[[59668,"#e8eaed"]]],"folder":[1024,[[59669,"#e8eaed"]]],"format-paint":[1024,[[59670,"#e8eaed"]]],"graph-1":[1024,[[59671,"#e8eaed"]]],"graphic-eq":[1024,[[59672,"#e8eaed"]]],"grid-view":[1024,[[59673,"#e8eaed"]]],"history":[1024,[[59674,"#e8eaed"]]],"home-filled":[1024,[[59675,"#e8eaed"]]],"home":[1024,[[59676,"#e8eaed"]]],"image":[1024,[[59677,"#e8eaed"]]],"info":[1024,[[59678,"#e8eaed"]]],"keyboard-arrow-down":[1024,[[59679,"#e8eaed"]]],"link-off":[1024,[[59680,"#e8eaed"]]],"low-priority":[1024,[[59681,"#e8eaed"]]],"lyrics":[1024,[[59682,"#e8eaed"]]],"mobile-arrow-down":[1024,[[59683,"#e8eaed"]]],"more-horiz":[1024,[[59684,"#e8eaed"]]],"more-vert":[1024,[[59685,"#e8eaed"]]],"open-in-new":[1024,[[59686,"#e8eaed"]]],"pause-filled":[1024,[[59687,"#e8eaed"]]],"play-arrow-filled":[1024,[[59688,"#e8eaed"]]],"playlist-add":[1024,[[59689,"#e8eaed"]]],"queue-music":[1024,[[59690,"#e8eaed"]]],"remove":[1024,[[59691,"#e8eaed"]]],"save":[1024,[[59692,"#e8eaed"]]],"schedule":[1024,[[59693,"#e8eaed"]]],"search":[1024,[[59694,"#e8eaed"]]],"settings":[1024,[[59695,"#e8eaed"]]],"skip-next-filled":[1024,[[59696,"#e8eaed"]]],"skip-previous-filled":[1024,[[59697,"#e8eaed"]]],"slow-motion-video":[1024,[[59698,"#e8eaed"]]],"sort":[1024,[[59699,"#e8eaed"]]],"timer":[1024,[[59700,"#e8eaed"]]],"translate":[1024,[[59701,"#e8eaed"]]],"view-agenda":[1024,[[59702,"#e8eaed"]]],"view-module":[1024,[[59703,"#e8eaed"]]],"visibility-off-filled":[1024,[[59704,"#e8eaed"]]],"voice-selection":[1024,[[59705,"#e8eaed"]]],"volume-up-filled":[1024,[[59706,"#e8eaed"]]],"warning":[1024,[[59707,"#e8eaed"]]]}} \ No newline at end of file diff --git a/mobile/src/resources/icons/material-symbols.ttf b/mobile/src/resources/icons/material-symbols.ttf deleted file mode 100644 index 6b62f4e04cc8322f5dcc49dc1c8ed8c014c1c1ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12136 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 DRb%HD From cb763c0fa8aa5e2866a8ae3c272ed7467a8bf4d6 Mon Sep 17 00:00:00 2001 From: cyanChill <83375816+cyanChill@users.noreply.github.com> Date: Tue, 16 Jun 2026 17:36:49 -0400 Subject: [PATCH 12/17] chore: Convert icon use in `IconButton` & `FilledIconButton` --- mobile/src/components/Form/Button/Icon.tsx | 17 +++++++---------- mobile/src/components/Form/NumberStepper.tsx | 7 ++----- mobile/src/components/List/RemovableItem.tsx | 4 +--- .../customization/font/screens/CreateView.tsx | 4 +--- .../modules/customization/font/screens/View.tsx | 6 ++---- .../customization/theme/screens/View.tsx | 9 +++------ mobile/src/modules/form/FormState/FormInput.tsx | 3 +-- mobile/src/modules/form/FormState/index.tsx | 4 +--- .../modules/lyric/components/LyricsOverlay.tsx | 3 +-- .../src/modules/lyric/screens/CurrentView.tsx | 9 +++------ .../src/modules/lyric/screens/ProviderView.tsx | 9 +++------ mobile/src/modules/lyric/screens/View.tsx | 3 +-- .../modules/media/components/MediaControls.tsx | 17 +++++------------ .../media/components/MediaListControls.tsx | 4 +--- mobile/src/modules/media/components/Track.tsx | 10 +++------- .../src/modules/search/components/SearchBar.tsx | 3 +-- .../components/BottomActions/MiniPlayer.tsx | 4 +--- .../components/BottomActions/NavActions.tsx | 6 ++---- .../navigation/components/CurrentListMenu.tsx | 3 +-- mobile/src/navigation/components/TopAppBar.tsx | 4 +--- mobile/src/navigation/layouts/NScrollLayout.tsx | 3 +-- mobile/src/navigation/screens/HomeView.tsx | 3 +-- .../navigation/screens/albums/CurrentView.tsx | 4 +--- .../screens/now-playing/UpcomingView.tsx | 6 ++---- .../src/navigation/screens/now-playing/View.tsx | 15 +++++---------- .../now-playing/components/TopAppBar.tsx | 3 +-- .../screens/playlists/CurrentView.tsx | 4 +--- .../src/navigation/screens/playlists/View.tsx | 3 +-- .../playlists/components/ModifyViewBase.tsx | 6 ++---- .../screens/settings/HiddenTracksView.tsx | 4 +--- .../screens/settings/PackageLicenseView.tsx | 3 +-- .../settings/sheets/ScanFilterListSheet.tsx | 9 +++------ .../screens/settings/sheets/SeparatorsSheet.tsx | 6 ++---- .../screens/settings/sheets/TabOrderSheet.tsx | 7 ++----- .../navigation/screens/tracks/ModifyView.tsx | 3 +-- .../screens/tracks/sheets/TrackSheet.tsx | 15 +++++---------- .../src/navigation/sheets/ViewOptionsSheet.tsx | 11 ++++------- mobile/src/resources/icons/index.tsx | 4 ++-- 38 files changed, 77 insertions(+), 161 deletions(-) diff --git a/mobile/src/components/Form/Button/Icon.tsx b/mobile/src/components/Form/Button/Icon.tsx index d6bd8e56e..f7e2892b9 100644 --- a/mobile/src/components/Form/Button/Icon.tsx +++ b/mobile/src/components/Form/Button/Icon.tsx @@ -1,7 +1,8 @@ import { memo } from "react"; import { View } from "react-native"; -import type { Icon } from "~/resources/icons/type"; +import type { SupportedIconName } from "~/resources/icons"; +import { Icon } from "~/resources/icons"; import { cn } from "~/lib/style"; import type { AppColor } from "~/modules/customization/theme/core/constants"; @@ -19,12 +20,10 @@ const ButtonConfig = { } as const; type IconButtonProps = PressProps & { - Icon: (props: Icon) => React.JSX.Element; + icon: SupportedIconName; accessibilityLabel: string; /** Defaults to `md`. */ size?: ButtonSize; - /** Use the `alternative` variant on the icon if available. */ - alternative?: boolean; className?: string; _iconColor?: AppColor; _rippleColor?: AppColor; @@ -32,9 +31,8 @@ type IconButtonProps = PressProps & { //#region Default export const IconButton = memo(function IconButton({ - Icon, + icon, size = "sm", - alternative, _iconColor, _rippleColor, ...props @@ -56,7 +54,7 @@ export const IconButton = memo(function IconButton({ style={[pressed && { backgroundColor: `${rippleColor}80` }]} className="rounded-full p-1.5" > - + )} @@ -66,9 +64,8 @@ export const IconButton = memo(function IconButton({ //#region Filled export const FilledIconButton = memo(function FilledIconButton({ - Icon, + icon, size = "sm", - alternative, _iconColor, ...props }: IconButtonProps) { @@ -82,7 +79,7 @@ export const FilledIconButton = memo(function FilledIconButton({ props.className, )} > - + ); }); diff --git a/mobile/src/components/Form/NumberStepper.tsx b/mobile/src/components/Form/NumberStepper.tsx index eb0005e2e..931f97423 100644 --- a/mobile/src/components/Form/NumberStepper.tsx +++ b/mobile/src/components/Form/NumberStepper.tsx @@ -2,9 +2,6 @@ import { memo, useCallback } from "react"; import { useTranslation } from "react-i18next"; import { View } from "react-native"; -import { Add } from "~/resources/icons/Add"; -import { Remove } from "~/resources/icons/Remove"; - import { FilledIconButton } from "./Button/Icon"; import { Em } from "../Typography/StyledText"; @@ -33,7 +30,7 @@ export const NumberStepper = memo(function NumberStepper({ return ( setFields({ uri: "" })} disabled={isSubmitting} diff --git a/mobile/src/modules/customization/font/screens/View.tsx b/mobile/src/modules/customization/font/screens/View.tsx index fd37dc83e..6bc8eba8a 100644 --- a/mobile/src/modules/customization/font/screens/View.tsx +++ b/mobile/src/modules/customization/font/screens/View.tsx @@ -5,8 +5,6 @@ import { View } from "react-native"; import type { CustomFont } from "~/db/schema"; -import { Add } from "~/resources/icons/Add"; -import { Delete } from "~/resources/icons/Delete"; import { usePreferenceStore } from "~/stores/Preference/store"; import { PreferenceSetters } from "~/stores/Preference/actions"; @@ -74,7 +72,7 @@ function FontsScreenBase(props: { ( navigation.navigate("CreateFont")} /> @@ -105,7 +103,7 @@ function FontsScreenBase(props: { {canDeleteFont(font) ? ( deleteCustomFont(font.id)} _iconColor="error" diff --git a/mobile/src/modules/customization/theme/screens/View.tsx b/mobile/src/modules/customization/theme/screens/View.tsx index f652108cd..db26a8c4e 100644 --- a/mobile/src/modules/customization/theme/screens/View.tsx +++ b/mobile/src/modules/customization/theme/screens/View.tsx @@ -5,9 +5,6 @@ import { useTranslation } from "react-i18next"; import { View } from "react-native"; import { Icon } from "~/resources/icons"; -import { Add } from "~/resources/icons/Add"; -import { Edit } from "~/resources/icons/Edit"; -import { FileSave } from "~/resources/icons/FileSave"; import { usePreferenceStore } from "~/stores/Preference/store"; import { PreferenceSetters } from "~/stores/Preference/actions"; @@ -59,7 +56,7 @@ export default function Themes() { ( navigation.navigate("CreateTheme")} /> @@ -108,7 +105,7 @@ export default function Themes() { {!isDefaultTheme(themeId) ? ( navigation.navigate("ModifyTheme", { id: themeId }) @@ -117,7 +114,7 @@ export default function Themes() { _rippleColor={themeColors.surfaceContainerHigh as HexColor} /> onExportTheme(formatCustomTheme(themeMap[themeId]!)) diff --git a/mobile/src/modules/form/FormState/FormInput.tsx b/mobile/src/modules/form/FormState/FormInput.tsx index 8d132ba15..4bae21109 100644 --- a/mobile/src/modules/form/FormState/FormInput.tsx +++ b/mobile/src/modules/form/FormState/FormInput.tsx @@ -2,7 +2,6 @@ import type { ParseKeys } from "i18next"; import { useTranslation } from "react-i18next"; import { View } from "react-native"; -import { Add } from "~/resources/icons/Add"; import { useFormStateContext } from "."; import { cn } from "~/lib/style"; @@ -91,7 +90,7 @@ export function ArrayFormInputImpl>() { label={props.label} RightElement={ undefined : undefined} headerRight={() => ( navigation.navigate("ModifyLyric", { id: data.id })} className="absolute right-0 bottom-0 z-100" diff --git a/mobile/src/modules/lyric/screens/CurrentView.tsx b/mobile/src/modules/lyric/screens/CurrentView.tsx index 6e016b0cb..4ddf3d200 100644 --- a/mobile/src/modules/lyric/screens/CurrentView.tsx +++ b/mobile/src/modules/lyric/screens/CurrentView.tsx @@ -8,9 +8,6 @@ import { View } from "react-native"; import { db } from "~/db"; import { tracksToLyrics } from "~/db/schema"; -import { Add } from "~/resources/icons/Add"; -import { Edit } from "~/resources/icons/Edit"; -import { LinkOff } from "~/resources/icons/LinkOff"; import { queries as q } from "~/data/keyStore"; import { getArtistsString } from "~/data/artist/utils"; import { useLyric } from "~/data/lyric/queries"; @@ -55,7 +52,7 @@ export default function Lyric({ ( navigation.navigate("ModifyLyric", { id: lyricId })} /> @@ -72,7 +69,7 @@ export default function Lyric({ unlinkTrack({ trackId: id, lyricId })} /> diff --git a/mobile/src/modules/lyric/screens/ProviderView.tsx b/mobile/src/modules/lyric/screens/ProviderView.tsx index 20a0f85e6..7d3608d9b 100644 --- a/mobile/src/modules/lyric/screens/ProviderView.tsx +++ b/mobile/src/modules/lyric/screens/ProviderView.tsx @@ -5,9 +5,6 @@ import { useTranslation } from "react-i18next"; import { View } from "react-native"; import { Icon } from "~/resources/icons"; -import { Add } from "~/resources/icons/Add"; -import { DragHandle } from "~/resources/icons/DragHandle"; -import { Edit } from "~/resources/icons/Edit"; import { useLyricStore } from "../core/store"; import { moveLyricProvider, toggleCheckEmbeddedLyrics } from "../core/actions"; import type { LyricProvider } from "../core/constants"; @@ -34,7 +31,7 @@ export default function LyricsProviders() { ( navigation.navigate("CreateLyricProvider")} /> @@ -77,7 +74,7 @@ function RenderItem({ item, index }: DragListRenderItemInfo) { RightElement={ navigation.navigate("ModifyLyricProvider", { id: item.id }) @@ -85,7 +82,7 @@ function RenderItem({ item, index }: DragListRenderItemInfo) { disabled={isDragging} /> ( { // Clear `linkTo` param as it should get "used". diff --git a/mobile/src/modules/media/components/MediaControls.tsx b/mobile/src/modules/media/components/MediaControls.tsx index 408479899..6254457bf 100644 --- a/mobile/src/modules/media/components/MediaControls.tsx +++ b/mobile/src/modules/media/components/MediaControls.tsx @@ -1,12 +1,5 @@ import { useTranslation } from "react-i18next"; -import { Pause } from "~/resources/icons/Pause"; -import { PlayArrow } from "~/resources/icons/PlayArrow"; -import { Repeat } from "~/resources/icons/Repeat"; -import { RepeatOne } from "~/resources/icons/RepeatOne"; -import { Shuffle } from "~/resources/icons/Shuffle"; -import { SkipNext } from "~/resources/icons/SkipNext"; -import { SkipPrevious } from "~/resources/icons/SkipPrevious"; import { usePlaybackStore } from "~/stores/Playback/store"; import { PlaybackControls, PlaybackSettings } from "~/stores/Playback/actions"; @@ -21,7 +14,7 @@ export function RepeatButton({ size = "lg" }: { size?: ButtonSize }) { return ( s.shuffle); return ( s.isPlaying); return ( PlaybackControls.playToggle()} className={cn("bg-primary px-6 py-2 active:bg-primaryDim", { @@ -70,7 +63,7 @@ export function NextButton({ size = "lg" }: { size?: ButtonSize }) { const { t } = useTranslation(); return ( PlaybackControls.next()} size={size} @@ -83,7 +76,7 @@ export function PreviousButton({ size = "lg" }: { size?: ButtonSize }) { const { t } = useTranslation(); return ( displayPause diff --git a/mobile/src/modules/media/components/Track.tsx b/mobile/src/modules/media/components/Track.tsx index 3c3f3ab5e..3806efd16 100644 --- a/mobile/src/modules/media/components/Track.tsx +++ b/mobile/src/modules/media/components/Track.tsx @@ -1,9 +1,6 @@ import { useMemo } from "react"; import { useTranslation } from "react-i18next"; -import { Favorite } from "~/resources/icons/Favorite"; -import { MoreVert } from "~/resources/icons/MoreVert"; -import { QueueMusic } from "~/resources/icons/QueueMusic"; import { useTrackFavoriteStatus, useToggleTrackInPlaylist, @@ -71,13 +68,13 @@ export function TrackAction(props: { id: string; title: string }) { {quickFavorite ? : null} {quickAddQueue ? ( Queue.add({ id: props.id, name: props.title })} /> ) : null} presentTrackSheet(props.id)} /> @@ -95,10 +92,9 @@ export function FavoriteButton(props: { id: string; size?: ButtonSize }) { return ( mutateGuard(toggleInPlaylist, FavoritesPlaylistKey)} - alternative={isFav} size={props.size} /> ); diff --git a/mobile/src/modules/search/components/SearchBar.tsx b/mobile/src/modules/search/components/SearchBar.tsx index 2713a6cbc..6fa2998b7 100644 --- a/mobile/src/modules/search/components/SearchBar.tsx +++ b/mobile/src/modules/search/components/SearchBar.tsx @@ -2,7 +2,6 @@ import { useTranslation } from "react-i18next"; import { View } from "react-native"; import { Icon } from "~/resources/icons"; -import { Close } from "~/resources/icons/Close"; import { IconButton } from "~/components/Form/Button/Icon"; import { TextInput, useInputRef } from "~/components/Form/Input"; @@ -28,7 +27,7 @@ export function SearchBar(props: { forSheet /> { inputRef.current?.clear(); diff --git a/mobile/src/navigation/components/BottomActions/MiniPlayer.tsx b/mobile/src/navigation/components/BottomActions/MiniPlayer.tsx index 319b41322..058af6fd9 100644 --- a/mobile/src/navigation/components/BottomActions/MiniPlayer.tsx +++ b/mobile/src/navigation/components/BottomActions/MiniPlayer.tsx @@ -16,8 +16,6 @@ import Animated, { import { useSafeAreaInsets } from "react-native-safe-area-context"; import { scheduleOnRN } from "react-native-worklets"; -import { Pause } from "~/resources/icons/Pause"; -import { PlayArrow } from "~/resources/icons/PlayArrow"; import { getArtistsString } from "~/data/artist/utils"; import { usePlaybackStore } from "~/stores/Playback/store"; import { PlaybackControls } from "~/stores/Playback/actions"; @@ -150,7 +148,7 @@ export function MiniPlayer() { > {!gestureUI ? : null} PlaybackControls.playToggle()} size="lg" diff --git a/mobile/src/navigation/components/BottomActions/NavActions.tsx b/mobile/src/navigation/components/BottomActions/NavActions.tsx index 1403f26a2..7e55210c2 100644 --- a/mobile/src/navigation/components/BottomActions/NavActions.tsx +++ b/mobile/src/navigation/components/BottomActions/NavActions.tsx @@ -12,8 +12,6 @@ import Animated, { SlideOutRight, } from "react-native-reanimated"; -import { Search } from "~/resources/icons/Search"; -import { Settings } from "~/resources/icons/Settings"; import { usePreferenceStore } from "~/stores/Preference/store"; import { useTabsByVisibility } from "~/stores/Preference/hooks"; @@ -38,7 +36,7 @@ export function SearchButton() { exiting={OnRTL.decide(SlideOutRight, SlideOutLeft)} > navigation.navigate("Search")} size="lg" @@ -59,7 +57,7 @@ export function SettingsButton() { className="relative" > navigation.navigate("Settings")} size="lg" diff --git a/mobile/src/navigation/components/CurrentListMenu.tsx b/mobile/src/navigation/components/CurrentListMenu.tsx index b18e04887..c0b6cfa13 100644 --- a/mobile/src/navigation/components/CurrentListMenu.tsx +++ b/mobile/src/navigation/components/CurrentListMenu.tsx @@ -5,7 +5,6 @@ import { useTranslation } from "react-i18next"; import type { Icon } from "~/resources/icons/type"; import { Image } from "~/resources/icons/Image"; import { LowPriority } from "~/resources/icons/LowPriority"; -import { MoreHoriz } from "~/resources/icons/MoreHoriz"; import { QueueMusic } from "~/resources/icons/QueueMusic"; import { Sort } from "~/resources/icons/Sort"; import { Queue } from "~/stores/Playback/actions"; @@ -79,7 +78,7 @@ export function CurrentListMenu(props: { visible={visible} anchor={ setVisible((prev) => !prev)} /> diff --git a/mobile/src/navigation/components/TopAppBar.tsx b/mobile/src/navigation/components/TopAppBar.tsx index ce92949a2..59b0a633c 100644 --- a/mobile/src/navigation/components/TopAppBar.tsx +++ b/mobile/src/navigation/components/TopAppBar.tsx @@ -5,8 +5,6 @@ import type { ParseKeys } from "i18next"; import { useTranslation } from "react-i18next"; import { View } from "react-native"; -import { ArrowBack } from "~/resources/icons/ArrowBack"; - import { OnRTL } from "~/lib/react"; import { FilledIconButton } from "~/components/Form/Button/Icon"; import { SafeContainer } from "~/components/SafeContainer"; @@ -22,7 +20,7 @@ export function TopAppBar({ options, route }: NativeStackHeaderProps) { navigation.goBack()} disabled={!!options.headerLeft} diff --git a/mobile/src/navigation/layouts/NScrollLayout.tsx b/mobile/src/navigation/layouts/NScrollLayout.tsx index c9eaa77b3..4072b2126 100644 --- a/mobile/src/navigation/layouts/NScrollLayout.tsx +++ b/mobile/src/navigation/layouts/NScrollLayout.tsx @@ -22,7 +22,6 @@ import Animated, { import { useSafeAreaInsets } from "react-native-safe-area-context"; import { scheduleOnUI } from "react-native-worklets"; -import { MoreHoriz } from "~/resources/icons/MoreHoriz"; import { usePreferenceStore } from "~/stores/Preference/store"; import { @@ -182,7 +181,7 @@ export function NScrollListLayout({ <> {Actions} sheetRef.current?.present()} /> diff --git a/mobile/src/navigation/screens/HomeView.tsx b/mobile/src/navigation/screens/HomeView.tsx index 2af3e3614..4fde9462c 100644 --- a/mobile/src/navigation/screens/HomeView.tsx +++ b/mobile/src/navigation/screens/HomeView.tsx @@ -1,7 +1,6 @@ import { useNavigation } from "@react-navigation/native"; import { useTranslation } from "react-i18next"; -import { History } from "~/resources/icons/History"; import { useFavoriteListsForCards } from "~/data/favorite/queries"; import { NScrollLayout } from "~/navigation/layouts/NScrollLayout"; @@ -20,7 +19,7 @@ export default function Home() { titleKey="term.home" Actions={ navigation.navigate("RecentlyPlayed")} /> diff --git a/mobile/src/navigation/screens/albums/CurrentView.tsx b/mobile/src/navigation/screens/albums/CurrentView.tsx index 1261c02ff..4bb582f0c 100644 --- a/mobile/src/navigation/screens/albums/CurrentView.tsx +++ b/mobile/src/navigation/screens/albums/CurrentView.tsx @@ -3,7 +3,6 @@ import { useMemo } from "react"; import { useTranslation } from "react-i18next"; import { View } from "react-native"; -import { Favorite } from "~/resources/icons/Favorite"; import { useAlbumForScreen, useFavoriteAlbum } from "~/data/album/queries"; import { CurrentListLayout } from "~/navigation/layouts/CurrentListLayout"; @@ -85,10 +84,9 @@ export default function Album({ Actions: ( mutateGuard(favoriteAlbum, !data.isFavorite)} - alternative={isToggled} /> ( : undefined} RightElement={ presentTrackSheet(track.id)} size="lg" @@ -144,13 +139,13 @@ function BottomAppBar({ trackId }: { trackId: string }) { present={() => sleepTimerSheetRef.current?.present()} /> navigation.navigate("Upcoming")} size="lg" /> playbackOptionsSheetRef.current?.present()} size="lg" @@ -166,7 +161,7 @@ function SleepTimerButton(props: { present: VoidFunction }) { const sleepTimerActive = useSleepTimerStore((s) => s.endAt) !== null; return ( ; return ( navigation.goBack()} size="lg" diff --git a/mobile/src/navigation/screens/now-playing/components/TopAppBar.tsx b/mobile/src/navigation/screens/now-playing/components/TopAppBar.tsx index b870282cd..67c1b8dee 100644 --- a/mobile/src/navigation/screens/now-playing/components/TopAppBar.tsx +++ b/mobile/src/navigation/screens/now-playing/components/TopAppBar.tsx @@ -4,7 +4,6 @@ import { useMemo } from "react"; import { useTranslation } from "react-i18next"; import { View } from "react-native"; -import { ArrowBack } from "~/resources/icons/ArrowBack"; import { usePlaybackStore } from "~/stores/Playback/store"; import { usePreferenceStore } from "~/stores/Preference/store"; @@ -48,7 +47,7 @@ function AppBarContent() { return ( <> navigation.goBack()} className={OnRTL._use("rotate-180")} diff --git a/mobile/src/navigation/screens/playlists/CurrentView.tsx b/mobile/src/navigation/screens/playlists/CurrentView.tsx index ac164e63f..4e3703247 100644 --- a/mobile/src/navigation/screens/playlists/CurrentView.tsx +++ b/mobile/src/navigation/screens/playlists/CurrentView.tsx @@ -5,7 +5,6 @@ import { useTranslation } from "react-i18next"; import { View } from "react-native"; import { Edit } from "~/resources/icons/Edit"; -import { Favorite } from "~/resources/icons/Favorite"; import { FileSave } from "~/resources/icons/FileSave"; import { useFavoritePlaylist, @@ -91,14 +90,13 @@ export default function Playlist({ {id !== FavoritesPlaylistKey ? ( mutateGuard(favoritePlaylist, !data.isFavorite) } - alternative={isToggled} /> ) : null} navigation.navigate("CreatePlaylist")} className="bg-primary active:bg-primaryDim" diff --git a/mobile/src/navigation/screens/playlists/components/ModifyViewBase.tsx b/mobile/src/navigation/screens/playlists/components/ModifyViewBase.tsx index 23c321849..23a031009 100644 --- a/mobile/src/navigation/screens/playlists/components/ModifyViewBase.tsx +++ b/mobile/src/navigation/screens/playlists/components/ModifyViewBase.tsx @@ -7,8 +7,6 @@ import { View } from "react-native"; import { z } from "zod/mini"; import { Icon } from "~/resources/icons"; -import { Add } from "~/resources/icons/Add"; -import { DragHandle } from "~/resources/icons/DragHandle"; import { getArtistsString } from "~/data/artist/utils"; import { usePlaylistsNames } from "~/data/playlist/queries"; import { sanitizePlaylistName } from "~/data/playlist/utils"; @@ -259,7 +257,7 @@ function ListHeaderComponent(props: { labelKey="term.tracks" RightElement={ props.onShowTrack(id)} /> diff --git a/mobile/src/navigation/screens/settings/PackageLicenseView.tsx b/mobile/src/navigation/screens/settings/PackageLicenseView.tsx index 3a07ff014..5c1ba9254 100644 --- a/mobile/src/navigation/screens/settings/PackageLicenseView.tsx +++ b/mobile/src/navigation/screens/settings/PackageLicenseView.tsx @@ -1,7 +1,6 @@ import type { StaticScreenProps } from "@react-navigation/native"; import { useTranslation } from "react-i18next"; -import { OpenInNew } from "~/resources/icons/OpenInNew"; import LicensesList from "~/resources/licenses.json"; import { openLink } from "~/lib/web-browser"; @@ -27,7 +26,7 @@ export default function PackageLicense({ ( {item} removePath(props.listType, item)} /> @@ -115,7 +112,7 @@ function FilterForm(props: { listType: FilterList; listEntries: string[] }) { forSheet /> { Keyboard.dismiss(); diff --git a/mobile/src/navigation/screens/settings/sheets/SeparatorsSheet.tsx b/mobile/src/navigation/screens/settings/sheets/SeparatorsSheet.tsx index 0f5f1da3a..b46773e10 100644 --- a/mobile/src/navigation/screens/settings/sheets/SeparatorsSheet.tsx +++ b/mobile/src/navigation/screens/settings/sheets/SeparatorsSheet.tsx @@ -4,8 +4,6 @@ import { Keyboard, View } from "react-native"; import i18next from "~/modules/i18n"; import { Icon } from "~/resources/icons"; -import { Add } from "~/resources/icons/Add"; -import { Close } from "~/resources/icons/Close"; import { preferenceStore, usePreferenceStore } from "~/stores/Preference/store"; import { FlatList } from "~/components/Base/List"; @@ -46,7 +44,7 @@ export function SeparatorsSheet(props: { ref: TrueSheetRef }) { {item} removeSeparator(item)} /> @@ -93,7 +91,7 @@ function SeparatorForm() { forSheet /> { Keyboard.dismiss(); diff --git a/mobile/src/navigation/screens/settings/sheets/TabOrderSheet.tsx b/mobile/src/navigation/screens/settings/sheets/TabOrderSheet.tsx index 669de8432..7c644a810 100644 --- a/mobile/src/navigation/screens/settings/sheets/TabOrderSheet.tsx +++ b/mobile/src/navigation/screens/settings/sheets/TabOrderSheet.tsx @@ -4,8 +4,6 @@ import { memo, useState } from "react"; import { useTranslation } from "react-i18next"; import { View } from "react-native"; -import { DragHandle } from "~/resources/icons/DragHandle"; -import { Home } from "~/resources/icons/Home"; import { usePreferenceStore } from "~/stores/Preference/store"; import { Tabs } from "~/stores/Preference/actions"; @@ -73,13 +71,12 @@ const RenderItem = memo( disabled={isDragging || isHomeTab} /> Tabs.setHome(item)} disabled={isDragging || !isVisible || isHomeTab} - alternative={isHomeTab} className={cn({ "disabled:opacity-100": !isDragging && isHomeTab, })} @@ -91,7 +88,7 @@ const RenderItem = memo( className="shrink grow px-2" /> mutateGuard(toggleInPlaylist, FavoritesPlaylistKey)} - alternative={isFav} size="md" /> TrueSheet.present("TrackToPlaylistsSheet"))} size="md" /> navigation.navigate("ModifyTrack", { id: props.data.id }), @@ -193,13 +188,13 @@ function IconActions(props: { data: Track; editArtwork: VoidFunction }) { size="md" /> mutateGuard(hideTrack, { track: props.data }), diff --git a/mobile/src/navigation/sheets/ViewOptionsSheet.tsx b/mobile/src/navigation/sheets/ViewOptionsSheet.tsx index 9edf0e085..6b4014a7f 100644 --- a/mobile/src/navigation/sheets/ViewOptionsSheet.tsx +++ b/mobile/src/navigation/sheets/ViewOptionsSheet.tsx @@ -2,9 +2,6 @@ import { useTranslation } from "react-i18next"; import { View } from "react-native"; import { Icon } from "~/resources/icons"; -import { GridView } from "~/resources/icons/GridView"; -import { ViewAgenda } from "~/resources/icons/ViewAgenda"; -import { ViewModule } from "~/resources/icons/ViewModule"; import { usePreferenceStore } from "~/stores/Preference/store"; import { PreferenceSetters } from "~/stores/Preference/actions"; import { useViewPreferenceStore } from "~/stores/ViewPreference/store"; @@ -117,9 +114,9 @@ function ViewOptionsSheetTemplate(props: { //#region Screen Layout const LayoutIconMap = { - list: ViewAgenda, - grid: GridView, - compactGrid: ViewModule, + list: "view-agenda", + grid: "grid-view", + compactGrid: "view-module", } as const; function ScreenLayoutSetting({ screen }: { screen: MutableViewLayout }) { @@ -134,7 +131,7 @@ function ScreenLayoutSetting({ screen }: { screen: MutableViewLayout }) { {LayoutOptions.map((layout) => ( ViewPreferenceSetters.setLayout(screen, layout)} _iconColor={layoutOption === layout ? "primary" : undefined} diff --git a/mobile/src/resources/icons/index.tsx b/mobile/src/resources/icons/index.tsx index 3952a8d13..dad9adbb8 100644 --- a/mobile/src/resources/icons/index.tsx +++ b/mobile/src/resources/icons/index.tsx @@ -6,10 +6,10 @@ import glyphMap from "./app-icons.glyphmap.json"; const AppIcons = createNanoIconSet(glyphMap); -export type SupportedIcoName = React.ComponentProps["name"]; +export type SupportedIconName = React.ComponentProps["name"]; type Props = { - name: SupportedIcoName; + name: SupportedIconName; /** Defaults to `24px`. */ size?: number; /** Defaults to theme's `onSurface` color. */ From 60911ff460d1f2aee8251b3667bd2790b987802a Mon Sep 17 00:00:00 2001 From: cyanChill <83375816+cyanChill@users.noreply.github.com> Date: Tue, 16 Jun 2026 17:51:06 -0400 Subject: [PATCH 13/17] chore: Replace use of `Icon` type --- .../Base/AnimatedMaterialSymbol.tsx | 17 +++++++++++--- .../src/components/Form/SegmentedPicker.tsx | 8 ++++--- mobile/src/components/Form/Slider.tsx | 7 +++--- .../audio/_components/AudioEffectSlider.tsx | 9 ++++---- .../_components/PlaybackParameterSettings.tsx | 7 ++---- .../_components/PlaybackParameterSlider.tsx | 6 ++--- .../audio/_components/VolumeSettings.tsx | 3 +-- .../navigation/components/CurrentListMenu.tsx | 19 +++++++--------- .../sheets/PlaybackOptionsSheet.tsx | 5 ++--- .../screens/playlists/CurrentView.tsx | 6 ++--- .../playlists/sheets/ExportM3USheet.tsx | 7 ++---- .../screens/tracks/sheets/TrackSheet.tsx | 22 +++++++------------ 12 files changed, 56 insertions(+), 60 deletions(-) diff --git a/mobile/src/components/Base/AnimatedMaterialSymbol.tsx b/mobile/src/components/Base/AnimatedMaterialSymbol.tsx index 097c4d969..7ddabc0bc 100644 --- a/mobile/src/components/Base/AnimatedMaterialSymbol.tsx +++ b/mobile/src/components/Base/AnimatedMaterialSymbol.tsx @@ -1,12 +1,23 @@ import Animated from "react-native-reanimated"; import { Path, Svg } from "react-native-svg"; -import type { Icon } from "~/resources/icons/type"; - +import type { AppColor } from "~/modules/customization/theme/core/constants"; import { useColor } from "~/modules/customization/theme/hooks"; const AnimatedPath = Animated.createAnimatedComponent(Path); +interface Props { + /** Defaults to `24px`. */ + size?: number; + /** Defaults to theme's `onSurface` color. */ + color?: AppColor; + /** + * Use the alternative version of the icon if available (ie: filled, animated). + * Defaults to `false`. + */ + alternative?: boolean; +} + /** * Create an Icon where setting the `alternative` prop will animate the * SVG via Reanimated's CSS SVG Animations. @@ -20,7 +31,7 @@ export function createAnimatedMaterialSymbol( size = 24, color, alternative = false, - }: Icon) { + }: Props) { const usedColor = useColor(color, "onSurface"); return ( diff --git a/mobile/src/components/Form/SegmentedPicker.tsx b/mobile/src/components/Form/SegmentedPicker.tsx index 818336a39..bda277cb9 100644 --- a/mobile/src/components/Form/SegmentedPicker.tsx +++ b/mobile/src/components/Form/SegmentedPicker.tsx @@ -5,7 +5,8 @@ import Animated, { withTiming, } from "react-native-reanimated"; -import type { Icon } from "~/resources/icons/type"; +import type { SupportedIconName } from "~/resources/icons"; +import { Icon } from "~/resources/icons"; import { OnRTLWorklet } from "~/lib/react"; import { cn } from "~/lib/style"; @@ -13,7 +14,7 @@ import { Pressable } from "../Base/Pressable"; import { Em } from "../Typography/StyledText"; export type PickerOption = { - Icon: (props: Icon) => React.JSX.Element; + icon: SupportedIconName; label: string; }; @@ -53,13 +54,14 @@ export function SegmentedPicker({ style={selectedIndicatorStyle} className="absolute top-0 left-0 h-full rounded-full bg-onSurface" /> - {options.map(({ Icon }, idx) => ( + {options.map(({ icon }, idx) => ( onOptionSelected(idx)} className="min-h-10 flex-1 items-center justify-center rounded-full active:opacity-50" > diff --git a/mobile/src/components/Form/Slider.tsx b/mobile/src/components/Form/Slider.tsx index de803d16d..e38d63bc2 100644 --- a/mobile/src/components/Form/Slider.tsx +++ b/mobile/src/components/Form/Slider.tsx @@ -20,7 +20,8 @@ import Animated, { } from "react-native-reanimated"; import { scheduleOnRN } from "react-native-worklets"; -import type { Icon } from "~/resources/icons/type"; +import type { SupportedIconName } from "~/resources/icons"; +import { Icon } from "~/resources/icons"; import { Colors } from "~/constants/Styles"; import { OnRTL } from "~/lib/react"; @@ -360,7 +361,7 @@ export const CachedSlider = memo(function CachedSlider(props: { //#region Overlay type SliderOverlayProps = { accessibilityLabelKey: ParseKeys; - Icon: (props: Icon) => React.ReactNode; + icon: SupportedIconName; formatValue: (val: number) => string; }; @@ -390,7 +391,7 @@ const SliderOverlay = memo(function SliderOverlay( { "flex-row-reverse": props.inverted }, )} > - + {formattedValue} diff --git a/mobile/src/modules/audio/_components/AudioEffectSlider.tsx b/mobile/src/modules/audio/_components/AudioEffectSlider.tsx index e7cc515e5..71f288475 100644 --- a/mobile/src/modules/audio/_components/AudioEffectSlider.tsx +++ b/mobile/src/modules/audio/_components/AudioEffectSlider.tsx @@ -1,6 +1,7 @@ import { View } from "react-native"; -import type { Icon } from "~/resources/icons/type"; +import type { SupportedIconName } from "~/resources/icons"; +import { Icon } from "~/resources/icons"; import { CachedSlider } from "~/components/Form/Slider"; import { Em } from "~/components/Typography/StyledText"; @@ -11,10 +12,10 @@ interface Props extends Omit< > { displayedValue: string; /** Optional icon that appears before the `displayedValue`. */ - Icon?: (props: Icon) => React.JSX.Element; + icon?: SupportedIconName; } -export function AudioEffectSlider({ displayedValue, Icon, ...props }: Props) { +export function AudioEffectSlider({ displayedValue, icon, ...props }: Props) { return ( - {Icon ? : null} + {icon ? : null} {displayedValue} diff --git a/mobile/src/modules/audio/_components/PlaybackParameterSettings.tsx b/mobile/src/modules/audio/_components/PlaybackParameterSettings.tsx index 2b1b21fa4..072eee3b3 100644 --- a/mobile/src/modules/audio/_components/PlaybackParameterSettings.tsx +++ b/mobile/src/modules/audio/_components/PlaybackParameterSettings.tsx @@ -1,8 +1,5 @@ import AudioBrowser from "react-native-audio-browser"; -import { SlowMotionVideo } from "~/resources/icons/SlowMotionVideo"; -import { VoiceSelection } from "~/resources/icons/VoiceSelection"; - import { SegmentedList } from "~/components/List/Segmented"; import { PlaybackParameterSlider } from "./PlaybackParameterSlider"; @@ -12,12 +9,12 @@ export function PlaybackParameterSettings() { ); diff --git a/mobile/src/modules/audio/_components/PlaybackParameterSlider.tsx b/mobile/src/modules/audio/_components/PlaybackParameterSlider.tsx index 31d13063c..32d69b221 100644 --- a/mobile/src/modules/audio/_components/PlaybackParameterSlider.tsx +++ b/mobile/src/modules/audio/_components/PlaybackParameterSlider.tsx @@ -2,7 +2,7 @@ import { memo, useCallback, useMemo } from "react"; import { View } from "react-native"; import { useSharedValue } from "react-native-reanimated"; -import type { Icon } from "~/resources/icons/type"; +import type { SupportedIconName } from "~/resources/icons"; import { sessionStore, useSessionStore } from "~/stores/Session/store"; import { capitalize } from "~/utils/string"; @@ -17,7 +17,7 @@ export const PlaybackParameterSlider = memo( function PlaybackParameterSlider(props: { field: "pitch" | "speed"; onUpdate: (value: number) => void; - Icon: (props: Icon) => React.JSX.Element; + icon: SupportedIconName; }) { const fieldName = `playback${capitalize(props.field)}` as const; const fieldNameKey = `feat.playback.extra.${props.field}` as const; @@ -59,7 +59,7 @@ export const PlaybackParameterSlider = memo( max={2} step={0.05} onChange={setField} - Icon={props.Icon} + icon={props.icon} displayedValue={`${numberFormatter.format(storedValue)}x`} /> {PresetButtons} diff --git a/mobile/src/modules/audio/_components/VolumeSettings.tsx b/mobile/src/modules/audio/_components/VolumeSettings.tsx index a6166d45b..27af7212e 100644 --- a/mobile/src/modules/audio/_components/VolumeSettings.tsx +++ b/mobile/src/modules/audio/_components/VolumeSettings.tsx @@ -3,7 +3,6 @@ import AudioBrowser from "react-native-audio-browser"; import { useAnimatedReaction, useSharedValue } from "react-native-reanimated"; import { scheduleOnRN } from "react-native-worklets"; -import { VolumeUp } from "~/resources/icons/VolumeUp"; import { playbackStore, usePlaybackStore } from "~/stores/Playback/store"; import { SegmentedList } from "~/components/List/Segmented"; @@ -39,7 +38,7 @@ export function VolumeSettings() { step={0.01} onChange={setVolume} _debounceMultiplier={5} - Icon={VolumeUp} + icon="volume-up-filled" displayedValue={`${Math.round(_volume * 100)}%`} /> diff --git a/mobile/src/navigation/components/CurrentListMenu.tsx b/mobile/src/navigation/components/CurrentListMenu.tsx index c0b6cfa13..d4440c518 100644 --- a/mobile/src/navigation/components/CurrentListMenu.tsx +++ b/mobile/src/navigation/components/CurrentListMenu.tsx @@ -2,11 +2,8 @@ import type { ParseKeys } from "i18next"; import { useMemo, useState } from "react"; import { useTranslation } from "react-i18next"; -import type { Icon } from "~/resources/icons/type"; -import { Image } from "~/resources/icons/Image"; -import { LowPriority } from "~/resources/icons/LowPriority"; -import { QueueMusic } from "~/resources/icons/QueueMusic"; -import { Sort } from "~/resources/icons/Sort"; +import type { SupportedIconName } from "~/resources/icons"; +import { Icon } from "~/resources/icons"; import { Queue } from "~/stores/Playback/actions"; import { IconButton } from "~/components/Form/Button/Icon"; @@ -14,7 +11,7 @@ import { ListItem } from "~/components/List"; import { Menu } from "~/components/Menu"; export type MenuAction = { - Icon?: (props: Icon) => React.ReactNode; + icon?: SupportedIconName; labelKey: ParseKeys; onPress: VoidFunction; }; @@ -33,12 +30,12 @@ export function CurrentListMenu(props: { const queueActions = useMemo( () => [ { - Icon: QueueMusic, + icon: "queue-music", labelKey: "feat.queue.extra.playNext", onPress: () => Queue.add({ id: props.trackIds, name: props.name }), }, { - Icon: LowPriority, + icon: "low-priority", labelKey: "feat.queue.extra.playLast", onPress: () => Queue.addToEnd({ id: props.trackIds, name: props.name }), }, @@ -51,7 +48,7 @@ export function CurrentListMenu(props: { if (props.presentArtworkSheet) { actions.push({ - Icon: Image, + icon: "image", labelKey: "feat.artwork.extra.change", onPress: props.presentArtworkSheet, }); @@ -59,7 +56,7 @@ export function CurrentListMenu(props: { if (props.presentSortOptionsSheet) { actions.push({ - Icon: Sort, + icon: "sort", labelKey: "feat.modalViewPreference.extra.sort", onPress: props.presentSortOptionsSheet, }); @@ -95,7 +92,7 @@ export function CurrentListMenu(props: { item.onPress(); setVisible(false); }} - LeftElement={item.Icon ? : null} + LeftElement={item.icon ? : null} className="px-3" _labelTextClassName="text-sm" _psuedoClassName="active:bg-surfaceContainer/50" diff --git a/mobile/src/navigation/screens/now-playing/sheets/PlaybackOptionsSheet.tsx b/mobile/src/navigation/screens/now-playing/sheets/PlaybackOptionsSheet.tsx index a5db9dbda..abd8f9586 100644 --- a/mobile/src/navigation/screens/now-playing/sheets/PlaybackOptionsSheet.tsx +++ b/mobile/src/navigation/screens/now-playing/sheets/PlaybackOptionsSheet.tsx @@ -3,7 +3,6 @@ import { useCallback, useState } from "react"; import AudioBrowser from "react-native-audio-browser"; import { Icon } from "~/resources/icons"; -import { VolumeUp } from "~/resources/icons/VolumeUp"; import { playbackStore, usePlaybackStore } from "~/stores/Playback/store"; import { usePreferenceStore } from "~/stores/Preference/store"; import { @@ -160,8 +159,8 @@ const VolumeSliderOptions = { }, overlay: { accessibilityLabelKey: "feat.playback.extra.volume" as const, - Icon: VolumeUp, + icon: "volume-up-filled", formatValue: (val: number) => `${Math.round(val * 100)}%`, }, -}; +} as const; //#endregion diff --git a/mobile/src/navigation/screens/playlists/CurrentView.tsx b/mobile/src/navigation/screens/playlists/CurrentView.tsx index 4e3703247..ca2ce5191 100644 --- a/mobile/src/navigation/screens/playlists/CurrentView.tsx +++ b/mobile/src/navigation/screens/playlists/CurrentView.tsx @@ -4,8 +4,6 @@ import { useMemo } from "react"; import { useTranslation } from "react-i18next"; import { View } from "react-native"; -import { Edit } from "~/resources/icons/Edit"; -import { FileSave } from "~/resources/icons/FileSave"; import { useFavoritePlaylist, usePlaylistForScreen, @@ -47,12 +45,12 @@ export default function Playlist({ const menuActions = useMemo( () => [ { - Icon: Edit, + icon: "edit", labelKey: "form.edit", onPress: () => navigation.navigate("ModifyPlaylist", { id }), }, { - Icon: FileSave, + icon: "file-save", labelKey: "feat.playlist.extra.m3uExport", onPress: () => exportSheetRef.current?.present(), }, diff --git a/mobile/src/navigation/screens/playlists/sheets/ExportM3USheet.tsx b/mobile/src/navigation/screens/playlists/sheets/ExportM3USheet.tsx index 3813d61eb..051edff18 100644 --- a/mobile/src/navigation/screens/playlists/sheets/ExportM3USheet.tsx +++ b/mobile/src/navigation/screens/playlists/sheets/ExportM3USheet.tsx @@ -2,9 +2,6 @@ import { toast } from "@missingcore/ui/toast"; import { useMemo, useState } from "react"; import { useTranslation } from "react-i18next"; -import { ConversionPath } from "~/resources/icons/ConversionPath"; -import { Graph1 } from "~/resources/icons/Graph1"; - import { ExtendedTButton } from "~/components/Form/Button"; import type { PickerOption } from "~/components/Form/SegmentedPicker"; import { SegmentedPicker } from "~/components/Form/SegmentedPicker"; @@ -19,8 +16,8 @@ export function ExportM3USheet(props: { ref: TrueSheetRef; id: string }) { const pickerOptions: PickerOption[] = useMemo( () => [ - { Icon: ConversionPath, label: t("feat.playlist.extra.absolute") }, - { Icon: Graph1, label: t("feat.playlist.extra.relative") }, + { icon: "conversion-path", label: t("feat.playlist.extra.absolute") }, + { icon: "graph-1", label: t("feat.playlist.extra.relative") }, ], [t], ); diff --git a/mobile/src/navigation/screens/tracks/sheets/TrackSheet.tsx b/mobile/src/navigation/screens/tracks/sheets/TrackSheet.tsx index 24637ab9e..41440ada5 100644 --- a/mobile/src/navigation/screens/tracks/sheets/TrackSheet.tsx +++ b/mobile/src/navigation/screens/tracks/sheets/TrackSheet.tsx @@ -3,11 +3,8 @@ import { useNavigation, useNavigationState } from "@react-navigation/native"; import { useTranslation } from "react-i18next"; import { View } from "react-native"; -import type { Icon } from "~/resources/icons/type"; -import { Edit } from "~/resources/icons/Edit"; -import { LowPriority } from "~/resources/icons/LowPriority"; -import { QueueMusic } from "~/resources/icons/QueueMusic"; -import { Schedule } from "~/resources/icons/Schedule"; +import type { SupportedIconName } from "~/resources/icons"; +import { Icon } from "~/resources/icons"; import { useHideTrack, useToggleTrackInPlaylist, @@ -132,7 +129,7 @@ function TrackMetadata({ data }: { data: Track }) { {abbreviateSize(data.size)} - + {formatEpoch(data.modificationTime)} @@ -145,7 +142,7 @@ function TrackMetadata({ data }: { data: Track }) { {data.format ? {data.format.toUpperCase()} : null} - {formatSeconds(data.duration)} + {formatSeconds(data.duration)} @@ -212,12 +209,12 @@ function QueueActions({ id, name }: Record<"id" | "name", string>) { leftButton={{ textKey: "feat.queue.extra.playNext", onPress: sheetAction(() => Queue.add({ id, name })), - LeftElement: , + LeftElement: , }} rightButton={{ textKey: "feat.queue.extra.playLast", onPress: sheetAction(() => Queue.addToEnd({ id, name })), - LeftElement: , + LeftElement: , }} /> ); @@ -225,13 +222,10 @@ function QueueActions({ id, name }: Record<"id" | "name", string>) { //#endregion //#region Track Sheet Helpers -function Badge(props: { - Icon?: (props: Icon) => React.JSX.Element; - children: string; -}) { +function Badge(props: { icon?: SupportedIconName; children: string }) { return ( - {props.Icon ? : null} + {props.icon ? : null} {props.children} ); From 6262a6c2f6eaa9b3cbd3b7e13a8c1e06f33c73eb Mon Sep 17 00:00:00 2001 From: cyanChill <83375816+cyanChill@users.noreply.github.com> Date: Tue, 16 Jun 2026 18:03:44 -0400 Subject: [PATCH 14/17] chore: Remove icon files - Also there were still some places where we used the icon components. --- .../components/ScanningProgressView.tsx | 17 ++++---- .../screens/settings/AppUpdateView.tsx | 6 +-- .../src/navigation/screens/settings/View.tsx | 3 +- mobile/src/resources/icons/Add.tsx | 13 ------ mobile/src/resources/icons/ArrowBack.tsx | 13 ------ mobile/src/resources/icons/Cached.tsx | 13 ------ mobile/src/resources/icons/Check.tsx | 13 ------ mobile/src/resources/icons/Close.tsx | 13 ------ mobile/src/resources/icons/ColorWand.tsx | 33 --------------- mobile/src/resources/icons/ConversionPath.tsx | 13 ------ .../src/resources/icons/CreateNewFolder.tsx | 13 ------ mobile/src/resources/icons/Delete.tsx | 13 ------ mobile/src/resources/icons/DoNotDisturbOn.tsx | 13 ------ mobile/src/resources/icons/DragHandle.tsx | 13 ------ mobile/src/resources/icons/Edit.tsx | 13 ------ mobile/src/resources/icons/Favorite.tsx | 19 --------- mobile/src/resources/icons/FileSave.tsx | 13 ------ mobile/src/resources/icons/Flask.tsx | 14 ------- mobile/src/resources/icons/Graph1.tsx | 13 ------ mobile/src/resources/icons/GridView.tsx | 13 ------ mobile/src/resources/icons/History.tsx | 13 ------ mobile/src/resources/icons/Home.tsx | 19 --------- mobile/src/resources/icons/Image.tsx | 13 ------ .../src/resources/icons/KeyboardArrowDown.tsx | 13 ------ mobile/src/resources/icons/LinkOff.tsx | 13 ------ mobile/src/resources/icons/LogoGitHub.tsx | 14 ------- mobile/src/resources/icons/LogoPlayStore.tsx | 14 ------- mobile/src/resources/icons/LowPriority.tsx | 13 ------ mobile/src/resources/icons/MoreHoriz.tsx | 13 ------ mobile/src/resources/icons/MoreVert.tsx | 13 ------ .../src/resources/icons/NothingArrowRight.tsx | 12 +++++- mobile/src/resources/icons/OpenInNew.tsx | 13 ------ mobile/src/resources/icons/Pause.tsx | 14 ------- mobile/src/resources/icons/PlayArrow.tsx | 14 ------- mobile/src/resources/icons/PlaylistAdd.tsx | 13 ------ mobile/src/resources/icons/QueueMusic.tsx | 13 ------ mobile/src/resources/icons/Remove.tsx | 13 ------ mobile/src/resources/icons/Repeat.tsx | 37 ---------------- mobile/src/resources/icons/RepeatOne.tsx | 42 ------------------- mobile/src/resources/icons/Save.tsx | 13 ------ mobile/src/resources/icons/Schedule.tsx | 13 ------ mobile/src/resources/icons/Search.tsx | 13 ------ mobile/src/resources/icons/Settings.tsx | 13 ------ mobile/src/resources/icons/Shuffle.tsx | 29 ------------- mobile/src/resources/icons/SkipNext.tsx | 14 ------- mobile/src/resources/icons/SkipPrevious.tsx | 14 ------- .../src/resources/icons/SlowMotionVideo.tsx | 13 ------ mobile/src/resources/icons/Sort.tsx | 13 ------ mobile/src/resources/icons/Timer.tsx | 13 ------ mobile/src/resources/icons/ViewAgenda.tsx | 13 ------ mobile/src/resources/icons/ViewModule.tsx | 13 ------ mobile/src/resources/icons/VisibilityOff.tsx | 14 ------- mobile/src/resources/icons/VoiceSelection.tsx | 13 ------ mobile/src/resources/icons/VolumeUp.tsx | 14 ------- mobile/src/resources/icons/Warning.tsx | 13 ------ mobile/src/resources/icons/type.ts | 13 ------ 56 files changed, 23 insertions(+), 801 deletions(-) delete mode 100644 mobile/src/resources/icons/Add.tsx delete mode 100644 mobile/src/resources/icons/ArrowBack.tsx delete mode 100644 mobile/src/resources/icons/Cached.tsx delete mode 100644 mobile/src/resources/icons/Check.tsx delete mode 100644 mobile/src/resources/icons/Close.tsx delete mode 100644 mobile/src/resources/icons/ColorWand.tsx delete mode 100644 mobile/src/resources/icons/ConversionPath.tsx delete mode 100644 mobile/src/resources/icons/CreateNewFolder.tsx delete mode 100644 mobile/src/resources/icons/Delete.tsx delete mode 100644 mobile/src/resources/icons/DoNotDisturbOn.tsx delete mode 100644 mobile/src/resources/icons/DragHandle.tsx delete mode 100644 mobile/src/resources/icons/Edit.tsx delete mode 100644 mobile/src/resources/icons/Favorite.tsx delete mode 100644 mobile/src/resources/icons/FileSave.tsx delete mode 100644 mobile/src/resources/icons/Flask.tsx delete mode 100644 mobile/src/resources/icons/Graph1.tsx delete mode 100644 mobile/src/resources/icons/GridView.tsx delete mode 100644 mobile/src/resources/icons/History.tsx delete mode 100644 mobile/src/resources/icons/Home.tsx delete mode 100644 mobile/src/resources/icons/Image.tsx delete mode 100644 mobile/src/resources/icons/KeyboardArrowDown.tsx delete mode 100644 mobile/src/resources/icons/LinkOff.tsx delete mode 100644 mobile/src/resources/icons/LogoGitHub.tsx delete mode 100644 mobile/src/resources/icons/LogoPlayStore.tsx delete mode 100644 mobile/src/resources/icons/LowPriority.tsx delete mode 100644 mobile/src/resources/icons/MoreHoriz.tsx delete mode 100644 mobile/src/resources/icons/MoreVert.tsx delete mode 100644 mobile/src/resources/icons/OpenInNew.tsx delete mode 100644 mobile/src/resources/icons/Pause.tsx delete mode 100644 mobile/src/resources/icons/PlayArrow.tsx delete mode 100644 mobile/src/resources/icons/PlaylistAdd.tsx delete mode 100644 mobile/src/resources/icons/QueueMusic.tsx delete mode 100644 mobile/src/resources/icons/Remove.tsx delete mode 100644 mobile/src/resources/icons/Repeat.tsx delete mode 100644 mobile/src/resources/icons/RepeatOne.tsx delete mode 100644 mobile/src/resources/icons/Save.tsx delete mode 100644 mobile/src/resources/icons/Schedule.tsx delete mode 100644 mobile/src/resources/icons/Search.tsx delete mode 100644 mobile/src/resources/icons/Settings.tsx delete mode 100644 mobile/src/resources/icons/Shuffle.tsx delete mode 100644 mobile/src/resources/icons/SkipNext.tsx delete mode 100644 mobile/src/resources/icons/SkipPrevious.tsx delete mode 100644 mobile/src/resources/icons/SlowMotionVideo.tsx delete mode 100644 mobile/src/resources/icons/Sort.tsx delete mode 100644 mobile/src/resources/icons/Timer.tsx delete mode 100644 mobile/src/resources/icons/ViewAgenda.tsx delete mode 100644 mobile/src/resources/icons/ViewModule.tsx delete mode 100644 mobile/src/resources/icons/VisibilityOff.tsx delete mode 100644 mobile/src/resources/icons/VoiceSelection.tsx delete mode 100644 mobile/src/resources/icons/VolumeUp.tsx delete mode 100644 mobile/src/resources/icons/Warning.tsx delete mode 100644 mobile/src/resources/icons/type.ts diff --git a/mobile/src/modules/scanning/components/ScanningProgressView.tsx b/mobile/src/modules/scanning/components/ScanningProgressView.tsx index b566fbb95..3f9625413 100644 --- a/mobile/src/modules/scanning/components/ScanningProgressView.tsx +++ b/mobile/src/modules/scanning/components/ScanningProgressView.tsx @@ -9,8 +9,8 @@ import Animated, { } from "react-native-reanimated"; import { useSafeAreaInsets } from "react-native-safe-area-context"; -import { Save } from "~/resources/icons/Save"; -import { Warning } from "~/resources/icons/Warning"; +import type { SupportedIconName } from "~/resources/icons"; +import { Icon } from "~/resources/icons"; import { useScanningProgressStore } from "../ScanningProgress"; import { CachedSlider } from "~/components/Form/Slider"; @@ -69,14 +69,14 @@ function TracksSavingProgress() { - + @@ -103,7 +103,7 @@ function ArtworkSavingProgress() { @@ -131,10 +131,13 @@ function ProgressLabel({ textKey }: { textKey: ParseKeys }) { ); } -function IconStatus(props: { Icon: typeof Save; value: string | number }) { +function IconStatus(props: { + icon: SupportedIconName; + value: string | number; +}) { return ( - + {props.value} diff --git a/mobile/src/navigation/screens/settings/AppUpdateView.tsx b/mobile/src/navigation/screens/settings/AppUpdateView.tsx index e0903bafa..eb32d9614 100644 --- a/mobile/src/navigation/screens/settings/AppUpdateView.tsx +++ b/mobile/src/navigation/screens/settings/AppUpdateView.tsx @@ -3,8 +3,6 @@ import { Text, View } from "react-native"; import Markdown from "react-native-markdown-renderer"; import { Icon } from "~/resources/icons"; -import { LogoGitHub } from "~/resources/icons/LogoGitHub"; -import { LogoPlayStore } from "~/resources/icons/LogoPlayStore"; import { usePreferenceStore } from "~/stores/Preference/store"; import { useHasNewUpdate } from "~/navigation/hooks/useHasNewUpdate"; @@ -121,13 +119,13 @@ export default function AppUpdate() { openLink(Links.SpecificRelease(release.version))} - LeftElement={} + LeftElement={} className="gap-4" /> openLink(Links.PlayStore)} - LeftElement={} + LeftElement={} className="gap-4" /> diff --git a/mobile/src/navigation/screens/settings/View.tsx b/mobile/src/navigation/screens/settings/View.tsx index 1c409a070..1a83c581b 100644 --- a/mobile/src/navigation/screens/settings/View.tsx +++ b/mobile/src/navigation/screens/settings/View.tsx @@ -2,7 +2,6 @@ import { useNavigation } from "@react-navigation/native"; import { useTranslation } from "react-i18next"; import { Icon } from "~/resources/icons"; -import { Flask } from "~/resources/icons/Flask"; import { usePreferenceStore } from "~/stores/Preference/store"; import { PreferenceTogglers } from "~/stores/Preference/actions"; @@ -104,7 +103,7 @@ export default function Settings() { navigation.navigate("ExperimentalSettings")} - LeftElement={} + LeftElement={} className="gap-4" /> diff --git a/mobile/src/resources/icons/Add.tsx b/mobile/src/resources/icons/Add.tsx deleted file mode 100644 index 7b3c549ae..000000000 --- a/mobile/src/resources/icons/Add.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function Add({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/ArrowBack.tsx b/mobile/src/resources/icons/ArrowBack.tsx deleted file mode 100644 index c2653f801..000000000 --- a/mobile/src/resources/icons/ArrowBack.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function ArrowBack({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/Cached.tsx b/mobile/src/resources/icons/Cached.tsx deleted file mode 100644 index b4f1dc74a..000000000 --- a/mobile/src/resources/icons/Cached.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function Cached({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/Check.tsx b/mobile/src/resources/icons/Check.tsx deleted file mode 100644 index 00d6e7807..000000000 --- a/mobile/src/resources/icons/Check.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function Check({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/Close.tsx b/mobile/src/resources/icons/Close.tsx deleted file mode 100644 index 768be0482..000000000 --- a/mobile/src/resources/icons/Close.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function Close({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/ColorWand.tsx b/mobile/src/resources/icons/ColorWand.tsx deleted file mode 100644 index 35c384e03..000000000 --- a/mobile/src/resources/icons/ColorWand.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import Svg, { Path, Rect } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -// From ionicons. -export function ColorWand({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - - - ); -} diff --git a/mobile/src/resources/icons/ConversionPath.tsx b/mobile/src/resources/icons/ConversionPath.tsx deleted file mode 100644 index 3e75e1c00..000000000 --- a/mobile/src/resources/icons/ConversionPath.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function ConversionPath({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/CreateNewFolder.tsx b/mobile/src/resources/icons/CreateNewFolder.tsx deleted file mode 100644 index 8b882ede9..000000000 --- a/mobile/src/resources/icons/CreateNewFolder.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function CreateNewFolder({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/Delete.tsx b/mobile/src/resources/icons/Delete.tsx deleted file mode 100644 index 75f4f6967..000000000 --- a/mobile/src/resources/icons/Delete.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function Delete({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/DoNotDisturbOn.tsx b/mobile/src/resources/icons/DoNotDisturbOn.tsx deleted file mode 100644 index 8e6646a41..000000000 --- a/mobile/src/resources/icons/DoNotDisturbOn.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function DoNotDisturbOn({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/DragHandle.tsx b/mobile/src/resources/icons/DragHandle.tsx deleted file mode 100644 index 77344cac0..000000000 --- a/mobile/src/resources/icons/DragHandle.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function DragHandle({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/Edit.tsx b/mobile/src/resources/icons/Edit.tsx deleted file mode 100644 index a89e7e850..000000000 --- a/mobile/src/resources/icons/Edit.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function Edit({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/Favorite.tsx b/mobile/src/resources/icons/Favorite.tsx deleted file mode 100644 index 1f6077985..000000000 --- a/mobile/src/resources/icons/Favorite.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function Favorite({ size = 24, alternative = false, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/FileSave.tsx b/mobile/src/resources/icons/FileSave.tsx deleted file mode 100644 index 7672d71ef..000000000 --- a/mobile/src/resources/icons/FileSave.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function FileSave({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/Flask.tsx b/mobile/src/resources/icons/Flask.tsx deleted file mode 100644 index d491115c3..000000000 --- a/mobile/src/resources/icons/Flask.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -// From ionicons. -export function Flask({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/Graph1.tsx b/mobile/src/resources/icons/Graph1.tsx deleted file mode 100644 index 5d374f707..000000000 --- a/mobile/src/resources/icons/Graph1.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function Graph1({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/GridView.tsx b/mobile/src/resources/icons/GridView.tsx deleted file mode 100644 index b42271302..000000000 --- a/mobile/src/resources/icons/GridView.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function GridView({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/History.tsx b/mobile/src/resources/icons/History.tsx deleted file mode 100644 index 9d79937ff..000000000 --- a/mobile/src/resources/icons/History.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function History({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/Home.tsx b/mobile/src/resources/icons/Home.tsx deleted file mode 100644 index da543e202..000000000 --- a/mobile/src/resources/icons/Home.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function Home({ size = 24, alternative = false, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/Image.tsx b/mobile/src/resources/icons/Image.tsx deleted file mode 100644 index 024a81810..000000000 --- a/mobile/src/resources/icons/Image.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function Image({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/KeyboardArrowDown.tsx b/mobile/src/resources/icons/KeyboardArrowDown.tsx deleted file mode 100644 index 14593b2f7..000000000 --- a/mobile/src/resources/icons/KeyboardArrowDown.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function KeyboardArrowDown({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/LinkOff.tsx b/mobile/src/resources/icons/LinkOff.tsx deleted file mode 100644 index 20177563b..000000000 --- a/mobile/src/resources/icons/LinkOff.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function LinkOff({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/LogoGitHub.tsx b/mobile/src/resources/icons/LogoGitHub.tsx deleted file mode 100644 index 155cd3289..000000000 --- a/mobile/src/resources/icons/LogoGitHub.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -// From ionicons. -export function LogoGitHub({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/LogoPlayStore.tsx b/mobile/src/resources/icons/LogoPlayStore.tsx deleted file mode 100644 index ded158d3c..000000000 --- a/mobile/src/resources/icons/LogoPlayStore.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -// From ionicons. -export function LogoPlayStore({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/LowPriority.tsx b/mobile/src/resources/icons/LowPriority.tsx deleted file mode 100644 index 865b1a629..000000000 --- a/mobile/src/resources/icons/LowPriority.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function LowPriority({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/MoreHoriz.tsx b/mobile/src/resources/icons/MoreHoriz.tsx deleted file mode 100644 index ae02bbadb..000000000 --- a/mobile/src/resources/icons/MoreHoriz.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function MoreHoriz({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/MoreVert.tsx b/mobile/src/resources/icons/MoreVert.tsx deleted file mode 100644 index fa076d1a0..000000000 --- a/mobile/src/resources/icons/MoreVert.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function MoreVert({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/NothingArrowRight.tsx b/mobile/src/resources/icons/NothingArrowRight.tsx index 231c017ba..b470c9e7a 100644 --- a/mobile/src/resources/icons/NothingArrowRight.tsx +++ b/mobile/src/resources/icons/NothingArrowRight.tsx @@ -1,10 +1,18 @@ import Svg, { Circle } from "react-native-svg"; +import type { AppColor } from "~/modules/customization/theme/core/constants"; import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; // Custom SVG made in Figma. -export function NothingArrowRight({ size = 24, color }: Icon) { +export function NothingArrowRight({ + size = 24, + color, +}: { + /** Defaults to `24px`. */ + size?: number; + /** Defaults to theme's `onSurface` color. */ + color?: AppColor; +}) { const usedColor = useColor(color, "onSurface"); return ( diff --git a/mobile/src/resources/icons/OpenInNew.tsx b/mobile/src/resources/icons/OpenInNew.tsx deleted file mode 100644 index 34fcf7d0a..000000000 --- a/mobile/src/resources/icons/OpenInNew.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function OpenInNew({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/Pause.tsx b/mobile/src/resources/icons/Pause.tsx deleted file mode 100644 index 23ee4cf15..000000000 --- a/mobile/src/resources/icons/Pause.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -// Filled -export function Pause({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/PlayArrow.tsx b/mobile/src/resources/icons/PlayArrow.tsx deleted file mode 100644 index bbc1c642d..000000000 --- a/mobile/src/resources/icons/PlayArrow.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -// Filled -export function PlayArrow({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/PlaylistAdd.tsx b/mobile/src/resources/icons/PlaylistAdd.tsx deleted file mode 100644 index af49b22b0..000000000 --- a/mobile/src/resources/icons/PlaylistAdd.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function PlaylistAdd({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/QueueMusic.tsx b/mobile/src/resources/icons/QueueMusic.tsx deleted file mode 100644 index 43706de67..000000000 --- a/mobile/src/resources/icons/QueueMusic.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function QueueMusic({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/Remove.tsx b/mobile/src/resources/icons/Remove.tsx deleted file mode 100644 index 000c24fe7..000000000 --- a/mobile/src/resources/icons/Remove.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function Remove({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/Repeat.tsx b/mobile/src/resources/icons/Repeat.tsx deleted file mode 100644 index 6dffcd7af..000000000 --- a/mobile/src/resources/icons/Repeat.tsx +++ /dev/null @@ -1,37 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -// From ionicons. -export function Repeat({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - - - ); -} diff --git a/mobile/src/resources/icons/RepeatOne.tsx b/mobile/src/resources/icons/RepeatOne.tsx deleted file mode 100644 index a40638d5a..000000000 --- a/mobile/src/resources/icons/RepeatOne.tsx +++ /dev/null @@ -1,42 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -// Custom icon based on ionicons' "Repeat" and "Calendar Number". -export function RepeatOne({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - - - - ); -} diff --git a/mobile/src/resources/icons/Save.tsx b/mobile/src/resources/icons/Save.tsx deleted file mode 100644 index 75cd58c12..000000000 --- a/mobile/src/resources/icons/Save.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function Save({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/Schedule.tsx b/mobile/src/resources/icons/Schedule.tsx deleted file mode 100644 index 5b507abcb..000000000 --- a/mobile/src/resources/icons/Schedule.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function Schedule({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/Search.tsx b/mobile/src/resources/icons/Search.tsx deleted file mode 100644 index 5ff2673e8..000000000 --- a/mobile/src/resources/icons/Search.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function Search({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/Settings.tsx b/mobile/src/resources/icons/Settings.tsx deleted file mode 100644 index e7f7fdfb6..000000000 --- a/mobile/src/resources/icons/Settings.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function Settings({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/Shuffle.tsx b/mobile/src/resources/icons/Shuffle.tsx deleted file mode 100644 index 9afe79eb1..000000000 --- a/mobile/src/resources/icons/Shuffle.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -// From ionicons. -export function Shuffle({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - - ); -} diff --git a/mobile/src/resources/icons/SkipNext.tsx b/mobile/src/resources/icons/SkipNext.tsx deleted file mode 100644 index fe8362463..000000000 --- a/mobile/src/resources/icons/SkipNext.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -// Filled -export function SkipNext({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/SkipPrevious.tsx b/mobile/src/resources/icons/SkipPrevious.tsx deleted file mode 100644 index bfa0f62d1..000000000 --- a/mobile/src/resources/icons/SkipPrevious.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -// Filled -export function SkipPrevious({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/SlowMotionVideo.tsx b/mobile/src/resources/icons/SlowMotionVideo.tsx deleted file mode 100644 index fa63337a7..000000000 --- a/mobile/src/resources/icons/SlowMotionVideo.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function SlowMotionVideo({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/Sort.tsx b/mobile/src/resources/icons/Sort.tsx deleted file mode 100644 index bbcad020d..000000000 --- a/mobile/src/resources/icons/Sort.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function Sort({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/Timer.tsx b/mobile/src/resources/icons/Timer.tsx deleted file mode 100644 index 9505e9615..000000000 --- a/mobile/src/resources/icons/Timer.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function Timer({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/ViewAgenda.tsx b/mobile/src/resources/icons/ViewAgenda.tsx deleted file mode 100644 index 636bd6865..000000000 --- a/mobile/src/resources/icons/ViewAgenda.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function ViewAgenda({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/ViewModule.tsx b/mobile/src/resources/icons/ViewModule.tsx deleted file mode 100644 index 991ddc1b5..000000000 --- a/mobile/src/resources/icons/ViewModule.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function ViewModule({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/VisibilityOff.tsx b/mobile/src/resources/icons/VisibilityOff.tsx deleted file mode 100644 index ca1164df5..000000000 --- a/mobile/src/resources/icons/VisibilityOff.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -// Filled -export function VisibilityOff({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/VoiceSelection.tsx b/mobile/src/resources/icons/VoiceSelection.tsx deleted file mode 100644 index 2c24100a3..000000000 --- a/mobile/src/resources/icons/VoiceSelection.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function VoiceSelection({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/VolumeUp.tsx b/mobile/src/resources/icons/VolumeUp.tsx deleted file mode 100644 index 2fbfa15b0..000000000 --- a/mobile/src/resources/icons/VolumeUp.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -// Filled -export function VolumeUp({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/Warning.tsx b/mobile/src/resources/icons/Warning.tsx deleted file mode 100644 index b8acc2850..000000000 --- a/mobile/src/resources/icons/Warning.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Svg, { Path } from "react-native-svg"; - -import { useColor } from "~/modules/customization/theme/hooks"; -import type { Icon } from "./type"; - -export function Warning({ size = 24, color }: Icon) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - ); -} diff --git a/mobile/src/resources/icons/type.ts b/mobile/src/resources/icons/type.ts deleted file mode 100644 index 9d5554194..000000000 --- a/mobile/src/resources/icons/type.ts +++ /dev/null @@ -1,13 +0,0 @@ -import type { AppColor } from "~/modules/customization/theme/core/constants"; - -export type Icon = { - /** Defaults to `24px`. */ - size?: number; - /** Defaults to theme's `onSurface` color. */ - color?: AppColor; - /** - * Use the alternative version of the icon if available (ie: filled, animated). - * Defaults to `false`. - */ - alternative?: boolean; -}; From 92cf1d3b26224639b77940359ade59508f560f44 Mon Sep 17 00:00:00 2001 From: cyanChill <83375816+cyanChill@users.noreply.github.com> Date: Tue, 16 Jun 2026 18:11:40 -0400 Subject: [PATCH 15/17] chore: Convert last icon --- .../app/src/main/assets/fonts/app-icons.ttf | Bin 14568 -> 14892 bytes mobile/assets/icons/README.md | 4 +++ .../icons/app-icons/nothing-arrow-right.svg | 7 +++++ mobile/src/components/Swipeable.tsx | 4 +-- .../src/resources/icons/NothingArrowRight.tsx | 26 ------------------ .../resources/icons/app-icons.glyphmap.json | 2 +- mobile/src/resources/icons/app-icons.ttf | Bin 14568 -> 14892 bytes 7 files changed, 14 insertions(+), 29 deletions(-) create mode 100644 mobile/assets/icons/app-icons/nothing-arrow-right.svg delete mode 100644 mobile/src/resources/icons/NothingArrowRight.tsx diff --git a/mobile/android/app/src/main/assets/fonts/app-icons.ttf b/mobile/android/app/src/main/assets/fonts/app-icons.ttf index f4f7fa5c89926849254ff6de0d46aba0cbc063fb..c02cf412a88a04412454e04dcf6b33704fc4d627 100644 GIT binary patch delta 637 zcmaD+xTd6@fsuiMfs3Jmftf+UKUm+$ULddy(<){y25|;`26u*dhH{`gMPwQIS@c=# zS&ZeG%|+NnK^#+i77zzXMjcs39a)BPH8VRWHxDm2Cp$AE3p*DNFAon0aC5LRGO}@S1I^@OX9ZbP!UPlsTFS)4 z$_cigorMvkzZgZi1&Qk6$~S+O`zS0E_+Q38p5Nvx12-g+o`qL_0|h9Eo@9J>asngE z;RmhbqT_>1_b@qZ9-6NnRR6VeiD5IQ3CMRcnn{tB9|X q@RFD#@d%u%+&9OW#4<6vGq_LQXV$~S=)T#@d>$hkYiX*bi75anUvGB+ delta 311 zcmZ2e@}jVwfsuiMfs3Jmftf+UKUm+$ULdd0xN$OFVq={c2Y zsokD+3=B*G3=9T68L5dW`rC!&7#NK10M(mi00r1zvq&;97>fY;DjB&Y6)ZpokZ%Db zCgkKNC(dH+Wdrh00Qr5ni50p9j1de!7#K_7)vmqb3$ zc?mRo4v_CNag8&h%ft`vj4qok828F<)>U{fEaUpD>}5Q^%~u9)h+WUZ({+J{F@WgF z7A9vWbDBn2F5|n#_lrM-e--~Bfmeckf=`4rgd&6`gztz5h`5M66O|LK5Pc+OBi13# jC%#UCLBb7a04QYKHqSDRWny+?aGU(gyk~QV#XLp;gsfA) diff --git a/mobile/assets/icons/README.md b/mobile/assets/icons/README.md index 3a3435f62..c6fa2ffc6 100644 --- a/mobile/assets/icons/README.md +++ b/mobile/assets/icons/README.md @@ -10,4 +10,8 @@ **Ionicons** - We use `color-wand`, `flask-filled`, `logo-github`, `logo-google-playstore`, `repeat`, and `shuffle`. + +**Custom Icons** + +- `nothing-arrow-right` - `repeat-one` is a custom icon based on Ionicons' `repeat` & `calendar-number` icons. diff --git a/mobile/assets/icons/app-icons/nothing-arrow-right.svg b/mobile/assets/icons/app-icons/nothing-arrow-right.svg new file mode 100644 index 000000000..1c4418c96 --- /dev/null +++ b/mobile/assets/icons/app-icons/nothing-arrow-right.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/mobile/src/components/Swipeable.tsx b/mobile/src/components/Swipeable.tsx index 5bb48a84e..093818363 100644 --- a/mobile/src/components/Swipeable.tsx +++ b/mobile/src/components/Swipeable.tsx @@ -4,7 +4,7 @@ import { Animated, View } from "react-native"; import { GestureDetector, usePanGesture } from "react-native-gesture-handler"; import { useSharedValue } from "react-native-reanimated"; -import { NothingArrowRight } from "~/resources/icons/NothingArrowRight"; +import { Icon } from "~/resources/icons"; import { OnRTL } from "~/lib/react"; import { cn } from "~/lib/style"; @@ -280,7 +280,7 @@ function SwipeIconWrapper(props: { function SwipeIcon({ rotate = false }) { return ( - + ); } diff --git a/mobile/src/resources/icons/NothingArrowRight.tsx b/mobile/src/resources/icons/NothingArrowRight.tsx deleted file mode 100644 index b470c9e7a..000000000 --- a/mobile/src/resources/icons/NothingArrowRight.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import Svg, { Circle } from "react-native-svg"; - -import type { AppColor } from "~/modules/customization/theme/core/constants"; -import { useColor } from "~/modules/customization/theme/hooks"; - -// Custom SVG made in Figma. -export function NothingArrowRight({ - size = 24, - color, -}: { - /** Defaults to `24px`. */ - size?: number; - /** Defaults to theme's `onSurface` color. */ - color?: AppColor; -}) { - const usedColor = useColor(color, "onSurface"); - return ( - - - - - - - - ); -} diff --git a/mobile/src/resources/icons/app-icons.glyphmap.json b/mobile/src/resources/icons/app-icons.glyphmap.json index 6c6449dcc..b3a7c0c55 100644 --- a/mobile/src/resources/icons/app-icons.glyphmap.json +++ b/mobile/src/resources/icons/app-icons.glyphmap.json @@ -1 +1 @@ -{"m":{"f":"app-icons","u":1024,"z":1020,"s":59648,"h":"2988b8cab4b549800b33786b46a337ab51da5eb27a7ed3cf25b78a46f079d739"},"i":{"activity-zone":[1024,[[59648,"#e8eaed"]]],"add":[1024,[[59649,"#e8eaed"]]],"archive":[1024,[[59650,"#e8eaed"]]],"arrow-back":[1024,[[59651,"#e8eaed"]]],"autoplay":[1024,[[59652,"#e8eaed"]]],"bar-chart-4-bars":[1024,[[59653,"#e8eaed"]]],"cached":[1024,[[59654,"#e8eaed"]]],"cancel":[1024,[[59655,"#e8eaed"]]],"check-circle":[1024,[[59656,"#e8eaed"]]],"check":[1024,[[59657,"#e8eaed"]]],"close":[1024,[[59658,"#e8eaed"]]],"color-wand":[1024,[[59659,"currentColor"],[59660,"black"],[59661,"currentColor"]]],"conversion-path":[1024,[[59662,"#e8eaed"]]],"create-new-folder":[1024,[[59663,"#e8eaed"]]],"delete":[1024,[[59664,"#e8eaed"]]],"do-not-disturb-on":[1024,[[59665,"#e8eaed"]]],"document-search":[1024,[[59666,"#e8eaed"]]],"drag-handle":[1024,[[59667,"#e8eaed"]]],"edit":[1024,[[59668,"#e8eaed"]]],"favorite-filled":[1024,[[59669,"#e8eaed"]]],"favorite":[1024,[[59670,"#e8eaed"]]],"file-save":[1024,[[59671,"#e8eaed"]]],"flask-filled":[1024,[[59672,"black"]]],"folder":[1024,[[59673,"#e8eaed"]]],"format-paint":[1024,[[59674,"#e8eaed"]]],"graph-1":[1024,[[59675,"#e8eaed"]]],"graphic-eq":[1024,[[59676,"#e8eaed"]]],"grid-view":[1024,[[59677,"#e8eaed"]]],"history":[1024,[[59678,"#e8eaed"]]],"home-filled":[1024,[[59679,"#e8eaed"]]],"home":[1024,[[59680,"#e8eaed"]]],"image":[1024,[[59681,"#e8eaed"]]],"info":[1024,[[59682,"#e8eaed"]]],"keyboard-arrow-down":[1024,[[59683,"#e8eaed"]]],"link-off":[1024,[[59684,"#e8eaed"]]],"logo-github":[1024,[[59685,"black"]]],"logo-google-playstore":[1024,[[59686,"black"]]],"low-priority":[1024,[[59687,"#e8eaed"]]],"lyrics":[1024,[[59688,"#e8eaed"]]],"mobile-arrow-down":[1024,[[59689,"#e8eaed"]]],"more-horiz":[1024,[[59690,"#e8eaed"]]],"more-vert":[1024,[[59691,"#e8eaed"]]],"open-in-new":[1024,[[59692,"#e8eaed"]]],"pause-filled":[1024,[[59693,"#e8eaed"]]],"play-arrow-filled":[1024,[[59694,"#e8eaed"]]],"playlist-add":[1024,[[59695,"#e8eaed"]]],"queue-music":[1024,[[59696,"#e8eaed"]]],"remove":[1024,[[59697,"#e8eaed"]]],"repeat-one":[1024,[[59698,"currentColor"]]],"repeat":[1024,[[59699,"currentColor"]]],"save":[1024,[[59700,"#e8eaed"]]],"schedule":[1024,[[59701,"#e8eaed"]]],"search":[1024,[[59702,"#e8eaed"]]],"settings":[1024,[[59703,"#e8eaed"]]],"shuffle":[1024,[[59704,"currentColor"]]],"skip-next-filled":[1024,[[59705,"#e8eaed"]]],"skip-previous-filled":[1024,[[59706,"#e8eaed"]]],"slow-motion-video":[1024,[[59707,"#e8eaed"]]],"sort":[1024,[[59708,"#e8eaed"]]],"timer":[1024,[[59709,"#e8eaed"]]],"translate":[1024,[[59710,"#e8eaed"]]],"view-agenda":[1024,[[59711,"#e8eaed"]]],"view-module":[1024,[[59712,"#e8eaed"]]],"visibility-off-filled":[1024,[[59713,"#e8eaed"]]],"voice-selection":[1024,[[59714,"#e8eaed"]]],"volume-up-filled":[1024,[[59715,"#e8eaed"]]],"warning":[1024,[[59716,"#e8eaed"]]]}} \ No newline at end of file +{"m":{"f":"app-icons","u":1024,"z":1020,"s":59648,"h":"cdf4ab90abf18b9e158269e6555af1190347ef9f2ff5f1b04ea415a6dea98319"},"i":{"activity-zone":[1024,[[59648,"#e8eaed"]]],"add":[1024,[[59649,"#e8eaed"]]],"archive":[1024,[[59650,"#e8eaed"]]],"arrow-back":[1024,[[59651,"#e8eaed"]]],"autoplay":[1024,[[59652,"#e8eaed"]]],"bar-chart-4-bars":[1024,[[59653,"#e8eaed"]]],"cached":[1024,[[59654,"#e8eaed"]]],"cancel":[1024,[[59655,"#e8eaed"]]],"check-circle":[1024,[[59656,"#e8eaed"]]],"check":[1024,[[59657,"#e8eaed"]]],"close":[1024,[[59658,"#e8eaed"]]],"color-wand":[1024,[[59659,"currentColor"],[59660,"black"],[59661,"currentColor"]]],"conversion-path":[1024,[[59662,"#e8eaed"]]],"create-new-folder":[1024,[[59663,"#e8eaed"]]],"delete":[1024,[[59664,"#e8eaed"]]],"do-not-disturb-on":[1024,[[59665,"#e8eaed"]]],"document-search":[1024,[[59666,"#e8eaed"]]],"drag-handle":[1024,[[59667,"#e8eaed"]]],"edit":[1024,[[59668,"#e8eaed"]]],"favorite-filled":[1024,[[59669,"#e8eaed"]]],"favorite":[1024,[[59670,"#e8eaed"]]],"file-save":[1024,[[59671,"#e8eaed"]]],"flask-filled":[1024,[[59672,"black"]]],"folder":[1024,[[59673,"#e8eaed"]]],"format-paint":[1024,[[59674,"#e8eaed"]]],"graph-1":[1024,[[59675,"#e8eaed"]]],"graphic-eq":[1024,[[59676,"#e8eaed"]]],"grid-view":[1024,[[59677,"#e8eaed"]]],"history":[1024,[[59678,"#e8eaed"]]],"home-filled":[1024,[[59679,"#e8eaed"]]],"home":[1024,[[59680,"#e8eaed"]]],"image":[1024,[[59681,"#e8eaed"]]],"info":[1024,[[59682,"#e8eaed"]]],"keyboard-arrow-down":[1024,[[59683,"#e8eaed"]]],"link-off":[1024,[[59684,"#e8eaed"]]],"logo-github":[1024,[[59685,"black"]]],"logo-google-playstore":[1024,[[59686,"black"]]],"low-priority":[1024,[[59687,"#e8eaed"]]],"lyrics":[1024,[[59688,"#e8eaed"]]],"mobile-arrow-down":[1024,[[59689,"#e8eaed"]]],"more-horiz":[1024,[[59690,"#e8eaed"]]],"more-vert":[1024,[[59691,"#e8eaed"]]],"nothing-arrow-right":[1024,[[59692,"black"]]],"open-in-new":[1024,[[59693,"#e8eaed"]]],"pause-filled":[1024,[[59694,"#e8eaed"]]],"play-arrow-filled":[1024,[[59695,"#e8eaed"]]],"playlist-add":[1024,[[59696,"#e8eaed"]]],"queue-music":[1024,[[59697,"#e8eaed"]]],"remove":[1024,[[59698,"#e8eaed"]]],"repeat-one":[1024,[[59699,"currentColor"]]],"repeat":[1024,[[59700,"currentColor"]]],"save":[1024,[[59701,"#e8eaed"]]],"schedule":[1024,[[59702,"#e8eaed"]]],"search":[1024,[[59703,"#e8eaed"]]],"settings":[1024,[[59704,"#e8eaed"]]],"shuffle":[1024,[[59705,"currentColor"]]],"skip-next-filled":[1024,[[59706,"#e8eaed"]]],"skip-previous-filled":[1024,[[59707,"#e8eaed"]]],"slow-motion-video":[1024,[[59708,"#e8eaed"]]],"sort":[1024,[[59709,"#e8eaed"]]],"timer":[1024,[[59710,"#e8eaed"]]],"translate":[1024,[[59711,"#e8eaed"]]],"view-agenda":[1024,[[59712,"#e8eaed"]]],"view-module":[1024,[[59713,"#e8eaed"]]],"visibility-off-filled":[1024,[[59714,"#e8eaed"]]],"voice-selection":[1024,[[59715,"#e8eaed"]]],"volume-up-filled":[1024,[[59716,"#e8eaed"]]],"warning":[1024,[[59717,"#e8eaed"]]]}} \ No newline at end of file diff --git a/mobile/src/resources/icons/app-icons.ttf b/mobile/src/resources/icons/app-icons.ttf index f4f7fa5c89926849254ff6de0d46aba0cbc063fb..c02cf412a88a04412454e04dcf6b33704fc4d627 100644 GIT binary patch delta 637 zcmaD+xTd6@fsuiMfs3Jmftf+UKUm+$ULddy(<){y25|;`26u*dhH{`gMPwQIS@c=# zS&ZeG%|+NnK^#+i77zzXMjcs39a)BPH8VRWHxDm2Cp$AE3p*DNFAon0aC5LRGO}@S1I^@OX9ZbP!UPlsTFS)4 z$_cigorMvkzZgZi1&Qk6$~S+O`zS0E_+Q38p5Nvx12-g+o`qL_0|h9Eo@9J>asngE z;RmhbqT_>1_b@qZ9-6NnRR6VeiD5IQ3CMRcnn{tB9|X q@RFD#@d%u%+&9OW#4<6vGq_LQXV$~S=)T#@d>$hkYiX*bi75anUvGB+ delta 311 zcmZ2e@}jVwfsuiMfs3Jmftf+UKUm+$ULdd0xN$OFVq={c2Y zsokD+3=B*G3=9T68L5dW`rC!&7#NK10M(mi00r1zvq&;97>fY;DjB&Y6)ZpokZ%Db zCgkKNC(dH+Wdrh00Qr5ni50p9j1de!7#K_7)vmqb3$ zc?mRo4v_CNag8&h%ft`vj4qok828F<)>U{fEaUpD>}5Q^%~u9)h+WUZ({+J{F@WgF z7A9vWbDBn2F5|n#_lrM-e--~Bfmeckf=`4rgd&6`gztz5h`5M66O|LK5Pc+OBi13# jC%#UCLBb7a04QYKHqSDRWny+?aGU(gyk~QV#XLp;gsfA) From d83d78fec8bf5de77e5bf65a5e88f2c12c368428 Mon Sep 17 00:00:00 2001 From: cyanChill <83375816+cyanChill@users.noreply.github.com> Date: Tue, 16 Jun 2026 21:28:40 -0400 Subject: [PATCH 16/17] chore: Have `fill` use `currentColor` to make it easier to see the icon on GitHub preview --- .../app/src/main/assets/fonts/app-icons.ttf | Bin 14892 -> 14892 bytes .../assets/icons/app-icons/activity-zone.svg | 2 +- mobile/assets/icons/app-icons/add.svg | 2 +- mobile/assets/icons/app-icons/archive.svg | 2 +- mobile/assets/icons/app-icons/arrow-back.svg | 2 +- mobile/assets/icons/app-icons/autoplay.svg | 2 +- .../icons/app-icons/bar-chart-4-bars.svg | 2 +- mobile/assets/icons/app-icons/cached.svg | 2 +- mobile/assets/icons/app-icons/cancel.svg | 2 +- .../assets/icons/app-icons/check-circle.svg | 2 +- mobile/assets/icons/app-icons/check.svg | 2 +- mobile/assets/icons/app-icons/close.svg | 2 +- .../icons/app-icons/conversion-path.svg | 2 +- .../icons/app-icons/create-new-folder.svg | 2 +- mobile/assets/icons/app-icons/delete.svg | 2 +- .../icons/app-icons/do-not-disturb-on.svg | 2 +- .../icons/app-icons/document-search.svg | 2 +- mobile/assets/icons/app-icons/drag-handle.svg | 2 +- mobile/assets/icons/app-icons/edit.svg | 2 +- .../icons/app-icons/favorite-filled.svg | 2 +- mobile/assets/icons/app-icons/favorite.svg | 2 +- mobile/assets/icons/app-icons/file-save.svg | 2 +- mobile/assets/icons/app-icons/folder.svg | 2 +- .../assets/icons/app-icons/format-paint.svg | 2 +- mobile/assets/icons/app-icons/graph-1.svg | 2 +- mobile/assets/icons/app-icons/graphic-eq.svg | 2 +- mobile/assets/icons/app-icons/grid-view.svg | 2 +- mobile/assets/icons/app-icons/history.svg | 2 +- mobile/assets/icons/app-icons/home-filled.svg | 2 +- mobile/assets/icons/app-icons/home.svg | 2 +- mobile/assets/icons/app-icons/image.svg | 2 +- mobile/assets/icons/app-icons/info.svg | 2 +- .../icons/app-icons/keyboard-arrow-down.svg | 2 +- mobile/assets/icons/app-icons/link-off.svg | 2 +- .../assets/icons/app-icons/low-priority.svg | 2 +- mobile/assets/icons/app-icons/lyrics.svg | 2 +- .../icons/app-icons/mobile-arrow-down.svg | 2 +- mobile/assets/icons/app-icons/more-horiz.svg | 2 +- mobile/assets/icons/app-icons/more-vert.svg | 2 +- mobile/assets/icons/app-icons/open-in-new.svg | 2 +- .../assets/icons/app-icons/pause-filled.svg | 2 +- .../icons/app-icons/play-arrow-filled.svg | 2 +- .../assets/icons/app-icons/playlist-add.svg | 2 +- mobile/assets/icons/app-icons/queue-music.svg | 2 +- mobile/assets/icons/app-icons/remove.svg | 2 +- mobile/assets/icons/app-icons/save.svg | 2 +- mobile/assets/icons/app-icons/schedule.svg | 2 +- mobile/assets/icons/app-icons/search.svg | 2 +- mobile/assets/icons/app-icons/settings.svg | 2 +- .../icons/app-icons/skip-next-filled.svg | 2 +- .../icons/app-icons/skip-previous-filled.svg | 2 +- .../icons/app-icons/slow-motion-video.svg | 2 +- mobile/assets/icons/app-icons/sort.svg | 2 +- mobile/assets/icons/app-icons/timer.svg | 2 +- mobile/assets/icons/app-icons/translate.svg | 2 +- mobile/assets/icons/app-icons/view-agenda.svg | 2 +- mobile/assets/icons/app-icons/view-module.svg | 2 +- .../icons/app-icons/visibility-off-filled.svg | 2 +- .../icons/app-icons/voice-selection.svg | 2 +- .../icons/app-icons/volume-up-filled.svg | 2 +- mobile/assets/icons/app-icons/warning.svg | 2 +- .../resources/icons/app-icons.glyphmap.json | 2 +- mobile/src/resources/icons/app-icons.ttf | Bin 14892 -> 14892 bytes 63 files changed, 61 insertions(+), 61 deletions(-) diff --git a/mobile/android/app/src/main/assets/fonts/app-icons.ttf b/mobile/android/app/src/main/assets/fonts/app-icons.ttf index c02cf412a88a04412454e04dcf6b33704fc4d627..fb30953491ac0457e82f8ba6e79207f4d1d7f892 100644 GIT binary patch delta 46 tcmZ2evZiE$6VucM8(nT1OaDuXkLS1f%D~OS00Pg#SLDIy%@!tKSOKBX5Rm`? delta 46 tcmZ2evZiE$6O+Y;jV?EhrT@#=$Mf5KW#DFE0D))WmEU0WW($)qtN@UK5Rm`? diff --git a/mobile/assets/icons/app-icons/activity-zone.svg b/mobile/assets/icons/app-icons/activity-zone.svg index 45992af47..54c0d99d7 100644 --- a/mobile/assets/icons/app-icons/activity-zone.svg +++ b/mobile/assets/icons/app-icons/activity-zone.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/add.svg b/mobile/assets/icons/app-icons/add.svg index c4d218198..173d00de1 100644 --- a/mobile/assets/icons/app-icons/add.svg +++ b/mobile/assets/icons/app-icons/add.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/archive.svg b/mobile/assets/icons/app-icons/archive.svg index a2f9f2962..491812a28 100644 --- a/mobile/assets/icons/app-icons/archive.svg +++ b/mobile/assets/icons/app-icons/archive.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/arrow-back.svg b/mobile/assets/icons/app-icons/arrow-back.svg index 987a9a03d..edee3a115 100644 --- a/mobile/assets/icons/app-icons/arrow-back.svg +++ b/mobile/assets/icons/app-icons/arrow-back.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/autoplay.svg b/mobile/assets/icons/app-icons/autoplay.svg index 0f790b5ce..ad10007bb 100644 --- a/mobile/assets/icons/app-icons/autoplay.svg +++ b/mobile/assets/icons/app-icons/autoplay.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/bar-chart-4-bars.svg b/mobile/assets/icons/app-icons/bar-chart-4-bars.svg index 33d8efd48..de3156f2f 100644 --- a/mobile/assets/icons/app-icons/bar-chart-4-bars.svg +++ b/mobile/assets/icons/app-icons/bar-chart-4-bars.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/cached.svg b/mobile/assets/icons/app-icons/cached.svg index 3b0eddfe3..fd6ea38be 100644 --- a/mobile/assets/icons/app-icons/cached.svg +++ b/mobile/assets/icons/app-icons/cached.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/cancel.svg b/mobile/assets/icons/app-icons/cancel.svg index f3a6cb14b..fa24b9751 100644 --- a/mobile/assets/icons/app-icons/cancel.svg +++ b/mobile/assets/icons/app-icons/cancel.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/check-circle.svg b/mobile/assets/icons/app-icons/check-circle.svg index c26b7484a..ea57c5aa0 100644 --- a/mobile/assets/icons/app-icons/check-circle.svg +++ b/mobile/assets/icons/app-icons/check-circle.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/check.svg b/mobile/assets/icons/app-icons/check.svg index 51f970b1a..4bb7f7276 100644 --- a/mobile/assets/icons/app-icons/check.svg +++ b/mobile/assets/icons/app-icons/check.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/close.svg b/mobile/assets/icons/app-icons/close.svg index bff6a38fc..ecabc15c2 100644 --- a/mobile/assets/icons/app-icons/close.svg +++ b/mobile/assets/icons/app-icons/close.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/conversion-path.svg b/mobile/assets/icons/app-icons/conversion-path.svg index eedca7443..c627f4193 100644 --- a/mobile/assets/icons/app-icons/conversion-path.svg +++ b/mobile/assets/icons/app-icons/conversion-path.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/create-new-folder.svg b/mobile/assets/icons/app-icons/create-new-folder.svg index 380b7e8f3..d11288302 100644 --- a/mobile/assets/icons/app-icons/create-new-folder.svg +++ b/mobile/assets/icons/app-icons/create-new-folder.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/delete.svg b/mobile/assets/icons/app-icons/delete.svg index 12493f47b..7c3fb4ef2 100644 --- a/mobile/assets/icons/app-icons/delete.svg +++ b/mobile/assets/icons/app-icons/delete.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/do-not-disturb-on.svg b/mobile/assets/icons/app-icons/do-not-disturb-on.svg index c334534c2..b82c521ed 100644 --- a/mobile/assets/icons/app-icons/do-not-disturb-on.svg +++ b/mobile/assets/icons/app-icons/do-not-disturb-on.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/document-search.svg b/mobile/assets/icons/app-icons/document-search.svg index 99e4bc973..b5dcd4d23 100644 --- a/mobile/assets/icons/app-icons/document-search.svg +++ b/mobile/assets/icons/app-icons/document-search.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/drag-handle.svg b/mobile/assets/icons/app-icons/drag-handle.svg index 36e3580d6..b28299ba5 100644 --- a/mobile/assets/icons/app-icons/drag-handle.svg +++ b/mobile/assets/icons/app-icons/drag-handle.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/edit.svg b/mobile/assets/icons/app-icons/edit.svg index 13d6a5402..011271717 100644 --- a/mobile/assets/icons/app-icons/edit.svg +++ b/mobile/assets/icons/app-icons/edit.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/favorite-filled.svg b/mobile/assets/icons/app-icons/favorite-filled.svg index 4b923af0f..b045be6bd 100644 --- a/mobile/assets/icons/app-icons/favorite-filled.svg +++ b/mobile/assets/icons/app-icons/favorite-filled.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/favorite.svg b/mobile/assets/icons/app-icons/favorite.svg index 6923719f3..6da9ffed7 100644 --- a/mobile/assets/icons/app-icons/favorite.svg +++ b/mobile/assets/icons/app-icons/favorite.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/file-save.svg b/mobile/assets/icons/app-icons/file-save.svg index c8e8b0168..8aa223e2e 100644 --- a/mobile/assets/icons/app-icons/file-save.svg +++ b/mobile/assets/icons/app-icons/file-save.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/folder.svg b/mobile/assets/icons/app-icons/folder.svg index 203cf2baa..8ec47477e 100644 --- a/mobile/assets/icons/app-icons/folder.svg +++ b/mobile/assets/icons/app-icons/folder.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/format-paint.svg b/mobile/assets/icons/app-icons/format-paint.svg index 801de38f0..a76e17f1e 100644 --- a/mobile/assets/icons/app-icons/format-paint.svg +++ b/mobile/assets/icons/app-icons/format-paint.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/graph-1.svg b/mobile/assets/icons/app-icons/graph-1.svg index b43ec3a98..aba824694 100644 --- a/mobile/assets/icons/app-icons/graph-1.svg +++ b/mobile/assets/icons/app-icons/graph-1.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/graphic-eq.svg b/mobile/assets/icons/app-icons/graphic-eq.svg index d2b0985cd..a9bd72a84 100644 --- a/mobile/assets/icons/app-icons/graphic-eq.svg +++ b/mobile/assets/icons/app-icons/graphic-eq.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/grid-view.svg b/mobile/assets/icons/app-icons/grid-view.svg index ee265af1e..2c0610d82 100644 --- a/mobile/assets/icons/app-icons/grid-view.svg +++ b/mobile/assets/icons/app-icons/grid-view.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/history.svg b/mobile/assets/icons/app-icons/history.svg index 1df300375..36a8b806c 100644 --- a/mobile/assets/icons/app-icons/history.svg +++ b/mobile/assets/icons/app-icons/history.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/home-filled.svg b/mobile/assets/icons/app-icons/home-filled.svg index 9bf2398c0..69303c929 100644 --- a/mobile/assets/icons/app-icons/home-filled.svg +++ b/mobile/assets/icons/app-icons/home-filled.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/home.svg b/mobile/assets/icons/app-icons/home.svg index e962a71f5..48c699bac 100644 --- a/mobile/assets/icons/app-icons/home.svg +++ b/mobile/assets/icons/app-icons/home.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/image.svg b/mobile/assets/icons/app-icons/image.svg index d74027e6e..da57fc039 100644 --- a/mobile/assets/icons/app-icons/image.svg +++ b/mobile/assets/icons/app-icons/image.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/info.svg b/mobile/assets/icons/app-icons/info.svg index 410368d5a..145b237ee 100644 --- a/mobile/assets/icons/app-icons/info.svg +++ b/mobile/assets/icons/app-icons/info.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/keyboard-arrow-down.svg b/mobile/assets/icons/app-icons/keyboard-arrow-down.svg index fa477c2d7..77353ee2f 100644 --- a/mobile/assets/icons/app-icons/keyboard-arrow-down.svg +++ b/mobile/assets/icons/app-icons/keyboard-arrow-down.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/link-off.svg b/mobile/assets/icons/app-icons/link-off.svg index ddea8577e..16928fbaa 100644 --- a/mobile/assets/icons/app-icons/link-off.svg +++ b/mobile/assets/icons/app-icons/link-off.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/low-priority.svg b/mobile/assets/icons/app-icons/low-priority.svg index 7cb3ea138..f18ad3a37 100644 --- a/mobile/assets/icons/app-icons/low-priority.svg +++ b/mobile/assets/icons/app-icons/low-priority.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/lyrics.svg b/mobile/assets/icons/app-icons/lyrics.svg index beacb9c83..36bf586ab 100644 --- a/mobile/assets/icons/app-icons/lyrics.svg +++ b/mobile/assets/icons/app-icons/lyrics.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/mobile-arrow-down.svg b/mobile/assets/icons/app-icons/mobile-arrow-down.svg index ace967abb..dec7cd9b6 100644 --- a/mobile/assets/icons/app-icons/mobile-arrow-down.svg +++ b/mobile/assets/icons/app-icons/mobile-arrow-down.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/more-horiz.svg b/mobile/assets/icons/app-icons/more-horiz.svg index 637450fa3..dd29484ef 100644 --- a/mobile/assets/icons/app-icons/more-horiz.svg +++ b/mobile/assets/icons/app-icons/more-horiz.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/more-vert.svg b/mobile/assets/icons/app-icons/more-vert.svg index 6d8a86d75..5027b9344 100644 --- a/mobile/assets/icons/app-icons/more-vert.svg +++ b/mobile/assets/icons/app-icons/more-vert.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/open-in-new.svg b/mobile/assets/icons/app-icons/open-in-new.svg index 706a849e7..31bb26d66 100644 --- a/mobile/assets/icons/app-icons/open-in-new.svg +++ b/mobile/assets/icons/app-icons/open-in-new.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/pause-filled.svg b/mobile/assets/icons/app-icons/pause-filled.svg index a918853f0..d75951eac 100644 --- a/mobile/assets/icons/app-icons/pause-filled.svg +++ b/mobile/assets/icons/app-icons/pause-filled.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/play-arrow-filled.svg b/mobile/assets/icons/app-icons/play-arrow-filled.svg index 16da7a170..7057f908f 100644 --- a/mobile/assets/icons/app-icons/play-arrow-filled.svg +++ b/mobile/assets/icons/app-icons/play-arrow-filled.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/playlist-add.svg b/mobile/assets/icons/app-icons/playlist-add.svg index e609f7c38..bd82ac5f8 100644 --- a/mobile/assets/icons/app-icons/playlist-add.svg +++ b/mobile/assets/icons/app-icons/playlist-add.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/queue-music.svg b/mobile/assets/icons/app-icons/queue-music.svg index bfe68969f..dbb87193c 100644 --- a/mobile/assets/icons/app-icons/queue-music.svg +++ b/mobile/assets/icons/app-icons/queue-music.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/remove.svg b/mobile/assets/icons/app-icons/remove.svg index 973ac2454..acdb03c24 100644 --- a/mobile/assets/icons/app-icons/remove.svg +++ b/mobile/assets/icons/app-icons/remove.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/save.svg b/mobile/assets/icons/app-icons/save.svg index fb6adcdf9..26114b498 100644 --- a/mobile/assets/icons/app-icons/save.svg +++ b/mobile/assets/icons/app-icons/save.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/schedule.svg b/mobile/assets/icons/app-icons/schedule.svg index f4d47ef73..de104f7df 100644 --- a/mobile/assets/icons/app-icons/schedule.svg +++ b/mobile/assets/icons/app-icons/schedule.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/search.svg b/mobile/assets/icons/app-icons/search.svg index fc2d2ea5f..44c8f17ec 100644 --- a/mobile/assets/icons/app-icons/search.svg +++ b/mobile/assets/icons/app-icons/search.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/settings.svg b/mobile/assets/icons/app-icons/settings.svg index a346949e9..4a7d57f1f 100644 --- a/mobile/assets/icons/app-icons/settings.svg +++ b/mobile/assets/icons/app-icons/settings.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/skip-next-filled.svg b/mobile/assets/icons/app-icons/skip-next-filled.svg index 0bbb8e2ed..3876c9629 100644 --- a/mobile/assets/icons/app-icons/skip-next-filled.svg +++ b/mobile/assets/icons/app-icons/skip-next-filled.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/skip-previous-filled.svg b/mobile/assets/icons/app-icons/skip-previous-filled.svg index e3238560b..c36eaa093 100644 --- a/mobile/assets/icons/app-icons/skip-previous-filled.svg +++ b/mobile/assets/icons/app-icons/skip-previous-filled.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/slow-motion-video.svg b/mobile/assets/icons/app-icons/slow-motion-video.svg index b82f0ca5b..3c59986a9 100644 --- a/mobile/assets/icons/app-icons/slow-motion-video.svg +++ b/mobile/assets/icons/app-icons/slow-motion-video.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/sort.svg b/mobile/assets/icons/app-icons/sort.svg index 81a6109c7..77e977ffa 100644 --- a/mobile/assets/icons/app-icons/sort.svg +++ b/mobile/assets/icons/app-icons/sort.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/timer.svg b/mobile/assets/icons/app-icons/timer.svg index bdf42e01b..715bc76b5 100644 --- a/mobile/assets/icons/app-icons/timer.svg +++ b/mobile/assets/icons/app-icons/timer.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/translate.svg b/mobile/assets/icons/app-icons/translate.svg index 02ec2e62e..bc1e590ec 100644 --- a/mobile/assets/icons/app-icons/translate.svg +++ b/mobile/assets/icons/app-icons/translate.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/view-agenda.svg b/mobile/assets/icons/app-icons/view-agenda.svg index 62e18f41f..be9611fb6 100644 --- a/mobile/assets/icons/app-icons/view-agenda.svg +++ b/mobile/assets/icons/app-icons/view-agenda.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/view-module.svg b/mobile/assets/icons/app-icons/view-module.svg index 28966a614..74e0cf062 100644 --- a/mobile/assets/icons/app-icons/view-module.svg +++ b/mobile/assets/icons/app-icons/view-module.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/visibility-off-filled.svg b/mobile/assets/icons/app-icons/visibility-off-filled.svg index c638b1b5e..98eb56002 100644 --- a/mobile/assets/icons/app-icons/visibility-off-filled.svg +++ b/mobile/assets/icons/app-icons/visibility-off-filled.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/voice-selection.svg b/mobile/assets/icons/app-icons/voice-selection.svg index 4882ca168..5d846d57c 100644 --- a/mobile/assets/icons/app-icons/voice-selection.svg +++ b/mobile/assets/icons/app-icons/voice-selection.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/volume-up-filled.svg b/mobile/assets/icons/app-icons/volume-up-filled.svg index 9f8b9c5c0..78b41df48 100644 --- a/mobile/assets/icons/app-icons/volume-up-filled.svg +++ b/mobile/assets/icons/app-icons/volume-up-filled.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/assets/icons/app-icons/warning.svg b/mobile/assets/icons/app-icons/warning.svg index fac914b4e..5741f6600 100644 --- a/mobile/assets/icons/app-icons/warning.svg +++ b/mobile/assets/icons/app-icons/warning.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/mobile/src/resources/icons/app-icons.glyphmap.json b/mobile/src/resources/icons/app-icons.glyphmap.json index b3a7c0c55..1abbecd54 100644 --- a/mobile/src/resources/icons/app-icons.glyphmap.json +++ b/mobile/src/resources/icons/app-icons.glyphmap.json @@ -1 +1 @@ -{"m":{"f":"app-icons","u":1024,"z":1020,"s":59648,"h":"cdf4ab90abf18b9e158269e6555af1190347ef9f2ff5f1b04ea415a6dea98319"},"i":{"activity-zone":[1024,[[59648,"#e8eaed"]]],"add":[1024,[[59649,"#e8eaed"]]],"archive":[1024,[[59650,"#e8eaed"]]],"arrow-back":[1024,[[59651,"#e8eaed"]]],"autoplay":[1024,[[59652,"#e8eaed"]]],"bar-chart-4-bars":[1024,[[59653,"#e8eaed"]]],"cached":[1024,[[59654,"#e8eaed"]]],"cancel":[1024,[[59655,"#e8eaed"]]],"check-circle":[1024,[[59656,"#e8eaed"]]],"check":[1024,[[59657,"#e8eaed"]]],"close":[1024,[[59658,"#e8eaed"]]],"color-wand":[1024,[[59659,"currentColor"],[59660,"black"],[59661,"currentColor"]]],"conversion-path":[1024,[[59662,"#e8eaed"]]],"create-new-folder":[1024,[[59663,"#e8eaed"]]],"delete":[1024,[[59664,"#e8eaed"]]],"do-not-disturb-on":[1024,[[59665,"#e8eaed"]]],"document-search":[1024,[[59666,"#e8eaed"]]],"drag-handle":[1024,[[59667,"#e8eaed"]]],"edit":[1024,[[59668,"#e8eaed"]]],"favorite-filled":[1024,[[59669,"#e8eaed"]]],"favorite":[1024,[[59670,"#e8eaed"]]],"file-save":[1024,[[59671,"#e8eaed"]]],"flask-filled":[1024,[[59672,"black"]]],"folder":[1024,[[59673,"#e8eaed"]]],"format-paint":[1024,[[59674,"#e8eaed"]]],"graph-1":[1024,[[59675,"#e8eaed"]]],"graphic-eq":[1024,[[59676,"#e8eaed"]]],"grid-view":[1024,[[59677,"#e8eaed"]]],"history":[1024,[[59678,"#e8eaed"]]],"home-filled":[1024,[[59679,"#e8eaed"]]],"home":[1024,[[59680,"#e8eaed"]]],"image":[1024,[[59681,"#e8eaed"]]],"info":[1024,[[59682,"#e8eaed"]]],"keyboard-arrow-down":[1024,[[59683,"#e8eaed"]]],"link-off":[1024,[[59684,"#e8eaed"]]],"logo-github":[1024,[[59685,"black"]]],"logo-google-playstore":[1024,[[59686,"black"]]],"low-priority":[1024,[[59687,"#e8eaed"]]],"lyrics":[1024,[[59688,"#e8eaed"]]],"mobile-arrow-down":[1024,[[59689,"#e8eaed"]]],"more-horiz":[1024,[[59690,"#e8eaed"]]],"more-vert":[1024,[[59691,"#e8eaed"]]],"nothing-arrow-right":[1024,[[59692,"black"]]],"open-in-new":[1024,[[59693,"#e8eaed"]]],"pause-filled":[1024,[[59694,"#e8eaed"]]],"play-arrow-filled":[1024,[[59695,"#e8eaed"]]],"playlist-add":[1024,[[59696,"#e8eaed"]]],"queue-music":[1024,[[59697,"#e8eaed"]]],"remove":[1024,[[59698,"#e8eaed"]]],"repeat-one":[1024,[[59699,"currentColor"]]],"repeat":[1024,[[59700,"currentColor"]]],"save":[1024,[[59701,"#e8eaed"]]],"schedule":[1024,[[59702,"#e8eaed"]]],"search":[1024,[[59703,"#e8eaed"]]],"settings":[1024,[[59704,"#e8eaed"]]],"shuffle":[1024,[[59705,"currentColor"]]],"skip-next-filled":[1024,[[59706,"#e8eaed"]]],"skip-previous-filled":[1024,[[59707,"#e8eaed"]]],"slow-motion-video":[1024,[[59708,"#e8eaed"]]],"sort":[1024,[[59709,"#e8eaed"]]],"timer":[1024,[[59710,"#e8eaed"]]],"translate":[1024,[[59711,"#e8eaed"]]],"view-agenda":[1024,[[59712,"#e8eaed"]]],"view-module":[1024,[[59713,"#e8eaed"]]],"visibility-off-filled":[1024,[[59714,"#e8eaed"]]],"voice-selection":[1024,[[59715,"#e8eaed"]]],"volume-up-filled":[1024,[[59716,"#e8eaed"]]],"warning":[1024,[[59717,"#e8eaed"]]]}} \ No newline at end of file +{"m":{"f":"app-icons","u":1024,"z":1020,"s":59648,"h":"f51a72f575cf96a591fdf81fd88bcad2755b2347bcd98e583f53bc562153a41e"},"i":{"activity-zone":[1024,[[59648,"currentColor"]]],"add":[1024,[[59649,"currentColor"]]],"archive":[1024,[[59650,"currentColor"]]],"arrow-back":[1024,[[59651,"currentColor"]]],"autoplay":[1024,[[59652,"currentColor"]]],"bar-chart-4-bars":[1024,[[59653,"currentColor"]]],"cached":[1024,[[59654,"currentColor"]]],"cancel":[1024,[[59655,"currentColor"]]],"check-circle":[1024,[[59656,"currentColor"]]],"check":[1024,[[59657,"currentColor"]]],"close":[1024,[[59658,"currentColor"]]],"color-wand":[1024,[[59659,"currentColor"],[59660,"black"],[59661,"currentColor"]]],"conversion-path":[1024,[[59662,"currentColor"]]],"create-new-folder":[1024,[[59663,"currentColor"]]],"delete":[1024,[[59664,"currentColor"]]],"do-not-disturb-on":[1024,[[59665,"currentColor"]]],"document-search":[1024,[[59666,"currentColor"]]],"drag-handle":[1024,[[59667,"currentColor"]]],"edit":[1024,[[59668,"currentColor"]]],"favorite-filled":[1024,[[59669,"currentColor"]]],"favorite":[1024,[[59670,"currentColor"]]],"file-save":[1024,[[59671,"currentColor"]]],"flask-filled":[1024,[[59672,"black"]]],"folder":[1024,[[59673,"currentColor"]]],"format-paint":[1024,[[59674,"currentColor"]]],"graph-1":[1024,[[59675,"currentColor"]]],"graphic-eq":[1024,[[59676,"currentColor"]]],"grid-view":[1024,[[59677,"currentColor"]]],"history":[1024,[[59678,"currentColor"]]],"home-filled":[1024,[[59679,"currentColor"]]],"home":[1024,[[59680,"currentColor"]]],"image":[1024,[[59681,"currentColor"]]],"info":[1024,[[59682,"currentColor"]]],"keyboard-arrow-down":[1024,[[59683,"currentColor"]]],"link-off":[1024,[[59684,"currentColor"]]],"logo-github":[1024,[[59685,"black"]]],"logo-google-playstore":[1024,[[59686,"black"]]],"low-priority":[1024,[[59687,"currentColor"]]],"lyrics":[1024,[[59688,"currentColor"]]],"mobile-arrow-down":[1024,[[59689,"currentColor"]]],"more-horiz":[1024,[[59690,"currentColor"]]],"more-vert":[1024,[[59691,"currentColor"]]],"nothing-arrow-right":[1024,[[59692,"black"]]],"open-in-new":[1024,[[59693,"currentColor"]]],"pause-filled":[1024,[[59694,"currentColor"]]],"play-arrow-filled":[1024,[[59695,"currentColor"]]],"playlist-add":[1024,[[59696,"currentColor"]]],"queue-music":[1024,[[59697,"currentColor"]]],"remove":[1024,[[59698,"currentColor"]]],"repeat-one":[1024,[[59699,"currentColor"]]],"repeat":[1024,[[59700,"currentColor"]]],"save":[1024,[[59701,"currentColor"]]],"schedule":[1024,[[59702,"currentColor"]]],"search":[1024,[[59703,"currentColor"]]],"settings":[1024,[[59704,"currentColor"]]],"shuffle":[1024,[[59705,"currentColor"]]],"skip-next-filled":[1024,[[59706,"currentColor"]]],"skip-previous-filled":[1024,[[59707,"currentColor"]]],"slow-motion-video":[1024,[[59708,"currentColor"]]],"sort":[1024,[[59709,"currentColor"]]],"timer":[1024,[[59710,"currentColor"]]],"translate":[1024,[[59711,"currentColor"]]],"view-agenda":[1024,[[59712,"currentColor"]]],"view-module":[1024,[[59713,"currentColor"]]],"visibility-off-filled":[1024,[[59714,"currentColor"]]],"voice-selection":[1024,[[59715,"currentColor"]]],"volume-up-filled":[1024,[[59716,"currentColor"]]],"warning":[1024,[[59717,"currentColor"]]]}} \ No newline at end of file diff --git a/mobile/src/resources/icons/app-icons.ttf b/mobile/src/resources/icons/app-icons.ttf index c02cf412a88a04412454e04dcf6b33704fc4d627..fb30953491ac0457e82f8ba6e79207f4d1d7f892 100644 GIT binary patch delta 46 tcmZ2evZiE$6VucM8(nT1OaDuXkLS1f%D~OS00Pg#SLDIy%@!tKSOKBX5Rm`? delta 46 tcmZ2evZiE$6O+Y;jV?EhrT@#=$Mf5KW#DFE0D))WmEU0WW($)qtN@UK5Rm`? From 2002a4c6164abb1034944e84cdd85352b3065726 Mon Sep 17 00:00:00 2001 From: cyanChill <83375816+cyanChill@users.noreply.github.com> Date: Tue, 16 Jun 2026 21:37:32 -0400 Subject: [PATCH 17/17] fix: Accessibility label --- mobile/src/components/Form/NumberStepper.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mobile/src/components/Form/NumberStepper.tsx b/mobile/src/components/Form/NumberStepper.tsx index 931f97423..582ee87c2 100644 --- a/mobile/src/components/Form/NumberStepper.tsx +++ b/mobile/src/components/Form/NumberStepper.tsx @@ -45,7 +45,7 @@ export const NumberStepper = memo(function NumberStepper({