From 72ff454c906a2e43d40f7f9139e0aaaf38f076d6 Mon Sep 17 00:00:00 2001 From: adonis Date: Thu, 6 Aug 2026 17:12:57 +0330 Subject: [PATCH] fix some bugs --- .env | 1 + .env.example | 1 + env.d.ts | 1 + package-lock.json | 1158 ++++++- package.json | 5 + src/App.vue | 47 +- src/assets/styles/app-shell.css | 11 + src/assets/styles/main.css | 104 +- src/assets/styles/responsive.css | 4 +- src/components/BasicPacks/BasicIcon.vue | 82 + .../BasicPacks/tools/icons/icons.json | 67 + src/components/icons/IconBell.vue | 31 +- src/components/icons/IconBolt.vue | 25 +- src/components/icons/IconBuilding.vue | 32 +- src/components/icons/IconCart.vue | 29 +- src/components/icons/IconCash.vue | 37 +- src/components/icons/IconCashSettlement.vue | 31 +- src/components/icons/IconCatalog.vue | 30 +- src/components/icons/IconCheckBook.vue | 30 +- .../icons/IconCheckCircleOutline.vue | 28 +- src/components/icons/IconChevronBack.vue | 27 +- src/components/icons/IconChevronLeft.vue | 27 +- src/components/icons/IconClipboardEmpty.vue | 76 +- src/components/icons/IconDiamond.vue | 30 +- src/components/icons/IconEditPen.vue | 39 +- src/components/icons/IconFamBaftLogo.vue | 15 +- src/components/icons/IconFeather.vue | 37 +- src/components/icons/IconFilter.vue | 26 +- src/components/icons/IconHeadset.vue | 27 +- src/components/icons/IconHome.vue | 26 +- src/components/icons/IconHourglass.vue | 27 +- src/components/icons/IconIdCard.vue | 22 +- src/components/icons/IconLayoutGrid.vue | 24 +- src/components/icons/IconLightbulb.vue | 37 +- src/components/icons/IconLock.vue | 26 +- src/components/icons/IconMail.vue | 21 +- src/components/icons/IconMapPin.vue | 26 +- src/components/icons/IconMoreVertical.vue | 24 +- src/components/icons/IconOrders.vue | 40 +- src/components/icons/IconParLogo.vue | 16 +- src/components/icons/IconPhone.vue | 25 +- src/components/icons/IconProfile.vue | 27 +- src/components/icons/IconProgressClock.vue | 28 +- src/components/icons/IconSearch.vue | 31 +- src/components/icons/IconSettings.vue | 26 +- src/components/icons/IconShoppingBag.vue | 31 +- src/components/icons/IconSuccessCircle.vue | 28 +- src/components/icons/IconTrash.vue | 47 +- src/components/icons/IconVerified.vue | 27 +- src/components/layout/BottomNav.vue | 48 +- src/components/layout/PageHeader.vue | 4 +- src/components/orders/OrderStatusHero.vue | 2 +- .../orders/OrderTrackingSummary.vue | 4 +- .../orders/OrderTrackingTimeline.vue | 15 +- src/components/ui/BaseBadge.vue | 2 +- src/components/ui/BaseInput.vue | 55 +- src/components/ui/EmptyState.vue | 80 +- src/components/ui/FilterTabs.vue | 13 +- src/components/ui/PersianDateInput.vue | 2 +- src/components/ui/SearchField.vue | 2 +- src/composables/useCartPage.ts | 4 +- src/composables/useOrderList.ts | 62 +- src/composables/useProductOrdering.ts | 29 +- src/main.ts | 7 +- src/router/index.ts | 8 +- src/services/authService.ts | 179 +- src/services/http.ts | 83 + src/stores/auth.ts | 20 +- src/stores/cart.ts | 301 +- src/stores/catalog.ts | 99 +- src/stores/order.ts | 275 +- src/stores/theme.ts | 34 + src/types/index.ts | 1 + src/utils/checkRass.ts | 41 +- src/utils/format.ts | 24 +- src/utils/jalali.ts | 13 +- src/utils/validation.ts | 3 +- src/views/OrdersView.vue | 14 +- src/views/auth/LoginView.vue | 95 +- src/views/auth/OtpView.vue | 271 +- src/views/auth/RegisterView.vue | 45 +- src/views/cart/CartView.vue | 80 +- src/views/cart/components/MobileCartPage.vue | 45 +- src/views/catalogs/CatalogListView.vue | 58 +- src/views/checkout/CashSettlementView.vue | 60 +- src/views/checkout/CheckFormView.vue | 2 +- src/views/checkout/CheckListView.vue | 60 +- src/views/checkout/CheckModeSelectView.vue | 5 +- src/views/checkout/SettlementTypeView.vue | 3 +- src/views/companies/CompanySelectView.vue | 46 +- .../components/MobileCompanySelect.vue | 14 +- src/views/orders/OrderDetailView.vue | 72 +- .../orders/components/DesktopOrdersPage.vue | 2 +- .../orders/components/MobileOrdersPage.vue | 139 +- .../components/DesktopProductPage.vue | 13 +- .../products/components/MobileProductPage.vue | 22 +- src/views/profile/ProfileDisplayView.vue | 242 +- src/views/profile/ProfileEditView.vue | 8 +- .../profile/components/DesktopProfilePage.vue | 2 +- .../profile/components/MobileProfilePage.vue | 31 +- uno.config.ts | 33 + vite.config.ts | 2 + yarn.lock | 2688 +++++++++++++++++ 103 files changed, 6506 insertions(+), 1573 deletions(-) create mode 100644 .env create mode 100644 .env.example create mode 100644 src/components/BasicPacks/BasicIcon.vue create mode 100644 src/components/BasicPacks/tools/icons/icons.json create mode 100644 src/services/http.ts create mode 100644 src/stores/theme.ts create mode 100644 uno.config.ts create mode 100644 yarn.lock diff --git a/.env b/.env new file mode 100644 index 0000000..e07617f --- /dev/null +++ b/.env @@ -0,0 +1 @@ +VITE_API_BASE_URL=https://parche.montech.ir/server/api diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..e07617f --- /dev/null +++ b/.env.example @@ -0,0 +1 @@ +VITE_API_BASE_URL=https://parche.montech.ir/server/api diff --git a/env.d.ts b/env.d.ts index 11f02fe..a1b07af 100644 --- a/env.d.ts +++ b/env.d.ts @@ -1 +1,2 @@ /// +/// diff --git a/package-lock.json b/package-lock.json index a3b0773..6367dd5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,13 +8,18 @@ "name": "fabric-trade", "version": "0.0.0", "dependencies": { + "@unocss/vite": "^66.7.5", + "@vueuse/core": "^14.4.0", "jalaali-js": "^2.0.0", + "lodash-es": "^4.18.1", "pinia": "^4.0.2", + "unocss": "^66.7.5", "vue": "^3.5.40", "vue-router": "^5.2.0" }, "devDependencies": { "@tsconfig/node24": "^24.0.4", + "@types/lodash-es": "^4.17.12", "@types/node": "^24.13.3", "@vitejs/plugin-vue": "^6.0.8", "@vitejs/plugin-vue-jsx": "^5.1.6", @@ -38,6 +43,19 @@ "node": "^22.18.0 || >=24.12.0" } }, + "node_modules/@antfu/install-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@antfu/install-pkg/-/install-pkg-1.1.0.tgz", + "integrity": "sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==", + "license": "MIT", + "dependencies": { + "package-manager-detector": "^1.3.0", + "tinyexec": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, "node_modules/@babel/code-frame": { "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", @@ -687,6 +705,23 @@ "url": "https://github.com/sponsors/nzakas" } }, + "node_modules/@iconify/types": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/@iconify/types/-/types-2.0.0.tgz", + "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", + "license": "MIT" + }, + "node_modules/@iconify/utils": { + "version": "3.1.4", + "resolved": "https://registry.npmmirror.com/@iconify/utils/-/utils-3.1.4.tgz", + "integrity": "sha512-b1S7B1k9ohZ+iNTi2ATxbRYG9fTrJmUT0rc46bvVnNxqNRGW7dyo/vRREwyniI5IRN2RSJHDcm+s3BjWrSAjHw==", + "license": "MIT", + "dependencies": { + "@antfu/install-pkg": "^1.1.0", + "@iconify/types": "^2.0.0", + "import-meta-resolve": "^4.2.0" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.13", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", @@ -736,7 +771,6 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.2.2.tgz", "integrity": "sha512-JfB4kuJQjaoHuCTseIINHtHWeJnvgEcxjwA5t/Y00ZgaOO1Crz3fjT/p8kT28zA/Caz7oiUMn3d6H2yOVCVwuw==", - "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -792,6 +826,383 @@ "node": ">= 8" } }, + "node_modules/@oxc-parser/binding-android-arm-eabi": { + "version": "0.131.0", + "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-android-arm-eabi/-/binding-android-arm-eabi-0.131.0.tgz", + "integrity": "sha512-t2xicr9pfzkSRYx5aPqZqlLaayIwJTqgQ81Jor31Xep2nGyL2Aq3d0K5wOfeR7VevaSdxaS9dzSQP9xDwn8fDg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-android-arm64": { + "version": "0.131.0", + "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-android-arm64/-/binding-android-arm64-0.131.0.tgz", + "integrity": "sha512-nlGIod6gw75x1aEDgLS+srj+JRGY0HHm9MI9YgzE/B64l6d6+H3MSP9NOgp0+HTg8tp4vV9rVfgQGgd+TfVZcA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-darwin-arm64": { + "version": "0.131.0", + "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-darwin-arm64/-/binding-darwin-arm64-0.131.0.tgz", + "integrity": "sha512-jukuV6xe5RbQKFo7QD34NDCLDZp4PSOm8rmckhNdH/60ymG5zXbDzGBEyc+nTkuLQNama2aSGCt+CPfpjNTqyw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-darwin-x64": { + "version": "0.131.0", + "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-darwin-x64/-/binding-darwin-x64-0.131.0.tgz", + "integrity": "sha512-g3JOo4khe9rslHm5WYaVDWb0HS/M1MLR3I9S8560MkKIcC96VQY00QjOlsuRyfSj/JDXj8i9T7ryPO2RidiXVg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-freebsd-x64": { + "version": "0.131.0", + "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-freebsd-x64/-/binding-freebsd-x64-0.131.0.tgz", + "integrity": "sha512-1hziITDTxjMePnX+dR9ocVT+EuZkQ8wm4FPAbmbEiKG+Phbo73J1ZnPAA6Y/aGsWF3McOFnQuZIktAFwalkfJQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-arm-gnueabihf": { + "version": "0.131.0", + "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.131.0.tgz", + "integrity": "sha512-9uRxfXwyKG9+MwmGQBo2ncPNwZH5HTmCETFM2WiuDBNDCW4NC5ttSQkwCAMrTAWgwMzVBH1CP8pM0v7nebCWXQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-arm-musleabihf": { + "version": "0.131.0", + "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.131.0.tgz", + "integrity": "sha512-mgbLvzRShXOLBdWGInf08Af4q+pfj1xD8hSgLClDZ9of/BXkB6+LIhTH7fihiDUipqB3yoSkKBWaZ3Ejlf5Yag==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-arm64-gnu": { + "version": "0.131.0", + "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.131.0.tgz", + "integrity": "sha512-OPT8++4aN6j2GJ8+3IZHS/byXoZP4aSBn+FoG6rgBJ2fKwPKXWF3MqrFMNW7NKHM28FLY579xYLxJSfgobEqPA==", + "cpu": [ + "arm64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-arm64-musl": { + "version": "0.131.0", + "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.131.0.tgz", + "integrity": "sha512-vtPiwmfVTAXzaxDKsOXG+LwgRAA7WEnaeHzhS5z0GE89gAK18KSXnly7Z6saXXq6L3dVMyK44uoTI03zKxrpmw==", + "cpu": [ + "arm64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-ppc64-gnu": { + "version": "0.131.0", + "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-0.131.0.tgz", + "integrity": "sha512-8AW8L7w5cGHSdZPcyZX2yR0+GUODsT15rbRjfdD54rv6DMbtuEB19ysLOpKJlRGfH6UNYNpCHaU1uJWgTWf1/w==", + "cpu": [ + "ppc64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-riscv64-gnu": { + "version": "0.131.0", + "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.131.0.tgz", + "integrity": "sha512-vvpjkjEOUsPcsYf8evE4MO3aGx9+3wodXEBOicGNnOwTuAik8eBONNkgSdhkGsAblQmfVHJyanRnpxglddTXIA==", + "cpu": [ + "riscv64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-riscv64-musl": { + "version": "0.131.0", + "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-0.131.0.tgz", + "integrity": "sha512-AqmcNC3fClXX+fxQ6VGEN1667xVFiRBkY0CZmDMSiaeFUsv1+UkBPYYi48IUKcA9/ivvoKNRzQl2I4//kT9F/w==", + "cpu": [ + "riscv64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-s390x-gnu": { + "version": "0.131.0", + "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.131.0.tgz", + "integrity": "sha512-7d3jOMKy7RSQCcDLIci+ySll2FgsOMl/GiRux4q2JNv0zg4EdhFISa9idvrdN/HEUIQQJNg6dmveUeJl2YErGA==", + "cpu": [ + "s390x" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-x64-gnu": { + "version": "0.131.0", + "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.131.0.tgz", + "integrity": "sha512-JHK/h95qVqVQ+ITER837kcTdwBDFpFaNnOTYGCP0zdUSX/mLKC7tXOoyrTb6vG7iRPwGlcgBil3v2IjYw1FqJA==", + "cpu": [ + "x64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-x64-musl": { + "version": "0.131.0", + "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-linux-x64-musl/-/binding-linux-x64-musl-0.131.0.tgz", + "integrity": "sha512-b2BO82O8azXAyf7EUgOPKu145nWypbNyk07HbU09fkzhm9lEA5oPvaN/M8Nlo7tOErVTa2WOgS4QbOnxAPXdDQ==", + "cpu": [ + "x64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-openharmony-arm64": { + "version": "0.131.0", + "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-openharmony-arm64/-/binding-openharmony-arm64-0.131.0.tgz", + "integrity": "sha512-GHO9glZaX7LkX/OGfluEPf1yjg+ehiFbUdowbX6uNWOQhmwKWU4m4+nZ9FJkrHNKuxyI1KKertMdGjVKCApKWA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-wasm32-wasi": { + "version": "0.131.0", + "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-wasm32-wasi/-/binding-wasm32-wasi-0.131.0.tgz", + "integrity": "sha512-3SkikPaEFoih1N83qLVEDLRLeY4nYsf6JT9SnWiMCQ5lGQdKup6bEuKCqkRiG9dD1IIaFeYz9RjlciPmYoFIWA==", + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "1.10.0", + "@emnapi/runtime": "1.10.0", + "@napi-rs/wasm-runtime": "^1.1.4" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-wasm32-wasi/node_modules/@emnapi/core": { + "version": "1.10.0", + "resolved": "https://registry.npmmirror.com/@emnapi/core/-/core-1.10.0.tgz", + "integrity": "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==", + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.2.1", + "tslib": "^2.4.0" + } + }, + "node_modules/@oxc-parser/binding-wasm32-wasi/node_modules/@emnapi/runtime": { + "version": "1.10.0", + "resolved": "https://registry.npmmirror.com/@emnapi/runtime/-/runtime-1.10.0.tgz", + "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@oxc-parser/binding-wasm32-wasi/node_modules/@emnapi/wasi-threads": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz", + "integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@oxc-parser/binding-win32-arm64-msvc": { + "version": "0.131.0", + "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.131.0.tgz", + "integrity": "sha512-Os5bEhryeA2jkH+ZrnZyAC1EP5gs+X4YB1Fjqml7UPD5kU7ecsK1MPEVMfCrdt/GDNpDbavYXiOXOdyJ5b3OPw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-win32-ia32-msvc": { + "version": "0.131.0", + "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-0.131.0.tgz", + "integrity": "sha512-m+jNz9EuF0NXoiptc6B9h5yompZQVW/a5MJeOu5zojfH5yWk82tvF2ccrHkfhgtrS9h9DD5l1Qv8dWlfY7Nz8g==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-win32-x64-msvc": { + "version": "0.131.0", + "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.131.0.tgz", + "integrity": "sha512-o14Hk8dAyiEUMFEWEgmAwFZvBt1RzAYLM3xeQ+5315JXgVYhoemivgYcbYVRbsFkS71ShMGlAFE0kPnr460rww==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, "node_modules/@oxc-project/types": { "version": "0.142.0", "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.142.0.tgz", @@ -1129,7 +1540,34 @@ "version": "1.0.0-next.29", "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz", "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==", - "dev": true, + "license": "MIT" + }, + "node_modules/@quansync/fs": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/@quansync/fs/-/fs-1.0.0.tgz", + "integrity": "sha512-4TJ3DFtlf1L5LDMaM6CanJ/0lckGNtJcMjQ1NAV6zDmA0tEHKZtxNKin8EgPaVX1YzljbxckyT2tJrpQKAtngQ==", + "license": "MIT", + "dependencies": { + "quansync": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + } + }, + "node_modules/@quansync/fs/node_modules/quansync": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/quansync/-/quansync-1.0.0.tgz", + "integrity": "sha512-5xZacEEufv3HSTPQuchrvV6soaiACMFnq1H8wkVioctoH3TRha9Sz66lOxRwPK/qZj7HPiSveih9yAyh98gvqA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/antfu" + }, + { + "type": "individual", + "url": "https://github.com/sponsors/sxzz" + } + ], "license": "MIT" }, "node_modules/@rolldown/binding-android-arm64": { @@ -1404,7 +1842,6 @@ "version": "0.10.3", "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.3.tgz", "integrity": "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==", - "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -1422,7 +1859,6 @@ "version": "1.0.9", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", - "dev": true, "license": "MIT" }, "node_modules/@types/jsesc": { @@ -1438,6 +1874,23 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/lodash": { + "version": "4.17.25", + "resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.17.25.tgz", + "integrity": "sha512-+K1NIO8I+F9/wNulfVvu23QYd0Pe9/OCqRrim4NoYIf1VoEDL90Ve4ClzpyqBLc7NpGGWRvYNCKZ1BE/Jpf8dQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/lodash-es": { + "version": "4.17.12", + "resolved": "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.12.tgz", + "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/lodash": "*" + } + }, "node_modules/@types/node": { "version": "24.13.3", "resolved": "https://registry.npmjs.org/@types/node/-/node-24.13.3.tgz", @@ -1448,6 +1901,12 @@ "undici-types": "~7.18.0" } }, + "node_modules/@types/web-bluetooth": { + "version": "0.0.21", + "resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.21.tgz", + "integrity": "sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==", + "license": "MIT" + }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "8.65.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.65.0.tgz", @@ -1704,6 +2163,301 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/@unocss/cli": { + "version": "66.7.5", + "resolved": "https://registry.npmmirror.com/@unocss/cli/-/cli-66.7.5.tgz", + "integrity": "sha512-fgWkECRn2LGVo9sEpmjk/KJ3NSKUDitaZCNrJcEYM93DG+ELriTHcL+VWBlF4rcZf9fdGlq1nKbbRHUZirFCHQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "@unocss/config": "66.7.5", + "@unocss/core": "66.7.5", + "@unocss/preset-wind3": "66.7.5", + "@unocss/preset-wind4": "66.7.5", + "@unocss/transformer-directives": "66.7.5", + "cac": "^7.0.0", + "chokidar": "^5.0.0", + "colorette": "^2.0.20", + "consola": "^3.4.2", + "magic-string": "^0.30.21", + "pathe": "^2.0.3", + "perfect-debounce": "^2.1.0", + "tinyglobby": "^0.2.17", + "unplugin-utils": "^0.3.1" + }, + "bin": { + "unocss": "bin/unocss.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/config": { + "version": "66.7.5", + "resolved": "https://registry.npmmirror.com/@unocss/config/-/config-66.7.5.tgz", + "integrity": "sha512-dkPl9glhEahJ+Xoja5ZseKKnH+vZaeaKQzg8b0otcKcPPNrHQgu1nu3QgfeOjnXOGrjZIotHwUeVtt4ZA2Skgg==", + "license": "MIT", + "dependencies": { + "@unocss/core": "66.7.5", + "colorette": "^2.0.20", + "consola": "^3.4.2", + "unconfig": "^7.5.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/core": { + "version": "66.7.5", + "resolved": "https://registry.npmmirror.com/@unocss/core/-/core-66.7.5.tgz", + "integrity": "sha512-UdJb8MiMywcau8QrWEVgUAz0kvoFHyR+sACwYCgmBh/BpKJGyR/zw/Ys3wvysbm0f+i/20VGBex/QQxYVlzdyQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/extractor-arbitrary-variants": { + "version": "66.7.5", + "resolved": "https://registry.npmmirror.com/@unocss/extractor-arbitrary-variants/-/extractor-arbitrary-variants-66.7.5.tgz", + "integrity": "sha512-5zOkbnLIJc8E749qNjLXfPHl3FdHloop12h706/ojr6idK4ix0KLm43R//uLnphixCehdHJRuHnavnM4C/kQbA==", + "license": "MIT", + "dependencies": { + "@unocss/core": "66.7.5" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/inspector": { + "version": "66.7.5", + "resolved": "https://registry.npmmirror.com/@unocss/inspector/-/inspector-66.7.5.tgz", + "integrity": "sha512-WmTJMnj8bmRxvw/wGeShmL2eEHr2/L0BdGTXSxhfzwcO8y5XZEbBmVciLcM7pqaTXQ6JY4+KnITrDUf1urjZxQ==", + "license": "MIT", + "dependencies": { + "@unocss/core": "66.7.5", + "@unocss/rule-utils": "66.7.5", + "colorette": "^2.0.20", + "gzip-size": "^6.0.0", + "sirv": "^3.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-attributify": { + "version": "66.7.5", + "resolved": "https://registry.npmmirror.com/@unocss/preset-attributify/-/preset-attributify-66.7.5.tgz", + "integrity": "sha512-1Oi1Cp81pqYJwG3h4+OlP5A0FKyaa07MFBXaXc4Yr3faiTbsI8SKj2TqnZCb+NQvBsEqslEd+jKXGZ3lKzCVOQ==", + "license": "MIT", + "dependencies": { + "@unocss/core": "66.7.5" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-icons": { + "version": "66.7.5", + "resolved": "https://registry.npmmirror.com/@unocss/preset-icons/-/preset-icons-66.7.5.tgz", + "integrity": "sha512-ZsxadWnGGtHdANTikuMnjkQaT1qwUFJHZBF4fzVsPMnUiiKGs8rzXukwM9w3Gi9ontM7nbG2FYi9clWETSlpFg==", + "license": "MIT", + "dependencies": { + "@iconify/utils": "^3.1.3", + "@unocss/core": "66.7.5", + "ofetch": "^1.5.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-mini": { + "version": "66.7.5", + "resolved": "https://registry.npmmirror.com/@unocss/preset-mini/-/preset-mini-66.7.5.tgz", + "integrity": "sha512-o37TSl4ecT0dKu+3/TYuTYht75h82SEwDNl476m9ve0KW4Pv1O2tT/9TWd7N5cutEpySr8/YtjMwtWBD+drxBg==", + "license": "MIT", + "dependencies": { + "@unocss/core": "66.7.5", + "@unocss/extractor-arbitrary-variants": "66.7.5", + "@unocss/rule-utils": "66.7.5" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-tagify": { + "version": "66.7.5", + "resolved": "https://registry.npmmirror.com/@unocss/preset-tagify/-/preset-tagify-66.7.5.tgz", + "integrity": "sha512-/8YB1tXVi+WmNKPhsCdtO1xnQKEkshSnWDp6AbvVP3f6qOF7adlMYpAt3kpWCoVUBsfOQ06ZQlnfricMjObyoQ==", + "license": "MIT", + "dependencies": { + "@unocss/core": "66.7.5" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-typography": { + "version": "66.7.5", + "resolved": "https://registry.npmmirror.com/@unocss/preset-typography/-/preset-typography-66.7.5.tgz", + "integrity": "sha512-2dxC8LT9KYa29UZT4muDFl7DbIXvKktTfeSMbUGMdZKbHcuMtKSP2U52wti1PL5I9duqp4v+8G33EeVutGTUaQ==", + "license": "MIT", + "dependencies": { + "@unocss/core": "66.7.5", + "@unocss/rule-utils": "66.7.5" + } + }, + "node_modules/@unocss/preset-uno": { + "version": "66.7.5", + "resolved": "https://registry.npmmirror.com/@unocss/preset-uno/-/preset-uno-66.7.5.tgz", + "integrity": "sha512-zaUlYgNngbt50fZA/LbtsEnmPKojPqeiXCyUUiKQMv2uJQhncR32xhLZXVQ+TJD7hlfZ+6FAqlco1NIiAcub9w==", + "license": "MIT", + "dependencies": { + "@unocss/core": "66.7.5", + "@unocss/preset-wind3": "66.7.5" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-web-fonts": { + "version": "66.7.5", + "resolved": "https://registry.npmmirror.com/@unocss/preset-web-fonts/-/preset-web-fonts-66.7.5.tgz", + "integrity": "sha512-OLLTK7kswdSu51qxEm6O+AehecgCfS08Ivqo+280lKzFW7V1jXr5okeJ1ty+85oHCprJqzcD9iG1khxNRLomcA==", + "license": "MIT", + "dependencies": { + "@unocss/core": "66.7.5", + "ofetch": "^1.5.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-wind": { + "version": "66.7.5", + "resolved": "https://registry.npmmirror.com/@unocss/preset-wind/-/preset-wind-66.7.5.tgz", + "integrity": "sha512-LVKgGr0A9Lc7F85xGXrrb71DDXMlHGA8bcj/Kht8BCsuRdBZadNbLlnv5qnSJiHYhi3/blzcgVoaeRor6L9yNA==", + "license": "MIT", + "dependencies": { + "@unocss/core": "66.7.5", + "@unocss/preset-wind3": "66.7.5" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-wind3": { + "version": "66.7.5", + "resolved": "https://registry.npmmirror.com/@unocss/preset-wind3/-/preset-wind3-66.7.5.tgz", + "integrity": "sha512-atFe/7Qein+oMdyZs0hEo+3EjV99Av2LVxDbzpCungxIfbS3TnQt70EIuHXMPNCVWLYwrMV+/P1n9Ntb0E3mow==", + "license": "MIT", + "dependencies": { + "@unocss/core": "66.7.5", + "@unocss/preset-mini": "66.7.5", + "@unocss/rule-utils": "66.7.5" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-wind4": { + "version": "66.7.5", + "resolved": "https://registry.npmmirror.com/@unocss/preset-wind4/-/preset-wind4-66.7.5.tgz", + "integrity": "sha512-n3jIvQv8x1jXpmWfvNFBIqHNARki4mKZXfxAA31gekpXsRRTg16u1+yC1+PBBJgoEDFEnnmKnG7EZP88S8LVXA==", + "license": "MIT", + "dependencies": { + "@unocss/core": "66.7.5", + "@unocss/extractor-arbitrary-variants": "66.7.5", + "@unocss/rule-utils": "66.7.5" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/rule-utils": { + "version": "66.7.5", + "resolved": "https://registry.npmmirror.com/@unocss/rule-utils/-/rule-utils-66.7.5.tgz", + "integrity": "sha512-/AKHBRF6ZOexE3EDDv8ZEYh40P5e2Eha41IYUbE1wjigW7++ssmvimSTdufJzZvU5DGP++E3B3WEsFPprZMjAg==", + "license": "MIT", + "dependencies": { + "@unocss/core": "66.7.5", + "magic-string": "^0.30.21" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/transformer-attributify-jsx": { + "version": "66.7.5", + "resolved": "https://registry.npmmirror.com/@unocss/transformer-attributify-jsx/-/transformer-attributify-jsx-66.7.5.tgz", + "integrity": "sha512-r8qDwNSt0eGSwWws3xsuIHb3PZYR2embFdYoE67hD/xlYgLjX1uPy/HUlGCSSh4uLc4vVYjurr0Oq5xF/B8YiA==", + "license": "MIT", + "dependencies": { + "@unocss/core": "66.7.5", + "oxc-parser": "^0.131.0", + "oxc-walker": "^0.7.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/transformer-compile-class": { + "version": "66.7.5", + "resolved": "https://registry.npmmirror.com/@unocss/transformer-compile-class/-/transformer-compile-class-66.7.5.tgz", + "integrity": "sha512-KuECgsGF7tGe808vIvKViEjI0UCUgYgneJfK+/TWBkjC7s8dLVaUtJzzcP9/r6OfGlgyn/x1YTdRqTaCENa7Xg==", + "license": "MIT", + "dependencies": { + "@unocss/core": "66.7.5" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/transformer-directives": { + "version": "66.7.5", + "resolved": "https://registry.npmmirror.com/@unocss/transformer-directives/-/transformer-directives-66.7.5.tgz", + "integrity": "sha512-VMJApXXOwlDubkW+cNMmOkfxLefFupJr+yU23gGYUB2NPsuVltc8H5CDM0gfVebpeL5CUW05evxzEAk2wsju+Q==", + "license": "MIT", + "dependencies": { + "@unocss/core": "66.7.5", + "@unocss/rule-utils": "66.7.5", + "css-tree": "^3.2.1" + } + }, + "node_modules/@unocss/transformer-variant-group": { + "version": "66.7.5", + "resolved": "https://registry.npmmirror.com/@unocss/transformer-variant-group/-/transformer-variant-group-66.7.5.tgz", + "integrity": "sha512-iDmP3mM8J+IxuQf5Uh33zsi528xnGxTpKRJ0c+LCrqBTTkR2tZr4aCzNmJ0g29Js2yEOsyNXRRc8BNTuvgn0AA==", + "license": "MIT", + "dependencies": { + "@unocss/core": "66.7.5" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/vite": { + "version": "66.7.5", + "resolved": "https://registry.npmmirror.com/@unocss/vite/-/vite-66.7.5.tgz", + "integrity": "sha512-1z1TBCNJCR2WzjPtjzmCHr8rtzXHosMjLdsCNe6Mzsfwiw044gzzLVuiEZO9vIjkI50lvQ+gIOxOiVQG0hGAeA==", + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "@unocss/config": "66.7.5", + "@unocss/core": "66.7.5", + "@unocss/inspector": "66.7.5", + "chokidar": "^5.0.0", + "magic-string": "^0.30.21", + "pathe": "^2.0.3", + "tinyglobby": "^0.2.17", + "unplugin-utils": "^0.3.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vite": "^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0 || ^8.0.0-0" + } + }, "node_modules/@vitejs/plugin-vue": { "version": "6.0.8", "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-6.0.8.tgz", @@ -2067,6 +2821,44 @@ } } }, + "node_modules/@vueuse/core": { + "version": "14.4.0", + "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-14.4.0.tgz", + "integrity": "sha512-X4WHz1HlCzCBoYXesUkifzzWBAcZgXG8Fi5iNPQg/epdzOB3gu8Fawj3hvuwYR1nGcXGnvxwYYcUC/71++svtQ==", + "license": "MIT", + "dependencies": { + "@types/web-bluetooth": "^0.0.21", + "@vueuse/metadata": "14.4.0", + "@vueuse/shared": "14.4.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vue": "^3.5.0" + } + }, + "node_modules/@vueuse/metadata": { + "version": "14.4.0", + "resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-14.4.0.tgz", + "integrity": "sha512-swx/255R6JyHZFJhx845iz5CRWDZdCfvkZOpACWc5+c5WHcG24mv8gUT1WIdFQaHt6dq79rvILd9QnCWiyVm9g==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared": { + "version": "14.4.0", + "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-14.4.0.tgz", + "integrity": "sha512-JRgY90Sz8DDtPMsaDflvPMp9xYk69JZAmbuDvAquUVXKr2gEjqtzGNTTthLfckH0BzBqvnu31gb4a8TGLRe79g==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vue": "^3.5.0" + } + }, "node_modules/acorn": { "version": "8.18.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.18.0.tgz", @@ -2284,6 +3076,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/cac": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/cac/-/cac-7.0.0.tgz", + "integrity": "sha512-tixWYgm5ZoOD+3g6UTea91eow5z6AAHaho3g0V9CNSNb45gM8SmflpAc+GRd1InC4AqN/07Unrgp56Y94N9hJQ==", + "license": "MIT", + "engines": { + "node": ">=20.19.0" + } + }, "node_modules/caniuse-lite": { "version": "1.0.30001806", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001806.tgz", @@ -2320,12 +3121,27 @@ "url": "https://paulmillr.com/funding/" } }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmmirror.com/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "license": "MIT" + }, "node_modules/confbox": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.4.tgz", "integrity": "sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==", "license": "MIT" }, + "node_modules/consola": { + "version": "3.4.2", + "resolved": "https://registry.npmmirror.com/consola/-/consola-3.4.2.tgz", + "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", + "license": "MIT", + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", @@ -2348,6 +3164,19 @@ "node": ">= 8" } }, + "node_modules/css-tree": { + "version": "3.2.1", + "resolved": "https://registry.npmmirror.com/css-tree/-/css-tree-3.2.1.tgz", + "integrity": "sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.27.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, "node_modules/cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", @@ -2435,6 +3264,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/defu": { + "version": "6.1.7", + "resolved": "https://registry.npmmirror.com/defu/-/defu-6.1.7.tgz", + "integrity": "sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==", + "license": "MIT" + }, + "node_modules/destr": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/destr/-/destr-2.0.5.tgz", + "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==", + "license": "MIT" + }, "node_modules/detect-libc": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", @@ -2445,6 +3286,12 @@ "node": ">=8" } }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "license": "MIT" + }, "node_modules/electron-to-chromium": { "version": "1.5.399", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.399.tgz", @@ -2944,6 +3791,21 @@ "node": ">=10.13.0" } }, + "node_modules/gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "license": "MIT", + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/hookable": { "version": "5.5.3", "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz", @@ -2960,6 +3822,16 @@ "node": ">= 4" } }, + "node_modules/import-meta-resolve": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz", + "integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -3087,7 +3959,6 @@ "version": "2.7.0", "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.7.0.tgz", "integrity": "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==", - "dev": true, "license": "MIT", "bin": { "jiti": "lib/jiti-cli.mjs" @@ -3487,6 +4358,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lodash-es": { + "version": "4.18.1", + "resolved": "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.18.1.tgz", + "integrity": "sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==", + "license": "MIT" + }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -3497,6 +4374,57 @@ "yallist": "^3.0.2" } }, + "node_modules/magic-regexp": { + "version": "0.10.0", + "resolved": "https://registry.npmmirror.com/magic-regexp/-/magic-regexp-0.10.0.tgz", + "integrity": "sha512-Uly1Bu4lO1hwHUW0CQeSWuRtzCMNO00CmXtS8N6fyvB3B979GOEEeAkiTUDsmbYLAbvpUS/Kt5c4ibosAzVyVg==", + "license": "MIT", + "dependencies": { + "estree-walker": "^3.0.3", + "magic-string": "^0.30.12", + "mlly": "^1.7.2", + "regexp-tree": "^0.1.27", + "type-level-regexp": "~0.1.17", + "ufo": "^1.5.4", + "unplugin": "^2.0.0" + } + }, + "node_modules/magic-regexp/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/magic-regexp/node_modules/picomatch": { + "version": "4.0.5", + "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-4.0.5.tgz", + "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/magic-regexp/node_modules/unplugin": { + "version": "2.3.11", + "resolved": "https://registry.npmmirror.com/unplugin/-/unplugin-2.3.11.tgz", + "integrity": "sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww==", + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "acorn": "^8.15.0", + "picomatch": "^4.0.3", + "webpack-virtual-modules": "^0.6.2" + }, + "engines": { + "node": ">=18.12.0" + } + }, "node_modules/magic-string": { "version": "0.30.21", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", @@ -3521,6 +4449,12 @@ "url": "https://github.com/sponsors/sxzz" } }, + "node_modules/mdn-data": { + "version": "2.27.1", + "resolved": "https://registry.npmmirror.com/mdn-data/-/mdn-data-2.27.1.tgz", + "integrity": "sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==", + "license": "CC0-1.0" + }, "node_modules/memorystream": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", @@ -3603,7 +4537,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -3647,6 +4580,12 @@ "dev": true, "license": "MIT" }, + "node_modules/node-fetch-native": { + "version": "1.6.7", + "resolved": "https://registry.npmmirror.com/node-fetch-native/-/node-fetch-native-1.6.7.tgz", + "integrity": "sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==", + "license": "MIT" + }, "node_modules/node-releases": { "version": "2.0.51", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.51.tgz", @@ -3766,6 +4705,17 @@ "node": ">=12.20.0" } }, + "node_modules/ofetch": { + "version": "1.5.1", + "resolved": "https://registry.npmmirror.com/ofetch/-/ofetch-1.5.1.tgz", + "integrity": "sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==", + "license": "MIT", + "dependencies": { + "destr": "^2.0.5", + "node-fetch-native": "^1.6.7", + "ufo": "^1.6.1" + } + }, "node_modules/ohash": { "version": "2.0.11", "resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.11.tgz", @@ -3812,6 +4762,64 @@ "node": ">= 0.8.0" } }, + "node_modules/oxc-parser": { + "version": "0.131.0", + "resolved": "https://registry.npmmirror.com/oxc-parser/-/oxc-parser-0.131.0.tgz", + "integrity": "sha512-SJ3/7ZPbgie8dr5Z9BI/M51zZbpXba+hRSG0MDzVwMW5CRQg2fjYE0jHGlLX4eeiibGgC/mzoDFKSDHwVZEHRQ==", + "license": "MIT", + "dependencies": { + "@oxc-project/types": "^0.131.0" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/sponsors/Boshen" + }, + "optionalDependencies": { + "@oxc-parser/binding-android-arm-eabi": "0.131.0", + "@oxc-parser/binding-android-arm64": "0.131.0", + "@oxc-parser/binding-darwin-arm64": "0.131.0", + "@oxc-parser/binding-darwin-x64": "0.131.0", + "@oxc-parser/binding-freebsd-x64": "0.131.0", + "@oxc-parser/binding-linux-arm-gnueabihf": "0.131.0", + "@oxc-parser/binding-linux-arm-musleabihf": "0.131.0", + "@oxc-parser/binding-linux-arm64-gnu": "0.131.0", + "@oxc-parser/binding-linux-arm64-musl": "0.131.0", + "@oxc-parser/binding-linux-ppc64-gnu": "0.131.0", + "@oxc-parser/binding-linux-riscv64-gnu": "0.131.0", + "@oxc-parser/binding-linux-riscv64-musl": "0.131.0", + "@oxc-parser/binding-linux-s390x-gnu": "0.131.0", + "@oxc-parser/binding-linux-x64-gnu": "0.131.0", + "@oxc-parser/binding-linux-x64-musl": "0.131.0", + "@oxc-parser/binding-openharmony-arm64": "0.131.0", + "@oxc-parser/binding-wasm32-wasi": "0.131.0", + "@oxc-parser/binding-win32-arm64-msvc": "0.131.0", + "@oxc-parser/binding-win32-ia32-msvc": "0.131.0", + "@oxc-parser/binding-win32-x64-msvc": "0.131.0" + } + }, + "node_modules/oxc-parser/node_modules/@oxc-project/types": { + "version": "0.131.0", + "resolved": "https://registry.npmmirror.com/@oxc-project/types/-/types-0.131.0.tgz", + "integrity": "sha512-PgnWDfV0h+b16XNKbXU7Daib/BFSt/J2mEzfYIBu6JB/wNdlU+kVYXCkGA1A9fWkTbOgbjh4e6NhPeQOYvFhEA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/Boshen" + } + }, + "node_modules/oxc-walker": { + "version": "0.7.0", + "resolved": "https://registry.npmmirror.com/oxc-walker/-/oxc-walker-0.7.0.tgz", + "integrity": "sha512-54B4KUhrzbzc4sKvKwVYm7E2PgeROpGba0/2nlNZMqfDyca+yOor5IMb4WLGBatGDT0nkzYdYuzylg7n3YfB7A==", + "license": "MIT", + "dependencies": { + "magic-regexp": "^0.10.0" + }, + "peerDependencies": { + "oxc-parser": ">=0.98.0" + } + }, "node_modules/oxlint": { "version": "1.74.0", "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-1.74.0.tgz", @@ -3893,6 +4901,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/package-manager-detector": { + "version": "1.8.0", + "resolved": "https://registry.npmmirror.com/package-manager-detector/-/package-manager-detector-1.8.0.tgz", + "integrity": "sha512-yQA4H19AmPEoMUeavPMDIe1higySl/gH/yaQrkT/s07Qp+7pp2hYz30N3z2l5BkjVkF9Ow6o0wjJamm2y7Sn0A==", + "license": "MIT" + }, "node_modules/path-browserify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", @@ -4155,6 +5169,15 @@ "url": "https://paulmillr.com/funding/" } }, + "node_modules/regexp-tree": { + "version": "0.1.27", + "resolved": "https://registry.npmmirror.com/regexp-tree/-/regexp-tree-0.1.27.tgz", + "integrity": "sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==", + "license": "MIT", + "bin": { + "regexp-tree": "bin/regexp-tree" + } + }, "node_modules/reusify": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", @@ -4293,7 +5316,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.2.tgz", "integrity": "sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==", - "dev": true, "license": "MIT", "dependencies": { "@polka/url": "^1.0.0-next.24", @@ -4313,6 +5335,15 @@ "node": ">=0.10.0" } }, + "node_modules/tinyexec": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/tinyexec/-/tinyexec-1.3.0.tgz", + "integrity": "sha512-QKAl9m8gWWGHV8jZcPeym6j+XULi6tOf1mT83WYJ4Lk2ytW/uwAWkrP0uFsdoYMdueVJ0qs26wZ+23xeB4ibNQ==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/tinyglobby": { "version": "0.2.17", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", @@ -4358,7 +5389,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -4381,7 +5411,6 @@ "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true, "license": "0BSD", "optional": true }, @@ -4398,6 +5427,12 @@ "node": ">= 0.8.0" } }, + "node_modules/type-level-regexp": { + "version": "0.1.17", + "resolved": "https://registry.npmmirror.com/type-level-regexp/-/type-level-regexp-0.1.17.tgz", + "integrity": "sha512-wTk4DH3cxwk196uGLK/E9pE45aLfeKJacKmcEgEOA/q5dnPGNxXt0cfYdFxb57L+sEpf1oJH4Dnx/pnRcku9jg==", + "license": "MIT" + }, "node_modules/typescript": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", @@ -4442,6 +5477,67 @@ "integrity": "sha512-JFNbkD1Svwe0KvGi8GOeLcP4kAWQ609twvCdcHxq1oSL8svv39ZuSvajcD8B+5D0eL4+s1Is2D/O6KN3qcTeRA==", "license": "MIT" }, + "node_modules/unconfig": { + "version": "7.5.0", + "resolved": "https://registry.npmmirror.com/unconfig/-/unconfig-7.5.0.tgz", + "integrity": "sha512-oi8Qy2JV4D3UQ0PsopR28CzdQ3S/5A1zwsUwp/rosSbfhJ5z7b90bIyTwi/F7hCLD4SGcZVjDzd4XoUQcEanvA==", + "license": "MIT", + "dependencies": { + "@quansync/fs": "^1.0.0", + "defu": "^6.1.4", + "jiti": "^2.6.1", + "quansync": "^1.0.0", + "unconfig-core": "7.5.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/unconfig-core": { + "version": "7.5.0", + "resolved": "https://registry.npmmirror.com/unconfig-core/-/unconfig-core-7.5.0.tgz", + "integrity": "sha512-Su3FauozOGP44ZmKdHy2oE6LPjk51M/TRRjHv2HNCWiDvfvCoxC2lno6jevMA91MYAdCdwP05QnWdWpSbncX/w==", + "license": "MIT", + "dependencies": { + "@quansync/fs": "^1.0.0", + "quansync": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/unconfig-core/node_modules/quansync": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/quansync/-/quansync-1.0.0.tgz", + "integrity": "sha512-5xZacEEufv3HSTPQuchrvV6soaiACMFnq1H8wkVioctoH3TRha9Sz66lOxRwPK/qZj7HPiSveih9yAyh98gvqA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/antfu" + }, + { + "type": "individual", + "url": "https://github.com/sponsors/sxzz" + } + ], + "license": "MIT" + }, + "node_modules/unconfig/node_modules/quansync": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/quansync/-/quansync-1.0.0.tgz", + "integrity": "sha512-5xZacEEufv3HSTPQuchrvV6soaiACMFnq1H8wkVioctoH3TRha9Sz66lOxRwPK/qZj7HPiSveih9yAyh98gvqA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/antfu" + }, + { + "type": "individual", + "url": "https://github.com/sponsors/sxzz" + } + ], + "license": "MIT" + }, "node_modules/undici-types": { "version": "7.18.2", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", @@ -4449,6 +5545,50 @@ "dev": true, "license": "MIT" }, + "node_modules/unocss": { + "version": "66.7.5", + "resolved": "https://registry.npmmirror.com/unocss/-/unocss-66.7.5.tgz", + "integrity": "sha512-nAdmU8TwnQoiLnQjZ6Hm1GmHy9lTexKsAZNEJtZnxN9wyFRc1eLjQgmh9r7UEGxBQMQLD8OZOgmk5HpwObbh0Q==", + "license": "MIT", + "dependencies": { + "@unocss/cli": "66.7.5", + "@unocss/core": "66.7.5", + "@unocss/preset-attributify": "66.7.5", + "@unocss/preset-icons": "66.7.5", + "@unocss/preset-mini": "66.7.5", + "@unocss/preset-tagify": "66.7.5", + "@unocss/preset-typography": "66.7.5", + "@unocss/preset-uno": "66.7.5", + "@unocss/preset-web-fonts": "66.7.5", + "@unocss/preset-wind": "66.7.5", + "@unocss/preset-wind3": "66.7.5", + "@unocss/preset-wind4": "66.7.5", + "@unocss/transformer-attributify-jsx": "66.7.5", + "@unocss/transformer-compile-class": "66.7.5", + "@unocss/transformer-directives": "66.7.5", + "@unocss/transformer-variant-group": "66.7.5", + "@unocss/vite": "66.7.5" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@unocss/astro": "66.7.5", + "@unocss/postcss": "66.7.5", + "@unocss/webpack": "66.7.5" + }, + "peerDependenciesMeta": { + "@unocss/astro": { + "optional": true + }, + "@unocss/postcss": { + "optional": true + }, + "@unocss/webpack": { + "optional": true + } + } + }, "node_modules/unplugin": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-3.3.0.tgz", diff --git a/package.json b/package.json index a91e206..72ae649 100644 --- a/package.json +++ b/package.json @@ -15,13 +15,18 @@ "format": "prettier --write --experimental-cli src/" }, "dependencies": { + "@unocss/vite": "^66.7.5", + "@vueuse/core": "^14.4.0", "jalaali-js": "^2.0.0", + "lodash-es": "^4.18.1", "pinia": "^4.0.2", + "unocss": "^66.7.5", "vue": "^3.5.40", "vue-router": "^5.2.0" }, "devDependencies": { "@tsconfig/node24": "^24.0.4", + "@types/lodash-es": "^4.17.12", "@types/node": "^24.13.3", "@vitejs/plugin-vue": "^6.0.8", "@vitejs/plugin-vue-jsx": "^5.1.6", diff --git a/src/App.vue b/src/App.vue index fff0c69..8556166 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,26 +1,59 @@ diff --git a/src/assets/styles/app-shell.css b/src/assets/styles/app-shell.css index 2c69a5a..b9a235a 100644 --- a/src/assets/styles/app-shell.css +++ b/src/assets/styles/app-shell.css @@ -20,6 +20,7 @@ width: 100%; height: 100%; background: var(--color-bg); + color: var(--color-text); display: flex; flex-direction: column; overflow: hidden; @@ -52,6 +53,16 @@ max-width: var(--content-max-width); margin-inline: auto; padding-inline: var(--page-padding); + position: relative; +} + +.page-transition { + flex: 1; + min-height: 0; + display: flex; + flex-direction: column; + width: 100%; + overflow: hidden; } @media (min-width: 768px) { diff --git a/src/assets/styles/main.css b/src/assets/styles/main.css index 58dcffa..1caef9b 100644 --- a/src/assets/styles/main.css +++ b/src/assets/styles/main.css @@ -27,6 +27,10 @@ --color-tab-inactive-bg: #f1f5f9; --color-tab-inactive-text: #64748b; --color-summary-bg: #f1f5f9; + --color-elevated: #ffffff; + --color-brand-warm: #f3ece3; + --color-brand-warm-text: #1a202c; + --color-brand-warm-muted: #718096; --radius-sm: 8px; --radius-md: 12px; --radius-lg: 16px; @@ -52,6 +56,45 @@ --desktop-breakpoint: 1200px; } +html.dark { + --color-primary: #7b9cff; + --color-primary-hover: #9bb4ff; + --color-primary-soft: #1b2740; + --color-primary-dark: #9bb4ff; + --color-primary-light: #1b2740; + --color-success: #3dd68c; + --color-success-light: #123528; + --color-success-soft: #123528; + --color-warning: #f5c14a; + --color-warning-light: #3a2f14; + --color-danger: #f47979; + --color-danger-light: #3f1d22; + --color-purple: #b39afa; + --color-purple-light: #2a2144; + --color-info: #7b9cff; + --color-info-light: #1b2740; + --color-bg: #0b0f14; + --color-page-background: #0b0f14; + --color-shell-bg: #080b10; + --color-surface: #121821; + --color-elevated: #1a2230; + --color-border: #2a3444; + --color-text: #eef2f8; + --color-text-primary: #eef2f8; + --color-text-muted: #9aa8bc; + --color-text-secondary: #9aa8bc; + --color-tab-inactive-bg: #1a2230; + --color-tab-inactive-text: #9aa8bc; + --color-summary-bg: #1a2230; + --color-brand-warm: #2a241c; + --color-brand-warm-text: #f3ebe0; + --color-brand-warm-muted: #b9a88d; + --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.45); + --shadow-md: 0 8px 24px rgba(0, 0, 0, 0.45); + --shadow-card: 0 1px 2px rgba(0, 0, 0, 0.35), 0 8px 24px rgba(0, 0, 0, 0.35); + --shadow-frame: 0 12px 40px rgba(0, 0, 0, 0.5); +} + *, *::before, *::after { @@ -121,7 +164,8 @@ input[type='number'] { min-height: 0; overflow: hidden; padding: 12px var(--page-padding) 0; - background: #ffffff; + background: var(--color-bg); + color: var(--color-text); } .page__scroll { @@ -133,7 +177,7 @@ input[type='number'] { } .page__scroll--with-nav { - padding-bottom: 12px; + padding-bottom: calc(12px + env(safe-area-inset-bottom, 0px)); } .page-title { @@ -152,11 +196,12 @@ input[type='number'] { } .card { - background: var(--color-surface); + background: var(--color-elevated); border-radius: var(--radius-md); border: 1px solid var(--color-border); padding: 16px; box-shadow: var(--shadow-sm); + color: var(--color-text); } .card + .card { @@ -296,11 +341,6 @@ input[type='number'] { } /* Responsive visibility */ -.mobile-only, -.mobile-block { - display: block; -} - .desktop-only { display: none !important; } @@ -348,3 +388,51 @@ input[type='number'] { padding-bottom: 0; } } + +/* Page route transitions */ +.page-fade-enter-active, +.page-fade-leave-active, +.page-forward-enter-active, +.page-forward-leave-active, +.page-back-enter-active, +.page-back-leave-active { + transition: + opacity 0.22s ease, + transform 0.22s ease; +} + +.page-fade-enter-from, +.page-fade-leave-to { + opacity: 0; +} + +.page-forward-enter-from { + opacity: 0; + transform: translateX(-18px); +} + +.page-forward-leave-to { + opacity: 0; + transform: translateX(12px); +} + +.page-back-enter-from { + opacity: 0; + transform: translateX(18px); +} + +.page-back-leave-to { + opacity: 0; + transform: translateX(-12px); +} + +@media (prefers-reduced-motion: reduce) { + .page-fade-enter-active, + .page-fade-leave-active, + .page-forward-enter-active, + .page-forward-leave-active, + .page-back-enter-active, + .page-back-leave-active { + transition: none; + } +} diff --git a/src/assets/styles/responsive.css b/src/assets/styles/responsive.css index 943f541..f9d77af 100644 --- a/src/assets/styles/responsive.css +++ b/src/assets/styles/responsive.css @@ -52,8 +52,8 @@ display: flex; flex-direction: column; align-items: center; - padding-top: 48px; - padding-bottom: 48px; + justify-content: center; + padding-block: 48px; } .auth-header, diff --git a/src/components/BasicPacks/BasicIcon.vue b/src/components/BasicPacks/BasicIcon.vue new file mode 100644 index 0000000..2984530 --- /dev/null +++ b/src/components/BasicPacks/BasicIcon.vue @@ -0,0 +1,82 @@ + + + + + diff --git a/src/components/BasicPacks/tools/icons/icons.json b/src/components/BasicPacks/tools/icons/icons.json new file mode 100644 index 0000000..40c5978 --- /dev/null +++ b/src/components/BasicPacks/tools/icons/icons.json @@ -0,0 +1,67 @@ +{ + "vuesax-linear:add": "\n\n\n\n", + "vuesax-linear:arrow-down": "\n\n\n", + "vuesax-linear:arrow-left-1": "\n\n\n", + "vuesax-linear:arrow-right-1": "\n\n\n", + "vuesax-linear:bag-2": "\n\n\n\n\n\n", + "vuesax-linear:bag-cross": "\n\n\n\n\n\n\n\n", + "vuesax-linear:box-1": "\n\n\n\n\n", + "vuesax-linear:box-remove": "\n\n\n\n\n\n\n\n", + "vuesax-linear:box-search": "\n\n\n\n\n\n\n", + "vuesax-linear:building": "\n\n\n\n\n\n\n\n", + "vuesax-linear:buildings": "\n\n\n\n\n\n\n\n\n", + "vuesax-linear:calendar": "\n\n\n\n\n\n\n\n\n\n\n\n", + "vuesax-linear:call": "\n\n\n", + "vuesax-linear:card": "\n\n\n\n\n\n", + "vuesax-linear:card-receive": "\n\n\n\n\n\n\n\n", + "vuesax-linear:category": "\n\n\n\n\n\n", + "vuesax-linear:chart-2": "\n\n\n\n\n", + "vuesax-linear:clipboard-close": "\n\n\n\n\n\n", + "vuesax-linear:clock": "\n\n\n\n\n\n", + "vuesax-linear:close-circle": "\n\n\n\n\n", + "vuesax-linear:cpu": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", + "vuesax-linear:diamonds": "\n\n\n\n", + "vuesax-linear:document-text": "\n\n\n\n\n\n", + "vuesax-linear:edit-2": "\n\n\n\n\n", + "vuesax-linear:element-3": "\n\n\n\n\n\n", + "vuesax-linear:eye": "\n\n\n\n", + "vuesax-linear:eye-slash": "\n\n\n\n\n\n\n\n", + "vuesax-linear:filter": "\n\n\n\n", + "vuesax-linear:flash": "\n\n\n\n\n\n", + "vuesax-linear:headphone": "\n\n\n", + "vuesax-linear:home": "\n\n\n\n", + "vuesax-linear:info-circle": "\n\n\n\n\n", + "vuesax-linear:lamp-on": "\n\n\n\n", + "vuesax-linear:location": "\n\n\n\n", + "vuesax-linear:lock": "\n\n\n\n\n\n\n", + "vuesax-linear:logout": "\n\n\n\n\n", + "vuesax-linear:menu": "\n\n\n\n\n", + "vuesax-linear:message": "\n\n\n\n\n\n", + "vuesax-linear:mobile": "\n\n\n\n\n", + "vuesax-linear:money-4": "\n\n\n\n\n\n\n\n", + "vuesax-linear:monitor": "\n\n\n\n\n\n", + "vuesax-linear:moon": "\n\n\n", + "vuesax-linear:more": "\n\n\n\n\n", + "vuesax-linear:note-remove": "\n\n\n\n\n\n\n\n\n", + "vuesax-linear:notification": "\n\n\n\n\n", + "vuesax-linear:pen-add": "\n\n\n\n\n\n\n\n\n", + "vuesax-linear:people": "\n\n\n\n\n\n\n\n", + "vuesax-linear:personalcard": "\n\n\n\n\n\n\n\n", + "vuesax-linear:printer": "\n\n\n\n\n\n\n", + "vuesax-linear:profile-2user": "\n\n\n\n\n\n", + "vuesax-linear:profile-circle": "\n\n\n\n\n", + "vuesax-linear:receipt-search": "\n\n\n\n\n\n\n", + "vuesax-linear:search-normal": "\n\n\n\n", + "vuesax-linear:search-status": "\n\n\n\n\n\n", + "vuesax-linear:setting-2": "\n\n\n\n", + "vuesax-linear:shopping-bag": "\n\n\n\n\n", + "vuesax-linear:sms": "\n\n\n\n", + "vuesax-linear:sun-1": "\n\n\n\n", + "vuesax-linear:tick-circle": "\n\n\n\n", + "vuesax-linear:timer-1": "\n\n\n\n\n", + "vuesax-linear:trash": "\n\n\n\n\n\n\n", + "vuesax-linear:truck-time": "\n\n\n\n\n\n\n\n\n", + "vuesax-linear:verify": "\n\n\n\n", + "vuesax-linear:wallet": "\n\n\n\n\n", + "vuesax-linear:warning-2": "\n\n\n\n\n" +} diff --git a/src/components/icons/IconBell.vue b/src/components/icons/IconBell.vue index ddd7c1d..005cc37 100644 --- a/src/components/icons/IconBell.vue +++ b/src/components/icons/IconBell.vue @@ -1,20 +1,21 @@ diff --git a/src/components/icons/IconBolt.vue b/src/components/icons/IconBolt.vue index c445861..3d5287e 100644 --- a/src/components/icons/IconBolt.vue +++ b/src/components/icons/IconBolt.vue @@ -1,14 +1,21 @@ diff --git a/src/components/icons/IconBuilding.vue b/src/components/icons/IconBuilding.vue index 4108e66..c360d54 100644 --- a/src/components/icons/IconBuilding.vue +++ b/src/components/icons/IconBuilding.vue @@ -1,21 +1,21 @@ diff --git a/src/components/icons/IconCart.vue b/src/components/icons/IconCart.vue index 933ac0d..fd5c71f 100644 --- a/src/components/icons/IconCart.vue +++ b/src/components/icons/IconCart.vue @@ -1,30 +1,21 @@ diff --git a/src/components/icons/IconCash.vue b/src/components/icons/IconCash.vue index 92b8c12..ad70898 100644 --- a/src/components/icons/IconCash.vue +++ b/src/components/icons/IconCash.vue @@ -1,26 +1,21 @@ diff --git a/src/components/icons/IconCashSettlement.vue b/src/components/icons/IconCashSettlement.vue index 5dc53cf..82e63c8 100644 --- a/src/components/icons/IconCashSettlement.vue +++ b/src/components/icons/IconCashSettlement.vue @@ -1,20 +1,21 @@ diff --git a/src/components/icons/IconCatalog.vue b/src/components/icons/IconCatalog.vue index 5bc74e6..d3130f9 100644 --- a/src/components/icons/IconCatalog.vue +++ b/src/components/icons/IconCatalog.vue @@ -1,19 +1,21 @@ diff --git a/src/components/icons/IconCheckBook.vue b/src/components/icons/IconCheckBook.vue index 3dfd43d..7ac5959 100644 --- a/src/components/icons/IconCheckBook.vue +++ b/src/components/icons/IconCheckBook.vue @@ -1,19 +1,21 @@ diff --git a/src/components/icons/IconCheckCircleOutline.vue b/src/components/icons/IconCheckCircleOutline.vue index a9bad91..a63202d 100644 --- a/src/components/icons/IconCheckCircleOutline.vue +++ b/src/components/icons/IconCheckCircleOutline.vue @@ -1,29 +1,21 @@ diff --git a/src/components/icons/IconChevronBack.vue b/src/components/icons/IconChevronBack.vue index 45c145a..046b239 100644 --- a/src/components/icons/IconChevronBack.vue +++ b/src/components/icons/IconChevronBack.vue @@ -1,28 +1,21 @@ diff --git a/src/components/icons/IconChevronLeft.vue b/src/components/icons/IconChevronLeft.vue index 521e9c3..4e17f71 100644 --- a/src/components/icons/IconChevronLeft.vue +++ b/src/components/icons/IconChevronLeft.vue @@ -1,28 +1,21 @@ diff --git a/src/components/icons/IconClipboardEmpty.vue b/src/components/icons/IconClipboardEmpty.vue index b605030..7eec367 100644 --- a/src/components/icons/IconClipboardEmpty.vue +++ b/src/components/icons/IconClipboardEmpty.vue @@ -1,75 +1,21 @@ - - diff --git a/src/components/icons/IconDiamond.vue b/src/components/icons/IconDiamond.vue index 5ccd3db..59ce446 100644 --- a/src/components/icons/IconDiamond.vue +++ b/src/components/icons/IconDiamond.vue @@ -1,19 +1,21 @@ diff --git a/src/components/icons/IconEditPen.vue b/src/components/icons/IconEditPen.vue index bda5184..3ced2b6 100644 --- a/src/components/icons/IconEditPen.vue +++ b/src/components/icons/IconEditPen.vue @@ -1,28 +1,21 @@ diff --git a/src/components/icons/IconFamBaftLogo.vue b/src/components/icons/IconFamBaftLogo.vue index 60b0f1a..8277c73 100644 --- a/src/components/icons/IconFamBaftLogo.vue +++ b/src/components/icons/IconFamBaftLogo.vue @@ -4,6 +4,7 @@ withDefaults(defineProps<{ size?: number }>(), { size: 72 }) + + diff --git a/src/components/icons/IconFeather.vue b/src/components/icons/IconFeather.vue index 9e2b591..d59c3b0 100644 --- a/src/components/icons/IconFeather.vue +++ b/src/components/icons/IconFeather.vue @@ -1,26 +1,21 @@ diff --git a/src/components/icons/IconFilter.vue b/src/components/icons/IconFilter.vue index 6f76880..7c75d7c 100644 --- a/src/components/icons/IconFilter.vue +++ b/src/components/icons/IconFilter.vue @@ -1,27 +1,21 @@ diff --git a/src/components/icons/IconHeadset.vue b/src/components/icons/IconHeadset.vue index 50d320b..d890af0 100644 --- a/src/components/icons/IconHeadset.vue +++ b/src/components/icons/IconHeadset.vue @@ -1,16 +1,21 @@ diff --git a/src/components/icons/IconHome.vue b/src/components/icons/IconHome.vue index 563ddb4..e7a9261 100644 --- a/src/components/icons/IconHome.vue +++ b/src/components/icons/IconHome.vue @@ -1,27 +1,21 @@ diff --git a/src/components/icons/IconHourglass.vue b/src/components/icons/IconHourglass.vue index c74e8bf..73d367b 100644 --- a/src/components/icons/IconHourglass.vue +++ b/src/components/icons/IconHourglass.vue @@ -1,28 +1,21 @@ diff --git a/src/components/icons/IconIdCard.vue b/src/components/icons/IconIdCard.vue index 4cd9ac0..5721dbb 100644 --- a/src/components/icons/IconIdCard.vue +++ b/src/components/icons/IconIdCard.vue @@ -1,11 +1,21 @@ diff --git a/src/components/icons/IconLayoutGrid.vue b/src/components/icons/IconLayoutGrid.vue index 5ef52e1..d1cf288 100644 --- a/src/components/icons/IconLayoutGrid.vue +++ b/src/components/icons/IconLayoutGrid.vue @@ -1,25 +1,21 @@ diff --git a/src/components/icons/IconLightbulb.vue b/src/components/icons/IconLightbulb.vue index dcf03d8..6bb5b91 100644 --- a/src/components/icons/IconLightbulb.vue +++ b/src/components/icons/IconLightbulb.vue @@ -1,26 +1,21 @@ diff --git a/src/components/icons/IconLock.vue b/src/components/icons/IconLock.vue index 08330e1..3a80b09 100644 --- a/src/components/icons/IconLock.vue +++ b/src/components/icons/IconLock.vue @@ -1,15 +1,21 @@ diff --git a/src/components/icons/IconMail.vue b/src/components/icons/IconMail.vue index 6a51a63..1893780 100644 --- a/src/components/icons/IconMail.vue +++ b/src/components/icons/IconMail.vue @@ -1,10 +1,21 @@ diff --git a/src/components/icons/IconMapPin.vue b/src/components/icons/IconMapPin.vue index ed3266b..0ef53e7 100644 --- a/src/components/icons/IconMapPin.vue +++ b/src/components/icons/IconMapPin.vue @@ -1,15 +1,21 @@ diff --git a/src/components/icons/IconMoreVertical.vue b/src/components/icons/IconMoreVertical.vue index 1342aea..23c5702 100644 --- a/src/components/icons/IconMoreVertical.vue +++ b/src/components/icons/IconMoreVertical.vue @@ -1,23 +1,21 @@ diff --git a/src/components/icons/IconOrders.vue b/src/components/icons/IconOrders.vue index ae85291..6feeb16 100644 --- a/src/components/icons/IconOrders.vue +++ b/src/components/icons/IconOrders.vue @@ -1,41 +1,21 @@ diff --git a/src/components/icons/IconParLogo.vue b/src/components/icons/IconParLogo.vue index 652d95f..862ede2 100644 --- a/src/components/icons/IconParLogo.vue +++ b/src/components/icons/IconParLogo.vue @@ -4,6 +4,7 @@ withDefaults(defineProps<{ size?: number }>(), { size: 72 }) + + diff --git a/src/components/icons/IconPhone.vue b/src/components/icons/IconPhone.vue index 6106975..e116846 100644 --- a/src/components/icons/IconPhone.vue +++ b/src/components/icons/IconPhone.vue @@ -1,14 +1,21 @@ diff --git a/src/components/icons/IconProfile.vue b/src/components/icons/IconProfile.vue index 53e6688..426223d 100644 --- a/src/components/icons/IconProfile.vue +++ b/src/components/icons/IconProfile.vue @@ -1,28 +1,21 @@ diff --git a/src/components/icons/IconProgressClock.vue b/src/components/icons/IconProgressClock.vue index b826761..886d014 100644 --- a/src/components/icons/IconProgressClock.vue +++ b/src/components/icons/IconProgressClock.vue @@ -1,29 +1,21 @@ diff --git a/src/components/icons/IconSearch.vue b/src/components/icons/IconSearch.vue index a24a679..7341e9b 100644 --- a/src/components/icons/IconSearch.vue +++ b/src/components/icons/IconSearch.vue @@ -1,20 +1,21 @@ diff --git a/src/components/icons/IconSettings.vue b/src/components/icons/IconSettings.vue index 406b0a3..c07c2e3 100644 --- a/src/components/icons/IconSettings.vue +++ b/src/components/icons/IconSettings.vue @@ -1,15 +1,21 @@ diff --git a/src/components/icons/IconShoppingBag.vue b/src/components/icons/IconShoppingBag.vue index 1950982..d0d4a99 100644 --- a/src/components/icons/IconShoppingBag.vue +++ b/src/components/icons/IconShoppingBag.vue @@ -1,20 +1,21 @@ diff --git a/src/components/icons/IconSuccessCircle.vue b/src/components/icons/IconSuccessCircle.vue index b7af4c7..a63202d 100644 --- a/src/components/icons/IconSuccessCircle.vue +++ b/src/components/icons/IconSuccessCircle.vue @@ -1,17 +1,21 @@ diff --git a/src/components/icons/IconTrash.vue b/src/components/icons/IconTrash.vue index a91b068..5b537e0 100644 --- a/src/components/icons/IconTrash.vue +++ b/src/components/icons/IconTrash.vue @@ -1,48 +1,21 @@ diff --git a/src/components/icons/IconVerified.vue b/src/components/icons/IconVerified.vue index 504ade9..3b8f918 100644 --- a/src/components/icons/IconVerified.vue +++ b/src/components/icons/IconVerified.vue @@ -1,16 +1,21 @@ diff --git a/src/components/layout/BottomNav.vue b/src/components/layout/BottomNav.vue index 36181bd..36c6689 100644 --- a/src/components/layout/BottomNav.vue +++ b/src/components/layout/BottomNav.vue @@ -10,7 +10,9 @@ const cartStore = useCartStore() const cartCount = computed(() => cartStore.itemCount) -function navigate(path: string) { +function navigate(path: string, event: Event) { + const target = event.currentTarget + if (target instanceof HTMLElement) target.blur() router.push(path) } @@ -24,13 +26,13 @@ function navigate(path: string) { class="nav-item" :class="{ active: isNavItemActive(item.name, item.path, route.path) }" :aria-current="isNavItemActive(item.name, item.path, route.path) ? 'page' : undefined" - @click="navigate(item.path)" + @click="navigate(item.path, $event)" > - + + {{ cartCount }} {{ item.label }} - {{ cartCount }} @@ -38,14 +40,14 @@ function navigate(path: string) { diff --git a/src/components/layout/PageHeader.vue b/src/components/layout/PageHeader.vue index aa3dca6..26685da 100644 --- a/src/components/layout/PageHeader.vue +++ b/src/components/layout/PageHeader.vue @@ -121,8 +121,8 @@ defineEmits<{ } .back-btn:hover { - border-color: #cbd5e1; - background: #f8fafc; + border-color: var(--color-border); + background: var(--color-summary-bg); } .header-text { diff --git a/src/components/orders/OrderStatusHero.vue b/src/components/orders/OrderStatusHero.vue index 79d4ac0..03bfd34 100644 --- a/src/components/orders/OrderStatusHero.vue +++ b/src/components/orders/OrderStatusHero.vue @@ -39,7 +39,7 @@ defineProps<{ } .status-hero--waiting .status-hero__icon { - background: #eef4ff; + background: var(--color-primary-soft); color: var(--color-primary); } diff --git a/src/components/orders/OrderTrackingSummary.vue b/src/components/orders/OrderTrackingSummary.vue index d258271..eee0b14 100644 --- a/src/components/orders/OrderTrackingSummary.vue +++ b/src/components/orders/OrderTrackingSummary.vue @@ -55,7 +55,7 @@ function settlementLabel(type: 'cash' | 'check') { .tracking-summary { padding: 16px; border-radius: 16px; - background: #ffffff; + background: var(--color-elevated); border: 1px solid var(--color-border); box-shadow: var(--shadow-sm); } @@ -67,7 +67,7 @@ function settlementLabel(type: 'cash' | 'check') { gap: 12px; padding: 10px 0; font-size: 0.875rem; - border-bottom: 1px solid #f1f5f9; + border-bottom: 1px solid var(--color-border); } .tracking-summary__row:last-child { diff --git a/src/components/orders/OrderTrackingTimeline.vue b/src/components/orders/OrderTrackingTimeline.vue index 96f3f81..faf798c 100644 --- a/src/components/orders/OrderTrackingTimeline.vue +++ b/src/components/orders/OrderTrackingTimeline.vue @@ -80,7 +80,8 @@ function timestampFor(step: OrderStatus) { margin: 4px 0; padding: 12px; border-radius: 14px; - background: #eef4ff; + background: var(--color-primary-soft); + border: 1px solid var(--color-border); } .tracking-timeline__marker-wrap { @@ -94,7 +95,7 @@ function timestampFor(step: OrderStatus) { top: 22px; bottom: -10px; width: 2px; - background: #e2e8f0; + background: var(--color-border); } .tracking-timeline__item:last-child .tracking-timeline__line { @@ -109,8 +110,8 @@ function timestampFor(step: OrderStatus) { width: 22px; height: 22px; border-radius: 50%; - background: #e2e8f0; - border: 2px solid #e2e8f0; + background: var(--color-border); + border: 2px solid var(--color-border); display: flex; align-items: center; justify-content: center; @@ -126,12 +127,12 @@ function timestampFor(step: OrderStatus) { .tracking-timeline__item--current .tracking-timeline__marker { background: var(--color-primary); border-color: var(--color-primary); - box-shadow: 0 0 0 4px rgba(29, 53, 87, 0.12); + box-shadow: 0 0 0 4px var(--color-primary-soft); } .tracking-timeline__item--pending .tracking-timeline__marker { - background: #fff; - border-color: #cbd5e1; + background: var(--color-elevated); + border-color: var(--color-border); } .tracking-timeline__check { diff --git a/src/components/ui/BaseBadge.vue b/src/components/ui/BaseBadge.vue index e1e8b49..eff59a0 100644 --- a/src/components/ui/BaseBadge.vue +++ b/src/components/ui/BaseBadge.vue @@ -46,7 +46,7 @@ defineProps<{ } .badge-neutral { - background: #f1f5f9; + background: var(--color-summary-bg); color: var(--color-text-muted); } diff --git a/src/components/ui/BaseInput.vue b/src/components/ui/BaseInput.vue index fea2b89..334c6f9 100644 --- a/src/components/ui/BaseInput.vue +++ b/src/components/ui/BaseInput.vue @@ -1,19 +1,30 @@ @@ -22,7 +33,7 @@ defineEmits<{

