diff --git a/components.d.ts b/components.d.ts index 229d28d..bbce252 100644 --- a/components.d.ts +++ b/components.d.ts @@ -12,29 +12,21 @@ export {} /* prettier-ignore */ declare module 'vue' { export interface GlobalComponents { - Divider: typeof import('./src/components/divider/index.vue')['default'] - ExploreContainer: typeof import('./src/components/ExploreContainer.vue')['default'] + IMaterialIconThemeGoogle: typeof import('~icons/material-icon-theme/google')['default'] IonApp: typeof import('@ionic/vue')['IonApp'] - IonBackButton: typeof import('@ionic/vue')['IonBackButton'] IonButton: typeof import('@ionic/vue')['IonButton'] IonButtons: typeof import('@ionic/vue')['IonButtons'] - IonCheckbox: typeof import('@ionic/vue')['IonCheckbox'] IonContent: typeof import('@ionic/vue')['IonContent'] IonHeader: typeof import('@ionic/vue')['IonHeader'] IonIcon: typeof import('@ionic/vue')['IonIcon'] - IonInput: typeof import('@ionic/vue')['IonInput'] IonInputOtp: typeof import('@ionic/vue')['IonInputOtp'] IonItem: typeof import('@ionic/vue')['IonItem'] - IonItemDivider: typeof import('@ionic/vue')['IonItemDivider'] - IonItemGroup: typeof import('@ionic/vue')['IonItemGroup'] IonLabel: typeof import('@ionic/vue')['IonLabel'] - IonNote: typeof import('@ionic/vue')['IonNote'] IonPage: typeof import('@ionic/vue')['IonPage'] IonRouterOutlet: typeof import('@ionic/vue')['IonRouterOutlet'] IonTabBar: typeof import('@ionic/vue')['IonTabBar'] IonTabButton: typeof import('@ionic/vue')['IonTabButton'] IonTabs: typeof import('@ionic/vue')['IonTabs'] - IonText: typeof import('@ionic/vue')['IonText'] IonTitle: typeof import('@ionic/vue')['IonTitle'] IonToolbar: typeof import('@ionic/vue')['IonToolbar'] LayoutDefault: typeof import('./src/components/layout/default.vue')['default'] @@ -47,29 +39,21 @@ declare module 'vue' { // For TSX support declare global { - const Divider: typeof import('./src/components/divider/index.vue')['default'] - const ExploreContainer: typeof import('./src/components/ExploreContainer.vue')['default'] + const IMaterialIconThemeGoogle: typeof import('~icons/material-icon-theme/google')['default'] const IonApp: typeof import('@ionic/vue')['IonApp'] - const IonBackButton: typeof import('@ionic/vue')['IonBackButton'] const IonButton: typeof import('@ionic/vue')['IonButton'] const IonButtons: typeof import('@ionic/vue')['IonButtons'] - const IonCheckbox: typeof import('@ionic/vue')['IonCheckbox'] const IonContent: typeof import('@ionic/vue')['IonContent'] const IonHeader: typeof import('@ionic/vue')['IonHeader'] const IonIcon: typeof import('@ionic/vue')['IonIcon'] - const IonInput: typeof import('@ionic/vue')['IonInput'] const IonInputOtp: typeof import('@ionic/vue')['IonInputOtp'] const IonItem: typeof import('@ionic/vue')['IonItem'] - const IonItemDivider: typeof import('@ionic/vue')['IonItemDivider'] - const IonItemGroup: typeof import('@ionic/vue')['IonItemGroup'] const IonLabel: typeof import('@ionic/vue')['IonLabel'] - const IonNote: typeof import('@ionic/vue')['IonNote'] const IonPage: typeof import('@ionic/vue')['IonPage'] const IonRouterOutlet: typeof import('@ionic/vue')['IonRouterOutlet'] const IonTabBar: typeof import('@ionic/vue')['IonTabBar'] const IonTabButton: typeof import('@ionic/vue')['IonTabButton'] const IonTabs: typeof import('@ionic/vue')['IonTabs'] - const IonText: typeof import('@ionic/vue')['IonText'] const IonTitle: typeof import('@ionic/vue')['IonTitle'] const IonToolbar: typeof import('@ionic/vue')['IonToolbar'] const LayoutDefault: typeof import('./src/components/layout/default.vue')['default'] diff --git a/package.json b/package.json index 04559ce..c0d59c0 100644 --- a/package.json +++ b/package.json @@ -31,6 +31,9 @@ "devDependencies": { "@antfu/eslint-config": "^6.6.1", "@capacitor/cli": "8.0.0", + "@iconify-json/ic": "^1.2.4", + "@iconify-json/material-icon-theme": "^1.2.44", + "@iconify/vue": "^5.0.0", "@types/node": "^24.10.2", "@vitejs/plugin-legacy": "^7.2.1", "@vitejs/plugin-vue": "^6.0.2", @@ -48,6 +51,7 @@ "terser": "^5.44.1", "typescript": "~5.9.3", "unplugin-auto-import": "^20.3.0", + "unplugin-icons": "^22.5.0", "unplugin-vue-components": "^30.0.0", "vite": "^7.2.7", "vitest": "^4.0.15", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7d0b73e..cb4e7f5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -54,6 +54,15 @@ importers: '@capacitor/cli': specifier: 8.0.0 version: 8.0.0 + '@iconify-json/ic': + specifier: ^1.2.4 + version: 1.2.4 + '@iconify-json/material-icon-theme': + specifier: ^1.2.44 + version: 1.2.44 + '@iconify/vue': + specifier: ^5.0.0 + version: 5.0.0(vue@3.5.25(typescript@5.9.3)) '@types/node': specifier: ^24.10.2 version: 24.10.2 @@ -105,6 +114,9 @@ importers: unplugin-auto-import: specifier: ^20.3.0 version: 20.3.0(@vueuse/core@14.1.0(vue@3.5.25(typescript@5.9.3))) + unplugin-icons: + specifier: ^22.5.0 + version: 22.5.0(@vue/compiler-sfc@3.5.25) unplugin-vue-components: specifier: ^30.0.0 version: 30.0.0(@babel/parser@7.28.5)(vue@3.5.25(typescript@5.9.3)) @@ -1050,6 +1062,23 @@ packages: resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} + '@iconify-json/ic@1.2.4': + resolution: {integrity: sha512-pzPMmrZrBQuwT7nmtrYdkttun8KalRGgZPIL1Ny9KpF2zjRGIUPN+npTfuD3lrgO/OnSwAoJWuekQwBpt/Cqrw==} + + '@iconify-json/material-icon-theme@1.2.44': + resolution: {integrity: sha512-fw6hluIUX2rudZucEBevvKHHnR7GQOyjHHXUXRJsv8KmdHqxsV7JPPUlNnVO/eAELuXjM+UgtuAeRE9WlCPHog==} + + '@iconify/types@2.0.0': + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + + '@iconify/utils@3.1.0': + resolution: {integrity: sha512-Zlzem1ZXhI1iHeeERabLNzBHdOa4VhQbqAcOQaMKuTuyZCpwKbC2R4Dd0Zo3g9EAc+Y4fiarO8HIHRAth7+skw==} + + '@iconify/vue@5.0.0': + resolution: {integrity: sha512-C+KuEWIF5nSBrobFJhT//JS87OZ++QDORB6f2q2Wm6fl2mueSTpFBeBsveK0KW9hWiZ4mNiPjsh6Zs4jjdROSg==} + peerDependencies: + vue: '>=3' + '@ionic/cli-framework-output@2.2.8': resolution: {integrity: sha512-TshtaFQsovB4NWRBydbNFawql6yul7d5bMiW1WYYf17hd99V6xdDdk3vtF51bw6sLkxON3bDQpWsnUc9/hVo3g==} engines: {node: '>=16.0.0'} @@ -3835,6 +3864,29 @@ packages: '@vueuse/core': optional: true + unplugin-icons@22.5.0: + resolution: {integrity: sha512-MBlMtT5RuMYZy4TZgqUL2OTtOdTUVsS1Mhj6G1pEzMlFJlEnq6mhUfoIt45gBWxHcsOdXJDWLg3pRZ+YmvAVWQ==} + peerDependencies: + '@svgr/core': '>=7.0.0' + '@svgx/core': ^1.0.1 + '@vue/compiler-sfc': ^3.0.2 || ^2.7.0 + svelte: ^3.0.0 || ^4.0.0 || ^5.0.0 + vue-template-compiler: ^2.6.12 + vue-template-es2015-compiler: ^1.9.0 + peerDependenciesMeta: + '@svgr/core': + optional: true + '@svgx/core': + optional: true + '@vue/compiler-sfc': + optional: true + svelte: + optional: true + vue-template-compiler: + optional: true + vue-template-es2015-compiler: + optional: true + unplugin-utils@0.3.1: resolution: {integrity: sha512-5lWVjgi6vuHhJ526bI4nlCOmkCIF3nnfXkCMDeMJrtdvxTs6ZFCM8oNufGTsDbKv/tJ/xj8RpvXjRuPBZJuJog==} engines: {node: '>=20.19.0'} @@ -5167,6 +5219,27 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} + '@iconify-json/ic@1.2.4': + dependencies: + '@iconify/types': 2.0.0 + + '@iconify-json/material-icon-theme@1.2.44': + dependencies: + '@iconify/types': 2.0.0 + + '@iconify/types@2.0.0': {} + + '@iconify/utils@3.1.0': + dependencies: + '@antfu/install-pkg': 1.1.0 + '@iconify/types': 2.0.0 + mlly: 1.8.0 + + '@iconify/vue@5.0.0(vue@3.5.25(typescript@5.9.3))': + dependencies: + '@iconify/types': 2.0.0 + vue: 3.5.25(typescript@5.9.3) + '@ionic/cli-framework-output@2.2.8': dependencies: '@ionic/utils-terminal': 2.3.5 @@ -8277,6 +8350,18 @@ snapshots: optionalDependencies: '@vueuse/core': 14.1.0(vue@3.5.25(typescript@5.9.3)) + unplugin-icons@22.5.0(@vue/compiler-sfc@3.5.25): + dependencies: + '@antfu/install-pkg': 1.1.0 + '@iconify/utils': 3.1.0 + debug: 4.4.3(supports-color@8.1.1) + local-pkg: 1.1.2 + unplugin: 2.3.11 + optionalDependencies: + '@vue/compiler-sfc': 3.5.25 + transitivePeerDependencies: + - supports-color + unplugin-utils@0.3.1: dependencies: pathe: 2.0.3 diff --git a/src/auth/components/verify-code.vue b/src/auth/components/verify-code.vue index d7a31af..ad159c1 100644 --- a/src/auth/components/verify-code.vue +++ b/src/auth/components/verify-code.vue @@ -2,6 +2,7 @@ import type { AuthUserSignup } from "../type"; import { toastController } from "@ionic/vue"; import { logoGoogle, phonePortraitOutline } from "ionicons/icons"; +import MaterialIconThemeGoogle from "~icons/material-icon-theme/google"; import { emailPattern } from "@/utils"; import { authClient } from ".."; diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts index 11f02fe..ab11073 100644 --- a/src/vite-env.d.ts +++ b/src/vite-env.d.ts @@ -1 +1,2 @@ /// +/// diff --git a/vite.config.ts b/vite.config.ts index 792e078..84eba91 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -4,6 +4,8 @@ import vue from "@vitejs/plugin-vue"; import jsx from "@vitejs/plugin-vue-jsx"; import dotenv from "dotenv"; import autoImport from "unplugin-auto-import/vite"; +import iconsResolver from "unplugin-icons/resolver"; +import icons from "unplugin-icons/vite"; import { IonicResolver } from "unplugin-vue-components/resolvers"; import components from "unplugin-vue-components/vite"; import { defineConfig } from "vite"; @@ -25,7 +27,10 @@ export default defineConfig({ }), components({ directoryAsNamespace: true, - resolvers: [IonicResolver()], + resolvers: [IonicResolver(), iconsResolver({ prefix: "i" })], + }), + icons({ + autoInstall: true, }), ], resolve: {