From 8d0ed93ee096df8f668cbd4f8288665cb39e6ca6 Mon Sep 17 00:00:00 2001 From: mini2024 Date: Sun, 30 Mar 2025 23:45:01 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=20InspiraUI=20?= =?UTF-8?q?=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 + pnpm-lock.yaml | 53 ++++ .../UI-components/InspiraUI/BubblesBg.vue | 294 ++++++++++++++++++ .../UI-components/InspiraUI/CardSpotlight.vue | 72 +++++ .../InspiraUI/FallingStarsBg.vue | 160 ++++++++++ .../InspiraUI/GradientButton.vue | 75 +++++ .../UI-components/InspiraUI/index.page.vue | 26 ++ typed-router.d.ts | 1 + 8 files changed, 683 insertions(+) create mode 100644 src/pages/UI-components/InspiraUI/BubblesBg.vue create mode 100644 src/pages/UI-components/InspiraUI/CardSpotlight.vue create mode 100644 src/pages/UI-components/InspiraUI/FallingStarsBg.vue create mode 100644 src/pages/UI-components/InspiraUI/GradientButton.vue create mode 100644 src/pages/UI-components/InspiraUI/index.page.vue diff --git a/package.json b/package.json index cfff3eb..0e05278 100644 --- a/package.json +++ b/package.json @@ -73,6 +73,7 @@ "satellite.js": "^5.0.0", "tailwind-merge": "^3.0.2", "tdesign-icons-vue-next": "^0.3.4", + "three": "^0.175.0", "ts-enum-util": "^4.1.0", "utils4u": "^4.2.1", "vant": "^4.9.16", @@ -93,6 +94,7 @@ "@types/mockjs": "^1.0.10", "@types/node": "^22.13.14", "@types/nprogress": "^0.2.3", + "@types/three": "^0.175.0", "@unocss/preset-rem-to-px": "^66.0.0", "@vant/auto-import-resolver": "^1.2.1", "@vitejs/plugin-vue": "^5.2.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index dd4c0be..891bf3a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -115,6 +115,9 @@ importers: tdesign-icons-vue-next: specifier: ^0.3.4 version: 0.3.5(vue@3.5.13(typescript@5.8.2)) + three: + specifier: ^0.175.0 + version: 0.175.0 ts-enum-util: specifier: ^4.1.0 version: 4.1.0 @@ -170,6 +173,9 @@ importers: '@types/nprogress': specifier: ^0.2.3 version: 0.2.3 + '@types/three': + specifier: ^0.175.0 + version: 0.175.0 '@unocss/preset-rem-to-px': specifier: ^66.0.0 version: 66.0.0 @@ -1386,6 +1392,9 @@ packages: '@tsconfig/node22@22.0.1': resolution: {integrity: sha512-VkgOa3n6jvs1p+r3DiwBqeEwGAwEvnVCg/hIjiANl5IEcqP3G0u5m8cBJspe1t9qjZRlZ7WFgqq5bJrGdgAKMg==} + '@tweenjs/tween.js@23.1.3': + resolution: {integrity: sha512-vJmvvwFxYuGnF2axRtPYocag6Clbb5YS7kLL+SO/TeVFzHqDIWrNKYtcsPMibjDx9O+bu+psAy9NKfWklassUA==} + '@tweenjs/tween.js@25.0.0': resolution: {integrity: sha512-XKLA6syeBUaPzx4j3qwMqzzq+V4uo72BnlbOjmuljLrRqdsd3qnzvZZoxvMHZ23ndsRS4aufU6JOZYpCbU6T1A==} @@ -1440,6 +1449,12 @@ packages: '@types/readdir-glob@1.1.5': resolution: {integrity: sha512-raiuEPUYqXu+nvtY2Pe8s8FEmZ3x5yAH4VkLdihcPdalvsHltomrRC9BzuStrJ9yk06470hS0Crw0f1pXqD+Hg==} + '@types/stats.js@0.17.3': + resolution: {integrity: sha512-pXNfAD3KHOdif9EQXZ9deK82HVNaXP5ZIF5RP2QG6OQFNTaY2YIetfrE9t528vEreGQvEPRDDc8muaoYeK0SxQ==} + + '@types/three@0.175.0': + resolution: {integrity: sha512-ldMSBgtZOZ3g9kJ3kOZSEtZIEITmJOzu8eKVpkhf036GuNkM4mt0NXecrjCn5tMm1OblOF7dZehlaDypBfNokw==} + '@types/trusted-types@2.0.7': resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} @@ -1449,6 +1464,9 @@ packages: '@types/web-bluetooth@0.0.21': resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==} + '@types/webxr@0.5.21': + resolution: {integrity: sha512-geZIAtLzjGmgY2JUi6VxXdCrTb99A7yP49lxLr2Nm/uIK0PkkxcEi4OGhoGDO4pxCf3JwGz2GiJL2Ej4K2bKaA==} + '@typescript-eslint/eslint-plugin@8.28.0': resolution: {integrity: sha512-lvFK3TCGAHsItNdWZ/1FkvpzCxTHUVuFrdnOGLMa0GGCFIbCgQWVk3CzCGdA7kM3qGVc+dfW9tr0Z/sHnGDFyg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2015,6 +2033,9 @@ packages: peerDependencies: vue: ^3.5.0 + '@webgpu/types@0.1.60': + resolution: {integrity: sha512-8B/tdfRFKdrnejqmvq95ogp8tf52oZ51p3f4QD5m5Paey/qlX4Rhhy5Y8tgFMi7Ms70HzcMMw3EQjH/jdhTwlA==} + '@zip.js/zip.js@2.7.57': resolution: {integrity: sha512-BtonQ1/jDnGiMed6OkV6rZYW78gLmLswkHOzyMrMb+CAR7CZO8phOHO6c2qw6qb1g1betN7kwEHhhZk30dv+NA==} engines: {bun: '>=0.7.0', deno: '>=1.0.0', node: '>=16.5.0'} @@ -2912,6 +2933,9 @@ packages: picomatch: optional: true + fflate@0.8.2: + resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} + figures@3.2.0: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} @@ -3669,6 +3693,9 @@ packages: mersenne-twister@1.1.0: resolution: {integrity: sha512-mUYWsMKNrm4lfygPkL3OfGzOPTR2DBlTkBNHM//F6hGp8cLThY897crAlk3/Jo17LEOOjQUrNAx6DvgO77QJkA==} + meshoptimizer@0.18.1: + resolution: {integrity: sha512-ZhoIoL7TNV4s5B6+rx5mC//fw8/POGyNxS/DZyCJeiZ12ScLfVwRE/GfsxwiTkMYYD5DmK2/JXnEVXqL4rF+Sw==} + meshoptimizer@0.22.0: resolution: {integrity: sha512-IebiK79sqIy+E4EgOr+CAw+Ke8hAspXKzBd0JdgEmPHiAwmvEj2S4h1rfvo+o/BnfEYd/jAOg5IeeIjzlzSnDg==} @@ -4708,6 +4735,9 @@ packages: text-decoder@1.2.3: resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==} + three@0.175.0: + resolution: {integrity: sha512-nNE3pnTHxXN/Phw768u0Grr7W4+rumGg/H6PgeseNJojkJtmeHJfZWi41Gp2mpXl1pg1pf1zjwR4McM1jTqkpg==} + throttle-debounce@5.0.2: resolution: {integrity: sha512-B71/4oyj61iNH0KeCamLuE2rmKuTO5byTOSVwECM5FA7TiAiAW+UqTKZ9ERueC4qvgSttUhdmq1mXC3kJqGX7A==} engines: {node: '>=12.22'} @@ -6282,6 +6312,8 @@ snapshots: '@tsconfig/node22@22.0.1': {} + '@tweenjs/tween.js@23.1.3': {} + '@tweenjs/tween.js@25.0.0': {} '@tybys/wasm-util@0.9.0': @@ -6333,6 +6365,17 @@ snapshots: dependencies: '@types/node': 22.13.14 + '@types/stats.js@0.17.3': {} + + '@types/three@0.175.0': + dependencies: + '@tweenjs/tween.js': 23.1.3 + '@types/stats.js': 0.17.3 + '@types/webxr': 0.5.21 + '@webgpu/types': 0.1.60 + fflate: 0.8.2 + meshoptimizer: 0.18.1 + '@types/trusted-types@2.0.7': optional: true @@ -6340,6 +6383,8 @@ snapshots: '@types/web-bluetooth@0.0.21': {} + '@types/webxr@0.5.21': {} + '@typescript-eslint/eslint-plugin@8.28.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2)': dependencies: '@eslint-community/regexpp': 4.12.1 @@ -7129,6 +7174,8 @@ snapshots: dependencies: vue: 3.5.13(typescript@5.8.2) + '@webgpu/types@0.1.60': {} + '@zip.js/zip.js@2.7.57': {} abbrev@2.0.0: {} @@ -8163,6 +8210,8 @@ snapshots: optionalDependencies: picomatch: 4.0.2 + fflate@0.8.2: {} + figures@3.2.0: dependencies: escape-string-regexp: 1.0.5 @@ -8895,6 +8944,8 @@ snapshots: mersenne-twister@1.1.0: {} + meshoptimizer@0.18.1: {} + meshoptimizer@0.22.0: {} micromatch@4.0.8: @@ -9971,6 +10022,8 @@ snapshots: dependencies: b4a: 1.6.7 + three@0.175.0: {} + throttle-debounce@5.0.2: {} through@2.3.8: {} diff --git a/src/pages/UI-components/InspiraUI/BubblesBg.vue b/src/pages/UI-components/InspiraUI/BubblesBg.vue new file mode 100644 index 0000000..ae7407b --- /dev/null +++ b/src/pages/UI-components/InspiraUI/BubblesBg.vue @@ -0,0 +1,294 @@ + + + diff --git a/src/pages/UI-components/InspiraUI/CardSpotlight.vue b/src/pages/UI-components/InspiraUI/CardSpotlight.vue new file mode 100644 index 0000000..42967fe --- /dev/null +++ b/src/pages/UI-components/InspiraUI/CardSpotlight.vue @@ -0,0 +1,72 @@ + + + + diff --git a/src/pages/UI-components/InspiraUI/FallingStarsBg.vue b/src/pages/UI-components/InspiraUI/FallingStarsBg.vue new file mode 100644 index 0000000..ee9394e --- /dev/null +++ b/src/pages/UI-components/InspiraUI/FallingStarsBg.vue @@ -0,0 +1,160 @@ + + + diff --git a/src/pages/UI-components/InspiraUI/GradientButton.vue b/src/pages/UI-components/InspiraUI/GradientButton.vue new file mode 100644 index 0000000..97d338d --- /dev/null +++ b/src/pages/UI-components/InspiraUI/GradientButton.vue @@ -0,0 +1,75 @@ + + + + + + diff --git a/src/pages/UI-components/InspiraUI/index.page.vue b/src/pages/UI-components/InspiraUI/index.page.vue new file mode 100644 index 0000000..e4502cd --- /dev/null +++ b/src/pages/UI-components/InspiraUI/index.page.vue @@ -0,0 +1,26 @@ + + + diff --git a/typed-router.d.ts b/typed-router.d.ts index b0185be..24ed803 100644 --- a/typed-router.d.ts +++ b/typed-router.d.ts @@ -37,6 +37,7 @@ declare module 'vue-router/auto-routes' { 'UIComponentsComponents': RouteRecordInfo<'UIComponentsComponents', '/UI-components/Components', Record, Record>, 'UIComponentsInfiniteLoading': RouteRecordInfo<'UIComponentsInfiniteLoading', '/UI-components/infinite-loading', Record, Record>, 'UIComponentsInfiniteLoadingDetail': RouteRecordInfo<'UIComponentsInfiniteLoadingDetail', '/UI-components/infinite-loading/detail', Record, Record>, + 'UIComponentsInspiraUI': RouteRecordInfo<'UIComponentsInspiraUI', '/UI-components/InspiraUI', Record, Record>, 'UIComponentsPrimeVue': RouteRecordInfo<'UIComponentsPrimeVue', '/UI-components/PrimeVue', Record, Record>, 'UIComponentsShadcnVue': RouteRecordInfo<'UIComponentsShadcnVue', '/UI-components/ShadcnVue', Record, Record>, 'VueMacrosDefineRender': RouteRecordInfo<'VueMacrosDefineRender', '/VueMacros/DefineRender', Record, Record>,