{{ error }}

{{ hint }}

@@ -50,6 +66,19 @@ defineEmits<{ transition: border-color 0.15s; } +.input--align-start { + text-align: start; +} + +.input--align-center { + text-align: center; + letter-spacing: 0.04em; +} + +.input--align-end { + text-align: end; +} + .input:focus { outline: none; border-color: var(--color-primary); diff --git a/src/components/ui/EmptyState.vue b/src/components/ui/EmptyState.vue index 06583db..dee482b 100644 --- a/src/components/ui/EmptyState.vue +++ b/src/components/ui/EmptyState.vue @@ -1,20 +1,64 @@ diff --git a/src/views/checkout/CashSettlementView.vue b/src/views/checkout/CashSettlementView.vue index 9d86896..a952d2e 100644 --- a/src/views/checkout/CashSettlementView.vue +++ b/src/views/checkout/CashSettlementView.vue @@ -1,20 +1,23 @@ @@ -115,9 +119,10 @@ function submitOrder() {
-

چکی ثبت نشده است.

- ثبت چک جدید - ثبت سفارش جدید + + ثبت چک جدید + ثبت سفارش جدید +
diff --git a/src/views/products/components/DesktopProductPage.vue b/src/views/products/components/DesktopProductPage.vue index e91a3c5..3737f19 100644 --- a/src/views/products/components/DesktopProductPage.vue +++ b/src/views/products/components/DesktopProductPage.vue @@ -1,5 +1,6 @@