From cd8d32ca2bbbb7d2e6891c39b5c41b7a8f6d41bc Mon Sep 17 00:00:00 2001 From: skyfeiz Date: Sun, 1 Dec 2024 21:32:54 +0800 Subject: [PATCH] feat(projects): :tada: init project --- .env | 39 + .env.prod | 7 + .env.test | 7 + CHANGELOG.md | 2686 +++++ CHANGELOG.zh_CN.md | 634 ++ LICENSE | 21 + README.md | 177 +- README.zh_CN.md | 206 + build/config/index.ts | 2 + build/config/proxy.ts | 36 + build/config/time.ts | 12 + build/index.ts | 1 - build/plugins/html.ts | 13 + build/plugins/index.ts | 12 +- build/plugins/router.ts | 26 +- build/plugins/unocss.ts | 5 +- build/plugins/unplugin.ts | 9 +- eslint.config.js | 24 + index.html | 5 +- package.json | 157 +- packages/alova/package.json | 17 + packages/alova/src/client.ts | 1 + packages/alova/src/constant.ts | 2 + packages/alova/src/index.ts | 77 + packages/alova/src/type.ts | 52 + packages/{request => alova}/tsconfig.json | 18 +- packages/axios/package.json | 21 + packages/axios/src/constant.ts | 5 + packages/axios/src/index.ts | 183 + packages/axios/src/options.ts | 48 + packages/axios/src/shared.ts | 28 + packages/axios/src/type.ts | 115 + packages/axios/tsconfig.json | 20 + packages/color-palette/src/color.ts | 29 - packages/color-palette/src/index.ts | 42 - .../color-palette/src/json/color-name.json | 1568 --- packages/color-palette/src/json/palette.json | 274 - packages/color-palette/src/palette.ts | 95 - packages/color-palette/src/type.ts | 63 - .../{color-palette => color}/package.json | 9 +- packages/color/src/constant/index.ts | 2 + packages/color/src/constant/name.ts | 1579 +++ packages/color/src/constant/palette.ts | 356 + packages/color/src/index.ts | 7 + packages/color/src/palette/antd.ts | 176 + packages/color/src/palette/index.ts | 45 + packages/color/src/palette/recommend.ts | 152 + packages/color/src/shared/colord.ts | 93 + packages/color/src/shared/index.ts | 2 + .../src => color/src/shared}/name.ts | 19 +- packages/color/src/types/index.ts | 58 + packages/color/tsconfig.json | 20 + packages/docs/.vitepress/config.ts | 38 - packages/docs/.vitepress/icon.ts | 32 - packages/docs/.vitepress/theme/index.ts | 4 - packages/docs/.vitepress/theme/style.css | 90 - packages/docs/package.json | 12 - packages/docs/src/index.md | 44 - packages/eslint-config/configs/base.js | 6 - packages/eslint-config/configs/js.js | 44 - packages/eslint-config/configs/prettier.js | 11 - packages/eslint-config/configs/ts.js | 61 - packages/eslint-config/configs/vue.js | 30 - packages/eslint-config/index.js | 6 - packages/eslint-config/package.json | 23 - packages/eslint-config/rules/all.js | 1681 --- packages/eslint-config/rules/prettier.js | 26 - packages/hooks/package.json | 10 +- packages/hooks/src/index.ts | 8 +- packages/hooks/src/use-boolean.ts | 5 +- packages/hooks/src/use-context.ts | 116 +- packages/hooks/src/use-count-down.ts | 49 + packages/hooks/src/use-loading.ts | 5 +- packages/hooks/src/use-request.ts | 79 + packages/hooks/src/use-signal.ts | 144 + packages/hooks/src/use-svg-icon-render.ts | 50 + packages/hooks/src/use-table.ts | 152 + packages/hooks/tsconfig.json | 18 +- packages/materials/.eslintrc | 6 - packages/materials/package.json | 11 +- packages/materials/src/index.ts | 5 +- .../libs/admin-layout/index.module.css.d.ts | 3 +- .../materials/src/libs/admin-layout/index.ts | 2 + .../materials/src/libs/admin-layout/index.vue | 266 +- .../materials/src/libs/admin-layout/shared.ts | 18 +- .../src/libs/page-tab/button-tab.vue | 70 +- .../src/libs/page-tab/chrome-tab-bg.vue | 48 +- .../src/libs/page-tab/chrome-tab.vue | 57 +- .../src/libs/page-tab/index.module.css | 10 +- .../src/libs/page-tab/index.module.css.d.ts | 5 +- .../materials/src/libs/page-tab/index.vue | 56 +- .../materials/src/libs/page-tab/shared.ts | 8 +- .../{icon-close.vue => svg-close.vue} | 29 +- .../src/libs/simple-scrollbar/index.ts | 3 + .../src/libs/simple-scrollbar/index.vue | 18 + packages/materials/src/libs/tooltip/index.vue | 18 - packages/materials/src/types/index.ts | 188 +- packages/materials/tsconfig.json | 18 +- packages/{request => ofetch}/package.json | 10 +- packages/{request => ofetch}/src/index.ts | 0 packages/ofetch/tsconfig.json | 20 + packages/scripts/bin.cjs | 6 - packages/scripts/bin.ts | 3 + packages/scripts/package.json | 25 +- packages/scripts/src/commands/changelog.ts | 10 + packages/scripts/src/commands/git-commit.ts | 61 +- packages/scripts/src/commands/index.ts | 5 +- packages/scripts/src/commands/lint-staged.ts | 5 - packages/scripts/src/commands/prettier.ts | 7 - packages/scripts/src/commands/release.ts | 12 + packages/scripts/src/commands/router.ts | 90 + packages/scripts/src/config/index.ts | 59 +- packages/scripts/src/index.ts | 69 +- packages/scripts/src/locales/index.ts | 82 + packages/scripts/src/shared/index.ts | 2 +- packages/scripts/src/types/index.ts | 38 +- packages/scripts/tsconfig.json | 18 +- packages/scripts/typings/pkg.d.ts | 15 - packages/uno-preset/package.json | 6 +- packages/uno-preset/src/index.ts | 20 +- packages/uno-preset/tsconfig.json | 18 +- packages/utils/package.json | 12 +- packages/utils/src/color.ts | 257 - packages/utils/src/crypto.ts | 4 +- packages/utils/src/index.ts | 3 +- packages/utils/src/klona.ts | 3 + packages/utils/src/nanoid.ts | 3 + packages/utils/src/storage.ts | 26 +- packages/utils/tsconfig.json | 20 + pnpm-lock.yaml | 9745 ++++++++++------- public/logo.png | Bin 23414 -> 0 bytes src/App.vue | 36 +- src/assets/imgs/soybean.jpg | Bin 0 -> 114241 bytes src/assets/svg-icon/logo-fill.svg | 1 - .../advanced/table-column-setting.vue | 35 + .../advanced/table-header-operation.vue | 72 + src/components/common/app-loading.vue | 42 - src/components/common/app-provider.vue | 31 + src/components/common/color-schema-switch.vue | 38 - src/components/common/dark-mode-container.vue | 8 +- src/components/common/exception-base.vue | 12 +- src/components/common/full-screen.vue | 20 + src/components/common/hover-container.vue | 11 - src/components/common/lang-switch.vue | 69 + src/components/common/menu-toggler.vue | 53 + src/components/common/pin-toggler.vue | 26 + src/components/common/reload-button.vue | 19 + src/components/common/system-logo.vue | 12 +- src/components/common/theme-schema-switch.vue | 56 + src/components/custom/better-scroll.vue | 53 + src/components/custom/button-icon.vue | 45 + src/components/custom/count-to.vue | 88 + src/components/custom/custom-icon-select.vue | 78 + src/components/custom/github-link.vue | 18 + src/components/custom/look-forward.vue | 10 +- src/components/custom/menu-toggler.vue | 18 - src/components/custom/soybean-avatar.vue | 11 + src/components/custom/svg-icon.vue | 43 +- src/components/custom/wave-bg.vue | 18 +- src/components/custom/web-site-link.vue | 23 + src/constants/app.ts | 83 +- src/constants/business.ts | 29 + src/constants/common.ts | 8 + src/constants/map-sdk.ts | 8 + src/constants/reg.ts | 25 + src/enum/index.ts | 4 +- src/hooks/business/auth.ts | 21 + src/hooks/business/captcha.ts | 71 + src/hooks/common/echarts.ts | 235 + src/hooks/common/form.ts | 97 + src/hooks/common/icon.ts | 10 + src/hooks/common/router.ts | 68 +- src/hooks/common/table.ts | 270 + src/layouts/base-layout/index.vue | 126 +- src/layouts/blank-layout/index.vue | 4 +- src/layouts/components/global-logo.vue | 18 - src/layouts/context/index.ts | 83 + .../modules/global-breadcrumb/index.vue | 52 + src/layouts/modules/global-content/index.vue | 47 +- src/layouts/modules/global-footer/index.vue | 6 +- .../global-header/components/switch-lang.vue | 72 - .../global-header/components/theme-button.vue | 18 + .../global-header/components/user-avatar.vue | 105 +- src/layouts/modules/global-header/index.vue | 48 +- src/layouts/modules/global-logo/index.vue | 25 + .../components/first-level-menu.vue | 106 + .../global-menu/components/menu-item.vue | 36 + src/layouts/modules/global-menu/index.vue | 37 + .../global-menu/modules/horizontal-menu.vue | 28 + .../modules/horizontal-mix-menu.vue | 54 + .../modules/reversed-horizontal-mix-menu.vue | 83 + .../global-menu/modules/vertical-menu.vue | 58 + .../global-menu/modules/vertical-mix-menu.vue | 129 + .../components/search-footer.vue | 36 + .../global-search/components/search-modal.vue | 128 + .../components/search-result.vue | 56 + src/layouts/modules/global-search/index.vue | 18 + src/layouts/modules/global-sider/index.vue | 25 +- .../modules/global-tab/context-menu.vue | 148 + src/layouts/modules/global-tab/index.vue | 202 +- .../components/layout-mode-card.vue | 92 + .../theme-drawer/components/setting-item.vue | 22 + src/layouts/modules/theme-drawer/index.vue | 27 + .../theme-drawer/modules/config-operation.vue | 56 + .../theme-drawer/modules/dark-mode.vue | 69 + .../theme-drawer/modules/layout-mode.vue | 79 + .../modules/theme-drawer/modules/page-fun.vue | 139 + .../theme-drawer/modules/theme-color.vue | 78 + src/locales/dayjs.ts | 20 + src/locales/index.ts | 3 +- src/locales/lang/en.ts | 88 - src/locales/lang/zh-CN.ts | 88 - src/locales/langs/en-us.ts | 510 + src/locales/langs/zh-cn.ts | 510 + src/locales/locale.ts | 6 +- src/locales/ui.ts | 13 + src/main.ts | 19 +- src/plugins/app.ts | 74 + src/plugins/assets.ts | 8 +- src/plugins/dayjs.ts | 9 + src/plugins/iconify.ts | 12 + src/plugins/index.ts | 5 + src/plugins/loading.ts | 45 + src/plugins/nprogress.ts | 4 +- src/plugins/ui.ts | 13 + src/router/elegant/imports.ts | 31 +- src/router/elegant/routes.ts | 582 +- src/router/elegant/transform.ts | 231 +- src/router/guard/index.ts | 19 +- src/router/guard/progress.ts | 11 + src/router/guard/route.ts | 215 + src/router/guard/title.ts | 13 + src/router/index.ts | 16 +- src/router/routes/builtin.ts | 31 + src/router/routes/index.ts | 200 +- src/service/api/auth.ts | 48 + src/service/api/index.ts | 3 + src/service/api/route.ts | 20 + src/service/api/system-manage.ts | 55 + src/service/request/index.ts | 177 + src/service/request/shared.ts | 65 + src/service/request/type.ts | 6 + src/store/index.ts | 4 +- src/store/modules/app/index.ts | 165 + src/store/modules/auth/index.ts | 125 +- src/store/modules/auth/shared.ts | 12 + src/store/modules/route/index.ts | 371 +- src/store/modules/route/shared.ts | 335 + src/store/modules/tab/index.ts | 296 + src/store/modules/tab/shared.ts | 251 + src/store/modules/theme/index.ts | 238 +- src/store/modules/theme/shared.ts | 329 +- src/store/plugins/index.ts | 7 +- src/styles/css/global.css | 13 + src/styles/{ => css}/nprogress.css | 0 src/styles/{ => css}/reset.css | 27 +- src/styles/css/transition.css | 82 + src/styles/global.css | 8 - src/styles/scss/element-plus.scss | 182 + src/styles/scss/global.scss | 2 + src/styles/scss/scrollbar.scss | 21 + src/theme/settings.ts | 90 + src/theme/vars.ts | 14 +- src/typings/api.d.ts | 225 + src/typings/app.d.ts | 687 +- src/typings/common.d.ts | 35 +- src/typings/components.d.ts | 99 +- src/typings/elegant-router.d.ts | 283 +- src/typings/env.d.ts | 131 +- src/typings/global.d.ts | 29 +- src/typings/naive-ui.d.ts | 68 + src/typings/package.d.ts | 20 + src/typings/router.d.ts | 83 +- src/typings/storage.d.ts | 42 +- src/typings/union-key.d.ts | 47 +- src/utils/agent.ts | 5 + src/utils/common.ts | 58 +- src/utils/icon.ts | 9 + src/utils/service.ts | 75 + src/utils/storage.ts | 8 +- src/views/_builtin/iframe-page/[url].vue | 25 + .../_builtin/login/components/code-login.vue | 26 - .../_builtin/login/components/pwd-login.vue | 40 - .../_builtin/login/components/register.vue | 26 - src/views/_builtin/login/index.vue | 98 +- .../reset-pwd.vue => modules/bind-wechat.vue} | 4 +- .../_builtin/login/modules/code-login.vue | 58 + .../_builtin/login/modules/pwd-login.vue | 122 + src/views/_builtin/login/modules/register.vue | 86 + .../_builtin/login/modules/reset-pwd.vue | 80 + src/views/about/index.vue | 87 + .../hide-child/one}/index.vue | 0 .../hide-child/three/index.vue} | 0 src/views/function/hide-child/two/index.vue | 7 + src/views/function/multi-tab/index.vue | 24 + src/views/function/request/index.vue | 57 + src/views/function/super-page/index.vue | 7 + src/views/function/tab/index.vue | 62 + src/views/function/toggle-auth/index.vue | 99 + src/views/home/index.vue | 40 +- src/views/home/modules/card-data.vue | 106 + src/views/home/modules/creativity-banner.vue | 15 + src/views/home/modules/header-banner.vue | 52 + src/views/home/modules/line-chart.vue | 149 + src/views/home/modules/pie-chart.vue | 107 + src/views/home/modules/project-news.vue | 43 + src/views/manage/menu/index.vue | 265 + .../menu/modules/menu-operate-modal.vue | 551 + src/views/manage/menu/modules/shared.ts | 79 + src/views/manage/role/index.vue | 182 + .../manage/role/modules/button-auth-modal.vue | 105 + .../manage/role/modules/menu-auth-modal.vue | 132 + .../role/modules/role-operate-drawer.vue | 130 + src/views/manage/role/modules/role-search.vue | 79 + .../user-detail/[id].vue} | 10 +- src/views/manage/user/index.vue | 216 + .../user/modules/user-operate-drawer.vue | 159 + src/views/manage/user/modules/user-search.vue | 116 + src/views/multi-menu/first_child/index.vue | 8 +- .../multi-menu/second_child_home/index.vue | 8 +- src/views/plugin/barcode/index.vue | 116 + src/views/plugin/charts/echarts/data.ts | 706 ++ src/views/plugin/charts/echarts/index.vue | 93 + src/views/plugin/copy/index.vue | 39 + src/views/plugin/editor/markdown/index.vue | 52 + src/views/plugin/editor/quill/index.vue | 47 + src/views/plugin/excel/index.vue | 193 + src/views/plugin/gantt/data.ts | 173 + src/views/plugin/gantt/index.vue | 174 + src/views/plugin/icon/icons.ts | 32 + src/views/plugin/icon/index.vue | 53 + src/views/plugin/map/components/baidu-map.vue | 32 + src/views/plugin/map/components/gaode-map.vue | 32 + src/views/plugin/map/components/index.ts | 5 + .../plugin/map/components/tencent-map.vue | 32 + src/views/plugin/map/index.vue | 42 + src/views/plugin/pdf/index.vue | 91 + src/views/plugin/pinyin/index.vue | 59 + src/views/plugin/print/index.vue | 41 + src/views/plugin/swiper/index.vue | 60 + src/views/plugin/typeit/index.vue | 44 + src/views/plugin/video/index.vue | 43 + tsconfig.json | 32 +- uno.config.ts | 6 +- vite.config.ts | 34 +- 345 files changed, 30041 insertions(+), 10953 deletions(-) create mode 100644 .env.prod create mode 100644 .env.test create mode 100644 CHANGELOG.md create mode 100644 CHANGELOG.zh_CN.md create mode 100644 LICENSE create mode 100644 README.zh_CN.md create mode 100644 build/config/index.ts create mode 100644 build/config/proxy.ts create mode 100644 build/config/time.ts delete mode 100644 build/index.ts create mode 100644 build/plugins/html.ts create mode 100644 eslint.config.js create mode 100644 packages/alova/package.json create mode 100644 packages/alova/src/client.ts create mode 100644 packages/alova/src/constant.ts create mode 100644 packages/alova/src/index.ts create mode 100644 packages/alova/src/type.ts rename packages/{request => alova}/tsconfig.json (86%) create mode 100644 packages/axios/package.json create mode 100644 packages/axios/src/constant.ts create mode 100644 packages/axios/src/index.ts create mode 100644 packages/axios/src/options.ts create mode 100644 packages/axios/src/shared.ts create mode 100644 packages/axios/src/type.ts create mode 100644 packages/axios/tsconfig.json delete mode 100644 packages/color-palette/src/color.ts delete mode 100644 packages/color-palette/src/index.ts delete mode 100644 packages/color-palette/src/json/color-name.json delete mode 100644 packages/color-palette/src/json/palette.json delete mode 100644 packages/color-palette/src/palette.ts delete mode 100644 packages/color-palette/src/type.ts rename packages/{color-palette => color}/package.json (58%) create mode 100644 packages/color/src/constant/index.ts create mode 100644 packages/color/src/constant/name.ts create mode 100644 packages/color/src/constant/palette.ts create mode 100644 packages/color/src/index.ts create mode 100644 packages/color/src/palette/antd.ts create mode 100644 packages/color/src/palette/index.ts create mode 100644 packages/color/src/palette/recommend.ts create mode 100644 packages/color/src/shared/colord.ts create mode 100644 packages/color/src/shared/index.ts rename packages/{color-palette/src => color/src/shared}/name.ts (67%) create mode 100644 packages/color/src/types/index.ts create mode 100644 packages/color/tsconfig.json delete mode 100644 packages/docs/.vitepress/config.ts delete mode 100644 packages/docs/.vitepress/icon.ts delete mode 100644 packages/docs/.vitepress/theme/index.ts delete mode 100644 packages/docs/.vitepress/theme/style.css delete mode 100644 packages/docs/package.json delete mode 100644 packages/docs/src/index.md delete mode 100644 packages/eslint-config/configs/base.js delete mode 100644 packages/eslint-config/configs/js.js delete mode 100644 packages/eslint-config/configs/prettier.js delete mode 100644 packages/eslint-config/configs/ts.js delete mode 100644 packages/eslint-config/configs/vue.js delete mode 100644 packages/eslint-config/index.js delete mode 100644 packages/eslint-config/package.json delete mode 100644 packages/eslint-config/rules/all.js delete mode 100644 packages/eslint-config/rules/prettier.js create mode 100644 packages/hooks/src/use-count-down.ts create mode 100644 packages/hooks/src/use-request.ts create mode 100644 packages/hooks/src/use-signal.ts create mode 100644 packages/hooks/src/use-svg-icon-render.ts create mode 100644 packages/hooks/src/use-table.ts delete mode 100644 packages/materials/.eslintrc rename packages/materials/src/libs/page-tab/{icon-close.vue => svg-close.vue} (64%) create mode 100644 packages/materials/src/libs/simple-scrollbar/index.ts create mode 100644 packages/materials/src/libs/simple-scrollbar/index.vue delete mode 100644 packages/materials/src/libs/tooltip/index.vue rename packages/{request => ofetch}/package.json (52%) rename packages/{request => ofetch}/src/index.ts (100%) create mode 100644 packages/ofetch/tsconfig.json delete mode 100755 packages/scripts/bin.cjs create mode 100755 packages/scripts/bin.ts create mode 100644 packages/scripts/src/commands/changelog.ts delete mode 100644 packages/scripts/src/commands/lint-staged.ts delete mode 100644 packages/scripts/src/commands/prettier.ts create mode 100644 packages/scripts/src/commands/release.ts create mode 100644 packages/scripts/src/commands/router.ts create mode 100644 packages/scripts/src/locales/index.ts delete mode 100644 packages/scripts/typings/pkg.d.ts delete mode 100644 packages/utils/src/color.ts create mode 100644 packages/utils/src/klona.ts create mode 100644 packages/utils/src/nanoid.ts create mode 100644 packages/utils/tsconfig.json delete mode 100644 public/logo.png create mode 100644 src/assets/imgs/soybean.jpg delete mode 100644 src/assets/svg-icon/logo-fill.svg create mode 100644 src/components/advanced/table-column-setting.vue create mode 100644 src/components/advanced/table-header-operation.vue delete mode 100644 src/components/common/app-loading.vue create mode 100644 src/components/common/app-provider.vue delete mode 100644 src/components/common/color-schema-switch.vue create mode 100644 src/components/common/full-screen.vue delete mode 100644 src/components/common/hover-container.vue create mode 100644 src/components/common/lang-switch.vue create mode 100644 src/components/common/menu-toggler.vue create mode 100644 src/components/common/pin-toggler.vue create mode 100644 src/components/common/reload-button.vue create mode 100644 src/components/common/theme-schema-switch.vue create mode 100644 src/components/custom/better-scroll.vue create mode 100644 src/components/custom/button-icon.vue create mode 100644 src/components/custom/count-to.vue create mode 100644 src/components/custom/custom-icon-select.vue create mode 100644 src/components/custom/github-link.vue delete mode 100644 src/components/custom/menu-toggler.vue create mode 100644 src/components/custom/soybean-avatar.vue create mode 100644 src/components/custom/web-site-link.vue create mode 100644 src/constants/business.ts create mode 100644 src/constants/common.ts create mode 100644 src/constants/map-sdk.ts create mode 100644 src/constants/reg.ts create mode 100644 src/hooks/business/auth.ts create mode 100644 src/hooks/business/captcha.ts create mode 100644 src/hooks/common/echarts.ts create mode 100644 src/hooks/common/form.ts create mode 100644 src/hooks/common/icon.ts create mode 100644 src/hooks/common/table.ts delete mode 100644 src/layouts/components/global-logo.vue create mode 100644 src/layouts/context/index.ts create mode 100644 src/layouts/modules/global-breadcrumb/index.vue delete mode 100644 src/layouts/modules/global-header/components/switch-lang.vue create mode 100644 src/layouts/modules/global-header/components/theme-button.vue create mode 100644 src/layouts/modules/global-logo/index.vue create mode 100644 src/layouts/modules/global-menu/components/first-level-menu.vue create mode 100644 src/layouts/modules/global-menu/components/menu-item.vue create mode 100644 src/layouts/modules/global-menu/index.vue create mode 100644 src/layouts/modules/global-menu/modules/horizontal-menu.vue create mode 100644 src/layouts/modules/global-menu/modules/horizontal-mix-menu.vue create mode 100644 src/layouts/modules/global-menu/modules/reversed-horizontal-mix-menu.vue create mode 100644 src/layouts/modules/global-menu/modules/vertical-menu.vue create mode 100644 src/layouts/modules/global-menu/modules/vertical-mix-menu.vue create mode 100644 src/layouts/modules/global-search/components/search-footer.vue create mode 100644 src/layouts/modules/global-search/components/search-modal.vue create mode 100644 src/layouts/modules/global-search/components/search-result.vue create mode 100644 src/layouts/modules/global-search/index.vue create mode 100644 src/layouts/modules/global-tab/context-menu.vue create mode 100644 src/layouts/modules/theme-drawer/components/layout-mode-card.vue create mode 100644 src/layouts/modules/theme-drawer/components/setting-item.vue create mode 100644 src/layouts/modules/theme-drawer/index.vue create mode 100644 src/layouts/modules/theme-drawer/modules/config-operation.vue create mode 100644 src/layouts/modules/theme-drawer/modules/dark-mode.vue create mode 100644 src/layouts/modules/theme-drawer/modules/layout-mode.vue create mode 100644 src/layouts/modules/theme-drawer/modules/page-fun.vue create mode 100644 src/layouts/modules/theme-drawer/modules/theme-color.vue create mode 100644 src/locales/dayjs.ts delete mode 100644 src/locales/lang/en.ts delete mode 100644 src/locales/lang/zh-CN.ts create mode 100644 src/locales/langs/en-us.ts create mode 100644 src/locales/langs/zh-cn.ts create mode 100644 src/locales/ui.ts create mode 100644 src/plugins/app.ts create mode 100644 src/plugins/dayjs.ts create mode 100644 src/plugins/iconify.ts create mode 100644 src/plugins/loading.ts create mode 100644 src/plugins/ui.ts create mode 100644 src/router/guard/progress.ts create mode 100644 src/router/guard/route.ts create mode 100644 src/router/guard/title.ts create mode 100644 src/router/routes/builtin.ts create mode 100644 src/service/api/auth.ts create mode 100644 src/service/api/index.ts create mode 100644 src/service/api/route.ts create mode 100644 src/service/api/system-manage.ts create mode 100644 src/service/request/index.ts create mode 100644 src/service/request/shared.ts create mode 100644 src/service/request/type.ts create mode 100644 src/store/modules/app/index.ts create mode 100644 src/store/modules/auth/shared.ts create mode 100644 src/store/modules/route/shared.ts create mode 100644 src/store/modules/tab/index.ts create mode 100644 src/store/modules/tab/shared.ts create mode 100644 src/styles/css/global.css rename src/styles/{ => css}/nprogress.css (100%) rename src/styles/{ => css}/reset.css (95%) create mode 100644 src/styles/css/transition.css delete mode 100644 src/styles/global.css create mode 100644 src/styles/scss/element-plus.scss create mode 100644 src/styles/scss/global.scss create mode 100644 src/styles/scss/scrollbar.scss create mode 100644 src/theme/settings.ts create mode 100644 src/typings/api.d.ts create mode 100644 src/typings/naive-ui.d.ts create mode 100644 src/typings/package.d.ts create mode 100644 src/utils/agent.ts create mode 100644 src/utils/icon.ts create mode 100644 src/utils/service.ts create mode 100644 src/views/_builtin/iframe-page/[url].vue delete mode 100644 src/views/_builtin/login/components/code-login.vue delete mode 100644 src/views/_builtin/login/components/pwd-login.vue delete mode 100644 src/views/_builtin/login/components/register.vue rename src/views/_builtin/login/{components/reset-pwd.vue => modules/bind-wechat.vue} (71%) create mode 100644 src/views/_builtin/login/modules/code-login.vue create mode 100644 src/views/_builtin/login/modules/pwd-login.vue create mode 100644 src/views/_builtin/login/modules/register.vue create mode 100644 src/views/_builtin/login/modules/reset-pwd.vue create mode 100644 src/views/about/index.vue rename src/views/{user/list => function/hide-child/one}/index.vue (100%) rename src/views/{user/detail/[id].vue => function/hide-child/three/index.vue} (100%) create mode 100644 src/views/function/hide-child/two/index.vue create mode 100644 src/views/function/multi-tab/index.vue create mode 100644 src/views/function/request/index.vue create mode 100644 src/views/function/super-page/index.vue create mode 100644 src/views/function/tab/index.vue create mode 100644 src/views/function/toggle-auth/index.vue create mode 100644 src/views/home/modules/card-data.vue create mode 100644 src/views/home/modules/creativity-banner.vue create mode 100644 src/views/home/modules/header-banner.vue create mode 100644 src/views/home/modules/line-chart.vue create mode 100644 src/views/home/modules/pie-chart.vue create mode 100644 src/views/home/modules/project-news.vue create mode 100644 src/views/manage/menu/index.vue create mode 100644 src/views/manage/menu/modules/menu-operate-modal.vue create mode 100644 src/views/manage/menu/modules/shared.ts create mode 100644 src/views/manage/role/index.vue create mode 100644 src/views/manage/role/modules/button-auth-modal.vue create mode 100644 src/views/manage/role/modules/menu-auth-modal.vue create mode 100644 src/views/manage/role/modules/role-operate-drawer.vue create mode 100644 src/views/manage/role/modules/role-search.vue rename src/views/{_builtin/login/components/bind-wechat.vue => manage/user-detail/[id].vue} (52%) create mode 100644 src/views/manage/user/index.vue create mode 100644 src/views/manage/user/modules/user-operate-drawer.vue create mode 100644 src/views/manage/user/modules/user-search.vue create mode 100644 src/views/plugin/barcode/index.vue create mode 100644 src/views/plugin/charts/echarts/data.ts create mode 100644 src/views/plugin/charts/echarts/index.vue create mode 100644 src/views/plugin/copy/index.vue create mode 100644 src/views/plugin/editor/markdown/index.vue create mode 100644 src/views/plugin/editor/quill/index.vue create mode 100644 src/views/plugin/excel/index.vue create mode 100644 src/views/plugin/gantt/data.ts create mode 100644 src/views/plugin/gantt/index.vue create mode 100644 src/views/plugin/icon/icons.ts create mode 100644 src/views/plugin/icon/index.vue create mode 100644 src/views/plugin/map/components/baidu-map.vue create mode 100644 src/views/plugin/map/components/gaode-map.vue create mode 100644 src/views/plugin/map/components/index.ts create mode 100644 src/views/plugin/map/components/tencent-map.vue create mode 100644 src/views/plugin/map/index.vue create mode 100644 src/views/plugin/pdf/index.vue create mode 100644 src/views/plugin/pinyin/index.vue create mode 100644 src/views/plugin/print/index.vue create mode 100644 src/views/plugin/swiper/index.vue create mode 100644 src/views/plugin/typeit/index.vue create mode 100644 src/views/plugin/video/index.vue diff --git a/.env b/.env index c5b7790..ace03e3 100644 --- a/.env +++ b/.env @@ -10,3 +10,42 @@ VITE_ICON_PREFIX=icon # the prefix of the local svg icon component, must include VITE_ICON_PREFIX # format {VITE_ICON_PREFIX}-{local icon name} VITE_ICON_LOCAL_PREFIX=icon-local + +# auth route mode: static | dynamic +VITE_AUTH_ROUTE_MODE=static + +# static auth route home +VITE_ROUTE_HOME=home + +# default menu icon +VITE_MENU_ICON=mdi:menu + +# whether to enable http proxy when is dev mode +VITE_HTTP_PROXY=Y + +# vue-router mode: hash | history | memory +VITE_ROUTER_HISTORY_MODE=history + +# success code of backend service, when the code is received, the request is successful +VITE_SERVICE_SUCCESS_CODE=0000 + +# logout codes of backend service, when the code is received, the user will be logged out and redirected to login page +VITE_SERVICE_LOGOUT_CODES=8888,8889 + +# modal logout codes of backend service, when the code is received, the user will be logged out by displaying a modal +VITE_SERVICE_MODAL_LOGOUT_CODES=7777,7778 + +# token expired codes of backend service, when the code is received, it will refresh the token and resend the request +VITE_SERVICE_EXPIRED_TOKEN_CODES=9999,9998,3333 + +# when the route mode is static, the defined super role +VITE_STATIC_SUPER_ROLE=R_SUPER + +# sourcemap +VITE_SOURCE_MAP=N + +# Used to differentiate storage across different domains +VITE_STORAGE_PREFIX=SOY_ + +# used to control whether the program automatically detects updates +VITE_AUTOMATICALLY_DETECT_UPDATE=Y diff --git a/.env.prod b/.env.prod new file mode 100644 index 0000000..f567764 --- /dev/null +++ b/.env.prod @@ -0,0 +1,7 @@ +# backend service base url, prod environment +VITE_SERVICE_BASE_URL=https://mock.apifox.cn/m1/3109515-0-default + +# other backend service base url, prod environment +VITE_OTHER_SERVICE_BASE_URL= `{ + "demo": "http://localhost:9529" +}` diff --git a/.env.test b/.env.test new file mode 100644 index 0000000..dd18d7b --- /dev/null +++ b/.env.test @@ -0,0 +1,7 @@ +# backend service base url, test environment +VITE_SERVICE_BASE_URL=https://mock.apifox.cn/m1/3109515-0-default + +# other backend service base url, test environment +VITE_OTHER_SERVICE_BASE_URL= `{ + "demo": "http://localhost:9528" +}` diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..e4f661a --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,2686 @@ +# Changelog + + +## [v1.3.7](https://github.com/soybeanjs/soybean-admin/compare/v1.3.6...v1.3.7) (2024-09-21) + +###    🚨 Breaking Changes + +- **projects**: update scss config  -  by @soybeanjs [(24e9e)](https://github.com/soybeanjs/soybean-admin/commit/24e9e57) + +###    🐞 Bug Fixes + +- **projects**: fix global-tab click conflict with contextmenu  -  by @soybeanjs [(3e72c)](https://github.com/soybeanjs/soybean-admin/commit/3e72c3b) + +###    💅 Refactors + +- **packages**: @sa/materials: remove tab close shortcut by mouse  -  by @soybeanjs [(4da58)](https://github.com/soybeanjs/soybean-admin/commit/4da588c) + +###    🏡 Chore + +- **deps**: update deps  -  by @soybeanjs [(baefd)](https://github.com/soybeanjs/soybean-admin/commit/baefdfd) + +###    ❤️ Contributors + +[![soybeanjs](https://github.com/soybeanjs.png?size=48)](https://github.com/soybeanjs)   + +## [v1.3.6](https://github.com/soybeanjs/soybean-admin/compare/v1.3.5...v1.3.6) (2024-09-20) + +###    🐞 Bug Fixes + +- **components**: + - fix VerticalMixMenu name  -  by @soybeanjs [(20f8e)](https://github.com/soybeanjs/soybean-admin/commit/20f8ed3) +- **projects**: + - fix click global-tab in iPad. fixed #624  -  by @soybeanjs in https://github.com/soybeanjs/soybean-admin/issues/624 [(04d05)](https://github.com/soybeanjs/soybean-admin/commit/04d0564) + - when the roles filter submenu is empty, the parent menu is not excluded. fixed #621.  -  by @Azir-11 in https://github.com/soybeanjs/soybean-admin/issues/626 and https://github.com/soybeanjs/soybean-admin/issues/621 [(0ac95)](https://github.com/soybeanjs/soybean-admin/commit/0ac95bd) + +###    🛠 Optimizations + +- **projects**: + - optimize code  -  by @soybeanjs [(6561f)](https://github.com/soybeanjs/soybean-admin/commit/6561f0b) + - optimize code  -  by @soybeanjs [(38eeb)](https://github.com/soybeanjs/soybean-admin/commit/38eeb67) + - remove defineModel setting,enabled by default  -  by @yanbowe in https://github.com/soybeanjs/soybean-admin/issues/620 [(60bbd)](https://github.com/soybeanjs/soybean-admin/commit/60bbd2d) + +###    📖 Documentation + +- **projects**: update CHANGELOG  -  by @soybeanjs [(5baf1)](https://github.com/soybeanjs/soybean-admin/commit/5baf19d) + +###    🏡 Chore + +- **deps**: + - update deps  -  by @soybeanjs [(207d6)](https://github.com/soybeanjs/soybean-admin/commit/207d6eb) + - update deps  -  by @soybeanjs [(f3562)](https://github.com/soybeanjs/soybean-admin/commit/f35627e) + +###    ❤️ Contributors + +[![soybeanjs](https://github.com/soybeanjs.png?size=48)](https://github.com/soybeanjs)  [![Azir-11](https://github.com/Azir-11.png?size=48)](https://github.com/Azir-11)  [![yanbowe](https://github.com/yanbowe.png?size=48)](https://github.com/yanbowe)   + +## [v1.3.5](https://github.com/soybeanjs/soybean-admin/compare/v1.3.4...v1.3.5) (2024-09-07) + +###    🚀 Features + +- **packages**: + - @sa/axios: add response to flatRequest when success  -  by @soybeanjs [(c4e16)](https://github.com/soybeanjs/soybean-admin/commit/c4e1610) +- **projects**: + - README.zh_CN.md 添加合作推广  -  by @PZ-18664918826 in https://github.com/soybeanjs/soybean-admin/issues/601 [(2fa40)](https://github.com/soybeanjs/soybean-admin/commit/2fa400b) + - Add more commit types according to Apache specifications  -  by @Azir-11 in https://github.com/soybeanjs/soybean-admin/issues/610 [(878d9)](https://github.com/soybeanjs/soybean-admin/commit/878d9c3) + - does the configuration support automatic updates. close#612  -  by @Azir-11 in https://github.com/soybeanjs/soybean-admin/issues/617 and https://github.com/soybeanjs/soybean-admin/issues/612 [(4c9f4)](https://github.com/soybeanjs/soybean-admin/commit/4c9f4e0) + - add app error handler. close #587  -  by @soybeanjs in https://github.com/soybeanjs/soybean-admin/issues/587 [(be855)](https://github.com/soybeanjs/soybean-admin/commit/be8556c) + +###    🐞 Bug Fixes + +- **deps**: + - move json5 from devDependencies to dependencies to support production usage  -  by @mufeng889 in https://github.com/soybeanjs/soybean-admin/issues/618 [(7cb43)](https://github.com/soybeanjs/soybean-admin/commit/7cb43fc) +- **projects**: + - avoid retrieving cached HTML  -  by @Azir-11 in https://github.com/soybeanjs/soybean-admin/issues/605 [(ef6cf)](https://github.com/soybeanjs/soybean-admin/commit/ef6cf93) + - fix login redirect  -  by @soybeanjs [(3830e)](https://github.com/soybeanjs/soybean-admin/commit/3830ec7) + - fix vertical-mix-menu when sider collapse. fixed #608  -  by @soybeanjs in https://github.com/soybeanjs/soybean-admin/issues/608 [(c3f1f)](https://github.com/soybeanjs/soybean-admin/commit/c3f1f69) + - fix breadcrumb when activeMenu is parent menu. fixed #589  -  by @soybeanjs in https://github.com/soybeanjs/soybean-admin/issues/589 [(79b2a)](https://github.com/soybeanjs/soybean-admin/commit/79b2a28) + - fix refresh token when meet multi requests. fixed #581  -  by @soybeanjs in https://github.com/soybeanjs/soybean-admin/issues/581 [(27b52)](https://github.com/soybeanjs/soybean-admin/commit/27b5222) +- **types**: + - fix the type of TableApiFn  -  by @Azir-11 in https://github.com/soybeanjs/soybean-admin/issues/599 [(26c93)](https://github.com/soybeanjs/soybean-admin/commit/26c93df) + +###    🛠 Optimizations + +- **projects**: optimize menu selectedKey  -  by @soybeanjs [(531bf)](https://github.com/soybeanjs/soybean-admin/commit/531bfaf) + +###    📖 Documentation + +- **projects**: + - update README  -  by @mufeng889 in https://github.com/soybeanjs/soybean-admin/issues/594 [(a8f92)](https://github.com/soybeanjs/soybean-admin/commit/a8f923e) + - update README  -  by @soybeanjs [(e9a2e)](https://github.com/soybeanjs/soybean-admin/commit/e9a2ee4) + - update README  -  by @soybeanjs [(73e91)](https://github.com/soybeanjs/soybean-admin/commit/73e917a) + - update the location of important information in the document  -  by **Azir** [(9c012)](https://github.com/soybeanjs/soybean-admin/commit/9c012c7) + +###    🏡 Chore + +- **deps**: + - update deps  -  by @soybeanjs [(a1c14)](https://github.com/soybeanjs/soybean-admin/commit/a1c14a1) + - update deps  -  by @soybeanjs [(7fa55)](https://github.com/soybeanjs/soybean-admin/commit/7fa5590) + - update deps  -  by @soybeanjs [(a44ea)](https://github.com/soybeanjs/soybean-admin/commit/a44ea62) +- **projects**: + - use json5 resolve env `VITE_OTHER_SERVICE_BASE_URL` & fix proxy enable  -  by @soybeanjs [(b16a9)](https://github.com/soybeanjs/soybean-admin/commit/b16a963) + +###    🎨 Styles + +- **projects**: rename script czh to commit:zh  -  by @Azir-11 in https://github.com/soybeanjs/soybean-admin/issues/597 [(5094f)](https://github.com/soybeanjs/soybean-admin/commit/5094f0e) + +###    ❤️ Contributors + +[![soybeanjs](https://github.com/soybeanjs.png?size=48)](https://github.com/soybeanjs)  [![mufeng889](https://github.com/mufeng889.png?size=48)](https://github.com/mufeng889)  [![Azir-11](https://github.com/Azir-11.png?size=48)](https://github.com/Azir-11)  [![PZ-18664918826](https://github.com/PZ-18664918826.png?size=48)](https://github.com/PZ-18664918826)   +[Azir](mailto:2075125282@qq.com),  + +## [v1.3.4](https://github.com/honghuangdc/soybean-admin/compare/v1.3.3...v1.3.4) (2024-08-01) + +###    🚨 Breaking Changes + +- **projects**: don't reset active menu of vertical-mix layout when it is mixSiderFixed  -  by @honghuangdc [(939c5)](https://github.com/honghuangdc/soybean-admin/commit/939c512) + +###    🛠 Optimizations + +- **projects**: optimize code  -  by @honghuangdc [(cb1d4)](https://github.com/honghuangdc/soybean-admin/commit/cb1d445) + +###    🏡 Chore + +- **projects**: update deps & fix vue-router type  -  by @honghuangdc [(96837)](https://github.com/honghuangdc/soybean-admin/commit/968370b) + +###    ❤️ Contributors + +[![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)   + +## [v1.3.3](https://github.com/honghuangdc/soybean-admin/compare/v1.3.2...v1.3.3) (2024-07-30) + +###    🐞 Bug Fixes + +- **projects**: fix watermark settings  -  by @honghuangdc [(5646a)](https://github.com/honghuangdc/soybean-admin/commit/5646a50) + +###    📖 Documentation + +- **projects**: update CHANGELOG  -  by @honghuangdc [(ebc83)](https://github.com/honghuangdc/soybean-admin/commit/ebc838c) + +###    ❤️ Contributors + +[![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)   + +## [v1.3.2](https://github.com/honghuangdc/soybean-admin/compare/v1.3.1...v1.3.2) (2024-07-30) + +###    🚀 Features + +- **projects**: + - add color fading mode.close #567  -  by @Azir-11 in https://github.com/honghuangdc/soybean-admin/issues/569 and https://github.com/honghuangdc/soybean-admin/issues/567 [(4dde4)](https://github.com/honghuangdc/soybean-admin/commit/4dde4c2) + - add full screen watermark. close#571  -  by @paynezhuang in https://github.com/honghuangdc/soybean-admin/issues/573 and https://github.com/honghuangdc/soybean-admin/issues/571 [(ea8aa)](https://github.com/honghuangdc/soybean-admin/commit/ea8aa6c) + +###    🐞 Bug Fixes + +- **projects**: fix vertical-mix menu selected  -  by @honghuangdc [(59f07)](https://github.com/honghuangdc/soybean-admin/commit/59f07d8) + +###    🛠 Optimizations + +- **projects**: + - add type WatermarkProps  -  by @honghuangdc [(f26d0)](https://github.com/honghuangdc/soybean-admin/commit/f26d0a6) + - remove home NAlert closable  -  by @honghuangdc [(98b75)](https://github.com/honghuangdc/soybean-admin/commit/98b75c2) + - optimize response code comparison  -  by @honghuangdc [(cf67d)](https://github.com/honghuangdc/soybean-admin/commit/cf67d55) +- **types**: + - remove useless types.  -  by **Azir** [(eed61)](https://github.com/honghuangdc/soybean-admin/commit/eed617f) + +###    📖 Documentation + +- **projects**: update CHANGELOG  -  by @honghuangdc [(d3759)](https://github.com/honghuangdc/soybean-admin/commit/d37591d) + +###    🏡 Chore + +- **deps**: update deps  -  by @honghuangdc [(993e9)](https://github.com/honghuangdc/soybean-admin/commit/993e9ca) + +###    ❤️ Contributors + +[![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)  [![paynezhuang](https://github.com/paynezhuang.png?size=48)](https://github.com/paynezhuang)  [![Azir-11](https://github.com/Azir-11.png?size=48)](https://github.com/Azir-11)   +[Azir](mailto:2075125282@qq.com),  + +## [v1.3.1](https://github.com/honghuangdc/soybean-admin/compare/v1.3.0...v1.3.1) (2024-07-22) + +###    🐞 Bug Fixes + +- **projects**: + - fix the issue of abnormal width of the sidebar in the top menu mix and reverse mode  -  by @Azir-11 in https://github.com/honghuangdc/soybean-admin/issues/562 [(c4695)](https://github.com/honghuangdc/soybean-admin/commit/c469512) + - fix HorizontalMixMenu inverted. fixed #563  -  by @honghuangdc in https://github.com/honghuangdc/soybean-admin/issues/563 [(4e55b)](https://github.com/honghuangdc/soybean-admin/commit/4e55b0e) + - fix vertical-menu will not render when the layout is from mobile  -  by @honghuangdc [(84027)](https://github.com/honghuangdc/soybean-admin/commit/8402734) + +###    📖 Documentation + +- **projects**: update CHANGELOG  -  by @honghuangdc [(613c8)](https://github.com/honghuangdc/soybean-admin/commit/613c836) + +###    🎨 Styles + +- **other**: modify the Chinese name of the grayscale mode  -  by **Azir** [(53770)](https://github.com/honghuangdc/soybean-admin/commit/5377002) + +###    ❤️ Contributors + +[![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)  [![Azir-11](https://github.com/Azir-11.png?size=48)](https://github.com/Azir-11)   +[Azir](mailto:2075125282@qq.com),  + +## [v1.3.0](https://github.com/soybeanjs/soybean-admin/compare/v1.2.8...v1.3.0) (2024-07-22) + +###    🚨 Breaking Changes + +- **projects**: refactor global menu & support `reversed-horizontal-mix-menu`. close #365  -  by @honghuangdc in https://github.com/soybeanjs/soybean-admin/issues/365 [(087e5)](https://github.com/soybeanjs/soybean-admin/commit/087e532) + +###    🚀 Features + +- **packages**: + - `@sa/scripts`: command `gitCommit` support chinese  -  by @mmdapl in https://github.com/soybeanjs/soybean-admin/issues/548 [(06971)](https://github.com/soybeanjs/soybean-admin/commit/06971f3) + - @sa/axios: replace CancelTokenSource by AbortController. close #530, close #532  -  by @honghuangdc in https://github.com/soybeanjs/soybean-admin/issues/530 and https://github.com/soybeanjs/soybean-admin/issues/532 [(527fd)](https://github.com/soybeanjs/soybean-admin/commit/527fd79) + - @sa/scripts: add ignore pattern list for command `gitCommitVerify`. close #504  -  by @honghuangdc in https://github.com/soybeanjs/soybean-admin/issues/504 [(958d0)](https://github.com/soybeanjs/soybean-admin/commit/958d0ba) +- **projects**: + - make branch `main` tiny & modify request retry times to 0  -  by @Azir-11 [(793b1)](https://github.com/soybeanjs/soybean-admin/commit/793b16e) + +###    🐞 Bug Fixes + +- **hooks**: prevent program freezing when pagesize returns 0  -  by @Azir-11 in https://github.com/soybeanjs/soybean-admin/issues/545 [(f4eeb)](https://github.com/soybeanjs/soybean-admin/commit/f4eeb2e) + +###    💅 Refactors + +- **projects**: + - combine `theme tokens` and `theme settings`. close #379  -  by @honghuangdc in https://github.com/soybeanjs/soybean-admin/issues/379 [(1d1b1)](https://github.com/soybeanjs/soybean-admin/commit/1d1b148) + - change css vars mount to root  -  by @honghuangdc [(00f41)](https://github.com/soybeanjs/soybean-admin/commit/00f41dd) + +###    📖 Documentation + +- **projects**: update CHANGELOG  -  by @honghuangdc [(a0b76)](https://github.com/soybeanjs/soybean-admin/commit/a0b76da) + +###    🏡 Chore + +- **deps**: update deps  -  by @honghuangdc [(f6bd6)](https://github.com/soybeanjs/soybean-admin/commit/f6bd6b8) +- **projects**: add script `czh`  -  by @honghuangdc [(02069)](https://github.com/soybeanjs/soybean-admin/commit/0206969) + +###    ❤️ Contributors + +[![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)  [![mmdapl](https://github.com/mmdapl.png?size=48)](https://github.com/mmdapl)  [![Azir-11](https://github.com/Azir-11.png?size=48)](https://github.com/Azir-11)   + +## [v1.2.8](https://github.com/soybeanjs/soybean-admin/compare/v1.2.7...v1.2.8) (2024-07-20) + +###    🐞 Bug Fixes + +- **packages**: + - @sa/hooks: fix searchParams of useHookTable. fixed #552  -  by @honghuangdc in https://github.com/soybeanjs/soybean-admin/issues/552 [(96c10)](https://github.com/soybeanjs/soybean-admin/commit/96c1044) +- **types**: + - Fixed the reference type error  -  by **dodu2014** in https://github.com/soybeanjs/soybean-admin/issues/551 [(3e2a9)](https://github.com/soybeanjs/soybean-admin/commit/3e2a993) + - fix data type of useHookTable  -  by @honghuangdc [(276ea)](https://github.com/soybeanjs/soybean-admin/commit/276ea7f) + +###    💅 Refactors + +- **projects**: replace `cloneDeep` of `lodash-es` with `klona`  -  by @honghuangdc [(a9133)](https://github.com/soybeanjs/soybean-admin/commit/a91335d) + +###    📖 Documentation + +- **projects**: update CHANGELOG  -  by @honghuangdc [(58fc0)](https://github.com/soybeanjs/soybean-admin/commit/58fc096) + +###    🏡 Chore + +- **deps**: update deps  -  by @honghuangdc [(cf019)](https://github.com/soybeanjs/soybean-admin/commit/cf0192a) + +###    ❤️ Contributors + +[![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)   +[dodu2014](mailto:dodu@live.cn) + +## [v1.2.7](https://github.com/honghuangdc/soybean-admin/compare/v1.2.6...v1.2.7) (2024-07-12) + +###    🛠 Optimizations + +- **projects**: supports custom menu icon sizes  -  by @wynn-w in https://github.com/honghuangdc/soybean-admin/issues/534 [(e035e)](https://github.com/honghuangdc/soybean-admin/commit/e035eab) + +###    🏡 Chore + +- **deps**: + - update deps  -  by @honghuangdc [(72ede)](https://github.com/honghuangdc/soybean-admin/commit/72ede8b) + - update deps  -  by @honghuangdc [(be13c)](https://github.com/honghuangdc/soybean-admin/commit/be13ca2) + - update deps  -  by @honghuangdc [(752ec)](https://github.com/honghuangdc/soybean-admin/commit/752ec1e) +- **projects**: + - Fix deprecated configuration config  -  by @paynezhuang in https://github.com/honghuangdc/soybean-admin/issues/524 [(0d20e)](https://github.com/honghuangdc/soybean-admin/commit/0d20e4c) + +###    ❤️ Contributors + +[![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)  [![wynn-w](https://github.com/wynn-w.png?size=48)](https://github.com/wynn-w)  [![paynezhuang](https://github.com/paynezhuang.png?size=48)](https://github.com/paynezhuang)   + +## [v1.2.6](https://github.com/honghuangdc/soybean-admin/compare/v1.2.5...v1.2.6) (2024-06-21) + +###    🐞 Bug Fixes + +- **projects**: + - request modal title use i18n. fixed #507  -  by @honghuangdc in https://github.com/honghuangdc/soybean-admin/issues/507 [(f7de3)](https://github.com/honghuangdc/soybean-admin/commit/f7de3fd) + - add `getDataByPage` for `useTable`. fixed #499  -  by @honghuangdc in https://github.com/honghuangdc/soybean-admin/issues/499 [(425c6)](https://github.com/honghuangdc/soybean-admin/commit/425c69a) + - fix login redirect to routeHome when routeHome of dynamic route is not same as static route. fixed #511  -  by @honghuangdc in https://github.com/honghuangdc/soybean-admin/issues/511 [(49f60)](https://github.com/honghuangdc/soybean-admin/commit/49f60b2) + +###    🛠 Optimizations + +- **projects**: optimize `getRouteQueryOfLoginRoute`  -  by @honghuangdc [(693f7)](https://github.com/honghuangdc/soybean-admin/commit/693f704) + +###    📖 Documentation + +- **projects**: + - update CHANGELOG  -  by @honghuangdc [(5c67d)](https://github.com/honghuangdc/soybean-admin/commit/5c67d06) + - update README  -  by @honghuangdc [(1e67a)](https://github.com/honghuangdc/soybean-admin/commit/1e67ae8) + +###    🏡 Chore + +- **deps**: + - update deps. close #510  -  by @honghuangdc in https://github.com/honghuangdc/soybean-admin/issues/510 [(53143)](https://github.com/honghuangdc/soybean-admin/commit/531432d) + - update deps  -  by @honghuangdc [(c7f6f)](https://github.com/honghuangdc/soybean-admin/commit/c7f6f2a) + +###    🤖 CI + +- **projects**: + - add github issues template  -  by @honghuangdc [(b5027)](https://github.com/honghuangdc/soybean-admin/commit/b5027c8) + - update github issues template  -  by @honghuangdc [(ff1d5)](https://github.com/honghuangdc/soybean-admin/commit/ff1d504) + +###    ❤️ Contributors + +[![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)   + +## [v1.2.5](https://github.com/soybeanjs/soybean-admin/compare/v1.2.4...v1.2.5) (2024-06-15) + +###    🐞 Bug Fixes + +- **projects**: Fix the issue of abnormal tab caching after logout. fixed #495  -  by @Azir-11 in https://github.com/soybeanjs/soybean-admin/issues/495 [(3eeac)](https://github.com/soybeanjs/soybean-admin/commit/3eeace9) + +###    🔥 Performance + +- **project**: Initializing the static routing function does not require asynchronization  -  by **CHENZL** in https://github.com/soybeanjs/soybean-admin/issues/493 [(2198b)](https://github.com/soybeanjs/soybean-admin/commit/2198b98) + +###    🛠 Optimizations + +- **projects**: optimize code  -  by @soybeanjs [(b94ba)](https://github.com/soybeanjs/soybean-admin/commit/b94baa1) +- **types**: Enhance compatibility of global types  -  by @Azir-11 in https://github.com/soybeanjs/soybean-admin/issues/494 [(cd9d5)](https://github.com/soybeanjs/soybean-admin/commit/cd9d58d) +- **utils**: Reduce code indentation and improve readability  -  by @Azir-11 in https://github.com/soybeanjs/soybean-admin/issues/496 [(ad2f2)](https://github.com/soybeanjs/soybean-admin/commit/ad2f247) + +###    📖 Documentation + +- **projects**: update CHANGELOG  -  by @soybeanjs [(b3368)](https://github.com/soybeanjs/soybean-admin/commit/b336841) + +###    🏡 Chore + +- **deps**: update deps  -  by @soybeanjs [(b094d)](https://github.com/soybeanjs/soybean-admin/commit/b094d68) + +###    ❤️ Contributors + +[![soybeanjs](https://github.com/soybeanjs.png?size=48)](https://github.com/soybeanjs)  [![Azir-11](https://github.com/Azir-11.png?size=48)](https://github.com/Azir-11)   +[CHENZL](mailto:zlong5568863@qq.com) + +## [v1.2.4](https://github.com/soybeanjs/soybean-admin/compare/v1.2.3...v1.2.4) (2024-06-14) + +###    🛠 Optimizations + +- **projects**: + - optimize `setupAppVersionNotification`  -  by @soybeanjs [(b5a72)](https://github.com/soybeanjs/soybean-admin/commit/b5a723c) + - get buildTime with timezone 'Asia/Shanghai'  -  by @soybeanjs [(069fa)](https://github.com/soybeanjs/soybean-admin/commit/069fa8a) + +###    ❤️ Contributors + +[![soybeanjs](https://github.com/soybeanjs.png?size=48)](https://github.com/soybeanjs)   + +## [v1.2.3](https://github.com/soybeanjs/soybean-admin/compare/v1.2.2...v1.2.3) (2024-06-13) + +###    🐞 Bug Fixes + +- **projects**: + - fix mobile browser theme issue by adding color-scheme meta tag to index.html  -  by @KickCashew in https://github.com/soybeanjs/soybean-admin/issues/488 [(c2125)](https://github.com/soybeanjs/soybean-admin/commit/c212565) + - Fix secondary directory components is empty  -  by @paynezhuang in https://github.com/soybeanjs/soybean-admin/issues/491 [(aabb2)](https://github.com/soybeanjs/soybean-admin/commit/aabb2a4) + +###    📖 Documentation + +- **projects**: + - Fixed the hyperlink pointing error  -  by **Azir** [(20a81)](https://github.com/soybeanjs/soybean-admin/commit/20a8127) + - update README  -  by @soybeanjs [(70261)](https://github.com/soybeanjs/soybean-admin/commit/7026126) + +###    🏡 Chore + +- **deps**: + - update deps  -  by @soybeanjs [(813d8)](https://github.com/soybeanjs/soybean-admin/commit/813d8ce) + - update deps  -  by @soybeanjs [(bf718)](https://github.com/soybeanjs/soybean-admin/commit/bf71837) + +###    ❤️ Contributors + +[![soybeanjs](https://github.com/soybeanjs.png?size=48)](https://github.com/soybeanjs)  [![paynezhuang](https://github.com/paynezhuang.png?size=48)](https://github.com/paynezhuang)  [![KickCashew](https://github.com/KickCashew.png?size=48)](https://github.com/KickCashew)   +[Azir](mailto:2075125282@qq.com) + +## [v1.2.2](https://github.com/honghuangdc/soybean-admin/compare/v1.2.1...v1.2.2) (2024-06-12) + +###    🚀 Features + +- **projects**: reset scroll position when tab change  -  by @soybeanjs [(9094b)](https://github.com/honghuangdc/soybean-admin/commit/9094b21) + +###    🐞 Bug Fixes + +- **projects**: + - hide AppVersionNotification in DEV mode  -  by @sigma-plus in https://github.com/honghuangdc/soybean-admin/issues/482 [(62592)](https://github.com/honghuangdc/soybean-admin/commit/6259287) + - fix menu-toggler hidden in mobile layout. fixed #483  -  by @soybeanjs in https://github.com/honghuangdc/soybean-admin/issues/483 [(4470c)](https://github.com/honghuangdc/soybean-admin/commit/4470cb4) + +###    📖 Documentation + +- **projects**: update README  -  by @soybeanjs [(8f9a7)](https://github.com/honghuangdc/soybean-admin/commit/8f9a705) + +###    ❤️ Contributors + +[![soybeanjs](https://github.com/soybeanjs.png?size=48)](https://github.com/soybeanjs)  [![sigma-plus](https://github.com/sigma-plus.png?size=48)](https://github.com/sigma-plus)   + +## [v1.2.1](https://github.com/honghuangdc/soybean-admin/compare/v1.2.0...v1.2.1) (2024-06-07) + +###    🐞 Bug Fixes + +- **projects**: + - fix get user info when page reload  -  by @soybeanjs [(ff51b)](https://github.com/honghuangdc/soybean-admin/commit/ff51b72) + - fix setupAppVersionNotification render  -  by @soybeanjs [(6a6eb)](https://github.com/honghuangdc/soybean-admin/commit/6a6eb9a) + +###    📖 Documentation + +- **projects**: update CHANGELOG  -  by @soybeanjs [(fe06b)](https://github.com/honghuangdc/soybean-admin/commit/fe06b8c) + +###    🏡 Chore + +- **deps**: update deps  -  by @soybeanjs [(08827)](https://github.com/honghuangdc/soybean-admin/commit/08827a4) + +###    ❤️ Contributors + +[![soybeanjs](https://github.com/soybeanjs.png?size=48)](https://github.com/soybeanjs)   + +## [v1.2.0](https://github.com/soybeanjs/soybean-admin/compare/v1.1.5...v1.2.0) (2024-06-06) + +###    🚀 Features + +- **projects**: + - support system new version update notification. close #420  -  by @soybeanjs in https://github.com/soybeanjs/soybean-admin/issues/420 [(584cd)](https://github.com/soybeanjs/soybean-admin/commit/584cd54) + - get user info in router guard and remove in localStorage. close #459  -  by @soybeanjs in https://github.com/soybeanjs/soybean-admin/issues/459 [(5531a)](https://github.com/soybeanjs/soybean-admin/commit/5531a68) + +###    📖 Documentation + +- **projects**: update CHANGELOG  -  by @soybeanjs [(2bec8)](https://github.com/soybeanjs/soybean-admin/commit/2bec899) + +###    ❤️ Contributors + +[![soybeanjs](https://github.com/soybeanjs.png?size=48)](https://github.com/soybeanjs)   + +## [v1.1.5](https://github.com/soybeanjs/soybean-admin/compare/v1.1.4...v1.1.5) (2024-06-06) + +###    🐞 Bug Fixes + +- **projects**: fix register name, CodeLogin => Register  -  by @m-xlsea in https://github.com/soybeanjs/soybean-admin/issues/478 [(ddf38)](https://github.com/soybeanjs/soybean-admin/commit/ddf3823) + +###    🏡 Chore + +- **deps**: update deps  -  by @soybeanjs [(060c0)](https://github.com/soybeanjs/soybean-admin/commit/060c0a9) +- **projects**: update vscode settings: vue official  -  by @soybeanjs [(76649)](https://github.com/soybeanjs/soybean-admin/commit/76649e2) + +###    ❤️ Contributors + +[![soybeanjs](https://github.com/soybeanjs.png?size=48)](https://github.com/soybeanjs)  [![m-xlsea](https://github.com/m-xlsea.png?size=48)](https://github.com/m-xlsea)   + +## [v1.1.4](https://github.com/honghuangdc/soybean-admin/compare/v1.1.3...v1.1.4) (2024-06-06) + +###    🐞 Bug Fixes + +- **utils**: modalLogout bug when esc is pressed  -  by @sigma-plus in https://github.com/honghuangdc/soybean-admin/issues/470 [(bd69c)](https://github.com/honghuangdc/soybean-admin/commit/bd69c00) + +###    🛠 Optimizations + +- **projects**: optimize RouteMeta remarks  -  by @soybeanjs [(ffb48)](https://github.com/honghuangdc/soybean-admin/commit/ffb48b1) + +###    📖 Documentation + +- **projects**: + - update CHANGELOG  -  by @soybeanjs [(756f8)](https://github.com/honghuangdc/soybean-admin/commit/756f84a) + - update Node&pnpm version  -  by @Azir-11 in https://github.com/honghuangdc/soybean-admin/issues/472 [(9b05d)](https://github.com/honghuangdc/soybean-admin/commit/9b05d73) + +###    🏡 Chore + +- **deps**: + - update deps  -  by @soybeanjs [(d0380)](https://github.com/honghuangdc/soybean-admin/commit/d0380ce) + - update deps  -  by @soybeanjs [(1f464)](https://github.com/honghuangdc/soybean-admin/commit/1f4647b) +- **projects**: + - close http proxy  -  by @soybeanjs [(d08a3)](https://github.com/honghuangdc/soybean-admin/commit/d08a381) + - update mock url  -  by @soybeanjs [(e6086)](https://github.com/honghuangdc/soybean-admin/commit/e6086f0) + - update vscode settings  -  by @soybeanjs [(910df)](https://github.com/honghuangdc/soybean-admin/commit/910dfca) + +###    ❤️ Contributors + +[![soybeanjs](https://github.com/soybeanjs.png?size=48)](https://github.com/soybeanjs)  [![Azir-11](https://github.com/Azir-11.png?size=48)](https://github.com/Azir-11)  [![sigma-plus](https://github.com/sigma-plus.png?size=48)](https://github.com/sigma-plus)   + +## [v1.1.3](https://github.com/soybeanjs/soybean-admin/compare/v1.1.2...v1.1.3) (2024-06-02) + +###    🐞 Bug Fixes + +- **components**: + - Fix the issue of search box popping up repeatedly due to carriage return  -  by @Azir-11 in https://github.com/soybeanjs/soybean-admin/issues/468 [(5bd96)](https://github.com/soybeanjs/soybean-admin/commit/5bd96b8) +- **projects**: + - fix click menu search. fixed #466, close #467  -  by @soybeanjs in https://github.com/soybeanjs/soybean-admin/issues/466 and https://github.com/soybeanjs/soybean-admin/issues/467 [(8efdb)](https://github.com/soybeanjs/soybean-admin/commit/8efdb10) + - fix reCacheRoute. fixed #464  -  by @soybeanjs in https://github.com/soybeanjs/soybean-admin/issues/464 [(59faf)](https://github.com/soybeanjs/soybean-admin/commit/59faf15) +- **styles**: + - fix FirstLevelMenu style. fixed #450  -  by @soybeanjs in https://github.com/soybeanjs/soybean-admin/issues/450 [(db64b)](https://github.com/soybeanjs/soybean-admin/commit/db64b0e) + - fix PinToggler style. fixed #451  -  by @soybeanjs in https://github.com/soybeanjs/soybean-admin/issues/451 [(42b12)](https://github.com/soybeanjs/soybean-admin/commit/42b121a) + +###    🛠 Optimizations + +- **components**: accuracy draggable area for TableColumnSetting with animation  -  by @orangelckc in https://github.com/soybeanjs/soybean-admin/issues/465 [(2aa85)](https://github.com/soybeanjs/soybean-admin/commit/2aa85c6) +- **projects**: unocss border shortcut  -  by @soybeanjs [(40d0f)](https://github.com/soybeanjs/soybean-admin/commit/40d0f8a) + +###    📖 Documentation + +- **projects**: update CHANGELOG  -  by @soybeanjs [(87b18)](https://github.com/soybeanjs/soybean-admin/commit/87b1838) + +###    🏡 Chore + +- **other**: + - correct spell mistake  -  by @orangelckc in https://github.com/soybeanjs/soybean-admin/issues/460 [(086ba)](https://github.com/soybeanjs/soybean-admin/commit/086bad4) + - correct spell mistake  -  by @Azir-11 in https://github.com/soybeanjs/soybean-admin/issues/462 [(f1850)](https://github.com/soybeanjs/soybean-admin/commit/f185041) +- **projects**: + - update vscode launch.json  -  by @soybeanjs [(4c1c7)](https://github.com/soybeanjs/soybean-admin/commit/4c1c7e6) + +###    ❤️ Contributors + +[![soybeanjs](https://github.com/soybeanjs.png?size=48)](https://github.com/soybeanjs)  [![Azir-11](https://github.com/Azir-11.png?size=48)](https://github.com/Azir-11)  [![orangelckc](https://github.com/orangelckc.png?size=48)](https://github.com/orangelckc)   + +## [v1.1.2](https://github.com/soybeanjs/soybean-admin/compare/v1.1.1...v1.1.2) (2024-05-24) + +###    🐞 Bug Fixes + +- **projects**: + - fix header style & fix button highlight when click global-tab. fixed #446  -  by @honghuangdc in https://github.com/soybeanjs/soybean-admin/issues/446 [(64fc0)](https://github.com/soybeanjs/soybean-admin/commit/64fc099) + - fix multi tab page only render once. fixed #441  -  by @honghuangdc in https://github.com/soybeanjs/soybean-admin/issues/441 [(e379d)](https://github.com/soybeanjs/soybean-admin/commit/e379d6c) + +###    🛠 Optimizations + +- **projects**: optimize code  -  by @honghuangdc [(bc8dc)](https://github.com/soybeanjs/soybean-admin/commit/bc8dc47) + +###    ❤️ Contributors + +[![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)   + +## [v1.1.1](https://github.com/soybeanjs/soybean-admin/compare/v1.1.0...v1.1.1) (2024-05-20) + +###    🚀 Features + +- **hooks**: add setOptions for useEcharts  -  by @honghuangdc [(e4d53)](https://github.com/soybeanjs/soybean-admin/commit/e4d53aa) + +###    🐞 Bug Fixes + +- **projects**: + - fix useRouter. fixed #436  -  by @honghuangdc in https://github.com/soybeanjs/soybean-admin/issues/436 [(0774a)](https://github.com/soybeanjs/soybean-admin/commit/0774a51) + - add error handle when get routes in dynamic route mode. fixed 440  -  by @honghuangdc [(57b4a)](https://github.com/soybeanjs/soybean-admin/commit/57b4a9d) +- **styles**: + - fix useTable type  -  by @honghuangdc [(07124)](https://github.com/soybeanjs/soybean-admin/commit/071241f) + +###    📖 Documentation + +- **projects**: + - update CHANGELOG  -  by @honghuangdc [(19783)](https://github.com/soybeanjs/soybean-admin/commit/1978397) + - update README.md  -  by @honghuangdc [(fa56e)](https://github.com/soybeanjs/soybean-admin/commit/fa56e9c) + - update README.md  -  by @honghuangdc [(419ea)](https://github.com/soybeanjs/soybean-admin/commit/419ea42) + +###    🏡 Chore + +- **projects**: + - update deps & fix TS error  -  by @honghuangdc [(4ea9c)](https://github.com/soybeanjs/soybean-admin/commit/4ea9c85) + - update eslint-config & fix code  -  by @honghuangdc [(68ea9)](https://github.com/soybeanjs/soybean-admin/commit/68ea974) + - update @elegant-router/vue & add error handle for resolve route. fixed #442  -  by @honghuangdc in https://github.com/soybeanjs/soybean-admin/issues/442 [(24ff8)](https://github.com/soybeanjs/soybean-admin/commit/24ff852) + +###    ❤️ Contributors + +[![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)   + +## [v1.1.0](https://github.com/honghuangdc/soybean-admin/compare/v1.0.9...v1.1.0) (2024-05-07) + +###    🚀 Features + +- **projects**: + - support grayscale. fixed #385  -  by @honghuangdc in https://github.com/honghuangdc/soybean-admin/issues/385 [(d335d)](https://github.com/honghuangdc/soybean-admin/commit/d335df6) + - Add prefix to local storage  -  by **Azir** [(1fc34)](https://github.com/honghuangdc/soybean-admin/commit/1fc34cc) + - add table showTotal options  -  by **paynezhuang** [(3e61e)](https://github.com/honghuangdc/soybean-admin/commit/3e61eab) + - add recommend color switch. closed #388  -  by @honghuangdc in https://github.com/honghuangdc/soybean-admin/issues/388 [(a1920)](https://github.com/honghuangdc/soybean-admin/commit/a1920fc) + - add menu route field  -  by **paynezhuang** [(dbe31)](https://github.com/honghuangdc/soybean-admin/commit/dbe31eb) + - support repeated request errors occur once in a short time. close #368, close #369  -  by @honghuangdc in https://github.com/honghuangdc/soybean-admin/issues/368 and https://github.com/honghuangdc/soybean-admin/issues/369 [(e3bd3)](https://github.com/honghuangdc/soybean-admin/commit/e3bd397) + - close tab by mouse wheel button click  -  by **JianJroh** [(d3849)](https://github.com/honghuangdc/soybean-admin/commit/d3849ba) + - page: support manage_menu more options. close #366  -  by @honghuangdc in https://github.com/honghuangdc/soybean-admin/issues/366 [(c4b5c)](https://github.com/honghuangdc/soybean-admin/commit/c4b5c65) + - useTable adds expand to display  -  by **paynezhuang** [(0a90d)](https://github.com/honghuangdc/soybean-admin/commit/0a90dd3) + +###    🐞 Bug Fixes + +- **projects**: + - menu fixedIndexInTab default null  -  by **paynezhuang** [(3d10e)](https://github.com/honghuangdc/soybean-admin/commit/3d10ef1) + - fix menu-toggler zIndex  -  by @honghuangdc [(7bd43)](https://github.com/honghuangdc/soybean-admin/commit/7bd43df) + - fix manage_menu modal style  -  by @honghuangdc [(60f3b)](https://github.com/honghuangdc/soybean-admin/commit/60f3b14) + - fix menu data when role is changed. fixed #391  -  by @honghuangdc in https://github.com/honghuangdc/soybean-admin/issues/391 [(3b47b)](https://github.com/honghuangdc/soybean-admin/commit/3b47b5a) + +###    🛠 Optimizations + +- **projects**: remove deprecated code  -  by @honghuangdc [(72ccb)](https://github.com/honghuangdc/soybean-admin/commit/72ccb6b) + +###    💅 Refactors + +- **projects**: + - refactor @sa/color-palette => @sa/color & perf @sa/utils  -  by @honghuangdc [(34999)](https://github.com/honghuangdc/soybean-admin/commit/3499997) + - menu-operate-drawer => menu-operate-modal  -  by @honghuangdc [(003e1)](https://github.com/honghuangdc/soybean-admin/commit/003e145) + +###    📖 Documentation + +- **projects**: + - add CHANGELOG.zh_CN.md  -  by @honghuangdc [(18b3f)](https://github.com/honghuangdc/soybean-admin/commit/18b3f05) + - update CHANGELOG  -  by @honghuangdc [(4d17c)](https://github.com/honghuangdc/soybean-admin/commit/4d17cfd) + +###    🏡 Chore + +- **deps**: + - update deps  -  by @honghuangdc [(1cb38)](https://github.com/honghuangdc/soybean-admin/commit/1cb3816) + - update deps  -  by @honghuangdc [(599b4)](https://github.com/honghuangdc/soybean-admin/commit/599b4e1) +- **projects**: + - merge main to v1.1.0  -  by @honghuangdc [(ebe55)](https://github.com/honghuangdc/soybean-admin/commit/ebe55af) + +###    ❤️ Contributors + +[![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)   +[paynezhuang](mailto:paynezhuang@gmail.com), [JianJroh](mailto:rhjian@foxmail.com), [Azir](mailto:2075125282@qq.com) + +## [v1.1.0-beta.2](https://github.com/honghuangdc/soybean-admin/compare/v1.1.0-beta.1...v1.1.0-beta.2) (2024-05-07) + +###    🚀 Features + +- **projects**: useTable adds expand to display  -  by **paynezhuang** [(0a90d)](https://github.com/honghuangdc/soybean-admin/commit/0a90dd3) + +###    🐞 Bug Fixes + +- **projects**: + - fix manage_menu modal style  -  by @honghuangdc [(60f3b)](https://github.com/honghuangdc/soybean-admin/commit/60f3b14) + - fix menu data when role is changed. fixed #391  -  by @honghuangdc in https://github.com/honghuangdc/soybean-admin/issues/391 [(3b47b)](https://github.com/honghuangdc/soybean-admin/commit/3b47b5a) + +###    🛠 Optimizations + +- **projects**: remove deprecated code  -  by @honghuangdc [(72ccb)](https://github.com/honghuangdc/soybean-admin/commit/72ccb6b) + +###    📖 Documentation + +- **projects**: add CHANGELOG.zh_CN.md  -  by @honghuangdc [(18b3f)](https://github.com/honghuangdc/soybean-admin/commit/18b3f05) + +###    ❤️ Contributors + +[![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)   +[paynezhuang](mailto:paynezhuang@gmail.com) + +## [v1.1.0-beta.1](https://github.com/soybeanjs/soybean-admin/compare/v1.0.9...v1.1.0-beta.1) (2024-05-07) + +###    🚀 Features + +- **projects**: + - support grayscale. fixed #385  -  by @honghuangdc in https://github.com/soybeanjs/soybean-admin/issues/385 [(d335d)](https://github.com/soybeanjs/soybean-admin/commit/d335df6) + - Add prefix to local storage  -  by **Azir** [(1fc34)](https://github.com/soybeanjs/soybean-admin/commit/1fc34cc) + - add table showTotal options  -  by **paynezhuang** [(3e61e)](https://github.com/soybeanjs/soybean-admin/commit/3e61eab) + - add recommend color switch. closed #388  -  by @honghuangdc in https://github.com/soybeanjs/soybean-admin/issues/388 [(a1920)](https://github.com/soybeanjs/soybean-admin/commit/a1920fc) + - add menu route field  -  by **paynezhuang** [(dbe31)](https://github.com/soybeanjs/soybean-admin/commit/dbe31eb) + - support repeated request errors occur once in a short time. close #368, close #369  -  by @honghuangdc in https://github.com/soybeanjs/soybean-admin/issues/368 and https://github.com/soybeanjs/soybean-admin/issues/369 [(e3bd3)](https://github.com/soybeanjs/soybean-admin/commit/e3bd397) + - close tab by mouse wheel button click  -  by **JianJroh** [(d3849)](https://github.com/soybeanjs/soybean-admin/commit/d3849ba) + - page: support manage_menu more options. close #366  -  by @honghuangdc in https://github.com/soybeanjs/soybean-admin/issues/366 [(c4b5c)](https://github.com/soybeanjs/soybean-admin/commit/c4b5c65) + +###    🐞 Bug Fixes + +- **projects**: + - menu fixedIndexInTab default null  -  by **paynezhuang** [(3d10e)](https://github.com/soybeanjs/soybean-admin/commit/3d10ef1) + - fix menu-toggler zIndex  -  by @honghuangdc [(7bd43)](https://github.com/soybeanjs/soybean-admin/commit/7bd43df) + +###    💅 Refactors + +- **projects**: + - refactor @sa/color-palette => @sa/color & perf @sa/utils  -  by @honghuangdc [(34999)](https://github.com/soybeanjs/soybean-admin/commit/3499997) + - menu-operate-drawer => menu-operate-modal  -  by @honghuangdc [(003e1)](https://github.com/soybeanjs/soybean-admin/commit/003e145) + +###    🏡 Chore + +- **deps**: + - update deps  -  by @honghuangdc [(1cb38)](https://github.com/soybeanjs/soybean-admin/commit/1cb3816) + - update deps  -  by @honghuangdc [(599b4)](https://github.com/soybeanjs/soybean-admin/commit/599b4e1) +- **projects**: + - merge main to v1.1.0  -  by @honghuangdc [(ebe55)](https://github.com/soybeanjs/soybean-admin/commit/ebe55af) + +###    ❤️ Contributors + +[![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)   +[JianJroh](mailto:rhjian@foxmail.com), [paynezhuang](mailto:paynezhuang@gmail.com), [Azir](mailto:2075125282@qq.com) + +## [v1.0.9](https://github.com/soybeanjs/soybean-admin/compare/v1.0.8...v1.0.9) (2024-05-05) + +###    🚀 Features + +- **packages**: @sa/scripts: add new commit type `optimize` and commit scope `packages`  -  by @honghuangdc [(fbc2e)](https://github.com/soybeanjs/soybean-admin/commit/fbc2e61) + +###    🐞 Bug Fixes + +- **projects**: fix manage page drawer operate about data reset. fixed #415, fixed #417  -  by @honghuangdc in https://github.com/soybeanjs/soybean-admin/issues/415 and https://github.com/soybeanjs/soybean-admin/issues/417 [(f4513)](https://github.com/soybeanjs/soybean-admin/commit/f4513e1) + +###    📖 Documentation + +- **projects**: + - add ecosystem to README.md  -  by @honghuangdc [(d0f17)](https://github.com/soybeanjs/soybean-admin/commit/d0f17a4) + - add PanisAdmin to README  -  by **paynezhuang** [(ce2a7)](https://github.com/soybeanjs/soybean-admin/commit/ce2a75b) + +###    🏡 Chore + +- **deps**: + - update deps  -  by @honghuangdc [(413a8)](https://github.com/soybeanjs/soybean-admin/commit/413a8b2) + - update deps  -  by @honghuangdc [(734ef)](https://github.com/soybeanjs/soybean-admin/commit/734ef98) +- **projects**: + - update .npmrc  -  by @honghuangdc [(52188)](https://github.com/soybeanjs/soybean-admin/commit/52188d8) + - update vscode settings  -  by @honghuangdc [(c137b)](https://github.com/soybeanjs/soybean-admin/commit/c137b97) + +###    ❤️ Contributors + +[![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)   +[paynezhuang](mailto:paynezhuang@gmail.com) + +## [v1.0.8](https://github.com/soybeanjs/soybean-admin/compare/v1.0.7...v1.0.8) (2024-04-27) + +###    🐞 Bug Fixes + +- **components**: + - fix PinToggler label. fixed #407  -  by @honghuangdc in https://github.com/soybeanjs/soybean-admin/issues/407 [(c0ed1)](https://github.com/soybeanjs/soybean-admin/commit/c0ed1f2) +- **projects**: + - text level low. #409  -  by **alleycharming** in https://github.com/soybeanjs/soybean-admin/issues/409 [(3ddb1)](https://github.com/soybeanjs/soybean-admin/commit/3ddb17a) + - fix tab fixedIndex as null case  -  by **paynezhuang** [(4708e)](https://github.com/soybeanjs/soybean-admin/commit/4708ede) + - recovery the layout config before is mobile. fixed #408, fixed #361  -  by @honghuangdc in https://github.com/soybeanjs/soybean-admin/issues/408 and https://github.com/soybeanjs/soybean-admin/issues/361 [(dae2a)](https://github.com/soybeanjs/soybean-admin/commit/dae2aa5) + +###    🔥 Performance + +- **projects**: perf judgement the fixed tab  -  by @honghuangdc [(b3e9b)](https://github.com/soybeanjs/soybean-admin/commit/b3e9bba) + +###    💅 Refactors + +- **projects**: `Soybean Admin` to `SoybeanAdmin`  -  by @honghuangdc [(a8dbc)](https://github.com/soybeanjs/soybean-admin/commit/a8dbc03) + +###    ❤️ Contributors + +[![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)   +[paynezhuang](mailto:paynezhuang@gmail.com), [alleycharming](mailto:alleycharming@gmail.com) + +## [v1.0.7](https://github.com/soybeanjs/soybean-admin/compare/v1.0.6...v1.0.7) (2024-04-25) + +###    🚀 Features + +- **projects**: support iframe page with diffrent url of custom route  -  by @honghuangdc [(da12d)](https://github.com/soybeanjs/soybean-admin/commit/da12d4a) + +###    🏡 Chore + +- **deps**: update deps  -  by @honghuangdc [(fbd80)](https://github.com/soybeanjs/soybean-admin/commit/fbd80c2) + +###    ❤️ Contributors + +[![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)   + +## [v1.0.6](https://github.com/soybeanjs/soybean-admin/compare/v1.0.5...v1.0.6) (2024-04-25) + +###    🚀 Features + +- **hooks**: add state hooks: useRef, useState, useSignal  -  by @honghuangdc [(09f64)](https://github.com/soybeanjs/soybean-admin/commit/09f6464) + +###    🐞 Bug Fixes + +- **projects**: + - added responseType judgment. #396  -  by **alleycharming** in https://github.com/soybeanjs/soybean-admin/issues/396 [(82eab)](https://github.com/soybeanjs/soybean-admin/commit/82eabab) + - supply $t import statement  -  by @honghuangdc [(b2660)](https://github.com/soybeanjs/soybean-admin/commit/b266035) + - fix mix-menu blank. fixed #389 & cache mixMenuFixed  -  by @honghuangdc in https://github.com/soybeanjs/soybean-admin/issues/389 [(93c7f)](https://github.com/soybeanjs/soybean-admin/commit/93c7ff7) + +###    🔥 Performance + +- **hooks**: + - perf useSignal  -  by @honghuangdc [(5d45c)](https://github.com/soybeanjs/soybean-admin/commit/5d45cef) +- **projects**: + - remove useless prop `title` of `NDrawer`  -  by @honghuangdc [(fdde6)](https://github.com/soybeanjs/soybean-admin/commit/fdde679) + - add tsconfig.json for @sa/color-palette  -  by @honghuangdc [(d460e)](https://github.com/soybeanjs/soybean-admin/commit/d460e5c) + +###    💅 Refactors + +- **hooks**: refactor useSignal, useComputed  -  by @honghuangdc [(3b5e4)](https://github.com/soybeanjs/soybean-admin/commit/3b5e4b3) +- **projects**: useMixMenuContext replace useMixMenu  -  by @honghuangdc [(1e142)](https://github.com/soybeanjs/soybean-admin/commit/1e14293) + +###    🏡 Chore + +- **deps**: + - update deps  -  by @honghuangdc [(e57bf)](https://github.com/soybeanjs/soybean-admin/commit/e57bf0b) +- **projects**: + - use `engines` replace `packageManager`  -  by @honghuangdc [(dcd51)](https://github.com/soybeanjs/soybean-admin/commit/dcd51f4) + - update pnpm version requirement  -  by @honghuangdc [(19e65)](https://github.com/soybeanjs/soybean-admin/commit/19e65c1) + +###    ❤️ Contributors + +[![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)   +[alleycharming](mailto:alleycharming@gmail.com) + +## [v1.0.5](https://github.com/honghuangdc/soybean-admin/compare/v1.0.4...v1.0.5) (2024-04-24) + +###    📖 Documentation + +- **projects**: update CHANGELOG.md  -  by @honghuangdc [(cf5bc)](https://github.com/honghuangdc/soybean-admin/commit/cf5bc88) + +###    🏡 Chore + +- **projects**: + - lower vue version to 3.4.23  -  by @honghuangdc [(b5243)](https://github.com/honghuangdc/soybean-admin/commit/b52432a) + - update pnpm-lock.yaml  -  by @honghuangdc [(516f4)](https://github.com/honghuangdc/soybean-admin/commit/516f46a) + +###    ❤️ Contributors + +[![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)   + +## [v1.0.4](https://github.com/soybeanjs/soybean-admin/compare/v1.0.3...v1.0.4) (2024-04-24) + +###    🐞 Bug Fixes + +- **projects**: + - fix CHANGELOG versions  -  by @honghuangdc [(d9af5)](https://github.com/soybeanjs/soybean-admin/commit/d9af5aa) + - fix disabled page animate  -  by @honghuangdc [(23f28)](https://github.com/soybeanjs/soybean-admin/commit/23f283a) + - fix routes data when role is change. fixed #391  -  by @honghuangdc in https://github.com/soybeanjs/soybean-admin/issues/391 [(cb83d)](https://github.com/soybeanjs/soybean-admin/commit/cb83d6d) + - fix tabs data when role is change. fixed #392  -  by @honghuangdc in https://github.com/soybeanjs/soybean-admin/issues/392 [(04aa0)](https://github.com/soybeanjs/soybean-admin/commit/04aa097) + - recovery pnpm-lock.yaml  -  by @honghuangdc [(c6952)](https://github.com/soybeanjs/soybean-admin/commit/c695208) + +###    💅 Refactors + +- **hooks**: refactor @sa/color  -  by @honghuangdc [(93191)](https://github.com/soybeanjs/soybean-admin/commit/9319173) + +###    📖 Documentation + +- **projects**: + - update README.md  -  by @honghuangdc [(5a523)](https://github.com/soybeanjs/soybean-admin/commit/5a5232b) + - update README.md  -  by @honghuangdc [(79d9c)](https://github.com/soybeanjs/soybean-admin/commit/79d9c51) + +###    🏡 Chore + +- **deps**: + - update deps  -  by @honghuangdc [(ac928)](https://github.com/soybeanjs/soybean-admin/commit/ac92817) + - update deps  -  by @honghuangdc [(3ceeb)](https://github.com/soybeanjs/soybean-admin/commit/3ceeb6f) + - update deps  -  by @honghuangdc [(9a669)](https://github.com/soybeanjs/soybean-admin/commit/9a66979) +- **projects**: + - update pnpm version  -  by @honghuangdc [(42e16)](https://github.com/soybeanjs/soybean-admin/commit/42e16a0) + - update deps & update pnpm version & update eslint config  -  by @honghuangdc [(7392b)](https://github.com/soybeanjs/soybean-admin/commit/7392beb) + +###    ❤️ Contributors + +[![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)   + +## [v1.0.3](https://github.com/soybeanjs/soybean-admin/compare/v1.0.2...v1.0.3) (2024-04-16) + +###    🚀 Features + +- **hooks**: deleting the route export of useRoutePush, use vue-router  -  by **paynezhuang** [(c6648)](https://github.com/soybeanjs/soybean-admin/commit/c6648b6) + +###    🐞 Bug Fixes + +- **projects**: + - fix menu edit rules  -  by **paynezhuang** [(00105)](https://github.com/soybeanjs/soybean-admin/commit/001059c) + - fix SvgIcon inheritAttrs warning  -  by @honghuangdc [(efc0e)](https://github.com/soybeanjs/soybean-admin/commit/efc0e25) + - fix axios createRequest: add default state  -  by @honghuangdc [(d6eda)](https://github.com/soybeanjs/soybean-admin/commit/d6eda8f) + - update union-key.d.ts  -  by @honghuangdc [(60bef)](https://github.com/soybeanjs/soybean-admin/commit/60beff7) + - fix update theme color  -  by @honghuangdc [(27c53)](https://github.com/soybeanjs/soybean-admin/commit/27c53cd) + +###    🔥 Performance + +- **projects**: perf code  -  by @honghuangdc [(b7f07)](https://github.com/soybeanjs/soybean-admin/commit/b7f0749) + +###    💅 Refactors + +- **projects**: update naive-ui.d.ts  -  by @honghuangdc [(bb74d)](https://github.com/soybeanjs/soybean-admin/commit/bb74d99) + +###    📖 Documentation + +- **projects**: update README.md  -  by @honghuangdc [(f4a9c)](https://github.com/soybeanjs/soybean-admin/commit/f4a9cf8) + +###    ❤️ Contributors + +[![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)   +[paynezhuang](mailto:paynezhuang@gmail.com) + +## [v1.0.2](https://github.com/soybeanjs/soybean-admin/compare/v1.0.1...v1.0.2) (2024-04-08) + +###    🐞 Bug Fixes + +- **projects**: unify border-radius of Tag. fixed #378  -  by @honghuangdc in https://github.com/soybeanjs/soybean-admin/issues/378 [(2f15a)](https://github.com/soybeanjs/soybean-admin/commit/2f15a2a) +- **styles**: fix css var is inserted repeatedly  -  by **燕博文** [(769d8)](https://github.com/soybeanjs/soybean-admin/commit/769d84a) + +###    💅 Refactors + +- **projects**: refactor addThemeVarsToHtml  -  by @honghuangdc [(41e47)](https://github.com/soybeanjs/soybean-admin/commit/41e470e) + +###    🏡 Chore + +- **deps**: update deps  -  by @honghuangdc [(a1b48)](https://github.com/soybeanjs/soybean-admin/commit/a1b484a) +- **projects**: disabled unocss eslint rule: order-attributify  -  by @honghuangdc [(1c72d)](https://github.com/soybeanjs/soybean-admin/commit/1c72dc7) + +###    ❤️ Contributors + +[![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)   +[燕博文](mailto:349952469@qq.com) + +## [v1.0.1](https://github.com/soybeanjs/soybean-admin/compare/v1.0.0...v1.0.1) (2024-04-03) + +###    🐞 Bug Fixes + +- **projects**: + - fix flatRequest error type. fixed #376  -  by @honghuangdc in https://github.com/soybeanjs/soybean-admin/issues/376 [(1ec5e)](https://github.com/soybeanjs/soybean-admin/commit/1ec5ea0) + - add maxWidth for GlobalTab to fix bg with gap. fixed #350  -  by @honghuangdc in https://github.com/soybeanjs/soybean-admin/issues/350 [(cc539)](https://github.com/soybeanjs/soybean-admin/commit/cc53997) + +###    📖 Documentation + +- **projects**: update README.md  -  by @honghuangdc [(76011)](https://github.com/soybeanjs/soybean-admin/commit/76011af) + +###    🏡 Chore + +- **projects**: + - update deps  -  by @honghuangdc [(4babb)](https://github.com/soybeanjs/soybean-admin/commit/4babbe1) + - update pnpm version  -  by @honghuangdc [(9125c)](https://github.com/soybeanjs/soybean-admin/commit/9125cc9) + +###    ❤️ Contributors + +[![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)   + +## [v1.0.0](https://github.com/soybeanjs/soybean-admin/compare/v0.10.4...v1.0.0) (2024-03-31) + +###    🚀 Features + +- internationalized menu search  -  by **Kori** [(9e115)](https://github.com/soybeanjs/soybean-admin/commit/9e115da) +- **components**: + - enhance the custom strength of the 'TableHeaderOperation' component  -  by **tnt group** [(fdf64)](https://github.com/soybeanjs/soybean-admin/commit/fdf64f7) + - add GlobalSearch components  -  by **燕博文** [(9ea87)](https://github.com/soybeanjs/soybean-admin/commit/9ea8789) +- **hooks**: + - add use-echarts  -  by @honghuangdc [(726ab)](https://github.com/soybeanjs/soybean-admin/commit/726abe4) +- **projects**: + - 1.0 beta  -  by @honghuangdc [(e918a)](https://github.com/soybeanjs/soybean-admin/commit/e918a2c) + - support Vite5  -  by @honghuangdc [(96e4a)](https://github.com/soybeanjs/soybean-admin/commit/96e4aff) + - @sa/axios: createRequest, createFlatRequest, createHookRequest  -  by @honghuangdc [(bac16)](https://github.com/soybeanjs/soybean-admin/commit/bac1632) + - add app loading  -  by @honghuangdc [(c6545)](https://github.com/soybeanjs/soybean-admin/commit/c65451b) + - add copyright, unocss shortcut: card-wrapper, update package.json  -  by @honghuangdc [(affcc)](https://github.com/soybeanjs/soybean-admin/commit/affcc26) + - add page: about  -  by @honghuangdc [(4955f)](https://github.com/soybeanjs/soybean-admin/commit/4955f1a) + - add custom route exception  -  by @honghuangdc [(b43c9)](https://github.com/soybeanjs/soybean-admin/commit/b43c925) + - filter tabs which are not in routes  -  by @honghuangdc [(f59f3)](https://github.com/soybeanjs/soybean-admin/commit/f59f348) + - packages/scripts: add command changelog,release  -  by @honghuangdc [(dafb6)](https://github.com/soybeanjs/soybean-admin/commit/dafb6fa) + - add script: gen-route  -  by @honghuangdc [(697c1)](https://github.com/soybeanjs/soybean-admin/commit/697c1b6) + - @sa/axios: add qs stringify for params  -  by @honghuangdc [(2400c)](https://github.com/soybeanjs/soybean-admin/commit/2400c02) + - page home & perf useEcharts  -  by @honghuangdc [(62e4d)](https://github.com/soybeanjs/soybean-admin/commit/62e4da0) + - finish page home  -  by @honghuangdc [(7bd1e)](https://github.com/soybeanjs/soybean-admin/commit/7bd1e47) + - add page function_tab  -  by @honghuangdc [(6ff86)](https://github.com/soybeanjs/soybean-admin/commit/6ff86e7) + - page manage_role  -  by @honghuangdc [(237c6)](https://github.com/soybeanjs/soybean-admin/commit/237c6d2) + - page manage_user  -  by @honghuangdc [(8a170)](https://github.com/soybeanjs/soybean-admin/commit/8a170ee) + - page manage_menu  -  by @honghuangdc [(87d65)](https://github.com/soybeanjs/soybean-admin/commit/87d65d3) + - page manage_menu operateDrawer  -  by @honghuangdc [(db17c)](https://github.com/soybeanjs/soybean-admin/commit/db17c91) + - Add type to TabRoute: matched  -  by @Azir-11 [(2d102)](https://github.com/soybeanjs/soybean-admin/commit/2d102a0) + - support directory menu hide all child menus. fixed #325  -  by @honghuangdc in https://github.com/soybeanjs/soybean-admin/issues/325 [(7256a)](https://github.com/soybeanjs/soybean-admin/commit/7256ad4) + - mock manage list data with pagination  -  by @honghuangdc [(1a6be)](https://github.com/soybeanjs/soybean-admin/commit/1a6be00) + - globalSearch add i18n  -  by **燕博文** [(0126d)](https://github.com/soybeanjs/soybean-admin/commit/0126da4) + - Add route meta parameter:fixedQuery  -  by @Azir-11 [(874aa)](https://github.com/soybeanjs/soybean-admin/commit/874aaca) + - update  -  by @honghuangdc [(4158a)](https://github.com/soybeanjs/soybean-admin/commit/4158a72) + - change borderRadius to 6px of naiveUI  -  by @honghuangdc [(49558)](https://github.com/soybeanjs/soybean-admin/commit/49558ca) + - pef manage role  -  by @honghuangdc [(18709)](https://github.com/soybeanjs/soybean-admin/commit/1870981) + - login page: code-login  -  by @honghuangdc [(c91dd)](https://github.com/soybeanjs/soybean-admin/commit/c91dd28) + - login page: register  -  by @honghuangdc [(1ed33)](https://github.com/soybeanjs/soybean-admin/commit/1ed33dc) + - add request refresh token & logout  -  by @honghuangdc [(11a6a)](https://github.com/soybeanjs/soybean-admin/commit/11a6a3b) + - add request exception example page  -  by @honghuangdc [(41e8b)](https://github.com/soybeanjs/soybean-admin/commit/41e8bc4) + - add auth example  -  by @honghuangdc [(c11d5)](https://github.com/soybeanjs/soybean-admin/commit/c11d56d) +- **router**: + - add sortRoutesByOrder function  -  by @Azir-11 [(0cf09)](https://github.com/soybeanjs/soybean-admin/commit/0cf09ba) + +###    🐞 Bug Fixes + +- **components**: + - fix tooltip zIndex of ButtonIcon  -  by @honghuangdc [(99097)](https://github.com/soybeanjs/soybean-admin/commit/99097b4) + - supplement the `NaiveUI` type  -  by **tnt group** [(ccc2b)](https://github.com/soybeanjs/soybean-admin/commit/ccc2b67) + - fix homeTab closeRight and disable colseLeft  -  by **~li** [(d28bf)](https://github.com/soybeanjs/soybean-admin/commit/d28bf52) +- **hooks**: + - Fix Naive Pagination's outdated API  -  by **tnt group** [(37436)](https://github.com/soybeanjs/soybean-admin/commit/3743612) +- **projects**: + - 修复路由命名为包含关系时导致导航数据出错的问题  -  by @Particaly [(76636)](https://github.com/soybeanjs/soybean-admin/commit/766369f) + - rename zh-ch  -  by @honghuangdc [(a8a77)](https://github.com/soybeanjs/soybean-admin/commit/a8a77ea) + - Fix welcome notification not closing  -  by @Azir-11 [(748cf)](https://github.com/soybeanjs/soybean-admin/commit/748cfa2) + - fix i18n vscode settings  -  by @honghuangdc [(fbf4c)](https://github.com/soybeanjs/soybean-admin/commit/fbf4cc4) + - add duration of login success notification  -  by @honghuangdc [(1335d)](https://github.com/soybeanjs/soybean-admin/commit/1335d47) + - fix menu indent  -  by @honghuangdc [(87143)](https://github.com/soybeanjs/soybean-admin/commit/8714317) + - fix theme mode segment  -  by @honghuangdc [(2372d)](https://github.com/soybeanjs/soybean-admin/commit/2372dc9) + - fix app loading theme color  -  by @honghuangdc [(0ba19)](https://github.com/soybeanjs/soybean-admin/commit/0ba19d5) + - fix page about style in mobile  -  by @honghuangdc [(8b6de)](https://github.com/soybeanjs/soybean-admin/commit/8b6de48) + - fix themeDrawer darkMode segement  -  by @honghuangdc [(1b5ca)](https://github.com/soybeanjs/soybean-admin/commit/1b5caa0) + - fix themeDrawer copy  -  by @honghuangdc [(b3779)](https://github.com/soybeanjs/soybean-admin/commit/b3779a6) + - remove space in tab content  -  by @honghuangdc [(4aae6)](https://github.com/soybeanjs/soybean-admin/commit/4aae6a5) + - fix horizontal menu  -  by @honghuangdc [(d886e)](https://github.com/soybeanjs/soybean-admin/commit/d886e50) + - perf card style  -  by @honghuangdc [(c1afb)](https://github.com/soybeanjs/soybean-admin/commit/c1afb9d) + - fix manage_user title  -  by @honghuangdc [(7770b)](https://github.com/soybeanjs/soybean-admin/commit/7770b37) + - default proxy prefix  -  by @smileluck [(da246)](https://github.com/soybeanjs/soybean-admin/commit/da24642) + - fix request msg  -  by @honghuangdc [(ae6b6)](https://github.com/soybeanjs/soybean-admin/commit/ae6b613) + - Fix the issue of tab error displaying parent localIcon  -  by @Azir-11 [(a9c98)](https://github.com/soybeanjs/soybean-admin/commit/a9c98d9) + - The matched value of TabRoute should be optional  -  by @Azir-11 [(e6fed)](https://github.com/soybeanjs/soybean-admin/commit/e6fed1f) + - fix build [unocss]: build failed to load icon "close", fixed #319  -  by @honghuangdc in https://github.com/soybeanjs/soybean-admin/issues/319 [(c18d8)](https://github.com/soybeanjs/soybean-admin/commit/c18d82f) + - fix resolve alias  -  by @honghuangdc [(3bdcb)](https://github.com/soybeanjs/soybean-admin/commit/3bdcbc7) + - Missing default value for tab icon  -  by @Azir-11 [(72a46)](https://github.com/soybeanjs/soybean-admin/commit/72a4679) + - add route icon: fucntion_hide-child  -  by @honghuangdc [(0a3ef)](https://github.com/soybeanjs/soybean-admin/commit/0a3efe3) + - fix table x-scroll. fixed #324  -  by @honghuangdc in https://github.com/soybeanjs/soybean-admin/issues/324 [(c7e2c)](https://github.com/soybeanjs/soybean-admin/commit/c7e2c55) + - Fix the logic of root route redirection to home  -  by **恕瑞玛的皇帝** [(0123c)](https://github.com/soybeanjs/soybean-admin/commit/0123c37) + - Fix homepage mount error under dynamic routing  -  by **恕瑞玛的皇帝** [(9cf2a)](https://github.com/soybeanjs/soybean-admin/commit/9cf2a51) + - fix repeat home tab  -  by @honghuangdc [(bccd6)](https://github.com/soybeanjs/soybean-admin/commit/bccd6cb) + - fix proxy config  -  by @honghuangdc [(c8019)](https://github.com/soybeanjs/soybean-admin/commit/c8019c4) + - fix proxy config  -  by @honghuangdc [(ffc95)](https://github.com/soybeanjs/soybean-admin/commit/ffc95d2) + - fix table row-key ts type  -  by @honghuangdc [(0cc8f)](https://github.com/soybeanjs/soybean-admin/commit/0cc8f05) + - fix class name conflict with unocss icon  -  by @honghuangdc [(455e4)](https://github.com/soybeanjs/soybean-admin/commit/455e48f) + - fix repeat routes  -  by @honghuangdc [(2c543)](https://github.com/soybeanjs/soybean-admin/commit/2c543f1) + - fix route init  -  by @honghuangdc [(23a40)](https://github.com/soybeanjs/soybean-admin/commit/23a4098) + - fix pin-toggler toolTip zIndex  -  by @honghuangdc [(f89e6)](https://github.com/soybeanjs/soybean-admin/commit/f89e6c0) + +###    🔥 Performance + +- **components**: + - Optimize internationalized menu search code  -  by **燕博文** [(8c1ef)](https://github.com/soybeanjs/soybean-admin/commit/8c1ef4b) + - Optimize menu search code  -  by **燕博文** [(296a2)](https://github.com/soybeanjs/soybean-admin/commit/296a2d2) + - perf count-to  -  by @honghuangdc [(b2c61)](https://github.com/soybeanjs/soybean-admin/commit/b2c61f0) + - components name is converted to uppercase  -  by **燕博文** [(04aa1)](https://github.com/soybeanjs/soybean-admin/commit/04aa10b) + - perf global-search  -  by @honghuangdc [(72745)](https://github.com/soybeanjs/soybean-admin/commit/7274522) +- **projects**: + - perf code  -  by @honghuangdc [(8081e)](https://github.com/soybeanjs/soybean-admin/commit/8081e19) + - env config  -  by @honghuangdc [(1bac3)](https://github.com/soybeanjs/soybean-admin/commit/1bac3b7) + - add detailed annotations for route role  -  by @honghuangdc [(f6bab)](https://github.com/soybeanjs/soybean-admin/commit/f6bab0c) + - perf code  -  by @honghuangdc [(5c49d)](https://github.com/soybeanjs/soybean-admin/commit/5c49d24) + - remove useless file  -  by @honghuangdc [(c624f)](https://github.com/soybeanjs/soybean-admin/commit/c624f32) + - remove @soybeanjs/cli  -  by @honghuangdc [(41349)](https://github.com/soybeanjs/soybean-admin/commit/4134955) + - echarts loading style  -  by @honghuangdc [(456c3)](https://github.com/soybeanjs/soybean-admin/commit/456c318) + - perf page manage_role, useTable  -  by @honghuangdc [(39aa7)](https://github.com/soybeanjs/soybean-admin/commit/39aa7aa) + - perf table columns style  -  by @honghuangdc [(babdb)](https://github.com/soybeanjs/soybean-admin/commit/babdb5d) + - perf page manage_menu style  -  by @honghuangdc [(0aa75)](https://github.com/soybeanjs/soybean-admin/commit/0aa75c0) + - perf code  -  by @honghuangdc [(7fa87)](https://github.com/soybeanjs/soybean-admin/commit/7fa87f5) + - perf code  -  by @honghuangdc [(05db8)](https://github.com/soybeanjs/soybean-admin/commit/05db8c0) + - perf code  -  by @honghuangdc [(dc24a)](https://github.com/soybeanjs/soybean-admin/commit/dc24a36) + - perf manage page style  -  by @honghuangdc [(779ba)](https://github.com/soybeanjs/soybean-admin/commit/779ba4e) + - perf manage menu  -  by @honghuangdc [(71f2c)](https://github.com/soybeanjs/soybean-admin/commit/71f2c55) + - manage menu: add transform to component  -  by @honghuangdc [(0abbf)](https://github.com/soybeanjs/soybean-admin/commit/0abbfa5) + - perf code  -  by @honghuangdc [(a0bad)](https://github.com/soybeanjs/soybean-admin/commit/a0bad57) + +###    💅 Refactors + +- **projects**: + - remove plugin-web-update-notification  -  by @honghuangdc [(f6c6d)](https://github.com/soybeanjs/soybean-admin/commit/f6c6dbd) + - fix conflict with locale file  -  by @honghuangdc [(3346b)](https://github.com/soybeanjs/soybean-admin/commit/3346bcd) + - refactor app-loading  -  by @honghuangdc [(b4f3d)](https://github.com/soybeanjs/soybean-admin/commit/b4f3dd2) + - use naive-ui color-picker  -  by @honghuangdc [(b5551)](https://github.com/soybeanjs/soybean-admin/commit/b5551d6) + - perf page home  -  by @honghuangdc [(4c61c)](https://github.com/soybeanjs/soybean-admin/commit/4c61c6f) + - login components => modules  -  by @honghuangdc [(59bec)](https://github.com/soybeanjs/soybean-admin/commit/59bec2d) + - perf page function_tab  -  by @honghuangdc [(b5477)](https://github.com/soybeanjs/soybean-admin/commit/b5477e8) + - update mock api  -  by @honghuangdc [(27241)](https://github.com/soybeanjs/soybean-admin/commit/2724169) + - page manage_role: extract module  -  by @honghuangdc [(0e9e2)](https://github.com/soybeanjs/soybean-admin/commit/0e9e2e1) + - perf page manage_role  -  by @honghuangdc [(a19f8)](https://github.com/soybeanjs/soybean-admin/commit/a19f895) + - manage_route => manage_menu  -  by @honghuangdc [(f8467)](https://github.com/soybeanjs/soybean-admin/commit/f8467ce) + - refactor service env config  -  by @honghuangdc [(43193)](https://github.com/soybeanjs/soybean-admin/commit/43193e2) + - refactor unocss shortcuts: wh-full => size-full  -  by @honghuangdc [(b4c00)](https://github.com/soybeanjs/soybean-admin/commit/b4c00ce) + - use enquirer replace prompts  -  by @honghuangdc [(b546f)](https://github.com/soybeanjs/soybean-admin/commit/b546ff8) + - refactor useTable  -  by @honghuangdc [(c3efa)](https://github.com/soybeanjs/soybean-admin/commit/c3efa1b) + - finish refactor useTable  -  by @honghuangdc [(86301)](https://github.com/soybeanjs/soybean-admin/commit/8630175) + - finish refactor useTable and apply  -  by @honghuangdc [(3fd15)](https://github.com/soybeanjs/soybean-admin/commit/3fd15e5) + - perf code  -  by @honghuangdc [(f91ef)](https://github.com/soybeanjs/soybean-admin/commit/f91ef30) + - new route guard  -  by @honghuangdc [(37d20)](https://github.com/soybeanjs/soybean-admin/commit/37d20b8) + +###    📖 Documentation + +- **projects**: + - update README.md  -  by @honghuangdc [(78364)](https://github.com/soybeanjs/soybean-admin/commit/783648f) + - update README.md  -  by @honghuangdc [(1ea48)](https://github.com/soybeanjs/soybean-admin/commit/1ea4817) + - add README  -  by @honghuangdc [(2371b)](https://github.com/soybeanjs/soybean-admin/commit/2371ba8) + - update README  -  by @honghuangdc [(d16a9)](https://github.com/soybeanjs/soybean-admin/commit/d16a9d5) + - update README.md  -  by @honghuangdc [(6a771)](https://github.com/soybeanjs/soybean-admin/commit/6a771ea) + - update README.md  -  by @honghuangdc [(57b6d)](https://github.com/soybeanjs/soybean-admin/commit/57b6d8a) + - update README.md  -  by @honghuangdc [(b30c0)](https://github.com/soybeanjs/soybean-admin/commit/b30c035) + - update README.md  -  by @honghuangdc [(c260f)](https://github.com/soybeanjs/soybean-admin/commit/c260fe2) + - update README.md  -  by @honghuangdc [(03c42)](https://github.com/soybeanjs/soybean-admin/commit/03c42aa) + - update README.md  -  by @honghuangdc [(0fae9)](https://github.com/soybeanjs/soybean-admin/commit/0fae993) + - update README.md  -  by @honghuangdc [(4e4d2)](https://github.com/soybeanjs/soybean-admin/commit/4e4d2de) + - update README.md  -  by @honghuangdc [(86b44)](https://github.com/soybeanjs/soybean-admin/commit/86b445c) + - update README.md  -  by @honghuangdc [(e2085)](https://github.com/soybeanjs/soybean-admin/commit/e2085e0) + - update README.md  -  by @honghuangdc [(6ea9b)](https://github.com/soybeanjs/soybean-admin/commit/6ea9b85) + - update README.md  -  by @honghuangdc [(ef4af)](https://github.com/soybeanjs/soybean-admin/commit/ef4af79) + - update README.md  -  by @honghuangdc [(41830)](https://github.com/soybeanjs/soybean-admin/commit/418302a) + - add CHANGELOG.md  -  by @honghuangdc [(46b61)](https://github.com/soybeanjs/soybean-admin/commit/46b6156) + - add communication  -  by @honghuangdc [(8c7ea)](https://github.com/soybeanjs/soybean-admin/commit/8c7ea23) + - update README.md  -  by @honghuangdc [(07d8d)](https://github.com/soybeanjs/soybean-admin/commit/07d8d25) + - update README.md  -  by @honghuangdc [(1a707)](https://github.com/soybeanjs/soybean-admin/commit/1a7070f) + - update README.md  -  by @honghuangdc [(f69e1)](https://github.com/soybeanjs/soybean-admin/commit/f69e152) + +###    🏡 Chore + +- **deps**: + - update deps  -  by @honghuangdc [(3eaf0)](https://github.com/soybeanjs/soybean-admin/commit/3eaf05b) + - update deps  -  by @honghuangdc [(36fe1)](https://github.com/soybeanjs/soybean-admin/commit/36fe1da) + - update deps  -  by @honghuangdc [(55342)](https://github.com/soybeanjs/soybean-admin/commit/5534294) + - update deps  -  by @honghuangdc [(f1b86)](https://github.com/soybeanjs/soybean-admin/commit/f1b86cc) + - update deps  -  by @honghuangdc [(840e7)](https://github.com/soybeanjs/soybean-admin/commit/840e7f9) + - update deps  -  by @honghuangdc [(6114b)](https://github.com/soybeanjs/soybean-admin/commit/6114b9f) + - update deps  -  by @honghuangdc [(9cc7e)](https://github.com/soybeanjs/soybean-admin/commit/9cc7ee5) + - update deps  -  by @honghuangdc [(9c4ba)](https://github.com/soybeanjs/soybean-admin/commit/9c4ba66) + - update deps  -  by @honghuangdc [(fb3b9)](https://github.com/soybeanjs/soybean-admin/commit/fb3b94b) + - update deps  -  by @honghuangdc [(14aa8)](https://github.com/soybeanjs/soybean-admin/commit/14aa856) + - update deps  -  by @honghuangdc [(02d4b)](https://github.com/soybeanjs/soybean-admin/commit/02d4b0a) + - update deps  -  by @honghuangdc [(b2ee9)](https://github.com/soybeanjs/soybean-admin/commit/b2ee9ee) + - update deps  -  by @honghuangdc [(0fee1)](https://github.com/soybeanjs/soybean-admin/commit/0fee104) + - update deps  -  by @honghuangdc [(c0a65)](https://github.com/soybeanjs/soybean-admin/commit/c0a65a1) + - update deps  -  by @honghuangdc [(6b513)](https://github.com/soybeanjs/soybean-admin/commit/6b5132c) + - update deps  -  by @honghuangdc [(82b53)](https://github.com/soybeanjs/soybean-admin/commit/82b53d7) +- **project**: + - delete src/locales/lang/zh-CN.ts  -  by @honghuangdc [(377db)](https://github.com/soybeanjs/soybean-admin/commit/377db82) +- **projects**: + - use eslint flat config & update config  -  by @honghuangdc [(a176d)](https://github.com/soybeanjs/soybean-admin/commit/a176dc4) + - update @sa/scripts  -  by @honghuangdc [(d7785)](https://github.com/soybeanjs/soybean-admin/commit/d778560) + - update pnpm version  -  by @honghuangdc [(55f76)](https://github.com/soybeanjs/soybean-admin/commit/55f7638) + - update eslint config  -  by @honghuangdc [(5023f)](https://github.com/soybeanjs/soybean-admin/commit/5023f37) + - lock deps versions  -  by @honghuangdc [(a24f9)](https://github.com/soybeanjs/soybean-admin/commit/a24f963) + - update pnpm version  -  by @honghuangdc [(ea02b)](https://github.com/soybeanjs/soybean-admin/commit/ea02b23) + - remove @simonwep/pickr  -  by @honghuangdc [(502a4)](https://github.com/soybeanjs/soybean-admin/commit/502a4d2) + - remove soybean.svg  -  by @honghuangdc [(4031f)](https://github.com/soybeanjs/soybean-admin/commit/4031faf) + - update pnpm version  -  by @honghuangdc [(adec0)](https://github.com/soybeanjs/soybean-admin/commit/adec0d7) + - update deps & fix keep-alive  -  by @honghuangdc [(13001)](https://github.com/soybeanjs/soybean-admin/commit/13001bc) + - update @elegant-router/vue, fix inject name in windows  -  by @honghuangdc [(0b56e)](https://github.com/soybeanjs/soybean-admin/commit/0b56e44) + - add dev and build command with service env  -  by @honghuangdc [(ebb15)](https://github.com/soybeanjs/soybean-admin/commit/ebb1548) + - update deps & remove packages docs  -  by @honghuangdc [(57963)](https://github.com/soybeanjs/soybean-admin/commit/579636b) + - update pnpm-lock.yaml  -  by @honghuangdc [(147f6)](https://github.com/soybeanjs/soybean-admin/commit/147f60d) + - update repository url  -  by @honghuangdc [(806a1)](https://github.com/soybeanjs/soybean-admin/commit/806a1cb) + - update deps & update pnpm version  -  by @honghuangdc [(9772a)](https://github.com/soybeanjs/soybean-admin/commit/9772aec) + - add unocss eslint config  -  by @honghuangdc [(40635)](https://github.com/soybeanjs/soybean-admin/commit/4063529) + - update launch.json  -  by @honghuangdc [(3db82)](https://github.com/soybeanjs/soybean-admin/commit/3db82ac) + - update vscode extensions.json  -  by @honghuangdc [(4e29a)](https://github.com/soybeanjs/soybean-admin/commit/4e29aca) + - update pnpm version  -  by @honghuangdc [(7065f)](https://github.com/soybeanjs/soybean-admin/commit/7065f6f) + - update deps & fix eslint vue rule  -  by @honghuangdc [(8143b)](https://github.com/soybeanjs/soybean-admin/commit/8143b00) + - update pnpm version  -  by @honghuangdc [(6ad51)](https://github.com/soybeanjs/soybean-admin/commit/6ad51e9) + - add .gitattributes  -  by @honghuangdc [(c0009)](https://github.com/soybeanjs/soybean-admin/commit/c000920) + +###    🎨 Styles + +- **components**: + - Uniform icon size for header  -  by @Azir-11 [(b37c1)](https://github.com/soybeanjs/soybean-admin/commit/b37c1e9) +- **projects**: + - format code  -  by @honghuangdc [(a7481)](https://github.com/soybeanjs/soybean-admin/commit/a748166) + - update theme mode segment height  -  by @honghuangdc [(4d846)](https://github.com/soybeanjs/soybean-admin/commit/4d8469e) + - fix tooltip zIndex of ButtonIcon  -  by @honghuangdc [(db747)](https://github.com/soybeanjs/soybean-admin/commit/db747c4) + - sort defineProps, defineEmits with TS type  -  by @honghuangdc [(123fd)](https://github.com/soybeanjs/soybean-admin/commit/123fd4f) + +###    🤖 CI + +- **projects**: + - add github actions config  -  by @honghuangdc [(4cb17)](https://github.com/soybeanjs/soybean-admin/commit/4cb17c7) + - update release.yml  -  by @honghuangdc [(7b298)](https://github.com/soybeanjs/soybean-admin/commit/7b298c6) + - add issue template  -  by @honghuangdc [(06e20)](https://github.com/soybeanjs/soybean-admin/commit/06e204a) + +###    ❤️ Contributors + +[![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)  [![Azir-11](https://github.com/Azir-11.png?size=48)](https://github.com/Azir-11)  [![smileluck](https://github.com/smileluck.png?size=48)](https://github.com/smileluck)  [![Particaly](https://github.com/Particaly.png?size=48)](https://github.com/Particaly)   +[~li](mailto:miciili-02@outlook.com), [Azir-11](mailto:2075125282@qq.com), [燕博文](mailto:349952469@qq.com), [tnt group](mailto:dodu@live.cn), [Kori](mailto:kexin@korix.top),  + +## [v1.0.0-beta.3](https://github.com/soybeanjs/soybean-admin/compare/v1.0.0-beta.2...v1.0.0-beta.3) (2024-03-31) + +###    📖 Documentation + +- **projects**: update README.md  -  by @honghuangdc [(f69e1)](https://github.com/soybeanjs/soybean-admin/commit/f69e152) + +###    🏡 Chore + +- **deps**: update deps  -  by @honghuangdc [(82b53)](https://github.com/soybeanjs/soybean-admin/commit/82b53d7) +- **projects**: add .gitattributes  -  by @honghuangdc [(c0009)](https://github.com/soybeanjs/soybean-admin/commit/c000920) + +###    ❤️ Contributors + +[![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)   + +## [v1.0.0-beta.2](https://github.com/soybeanjs/soybean-admin/compare/v1.0.0-beta.1...v1.0.0-beta.2) (2024-03-27) + +###    🐞 Bug Fixes + +- **projects**: fix pin-toggler toolTip zIndex  -  by @honghuangdc [(f89e6)](https://github.com/soybeanjs/soybean-admin/commit/f89e6c0) + +###    🔥 Performance + +- **projects**: perf code  -  by @honghuangdc [(a0bad)](https://github.com/soybeanjs/soybean-admin/commit/a0bad57) + +###    📖 Documentation + +- **projects**: + - add communication  -  by @honghuangdc [(8c7ea)](https://github.com/soybeanjs/soybean-admin/commit/8c7ea23) + - update README.md  -  by @honghuangdc [(07d8d)](https://github.com/soybeanjs/soybean-admin/commit/07d8d25) + - update README.md  -  by @honghuangdc [(1a707)](https://github.com/soybeanjs/soybean-admin/commit/1a7070f) + +###    🏡 Chore + +- **deps**: update deps  -  by @honghuangdc [(6b513)](https://github.com/soybeanjs/soybean-admin/commit/6b5132c) + +###    🤖 CI + +- **projects**: + - update release.yml  -  by @honghuangdc [(7b298)](https://github.com/soybeanjs/soybean-admin/commit/7b298c6) + - add issue template  -  by @honghuangdc [(06e20)](https://github.com/soybeanjs/soybean-admin/commit/06e204a) + +###    ❤️ Contributors + +[![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)   + +## [v1.0.0-beta.1](https://github.com/soybeanjs/soybean-admin/compare/v0.10.4...v1.0.0-beta.1) (2024-03-25) + +###    🚀 Features + +- internationalized menu search  -  by **Kori** [(9e115)](https://github.com/soybeanjs/soybean-admin/commit/9e115da) +- **components**: + - enhance the custom strength of the 'TableHeaderOperation' component  -  by **tnt group** [(fdf64)](https://github.com/soybeanjs/soybean-admin/commit/fdf64f7) + - add GlobalSearch components  -  by **燕博文** [(9ea87)](https://github.com/soybeanjs/soybean-admin/commit/9ea8789) +- **hooks**: + - add use-echarts  -  by @honghuangdc [(726ab)](https://github.com/soybeanjs/soybean-admin/commit/726abe4) +- **projects**: + - 1.0 beta  -  by @honghuangdc [(e918a)](https://github.com/soybeanjs/soybean-admin/commit/e918a2c) + - support Vite5  -  by @honghuangdc [(96e4a)](https://github.com/soybeanjs/soybean-admin/commit/96e4aff) + - @sa/axios: createRequest, createFlatRequest, createHookRequest  -  by @honghuangdc [(bac16)](https://github.com/soybeanjs/soybean-admin/commit/bac1632) + - add app loading  -  by @honghuangdc [(c6545)](https://github.com/soybeanjs/soybean-admin/commit/c65451b) + - add copyright, unocss shortcut: card-wrapper, update package.json  -  by @honghuangdc [(affcc)](https://github.com/soybeanjs/soybean-admin/commit/affcc26) + - add page: about  -  by @honghuangdc [(4955f)](https://github.com/soybeanjs/soybean-admin/commit/4955f1a) + - add custom route exception  -  by @honghuangdc [(b43c9)](https://github.com/soybeanjs/soybean-admin/commit/b43c925) + - filter tabs which are not in routes  -  by @honghuangdc [(f59f3)](https://github.com/soybeanjs/soybean-admin/commit/f59f348) + - packages/scripts: add command changelog,release  -  by @honghuangdc [(dafb6)](https://github.com/soybeanjs/soybean-admin/commit/dafb6fa) + - add script: gen-route  -  by @honghuangdc [(697c1)](https://github.com/soybeanjs/soybean-admin/commit/697c1b6) + - @sa/axios: add qs stringify for params  -  by @honghuangdc [(2400c)](https://github.com/soybeanjs/soybean-admin/commit/2400c02) + - page home & perf useEcharts  -  by @honghuangdc [(62e4d)](https://github.com/soybeanjs/soybean-admin/commit/62e4da0) + - finish page home  -  by @honghuangdc [(7bd1e)](https://github.com/soybeanjs/soybean-admin/commit/7bd1e47) + - add page function_tab  -  by @honghuangdc [(6ff86)](https://github.com/soybeanjs/soybean-admin/commit/6ff86e7) + - page manage_role  -  by @honghuangdc [(237c6)](https://github.com/soybeanjs/soybean-admin/commit/237c6d2) + - page manage_user  -  by @honghuangdc [(8a170)](https://github.com/soybeanjs/soybean-admin/commit/8a170ee) + - page manage_menu  -  by @honghuangdc [(87d65)](https://github.com/soybeanjs/soybean-admin/commit/87d65d3) + - page manage_menu operateDrawer  -  by @honghuangdc [(db17c)](https://github.com/soybeanjs/soybean-admin/commit/db17c91) + - Add type to TabRoute: matched  -  by @Azir-11 [(2d102)](https://github.com/soybeanjs/soybean-admin/commit/2d102a0) + - support directory menu hide all child menus. fixed #325  -  by @honghuangdc in https://github.com/soybeanjs/soybean-admin/issues/325 [(7256a)](https://github.com/soybeanjs/soybean-admin/commit/7256ad4) + - mock manage list data with pagination  -  by @honghuangdc [(1a6be)](https://github.com/soybeanjs/soybean-admin/commit/1a6be00) + - globalSearch add i18n  -  by **燕博文** [(0126d)](https://github.com/soybeanjs/soybean-admin/commit/0126da4) + - Add route meta parameter:fixedQuery  -  by @Azir-11 [(874aa)](https://github.com/soybeanjs/soybean-admin/commit/874aaca) + - update  -  by @honghuangdc [(4158a)](https://github.com/soybeanjs/soybean-admin/commit/4158a72) + - change borderRadius to 6px of naiveUI  -  by @honghuangdc [(49558)](https://github.com/soybeanjs/soybean-admin/commit/49558ca) + - pef manage role  -  by @honghuangdc [(18709)](https://github.com/soybeanjs/soybean-admin/commit/1870981) + - login page: code-login  -  by @honghuangdc [(c91dd)](https://github.com/soybeanjs/soybean-admin/commit/c91dd28) + - login page: register  -  by @honghuangdc [(1ed33)](https://github.com/soybeanjs/soybean-admin/commit/1ed33dc) + - add request refresh token & logout  -  by @honghuangdc [(11a6a)](https://github.com/soybeanjs/soybean-admin/commit/11a6a3b) + - add request exception example page  -  by @honghuangdc [(41e8b)](https://github.com/soybeanjs/soybean-admin/commit/41e8bc4) + - add auth example  -  by @honghuangdc [(c11d5)](https://github.com/soybeanjs/soybean-admin/commit/c11d56d) +- **router**: + - add sortRoutesByOrder function  -  by @Azir-11 [(0cf09)](https://github.com/soybeanjs/soybean-admin/commit/0cf09ba) + +###    🐞 Bug Fixes + +- **components**: + - fix tooltip zIndex of ButtonIcon  -  by @honghuangdc [(99097)](https://github.com/soybeanjs/soybean-admin/commit/99097b4) + - supplement the `NaiveUI` type  -  by **tnt group** [(ccc2b)](https://github.com/soybeanjs/soybean-admin/commit/ccc2b67) + - fix homeTab closeRight and disable colseLeft  -  by **~li** [(d28bf)](https://github.com/soybeanjs/soybean-admin/commit/d28bf52) +- **hooks**: + - Fix Naive Pagination's outdated API  -  by **tnt group** [(37436)](https://github.com/soybeanjs/soybean-admin/commit/3743612) +- **projects**: + - 修复路由命名为包含关系时导致导航数据出错的问题  -  by **pantao** [(76636)](https://github.com/soybeanjs/soybean-admin/commit/766369f) + - rename zh-ch  -  by @honghuangdc [(a8a77)](https://github.com/soybeanjs/soybean-admin/commit/a8a77ea) + - Fix welcome notification not closing  -  by @Azir-11 [(748cf)](https://github.com/soybeanjs/soybean-admin/commit/748cfa2) + - fix i18n vscode settings  -  by @honghuangdc [(fbf4c)](https://github.com/soybeanjs/soybean-admin/commit/fbf4cc4) + - add duration of login success notification  -  by @honghuangdc [(1335d)](https://github.com/soybeanjs/soybean-admin/commit/1335d47) + - fix menu indent  -  by @honghuangdc [(87143)](https://github.com/soybeanjs/soybean-admin/commit/8714317) + - fix theme mode segment  -  by @honghuangdc [(2372d)](https://github.com/soybeanjs/soybean-admin/commit/2372dc9) + - fix app loading theme color  -  by @honghuangdc [(0ba19)](https://github.com/soybeanjs/soybean-admin/commit/0ba19d5) + - fix page about style in mobile  -  by @honghuangdc [(8b6de)](https://github.com/soybeanjs/soybean-admin/commit/8b6de48) + - fix themeDrawer darkMode segement  -  by @honghuangdc [(1b5ca)](https://github.com/soybeanjs/soybean-admin/commit/1b5caa0) + - fix themeDrawer copy  -  by @honghuangdc [(b3779)](https://github.com/soybeanjs/soybean-admin/commit/b3779a6) + - remove space in tab content  -  by @honghuangdc [(4aae6)](https://github.com/soybeanjs/soybean-admin/commit/4aae6a5) + - fix horizontal menu  -  by @honghuangdc [(d886e)](https://github.com/soybeanjs/soybean-admin/commit/d886e50) + - perf card style  -  by @honghuangdc [(c1afb)](https://github.com/soybeanjs/soybean-admin/commit/c1afb9d) + - fix manage_user title  -  by @honghuangdc [(7770b)](https://github.com/soybeanjs/soybean-admin/commit/7770b37) + - default proxy prefix  -  by @smileluck [(da246)](https://github.com/soybeanjs/soybean-admin/commit/da24642) + - fix request msg  -  by @honghuangdc [(ae6b6)](https://github.com/soybeanjs/soybean-admin/commit/ae6b613) + - Fix the issue of tab error displaying parent localIcon  -  by @Azir-11 [(a9c98)](https://github.com/soybeanjs/soybean-admin/commit/a9c98d9) + - The matched value of TabRoute should be optional  -  by @Azir-11 [(e6fed)](https://github.com/soybeanjs/soybean-admin/commit/e6fed1f) + - fix build [unocss]: build failed to load icon "close", fixed #319  -  by @honghuangdc in https://github.com/soybeanjs/soybean-admin/issues/319 [(c18d8)](https://github.com/soybeanjs/soybean-admin/commit/c18d82f) + - fix resolve alias  -  by @honghuangdc [(3bdcb)](https://github.com/soybeanjs/soybean-admin/commit/3bdcbc7) + - Missing default value for tab icon  -  by @Azir-11 [(72a46)](https://github.com/soybeanjs/soybean-admin/commit/72a4679) + - add route icon: fucntion_hide-child  -  by @honghuangdc [(0a3ef)](https://github.com/soybeanjs/soybean-admin/commit/0a3efe3) + - fix table x-scroll. fixed #324  -  by @honghuangdc in https://github.com/soybeanjs/soybean-admin/issues/324 [(c7e2c)](https://github.com/soybeanjs/soybean-admin/commit/c7e2c55) + - Fix the logic of root route redirection to home  -  by **恕瑞玛的皇帝** [(0123c)](https://github.com/soybeanjs/soybean-admin/commit/0123c37) + - Fix homepage mount error under dynamic routing  -  by **恕瑞玛的皇帝** [(9cf2a)](https://github.com/soybeanjs/soybean-admin/commit/9cf2a51) + - fix repeat home tab  -  by @honghuangdc [(bccd6)](https://github.com/soybeanjs/soybean-admin/commit/bccd6cb) + - fix proxy config  -  by @honghuangdc [(c8019)](https://github.com/soybeanjs/soybean-admin/commit/c8019c4) + - fix proxy config  -  by @honghuangdc [(ffc95)](https://github.com/soybeanjs/soybean-admin/commit/ffc95d2) + - fix table row-key ts type  -  by @honghuangdc [(0cc8f)](https://github.com/soybeanjs/soybean-admin/commit/0cc8f05) + - fix class name conflict with unocss icon  -  by @honghuangdc [(455e4)](https://github.com/soybeanjs/soybean-admin/commit/455e48f) + - fix repeat routes  -  by @honghuangdc [(2c543)](https://github.com/soybeanjs/soybean-admin/commit/2c543f1) + - fix route init  -  by @honghuangdc [(23a40)](https://github.com/soybeanjs/soybean-admin/commit/23a4098) + +###    🔥 Performance + +- **components**: + - Optimize internationalized menu search code  -  by **燕博文** [(8c1ef)](https://github.com/soybeanjs/soybean-admin/commit/8c1ef4b) + - Optimize menu search code  -  by **燕博文** [(296a2)](https://github.com/soybeanjs/soybean-admin/commit/296a2d2) + - perf count-to  -  by @honghuangdc [(b2c61)](https://github.com/soybeanjs/soybean-admin/commit/b2c61f0) + - components name is converted to uppercase  -  by **燕博文** [(04aa1)](https://github.com/soybeanjs/soybean-admin/commit/04aa10b) + - perf global-search  -  by @honghuangdc [(72745)](https://github.com/soybeanjs/soybean-admin/commit/7274522) +- **projects**: + - perf code  -  by @honghuangdc [(8081e)](https://github.com/soybeanjs/soybean-admin/commit/8081e19) + - env config  -  by @honghuangdc [(1bac3)](https://github.com/soybeanjs/soybean-admin/commit/1bac3b7) + - add detailed annotations for route role  -  by @honghuangdc [(f6bab)](https://github.com/soybeanjs/soybean-admin/commit/f6bab0c) + - perf code  -  by @honghuangdc [(5c49d)](https://github.com/soybeanjs/soybean-admin/commit/5c49d24) + - remove useless file  -  by @honghuangdc [(c624f)](https://github.com/soybeanjs/soybean-admin/commit/c624f32) + - remove @soybeanjs/cli  -  by @honghuangdc [(41349)](https://github.com/soybeanjs/soybean-admin/commit/4134955) + - echarts loading style  -  by @honghuangdc [(456c3)](https://github.com/soybeanjs/soybean-admin/commit/456c318) + - perf page manage_role, useTable  -  by @honghuangdc [(39aa7)](https://github.com/soybeanjs/soybean-admin/commit/39aa7aa) + - perf table columns style  -  by @honghuangdc [(babdb)](https://github.com/soybeanjs/soybean-admin/commit/babdb5d) + - perf page manage_menu style  -  by @honghuangdc [(0aa75)](https://github.com/soybeanjs/soybean-admin/commit/0aa75c0) + - perf code  -  by @honghuangdc [(7fa87)](https://github.com/soybeanjs/soybean-admin/commit/7fa87f5) + - perf code  -  by @honghuangdc [(05db8)](https://github.com/soybeanjs/soybean-admin/commit/05db8c0) + - perf code  -  by @honghuangdc [(dc24a)](https://github.com/soybeanjs/soybean-admin/commit/dc24a36) + - perf manage page style  -  by @honghuangdc [(779ba)](https://github.com/soybeanjs/soybean-admin/commit/779ba4e) + - perf manage menu  -  by @honghuangdc [(71f2c)](https://github.com/soybeanjs/soybean-admin/commit/71f2c55) + - manage menu: add transform to component  -  by @honghuangdc [(0abbf)](https://github.com/soybeanjs/soybean-admin/commit/0abbfa5) + +###    💅 Refactors + +- **projects**: + - remove plugin-web-update-notification  -  by @honghuangdc [(f6c6d)](https://github.com/soybeanjs/soybean-admin/commit/f6c6dbd) + - fix conflict with locale file  -  by @honghuangdc [(3346b)](https://github.com/soybeanjs/soybean-admin/commit/3346bcd) + - refactor app-loading  -  by @honghuangdc [(b4f3d)](https://github.com/soybeanjs/soybean-admin/commit/b4f3dd2) + - use naive-ui color-picker  -  by @honghuangdc [(b5551)](https://github.com/soybeanjs/soybean-admin/commit/b5551d6) + - perf page home  -  by @honghuangdc [(4c61c)](https://github.com/soybeanjs/soybean-admin/commit/4c61c6f) + - login components => modules  -  by @honghuangdc [(59bec)](https://github.com/soybeanjs/soybean-admin/commit/59bec2d) + - perf page function_tab  -  by @honghuangdc [(b5477)](https://github.com/soybeanjs/soybean-admin/commit/b5477e8) + - update mock api  -  by @honghuangdc [(27241)](https://github.com/soybeanjs/soybean-admin/commit/2724169) + - page manage_role: extract module  -  by @honghuangdc [(0e9e2)](https://github.com/soybeanjs/soybean-admin/commit/0e9e2e1) + - perf page manage_role  -  by @honghuangdc [(a19f8)](https://github.com/soybeanjs/soybean-admin/commit/a19f895) + - manage_route => manage_menu  -  by @honghuangdc [(f8467)](https://github.com/soybeanjs/soybean-admin/commit/f8467ce) + - refactor service env config  -  by @honghuangdc [(43193)](https://github.com/soybeanjs/soybean-admin/commit/43193e2) + - refactor unocss shortcuts: wh-full => size-full  -  by @honghuangdc [(b4c00)](https://github.com/soybeanjs/soybean-admin/commit/b4c00ce) + - use enquirer replace prompts  -  by @honghuangdc [(b546f)](https://github.com/soybeanjs/soybean-admin/commit/b546ff8) + - refactor useTable  -  by @honghuangdc [(c3efa)](https://github.com/soybeanjs/soybean-admin/commit/c3efa1b) + - finish refactor useTable  -  by @honghuangdc [(86301)](https://github.com/soybeanjs/soybean-admin/commit/8630175) + - finish refactor useTable and apply  -  by @honghuangdc [(3fd15)](https://github.com/soybeanjs/soybean-admin/commit/3fd15e5) + - perf code  -  by @honghuangdc [(f91ef)](https://github.com/soybeanjs/soybean-admin/commit/f91ef30) + - new route guard  -  by @honghuangdc [(37d20)](https://github.com/soybeanjs/soybean-admin/commit/37d20b8) + +###    📖 Documentation + +- **projects**: + - update README.md  -  by @honghuangdc [(78364)](https://github.com/soybeanjs/soybean-admin/commit/783648f) + - update README.md  -  by @honghuangdc [(1ea48)](https://github.com/soybeanjs/soybean-admin/commit/1ea4817) + - add README  -  by @honghuangdc [(2371b)](https://github.com/soybeanjs/soybean-admin/commit/2371ba8) + - update README  -  by @honghuangdc [(d16a9)](https://github.com/soybeanjs/soybean-admin/commit/d16a9d5) + - update README.md  -  by @honghuangdc [(6a771)](https://github.com/soybeanjs/soybean-admin/commit/6a771ea) + - update README.md  -  by @honghuangdc [(57b6d)](https://github.com/soybeanjs/soybean-admin/commit/57b6d8a) + - update README.md  -  by @honghuangdc [(b30c0)](https://github.com/soybeanjs/soybean-admin/commit/b30c035) + - update README.md  -  by @honghuangdc [(c260f)](https://github.com/soybeanjs/soybean-admin/commit/c260fe2) + - update README.md  -  by @honghuangdc [(03c42)](https://github.com/soybeanjs/soybean-admin/commit/03c42aa) + - update README.md  -  by @honghuangdc [(0fae9)](https://github.com/soybeanjs/soybean-admin/commit/0fae993) + - update README.md  -  by @honghuangdc [(4e4d2)](https://github.com/soybeanjs/soybean-admin/commit/4e4d2de) + - update README.md  -  by @honghuangdc [(86b44)](https://github.com/soybeanjs/soybean-admin/commit/86b445c) + - update README.md  -  by @honghuangdc [(e2085)](https://github.com/soybeanjs/soybean-admin/commit/e2085e0) + - update README.md  -  by @honghuangdc [(6ea9b)](https://github.com/soybeanjs/soybean-admin/commit/6ea9b85) + - update README.md  -  by @honghuangdc [(ef4af)](https://github.com/soybeanjs/soybean-admin/commit/ef4af79) + - update README.md  -  by @honghuangdc [(41830)](https://github.com/soybeanjs/soybean-admin/commit/418302a) + - add CHANGELOG.md  -  by @honghuangdc [(46b61)](https://github.com/soybeanjs/soybean-admin/commit/46b6156) + +###    🏡 Chore + +- **deps**: + - update deps  -  by @honghuangdc [(3eaf0)](https://github.com/soybeanjs/soybean-admin/commit/3eaf05b) + - update deps  -  by @honghuangdc [(36fe1)](https://github.com/soybeanjs/soybean-admin/commit/36fe1da) + - update deps  -  by @honghuangdc [(55342)](https://github.com/soybeanjs/soybean-admin/commit/5534294) + - update deps  -  by @honghuangdc [(f1b86)](https://github.com/soybeanjs/soybean-admin/commit/f1b86cc) + - update deps  -  by @honghuangdc [(840e7)](https://github.com/soybeanjs/soybean-admin/commit/840e7f9) + - update deps  -  by @honghuangdc [(6114b)](https://github.com/soybeanjs/soybean-admin/commit/6114b9f) + - update deps  -  by @honghuangdc [(9cc7e)](https://github.com/soybeanjs/soybean-admin/commit/9cc7ee5) + - update deps  -  by @honghuangdc [(9c4ba)](https://github.com/soybeanjs/soybean-admin/commit/9c4ba66) + - update deps  -  by @honghuangdc [(fb3b9)](https://github.com/soybeanjs/soybean-admin/commit/fb3b94b) + - update deps  -  by @honghuangdc [(14aa8)](https://github.com/soybeanjs/soybean-admin/commit/14aa856) + - update deps  -  by @honghuangdc [(02d4b)](https://github.com/soybeanjs/soybean-admin/commit/02d4b0a) + - update deps  -  by @honghuangdc [(b2ee9)](https://github.com/soybeanjs/soybean-admin/commit/b2ee9ee) + - update deps  -  by @honghuangdc [(0fee1)](https://github.com/soybeanjs/soybean-admin/commit/0fee104) + - update deps  -  by @honghuangdc [(c0a65)](https://github.com/soybeanjs/soybean-admin/commit/c0a65a1) +- **project**: + - delete src/locales/lang/zh-CN.ts  -  by @honghuangdc [(377db)](https://github.com/soybeanjs/soybean-admin/commit/377db82) +- **projects**: + - use eslint flat config & update config  -  by @honghuangdc [(a176d)](https://github.com/soybeanjs/soybean-admin/commit/a176dc4) + - update @sa/scripts  -  by @honghuangdc [(d7785)](https://github.com/soybeanjs/soybean-admin/commit/d778560) + - update pnpm version  -  by @honghuangdc [(55f76)](https://github.com/soybeanjs/soybean-admin/commit/55f7638) + - update eslint config  -  by @honghuangdc [(5023f)](https://github.com/soybeanjs/soybean-admin/commit/5023f37) + - lock deps versions  -  by @honghuangdc [(a24f9)](https://github.com/soybeanjs/soybean-admin/commit/a24f963) + - update pnpm version  -  by @honghuangdc [(ea02b)](https://github.com/soybeanjs/soybean-admin/commit/ea02b23) + - remove @simonwep/pickr  -  by @honghuangdc [(502a4)](https://github.com/soybeanjs/soybean-admin/commit/502a4d2) + - remove soybean.svg  -  by @honghuangdc [(4031f)](https://github.com/soybeanjs/soybean-admin/commit/4031faf) + - update pnpm version  -  by @honghuangdc [(adec0)](https://github.com/soybeanjs/soybean-admin/commit/adec0d7) + - update deps & fix keep-alive  -  by @honghuangdc [(13001)](https://github.com/soybeanjs/soybean-admin/commit/13001bc) + - update @elegant-router/vue, fix inject name in windows  -  by @honghuangdc [(0b56e)](https://github.com/soybeanjs/soybean-admin/commit/0b56e44) + - add dev and build command with service env  -  by @honghuangdc [(ebb15)](https://github.com/soybeanjs/soybean-admin/commit/ebb1548) + - update deps & remove packages docs  -  by @honghuangdc [(57963)](https://github.com/soybeanjs/soybean-admin/commit/579636b) + - update pnpm-lock.yaml  -  by @honghuangdc [(147f6)](https://github.com/soybeanjs/soybean-admin/commit/147f60d) + - update repository url  -  by @honghuangdc [(806a1)](https://github.com/soybeanjs/soybean-admin/commit/806a1cb) + - update deps & update pnpm version  -  by @honghuangdc [(9772a)](https://github.com/soybeanjs/soybean-admin/commit/9772aec) + - add unocss eslint config  -  by @honghuangdc [(40635)](https://github.com/soybeanjs/soybean-admin/commit/4063529) + - update launch.json  -  by @honghuangdc [(3db82)](https://github.com/soybeanjs/soybean-admin/commit/3db82ac) + - update vscode extensions.json  -  by @honghuangdc [(4e29a)](https://github.com/soybeanjs/soybean-admin/commit/4e29aca) + - update pnpm version  -  by @honghuangdc [(7065f)](https://github.com/soybeanjs/soybean-admin/commit/7065f6f) + - update deps & fix eslint vue rule  -  by @honghuangdc [(8143b)](https://github.com/soybeanjs/soybean-admin/commit/8143b00) + - update pnpm version  -  by @honghuangdc [(6ad51)](https://github.com/soybeanjs/soybean-admin/commit/6ad51e9) + +###    🎨 Styles + +- **components**: + - Uniform icon size for header  -  by @Azir-11 [(b37c1)](https://github.com/soybeanjs/soybean-admin/commit/b37c1e9) +- **projects**: + - format code  -  by @honghuangdc [(a7481)](https://github.com/soybeanjs/soybean-admin/commit/a748166) + - update theme mode segment height  -  by @honghuangdc [(4d846)](https://github.com/soybeanjs/soybean-admin/commit/4d8469e) + - fix tooltip zIndex of ButtonIcon  -  by @honghuangdc [(db747)](https://github.com/soybeanjs/soybean-admin/commit/db747c4) + - sort defineProps, defineEmits with TS type  -  by @honghuangdc [(123fd)](https://github.com/soybeanjs/soybean-admin/commit/123fd4f) + +###    🤖 CI + +- **projects**: add github actions config  -  by @honghuangdc [(4cb17)](https://github.com/soybeanjs/soybean-admin/commit/4cb17c7) + +###    ❤️ Contributors + +[![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)  [![Azir-11](https://github.com/Azir-11.png?size=48)](https://github.com/Azir-11)  [![smileluck](https://github.com/smileluck.png?size=48)](https://github.com/smileluck)  [![Particaly](https://github.com/Particaly.png?size=48)](https://github.com/Particaly)   +[~li](mailto:miciili-02@outlook.com), [Azir-11](mailto:2075125282@qq.com), [燕博文](mailto:349952469@qq.com), [tnt group](mailto:dodu@live.cn), [Kori](mailto:kexin@korix.top),  + +## [v0.10.4](https://github.com/honghuangdc/soybean-admin/compare/v0.10.3...v0.10.4) (23-09-20) + +###    🚀 Features + +- **auth**: + - 防止多次刷新token  -  by @eAliwei [(0eaa3)](https://github.com/honghuangdc/soybean-admin/commit/0eaa327) +- **hooks**: + - add useHookTable  -  by @honghuangdc [(b3ae7)](https://github.com/honghuangdc/soybean-admin/commit/b3ae760) +- **projects**: + - add websocket demo  -  by @honghuangdc [(af53e)](https://github.com/honghuangdc/soybean-admin/commit/af53ec7) + - add switch for customize darkmode transition  -  by @honghuangdc [(6e0cc)](https://github.com/honghuangdc/soybean-admin/commit/6e0cce4) + - new i18n function $t & login page and setting drawer config i18n  -  by @honghuangdc [(854d0)](https://github.com/honghuangdc/soybean-admin/commit/854d0bc) + - add plugin-web-update-notification  -  by @honghuangdc [(c9164)](https://github.com/honghuangdc/soybean-admin/commit/c91644b) + +###    🐞 Bug Fixes + +- **components**: + - 修复动态路由主页404  -  by @lapislazulisch [(3ae19)](https://github.com/honghuangdc/soybean-admin/commit/3ae1952) + - 修复动态路由home页404  -  by @lapislazulisch [(ad6ac)](https://github.com/honghuangdc/soybean-admin/commit/ad6ac72) +- **projects**: + - fix set tab title (fixed #256)  -  by @honghuangdc in https://github.com/honghuangdc/soybean-admin/issues/256 [(13f6c)](https://github.com/honghuangdc/soybean-admin/commit/13f6cd8) + - correct the lang file name & add recommend vscode plugin i18n-ally  -  by @honghuangdc [(864ec)](https://github.com/honghuangdc/soybean-admin/commit/864ec47) + - fix reload button animate  -  by @honghuangdc [(41f23)](https://github.com/honghuangdc/soybean-admin/commit/41f2338) +- **styles**: + - 用户管理页面布局自适应屏幕高度 (fixed #253)  -  by @honghuangdc in https://github.com/honghuangdc/soybean-admin/issues/253 [(0f7b9)](https://github.com/honghuangdc/soybean-admin/commit/0f7b9d5) + +###    🔥 Performance + +- **hooks**: + - perf use-table  -  by @honghuangdc [(33180)](https://github.com/honghuangdc/soybean-admin/commit/3318041) + - perf useHookTable  -  by @honghuangdc [(809fa)](https://github.com/honghuangdc/soybean-admin/commit/809fa85) +- **projects**: + - add type declaration for document startViewTransition  -  by @honghuangdc [(d3ebe)](https://github.com/honghuangdc/soybean-admin/commit/d3ebe95) + +###    💅 Refactors + +- **projects**: + - 生产环境缓存主题变更为sessionStorage  -  by @honghuangdc [(c46a5)](https://github.com/honghuangdc/soybean-admin/commit/c46a592) + - add reCacheRoute method  -  by @honghuangdc [(f92ee)](https://github.com/honghuangdc/soybean-admin/commit/f92ee77) + - update soybean domain  -  by @honghuangdc [(073fd)](https://github.com/honghuangdc/soybean-admin/commit/073fd16) + +###    📖 Documentation + +- **projects**: + - update README.md logo  -  by @honghuangdc [(19141)](https://github.com/honghuangdc/soybean-admin/commit/19141a7) + - update Docker deployment method  -  by @snowords [(00da0)](https://github.com/honghuangdc/soybean-admin/commit/00da000) + - update git hooks init command  -  by @snowords [(7f35e)](https://github.com/honghuangdc/soybean-admin/commit/7f35e87) + - update README.md  -  by @eltociear [(93ed5)](https://github.com/honghuangdc/soybean-admin/commit/93ed5ad) + +###    🏡 Chore + +- **deps**: + - update deps  -  by @honghuangdc [(bba68)](https://github.com/honghuangdc/soybean-admin/commit/bba68bf) + - update deps  -  by @honghuangdc [(0e6d2)](https://github.com/honghuangdc/soybean-admin/commit/0e6d289) + - update deps  -  by @honghuangdc [(135ce)](https://github.com/honghuangdc/soybean-admin/commit/135ce77) + - update deps  -  by @honghuangdc [(44ba3)](https://github.com/honghuangdc/soybean-admin/commit/44ba327) + - update deps  -  by @honghuangdc [(9296e)](https://github.com/honghuangdc/soybean-admin/commit/9296e69) + - update deps  -  by @honghuangdc [(751de)](https://github.com/honghuangdc/soybean-admin/commit/751ded4) + - update deps  -  by @honghuangdc [(305d9)](https://github.com/honghuangdc/soybean-admin/commit/305d956) +- **projects**: + - update deps and fix swiper  -  by @honghuangdc [(9d105)](https://github.com/honghuangdc/soybean-admin/commit/9d1051b) + - update package.json  -  by @honghuangdc [(d7aea)](https://github.com/honghuangdc/soybean-admin/commit/d7aea9d) + - update deps & fix eslint code  -  by @honghuangdc [(08e0c)](https://github.com/honghuangdc/soybean-admin/commit/08e0cf5) + - update pnpm-lock.yaml  -  by @honghuangdc [(94644)](https://github.com/honghuangdc/soybean-admin/commit/9464473) + - update VSCode setting  -  by @honghuangdc [(56c77)](https://github.com/honghuangdc/soybean-admin/commit/56c770c) + - correct the word spell  -  by @honghuangdc [(458e3)](https://github.com/honghuangdc/soybean-admin/commit/458e387) + - correct word spell & eslint fix code  -  by @honghuangdc [(cffc3)](https://github.com/honghuangdc/soybean-admin/commit/cffc30a) + - When tab is switched, keep the page without refreshing  -  by @linjiangl [(83f25)](https://github.com/honghuangdc/soybean-admin/commit/83f2514) + +###    🎨 Styles + +- **projects**: + - unify card border radius, 16px to 8px  -  by @honghuangdc [(cbda4)](https://github.com/honghuangdc/soybean-admin/commit/cbda4a3) + - update default theme color  -  by @honghuangdc [(43ac2)](https://github.com/honghuangdc/soybean-admin/commit/43ac23f) + - prettier format code  -  by @honghuangdc [(24cf1)](https://github.com/honghuangdc/soybean-admin/commit/24cf1d9) + +###    ❤️ Contributors + +[![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)  [![eltociear](https://github.com/eltociear.png?size=48)](https://github.com/eltociear)  [![linjiangl](https://github.com/linjiangl.png?size=48)](https://github.com/linjiangl)  [![lapislazulisch](https://github.com/lapislazulisch.png?size=48)](https://github.com/lapislazulisch)  [![snowords](https://github.com/snowords.png?size=48)](https://github.com/snowords)  [![eAliwei](https://github.com/eAliwei.png?size=48)](https://github.com/eAliwei)  [![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)   + +## [v0.10.3](https://github.com/honghuangdc/soybean-admin/compare/v0.10.2...v0.10.3) (23-06-15) + +###    🐞 Bug Fixes + +- **projects**: fix userRoleOptions  -  by @soybeanjs [(2ca2b)](https://github.com/honghuangdc/soybean-admin/commit/2ca2b76) +- **styles**: fix toggle-lang bg  -  by @soybeanjs [(47309)](https://github.com/honghuangdc/soybean-admin/commit/473095b) + +###    🔥 Performance + +- **projects**: + - remove useless code  -  by @soybeanjs [(eb8e4)](https://github.com/honghuangdc/soybean-admin/commit/eb8e49e) + - use transformObjectToOption to generate option of object labels  -  by @soybeanjs [(da611)](https://github.com/honghuangdc/soybean-admin/commit/da611fb) + +###    📖 Documentation + +- **projects**: + - CHANGELOG.md  -  by @soybeanjs [(ff5bf)](https://github.com/honghuangdc/soybean-admin/commit/ff5bf62) + - generate full CHANGELOG.md  -  by @soybeanjs [(055d4)](https://github.com/honghuangdc/soybean-admin/commit/055d4cc) + - update README.md  -  by @soybeanjs [(3c7e1)](https://github.com/honghuangdc/soybean-admin/commit/3c7e1cf) + - update README.md  -  by @soybeanjs [(1681c)](https://github.com/honghuangdc/soybean-admin/commit/1681c34) + - update README.md picture url  -  by @soybeanjs [(4eefc)](https://github.com/honghuangdc/soybean-admin/commit/4eefc95) + - update README.md  -  by @soybeanjs [(8f24a)](https://github.com/honghuangdc/soybean-admin/commit/8f24a94) + - update CHANGELOG.md by regenerate changelog  -  by @soybeanjs [(2a9b7)](https://github.com/honghuangdc/soybean-admin/commit/2a9b725) + +###    🏡 Chore + +- **deps**: + - update deps  -  by @soybeanjs [(f9d47)](https://github.com/honghuangdc/soybean-admin/commit/f9d47c0) + - update deps  -  by @soybeanjs [(47ab0)](https://github.com/honghuangdc/soybean-admin/commit/47ab018) + - decrease vite-plugin-page-route  -  by @soybeanjs [(882f2)](https://github.com/honghuangdc/soybean-admin/commit/882f281) + - update deps  -  by @soybeanjs [(e6abf)](https://github.com/honghuangdc/soybean-admin/commit/e6abf93) +- **projects**: + - remove bumpp & add release script  -  by @soybeanjs [(a3dfe)](https://github.com/honghuangdc/soybean-admin/commit/a3dfe61) + - update @soybeanjs/cli and generate total changelog  -  by @soybeanjs [(58591)](https://github.com/honghuangdc/soybean-admin/commit/58591f6) + - update deps & update unocss deprecated api exclude  -  by @soybeanjs [(0907d)](https://github.com/honghuangdc/soybean-admin/commit/0907d38) + - update deps & update package.json  -  by @soybeanjs [(0b2f6)](https://github.com/honghuangdc/soybean-admin/commit/0b2f68a) + - add vite-plugin-vue-devtools  -  by @soybeanjs [(c1bee)](https://github.com/honghuangdc/soybean-admin/commit/c1bee40) + +###    ❤️ Contributors + +[![soybeanjs](https://github.com/soybeanjs.png?size=48)](https://github.com/soybeanjs)   + +## [v0.10.2](https://github.com/honghuangdc/soybean-admin/compare/v0.10.1...v0.10.2) (2023-06-01) + +###    🐞 Bug Fixes + +- **components**: fix mix-menu layout when the locale is English (fixed 241)  -  by @soybeanjs [(5c085)](https://github.com/honghuangdc/soybean-admin/commit/5c085a1) + +###    📖 Documentation + +- **projects**: + - CHANGELOG.md  -  by @soybeanjs [(bb2ea)](https://github.com/honghuangdc/soybean-admin/commit/bb2eab6) + - update README.md: update example image url [更新示例图片的链接]  -  by @soybeanjs [(4f512)](https://github.com/honghuangdc/soybean-admin/commit/4f51263) + - fix README.md: example image link  -  by @soybeanjs [(56ea8)](https://github.com/honghuangdc/soybean-admin/commit/56ea893) + +###    🏡 Chore + +- release v0.10.2  -  by @soybeanjs [(1f6d0)](https://github.com/honghuangdc/soybean-admin/commit/1f6d079) +- **projects**: update deps and use soy lint-staged replace lint-staged  -  by @soybeanjs [(9a238)](https://github.com/honghuangdc/soybean-admin/commit/9a23817) + +###    ❤️ Contributors + +[![soybeanjs](https://github.com/soybeanjs.png?size=48)](https://github.com/soybeanjs)   + +## [v0.10.1](https://github.com/honghuangdc/soybean-admin/compare/v0.10.0...v0.10.1) (2023-05-31) + +###    📖 Documentation + +- **projects**: + - CHANGELOG.md  -  by @soybeanjs [(a2521)](https://github.com/honghuangdc/soybean-admin/commit/a252138) + - update README.md  -  by @soybeanjs [(b5839)](https://github.com/honghuangdc/soybean-admin/commit/b5839ea) + +###    🏡 Chore + +- release v0.10.1  -  by @soybeanjs [(44e4c)](https://github.com/honghuangdc/soybean-admin/commit/44e4c04) +- **projects**: add switch for pageRoute plugin [添加自动生成路由的插件的开关]  -  by @soybeanjs [(780ac)](https://github.com/honghuangdc/soybean-admin/commit/780ac75) + +###    ❤️ Contributors + +[![soybeanjs](https://github.com/soybeanjs.png?size=48)](https://github.com/soybeanjs)   + +## [v0.10.0](https://github.com/honghuangdc/soybean-admin/compare/v0.9.9...v0.10.0) (2023-05-31) + +###    🚀 Features + +- **components**: + - Add tree related component instances  -  by **small_happy** [(d203a)](https://github.com/honghuangdc/soybean-admin/commit/d203a35) + - Add routing data related to tree components and page display optimization  -  by **small_happy** [(a0f55)](https://github.com/honghuangdc/soybean-admin/commit/a0f55ac) +- **projects**: + - 返回顶部功能适配新布局  -  by @yanbowe [(54e2c)](https://github.com/honghuangdc/soybean-admin/commit/54e2cb5) + - 增加i18n支持翻译菜单,tab,title  -  by **cc** [(3d48a)](https://github.com/honghuangdc/soybean-admin/commit/3d48aa8) + - add menu translate [翻译菜单]  -  by @soybeanjs [(f6828)](https://github.com/honghuangdc/soybean-admin/commit/f68285f) + - 增加主题切换过渡效果  -  by **cc** [(8da88)](https://github.com/honghuangdc/soybean-admin/commit/8da8843) + - support mobile layout [支持移动端布局]  -  by @soybeanjs [(f2b51)](https://github.com/honghuangdc/soybean-admin/commit/f2b518e) + +###    🐞 Bug Fixes + +- **projects**: + - fix router guide [修复路由跳转异常] fixed #216  -  by @soybeanjs in https://github.com/honghuangdc/soybean-admin/issues/216 [(59578)](https://github.com/honghuangdc/soybean-admin/commit/5957833) + - fix better-mock usage [修复better-mock用法]  -  by @soybeanjs [(c5764)](https://github.com/honghuangdc/soybean-admin/commit/c57640a) + - tsconfig missing isolatedModules  -  by @kirklin [(ab49a)](https://github.com/honghuangdc/soybean-admin/commit/ab49afd) + - fix mockjs [修复mockjs]  -  by @soybeanjs [(9b19f)](https://github.com/honghuangdc/soybean-admin/commit/9b19f96) + - add prod mockjs switch [添加生产模式的mockjs的开关]  -  by @soybeanjs [(9f563)](https://github.com/honghuangdc/soybean-admin/commit/9f5638f) + - 修复面包屑导航下拉菜单语言显示问题  -  by **cc** [(ee8fa)](https://github.com/honghuangdc/soybean-admin/commit/ee8fa04) + - hide the drawer when it is initial mobile mode [初始化时为移动端布局则隐藏侧边栏] fixed #238  -  by @soybeanjs in https://github.com/honghuangdc/soybean-admin/issues/238 [(0abde)](https://github.com/honghuangdc/soybean-admin/commit/0abde46) + +###    🔥 Performance + +- **projects**: + - complete dynamic route translate [补充动态路由的翻译]  -  by @soybeanjs [(7b746)](https://github.com/honghuangdc/soybean-admin/commit/7b746fa) + - move changing document title by locale to global event of composables & add appLoading unmount  -  by @soybeanjs [(08e19)](https://github.com/honghuangdc/soybean-admin/commit/08e194e) + +###    💅 Refactors + +- **projects**: + - update useTable  -  by @soybeanjs [(211ae)](https://github.com/honghuangdc/soybean-admin/commit/211ae1f) + - remove page examples: tree [去除tree相关示例页面]  -  by @soybeanjs [(f3090)](https://github.com/honghuangdc/soybean-admin/commit/f309003) + - use better-mock replace mockjs [用better-mock替换mockjs]  -  by @soybeanjs [(9d3c7)](https://github.com/honghuangdc/soybean-admin/commit/9d3c732) + - upgrade vue3.3, official support defineOptions  -  by @kirklin [(86a37)](https://github.com/honghuangdc/soybean-admin/commit/86a370f) + +###    📖 Documentation + +- **projects**: + - add qq to README.md [文档添加QQ群]  -  by @soybeanjs [(f74a6)](https://github.com/honghuangdc/soybean-admin/commit/f74a642) + - update README.md [更新README.md]  -  by @soybeanjs [(39709)](https://github.com/honghuangdc/soybean-admin/commit/397092c) + - update README.md [更新README.md]  -  by @soybeanjs [(5a4f8)](https://github.com/honghuangdc/soybean-admin/commit/5a4f842) + - update README.md [更新README.md]  -  by @soybeanjs [(a765d)](https://github.com/honghuangdc/soybean-admin/commit/a765da6) + - update README.md [更新README.md]  -  by @soybeanjs [(a989b)](https://github.com/honghuangdc/soybean-admin/commit/a989b44) + - 优化README.md  -  by @greper [(6ea75)](https://github.com/honghuangdc/soybean-admin/commit/6ea755f) + - readme.md 二次开发的项目内容换行  -  by @greper [(f3a17)](https://github.com/honghuangdc/soybean-admin/commit/f3a1707) + - update CHANGELOG.md  -  by @soybeanjs [(5f6ca)](https://github.com/honghuangdc/soybean-admin/commit/5f6caab) + +###    📦 Build + +- **deps**: + - update deps  -  by @soybeanjs [(db629)](https://github.com/honghuangdc/soybean-admin/commit/db62959) + - update deps [升级依赖]  -  by @soybeanjs [(f2e82)](https://github.com/honghuangdc/soybean-admin/commit/f2e82da) + - update deps and remove vite-plugin-html [升级依赖,去除vite-plugin-html]  -  by @soybeanjs [(eaf36)](https://github.com/honghuangdc/soybean-admin/commit/eaf3678) + - update deps [升级依赖]  -  by @soybeanjs [(bae17)](https://github.com/honghuangdc/soybean-admin/commit/bae1767) + - update deps [升级依赖]  -  by @soybeanjs [(c2642)](https://github.com/honghuangdc/soybean-admin/commit/c264216) + - update deps [升级依赖]  -  by @soybeanjs [(40f85)](https://github.com/honghuangdc/soybean-admin/commit/40f8587) +- **projects**: + - remove old layout,tab package [去除旧的布局和页签依赖]  -  by @soybeanjs [(42e6d)](https://github.com/honghuangdc/soybean-admin/commit/42e6de3) + - update deps and fix type error [升级依赖并修复类型问题]  -  by @soybeanjs [(34f02)](https://github.com/honghuangdc/soybean-admin/commit/34f023c) + - update deps and fix style [升级依赖&修复代码格式]  -  by @soybeanjs [(c1c43)](https://github.com/honghuangdc/soybean-admin/commit/c1c4335) + +###    🏡 Chore + +- release v0.10.0  -  by @soybeanjs [(270a0)](https://github.com/honghuangdc/soybean-admin/commit/270a055) +- **deps**: update deps  -  by @soybeanjs [(cebbe)](https://github.com/honghuangdc/soybean-admin/commit/cebbef6) +- **projects**: remove useless packages, update lint-staged config, add githublogen  -  by @soybeanjs [(5aaa3)](https://github.com/honghuangdc/soybean-admin/commit/5aaa318) + +###    🎨 Styles + +- **projects**: per style [完善样式]  -  by @soybeanjs [(209ef)](https://github.com/honghuangdc/soybean-admin/commit/209ef3d) + +###    ❤️ Contributors + +[![soybeanjs](https://github.com/soybeanjs.png?size=48)](https://github.com/soybeanjs)  [![greper](https://github.com/greper.png?size=48)](https://github.com/greper)  [![kirklin](https://github.com/kirklin.png?size=48)](https://github.com/kirklin)  [![yanbowe](https://github.com/yanbowe.png?size=48)](https://github.com/yanbowe)   +[cc](mailto:cc@qq.com), [small_happy](mailto:5304122+small_happy@user.noreply.gitee.com),  + +## [v0.9.9](https://github.com/honghuangdc/soybean-admin/compare/v0.9.8...v0.9.9) (2023-03-13) + +###    🚀 Features + +- **hooks**: + - add useNaiveTable  -  by @soybeanjs [(cc13f)](https://github.com/honghuangdc/soybean-admin/commit/cc13fcc) +- **projects**: + - custom unocss colors support opacity  -  by @soybeanjs [(488e6)](https://github.com/honghuangdc/soybean-admin/commit/488e6e3) + - new layout,tab and add update theme settings  -  by @soybeanjs [(912c3)](https://github.com/honghuangdc/soybean-admin/commit/912c353) + +###    🐞 Bug Fixes + +- **components**: + - 页面跳转被拦截, 则会出现 tab 页签与页面不一致的问题  -  by @taisha [(bd5dd)](https://github.com/honghuangdc/soybean-admin/commit/bd5dd2c) + - 修复iconSelect选择器点击事件失效  -  by @yanbowe [(7e505)](https://github.com/honghuangdc/soybean-admin/commit/7e505f9) + - refresh cached routes  -  by @taisha [(b0f98)](https://github.com/honghuangdc/soybean-admin/commit/b0f98e4) +- **projects**: + - fix eslint svg cause incorrect icon render  -  by @soybeanjs [(0b5af)](https://github.com/honghuangdc/soybean-admin/commit/0b5afda) + - sortRoutes recursively  -  by @sunhao1256 [(91889)](https://github.com/honghuangdc/soybean-admin/commit/9188941) + - not only `/login` claim dynamic path scenario , but also others , eg:/user/1  -  by @sunhao1256 [(60598)](https://github.com/honghuangdc/soybean-admin/commit/6059891) + - the length of routes children list should greater than 0  -  by @Shadowsight9 [(e1afc)](https://github.com/honghuangdc/soybean-admin/commit/e1afc10) + - fix pwa logo  -  by @soybeanjs [(bf2f6)](https://github.com/honghuangdc/soybean-admin/commit/bf2f617) + - fix github bug-report  -  by @soybeanjs [(f73e3)](https://github.com/honghuangdc/soybean-admin/commit/f73e3f6) +- **utils**: + - make AxiosRequestConfig optional for request.handleDelete()  -  by @guuuuo [(4a6fe)](https://github.com/honghuangdc/soybean-admin/commit/4a6fec8) + +###    💅 Refactors + +- **projects**: + - all file and folder use kebab-case  -  by @soybeanjs [(cea60)](https://github.com/honghuangdc/soybean-admin/commit/cea600f) + - update service and proxy config  -  by @soybeanjs [(8debf)](https://github.com/honghuangdc/soybean-admin/commit/8debfe7) + - remove enum  -  by @soybeanjs [(21d52)](https://github.com/honghuangdc/soybean-admin/commit/21d5214) + - rename union key  -  by @soybeanjs [(e2b32)](https://github.com/honghuangdc/soybean-admin/commit/e2b320a) + +###    📖 Documentation + +- **projects**: + - update README.md  -  by @soybeanjs [(cf8c7)](https://github.com/honghuangdc/soybean-admin/commit/cf8c7cb) + - update README.md  -  by @soybeanjs [(1ef1b)](https://github.com/honghuangdc/soybean-admin/commit/1ef1b6b) + - update README.md  -  by @soybeanjs [(aaef0)](https://github.com/honghuangdc/soybean-admin/commit/aaef0be) + +###    📦 Build + +- **deps**: + - update deps  -  by @soybeanjs [(61998)](https://github.com/honghuangdc/soybean-admin/commit/6199888) +- **projects**: + - update deps and fix project config  -  by @soybeanjs [(da521)](https://github.com/honghuangdc/soybean-admin/commit/da521b3) + - perf logo  -  by @soybeanjs [(a8a6e)](https://github.com/honghuangdc/soybean-admin/commit/a8a6ed9) + - update vscode config  -  by @soybeanjs [(608d7)](https://github.com/honghuangdc/soybean-admin/commit/608d7fb) + - update unocss config  -  by @soybeanjs [(3503d)](https://github.com/honghuangdc/soybean-admin/commit/3503dff) + - update deps, add prettier format command  -  by @soybeanjs [(36e5f)](https://github.com/honghuangdc/soybean-admin/commit/36e5fea) + +###    🏡 Chore + +- **projects**: + - add github action  -  by @lixin59 [(f355a)](https://github.com/honghuangdc/soybean-admin/commit/f355a69) + - 修复issue模板格式问题  -  by @lixin59 [(d8bab)](https://github.com/honghuangdc/soybean-admin/commit/d8baba5) +- **release**: + - 0.9.9  -  by @soybeanjs [(c0066)](https://github.com/honghuangdc/soybean-admin/commit/c0066b2) + +###    🎨 Styles + +- **projects**: format yaml  -  by @soybeanjs [(fb46d)](https://github.com/honghuangdc/soybean-admin/commit/fb46d7e) + +###    ❤️ Contributors + +[![soybeanjs](https://github.com/soybeanjs.png?size=48)](https://github.com/soybeanjs)  [![guuuuo](https://github.com/guuuuo.png?size=48)](https://github.com/guuuuo)  [![lixin59](https://github.com/lixin59.png?size=48)](https://github.com/lixin59)  [![taisha](https://github.com/taisha.png?size=48)](https://github.com/taisha)  [![Shadowsight9](https://github.com/Shadowsight9.png?size=48)](https://github.com/Shadowsight9)  [![sunhao1256](https://github.com/sunhao1256.png?size=48)](https://github.com/sunhao1256)  [![yanbowe](https://github.com/yanbowe.png?size=48)](https://github.com/yanbowe)   + +## [v0.9.8](https://github.com/honghuangdc/soybean-admin/compare/v0.9.7...v0.9.8) (2023-01-15) + +###    🚀 Features + +- setting 页面新增 是否显示footer的开关  -  by @zuihou [(d064f)](https://github.com/honghuangdc/soybean-admin/commit/d064f62) +- 新增 affix 属性,用于将其固定在tab卡  -  by @zuihou [(e772f)](https://github.com/honghuangdc/soybean-admin/commit/e772ff0) +- **projects**: + - add compress script [添加压缩命令]  -  by @soybeanjs [(be6d4)](https://github.com/honghuangdc/soybean-admin/commit/be6d431) + - add script about generating png logo from [添加根据svg生成png图标的命令]  -  by @soybeanjs [(70aee)](https://github.com/honghuangdc/soybean-admin/commit/70aeefe) + - add generate logo script  -  by @soybeanjs [(25daa)](https://github.com/honghuangdc/soybean-admin/commit/25daa23) + - add new route plugin @soybeanjs/vite-plugin-vue-page-route [集成新的路由插件]  -  by @soybeanjs [(3131e)](https://github.com/honghuangdc/soybean-admin/commit/3131e00) + +###    🐞 Bug Fixes + +- remove height limit h-360px  -  by @codearhat [(b5c57)](https://github.com/honghuangdc/soybean-admin/commit/b5c570a) +- set password attributes  -  by @codearhat [(a9a37)](https://github.com/honghuangdc/soybean-admin/commit/a9a3703) +- **components**: + - 修复路由在path中包含重复路单词径菜单时,被激活会错误展开  -  by @shabby2333 [(264da)](https://github.com/honghuangdc/soybean-admin/commit/264da00) +- **projects**: + - fix vite-pwa plugin config  -  by @soybeanjs [(94098)](https://github.com/honghuangdc/soybean-admin/commit/94098d0) + - add router-page.d.ts to git [将router-page.d.ts添加git提交]  -  by @soybeanjs [(7a580)](https://github.com/honghuangdc/soybean-admin/commit/7a58035) + - fix router when the dynamic routes api was failed [修复当动态路由接口失败后路由异常问题]  -  by @soybeanjs [(f2b58)](https://github.com/honghuangdc/soybean-admin/commit/f2b580f) + - fix login success message [修复登录成功的消息提示]  -  by @soybeanjs [(81039)](https://github.com/honghuangdc/soybean-admin/commit/810398a) + - 修复tabs在static路由模式下可以关闭首页  -  by @yanbowe [(7211a)](https://github.com/honghuangdc/soybean-admin/commit/7211a17) + - 修复动态路由模式下路由不排序的问题  -  by @HnyLi [(58b27)](https://github.com/honghuangdc/soybean-admin/commit/58b27c9) + +###    💅 Refactors + +- **czg**: + - update cz-git,czg breaking changes  -  by @yanbowe [(fcb7a)](https://github.com/honghuangdc/soybean-admin/commit/fcb7ad9) +- **hooks**: + - 重构hook函数取消监听方式  -  by @yanbowe [(fd948)](https://github.com/honghuangdc/soybean-admin/commit/fd94886) +- **projects**: + - format code style [调整代码格式]  -  by @soybeanjs [(a9d58)](https://github.com/honghuangdc/soybean-admin/commit/a9d58f8) + - import cz-git, czg replace @soybeanjs/cli [引入cz-git、czg替换@soybeanjs/cli]  -  by @soybeanjs [(1bdd8)](https://github.com/honghuangdc/soybean-admin/commit/1bdd81a) + - perfect scrollbar style [完善滚动条]  -  by @soybeanjs [(1a02c)](https://github.com/honghuangdc/soybean-admin/commit/1a02cab) + - refactor app init loading [重构系统初始化的加载]  -  by @soybeanjs [(57bfe)](https://github.com/honghuangdc/soybean-admin/commit/57bfe27) + - new storage system [新的本地数据存储系统]  -  by @soybeanjs [(97191)](https://github.com/honghuangdc/soybean-admin/commit/9719159) + - add simple-git-hooks replace husky  -  by @soybeanjs [(9110d)](https://github.com/honghuangdc/soybean-admin/commit/9110d87) + +###    📖 Documentation + +- **projects**: + - update README  -  by @soybeanjs [(828a2)](https://github.com/honghuangdc/soybean-admin/commit/828a2f5) + - update README  -  by @soybeanjs [(a3562)](https://github.com/honghuangdc/soybean-admin/commit/a3562d9) + +###    📦 Build + +- **deps**: + - update deps  -  by @soybeanjs [(84567)](https://github.com/honghuangdc/soybean-admin/commit/8456750) + - update deps  -  by @soybeanjs [(fcc65)](https://github.com/honghuangdc/soybean-admin/commit/fcc65c3) + - update deps  -  by @soybeanjs [(c097b)](https://github.com/honghuangdc/soybean-admin/commit/c097b56) +- **projects**: + - update plugin config  -  by @soybeanjs [(6a344)](https://github.com/honghuangdc/soybean-admin/commit/6a344ff) + - update deps and perfect the details [升级依赖,完善细节]  -  by @soybeanjs [(61a43)](https://github.com/honghuangdc/soybean-admin/commit/61a43b8) + - update deps and update config  -  by @soybeanjs [(b08c3)](https://github.com/honghuangdc/soybean-admin/commit/b08c389) + - update lint-staged config  -  by @soybeanjs [(0882c)](https://github.com/honghuangdc/soybean-admin/commit/0882c25) + - add VSCode debug config file  -  by @soybeanjs [(0c126)](https://github.com/honghuangdc/soybean-admin/commit/0c12665) + - update deps  -  by @soybeanjs [(f7181)](https://github.com/honghuangdc/soybean-admin/commit/f71812d) + +###    🏡 Chore + +- **release**: 0.9.8  -  by @soybeanjs [(34ffd)](https://github.com/honghuangdc/soybean-admin/commit/34ffd9c) + +###    ❤️ Contributors + +[![soybeanjs](https://github.com/soybeanjs.png?size=48)](https://github.com/soybeanjs)  [![shabby2333](https://github.com/shabby2333.png?size=48)](https://github.com/shabby2333)  [![HnyLi](https://github.com/HnyLi.png?size=48)](https://github.com/HnyLi)  [![yanbowe](https://github.com/yanbowe.png?size=48)](https://github.com/yanbowe)  [![zuihou](https://github.com/zuihou.png?size=48)](https://github.com/zuihou)  [![codearhat](https://github.com/codearhat.png?size=48)](https://github.com/codearhat)  [![RockerHX](https://github.com/RockerHX.png?size=48)](https://github.com/RockerHX)   + +## [v0.9.7](https://github.com/honghuangdc/soybean-admin/compare/v0.9.6...v0.9.7) (2022-11-08) + +###    🚀 Features + +- **projects**: + - 增加系统消息组件  -  by @yanbowe [(afa01)](https://github.com/honghuangdc/soybean-admin/commit/afa0134) + - 系统消息组件代码优化  -  by @yanbowe [(95183)](https://github.com/honghuangdc/soybean-admin/commit/9518372) + - 增加返回顶部功能  -  by @yanbowe [(894b0)](https://github.com/honghuangdc/soybean-admin/commit/894b0f1) + - 添加生产的主题配置缓存  -  by @soybeanjs [(718c3)](https://github.com/honghuangdc/soybean-admin/commit/718c362) + - 添加provide、inject上下文示例  -  by @soybeanjs [(a4447)](https://github.com/honghuangdc/soybean-admin/commit/a444731) + - 添加组件名称,调整vue文件里面的类型声明位置  -  by @soybeanjs [(f64bc)](https://github.com/honghuangdc/soybean-admin/commit/f64bc91) + - 适配移动端,修复Tab关闭图标的bug  -  by @soybeanjs [(296b1)](https://github.com/honghuangdc/soybean-admin/commit/296b154) + - 添加系统管理的页面  -  by @soybeanjs [(c33b5)](https://github.com/honghuangdc/soybean-admin/commit/c33b5eb) + - useNaiveTable函数:类型部分  -  by @soybeanjs [(02992)](https://github.com/honghuangdc/soybean-admin/commit/02992dc) + - 添加请求适配adapter层应用的示例页面  -  by @soybeanjs [(8d11a)](https://github.com/honghuangdc/soybean-admin/commit/8d11a6a) + - 实现用户管理页面  -  by @soybeanjs [(472f9)](https://github.com/honghuangdc/soybean-admin/commit/472f93b) + - 全局搜索菜单及消息通知适配移动端  -  by @yanbowe [(97e2f)](https://github.com/honghuangdc/soybean-admin/commit/97e2ffd) + - support constant route without login status[支持未登录状态下访问自定义的固定路由]  -  by @soybeanjs [(a5391)](https://github.com/honghuangdc/soybean-admin/commit/a539112) + - add pinia setup syntax example: setup-store[添加setup syntax的pinia示例setup-store]  -  by @soybeanjs [(82c4b)](https://github.com/honghuangdc/soybean-admin/commit/82c4b09) + - add constant route page without login status[添加未登录可访问的固定路由示例页面]  -  by @soybeanjs [(78efd)](https://github.com/honghuangdc/soybean-admin/commit/78efd77) + - refactor icon system, unify icon usage [重构图标系统,统一图标用法]  -  by @soybeanjs [(811f8)](https://github.com/honghuangdc/soybean-admin/commit/811f820) + - import i18n [引入i18n]  -  by @soybeanjs [(b632b)](https://github.com/honghuangdc/soybean-admin/commit/b632b7f) + - new router system [新的路由系统]  -  by @soybeanjs [(c7b6a)](https://github.com/honghuangdc/soybean-admin/commit/c7b6a3f) +- **tabs**: + - 多页签增加关闭所有  -  by @yanbowe [(8237a)](https://github.com/honghuangdc/soybean-admin/commit/8237adb) + +###    🐞 Bug Fixes + +- **deps**: + - decrease @types/node version to fix TS type error [降低@types/node版本修复TS的类型错误]  -  by @soybeanjs [(149d2)](https://github.com/honghuangdc/soybean-admin/commit/149d22a) +- **projects**: + - 修复tab不显示路由首页的问题  -  by @soybeanjs [(a792b)](https://github.com/honghuangdc/soybean-admin/commit/a792bb5) + - 修复多个后端服务时的本地代理  -  by @soybeanjs [(2aba5)](https://github.com/honghuangdc/soybean-admin/commit/2aba58c) + - 修复图标的TS类型  -  by @soybeanjs [(dbd67)](https://github.com/honghuangdc/soybean-admin/commit/dbd6760) + - 修复import.meta.env的TS类型  -  by @soybeanjs [(19942)](https://github.com/honghuangdc/soybean-admin/commit/1994262) + - 修复构建后mockjs对xhr的影响问题  -  by @soybeanjs [(77572)](https://github.com/honghuangdc/soybean-admin/commit/7757285) + - 修复TS类型问题  -  by @soybeanjs [(16dce)](https://github.com/honghuangdc/soybean-admin/commit/16dce9a) + - 修复eslint规则  -  by @soybeanjs [(d7f5b)](https://github.com/honghuangdc/soybean-admin/commit/d7f5bf3) + - add iconify json  -  by @soybeanjs [(8a1ec)](https://github.com/honghuangdc/soybean-admin/commit/8a1ec93) +- **svg-icon**: + - 自定义图标在Dropdown组件下hover状态无法显示图标  -  by @yanbowe [(0523f)](https://github.com/honghuangdc/soybean-admin/commit/0523f08) +- **utils**: + - 修复iconifyRender  -  by @soybeanjs [(c37d0)](https://github.com/honghuangdc/soybean-admin/commit/c37d0ac) + +###    🔥 Performance + +- **components**: + - 添加更多主题颜色设置模态窗的层级  -  by @xiaotao2018 [(ee7eb)](https://github.com/honghuangdc/soybean-admin/commit/ee7eb3a) + - 添加更多主题颜色设置模态窗的层级,z-index为int  -  by @xiaotao2018 [(e2d65)](https://github.com/honghuangdc/soybean-admin/commit/e2d6554) + +###    💅 Refactors + +- **projects**: + - 代码优化  -  by @yanbowe [(41147)](https://github.com/honghuangdc/soybean-admin/commit/41147b3) + - 添加subscribeAppStore  -  by @soybeanjs [(aa2f7)](https://github.com/honghuangdc/soybean-admin/commit/aa2f78a) + - 代码优化  -  by @soybeanjs [(b60db)](https://github.com/honghuangdc/soybean-admin/commit/b60db89) + - 代码优化  -  by @soybeanjs [(61436)](https://github.com/honghuangdc/soybean-admin/commit/6143605) + - 请求适配器函数范型重构、优化请求相关的命名  -  by @soybeanjs [(7f9c9)](https://github.com/honghuangdc/soybean-admin/commit/7f9c98a) + - 更新搜索弹窗的图标  -  by @soybeanjs [(ed9cd)](https://github.com/honghuangdc/soybean-admin/commit/ed9cd6c) + - 抽离格式化相关依赖配置  -  by @soybeanjs [(f4d37)](https://github.com/honghuangdc/soybean-admin/commit/f4d37cf) + - 代码优化  -  by @soybeanjs [(49f95)](https://github.com/honghuangdc/soybean-admin/commit/49f95c4) + - cancel autoinstall @iconify-json [取消@iconify-json自动安装]  -  by @soybeanjs [(c29b8)](https://github.com/honghuangdc/soybean-admin/commit/c29b887) + - refactor page: user-management [重构用户管理页面]  -  by @soybeanjs [(468b4)](https://github.com/honghuangdc/soybean-admin/commit/468b4bb) + +###    📖 Documentation + +- **projects**: + - update README.md  -  by @soybeanjs [(e2727)](https://github.com/honghuangdc/soybean-admin/commit/e2727e6) + - revert docs  -  by @soybeanjs [(2c562)](https://github.com/honghuangdc/soybean-admin/commit/2c56233) + +###    📦 Build + +- **deps**: + - update deps  -  by @soybeanjs [(69e39)](https://github.com/honghuangdc/soybean-admin/commit/69e39c1) + - update deps  -  by @soybeanjs [(ea1a3)](https://github.com/honghuangdc/soybean-admin/commit/ea1a336) + - update deps  -  by @soybeanjs [(73fa3)](https://github.com/honghuangdc/soybean-admin/commit/73fa3d1) + - update deps  -  by @soybeanjs [(973ab)](https://github.com/honghuangdc/soybean-admin/commit/973ab14) + - update deps  -  by @soybeanjs [(75000)](https://github.com/honghuangdc/soybean-admin/commit/750000e) + - update deps  -  by @soybeanjs [(8dcfb)](https://github.com/honghuangdc/soybean-admin/commit/8dcfbb2) + - update deps  -  by @soybeanjs [(1523c)](https://github.com/honghuangdc/soybean-admin/commit/1523c7b) + - update deps  -  by @soybeanjs [(da407)](https://github.com/honghuangdc/soybean-admin/commit/da407b6) + - update deps  -  by @soybeanjs [(cec0f)](https://github.com/honghuangdc/soybean-admin/commit/cec0f25) + - update deps  -  by @soybeanjs [(d9cfe)](https://github.com/honghuangdc/soybean-admin/commit/d9cfeab) + - update deps  -  by @soybeanjs [(dd113)](https://github.com/honghuangdc/soybean-admin/commit/dd11324) + - update deps  -  by @soybeanjs [(d0823)](https://github.com/honghuangdc/soybean-admin/commit/d0823b0) + - update deps  -  by @soybeanjs [(94ff7)](https://github.com/honghuangdc/soybean-admin/commit/94ff787) + - update deps  -  by @soybeanjs [(b32bc)](https://github.com/honghuangdc/soybean-admin/commit/b32bca4) + - update deps  -  by @soybeanjs [(f6b61)](https://github.com/honghuangdc/soybean-admin/commit/f6b6141) + - update deps  -  by @soybeanjs [(0f0cd)](https://github.com/honghuangdc/soybean-admin/commit/0f0cd0b) + - 更新@soybeanjs/eslint-config  -  by @soybeanjs [(36f06)](https://github.com/honghuangdc/soybean-admin/commit/36f06bc) + - update deps  -  by @soybeanjs [(d9324)](https://github.com/honghuangdc/soybean-admin/commit/d9324f0) + - update deps  -  by @soybeanjs [(1ad92)](https://github.com/honghuangdc/soybean-admin/commit/1ad92a2) + - 升级依赖  -  by @soybeanjs [(7240b)](https://github.com/honghuangdc/soybean-admin/commit/7240be8) + - update deps  -  by @soybeanjs [(c5ba6)](https://github.com/honghuangdc/soybean-admin/commit/c5ba631) + - update deps  -  by @soybeanjs [(3e0cc)](https://github.com/honghuangdc/soybean-admin/commit/3e0cc8c) + - update deps  -  by @soybeanjs [(21b6f)](https://github.com/honghuangdc/soybean-admin/commit/21b6fb6) + - update deps  -  by @soybeanjs [(d823e)](https://github.com/honghuangdc/soybean-admin/commit/d823ee5) + - unplugin-vue-define-options替换为unplugin-vue-macros  -  by @soybeanjs [(22c90)](https://github.com/honghuangdc/soybean-admin/commit/22c9025) + - update deps  -  by @soybeanjs [(7dd7c)](https://github.com/honghuangdc/soybean-admin/commit/7dd7c71) + - update deps  -  by @soybeanjs [(fe8ca)](https://github.com/honghuangdc/soybean-admin/commit/fe8cab3) + - unplugin-icon autoinstall @iconify-json [unplugin-icon自动安装@iconify-json]  -  by @soybeanjs [(c045e)](https://github.com/honghuangdc/soybean-admin/commit/c045e3f) + - update deps [升级依赖]  -  by @soybeanjs [(331b1)](https://github.com/honghuangdc/soybean-admin/commit/331b14e) + - update deps  -  by @soybeanjs [(88e53)](https://github.com/honghuangdc/soybean-admin/commit/88e535f) + - update deps  -  by @soybeanjs [(89985)](https://github.com/honghuangdc/soybean-admin/commit/8998581) + - update deps  -  by @soybeanjs [(65ac6)](https://github.com/honghuangdc/soybean-admin/commit/65ac69e) + - update deps  -  by @soybeanjs [(abd02)](https://github.com/honghuangdc/soybean-admin/commit/abd02d1) + - update deps  -  by @soybeanjs [(d6b15)](https://github.com/honghuangdc/soybean-admin/commit/d6b1530) + - update deps  -  by @soybeanjs [(8e801)](https://github.com/honghuangdc/soybean-admin/commit/8e801dd) + - update deps  -  by @soybeanjs [(41b3b)](https://github.com/honghuangdc/soybean-admin/commit/41b3bcb) + - update deps  -  by @soybeanjs [(1f3e6)](https://github.com/honghuangdc/soybean-admin/commit/1f3e6e4) + - update deps  -  by @soybeanjs [(74772)](https://github.com/honghuangdc/soybean-admin/commit/74772a1) +- **projects**: + - 代码优化  -  by @soybeanjs [(5c1b0)](https://github.com/honghuangdc/soybean-admin/commit/5c1b086) + - update tsconfig  -  by @soybeanjs [(9ce58)](https://github.com/honghuangdc/soybean-admin/commit/9ce5807) + - update vscode settings  -  by @soybeanjs [(3fe4e)](https://github.com/honghuangdc/soybean-admin/commit/3fe4e92) + - 添加.gitattributes  -  by @soybeanjs [(896e6)](https://github.com/honghuangdc/soybean-admin/commit/896e6f2) + - 代码优化  -  by @soybeanjs [(6a9a3)](https://github.com/honghuangdc/soybean-admin/commit/6a9a362) + - 升级依赖,添加对json的eslint检测及格式化  -  by @soybeanjs [(711a4)](https://github.com/honghuangdc/soybean-admin/commit/711a4ae) + - update deps and README.md  -  by @soybeanjs [(35aee)](https://github.com/honghuangdc/soybean-admin/commit/35aeedf) + - 升级依赖、vite配置optimizeDeps  -  by @soybeanjs [(ee434)](https://github.com/honghuangdc/soybean-admin/commit/ee434b4) + - 去除prettier,已集成进@soybeanjs/eslint-config  -  by @soybeanjs [(182da)](https://github.com/honghuangdc/soybean-admin/commit/182dac0) + - update eslint  -  by @soybeanjs [(907cf)](https://github.com/honghuangdc/soybean-admin/commit/907cf44) + - 引入pwa插件,更新配置  -  by @soybeanjs [(695ec)](https://github.com/honghuangdc/soybean-admin/commit/695ec7e) + - 更新依赖、调整页面  -  by @soybeanjs [(40ecc)](https://github.com/honghuangdc/soybean-admin/commit/40ecc32) + - 引入vite-plugin-progress  -  by @soybeanjs [(44ab0)](https://github.com/honghuangdc/soybean-admin/commit/44ab077) + - 升级依赖、修复T标签右键菜单连续显示问题  -  by @soybeanjs [(639c4)](https://github.com/honghuangdc/soybean-admin/commit/639c445) + - 引入TS高级类型库  -  by @soybeanjs [(71a75)](https://github.com/honghuangdc/soybean-admin/commit/71a753f) + - 更换eslint依赖为eslint-config-soybeanjs-vue  -  by @soybeanjs [(07325)](https://github.com/honghuangdc/soybean-admin/commit/07325a4) + - 升级依赖,降低naive-ui版本修复打包问题  -  by @soybeanjs [(f408e)](https://github.com/honghuangdc/soybean-admin/commit/f408ea0) + - 升级依赖,修复TS类型  -  by @soybeanjs [(73ce5)](https://github.com/honghuangdc/soybean-admin/commit/73ce53a) + - 引入@unocss/vite替换unocss,精简体积  -  by @soybeanjs [(3540b)](https://github.com/honghuangdc/soybean-admin/commit/3540b75) + - update deps, update logos  -  by @soybeanjs [(22c05)](https://github.com/honghuangdc/soybean-admin/commit/22c0567) + - add constant page content  -  by @soybeanjs [(13d0c)](https://github.com/honghuangdc/soybean-admin/commit/13d0c41) + - add tauri scripts, change tauri icon, fix mockjs [添加tauri相关的命令,变更tauri图标,修复mockjs]  -  by @soybeanjs [(1b45b)](https://github.com/honghuangdc/soybean-admin/commit/1b45b71) + - use @soybeanjs/cli replace commitizen  -  by @soybeanjs [(428d4)](https://github.com/honghuangdc/soybean-admin/commit/428d41b) + - use pnpm patch replace @milahu/patch-package  -  by @soybeanjs [(9455a)](https://github.com/honghuangdc/soybean-admin/commit/9455ad9) + - remove useless file: commitlint.config.js  -  by @soybeanjs [(67736)](https://github.com/honghuangdc/soybean-admin/commit/6773659) + - move tauri to branch tauri  -  by @soybeanjs [(6c14b)](https://github.com/honghuangdc/soybean-admin/commit/6c14bfe) + - update deps and update config  -  by @soybeanjs [(7d699)](https://github.com/honghuangdc/soybean-admin/commit/7d69992) + - new router branch  -  by @soybeanjs [(288d5)](https://github.com/honghuangdc/soybean-admin/commit/288d586) + - add vite plugin @soybeanjs/router-page  -  by @soybeanjs [(40c1e)](https://github.com/honghuangdc/soybean-admin/commit/40c1e13) + +###    🏡 Chore + +- **other**: + - release v0.9.7  -  by @soybeanjs [(cc00c)](https://github.com/honghuangdc/soybean-admin/commit/cc00c8f) +- **projects**: + - 更新.cz-config  -  by @soybeanjs [(b18c4)](https://github.com/honghuangdc/soybean-admin/commit/b18c49e) + - 更新eslint配置  -  by @soybeanjs [(872bb)](https://github.com/honghuangdc/soybean-admin/commit/872bb84) + +###    🤖 CI + +- add docker build  -  by @zq-xu [(af740)](https://github.com/honghuangdc/soybean-admin/commit/af74046) +- change docker image name  -  by @zq-xu [(6fbde)](https://github.com/honghuangdc/soybean-admin/commit/6fbde1e) + +###    ❤️ Contributors + +[![soybeanjs](https://github.com/soybeanjs.png?size=48)](https://github.com/soybeanjs)  [![hhstore](https://github.com/hhstore.png?size=48)](https://github.com/hhstore)  [![zq-xu](https://github.com/zq-xu.png?size=48)](https://github.com/zq-xu)  [![yanbowe](https://github.com/yanbowe.png?size=48)](https://github.com/yanbowe)  [![xiaotao2018](https://github.com/xiaotao2018.png?size=48)](https://github.com/xiaotao2018)   + +## [v0.9.6](https://github.com/honghuangdc/soybean-admin/compare/v0.9.5...v0.9.6) (2022-06-16) + +###    🚀 Features + +- **projects**: + - 新增Antv G2图表示例  -  by @soybeanjs [(2d64a)](https://github.com/honghuangdc/soybean-admin/commit/2d64a2e) + - 上下结构,菜单支持横向滚动  -  by @suiyingsky [(80805)](https://github.com/honghuangdc/soybean-admin/commit/808051b) + - 增加设置当前Tab页签名称功能  -  by @yanbowe [(48721)](https://github.com/honghuangdc/soybean-admin/commit/487213b) + - 本地svg动态渲染图标  -  by @soybeanjs [(c3c97)](https://github.com/honghuangdc/soybean-admin/commit/c3c975e) + +###    🐞 Bug Fixes + +- **projects**: + - 修复顶部菜单的位置失效问题  -  by @honghuangdc [(4ee0d)](https://github.com/honghuangdc/soybean-admin/commit/4ee0d94) + - 设置tab标题导致meta属性丢失  -  by @yanbowe [(efcfa)](https://github.com/honghuangdc/soybean-admin/commit/efcfa57) + +###    💅 Refactors + +- **projects**: + - 优化菜单支持横向滚动  -  by @soybeanjs [(8f3e8)](https://github.com/honghuangdc/soybean-admin/commit/8f3e855) + - 代码优化  -  by @honghuangdc [(5fa82)](https://github.com/honghuangdc/soybean-admin/commit/5fa822f) + +###    📖 Documentation + +- **projects**: update README.md  -  by @soybeanjs [(0c70a)](https://github.com/honghuangdc/soybean-admin/commit/0c70a9e) + +###    📦 Build + +- **deps**: + - update deps  -  by @soybeanjs [(906ae)](https://github.com/honghuangdc/soybean-admin/commit/906aed5) + - update deps  -  by @soybeanjs [(9917b)](https://github.com/honghuangdc/soybean-admin/commit/9917b5e) + - update deps  -  by @soybeanjs [(83301)](https://github.com/honghuangdc/soybean-admin/commit/833018a) +- **projects**: + - update deps, update config  -  by @honghuangdc [(8e6e7)](https://github.com/honghuangdc/soybean-admin/commit/8e6e787) + +###    🏡 Chore + +- **release**: 0.9.6  -  by @soybeanjs [(65c21)](https://github.com/honghuangdc/soybean-admin/commit/65c2181) + +###    ❤️ Contributors + +[![soybeanjs](https://github.com/soybeanjs.png?size=48)](https://github.com/soybeanjs)  [![yanbowe](https://github.com/yanbowe.png?size=48)](https://github.com/yanbowe)  [![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)  [![suiyingsky](https://github.com/suiyingsky.png?size=48)](https://github.com/suiyingsky)   + +## [v0.9.5](https://github.com/honghuangdc/soybean-admin/compare/v0.9.4...v0.9.5) (2022-06-07) + +###    🚀 Features + +- **projects**: + - 添加自动跟随系统主题设置  -  by @toolvcn [(ba07b)](https://github.com/honghuangdc/soybean-admin/commit/ba07b69) + - 引入echarts替换antvG2plot  -  by @soybeanjs [(e7ad0)](https://github.com/honghuangdc/soybean-admin/commit/e7ad086) + - 添加百度地图、升级依赖  -  by @soybeanjs [(39854)](https://github.com/honghuangdc/soybean-admin/commit/39854a4) + - 添加插件页面:图表  -  by @soybeanjs [(0a46e)](https://github.com/honghuangdc/soybean-admin/commit/0a46ea0) + - 添加antv g2图表示例  -  by @soybeanjs [(44b02)](https://github.com/honghuangdc/soybean-admin/commit/44b022a) + - 补充更多的ECharts示例  -  by @soybeanjs [(c7762)](https://github.com/honghuangdc/soybean-admin/commit/c776249) + - 动态路由根路由重定向只需取决于后端返回的路由首页  -  by @soybeanjs [(434ab)](https://github.com/honghuangdc/soybean-admin/commit/434ab1c) + - 支持同一路由根据不同query和hash同时显示不同Tab  -  by @soybeanjs [(41226)](https://github.com/honghuangdc/soybean-admin/commit/4122685) +- **route**: + - 路由meta新增activeMenu属性  -  by @yanbowe [(ebd16)](https://github.com/honghuangdc/soybean-admin/commit/ebd16a4) + +###    🐞 Bug Fixes + +- **projects**: + - 修复插件不存在的错误提示  -  by @ThinkDevelop [(71652)](https://github.com/honghuangdc/soybean-admin/commit/7165282) + - 修复权限切换路由数据未更新的问题  -  by @soybeanjs [(60f91)](https://github.com/honghuangdc/soybean-admin/commit/60f9125) + - 修复页面切换时导致的溢出滚动条  -  by @soybeanjs [(e0233)](https://github.com/honghuangdc/soybean-admin/commit/e023306) + - 修复@antv/g2生产环境报错  -  by @soybeanjs [(4558c)](https://github.com/honghuangdc/soybean-admin/commit/4558c24) +- **route**: + - 当为左侧混合菜单时activeMenu无效情况  -  by @yanbowe [(3e4f9)](https://github.com/honghuangdc/soybean-admin/commit/3e4f9e2) + +###    💅 Refactors + +- **layouts**: + - layout/header 反转色样式补充  -  by **元家怿** [(01d0b)](https://github.com/honghuangdc/soybean-admin/commit/01d0bcb) +- **projects**: + - 代码优化  -  by @honghuangdc [(14c14)](https://github.com/honghuangdc/soybean-admin/commit/14c145e) + - 代码优化  -  by @soybeanjs [(3590b)](https://github.com/honghuangdc/soybean-admin/commit/3590b65) + - 代码优化  -  by @soybeanjs [(a1c7e)](https://github.com/honghuangdc/soybean-admin/commit/a1c7e10) + - 代码优化  -  by @soybeanjs [(44ab5)](https://github.com/honghuangdc/soybean-admin/commit/44ab55d) + - 代码优化  -  by @soybeanjs [(095c4)](https://github.com/honghuangdc/soybean-admin/commit/095c432) + - 代码优化  -  by @soybeanjs [(d28b9)](https://github.com/honghuangdc/soybean-admin/commit/d28b903) + - 代码优化  -  by @soybeanjs [(4c2f5)](https://github.com/honghuangdc/soybean-admin/commit/4c2f535) + - 代码优化  -  by @soybeanjs [(d9ac7)](https://github.com/honghuangdc/soybean-admin/commit/d9ac7e4) +- **styles**: + - 代码格式  -  by @soybeanjs [(8f6d6)](https://github.com/honghuangdc/soybean-admin/commit/8f6d6ce) + +###    📖 Documentation + +- **projects**: + - update README.md  -  by @soybeanjs [(3d8be)](https://github.com/honghuangdc/soybean-admin/commit/3d8befa) + - update README.md  -  by @honghuangdc [(21e63)](https://github.com/honghuangdc/soybean-admin/commit/21e6399) + - update README.md  -  by @honghuangdc [(0811f)](https://github.com/honghuangdc/soybean-admin/commit/0811ffa) + - update README.md  -  by @soybeanjs [(84cb0)](https://github.com/honghuangdc/soybean-admin/commit/84cb07b) + - update README.md  -  by @soybeanjs [(4b80a)](https://github.com/honghuangdc/soybean-admin/commit/4b80a66) + - update docs  -  by @honghuangdc [(e9656)](https://github.com/honghuangdc/soybean-admin/commit/e9656c6) + - update README.md  -  by @honghuangdc [(ae99e)](https://github.com/honghuangdc/soybean-admin/commit/ae99e57) + +###    📦 Build + +- **deps**: + - update deps  -  by @honghuangdc [(518f7)](https://github.com/honghuangdc/soybean-admin/commit/518f7ee) + - update deps  -  by @soybeanjs [(92b84)](https://github.com/honghuangdc/soybean-admin/commit/92b8406) + - update deps  -  by @soybeanjs [(50d7c)](https://github.com/honghuangdc/soybean-admin/commit/50d7ccd) + - update deps  -  by @soybeanjs [(3f822)](https://github.com/honghuangdc/soybean-admin/commit/3f822a7) + - update deps  -  by @soybeanjs [(02809)](https://github.com/honghuangdc/soybean-admin/commit/028096e) + - update deps  -  by @soybeanjs [(be45d)](https://github.com/honghuangdc/soybean-admin/commit/be45d83) + - update deps  -  by @soybeanjs [(6a5a3)](https://github.com/honghuangdc/soybean-admin/commit/6a5a357) + - 依赖升级  -  by @honghuangdc [(e3c4a)](https://github.com/honghuangdc/soybean-admin/commit/e3c4a6e) +- **other**: + - update cz config  -  by @honghuangdc [(07baa)](https://github.com/honghuangdc/soybean-admin/commit/07baac7) +- **projects**: + - update config  -  by @soybeanjs [(a0c40)](https://github.com/honghuangdc/soybean-admin/commit/a0c405d) + - 代码优化  -  by @soybeanjs [(de09f)](https://github.com/honghuangdc/soybean-admin/commit/de09f82) + - 配置优化  -  by @honghuangdc [(fd787)](https://github.com/honghuangdc/soybean-admin/commit/fd78791) + - 配置更改  -  by @honghuangdc [(c8717)](https://github.com/honghuangdc/soybean-admin/commit/c8717c2) + +###    🏡 Chore + +- **deps**: + - update deps  -  by @soybeanjs [(a70e4)](https://github.com/honghuangdc/soybean-admin/commit/a70e416) + - update deps  -  by @soybeanjs [(7487a)](https://github.com/honghuangdc/soybean-admin/commit/7487ab7) +- **release**: + - 0.9.5  -  by @soybeanjs [(08d83)](https://github.com/honghuangdc/soybean-admin/commit/08d83ec) + +###    🎨 Styles + +- **GlobalBreadcrumb**: 代码格式fix  -  by @tclyjy [(0243b)](https://github.com/honghuangdc/soybean-admin/commit/0243b27) + +###    ❤️ Contributors + +[![soybeanjs](https://github.com/soybeanjs.png?size=48)](https://github.com/soybeanjs)  [![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)  [![yanbowe](https://github.com/yanbowe.png?size=48)](https://github.com/yanbowe)  [![ThinkDevelop](https://github.com/ThinkDevelop.png?size=48)](https://github.com/ThinkDevelop)  [![tclyjy](https://github.com/tclyjy.png?size=48)](https://github.com/tclyjy)  [![toolvcn](https://github.com/toolvcn.png?size=48)](https://github.com/toolvcn)   +[元家怿](mailto:jiayi.yuan@lkcoffee.com),  + +## [v0.9.4](https://github.com/honghuangdc/soybean-admin/compare/main-0428...v0.9.4) (2022-04-29) + +###    🚀 Features + +- **layouts**: + - 添加侧边栏/头部的反转模式来增加对比度  -  by **元家怿** [(861c8)](https://github.com/honghuangdc/soybean-admin/commit/861c8b9) +- **projects**: + - 引入unocss替换windicss  -  by @honghuangdc [(c9d3e)](https://github.com/honghuangdc/soybean-admin/commit/c9d3e5a) + - HTML lang 修改为 zh-cmn-Hans  -  by @toolvcn [(b9c5c)](https://github.com/honghuangdc/soybean-admin/commit/b9c5c34) + - 权限完善及权限示例页面  -  by @soybeanjs [(80744)](https://github.com/honghuangdc/soybean-admin/commit/807448a) + - mock添加权限过滤  -  by @soybeanjs [(7f435)](https://github.com/honghuangdc/soybean-admin/commit/7f4350a) + +###    🐞 Bug Fixes + +- **projects**: + - 添加.npmrc修复无法获取自动引入的全局组件声明类型  -  by @honghuangdc [(e8488)](https://github.com/honghuangdc/soybean-admin/commit/e8488e4) + - 修复样式  -  by @honghuangdc [(e8999)](https://github.com/honghuangdc/soybean-admin/commit/e899914) + +###    💅 Refactors + +- **projects**: + - mock权限相关数据优化  -  by @soybeanjs [(41e46)](https://github.com/honghuangdc/soybean-admin/commit/41e46a5) + - 代码优化  -  by @soybeanjs [(251b5)](https://github.com/honghuangdc/soybean-admin/commit/251b5b9) + - 代码优化  -  by @honghuangdc [(a7824)](https://github.com/honghuangdc/soybean-admin/commit/a782461) + - 细节优化  -  by @soybeanjs [(c275f)](https://github.com/honghuangdc/soybean-admin/commit/c275f26) + - layout和tab组件依赖名称变更、样式修复  -  by @soybeanjs [(de5fb)](https://github.com/honghuangdc/soybean-admin/commit/de5fb84) + - merge branch unocss to main  -  by @soybeanjs [(69d51)](https://github.com/honghuangdc/soybean-admin/commit/69d5131) + - 动态路由权限完善  -  by @soybeanjs [(55ddc)](https://github.com/honghuangdc/soybean-admin/commit/55ddc9c) + +###    📖 Documentation + +- **projects**: update README.md  -  by @soybeanjs [(d5c75)](https://github.com/honghuangdc/soybean-admin/commit/d5c7511) + +###    📦 Build + +- **deps**: update deps  -  by @honghuangdc [(5c75e)](https://github.com/honghuangdc/soybean-admin/commit/5c75e9d) +- **projects**: 细节调整  -  by @soybeanjs [(401f0)](https://github.com/honghuangdc/soybean-admin/commit/401f0c7) + +###    🏡 Chore + +- **release**: 0.9.4  -  by @soybeanjs [(97c92)](https://github.com/honghuangdc/soybean-admin/commit/97c9262) + +###    ❤️ Contributors + +[![soybeanjs](https://github.com/soybeanjs.png?size=48)](https://github.com/soybeanjs)  [![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)  [![toolvcn](https://github.com/toolvcn.png?size=48)](https://github.com/toolvcn)   +[元家怿](mailto:jiayi.yuan@luckincoffee.com),  + +## [v0.10.2](https://github.com/honghuangdc/soybean-admin/compare/v0.9.3...main-0428) (23-06-07) + +###    🚀 Features + +- **layouts**: + - 添加侧边栏/头部的反转模式来增加对比度  -  by **元家怿** [(3c8dd)](https://github.com/honghuangdc/soybean-admin/commit/3c8dd77) +- **projects**: + - 新增静态路由  -  by @soybeanjs [(ca2df)](https://github.com/honghuangdc/soybean-admin/commit/ca2dfa6) + - 插件方式按需引入naiveUI  -  by @soybeanjs [(6bed9)](https://github.com/honghuangdc/soybean-admin/commit/6bed9ea) + - 添加请求适配器的请求示例  -  by @soybeanjs [(bed42)](https://github.com/honghuangdc/soybean-admin/commit/bed4292) + - 登录页面适配移动端  -  by @soybeanjs [(ec077)](https://github.com/honghuangdc/soybean-admin/commit/ec0776e) + - 登录页背景图片位置适配移动端  -  by @soybeanjs [(24010)](https://github.com/honghuangdc/soybean-admin/commit/24010d0) + - HTML lang 修改为 zh-cmn-Hans  -  by @toolvcn [(dbeb5)](https://github.com/honghuangdc/soybean-admin/commit/dbeb595) + +###    🐞 Bug Fixes + +- **projects**: + - 修复vite alias  -  by @soybeanjs [(cd7ca)](https://github.com/honghuangdc/soybean-admin/commit/cd7ca8f) + - 修复路由守卫的动态路由逻辑  -  by @soybeanjs [(e6c26)](https://github.com/honghuangdc/soybean-admin/commit/e6c26fc) + - 全局搜索弹窗弹出时动画闪屏问题  -  by @yanbowe [(bb1bb)](https://github.com/honghuangdc/soybean-admin/commit/bb1bbf2) + - 去除从环境文件引入端口号导致的错误  -  by @soybeanjs [(2d6d1)](https://github.com/honghuangdc/soybean-admin/commit/2d6d179) + - 修复在新版vite下环境变量获取不到的问题  -  by @soybeanjs [(3fb13)](https://github.com/honghuangdc/soybean-admin/commit/3fb13ca) + - 修复获取vite环境变量的方式  -  by @soybeanjs [(46e1a)](https://github.com/honghuangdc/soybean-admin/commit/46e1ae7) + - 添加获取路由组件文件未找到时的错误提示  -  by @honghuangdc [(219f8)](https://github.com/honghuangdc/soybean-admin/commit/219f87f) + +###    🔥 Performance + +- refresh-koken命名  -  by @southliu [(17155)](https://github.com/honghuangdc/soybean-admin/commit/1715504) + +###    💅 Refactors + +- **projects**: + - lint命令修改  -  by @soybeanjs [(20911)](https://github.com/honghuangdc/soybean-admin/commit/20911dd) + - 代码优化  -  by @soybeanjs [(e8b53)](https://github.com/honghuangdc/soybean-admin/commit/e8b534b) + - 去除在pinia的getters的函数调用副作用,用watch代替  -  by @soybeanjs [(b35ed)](https://github.com/honghuangdc/soybean-admin/commit/b35ed89) + - 代码优化  -  by @honghuangdc [(5e276)](https://github.com/honghuangdc/soybean-admin/commit/5e27642) + +###    📖 Documentation + +- **projects**: + - update README.md  -  by @honghuangdc [(21645)](https://github.com/honghuangdc/soybean-admin/commit/2164553) + - update README.md  -  by @honghuangdc [(9a90f)](https://github.com/honghuangdc/soybean-admin/commit/9a90f18) + - update README.md  -  by @honghuangdc [(60a55)](https://github.com/honghuangdc/soybean-admin/commit/60a55a7) + +###    📦 Build + +- **deps**: update deps  -  by @soybeanjs [(cecce)](https://github.com/honghuangdc/soybean-admin/commit/cecce83) +- **projects**: vite.config代码优化  -  by @soybeanjs [(ca707)](https://github.com/honghuangdc/soybean-admin/commit/ca707a4) + +###    🏡 Chore + +- **deps**: update deps  -  by @soybeanjs [(4eb46)](https://github.com/honghuangdc/soybean-admin/commit/4eb46ea) + +###    🎨 Styles + +- **projects**: update prettier config  -  by @honghuangdc [(df56a)](https://github.com/honghuangdc/soybean-admin/commit/df56abe) + +###    ❤️ Contributors + +[![toolvcn](https://github.com/toolvcn.png?size=48)](https://github.com/toolvcn)  [![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)  [![soybeanjs](https://github.com/soybeanjs.png?size=48)](https://github.com/soybeanjs)  [![yanbowe](https://github.com/yanbowe.png?size=48)](https://github.com/yanbowe)  [![southliu](https://github.com/southliu.png?size=48)](https://github.com/southliu)  [![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)   +[元家怿](mailto:jiayi.yuan@luckincoffee.com),  + +## [v0.9.3](https://github.com/honghuangdc/soybean-admin/compare/old-version...v0.9.3) (2022-03-12) + +###    🚀 Features + +- **components**: + - svgIcon,添加type,调整size方案  -  by @Lsq128 [(ce4e0)](https://github.com/honghuangdc/soybean-admin/commit/ce4e039) +- **projects**: + - 路由页面跳转权限完成  -  by @soybeanjs [(0d2a5)](https://github.com/honghuangdc/soybean-admin/commit/0d2a562) + - 集成naiveUI主题配置,将css vars添加至html  -  by @soybeanjs [(2c196)](https://github.com/honghuangdc/soybean-admin/commit/2c19684) + - 初始化加载效果:应用主题颜色  -  by @honghuangdc [(035fa)](https://github.com/honghuangdc/soybean-admin/commit/035fa11) + - 登录页面开始迁移  -  by @honghuangdc [(f5a36)](https://github.com/honghuangdc/soybean-admin/commit/f5a36a0) + - 迁移登录完成  -  by @soybeanjs [(b93b8)](https://github.com/honghuangdc/soybean-admin/commit/b93b80c) + - 添加NaiveProvider组件  -  by @honghuangdc [(c804b)](https://github.com/honghuangdc/soybean-admin/commit/c804b21) + - 多级路由的所有子路由转换成二级路由  -  by @honghuangdc [(85b55)](https://github.com/honghuangdc/soybean-admin/commit/85b55bb) + - 新增BasicLayout布局  -  by @soybeanjs [(00646)](https://github.com/honghuangdc/soybean-admin/commit/006467a) + - 创建自定义布局组件SoybeanLayout  -  by @honghuangdc [(0653f)](https://github.com/honghuangdc/soybean-admin/commit/0653fb1) + - 添加抽屉  -  by @honghuangdc [(10e4d)](https://github.com/honghuangdc/soybean-admin/commit/10e4d81) + - theme store完成  -  by @soybeanjs [(bf020)](https://github.com/honghuangdc/soybean-admin/commit/bf020a8) + - 主题配置抽屉:迁移暗黑模式、布局模式、添加颜色选择面板  -  by @soybeanjs [(912bf)](https://github.com/honghuangdc/soybean-admin/commit/912bfdf) + - 主题配置抽屉: 迁移其他功能  -  by @soybeanjs [(6d132)](https://github.com/honghuangdc/soybean-admin/commit/6d132c5) + - 添加头部折叠按钮  -  by @honghuangdc [(a090d)](https://github.com/honghuangdc/soybean-admin/commit/a090d39) + - 添加侧边菜单  -  by @soybeanjs [(e25af)](https://github.com/honghuangdc/soybean-admin/commit/e25afe2) + - 面包屑  -  by @honghuangdc [(09c76)](https://github.com/honghuangdc/soybean-admin/commit/09c7658) + - 请求拦截器添加刷新token  -  by @honghuangdc [(839b8)](https://github.com/honghuangdc/soybean-admin/commit/839b82b) + - 细节完善  -  by @soybeanjs [(cc290)](https://github.com/honghuangdc/soybean-admin/commit/cc290ac) + - 迁移多页签  -  by @soybeanjs [(28efb)](https://github.com/honghuangdc/soybean-admin/commit/28efbdb) + - 细节完善、迁移页面  -  by @soybeanjs [(ce531)](https://github.com/honghuangdc/soybean-admin/commit/ce531ce) + - 添加页面缓存、记录在tab中的缓存页面的滚动条位置  -  by @soybeanjs [(1d63a)](https://github.com/honghuangdc/soybean-admin/commit/1d63a83) + - 添加缓存主题色  -  by @soybeanjs [(37092)](https://github.com/honghuangdc/soybean-admin/commit/3709297) + - 新版重构完成  -  by @soybeanjs [(68b42)](https://github.com/honghuangdc/soybean-admin/commit/68b4230) + - 迁移全局搜索菜单功能  -  by @yanbowe [(554d7)](https://github.com/honghuangdc/soybean-admin/commit/554d7fd) + - 添加naiveUI按需引入  -  by @soybeanjs [(a810e)](https://github.com/honghuangdc/soybean-admin/commit/a810ef8) + - 添加SvgIcon,配置vite plugin  -  by **Liushengqun** [(378d5)](https://github.com/honghuangdc/soybean-admin/commit/378d55a) + - 引入soybean-admin-tab、去除vite-plugin-svg-icons,用unplugin-icons实现自定义svg的iconify写法、代码优化  -  by @soybeanjs [(a1a57)](https://github.com/honghuangdc/soybean-admin/commit/a1a57a1) + - 新增子菜单图标和多页签图标  -  by @soybeanjs [(f5c56)](https://github.com/honghuangdc/soybean-admin/commit/f5c56c3) + - 重构项目的TS类型架构,去除interface文件夹  -  by @soybeanjs [(81914)](https://github.com/honghuangdc/soybean-admin/commit/8191490) + - 添加网络代理  -  by @soybeanjs [(094dc)](https://github.com/honghuangdc/soybean-admin/commit/094dca9) + - 添加全局组件自动引入注册  -  by @soybeanjs [(f5a04)](https://github.com/honghuangdc/soybean-admin/commit/f5a043b) + - 新增自定义svg图标动态渲染  -  by @soybeanjs [(f83c7)](https://github.com/honghuangdc/soybean-admin/commit/f83c7b5) + +###    🐞 Bug Fixes + +- **components**: + - 修复Tab在移动端设备无法点击的问题  -  by @honghuangdc [(2c966)](https://github.com/honghuangdc/soybean-admin/commit/2c9660f) + - 修复组件LoadingEmptyWrapper适应暗黑模式  -  by @soybeanjs [(811b1)](https://github.com/honghuangdc/soybean-admin/commit/811b15e) + - 组件LoadingEmptyWrapper添加背景颜色动画过渡  -  by @soybeanjs [(7add5)](https://github.com/honghuangdc/soybean-admin/commit/7add5c2) +- **projects**: + - 修复redirect-not-found子路由  -  by @honghuangdc [(5bfb8)](https://github.com/honghuangdc/soybean-admin/commit/5bfb819) + - 去除Layout组件冗余代码  -  by @honghuangdc [(0e783)](https://github.com/honghuangdc/soybean-admin/commit/0e783bc) + - 修复面包屑数据  -  by @honghuangdc [(28b5d)](https://github.com/honghuangdc/soybean-admin/commit/28b5d22) + - 修复vertical-mix布局、重构初始化的loading  -  by @soybeanjs [(579e0)](https://github.com/honghuangdc/soybean-admin/commit/579e074) + - 修复未登录时会调用获取用户路由的接口  -  by @soybeanjs [(21bab)](https://github.com/honghuangdc/soybean-admin/commit/21bab1f) + - 修复路由守卫的动态路由逻辑  -  by @soybeanjs [(b61b0)](https://github.com/honghuangdc/soybean-admin/commit/b61b0ce) + - vite配置修复  -  by @soybeanjs [(facc0)](https://github.com/honghuangdc/soybean-admin/commit/facc00e) + - 修复分析页和工作台的布局问题  -  by @honghuangdc [(e93b9)](https://github.com/honghuangdc/soybean-admin/commit/e93b94c) + - 修复项目配置拷贝功能  -  by @soybeanjs [(a7a26)](https://github.com/honghuangdc/soybean-admin/commit/a7a269d) + - 修复页面切换动画无变化  -  by @soybeanjs [(c4546)](https://github.com/honghuangdc/soybean-admin/commit/c4546bd) + - 修复页面切换动画开关不生效  -  by @bundlejs [(9d4ed)](https://github.com/honghuangdc/soybean-admin/commit/9d4ed61) + - 修复 BASE_URL 没有生效的问题  -  by @pany-ang [(72d7d)](https://github.com/honghuangdc/soybean-admin/commit/72d7dcf) + +###    💅 Refactors + +- **components**: + - 去除packages的soybean-layout,通过npm的方式引入  -  by @soybeanjs [(c1182)](https://github.com/honghuangdc/soybean-admin/commit/c1182fe) +- **projects**: + - 精简版+动态路由权限初步  -  by @soybeanjs [(de205)](https://github.com/honghuangdc/soybean-admin/commit/de2057f) + - 单独一级路由相关逻辑重构  -  by @honghuangdc [(ab9a6)](https://github.com/honghuangdc/soybean-admin/commit/ab9a6a2) + - 单独路由逻辑重构、路由转换函数优化  -  by @soybeanjs [(b36a6)](https://github.com/honghuangdc/soybean-admin/commit/b36a62b) + - 恢复pinia默认写法  -  by @soybeanjs [(b2a4d)](https://github.com/honghuangdc/soybean-admin/commit/b2a4ddf) + - 请求构造函数适配不同后端接口的数据结构  -  by @soybeanjs [(4f9d5)](https://github.com/honghuangdc/soybean-admin/commit/4f9d544) + - 细节完善  -  by @soybeanjs [(651e5)](https://github.com/honghuangdc/soybean-admin/commit/651e58d) + - 重构路由页面组件的导入  -  by @honghuangdc [(e6503)](https://github.com/honghuangdc/soybean-admin/commit/e65034d) + - 代码优化  -  by @soybeanjs [(4e31a)](https://github.com/honghuangdc/soybean-admin/commit/4e31abd) + +###    📖 Documentation + +- **other**: + - 注释文案修改  -  by **毛博文** [(d0064)](https://github.com/honghuangdc/soybean-admin/commit/d00643c) +- **projects**: + - update README.md  -  by @soybeanjs [(5eddb)](https://github.com/honghuangdc/soybean-admin/commit/5eddb49) + - update README.md  -  by @soybeanjs [(02c51)](https://github.com/honghuangdc/soybean-admin/commit/02c51e6) + - update README.md  -  by @honghuangdc [(47f28)](https://github.com/honghuangdc/soybean-admin/commit/47f2871) + - update README.md  -  by @honghuangdc [(7ed5d)](https://github.com/honghuangdc/soybean-admin/commit/7ed5d0d) + - update README.md  -  by @honghuangdc [(3befb)](https://github.com/honghuangdc/soybean-admin/commit/3befb22) + - update README.md  -  by @honghuangdc [(e856c)](https://github.com/honghuangdc/soybean-admin/commit/e856cdb) + - update README.md  -  by @soybeanjs [(3aded)](https://github.com/honghuangdc/soybean-admin/commit/3aded40) + - update README.md  -  by @soybeanjs [(225e7)](https://github.com/honghuangdc/soybean-admin/commit/225e712) + - update README.md  -  by @honghuangdc [(5b401)](https://github.com/honghuangdc/soybean-admin/commit/5b401a7) + - update README.md  -  by @honghuangdc [(8cdad)](https://github.com/honghuangdc/soybean-admin/commit/8cdad54) + - update README.md  -  by @soybeanjs [(a0dfa)](https://github.com/honghuangdc/soybean-admin/commit/a0dfa3d) + - update README.md  -  by @soybeanjs [(b8db2)](https://github.com/honghuangdc/soybean-admin/commit/b8db211) + +###    📦 Build + +- **deps**: + - 升级依赖  -  by @soybeanjs [(284af)](https://github.com/honghuangdc/soybean-admin/commit/284af63) + - 升级依赖  -  by @soybeanjs [(57c69)](https://github.com/honghuangdc/soybean-admin/commit/57c692b) + - 升级依赖  -  by @soybeanjs [(7ba33)](https://github.com/honghuangdc/soybean-admin/commit/7ba332c) + - upgrade deps  -  by @soybeanjs [(50c8b)](https://github.com/honghuangdc/soybean-admin/commit/50c8b9d) + - upgrade deps  -  by @soybeanjs [(8d00b)](https://github.com/honghuangdc/soybean-admin/commit/8d00b23) + - upgrade deps  -  by @soybeanjs [(b298a)](https://github.com/honghuangdc/soybean-admin/commit/b298af1) +- **projects**: + - 修改vscode配置  -  by @honghuangdc [(0c577)](https://github.com/honghuangdc/soybean-admin/commit/0c5770d) + - 添加vercel打包的环境  -  by @honghuangdc [(371fa)](https://github.com/honghuangdc/soybean-admin/commit/371fad4) + - add license  -  by @soybeanjs [(b1672)](https://github.com/honghuangdc/soybean-admin/commit/b16721b) + - 更新tsconfig.json  -  by @soybeanjs [(f42ee)](https://github.com/honghuangdc/soybean-admin/commit/f42ee9d) + - update tsconfig、eslintrc  -  by @soybeanjs [(75de2)](https://github.com/honghuangdc/soybean-admin/commit/75de2b0) + +###    🏡 Chore + +- **release**: + - 0.1.1 精简版发布  -  by @soybeanjs [(db3c2)](https://github.com/honghuangdc/soybean-admin/commit/db3c25e) + - 0.1.2  -  by @soybeanjs [(db75c)](https://github.com/honghuangdc/soybean-admin/commit/db75c91) + - 0.1.3  -  by @soybeanjs [(32a7c)](https://github.com/honghuangdc/soybean-admin/commit/32a7cc4) + - 0.9.1  -  by @soybeanjs [(be374)](https://github.com/honghuangdc/soybean-admin/commit/be37408) + - 0.9.2  -  by @honghuangdc [(11407)](https://github.com/honghuangdc/soybean-admin/commit/1140722) + - 0.9.3  -  by @soybeanjs [(d0522)](https://github.com/honghuangdc/soybean-admin/commit/d0522ce) + +###    🎨 Styles + +- **components**: 代码优化  -  by @soybeanjs [(1e2fd)](https://github.com/honghuangdc/soybean-admin/commit/1e2fdda) +- **projects**: 路由相关文件夹简化  -  by @honghuangdc [(e5793)](https://github.com/honghuangdc/soybean-admin/commit/e5793e1) + +###    ❤️ Contributors + +[![soybeanjs](https://github.com/soybeanjs.png?size=48)](https://github.com/soybeanjs)  [![pany-ang](https://github.com/pany-ang.png?size=48)](https://github.com/pany-ang)  [![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)  [![bundlejs](https://github.com/bundlejs.png?size=48)](https://github.com/bundlejs)  [![Lsq128](https://github.com/Lsq128.png?size=48)](https://github.com/Lsq128)  [![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)  [![yanbowe](https://github.com/yanbowe.png?size=48)](https://github.com/yanbowe)   +[毛博文](mailto:maobowen@bonc.com.cn), [Liushengqun](mailto:18232366809@163.com),  + +## [v0.10.2](https://github.com/honghuangdc/soybean-admin/compare/v0.9.2...old-version) (23-06-07) + +###    🚀 Features + +- **projects**: + - 路由页面跳转权限完成  -  by @soybeanjs [(0d2a5)](https://github.com/honghuangdc/soybean-admin/commit/0d2a562) + - 集成naiveUI主题配置,将css vars添加至html  -  by @soybeanjs [(2c196)](https://github.com/honghuangdc/soybean-admin/commit/2c19684) + - 初始化加载效果:应用主题颜色  -  by @honghuangdc [(035fa)](https://github.com/honghuangdc/soybean-admin/commit/035fa11) + - 登录页面开始迁移  -  by @honghuangdc [(f5a36)](https://github.com/honghuangdc/soybean-admin/commit/f5a36a0) + - 迁移登录完成  -  by @soybeanjs [(b93b8)](https://github.com/honghuangdc/soybean-admin/commit/b93b80c) + - 添加NaiveProvider组件  -  by @honghuangdc [(c804b)](https://github.com/honghuangdc/soybean-admin/commit/c804b21) + - 多级路由的所有子路由转换成二级路由  -  by @honghuangdc [(85b55)](https://github.com/honghuangdc/soybean-admin/commit/85b55bb) + - 新增BasicLayout布局  -  by @soybeanjs [(00646)](https://github.com/honghuangdc/soybean-admin/commit/006467a) + - 创建自定义布局组件SoybeanLayout  -  by @honghuangdc [(0653f)](https://github.com/honghuangdc/soybean-admin/commit/0653fb1) + - 添加抽屉  -  by @honghuangdc [(10e4d)](https://github.com/honghuangdc/soybean-admin/commit/10e4d81) + - theme store完成  -  by @soybeanjs [(bf020)](https://github.com/honghuangdc/soybean-admin/commit/bf020a8) + - 主题配置抽屉:迁移暗黑模式、布局模式、添加颜色选择面板  -  by @soybeanjs [(912bf)](https://github.com/honghuangdc/soybean-admin/commit/912bfdf) + - 主题配置抽屉: 迁移其他功能  -  by @soybeanjs [(6d132)](https://github.com/honghuangdc/soybean-admin/commit/6d132c5) + - 添加头部折叠按钮  -  by @honghuangdc [(a090d)](https://github.com/honghuangdc/soybean-admin/commit/a090d39) + - 添加侧边菜单  -  by @soybeanjs [(e25af)](https://github.com/honghuangdc/soybean-admin/commit/e25afe2) + - 面包屑  -  by @honghuangdc [(09c76)](https://github.com/honghuangdc/soybean-admin/commit/09c7658) + - 请求拦截器添加刷新token  -  by @honghuangdc [(839b8)](https://github.com/honghuangdc/soybean-admin/commit/839b82b) + - 细节完善  -  by @soybeanjs [(cc290)](https://github.com/honghuangdc/soybean-admin/commit/cc290ac) + - 迁移多页签  -  by @soybeanjs [(28efb)](https://github.com/honghuangdc/soybean-admin/commit/28efbdb) + - 细节完善、迁移页面  -  by @soybeanjs [(ce531)](https://github.com/honghuangdc/soybean-admin/commit/ce531ce) + - 添加页面缓存、记录在tab中的缓存页面的滚动条位置  -  by @soybeanjs [(1d63a)](https://github.com/honghuangdc/soybean-admin/commit/1d63a83) + - 添加缓存主题色  -  by @soybeanjs [(37092)](https://github.com/honghuangdc/soybean-admin/commit/3709297) + - 新版重构完成  -  by @soybeanjs [(68b42)](https://github.com/honghuangdc/soybean-admin/commit/68b4230) + - 迁移全局搜索菜单功能  -  by @yanbowe [(554d7)](https://github.com/honghuangdc/soybean-admin/commit/554d7fd) + +###    🐞 Bug Fixes + +- **components**: + - 修复Tab在移动端设备无法点击的问题  -  by @honghuangdc [(2c966)](https://github.com/honghuangdc/soybean-admin/commit/2c9660f) +- **projects**: + - 修复redirect-not-found子路由  -  by @honghuangdc [(5bfb8)](https://github.com/honghuangdc/soybean-admin/commit/5bfb819) + - 去除Layout组件冗余代码  -  by @honghuangdc [(0e783)](https://github.com/honghuangdc/soybean-admin/commit/0e783bc) + - 修复面包屑数据  -  by @honghuangdc [(28b5d)](https://github.com/honghuangdc/soybean-admin/commit/28b5d22) + - 修复vertical-mix布局、重构初始化的loading  -  by @soybeanjs [(579e0)](https://github.com/honghuangdc/soybean-admin/commit/579e074) + - 修复未登录时会调用获取用户路由的接口  -  by @soybeanjs [(21bab)](https://github.com/honghuangdc/soybean-admin/commit/21bab1f) + - 修复路由守卫的动态路由逻辑  -  by @soybeanjs [(b61b0)](https://github.com/honghuangdc/soybean-admin/commit/b61b0ce) + - vite配置修复  -  by @soybeanjs [(facc0)](https://github.com/honghuangdc/soybean-admin/commit/facc00e) + - 修复分析页和工作台的布局问题  -  by @honghuangdc [(e93b9)](https://github.com/honghuangdc/soybean-admin/commit/e93b94c) + - 修复项目配置拷贝功能  -  by @soybeanjs [(a7a26)](https://github.com/honghuangdc/soybean-admin/commit/a7a269d) + +###    💅 Refactors + +- **projects**: + - 精简版+动态路由权限初步  -  by @soybeanjs [(de205)](https://github.com/honghuangdc/soybean-admin/commit/de2057f) + - 单独一级路由相关逻辑重构  -  by @honghuangdc [(ab9a6)](https://github.com/honghuangdc/soybean-admin/commit/ab9a6a2) + - 单独路由逻辑重构、路由转换函数优化  -  by @soybeanjs [(b36a6)](https://github.com/honghuangdc/soybean-admin/commit/b36a62b) + - 恢复pinia默认写法  -  by @soybeanjs [(b2a4d)](https://github.com/honghuangdc/soybean-admin/commit/b2a4ddf) + - 请求构造函数适配不同后端接口的数据结构  -  by @soybeanjs [(4f9d5)](https://github.com/honghuangdc/soybean-admin/commit/4f9d544) + - 细节完善  -  by @soybeanjs [(651e5)](https://github.com/honghuangdc/soybean-admin/commit/651e58d) + - 重构路由页面组件的导入  -  by @honghuangdc [(e6503)](https://github.com/honghuangdc/soybean-admin/commit/e65034d) + +###    📖 Documentation + +- **projects**: + - update README.md  -  by @soybeanjs [(5eddb)](https://github.com/honghuangdc/soybean-admin/commit/5eddb49) + - update README.md  -  by @soybeanjs [(02c51)](https://github.com/honghuangdc/soybean-admin/commit/02c51e6) + - update README.md  -  by @honghuangdc [(47f28)](https://github.com/honghuangdc/soybean-admin/commit/47f2871) + - update README.md  -  by @honghuangdc [(7ed5d)](https://github.com/honghuangdc/soybean-admin/commit/7ed5d0d) + - update README.md  -  by @honghuangdc [(3befb)](https://github.com/honghuangdc/soybean-admin/commit/3befb22) + +###    📦 Build + +- **projects**: + - 修改vscode配置  -  by @honghuangdc [(0c577)](https://github.com/honghuangdc/soybean-admin/commit/0c5770d) + - 添加vercel打包的环境  -  by @honghuangdc [(371fa)](https://github.com/honghuangdc/soybean-admin/commit/371fad4) + - add license  -  by @soybeanjs [(b1672)](https://github.com/honghuangdc/soybean-admin/commit/b16721b) + +###    🏡 Chore + +- **release**: + - 0.1.1 精简版发布  -  by @soybeanjs [(db3c2)](https://github.com/honghuangdc/soybean-admin/commit/db3c25e) + - 0.1.2  -  by @soybeanjs [(db75c)](https://github.com/honghuangdc/soybean-admin/commit/db75c91) + - 0.1.3  -  by @soybeanjs [(32a7c)](https://github.com/honghuangdc/soybean-admin/commit/32a7cc4) + - 0.9.1  -  by @soybeanjs [(be374)](https://github.com/honghuangdc/soybean-admin/commit/be37408) + - 0.9.2  -  by @honghuangdc [(11407)](https://github.com/honghuangdc/soybean-admin/commit/1140722) + +###    🎨 Styles + +- **projects**: 路由相关文件夹简化  -  by @honghuangdc [(e5793)](https://github.com/honghuangdc/soybean-admin/commit/e5793e1) + +###    ❤️ Contributors + +[![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)  [![soybeanjs](https://github.com/soybeanjs.png?size=48)](https://github.com/soybeanjs)  [![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)  [![yanbowe](https://github.com/yanbowe.png?size=48)](https://github.com/yanbowe)   + +## [v0.9.2](https://github.com/honghuangdc/soybean-admin/compare/v0.9.1...v0.9.2) (2022-02-11) + +###    🚀 Features + +- **projects**: 迁移全局搜索菜单功能  -  by @yanbowe [(554d7)](https://github.com/honghuangdc/soybean-admin/commit/554d7fd) + +###    🐞 Bug Fixes + +- **components**: + - 修复Tab在移动端设备无法点击的问题  -  by @honghuangdc [(2c966)](https://github.com/honghuangdc/soybean-admin/commit/2c9660f) +- **projects**: + - vite配置修复  -  by @soybeanjs [(facc0)](https://github.com/honghuangdc/soybean-admin/commit/facc00e) + - 修复分析页和工作台的布局问题  -  by @honghuangdc [(e93b9)](https://github.com/honghuangdc/soybean-admin/commit/e93b94c) + - 修复项目配置拷贝功能  -  by @soybeanjs [(a7a26)](https://github.com/honghuangdc/soybean-admin/commit/a7a269d) + +###    💅 Refactors + +- **projects**: 重构路由页面组件的导入  -  by @honghuangdc [(e6503)](https://github.com/honghuangdc/soybean-admin/commit/e65034d) + +###    📖 Documentation + +- **projects**: + - update README.md  -  by @soybeanjs [(02c51)](https://github.com/honghuangdc/soybean-admin/commit/02c51e6) + - update README.md  -  by @honghuangdc [(47f28)](https://github.com/honghuangdc/soybean-admin/commit/47f2871) + - update README.md  -  by @honghuangdc [(7ed5d)](https://github.com/honghuangdc/soybean-admin/commit/7ed5d0d) + - update README.md  -  by @honghuangdc [(3befb)](https://github.com/honghuangdc/soybean-admin/commit/3befb22) + +###    📦 Build + +- **projects**: add license  -  by @soybeanjs [(b1672)](https://github.com/honghuangdc/soybean-admin/commit/b16721b) + +###    🏡 Chore + +- **release**: 0.9.2  -  by @honghuangdc [(11407)](https://github.com/honghuangdc/soybean-admin/commit/1140722) + +###    ❤️ Contributors + +[![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)  [![soybeanjs](https://github.com/soybeanjs.png?size=48)](https://github.com/soybeanjs)  [![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)  [![yanbowe](https://github.com/yanbowe.png?size=48)](https://github.com/yanbowe)   + +## [v0.9.1](https://github.com/honghuangdc/soybean-admin/compare/v0.1.3...v0.9.1) (2022-01-24) + +###    🚀 Features + +- **projects**: 新版重构完成  -  by @soybeanjs [(68b42)](https://github.com/honghuangdc/soybean-admin/commit/68b4230) + +###    🏡 Chore + +- **release**: 0.9.1  -  by @soybeanjs [(be374)](https://github.com/honghuangdc/soybean-admin/commit/be37408) + +###    ❤️ Contributors + +[![soybeanjs](https://github.com/soybeanjs.png?size=48)](https://github.com/soybeanjs)   + +## [v0.1.3](https://github.com/honghuangdc/soybean-admin/compare/v0.1.2...v0.1.3) (2022-01-24) + +###    🐞 Bug Fixes + +- **projects**: + - 修复未登录时会调用获取用户路由的接口  -  by @soybeanjs [(21bab)](https://github.com/honghuangdc/soybean-admin/commit/21bab1f) + - 修复路由守卫的动态路由逻辑  -  by @soybeanjs [(b61b0)](https://github.com/honghuangdc/soybean-admin/commit/b61b0ce) + +###    💅 Refactors + +- **projects**: + - 请求构造函数适配不同后端接口的数据结构  -  by @soybeanjs [(4f9d5)](https://github.com/honghuangdc/soybean-admin/commit/4f9d544) + - 细节完善  -  by @soybeanjs [(651e5)](https://github.com/honghuangdc/soybean-admin/commit/651e58d) + +###    🏡 Chore + +- **release**: 0.1.3  -  by @soybeanjs [(32a7c)](https://github.com/honghuangdc/soybean-admin/commit/32a7cc4) + +###    ❤️ Contributors + +[![soybeanjs](https://github.com/soybeanjs.png?size=48)](https://github.com/soybeanjs)   + +## [v0.1.2](https://github.com/honghuangdc/soybean-admin/compare/v0.1.1...v0.1.2) (2022-01-22) + +###    🚀 Features + +- **projects**: + - 添加页面缓存、记录在tab中的缓存页面的滚动条位置  -  by @soybeanjs [(1d63a)](https://github.com/honghuangdc/soybean-admin/commit/1d63a83) + - 添加缓存主题色  -  by @soybeanjs [(37092)](https://github.com/honghuangdc/soybean-admin/commit/3709297) + +###    🏡 Chore + +- **release**: 0.1.2  -  by @soybeanjs [(db75c)](https://github.com/honghuangdc/soybean-admin/commit/db75c91) + +###    ❤️ Contributors + +[![soybeanjs](https://github.com/soybeanjs.png?size=48)](https://github.com/soybeanjs)   + +## [v0.1.1](https://github.com/honghuangdc/soybean-admin/compare/v0.0.5...v0.1.1) (2022-01-20) + +###    🚀 Features + +- **projects**: + - 添加路由跳转浏览器新标签  -  by @honghuangdc [(987ce)](https://github.com/honghuangdc/soybean-admin/commit/987cef3) + - 添加常用组件、composables函数  -  by @soybeanjs [(230a5)](https://github.com/honghuangdc/soybean-admin/commit/230a50a) + - 添加表格页面示例  -  by @soybeanjs [(51c74)](https://github.com/honghuangdc/soybean-admin/commit/51c744c) + - 增加Icon选择器组件  -  by @yanbowe [(9472b)](https://github.com/honghuangdc/soybean-admin/commit/9472b51) + - 图标选择器增加扩展树形  -  by @yanbowe [(04101)](https://github.com/honghuangdc/soybean-admin/commit/041012b) + - 增加项目文档外链  -  by @yanbowe [(1901a)](https://github.com/honghuangdc/soybean-admin/commit/1901a0b) + - 引入mockjs  -  by @soybeanjs [(9bc68)](https://github.com/honghuangdc/soybean-admin/commit/9bc682d) + - 增加全局搜索菜单功能  -  by @yanbowe [(b9ce6)](https://github.com/honghuangdc/soybean-admin/commit/b9ce691) + - 菜单搜索增加大小写转换  -  by @yanbowe [(29078)](https://github.com/honghuangdc/soybean-admin/commit/2907868) + - 添加cryptojs,对本地缓存数据进行加密  -  by @soybeanjs [(7a064)](https://github.com/honghuangdc/soybean-admin/commit/7a0648d) + - 路由页面跳转权限完成  -  by @soybeanjs [(0d2a5)](https://github.com/honghuangdc/soybean-admin/commit/0d2a562) + - 集成naiveUI主题配置,将css vars添加至html  -  by @soybeanjs [(2c196)](https://github.com/honghuangdc/soybean-admin/commit/2c19684) + - 初始化加载效果:应用主题颜色  -  by @honghuangdc [(035fa)](https://github.com/honghuangdc/soybean-admin/commit/035fa11) + - 登录页面开始迁移  -  by @honghuangdc [(f5a36)](https://github.com/honghuangdc/soybean-admin/commit/f5a36a0) + - 迁移登录完成  -  by @soybeanjs [(b93b8)](https://github.com/honghuangdc/soybean-admin/commit/b93b80c) + - 添加NaiveProvider组件  -  by @honghuangdc [(c804b)](https://github.com/honghuangdc/soybean-admin/commit/c804b21) + - 多级路由的所有子路由转换成二级路由  -  by @honghuangdc [(85b55)](https://github.com/honghuangdc/soybean-admin/commit/85b55bb) + - 新增BasicLayout布局  -  by @soybeanjs [(00646)](https://github.com/honghuangdc/soybean-admin/commit/006467a) + - 创建自定义布局组件SoybeanLayout  -  by @honghuangdc [(0653f)](https://github.com/honghuangdc/soybean-admin/commit/0653fb1) + - 添加抽屉  -  by @honghuangdc [(10e4d)](https://github.com/honghuangdc/soybean-admin/commit/10e4d81) + - theme store完成  -  by @soybeanjs [(bf020)](https://github.com/honghuangdc/soybean-admin/commit/bf020a8) + - 主题配置抽屉:迁移暗黑模式、布局模式、添加颜色选择面板  -  by @soybeanjs [(912bf)](https://github.com/honghuangdc/soybean-admin/commit/912bfdf) + - 主题配置抽屉: 迁移其他功能  -  by @soybeanjs [(6d132)](https://github.com/honghuangdc/soybean-admin/commit/6d132c5) + - 添加头部折叠按钮  -  by @honghuangdc [(a090d)](https://github.com/honghuangdc/soybean-admin/commit/a090d39) + - 添加侧边菜单  -  by @soybeanjs [(e25af)](https://github.com/honghuangdc/soybean-admin/commit/e25afe2) + - 面包屑  -  by @honghuangdc [(09c76)](https://github.com/honghuangdc/soybean-admin/commit/09c7658) + - 请求拦截器添加刷新token  -  by @honghuangdc [(839b8)](https://github.com/honghuangdc/soybean-admin/commit/839b82b) + - 细节完善  -  by @soybeanjs [(cc290)](https://github.com/honghuangdc/soybean-admin/commit/cc290ac) + - 迁移多页签  -  by @soybeanjs [(28efb)](https://github.com/honghuangdc/soybean-admin/commit/28efbdb) + - 细节完善、迁移页面  -  by @soybeanjs [(ce531)](https://github.com/honghuangdc/soybean-admin/commit/ce531ce) + +###    🐞 Bug Fixes + +- **deps**: + - 降低vite版本  -  by @honghuangdc [(c9c5c)](https://github.com/honghuangdc/soybean-admin/commit/c9c5ca9) +- **projects**: + - 修复网络请求错误空信息的提示  -  by @honghuangdc [(ff921)](https://github.com/honghuangdc/soybean-admin/commit/ff9216b) + - 请求相关细节修复  -  by @honghuangdc [(2ad1a)](https://github.com/honghuangdc/soybean-admin/commit/2ad1ad3) + - 修复redirect-not-found子路由  -  by @honghuangdc [(5bfb8)](https://github.com/honghuangdc/soybean-admin/commit/5bfb819) + - 去除Layout组件冗余代码  -  by @honghuangdc [(0e783)](https://github.com/honghuangdc/soybean-admin/commit/0e783bc) + - 修复面包屑数据  -  by @honghuangdc [(28b5d)](https://github.com/honghuangdc/soybean-admin/commit/28b5d22) + - 修复vertical-mix布局、重构初始化的loading  -  by @soybeanjs [(579e0)](https://github.com/honghuangdc/soybean-admin/commit/579e074) + +###    💅 Refactors + +- **projects**: + - 登录模块由query变更为动态路由params  -  by @honghuangdc [(225c4)](https://github.com/honghuangdc/soybean-admin/commit/225c4fe) + - 精简版+动态路由权限初步  -  by @soybeanjs [(de205)](https://github.com/honghuangdc/soybean-admin/commit/de2057f) + - 单独一级路由相关逻辑重构  -  by @honghuangdc [(ab9a6)](https://github.com/honghuangdc/soybean-admin/commit/ab9a6a2) + - 单独路由逻辑重构、路由转换函数优化  -  by @soybeanjs [(b36a6)](https://github.com/honghuangdc/soybean-admin/commit/b36a62b) + - 恢复pinia默认写法  -  by @soybeanjs [(b2a4d)](https://github.com/honghuangdc/soybean-admin/commit/b2a4ddf) +- **styles**: + - 样式调整  -  by @honghuangdc [(f2910)](https://github.com/honghuangdc/soybean-admin/commit/f29106e) + +###    📖 Documentation + +- **projects**: + - update README.md  -  by @honghuangdc [(659e4)](https://github.com/honghuangdc/soybean-admin/commit/659e460) + - update README.md  -  by @honghuangdc [(90ddf)](https://github.com/honghuangdc/soybean-admin/commit/90ddf98) + - update README.md  -  by @soybeanjs [(5eddb)](https://github.com/honghuangdc/soybean-admin/commit/5eddb49) + +###    📦 Build + +- **deps**: + - 升级依赖  -  by @soybeanjs [(ae7ec)](https://github.com/honghuangdc/soybean-admin/commit/ae7ec99) + - 升级依赖  -  by @soybeanjs [(e755c)](https://github.com/honghuangdc/soybean-admin/commit/e755caa) + - 升级依赖  -  by @honghuangdc [(f3c86)](https://github.com/honghuangdc/soybean-admin/commit/f3c86ef) + - 升级依赖  -  by @honghuangdc [(e776d)](https://github.com/honghuangdc/soybean-admin/commit/e776df4) + - 升级依赖  -  by @soybeanjs [(777cf)](https://github.com/honghuangdc/soybean-admin/commit/777cf8e) +- **projects**: + - 环境变量获取方式变更  -  by @honghuangdc [(21c2f)](https://github.com/honghuangdc/soybean-admin/commit/21c2f5a) + - 修改vscode配置  -  by @honghuangdc [(0c577)](https://github.com/honghuangdc/soybean-admin/commit/0c5770d) + - 添加vercel打包的环境  -  by @honghuangdc [(371fa)](https://github.com/honghuangdc/soybean-admin/commit/371fad4) + +###    🏡 Chore + +- **release**: 0.1.1 精简版发布  -  by @soybeanjs [(db3c2)](https://github.com/honghuangdc/soybean-admin/commit/db3c25e) + +###    🎨 Styles + +- **projects**: 路由相关文件夹简化  -  by @honghuangdc [(e5793)](https://github.com/honghuangdc/soybean-admin/commit/e5793e1) + +###    ❤️ Contributors + +[![soybeanjs](https://github.com/soybeanjs.png?size=48)](https://github.com/soybeanjs)  [![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)  [![yanbowe](https://github.com/yanbowe.png?size=48)](https://github.com/yanbowe)  [![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)   + +## [v0.0.5](https://github.com/honghuangdc/soybean-admin/compare/v0.0.4...v0.0.5) (2021-11-28) + +###    🚀 Features + +- **projects**: 新增组件页面:按钮、卡片示例  -  by @soybeanjs [(bdc39)](https://github.com/honghuangdc/soybean-admin/commit/bdc39af) + +###    🐞 Bug Fixes + +- **components**: 修复HorizontalLayout布局  -  by @soybeanjs [(9fb64)](https://github.com/honghuangdc/soybean-admin/commit/9fb641f) + +###    💅 Refactors + +- **projects**: + - 重构路由类型和路由元数据类型,重构多级菜单路由写法  -  by @soybeanjs [(d6838)](https://github.com/honghuangdc/soybean-admin/commit/d683894) + - 优化路由导入页面写法,页面路由调整  -  by @soybeanjs [(0b10b)](https://github.com/honghuangdc/soybean-admin/commit/0b10b50) + +###    📦 Build + +- **deps**: 升级依赖  -  by @soybeanjs [(a6bdc)](https://github.com/honghuangdc/soybean-admin/commit/a6bdc38) + +###    🏡 Chore + +- **release**: 0.0.5  -  by @soybeanjs [(e53e7)](https://github.com/honghuangdc/soybean-admin/commit/e53e793) + +###    ❤️ Contributors + +[![soybeanjs](https://github.com/soybeanjs.png?size=48)](https://github.com/soybeanjs)   + +## [v0.0.4](https://github.com/honghuangdc/soybean-admin/compare/v0.0.3...v0.0.4) (2021-11-25) + +###    🚀 Features + +- **components**: 添加多页签Tab点击后自动往中间滚动  -  by @soybeanjs [(8ce62)](https://github.com/honghuangdc/soybean-admin/commit/8ce627a) +- **projects**: 新增网址导航页面  -  by @honghuangdc [(32aa5)](https://github.com/honghuangdc/soybean-admin/commit/32aa5ee) +- **storage**: local存储增加有效期  -  by @yanbowe [(e6c9b)](https://github.com/honghuangdc/soybean-admin/commit/e6c9b35) + +###    🐞 Bug Fixes + +- **components**: + - 修复多页签Tab自动滚动问题  -  by @soybeanjs [(20aa3)](https://github.com/honghuangdc/soybean-admin/commit/20aa39f) + - 修复多页签按钮风格的tab滚动问题  -  by @soybeanjs [(c429c)](https://github.com/honghuangdc/soybean-admin/commit/c429cd0) +- **projects**: + - 修复打包构建时图标错误  -  by @soybeanjs [(93f9a)](https://github.com/honghuangdc/soybean-admin/commit/93f9aa9) + - 添加西瓜视频实例在onUnMounted的销毁,多页签居中距离精确  -  by @soybeanjs [(73896)](https://github.com/honghuangdc/soybean-admin/commit/738964a) +- **types**: + - 添加dotEnv类型的非空判断  -  by @soybeanjs [(cff11)](https://github.com/honghuangdc/soybean-admin/commit/cff11d9) + +###    💅 Refactors + +- **components**: + - blankLayout引入GlobalContent  -  by @soybeanjs [(1ffb7)](https://github.com/honghuangdc/soybean-admin/commit/1ffb75a) +- **projects**: + - axios处理的请求结果去除网路状态  -  by @honghuangdc [(05696)](https://github.com/honghuangdc/soybean-admin/commit/0569666) + - 文件夹位置规范  -  by @honghuangdc [(f5a5f)](https://github.com/honghuangdc/soybean-admin/commit/f5a5f44) + - 细节完善  -  by @honghuangdc [(62611)](https://github.com/honghuangdc/soybean-admin/commit/6261156) + +###    📖 Documentation + +- **projects**: + - update README.md  -  by @soybeanjs [(54577)](https://github.com/honghuangdc/soybean-admin/commit/54577f1) + - update README.md  -  by @honghuangdc [(1b346)](https://github.com/honghuangdc/soybean-admin/commit/1b3463d) + - update README.md  -  by @honghuangdc [(98a7d)](https://github.com/honghuangdc/soybean-admin/commit/98a7d25) + +###    🏡 Chore + +- **release**: 0.0.4  -  by @soybeanjs [(8b27f)](https://github.com/honghuangdc/soybean-admin/commit/8b27fc8) + +###    ❤️ Contributors + +[![soybeanjs](https://github.com/soybeanjs.png?size=48)](https://github.com/soybeanjs)  [![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)  [![yanbowe](https://github.com/yanbowe.png?size=48)](https://github.com/yanbowe)   + +## [v0.0.3](https://github.com/honghuangdc/soybean-admin/compare/v0.0.2...v0.0.3) (2021-11-23) + +###    💅 Refactors + +- **projects**: + - 请求函数重构初步  -  by @soybeanjs [(9f643)](https://github.com/honghuangdc/soybean-admin/commit/9f64321) + - axios封装:文件夹规范,错误处理完善  -  by @honghuangdc [(451c7)](https://github.com/honghuangdc/soybean-admin/commit/451c754) + - axios封装完成  -  by @soybeanjs [(03b39)](https://github.com/honghuangdc/soybean-admin/commit/03b398a) + +###    📦 Build + +- **deps**: + - 升级依赖  -  by @soybeanjs [(4e04a)](https://github.com/honghuangdc/soybean-admin/commit/4e04a8f) + - 升级依赖  -  by @soybeanjs [(c8122)](https://github.com/honghuangdc/soybean-admin/commit/c81221e) + +###    🏡 Chore + +- **release**: 0.0.3  -  by @honghuangdc [(e1dac)](https://github.com/honghuangdc/soybean-admin/commit/e1dacdb) + +###    ❤️ Contributors + +[![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)  [![soybeanjs](https://github.com/soybeanjs.png?size=48)](https://github.com/soybeanjs)   + + + diff --git a/CHANGELOG.zh_CN.md b/CHANGELOG.zh_CN.md new file mode 100644 index 0000000..79587cd --- /dev/null +++ b/CHANGELOG.zh_CN.md @@ -0,0 +1,634 @@ +# 更新日志 + +## [v1.3.5](https://github.com/soybeanjs/soybean-admin/compare/v1.3.4...v1.3.5) (2024-09-07) + +###    🚀 新功能 + +- **packages**: + - @sa/axios: 成功时将响应添加到 flatRequest  -  by @soybeanjs [(c4e16)](https://github.com/soybeanjs/soybean-admin/commit/c4e1610) +- **projects**: + - README.zh_CN.md 添加合作推广  -  by @PZ-18664918826 in https://github.com/soybeanjs/soybean-admin/issues/601 [(2fa40)](https://github.com/soybeanjs/soybean-admin/commit/2fa400b) + - 根据 Apache 规范添加更多提交类型  -  by @Azir-11 in https://github.com/soybeanjs/soybean-admin/issues/610 [(878d9)](https://github.com/soybeanjs/soybean-admin/commit/878d9c3) + - 配置是否支持自动更新。关闭#612  -  by @Azir-11 in https://github.com/soybeanjs/soybean-admin/issues/617 和 https://github.com/soybeanjs/soybean-admin/issues/612 [(4c9f4)](https://github.com/soybeanjs/soybean-admin/commit/4c9f4e0) + - 添加应用错误处理程序。关闭 #587  -  by @soybeanjs in https://github.com/soybeanjs/soybean-admin/issues/587 [(be855)](https://github.com/soybeanjs/soybean-admin/commit/be8556c) + +###    🐞 Bug 修复 + +- **deps**: + - 将 json5 从 devDependencies 移到 dependencies 以支持生产环境使用  -  by @mufeng889 in https://github.com/soybeanjs/soybean-admin/issues/618 [(7cb43)](https://github.com/soybeanjs/soybean-admin/commit/7cb43fc) +- **projects**: + - 避免检索缓存的 HTML  -  by @Azir-11 in https://github.com/soybeanjs/soybean-admin/issues/605 [(ef6cf)](https://github.com/soybeanjs/soybean-admin/commit/ef6cf93) + - 修复登录重定向  -  by @soybeanjs [(3830e)](https://github.com/soybeanjs/soybean-admin/commit/3830ec7) + - 修复侧边栏折叠时的 vertical-mix-menu。修复 #608  -  by @soybeanjs in https://github.com/soybeanjs/soybean-admin/issues/608 [(c3f1f)](https://github.com/soybeanjs/soybean-admin/commit/c3f1f69) + - 修复 activeMenu 为父菜单时的面包屑。修复 #589  -  by @soybeanjs in https://github.com/soybeanjs/soybean-admin/issues/589 [(79b2a)](https://github.com/soybeanjs/soybean-admin/commit/79b2a28) + - 修复遇到多请求时的刷新令牌。修复 #581  -  by @soybeanjs in https://github.com/soybeanjs/soybean-admin/issues/581 [(27b52)](https://github.com/soybeanjs/soybean-admin/commit/27b5222) +- **types**: + - 修复 TableApiFn 的类型  -  by @Azir-11 in https://github.com/soybeanjs/soybean-admin/issues/599 [(26c93)](https://github.com/soybeanjs/soybean-admin/commit/26c93df) + +###    🛠 优化 + +- **projects**: 优化菜单 selectedKey  -  by @soybeanjs [(531bf)](https://github.com/soybeanjs/soybean-admin/commit/531bfaf) + +###    📖 文档 + +- **projects**: + - 更新 README  -  by @mufeng889 in https://github.com/soybeanjs/soybean-admin/issues/594 [(a8f92)](https://github.com/soybeanjs/soybean-admin/commit/a8f923e) + - 更新 README  -  by @soybeanjs [(e9a2e)](https://github.com/soybeanjs/soybean-admin/commit/e9a2ee4) + - 更新 README  -  by @soybeanjs [(73e91)](https://github.com/soybeanjs/soybean-admin/commit/73e917a) + - 更新文档中重要信息的位置  -  by **Azir** [(9c012)](https://github.com/soybeanjs/soybean-admin/commit/9c012c7) + +###    🏡 杂项 + +- **deps**: + - 更新依赖  -  by @soybeanjs [(a1c14)](https://github.com/soybeanjs/soybean-admin/commit/a1c14a1) + - 更新依赖  -  by @soybeanjs [(7fa55)](https://github.com/soybeanjs/soybean-admin/commit/7fa5590) + - 更新依赖  -  by @soybeanjs [(a44ea)](https://github.com/soybeanjs/soybean-admin/commit/a44ea62) +- **projects**: + - 使用 json5 解析环境变量 `VITE_OTHER_SERVICE_BASE_URL` 并修复代理启用  -  by @soybeanjs [(b16a9)](https://github.com/soybeanjs/soybean-admin/commit/b16a963) + +###    🎨 样式 + +- **projects**: 将脚本 czh 重命名为 commit:zh  -  by @Azir-11 in https://github.com/soybeanjs/soybean-admin/issues/597 [(5094f)](https://github.com/soybeanjs/soybean-admin/commit/5094f0e) + +###    ❤️ 贡献者 + +[![soybeanjs](https://github.com/soybeanjs.png?size=48)](https://github.com/soybeanjs)  [![mufeng889](https://github.com/mufeng889.png?size=48)](https://github.com/mufeng889)  [![Azir-11](https://github.com/Azir-11.png?size=48)](https://github.com/Azir-11)  [![PZ-18664918826](https://github.com/PZ-18664918826.png?size=48)](https://github.com/PZ-18664918826)   +[Azir](mailto:2075125282@qq.com),  + +## [v1.3.4](https://github.com/honghuangdc/soybean-admin/compare/v1.3.3...v1.3.4) (2024-08-01) + +###    🚨 重大变更 + +- **projects**: 当 vertical-mix 布局为 mixSiderFixed 时,不重置活动菜单  -  by @honghuangdc [(939c5)](https://github.com/honghuangdc/soybean-admin/commit/939c512) + +###    🛠 优化 + +- **projects**: 优化代码  -  by @honghuangdc [(cb1d4)](https://github.com/honghuangdc/soybean-admin/commit/cb1d445) + +###    🏡 杂项 + +- **projects**: 更新依赖并修复 vue-router 类型  -  by @honghuangdc [(96837)](https://github.com/honghuangdc/soybean-admin/commit/968370b) + +###    ❤️ 贡献者 + +[![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)   + +## [v1.3.3](https://github.com/honghuangdc/soybean-admin/compare/v1.3.2...v1.3.3) (2024-07-30) + +###    🐞 Bug 修复 + +- **projects**: 修复水印设置  -  by @honghuangdc [(5646a)](https://github.com/honghuangdc/soybean-admin/commit/5646a50) + +###    📖 文档 + +- **projects**: 更新 CHANGELOG  -  by @honghuangdc [(ebc83)](https://github.com/honghuangdc/soybean-admin/commit/ebc838c) + +###    ❤️ 贡献者 + +[![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)   + +## [v1.3.2](https://github.com/honghuangdc/soybean-admin/compare/v1.3.1...v1.3.2) (2024-07-30) + +###    🚀 新功能 + +- **项目**: + - 添加颜色渐变模式。关闭 #567  -  由 @Azir-11 在 https://github.com/honghuangdc/soybean-admin/issues/569 和 https://github.com/honghuangdc/soybean-admin/issues/567 [(4dde4)](https://github.com/honghuangdc/soybean-admin/commit/4dde4c2) + - 添加全屏水印。关闭 #571  -  由 @paynezhuang 在 https://github.com/honghuangdc/soybean-admin/issues/573 和 https://github.com/honghuangdc/soybean-admin/issues/571 [(ea8aa)](https://github.com/honghuangdc/soybean-admin/commit/ea8aa6c) + +###    🐞 Bug 修复 + +- **项目**: 修复 vertical-mix 菜单选中问题  -  由 @honghuangdc [(59f07)](https://github.com/honghuangdc/soybean-admin/commit/59f07d8) + +###    🛠 优化 + +- **项目**: + - 添加类型 WatermarkProps  -  由 @honghuangdc [(f26d0)](https://github.com/honghuangdc/soybean-admin/commit/f26d0a6) + - 移除 home NAlert 可关闭  -  由 @honghuangdc [(98b75)](https://github.com/honghuangdc/soybean-admin/commit/98b75c2) + - 优化响应代码比较  -  由 @honghuangdc [(cf67d)](https://github.com/honghuangdc/soybean-admin/commit/cf67d55) +- **类型**: + - 移除无用类型。  -  由 **Azir** [(eed61)](https://github.com/honghuangdc/soybean-admin/commit/eed617f) + +###    📖 文档 + +- **项目**: 更新更新日志  -  由 @honghuangdc [(d3759)](https://github.com/honghuangdc/soybean-admin/commit/d37591d) + +###    🏡 杂项 + +- **依赖**: 更新依赖  -  由 @honghuangdc [(993e9)](https://github.com/honghuangdc/soybean-admin/commit/993e9ca) + +###    ❤️ 贡献者 + +[![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)  [![paynezhuang](https://github.com/paynezhuang.png?size=48)](https://github.com/paynezhuang)  [![Azir-11](https://github.com/Azir-11.png?size=48)](https://github.com/Azir-11)   +[Azir](mailto:2075125282@qq.com),  + +## [v1.3.1](https://github.com/honghuangdc/soybean-admin/compare/v1.3.0...v1.3.1) (2024-07-22) + +###    🐞 Bug 修复 + +- **项目**: + - 修复顶部菜单混合和反向模式下侧边栏宽度异常的问题  -  由 @Azir-11 在 https://github.com/honghuangdc/soybean-admin/issues/562 修复 [(c4695)](https://github.com/honghuangdc/soybean-admin/commit/c469512) + - 修复水平混合菜单反转问题。修复 #563  -  由 @honghuangdc 在 https://github.com/honghuangdc/soybean-admin/issues/563 修复 [(4e55b)](https://github.com/honghuangdc/soybean-admin/commit/4e55b0e) + - 修复当布局来自移动端时垂直菜单不渲染的问题  -  由 @honghuangdc 修复 [(84027)](https://github.com/honghuangdc/soybean-admin/commit/8402734) + +###    📖 文档 + +- **项目**: 更新更新日志  -  由 @honghuangdc 更新 [(613c8)](https://github.com/honghuangdc/soybean-admin/commit/613c836) + +###    🎨 样式 + +- **其他**: 修改灰度模式的中文名称  -  由 **Azir** 修改 [(53770)](https://github.com/honghuangdc/soybean-admin/commit/5377002) + +###    ❤️ 贡献者 + +[![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)  [![Azir-11](https://github.com/Azir-11.png?size=48)](https://github.com/Azir-11)   +[Azir](mailto:2075125282@qq.com),  + + +## [v1.3.0](https://github.com/soybeanjs/soybean-admin/compare/v1.2.8...v1.3.0) (2024-07-22) + +###    🚨 破坏性变更 + +- **项目**: 重构全局菜单 & 支持 `reversed-horizontal-mix-menu`。关闭 #365  -  由 @honghuangdc 在 https://github.com/soybeanjs/soybean-admin/issues/365 提出 [(087e5)](https://github.com/soybeanjs/soybean-admin/commit/087e532) + +###    🚀 功能 + +- **包**: + - `@sa/scripts`: 命令 `gitCommit` 支持中文  -  由 @mmdapl 在 https://github.com/soybeanjs/soybean-admin/issues/548 提出 [(06971)](https://github.com/soybeanjs/soybean-admin/commit/06971f3) + - @sa/axios: 用 AbortController 替换 CancelTokenSource。关闭 #530, 关闭 #532  -  由 @honghuangdc 在 https://github.com/soybeanjs/soybean-admin/issues/530 和 https://github.com/soybeanjs/soybean-admin/issues/532 提出 [(527fd)](https://github.com/soybeanjs/soybean-admin/commit/527fd79) + - @sa/scripts: 为命令 `gitCommitVerify` 添加忽略模式列表。关闭 #504  -  由 @honghuangdc 在 https://github.com/soybeanjs/soybean-admin/issues/504 提出 [(958d0)](https://github.com/soybeanjs/soybean-admin/commit/958d0ba) +- **项目**: + - 使分支 `main` 更精简 & 修改请求重试次数为 0  -  由 @Azir-11 提出 [(793b1)](https://github.com/soybeanjs/soybean-admin/commit/793b16e) + +###    🐞 修复 + +- **钩子**: 当 pagesize 返回 0 时防止程序冻结  -  由 @Azir-11 在 https://github.com/soybeanjs/soybean-admin/issues/545 提出 [(f4eeb)](https://github.com/soybeanjs/soybean-admin/commit/f4eeb2e) + +###    💅 重构 + +- **项目**: + - 合并 `theme tokens` 和 `theme settings`。关闭 #379  -  由 @honghuangdc 在 https://github.com/soybeanjs/soybean-admin/issues/379 提出 [(1d1b1)](https://github.com/soybeanjs/soybean-admin/commit/1d1b148) + - 将 css 变量挂载到 root  -  由 @honghuangdc 提出 [(00f41)](https://github.com/soybeanjs/soybean-admin/commit/00f41dd) + +###    📖 文档 + +- **项目**: 更新更新日志  -  由 @honghuangdc 提出 [(a0b76)](https://github.com/soybeanjs/soybean-admin/commit/a0b76da) + +###    🏡 杂务 + +- **依赖**: 更新依赖  -  由 @honghuangdc 提出 [(f6bd6)](https://github.com/soybeanjs/soybean-admin/commit/f6bd6b8) +- **项目**: 添加脚本 `czh`  -  由 @honghuangdc 提出 [(02069)](https://github.com/soybeanjs/soybean-admin/commit/0206969) + +###    ❤️ 贡献者 + +[![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)  [![mmdapl](https://github.com/mmdapl.png?size=48)](https://github.com/mmdapl)  [![Azir-11](https://github.com/Azir-11.png?size=48)](https://github.com/Azir-11)   + + +## [v1.2.8](https://github.com/soybeanjs/soybean-admin/compare/v1.2.7...v1.2.8) (2024-07-20) + +###    🐞 修复 + +- **包**: + - @sa/hooks: 修复 useHookTable 的 searchParams。修复了 #552  -  由 @honghuangdc 在 https://github.com/soybeanjs/soybean-admin/issues/552 提出 [(96c10)](https://github.com/soybeanjs/soybean-admin/commit/96c1044) +- **类型**: + - 修复了引用类型错误  -  由 **dodu2014** 在 https://github.com/soybeanjs/soybean-admin/issues/551 提出 [(3e2a9)](https://github.com/soybeanjs/soybean-admin/commit/3e2a993) + - 修复 useHookTable 的数据类型  -  由 @honghuangdc 提出 [(276ea)](https://github.com/soybeanjs/soybean-admin/commit/276ea7f) + +###    💅 重构 + +- **项目**: 用 `klona` 替换 `lodash-es` 的 `cloneDeep`  -  由 @honghuangdc 提出 [(a9133)](https://github.com/soybeanjs/soybean-admin/commit/a91335d) + +###    📖 文档 + +- **项目**: 更新更新日志  -  由 @honghuangdc 提出 [(58fc0)](https://github.com/soybeanjs/soybean-admin/commit/58fc096) + +###    🏡 杂务 + +- **依赖**: 更新依赖  -  由 @honghuangdc 提出 [(cf019)](https://github.com/soybeanjs/soybean-admin/commit/cf0192a) + +###    ❤️ 贡献者 + +[![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)   +[dodu2014](mailto:dodu@live.cn) + + +## [v1.2.7](https://github.com/honghuangdc/soybean-admin/compare/v1.2.6...v1.2.7) (2024-07-12) + +###    🛠 优化 + +- **项目**: 支持自定义菜单图标大小  -  由 @wynn-w 在 https://github.com/honghuangdc/soybean-admin/issues/534 提出 [(e035e)](https://github.com/honghuangdc/soybean-admin/commit/e035eab) + +###    🏡 杂务 + +- **依赖**: + - 更新依赖  -  由 @honghuangdc [(72ede)](https://github.com/honghuangdc/soybean-admin/commit/72ede8b) + - 更新依赖  -  由 @honghuangdc [(be13c)](https://github.com/honghuangdc/soybean-admin/commit/be13ca2) + - 更新依赖  -  由 @honghuangdc [(752ec)](https://github.com/honghuangdc/soybean-admin/commit/752ec1e) +- **项目**: + - 修复已弃用的配置配置  -  由 @paynezhuang 在 https://github.com/honghuangdc/soybean-admin/issues/524 提出 [(0d20e)](https://github.com/honghuangdc/soybean-admin/commit/0d20e4c) + +###    ❤️ 贡献者 + +[![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)  [![wynn-w](https://github.com/wynn-w.png?size=48)](https://github.com/wynn-w)  [![paynezhuang](https://github.com/paynezhuang.png?size=48)](https://github.com/paynezhuang)   + +## [v1.2.6](https://github.com/honghuangdc/soybean-admin/compare/v1.2.5...v1.2.6) (2024-06-21) + +###    🐞 修复 + +- **项目**: + - 请求模态标题使用 i18n。修复 #507  -  由 @honghuangdc 在 https://github.com/honghuangdc/soybean-admin/issues/507 提出 [(f7de3)](https://github.com/honghuangdc/soybean-admin/commit/f7de3fd) + - 为 `useTable` 添加 `getDataByPage`。修复 #499  -  由 @honghuangdc 在 https://github.com/honghuangdc/soybean-admin/issues/499 提出 [(425c6)](https://github.com/honghuangdc/soybean-admin/commit/425c69a) + - 修复登录重定向到 routeHome 时,动态路由的 routeHome 与静态路由不同的问题。修复 #511  -  由 @honghuangdc 在 https://github.com/honghuangdc/soybean-admin/issues/511 提出 [(49f60)](https://github.com/honghuangdc/soybean-admin/commit/49f60b2) + +###    🛠 优化 + +- **项目**: 优化 `getRouteQueryOfLoginRoute`  -  由 @honghuangdc [(693f7)](https://github.com/honghuangdc/soybean-admin/commit/693f704) + +###    📖 文档 + +- **项目**: + - 更新更新日志  -  由 @honghuangdc [(5c67d)](https://github.com/honghuangdc/soybean-admin/commit/5c67d06) + - 更新自述文件  -  由 @honghuangdc [(1e67a)](https://github.com/honghuangdc/soybean-admin/commit/1e67ae8) + +###    🏡 杂务 + +- **依赖**: + - 更新依赖。关闭 #510  -  由 @honghuangdc 在 https://github.com/honghuangdc/soybean-admin/issues/510 提出 [(53143)](https://github.com/honghuangdc/soybean-admin/commit/531432d) + - 更新依赖  -  由 @honghuangdc [(c7f6f)](https://github.com/honghuangdc/soybean-admin/commit/c7f6f2a) + +###    🤖 CI + +- **项目**: + - 添加 github 问题模板  -  由 @honghuangdc [(b5027)](https://github.com/honghuangdc/soybean-admin/commit/b5027c8) + - 更新 github 问题模板  -  由 @honghuangdc [(ff1d5)](https://github.com/honghuangdc/soybean-admin/commit/ff1d504) + +###    ❤️ 贡献者 + +[![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)   + +## [v1.2.5](https://github.com/soybeanjs/soybean-admin/compare/v1.2.4...v1.2.5) (2024-06-15) + +###    🐞 错误修复 + +- **项目**: 修复登出后标签页异常缓存的问题。已修复 #495  -  由 @Azir-11 在 https://github.com/soybeanjs/soybean-admin/issues/495 [(3eeac)](https://github.com/soybeanjs/soybean-admin/commit/3eeace9) + +###    🔥 性能 + +- **项目**: 初始化静态路由功能不需要异步  -  由 **CHENZL** 在 https://github.com/soybeanjs/soybean-admin/issues/493 [(2198b)](https://github.com/soybeanjs/soybean-admin/commit/2198b98) + +###    🛠 优化 + +- **项目**: 优化代码  -  由 @soybeanjs [(b94ba)](https://github.com/soybeanjs/soybean-admin/commit/b94baa1) +- **类型**: 提高全局类型的兼容性  -  由 @Azir-11 在 https://github.com/soybeanjs/soybean-admin/issues/494 [(cd9d5)](https://github.com/soybeanjs/soybean-admin/commit/cd9d58d) +- **工具**: 减少代码缩进,提高可读性  -  由 @Azir-11 在 https://github.com/soybeanjs/soybean-admin/issues/496 [(ad2f2)](https://github.com/soybeanjs/soybean-admin/commit/ad2f247) + +###    📖 文档 + +- **项目**: 更新CHANGELOG  -  由 @soybeanjs [(f70d2)](https://github.com/soybeanjs/soybean-admin/commit/f70d29b) + +###    🏡 杂项 + +- **依赖**: 更新依赖  -  由 @soybeanjs [(b094d)](https://github.com/soybeanjs/soybean-admin/commit/b094d68) + +###    ❤️ 贡献者 + +[![soybeanjs](https://github.com/soybeanjs.png?size=48)](https://github.com/soybeanjs)  [![Azir-11](https://github.com/Azir-11.png?size=48)](https://github.com/Azir-11)   +[CHENZL](mailto:zlong5568863@qq.com) + + +## [v1.2.4](https://github.com/soybeanjs/soybean-admin/compare/v1.2.3...v1.2.4) (2024-06-14) + +###    🛠 优化 + +- **项目**: + - 优化 `setupAppVersionNotification`  -  由 @soybeanjs 提交 [(b5a72)](https://github.com/soybeanjs/soybean-admin/commit/b5a723c) + - 获取 'Asia/Shanghai' 时区的构建时间  -  由 @soybeanjs 提交 [(069fa)](https://github.com/soybeanjs/soybean-admin/commit/069fa8a) + +###    ❤️ 贡献者 + +[![soybeanjs](https://github.com/soybeanjs.png?size=48)](https://github.com/soybeanjs)   + +## [v1.2.3](https://github.com/soybeanjs/soybean-admin/compare/v1.2.2...v1.2.3) (2024-06-13) + +###    🐞 修复错误 + +- **项目**: + - 通过在index.html中添加color-scheme元标签修复移动浏览器主题问题  -  由 @KickCashew 在 https://github.com/soybeanjs/soybean-admin/issues/488 中提交 [(c2125)](https://github.com/soybeanjs/soybean-admin/commit/c212565) + - 修复二级目录组件为空  -  由 @paynezhuang 在 https://github.com/soybeanjs/soybean-admin/issues/491 中提交 [(aabb2)](https://github.com/soybeanjs/soybean-admin/commit/aabb2a4) + +###    📖 文档 + +- **项目**: + - 修复超链接指向错误  -  由 **Azir** 提交 [(20a81)](https://github.com/soybeanjs/soybean-admin/commit/20a8127) + - 更新 README  -  由 @soybeanjs 提交 [(70261)](https://github.com/soybeanjs/soybean-admin/commit/7026126) + +###    🏡 杂项 + +- **依赖**: + - 更新依赖  -  由 @soybeanjs 提交 [(813d8)](https://github.com/soybeanjs/soybean-admin/commit/813d8ce) + - 更新依赖  -  由 @soybeanjs 提交 [(bf718)](https://github.com/soybeanjs/soybean-admin/commit/bf71837) + +###    ❤️ 贡献者 + +[![soybeanjs](https://github.com/soybeanjs.png?size=48)](https://github.com/soybeanjs)  [![paynezhuang](https://github.com/paynezhuang.png?size=48)](https://github.com/paynezhuang)  [![KickCashew](https://github.com/KickCashew.png?size=48)](https://github.com/KickCashew)   +[Azir](mailto:2075125282@qq.com) + +## [v1.2.2](https://github.com/honghuangdc/soybean-admin/compare/v1.2.1...v1.2.2) (2024-06-12) + +###    🚀 特性 + +- **项目**: 切换标签时重置滚动位置  -  由 @soybeanjs 提交 [(9094b)](https://github.com/honghuangdc/soybean-admin/commit/9094b21) + +###    🐞 修复错误 + +- **项目**: + - 在DEV模式下隐藏AppVersionNotification  -  由 @sigma-plus 在 https://github.com/honghuangdc/soybean-admin/issues/482 中提交 [(62592)](https://github.com/honghuangdc/soybean-admin/commit/6259287) + - 修复在移动布局中隐藏menu-toggler。fixed #483  -  由 @soybeanjs 在 https://github.com/honghuangdc/soybean-admin/issues/483 中提交 [(4470c)](https://github.com/honghuangdc/soybean-admin/commit/4470cb4) + +###    📖 文档 + +- **项目**: 更新 README  -  由 @soybeanjs 提交 [(8f9a7)](https://github.com/honghuangdc/soybean-admin/commit/8f9a705) + +###    ❤️ 贡献者 + +[![soybeanjs](https://github.com/soybeanjs.png?size=48)](https://github.com/soybeanjs)  [![sigma-plus](https://github.com/sigma-plus.png?size=48)](https://github.com/sigma-plus)   + +## [v1.2.1](https://github.com/honghuangdc/soybean-admin/compare/v1.2.0...v1.2.1) (2024-06-07) + +###    🐞 修复错误 + +- **项目**: + - 修复页面重新加载时获取用户信息  -  由 @soybeanjs 提交 [(ff51b)](https://github.com/honghuangdc/soybean-admin/commit/ff51b72) + - 修复setupAppVersionNotification渲染  -  由 @soybeanjs 提交 [(6a6eb)](https://github.com/honghuangdc/soybean-admin/commit/6a6eb9a) + +###    📖 文档 + +- **项目**: 更新CHANGELOG  -  由 @soybeanjs [(fe06b)](https://github.com/honghuangdc/soybean-admin/commit/fe06b8c)完成 + +###    🏡 日常任务 + +- **依赖**: 更新依赖  -  由 @soybeanjs [(08827)](https://github.com/honghuangdc/soybean-admin/commit/08827a4)完成 + +###    ❤️ 贡献者 + +[![soybeanjs](https://github.com/soybeanjs.png?size=48)](https://github.com/soybeanjs)   + + +## [v1.2.0](https://github.com/soybeanjs/soybean-admin/compare/v1.1.5...v1.2.0) (2024-06-06) + +###    🚀 功能 + +- **项目**: + - 支持系统新版本更新通知。关闭 #420  -  由 @soybeanjs 在 https://github.com/soybeanjs/soybean-admin/issues/420 [(584cd)](https://github.com/soybeanjs/soybean-admin/commit/584cd54) + - 在路由守卫中获取用户信息并从localStorage中移除。关闭 #459  -  由 @soybeanjs 在 https://github.com/soybeanjs/soybean-admin/issues/459 [(5531a)](https://github.com/soybeanjs/soybean-admin/commit/5531a68) + +###    📖 文档 + +- **项目**: 更新CHANGELOG  -  由 @soybeanjs [(2bec8)](https://github.com/soybeanjs/soybean-admin/commit/2bec899) + +###    ❤️ 贡献者 + +[![soybeanjs](https://github.com/soybeanjs.png?size=48)](https://github.com/soybeanjs)   + +## [v1.1.5](https://github.com/soybeanjs/soybean-admin/compare/v1.1.4...v1.1.5) (2024-06-06) + +###    🐞 错误修复 + +- **项目**: 修复注册组件名,CodeLogin => Register  -  由 @m-xlsea 在 https://github.com/soybeanjs/soybean-admin/issues/478 [(ddf38)](https://github.com/soybeanjs/soybean-admin/commit/ddf3823) + +###    🏡 杂务 + +- **依赖**: 更新依赖  -  由 @soybeanjs [(060c0)](https://github.com/soybeanjs/soybean-admin/commit/060c0a9) +- **项目**: 更新 vscode 设置: vue 官方  -  由 @soybeanjs [(76649)](https://github.com/soybeanjs/soybean-admin/commit/76649e2) + +###    ❤️ 贡献者 + +[![soybeanjs](https://github.com/soybeanjs.png?size=48)](https://github.com/soybeanjs)  [![m-xlsea](https://github.com/m-xlsea.png?size=48)](https://github.com/m-xlsea)   + +## [v1.1.4](https://github.com/honghuangdc/soybean-admin/compare/v1.1.3...v1.1.4) (2024-06-06) + +###    🐞 错误修复 + +- **utils**: 修复了按esc键时modalLogout的错误  -  由 @sigma-plus 在 https://github.com/honghuangdc/soybean-admin/issues/470 中提出 [(bd69c)](https://github.com/honghuangdc/soybean-admin/commit/bd69c00) + +###    🛠 优化 + +- **projects**: 优化了RouteMeta的备注  -  由 @soybeanjs 提出 [(ffb48)](https://github.com/honghuangdc/soybean-admin/commit/ffb48b1) + +###    📖 文档 + +- **projects**: + - 更新了CHANGELOG  -  由 @soybeanjs 提出 [(756f8)](https://github.com/honghuangdc/soybean-admin/commit/756f84a) + - 更新了Node&pnpm版本  -  由 @Azir-11 在 https://github.com/honghuangdc/soybean-admin/issues/472 中提出 [(9b05d)](https://github.com/honghuangdc/soybean-admin/commit/9b05d73) + +###    🏡 杂项 + +- **deps**: + - 更新了依赖  -  由 @soybeanjs 提出 [(d0380)](https://github.com/honghuangdc/soybean-admin/commit/d0380ce) + - 更新了依赖  -  由 @soybeanjs 提出 [(1f464)](https://github.com/honghuangdc/soybean-admin/commit/1f4647b) +- **projects**: + - 关闭了http代理  -  由 @soybeanjs 提出 [(d08a3)](https://github.com/honghuangdc/soybean-admin/commit/d08a381) + - 更新了mock url  -  由 @soybeanjs 提出 [(e6086)](https://github.com/honghuangdc/soybean-admin/commit/e6086f0) + - 更新了vscode设置  -  由 @soybeanjs 提出 [(910df)](https://github.com/honghuangdc/soybean-admin/commit/910dfca) + +###    ❤️ 贡献者 + +[![soybeanjs](https://github.com/soybeanjs.png?size=48)](https://github.com/soybeanjs)  [![Azir-11](https://github.com/Azir-11.png?size=48)](https://github.com/Azir-11)  [![sigma-plus](https://github.com/sigma-plus.png?size=48)](https://github.com/sigma-plus)   + +## [v1.1.3](https://github.com/soybeanjs/soybean-admin/compare/v1.1.2...v1.1.3) (2024-06-02) + +###    🐞 错误修复 + +- **组件**: + - 修复了由于回车导致搜索框反复弹出的问题  -  由 @Azir-11 在 https://github.com/soybeanjs/soybean-admin/issues/468 中修复 [(5bd96)](https://github.com/soybeanjs/soybean-admin/commit/5bd96b8) +- **项目**: + - 修复点击菜单搜索。修复了 #466,关闭 #467  -  由 @soybeanjs 在 https://github.com/soybeanjs/soybean-admin/issues/466 和 https://github.com/soybeanjs/soybean-admin/issues/467 中修复 [(8efdb)](https://github.com/soybeanjs/soybean-admin/commit/8efdb10) + - 修复 reCacheRoute。修复了 #464  -  由 @soybeanjs 在 https://github.com/soybeanjs/soybean-admin/issues/464 中修复 [(59faf)](https://github.com/soybeanjs/soybean-admin/commit/59faf15) +- **样式**: + - 修复 FirstLevelMenu 样式。修复了 #450  -  由 @soybeanjs 在 https://github.com/soybeanjs/soybean-admin/issues/450 中修复 [(db64b)](https://github.com/soybeanjs/soybean-admin/commit/db64b0e) + - 修复 PinToggler 样式。修复了 #451  -  由 @soybeanjs 在 https://github.com/soybeanjs/soybean-admin/issues/451 中修复 [(42b12)](https://github.com/soybeanjs/soybean-admin/commit/42b121a) + +###    🛠 优化 + +- **组件**: 提高 TableColumnSetting 的拖动区域精度,带有动画  -  由 @orangelckc 在 https://github.com/soybeanjs/soybean-admin/issues/465 中优化 [(2aa85)](https://github.com/soybeanjs/soybean-admin/commit/2aa85c6) +- **项目**: unocss 边框快捷方式  -  由 @soybeanjs 优化 [(40d0f)](https://github.com/soybeanjs/soybean-admin/commit/40d0f8a) + +###    📖 文档 + +- **项目**: 更新 CHANGELOG  -  由 @soybeanjs 更新 [(87b18)](https://github.com/soybeanjs/soybean-admin/commit/87b1838) + +###    🏡 杂项 + +- **其他**: + - 纠正拼写错误  -  由 @orangelckc 在 https://github.com/soybeanjs/soybean-admin/issues/460 中纠正 [(086ba)](https://github.com/soybeanjs/soybean-admin/commit/086bad4) + - 纠正拼写错误  -  由 @Azir-11 在 https://github.com/soybeanjs/soybean-admin/issues/462 中纠正 [(f1850)](https://github.com/soybeanjs/soybean-admin/commit/f185041) +- **项目**: + - 更新 vscode launch.json  -  由 @soybeanjs 更新 [(4c1c7)](https://github.com/soybeanjs/soybean-admin/commit/4c1c7e6) + +###    ❤️ 贡献者 + +[![soybeanjs](https://github.com/soybeanjs.png?size=48)](https://github.com/soybeanjs)  [![Azir-11](https://github.com/Azir-11.png?size=48)](https://github.com/Azir-11)  [![orangelckc](https://github.com/orangelckc.png?size=48)](https://github.com/orangelckc)   + +## [v1.1.2](https://github.com/soybeanjs/soybean-admin/compare/v1.1.1...v1.1.2) (2024-05-24) + +###    🐞 错误修复 + +- **项目**: + - 修复头部样式 & 修复点击全局标签时按钮高亮。修复了 #446  -  由 @honghuangdc 在 https://github.com/soybeanjs/soybean-admin/issues/446 [(64fc0)](https://github.com/soybeanjs/soybean-admin/commit/64fc099) + - 修复多标签页只渲染一次。修复了 #441  -  由 @honghuangdc 在 https://github.com/soybeanjs/soybean-admin/issues/441 [(e379d)](https://github.com/soybeanjs/soybean-admin/commit/e379d6c) + +###    🛠 优化 + +- **项目**: 优化代码  -  由 @honghuangdc [(bc8dc)](https://github.com/soybeanjs/soybean-admin/commit/bc8dc47) + +###    ❤️ 贡献者 + +[![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)   + +## [v1.1.1](https://github.com/soybeanjs/soybean-admin/compare/v1.1.0...v1.1.1) (2024-05-20) + +###    🚀 功能 + +- **hooks**: 为 useEcharts 添加 setOptions  -  由 @honghuangdc 提交 [(e4d53)](https://github.com/soybeanjs/soybean-admin/commit/e4d53aa) + +###    🐞 修复错误 + +- **projects**: + - 修复 useRouter。修复了 #436  -  由 @honghuangdc 在 https://github.com/soybeanjs/soybean-admin/issues/436 提交 [(0774a)](https://github.com/soybeanjs/soybean-admin/commit/0774a51) + - 在动态路由模式下获取路由时添加错误处理。修复了 440  -  由 @honghuangdc 提交 [(57b4a)](https://github.com/soybeanjs/soybean-admin/commit/57b4a9d) +- **styles**: + - 修复 useTable 类型  -  由 @honghuangdc 提交 [(07124)](https://github.com/soybeanjs/soybean-admin/commit/071241f) + +###    📖 文档 + +- **projects**: + - 更新 CHANGELOG  -  由 @honghuangdc 提交 [(19783)](https://github.com/soybeanjs/soybean-admin/commit/1978397) + - 更新 README.md  -  由 @honghuangdc 提交 [(fa56e)](https://github.com/soybeanjs/soybean-admin/commit/fa56e9c) + - 更新 README.md  -  由 @honghuangdc 提交 [(419ea)](https://github.com/soybeanjs/soybean-admin/commit/419ea42) + +###    🏡 杂项 + +- **projects**: + - 更新依赖并修复 TS 错误  -  由 @honghuangdc 提交 [(4ea9c)](https://github.com/soybeanjs/soybean-admin/commit/4ea9c85) + - 更新 eslint-config 并修复代码  -  由 @honghuangdc 提交 [(68ea9)](https://github.com/soybeanjs/soybean-admin/commit/68ea974) + - 更新 @elegant-router/vue 并为 resolve route 添加错误处理。修复了 #442  -  由 @honghuangdc 在 https://github.com/soybeanjs/soybean-admin/issues/442 提交 [(24ff8)](https://github.com/soybeanjs/soybean-admin/commit/24ff852) + +###    ❤️ 贡献者 + +[![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)   + +## [v1.1.0](https://github.com/honghuangdc/soybean-admin/compare/v1.0.9...v1.1.0) (2024-05-07) + +###    🚀 功能 + +- **项目**: + - 支持灰度。修复了 #385  -  由 @honghuangdc 在 https://github.com/honghuangdc/soybean-admin/issues/385 [(d335d)](https://github.com/honghuangdc/soybean-admin/commit/d335df6) + - 添加前缀到本地存储  -  由 **Azir** [(1fc34)](https://github.com/honghuangdc/soybean-admin/commit/1fc34cc) + - 添加表格显示总数选项  -  由 **paynezhuang** [(3e61e)](https://github.com/honghuangdc/soybean-admin/commit/3e61eab) + - 添加推荐颜色切换。关闭了 #388  -  由 @honghuangdc 在 https://github.com/honghuangdc/soybean-admin/issues/388 [(a1920)](https://github.com/honghuangdc/soybean-admin/commit/a1920fc) + - 添加菜单路由字段  -  由 **paynezhuang** [(dbe31)](https://github.com/honghuangdc/soybean-admin/commit/dbe31eb) + - 支持短时间内重复请求错误只出现一次。关闭了 #368, 关闭了 #369  -  由 @honghuangdc 在 https://github.com/honghuangdc/soybean-admin/issues/368 和 https://github.com/honghuangdc/soybean-admin/issues/369 [(e3bd3)](https://github.com/honghuangdc/soybean-admin/commit/e3bd397) + - 通过鼠标滚轮按钮点击关闭标签  -  由 **JianJroh** [(d3849)](https://github.com/honghuangdc/soybean-admin/commit/d3849ba) + - 页面:支持管理菜单更多选项。关闭了 #366  -  由 @honghuangdc 在 https://github.com/honghuangdc/soybean-admin/issues/366 [(c4b5c)](https://github.com/honghuangdc/soybean-admin/commit/c4b5c65) + - useTable 添加展开显示  -  由 **paynezhuang** [(0a90d)](https://github.com/honghuangdc/soybean-admin/commit/0a90dd3) + +###    🐞 错误修复 + +- **项目**: + - 菜单 fixedIndexInTab 默认为 null  -  由 **paynezhuang** [(3d10e)](https://github.com/honghuangdc/soybean-admin/commit/3d10ef1) + - 修复菜单切换器 zIndex  -  由 @honghuangdc [(7bd43)](https://github.com/honghuangdc/soybean-admin/commit/7bd43df) + - 修复管理菜单模态样式  -  由 @honghuangdc [(60f3b)](https://github.com/honghuangdc/soybean-admin/commit/60f3b14) + - 当角色改变时修复菜单数据。修复了 #391  -  由 @honghuangdc 在 https://github.com/honghuangdc/soybean-admin/issues/391 [(3b47b)](https://github.com/honghuangdc/soybean-admin/commit/3b47b5a) + +###    🛠 优化 + +- **项目**: 移除废弃的代码  -  由 @honghuangdc [(72ccb)](https://github.com/honghuangdc/soybean-admin/commit/72ccb6b) + +###    💅 重构 + +- **项目**: + - 重构 @sa/color-palette => @sa/color & 优化 @sa/utils 代码  -  由 @honghuangdc [(34999)](https://github.com/honghuangdc/soybean-admin/commit/3499997) + - menu-operate-drawer => menu-operate-modal  -  由 @honghuangdc [(003e1)](https://github.com/honghuangdc/soybean-admin/commit/003e145) + +###    📖 文档 + +- **项目**: + - 添加 CHANGELOG.zh_CN.md  -  由 @honghuangdc [(18b3f)](https://github.com/honghuangdc/soybean-admin/commit/18b3f05) + - 更新 CHANGELOG  -  由 @honghuangdc [(4d17c)](https://github.com/honghuangdc/soybean-admin/commit/4d17cfd) + +###    🏡 杂项 + +- **依赖**: + - 更新依赖  -  由 @honghuangdc [(1cb38)](https://github.com/honghuangdc/soybean-admin/commit/1cb3816) + - 更新依赖  -  由 @honghuangdc [(599b4)](https://github.com/honghuangdc/soybean-admin/commit/599b4e1) +- **项目**: + - 合并 main 到 v1.1.0  -  由 @honghuangdc [(ebe55)](https://github.com/honghuangdc/soybean-admin/commit/ebe55af) + +###    ❤️ 贡献者 + +[![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)   +[paynezhuang](mailto:paynezhuang@gmail.com), [JianJroh](mailto:rhjian@foxmail.com), [Azir](mailto:2075125282@qq.com) + +## [v1.1.0-beta.2](https://github.com/honghuangdc/soybean-admin/compare/v1.1.0-beta.1...v1.1.0-beta.2) (2024-05-07) + +###    🚀 特性 + +- **项目**: useTable添加展开以显示  -  由 **paynezhuang** [(0a90d)](https://github.com/honghuangdc/soybean-admin/commit/0a90dd3) 提供 + +###    🐞 修复的错误 + +- **项目**: + - 修复 manage_menu 模态样式  -  由 @honghuangdc [(60f3b)](https://github.com/honghuangdc/soybean-admin/commit/60f3b14) 提供 + - 当角色改变时修复菜单数据。修复了 #391  -  由 @honghuangdc 在 https://github.com/honghuangdc/soybean-admin/issues/391 [(3b47b)](https://github.com/honghuangdc/soybean-admin/commit/3b47b5a) 提供 + +###    🛠 优化 + +- **项目**: 删除废弃的代码  -  由 @honghuangdc [(72ccb)](https://github.com/honghuangdc/soybean-admin/commit/72ccb6b) 提供 + +###    📖 文档 + +- **项目**: 添加 CHANGELOG.zh_CN.md  -  由 @honghuangdc [(18b3f)](https://github.com/honghuangdc/soybean-admin/commit/18b3f05) 提供 + +###    ❤️ 贡献者 + +[![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)   +[paynezhuang](mailto:paynezhuang@gmail.com) + + +## [v1.1.0-beta.1](https://github.com/soybeanjs/soybean-admin/compare/v1.0.9...v1.1.0-beta.1) (2024-05-07) + +###    🚀 功能 + +- **项目**: + - 支持灰度。修复了 #385  -  由 @honghuangdc 在 https://github.com/soybeanjs/soybean-admin/issues/385 [(d335d)](https://github.com/soybeanjs/soybean-admin/commit/d335df6) + - 添加前缀到本地存储  -  由 **Azir** [(1fc34)](https://github.com/soybeanjs/soybean-admin/commit/1fc34cc) + - 添加表格 showTotal 选项  -  由 **paynezhuang** [(3e61e)](https://github.com/soybeanjs/soybean-admin/commit/3e61eab) + - 添加推荐颜色切换。关闭了 #388  -  由 @honghuangdc 在 https://github.com/soybeanjs/soybean-admin/issues/388 [(a1920)](https://github.com/soybeanjs/soybean-admin/commit/a1920fc) + - 添加菜单路由字段  -  由 **paynezhuang** [(dbe31)](https://github.com/soybeanjs/soybean-admin/commit/dbe31eb) + - 支持短时间内重复请求错误只发生一次。关闭了 #368, 关闭了 #369  -  由 @honghuangdc 在 https://github.com/soybeanjs/soybean-admin/issues/368 和 https://github.com/soybeanjs/soybean-admin/issues/369 [(e3bd3)](https://github.com/soybeanjs/soybean-admin/commit/e3bd397) + - 通过鼠标滚轮按钮点击关闭标签  -  由 **JianJroh** [(d3849)](https://github.com/soybeanjs/soybean-admin/commit/d3849ba) + - 页面:支持更多的 manage_menu 选项。关闭了 #366  -  由 @honghuangdc 在 https://github.com/soybeanjs/soybean-admin/issues/366 [(c4b5c)](https://github.com/soybeanjs/soybean-admin/commit/c4b5c65) + +###    🐞 错误修复 + +- **项目**: + - 修复菜单 fixedIndexInTab 默认为 null  -  由 **paynezhuang** [(3d10e)](https://github.com/soybeanjs/soybean-admin/commit/3d10ef1)完成 + - 修复菜单切换器 zIndex  -  由 @honghuangdc [(7bd43)](https://github.com/soybeanjs/soybean-admin/commit/7bd43df)完成 + +###    💅 重构 + +- **项目**: + - 重构 @sa/color-palette => @sa/color & 性能优化 @sa/utils  -  由 @honghuangdc [(34999)](https://github.com/soybeanjs/soybean-admin/commit/3499997)完成 + - menu-operate-drawer => menu-operate-modal  -  由 @honghuangdc [(003e1)](https://github.com/soybeanjs/soybean-admin/commit/003e145)完成 + +###    🏡 杂务 + +- **依赖**: + - 更新依赖  -  由 @honghuangdc [(1cb38)](https://github.com/soybeanjs/soybean-admin/commit/1cb3816)完成 + - 更新依赖  -  由 @honghuangdc [(599b4)](https://github.com/soybeanjs/soybean-admin/commit/599b4e1)完成 +- **项目**: + - 合并主分支到 v1.1.0  -  由 @honghuangdc [(ebe55)](https://github.com/soybeanjs/soybean-admin/commit/ebe55af)完成 + +###    ❤️ 贡献者 + +[![honghuangdc](https://github.com/honghuangdc.png?size=48)](https://github.com/honghuangdc)   +[JianJroh](mailto:rhjian@foxmail.com), [paynezhuang](mailto:paynezhuang@gmail.com), [Azir](mailto:2075125282@qq.com) diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..20547de --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 Soybean + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index 6f3641e..9de0430 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,176 @@ -# @sa/elp +
+ +

SoybeanAdmin

+ English | 中文 +
-SoybeanAdmin ElementPlus +--- + +[![license](https://img.shields.io/badge/license-MIT-green.svg)](./LICENSE) +[![github stars](https://img.shields.io/github/stars/soybeanjs/soybean-admin)](https://github.com/soybeanjs/soybean-admin) +[![github forks](https://img.shields.io/github/forks/soybeanjs/soybean-admin)](https://github.com/soybeanjs/soybean-admin) +[![gitee stars](https://gitee.com/honghuangdc/soybean-admin/badge/star.svg)](https://gitee.com/honghuangdc/soybean-admin) + +Featured|HelloGitHub + + +> [!NOTE] +> If you think `SoybeanAdmin` is helpful to you, or you like our project, please give us a ⭐️ on GitHub. Your support is the driving force for us to continue to improve and add new features! Thank you for your support! + +## Introduction + +[`SoybeanAdmin`](https://github.com/soybeanjs/soybean-admin) is a clean, elegant, beautiful and powerful admin template, based on the latest front-end technology stack, including Vue3, Vite5, TypeScript, Pinia and UnoCSS. It has built-in rich theme configuration and components, strict code specifications, and an automated file routing system. In addition, it also uses the online mock data solution based on ApiFox. `SoybeanAdmin` provides you with a one-stop admin solution, no additional configuration, and out of the box. It is also a best practice for learning cutting-edge technologies quickly. + + +## Features + +- **Cutting-edge technology application**: using the latest popular technology stack such as Vue3, Vite5, TypeScript, Pinia and UnoCSS. +- **Clear project architecture**: using pnpm monorepo architecture, clear structure, elegant and easy to understand. +- **Strict code specifications**: follow the [SoybeanJS specification](https://docs.soybeanjs.cn/standard), integrate eslint, prettier and simple-git-hooks to ensure the code is standardized. +- **TypeScript**: support strict type checking to improve code maintainability. +- **Rich theme configuration**: built-in a variety of theme configurations, perfectly integrated with UnoCSS. +- **Built-in internationalization solution**: easily realize multi-language support. +- **Automated file routing system**: automatically generate route import, declaration and type. For more details, please refer to [Elegant Router](https://github.com/soybeanjs/elegant-router). +- **Flexible permission routing**: support both front-end static routing and back-end dynamic routing. +- **Rich page components**: built-in a variety of pages and components, including 403, 404, 500 pages, as well as layout components, tag components, theme configuration components, etc. +- **Command line tool**: built-in efficient command line tool, git commit, delete file, release, etc. +- **Mobile adaptation**: perfectly support mobile terminal to realize adaptive layout. + + +## Version + +- **NaiveUI Version:** + - [Preview Link](https://naive.soybeanjs.cn/) + - [Github Repository](https://github.com/soybeanjs/soybean-admin) + - [Gitee Repository](https://gitee.com/honghuangdc/soybean-admin) + +- **AntDesignVue Version:** + - [Preview Link](https://antd.soybeanjs.cn/) + - [Github Repository](https://github.com/soybeanjs/soybean-admin-antd) + - [Gitee Repository](https://gitee.com/honghuangdc/soybean-admin-antd) + +- **Legacy Version:** + - [Preview Link](https://legacy.soybeanjs.cn/) + - [Github Repository](https://github.com/soybeanjs/soybean-admin/tree/legacy) + + +## Documentation + +- [Link](https://docs.soybeanjs.cn) +- [Legacy Docs](https://legacy-docs.soybeanjs.cn) + +## Example Images + +![](https://soybeanjs-1300612522.cos.ap-guangzhou.myqcloud.com/uPic/soybean-admin-v1-01.png) +![](https://soybeanjs-1300612522.cos.ap-guangzhou.myqcloud.com/uPic/soybean-admin-v1-02.png) +![](https://soybeanjs-1300612522.cos.ap-guangzhou.myqcloud.com/uPic/soybean-admin-v1-03.png) +![](https://soybeanjs-1300612522.cos.ap-guangzhou.myqcloud.com/uPic/soybean-admin-v1-04.png) +![](https://soybeanjs-1300612522.cos.ap-guangzhou.myqcloud.com/uPic/soybean-admin-v1-05.png) +![](https://soybeanjs-1300612522.cos.ap-guangzhou.myqcloud.com/uPic/soybean-admin-v1-06.png) +![](https://soybeanjs-1300612522.cos.ap-guangzhou.myqcloud.com/uPic/soybean-admin-v1-07.png) +![](https://soybeanjs-1300612522.cos.ap-guangzhou.myqcloud.com/uPic/soybean-admin-v1-08.png) +![](https://soybeanjs-1300612522.cos.ap-guangzhou.myqcloud.com/uPic/soybean-admin-v1-09.png) +![](https://soybeanjs-1300612522.cos.ap-guangzhou.myqcloud.com/uPic/soybean-admin-v1-10.png) +![](https://soybeanjs-1300612522.cos.ap-guangzhou.myqcloud.com/uPic/soybean-admin-v1-mobile.png) + + +## Usage + +**Environment Preparation** + +Make sure your environment meets the following requirements: + +- **git**: you need git to clone and manage project versions. +- **NodeJS**: >=18.12.0, recommended 18.19.0 or higher. +- **pnpm**: >= 8.7.0, recommended 8.14.0 or higher. + +**Clone Project** + +```bash +git clone https://github.com/soybeanjs/soybean-admin.git +``` + +**Install Dependencies** + +```bash +pnpm i +``` +> Since this project uses the pnpm monorepo management method, please do not use npm or yarn to install dependencies. + +**Start Project** + +```bash +pnpm dev +``` + +**Build Project** + +```bash +pnpm build +``` + +## Ecosystem + +- [react-soybean-admin](https://github.com/mufeng889/react-soybean-admin): SoybeanAdmin based version of React. +- [electron-mock-admin](https://github.com/lixin59/electron-mock-api): A Mock Api management system that helps front-end developers quickly implement interface mocks. +- [T-Shell](https://github.com/TheBlindM/T-Shell): A terminal emulator and SSH client with configurable command prompts. +- [pea](https://github.com/haitang1894/pea) : Adopting SpringBoot3.2 + JDK21, MyBatis-Plus, SpringSecurity security framework, etc., suitable for the simple permission system developed by [soybean-admin](https://gitee.com/honghuangdc/soybean-admin). +- [MalusAdmin](https://github.com/pridejoy/MalusAdmin): A backend management framework developed based on Vue3/TypeScript/NaiveUI and NET7 & Sqlsugar. It is implemented in the most original and simplest way, with a fresh and elegant front-end, a clear and elegant backend structure, and powerful functions. +- [PanisAdmin](https://github.com/paynezhuang/panis-admin): Adopting SpringBoot 3, SaToken, MySQL and other frameworks to develop and modify [soybean-admin](https://github.com/soybeanjs/soybean-admin) for the second time, adapting dynamic menu/button-level authorization. Retaining the original flavor, fresh and elegant, high-value back-end management system scaffold. +- [snail-job](https://github.com/aizuda/snail-job): A distributed task retry and task scheduling platform with "high performance, high value and high activity". +- [SuperApi](https://github.com/TmmTop/SuperApi): Quickly turn your idea into an online stable product! Entity-less library and table building, add, delete, change and check entity-less library table, support 15 kinds of condition query, as well as paging, list, unlimited tree list and other functions of the API deployment! With interface documentation, Auth authorisation, interface flow restriction, access to the client's real IP, advanced server caching components, dynamic APIs and other features, we look forward to your experience! +- [FastSoyAdmin](https://github.com/sleep1223/fast-soy-admin): A modern Management Platform based on FastAPI+Vue3+Naive UI. + + +## How to Contribute + +We warmly welcome and appreciate all forms of contributions. If you have any ideas or suggestions, please feel free to share them by submitting [pull requests](https://github.com/soybeanjs/soybean-admin/pulls) or creating GitHub [issue](https://github.com/soybeanjs/soybean-admin/issues/new). + +## Git Commit Guidelines + +This project has built-in `commit` command, you can execute `pnpm commit` to generate commit information that conforms to [Conventional Commits](https://www.conventionalcommits.org/) specification. When submitting PR, please be sure to use `commit` command to create commit information to ensure the standardization of information. + +## Browser Support + +It is recommended to use the latest version of Chrome in development for a better experience. + +| [IE](http://godban.github.io/browsers-support-badges/) | [ Edge](http://godban.github.io/browsers-support-badges/) | [Firefox](http://godban.github.io/browsers-support-badges/) | [Chrome](http://godban.github.io/browsers-support-badges/) | [Safari](http://godban.github.io/browsers-support-badges/) | +| --- | --- | --- | --- | --- | +| not support | last 2 versions | last 2 versions | last 2 versions | last 2 versions | + +## OpenSource Author + +[Soybean](https://github.com/honghuangdc) + +## Contributors + +Thanks the following people for their contributions. If you want to contribute to this project, please refer to [How to Contribute](#how-to-contribute). + + + + + +## Communication + +`SoybeanAdmin` is a completely open source and free project, helping developers to develop medium and large-scale management systems more conveniently. It also provides WeChat and QQ communication groups. If you have any questions, please feel free to ask in the group. + +
+

QQ Group

+ +
+ +
+

Add the following WeChat to invite to the WeChat group

+ +
+ +## Star Trend + +[![Star History Chart](https://api.star-history.com/svg?repos=soybeanjs/soybean-admin&type=Date)](https://star-history.com/#soybeanjs/soybean-admin&Date) + +## License + +This project is based on the [MIT © 2021 Soybean](./LICENSE) protocol, for learning purposes only, please retain the author's copyright information for commercial use, the author does not guarantee and is not responsible for the software. diff --git a/README.zh_CN.md b/README.zh_CN.md new file mode 100644 index 0000000..1ac515a --- /dev/null +++ b/README.zh_CN.md @@ -0,0 +1,206 @@ +
+ +

SoybeanAdmin

+ English | 中文 +
+ +--- + +[![license](https://img.shields.io/badge/license-MIT-green.svg)](./LICENSE) +[![github stars](https://img.shields.io/github/stars/honghuangdc/soybean-admin)](https://github.com/soybeanjs/soybean-admin) +[![github forks](https://img.shields.io/github/forks/honghuangdc/soybean-admin)](https://github.com/soybeanjs/soybean-admin) +[![gitee stars](https://gitee.com/honghuangdc/soybean-admin/badge/star.svg)](https://gitee.com/honghuangdc/soybean-admin) + +Featured|HelloGitHub + +> [!NOTE] +> 如果您觉得 `SoybeanAdmin`对您有所帮助,或者您喜欢我们的项目,请在 GitHub 上给我们一个 ⭐️。您的支持是我们持续改进和增加新功能的动力!感谢您的支持! + +## 简介 + +[`SoybeanAdmin`](https://github.com/soybeanjs/soybean-admin) 是一个清新优雅、高颜值且功能强大的后台管理模板,基于最新的前端技术栈,包括 Vue3, Vite5, TypeScript, Pinia 和 UnoCSS。它内置了丰富的主题配置和组件,代码规范严谨,实现了自动化的文件路由系统。此外,它还采用了基于 ApiFox 的在线Mock数据方案。`SoybeanAdmin` 为您提供了一站式的后台管理解决方案,无需额外配置,开箱即用。同样是一个快速学习前沿技术的最佳实践。 + +## 特性 + +- **前沿技术应用**:采用 Vue3, Vite5, TypeScript, Pinia 和 UnoCSS 等最新流行的技术栈。 +- **清晰的项目架构**:采用 pnpm monorepo 架构,结构清晰,优雅易懂。 +- **严格的代码规范**:遵循 [SoybeanJS 规范](https://docs.soybeanjs.cn/zh/standard),集成了eslint, prettier 和 simple-git-hooks,保证代码的规范性。 +- **TypeScript**: 支持严格的类型检查,提高代码的可维护性。 +- **丰富的主题配置**:内置多样的主题配置,与 UnoCSS 完美结合。 +- **内置国际化方案**:轻松实现多语言支持。 +- **自动化文件路由系统**:自动生成路由导入、声明和类型。更多细节请查看 [Elegant Router](https://github.com/soybeanjs/elegant-router)。 +- **灵活的权限路由**:同时支持前端静态路由和后端动态路由。 +- **丰富的页面组件**:内置多样页面和组件,包括403、404、500页面,以及布局组件、标签组件、主题配置组件等。 +- **命令行工具**:内置高效的命令行工具,git提交、删除文件、发布等。 +- **移动端适配**:完美支持移动端,实现自适应布局。 + + +## 版本 + +- **NaiveUI 版本:** + - [预览地址](https://naive.soybeanjs.cn/) + - [Github 仓库](https://github.com/soybeanjs/soybean-admin) + - [Gitee 仓库](https://gitee.com/honghuangdc/soybean-admin) + +- **AntDesignVue 版本:** + - [预览地址](https://antd.soybeanjs.cn/) + - [Github 仓库](https://github.com/soybeanjs/soybean-admin-antd) + - [Gitee 仓库](https://gitee.com/honghuangdc/soybean-admin-antd) + +- **旧版:** + - [预览地址](https://legacy.soybeanjs.cn/) + - [Github 仓库](https://github.com/soybeanjs/soybean-admin/tree/legacy) + + +## 文档 + +- [地址](https://docs.soybeanjs.cn) +- [旧版文档](https://legacy-docs.soybeanjs.cn) + + +## 合作事项 + +我们非常感谢大家对 [`SoybeanAdmin`](https://github.com/soybeanjs/soybean-admin) 的支持!为了进一步回馈社区,并助力企业和开发者实现个性化需求,我们现提供多种合作服务,期待与您携手共赢。 + +##### 1、定制化管理后台开发 + +针对企业和开发者的特定业务需求,我们提供基于 [`SoybeanAdmin`](https://github.com/soybeanjs/soybean-admin) 的定制化管理后台开发服务。我们的团队具备丰富的行业经验,能够迅速理解并实现您的需求,打造高效、灵活且安全的定制化解决方案。 + +- **定制开发**:我们将根据您的具体需求,提供从需求分析、UI设计到功能实现的全方位服务,确保项目高效交付。 +- **功能扩展**:在 [`SoybeanAdmin`](https://github.com/soybeanjs/soybean-admin) 基础上,扩展您所需的特定功能模块,提升管理后台的功能和用户体验。 + +##### 2、企业外包服务 + +我们承接各类企业级外包项目,特别是在管理后台系统的开发、集成与运维方面。我们以精益求精的态度,确保项目的质量和进度,为您的业务提供强有力的技术支持。 + +- **项目开发**:无论是全新的项目,还是现有系统的优化与集成,我们都将为您量身打造高效可靠的解决方案。 +- **系统集成与维护**:我们也提供基于 [`SoybeanAdmin`](https://github.com/soybeanjs/soybean-admin) 的系统集成与长期维护服务,确保您的系统稳定、安全地运行。 + +##### 3、联系方式 + +如有合作意向或项目咨询,请通过以下方式与我们联系: + +- **Email**: [soybeanjs@outlook.com](mailto:soybeanjs@outlook.com) +- **GitHub Issues**: 欢迎通过 [GitHub Issues](https://github.com/soybeanjs/soybean-admin/issues/new) 联系我们,进行初步的合作洽谈。 +- **商务合作微信**: honghuangdc + +期待与您开展深入合作,共同推动 SoybeanAdmin 项目及其在更多领域的成功应用! + + +## 示例图片 + +![](https://soybeanjs-1300612522.cos.ap-guangzhou.myqcloud.com/uPic/soybean-admin-v1-01.png) +![](https://soybeanjs-1300612522.cos.ap-guangzhou.myqcloud.com/uPic/soybean-admin-v1-02.png) +![](https://soybeanjs-1300612522.cos.ap-guangzhou.myqcloud.com/uPic/soybean-admin-v1-03.png) +![](https://soybeanjs-1300612522.cos.ap-guangzhou.myqcloud.com/uPic/soybean-admin-v1-04.png) +![](https://soybeanjs-1300612522.cos.ap-guangzhou.myqcloud.com/uPic/soybean-admin-v1-05.png) +![](https://soybeanjs-1300612522.cos.ap-guangzhou.myqcloud.com/uPic/soybean-admin-v1-06.png) +![](https://soybeanjs-1300612522.cos.ap-guangzhou.myqcloud.com/uPic/soybean-admin-v1-07.png) +![](https://soybeanjs-1300612522.cos.ap-guangzhou.myqcloud.com/uPic/soybean-admin-v1-08.png) +![](https://soybeanjs-1300612522.cos.ap-guangzhou.myqcloud.com/uPic/soybean-admin-v1-09.png) +![](https://soybeanjs-1300612522.cos.ap-guangzhou.myqcloud.com/uPic/soybean-admin-v1-10.png) +![](https://soybeanjs-1300612522.cos.ap-guangzhou.myqcloud.com/uPic/soybean-admin-v1-mobile.png) + + +## 使用 + +**环境准备** + +确保你的环境满足以下要求: + +- **git**: 你需要git来克隆和管理项目版本。 +- **NodeJS**: >=18.12.0,推荐 18.19.0 或更高。 +- **pnpm**: >= 8.7.0,推荐 8.14.0 或更高。 + +**克隆项目** + +```bash +git clone https://github.com/soybeanjs/soybean-admin.git +``` + +**安装依赖** + +```bash +pnpm i +``` +> 由于本项目采用了 pnpm monorepo 的管理方式,因此请不要使用 npm 或 yarn 来安装依赖。 + +**启动项目** + +```bash +pnpm dev +``` + +**构建项目** + +```bash +pnpm build +``` + +## 周边生态 + +- [react-soybean-admin](https://github.com/mufeng889/react-soybean-admin): 基于SoybeanAdmin的React版本. +- [electron-mock-admin](https://github.com/lixin59/electron-mock-api): 一个 Mock Api 管理系统,帮助前端开发伙伴快速实现接口的 mock。 +- [T-Shell](https://github.com/TheBlindM/T-Shell): 是一个可配置命令提示的终端模拟器和 SSH 客户端。 +- [pea](https://github.com/haitang1894/pea) : 采用SpringBoot3.2 + JDK21、MyBatis-Plus、SpringSecurity安全框架等,适配 [soybean-admin](https://gitee.com/honghuangdc/soybean-admin) 开发的简单权限系统。 +- [MalusAdmin](https://github.com/pridejoy/MalusAdmin): 基于 Vue3/TypeScript/NaiveUI 和 NET7 & Sqlsugar 开发的后台管理框架。采用最原生最简洁的方式来实现, 前端清新优雅高颜值,后端 结构清晰,优雅易懂,功能强大。 +- [PanisAdmin](https://github.com/paynezhuang/panis-admin): 采用SpringBoot3、SaToken、MySQL等框架开发,二次修改 [soybean-admin](https://github.com/soybeanjs/soybean-admin),适配动态菜单/按钮级别的鉴权,保留原汁原味、清新优雅、高颜值的后台管理系统脚手架。 +- [snail-job](https://github.com/aizuda/snail-job): 一款兼具 “高性能、高颜值、高活跃” 的分布式任务重试和分布式任务调度平台。 +- [SuperApi](https://github.com/TmmTop/SuperApi): 快速将你的 idea 变成线上稳定运行的产品! 无实体建库建表,对无实体库表进行增删改查,支持 15 种条件查询,以及分页,列表,无限级树形列表 等功能的 API 部署! 拥有接口文档,Auth 授权,接口限流,获取客户端真实 IP,先进的服务器缓存组件,动态 API 等功能,期待您的体验! +- [FastSoyAdmin](https://github.com/sleep1223/fast-soy-admin): 基于 FastAPI+Vue3+Naive UI 的现代化轻量管理平台. + + +## 如何贡献 + +我们热烈欢迎并感谢所有形式的贡献。如果您有任何想法或建议,欢迎通过提交 [pull requests](https://github.com/soybeanjs/soybean-admin/pulls) 或创建 GitHub [issue](https://github.com/soybeanjs/soybean-admin/issues/new) 来分享。 + +## Git 提交规范 + +本项目已内置 `commit` 命令,您可以通过执行 `pnpm commit` 来生成符合 [Conventional Commits]([conventionalcommits](https://www.conventionalcommits.org/)) 规范的提交信息。在提交PR时,请务必使用 `commit` 命令来创建提交信息,以确保信息的规范性。 + + +## 浏览器支持 + +推荐使用最新版的 Chrome 浏览器进行开发,以获得更好的体验。 + +| [IE](http://godban.github.io/browsers-support-badges/) | [ Edge](http://godban.github.io/browsers-support-badges/) | [Firefox](http://godban.github.io/browsers-support-badges/) | [Chrome](http://godban.github.io/browsers-support-badges/) | [Safari](http://godban.github.io/browsers-support-badges/) | +| --- | --- | --- | --- | --- | +| not support | last 2 versions | last 2 versions | last 2 versions | last 2 versions | + +## 开源作者 + +[Soybean](https://github.com/honghuangdc) + + +## 贡献者 + +感谢以下贡献者的贡献。如果您想为本项目做出贡献,请参考 [如何贡献](#如何贡献)。 + + + + + +## 交流 + +`SoybeanAdmin` 是完全开源免费的项目,在帮助开发者更方便地进行中大型管理系统开发,同时也提供微信和 QQ 交流群,使用问题欢迎在群内提问。 + +
+

QQ交流群

+ +
+ +
+

添加下面微信邀请进微信群

+ +
+ +## Star 趋势 + +[![Star History Chart](https://api.star-history.com/svg?repos=soybeanjs/soybean-admin&type=Date)](https://star-history.com/#soybeanjs/soybean-admin&Date) + +## 开源协议 + +项目基于 [MIT © 2021 Soybean](./LICENSE) 协议,仅供学习参考,商业使用请保留作者版权信息,作者不保证也不承担任何软件的使用风险。 diff --git a/build/config/index.ts b/build/config/index.ts new file mode 100644 index 0000000..8a9621a --- /dev/null +++ b/build/config/index.ts @@ -0,0 +1,2 @@ +export * from './proxy'; +export * from './time'; diff --git a/build/config/proxy.ts b/build/config/proxy.ts new file mode 100644 index 0000000..548ea4e --- /dev/null +++ b/build/config/proxy.ts @@ -0,0 +1,36 @@ +import type { ProxyOptions } from 'vite'; +import { createServiceConfig } from '../../src/utils/service'; + +/** + * Set http proxy + * + * @param env - The current env + * @param enable - If enable http proxy + */ +export function createViteProxy(env: Env.ImportMeta, enable: boolean) { + const isEnableHttpProxy = enable && env.VITE_HTTP_PROXY === 'Y'; + + if (!isEnableHttpProxy) return undefined; + + const { baseURL, proxyPattern, other } = createServiceConfig(env); + + const proxy: Record = createProxyItem({ baseURL, proxyPattern }); + + other.forEach(item => { + Object.assign(proxy, createProxyItem(item)); + }); + + return proxy; +} + +function createProxyItem(item: App.Service.ServiceConfigItem) { + const proxy: Record = {}; + + proxy[item.proxyPattern] = { + target: item.baseURL, + changeOrigin: true, + rewrite: path => path.replace(new RegExp(`^${item.proxyPattern}`), '') + }; + + return proxy; +} diff --git a/build/config/time.ts b/build/config/time.ts new file mode 100644 index 0000000..3b57146 --- /dev/null +++ b/build/config/time.ts @@ -0,0 +1,12 @@ +import dayjs from 'dayjs'; +import utc from 'dayjs/plugin/utc'; +import timezone from 'dayjs/plugin/timezone'; + +export function getBuildTime() { + dayjs.extend(utc); + dayjs.extend(timezone); + + const buildTime = dayjs.tz(Date.now(), 'Asia/Shanghai').format('YYYY-MM-DD HH:mm:ss'); + + return buildTime; +} diff --git a/build/index.ts b/build/index.ts deleted file mode 100644 index 460ab6b..0000000 --- a/build/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './plugins'; diff --git a/build/plugins/html.ts b/build/plugins/html.ts new file mode 100644 index 0000000..b94d24f --- /dev/null +++ b/build/plugins/html.ts @@ -0,0 +1,13 @@ +import type { Plugin } from 'vite'; + +export function setupHtmlPlugin(buildTime: string) { + const plugin: Plugin = { + name: 'html-plugin', + apply: 'build', + transformIndexHtml(html) { + return html.replace('', `\n `); + } + }; + + return plugin; +} diff --git a/build/plugins/index.ts b/build/plugins/index.ts index d437da7..52c7275 100644 --- a/build/plugins/index.ts +++ b/build/plugins/index.ts @@ -6,20 +6,18 @@ import progress from 'vite-plugin-progress'; import { setupElegantRouter } from './router'; import { setupUnocss } from './unocss'; import { setupUnplugin } from './unplugin'; +import { setupHtmlPlugin } from './html'; -export function setupVitePlugins(viteEnv: Env.ImportMeta) { +export function setupVitePlugins(viteEnv: Env.ImportMeta, buildTime: string) { const plugins: PluginOption = [ - vue({ - script: { - defineModel: true - } - }), + vue(), vueJsx(), VueDevtools(), setupElegantRouter(), setupUnocss(viteEnv), ...setupUnplugin(viteEnv), - progress() + progress(), + setupHtmlPlugin(buildTime) ]; return plugins; diff --git a/build/plugins/router.ts b/build/plugins/router.ts index b0e993e..40a5ae5 100644 --- a/build/plugins/router.ts +++ b/build/plugins/router.ts @@ -1,6 +1,6 @@ import type { RouteMeta } from 'vue-router'; import ElegantVueRouter from '@elegant-router/vue/vite'; -import type { AutoRouteKey } from '@elegant-router/types'; +import type { RouteKey } from '@elegant-router/types'; export function setupElegantRouter() { return ElegantVueRouter({ @@ -8,8 +8,22 @@ export function setupElegantRouter() { base: 'src/layouts/base-layout/index.vue', blank: 'src/layouts/blank-layout/index.vue' }, + customRoutes: { + names: [ + 'exception_403', + 'exception_404', + 'exception_500', + 'document_project', + 'document_project-link', + 'document_vue', + 'document_vite', + 'document_unocss', + 'document_naive', + 'document_antd' + ] + }, routePathTransformer(routeName, routePath) { - const key = routeName as AutoRouteKey; + const key = routeName as RouteKey; if (key === 'login') { const modules: UnionKey.LoginModule[] = ['pwd-login', 'code-login', 'register', 'reset-pwd', 'bind-wechat']; @@ -22,19 +36,17 @@ export function setupElegantRouter() { return routePath; }, onRouteMetaGen(routeName) { - const key = routeName as AutoRouteKey; + const key = routeName as RouteKey; - const constantRoutes: AutoRouteKey[] = ['login', '403', '404', '500']; + const constantRoutes: RouteKey[] = ['login', '403', '404', '500']; const meta: Partial = { title: key, - i18nKey: `route.${key}` + i18nKey: `route.${key}` as App.I18n.I18nKey }; if (constantRoutes.includes(key)) { meta.constant = true; - } else { - meta.requiresAuth = true; } return meta; diff --git a/build/plugins/unocss.ts b/build/plugins/unocss.ts index a81a210..06b41d3 100644 --- a/build/plugins/unocss.ts +++ b/build/plugins/unocss.ts @@ -1,3 +1,4 @@ +import process from 'node:process'; import path from 'node:path'; import unocss from '@unocss/vite'; import presetIcons from '@unocss/preset-icons'; @@ -8,9 +9,7 @@ export function setupUnocss(viteEnv: Env.ImportMeta) { const localIconPath = path.join(process.cwd(), 'src/assets/svg-icon'); - /** - * the name of the local icon collection - */ + /** The name of the local icon collection */ const collectionName = VITE_ICON_LOCAL_PREFIX.replace(`${VITE_ICON_PREFIX}-`, ''); return unocss({ diff --git a/build/plugins/unplugin.ts b/build/plugins/unplugin.ts index 2bad6a2..50173c4 100644 --- a/build/plugins/unplugin.ts +++ b/build/plugins/unplugin.ts @@ -1,9 +1,10 @@ +import process from 'node:process'; import path from 'node:path'; import type { PluginOption } from 'vite'; import Icons from 'unplugin-icons/vite'; import IconsResolver from 'unplugin-icons/resolver'; import Components from 'unplugin-vue-components/vite'; -import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'; +// import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'; import { FileSystemIconLoader } from 'unplugin-icons/loaders'; import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'; @@ -12,9 +13,7 @@ export function setupUnplugin(viteEnv: Env.ImportMeta) { const localIconPath = path.join(process.cwd(), 'src/assets/svg-icon'); - /** - * the name of the local icon collection - */ + /** The name of the local icon collection */ const collectionName = VITE_ICON_LOCAL_PREFIX.replace(`${VITE_ICON_PREFIX}-`, ''); const plugins: PluginOption[] = [ @@ -32,7 +31,7 @@ export function setupUnplugin(viteEnv: Env.ImportMeta) { dts: 'src/typings/components.d.ts', types: [{ from: 'vue-router', names: ['RouterLink', 'RouterView'] }], resolvers: [ - ElementPlusResolver(), + // ElementPlusResolver(), // auto import Element Plus components。 full import to see /src/plugins/ui.ts IconsResolver({ customCollections: [collectionName], componentPrefix: VITE_ICON_PREFIX }) ] }), diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..00537e3 --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,24 @@ +import { defineConfig } from '@soybeanjs/eslint-config'; + +export default defineConfig( + { vue: true, unocss: true }, + { + rules: { + 'vue/multi-word-component-names': [ + 'warn', + { + ignores: ['index', 'App', 'Register', '[id]', '[url]'] + } + ], + 'vue/component-name-in-template-casing': [ + 'warn', + 'PascalCase', + { + registeredComponentsOnly: false, + ignores: ['/^icon-/'] + } + ], + 'unocss/order-attributify': 'off' + } + } +); diff --git a/index.html b/index.html index c2e3809..b04ac55 100644 --- a/index.html +++ b/index.html @@ -4,12 +4,11 @@ + %VITE_APP_TITLE% -
-
-
+
diff --git a/package.json b/package.json index 3c77713..9eabb3a 100644 --- a/package.json +++ b/package.json @@ -1,79 +1,130 @@ { "name": "@sa/elp", + "type": "module", "version": "1.0.0", - "description": "A fresh and elegant admin template, based on Vue3,Vite3,TypeScript,ElementPlus and UnoCSS.", + "description": "A fresh and elegant admin template, based on Vue3、Vite3、TypeScript、NaiveUI and UnoCSS. 一个基于Vue3、Vite3、TypeScript、NaiveUI and UnoCSS的清新优雅的中后台模版。", "author": { "name": "Soybean", "email": "soybeanjs@outlook.com", "url": "https://github.com/soybeanjs" }, + "license": "MIT", + "homepage": "https://github.com/soybeanjs/soybean-admin", + "repository": { + "url": "https://github.com/soybeanjs/soybean-admin.git" + }, + "bugs": { + "url": "https://github.com/soybeanjs/soybean-admin/issues" + }, + "keywords": [ + "Vue3 admin ", + "vue-admin-template", + "Vite5", + "TypeScript", + "element-plus", + "element-plus-admin", + "naive-ui", + "naive-ui-admin", + "ant-design-vue v4", + "UnoCSS" + ], + "engines": { + "node": ">=18.12.0", + "pnpm": ">=8.7.0" + }, "scripts": { - "dev": "vite", - "build": "run-s typecheck build-only", - "preview": "vite preview", - "build-only": "vite build", - "typecheck": "vue-tsc --noEmit --skipLibCheck", - "lint": "eslint . --fix", - "format": "sa prettier-write", - "commit": "sa git-commit", + "build": "vite build --mode prod", + "build:test": "vite build --mode test", "cleanup": "sa cleanup", - "update-pkg": "sa update-pkg", - "prepare": "simple-git-hooks" + "commit": "sa git-commit", + "commit:zh": "sa git-commit -l=zh-cn", + "dev": "vite --mode test", + "dev:prod": "vite --mode prod", + "gen-route": "sa gen-route", + "lint": "eslint . --fix", + "prepare": "simple-git-hooks", + "preview": "vite preview", + "release": "sa release", + "typecheck": "vue-tsc --noEmit --skipLibCheck", + "update-pkg": "sa update-pkg" }, "dependencies": { - "@iconify/vue": "4.1.1", - "@sa/color-palette": "workspace:*", + "@antv/data-set": "0.11.8", + "@antv/g2": "5.2.5", + "@better-scroll/core": "2.5.1", + "@iconify/vue": "4.1.2", + "@sa/axios": "workspace:*", + "@sa/color": "workspace:*", "@sa/hooks": "workspace:*", "@sa/materials": "workspace:*", "@sa/utils": "workspace:*", - "@vueuse/core": "10.5.0", - "ant-design-vue": "4.0.6", - "element-plus": "2.4.1", - "lodash-es": "4.17.21", + "@vueuse/core": "11.1.0", + "clipboard": "2.0.11", + "dayjs": "1.11.13", + "dhtmlx-gantt": "8.0.10", + "dompurify": "3.1.6", + "echarts": "5.5.1", + "element-plus": "^2.8.7", + "jsbarcode": "3.11.6", + "json5": "2.2.3", "nprogress": "0.2.0", - "pinia": "2.1.7", - "vue": "3.3.7", - "vue-i18n": "9.6.0", - "vue-router": "4.2.5" + "pinia": "2.2.4", + "pinyin-pro": "3.24.2", + "print-js": "1.6.0", + "swiper": "11.1.12", + "tailwind-merge": "2.5.3", + "typeit": "8.8.4", + "vditor": "3.10.5", + "vue": "3.5.11", + "vue-draggable-plus": "0.5.3", + "vue-i18n": "10.0.4", + "vue-pdf-embed": "2.1.0", + "vue-router": "4.4.5", + "wangeditor": "4.7.15", + "xgplayer": "3.0.20", + "xlsx": "0.18.5" }, "devDependencies": { - "@elegant-router/vue": "0.2.6", - "@iconify-json/heroicons": "1.1.13", - "@iconify-json/ic": "1.1.14", - "@iconify-json/icon-park-outline": "1.1.12", - "@iconify-json/line-md": "1.1.33", - "@iconify-json/logos": "1.1.37", - "@iconify-json/material-symbols": "1.1.60", - "@iconify-json/ph": "1.1.6", - "@iconify-json/tabler": "1.1.95", + "@amap/amap-jsapi-types": "0.0.15", + "@elegant-router/vue": "0.3.8", + "@iconify/json": "2.2.258", "@sa/scripts": "workspace:*", "@sa/uno-preset": "workspace:*", - "@types/lodash-es": "4.17.10", - "@types/node": "20.8.9", - "@types/nprogress": "0.2.2", - "@unocss/preset-icons": "0.57.1", - "@unocss/preset-uno": "0.57.1", - "@unocss/transformer-directives": "0.57.1", - "@unocss/transformer-variant-group": "0.57.1", - "@unocss/vite": "0.57.1", - "@vitejs/plugin-vue": "4.4.0", - "@vitejs/plugin-vue-jsx": "3.0.2", - "cross-env": "7.0.3", - "eslint-config-sa": "workspace:*", - "npm-run-all": "4.1.5", - "simple-git-hooks": "2.9.0", - "typescript": "5.2.2", - "unocss-preset-scrollbar": "0.3.0", - "unplugin-icons": "0.17.1", - "unplugin-vue-components": "0.25.2", - "vite": "4.5.0", + "@soybeanjs/eslint-config": "1.4.1", + "@types/bmapgl": "0.0.7", + "@types/dompurify": "3.0.5", + "@types/node": "22.7.5", + "@types/nprogress": "0.2.3", + "@unocss/eslint-config": "0.63.4", + "@unocss/preset-icons": "0.63.4", + "@unocss/preset-uno": "0.63.4", + "@unocss/transformer-directives": "0.63.4", + "@unocss/transformer-variant-group": "0.63.4", + "@unocss/vite": "0.63.4", + "@vitejs/plugin-vue": "5.1.4", + "@vitejs/plugin-vue-jsx": "4.0.1", + "eslint": "9.12.0", + "eslint-plugin-vue": "9.28.0", + "lint-staged": "15.2.10", + "sass": "1.79.4", + "simple-git-hooks": "2.11.1", + "tsx": "4.19.1", + "typescript": "5.6.3", + "unplugin-icons": "0.19.3", + "unplugin-vue-components": "0.27.4", + "vite": "5.4.8", "vite-plugin-progress": "0.0.7", "vite-plugin-svg-icons": "2.0.1", - "vite-plugin-vue-devtools": "1.0.0-rc.5", - "vue-tsc": "1.8.21" + "vite-plugin-vue-devtools": "7.4.6", + "vue-eslint-parser": "9.4.3", + "vue-tsc": "2.1.6" }, "simple-git-hooks": { "commit-msg": "pnpm sa git-commit-verify", - "pre-commit": "pnpm typecheck && pnpm sa lint-staged" - } + "pre-commit": "pnpm typecheck && pnpm lint-staged" + }, + "lint-staged": { + "*": "eslint --fix" + }, + "website": "https://admin.soybeanjs.cn" } diff --git a/packages/alova/package.json b/packages/alova/package.json new file mode 100644 index 0000000..a6d3fb1 --- /dev/null +++ b/packages/alova/package.json @@ -0,0 +1,17 @@ +{ + "name": "@sa/alova", + "version": "0.1.0", + "exports": { + ".": "./src/index.ts", + "./client": "./src/client.ts" + }, + "typesVersions": { + "*": { + "*": ["./src/*"] + } + }, + "dependencies": { + "@sa/utils": "workspace:*", + "alova": "3.0.20" + } +} diff --git a/packages/alova/src/client.ts b/packages/alova/src/client.ts new file mode 100644 index 0000000..0d76ebb --- /dev/null +++ b/packages/alova/src/client.ts @@ -0,0 +1 @@ +export * from 'alova/client'; diff --git a/packages/alova/src/constant.ts b/packages/alova/src/constant.ts new file mode 100644 index 0000000..be5c43c --- /dev/null +++ b/packages/alova/src/constant.ts @@ -0,0 +1,2 @@ +/** the backend error code key */ +export const BACKEND_ERROR_CODE = 'BACKEND_ERROR'; diff --git a/packages/alova/src/index.ts b/packages/alova/src/index.ts new file mode 100644 index 0000000..4264253 --- /dev/null +++ b/packages/alova/src/index.ts @@ -0,0 +1,77 @@ +import { createAlova } from 'alova'; +import type { AlovaDefaultCacheAdapter, AlovaGenerics, AlovaGlobalCacheAdapter, AlovaRequestAdapter } from 'alova'; +import VueHook from 'alova/vue'; +import type { VueHookType } from 'alova/vue'; +import adapterFetch from 'alova/fetch'; +import { createServerTokenAuthentication } from 'alova/client'; +import type { FetchRequestInit } from 'alova/fetch'; +import { BACKEND_ERROR_CODE } from './constant'; +import type { CustomAlovaConfig, RequestOptions } from './type'; + +export const createAlovaRequest = < + RequestConfig = FetchRequestInit, + ResponseType = Response, + ResponseHeader = Headers, + L1Cache extends AlovaGlobalCacheAdapter = AlovaDefaultCacheAdapter, + L2Cache extends AlovaGlobalCacheAdapter = AlovaDefaultCacheAdapter +>( + customConfig: CustomAlovaConfig< + AlovaGenerics + >, + options: RequestOptions> +) => { + const { tokenRefresher } = options; + const { onAuthRequired, onResponseRefreshToken } = createServerTokenAuthentication< + VueHookType, + AlovaRequestAdapter + >({ + refreshTokenOnSuccess: { + isExpired: (response, method) => tokenRefresher?.isExpired(response, method) || false, + handler: async (response, method) => tokenRefresher?.handler(response, method) + }, + refreshTokenOnError: { + isExpired: (response, method) => tokenRefresher?.isExpired(response, method) || false, + handler: async (response, method) => tokenRefresher?.handler(response, method) + } + }); + + const instance = createAlova({ + ...customConfig, + timeout: customConfig.timeout ?? 10 * 1000, + requestAdapter: (customConfig.requestAdapter as any) ?? adapterFetch(), + statesHook: VueHook, + beforeRequest: onAuthRequired(options.onRequest as any), + responded: onResponseRefreshToken({ + onSuccess: async (response, method) => { + // check if http status is success + let error: any = null; + let transformedData: any = null; + try { + if (await options.isBackendSuccess(response)) { + transformedData = await options.transformBackendResponse(response); + } else { + error = new Error('the backend request error'); + error.code = BACKEND_ERROR_CODE; + } + } catch (err) { + error = err; + } + + if (error) { + await options.onError?.(error, response, method); + throw error; + } + + return transformedData; + }, + onComplete: options.onComplete, + onError: (error, method) => options.onError?.(error, null, method) + }) + }); + + return instance; +}; + +export { BACKEND_ERROR_CODE }; +export type * from './type'; +export type * from 'alova'; diff --git a/packages/alova/src/type.ts b/packages/alova/src/type.ts new file mode 100644 index 0000000..27b84b2 --- /dev/null +++ b/packages/alova/src/type.ts @@ -0,0 +1,52 @@ +import type { AlovaGenerics, AlovaOptions, AlovaRequestAdapter, Method, ResponseCompleteHandler } from 'alova'; + +export type CustomAlovaConfig = Omit< + AlovaOptions, + 'statesHook' | 'beforeRequest' | 'responded' | 'requestAdapter' +> & { + /** request adapter. all request of alova will be sent by it. */ + requestAdapter?: AlovaRequestAdapter; +}; + +export interface RequestOptions { + /** + * The hook before request + * + * For example: You can add header token in this hook + * + * @param method alova Method Instance + */ + onRequest?: AlovaOptions['beforeRequest']; + /** + * The hook to check backend response is success or not + * + * @param response alova response + */ + isBackendSuccess: (response: AG['Response']) => Promise; + + /** The config to refresh token */ + tokenRefresher?: { + /** detect the token is expired */ + isExpired(response: AG['Response'], Method: Method): Promise | boolean; + /** refresh token handler */ + handler(response: AG['Response'], Method: Method): Promise; + }; + + /** The hook after backend request complete */ + onComplete?: ResponseCompleteHandler; + + /** + * The hook to handle error + * + * For example: You can show error message in this hook + * + * @param error + */ + onError?: (error: any, response: AG['Response'] | null, methodInstance: Method) => any | Promise; + /** + * transform backend response when the responseType is json + * + * @param response alova response + */ + transformBackendResponse: (response: AG['Response']) => any; +} diff --git a/packages/request/tsconfig.json b/packages/alova/tsconfig.json similarity index 86% rename from packages/request/tsconfig.json rename to packages/alova/tsconfig.json index d9203c3..5823ed5 100644 --- a/packages/request/tsconfig.json +++ b/packages/alova/tsconfig.json @@ -1,19 +1,19 @@ { "compilerOptions": { + "target": "ESNext", + "jsx": "preserve", + "lib": ["DOM", "ESNext"], "baseUrl": ".", "module": "ESNext", - "target": "ESNext", - "lib": ["DOM", "ESNext"], - "strict": true, - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "jsx": "preserve", "moduleResolution": "node", "resolveJsonModule": true, - "noUnusedLocals": true, + "types": ["node"], + "strict": true, "strictNullChecks": true, - "forceConsistentCasingInFileNames": true, - "types": ["node"] + "noUnusedLocals": true, + "allowSyntheticDefaultImports": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true }, "include": ["src/**/*"], "exclude": ["node_modules", "dist"] diff --git a/packages/axios/package.json b/packages/axios/package.json new file mode 100644 index 0000000..dc87d28 --- /dev/null +++ b/packages/axios/package.json @@ -0,0 +1,21 @@ +{ + "name": "@sa/axios", + "version": "1.3.7", + "exports": { + ".": "./src/index.ts" + }, + "typesVersions": { + "*": { + "*": ["./src/*"] + } + }, + "dependencies": { + "@sa/utils": "workspace:*", + "axios": "1.7.7", + "axios-retry": "4.5.0", + "qs": "6.13.0" + }, + "devDependencies": { + "@types/qs": "6.9.16" + } +} diff --git a/packages/axios/src/constant.ts b/packages/axios/src/constant.ts new file mode 100644 index 0000000..d6c5a33 --- /dev/null +++ b/packages/axios/src/constant.ts @@ -0,0 +1,5 @@ +/** request id key */ +export const REQUEST_ID_KEY = 'X-Request-Id'; + +/** the backend error code key */ +export const BACKEND_ERROR_CODE = 'BACKEND_ERROR'; diff --git a/packages/axios/src/index.ts b/packages/axios/src/index.ts new file mode 100644 index 0000000..c29d9d2 --- /dev/null +++ b/packages/axios/src/index.ts @@ -0,0 +1,183 @@ +import axios, { AxiosError } from 'axios'; +import type { AxiosResponse, CreateAxiosDefaults, InternalAxiosRequestConfig } from 'axios'; +import axiosRetry from 'axios-retry'; +import { nanoid } from '@sa/utils'; +import { createAxiosConfig, createDefaultOptions, createRetryOptions } from './options'; +import { BACKEND_ERROR_CODE, REQUEST_ID_KEY } from './constant'; +import type { + CustomAxiosRequestConfig, + FlatRequestInstance, + MappedType, + RequestInstance, + RequestOption, + ResponseType +} from './type'; + +function createCommonRequest( + axiosConfig?: CreateAxiosDefaults, + options?: Partial> +) { + const opts = createDefaultOptions(options); + + const axiosConf = createAxiosConfig(axiosConfig); + const instance = axios.create(axiosConf); + + const abortControllerMap = new Map(); + + // config axios retry + const retryOptions = createRetryOptions(axiosConf); + axiosRetry(instance, retryOptions); + + instance.interceptors.request.use(conf => { + const config: InternalAxiosRequestConfig = { ...conf }; + + // set request id + const requestId = nanoid(); + config.headers.set(REQUEST_ID_KEY, requestId); + + // config abort controller + if (!config.signal) { + const abortController = new AbortController(); + config.signal = abortController.signal; + abortControllerMap.set(requestId, abortController); + } + + // handle config by hook + const handledConfig = opts.onRequest?.(config) || config; + + return handledConfig; + }); + + instance.interceptors.response.use( + async response => { + const responseType: ResponseType = (response.config?.responseType as ResponseType) || 'json'; + + if (responseType !== 'json' || opts.isBackendSuccess(response)) { + return Promise.resolve(response); + } + + const fail = await opts.onBackendFail(response, instance); + if (fail) { + return fail; + } + + const backendError = new AxiosError( + 'the backend request error', + BACKEND_ERROR_CODE, + response.config, + response.request, + response + ); + + await opts.onError(backendError); + + return Promise.reject(backendError); + }, + async (error: AxiosError) => { + await opts.onError(error); + + return Promise.reject(error); + } + ); + + function cancelRequest(requestId: string) { + const abortController = abortControllerMap.get(requestId); + if (abortController) { + abortController.abort(); + abortControllerMap.delete(requestId); + } + } + + function cancelAllRequest() { + abortControllerMap.forEach(abortController => { + abortController.abort(); + }); + abortControllerMap.clear(); + } + + return { + instance, + opts, + cancelRequest, + cancelAllRequest + }; +} + +/** + * create a request instance + * + * @param axiosConfig axios config + * @param options request options + */ +export function createRequest>( + axiosConfig?: CreateAxiosDefaults, + options?: Partial> +) { + const { instance, opts, cancelRequest, cancelAllRequest } = createCommonRequest(axiosConfig, options); + + const request: RequestInstance = async function request( + config: CustomAxiosRequestConfig + ) { + const response: AxiosResponse = await instance(config); + + const responseType = response.config?.responseType || 'json'; + + if (responseType === 'json') { + return opts.transformBackendResponse(response); + } + + return response.data as MappedType; + } as RequestInstance; + + request.cancelRequest = cancelRequest; + request.cancelAllRequest = cancelAllRequest; + request.state = {} as State; + + return request; +} + +/** + * create a flat request instance + * + * The response data is a flat object: { data: any, error: AxiosError } + * + * @param axiosConfig axios config + * @param options request options + */ +export function createFlatRequest>( + axiosConfig?: CreateAxiosDefaults, + options?: Partial> +) { + const { instance, opts, cancelRequest, cancelAllRequest } = createCommonRequest(axiosConfig, options); + + const flatRequest: FlatRequestInstance = async function flatRequest< + T = any, + R extends ResponseType = 'json' + >(config: CustomAxiosRequestConfig) { + try { + const response: AxiosResponse = await instance(config); + + const responseType = response.config?.responseType || 'json'; + + if (responseType === 'json') { + const data = opts.transformBackendResponse(response); + + return { data, error: null, response }; + } + + return { data: response.data as MappedType, error: null }; + } catch (error) { + return { data: null, error, response: (error as AxiosError).response }; + } + } as FlatRequestInstance; + + flatRequest.cancelRequest = cancelRequest; + flatRequest.cancelAllRequest = cancelAllRequest; + flatRequest.state = {} as State; + + return flatRequest; +} + +export { BACKEND_ERROR_CODE, REQUEST_ID_KEY }; +export type * from './type'; +export type { CreateAxiosDefaults, AxiosError }; diff --git a/packages/axios/src/options.ts b/packages/axios/src/options.ts new file mode 100644 index 0000000..8b2b116 --- /dev/null +++ b/packages/axios/src/options.ts @@ -0,0 +1,48 @@ +import type { CreateAxiosDefaults } from 'axios'; +import type { IAxiosRetryConfig } from 'axios-retry'; +import { stringify } from 'qs'; +import { isHttpSuccess } from './shared'; +import type { RequestOption } from './type'; + +export function createDefaultOptions(options?: Partial>) { + const opts: RequestOption = { + onRequest: async config => config, + isBackendSuccess: _response => true, + onBackendFail: async () => {}, + transformBackendResponse: async response => response.data, + onError: async () => {} + }; + + Object.assign(opts, options); + + return opts; +} + +export function createRetryOptions(config?: Partial) { + const retryConfig: IAxiosRetryConfig = { + retries: 0 + }; + + Object.assign(retryConfig, config); + + return retryConfig; +} + +export function createAxiosConfig(config?: Partial) { + const TEN_SECONDS = 10 * 1000; + + const axiosConfig: CreateAxiosDefaults = { + timeout: TEN_SECONDS, + headers: { + 'Content-Type': 'application/json' + }, + validateStatus: isHttpSuccess, + paramsSerializer: params => { + return stringify(params); + } + }; + + Object.assign(axiosConfig, config); + + return axiosConfig; +} diff --git a/packages/axios/src/shared.ts b/packages/axios/src/shared.ts new file mode 100644 index 0000000..7afd32b --- /dev/null +++ b/packages/axios/src/shared.ts @@ -0,0 +1,28 @@ +import type { AxiosHeaderValue, AxiosResponse, InternalAxiosRequestConfig } from 'axios'; + +export function getContentType(config: InternalAxiosRequestConfig) { + const contentType: AxiosHeaderValue = config.headers?.['Content-Type'] || 'application/json'; + + return contentType; +} + +/** + * check if http status is success + * + * @param status + */ +export function isHttpSuccess(status: number) { + const isSuccessCode = status >= 200 && status < 300; + return isSuccessCode || status === 304; +} + +/** + * is response json + * + * @param response axios response + */ +export function isResponseJson(response: AxiosResponse) { + const { responseType } = response.config; + + return responseType === 'json' || responseType === undefined; +} diff --git a/packages/axios/src/type.ts b/packages/axios/src/type.ts new file mode 100644 index 0000000..644847f --- /dev/null +++ b/packages/axios/src/type.ts @@ -0,0 +1,115 @@ +import type { AxiosError, AxiosInstance, AxiosRequestConfig, AxiosResponse, InternalAxiosRequestConfig } from 'axios'; + +export type ContentType = + | 'text/html' + | 'text/plain' + | 'multipart/form-data' + | 'application/json' + | 'application/x-www-form-urlencoded' + | 'application/octet-stream'; + +export interface RequestOption { + /** + * The hook before request + * + * For example: You can add header token in this hook + * + * @param config Axios config + */ + onRequest: (config: InternalAxiosRequestConfig) => InternalAxiosRequestConfig | Promise; + /** + * The hook to check backend response is success or not + * + * @param response Axios response + */ + isBackendSuccess: (response: AxiosResponse) => boolean; + /** + * The hook after backend request fail + * + * For example: You can handle the expired token in this hook + * + * @param response Axios response + * @param instance Axios instance + */ + onBackendFail: ( + response: AxiosResponse, + instance: AxiosInstance + ) => Promise | Promise; + /** + * transform backend response when the responseType is json + * + * @param response Axios response + */ + transformBackendResponse(response: AxiosResponse): any | Promise; + /** + * The hook to handle error + * + * For example: You can show error message in this hook + * + * @param error + */ + onError: (error: AxiosError) => void | Promise; +} + +interface ResponseMap { + blob: Blob; + text: string; + arrayBuffer: ArrayBuffer; + stream: ReadableStream; + document: Document; +} +export type ResponseType = keyof ResponseMap | 'json'; + +export type MappedType = R extends keyof ResponseMap + ? ResponseMap[R] + : JsonType; + +export type CustomAxiosRequestConfig = Omit & { + responseType?: R; +}; + +export interface RequestInstanceCommon { + /** + * cancel the request by request id + * + * if the request provide abort controller sign from config, it will not collect in the abort controller map + * + * @param requestId + */ + cancelRequest: (requestId: string) => void; + /** + * cancel all request + * + * if the request provide abort controller sign from config, it will not collect in the abort controller map + */ + cancelAllRequest: () => void; + /** you can set custom state in the request instance */ + state: T; +} + +/** The request instance */ +export interface RequestInstance> extends RequestInstanceCommon { + (config: CustomAxiosRequestConfig): Promise>; +} + +export type FlatResponseSuccessData = { + data: T; + error: null; + response: AxiosResponse; +}; + +export type FlatResponseFailData = { + data: null; + error: AxiosError; + response: AxiosResponse; +}; + +export type FlatResponseData = + | FlatResponseSuccessData + | FlatResponseFailData; + +export interface FlatRequestInstance, ResponseData = any> extends RequestInstanceCommon { + ( + config: CustomAxiosRequestConfig + ): Promise, ResponseData>>; +} diff --git a/packages/axios/tsconfig.json b/packages/axios/tsconfig.json new file mode 100644 index 0000000..5823ed5 --- /dev/null +++ b/packages/axios/tsconfig.json @@ -0,0 +1,20 @@ +{ + "compilerOptions": { + "target": "ESNext", + "jsx": "preserve", + "lib": ["DOM", "ESNext"], + "baseUrl": ".", + "module": "ESNext", + "moduleResolution": "node", + "resolveJsonModule": true, + "types": ["node"], + "strict": true, + "strictNullChecks": true, + "noUnusedLocals": true, + "allowSyntheticDefaultImports": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist"] +} diff --git a/packages/color-palette/src/color.ts b/packages/color-palette/src/color.ts deleted file mode 100644 index 797148d..0000000 --- a/packages/color-palette/src/color.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { colord, extend } from 'colord'; -import type { HslColor } from 'colord'; -import labPlugin from 'colord/plugins/lab'; - -extend([labPlugin]); - -export function isValidColor(color: string) { - return colord(color).isValid(); -} - -export function getHex(color: string) { - return colord(color).toHex(); -} - -export function getRgb(color: string) { - return colord(color).toRgb(); -} - -export function getHsl(color: string) { - return colord(color).toHsl(); -} - -export function getDeltaE(color1: string, color2: string) { - return colord(color1).delta(color2); -} - -export function transformHslToHex(color: HslColor) { - return colord(color).toHex(); -} diff --git a/packages/color-palette/src/index.ts b/packages/color-palette/src/index.ts deleted file mode 100644 index 42568ca..0000000 --- a/packages/color-palette/src/index.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { getColorPaletteFamily } from './palette'; -import { getColorName } from './name'; -import type { ColorPalette, ColorPaletteNumber, ColorPaletteItem, ColorPaletteFamily } from './type'; -import defaultPalettes from './json/palette.json'; - -/** - * get color palette by provided color and color name - * @param color the provided color - * @param colorName color name - */ -export function getColorPalette(color: string, colorName: string) { - const colorPaletteFamily = getColorPaletteFamily(color, colorName); - - const colorMap = new Map(); - - colorPaletteFamily.palettes.forEach(palette => { - colorMap.set(palette.number, palette); - }); - - const mainColor = colorMap.get(500) as ColorPaletteItem; - const matchColor = colorPaletteFamily.palettes.find(palette => palette.hexcode === color) as ColorPaletteItem; - - const colorPalette: ColorPalette = { - ...colorPaletteFamily, - colorMap, - main: mainColor, - match: matchColor - }; - - return colorPalette; -} - -export default getColorPalette; - -/** - * the builtin color palettes - */ -const colorPalettes = defaultPalettes as ColorPaletteFamily[]; - -export { getColorName, colorPalettes }; - -export type { ColorPalette, ColorPaletteNumber, ColorPaletteItem, ColorPaletteFamily }; diff --git a/packages/color-palette/src/json/color-name.json b/packages/color-palette/src/json/color-name.json deleted file mode 100644 index 82b2786..0000000 --- a/packages/color-palette/src/json/color-name.json +++ /dev/null @@ -1,1568 +0,0 @@ -[ - ["000000", "Black"], - ["000080", "Navy Blue"], - ["0000C8", "Dark Blue"], - ["0000FF", "Blue"], - ["000741", "Stratos"], - ["001B1C", "Swamp"], - ["002387", "Resolution Blue"], - ["002900", "Deep Fir"], - ["002E20", "Burnham"], - ["002FA7", "International Klein Blue"], - ["003153", "Prussian Blue"], - ["003366", "Midnight Blue"], - ["003399", "Smalt"], - ["003532", "Deep Teal"], - ["003E40", "Cyprus"], - ["004620", "Kaitoke Green"], - ["0047AB", "Cobalt"], - ["004816", "Crusoe"], - ["004950", "Sherpa Blue"], - ["0056A7", "Endeavour"], - ["00581A", "Camarone"], - ["0066CC", "Science Blue"], - ["0066FF", "Blue Ribbon"], - ["00755E", "Tropical Rain Forest"], - ["0076A3", "Allports"], - ["007BA7", "Deep Cerulean"], - ["007EC7", "Lochmara"], - ["007FFF", "Azure Radiance"], - ["008080", "Teal"], - ["0095B6", "Bondi Blue"], - ["009DC4", "Pacific Blue"], - ["00A693", "Persian Green"], - ["00A86B", "Jade"], - ["00CC99", "Caribbean Green"], - ["00CCCC", "Robin's Egg Blue"], - ["00FF00", "Green"], - ["00FF7F", "Spring Green"], - ["00FFFF", "Cyan / Aqua"], - ["010D1A", "Blue Charcoal"], - ["011635", "Midnight"], - ["011D13", "Holly"], - ["012731", "Daintree"], - ["01361C", "Cardin Green"], - ["01371A", "County Green"], - ["013E62", "Astronaut Blue"], - ["013F6A", "Regal Blue"], - ["014B43", "Aqua Deep"], - ["015E85", "Orient"], - ["016162", "Blue Stone"], - ["016D39", "Fun Green"], - ["01796F", "Pine Green"], - ["017987", "Blue Lagoon"], - ["01826B", "Deep Sea"], - ["01A368", "Green Haze"], - ["022D15", "English Holly"], - ["02402C", "Sherwood Green"], - ["02478E", "Congress Blue"], - ["024E46", "Evening Sea"], - ["026395", "Bahama Blue"], - ["02866F", "Observatory"], - ["02A4D3", "Cerulean"], - ["03163C", "Tangaroa"], - ["032B52", "Green Vogue"], - ["036A6E", "Mosque"], - ["041004", "Midnight Moss"], - ["041322", "Black Pearl"], - ["042E4C", "Blue Whale"], - ["044022", "Zuccini"], - ["044259", "Teal Blue"], - ["051040", "Deep Cove"], - ["051657", "Gulf Blue"], - ["055989", "Venice Blue"], - ["056F57", "Watercourse"], - ["062A78", "Catalina Blue"], - ["063537", "Tiber"], - ["069B81", "Gossamer"], - ["06A189", "Niagara"], - ["073A50", "Tarawera"], - ["080110", "Jaguar"], - ["081910", "Black Bean"], - ["082567", "Deep Sapphire"], - ["088370", "Elf Green"], - ["08E8DE", "Bright Turquoise"], - ["092256", "Downriver"], - ["09230F", "Palm Green"], - ["09255D", "Madison"], - ["093624", "Bottle Green"], - ["095859", "Deep Sea Green"], - ["097F4B", "Salem"], - ["0A001C", "Black Russian"], - ["0A480D", "Dark Fern"], - ["0A6906", "Japanese Laurel"], - ["0A6F75", "Atoll"], - ["0B0B0B", "Cod Gray"], - ["0B0F08", "Marshland"], - ["0B1107", "Gordons Green"], - ["0B1304", "Black Forest"], - ["0B6207", "San Felix"], - ["0BDA51", "Malachite"], - ["0C0B1D", "Ebony"], - ["0C0D0F", "Woodsmoke"], - ["0C1911", "Racing Green"], - ["0C7A79", "Surfie Green"], - ["0C8990", "Blue Chill"], - ["0D0332", "Black Rock"], - ["0D1117", "Bunker"], - ["0D1C19", "Aztec"], - ["0D2E1C", "Bush"], - ["0E0E18", "Cinder"], - ["0E2A30", "Firefly"], - ["0F2D9E", "Torea Bay"], - ["10121D", "Vulcan"], - ["101405", "Green Waterloo"], - ["105852", "Eden"], - ["110C6C", "Arapawa"], - ["120A8F", "Ultramarine"], - ["123447", "Elephant"], - ["126B40", "Jewel"], - ["130000", "Diesel"], - ["130A06", "Asphalt"], - ["13264D", "Blue Zodiac"], - ["134F19", "Parsley"], - ["140600", "Nero"], - ["1450AA", "Tory Blue"], - ["151F4C", "Bunting"], - ["1560BD", "Denim"], - ["15736B", "Genoa"], - ["161928", "Mirage"], - ["161D10", "Hunter Green"], - ["162A40", "Big Stone"], - ["163222", "Celtic"], - ["16322C", "Timber Green"], - ["163531", "Gable Green"], - ["171F04", "Pine Tree"], - ["175579", "Chathams Blue"], - ["182D09", "Deep Forest Green"], - ["18587A", "Blumine"], - ["19330E", "Palm Leaf"], - ["193751", "Nile Blue"], - ["1959A8", "Fun Blue"], - ["1A1A68", "Lucky Point"], - ["1AB385", "Mountain Meadow"], - ["1B0245", "Tolopea"], - ["1B1035", "Haiti"], - ["1B127B", "Deep Koamaru"], - ["1B1404", "Acadia"], - ["1B2F11", "Seaweed"], - ["1B3162", "Biscay"], - ["1B659D", "Matisse"], - ["1C1208", "Crowshead"], - ["1C1E13", "Rangoon Green"], - ["1C39BB", "Persian Blue"], - ["1C402E", "Everglade"], - ["1C7C7D", "Elm"], - ["1D6142", "Green Pea"], - ["1E0F04", "Creole"], - ["1E1609", "Karaka"], - ["1E1708", "El Paso"], - ["1E385B", "Cello"], - ["1E433C", "Te Papa Green"], - ["1E90FF", "Dodger Blue"], - ["1E9AB0", "Eastern Blue"], - ["1F120F", "Night Rider"], - ["1FC2C2", "Java"], - ["20208D", "Jacksons Purple"], - ["202E54", "Cloud Burst"], - ["204852", "Blue Dianne"], - ["211A0E", "Eternity"], - ["220878", "Deep Blue"], - ["228B22", "Forest Green"], - ["233418", "Mallard"], - ["240A40", "Violet"], - ["240C02", "Kilamanjaro"], - ["242A1D", "Log Cabin"], - ["242E16", "Black Olive"], - ["24500F", "Green House"], - ["251607", "Graphite"], - ["251706", "Cannon Black"], - ["251F4F", "Port Gore"], - ["25272C", "Shark"], - ["25311C", "Green Kelp"], - ["2596D1", "Curious Blue"], - ["260368", "Paua"], - ["26056A", "Paris M"], - ["261105", "Wood Bark"], - ["261414", "Gondola"], - ["262335", "Steel Gray"], - ["26283B", "Ebony Clay"], - ["273A81", "Bay of Many"], - ["27504B", "Plantation"], - ["278A5B", "Eucalyptus"], - ["281E15", "Oil"], - ["283A77", "Astronaut"], - ["286ACD", "Mariner"], - ["290C5E", "Violent Violet"], - ["292130", "Bastille"], - ["292319", "Zeus"], - ["292937", "Charade"], - ["297B9A", "Jelly Bean"], - ["29AB87", "Jungle Green"], - ["2A0359", "Cherry Pie"], - ["2A140E", "Coffee Bean"], - ["2A2630", "Baltic Sea"], - ["2A380B", "Turtle Green"], - ["2A52BE", "Cerulean Blue"], - ["2B0202", "Sepia Black"], - ["2B194F", "Valhalla"], - ["2B3228", "Heavy Metal"], - ["2C0E8C", "Blue Gem"], - ["2C1632", "Revolver"], - ["2C2133", "Bleached Cedar"], - ["2C8C84", "Lochinvar"], - ["2D2510", "Mikado"], - ["2D383A", "Outer Space"], - ["2D569B", "St Tropaz"], - ["2E0329", "Jacaranda"], - ["2E1905", "Jacko Bean"], - ["2E3222", "Rangitoto"], - ["2E3F62", "Rhino"], - ["2E8B57", "Sea Green"], - ["2EBFD4", "Scooter"], - ["2F270E", "Onion"], - ["2F3CB3", "Governor Bay"], - ["2F519E", "Sapphire"], - ["2F5A57", "Spectra"], - ["2F6168", "Casal"], - ["300529", "Melanzane"], - ["301F1E", "Cocoa Brown"], - ["302A0F", "Woodrush"], - ["304B6A", "San Juan"], - ["30D5C8", "Turquoise"], - ["311C17", "Eclipse"], - ["314459", "Pickled Bluewood"], - ["315BA1", "Azure"], - ["31728D", "Calypso"], - ["317D82", "Paradiso"], - ["32127A", "Persian Indigo"], - ["32293A", "Blackcurrant"], - ["323232", "Mine Shaft"], - ["325D52", "Stromboli"], - ["327C14", "Bilbao"], - ["327DA0", "Astral"], - ["33036B", "Christalle"], - ["33292F", "Thunder"], - ["33CC99", "Shamrock"], - ["341515", "Tamarind"], - ["350036", "Mardi Gras"], - ["350E42", "Valentino"], - ["350E57", "Jagger"], - ["353542", "Tuna"], - ["354E8C", "Chambray"], - ["363050", "Martinique"], - ["363534", "Tuatara"], - ["363C0D", "Waiouru"], - ["36747D", "Ming"], - ["368716", "La Palma"], - ["370202", "Chocolate"], - ["371D09", "Clinker"], - ["37290E", "Brown Tumbleweed"], - ["373021", "Birch"], - ["377475", "Oracle"], - ["380474", "Blue Diamond"], - ["381A51", "Grape"], - ["383533", "Dune"], - ["384555", "Oxford Blue"], - ["384910", "Clover"], - ["394851", "Limed Spruce"], - ["396413", "Dell"], - ["3A0020", "Toledo"], - ["3A2010", "Sambuca"], - ["3A2A6A", "Jacarta"], - ["3A686C", "William"], - ["3A6A47", "Killarney"], - ["3AB09E", "Keppel"], - ["3B000B", "Temptress"], - ["3B0910", "Aubergine"], - ["3B1F1F", "Jon"], - ["3B2820", "Treehouse"], - ["3B7A57", "Amazon"], - ["3B91B4", "Boston Blue"], - ["3C0878", "Windsor"], - ["3C1206", "Rebel"], - ["3C1F76", "Meteorite"], - ["3C2005", "Dark Ebony"], - ["3C3910", "Camouflage"], - ["3C4151", "Bright Gray"], - ["3C4443", "Cape Cod"], - ["3C493A", "Lunar Green"], - ["3D0C02", "Bean "], - ["3D2B1F", "Bistre"], - ["3D7D52", "Goblin"], - ["3E0480", "Kingfisher Daisy"], - ["3E1C14", "Cedar"], - ["3E2B23", "English Walnut"], - ["3E2C1C", "Black Marlin"], - ["3E3A44", "Ship Gray"], - ["3EABBF", "Pelorous"], - ["3F2109", "Bronze"], - ["3F2500", "Cola"], - ["3F3002", "Madras"], - ["3F307F", "Minsk"], - ["3F4C3A", "Cabbage Pont"], - ["3F583B", "Tom Thumb"], - ["3F5D53", "Mineral Green"], - ["3FC1AA", "Puerto Rico"], - ["3FFF00", "Harlequin"], - ["401801", "Brown Pod"], - ["40291D", "Cork"], - ["403B38", "Masala"], - ["403D19", "Thatch Green"], - ["405169", "Fiord"], - ["40826D", "Viridian"], - ["40A860", "Chateau Green"], - ["410056", "Ripe Plum"], - ["411F10", "Paco"], - ["412010", "Deep Oak"], - ["413C37", "Merlin"], - ["414257", "Gun Powder"], - ["414C7D", "East Bay"], - ["4169E1", "Royal Blue"], - ["41AA78", "Ocean Green"], - ["420303", "Burnt Maroon"], - ["423921", "Lisbon Brown"], - ["427977", "Faded Jade"], - ["431560", "Scarlet Gum"], - ["433120", "Iroko"], - ["433E37", "Armadillo"], - ["434C59", "River Bed"], - ["436A0D", "Green Leaf"], - ["44012D", "Barossa"], - ["441D00", "Morocco Brown"], - ["444954", "Mako"], - ["454936", "Kelp"], - ["456CAC", "San Marino"], - ["45B1E8", "Picton Blue"], - ["460B41", "Loulou"], - ["462425", "Crater Brown"], - ["465945", "Gray Asparagus"], - ["4682B4", "Steel Blue"], - ["480404", "Rustic Red"], - ["480607", "Bulgarian Rose"], - ["480656", "Clairvoyant"], - ["481C1C", "Cocoa Bean"], - ["483131", "Woody Brown"], - ["483C32", "Taupe"], - ["49170C", "Van Cleef"], - ["492615", "Brown Derby"], - ["49371B", "Metallic Bronze"], - ["495400", "Verdun Green"], - ["496679", "Blue Bayoux"], - ["497183", "Bismark"], - ["4A2A04", "Bracken"], - ["4A3004", "Deep Bronze"], - ["4A3C30", "Mondo"], - ["4A4244", "Tundora"], - ["4A444B", "Gravel"], - ["4A4E5A", "Trout"], - ["4B0082", "Pigment Indigo"], - ["4B5D52", "Nandor"], - ["4C3024", "Saddle"], - ["4C4F56", "Abbey"], - ["4D0135", "Blackberry"], - ["4D0A18", "Cab Sav"], - ["4D1E01", "Indian Tan"], - ["4D282D", "Cowboy"], - ["4D282E", "Livid Brown"], - ["4D3833", "Rock"], - ["4D3D14", "Punga"], - ["4D400F", "Bronzetone"], - ["4D5328", "Woodland"], - ["4E0606", "Mahogany"], - ["4E2A5A", "Bossanova"], - ["4E3B41", "Matterhorn"], - ["4E420C", "Bronze Olive"], - ["4E4562", "Mulled Wine"], - ["4E6649", "Axolotl"], - ["4E7F9E", "Wedgewood"], - ["4EABD1", "Shakespeare"], - ["4F1C70", "Honey Flower"], - ["4F2398", "Daisy Bush"], - ["4F69C6", "Indigo"], - ["4F7942", "Fern Green"], - ["4F9D5D", "Fruit Salad"], - ["4FA83D", "Apple"], - ["504351", "Mortar"], - ["507096", "Kashmir Blue"], - ["507672", "Cutty Sark"], - ["50C878", "Emerald"], - ["514649", "Emperor"], - ["516E3D", "Chalet Green"], - ["517C66", "Como"], - ["51808F", "Smalt Blue"], - ["52001F", "Castro"], - ["520C17", "Maroon Oak"], - ["523C94", "Gigas"], - ["533455", "Voodoo"], - ["534491", "Victoria"], - ["53824B", "Hippie Green"], - ["541012", "Heath"], - ["544333", "Judge Gray"], - ["54534D", "Fuscous Gray"], - ["549019", "Vida Loca"], - ["55280C", "Cioccolato"], - ["555B10", "Saratoga"], - ["556D56", "Finlandia"], - ["5590D9", "Havelock Blue"], - ["56B4BE", "Fountain Blue"], - ["578363", "Spring Leaves"], - ["583401", "Saddle Brown"], - ["585562", "Scarpa Flow"], - ["587156", "Cactus"], - ["589AAF", "Hippie Blue"], - ["591D35", "Wine Berry"], - ["592804", "Brown Bramble"], - ["593737", "Congo Brown"], - ["594433", "Millbrook"], - ["5A6E9C", "Waikawa Gray"], - ["5A87A0", "Horizon"], - ["5B3013", "Jambalaya"], - ["5C0120", "Bordeaux"], - ["5C0536", "Mulberry Wood"], - ["5C2E01", "Carnaby Tan"], - ["5C5D75", "Comet"], - ["5D1E0F", "Redwood"], - ["5D4C51", "Don Juan"], - ["5D5C58", "Chicago"], - ["5D5E37", "Verdigris"], - ["5D7747", "Dingley"], - ["5DA19F", "Breaker Bay"], - ["5E483E", "Kabul"], - ["5E5D3B", "Hemlock"], - ["5F3D26", "Irish Coffee"], - ["5F5F6E", "Mid Gray"], - ["5F6672", "Shuttle Gray"], - ["5FA777", "Aqua Forest"], - ["5FB3AC", "Tradewind"], - ["604913", "Horses Neck"], - ["605B73", "Smoky"], - ["606E68", "Corduroy"], - ["6093D1", "Danube"], - ["612718", "Espresso"], - ["614051", "Eggplant"], - ["615D30", "Costa Del Sol"], - ["61845F", "Glade Green"], - ["622F30", "Buccaneer"], - ["623F2D", "Quincy"], - ["624E9A", "Butterfly Bush"], - ["625119", "West Coast"], - ["626649", "Finch"], - ["639A8F", "Patina"], - ["63B76C", "Fern"], - ["6456B7", "Blue Violet"], - ["646077", "Dolphin"], - ["646463", "Storm Dust"], - ["646A54", "Siam"], - ["646E75", "Nevada"], - ["6495ED", "Cornflower Blue"], - ["64CCDB", "Viking"], - ["65000B", "Rosewood"], - ["651A14", "Cherrywood"], - ["652DC1", "Purple Heart"], - ["657220", "Fern Frond"], - ["65745D", "Willow Grove"], - ["65869F", "Hoki"], - ["660045", "Pompadour"], - ["660099", "Purple"], - ["66023C", "Tyrian Purple"], - ["661010", "Dark Tan"], - ["66B58F", "Silver Tree"], - ["66FF00", "Bright Green"], - ["66FF66", "Screamin Green"], - ["67032D", "Black Rose"], - ["675FA6", "Scampi"], - ["676662", "Ironside Gray"], - ["678975", "Viridian Green"], - ["67A712", "Christi"], - ["683600", "Nutmeg Wood Finish"], - ["685558", "Zambezi"], - ["685E6E", "Salt Box"], - ["692545", "Tawny Port"], - ["692D54", "Finn"], - ["695F62", "Scorpion"], - ["697E9A", "Lynch"], - ["6A442E", "Spice"], - ["6A5D1B", "Himalaya"], - ["6A6051", "Soya Bean"], - ["6B2A14", "Hairy Heath"], - ["6B3FA0", "Royal Purple"], - ["6B4E31", "Shingle Fawn"], - ["6B5755", "Dorado"], - ["6B8BA2", "Bermuda Gray"], - ["6B8E23", "Olive Drab"], - ["6C3082", "Eminence"], - ["6CDAE7", "Turquoise Blue"], - ["6D0101", "Lonestar"], - ["6D5E54", "Pine Cone"], - ["6D6C6C", "Dove Gray"], - ["6D9292", "Juniper"], - ["6D92A1", "Gothic"], - ["6E0902", "Red Oxide"], - ["6E1D14", "Moccaccino"], - ["6E4826", "Pickled Bean"], - ["6E4B26", "Dallas"], - ["6E6D57", "Kokoda"], - ["6E7783", "Pale Sky"], - ["6F440C", "Cafe Royale"], - ["6F6A61", "Flint"], - ["6F8E63", "Highland"], - ["6F9D02", "Limeade"], - ["6FD0C5", "Downy"], - ["701C1C", "Persian Plum"], - ["704214", "Sepia"], - ["704A07", "Antique Bronze"], - ["704F50", "Ferra"], - ["706555", "Coffee"], - ["708090", "Slate Gray"], - ["711A00", "Cedar Wood Finish"], - ["71291D", "Metallic Copper"], - ["714693", "Affair"], - ["714AB2", "Studio"], - ["715D47", "Tobacco Brown"], - ["716338", "Yellow Metal"], - ["716B56", "Peat"], - ["716E10", "Olivetone"], - ["717486", "Storm Gray"], - ["718080", "Sirocco"], - ["71D9E2", "Aquamarine Blue"], - ["72010F", "Venetian Red"], - ["724A2F", "Old Copper"], - ["726D4E", "Go Ben"], - ["727B89", "Raven"], - ["731E8F", "Seance"], - ["734A12", "Raw Umber"], - ["736C9F", "Kimberly"], - ["736D58", "Crocodile"], - ["737829", "Crete"], - ["738678", "Xanadu"], - ["74640D", "Spicy Mustard"], - ["747D63", "Limed Ash"], - ["747D83", "Rolling Stone"], - ["748881", "Blue Smoke"], - ["749378", "Laurel"], - ["74C365", "Mantis"], - ["755A57", "Russett"], - ["7563A8", "Deluge"], - ["76395D", "Cosmic"], - ["7666C6", "Blue Marguerite"], - ["76BD17", "Lima"], - ["76D7EA", "Sky Blue"], - ["770F05", "Dark Burgundy"], - ["771F1F", "Crown of Thorns"], - ["773F1A", "Walnut"], - ["776F61", "Pablo"], - ["778120", "Pacifika"], - ["779E86", "Oxley"], - ["77DD77", "Pastel Green"], - ["780109", "Japanese Maple"], - ["782D19", "Mocha"], - ["782F16", "Peanut"], - ["78866B", "Camouflage Green"], - ["788A25", "Wasabi"], - ["788BBA", "Ship Cove"], - ["78A39C", "Sea Nymph"], - ["795D4C", "Roman Coffee"], - ["796878", "Old Lavender"], - ["796989", "Rum"], - ["796A78", "Fedora"], - ["796D62", "Sandstone"], - ["79DEEC", "Spray"], - ["7A013A", "Siren"], - ["7A58C1", "Fuchsia Blue"], - ["7A7A7A", "Boulder"], - ["7A89B8", "Wild Blue Yonder"], - ["7AC488", "De York"], - ["7B3801", "Red Beech"], - ["7B3F00", "Cinnamon"], - ["7B6608", "Yukon Gold"], - ["7B7874", "Tapa"], - ["7B7C94", "Waterloo "], - ["7B8265", "Flax Smoke"], - ["7B9F80", "Amulet"], - ["7BA05B", "Asparagus"], - ["7C1C05", "Kenyan Copper"], - ["7C7631", "Pesto"], - ["7C778A", "Topaz"], - ["7C7B7A", "Concord"], - ["7C7B82", "Jumbo"], - ["7C881A", "Trendy Green"], - ["7CA1A6", "Gumbo"], - ["7CB0A1", "Acapulco"], - ["7CB7BB", "Neptune"], - ["7D2C14", "Pueblo"], - ["7DA98D", "Bay Leaf"], - ["7DC8F7", "Malibu"], - ["7DD8C6", "Bermuda"], - ["7E3A15", "Copper Canyon"], - ["7F1734", "Claret"], - ["7F3A02", "Peru Tan"], - ["7F626D", "Falcon"], - ["7F7589", "Mobster"], - ["7F76D3", "Moody Blue"], - ["7FFF00", "Chartreuse"], - ["7FFFD4", "Aquamarine"], - ["800000", "Maroon"], - ["800B47", "Rose Bud Cherry"], - ["801818", "Falu Red"], - ["80341F", "Red Robin"], - ["803790", "Vivid Violet"], - ["80461B", "Russet"], - ["807E79", "Friar Gray"], - ["808000", "Olive"], - ["808080", "Gray"], - ["80B3AE", "Gulf Stream"], - ["80B3C4", "Glacier"], - ["80CCEA", "Seagull"], - ["81422C", "Nutmeg"], - ["816E71", "Spicy Pink"], - ["817377", "Empress"], - ["819885", "Spanish Green"], - ["826F65", "Sand Dune"], - ["828685", "Gunsmoke"], - ["828F72", "Battleship Gray"], - ["831923", "Merlot"], - ["837050", "Shadow"], - ["83AA5D", "Chelsea Cucumber"], - ["83D0C6", "Monte Carlo"], - ["843179", "Plum"], - ["84A0A0", "Granny Smith"], - ["8581D9", "Chetwode Blue"], - ["858470", "Bandicoot"], - ["859FAF", "Bali Hai"], - ["85C4CC", "Half Baked"], - ["860111", "Red Devil"], - ["863C3C", "Lotus"], - ["86483C", "Ironstone"], - ["864D1E", "Bull Shot"], - ["86560A", "Rusty Nail"], - ["868974", "Bitter"], - ["86949F", "Regent Gray"], - ["871550", "Disco"], - ["87756E", "Americano"], - ["877C7B", "Hurricane"], - ["878D91", "Oslo Gray"], - ["87AB39", "Sushi"], - ["885342", "Spicy Mix"], - ["886221", "Kumera"], - ["888387", "Suva Gray"], - ["888D65", "Avocado"], - ["893456", "Camelot"], - ["893843", "Solid Pink"], - ["894367", "Cannon Pink"], - ["897D6D", "Makara"], - ["8A3324", "Burnt Umber"], - ["8A73D6", "True V"], - ["8A8360", "Clay Creek"], - ["8A8389", "Monsoon"], - ["8A8F8A", "Stack"], - ["8AB9F1", "Jordy Blue"], - ["8B00FF", "Electric Violet"], - ["8B0723", "Monarch"], - ["8B6B0B", "Corn Harvest"], - ["8B8470", "Olive Haze"], - ["8B847E", "Schooner"], - ["8B8680", "Natural Gray"], - ["8B9C90", "Mantle"], - ["8B9FEE", "Portage"], - ["8BA690", "Envy"], - ["8BA9A5", "Cascade"], - ["8BE6D8", "Riptide"], - ["8C055E", "Cardinal Pink"], - ["8C472F", "Mule Fawn"], - ["8C5738", "Potters Clay"], - ["8C6495", "Trendy Pink"], - ["8D0226", "Paprika"], - ["8D3D38", "Sanguine Brown"], - ["8D3F3F", "Tosca"], - ["8D7662", "Cement"], - ["8D8974", "Granite Green"], - ["8D90A1", "Manatee"], - ["8DA8CC", "Polo Blue"], - ["8E0000", "Red Berry"], - ["8E4D1E", "Rope"], - ["8E6F70", "Opium"], - ["8E775E", "Domino"], - ["8E8190", "Mamba"], - ["8EABC1", "Nepal"], - ["8F021C", "Pohutukawa"], - ["8F3E33", "El Salva"], - ["8F4B0E", "Korma"], - ["8F8176", "Squirrel"], - ["8FD6B4", "Vista Blue"], - ["900020", "Burgundy"], - ["901E1E", "Old Brick"], - ["907874", "Hemp"], - ["907B71", "Almond Frost"], - ["908D39", "Sycamore"], - ["92000A", "Sangria"], - ["924321", "Cumin"], - ["926F5B", "Beaver"], - ["928573", "Stonewall"], - ["928590", "Venus"], - ["9370DB", "Medium Purple"], - ["93CCEA", "Cornflower"], - ["93DFB8", "Algae Green"], - ["944747", "Copper Rust"], - ["948771", "Arrowtown"], - ["950015", "Scarlett"], - ["956387", "Strikemaster"], - ["959396", "Mountain Mist"], - ["960018", "Carmine"], - ["964B00", "Brown"], - ["967059", "Leather"], - ["9678B6", "Purple Mountain's Majesty"], - ["967BB6", "Lavender Purple"], - ["96A8A1", "Pewter"], - ["96BBAB", "Summer Green"], - ["97605D", "Au Chico"], - ["9771B5", "Wisteria"], - ["97CD2D", "Atlantis"], - ["983D61", "Vin Rouge"], - ["9874D3", "Lilac Bush"], - ["98777B", "Bazaar"], - ["98811B", "Hacienda"], - ["988D77", "Pale Oyster"], - ["98FF98", "Mint Green"], - ["990066", "Fresh Eggplant"], - ["991199", "Violet Eggplant"], - ["991613", "Tamarillo"], - ["991B07", "Totem Pole"], - ["996666", "Copper Rose"], - ["9966CC", "Amethyst"], - ["997A8D", "Mountbatten Pink"], - ["9999CC", "Blue Bell"], - ["9A3820", "Prairie Sand"], - ["9A6E61", "Toast"], - ["9A9577", "Gurkha"], - ["9AB973", "Olivine"], - ["9AC2B8", "Shadow Green"], - ["9B4703", "Oregon"], - ["9B9E8F", "Lemon Grass"], - ["9C3336", "Stiletto"], - ["9D5616", "Hawaiian Tan"], - ["9DACB7", "Gull Gray"], - ["9DC209", "Pistachio"], - ["9DE093", "Granny Smith Apple"], - ["9DE5FF", "Anakiwa"], - ["9E5302", "Chelsea Gem"], - ["9E5B40", "Sepia Skin"], - ["9EA587", "Sage"], - ["9EA91F", "Citron"], - ["9EB1CD", "Rock Blue"], - ["9EDEE0", "Morning Glory"], - ["9F381D", "Cognac"], - ["9F821C", "Reef Gold"], - ["9F9F9C", "Star Dust"], - ["9FA0B1", "Santas Gray"], - ["9FD7D3", "Sinbad"], - ["9FDD8C", "Feijoa"], - ["A02712", "Tabasco"], - ["A1750D", "Buttered Rum"], - ["A1ADB5", "Hit Gray"], - ["A1C50A", "Citrus"], - ["A1DAD7", "Aqua Island"], - ["A1E9DE", "Water Leaf"], - ["A2006D", "Flirt"], - ["A23B6C", "Rouge"], - ["A26645", "Cape Palliser"], - ["A2AAB3", "Gray Chateau"], - ["A2AEAB", "Edward"], - ["A3807B", "Pharlap"], - ["A397B4", "Amethyst Smoke"], - ["A3E3ED", "Blizzard Blue"], - ["A4A49D", "Delta"], - ["A4A6D3", "Wistful"], - ["A4AF6E", "Green Smoke"], - ["A50B5E", "Jazzberry Jam"], - ["A59B91", "Zorba"], - ["A5CB0C", "Bahia"], - ["A62F20", "Roof Terracotta"], - ["A65529", "Paarl"], - ["A68B5B", "Barley Corn"], - ["A69279", "Donkey Brown"], - ["A6A29A", "Dawn"], - ["A72525", "Mexican Red"], - ["A7882C", "Luxor Gold"], - ["A85307", "Rich Gold"], - ["A86515", "Reno Sand"], - ["A86B6B", "Coral Tree"], - ["A8989B", "Dusty Gray"], - ["A899E6", "Dull Lavender"], - ["A8A589", "Tallow"], - ["A8AE9C", "Bud"], - ["A8AF8E", "Locust"], - ["A8BD9F", "Norway"], - ["A8E3BD", "Chinook"], - ["A9A491", "Gray Olive"], - ["A9ACB6", "Aluminium"], - ["A9B2C3", "Cadet Blue"], - ["A9B497", "Schist"], - ["A9BDBF", "Tower Gray"], - ["A9BEF2", "Perano"], - ["A9C6C2", "Opal"], - ["AA375A", "Night Shadz"], - ["AA4203", "Fire"], - ["AA8B5B", "Muesli"], - ["AA8D6F", "Sandal"], - ["AAA5A9", "Shady Lady"], - ["AAA9CD", "Logan"], - ["AAABB7", "Spun Pearl"], - ["AAD6E6", "Regent St Blue"], - ["AAF0D1", "Magic Mint"], - ["AB0563", "Lipstick"], - ["AB3472", "Royal Heath"], - ["AB917A", "Sandrift"], - ["ABA0D9", "Cold Purple"], - ["ABA196", "Bronco"], - ["AC8A56", "Limed Oak"], - ["AC91CE", "East Side"], - ["AC9E22", "Lemon Ginger"], - ["ACA494", "Napa"], - ["ACA586", "Hillary"], - ["ACA59F", "Cloudy"], - ["ACACAC", "Silver Chalice"], - ["ACB78E", "Swamp Green"], - ["ACCBB1", "Spring Rain"], - ["ACDD4D", "Conifer"], - ["ACE1AF", "Celadon"], - ["AD781B", "Mandalay"], - ["ADBED1", "Casper"], - ["ADDFAD", "Moss Green"], - ["ADE6C4", "Padua"], - ["ADFF2F", "Green Yellow"], - ["AE4560", "Hippie Pink"], - ["AE6020", "Desert"], - ["AE809E", "Bouquet"], - ["AF4035", "Medium Carmine"], - ["AF4D43", "Apple Blossom"], - ["AF593E", "Brown Rust"], - ["AF8751", "Driftwood"], - ["AF8F2C", "Alpine"], - ["AF9F1C", "Lucky"], - ["AFA09E", "Martini"], - ["AFB1B8", "Bombay"], - ["AFBDD9", "Pigeon Post"], - ["B04C6A", "Cadillac"], - ["B05D54", "Matrix"], - ["B05E81", "Tapestry"], - ["B06608", "Mai Tai"], - ["B09A95", "Del Rio"], - ["B0E0E6", "Powder Blue"], - ["B0E313", "Inch Worm"], - ["B10000", "Bright Red"], - ["B14A0B", "Vesuvius"], - ["B1610B", "Pumpkin Skin"], - ["B16D52", "Santa Fe"], - ["B19461", "Teak"], - ["B1E2C1", "Fringy Flower"], - ["B1F4E7", "Ice Cold"], - ["B20931", "Shiraz"], - ["B2A1EA", "Biloba Flower"], - ["B32D29", "Tall Poppy"], - ["B35213", "Fiery Orange"], - ["B38007", "Hot Toddy"], - ["B3AF95", "Taupe Gray"], - ["B3C110", "La Rioja"], - ["B43332", "Well Read"], - ["B44668", "Blush"], - ["B4CFD3", "Jungle Mist"], - ["B57281", "Turkish Rose"], - ["B57EDC", "Lavender"], - ["B5A27F", "Mongoose"], - ["B5B35C", "Olive Green"], - ["B5D2CE", "Jet Stream"], - ["B5ECDF", "Cruise"], - ["B6316C", "Hibiscus"], - ["B69D98", "Thatch"], - ["B6B095", "Heathered Gray"], - ["B6BAA4", "Eagle"], - ["B6D1EA", "Spindle"], - ["B6D3BF", "Gum Leaf"], - ["B7410E", "Rust"], - ["B78E5C", "Muddy Waters"], - ["B7A214", "Sahara"], - ["B7A458", "Husk"], - ["B7B1B1", "Nobel"], - ["B7C3D0", "Heather"], - ["B7F0BE", "Madang"], - ["B81104", "Milano Red"], - ["B87333", "Copper"], - ["B8B56A", "Gimblet"], - ["B8C1B1", "Green Spring"], - ["B8C25D", "Celery"], - ["B8E0F9", "Sail"], - ["B94E48", "Chestnut"], - ["B95140", "Crail"], - ["B98D28", "Marigold"], - ["B9C46A", "Wild Willow"], - ["B9C8AC", "Rainee"], - ["BA0101", "Guardsman Red"], - ["BA450C", "Rock Spray"], - ["BA6F1E", "Bourbon"], - ["BA7F03", "Pirate Gold"], - ["BAB1A2", "Nomad"], - ["BAC7C9", "Submarine"], - ["BAEEF9", "Charlotte"], - ["BB3385", "Medium Red Violet"], - ["BB8983", "Brandy Rose"], - ["BBD009", "Rio Grande"], - ["BBD7C1", "Surf"], - ["BCC9C2", "Powder Ash"], - ["BD5E2E", "Tuscany"], - ["BD978E", "Quicksand"], - ["BDB1A8", "Silk"], - ["BDB2A1", "Malta"], - ["BDB3C7", "Chatelle"], - ["BDBBD7", "Lavender Gray"], - ["BDBDC6", "French Gray"], - ["BDC8B3", "Clay Ash"], - ["BDC9CE", "Loblolly"], - ["BDEDFD", "French Pass"], - ["BEA6C3", "London Hue"], - ["BEB5B7", "Pink Swan"], - ["BEDE0D", "Fuego"], - ["BF5500", "Rose of Sharon"], - ["BFB8B0", "Tide"], - ["BFBED8", "Blue Haze"], - ["BFC1C2", "Silver Sand"], - ["BFC921", "Key Lime Pie"], - ["BFDBE2", "Ziggurat"], - ["BFFF00", "Lime"], - ["C02B18", "Thunderbird"], - ["C04737", "Mojo"], - ["C08081", "Old Rose"], - ["C0C0C0", "Silver"], - ["C0D3B9", "Pale Leaf"], - ["C0D8B6", "Pixie Green"], - ["C1440E", "Tia Maria"], - ["C154C1", "Fuchsia Pink"], - ["C1A004", "Buddha Gold"], - ["C1B7A4", "Bison Hide"], - ["C1BAB0", "Tea"], - ["C1BECD", "Gray Suit"], - ["C1D7B0", "Sprout"], - ["C1F07C", "Sulu"], - ["C26B03", "Indochine"], - ["C2955D", "Twine"], - ["C2BDB6", "Cotton Seed"], - ["C2CAC4", "Pumice"], - ["C2E8E5", "Jagged Ice"], - ["C32148", "Maroon Flush"], - ["C3B091", "Indian Khaki"], - ["C3BFC1", "Pale Slate"], - ["C3C3BD", "Gray Nickel"], - ["C3CDE6", "Periwinkle Gray"], - ["C3D1D1", "Tiara"], - ["C3DDF9", "Tropical Blue"], - ["C41E3A", "Cardinal"], - ["C45655", "Fuzzy Wuzzy Brown"], - ["C45719", "Orange Roughy"], - ["C4C4BC", "Mist Gray"], - ["C4D0B0", "Coriander"], - ["C4F4EB", "Mint Tulip"], - ["C54B8C", "Mulberry"], - ["C59922", "Nugget"], - ["C5994B", "Tussock"], - ["C5DBCA", "Sea Mist"], - ["C5E17A", "Yellow Green"], - ["C62D42", "Brick Red"], - ["C6726B", "Contessa"], - ["C69191", "Oriental Pink"], - ["C6A84B", "Roti"], - ["C6C3B5", "Ash"], - ["C6C8BD", "Kangaroo"], - ["C6E610", "Las Palmas"], - ["C7031E", "Monza"], - ["C71585", "Red Violet"], - ["C7BCA2", "Coral Reef"], - ["C7C1FF", "Melrose"], - ["C7C4BF", "Cloud"], - ["C7C9D5", "Ghost"], - ["C7CD90", "Pine Glade"], - ["C7DDE5", "Botticelli"], - ["C88A65", "Antique Brass"], - ["C8A2C8", "Lilac"], - ["C8A528", "Hokey Pokey"], - ["C8AABF", "Lily"], - ["C8B568", "Laser"], - ["C8E3D7", "Edgewater"], - ["C96323", "Piper"], - ["C99415", "Pizza"], - ["C9A0DC", "Light Wisteria"], - ["C9B29B", "Rodeo Dust"], - ["C9B35B", "Sundance"], - ["C9B93B", "Earls Green"], - ["C9C0BB", "Silver Rust"], - ["C9D9D2", "Conch"], - ["C9FFA2", "Reef"], - ["C9FFE5", "Aero Blue"], - ["CA3435", "Flush Mahogany"], - ["CABB48", "Turmeric"], - ["CADCD4", "Paris White"], - ["CAE00D", "Bitter Lemon"], - ["CAE6DA", "Skeptic"], - ["CB8FA9", "Viola"], - ["CBCAB6", "Foggy Gray"], - ["CBD3B0", "Green Mist"], - ["CBDBD6", "Nebula"], - ["CC3333", "Persian Red"], - ["CC5500", "Burnt Orange"], - ["CC7722", "Ochre"], - ["CC8899", "Puce"], - ["CCCAA8", "Thistle Green"], - ["CCCCFF", "Periwinkle"], - ["CCFF00", "Electric Lime"], - ["CD5700", "Tenn"], - ["CD5C5C", "Chestnut Rose"], - ["CD8429", "Brandy Punch"], - ["CDF4FF", "Onahau"], - ["CEB98F", "Sorrell Brown"], - ["CEBABA", "Cold Turkey"], - ["CEC291", "Yuma"], - ["CEC7A7", "Chino"], - ["CFA39D", "Eunry"], - ["CFB53B", "Old Gold"], - ["CFDCCF", "Tasman"], - ["CFE5D2", "Surf Crest"], - ["CFF9F3", "Humming Bird"], - ["CFFAF4", "Scandal"], - ["D05F04", "Red Stage"], - ["D06DA1", "Hopbush"], - ["D07D12", "Meteor"], - ["D0BEF8", "Perfume"], - ["D0C0E5", "Prelude"], - ["D0F0C0", "Tea Green"], - ["D18F1B", "Geebung"], - ["D1BEA8", "Vanilla"], - ["D1C6B4", "Soft Amber"], - ["D1D2CA", "Celeste"], - ["D1D2DD", "Mischka"], - ["D1E231", "Pear"], - ["D2691E", "Hot Cinnamon"], - ["D27D46", "Raw Sienna"], - ["D29EAA", "Careys Pink"], - ["D2B48C", "Tan"], - ["D2DA97", "Deco"], - ["D2F6DE", "Blue Romance"], - ["D2F8B0", "Gossip"], - ["D3CBBA", "Sisal"], - ["D3CDC5", "Swirl"], - ["D47494", "Charm"], - ["D4B6AF", "Clam Shell"], - ["D4BF8D", "Straw"], - ["D4C4A8", "Akaroa"], - ["D4CD16", "Bird Flower"], - ["D4D7D9", "Iron"], - ["D4DFE2", "Geyser"], - ["D4E2FC", "Hawkes Blue"], - ["D54600", "Grenadier"], - ["D591A4", "Can Can"], - ["D59A6F", "Whiskey"], - ["D5D195", "Winter Hazel"], - ["D5F6E3", "Granny Apple"], - ["D69188", "My Pink"], - ["D6C562", "Tacha"], - ["D6CEF6", "Moon Raker"], - ["D6D6D1", "Quill Gray"], - ["D6FFDB", "Snowy Mint"], - ["D7837F", "New York Pink"], - ["D7C498", "Pavlova"], - ["D7D0FF", "Fog"], - ["D84437", "Valencia"], - ["D87C63", "Japonica"], - ["D8BFD8", "Thistle"], - ["D8C2D5", "Maverick"], - ["D8FCFA", "Foam"], - ["D94972", "Cabaret"], - ["D99376", "Burning Sand"], - ["D9B99B", "Cameo"], - ["D9D6CF", "Timberwolf"], - ["D9DCC1", "Tana"], - ["D9E4F5", "Link Water"], - ["D9F7FF", "Mabel"], - ["DA3287", "Cerise"], - ["DA5B38", "Flame Pea"], - ["DA6304", "Bamboo"], - ["DA6A41", "Red Damask"], - ["DA70D6", "Orchid"], - ["DA8A67", "Copperfield"], - ["DAA520", "Golden Grass"], - ["DAECD6", "Zanah"], - ["DAF4F0", "Iceberg"], - ["DAFAFF", "Oyster Bay"], - ["DB5079", "Cranberry"], - ["DB9690", "Petite Orchid"], - ["DB995E", "Di Serria"], - ["DBDBDB", "Alto"], - ["DBFFF8", "Frosted Mint"], - ["DC143C", "Crimson"], - ["DC4333", "Punch"], - ["DCB20C", "Galliano"], - ["DCB4BC", "Blossom"], - ["DCD747", "Wattle"], - ["DCD9D2", "Westar"], - ["DCDDCC", "Moon Mist"], - ["DCEDB4", "Caper"], - ["DCF0EA", "Swans Down"], - ["DDD6D5", "Swiss Coffee"], - ["DDF9F1", "White Ice"], - ["DE3163", "Cerise Red"], - ["DE6360", "Roman"], - ["DEA681", "Tumbleweed"], - ["DEBA13", "Gold Tips"], - ["DEC196", "Brandy"], - ["DECBC6", "Wafer"], - ["DED4A4", "Sapling"], - ["DED717", "Barberry"], - ["DEE5C0", "Beryl Green"], - ["DEF5FF", "Pattens Blue"], - ["DF73FF", "Heliotrope"], - ["DFBE6F", "Apache"], - ["DFCD6F", "Chenin"], - ["DFCFDB", "Lola"], - ["DFECDA", "Willow Brook"], - ["DFFF00", "Chartreuse Yellow"], - ["E0B0FF", "Mauve"], - ["E0B646", "Anzac"], - ["E0B974", "Harvest Gold"], - ["E0C095", "Calico"], - ["E0FFFF", "Baby Blue"], - ["E16865", "Sunglo"], - ["E1BC64", "Equator"], - ["E1C0C8", "Pink Flare"], - ["E1E6D6", "Periglacial Blue"], - ["E1EAD4", "Kidnapper"], - ["E1F6E8", "Tara"], - ["E25465", "Mandy"], - ["E2725B", "Terracotta"], - ["E28913", "Golden Bell"], - ["E292C0", "Shocking"], - ["E29418", "Dixie"], - ["E29CD2", "Light Orchid"], - ["E2D8ED", "Snuff"], - ["E2EBED", "Mystic"], - ["E2F3EC", "Apple Green"], - ["E30B5C", "Razzmatazz"], - ["E32636", "Alizarin Crimson"], - ["E34234", "Cinnabar"], - ["E3BEBE", "Cavern Pink"], - ["E3F5E1", "Peppermint"], - ["E3F988", "Mindaro"], - ["E47698", "Deep Blush"], - ["E49B0F", "Gamboge"], - ["E4C2D5", "Melanie"], - ["E4CFDE", "Twilight"], - ["E4D1C0", "Bone"], - ["E4D422", "Sunflower"], - ["E4D5B7", "Grain Brown"], - ["E4D69B", "Zombie"], - ["E4F6E7", "Frostee"], - ["E4FFD1", "Snow Flurry"], - ["E52B50", "Amaranth"], - ["E5841B", "Zest"], - ["E5CCC9", "Dust Storm"], - ["E5D7BD", "Stark White"], - ["E5D8AF", "Hampton"], - ["E5E0E1", "Bon Jour"], - ["E5E5E5", "Mercury"], - ["E5F9F6", "Polar"], - ["E64E03", "Trinidad"], - ["E6BE8A", "Gold Sand"], - ["E6BEA5", "Cashmere"], - ["E6D7B9", "Double Spanish White"], - ["E6E4D4", "Satin Linen"], - ["E6F2EA", "Harp"], - ["E6F8F3", "Off Green"], - ["E6FFE9", "Hint of Green"], - ["E6FFFF", "Tranquil"], - ["E77200", "Mango Tango"], - ["E7730A", "Christine"], - ["E79F8C", "Tonys Pink"], - ["E79FC4", "Kobi"], - ["E7BCB4", "Rose Fog"], - ["E7BF05", "Corn"], - ["E7CD8C", "Putty"], - ["E7ECE6", "Gray Nurse"], - ["E7F8FF", "Lily White"], - ["E7FEFF", "Bubbles"], - ["E89928", "Fire Bush"], - ["E8B9B3", "Shilo"], - ["E8E0D5", "Pearl Bush"], - ["E8EBE0", "Green White"], - ["E8F1D4", "Chrome White"], - ["E8F2EB", "Gin"], - ["E8F5F2", "Aqua Squeeze"], - ["E96E00", "Clementine"], - ["E97451", "Burnt Sienna"], - ["E97C07", "Tahiti Gold"], - ["E9CECD", "Oyster Pink"], - ["E9D75A", "Confetti"], - ["E9E3E3", "Ebb"], - ["E9F8ED", "Ottoman"], - ["E9FFFD", "Clear Day"], - ["EA88A8", "Carissma"], - ["EAAE69", "Porsche"], - ["EAB33B", "Tulip Tree"], - ["EAC674", "Rob Roy"], - ["EADAB8", "Raffia"], - ["EAE8D4", "White Rock"], - ["EAF6EE", "Panache"], - ["EAF6FF", "Solitude"], - ["EAF9F5", "Aqua Spring"], - ["EAFFFE", "Dew"], - ["EB9373", "Apricot"], - ["EBC2AF", "Zinnwaldite"], - ["ECA927", "Fuel Yellow"], - ["ECC54E", "Ronchi"], - ["ECC7EE", "French Lilac"], - ["ECCDB9", "Just Right"], - ["ECE090", "Wild Rice"], - ["ECEBBD", "Fall Green"], - ["ECEBCE", "Aths Special"], - ["ECF245", "Starship"], - ["ED0A3F", "Red Ribbon"], - ["ED7A1C", "Tango"], - ["ED9121", "Carrot Orange"], - ["ED989E", "Sea Pink"], - ["EDB381", "Tacao"], - ["EDC9AF", "Desert Sand"], - ["EDCDAB", "Pancho"], - ["EDDCB1", "Chamois"], - ["EDEA99", "Primrose"], - ["EDF5DD", "Frost"], - ["EDF5F5", "Aqua Haze"], - ["EDF6FF", "Zumthor"], - ["EDF9F1", "Narvik"], - ["EDFC84", "Honeysuckle"], - ["EE82EE", "Lavender Magenta"], - ["EEC1BE", "Beauty Bush"], - ["EED794", "Chalky"], - ["EED9C4", "Almond"], - ["EEDC82", "Flax"], - ["EEDEDA", "Bizarre"], - ["EEE3AD", "Double Colonial White"], - ["EEEEE8", "Cararra"], - ["EEEF78", "Manz"], - ["EEF0C8", "Tahuna Sands"], - ["EEF0F3", "Athens Gray"], - ["EEF3C3", "Tusk"], - ["EEF4DE", "Loafer"], - ["EEF6F7", "Catskill White"], - ["EEFDFF", "Twilight Blue"], - ["EEFF9A", "Jonquil"], - ["EEFFE2", "Rice Flower"], - ["EF863F", "Jaffa"], - ["EFEFEF", "Gallery"], - ["EFF2F3", "Porcelain"], - ["F091A9", "Mauvelous"], - ["F0D52D", "Golden Dream"], - ["F0DB7D", "Golden Sand"], - ["F0DC82", "Buff"], - ["F0E2EC", "Prim"], - ["F0E68C", "Khaki"], - ["F0EEFD", "Selago"], - ["F0EEFF", "Titan White"], - ["F0F8FF", "Alice Blue"], - ["F0FCEA", "Feta"], - ["F18200", "Gold Drop"], - ["F19BAB", "Wewak"], - ["F1E788", "Sahara Sand"], - ["F1E9D2", "Parchment"], - ["F1E9FF", "Blue Chalk"], - ["F1EEC1", "Mint Julep"], - ["F1F1F1", "Seashell"], - ["F1F7F2", "Saltpan"], - ["F1FFAD", "Tidal"], - ["F1FFC8", "Chiffon"], - ["F2552A", "Flamingo"], - ["F28500", "Tangerine"], - ["F2C3B2", "Mandys Pink"], - ["F2F2F2", "Concrete"], - ["F2FAFA", "Black Squeeze"], - ["F34723", "Pomegranate"], - ["F3AD16", "Buttercup"], - ["F3D69D", "New Orleans"], - ["F3D9DF", "Vanilla Ice"], - ["F3E7BB", "Sidecar"], - ["F3E9E5", "Dawn Pink"], - ["F3EDCF", "Wheatfield"], - ["F3FB62", "Canary"], - ["F3FBD4", "Orinoco"], - ["F3FFD8", "Carla"], - ["F400A1", "Hollywood Cerise"], - ["F4A460", "Sandy brown"], - ["F4C430", "Saffron"], - ["F4D81C", "Ripe Lemon"], - ["F4EBD3", "Janna"], - ["F4F2EE", "Pampas"], - ["F4F4F4", "Wild Sand"], - ["F4F8FF", "Zircon"], - ["F57584", "Froly"], - ["F5C85C", "Cream Can"], - ["F5C999", "Manhattan"], - ["F5D5A0", "Maize"], - ["F5DEB3", "Wheat"], - ["F5E7A2", "Sandwisp"], - ["F5E7E2", "Pot Pourri"], - ["F5E9D3", "Albescent White"], - ["F5EDEF", "Soft Peach"], - ["F5F3E5", "Ecru White"], - ["F5F5DC", "Beige"], - ["F5FB3D", "Golden Fizz"], - ["F5FFBE", "Australian Mint"], - ["F64A8A", "French Rose"], - ["F653A6", "Brilliant Rose"], - ["F6A4C9", "Illusion"], - ["F6F0E6", "Merino"], - ["F6F7F7", "Black Haze"], - ["F6FFDC", "Spring Sun"], - ["F7468A", "Violet Red"], - ["F77703", "Chilean Fire"], - ["F77FBE", "Persian Pink"], - ["F7B668", "Rajah"], - ["F7C8DA", "Azalea"], - ["F7DBE6", "We Peep"], - ["F7F2E1", "Quarter Spanish White"], - ["F7F5FA", "Whisper"], - ["F7FAF7", "Snow Drift"], - ["F8B853", "Casablanca"], - ["F8C3DF", "Chantilly"], - ["F8D9E9", "Cherub"], - ["F8DB9D", "Marzipan"], - ["F8DD5C", "Energy Yellow"], - ["F8E4BF", "Givry"], - ["F8F0E8", "White Linen"], - ["F8F4FF", "Magnolia"], - ["F8F6F1", "Spring Wood"], - ["F8F7DC", "Coconut Cream"], - ["F8F7FC", "White Lilac"], - ["F8F8F7", "Desert Storm"], - ["F8F99C", "Texas"], - ["F8FACD", "Corn Field"], - ["F8FDD3", "Mimosa"], - ["F95A61", "Carnation"], - ["F9BF58", "Saffron Mango"], - ["F9E0ED", "Carousel Pink"], - ["F9E4BC", "Dairy Cream"], - ["F9E663", "Portica"], - ["F9EAF3", "Amour"], - ["F9F8E4", "Rum Swizzle"], - ["F9FF8B", "Dolly"], - ["F9FFF6", "Sugar Cane"], - ["FA7814", "Ecstasy"], - ["FA9D5A", "Tan Hide"], - ["FAD3A2", "Corvette"], - ["FADFAD", "Peach Yellow"], - ["FAE600", "Turbo"], - ["FAEAB9", "Astra"], - ["FAECCC", "Champagne"], - ["FAF0E6", "Linen"], - ["FAF3F0", "Fantasy"], - ["FAF7D6", "Citrine White"], - ["FAFAFA", "Alabaster"], - ["FAFDE4", "Hint of Yellow"], - ["FAFFA4", "Milan"], - ["FB607F", "Brink Pink"], - ["FB8989", "Geraldine"], - ["FBA0E3", "Lavender Rose"], - ["FBA129", "Sea Buckthorn"], - ["FBAC13", "Sun"], - ["FBAED2", "Lavender Pink"], - ["FBB2A3", "Rose Bud"], - ["FBBEDA", "Cupid"], - ["FBCCE7", "Classic Rose"], - ["FBCEB1", "Apricot Peach"], - ["FBE7B2", "Banana Mania"], - ["FBE870", "Marigold Yellow"], - ["FBE96C", "Festival"], - ["FBEA8C", "Sweet Corn"], - ["FBEC5D", "Candy Corn"], - ["FBF9F9", "Hint of Red"], - ["FBFFBA", "Shalimar"], - ["FC0FC0", "Shocking Pink"], - ["FC80A5", "Tickle Me Pink"], - ["FC9C1D", "Tree Poppy"], - ["FCC01E", "Lightning Yellow"], - ["FCD667", "Goldenrod"], - ["FCD917", "Candlelight"], - ["FCDA98", "Cherokee"], - ["FCF4D0", "Double Pearl Lusta"], - ["FCF4DC", "Pearl Lusta"], - ["FCF8F7", "Vista White"], - ["FCFBF3", "Bianca"], - ["FCFEDA", "Moon Glow"], - ["FCFFE7", "China Ivory"], - ["FCFFF9", "Ceramic"], - ["FD0E35", "Torch Red"], - ["FD5B78", "Wild Watermelon"], - ["FD7B33", "Crusta"], - ["FD7C07", "Sorbus"], - ["FD9FA2", "Sweet Pink"], - ["FDD5B1", "Light Apricot"], - ["FDD7E4", "Pig Pink"], - ["FDE1DC", "Cinderella"], - ["FDE295", "Golden Glow"], - ["FDE910", "Lemon"], - ["FDF5E6", "Old Lace"], - ["FDF6D3", "Half Colonial White"], - ["FDF7AD", "Drover"], - ["FDFEB8", "Pale Prim"], - ["FDFFD5", "Cumulus"], - ["FE28A2", "Persian Rose"], - ["FE4C40", "Sunset Orange"], - ["FE6F5E", "Bittersweet"], - ["FE9D04", "California"], - ["FEA904", "Yellow Sea"], - ["FEBAAD", "Melon"], - ["FED33C", "Bright Sun"], - ["FED85D", "Dandelion"], - ["FEDB8D", "Salomie"], - ["FEE5AC", "Cape Honey"], - ["FEEBF3", "Remy"], - ["FEEFCE", "Oasis"], - ["FEF0EC", "Bridesmaid"], - ["FEF2C7", "Beeswax"], - ["FEF3D8", "Bleach White"], - ["FEF4CC", "Pipi"], - ["FEF4DB", "Half Spanish White"], - ["FEF4F8", "Wisp Pink"], - ["FEF5F1", "Provincial Pink"], - ["FEF7DE", "Half Dutch White"], - ["FEF8E2", "Solitaire"], - ["FEF8FF", "White Pointer"], - ["FEF9E3", "Off Yellow"], - ["FEFCED", "Orange White"], - ["FF0000", "Red"], - ["FF007F", "Rose"], - ["FF00CC", "Purple Pizzazz"], - ["FF00FF", "Magenta / Fuchsia"], - ["FF2400", "Scarlet"], - ["FF3399", "Wild Strawberry"], - ["FF33CC", "Razzle Dazzle Rose"], - ["FF355E", "Radical Red"], - ["FF3F34", "Red Orange"], - ["FF4040", "Coral Red"], - ["FF4D00", "Vermilion"], - ["FF4F00", "International Orange"], - ["FF6037", "Outrageous Orange"], - ["FF6600", "Blaze Orange"], - ["FF66FF", "Pink Flamingo"], - ["FF681F", "Orange"], - ["FF69B4", "Hot Pink"], - ["FF6B53", "Persimmon"], - ["FF6FFF", "Blush Pink"], - ["FF7034", "Burning Orange"], - ["FF7518", "Pumpkin"], - ["FF7D07", "Flamenco"], - ["FF7F00", "Flush Orange"], - ["FF7F50", "Coral"], - ["FF8C69", "Salmon"], - ["FF9000", "Pizazz"], - ["FF910F", "West Side"], - ["FF91A4", "Pink Salmon"], - ["FF9933", "Neon Carrot"], - ["FF9966", "Atomic Tangerine"], - ["FF9980", "Vivid Tangerine"], - ["FF9E2C", "Sunshade"], - ["FFA000", "Orange Peel"], - ["FFA194", "Mona Lisa"], - ["FFA500", "Web Orange"], - ["FFA6C9", "Carnation Pink"], - ["FFAB81", "Hit Pink"], - ["FFAE42", "Yellow Orange"], - ["FFB0AC", "Cornflower Lilac"], - ["FFB1B3", "Sundown"], - ["FFB31F", "My Sin"], - ["FFB555", "Texas Rose"], - ["FFB7D5", "Cotton Candy"], - ["FFB97B", "Macaroni and Cheese"], - ["FFBA00", "Selective Yellow"], - ["FFBD5F", "Koromiko"], - ["FFBF00", "Amber"], - ["FFC0A8", "Wax Flower"], - ["FFC0CB", "Pink"], - ["FFC3C0", "Your Pink"], - ["FFC901", "Supernova"], - ["FFCBA4", "Flesh"], - ["FFCC33", "Sunglow"], - ["FFCC5C", "Golden Tainoi"], - ["FFCC99", "Peach Orange"], - ["FFCD8C", "Chardonnay"], - ["FFD1DC", "Pastel Pink"], - ["FFD2B7", "Romantic"], - ["FFD38C", "Grandis"], - ["FFD700", "Gold"], - ["FFD800", "School bus Yellow"], - ["FFD8D9", "Cosmos"], - ["FFDB58", "Mustard"], - ["FFDCD6", "Peach Schnapps"], - ["FFDDAF", "Caramel"], - ["FFDDCD", "Tuft Bush"], - ["FFDDCF", "Watusi"], - ["FFDDF4", "Pink Lace"], - ["FFDEAD", "Navajo White"], - ["FFDEB3", "Frangipani"], - ["FFE1DF", "Pippin"], - ["FFE1F2", "Pale Rose"], - ["FFE2C5", "Negroni"], - ["FFE5A0", "Cream Brulee"], - ["FFE5B4", "Peach"], - ["FFE6C7", "Tequila"], - ["FFE772", "Kournikova"], - ["FFEAC8", "Sandy Beach"], - ["FFEAD4", "Karry"], - ["FFEC13", "Broom"], - ["FFEDBC", "Colonial White"], - ["FFEED8", "Derby"], - ["FFEFA1", "Vis Vis"], - ["FFEFC1", "Egg White"], - ["FFEFD5", "Papaya Whip"], - ["FFEFEC", "Fair Pink"], - ["FFF0DB", "Peach Cream"], - ["FFF0F5", "Lavender blush"], - ["FFF14F", "Gorse"], - ["FFF1B5", "Buttermilk"], - ["FFF1D8", "Pink Lady"], - ["FFF1EE", "Forget Me Not"], - ["FFF1F9", "Tutu"], - ["FFF39D", "Picasso"], - ["FFF3F1", "Chardon"], - ["FFF46E", "Paris Daisy"], - ["FFF4CE", "Barley White"], - ["FFF4DD", "Egg Sour"], - ["FFF4E0", "Sazerac"], - ["FFF4E8", "Serenade"], - ["FFF4F3", "Chablis"], - ["FFF5EE", "Seashell Peach"], - ["FFF5F3", "Sauvignon"], - ["FFF6D4", "Milk Punch"], - ["FFF6DF", "Varden"], - ["FFF6F5", "Rose White"], - ["FFF8D1", "Baja White"], - ["FFF9E2", "Gin Fizz"], - ["FFF9E6", "Early Dawn"], - ["FFFACD", "Lemon Chiffon"], - ["FFFAF4", "Bridal Heath"], - ["FFFBDC", "Scotch Mist"], - ["FFFBF9", "Soapstone"], - ["FFFC99", "Witch Haze"], - ["FFFCEA", "Buttery White"], - ["FFFCEE", "Island Spice"], - ["FFFDD0", "Cream"], - ["FFFDE6", "Chilean Heath"], - ["FFFDE8", "Travertine"], - ["FFFDF3", "Orchid White"], - ["FFFDF4", "Quarter Pearl Lusta"], - ["FFFEE1", "Half and Half"], - ["FFFEEC", "Apricot White"], - ["FFFEF0", "Rice Cake"], - ["FFFEF6", "Black White"], - ["FFFEFD", "Romance"], - ["FFFF00", "Yellow"], - ["FFFF66", "Laser Lemon"], - ["FFFF99", "Pale Canary"], - ["FFFFB4", "Portafino"], - ["FFFFF0", "Ivory"], - ["FFFFFF", "White"] -] diff --git a/packages/color-palette/src/json/palette.json b/packages/color-palette/src/json/palette.json deleted file mode 100644 index 440a04b..0000000 --- a/packages/color-palette/src/json/palette.json +++ /dev/null @@ -1,274 +0,0 @@ -[ - { - "key": "red", - "palettes": [ - { "hexcode": "#fef2f2", "number": 50, "name": "Bridesmaid" }, - { "hexcode": "#fee2e2", "number": 100, "name": "Pippin" }, - { "hexcode": "#fecaca", "number": 200, "name": "Your Pink" }, - { "hexcode": "#fca5a5", "number": 300, "name": "Cornflower Lilac" }, - { "hexcode": "#f87171", "number": 400, "name": "Bittersweet" }, - { "hexcode": "#ef4444", "number": 500, "name": "Cinnabar" }, - { "hexcode": "#dc2626", "number": 600, "name": "Persian Red" }, - { "hexcode": "#b91c1c", "number": 700, "name": "Thunderbird" }, - { "hexcode": "#991b1b", "number": 800, "name": "Old Brick" }, - { "hexcode": "#7f1d1d", "number": 900, "name": "Falu Red" }, - { "hexcode": "#450a0a", "number": 950, "name": "Mahogany" } - ] - }, - { - "key": "orange", - "palettes": [ - { "hexcode": "#fff7ed", "number": 50, "name": "Serenade" }, - { "hexcode": "#ffedd5", "number": 100, "name": "Derby" }, - { "hexcode": "#fed7aa", "number": 200, "name": "Caramel" }, - { "hexcode": "#fdba74", "number": 300, "name": "Macaroni and Cheese" }, - { "hexcode": "#fb923c", "number": 400, "name": "Neon Carrot" }, - { "hexcode": "#f97316", "number": 500, "name": "Ecstasy" }, - { "hexcode": "#ea580c", "number": 600, "name": "Trinidad" }, - { "hexcode": "#c2410c", "number": 700, "name": "Tia Maria" }, - { "hexcode": "#9a3412", "number": 800, "name": "Tabasco" }, - { "hexcode": "#7c2d12", "number": 900, "name": "Pueblo" }, - { "hexcode": "#431407", "number": 950, "name": "Rebel" } - ] - }, - { - "key": "amber", - "palettes": [ - { "hexcode": "#fffbeb", "number": 50, "name": "Island Spice" }, - { "hexcode": "#fef3c7", "number": 100, "name": "Beeswax" }, - { "hexcode": "#fde68a", "number": 200, "name": "Sweet Corn" }, - { "hexcode": "#fcd34d", "number": 300, "name": "Mustard" }, - { "hexcode": "#fbbf24", "number": 400, "name": "Lightning Yellow" }, - { "hexcode": "#f59e0b", "number": 500, "name": "California" }, - { "hexcode": "#d97706", "number": 600, "name": "Christine" }, - { "hexcode": "#b45309", "number": 700, "name": "Vesuvius" }, - { "hexcode": "#92400e", "number": 800, "name": "Korma" }, - { "hexcode": "#78350f", "number": 900, "name": "Copper Canyon" }, - { "hexcode": "#451a03", "number": 950, "name": "Brown Pod" } - ] - }, - { - "key": "yellow", - "palettes": [ - { "hexcode": "#fefce8", "number": 50, "name": "Orange White" }, - { "hexcode": "#fef9c3", "number": 100, "name": "Lemon Chiffon" }, - { "hexcode": "#fef08a", "number": 200, "name": "Sweet Corn" }, - { "hexcode": "#fde047", "number": 300, "name": "Bright Sun" }, - { "hexcode": "#facc15", "number": 400, "name": "Candlelight" }, - { "hexcode": "#eab308", "number": 500, "name": "Corn" }, - { "hexcode": "#ca8a04", "number": 600, "name": "Pirate Gold" }, - { "hexcode": "#a16207", "number": 700, "name": "Mai Tai" }, - { "hexcode": "#854d0e", "number": 800, "name": "Korma" }, - { "hexcode": "#713f12", "number": 900, "name": "Sepia" }, - { "hexcode": "#422006", "number": 950, "name": "Dark Ebony" } - ] - }, - { - "key": "lime", - "palettes": [ - { "hexcode": "#f7fee7", "number": 50, "name": "Spring Sun" }, - { "hexcode": "#ecfccb", "number": 100, "name": "Chiffon" }, - { "hexcode": "#d9f99d", "number": 200, "name": "Gossip" }, - { "hexcode": "#bef264", "number": 300, "name": "Sulu" }, - { "hexcode": "#a3e635", "number": 400, "name": "Conifer" }, - { "hexcode": "#84cc16", "number": 500, "name": "Lima" }, - { "hexcode": "#65a30d", "number": 600, "name": "Christi" }, - { "hexcode": "#4d7c0f", "number": 700, "name": "Green Leaf" }, - { "hexcode": "#3f6212", "number": 800, "name": "Dell" }, - { "hexcode": "#365314", "number": 900, "name": "Clover" }, - { "hexcode": "#1a2e05", "number": 950, "name": "Deep Forest Green" } - ] - }, - { - "key": "green", - "palettes": [ - { "hexcode": "#f0fdf4", "number": 50, "name": "Ottoman" }, - { "hexcode": "#dcfce7", "number": 100, "name": "Blue Romance" }, - { "hexcode": "#bbf7d0", "number": 200, "name": "Magic Mint" }, - { "hexcode": "#86efac", "number": 300, "name": "Algae Green" }, - { "hexcode": "#4ade80", "number": 400, "name": "Emerald" }, - { "hexcode": "#22c55e", "number": 500, "name": "Malachite" }, - { "hexcode": "#16a34a", "number": 600, "name": "Salem" }, - { "hexcode": "#15803d", "number": 700, "name": "Jewel" }, - { "hexcode": "#166534", "number": 800, "name": "Jewel" }, - { "hexcode": "#14532d", "number": 900, "name": "Green Pea" }, - { "hexcode": "#052e16", "number": 950, "name": "English Holly" } - ] - }, - { - "key": "emerald", - "palettes": [ - { "hexcode": "#ecfdf5", "number": 50, "name": "White Ice" }, - { "hexcode": "#d1fae5", "number": 100, "name": "Granny Apple" }, - { "hexcode": "#a7f3d0", "number": 200, "name": "Magic Mint" }, - { "hexcode": "#6ee7b7", "number": 300, "name": "Bermuda" }, - { "hexcode": "#34d399", "number": 400, "name": "Shamrock" }, - { "hexcode": "#10b981", "number": 500, "name": "Mountain Meadow" }, - { "hexcode": "#059669", "number": 600, "name": "Green Haze" }, - { "hexcode": "#047857", "number": 700, "name": "Watercourse" }, - { "hexcode": "#065f46", "number": 800, "name": "Watercourse" }, - { "hexcode": "#064e3b", "number": 900, "name": "Evening Sea" }, - { "hexcode": "#022c22", "number": 950, "name": "Burnham" } - ] - }, - { - "key": "teal", - "palettes": [ - { "hexcode": "#f0fdfa", "number": 50, "name": "White Ice" }, - { "hexcode": "#ccfbf1", "number": 100, "name": "Scandal" }, - { "hexcode": "#99f6e4", "number": 200, "name": "Ice Cold" }, - { "hexcode": "#5eead4", "number": 300, "name": "Turquoise Blue" }, - { "hexcode": "#2dd4bf", "number": 400, "name": "Turquoise" }, - { "hexcode": "#14b8a6", "number": 500, "name": "Java" }, - { "hexcode": "#0d9488", "number": 600, "name": "Blue Chill" }, - { "hexcode": "#0f766e", "number": 700, "name": "Genoa" }, - { "hexcode": "#115e59", "number": 800, "name": "Eden" }, - { "hexcode": "#134e4a", "number": 900, "name": "Eden" }, - { "hexcode": "#042f2e", "number": 950, "name": "Tiber" } - ] - }, - { - "key": "cyan", - "palettes": [ - { "hexcode": "#ecfeff", "number": 50, "name": "Bubbles" }, - { "hexcode": "#cffafe", "number": 100, "name": "Oyster Bay" }, - { "hexcode": "#a5f3fc", "number": 200, "name": "Anakiwa" }, - { "hexcode": "#67e8f9", "number": 300, "name": "Spray" }, - { "hexcode": "#22d3ee", "number": 400, "name": "Bright Turquoise" }, - { "hexcode": "#06b6d4", "number": 500, "name": "Cerulean" }, - { "hexcode": "#0891b2", "number": 600, "name": "Bondi Blue" }, - { "hexcode": "#0e7490", "number": 700, "name": "Blue Chill" }, - { "hexcode": "#155e75", "number": 800, "name": "Blumine" }, - { "hexcode": "#164e63", "number": 900, "name": "Chathams Blue" }, - { "hexcode": "#083344", "number": 950, "name": "Tarawera" } - ] - }, - { - "key": "sky", - "palettes": [ - { "hexcode": "#f0f9ff", "number": 50, "name": "Alice Blue" }, - { "hexcode": "#e0f2fe", "number": 100, "name": "Pattens Blue" }, - { "hexcode": "#bae6fd", "number": 200, "name": "French Pass" }, - { "hexcode": "#7dd3fc", "number": 300, "name": "Malibu" }, - { "hexcode": "#38bdf8", "number": 400, "name": "Picton Blue" }, - { "hexcode": "#0ea5e9", "number": 500, "name": "Cerulean" }, - { "hexcode": "#0284c7", "number": 600, "name": "Lochmara" }, - { "hexcode": "#0369a1", "number": 700, "name": "Bahama Blue" }, - { "hexcode": "#075985", "number": 800, "name": "Venice Blue" }, - { "hexcode": "#0c4a6e", "number": 900, "name": "Chathams Blue" }, - { "hexcode": "#082f49", "number": 950, "name": "Blue Whale" } - ] - }, - { - "key": "blue", - "palettes": [ - { "hexcode": "#eff6ff", "number": 50, "name": "Zumthor" }, - { "hexcode": "#dbeafe", "number": 100, "name": "Hawkes Blue" }, - { "hexcode": "#bfdbfe", "number": 200, "name": "Tropical Blue" }, - { "hexcode": "#93c5fd", "number": 300, "name": "Malibu" }, - { "hexcode": "#60a5fa", "number": 400, "name": "Cornflower Blue" }, - { "hexcode": "#3b82f6", "number": 500, "name": "Dodger Blue" }, - { "hexcode": "#2563eb", "number": 600, "name": "Royal Blue" }, - { "hexcode": "#1d4ed8", "number": 700, "name": "Cerulean Blue" }, - { "hexcode": "#1e40af", "number": 800, "name": "Persian Blue" }, - { "hexcode": "#1e3a8a", "number": 900, "name": "Bay of Many" }, - { "hexcode": "#172554", "number": 950, "name": "Bunting" } - ] - }, - { - "key": "indigo", - "palettes": [ - { "hexcode": "#eef2ff", "number": 50, "name": "Zircon" }, - { "hexcode": "#e0e7ff", "number": 100, "name": "Hawkes Blue" }, - { "hexcode": "#c7d2fe", "number": 200, "name": "Periwinkle" }, - { "hexcode": "#a5b4fc", "number": 300, "name": "Perano" }, - { "hexcode": "#818cf8", "number": 400, "name": "Portage" }, - { "hexcode": "#6366f1", "number": 500, "name": "Royal Blue" }, - { "hexcode": "#4f46e5", "number": 600, "name": "Royal Blue" }, - { "hexcode": "#4338ca", "number": 700, "name": "Governor Bay" }, - { "hexcode": "#3730a3", "number": 800, "name": "Governor Bay" }, - { "hexcode": "#312e81", "number": 900, "name": "Minsk" }, - { "hexcode": "#1e1b4b", "number": 950, "name": "Port Gore" } - ] - }, - { - "key": "violet", - "palettes": [ - { "hexcode": "#f5f3ff", "number": 50, "name": "Titan White" }, - { "hexcode": "#ede9fe", "number": 100, "name": "Titan White" }, - { "hexcode": "#ddd6fe", "number": 200, "name": "Fog" }, - { "hexcode": "#c4b5fd", "number": 300, "name": "Melrose" }, - { "hexcode": "#a78bfa", "number": 400, "name": "Dull Lavender" }, - { "hexcode": "#8b5cf6", "number": 500, "name": "Medium Purple" }, - { "hexcode": "#7c3aed", "number": 600, "name": "Purple Heart" }, - { "hexcode": "#6d28d9", "number": 700, "name": "Purple Heart" }, - { "hexcode": "#5b21b6", "number": 800, "name": "Purple Heart" }, - { "hexcode": "#4c1d95", "number": 900, "name": "Daisy Bush" }, - { "hexcode": "#2e1065", "number": 950, "name": "Violent Violet" } - ] - }, - { - "key": "purple", - "palettes": [ - { "hexcode": "#faf5ff", "number": 50, "name": "Magnolia" }, - { "hexcode": "#f3e8ff", "number": 100, "name": "Blue Chalk" }, - { "hexcode": "#e9d5ff", "number": 200, "name": "Blue Chalk" }, - { "hexcode": "#d8b4fe", "number": 300, "name": "Mauve" }, - { "hexcode": "#c084fc", "number": 400, "name": "Heliotrope" }, - { "hexcode": "#a855f7", "number": 500, "name": "Medium Purple" }, - { "hexcode": "#9333ea", "number": 600, "name": "Electric Violet" }, - { "hexcode": "#7e22ce", "number": 700, "name": "Purple Heart" }, - { "hexcode": "#6b21a8", "number": 800, "name": "Seance" }, - { "hexcode": "#581c87", "number": 900, "name": "Daisy Bush" }, - { "hexcode": "#3b0764", "number": 950, "name": "Christalle" } - ] - }, - { - "key": "fuchsia", - "palettes": [ - { "hexcode": "#fdf4ff", "number": 50, "name": "White Pointer" }, - { "hexcode": "#fae8ff", "number": 100, "name": "White Pointer" }, - { "hexcode": "#f5d0fe", "number": 200, "name": "Mauve" }, - { "hexcode": "#f0abfc", "number": 300, "name": "Mauve" }, - { "hexcode": "#e879f9", "number": 400, "name": "Heliotrope" }, - { "hexcode": "#d946ef", "number": 500, "name": "Heliotrope" }, - { "hexcode": "#c026d3", "number": 600, "name": "Fuchsia Pink" }, - { "hexcode": "#a21caf", "number": 700, "name": "Violet Eggplant" }, - { "hexcode": "#86198f", "number": 800, "name": "Seance" }, - { "hexcode": "#701a75", "number": 900, "name": "Seance" }, - { "hexcode": "#4a044e", "number": 950, "name": "Clairvoyant" } - ] - }, - { - "key": "pink", - "palettes": [ - { "hexcode": "#fdf2f8", "number": 50, "name": "Wisp Pink" }, - { "hexcode": "#fce7f3", "number": 100, "name": "Carousel Pink" }, - { "hexcode": "#fbcfe8", "number": 200, "name": "Classic Rose" }, - { "hexcode": "#f9a8d4", "number": 300, "name": "Lavender Pink" }, - { "hexcode": "#f472b6", "number": 400, "name": "Persian Pink" }, - { "hexcode": "#ec4899", "number": 500, "name": "Brilliant Rose" }, - { "hexcode": "#db2777", "number": 600, "name": "Cerise" }, - { "hexcode": "#be185d", "number": 700, "name": "Maroon Flush" }, - { "hexcode": "#9d174d", "number": 800, "name": "Disco" }, - { "hexcode": "#831843", "number": 900, "name": "Disco" }, - { "hexcode": "#500724", "number": 950, "name": "Cab Sav" } - ] - }, - { - "key": "rose", - "palettes": [ - { "hexcode": "#fff1f2", "number": 50, "name": "Lavender blush" }, - { "hexcode": "#ffe4e6", "number": 100, "name": "Cosmos" }, - { "hexcode": "#fecdd3", "number": 200, "name": "Pastel Pink" }, - { "hexcode": "#fda4af", "number": 300, "name": "Sweet Pink" }, - { "hexcode": "#fb7185", "number": 400, "name": "Froly" }, - { "hexcode": "#f43f5e", "number": 500, "name": "Radical Red" }, - { "hexcode": "#e11d48", "number": 600, "name": "Amaranth" }, - { "hexcode": "#be123c", "number": 700, "name": "Cardinal" }, - { "hexcode": "#9f1239", "number": 800, "name": "Shiraz" }, - { "hexcode": "#881337", "number": 900, "name": "Claret" }, - { "hexcode": "#4c0519", "number": 950, "name": "Cab Sav" } - ] - } -] diff --git a/packages/color-palette/src/palette.ts b/packages/color-palette/src/palette.ts deleted file mode 100644 index e4b7e63..0000000 --- a/packages/color-palette/src/palette.ts +++ /dev/null @@ -1,95 +0,0 @@ -import { isValidColor, getHsl, getDeltaE, transformHslToHex } from './color'; -import { getColorName } from './name'; -import type { ColorPaletteFamily, ColorPaletteFamilyWithNearestPalette } from './type'; -import defaultPalettes from './json/palette.json'; - -export function getNearestColorPaletteFamily(color: string, families: ColorPaletteFamily[]) { - const familyWithConfig = families.map(family => { - const palettes = family.palettes.map(palette => { - return { - ...palette, - delta: getDeltaE(color, palette.hexcode) - }; - }); - - const nearestPalette = palettes.reduce((prev, curr) => (prev.delta < curr.delta ? prev : curr)); - - return { - ...family, - palettes, - nearestPalette - }; - }); - - const nearestPaletteFamily = familyWithConfig.reduce((prev, curr) => - prev.nearestPalette.delta < curr.nearestPalette.delta ? prev : curr - ); - - const { l } = getHsl(color); - - const paletteFamily: ColorPaletteFamilyWithNearestPalette = { - ...nearestPaletteFamily, - nearestLightnessPalette: nearestPaletteFamily.palettes.reduce((prev, curr) => { - const { l: prevLightness } = getHsl(prev.hexcode); - const { l: currLightness } = getHsl(curr.hexcode); - - const deltaPrev = Math.abs(prevLightness - l); - const deltaCurr = Math.abs(currLightness - l); - - return deltaPrev < deltaCurr ? prev : curr; - }) - }; - - return paletteFamily; -} - -export function getColorPaletteFamily(color: string, colorName: string) { - if (!isValidColor(color)) { - throw new Error('Invalid color, please check color value!'); - } - - const { h: h1, s: s1 } = getHsl(color); - - const { nearestLightnessPalette, palettes } = getNearestColorPaletteFamily( - color, - defaultPalettes as ColorPaletteFamily[] - ); - - const { number, hexcode } = nearestLightnessPalette; - - const { h: h2, s: s2 } = getHsl(hexcode); - - const deltaH = h1 - h2 || h2; - - const sRatio = s1 / s2; - - const colorPaletteFamily: ColorPaletteFamily = { - key: colorName, - palettes: palettes.map(palette => { - let hexValue = color; - - const isSame = number === palette.number; - - if (!isSame) { - const { h: h3, s: s3, l } = getHsl(palette.hexcode); - - const newH = deltaH < 0 ? h3 + deltaH : deltaH; - const newS = s3 * sRatio; - - hexValue = transformHslToHex({ - h: newH, - s: newS, - l - }); - } - - return { - hexcode: hexValue, - number: palette.number, - name: getColorName(hexValue) - }; - }) - }; - - return colorPaletteFamily; -} diff --git a/packages/color-palette/src/type.ts b/packages/color-palette/src/type.ts deleted file mode 100644 index bdad089..0000000 --- a/packages/color-palette/src/type.ts +++ /dev/null @@ -1,63 +0,0 @@ -/** - * the color palette number - */ -export type ColorPaletteNumber = 50 | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | 950; - -/** - * the color palette item - */ -export type ColorPaletteItem = { - /** - * the color hexcode - */ - hexcode: string; - /** - * the color number - * @link {@link ColorPaletteNumber} - */ - number: ColorPaletteNumber; - /** - * the color name - */ - name: string; -}; - -export type ColorPaletteFamily = { - /** - * the color palette family key - */ - key: string; - /** - * the color palette family's palettes - */ - palettes: ColorPaletteItem[]; -}; - -export type ColorPaletteWithDelta = ColorPaletteItem & { - delta: number; -}; - -export type ColorPaletteItemWithName = ColorPaletteItem & { - name: string; -}; - -export type ColorPaletteFamilyWithNearestPalette = ColorPaletteFamily & { - nearestPalette: ColorPaletteWithDelta; - nearestLightnessPalette: ColorPaletteWithDelta; -}; - -export type ColorPalette = ColorPaletteFamily & { - /** - * the color map of the palette - */ - colorMap: Map; - /** - * the main color of the palette - * @description which number is 500 - */ - main: ColorPaletteItemWithName; - /** - * the match color of the palette - */ - match: ColorPaletteItemWithName; -}; diff --git a/packages/color-palette/package.json b/packages/color/package.json similarity index 58% rename from packages/color-palette/package.json rename to packages/color/package.json index eb467b5..7ac0b17 100644 --- a/packages/color-palette/package.json +++ b/packages/color/package.json @@ -1,17 +1,16 @@ { - "name": "@sa/color-palette", - "version": "1.0.0", + "name": "@sa/color", + "version": "1.3.7", "exports": { ".": "./src/index.ts" }, "typesVersions": { "*": { - "*": [ - "./src/*" - ] + "*": ["./src/*"] } }, "dependencies": { + "@sa/utils": "workspace:*", "colord": "2.9.3" } } diff --git a/packages/color/src/constant/index.ts b/packages/color/src/constant/index.ts new file mode 100644 index 0000000..cefbcdb --- /dev/null +++ b/packages/color/src/constant/index.ts @@ -0,0 +1,2 @@ +export * from './name'; +export * from './palette'; diff --git a/packages/color/src/constant/name.ts b/packages/color/src/constant/name.ts new file mode 100644 index 0000000..36648c3 --- /dev/null +++ b/packages/color/src/constant/name.ts @@ -0,0 +1,1579 @@ +export const colorNames: [hex: string, name: string][] = [ + ['#000000', 'Black'], + ['#000080', 'Navy Blue'], + ['#0000c8', 'Dark Blue'], + ['#0000ff', 'Blue'], + ['#000741', 'Stratos'], + ['#001b1c', 'Swamp'], + ['#002387', 'Resolution Blue'], + ['#002900', 'Deep Fir'], + ['#002e20', 'Burnham'], + ['#002fa7', 'International Klein Blue'], + ['#003153', 'Prussian Blue'], + ['#003366', 'Midnight Blue'], + ['#003399', 'Smalt'], + ['#003532', 'Deep Teal'], + ['#003e40', 'Cyprus'], + ['#004620', 'Kaitoke Green'], + ['#0047ab', 'Cobalt'], + ['#004816', 'Crusoe'], + ['#004950', 'Sherpa Blue'], + ['#0056a7', 'Endeavour'], + ['#00581a', 'Camarone'], + ['#0066cc', 'Science Blue'], + ['#0066ff', 'Blue Ribbon'], + ['#00755e', 'Tropical Rain Forest'], + ['#0076a3', 'Allports'], + ['#007ba7', 'Deep Cerulean'], + ['#007ec7', 'Lochmara'], + ['#007fff', 'Azure Radiance'], + ['#008080', 'Teal'], + ['#0095b6', 'Bondi Blue'], + ['#009dc4', 'Pacific Blue'], + ['#00a693', 'Persian Green'], + ['#00a86b', 'Jade'], + ['#00cc99', 'Caribbean Green'], + ['#00cccc', "Robin's Egg Blue"], + ['#00ff00', 'Green'], + ['#00ff7f', 'Spring Green'], + ['#00ffff', 'Cyan Aqua'], + ['#010d1a', 'Blue Charcoal'], + ['#011635', 'Midnight'], + ['#011d13', 'Holly'], + ['#012731', 'Daintree'], + ['#01361c', 'Cardin Green'], + ['#01371a', 'County Green'], + ['#013e62', 'Astronaut Blue'], + ['#013f6a', 'Regal Blue'], + ['#014b43', 'Aqua Deep'], + ['#015e85', 'Orient'], + ['#016162', 'Blue Stone'], + ['#016d39', 'Fun Green'], + ['#01796f', 'Pine Green'], + ['#017987', 'Blue Lagoon'], + ['#01826b', 'Deep Sea'], + ['#01a368', 'Green Haze'], + ['#022d15', 'English Holly'], + ['#02402c', 'Sherwood Green'], + ['#02478e', 'Congress Blue'], + ['#024e46', 'Evening Sea'], + ['#026395', 'Bahama Blue'], + ['#02866f', 'Observatory'], + ['#02a4d3', 'Cerulean'], + ['#03163c', 'Tangaroa'], + ['#032b52', 'Green Vogue'], + ['#036a6e', 'Mosque'], + ['#041004', 'Midnight Moss'], + ['#041322', 'Black Pearl'], + ['#042e4c', 'Blue Whale'], + ['#044022', 'Zuccini'], + ['#044259', 'Teal Blue'], + ['#051040', 'Deep Cove'], + ['#051657', 'Gulf Blue'], + ['#055989', 'Venice Blue'], + ['#056f57', 'Watercourse'], + ['#062a78', 'Catalina Blue'], + ['#063537', 'Tiber'], + ['#069b81', 'Gossamer'], + ['#06a189', 'Niagara'], + ['#073a50', 'Tarawera'], + ['#080110', 'Jaguar'], + ['#081910', 'Black Bean'], + ['#082567', 'Deep Sapphire'], + ['#088370', 'Elf Green'], + ['#08e8de', 'Bright Turquoise'], + ['#092256', 'Downriver'], + ['#09230f', 'Palm Green'], + ['#09255d', 'Madison'], + ['#093624', 'Bottle Green'], + ['#095859', 'Deep Sea Green'], + ['#097f4b', 'Salem'], + ['#0a001c', 'Black Russian'], + ['#0a480d', 'Dark Fern'], + ['#0a6906', 'Japanese Laurel'], + ['#0a6f75', 'Atoll'], + ['#0b0b0b', 'Cod Gray'], + ['#0b0f08', 'Marshland'], + ['#0b1107', 'Gordons Green'], + ['#0b1304', 'Black Forest'], + ['#0b6207', 'San Felix'], + ['#0bda51', 'Malachite'], + ['#0c0b1d', 'Ebony'], + ['#0c0d0f', 'Woodsmoke'], + ['#0c1911', 'Racing Green'], + ['#0c7a79', 'Surfie Green'], + ['#0c8990', 'Blue Chill'], + ['#0d0332', 'Black Rock'], + ['#0d1117', 'Bunker'], + ['#0d1c19', 'Aztec'], + ['#0d2e1c', 'Bush'], + ['#0e0e18', 'Cinder'], + ['#0e2a30', 'Firefly'], + ['#0f2d9e', 'Torea Bay'], + ['#10121d', 'Vulcan'], + ['#101405', 'Green Waterloo'], + ['#105852', 'Eden'], + ['#110c6c', 'Arapawa'], + ['#120a8f', 'Ultramarine'], + ['#123447', 'Elephant'], + ['#126b40', 'Jewel'], + ['#130000', 'Diesel'], + ['#130a06', 'Asphalt'], + ['#13264d', 'Blue Zodiac'], + ['#134f19', 'Parsley'], + ['#140600', 'Nero'], + ['#1450aa', 'Tory Blue'], + ['#151f4c', 'Bunting'], + ['#1560bd', 'Denim'], + ['#15736b', 'Genoa'], + ['#161928', 'Mirage'], + ['#161d10', 'Hunter Green'], + ['#162a40', 'Big Stone'], + ['#163222', 'Celtic'], + ['#16322c', 'Timber Green'], + ['#163531', 'Gable Green'], + ['#171f04', 'Pine Tree'], + ['#175579', 'Chathams Blue'], + ['#182d09', 'Deep Forest Green'], + ['#18587a', 'Blumine'], + ['#19330e', 'Palm Leaf'], + ['#193751', 'Nile Blue'], + ['#1959a8', 'Fun Blue'], + ['#1a1a68', 'Lucky Point'], + ['#1ab385', 'Mountain Meadow'], + ['#1b0245', 'Tolopea'], + ['#1b1035', 'Haiti'], + ['#1b127b', 'Deep Koamaru'], + ['#1b1404', 'Acadia'], + ['#1b2f11', 'Seaweed'], + ['#1b3162', 'Biscay'], + ['#1b659d', 'Matisse'], + ['#1c1208', 'Crowshead'], + ['#1c1e13', 'Rangoon Green'], + ['#1c39bb', 'Persian Blue'], + ['#1c402e', 'Everglade'], + ['#1c7c7d', 'Elm'], + ['#1d6142', 'Green Pea'], + ['#1e0f04', 'Creole'], + ['#1e1609', 'Karaka'], + ['#1e1708', 'El Paso'], + ['#1e385b', 'Cello'], + ['#1e433c', 'Te Papa Green'], + ['#1e90ff', 'Dodger Blue'], + ['#1e9ab0', 'Eastern Blue'], + ['#1f120f', 'Night Rider'], + ['#1fc2c2', 'Java'], + ['#20208d', 'Jacksons Purple'], + ['#202e54', 'Cloud Burst'], + ['#204852', 'Blue Dianne'], + ['#211a0e', 'Eternity'], + ['#220878', 'Deep Blue'], + ['#228b22', 'Forest Green'], + ['#233418', 'Mallard'], + ['#240a40', 'Violet'], + ['#240c02', 'Kilamanjaro'], + ['#242a1d', 'Log Cabin'], + ['#242e16', 'Black Olive'], + ['#24500f', 'Green House'], + ['#251607', 'Graphite'], + ['#251706', 'Cannon Black'], + ['#251f4f', 'Port Gore'], + ['#25272c', 'Shark'], + ['#25311c', 'Green Kelp'], + ['#2596d1', 'Curious Blue'], + ['#260368', 'Paua'], + ['#26056a', 'Paris M'], + ['#261105', 'Wood Bark'], + ['#261414', 'Gondola'], + ['#262335', 'Steel Gray'], + ['#26283b', 'Ebony Clay'], + ['#273a81', 'Bay Of Many'], + ['#27504b', 'Plantation'], + ['#278a5b', 'Eucalyptus'], + ['#281e15', 'Oil'], + ['#283a77', 'Astronaut'], + ['#286acd', 'Mariner'], + ['#290c5e', 'Violent Violet'], + ['#292130', 'Bastille'], + ['#292319', 'Zeus'], + ['#292937', 'Charade'], + ['#297b9a', 'Jelly Bean'], + ['#29ab87', 'Jungle Green'], + ['#2a0359', 'Cherry Pie'], + ['#2a140e', 'Coffee Bean'], + ['#2a2630', 'Baltic Sea'], + ['#2a380b', 'Turtle Green'], + ['#2a52be', 'Cerulean Blue'], + ['#2b0202', 'Sepia Black'], + ['#2b194f', 'Valhalla'], + ['#2b3228', 'Heavy Metal'], + ['#2c0e8c', 'Blue Gem'], + ['#2c1632', 'Revolver'], + ['#2c2133', 'Bleached Cedar'], + ['#2c8c84', 'Lochinvar'], + ['#2d2510', 'Mikado'], + ['#2d383a', 'Outer Space'], + ['#2d569b', 'St Tropaz'], + ['#2e0329', 'Jacaranda'], + ['#2e1905', 'Jacko Bean'], + ['#2e3222', 'Rangitoto'], + ['#2e3f62', 'Rhino'], + ['#2e8b57', 'Sea Green'], + ['#2ebfd4', 'Scooter'], + ['#2f270e', 'Onion'], + ['#2f3cb3', 'Governor Bay'], + ['#2f519e', 'Sapphire'], + ['#2f5a57', 'Spectra'], + ['#2f6168', 'Casal'], + ['#300529', 'Melanzane'], + ['#301f1e', 'Cocoa Brown'], + ['#302a0f', 'Woodrush'], + ['#304b6a', 'San Juan'], + ['#30d5c8', 'Turquoise'], + ['#311c17', 'Eclipse'], + ['#314459', 'Pickled Bluewood'], + ['#315ba1', 'Azure'], + ['#31728d', 'Calypso'], + ['#317d82', 'Paradiso'], + ['#32127a', 'Persian Indigo'], + ['#32293a', 'Blackcurrant'], + ['#323232', 'Mine Shaft'], + ['#325d52', 'Stromboli'], + ['#327c14', 'Bilbao'], + ['#327da0', 'Astral'], + ['#33036b', 'Christalle'], + ['#33292f', 'Thunder'], + ['#33cc99', 'Shamrock'], + ['#341515', 'Tamarind'], + ['#350036', 'Mardi Gras'], + ['#350e42', 'Valentino'], + ['#350e57', 'Jagger'], + ['#353542', 'Tuna'], + ['#354e8c', 'Chambray'], + ['#363050', 'Martinique'], + ['#363534', 'Tuatara'], + ['#363c0d', 'Waiouru'], + ['#36747d', 'Ming'], + ['#368716', 'La Palma'], + ['#370202', 'Chocolate'], + ['#371d09', 'Clinker'], + ['#37290e', 'Brown Tumbleweed'], + ['#373021', 'Birch'], + ['#377475', 'Oracle'], + ['#380474', 'Blue Diamond'], + ['#381a51', 'Grape'], + ['#383533', 'Dune'], + ['#384555', 'Oxford Blue'], + ['#384910', 'Clover'], + ['#394851', 'Limed Spruce'], + ['#396413', 'Dell'], + ['#3a0020', 'Toledo'], + ['#3a2010', 'Sambuca'], + ['#3a2a6a', 'Jacarta'], + ['#3a686c', 'William'], + ['#3a6a47', 'Killarney'], + ['#3ab09e', 'Keppel'], + ['#3b000b', 'Temptress'], + ['#3b0910', 'Aubergine'], + ['#3b1f1f', 'Jon'], + ['#3b2820', 'Treehouse'], + ['#3b7a57', 'Amazon'], + ['#3b91b4', 'Boston Blue'], + ['#3c0878', 'Windsor'], + ['#3c1206', 'Rebel'], + ['#3c1f76', 'Meteorite'], + ['#3c2005', 'Dark Ebony'], + ['#3c3910', 'Camouflage'], + ['#3c4151', 'Bright Gray'], + ['#3c4443', 'Cape Cod'], + ['#3c493a', 'Lunar Green'], + ['#3d0c02', 'Bean '], + ['#3d2b1f', 'Bistre'], + ['#3d7d52', 'Goblin'], + ['#3e0480', 'Kingfisher Daisy'], + ['#3e1c14', 'Cedar'], + ['#3e2b23', 'English Walnut'], + ['#3e2c1c', 'Black Marlin'], + ['#3e3a44', 'Ship Gray'], + ['#3eabbf', 'Pelorous'], + ['#3f2109', 'Bronze'], + ['#3f2500', 'Cola'], + ['#3f3002', 'Madras'], + ['#3f307f', 'Minsk'], + ['#3f4c3a', 'Cabbage Pont'], + ['#3f583b', 'Tom Thumb'], + ['#3f5d53', 'Mineral Green'], + ['#3fc1aa', 'Puerto Rico'], + ['#3fff00', 'Harlequin'], + ['#401801', 'Brown Pod'], + ['#40291d', 'Cork'], + ['#403b38', 'Masala'], + ['#403d19', 'Thatch Green'], + ['#405169', 'Fiord'], + ['#40826d', 'Viridian'], + ['#40a860', 'Chateau Green'], + ['#410056', 'Ripe Plum'], + ['#411f10', 'Paco'], + ['#412010', 'Deep Oak'], + ['#413c37', 'Merlin'], + ['#414257', 'Gun Powder'], + ['#414c7d', 'East Bay'], + ['#4169e1', 'Royal Blue'], + ['#41aa78', 'Ocean Green'], + ['#420303', 'Burnt Maroon'], + ['#423921', 'Lisbon Brown'], + ['#427977', 'Faded Jade'], + ['#431560', 'Scarlet Gum'], + ['#433120', 'Iroko'], + ['#433e37', 'Armadillo'], + ['#434c59', 'River Bed'], + ['#436a0d', 'Green Leaf'], + ['#44012d', 'Barossa'], + ['#441d00', 'Morocco Brown'], + ['#444954', 'Mako'], + ['#454936', 'Kelp'], + ['#456cac', 'San Marino'], + ['#45b1e8', 'Picton Blue'], + ['#460b41', 'Loulou'], + ['#462425', 'Crater Brown'], + ['#465945', 'Gray Asparagus'], + ['#4682b4', 'Steel Blue'], + ['#480404', 'Rustic Red'], + ['#480607', 'Bulgarian Rose'], + ['#480656', 'Clairvoyant'], + ['#481c1c', 'Cocoa Bean'], + ['#483131', 'Woody Brown'], + ['#483c32', 'Taupe'], + ['#49170c', 'Van Cleef'], + ['#492615', 'Brown Derby'], + ['#49371b', 'Metallic Bronze'], + ['#495400', 'Verdun Green'], + ['#496679', 'Blue Bayoux'], + ['#497183', 'Bismark'], + ['#4a2a04', 'Bracken'], + ['#4a3004', 'Deep Bronze'], + ['#4a3c30', 'Mondo'], + ['#4a4244', 'Tundora'], + ['#4a444b', 'Gravel'], + ['#4a4e5a', 'Trout'], + ['#4b0082', 'Pigment Indigo'], + ['#4b5d52', 'Nandor'], + ['#4c3024', 'Saddle'], + ['#4c4f56', 'Abbey'], + ['#4d0135', 'Blackberry'], + ['#4d0a18', 'Cab Sav'], + ['#4d1e01', 'Indian Tan'], + ['#4d282d', 'Cowboy'], + ['#4d282e', 'Livid Brown'], + ['#4d3833', 'Rock'], + ['#4d3d14', 'Punga'], + ['#4d400f', 'Bronzetone'], + ['#4d5328', 'Woodland'], + ['#4e0606', 'Mahogany'], + ['#4e2a5a', 'Bossanova'], + ['#4e3b41', 'Matterhorn'], + ['#4e420c', 'Bronze Olive'], + ['#4e4562', 'Mulled Wine'], + ['#4e6649', 'Axolotl'], + ['#4e7f9e', 'Wedgewood'], + ['#4eabd1', 'Shakespeare'], + ['#4f1c70', 'Honey Flower'], + ['#4f2398', 'Daisy Bush'], + ['#4f69c6', 'Indigo'], + ['#4f7942', 'Fern Green'], + ['#4f9d5d', 'Fruit Salad'], + ['#4fa83d', 'Apple'], + ['#504351', 'Mortar'], + ['#507096', 'Kashmir Blue'], + ['#507672', 'Cutty Sark'], + ['#50c878', 'Emerald'], + ['#514649', 'Emperor'], + ['#516e3d', 'Chalet Green'], + ['#517c66', 'Como'], + ['#51808f', 'Smalt Blue'], + ['#52001f', 'Castro'], + ['#520c17', 'Maroon Oak'], + ['#523c94', 'Gigas'], + ['#533455', 'Voodoo'], + ['#534491', 'Victoria'], + ['#53824b', 'Hippie Green'], + ['#541012', 'Heath'], + ['#544333', 'Judge Gray'], + ['#54534d', 'Fuscous Gray'], + ['#549019', 'Vida Loca'], + ['#55280c', 'Cioccolato'], + ['#555b10', 'Saratoga'], + ['#556d56', 'Finlandia'], + ['#5590d9', 'Havelock Blue'], + ['#56b4be', 'Fountain Blue'], + ['#578363', 'Spring Leaves'], + ['#583401', 'Saddle Brown'], + ['#585562', 'Scarpa Flow'], + ['#587156', 'Cactus'], + ['#589aaf', 'Hippie Blue'], + ['#591d35', 'Wine Berry'], + ['#592804', 'Brown Bramble'], + ['#593737', 'Congo Brown'], + ['#594433', 'Millbrook'], + ['#5a6e9c', 'Waikawa Gray'], + ['#5a87a0', 'Horizon'], + ['#5b3013', 'Jambalaya'], + ['#5c0120', 'Bordeaux'], + ['#5c0536', 'Mulberry Wood'], + ['#5c2e01', 'Carnaby Tan'], + ['#5c5d75', 'Comet'], + ['#5d1e0f', 'Redwood'], + ['#5d4c51', 'Don Juan'], + ['#5d5c58', 'Chicago'], + ['#5d5e37', 'Verdigris'], + ['#5d7747', 'Dingley'], + ['#5da19f', 'Breaker Bay'], + ['#5e483e', 'Kabul'], + ['#5e5d3b', 'Hemlock'], + ['#5f3d26', 'Irish Coffee'], + ['#5f5f6e', 'Mid Gray'], + ['#5f6672', 'Shuttle Gray'], + ['#5fa777', 'Aqua Forest'], + ['#5fb3ac', 'Tradewind'], + ['#604913', 'Horses Neck'], + ['#605b73', 'Smoky'], + ['#606e68', 'Corduroy'], + ['#6093d1', 'Danube'], + ['#612718', 'Espresso'], + ['#614051', 'Eggplant'], + ['#615d30', 'Costa Del Sol'], + ['#61845f', 'Glade Green'], + ['#622f30', 'Buccaneer'], + ['#623f2d', 'Quincy'], + ['#624e9a', 'Butterfly Bush'], + ['#625119', 'West Coast'], + ['#626649', 'Finch'], + ['#639a8f', 'Patina'], + ['#63b76c', 'Fern'], + ['#6456b7', 'Blue Violet'], + ['#646077', 'Dolphin'], + ['#646463', 'Storm Dust'], + ['#646a54', 'Siam'], + ['#646e75', 'Nevada'], + ['#6495ed', 'Cornflower Blue'], + ['#64ccdb', 'Viking'], + ['#65000b', 'Rosewood'], + ['#651a14', 'Cherrywood'], + ['#652dc1', 'Purple Heart'], + ['#657220', 'Fern Frond'], + ['#65745d', 'Willow Grove'], + ['#65869f', 'Hoki'], + ['#660045', 'Pompadour'], + ['#660099', 'Purple'], + ['#66023c', 'Tyrian Purple'], + ['#661010', 'Dark Tan'], + ['#66b58f', 'Silver Tree'], + ['#66ff00', 'Bright Green'], + ['#66ff66', 'Screamin Green'], + ['#67032d', 'Black Rose'], + ['#675fa6', 'Scampi'], + ['#676662', 'Ironside Gray'], + ['#678975', 'Viridian Green'], + ['#67a712', 'Christi'], + ['#683600', 'Nutmeg Wood Finish'], + ['#685558', 'Zambezi'], + ['#685e6e', 'Salt Box'], + ['#692545', 'Tawny Port'], + ['#692d54', 'Finn'], + ['#695f62', 'Scorpion'], + ['#697e9a', 'Lynch'], + ['#6a442e', 'Spice'], + ['#6a5d1b', 'Himalaya'], + ['#6a6051', 'Soya Bean'], + ['#6b2a14', 'Hairy Heath'], + ['#6b3fa0', 'Royal Purple'], + ['#6b4e31', 'Shingle Fawn'], + ['#6b5755', 'Dorado'], + ['#6b8ba2', 'Bermuda Gray'], + ['#6b8e23', 'Olive Drab'], + ['#6c3082', 'Eminence'], + ['#6cdae7', 'Turquoise Blue'], + ['#6d0101', 'Lonestar'], + ['#6d5e54', 'Pine Cone'], + ['#6d6c6c', 'Dove Gray'], + ['#6d9292', 'Juniper'], + ['#6d92a1', 'Gothic'], + ['#6e0902', 'Red Oxide'], + ['#6e1d14', 'Moccaccino'], + ['#6e4826', 'Pickled Bean'], + ['#6e4b26', 'Dallas'], + ['#6e6d57', 'Kokoda'], + ['#6e7783', 'Pale Sky'], + ['#6f440c', 'Cafe Royale'], + ['#6f6a61', 'Flint'], + ['#6f8e63', 'Highland'], + ['#6f9d02', 'Limeade'], + ['#6fd0c5', 'Downy'], + ['#701c1c', 'Persian Plum'], + ['#704214', 'Sepia'], + ['#704a07', 'Antique Bronze'], + ['#704f50', 'Ferra'], + ['#706555', 'Coffee'], + ['#708090', 'Slate Gray'], + ['#711a00', 'Cedar Wood Finish'], + ['#71291d', 'Metallic Copper'], + ['#714693', 'Affair'], + ['#714ab2', 'Studio'], + ['#715d47', 'Tobacco Brown'], + ['#716338', 'Yellow Metal'], + ['#716b56', 'Peat'], + ['#716e10', 'Olivetone'], + ['#717486', 'Storm Gray'], + ['#718080', 'Sirocco'], + ['#71d9e2', 'Aquamarine Blue'], + ['#72010f', 'Venetian Red'], + ['#724a2f', 'Old Copper'], + ['#726d4e', 'Go Ben'], + ['#727b89', 'Raven'], + ['#731e8f', 'Seance'], + ['#734a12', 'Raw Umber'], + ['#736c9f', 'Kimberly'], + ['#736d58', 'Crocodile'], + ['#737829', 'Crete'], + ['#738678', 'Xanadu'], + ['#74640d', 'Spicy Mustard'], + ['#747d63', 'Limed Ash'], + ['#747d83', 'Rolling Stone'], + ['#748881', 'Blue Smoke'], + ['#749378', 'Laurel'], + ['#74c365', 'Mantis'], + ['#755a57', 'Russett'], + ['#7563a8', 'Deluge'], + ['#76395d', 'Cosmic'], + ['#7666c6', 'Blue Marguerite'], + ['#76bd17', 'Lima'], + ['#76d7ea', 'Sky Blue'], + ['#770f05', 'Dark Burgundy'], + ['#771f1f', 'Crown Of Thorns'], + ['#773f1a', 'Walnut'], + ['#776f61', 'Pablo'], + ['#778120', 'Pacifika'], + ['#779e86', 'Oxley'], + ['#77dd77', 'Pastel Green'], + ['#780109', 'Japanese Maple'], + ['#782d19', 'Mocha'], + ['#782f16', 'Peanut'], + ['#78866b', 'Camouflage Green'], + ['#788a25', 'Wasabi'], + ['#788bba', 'Ship Cove'], + ['#78a39c', 'Sea Nymph'], + ['#795d4c', 'Roman Coffee'], + ['#796878', 'Old Lavender'], + ['#796989', 'Rum'], + ['#796a78', 'Fedora'], + ['#796d62', 'Sandstone'], + ['#79deec', 'Spray'], + ['#7a013a', 'Siren'], + ['#7a58c1', 'Fuchsia Blue'], + ['#7a7a7a', 'Boulder'], + ['#7a89b8', 'Wild Blue Yonder'], + ['#7ac488', 'De York'], + ['#7b3801', 'Red Beech'], + ['#7b3f00', 'Cinnamon'], + ['#7b6608', 'Yukon Gold'], + ['#7b7874', 'Tapa'], + ['#7b7c94', 'Waterloo '], + ['#7b8265', 'Flax Smoke'], + ['#7b9f80', 'Amulet'], + ['#7ba05b', 'Asparagus'], + ['#7c1c05', 'Kenyan Copper'], + ['#7c7631', 'Pesto'], + ['#7c778a', 'Topaz'], + ['#7c7b7a', 'Concord'], + ['#7c7b82', 'Jumbo'], + ['#7c881a', 'Trendy Green'], + ['#7ca1a6', 'Gumbo'], + ['#7cb0a1', 'Acapulco'], + ['#7cb7bb', 'Neptune'], + ['#7d2c14', 'Pueblo'], + ['#7da98d', 'Bay Leaf'], + ['#7dc8f7', 'Malibu'], + ['#7dd8c6', 'Bermuda'], + ['#7e3a15', 'Copper Canyon'], + ['#7f1734', 'Claret'], + ['#7f3a02', 'Peru Tan'], + ['#7f626d', 'Falcon'], + ['#7f7589', 'Mobster'], + ['#7f76d3', 'Moody Blue'], + ['#7fff00', 'Chartreuse'], + ['#7fffd4', 'Aquamarine'], + ['#800000', 'Maroon'], + ['#800b47', 'Rose Bud Cherry'], + ['#801818', 'Falu Red'], + ['#80341f', 'Red Robin'], + ['#803790', 'Vivid Violet'], + ['#80461b', 'Russet'], + ['#807e79', 'Friar Gray'], + ['#808000', 'Olive'], + ['#808080', 'Gray'], + ['#80b3ae', 'Gulf Stream'], + ['#80b3c4', 'Glacier'], + ['#80ccea', 'Seagull'], + ['#81422c', 'Nutmeg'], + ['#816e71', 'Spicy Pink'], + ['#817377', 'Empress'], + ['#819885', 'Spanish Green'], + ['#826f65', 'Sand Dune'], + ['#828685', 'Gunsmoke'], + ['#828f72', 'Battleship Gray'], + ['#831923', 'Merlot'], + ['#837050', 'Shadow'], + ['#83aa5d', 'Chelsea Cucumber'], + ['#83d0c6', 'Monte Carlo'], + ['#843179', 'Plum'], + ['#84a0a0', 'Granny Smith'], + ['#8581d9', 'Chetwode Blue'], + ['#858470', 'Bandicoot'], + ['#859faf', 'Bali Hai'], + ['#85c4cc', 'Half Baked'], + ['#860111', 'Red Devil'], + ['#863c3c', 'Lotus'], + ['#86483c', 'Ironstone'], + ['#864d1e', 'Bull Shot'], + ['#86560a', 'Rusty Nail'], + ['#868974', 'Bitter'], + ['#86949f', 'Regent Gray'], + ['#871550', 'Disco'], + ['#87756e', 'Americano'], + ['#877c7b', 'Hurricane'], + ['#878d91', 'Oslo Gray'], + ['#87ab39', 'Sushi'], + ['#885342', 'Spicy Mix'], + ['#886221', 'Kumera'], + ['#888387', 'Suva Gray'], + ['#888d65', 'Avocado'], + ['#893456', 'Camelot'], + ['#893843', 'Solid Pink'], + ['#894367', 'Cannon Pink'], + ['#897d6d', 'Makara'], + ['#8a3324', 'Burnt Umber'], + ['#8a73d6', 'True V'], + ['#8a8360', 'Clay Creek'], + ['#8a8389', 'Monsoon'], + ['#8a8f8a', 'Stack'], + ['#8ab9f1', 'Jordy Blue'], + ['#8b00ff', 'Electric Violet'], + ['#8b0723', 'Monarch'], + ['#8b6b0b', 'Corn Harvest'], + ['#8b8470', 'Olive Haze'], + ['#8b847e', 'Schooner'], + ['#8b8680', 'Natural Gray'], + ['#8b9c90', 'Mantle'], + ['#8b9fee', 'Portage'], + ['#8ba690', 'Envy'], + ['#8ba9a5', 'Cascade'], + ['#8be6d8', 'Riptide'], + ['#8c055e', 'Cardinal Pink'], + ['#8c472f', 'Mule Fawn'], + ['#8c5738', 'Potters Clay'], + ['#8c6495', 'Trendy Pink'], + ['#8d0226', 'Paprika'], + ['#8d3d38', 'Sanguine Brown'], + ['#8d3f3f', 'Tosca'], + ['#8d7662', 'Cement'], + ['#8d8974', 'Granite Green'], + ['#8d90a1', 'Manatee'], + ['#8da8cc', 'Polo Blue'], + ['#8e0000', 'Red Berry'], + ['#8e4d1e', 'Rope'], + ['#8e6f70', 'Opium'], + ['#8e775e', 'Domino'], + ['#8e8190', 'Mamba'], + ['#8eabc1', 'Nepal'], + ['#8f021c', 'Pohutukawa'], + ['#8f3e33', 'El Salva'], + ['#8f4b0e', 'Korma'], + ['#8f8176', 'Squirrel'], + ['#8fd6b4', 'Vista Blue'], + ['#900020', 'Burgundy'], + ['#901e1e', 'Old Brick'], + ['#907874', 'Hemp'], + ['#907b71', 'Almond Frost'], + ['#908d39', 'Sycamore'], + ['#92000a', 'Sangria'], + ['#924321', 'Cumin'], + ['#926f5b', 'Beaver'], + ['#928573', 'Stonewall'], + ['#928590', 'Venus'], + ['#9370db', 'Medium Purple'], + ['#93ccea', 'Cornflower'], + ['#93dfb8', 'Algae Green'], + ['#944747', 'Copper Rust'], + ['#948771', 'Arrowtown'], + ['#950015', 'Scarlett'], + ['#956387', 'Strikemaster'], + ['#959396', 'Mountain Mist'], + ['#960018', 'Carmine'], + ['#964b00', 'Brown'], + ['#967059', 'Leather'], + ['#9678b6', "Purple Mountain's Majesty"], + ['#967bb6', 'Lavender Purple'], + ['#96a8a1', 'Pewter'], + ['#96bbab', 'Summer Green'], + ['#97605d', 'Au Chico'], + ['#9771b5', 'Wisteria'], + ['#97cd2d', 'Atlantis'], + ['#983d61', 'Vin Rouge'], + ['#9874d3', 'Lilac Bush'], + ['#98777b', 'Bazaar'], + ['#98811b', 'Hacienda'], + ['#988d77', 'Pale Oyster'], + ['#98ff98', 'Mint Green'], + ['#990066', 'Fresh Eggplant'], + ['#991199', 'Violet Eggplant'], + ['#991613', 'Tamarillo'], + ['#991b07', 'Totem Pole'], + ['#996666', 'Copper Rose'], + ['#9966cc', 'Amethyst'], + ['#997a8d', 'Mountbatten Pink'], + ['#9999cc', 'Blue Bell'], + ['#9a3820', 'Prairie Sand'], + ['#9a6e61', 'Toast'], + ['#9a9577', 'Gurkha'], + ['#9ab973', 'Olivine'], + ['#9ac2b8', 'Shadow Green'], + ['#9b4703', 'Oregon'], + ['#9b9e8f', 'Lemon Grass'], + ['#9c3336', 'Stiletto'], + ['#9d5616', 'Hawaiian Tan'], + ['#9dacb7', 'Gull Gray'], + ['#9dc209', 'Pistachio'], + ['#9de093', 'Granny Smith Apple'], + ['#9de5ff', 'Anakiwa'], + ['#9e5302', 'Chelsea Gem'], + ['#9e5b40', 'Sepia Skin'], + ['#9ea587', 'Sage'], + ['#9ea91f', 'Citron'], + ['#9eb1cd', 'Rock Blue'], + ['#9edee0', 'Morning Glory'], + ['#9f381d', 'Cognac'], + ['#9f821c', 'Reef Gold'], + ['#9f9f9c', 'Star Dust'], + ['#9fa0b1', 'Santas Gray'], + ['#9fd7d3', 'Sinbad'], + ['#9fdd8c', 'Feijoa'], + ['#a02712', 'Tabasco'], + ['#a1750d', 'Buttered Rum'], + ['#a1adb5', 'Hit Gray'], + ['#a1c50a', 'Citrus'], + ['#a1dad7', 'Aqua Island'], + ['#a1e9de', 'Water Leaf'], + ['#a2006d', 'Flirt'], + ['#a23b6c', 'Rouge'], + ['#a26645', 'Cape Palliser'], + ['#a2aab3', 'Gray Chateau'], + ['#a2aeab', 'Edward'], + ['#a3807b', 'Pharlap'], + ['#a397b4', 'Amethyst Smoke'], + ['#a3e3ed', 'Blizzard Blue'], + ['#a4a49d', 'Delta'], + ['#a4a6d3', 'Wistful'], + ['#a4af6e', 'Green Smoke'], + ['#a50b5e', 'Jazzberry Jam'], + ['#a59b91', 'Zorba'], + ['#a5cb0c', 'Bahia'], + ['#a62f20', 'Roof Terracotta'], + ['#a65529', 'Paarl'], + ['#a68b5b', 'Barley Corn'], + ['#a69279', 'Donkey Brown'], + ['#a6a29a', 'Dawn'], + ['#a72525', 'Mexican Red'], + ['#a7882c', 'Luxor Gold'], + ['#a85307', 'Rich Gold'], + ['#a86515', 'Reno Sand'], + ['#a86b6b', 'Coral Tree'], + ['#a8989b', 'Dusty Gray'], + ['#a899e6', 'Dull Lavender'], + ['#a8a589', 'Tallow'], + ['#a8ae9c', 'Bud'], + ['#a8af8e', 'Locust'], + ['#a8bd9f', 'Norway'], + ['#a8e3bd', 'Chinook'], + ['#a9a491', 'Gray Olive'], + ['#a9acb6', 'Aluminium'], + ['#a9b2c3', 'Cadet Blue'], + ['#a9b497', 'Schist'], + ['#a9bdbf', 'Tower Gray'], + ['#a9bef2', 'Perano'], + ['#a9c6c2', 'Opal'], + ['#aa375a', 'Night Shadz'], + ['#aa4203', 'Fire'], + ['#aa8b5b', 'Muesli'], + ['#aa8d6f', 'Sandal'], + ['#aaa5a9', 'Shady Lady'], + ['#aaa9cd', 'Logan'], + ['#aaabb7', 'Spun Pearl'], + ['#aad6e6', 'Regent St Blue'], + ['#aaf0d1', 'Magic Mint'], + ['#ab0563', 'Lipstick'], + ['#ab3472', 'Royal Heath'], + ['#ab917a', 'Sandrift'], + ['#aba0d9', 'Cold Purple'], + ['#aba196', 'Bronco'], + ['#ac8a56', 'Limed Oak'], + ['#ac91ce', 'East Side'], + ['#ac9e22', 'Lemon Ginger'], + ['#aca494', 'Napa'], + ['#aca586', 'Hillary'], + ['#aca59f', 'Cloudy'], + ['#acacac', 'Silver Chalice'], + ['#acb78e', 'Swamp Green'], + ['#accbb1', 'Spring Rain'], + ['#acdd4d', 'Conifer'], + ['#ace1af', 'Celadon'], + ['#ad781b', 'Mandalay'], + ['#adbed1', 'Casper'], + ['#addfad', 'Moss Green'], + ['#ade6c4', 'Padua'], + ['#adff2f', 'Green Yellow'], + ['#ae4560', 'Hippie Pink'], + ['#ae6020', 'Desert'], + ['#ae809e', 'Bouquet'], + ['#af4035', 'Medium Carmine'], + ['#af4d43', 'Apple Blossom'], + ['#af593e', 'Brown Rust'], + ['#af8751', 'Driftwood'], + ['#af8f2c', 'Alpine'], + ['#af9f1c', 'Lucky'], + ['#afa09e', 'Martini'], + ['#afb1b8', 'Bombay'], + ['#afbdd9', 'Pigeon Post'], + ['#b04c6a', 'Cadillac'], + ['#b05d54', 'Matrix'], + ['#b05e81', 'Tapestry'], + ['#b06608', 'Mai Tai'], + ['#b09a95', 'Del Rio'], + ['#b0e0e6', 'Powder Blue'], + ['#b0e313', 'Inch Worm'], + ['#b10000', 'Bright Red'], + ['#b14a0b', 'Vesuvius'], + ['#b1610b', 'Pumpkin Skin'], + ['#b16d52', 'Santa Fe'], + ['#b19461', 'Teak'], + ['#b1e2c1', 'Fringy Flower'], + ['#b1f4e7', 'Ice Cold'], + ['#b20931', 'Shiraz'], + ['#b2a1ea', 'Biloba Flower'], + ['#b32d29', 'Tall Poppy'], + ['#b35213', 'Fiery Orange'], + ['#b38007', 'Hot Toddy'], + ['#b3af95', 'Taupe Gray'], + ['#b3c110', 'La Rioja'], + ['#b43332', 'Well Read'], + ['#b44668', 'Blush'], + ['#b4cfd3', 'Jungle Mist'], + ['#b57281', 'Turkish Rose'], + ['#b57edc', 'Lavender'], + ['#b5a27f', 'Mongoose'], + ['#b5b35c', 'Olive Green'], + ['#b5d2ce', 'Jet Stream'], + ['#b5ecdf', 'Cruise'], + ['#b6316c', 'Hibiscus'], + ['#b69d98', 'Thatch'], + ['#b6b095', 'Heathered Gray'], + ['#b6baa4', 'Eagle'], + ['#b6d1ea', 'Spindle'], + ['#b6d3bf', 'Gum Leaf'], + ['#b7410e', 'Rust'], + ['#b78e5c', 'Muddy Waters'], + ['#b7a214', 'Sahara'], + ['#b7a458', 'Husk'], + ['#b7b1b1', 'Nobel'], + ['#b7c3d0', 'Heather'], + ['#b7f0be', 'Madang'], + ['#b81104', 'Milano Red'], + ['#b87333', 'Copper'], + ['#b8b56a', 'Gimblet'], + ['#b8c1b1', 'Green Spring'], + ['#b8c25d', 'Celery'], + ['#b8e0f9', 'Sail'], + ['#b94e48', 'Chestnut'], + ['#b95140', 'Crail'], + ['#b98d28', 'Marigold'], + ['#b9c46a', 'Wild Willow'], + ['#b9c8ac', 'Rainee'], + ['#ba0101', 'Guardsman Red'], + ['#ba450c', 'Rock Spray'], + ['#ba6f1e', 'Bourbon'], + ['#ba7f03', 'Pirate Gold'], + ['#bab1a2', 'Nomad'], + ['#bac7c9', 'Submarine'], + ['#baeef9', 'Charlotte'], + ['#bb3385', 'Medium Red Violet'], + ['#bb8983', 'Brandy Rose'], + ['#bbd009', 'Rio Grande'], + ['#bbd7c1', 'Surf'], + ['#bcc9c2', 'Powder Ash'], + ['#bd5e2e', 'Tuscany'], + ['#bd978e', 'Quicksand'], + ['#bdb1a8', 'Silk'], + ['#bdb2a1', 'Malta'], + ['#bdb3c7', 'Chatelle'], + ['#bdbbd7', 'Lavender Gray'], + ['#bdbdc6', 'French Gray'], + ['#bdc8b3', 'Clay Ash'], + ['#bdc9ce', 'Loblolly'], + ['#bdedfd', 'French Pass'], + ['#bea6c3', 'London Hue'], + ['#beb5b7', 'Pink Swan'], + ['#bede0d', 'Fuego'], + ['#bf5500', 'Rose Of Sharon'], + ['#bfb8b0', 'Tide'], + ['#bfbed8', 'Blue Haze'], + ['#bfc1c2', 'Silver Sand'], + ['#bfc921', 'Key Lime Pie'], + ['#bfdbe2', 'Ziggurat'], + ['#bfff00', 'Lime'], + ['#c02b18', 'Thunderbird'], + ['#c04737', 'Mojo'], + ['#c08081', 'Old Rose'], + ['#c0c0c0', 'Silver'], + ['#c0d3b9', 'Pale Leaf'], + ['#c0d8b6', 'Pixie Green'], + ['#c1440e', 'Tia Maria'], + ['#c154c1', 'Fuchsia Pink'], + ['#c1a004', 'Buddha Gold'], + ['#c1b7a4', 'Bison Hide'], + ['#c1bab0', 'Tea'], + ['#c1becd', 'Gray Suit'], + ['#c1d7b0', 'Sprout'], + ['#c1f07c', 'Sulu'], + ['#c26b03', 'Indochine'], + ['#c2955d', 'Twine'], + ['#c2bdb6', 'Cotton Seed'], + ['#c2cac4', 'Pumice'], + ['#c2e8e5', 'Jagged Ice'], + ['#c32148', 'Maroon Flush'], + ['#c3b091', 'Indian Khaki'], + ['#c3bfc1', 'Pale Slate'], + ['#c3c3bd', 'Gray Nickel'], + ['#c3cde6', 'Periwinkle Gray'], + ['#c3d1d1', 'Tiara'], + ['#c3ddf9', 'Tropical Blue'], + ['#c41e3a', 'Cardinal'], + ['#c45655', 'Fuzzy Wuzzy Brown'], + ['#c45719', 'Orange Roughy'], + ['#c4c4bc', 'Mist Gray'], + ['#c4d0b0', 'Coriander'], + ['#c4f4eb', 'Mint Tulip'], + ['#c54b8c', 'Mulberry'], + ['#c59922', 'Nugget'], + ['#c5994b', 'Tussock'], + ['#c5dbca', 'Sea Mist'], + ['#c5e17a', 'Yellow Green'], + ['#c62d42', 'Brick Red'], + ['#c6726b', 'Contessa'], + ['#c69191', 'Oriental Pink'], + ['#c6a84b', 'Roti'], + ['#c6c3b5', 'Ash'], + ['#c6c8bd', 'Kangaroo'], + ['#c6e610', 'Las Palmas'], + ['#c7031e', 'Monza'], + ['#c71585', 'Red Violet'], + ['#c7bca2', 'Coral Reef'], + ['#c7c1ff', 'Melrose'], + ['#c7c4bf', 'Cloud'], + ['#c7c9d5', 'Ghost'], + ['#c7cd90', 'Pine Glade'], + ['#c7dde5', 'Botticelli'], + ['#c88a65', 'Antique Brass'], + ['#c8a2c8', 'Lilac'], + ['#c8a528', 'Hokey Pokey'], + ['#c8aabf', 'Lily'], + ['#c8b568', 'Laser'], + ['#c8e3d7', 'Edgewater'], + ['#c96323', 'Piper'], + ['#c99415', 'Pizza'], + ['#c9a0dc', 'Light Wisteria'], + ['#c9b29b', 'Rodeo Dust'], + ['#c9b35b', 'Sundance'], + ['#c9b93b', 'Earls Green'], + ['#c9c0bb', 'Silver Rust'], + ['#c9d9d2', 'Conch'], + ['#c9ffa2', 'Reef'], + ['#c9ffe5', 'Aero Blue'], + ['#ca3435', 'Flush Mahogany'], + ['#cabb48', 'Turmeric'], + ['#cadcd4', 'Paris White'], + ['#cae00d', 'Bitter Lemon'], + ['#cae6da', 'Skeptic'], + ['#cb8fa9', 'Viola'], + ['#cbcab6', 'Foggy Gray'], + ['#cbd3b0', 'Green Mist'], + ['#cbdbd6', 'Nebula'], + ['#cc3333', 'Persian Red'], + ['#cc5500', 'Burnt Orange'], + ['#cc7722', 'Ochre'], + ['#cc8899', 'Puce'], + ['#cccaa8', 'Thistle Green'], + ['#ccccff', 'Periwinkle'], + ['#ccff00', 'Electric Lime'], + ['#cd5700', 'Tenn'], + ['#cd5c5c', 'Chestnut Rose'], + ['#cd8429', 'Brandy Punch'], + ['#cdf4ff', 'Onahau'], + ['#ceb98f', 'Sorrell Brown'], + ['#cebaba', 'Cold Turkey'], + ['#cec291', 'Yuma'], + ['#cec7a7', 'Chino'], + ['#cfa39d', 'Eunry'], + ['#cfb53b', 'Old Gold'], + ['#cfdccf', 'Tasman'], + ['#cfe5d2', 'Surf Crest'], + ['#cff9f3', 'Humming Bird'], + ['#cffaf4', 'Scandal'], + ['#d05f04', 'Red Stage'], + ['#d06da1', 'Hopbush'], + ['#d07d12', 'Meteor'], + ['#d0bef8', 'Perfume'], + ['#d0c0e5', 'Prelude'], + ['#d0f0c0', 'Tea Green'], + ['#d18f1b', 'Geebung'], + ['#d1bea8', 'Vanilla'], + ['#d1c6b4', 'Soft Amber'], + ['#d1d2ca', 'Celeste'], + ['#d1d2dd', 'Mischka'], + ['#d1e231', 'Pear'], + ['#d2691e', 'Hot Cinnamon'], + ['#d27d46', 'Raw Sienna'], + ['#d29eaa', 'Careys Pink'], + ['#d2b48c', 'Tan'], + ['#d2da97', 'Deco'], + ['#d2f6de', 'Blue Romance'], + ['#d2f8b0', 'Gossip'], + ['#d3cbba', 'Sisal'], + ['#d3cdc5', 'Swirl'], + ['#d47494', 'Charm'], + ['#d4b6af', 'Clam Shell'], + ['#d4bf8d', 'Straw'], + ['#d4c4a8', 'Akaroa'], + ['#d4cd16', 'Bird Flower'], + ['#d4d7d9', 'Iron'], + ['#d4dfe2', 'Geyser'], + ['#d4e2fc', 'Hawkes Blue'], + ['#d54600', 'Grenadier'], + ['#d591a4', 'Can Can'], + ['#d59a6f', 'Whiskey'], + ['#d5d195', 'Winter Hazel'], + ['#d5f6e3', 'Granny Apple'], + ['#d69188', 'My Pink'], + ['#d6c562', 'Tacha'], + ['#d6cef6', 'Moon Raker'], + ['#d6d6d1', 'Quill Gray'], + ['#d6ffdb', 'Snowy Mint'], + ['#d7837f', 'New York Pink'], + ['#d7c498', 'Pavlova'], + ['#d7d0ff', 'Fog'], + ['#d84437', 'Valencia'], + ['#d87c63', 'Japonica'], + ['#d8bfd8', 'Thistle'], + ['#d8c2d5', 'Maverick'], + ['#d8fcfa', 'Foam'], + ['#d94972', 'Cabaret'], + ['#d99376', 'Burning Sand'], + ['#d9b99b', 'Cameo'], + ['#d9d6cf', 'Timberwolf'], + ['#d9dcc1', 'Tana'], + ['#d9e4f5', 'Link Water'], + ['#d9f7ff', 'Mabel'], + ['#da3287', 'Cerise'], + ['#da5b38', 'Flame Pea'], + ['#da6304', 'Bamboo'], + ['#da6a41', 'Red Damask'], + ['#da70d6', 'Orchid'], + ['#da8a67', 'Copperfield'], + ['#daa520', 'Golden Grass'], + ['#daecd6', 'Zanah'], + ['#daf4f0', 'Iceberg'], + ['#dafaff', 'Oyster Bay'], + ['#db5079', 'Cranberry'], + ['#db9690', 'Petite Orchid'], + ['#db995e', 'Di Serria'], + ['#dbdbdb', 'Alto'], + ['#dbfff8', 'Frosted Mint'], + ['#dc143c', 'Crimson'], + ['#dc4333', 'Punch'], + ['#dcb20c', 'Galliano'], + ['#dcb4bc', 'Blossom'], + ['#dcd747', 'Wattle'], + ['#dcd9d2', 'Westar'], + ['#dcddcc', 'Moon Mist'], + ['#dcedb4', 'Caper'], + ['#dcf0ea', 'Swans Down'], + ['#ddd6d5', 'Swiss Coffee'], + ['#ddf9f1', 'White Ice'], + ['#de3163', 'Cerise Red'], + ['#de6360', 'Roman'], + ['#dea681', 'Tumbleweed'], + ['#deba13', 'Gold Tips'], + ['#dec196', 'Brandy'], + ['#decbc6', 'Wafer'], + ['#ded4a4', 'Sapling'], + ['#ded717', 'Barberry'], + ['#dee5c0', 'Beryl Green'], + ['#def5ff', 'Pattens Blue'], + ['#df73ff', 'Heliotrope'], + ['#dfbe6f', 'Apache'], + ['#dfcd6f', 'Chenin'], + ['#dfcfdb', 'Lola'], + ['#dfecda', 'Willow Brook'], + ['#dfff00', 'Chartreuse Yellow'], + ['#e0b0ff', 'Mauve'], + ['#e0b646', 'Anzac'], + ['#e0b974', 'Harvest Gold'], + ['#e0c095', 'Calico'], + ['#e0ffff', 'Baby Blue'], + ['#e16865', 'Sunglo'], + ['#e1bc64', 'Equator'], + ['#e1c0c8', 'Pink Flare'], + ['#e1e6d6', 'Periglacial Blue'], + ['#e1ead4', 'Kidnapper'], + ['#e1f6e8', 'Tara'], + ['#e25465', 'Mandy'], + ['#e2725b', 'Terracotta'], + ['#e28913', 'Golden Bell'], + ['#e292c0', 'Shocking'], + ['#e29418', 'Dixie'], + ['#e29cd2', 'Light Orchid'], + ['#e2d8ed', 'Snuff'], + ['#e2ebed', 'Mystic'], + ['#e2f3ec', 'Apple Green'], + ['#e30b5c', 'Razzmatazz'], + ['#e32636', 'Alizarin Crimson'], + ['#e34234', 'Cinnabar'], + ['#e3bebe', 'Cavern Pink'], + ['#e3f5e1', 'Peppermint'], + ['#e3f988', 'Mindaro'], + ['#e47698', 'Deep Blush'], + ['#e49b0f', 'Gamboge'], + ['#e4c2d5', 'Melanie'], + ['#e4cfde', 'Twilight'], + ['#e4d1c0', 'Bone'], + ['#e4d422', 'Sunflower'], + ['#e4d5b7', 'Grain Brown'], + ['#e4d69b', 'Zombie'], + ['#e4f6e7', 'Frostee'], + ['#e4ffd1', 'Snow Flurry'], + ['#e52b50', 'Amaranth'], + ['#e5841b', 'Zest'], + ['#e5ccc9', 'Dust Storm'], + ['#e5d7bd', 'Stark White'], + ['#e5d8af', 'Hampton'], + ['#e5e0e1', 'Bon Jour'], + ['#e5e5e5', 'Mercury'], + ['#e5f9f6', 'Polar'], + ['#e64e03', 'Trinidad'], + ['#e6be8a', 'Gold Sand'], + ['#e6bea5', 'Cashmere'], + ['#e6d7b9', 'Double Spanish White'], + ['#e6e4d4', 'Satin Linen'], + ['#e6f2ea', 'Harp'], + ['#e6f8f3', 'Off Green'], + ['#e6ffe9', 'Hint Of Green'], + ['#e6ffff', 'Tranquil'], + ['#e77200', 'Mango Tango'], + ['#e7730a', 'Christine'], + ['#e79f8c', 'Tonys Pink'], + ['#e79fc4', 'Kobi'], + ['#e7bcb4', 'Rose Fog'], + ['#e7bf05', 'Corn'], + ['#e7cd8c', 'Putty'], + ['#e7ece6', 'Gray Nurse'], + ['#e7f8ff', 'Lily White'], + ['#e7feff', 'Bubbles'], + ['#e89928', 'Fire Bush'], + ['#e8b9b3', 'Shilo'], + ['#e8e0d5', 'Pearl Bush'], + ['#e8ebe0', 'Green White'], + ['#e8f1d4', 'Chrome White'], + ['#e8f2eb', 'Gin'], + ['#e8f5f2', 'Aqua Squeeze'], + ['#e96e00', 'Clementine'], + ['#e97451', 'Burnt Sienna'], + ['#e97c07', 'Tahiti Gold'], + ['#e9cecd', 'Oyster Pink'], + ['#e9d75a', 'Confetti'], + ['#e9e3e3', 'Ebb'], + ['#e9f8ed', 'Ottoman'], + ['#e9fffd', 'Clear Day'], + ['#ea88a8', 'Carissma'], + ['#eaae69', 'Porsche'], + ['#eab33b', 'Tulip Tree'], + ['#eac674', 'Rob Roy'], + ['#eadab8', 'Raffia'], + ['#eae8d4', 'White Rock'], + ['#eaf6ee', 'Panache'], + ['#eaf6ff', 'Solitude'], + ['#eaf9f5', 'Aqua Spring'], + ['#eafffe', 'Dew'], + ['#eb9373', 'Apricot'], + ['#ebc2af', 'Zinnwaldite'], + ['#eca927', 'Fuel Yellow'], + ['#ecc54e', 'Ronchi'], + ['#ecc7ee', 'French Lilac'], + ['#eccdb9', 'Just Right'], + ['#ece090', 'Wild Rice'], + ['#ecebbd', 'Fall Green'], + ['#ecebce', 'Aths Special'], + ['#ecf245', 'Starship'], + ['#ed0a3f', 'Red Ribbon'], + ['#ed7a1c', 'Tango'], + ['#ed9121', 'Carrot Orange'], + ['#ed989e', 'Sea Pink'], + ['#edb381', 'Tacao'], + ['#edc9af', 'Desert Sand'], + ['#edcdab', 'Pancho'], + ['#eddcb1', 'Chamois'], + ['#edea99', 'Primrose'], + ['#edf5dd', 'Frost'], + ['#edf5f5', 'Aqua Haze'], + ['#edf6ff', 'Zumthor'], + ['#edf9f1', 'Narvik'], + ['#edfc84', 'Honeysuckle'], + ['#ee82ee', 'Lavender Magenta'], + ['#eec1be', 'Beauty Bush'], + ['#eed794', 'Chalky'], + ['#eed9c4', 'Almond'], + ['#eedc82', 'Flax'], + ['#eededa', 'Bizarre'], + ['#eee3ad', 'Double Colonial White'], + ['#eeeee8', 'Cararra'], + ['#eeef78', 'Manz'], + ['#eef0c8', 'Tahuna Sands'], + ['#eef0f3', 'Athens Gray'], + ['#eef3c3', 'Tusk'], + ['#eef4de', 'Loafer'], + ['#eef6f7', 'Catskill White'], + ['#eefdff', 'Twilight Blue'], + ['#eeff9a', 'Jonquil'], + ['#eeffe2', 'Rice Flower'], + ['#ef863f', 'Jaffa'], + ['#efefef', 'Gallery'], + ['#eff2f3', 'Porcelain'], + ['#f091a9', 'Mauvelous'], + ['#f0d52d', 'Golden Dream'], + ['#f0db7d', 'Golden Sand'], + ['#f0dc82', 'Buff'], + ['#f0e2ec', 'Prim'], + ['#f0e68c', 'Khaki'], + ['#f0eefd', 'Selago'], + ['#f0eeff', 'Titan White'], + ['#f0f8ff', 'Alice Blue'], + ['#f0fcea', 'Feta'], + ['#f18200', 'Gold Drop'], + ['#f19bab', 'Wewak'], + ['#f1e788', 'Sahara Sand'], + ['#f1e9d2', 'Parchment'], + ['#f1e9ff', 'Blue Chalk'], + ['#f1eec1', 'Mint Julep'], + ['#f1f1f1', 'Seashell'], + ['#f1f7f2', 'Saltpan'], + ['#f1ffad', 'Tidal'], + ['#f1ffc8', 'Chiffon'], + ['#f2552a', 'Flamingo'], + ['#f28500', 'Tangerine'], + ['#f2c3b2', 'Mandys Pink'], + ['#f2f2f2', 'Concrete'], + ['#f2fafa', 'Black Squeeze'], + ['#f34723', 'Pomegranate'], + ['#f3ad16', 'Buttercup'], + ['#f3d69d', 'New Orleans'], + ['#f3d9df', 'Vanilla Ice'], + ['#f3e7bb', 'Sidecar'], + ['#f3e9e5', 'Dawn Pink'], + ['#f3edcf', 'Wheatfield'], + ['#f3fb62', 'Canary'], + ['#f3fbd4', 'Orinoco'], + ['#f3ffd8', 'Carla'], + ['#f400a1', 'Hollywood Cerise'], + ['#f4a460', 'Sandy brown'], + ['#f4c430', 'Saffron'], + ['#f4d81c', 'Ripe Lemon'], + ['#f4ebd3', 'Janna'], + ['#f4f2ee', 'Pampas'], + ['#f4f4f4', 'Wild Sand'], + ['#f4f8ff', 'Zircon'], + ['#f57584', 'Froly'], + ['#f5c85c', 'Cream Can'], + ['#f5c999', 'Manhattan'], + ['#f5d5a0', 'Maize'], + ['#f5deb3', 'Wheat'], + ['#f5e7a2', 'Sandwisp'], + ['#f5e7e2', 'Pot Pourri'], + ['#f5e9d3', 'Albescent White'], + ['#f5edef', 'Soft Peach'], + ['#f5f3e5', 'Ecru White'], + ['#f5f5dc', 'Beige'], + ['#f5fb3d', 'Golden Fizz'], + ['#f5ffbe', 'Australian Mint'], + ['#f64a8a', 'French Rose'], + ['#f653a6', 'Brilliant Rose'], + ['#f6a4c9', 'Illusion'], + ['#f6f0e6', 'Merino'], + ['#f6f7f7', 'Black Haze'], + ['#f6ffdc', 'Spring Sun'], + ['#f7468a', 'Violet Red'], + ['#f77703', 'Chilean Fire'], + ['#f77fbe', 'Persian Pink'], + ['#f7b668', 'Rajah'], + ['#f7c8da', 'Azalea'], + ['#f7dbe6', 'We Peep'], + ['#f7f2e1', 'Quarter Spanish White'], + ['#f7f5fa', 'Whisper'], + ['#f7faf7', 'Snow Drift'], + ['#f8b853', 'Casablanca'], + ['#f8c3df', 'Chantilly'], + ['#f8d9e9', 'Cherub'], + ['#f8db9d', 'Marzipan'], + ['#f8dd5c', 'Energy Yellow'], + ['#f8e4bf', 'Givry'], + ['#f8f0e8', 'White Linen'], + ['#f8f4ff', 'Magnolia'], + ['#f8f6f1', 'Spring Wood'], + ['#f8f7dc', 'Coconut Cream'], + ['#f8f7fc', 'White Lilac'], + ['#f8f8f7', 'Desert Storm'], + ['#f8f99c', 'Texas'], + ['#f8facd', 'Corn Field'], + ['#f8fdd3', 'Mimosa'], + ['#f95a61', 'Carnation'], + ['#f9bf58', 'Saffron Mango'], + ['#f9e0ed', 'Carousel Pink'], + ['#f9e4bc', 'Dairy Cream'], + ['#f9e663', 'Portica'], + ['#f9eaf3', 'Amour'], + ['#f9f8e4', 'Rum Swizzle'], + ['#f9ff8b', 'Dolly'], + ['#f9fff6', 'Sugar Cane'], + ['#fa7814', 'Ecstasy'], + ['#fa9d5a', 'Tan Hide'], + ['#fad3a2', 'Corvette'], + ['#fadfad', 'Peach Yellow'], + ['#fae600', 'Turbo'], + ['#faeab9', 'Astra'], + ['#faeccc', 'Champagne'], + ['#faf0e6', 'Linen'], + ['#faf3f0', 'Fantasy'], + ['#faf7d6', 'Citrine White'], + ['#fafafa', 'Alabaster'], + ['#fafde4', 'Hint Of Yellow'], + ['#faffa4', 'Milan'], + ['#fb607f', 'Brink Pink'], + ['#fb8989', 'Geraldine'], + ['#fba0e3', 'Lavender Rose'], + ['#fba129', 'Sea Buckthorn'], + ['#fbac13', 'Sun'], + ['#fbaed2', 'Lavender Pink'], + ['#fbb2a3', 'Rose Bud'], + ['#fbbeda', 'Cupid'], + ['#fbcce7', 'Classic Rose'], + ['#fbceb1', 'Apricot Peach'], + ['#fbe7b2', 'Banana Mania'], + ['#fbe870', 'Marigold Yellow'], + ['#fbe96c', 'Festival'], + ['#fbea8c', 'Sweet Corn'], + ['#fbec5d', 'Candy Corn'], + ['#fbf9f9', 'Hint Of Red'], + ['#fbffba', 'Shalimar'], + ['#fc0fc0', 'Shocking Pink'], + ['#fc80a5', 'Tickle Me Pink'], + ['#fc9c1d', 'Tree Poppy'], + ['#fcc01e', 'Lightning Yellow'], + ['#fcd667', 'Goldenrod'], + ['#fcd917', 'Candlelight'], + ['#fcda98', 'Cherokee'], + ['#fcf4d0', 'Double Pearl Lusta'], + ['#fcf4dc', 'Pearl Lusta'], + ['#fcf8f7', 'Vista White'], + ['#fcfbf3', 'Bianca'], + ['#fcfeda', 'Moon Glow'], + ['#fcffe7', 'China Ivory'], + ['#fcfff9', 'Ceramic'], + ['#fd0e35', 'Torch Red'], + ['#fd5b78', 'Wild Watermelon'], + ['#fd7b33', 'Crusta'], + ['#fd7c07', 'Sorbus'], + ['#fd9fa2', 'Sweet Pink'], + ['#fdd5b1', 'Light Apricot'], + ['#fdd7e4', 'Pig Pink'], + ['#fde1dc', 'Cinderella'], + ['#fde295', 'Golden Glow'], + ['#fde910', 'Lemon'], + ['#fdf5e6', 'Old Lace'], + ['#fdf6d3', 'Half Colonial White'], + ['#fdf7ad', 'Drover'], + ['#fdfeb8', 'Pale Prim'], + ['#fdffd5', 'Cumulus'], + ['#fe28a2', 'Persian Rose'], + ['#fe4c40', 'Sunset Orange'], + ['#fe6f5e', 'Bittersweet'], + ['#fe9d04', 'California'], + ['#fea904', 'Yellow Sea'], + ['#febaad', 'Melon'], + ['#fed33c', 'Bright Sun'], + ['#fed85d', 'Dandelion'], + ['#fedb8d', 'Salomie'], + ['#fee5ac', 'Cape Honey'], + ['#feebf3', 'Remy'], + ['#feefce', 'Oasis'], + ['#fef0ec', 'Bridesmaid'], + ['#fef2c7', 'Beeswax'], + ['#fef3d8', 'Bleach White'], + ['#fef4cc', 'Pipi'], + ['#fef4db', 'Half Spanish White'], + ['#fef4f8', 'Wisp Pink'], + ['#fef5f1', 'Provincial Pink'], + ['#fef7de', 'Half Dutch White'], + ['#fef8e2', 'Solitaire'], + ['#fef8ff', 'White Pointer'], + ['#fef9e3', 'Off Yellow'], + ['#fefced', 'Orange White'], + ['#ff0000', 'Red'], + ['#ff007f', 'Rose'], + ['#ff00cc', 'Purple Pizzazz'], + ['#ff00ff', 'Magenta Fuchsia'], + ['#ff2400', 'Scarlet'], + ['#ff3399', 'Wild Strawberry'], + ['#ff33cc', 'Razzle Dazzle Rose'], + ['#ff355e', 'Radical Red'], + ['#ff3f34', 'Red Orange'], + ['#ff4040', 'Coral Red'], + ['#ff4d00', 'Vermilion'], + ['#ff4f00', 'International Orange'], + ['#ff6037', 'Outrageous Orange'], + ['#ff6600', 'Blaze Orange'], + ['#ff66ff', 'Pink Flamingo'], + ['#ff681f', 'Orange'], + ['#ff69b4', 'Hot Pink'], + ['#ff6b53', 'Persimmon'], + ['#ff6fff', 'Blush Pink'], + ['#ff7034', 'Burning Orange'], + ['#ff7518', 'Pumpkin'], + ['#ff7d07', 'Flamenco'], + ['#ff7f00', 'Flush Orange'], + ['#ff7f50', 'Coral'], + ['#ff8c69', 'Salmon'], + ['#ff9000', 'Pizazz'], + ['#ff910f', 'West Side'], + ['#ff91a4', 'Pink Salmon'], + ['#ff9933', 'Neon Carrot'], + ['#ff9966', 'Atomic Tangerine'], + ['#ff9980', 'Vivid Tangerine'], + ['#ff9e2c', 'Sunshade'], + ['#ffa000', 'Orange Peel'], + ['#ffa194', 'Mona Lisa'], + ['#ffa500', 'Web Orange'], + ['#ffa6c9', 'Carnation Pink'], + ['#ffab81', 'Hit Pink'], + ['#ffae42', 'Yellow Orange'], + ['#ffb0ac', 'Cornflower Lilac'], + ['#ffb1b3', 'Sundown'], + ['#ffb31f', 'My Sin'], + ['#ffb555', 'Texas Rose'], + ['#ffb7d5', 'Cotton Candy'], + ['#ffb97b', 'Macaroni And Cheese'], + ['#ffba00', 'Selective Yellow'], + ['#ffbd5f', 'Koromiko'], + ['#ffbf00', 'Amber'], + ['#ffc0a8', 'Wax Flower'], + ['#ffc0cb', 'Pink'], + ['#ffc3c0', 'Your Pink'], + ['#ffc901', 'Supernova'], + ['#ffcba4', 'Flesh'], + ['#ffcc33', 'Sunglow'], + ['#ffcc5c', 'Golden Tainoi'], + ['#ffcc99', 'Peach Orange'], + ['#ffcd8c', 'Chardonnay'], + ['#ffd1dc', 'Pastel Pink'], + ['#ffd2b7', 'Romantic'], + ['#ffd38c', 'Grandis'], + ['#ffd700', 'Gold'], + ['#ffd800', 'School Bus Yellow'], + ['#ffd8d9', 'Cosmos'], + ['#ffdb58', 'Mustard'], + ['#ffdcd6', 'Peach Schnapps'], + ['#ffddaf', 'Caramel'], + ['#ffddcd', 'Tuft Bush'], + ['#ffddcf', 'Watusi'], + ['#ffddf4', 'Pink Lace'], + ['#ffdead', 'Navajo White'], + ['#ffdeb3', 'Frangipani'], + ['#ffe1df', 'Pippin'], + ['#ffe1f2', 'Pale Rose'], + ['#ffe2c5', 'Negroni'], + ['#ffe5a0', 'Cream Brulee'], + ['#ffe5b4', 'Peach'], + ['#ffe6c7', 'Tequila'], + ['#ffe772', 'Kournikova'], + ['#ffeac8', 'Sandy Beach'], + ['#ffead4', 'Karry'], + ['#ffec13', 'Broom'], + ['#ffedbc', 'Colonial White'], + ['#ffeed8', 'Derby'], + ['#ffefa1', 'Vis Vis'], + ['#ffefc1', 'Egg White'], + ['#ffefd5', 'Papaya Whip'], + ['#ffefec', 'Fair Pink'], + ['#fff0db', 'Peach Cream'], + ['#fff0f5', 'Lavender Blush'], + ['#fff14f', 'Gorse'], + ['#fff1b5', 'Buttermilk'], + ['#fff1d8', 'Pink Lady'], + ['#fff1ee', 'Forget Me Not'], + ['#fff1f9', 'Tutu'], + ['#fff39d', 'Picasso'], + ['#fff3f1', 'Chardon'], + ['#fff46e', 'Paris Daisy'], + ['#fff4ce', 'Barley White'], + ['#fff4dd', 'Egg Sour'], + ['#fff4e0', 'Sazerac'], + ['#fff4e8', 'Serenade'], + ['#fff4f3', 'Chablis'], + ['#fff5ee', 'Seashell Peach'], + ['#fff5f3', 'Sauvignon'], + ['#fff6d4', 'Milk Punch'], + ['#fff6df', 'Varden'], + ['#fff6f5', 'Rose White'], + ['#fff8d1', 'Baja White'], + ['#fff9e2', 'Gin Fizz'], + ['#fff9e6', 'Early Dawn'], + ['#fffacd', 'Lemon Chiffon'], + ['#fffaf4', 'Bridal Heath'], + ['#fffbdc', 'Scotch Mist'], + ['#fffbf9', 'Soapstone'], + ['#fffc99', 'Witch Haze'], + ['#fffcea', 'Buttery White'], + ['#fffcee', 'Island Spice'], + ['#fffdd0', 'Cream'], + ['#fffde6', 'Chilean Heath'], + ['#fffde8', 'Travertine'], + ['#fffdf3', 'Orchid White'], + ['#fffdf4', 'Quarter Pearl Lusta'], + ['#fffee1', 'Half And Half'], + ['#fffeec', 'Apricot White'], + ['#fffef0', 'Rice Cake'], + ['#fffef6', 'Black White'], + ['#fffefd', 'Romance'], + ['#ffff00', 'Yellow'], + ['#ffff66', 'Laser Lemon'], + ['#ffff99', 'Pale Canary'], + ['#ffffb4', 'Portafino'], + ['#fffff0', 'Ivory'], + ['#ffffff', 'White'] +]; + +/** + * Map Of hex color values to color names + * + * - key: hex value + * - value: color name + */ +export const colorNameMap = colorNames.reduce>((acc, [hex, name]) => { + acc[hex] = name; + return acc; +}, {}); diff --git a/packages/color/src/constant/palette.ts b/packages/color/src/constant/palette.ts new file mode 100644 index 0000000..9f62664 --- /dev/null +++ b/packages/color/src/constant/palette.ts @@ -0,0 +1,356 @@ +import type { ColorPaletteFamily } from '../types'; + +export const colorPalettes: ColorPaletteFamily[] = [ + { + name: 'Slate', + palettes: [ + { hex: '#f8fafc', number: 50 }, + { hex: '#f1f5f9', number: 100 }, + { hex: '#e2e8f0', number: 200 }, + { hex: '#cbd5e1', number: 300 }, + { hex: '#94a3b8', number: 400 }, + { hex: '#64748b', number: 500 }, + { hex: '#475569', number: 600 }, + { hex: '#334155', number: 700 }, + { hex: '#1e293b', number: 800 }, + { hex: '#0f172a', number: 900 }, + { hex: '#020617', number: 950 } + ] + }, + { + name: 'Gray', + palettes: [ + { hex: '#f9fafb', number: 50 }, + { hex: '#f3f4f6', number: 100 }, + { hex: '#e5e7eb', number: 200 }, + { hex: '#d1d5db', number: 300 }, + { hex: '#9ca3af', number: 400 }, + { hex: '#6b7280', number: 500 }, + { hex: '#4b5563', number: 600 }, + { hex: '#374151', number: 700 }, + { hex: '#1f2937', number: 800 }, + { hex: '#111827', number: 900 }, + { hex: '#030712', number: 950 } + ] + }, + { + name: 'Zinc', + palettes: [ + { hex: '#fafafa', number: 50 }, + { hex: '#f4f4f5', number: 100 }, + { hex: '#e4e4e7', number: 200 }, + { hex: '#d4d4d8', number: 300 }, + { hex: '#a1a1aa', number: 400 }, + { hex: '#71717a', number: 500 }, + { hex: '#52525b', number: 600 }, + { hex: '#3f3f46', number: 700 }, + { hex: '#27272a', number: 800 }, + { hex: '#18181b', number: 900 }, + { hex: '#09090b', number: 950 } + ] + }, + { + name: 'Neutral', + palettes: [ + { hex: '#fafafa', number: 50 }, + { hex: '#f5f5f5', number: 100 }, + { hex: '#e5e5e5', number: 200 }, + { hex: '#d4d4d4', number: 300 }, + { hex: '#a3a3a3', number: 400 }, + { hex: '#737373', number: 500 }, + { hex: '#525252', number: 600 }, + { hex: '#404040', number: 700 }, + { hex: '#262626', number: 800 }, + { hex: '#171717', number: 900 }, + { hex: '#0a0a0a', number: 950 } + ] + }, + { + name: 'Stone', + palettes: [ + { hex: '#fafaf9', number: 50 }, + { hex: '#f5f5f4', number: 100 }, + { hex: '#e7e5e4', number: 200 }, + { hex: '#d6d3d1', number: 300 }, + { hex: '#a8a29e', number: 400 }, + { hex: '#78716c', number: 500 }, + { hex: '#57534e', number: 600 }, + { hex: '#44403c', number: 700 }, + { hex: '#292524', number: 800 }, + { hex: '#1c1917', number: 900 }, + { hex: '#0c0a09', number: 950 } + ] + }, + { + name: 'Red', + palettes: [ + { hex: '#fef2f2', number: 50 }, + { hex: '#fee2e2', number: 100 }, + { hex: '#fecaca', number: 200 }, + { hex: '#fca5a5', number: 300 }, + { hex: '#f87171', number: 400 }, + { hex: '#ef4444', number: 500 }, + { hex: '#dc2626', number: 600 }, + { hex: '#b91c1c', number: 700 }, + { hex: '#991b1b', number: 800 }, + { hex: '#7f1d1d', number: 900 }, + { hex: '#450a0a', number: 950 } + ] + }, + { + name: 'Orange', + palettes: [ + { hex: '#fff7ed', number: 50 }, + { hex: '#ffedd5', number: 100 }, + { hex: '#fed7aa', number: 200 }, + { hex: '#fdba74', number: 300 }, + { hex: '#fb923c', number: 400 }, + { hex: '#f97316', number: 500 }, + { hex: '#ea580c', number: 600 }, + { hex: '#c2410c', number: 700 }, + { hex: '#9a3412', number: 800 }, + { hex: '#7c2d12', number: 900 }, + { hex: '#431407', number: 950 } + ] + }, + { + name: 'Amber', + palettes: [ + { hex: '#fffbeb', number: 50 }, + { hex: '#fef3c7', number: 100 }, + { hex: '#fde68a', number: 200 }, + { hex: '#fcd34d', number: 300 }, + { hex: '#fbbf24', number: 400 }, + { hex: '#f59e0b', number: 500 }, + { hex: '#d97706', number: 600 }, + { hex: '#b45309', number: 700 }, + { hex: '#92400e', number: 800 }, + { hex: '#78350f', number: 900 }, + { hex: '#451a03', number: 950 } + ] + }, + { + name: 'Yellow', + palettes: [ + { hex: '#fefce8', number: 50 }, + { hex: '#fef9c3', number: 100 }, + { hex: '#fef08a', number: 200 }, + { hex: '#fde047', number: 300 }, + { hex: '#facc15', number: 400 }, + { hex: '#eab308', number: 500 }, + { hex: '#ca8a04', number: 600 }, + { hex: '#a16207', number: 700 }, + { hex: '#854d0e', number: 800 }, + { hex: '#713f12', number: 900 }, + { hex: '#422006', number: 950 } + ] + }, + { + name: 'Lime', + palettes: [ + { hex: '#f7fee7', number: 50 }, + { hex: '#ecfccb', number: 100 }, + { hex: '#d9f99d', number: 200 }, + { hex: '#bef264', number: 300 }, + { hex: '#a3e635', number: 400 }, + { hex: '#84cc16', number: 500 }, + { hex: '#65a30d', number: 600 }, + { hex: '#4d7c0f', number: 700 }, + { hex: '#3f6212', number: 800 }, + { hex: '#365314', number: 900 }, + { hex: '#1a2e05', number: 950 } + ] + }, + { + name: 'Green', + palettes: [ + { hex: '#f0fdf4', number: 50 }, + { hex: '#dcfce7', number: 100 }, + { hex: '#bbf7d0', number: 200 }, + { hex: '#86efac', number: 300 }, + { hex: '#4ade80', number: 400 }, + { hex: '#22c55e', number: 500 }, + { hex: '#16a34a', number: 600 }, + { hex: '#15803d', number: 700 }, + { hex: '#166534', number: 800 }, + { hex: '#14532d', number: 900 }, + { hex: '#052e16', number: 950 } + ] + }, + { + name: 'Emerald', + palettes: [ + { hex: '#ecfdf5', number: 50 }, + { hex: '#d1fae5', number: 100 }, + { hex: '#a7f3d0', number: 200 }, + { hex: '#6ee7b7', number: 300 }, + { hex: '#34d399', number: 400 }, + { hex: '#10b981', number: 500 }, + { hex: '#059669', number: 600 }, + { hex: '#047857', number: 700 }, + { hex: '#065f46', number: 800 }, + { hex: '#064e3b', number: 900 }, + { hex: '#022c22', number: 950 } + ] + }, + { + name: 'Teal', + palettes: [ + { hex: '#f0fdfa', number: 50 }, + { hex: '#ccfbf1', number: 100 }, + { hex: '#99f6e4', number: 200 }, + { hex: '#5eead4', number: 300 }, + { hex: '#2dd4bf', number: 400 }, + { hex: '#14b8a6', number: 500 }, + { hex: '#0d9488', number: 600 }, + { hex: '#0f766e', number: 700 }, + { hex: '#115e59', number: 800 }, + { hex: '#134e4a', number: 900 }, + { hex: '#042f2e', number: 950 } + ] + }, + { + name: 'Cyan', + palettes: [ + { hex: '#ecfeff', number: 50 }, + { hex: '#cffafe', number: 100 }, + { hex: '#a5f3fc', number: 200 }, + { hex: '#67e8f9', number: 300 }, + { hex: '#22d3ee', number: 400 }, + { hex: '#06b6d4', number: 500 }, + { hex: '#0891b2', number: 600 }, + { hex: '#0e7490', number: 700 }, + { hex: '#155e75', number: 800 }, + { hex: '#164e63', number: 900 }, + { hex: '#083344', number: 950 } + ] + }, + { + name: 'Sky', + palettes: [ + { hex: '#f0f9ff', number: 50 }, + { hex: '#e0f2fe', number: 100 }, + { hex: '#bae6fd', number: 200 }, + { hex: '#7dd3fc', number: 300 }, + { hex: '#38bdf8', number: 400 }, + { hex: '#0ea5e9', number: 500 }, + { hex: '#0284c7', number: 600 }, + { hex: '#0369a1', number: 700 }, + { hex: '#075985', number: 800 }, + { hex: '#0c4a6e', number: 900 }, + { hex: '#082f49', number: 950 } + ] + }, + { + name: 'Blue', + palettes: [ + { hex: '#eff6ff', number: 50 }, + { hex: '#dbeafe', number: 100 }, + { hex: '#bfdbfe', number: 200 }, + { hex: '#93c5fd', number: 300 }, + { hex: '#60a5fa', number: 400 }, + { hex: '#3b82f6', number: 500 }, + { hex: '#2563eb', number: 600 }, + { hex: '#1d4ed8', number: 700 }, + { hex: '#1e40af', number: 800 }, + { hex: '#1e3a8a', number: 900 }, + { hex: '#172554', number: 950 } + ] + }, + { + name: 'Indigo', + palettes: [ + { hex: '#eef2ff', number: 50 }, + { hex: '#e0e7ff', number: 100 }, + { hex: '#c7d2fe', number: 200 }, + { hex: '#a5b4fc', number: 300 }, + { hex: '#818cf8', number: 400 }, + { hex: '#6366f1', number: 500 }, + { hex: '#4f46e5', number: 600 }, + { hex: '#4338ca', number: 700 }, + { hex: '#3730a3', number: 800 }, + { hex: '#312e81', number: 900 }, + { hex: '#1e1b4b', number: 950 } + ] + }, + { + name: 'Violet', + palettes: [ + { hex: '#f5f3ff', number: 50 }, + { hex: '#ede9fe', number: 100 }, + { hex: '#ddd6fe', number: 200 }, + { hex: '#c4b5fd', number: 300 }, + { hex: '#a78bfa', number: 400 }, + { hex: '#8b5cf6', number: 500 }, + { hex: '#7c3aed', number: 600 }, + { hex: '#6d28d9', number: 700 }, + { hex: '#5b21b6', number: 800 }, + { hex: '#4c1d95', number: 900 }, + { hex: '#2e1065', number: 950 } + ] + }, + { + name: 'Purple', + palettes: [ + { hex: '#faf5ff', number: 50 }, + { hex: '#f3e8ff', number: 100 }, + { hex: '#e9d5ff', number: 200 }, + { hex: '#d8b4fe', number: 300 }, + { hex: '#c084fc', number: 400 }, + { hex: '#a855f7', number: 500 }, + { hex: '#9333ea', number: 600 }, + { hex: '#7e22ce', number: 700 }, + { hex: '#6b21a8', number: 800 }, + { hex: '#581c87', number: 900 }, + { hex: '#3b0764', number: 950 } + ] + }, + { + name: 'Fuchsia', + palettes: [ + { hex: '#fdf4ff', number: 50 }, + { hex: '#fae8ff', number: 100 }, + { hex: '#f5d0fe', number: 200 }, + { hex: '#f0abfc', number: 300 }, + { hex: '#e879f9', number: 400 }, + { hex: '#d946ef', number: 500 }, + { hex: '#c026d3', number: 600 }, + { hex: '#a21caf', number: 700 }, + { hex: '#86198f', number: 800 }, + { hex: '#701a75', number: 900 }, + { hex: '#4a044e', number: 950 } + ] + }, + { + name: 'Pink', + palettes: [ + { hex: '#fdf2f8', number: 50 }, + { hex: '#fce7f3', number: 100 }, + { hex: '#fbcfe8', number: 200 }, + { hex: '#f9a8d4', number: 300 }, + { hex: '#f472b6', number: 400 }, + { hex: '#ec4899', number: 500 }, + { hex: '#db2777', number: 600 }, + { hex: '#be185d', number: 700 }, + { hex: '#9d174d', number: 800 }, + { hex: '#831843', number: 900 }, + { hex: '#500724', number: 950 } + ] + }, + { + name: 'Rose', + palettes: [ + { hex: '#fff1f2', number: 50 }, + { hex: '#ffe4e6', number: 100 }, + { hex: '#fecdd3', number: 200 }, + { hex: '#fda4af', number: 300 }, + { hex: '#fb7185', number: 400 }, + { hex: '#f43f5e', number: 500 }, + { hex: '#e11d48', number: 600 }, + { hex: '#be123c', number: 700 }, + { hex: '#9f1239', number: 800 }, + { hex: '#881337', number: 900 }, + { hex: '#4c0519', number: 950 } + ] + } +]; diff --git a/packages/color/src/index.ts b/packages/color/src/index.ts new file mode 100644 index 0000000..42a4d54 --- /dev/null +++ b/packages/color/src/index.ts @@ -0,0 +1,7 @@ +import { colorPalettes } from './constant'; + +export * from './palette'; +export * from './shared'; +export { colorPalettes }; + +export * from './types'; diff --git a/packages/color/src/palette/antd.ts b/packages/color/src/palette/antd.ts new file mode 100644 index 0000000..c3d5b48 --- /dev/null +++ b/packages/color/src/palette/antd.ts @@ -0,0 +1,176 @@ +import type { AnyColor, HsvColor } from 'colord'; +import { getHex, getHsv, isValidColor, mixColor } from '../shared'; +import type { ColorIndex } from '../types'; + +/** Hue step */ +const hueStep = 2; +/** Saturation step, light color part */ +const saturationStep = 16; +/** Saturation step, dark color part */ +const saturationStep2 = 5; +/** Brightness step, light color part */ +const brightnessStep1 = 5; +/** Brightness step, dark color part */ +const brightnessStep2 = 15; +/** Light color count, main color up */ +const lightColorCount = 5; +/** Dark color count, main color down */ +const darkColorCount = 4; + +/** + * Get AntD palette color by index + * + * @param color - Color + * @param index - The color index of color palette (the main color index is 6) + * @returns Hex color + */ +export function getAntDPaletteColorByIndex(color: AnyColor, index: ColorIndex): string { + if (!isValidColor(color)) { + throw new Error('invalid input color value'); + } + + if (index === 6) { + return getHex(color); + } + + const isLight = index < 6; + const hsv = getHsv(color); + const i = isLight ? lightColorCount + 1 - index : index - lightColorCount - 1; + + const newHsv: HsvColor = { + h: getHue(hsv, i, isLight), + s: getSaturation(hsv, i, isLight), + v: getValue(hsv, i, isLight) + }; + + return getHex(newHsv); +} + +/** Map of dark color index and opacity */ +const darkColorMap = [ + { index: 7, opacity: 0.15 }, + { index: 6, opacity: 0.25 }, + { index: 5, opacity: 0.3 }, + { index: 5, opacity: 0.45 }, + { index: 5, opacity: 0.65 }, + { index: 5, opacity: 0.85 }, + { index: 5, opacity: 0.9 }, + { index: 4, opacity: 0.93 }, + { index: 3, opacity: 0.95 }, + { index: 2, opacity: 0.97 }, + { index: 1, opacity: 0.98 } +]; + +/** + * Get AntD color palette + * + * @param color - Color + * @param darkTheme - Dark theme + * @param darkThemeMixColor - Dark theme mix color (default: #141414) + */ +export function getAntDColorPalette(color: AnyColor, darkTheme = false, darkThemeMixColor = '#141414'): string[] { + const indexes: ColorIndex[] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]; + + const patterns = indexes.map(index => getAntDPaletteColorByIndex(color, index)); + + if (darkTheme) { + const darkPatterns = darkColorMap.map(({ index, opacity }) => { + const darkColor = mixColor(darkThemeMixColor, patterns[index], opacity); + + return darkColor; + }); + + return darkPatterns.map(item => getHex(item)); + } + + return patterns; +} + +/** + * Get hue + * + * @param hsv - Hsv format color + * @param i - The relative distance from 6 + * @param isLight - Is light color + */ +function getHue(hsv: HsvColor, i: number, isLight: boolean) { + let hue: number; + + const hsvH = Math.round(hsv.h); + + if (hsvH >= 60 && hsvH <= 240) { + hue = isLight ? hsvH - hueStep * i : hsvH + hueStep * i; + } else { + hue = isLight ? hsvH + hueStep * i : hsvH - hueStep * i; + } + + if (hue < 0) { + hue += 360; + } + + if (hue >= 360) { + hue -= 360; + } + + return hue; +} + +/** + * Get saturation + * + * @param hsv - Hsv format color + * @param i - The relative distance from 6 + * @param isLight - Is light color + */ +function getSaturation(hsv: HsvColor, i: number, isLight: boolean) { + if (hsv.h === 0 && hsv.s === 0) { + return hsv.s; + } + + let saturation: number; + + if (isLight) { + saturation = hsv.s - saturationStep * i; + } else if (i === darkColorCount) { + saturation = hsv.s + saturationStep; + } else { + saturation = hsv.s + saturationStep2 * i; + } + + if (saturation > 100) { + saturation = 100; + } + + if (isLight && i === lightColorCount && saturation > 10) { + saturation = 10; + } + + if (saturation < 6) { + saturation = 6; + } + + return saturation; +} + +/** + * Get value of hsv + * + * @param hsv - Hsv format color + * @param i - The relative distance from 6 + * @param isLight - Is light color + */ +function getValue(hsv: HsvColor, i: number, isLight: boolean) { + let value: number; + + if (isLight) { + value = hsv.v + brightnessStep1 * i; + } else { + value = hsv.v - brightnessStep2 * i; + } + + if (value > 100) { + value = 100; + } + + return value; +} diff --git a/packages/color/src/palette/index.ts b/packages/color/src/palette/index.ts new file mode 100644 index 0000000..ba3b853 --- /dev/null +++ b/packages/color/src/palette/index.ts @@ -0,0 +1,45 @@ +import type { AnyColor } from 'colord'; +import { getHex } from '../shared'; +import type { ColorPaletteNumber } from '../types'; +import { getRecommendedColorPalette } from './recommend'; +import { getAntDColorPalette } from './antd'; + +/** + * get color palette by provided color + * + * @param color + * @param recommended whether to get recommended color palette (the provided color may not be the main color) + */ +export function getColorPalette(color: AnyColor, recommended = false) { + const colorMap = new Map(); + + if (recommended) { + const colorPalette = getRecommendedColorPalette(getHex(color)); + colorPalette.palettes.forEach(palette => { + colorMap.set(palette.number, palette.hex); + }); + } else { + const colors = getAntDColorPalette(color); + + const colorNumbers: ColorPaletteNumber[] = [50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950]; + + colorNumbers.forEach((number, index) => { + colorMap.set(number, colors[index]); + }); + } + + return colorMap; +} + +/** + * get color palette color by number + * + * @param color the provided color + * @param number the color palette number + * @param recommended whether to get recommended color palette (the provided color may not be the main color) + */ +export function getPaletteColorByNumber(color: AnyColor, number: ColorPaletteNumber, recommended = false) { + const colorMap = getColorPalette(color, recommended); + + return colorMap.get(number as ColorPaletteNumber)!; +} diff --git a/packages/color/src/palette/recommend.ts b/packages/color/src/palette/recommend.ts new file mode 100644 index 0000000..904cae2 --- /dev/null +++ b/packages/color/src/palette/recommend.ts @@ -0,0 +1,152 @@ +import { getColorName, getDeltaE, getHsl, isValidColor, transformHslToHex } from '../shared'; +import { colorPalettes } from '../constant'; +import type { + ColorPalette, + ColorPaletteFamily, + ColorPaletteFamilyWithNearestPalette, + ColorPaletteMatch, + ColorPaletteNumber +} from '../types'; + +/** + * get recommended color palette by provided color + * + * @param color the provided color + */ +export function getRecommendedColorPalette(color: string) { + const colorPaletteFamily = getRecommendedColorPaletteFamily(color); + + const colorMap = new Map(); + + colorPaletteFamily.palettes.forEach(palette => { + colorMap.set(palette.number, palette); + }); + + const mainColor = colorMap.get(500)!; + const matchColor = colorPaletteFamily.palettes.find(palette => palette.hex === color)!; + + const colorPalette: ColorPaletteMatch = { + ...colorPaletteFamily, + colorMap, + main: mainColor, + match: matchColor + }; + + return colorPalette; +} + +/** + * get recommended palette color by provided color + * + * @param color the provided color + * @param number the color palette number + */ +export function getRecommendedPaletteColorByNumber(color: string, number: ColorPaletteNumber) { + const colorPalette = getRecommendedColorPalette(color); + + const { hex } = colorPalette.colorMap.get(number)!; + + return hex; +} + +/** + * get color palette family by provided color and color name + * + * @param color the provided color + */ +export function getRecommendedColorPaletteFamily(color: string) { + if (!isValidColor(color)) { + throw new Error('Invalid color, please check color value!'); + } + + let colorName = getColorName(color); + + colorName = colorName.toLowerCase().replace(/\s/g, '-'); + + const { h: h1, s: s1 } = getHsl(color); + + const { nearestLightnessPalette, palettes } = getNearestColorPaletteFamily(color, colorPalettes); + + const { number, hex } = nearestLightnessPalette; + + const { h: h2, s: s2 } = getHsl(hex); + + const deltaH = h1 - h2; + + const sRatio = s1 / s2; + + const colorPaletteFamily: ColorPaletteFamily = { + name: colorName, + palettes: palettes.map(palette => { + let hexValue = color; + + const isSame = number === palette.number; + + if (!isSame) { + const { h: h3, s: s3, l } = getHsl(palette.hex); + + const newH = deltaH < 0 ? h3 + deltaH : h3 - deltaH; + const newS = s3 * sRatio; + + hexValue = transformHslToHex({ + h: newH, + s: newS, + l + }); + } + + return { + hex: hexValue, + number: palette.number + }; + }) + }; + + return colorPaletteFamily; +} + +/** + * get nearest color palette family + * + * @param color color + * @param families color palette families + */ +function getNearestColorPaletteFamily(color: string, families: ColorPaletteFamily[]) { + const familyWithConfig = families.map(family => { + const palettes = family.palettes.map(palette => { + return { + ...palette, + delta: getDeltaE(color, palette.hex) + }; + }); + + const nearestPalette = palettes.reduce((prev, curr) => (prev.delta < curr.delta ? prev : curr)); + + return { + ...family, + palettes, + nearestPalette + }; + }); + + const nearestPaletteFamily = familyWithConfig.reduce((prev, curr) => + prev.nearestPalette.delta < curr.nearestPalette.delta ? prev : curr + ); + + const { l } = getHsl(color); + + const paletteFamily: ColorPaletteFamilyWithNearestPalette = { + ...nearestPaletteFamily, + nearestLightnessPalette: nearestPaletteFamily.palettes.reduce((prev, curr) => { + const { l: prevLightness } = getHsl(prev.hex); + const { l: currLightness } = getHsl(curr.hex); + + const deltaPrev = Math.abs(prevLightness - l); + const deltaCurr = Math.abs(currLightness - l); + + return deltaPrev < deltaCurr ? prev : curr; + }) + }; + + return paletteFamily; +} diff --git a/packages/color/src/shared/colord.ts b/packages/color/src/shared/colord.ts new file mode 100644 index 0000000..4c52330 --- /dev/null +++ b/packages/color/src/shared/colord.ts @@ -0,0 +1,93 @@ +import { colord, extend } from 'colord'; +import namesPlugin from 'colord/plugins/names'; +import mixPlugin from 'colord/plugins/mix'; +import labPlugin from 'colord/plugins/lab'; +import type { AnyColor, HslColor, RgbColor } from 'colord'; + +extend([namesPlugin, mixPlugin, labPlugin]); + +export function isValidColor(color: AnyColor) { + return colord(color).isValid(); +} + +export function getHex(color: AnyColor) { + return colord(color).toHex(); +} + +export function getRgb(color: AnyColor) { + return colord(color).toRgb(); +} + +export function getHsl(color: AnyColor) { + return colord(color).toHsl(); +} + +export function getHsv(color: AnyColor) { + return colord(color).toHsv(); +} + +export function getDeltaE(color1: AnyColor, color2: AnyColor) { + return colord(color1).delta(color2); +} + +export function transformHslToHex(color: HslColor) { + return colord(color).toHex(); +} + +/** + * Add color alpha + * + * @param color - Color + * @param alpha - Alpha (0 - 1) + */ +export function addColorAlpha(color: AnyColor, alpha: number) { + return colord(color).alpha(alpha).toHex(); +} + +/** + * Mix color + * + * @param firstColor - First color + * @param secondColor - Second color + * @param ratio - The ratio of the second color (0 - 1) + */ +export function mixColor(firstColor: AnyColor, secondColor: AnyColor, ratio: number) { + return colord(firstColor).mix(secondColor, ratio).toHex(); +} + +/** + * Transform color with opacity to similar color without opacity + * + * @param color - Color + * @param alpha - Alpha (0 - 1) + * @param bgColor Background color (usually white or black) + */ +export function transformColorWithOpacity(color: AnyColor, alpha: number, bgColor = '#ffffff') { + const originColor = addColorAlpha(color, alpha); + const { r: oR, g: oG, b: oB } = colord(originColor).toRgb(); + + const { r: bgR, g: bgG, b: bgB } = colord(bgColor).toRgb(); + + function calRgb(or: number, bg: number, al: number) { + return bg + (or - bg) * al; + } + + const resultRgb: RgbColor = { + r: calRgb(oR, bgR, alpha), + g: calRgb(oG, bgG, alpha), + b: calRgb(oB, bgB, alpha) + }; + + return colord(resultRgb).toHex(); +} + +/** + * Is white color + * + * @param color - Color + */ +export function isWhiteColor(color: AnyColor) { + return colord(color).isEqual('#ffffff'); +} + +export { colord }; diff --git a/packages/color/src/shared/index.ts b/packages/color/src/shared/index.ts new file mode 100644 index 0000000..ae293ce --- /dev/null +++ b/packages/color/src/shared/index.ts @@ -0,0 +1,2 @@ +export * from './colord'; +export * from './name'; diff --git a/packages/color-palette/src/name.ts b/packages/color/src/shared/name.ts similarity index 67% rename from packages/color-palette/src/name.ts rename to packages/color/src/shared/name.ts index 8aebbde..866bd33 100644 --- a/packages/color-palette/src/name.ts +++ b/packages/color/src/shared/name.ts @@ -1,6 +1,11 @@ -import { getHex, getRgb, getHsl } from './color'; -import colorNames from './json/color-name.json'; +import { colorNames } from '../constant'; +import { getHex, getHsl, getRgb } from './colord'; +/** + * Get color name + * + * @param color + */ export function getColorName(color: string) { const hex = getHex(color); const rgb = getRgb(color); @@ -17,15 +22,13 @@ export function getColorName(color: string) { colorNames.some((item, index) => { const [hexValue, colorName] = item; - const hexcode = `#${hexValue}`; - - const match = hex === hexcode; + const match = hex === hexValue; if (match) { name = colorName; } else { - const { r, g, b } = getRgb(hexcode); - const { h, s, l } = getHsl(hexcode); + const { r, g, b } = getRgb(hexValue); + const { h, s, l } = getHsl(hexValue); ndf1 = (rgb.r - r) ** 2 + (rgb.g - g) ** 2 + (rgb.b - b) ** 2; ndf2 = (hsl.h - h) ** 2 + (hsl.s - s) ** 2 + (hsl.l - l) ** 2; @@ -40,7 +43,7 @@ export function getColorName(color: string) { return match; }); - name = cl < 0 ? 'Invalid Color' : colorNames[cl][1]; + name = colorNames[cl][1]; return name; } diff --git a/packages/color/src/types/index.ts b/packages/color/src/types/index.ts new file mode 100644 index 0000000..3a63bc8 --- /dev/null +++ b/packages/color/src/types/index.ts @@ -0,0 +1,58 @@ +/** + * the color palette number + * + * the main color number is 500 + */ +export type ColorPaletteNumber = 50 | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | 950; + +/** the color palette */ +export type ColorPalette = { + /** the color hex value */ + hex: string; + /** + * the color number + * + * - 50 | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | 950 + */ + number: ColorPaletteNumber; +}; + +/** the color palette family */ +export type ColorPaletteFamily = { + /** the color palette family name */ + name: string; + /** the color palettes */ + palettes: ColorPalette[]; +}; + +/** the color palette with delta */ +export type ColorPaletteWithDelta = ColorPalette & { + delta: number; +}; + +/** the color palette family with nearest palette */ +export type ColorPaletteFamilyWithNearestPalette = ColorPaletteFamily & { + nearestPalette: ColorPaletteWithDelta; + nearestLightnessPalette: ColorPaletteWithDelta; +}; + +/** the color palette match */ +export type ColorPaletteMatch = ColorPaletteFamily & { + /** the color map of the palette */ + colorMap: Map; + /** + * the main color of the palette + * + * which number is 500 + */ + main: ColorPalette; + /** the match color of the palette */ + match: ColorPalette; +}; + +/** + * The color index of color palette + * + * From left to right, the color is from light to dark, 6 is main color + */ +export type ColorIndex = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11; diff --git a/packages/color/tsconfig.json b/packages/color/tsconfig.json new file mode 100644 index 0000000..5823ed5 --- /dev/null +++ b/packages/color/tsconfig.json @@ -0,0 +1,20 @@ +{ + "compilerOptions": { + "target": "ESNext", + "jsx": "preserve", + "lib": ["DOM", "ESNext"], + "baseUrl": ".", + "module": "ESNext", + "moduleResolution": "node", + "resolveJsonModule": true, + "types": ["node"], + "strict": true, + "strictNullChecks": true, + "noUnusedLocals": true, + "allowSyntheticDefaultImports": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist"] +} diff --git a/packages/docs/.vitepress/config.ts b/packages/docs/.vitepress/config.ts deleted file mode 100644 index 1a71de8..0000000 --- a/packages/docs/.vitepress/config.ts +++ /dev/null @@ -1,38 +0,0 @@ -import path from 'node:path'; -import { defineConfig } from 'vitepress'; - -export default defineConfig({ - title: 'Soybean Admin', - description: '一个优雅、清新、漂亮的中后台模版', - head: [ - ['meta', { name: 'author', content: 'Soybean' }], - [ - 'meta', - { - name: 'keywords', - content: 'soybean, soybean-admin, vite, vue, vue3, soybean-admin docs' - } - ], - ['link', { rel: 'icon', type: 'image/svg+xml', href: '/logo.svg' }], - [ - 'meta', - { - name: 'viewport', - content: 'width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no' - } - ], - ['link', { rel: 'icon', href: '/favicon.ico' }] - ], - srcDir: path.join(process.cwd(), 'packages/docs/src'), - themeConfig: { - logo: '/logo.svg', - socialLinks: [{ icon: 'github', link: 'https://github.com/honghuangdc/soybean-admin' }], - algolia: { - appId: '98WN1RY04S', - apiKey: '13e9f5767b774422a5880723d9c23265', - indexName: 'soybean' - }, - nav: [], - sidebar: {} - } -}); diff --git a/packages/docs/.vitepress/icon.ts b/packages/docs/.vitepress/icon.ts deleted file mode 100644 index 28717de..0000000 --- a/packages/docs/.vitepress/icon.ts +++ /dev/null @@ -1,32 +0,0 @@ -export const qqSvg = ` - - - - - - - - - - - - -`; diff --git a/packages/docs/.vitepress/theme/index.ts b/packages/docs/.vitepress/theme/index.ts deleted file mode 100644 index 7850521..0000000 --- a/packages/docs/.vitepress/theme/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -import Theme from 'vitepress/theme'; -import './style.css'; - -export default Theme; diff --git a/packages/docs/.vitepress/theme/style.css b/packages/docs/.vitepress/theme/style.css deleted file mode 100644 index f98e61f..0000000 --- a/packages/docs/.vitepress/theme/style.css +++ /dev/null @@ -1,90 +0,0 @@ -/** - * Customize default theme styling by overriding CSS variables: - * https://github.com/vuejs/vitepress/blob/main/src/client/theme-default/styles/vars.css - */ - -/** - * Colors - * -------------------------------------------------------------------------- */ - -:root { - --vp-c-brand: #646cff; - --vp-c-brand-light: #747bff; - --vp-c-brand-lighter: #9499ff; - --vp-c-brand-lightest: #bcc0ff; - --vp-c-brand-dark: #535bf2; - --vp-c-brand-darker: #454ce1; - --vp-c-brand-dimm: rgba(100, 108, 255, 0.08); -} - -/** - * Component: Button - * -------------------------------------------------------------------------- */ - -:root { - --vp-button-brand-border: var(--vp-c-brand-light); - --vp-button-brand-text: var(--vp-c-white); - --vp-button-brand-bg: var(--vp-c-brand); - --vp-button-brand-hover-border: var(--vp-c-brand-light); - --vp-button-brand-hover-text: var(--vp-c-white); - --vp-button-brand-hover-bg: var(--vp-c-brand-light); - --vp-button-brand-active-border: var(--vp-c-brand-light); - --vp-button-brand-active-text: var(--vp-c-white); - --vp-button-brand-active-bg: var(--vp-button-brand-bg); -} - -/** - * Component: Home - * -------------------------------------------------------------------------- */ - -:root { - --vp-home-hero-name-color: transparent; - --vp-home-hero-name-background: -webkit-linear-gradient( - 120deg, - var(--vp-c-brand-lightest) 30%, - var(--vp-c-brand-darker) - ); - - --vp-home-hero-image-background-image: linear-gradient( - -45deg, - var(--vp-c-brand-lightest) 30%, - var(--vp-c-brand) 50% - ); - --vp-home-hero-image-filter: blur(40px); -} - -@media (min-width: 640px) { - :root { - --vp-home-hero-image-filter: blur(56px); - } -} - -@media (min-width: 960px) { - :root { - --vp-home-hero-image-filter: blur(72px); - } -} - -/** - * Component: Custom Block - * -------------------------------------------------------------------------- */ - -:root { - --vp-custom-block-tip-border: var(--vp-c-brand); - --vp-custom-block-tip-text: var(--vp-c-brand-darker); - --vp-custom-block-tip-bg: var(--vp-c-brand-dimm); -} - -.dark { - --vp-custom-block-tip-border: var(--vp-c-brand); - --vp-custom-block-tip-text: var(--vp-c-brand-lightest); - --vp-custom-block-tip-bg: var(--vp-c-brand-dimm); -} - -/** - * Component: Algolia - * -------------------------------------------------------------------------- */ - -.DocSearch { - --docsearch-primary-color: var(--vp-c-brand) !important; -} diff --git a/packages/docs/package.json b/packages/docs/package.json deleted file mode 100644 index 4ec561f..0000000 --- a/packages/docs/package.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "@sa/docs", - "version": "1.0.0", - "scripts": { - "dev": "vitepress dev", - "build": "vitepress build", - "serve": "vitepress serve" - }, - "devDependencies": { - "vitepress": "1.0.0-rc.24" - } -} diff --git a/packages/docs/src/index.md b/packages/docs/src/index.md deleted file mode 100644 index af7f532..0000000 --- a/packages/docs/src/index.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -layout: home - -title: Soybean Admin -titleTemplate: 一个清新优雅的中后台模版 - -hero: - name: Soybean Admin - text: 清新优雅的中后台模版 - tagline: 基于 Vue3 + Vite3 + TS + NaiveUI + UnoCSS - image: - src: /logo.svg - alt: Soybean Admin - actions: - - theme: brand - text: 开始 - link: /guide/ - - theme: alt - text: 介绍 - link: /guide/introduction - - theme: alt - text: 在 GitHub 上查看 - link: https://github.com/honghuangdc/soybean-admin - -features: - - icon: 🆕 - title: 最新流行技术栈 - details: 基于Vue3、Vite3、TS、NaiveUI和UnoCSS等最新技术栈开发 - - icon: 🦋 - title: 极高水准的代码规范 - details: 代码规范完善,代码结构清晰 - - icon: 🛠️ - title: 丰富的插件 - details: 常见的Web端插件示例实现 - - icon: 🔩 - title: 主题配置 - details: 丰富的主题配置及暗黑主题适配 - - icon: 🔗 - title: 基于文件的路由系统 - details: 自动生成路由声明、路由导入和路由模块 - - icon: 🔑 - title: 权限管理 - details: 完善的前后端权限管理方案 ---- diff --git a/packages/eslint-config/configs/base.js b/packages/eslint-config/configs/base.js deleted file mode 100644 index d3af3b6..0000000 --- a/packages/eslint-config/configs/base.js +++ /dev/null @@ -1,6 +0,0 @@ -/** - * @type {import('eslint').ESLint.ConfigData} - */ -module.exports = { - extends: [require.resolve('./ts.js'), require.resolve('./prettier.js')] -}; diff --git a/packages/eslint-config/configs/js.js b/packages/eslint-config/configs/js.js deleted file mode 100644 index 0065e63..0000000 --- a/packages/eslint-config/configs/js.js +++ /dev/null @@ -1,44 +0,0 @@ -/** - * @type {import('eslint').ESLint.ConfigData} - */ -module.exports = { - root: true, - env: { - browser: true, - node: true, - commonjs: true, - es2024: true - }, - parserOptions: { - ecmaVersion: 2024, - ecmaFeatures: { - jsx: true - }, - sourceType: 'module' - }, - ignorePatterns: [ - 'node_modules', - '*.min.*', - 'CHANGELOG.md', - 'dist', - 'LICENSE*', - 'output', - 'coverage', - 'public', - 'temp', - 'package-lock.json', - 'pnpm-lock.yaml', - 'yarn.lock', - '__snapshots__', - '!.github', - '!.vitepress', - '!.vscode' - ], - plugins: ['n', 'promise'], - extends: [require.resolve('../rules/all.js'), 'plugin:import/recommended'], - rules: { - // import - 'import/no-mutable-exports': 'error', - 'import/no-named-as-default': 'off' - } -}; diff --git a/packages/eslint-config/configs/prettier.js b/packages/eslint-config/configs/prettier.js deleted file mode 100644 index fe58ce9..0000000 --- a/packages/eslint-config/configs/prettier.js +++ /dev/null @@ -1,11 +0,0 @@ -const prettierRules = require('../rules/prettier'); - -/** - * @type {import('eslint').ESLint.ConfigData} - */ -module.exports = { - extends: ['plugin:prettier/recommended'], - rules: { - 'prettier/prettier': ['error', prettierRules] - } -}; diff --git a/packages/eslint-config/configs/ts.js b/packages/eslint-config/configs/ts.js deleted file mode 100644 index e700bf4..0000000 --- a/packages/eslint-config/configs/ts.js +++ /dev/null @@ -1,61 +0,0 @@ -/** - * @type {import('eslint').ESLint.ConfigData} - */ -module.exports = { - plugins: ['@typescript-eslint'], - extends: [require.resolve('./js.js'), 'plugin:import/typescript', 'plugin:@typescript-eslint/recommended'], - settings: { - 'import/resolver': { - typescript: { - project: ['tsconfig.json', 'packages/*/tsconfig.json', 'examples/*/tsconfig.json', 'docs/*/tsconfig.json'] - } - } - }, - overrides: [ - { - files: ['*.ts', '*.tsx', '*.mts', '*.cts'], - parser: '@typescript-eslint/parser' - }, - { - files: ['*.js', '*.mjs', '*.cjs', '*.cts'], - rules: { - '@typescript-eslint/no-var-requires': 'off' - } - } - ], - rules: { - // TS - '@typescript-eslint/consistent-type-imports': ['error', { prefer: 'type-imports', disallowTypeAnnotations: false }], - '@typescript-eslint/no-empty-interface': [ - 'error', - { - allowSingleExtends: true - } - ], - - // Override JS - 'no-redeclare': 'off', - '@typescript-eslint/no-redeclare': 'error', - 'no-unused-vars': 'off', - '@typescript-eslint/no-unused-vars': [ - 'error', - { - vars: 'all', - args: 'all', - ignoreRestSiblings: false, - varsIgnorePattern: '^_', - argsIgnorePattern: '^_' - } - ], - 'no-use-before-define': 'off', - '@typescript-eslint/no-use-before-define': ['error', { functions: false, classes: false, variables: true }], - 'no-shadow': 'off', - '@typescript-eslint/no-shadow': 'error', - - // off - '@typescript-eslint/consistent-type-definitions': 'off', - '@typescript-eslint/no-empty-function': 'off', - '@typescript-eslint/no-explicit-any': 'off', - '@typescript-eslint/no-non-null-assertion': 'off' - } -}; diff --git a/packages/eslint-config/configs/vue.js b/packages/eslint-config/configs/vue.js deleted file mode 100644 index 493f5a7..0000000 --- a/packages/eslint-config/configs/vue.js +++ /dev/null @@ -1,30 +0,0 @@ -/** - * @type {import('eslint').ESLint.ConfigData} - */ -module.exports = { - extends: ['plugin:vue/vue3-recommended', require.resolve('./base.js')], - overrides: [ - { - files: ['*.vue'], - parser: 'vue-eslint-parser', - parserOptions: { - parser: { - js: 'espree', - jsx: 'espree', - ts: '@typescript-eslint/parser', - tsx: '@typescript-eslint/parser' - }, - extraFileExtensions: ['.vue'], - ecmaFeatures: { - jsx: true - } - }, - rules: { - 'no-undef': 'off' // TS will check un declared variables, if the script code is is in a .vue file, this rule should not disabled - } - } - ], - rules: { - 'vue/multi-word-component-names': 'off' - } -}; diff --git a/packages/eslint-config/index.js b/packages/eslint-config/index.js deleted file mode 100644 index bae7d0c..0000000 --- a/packages/eslint-config/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const baseConfig = require('./configs/base'); - -/** - * @type {import('eslint').ESLint.ConfigData} - */ -module.exports = baseConfig; diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json deleted file mode 100644 index e49b366..0000000 --- a/packages/eslint-config/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "eslint-config-sa", - "version": "1.0.0", - "description": "SoybeanAdmin's eslint config resets", - "exports": { - ".": "./index.js", - "./vue": "./configs/vue.js" - }, - "devDependencies": { - "@types/eslint": "8.44.6", - "@typescript-eslint/eslint-plugin": "6.9.0", - "@typescript-eslint/parser": "6.9.0", - "eslint": "8.52.0", - "eslint-config-prettier": "9.0.0", - "eslint-import-resolver-typescript": "3.6.1", - "eslint-plugin-import": "2.29.0", - "eslint-plugin-n": "16.2.0", - "eslint-plugin-prettier": "5.0.1", - "eslint-plugin-promise": "6.1.1", - "eslint-plugin-vue": "9.18.0", - "prettier": "3.0.3" - } -} diff --git a/packages/eslint-config/rules/all.js b/packages/eslint-config/rules/all.js deleted file mode 100644 index 967c3f4..0000000 --- a/packages/eslint-config/rules/all.js +++ /dev/null @@ -1,1681 +0,0 @@ -/** - * @type {import('eslint').Linter.RulesRecord} - */ -module.exports = { - rules: { - /* - * Possible Problems - * These rules relate to possible logic errors in code - */ - - /** - * @description Enforce return statements in callbacks of array methods - * @link https://eslint.org/docs/latest/rules/array-callback-return - */ - 'array-callback-return': 'error', - - /** - * @description Require `super()` calls in constructors - * @link https://eslint.org/docs/latest/rules/constructor-super - */ - 'constructor-super': 'error', - - /** - * @description Enforce \"for\" loop update clause moving the counter in the right direction. - * @link https://eslint.org/docs/latest/rules/for-direction - */ - 'for-direction': 'error', - - /** - * @description Enforce `return` statements in getters - * @link https://eslint.org/docs/latest/rules/getter-return - */ - 'getter-return': 'error', - - /** - * @description Disallow using an async function as a Promise executor - * @link https://eslint.org/docs/latest/rules/no-async-promise-executor - */ - 'no-async-promise-executor': 'error', - - /** - * @description Disallow `await` inside of loops - * @link https://eslint.org/docs/latest/rules/no-await-in-loop - */ - 'no-await-in-loop': 'error', - - /** - * @description Disallow reassigning class members - * @link https://eslint.org/docs/latest/rules/no-class-assign - */ - 'no-class-assign': 'error', - - /** - * @description Disallow comparing against -0 - * @link https://eslint.org/docs/latest/rules/no-compare-neg-zero - */ - 'no-compare-neg-zero': 'error', - - /** - * @description Disallow assignment operators in conditional expressions - * @link https://eslint.org/docs/latest/rules/no-cond-assign - */ - 'no-cond-assign': 'error', - - /** - * @description Disallow reassigning `const` variables - * @link https://eslint.org/docs/latest/rules/no-const-assign - */ - 'no-const-assign': 'error', - - /** - * @description Disallow expressions where the operation doesn't affect the value - * @link https://eslint.org/docs/latest/rules/no-constant-binary-expression - */ - 'no-constant-binary-expression': 'error', - - /** - * @description Disallow constant expressions in conditions - * @link https://eslint.org/docs/latest/rules/no-constant-condition - */ - 'no-constant-condition': 'error', - - /** - * @description Disallow returning value from constructor - * @link https://eslint.org/docs/latest/rules/no-constructor-return - */ - 'no-constructor-return': 'error', - - /** - * @description Disallow control characters in regular expressions - * @link https://eslint.org/docs/latest/rules/no-control-regex - */ - 'no-control-regex': 'error', - - /** - * @description Disallow the use of `debugger` - * @link https://eslint.org/docs/latest/rules/no-debugger - */ - 'no-debugger': 'error', - - /** - * @description Disallow duplicate arguments in `function` definitions - * @link https://eslint.org/docs/latest/rules/no-dupe-args - */ - 'no-dupe-args': 'error', - - /** - * @description Disallow duplicate class members - * @link https://eslint.org/docs/latest/rules/no-dupe-class-members - */ - 'no-dupe-class-members': 'error', - - /** - * @description Disallow duplicate conditions in if-else-if chains - * @link https://eslint.org/docs/latest/rules/no-dupe-else-if - */ - 'no-dupe-else-if': 'error', - - /** - * @description Disallow duplicate keys in object literals - * @link https://eslint.org/docs/latest/rules/no-dupe-keys - */ - 'no-dupe-keys': 'error', - - /** - * @description Disallow duplicate case labels - * @link https://eslint.org/docs/latest/rules/no-duplicate-case - */ - 'no-duplicate-case': 'error', - - /** - * @description Disallow duplicate module imports - * @link https://eslint.org/docs/latest/rules/no-duplicate-imports - */ - 'no-duplicate-imports': 'off', - - /** - * @description Disallow empty character classes in regular expressions - * @link https://eslint.org/docs/latest/rules/no-empty-character-class - */ - 'no-empty-character-class': 'error', - - /** - * @description Disallow empty destructuring patterns - * @link https://eslint.org/docs/latest/rules/no-empty-pattern - */ - 'no-empty-pattern': 'error', - - /** - * @description Disallow reassigning exceptions in `catch` clauses - * @link https://eslint.org/docs/latest/rules/no-ex-assign - */ - 'no-ex-assign': 'error', - - /** - * @description Disallow fallthrough of `case` statements - * @link https://eslint.org/docs/latest/rules/no-fallthrough - */ - 'no-fallthrough': 'error', - - /** - * @description Disallow reassigning `function` declarations - * @link https://eslint.org/docs/latest/rules/no-func-assign - */ - 'no-func-assign': 'error', - - /** - * @description Disallow assigning to imported bindings - * @link https://eslint.org/docs/latest/rules/no-import-assign - */ - 'no-import-assign': 'error', - - /** - * @description Disallow variable or `function` declarations in nested blocks - * @link https://eslint.org/docs/latest/rules/no-inner-declarations - */ - 'no-inner-declarations': 'error', - - /** - * @description Disallow invalid regular expression strings in `RegExp` constructors - * @link https://eslint.org/docs/latest/rules/no-invalid-regexp - */ - 'no-invalid-regexp': 'error', - - /** - * @description Disallow irregular whitespace - * @link https://eslint.org/docs/latest/rules/no-irregular-whitespace - */ - 'no-irregular-whitespace': 'error', - - /** - * @description Disallow literal numbers that lose precision - * @link https://eslint.org/docs/latest/rules/no-loss-of-precision - */ - 'no-loss-of-precision': 'error', - - /** - * @description Disallow characters which are made with multiple code points in character class syntax - * @link https://eslint.org/docs/latest/rules/no-misleading-character-class - */ - 'no-misleading-character-class': 'error', - - /** - * @description Disallow `new` operators with the `Symbol` object - * @link https://eslint.org/docs/latest/rules/no-new-symbol - */ - 'no-new-symbol': 'error', - - /** - * @description Disallow calling global object properties as functions - * @link https://eslint.org/docs/latest/rules/no-obj-calls - */ - 'no-obj-calls': 'error', - - /** - * @description Disallow returning values from Promise executor functions - * @link https://eslint.org/docs/latest/rules/no-promise-executor-return - */ - 'no-promise-executor-return': 'error', - - /** - * @description Disallow calling some `Object.prototype` methods directly on objects - * @link https://eslint.org/docs/latest/rules/no-prototype-builtins - */ - 'no-prototype-builtins': 'error', - - /** - * @description Disallow assignments where both sides are exactly the same - * @link https://eslint.org/docs/latest/rules/no-self-assign - */ - 'no-self-assign': 'error', - - /** - * @description Disallow comparisons where both sides are exactly the same - * @link https://eslint.org/docs/latest/rules/no-self-compare - */ - 'no-self-compare': 'error', - - /** - * @description Disallow returning values from setters - * @link https://eslint.org/docs/latest/rules/no-setter-return - */ - 'no-setter-return': 'error', - - /** - * @description Disallow sparse arrays - * @link https://eslint.org/docs/latest/rules/no-sparse-arrays - */ - 'no-sparse-arrays': 'error', - - /** - * @description Disallow template literal placeholder syntax in regular strings - * @link https://eslint.org/docs/latest/rules/no-template-curly-in-string - */ - 'no-template-curly-in-string': 'error', - - /** - * @description Disallow `this`/`super` before calling `super()` in constructors - * @link https://eslint.org/docs/latest/rules/no-this-before-super - */ - 'no-this-before-super': 'error', - - /** - * @description Disallow the use of undeclared variables unless mentioned in *global* comments - * @link https://eslint.org/docs/latest/rules/no-undef - */ - 'no-undef': 'error', - - /** - * @description Disallow confusing multiline expressions - * @link https://eslint.org/docs/latest/rules/no-unexpected-multiline - */ - 'no-unexpected-multiline': 'error', - - /** - * @description Disallow unmodified loop conditions - * @link https://eslint.org/docs/latest/rules/no-unmodified-loop-condition - */ - 'no-unmodified-loop-condition': 'error', - - /** - * @description Disallow unreachable code after `return`, `throw`, `continue`, and `break` statements - * @link https://eslint.org/docs/latest/rules/no-unreachable - */ - 'no-unreachable': 'error', - - /** - * @description Disallow loops with a body that allows only one iteration - * @link https://eslint.org/docs/latest/rules/no-unreachable-loop - */ - 'no-unreachable-loop': 'error', - - /** - * @description Disallow control flow statements in `finally` blocks - * @link https://eslint.org/docs/latest/rules/no-unsafe-finally - */ - 'no-unsafe-finally': 'error', - - /** - * @description Disallow negating the left operand of relational operators - * @link https://eslint.org/docs/latest/rules/no-unsafe-negation - */ - 'no-unsafe-negation': 'error', - - /** - * @description Disallow use of optional chaining in contexts where the `undefined` value is not allowed - * @link https://eslint.org/docs/latest/rules/no-unsafe-optional-chaining - */ - 'no-unsafe-optional-chaining': 'error', - - /** - * @description Disallow unused private class members - * @link https://eslint.org/docs/latest/rules/no-unused-private-class-members - */ - 'no-unused-private-class-members': 'error', - - /** - * @description Disallow unused variables - * @link https://eslint.org/docs/latest/rules/no-unused-vars - */ - 'no-unused-vars': 'error', - - /** - * @description Disallow the use of variables before they are defined - * @link https://eslint.org/docs/latest/rules/no-use-before-define - */ - 'no-use-before-define': ['error', { functions: false, classes: false, variables: true }], - - /** - * @description Disallow useless backreferences in regular expressions - * @link https://eslint.org/docs/latest/rules/no-useless-backreference - */ - 'no-useless-backreference': 'error', - - /** - * @description Disallow assignments that can lead to race conditions due to usage of `await` or `yield` - * @link https://eslint.org/docs/latest/rules/require-atomic-updates - */ - 'require-atomic-updates': 'error', - - /** - * @description Require calls to `isNaN()` when checking for `NaN` - * @link https://eslint.org/docs/latest/rules/use-isnan - */ - 'use-isnan': 'error', - - /** - * @description Enforce comparing `typeof` expressions against valid strings - * @link https://eslint.org/docs/latest/rules/valid-typeof - */ - 'valid-typeof': 'error', - - // End - - /* - * Suggestions - * These rules suggest alternate ways of doing things: - */ - - /** - * @description Enforce getter and setter pairs in objects and classes - * @link https://eslint.org/docs/latest/rules/accessor-pairs - */ - 'accessor-pairs': ['error', { setWithoutGet: true, enforceForClassMembers: true }], - - /** - * @description Require braces around arrow function bodies - * @link https://eslint.org/docs/latest/rules/arrow-body-style - */ - 'arrow-body-style': 'error', - - /** - * @description Enforce the use of variables within the scope they are defined - * @link https://eslint.org/docs/latest/rules/block-scoped-var - */ - 'block-scoped-var': 'error', - - /** - * @description Enforce camelcase naming convention - * @link https://eslint.org/docs/latest/rules/camelcase - */ - camelcase: 'off', - - /** - * @description Enforce or disallow capitalization of the first letter of a comment - * @link https://eslint.org/docs/latest/rules/capitalized-comments - */ - 'capitalized-comments': 'off', - - /** - * @description Enforce that class methods utilize `this` - * @link https://eslint.org/docs/latest/rules/class-methods-use-this - */ - 'class-methods-use-this': 'error', - - /** - * @description Enforce a maximum cyclomatic complexity allowed in a program - * @link https://eslint.org/docs/latest/rules/complexity - */ - complexity: 'error', - - /** - * @description Require `return` statements to either always or never specify values - * @link https://eslint.org/docs/latest/rules/consistent-return - */ - 'consistent-return': 'error', - - /** - * @description Enforce consistent naming when capturing the current execution context - * @link https://eslint.org/docs/latest/rules/consistent-this - */ - 'consistent-this': 'error', - - /** - * @description Enforce consistent brace style for all control statements - * @link https://eslint.org/docs/latest/rules/curly - */ - curly: 'error', - - /** - * @description Require `default` cases in `switch` statements - * @link https://eslint.org/docs/latest/rules/default-case - */ - 'default-case': 'error', - - /** - * @description Enforce default clauses in switch statements to be last - * @link https://eslint.org/docs/latest/rules/default-case-last - */ - 'default-case-last': 'error', - - /** - * @description Enforce default parameters to be last - * @link https://eslint.org/docs/latest/rules/default-param-last - */ - 'default-param-last': 'error', - - /** - * @description Enforce dot notation whenever possible - * @link https://eslint.org/docs/latest/rules/dot-notation - */ - 'dot-notation': 'error', - - /** - * @description Require the use of `===` and `!==` - * @link https://eslint.org/docs/latest/rules/eqeqeq - */ - eqeqeq: 'error', - - /** - * @description Require function names to match the name of the variable or property to which they are assigned - * @link https://eslint.org/docs/latest/rules/func-name-matching - */ - 'func-name-matching': 'error', - - /** - * @description Require or disallow named `function` expressions - * @link https://eslint.org/docs/latest/rules/func-names - */ - 'func-names': 'error', - - /** - * @description Enforce the consistent use of either `function` declarations or expressions - * @link https://eslint.org/docs/latest/rules/func-style - */ - 'func-style': 'off', - - /** - * @description Require grouped accessor pairs in object literals and classes - * @link https://eslint.org/docs/latest/rules/grouped-accessor-pairs - */ - 'grouped-accessor-pairs': 'error', - - /** - * @description Require `for-in` loops to include an `if` statement - * @link https://eslint.org/docs/latest/rules/guard-for-in - */ - 'guard-for-in': 'error', - - /** - * @description Disallow specified identifiers - * @link https://eslint.org/docs/latest/rules/id-denylist - */ - 'id-denylist': 'error', - - /** - * @description Enforce minimum and maximum identifier lengths - * @link https://eslint.org/docs/latest/rules/id-length - */ - 'id-length': 'off', - - /** - * @description Require identifiers to match a specified regular expression - * @link https://eslint.org/docs/latest/rules/id-match - */ - 'id-match': 'error', - - /** - * @description Require or disallow initialization in variable declarations - * @link https://eslint.org/docs/latest/rules/init-declarations - */ - 'init-declarations': 'off', - - /** - * @description Enforce a maximum number of classes per file - * @link https://eslint.org/docs/latest/rules/max-classes-per-file - */ - 'max-classes-per-file': 'off', - - /** - * @description Enforce a maximum depth that blocks can be nested - * @link https://eslint.org/docs/latest/rules/max-depth - */ - 'max-depth': 'error', - - /** - * @description Enforce a maximum number of lines per file - * @link https://eslint.org/docs/latest/rules/max-lines - */ - 'max-lines': 'off', - - /** - * @description Enforce a maximum number of lines of code in a function - * @link https://eslint.org/docs/latest/rules/max-lines-per-function - */ - 'max-lines-per-function': 'off', - - /** - * @description Enforce a maximum depth that callbacks can be nested - * @link https://eslint.org/docs/latest/rules/max-nested-callbacks - */ - 'max-nested-callbacks': 'error', - - /** - * @description Enforce a maximum number of parameters in function definitions - * @link https://eslint.org/docs/latest/rules/max-params - */ - 'max-params': 'error', - - /** - * @description Enforce a maximum number of statements allowed in function blocks - * @link https://eslint.org/docs/latest/rules/max-statements - */ - 'max-statements': 'off', - - /** - * @description Enforce a particular style for multiline comments - * @link https://eslint.org/docs/latest/rules/multiline-comment-style - */ - 'multiline-comment-style': 'off', - - /** - * @description Require constructor names to begin with a capital letter - * @link https://eslint.org/docs/latest/rules/new-cap - */ - 'new-cap': ['error', { newIsCap: true, capIsNew: false, properties: true }], - - /** - * @description Disallow the use of `alert`, `confirm`, and `prompt` - * @link https://eslint.org/docs/latest/rules/no-alert - */ - 'no-alert': 'error', - - /** - * @description Disallow `Array` constructors - * @link https://eslint.org/docs/latest/rules/no-array-constructor - */ - 'no-array-constructor': 'error', - - /** - * @description Disallow bitwise operators - * @link https://eslint.org/docs/latest/rules/no-bitwise - */ - 'no-bitwise': 'error', - - /** - * @description Disallow the use of `arguments.caller` or `arguments.callee` - * @link https://eslint.org/docs/latest/rules/no-caller - */ - 'no-caller': 'error', - - /** - * @description Disallow lexical declarations in case clauses - * @link https://eslint.org/docs/latest/rules/no-case-declarations - */ - 'no-case-declarations': 'error', - - /** - * @description Disallow arrow functions where they could be confused with comparisons - * @link https://eslint.org/docs/latest/rules/no-confusing-arrow - */ - 'no-confusing-arrow': 'error', - - /** - * @description Disallow the use of `console` - * @link https://eslint.org/docs/latest/rules/no-console - */ - 'no-console': 'warn', - - /** - * @description Disallow `continue` statements - * @link https://eslint.org/docs/latest/rules/no-continue - */ - 'no-continue': 'error', - - /** - * @description Disallow deleting variables - * @link https://eslint.org/docs/latest/rules/no-delete-var - */ - 'no-delete-var': 'error', - - /** - * @description Disallow division operators explicitly at the beginning of regular expressions - * @link https://eslint.org/docs/latest/rules/no-div-regex - */ - 'no-div-regex': 'error', - - /** - * @description Disallow `else` blocks after `return` statements in `if` statements - * @link https://eslint.org/docs/latest/rules/no-else-return - */ - 'no-else-return': 'error', - - /** - * @description Disallow empty block statements - * @link https://eslint.org/docs/latest/rules/no-empty - */ - 'no-empty': [ - 'error', - { - allowEmptyCatch: true - } - ], - - /** - * @description Disallow empty functions - * @link https://eslint.org/docs/latest/rules/no-empty-function - */ - 'no-empty-function': 'error', - - /** - * @description Disallow `null` comparisons without type-checking operators - * @link https://eslint.org/docs/latest/rules/no-eq-null - */ - 'no-eq-null': 'error', - - /** - * @description Disallow the use of `eval()` - * @link https://eslint.org/docs/latest/rules/no-eval - */ - 'no-eval': 'error', - - /** - * @description Disallow extending native types - * @link https://eslint.org/docs/latest/rules/no-extend-native - */ - 'no-extend-native': 'error', - - /** - * @description Disallow unnecessary calls to `.bind()` - * @link https://eslint.org/docs/latest/rules/no-extra-bind - */ - 'no-extra-bind': 'error', - - /** - * @description Disallow unnecessary boolean casts - * @link https://eslint.org/docs/latest/rules/no-extra-boolean-cast - */ - 'no-extra-boolean-cast': 'error', - - /** - * @description Disallow unnecessary labels - * @link https://eslint.org/docs/latest/rules/no-extra-label - */ - 'no-extra-label': 'error', - - /** - * @description Disallow unnecessary semicolons - * @link https://eslint.org/docs/latest/rules/no-extra-semi - */ - 'no-extra-semi': 'error', - - /** - * @description Disallow leading or trailing decimal points in numeric literals - * @link https://eslint.org/docs/latest/rules/no-floating-decimal - */ - 'no-floating-decimal': 'error', - - /** - * @description Disallow assignments to native objects or read-only global variables - * @link https://eslint.org/docs/latest/rules/no-global-assign - */ - 'no-global-assign': 'error', - - /** - * @description Disallow shorthand type conversions - * @link https://eslint.org/docs/latest/rules/no-implicit-coercion - */ - 'no-implicit-coercion': 'error', - - /** - * @description Disallow declarations in the global scope - * @link https://eslint.org/docs/latest/rules/no-implicit-globals - */ - 'no-implicit-globals': 'error', - - /** - * @description Disallow the use of `eval()`-like methods - * @link https://eslint.org/docs/latest/rules/no-implied-eval - */ - 'no-implied-eval': 'error', - - /** - * @description Disallow inline comments after code - * @link https://eslint.org/docs/latest/rules/no-inline-comments - */ - 'no-inline-comments': 'off', - - /** - * @description Disallow use of `this` in contexts where the value of `this` is `undefined` - * @link https://eslint.org/docs/latest/rules/no-invalid-this - */ - 'no-invalid-this': 'error', - - /** - * @description Disallow the use of the `__iterator__` property - * @link https://eslint.org/docs/latest/rules/no-iterator - */ - 'no-iterator': 'error', - - /** - * @description Disallow labels that share a name with a variable - * @link https://eslint.org/docs/latest/rules/no-label-var - */ - 'no-label-var': 'error', - - /** - * @description Disallow labeled statements - * @link https://eslint.org/docs/latest/rules/no-labels - */ - 'no-labels': 'error', - - /** - * @description Disallow unnecessary nested blocks - * @link https://eslint.org/docs/latest/rules/no-lone-blocks - */ - 'no-lone-blocks': 'error', - - /** - * @description Disallow `if` statements as the only statement in `else` blocks - * @link https://eslint.org/docs/latest/rules/no-lonely-if - */ - 'no-lonely-if': 'error', - - /** - * @description Disallow function declarations that contain unsafe references inside loop statements - * @link https://eslint.org/docs/latest/rules/no-loop-func - */ - 'no-loop-func': 'error', - - /** - * @description Disallow magic numbers - * @link https://eslint.org/docs/latest/rules/no-magic-numbers - */ - 'no-magic-numbers': 'off', - - /** - * @description Disallow mixed binary operators - * @link https://eslint.org/docs/latest/rules/no-mixed-operators - */ - 'no-mixed-operators': [ - 'error', - { - groups: [ - ['+', '-', '*', '/', '%', '**'], - ['&', '|', '^', '~', '<<', '>>', '>>>'], - ['==', '!=', '===', '!==', '>', '>=', '<', '<='], - ['&&', '||'], - ['in', 'instanceof'] - ], - allowSamePrecedence: true - } - ], - - /** - * @description Disallow use of chained assignment expressions - * @link https://eslint.org/docs/latest/rules/no-multi-assign - */ - 'no-multi-assign': 'error', - - /** - * @description Disallow multiline strings - * @link https://eslint.org/docs/latest/rules/no-multi-str - */ - 'no-multi-str': 'error', - - /** - * @description Disallow negated conditions - * @link https://eslint.org/docs/latest/rules/no-negated-condition - */ - 'no-negated-condition': 'off', - - /** - * @description Disallow nested ternary expressions - * @link https://eslint.org/docs/latest/rules/no-nested-ternary - */ - 'no-nested-ternary': 'error', - - /** - * @description Disallow `new` operators outside of assignments or comparisons - * @link https://eslint.org/docs/latest/rules/no-new - */ - 'no-new': 'error', - - /** - * @description Disallow `new` operators with the `Function` object - * @link https://eslint.org/docs/latest/rules/no-new-func - */ - 'no-new-func': 'error', - - /** - * @description Disallow `Object` constructors - * @link https://eslint.org/docs/latest/rules/no-new-object - */ - 'no-new-object': 'error', - - /** - * @description Disallow `new` operators with the `String`, `Number`, and `Boolean` objects - * @link https://eslint.org/docs/latest/rules/no-new-wrappers - */ - 'no-new-wrappers': 'error', - - /** - * @description Disallow `\\8` and `\\9` escape sequences in string literals - * @link https://eslint.org/docs/latest/rules/no-nonoctal-decimal-escape - */ - 'no-nonoctal-decimal-escape': 'error', - - /** - * @description Disallow octal literals - * @link https://eslint.org/docs/latest/rules/no-octal - */ - 'no-octal': 'error', - - /** - * @description Disallow octal escape sequences in string literals - * @link https://eslint.org/docs/latest/rules/no-octal-escape - */ - 'no-octal-escape': 'error', - - /** - * @description Disallow reassigning `function` parameters - * @link https://eslint.org/docs/latest/rules/no-param-reassign - */ - 'no-param-reassign': 'error', - - /** - * @description Disallow the unary operators `++` and `--` - * @link https://eslint.org/docs/latest/rules/no-plusplus - */ - 'no-plusplus': 'error', - - /** - * @description Disallow the use of the `__proto__` property - * @link https://eslint.org/docs/latest/rules/no-proto - */ - 'no-proto': 'error', - - /** - * @description Disallow variable redeclaration - * @link https://eslint.org/docs/latest/rules/no-redeclare - */ - 'no-redeclare': 'error', - - /** - * @description Disallow multiple spaces in regular expressions - * @link https://eslint.org/docs/latest/rules/no-regex-spaces - */ - 'no-regex-spaces': 'error', - - /** - * @description Disallow specified names in exports - * @link https://eslint.org/docs/latest/rules/no-restricted-exports - */ - 'no-restricted-exports': 'error', - - /** - * @description Disallow specified global variables - * @link https://eslint.org/docs/latest/rules/no-restricted-globals - */ - 'no-restricted-globals': 'error', - - /** - * @description Disallow specified modules when loaded by `import` - * @link https://eslint.org/docs/latest/rules/no-restricted-imports - */ - 'no-restricted-imports': 'error', - - /** - * @description Disallow certain properties on certain objects - * @link https://eslint.org/docs/latest/rules/no-restricted-properties - */ - 'no-restricted-properties': 'error', - - /** - * @description Disallow specified syntax - * @link https://eslint.org/docs/latest/rules/no-restricted-syntax - */ - 'no-restricted-syntax': ['error', 'DebuggerStatement', 'LabeledStatement', 'WithStatement'], - - /** - * @description Disallow assignment operators in `return` statements - * @link https://eslint.org/docs/latest/rules/no-return-assign - */ - 'no-return-assign': 'error', - - /** - * @description Disallow unnecessary `return await` - * @link https://eslint.org/docs/latest/rules/no-return-await - */ - 'no-return-await': 'error', - - /** - * @description Disallow `javascript:` urls - * @link https://eslint.org/docs/latest/rules/no-script-url - */ - 'no-script-url': 'error', - - /** - * @description Disallow comma operators - * @link https://eslint.org/docs/latest/rules/no-sequences - */ - 'no-sequences': 'error', - - /** - * @description Disallow variable declarations from shadowing variables declared in the outer scope - * @link https://eslint.org/docs/latest/rules/no-shadow - */ - 'no-shadow': 'error', - - /** - * @description Disallow identifiers from shadowing restricted names - * @link https://eslint.org/docs/latest/rules/no-shadow-restricted-names - */ - 'no-shadow-restricted-names': 'error', - - /** - * @description Disallow ternary operators - * @link https://eslint.org/docs/latest/rules/no-ternary - */ - 'no-ternary': 'off', - - /** - * @description Disallow throwing literals as exceptions - * @link https://eslint.org/docs/latest/rules/no-throw-literal - */ - 'no-throw-literal': 'error', - - /** - * @description Disallow initializing variables to `undefined` - * @link https://eslint.org/docs/latest/rules/no-undef-init - */ - 'no-undef-init': 'error', - - /** - * @description Disallow the use of `undefined` as an identifier - * @link https://eslint.org/docs/latest/rules/no-undefined - */ - 'no-undefined': 'off', - - /** - * @description Disallow dangling underscores in identifiers - * @link https://eslint.org/docs/latest/rules/no-underscore-dangle - */ - 'no-underscore-dangle': 'error', - - /** - * @description Disallow ternary operators when simpler alternatives exist - * @link https://eslint.org/docs/latest/rules/no-unneeded-ternary - */ - 'no-unneeded-ternary': 'error', - - /** - * @description Disallow unused expressions - * @link https://eslint.org/docs/latest/rules/no-unused-expressions - */ - 'no-unused-expressions': 'error', - - /** - * @description Disallow unused labels - * @link https://eslint.org/docs/latest/rules/no-unused-labels - */ - 'no-unused-labels': 'error', - - /** - * @description Disallow unnecessary calls to `.call()` and `.apply()` - * @link https://eslint.org/docs/latest/rules/no-useless-call - */ - 'no-useless-call': 'error', - - /** - * @description Disallow unnecessary `catch` clauses - * @link https://eslint.org/docs/latest/rules/no-useless-catch - */ - 'no-useless-catch': 'error', - - /** - * @description Disallow unnecessary computed property keys in objects and classes - * @link https://eslint.org/docs/latest/rules/no-useless-computed-key - */ - 'no-useless-computed-key': 'error', - - /** - * @description Disallow unnecessary concatenation of literals or template literals - * @link https://eslint.org/docs/latest/rules/no-useless-concat - */ - 'no-useless-concat': 'error', - - /** - * @description Disallow unnecessary constructors - * @link https://eslint.org/docs/latest/rules/no-useless-constructor - */ - 'no-useless-constructor': 'error', - - /** - * @description Disallow unnecessary escape characters - * @link https://eslint.org/docs/latest/rules/no-useless-escape - */ - 'no-useless-escape': 'error', - - /** - * @description Disallow renaming import, export, and destructured assignments to the same name - * @link https://eslint.org/docs/latest/rules/no-useless-rename - */ - 'no-useless-rename': 'error', - - /** - * @description Disallow redundant return statements - * @link https://eslint.org/docs/latest/rules/no-useless-return - */ - 'no-useless-return': 'error', - - /** - * @description Require `let` or `const` instead of `var` - * @link https://eslint.org/docs/latest/rules/no-var - */ - 'no-var': 'error', - - /** - * @description Disallow `void` operators - * @link https://eslint.org/docs/latest/rules/no-void - */ - 'no-void': 'error', - - /** - * @description Disallow specified warning terms in comments - * @link https://eslint.org/docs/latest/rules/no-warning-comments - */ - 'no-warning-comments': 'error', - - /** - * @description Disallow `with` statements - * @link https://eslint.org/docs/latest/rules/no-with - */ - 'no-with': 'error', - - /** - * @description Require or disallow method and property shorthand syntax for object literals - * @link https://eslint.org/docs/latest/rules/object-shorthand - */ - 'object-shorthand': [ - 'error', - 'always', - { - ignoreConstructors: false, - avoidQuotes: true - } - ], - - /** - * @description Enforce variables to be declared either together or separately in functions - * @link https://eslint.org/docs/latest/rules/one-var - */ - 'one-var': ['error', 'never'], - - /** - * @description Require or disallow newlines around variable declarations - * @link https://eslint.org/docs/latest/rules/one-var-declaration-per-line - */ - 'one-var-declaration-per-line': 'error', - - /** - * @description Require or disallow assignment operator shorthand where possible - * @link https://eslint.org/docs/latest/rules/operator-assignment - */ - 'operator-assignment': 'error', - - /** - * @description Require using arrow functions for callbacks - * @link https://eslint.org/docs/latest/rules/prefer-arrow-callback - */ - 'prefer-arrow-callback': 'error', - - /** - * @description Require `const` declarations for variables that are never reassigned after declared - * @link https://eslint.org/docs/latest/rules/prefer-const - */ - 'prefer-const': 'error', - - /** - * @description Require destructuring from arrays and/or objects - * @link https://eslint.org/docs/latest/rules/prefer-destructuring - */ - 'prefer-destructuring': 'off', - - /** - * @description Disallow the use of `Math.pow` in favor of the `**` operator - * @link https://eslint.org/docs/latest/rules/prefer-exponentiation-operator - */ - 'prefer-exponentiation-operator': 'error', - - /** - * @description Enforce using named capture group in regular expression - * @link https://eslint.org/docs/latest/rules/prefer-named-capture-group - */ - 'prefer-named-capture-group': 'off', - - /** - * @description Disallow `parseInt()` and `Number.parseInt()` in favor of binary, octal, and hexadecimal literals - * @link https://eslint.org/docs/latest/rules/prefer-numeric-literals - */ - 'prefer-numeric-literals': 'error', - - /** - * @description Disallow use of `Object.prototype.hasOwnProperty.call()` and prefer use of `Object.hasOwn()` - * @link https://eslint.org/docs/latest/rules/prefer-object-has-own - */ - 'prefer-object-has-own': 'error', - - /** - * @description Disallow using Object.assign with an object literal as the first argument and prefer the use of object spread instead. - * @link https://eslint.org/docs/latest/rules/prefer-object-spread - */ - 'prefer-object-spread': 'error', - - /** - * @description Require using Error objects as Promise rejection reasons - * @link https://eslint.org/docs/latest/rules/prefer-promise-reject-errors - */ - 'prefer-promise-reject-errors': 'error', - - /** - * @description Disallow use of the `RegExp` constructor in favor of regular expression literals - * @link https://eslint.org/docs/latest/rules/prefer-regex-literals - */ - 'prefer-regex-literals': 'error', - - /** - * @description Require rest parameters instead of `arguments` - * @link https://eslint.org/docs/latest/rules/prefer-rest-params - */ - 'prefer-rest-params': 'error', - - /** - * @description Require spread operators instead of `.apply()` - * @link https://eslint.org/docs/latest/rules/prefer-spread - */ - 'prefer-spread': 'error', - - /** - * @description Require template literals instead of string concatenation - * @link https://eslint.org/docs/latest/rules/prefer-template - */ - 'prefer-template': 'error', - - /** - * @description Require quotes around object literal property names - * @link https://eslint.org/docs/latest/rules/quote-props - */ - 'quote-props': 'error', - - /** - * @description Enforce the consistent use of the radix argument when using `parseInt()` - * @link https://eslint.org/docs/latest/rules/radix - */ - radix: 'error', - - /** - * @description Disallow async functions which have no `await` expression - * @link https://eslint.org/docs/latest/rules/require-await - */ - 'require-await': 'off', - - /** - * @description Enforce the use of `u` flag on RegExp - * @link https://eslint.org/docs/latest/rules/require-unicode-regexp - */ - 'require-unicode-regexp': 'off', - - /** - * @description Require generator functions to contain `yield` - * @link https://eslint.org/docs/latest/rules/require-yield - */ - 'require-yield': 'error', - - /** - * @description Enforce sorted import declarations within modules - * @link https://eslint.org/docs/latest/rules/sort-imports - */ - 'sort-imports': 'off', - - /** - * @description Require object keys to be sorted - * @link https://eslint.org/docs/latest/rules/sort-keys - */ - 'sort-keys': 'off', - - /** - * @description Require variables within the same declaration block to be sorted - * @link https://eslint.org/docs/latest/rules/sort-vars - */ - 'sort-vars': 'error', - - /** - * @description Enforce consistent spacing after the `//` or `/*` in a comment - * @link https://eslint.org/docs/latest/rules/spaced-comment - */ - 'spaced-comment': [ - 'error', - 'always', - { - line: { markers: ['*package', '!', '/', ',', '='] }, - block: { - balanced: true, - markers: ['*package', '!', ',', ':', '::', 'flow-include'], - exceptions: ['*'] - } - } - ], - - /** - * @description Require or disallow strict mode directives - * @link https://eslint.org/docs/latest/rules/strict - */ - strict: 'error', - - /** - * @description Require symbol descriptions - * @link https://eslint.org/docs/latest/rules/symbol-description - */ - 'symbol-description': 'error', - - /** - * @description Require `var` declarations be placed at the top of their containing scope - * @link https://eslint.org/docs/latest/rules/vars-on-top - */ - 'vars-on-top': 'error', - - /** - * @description Require or disallow \"Yoda\" conditions - * @link https://eslint.org/docs/latest/rules/yoda - */ - yoda: 'error', - - // End - - /* - * Layout & Formatting - * These rules care about how the code looks rather than how it executes: - */ - - /** - * @description Enforce linebreaks after opening and before closing array brackets - * @link https://eslint.org/docs/latest/rules/array-bracket-newline - */ - 'array-bracket-newline': 'error', - - /** - * @description Enforce consistent spacing inside array brackets - * @link https://eslint.org/docs/latest/rules/array-bracket-spacing - */ - 'array-bracket-spacing': 'error', - - /** - * @description Enforce line breaks after each array element - * @link https://eslint.org/docs/latest/rules/array-element-newline - */ - 'array-element-newline': 'error', - - /** - * @description Require parentheses around arrow function arguments - * @link https://eslint.org/docs/latest/rules/arrow-parens - */ - 'arrow-parens': ['error', 'as-needed'], - - /** - * @description Enforce consistent spacing before and after the arrow in arrow functions - * @link https://eslint.org/docs/latest/rules/arrow-spacing - */ - 'arrow-spacing': 'error', - - /** - * @description Disallow or enforce spaces inside of blocks after opening block and before closing block - * @link https://eslint.org/docs/latest/rules/block-spacing - */ - 'block-spacing': 'error', - - /** - * @description Enforce consistent brace style for blocks - * @link https://eslint.org/docs/latest/rules/brace-style - */ - 'brace-style': 'error', - - /** - * @description Require or disallow trailing commas - * @link https://eslint.org/docs/latest/rules/comma-dangle - */ - 'comma-dangle': 'error', - - /** - * @description Enforce consistent spacing before and after commas - * @link https://eslint.org/docs/latest/rules/comma-spacing - */ - 'comma-spacing': 'error', - - /** - * @description Enforce consistent comma style - * @link https://eslint.org/docs/latest/rules/comma-style - */ - 'comma-style': 'error', - - /** - * @description Enforce consistent spacing inside computed property brackets - * @link https://eslint.org/docs/latest/rules/computed-property-spacing - */ - 'computed-property-spacing': 'error', - - /** - * @description Enforce consistent newlines before and after dots - * @link https://eslint.org/docs/latest/rules/dot-location - */ - 'dot-location': ['error', 'property'], - - /** - * @description Require or disallow newline at the end of files - * @link https://eslint.org/docs/latest/rules/eol-last - */ - 'eol-last': 'error', - - /** - * @description Require or disallow spacing between function identifiers and their invocations - * @link https://eslint.org/docs/latest/rules/func-call-spacing - */ - 'func-call-spacing': 'error', - - /** - * @description Enforce line breaks between arguments of a function call - * @link https://eslint.org/docs/latest/rules/function-call-argument-newline - */ - 'function-call-argument-newline': 'error', - - /** - * @description Enforce consistent line breaks inside function parentheses - * @link https://eslint.org/docs/latest/rules/function-paren-newline - */ - 'function-paren-newline': 'error', - - /** - * @description Enforce consistent spacing around `*` operators in generator functions - * @link https://eslint.org/docs/latest/rules/generator-star-spacing - */ - 'generator-star-spacing': 'error', - - /** - * @description Enforce the location of arrow function bodies - * @link https://eslint.org/docs/latest/rules/implicit-arrow-linebreak - */ - 'implicit-arrow-linebreak': 'error', - - /** - * @description Enforce consistent indentation - * @link https://eslint.org/docs/latest/rules/indent - */ - indent: [ - 'error', - 2, - { - SwitchCase: 1, - VariableDeclarator: 1, - outerIIFEBody: 1, - MemberExpression: 1, - FunctionDeclaration: { parameters: 1, body: 1 }, - FunctionExpression: { parameters: 1, body: 1 }, - CallExpression: { arguments: 1 }, - ArrayExpression: 1, - ObjectExpression: 1, - ImportDeclaration: 1, - flatTernaryExpressions: false, - ignoreComments: false, - ignoredNodes: [ - 'TemplateLiteral *', - 'JSXElement', - 'JSXElement > *', - 'JSXAttribute', - 'JSXIdentifier', - 'JSXNamespacedName', - 'JSXMemberExpression', - 'JSXSpreadAttribute', - 'JSXExpressionContainer', - 'JSXOpeningElement', - 'JSXClosingElement', - 'JSXFragment', - 'JSXOpeningFragment', - 'JSXClosingFragment', - 'JSXText', - 'JSXEmptyExpression', - 'JSXSpreadChild' - ], - offsetTernaryExpressions: true - } - ], - - /** - * @description Enforce the consistent use of either double or single quotes in JSX attributes - * @link https://eslint.org/docs/latest/rules/jsx-quotes - */ - 'jsx-quotes': 'error', - - /** - * @description Enforce consistent spacing between keys and values in object literal properties - * @link https://eslint.org/docs/latest/rules/key-spacing - */ - 'key-spacing': 'error', - - /** - * @description Enforce consistent spacing before and after keywords - * @link https://eslint.org/docs/latest/rules/keyword-spacing - */ - 'keyword-spacing': 'error', - - /** - * @description Enforce position of line comments - * @link https://eslint.org/docs/latest/rules/line-comment-position - */ - 'line-comment-position': 'off', - - /** - * @description Enforce consistent linebreak style - * @link https://eslint.org/docs/latest/rules/linebreak-style - */ - 'linebreak-style': 'error', - - /** - * @description Require empty lines around comments - * @link https://eslint.org/docs/latest/rules/lines-around-comment - */ - 'lines-around-comment': 'error', - - /** - * @description Require or disallow an empty line between class members - * @link https://eslint.org/docs/latest/rules/lines-between-class-members - */ - 'lines-between-class-members': 'error', - - /** - * @description Enforce a maximum line length - * @link https://eslint.org/docs/latest/rules/max-len - */ - 'max-len': 'error', - - /** - * @description Enforce a maximum number of statements allowed per line - * @link https://eslint.org/docs/latest/rules/max-statements-per-line - */ - 'max-statements-per-line': 'off', - - /** - * @description Enforce newlines between operands of ternary expressions - * @link https://eslint.org/docs/latest/rules/multiline-ternary - */ - 'multiline-ternary': ['error', 'always-multiline'], - - /** - * @description Enforce or disallow parentheses when invoking a constructor with no arguments - * @link https://eslint.org/docs/latest/rules/new-parens - */ - 'new-parens': 'error', - - /** - * @description Require a newline after each call in a method chain - * @link https://eslint.org/docs/latest/rules/newline-per-chained-call - */ - 'newline-per-chained-call': 'error', - - /** - * @description Disallow unnecessary parentheses - * @link https://eslint.org/docs/latest/rules/no-extra-parens - */ - 'no-extra-parens': 'error', - - /** - * @description Disallow mixed spaces and tabs for indentation - * @link https://eslint.org/docs/latest/rules/no-mixed-spaces-and-tabs - */ - 'no-mixed-spaces-and-tabs': 'error', - - /** - * @description Disallow multiple spaces - * @link https://eslint.org/docs/latest/rules/no-multi-spaces - */ - 'no-multi-spaces': 'error', - - /** - * @description Disallow multiple empty lines - * @link https://eslint.org/docs/latest/rules/no-multiple-empty-lines - */ - 'no-multiple-empty-lines': ['error', { max: 1, maxEOF: 0 }], - - /** - * @description Disallow all tabs - * @link https://eslint.org/docs/latest/rules/no-tabs - */ - 'no-tabs': 'error', - - /** - * @description Disallow trailing whitespace at the end of lines - * @link https://eslint.org/docs/latest/rules/no-trailing-spaces - */ - 'no-trailing-spaces': 'error', - - /** - * @description Disallow whitespace before properties - * @link https://eslint.org/docs/latest/rules/no-whitespace-before-property - */ - 'no-whitespace-before-property': 'error', - - /** - * @description Enforce the location of single-line statements - * @link https://eslint.org/docs/latest/rules/nonblock-statement-body-position - */ - 'nonblock-statement-body-position': 'error', - - /** - * @description Enforce consistent line breaks after opening and before closing braces - * @link https://eslint.org/docs/latest/rules/object-curly-newline - */ - 'object-curly-newline': 'error', - - /** - * @description Enforce consistent spacing inside braces - * @link https://eslint.org/docs/latest/rules/object-curly-spacing - */ - 'object-curly-spacing': 'error', - - /** - * @description Enforce placing object properties on separate lines - * @link https://eslint.org/docs/latest/rules/object-property-newline - */ - 'object-property-newline': 'error', - - /** - * @description Enforce consistent linebreak style for operators - * @link https://eslint.org/docs/latest/rules/operator-linebreak - */ - 'operator-linebreak': 'error', - - /** - * @description Require or disallow padding within blocks - * @link https://eslint.org/docs/latest/rules/padded-blocks - */ - 'padded-blocks': 'error', - - /** - * @description Require or disallow padding lines between statements - * @link https://eslint.org/docs/latest/rules/padding-line-between-statements - */ - 'padding-line-between-statements': 'error', - - /** - * @description Enforce the consistent use of either backticks, double, or single quotes - * @link https://eslint.org/docs/latest/rules/quotes - */ - quotes: 'error', - - /** - * @description Enforce spacing between rest and spread operators and their expressions - * @link https://eslint.org/docs/latest/rules/rest-spread-spacing - */ - 'rest-spread-spacing': 'error', - - /** - * @description Require or disallow semicolons instead of ASI - * @link https://eslint.org/docs/latest/rules/semi - */ - semi: 'error', - - /** - * @description Enforce consistent spacing before and after semicolons - * @link https://eslint.org/docs/latest/rules/semi-spacing - */ - 'semi-spacing': 'error', - - /** - * @description Enforce location of semicolons - * @link https://eslint.org/docs/latest/rules/semi-style - */ - 'semi-style': 'error', - - /** - * @description Enforce consistent spacing before blocks - * @link https://eslint.org/docs/latest/rules/space-before-blocks - */ - 'space-before-blocks': 'error', - - /** - * @description Enforce consistent spacing before `function` definition opening parenthesis - * @link https://eslint.org/docs/latest/rules/space-before-function-paren - */ - 'space-before-function-paren': 'error', - - /** - * @description Enforce consistent spacing inside parentheses - * @link https://eslint.org/docs/latest/rules/space-in-parens - */ - 'space-in-parens': 'error', - - /** - * @description Require spacing around infix operators - * @link https://eslint.org/docs/latest/rules/space-infix-ops - */ - 'space-infix-ops': 'error', - - /** - * @description Enforce consistent spacing before or after unary operators - * @link https://eslint.org/docs/latest/rules/space-unary-ops - */ - 'space-unary-ops': 'error', - - /** - * @description Enforce spacing around colons of switch statements - * @link https://eslint.org/docs/latest/rules/switch-colon-spacing - */ - 'switch-colon-spacing': 'error', - - /** - * @description Require or disallow spacing around embedded expressions of template strings - * @link https://eslint.org/docs/latest/rules/template-curly-spacing - */ - 'template-curly-spacing': 'error', - - /** - * @description Require or disallow spacing between template tags and their literals - * @link https://eslint.org/docs/latest/rules/template-tag-spacing - */ - 'template-tag-spacing': 'error', - - /** - * @description Require or disallow Unicode byte order mark (BOM) - * @link https://eslint.org/docs/latest/rules/unicode-bom - */ - 'unicode-bom': 'error', - - /** - * @description Require parentheses around immediate `function` invocations - * @link https://eslint.org/docs/latest/rules/wrap-iife - */ - 'wrap-iife': 'error', - - /** - * @description Require parenthesis around regex literals - * @link https://eslint.org/docs/latest/rules/wrap-regex - */ - 'wrap-regex': 'error', - - /** - * @description Require or disallow spacing around the `*` in `yield*` expressions - * @link https://eslint.org/docs/latest/rules/yield-star-spacing - */ - 'yield-star-spacing': 'error' - } -}; diff --git a/packages/eslint-config/rules/prettier.js b/packages/eslint-config/rules/prettier.js deleted file mode 100644 index 41f00d6..0000000 --- a/packages/eslint-config/rules/prettier.js +++ /dev/null @@ -1,26 +0,0 @@ -/** - * @type {import('prettier').Options} - */ -module.exports = { - printWidth: 120, - tabWidth: 2, - useTabs: false, - semi: true, - singleQuote: true, - quoteProps: 'as-needed', - jsxSingleQuote: false, - trailingComma: 'none', - bracketSpacing: true, - bracketSameLine: false, - arrowParens: 'avoid', - rangeStart: 0, - rangeEnd: Number.POSITIVE_INFINITY, - requirePragma: false, - insertPragma: false, - proseWrap: 'preserve', - htmlWhitespaceSensitivity: 'ignore', - vueIndentScriptAndStyle: false, - endOfLine: 'lf', - embeddedLanguageFormatting: 'auto', - singleAttributePerLine: false -}; diff --git a/packages/hooks/package.json b/packages/hooks/package.json index c980ce9..da506b7 100644 --- a/packages/hooks/package.json +++ b/packages/hooks/package.json @@ -1,14 +1,16 @@ { "name": "@sa/hooks", - "version": "1.0.0", + "version": "1.3.7", "exports": { ".": "./src/index.ts" }, "typesVersions": { "*": { - "*": [ - "./src/*" - ] + "*": ["./src/*"] } + }, + "dependencies": { + "@sa/axios": "workspace:*", + "@sa/utils": "workspace:*" } } diff --git a/packages/hooks/src/index.ts b/packages/hooks/src/index.ts index fd14530..a6a330b 100644 --- a/packages/hooks/src/index.ts +++ b/packages/hooks/src/index.ts @@ -1,5 +1,11 @@ import useBoolean from './use-boolean'; import useLoading from './use-loading'; +import useCountDown from './use-count-down'; import useContext from './use-context'; +import useSvgIconRender from './use-svg-icon-render'; +import useHookTable from './use-table'; -export { useBoolean, useLoading, useContext }; +export { useBoolean, useLoading, useCountDown, useContext, useSvgIconRender, useHookTable }; + +export * from './use-signal'; +export * from './use-table'; diff --git a/packages/hooks/src/use-boolean.ts b/packages/hooks/src/use-boolean.ts index 302bb3c..a60d45a 100644 --- a/packages/hooks/src/use-boolean.ts +++ b/packages/hooks/src/use-boolean.ts @@ -1,8 +1,9 @@ import { ref } from 'vue'; /** - * boolean - * @param initValue init value + * Boolean + * + * @param initValue Init value */ export default function useBoolean(initValue = false) { const bool = ref(initValue); diff --git a/packages/hooks/src/use-context.ts b/packages/hooks/src/use-context.ts index 4263074..001d8aa 100644 --- a/packages/hooks/src/use-context.ts +++ b/packages/hooks/src/use-context.ts @@ -1,93 +1,81 @@ import { inject, provide } from 'vue'; import type { InjectionKey } from 'vue'; -type ContextFn = () => T; - /** - * use context - * @param contextName context name - * @param fn context function + * Use context + * * @example - * ```ts - * // there are three vue files: A.vue, B.vue, C.vue, and A.vue is the parent component of B.vue and C.vue + * ```ts + * // there are three vue files: A.vue, B.vue, C.vue, and A.vue is the parent component of B.vue and C.vue * - * // context.ts - * import { ref } from 'vue'; - * import { useContext } from '@sa/hooks'; + * // context.ts + * import { ref } from 'vue'; + * import { useContext } from '@sa/hooks'; * - * export const { setupStore, useStore } = useContext('demo', () => { - * const count = ref(0); + * export const { setupStore, useStore } = useContext('demo', () => { + * const count = ref(0); * - * function increment() { - * count.value++; - * } + * function increment() { + * count.value++; + * } * - * function decrement() { - * count.value--; - * } + * function decrement() { + * count.value--; + * } * - * return { - * count, - * increment, - * decrement - * }; - * }) - * ``` + * return { + * count, + * increment, + * decrement + * }; + * }) + * ``` // A.vue + * ```vue + * + * + * ``` // B.vue + * ```vue + * + * - * ``` - * // B.vue - * ```vue - * - * + * ```; * - * const { count, increment } = useStore(); - * - * ``` + * // C.vue is same as B.vue * - * // C.vue is same as B.vue + * @param contextName Context name + * @param fn Context function */ -export default function useContext(contextName: string, fn: ContextFn) { - const { useProvide, useInject } = createContext(contextName); +export default function useContext any>(contextName: string, fn: T) { + type Context = ReturnType; - const context = fn(); + const { useProvide, useInject: useStore } = createContext(contextName); - /** - * setup store in the parent component - */ - function setupStore() { + function setupStore(...args: Parameters) { + const context: Context = fn(...args); return useProvide(context); } - /** - * use store in the child component - */ - function useStore() { - return useInject(); - } - return { + /** Setup store in the parent component */ setupStore, + /** Use store in the child component */ useStore }; } -/** - * create context - */ +/** Create context */ function createContext(contextName: string) { const injectKey: InjectionKey = Symbol(contextName); diff --git a/packages/hooks/src/use-count-down.ts b/packages/hooks/src/use-count-down.ts new file mode 100644 index 0000000..bfad064 --- /dev/null +++ b/packages/hooks/src/use-count-down.ts @@ -0,0 +1,49 @@ +import { computed, onScopeDispose, ref } from 'vue'; +import { useRafFn } from '@vueuse/core'; + +/** + * count down + * + * @param seconds - count down seconds + */ +export default function useCountDown(seconds: number) { + const FPS_PER_SECOND = 60; + + const fps = ref(0); + + const count = computed(() => Math.ceil(fps.value / FPS_PER_SECOND)); + + const isCounting = computed(() => fps.value > 0); + + const { pause, resume } = useRafFn( + () => { + if (fps.value > 0) { + fps.value -= 1; + } else { + pause(); + } + }, + { immediate: false } + ); + + function start(updateSeconds: number = seconds) { + fps.value = FPS_PER_SECOND * updateSeconds; + resume(); + } + + function stop() { + fps.value = 0; + pause(); + } + + onScopeDispose(() => { + pause(); + }); + + return { + count, + isCounting, + start, + stop + }; +} diff --git a/packages/hooks/src/use-loading.ts b/packages/hooks/src/use-loading.ts index 5d07db4..b8f89ad 100644 --- a/packages/hooks/src/use-loading.ts +++ b/packages/hooks/src/use-loading.ts @@ -1,8 +1,9 @@ import useBoolean from './use-boolean'; /** - * loading - * @param initValue init value + * Loading + * + * @param initValue Init value */ export default function useLoading(initValue = false) { const { bool: loading, setTrue: startLoading, setFalse: endLoading } = useBoolean(initValue); diff --git a/packages/hooks/src/use-request.ts b/packages/hooks/src/use-request.ts new file mode 100644 index 0000000..a0a40e6 --- /dev/null +++ b/packages/hooks/src/use-request.ts @@ -0,0 +1,79 @@ +import { ref } from 'vue'; +import type { Ref } from 'vue'; +import { createFlatRequest } from '@sa/axios'; +import type { + AxiosError, + CreateAxiosDefaults, + CustomAxiosRequestConfig, + MappedType, + RequestOption, + ResponseType +} from '@sa/axios'; +import useLoading from './use-loading'; + +export type HookRequestInstanceResponseSuccessData = { + data: Ref; + error: Ref; +}; + +export type HookRequestInstanceResponseFailData = { + data: Ref; + error: Ref>; +}; + +export type HookRequestInstanceResponseData = { + loading: Ref; +} & (HookRequestInstanceResponseSuccessData | HookRequestInstanceResponseFailData); + +export interface HookRequestInstance { + ( + config: CustomAxiosRequestConfig + ): HookRequestInstanceResponseData, ResponseData>; + cancelRequest: (requestId: string) => void; + cancelAllRequest: () => void; +} + +/** + * create a hook request instance + * + * @param axiosConfig + * @param options + */ +export default function createHookRequest( + axiosConfig?: CreateAxiosDefaults, + options?: Partial> +) { + const request = createFlatRequest(axiosConfig, options); + + const hookRequest: HookRequestInstance = function hookRequest( + config: CustomAxiosRequestConfig + ) { + const { loading, startLoading, endLoading } = useLoading(); + + const data = ref | null>(null) as Ref>; + const error = ref | null>(null) as Ref | null>; + + startLoading(); + + request(config).then(res => { + if (res.data) { + data.value = res.data; + } else { + error.value = res.error; + } + + endLoading(); + }); + + return { + loading, + data, + error + }; + } as HookRequestInstance; + + hookRequest.cancelRequest = request.cancelRequest; + hookRequest.cancelAllRequest = request.cancelAllRequest; + + return hookRequest; +} diff --git a/packages/hooks/src/use-signal.ts b/packages/hooks/src/use-signal.ts new file mode 100644 index 0000000..fa9d626 --- /dev/null +++ b/packages/hooks/src/use-signal.ts @@ -0,0 +1,144 @@ +import { computed, ref, shallowRef, triggerRef } from 'vue'; +import type { + ComputedGetter, + DebuggerOptions, + Ref, + ShallowRef, + WritableComputedOptions, + WritableComputedRef +} from 'vue'; + +type Updater = (value: T) => T; +type Mutator = (value: T) => void; + +/** + * Signal is a reactive value that can be set, updated or mutated + * + * @example + * ```ts + * const count = useSignal(0); + * + * // `watchEffect` + * watchEffect(() => { + * console.log(count()); + * }); + * + * // watch + * watch(count, value => { + * console.log(value); + * }); + * + * // useComputed + * const double = useComputed(() => count() * 2); + * const writeableDouble = useComputed({ + * get: () => count() * 2, + * set: value => count.set(value / 2) + * }); + * ``` + */ +export interface Signal { + (): Readonly; + /** + * Set the value of the signal + * + * It recommend use `set` for primitive values + * + * @param value + */ + set(value: T): void; + /** + * Update the value of the signal using an updater function + * + * It recommend use `update` for non-primitive values, only the first level of the object will be reactive. + * + * @param updater + */ + update(updater: Updater): void; + /** + * Mutate the value of the signal using a mutator function + * + * this action will call `triggerRef`, so the value will be tracked on `watchEffect`. + * + * It recommend use `mutate` for non-primitive values, all levels of the object will be reactive. + * + * @param mutator + */ + mutate(mutator: Mutator): void; + /** + * Get the reference of the signal + * + * Sometimes it can be useful to make `v-model` work with the signal + * + * ```vue + * ; + * + * + * ``` + */ + getRef(): Readonly>>; +} + +export interface ReadonlySignal { + (): Readonly; +} + +export interface SignalOptions { + /** + * Whether to use `ref` to store the value + * + * @default false use `sharedRef` to store the value + */ + useRef?: boolean; +} + +export function useSignal(initialValue: T, options?: SignalOptions): Signal { + const { useRef } = options || {}; + + const state = useRef ? (ref(initialValue) as Ref) : shallowRef(initialValue); + + return createSignal(state); +} + +export function useComputed(getter: ComputedGetter, debugOptions?: DebuggerOptions): ReadonlySignal; +export function useComputed(options: WritableComputedOptions, debugOptions?: DebuggerOptions): Signal; +export function useComputed( + getterOrOptions: ComputedGetter | WritableComputedOptions, + debugOptions?: DebuggerOptions +) { + const isGetter = typeof getterOrOptions === 'function'; + + const computedValue = computed(getterOrOptions as any, debugOptions); + + if (isGetter) { + return () => computedValue.value as ReadonlySignal; + } + + return createSignal(computedValue); +} + +function createSignal(state: ShallowRef | WritableComputedRef): Signal { + const signal = () => state.value; + + signal.set = (value: T) => { + state.value = value; + }; + + signal.update = (updater: Updater) => { + state.value = updater(state.value); + }; + + signal.mutate = (mutator: Mutator) => { + mutator(state.value); + triggerRef(state); + }; + + signal.getRef = () => state as Readonly>>; + + return signal; +} diff --git a/packages/hooks/src/use-svg-icon-render.ts b/packages/hooks/src/use-svg-icon-render.ts new file mode 100644 index 0000000..62c2206 --- /dev/null +++ b/packages/hooks/src/use-svg-icon-render.ts @@ -0,0 +1,50 @@ +import { h } from 'vue'; +import type { Component } from 'vue'; + +/** + * Svg icon render hook + * + * @param SvgIcon Svg icon component + */ +export default function useSvgIconRender(SvgIcon: Component) { + interface IconConfig { + /** Iconify icon name */ + icon?: string; + /** Local icon name */ + localIcon?: string; + /** Icon color */ + color?: string; + /** Icon size */ + fontSize?: number; + } + + type IconStyle = Partial>; + + /** + * Svg icon VNode + * + * @param config + */ + const SvgIconVNode = (config: IconConfig) => { + const { color, fontSize, icon, localIcon } = config; + + const style: IconStyle = {}; + + if (color) { + style.color = color; + } + if (fontSize) { + style.fontSize = `${fontSize}px`; + } + + if (!icon && !localIcon) { + return undefined; + } + + return () => h(SvgIcon, { icon, localIcon, style }); + }; + + return { + SvgIconVNode + }; +} diff --git a/packages/hooks/src/use-table.ts b/packages/hooks/src/use-table.ts new file mode 100644 index 0000000..175370b --- /dev/null +++ b/packages/hooks/src/use-table.ts @@ -0,0 +1,152 @@ +import { computed, reactive, ref } from 'vue'; +import type { Ref } from 'vue'; +import { jsonClone } from '@sa/utils'; +import useBoolean from './use-boolean'; +import useLoading from './use-loading'; + +export type MaybePromise = T | Promise; + +export type ApiFn = (args: any) => Promise; + +export type TableColumnCheck = { + prop: string; + label: string; + checked: boolean; +}; + +export type TableDataWithIndex = T & { index: number }; + +export type TransformedData = { + data: TableDataWithIndex[]; + pageNum: number; + pageSize: number; + total: number; +}; + +export type Transformer = (response: Response) => TransformedData; + +export type TableConfig = { + /** api function to get table data */ + apiFn: A; + /** api params */ + apiParams?: Parameters[0]; + /** transform api response to table data */ + transformer: Transformer>>; + /** columns factory */ + columns: () => C[]; + /** + * get column checks + * + * @param columns + */ + getColumnChecks: (columns: C[]) => TableColumnCheck[]; + /** + * get columns + * + * @param columns + */ + getColumns: (columns: C[], checks: TableColumnCheck[]) => C[]; + /** + * callback when response fetched + * + * @param transformed transformed data + */ + onFetched?: (transformed: TransformedData) => MaybePromise; + /** + * whether to get data immediately + * + * @default true + */ + immediate?: boolean; +}; + +export default function useHookTable(config: TableConfig) { + const { loading, startLoading, endLoading } = useLoading(); + const { bool: empty, setBool: setEmpty } = useBoolean(); + + const { apiFn, apiParams, transformer, immediate = true, getColumnChecks, getColumns } = config; + + const searchParams: NonNullable[0]> = reactive(jsonClone({ ...apiParams })); + + const allColumns = ref(config.columns()) as Ref; + + const data: Ref[]> = ref([]); + + const columnChecks: Ref = ref(getColumnChecks(config.columns())); + + const columns = computed(() => getColumns(allColumns.value, columnChecks.value)); + + function reloadColumns() { + allColumns.value = config.columns(); + + const checkMap = new Map(columnChecks.value.map(col => [col.prop, col.checked])); + + const defaultChecks = getColumnChecks(allColumns.value); + + columnChecks.value = defaultChecks.map(col => ({ + ...col, + checked: checkMap.get(col.prop) ?? col.checked + })); + } + + async function getData() { + startLoading(); + + const formattedParams = formatSearchParams(searchParams); + + const response = await apiFn(formattedParams); + + const transformed = transformer(response as Awaited>); + + data.value = transformed.data; + + setEmpty(transformed.data.length === 0); + + await config.onFetched?.(transformed); + + endLoading(); + } + + function formatSearchParams(params: Record) { + const formattedParams: Record = {}; + + Object.entries(params).forEach(([key, value]) => { + if (value !== null && value !== undefined) { + formattedParams[key] = value; + } + }); + + return formattedParams; + } + + /** + * update search params + * + * @param params + */ + function updateSearchParams(params: Partial[0]>) { + Object.assign(searchParams, params); + } + + /** reset search params */ + function resetSearchParams() { + Object.assign(searchParams, jsonClone(apiParams)); + } + + if (immediate) { + getData(); + } + + return { + loading, + empty, + data, + columns, + columnChecks, + reloadColumns, + getData, + searchParams, + updateSearchParams, + resetSearchParams + }; +} diff --git a/packages/hooks/tsconfig.json b/packages/hooks/tsconfig.json index d9203c3..5823ed5 100644 --- a/packages/hooks/tsconfig.json +++ b/packages/hooks/tsconfig.json @@ -1,19 +1,19 @@ { "compilerOptions": { + "target": "ESNext", + "jsx": "preserve", + "lib": ["DOM", "ESNext"], "baseUrl": ".", "module": "ESNext", - "target": "ESNext", - "lib": ["DOM", "ESNext"], - "strict": true, - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "jsx": "preserve", "moduleResolution": "node", "resolveJsonModule": true, - "noUnusedLocals": true, + "types": ["node"], + "strict": true, "strictNullChecks": true, - "forceConsistentCasingInFileNames": true, - "types": ["node"] + "noUnusedLocals": true, + "allowSyntheticDefaultImports": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true }, "include": ["src/**/*"], "exclude": ["node_modules", "dist"] diff --git a/packages/materials/.eslintrc b/packages/materials/.eslintrc deleted file mode 100644 index 38de2a0..0000000 --- a/packages/materials/.eslintrc +++ /dev/null @@ -1,6 +0,0 @@ -{ - "extends": "sa/vue", - "rules": { - "vue/multi-word-component-names": "off" - } -} diff --git a/packages/materials/package.json b/packages/materials/package.json index f3e6bbf..67d932e 100644 --- a/packages/materials/package.json +++ b/packages/materials/package.json @@ -1,20 +1,19 @@ { "name": "@sa/materials", - "version": "1.0.0", + "version": "1.3.7", "exports": { ".": "./src/index.ts" }, "typesVersions": { "*": { - "*": [ - "./src/*" - ] + "*": ["./src/*"] } }, "dependencies": { - "@sa/utils": "workspace:*" + "@sa/utils": "workspace:*", + "simplebar-vue": "2.3.5" }, "devDependencies": { - "typed-css-modules": "0.8.0" + "typed-css-modules": "0.9.1" } } diff --git a/packages/materials/src/index.ts b/packages/materials/src/index.ts index 7e153d6..f6ca01d 100644 --- a/packages/materials/src/index.ts +++ b/packages/materials/src/index.ts @@ -1,5 +1,6 @@ -import AdminLayout from './libs/admin-layout'; +import AdminLayout, { LAYOUT_MAX_Z_INDEX, LAYOUT_SCROLL_EL_ID } from './libs/admin-layout'; import PageTab from './libs/page-tab'; +import SimpleScrollbar from './libs/simple-scrollbar'; -export { AdminLayout, PageTab }; +export { AdminLayout, LAYOUT_SCROLL_EL_ID, LAYOUT_MAX_Z_INDEX, PageTab, SimpleScrollbar }; export * from './types'; diff --git a/packages/materials/src/libs/admin-layout/index.module.css.d.ts b/packages/materials/src/libs/admin-layout/index.module.css.d.ts index 869ed53..c326c84 100644 --- a/packages/materials/src/libs/admin-layout/index.module.css.d.ts +++ b/packages/materials/src/libs/admin-layout/index.module.css.d.ts @@ -14,4 +14,5 @@ declare const styles: { readonly 'sider-padding-top': string; readonly 'sider-padding-bottom': string; }; -export = styles; + +export default styles; diff --git a/packages/materials/src/libs/admin-layout/index.ts b/packages/materials/src/libs/admin-layout/index.ts index 753449a..0687362 100644 --- a/packages/materials/src/libs/admin-layout/index.ts +++ b/packages/materials/src/libs/admin-layout/index.ts @@ -1,3 +1,5 @@ import AdminLayout from './index.vue'; +import { LAYOUT_MAX_Z_INDEX, LAYOUT_SCROLL_EL_ID } from './shared'; export default AdminLayout; +export { LAYOUT_SCROLL_EL_ID, LAYOUT_MAX_Z_INDEX }; diff --git a/packages/materials/src/libs/admin-layout/index.vue b/packages/materials/src/libs/admin-layout/index.vue index 13b9e9a..543f7dc 100644 --- a/packages/materials/src/libs/admin-layout/index.vue +++ b/packages/materials/src/libs/admin-layout/index.vue @@ -1,130 +1,7 @@ - - + + diff --git a/packages/materials/src/libs/admin-layout/shared.ts b/packages/materials/src/libs/admin-layout/shared.ts index 05f0ec0..940451e 100644 --- a/packages/materials/src/libs/admin-layout/shared.ts +++ b/packages/materials/src/libs/admin-layout/shared.ts @@ -1,18 +1,15 @@ -import type { AdminLayoutProps, LayoutCssVarsProps, LayoutCssVars } from '../../types'; +import type { AdminLayoutProps, LayoutCssVars, LayoutCssVarsProps } from '../../types'; -/** - * the id of the scroll element of the layout - */ +/** The id of the scroll element of the layout */ export const LAYOUT_SCROLL_EL_ID = '__SCROLL_EL_ID__'; -/** - * the max z-index of the layout - */ +/** The max z-index of the layout */ export const LAYOUT_MAX_Z_INDEX = 100; /** - * create layout css vars by css vars props - * @param props css vars props + * Create layout css vars by css vars props + * + * @param props Css vars props */ function createLayoutCssVarsByCssVarsProps(props: LayoutCssVarsProps) { const cssVars: LayoutCssVars = { @@ -32,7 +29,8 @@ function createLayoutCssVarsByCssVarsProps(props: LayoutCssVarsProps) { } /** - * create layout css vars + * Create layout css vars + * * @param props */ export function createLayoutCssVars(props: AdminLayoutProps) { diff --git a/packages/materials/src/libs/page-tab/button-tab.vue b/packages/materials/src/libs/page-tab/button-tab.vue index 38f7451..0826e71 100644 --- a/packages/materials/src/libs/page-tab/button-tab.vue +++ b/packages/materials/src/libs/page-tab/button-tab.vue @@ -1,7 +1,43 @@ + +