diff --git a/.github/screenshots/homepage-effect.png b/.github/screenshots/homepage-effect.png
new file mode 100644
index 00000000..1c35b12f
Binary files /dev/null and b/.github/screenshots/homepage-effect.png differ
diff --git a/README.md b/README.md
index 792f32eb..7023fc6f 100644
--- a/README.md
+++ b/README.md
@@ -24,6 +24,12 @@ IT-Tools 是一个基于 Vue 3 构建的在线工具集合,适合开发、排
- 登录与访问控制改为 Cloudflare Access
- 支持部署到 Cloudflare Pages
+## 页面效果
+
+下面是当前首页的实际效果截图,方便快速了解现在的布局和视觉风格:
+
+
+
## 线上部署
当前推荐的部署方式是:
diff --git a/components.d.ts b/components.d.ts
index 3e65c3cc..b675e38d 100644
--- a/components.d.ts
+++ b/components.d.ts
@@ -90,17 +90,28 @@ declare module '@vue/runtime-core' {
HttpStatusCodes: typeof import('./src/tools/http-status-codes/http-status-codes.vue')['default']
IbanValidatorAndParser: typeof import('./src/tools/iban-validator-and-parser/iban-validator-and-parser.vue')['default']
'IconMdi:brushVariant': typeof import('~icons/mdi/brush-variant')['default']
+ 'IconMdi:contentCopy': typeof import('~icons/mdi/content-copy')['default']
'IconMdi:kettleSteamOutline': typeof import('~icons/mdi/kettle-steam-outline')['default']
+ IconMdiArrowDown: typeof import('~icons/mdi/arrow-down')['default']
+ IconMdiArrowRightBottom: typeof import('~icons/mdi/arrow-right-bottom')['default']
+ IconMdiCamera: typeof import('~icons/mdi/camera')['default']
IconMdiChevronDown: typeof import('~icons/mdi/chevron-down')['default']
IconMdiChevronRight: typeof import('~icons/mdi/chevron-right')['default']
IconMdiClose: typeof import('~icons/mdi/close')['default']
IconMdiContentCopy: typeof import('~icons/mdi/content-copy')['default']
+ IconMdiDeleteOutline: typeof import('~icons/mdi/delete-outline')['default']
+ IconMdiDownload: typeof import('~icons/mdi/download')['default']
IconMdiEye: typeof import('~icons/mdi/eye')['default']
IconMdiEyeOff: typeof import('~icons/mdi/eye-off')['default']
- IconMdiHeart: typeof import('~icons/mdi/heart')['default']
+ IconMdiPause: typeof import('~icons/mdi/pause')['default']
+ IconMdiPin: typeof import('~icons/mdi/pin')['default']
+ IconMdiPlay: typeof import('~icons/mdi/play')['default']
+ IconMdiRecord: typeof import('~icons/mdi/record')['default']
+ IconMdiRefresh: typeof import('~icons/mdi/refresh')['default']
IconMdiSearch: typeof import('~icons/mdi/search')['default']
IconMdiTranslate: typeof import('~icons/mdi/translate')['default']
IconMdiTriangleDown: typeof import('~icons/mdi/triangle-down')['default']
+ IconMdiVideo: typeof import('~icons/mdi/video')['default']
InputCopyable: typeof import('./src/components/InputCopyable.vue')['default']
IntegerBaseConverter: typeof import('./src/tools/integer-base-converter/integer-base-converter.vue')['default']
Ipv4AddressConverter: typeof import('./src/tools/ipv4-address-converter/ipv4-address-converter.vue')['default']
@@ -129,20 +140,43 @@ declare module '@vue/runtime-core' {
MenuLayout: typeof import('./src/components/MenuLayout.vue')['default']
MetaTagGenerator: typeof import('./src/tools/meta-tag-generator/meta-tag-generator.vue')['default']
MimeTypes: typeof import('./src/tools/mime-types/mime-types.vue')['default']
+ NAlert: typeof import('naive-ui')['NAlert']
NavbarButtons: typeof import('./src/components/NavbarButtons.vue')['default']
+ NavbarMoreMenu: typeof import('./src/components/NavbarMoreMenu.vue')['default']
+ NButton: typeof import('naive-ui')['NButton']
NCheckbox: typeof import('naive-ui')['NCheckbox']
+ NCode: typeof import('naive-ui')['NCode']
NCollapseTransition: typeof import('naive-ui')['NCollapseTransition']
+ NColorPicker: typeof import('naive-ui')['NColorPicker']
NConfigProvider: typeof import('naive-ui')['NConfigProvider']
+ NDatePicker: typeof import('naive-ui')['NDatePicker']
NDivider: typeof import('naive-ui')['NDivider']
+ NDynamicInput: typeof import('naive-ui')['NDynamicInput']
NEllipsis: typeof import('naive-ui')['NEllipsis']
+ NForm: typeof import('naive-ui')['NForm']
+ NFormItem: typeof import('naive-ui')['NFormItem']
+ NGi: typeof import('naive-ui')['NGi']
+ NGrid: typeof import('naive-ui')['NGrid']
NH1: typeof import('naive-ui')['NH1']
+ NH2: typeof import('naive-ui')['NH2']
NH3: typeof import('naive-ui')['NH3']
NIcon: typeof import('naive-ui')['NIcon']
+ NImage: typeof import('naive-ui')['NImage']
+ NInputGroup: typeof import('naive-ui')['NInputGroup']
+ NInputGroupLabel: typeof import('naive-ui')['NInputGroupLabel']
+ NInputNumber: typeof import('naive-ui')['NInputNumber']
NLayout: typeof import('naive-ui')['NLayout']
NLayoutSider: typeof import('naive-ui')['NLayoutSider']
NMenu: typeof import('naive-ui')['NMenu']
+ NProgress: typeof import('naive-ui')['NProgress']
+ NScrollbar: typeof import('naive-ui')['NScrollbar']
+ NSlider: typeof import('naive-ui')['NSlider']
NSpace: typeof import('naive-ui')['NSpace']
+ NSpin: typeof import('naive-ui')['NSpin']
+ NStatistic: typeof import('naive-ui')['NStatistic']
+ NSwitch: typeof import('naive-ui')['NSwitch']
NTable: typeof import('naive-ui')['NTable']
+ NTag: typeof import('naive-ui')['NTag']
NumeronymGenerator: typeof import('./src/tools/numeronym-generator/numeronym-generator.vue')['default']
OtpCodeGeneratorAndValidator: typeof import('./src/tools/otp-code-generator-and-validator/otp-code-generator-and-validator.vue')['default']
PasswordStrengthAnalyser: typeof import('./src/tools/password-strength-analyser/password-strength-analyser.vue')['default']
diff --git a/index.html b/index.html
index e8b8a60e..30a0c5e0 100644
--- a/index.html
+++ b/index.html
@@ -20,8 +20,8 @@
-
-
+
+
diff --git a/public/apple-touch-icon.png b/public/apple-touch-icon.png
index bef317bf..a4015da5 100644
Binary files a/public/apple-touch-icon.png and b/public/apple-touch-icon.png differ
diff --git a/public/browserconfig.xml b/public/browserconfig.xml
index b3930d0f..c02a721d 100644
--- a/public/browserconfig.xml
+++ b/public/browserconfig.xml
@@ -3,7 +3,7 @@
- #da532c
+ #ead8b0
diff --git a/public/favicon-16x16.png b/public/favicon-16x16.png
index c91c5967..f438ddf1 100644
Binary files a/public/favicon-16x16.png and b/public/favicon-16x16.png differ
diff --git a/public/favicon-32x32.png b/public/favicon-32x32.png
index 6b1d7a49..e62e58c4 100644
Binary files a/public/favicon-32x32.png and b/public/favicon-32x32.png differ
diff --git a/public/favicon.ico b/public/favicon.ico
index a0c39f8f..574eb8ca 100644
Binary files a/public/favicon.ico and b/public/favicon.ico differ
diff --git a/public/mstile-150x150.png b/public/mstile-150x150.png
index 2d6d1a01..b537c264 100644
Binary files a/public/mstile-150x150.png and b/public/mstile-150x150.png differ
diff --git a/public/safari-pinned-tab.svg b/public/safari-pinned-tab.svg
index ed942cc7..ded103a8 100644
--- a/public/safari-pinned-tab.svg
+++ b/public/safari-pinned-tab.svg
@@ -1,6 +1,6 @@
diff --git a/src/components/FavoriteButton.vue b/src/components/FavoriteButton.vue
index e43ed8ab..2c3bd7d9 100644
--- a/src/components/FavoriteButton.vue
+++ b/src/components/FavoriteButton.vue
@@ -24,15 +24,14 @@ function toggleFavorite(event: MouseEvent) {
-
-
-
-
-
+
+
+
diff --git a/src/components/ToolCard.vue b/src/components/ToolCard.vue
index 4ba4564c..1037d791 100644
--- a/src/components/ToolCard.vue
+++ b/src/components/ToolCard.vue
@@ -10,9 +10,12 @@ const theme = useThemeVars();
-
-
-
+
+