Commit 03b6025d07e4df99474f80d3fa57e8b5238ba40c

Authored by nebv
1 parent 66b56169

refactor(style): remove tailwind css

Showing 52 changed files with 513 additions and 505 deletions
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
2 VITE_PORT = 3100 2 VITE_PORT = 3100
3 3
4 # spa-title 4 # spa-title
5 -VITE_GLOB_APP_TITLE = vben admin 2.0 5 +VITE_GLOB_APP_TITLE = Vben Admin 2.0
6 6
7 # spa shortname 7 # spa shortname
8 VITE_GLOB_APP_SHORT_NAME = vue_vben_admin_2x 8 VITE_GLOB_APP_SHORT_NAME = vue_vben_admin_2x
README.md
@@ -47,6 +47,8 @@ @@ -47,6 +47,8 @@
47 47
48 [2.0 在线预览](https://vvbin.cn/next/) 48 [2.0 在线预览](https://vvbin.cn/next/)
49 49
  50 +测试账号: vben/123456
  51 +
50 <p align="center"> 52 <p align="center">
51 <img alt="VbenAdmin Logo" width="100%" src="./.github/res/imgs/preview1.png"> 53 <img alt="VbenAdmin Logo" width="100%" src="./.github/res/imgs/preview1.png">
52 <img alt="VbenAdmin Logo" width="100%" src="./.github/res/imgs/preview2.png"> 54 <img alt="VbenAdmin Logo" width="100%" src="./.github/res/imgs/preview2.png">
package.json
@@ -82,7 +82,6 @@ @@ -82,7 +82,6 @@
82 "stylelint-config-prettier": "^8.0.2", 82 "stylelint-config-prettier": "^8.0.2",
83 "stylelint-config-standard": "^20.0.0", 83 "stylelint-config-standard": "^20.0.0",
84 "stylelint-order": "^4.1.0", 84 "stylelint-order": "^4.1.0",
85 - "tailwindcss": "^1.8.13",  
86 "tasksfile": "^5.1.1", 85 "tasksfile": "^5.1.1",
87 "ts-node": "^9.0.0", 86 "ts-node": "^9.0.0",
88 "typescript": "^4.0.3", 87 "typescript": "^4.0.3",
postcss.config.js
1 const path = require('path'); 1 const path = require('path');
2 module.exports = { 2 module.exports = {
3 - plugins: [require('tailwindcss'), require('autoprefixer'), require('postcss-import')], 3 + plugins: [require('autoprefixer'), require('postcss-import')],
4 }; 4 };
src/components/Basic/src/BasicArrow.vue
@@ -37,7 +37,7 @@ @@ -37,7 +37,7 @@
37 </script> 37 </script>
38 <style lang="less" scoped> 38 <style lang="less" scoped>
39 .base-arrow { 39 .base-arrow {
40 - transform: rotate(-90deg) !important; 40 + transform: rotate(-90deg);
41 transition: all 0.3s ease 0.1s; 41 transition: all 0.3s ease 0.1s;
42 transform-origin: center center; 42 transform-origin: center center;
43 43
@@ -50,9 +50,10 @@ @@ -50,9 +50,10 @@
50 } 50 }
51 51
52 &__active { 52 &__active {
53 - > span {  
54 - transform: rotate(90deg) !important;  
55 - } 53 + transform: rotate(90deg);
  54 + // > span {
  55 + // transform: rotate(90deg);
  56 + // }
56 } 57 }
57 } 58 }
58 </style> 59 </style>
src/components/Container/src/collapse/CollapseContainer.vue
1 <template> 1 <template>
2 - <div class="collapse-container p-2 bg:white rounded-sm"> 2 + <div class="collapse-container p-2">
3 <CollapseHeader v-bind="$props" :show="show" @expand="handleExpand" /> 3 <CollapseHeader v-bind="$props" :show="show" @expand="handleExpand" />
4 <CollapseTransition :enable="canExpan"> 4 <CollapseTransition :enable="canExpan">
5 <Skeleton v-if="loading" /> 5 <Skeleton v-if="loading" />
@@ -92,7 +92,6 @@ @@ -92,7 +92,6 @@
92 </script> 92 </script>
93 <style lang="less"> 93 <style lang="less">
94 .collapse-container { 94 .collapse-container {
95 - padding: 10px;  
96 background: #fff; 95 background: #fff;
97 border-radius: 8px; 96 border-radius: 8px;
98 transition: all 0.3s ease-in-out; 97 transition: all 0.3s ease-in-out;
src/components/ContextMenu/src/index.tsx
@@ -73,7 +73,9 @@ export default defineComponent({ @@ -73,7 +73,9 @@ export default defineComponent({
73 73
74 return ( 74 return (
75 <li class={`${prefixCls}__item ${disabled ? 'disabled' : ''}`} key={label}> 75 <li class={`${prefixCls}__item ${disabled ? 'disabled' : ''}`} key={label}>
76 - <a onClick={handleAction.bind(null, item)}>{renderContent(item)}</a> 76 + <a onClick={handleAction.bind(null, item)} style="color:#333;">
  77 + {renderContent(item)}
  78 + </a>
77 </li> 79 </li>
78 ); 80 );
79 }); 81 });
src/components/Icon/index.tsx
@@ -64,6 +64,7 @@ export default defineComponent({ @@ -64,6 +64,7 @@ export default defineComponent({
64 return { 64 return {
65 fontSize: `${fs}px`, 65 fontSize: `${fs}px`,
66 color, 66 color,
  67 + display: 'inline-flex',
67 }; 68 };
68 }); 69 });
69 70
src/components/Loading/BasicLoading.vue
1 <template> 1 <template>
2 - <section class="flex justify-center items-center flex-col"> 2 + <section class="basic-loading">
3 <img 3 <img
4 src="/@/assets/images/loading.svg" 4 src="/@/assets/images/loading.svg"
5 alt="" 5 alt=""
@@ -47,3 +47,11 @@ @@ -47,3 +47,11 @@
47 }, 47 },
48 }); 48 });
49 </script> 49 </script>
  50 +<style lang="less" scoped>
  51 + .basic-loading {
  52 + display: flex;
  53 + justify-content: center;
  54 + align-items: center;
  55 + flex-direction: column;
  56 + }
  57 +</style>
src/components/Loading/FullLoading.vue
1 <template> 1 <template>
2 - <section  
3 - class="full-loading flex justify-center bg-mask-light items-center h-full w-full"  
4 - :style="getStyle"  
5 - > 2 + <section class="full-loading" :style="getStyle">
6 <BasicLoading :tip="tip" :size="SizeEnum.DEFAULT" /> 3 <BasicLoading :tip="tip" :size="SizeEnum.DEFAULT" />
7 </section> 4 </section>
8 </template> 5 </template>
@@ -39,3 +36,13 @@ @@ -39,3 +36,13 @@
39 }, 36 },
40 }); 37 });
41 </script> 38 </script>
  39 +<style lang="less" scoped>
  40 + .full-loading {
  41 + display: flex;
  42 + width: 100%;
  43 + height: 100%;
  44 + background: rgba(255, 255, 255, 0.3);
  45 + justify-content: center;
  46 + align-items: center;
  47 + }
  48 +</style>
src/design/global.less 0 → 100644
  1 +@import './helper/distance.less';
  2 +// 生成样式
  3 +.distance();
  4 +
  5 +.hidden {
  6 + display: none !important;
  7 +}
  8 +
  9 +.flex {
  10 + display: flex;
  11 +}
  12 +
  13 +.flex-wrap {
  14 + flex-wrap: wrap;
  15 +}
  16 +
  17 +.justify-center {
  18 + justify-content: center;
  19 +}
  20 +
  21 +.items-center {
  22 + align-items: center;
  23 +}
  24 +
  25 +.justify-start {
  26 + justify-content: start;
  27 +}
  28 +
  29 +.justify-end {
  30 + justify-content: end;
  31 +}
  32 +
  33 +.justify-around {
  34 + justify-content: space-around;
  35 +}
  36 +
  37 +.relative {
  38 + position: relative;
  39 +}
  40 +
  41 +.absolute {
  42 + position: absolute;
  43 +}
  44 +
  45 +.ellipsis {
  46 + overflow: hidden;
  47 + text-overflow: ellipsis;
  48 + word-wrap: normal;
  49 + white-space: nowrap;
  50 +}
src/design/helper/distance.less 0 → 100644
  1 +@import 'loop.less';
  2 +// margin 步长
  3 +@margin-size-base: 4;
  4 +
  5 +// 最大生成
  6 +@margin-size-max: 10;
  7 +
  8 +// padding步长
  9 +@padding-size-base: 4;
  10 +
  11 +// 最大生成
  12 +@padding-size-max: 10;
  13 +
  14 +.distance() {
  15 + // 生成margin
  16 + .loop (m, margin, 1, @margin-size-base, @margin-size-max);
  17 + .loop (mt, margin-top, 1, @margin-size-base, @margin-size-max);
  18 + .loop (mr, margin-right, 1, @margin-size-base, @margin-size-max);
  19 + .loop (mb, margin-bottom, 1, @margin-size-base, @margin-size-max);
  20 + .loop (ml, margin-left, 1, @margin-size-base, @margin-size-max);
  21 + .loop (my, margin, 1, @margin-size-base, @margin-size-max, y);
  22 + .loop (mx, margin, 1, @margin-size-base, @margin-size-max, x);
  23 + .loop (mx-auto, margin, 1, @padding-size-base, @padding-size-max, autoX);
  24 + .loop (my-auto, margin, 1, @padding-size-base, @padding-size-max, autoY);
  25 + .loop (m-auto, margin, 1, @padding-size-base, @padding-size-max, auto);
  26 +
  27 + // 生成padding
  28 + .loop (p, padding, 1, @padding-size-base, @padding-size-max);
  29 + .loop (pt, padding-top, 1, @padding-size-base, @padding-size-max);
  30 + .loop (pr, padding-right, 1, @padding-size-base, @padding-size-max);
  31 + .loop (pb, padding-bottom, 1, @padding-size-base, @padding-size-max);
  32 + .loop (pl, padding-left, 1, @padding-size-base, @padding-size-max);
  33 + .loop (py, padding, 1, @padding-size-base, @padding-size-max, y);
  34 + .loop (px, padding, 1, @padding-size-base, @padding-size-max, x);
  35 + .loop (px-auto, padding, 1, @padding-size-base, @padding-size-max, autoX);
  36 + .loop (py-auto, padding, 1, @padding-size-base, @padding-size-max, autoY);
  37 + .loop (p-auto, padding, 1, @padding-size-base, @padding-size-max, auto);
  38 +}
src/design/helper/loop.less 0 → 100644
  1 +.loop (@style-name, @tag-name, @i,@base-size, @max:10,@xy:none) when (@i <= @max) {
  2 + @next: @i+1;
  3 + .fn() when (@xy =none) {
  4 + @size: @base-size * @i;
  5 +
  6 + .@{style-name}-@{i} {
  7 + @{tag-name}: ~'@{size}px ';
  8 + }
  9 + .loop(@style-name, @tag-name, @next, @base-size, @max, @xy);
  10 + }
  11 +
  12 + .fn() when (@xy =x) {
  13 + @size: @base-size * @i;
  14 +
  15 + @tnl: ~'@{tag-name}-left';
  16 + @tnr: ~'@{tag-name}-right';
  17 +
  18 + .@{style-name}-@{i} {
  19 + @{tnl}: ~'@{size}px';
  20 + @{tnr}: ~'@{size}px';
  21 + }
  22 + .loop(@style-name, @tag-name, @next, @base-size, @max, @xy);
  23 + }
  24 + .fn() when (@xy =y) {
  25 + @size: @base-size * @i;
  26 +
  27 + @tnt: ~'@{tag-name}-top';
  28 + @tnb: ~'@{tag-name}-bottom';
  29 +
  30 + .@{style-name}-@{i} {
  31 + @{tnt}: ~'@{size}px';
  32 + @{tnb}: ~'@{size}px';
  33 + }
  34 + .loop(@style-name, @tag-name, @next, @base-size, @max, @xy);
  35 + }
  36 + .fn() when (@xy =auto) {
  37 + @tnt: ~'@{tag-name}-top';
  38 + @tnb: ~'@{tag-name}-bottom';
  39 + @tnl: ~'@{tag-name}-left';
  40 + @tnr: ~'@{tag-name}-right';
  41 + .@{style-name} {
  42 + @{tnl}: ~'auto';
  43 + @{tnr}: ~'auto';
  44 + @{tnt}: ~'auto';
  45 + @{tnb}: ~'auto';
  46 + }
  47 + }
  48 +
  49 + .fn() when (@xy =autoX) {
  50 + @tnl: ~'@{tag-name}-left';
  51 + @tnr: ~'@{tag-name}-right';
  52 + .@{style-name} {
  53 + @{tnl}: ~'auto';
  54 + @{tnr}: ~'auto';
  55 + }
  56 + }
  57 +
  58 + .fn() when (@xy =autoY) {
  59 + @tnt: ~'@{tag-name}-top';
  60 + @tnb: ~'@{tag-name}-bottom';
  61 + .@{style-name} {
  62 + @{tnt}: ~'auto';
  63 + @{tnb}: ~'auto';
  64 + }
  65 + }
  66 + .fn();
  67 +}
src/design/index.less
@@ -3,6 +3,7 @@ @@ -3,6 +3,7 @@
3 @import 'public.less'; 3 @import 'public.less';
4 @import 'mixins.less'; 4 @import 'mixins.less';
5 @import 'ant/index.less'; 5 @import 'ant/index.less';
  6 +@import './global.less';
6 7
7 *, 8 *,
8 *::before, 9 *::before,
src/design/main.postcss deleted 100644 → 0
1 -@import 'tailwindcss/base';  
2 -@import 'tailwindcss/components';  
3 -@import 'tailwindcss/utilities';  
src/design/mixins.less
@@ -42,13 +42,6 @@ @@ -42,13 +42,6 @@
42 user-select: none; 42 user-select: none;
43 } 43 }
44 44
45 -.ellipsis {  
46 - overflow: hidden;  
47 - text-overflow: ellipsis;  
48 - word-wrap: normal;  
49 - white-space: nowrap;  
50 -}  
51 -  
52 /* 适用于webkit内核和移动端 */ 45 /* 适用于webkit内核和移动端 */
53 .ellipsis-multiple(@num: 1) { 46 .ellipsis-multiple(@num: 1) {
54 display: -webkit-box; 47 display: -webkit-box;
@@ -56,3 +49,54 @@ @@ -56,3 +49,54 @@
56 -webkit-box-orient: vertical; 49 -webkit-box-orient: vertical;
57 -webkit-line-clamp: @num; 50 -webkit-line-clamp: @num;
58 } 51 }
  52 +
  53 +.respond-to (small, @content) {
  54 + @media only screen and (min-width: @screen-sm-min) {
  55 + @content();
  56 + }
  57 +}
  58 +.respond-to (medium, @content) {
  59 + @media only screen and (min-width: @screen-md-min) {
  60 + @content();
  61 + }
  62 +}
  63 +.respond-to (large, @content) {
  64 + @media only screen and (min-width: @screen-lg-min) {
  65 + @content();
  66 + }
  67 +}
  68 +.respond-to (xlarge, @content) {
  69 + @media only screen and (min-width: @screen-xl-min) {
  70 + @content();
  71 + }
  72 +}
  73 +.respond-to (xsmall-only, @content) {
  74 + @media only screen and (max-width: @screen-xs-max) {
  75 + @content();
  76 + }
  77 +}
  78 +.respond-to (small-only, @content) {
  79 + @media only screen and (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {
  80 + @content();
  81 + }
  82 +}
  83 +.respond-to (medium-only, @content) {
  84 + @media only screen and (min-width: @screen-md-min) and (max-width: @screen-md-max) {
  85 + @content();
  86 + }
  87 +}
  88 +.respond-to (large-only, @content) {
  89 + @media only screen and (min-width: @screen-lg-min) and (max-width: @screen-lg-max) {
  90 + @content();
  91 + }
  92 +}
  93 +.respond-to (xsmall-and-small, @content) {
  94 + @media only screen and (max-width: @screen-sm-max) {
  95 + @content();
  96 + }
  97 +}
  98 +.respond-to (small-and-medium, @content) {
  99 + @media only screen and (min-width: @screen-sm-min) and (max-width: @screen-md-max) {
  100 + @content();
  101 + }
  102 +}
src/layouts/Logo.vue
1 <template> 1 <template>
2 - <div class="flex justify-items-center items-center cursor-pointer" @click="handleGoHome"> 2 + <div class="app-logo" @click="handleGoHome">
3 <img :src="logo" /> 3 <img :src="logo" />
4 - <div v-if="show" class="logo-title ml-2 text-xl hidden md:block font-logo ellipsis">{{  
5 - globSetting.title  
6 - }}</div> 4 + <div v-if="show" class="logo-title ml-2 ellipsis">{{ globSetting.title }}</div>
7 </div> 5 </div>
8 </template> 6 </template>
9 <script lang="ts"> 7 <script lang="ts">
@@ -52,3 +50,22 @@ @@ -52,3 +50,22 @@
52 }, 50 },
53 }); 51 });
54 </script> 52 </script>
  53 +<style lang="less" scoped>
  54 + @import (reference) '../design/index.less';
  55 +
  56 + .app-logo {
  57 + display: flex;
  58 + justify-content: center;
  59 + align-items: center;
  60 + cursor: pointer;
  61 +
  62 + .logo-title {
  63 + display: none;
  64 + font-family: Georgia, serif;
  65 + font-size: 18px;
  66 + .respond-to(medium,{
  67 + display: block;
  68 + });
  69 + }
  70 + }
  71 +</style>
src/layouts/default/LayoutBreadcrumb.tsx
@@ -65,7 +65,7 @@ export default defineComponent({ @@ -65,7 +65,7 @@ export default defineComponent({
65 65
66 return () => ( 66 return () => (
67 <> 67 <>
68 - <Breadcrumb class="layout-breadcrumb flex-grow"> 68 + <Breadcrumb class="layout-breadcrumb ">
69 {() => ( 69 {() => (
70 <> 70 <>
71 <TransitionGroup name="breadcrumb"> 71 <TransitionGroup name="breadcrumb">
src/layouts/default/LayoutHeader.tsx
@@ -55,23 +55,17 @@ export default defineComponent({ @@ -55,23 +55,17 @@ export default defineComponent({
55 55
56 const isSidebarType = menuType === MenuTypeEnum.SIDEBAR; 56 const isSidebarType = menuType === MenuTypeEnum.SIDEBAR;
57 return ( 57 return (
58 - <Layout.Header  
59 - class={[  
60 - 'layout-header',  
61 - 'bg-white flex p-0 px-4 justify-items-center',  
62 - unref(headerClass),  
63 - ]}  
64 - > 58 + <Layout.Header class={['layout-header', 'flex p-0 px-4 ', unref(headerClass)]}>
65 {() => ( 59 {() => (
66 <> 60 <>
67 - <div class="flex-grow flex justify-center items-center"> 61 + <div class="layout-header__content ">
68 {showLogo && !isSidebarType && <Logo class={`layout-header__logo`} />} 62 {showLogo && !isSidebarType && <Logo class={`layout-header__logo`} />}
69 63
70 {mode !== MenuModeEnum.HORIZONTAL && showBreadCrumb && !splitMenu && ( 64 {mode !== MenuModeEnum.HORIZONTAL && showBreadCrumb && !splitMenu && (
71 <LayoutBreadcrumb /> 65 <LayoutBreadcrumb />
72 )} 66 )}
73 {(mode === MenuModeEnum.HORIZONTAL || splitMenu) && ( 67 {(mode === MenuModeEnum.HORIZONTAL || splitMenu) && (
74 - <div class={[`layout-header__menu flex-grow `, `justify-${topMenuAlign}`]}> 68 + <div class={[`layout-header__menu `, `justify-${topMenuAlign}`]}>
75 <LayoutMenu 69 <LayoutMenu
76 theme={headerTheme} 70 theme={headerTheme}
77 splitType={splitMenu ? MenuSplitTyeEnum.TOP : MenuSplitTyeEnum.NONE} 71 splitType={splitMenu ? MenuSplitTyeEnum.TOP : MenuSplitTyeEnum.NONE}
src/layouts/default/index.less
@@ -191,9 +191,17 @@ @@ -191,9 +191,17 @@
191 height: @header-height; 191 height: @header-height;
192 padding: 0 20px 0 0; 192 padding: 0 20px 0 0;
193 color: @white; 193 color: @white;
  194 + background: @white;
194 align-items: center; 195 align-items: center;
195 justify-content: space-between; 196 justify-content: space-between;
196 197
  198 + &__content {
  199 + flex-grow: 1;
  200 + display: flex;
  201 + justify-content: center;
  202 + align-items: center;
  203 + }
  204 +
197 &__header--light { 205 &__header--light {
198 background: @white; 206 background: @white;
199 border-bottom: 1px solid @header-light-bottom-border-color; 207 border-bottom: 1px solid @header-light-bottom-border-color;
@@ -334,6 +342,7 @@ @@ -334,6 +342,7 @@
334 margin-left: 20px; 342 margin-left: 20px;
335 overflow: hidden; 343 overflow: hidden;
336 align-items: center; 344 align-items: center;
  345 + flex-grow: 1;
337 } 346 }
338 347
339 &__user-dropdown { 348 &__user-dropdown {
@@ -398,4 +407,5 @@ @@ -398,4 +407,5 @@
398 407
399 .layout-breadcrumb { 408 .layout-breadcrumb {
400 padding: 0 16px; 409 padding: 0 16px;
  410 + flex-grow: 1;
401 } 411 }
src/layouts/default/setting/index.vue
1 <template> 1 <template>
2 - <div  
3 - @click="openDrawer"  
4 - class="setting-button bg-primary flex justify-center items-center text-white p-4 absolute z-10 cursor-pointer"  
5 - > 2 + <div @click="openDrawer" class="setting-button">
6 <SettingOutlined :spin="true" /> 3 <SettingOutlined :spin="true" />
7 <SettingDrawer @register="register" /> 4 <SettingDrawer @register="register" />
8 </div> 5 </div>
@@ -26,3 +23,18 @@ @@ -26,3 +23,18 @@
26 }, 23 },
27 }); 24 });
28 </script> 25 </script>
  26 +<style lang="less" scoped>
  27 + @import (reference) '../../../design/index.less';
  28 +
  29 + .setting-button {
  30 + position: absolute;
  31 + z-index: 10;
  32 + display: flex;
  33 + padding: 10px;
  34 + color: @white;
  35 + cursor: pointer;
  36 + background: @primary-color;
  37 + justify-content: center;
  38 + align-items: center;
  39 + }
  40 +</style>
src/layouts/iframe/useFrameKeepAlive.ts
@@ -6,12 +6,13 @@ import { appStore } from &#39;/@/store/modules/app&#39;; @@ -6,12 +6,13 @@ import { appStore } from &#39;/@/store/modules/app&#39;;
6 import { AppRouteRecordRaw } from '/@/router/types'; 6 import { AppRouteRecordRaw } from '/@/router/types';
7 import { useRouter } from 'vue-router'; 7 import { useRouter } from 'vue-router';
8 import router from '/@/router'; 8 import router from '/@/router';
  9 +import { unique } from '/@/utils';
9 10
10 export function useFrameKeepAlive() { 11 export function useFrameKeepAlive() {
11 const { currentRoute } = useRouter(); 12 const { currentRoute } = useRouter();
12 13
13 function getAllFramePages(routes: AppRouteRecordRaw[]): AppRouteRecordRaw[] { 14 function getAllFramePages(routes: AppRouteRecordRaw[]): AppRouteRecordRaw[] {
14 - const res: AppRouteRecordRaw[] = []; 15 + let res: AppRouteRecordRaw[] = [];
15 for (const route of routes) { 16 for (const route of routes) {
16 const { meta: { frameSrc } = {}, children } = route; 17 const { meta: { frameSrc } = {}, children } = route;
17 if (frameSrc) { 18 if (frameSrc) {
@@ -21,6 +22,7 @@ export function useFrameKeepAlive() { @@ -21,6 +22,7 @@ export function useFrameKeepAlive() {
21 res.push(...getAllFramePages(children)); 22 res.push(...getAllFramePages(children));
22 } 23 }
23 } 24 }
  25 + res = unique(res, 'name');
24 return res; 26 return res;
25 } 27 }
26 28
@@ -30,6 +32,9 @@ export function useFrameKeepAlive() { @@ -30,6 +32,9 @@ export function useFrameKeepAlive() {
30 const getFramePages = computed(() => { 32 const getFramePages = computed(() => {
31 const ret = 33 const ret =
32 getAllFramePages((toRaw(router.getRoutes()) as unknown) as AppRouteRecordRaw[]) || []; 34 getAllFramePages((toRaw(router.getRoutes()) as unknown) as AppRouteRecordRaw[]) || [];
  35 + console.log('======================');
  36 + console.log(ret);
  37 + console.log('======================');
33 return ret; 38 return ret;
34 }); 39 });
35 40
src/main.ts
@@ -10,7 +10,6 @@ import { isDevMode, isProdMode, isUseMock } from &#39;/@/utils/env&#39;; @@ -10,7 +10,6 @@ import { isDevMode, isProdMode, isUseMock } from &#39;/@/utils/env&#39;;
10 10
11 import { setupProdMockServer } from '../mock/_createProductionServer'; 11 import { setupProdMockServer } from '../mock/_createProductionServer';
12 import '/@/design/index.less'; 12 import '/@/design/index.less';
13 -import '/@/design/main.postcss';  
14 13
15 const app = createApp(App); 14 const app = createApp(App);
16 15
src/router/menus/modules/demo/comp.ts
@@ -59,7 +59,7 @@ const menu: MenuModule = { @@ -59,7 +59,7 @@ const menu: MenuModule = {
59 }, 59 },
60 { 60 {
61 path: '/mergeHeader', 61 path: '/mergeHeader',
62 - name: '合并表头', 62 + name: '合并单元格',
63 }, 63 },
64 { 64 {
65 path: '/expandTable', 65 path: '/expandTable',
src/router/routes/modules/demo/comp.ts
@@ -183,7 +183,7 @@ export default { @@ -183,7 +183,7 @@ export default {
183 name: 'MergeHeaderDemo', 183 name: 'MergeHeaderDemo',
184 component: () => import('/@/views/demo/table/MergeHeader.vue'), 184 component: () => import('/@/views/demo/table/MergeHeader.vue'),
185 meta: { 185 meta: {
186 - title: '合并表头', 186 + title: '合并单元格',
187 }, 187 },
188 }, 188 },
189 { 189 {
src/router/routes/modules/demo/permission.ts
@@ -8,7 +8,7 @@ export default { @@ -8,7 +8,7 @@ export default {
8 path: '/permission', 8 path: '/permission',
9 name: 'Permission', 9 name: 'Permission',
10 component: PAGE_LAYOUT_COMPONENT, 10 component: PAGE_LAYOUT_COMPONENT,
11 - redirect: '/permission/front', 11 + redirect: '/permission/front/page',
12 meta: { 12 meta: {
13 icon: 'carbon:user-role', 13 icon: 'carbon:user-role',
14 title: '权限管理', 14 title: '权限管理',
src/settings/asyncComponentSetting.ts deleted 100644 → 0
1 -// import { FullLoading } from '/@/components/Loading/index';  
2 -// import { LoadTimeOut } from '/@/views/sys/exception/';  
3 -  
4 -// /**  
5 -// * @description: Load page displayed by page switching  
6 -// */  
7 -// export const LOADING_PAGE = FullLoading;  
8 -  
9 -// /**  
10 -// * @description: Switch to switch timeout page  
11 -// */  
12 -// export const TIMEOUT_PAGE = LoadTimeOut;  
13 -  
14 -// /**  
15 -// * @description: If there is no response for the specified time, the loading page will be displayed  
16 -// * 400 m  
17 -// */  
18 -// export const DELAY = 400;  
19 -  
20 -// /**  
21 -// * @description: Switch page if there is no response for more than the specified time, the timeout page will be displayed  
22 -// * 10秒  
23 -// */  
24 -// export const TIMEOUT = 60 * 1000;  
src/views/dashboard/welcome/index.vue
1 <template> 1 <template>
2 - <div class="h-full w-full flex justify-center items-center"> 2 + <div class="welcome">
3 <House /> 3 <House />
4 </div> 4 </div>
5 </template> 5 </template>
@@ -14,3 +14,12 @@ @@ -14,3 +14,12 @@
14 }, 14 },
15 }); 15 });
16 </script> 16 </script>
  17 +<style lang="less" scoped>
  18 + .welcome {
  19 + display: flex;
  20 + width: 100%;
  21 + height: 100%;
  22 + justify-content: center;
  23 + align-items: center;
  24 + }
  25 +</style>
src/views/demo/comp/click-out-side/index.vue
1 <template> 1 <template>
2 - <div class="px-64"> 2 + <div class="px-10">
3 <Alert message="点内外部触发事件" show-icon class="mt-4"></Alert> 3 <Alert message="点内外部触发事件" show-icon class="mt-4"></Alert>
4 <ClickOutSide @clickOutside="handleClickOutside" class="flex justify-center mt-10"> 4 <ClickOutSide @clickOutside="handleClickOutside" class="flex justify-center mt-10">
5 - <div  
6 - @click="innerClick"  
7 - class="bg-primary w-full h-64 flex justify-center items-center text-2xl text-white rounded-lg shadow-lg"  
8 - > 5 + <div @click="innerClick" class="demo-box">
9 {{ text }} 6 {{ text }}
10 </div> 7 </div>
11 </ClickOutSide> 8 </ClickOutSide>
@@ -30,3 +27,17 @@ @@ -30,3 +27,17 @@
30 }, 27 },
31 }); 28 });
32 </script> 29 </script>
  30 +
  31 +<style lang="less" scoped>
  32 + .demo-box {
  33 + display: flex;
  34 + width: 100%;
  35 + height: 300px;
  36 + font-size: 24px;
  37 + color: #fff;
  38 + background: #408ede;
  39 + border-radius: 10px;
  40 + justify-content: center;
  41 + align-items: center;
  42 + }
  43 +</style>
src/views/demo/comp/scroll/Action.vue
@@ -8,11 +8,11 @@ @@ -8,11 +8,11 @@
8 <a-button @click="scrollTo(0)" class="mr-2">滚动到顶部</a-button> 8 <a-button @click="scrollTo(0)" class="mr-2">滚动到顶部</a-button>
9 <a-button @click="scrollBottom()" class="mr-2">滚动到底部</a-button> 9 <a-button @click="scrollBottom()" class="mr-2">滚动到底部</a-button>
10 </div> 10 </div>
11 - <div class="w-1/2 h-64 bg-white"> 11 + <div class="scroll-wrap">
12 <ScrollContainer class="mt-4" ref="scrollRef"> 12 <ScrollContainer class="mt-4" ref="scrollRef">
13 <ul class="p-3"> 13 <ul class="p-3">
14 <template v-for="index in 100" :key="index"> 14 <template v-for="index in 100" :key="index">
15 - <li class="leading-8 px-2" :style="{ border: '1px solid #eee' }">{{ index }}</li> 15 + <li class="p-2" :style="{ border: '1px solid #eee' }">{{ index }}</li>
16 </template> 16 </template>
17 </ul> 17 </ul>
18 </ScrollContainer> 18 </ScrollContainer>
@@ -50,3 +50,10 @@ @@ -50,3 +50,10 @@
50 }, 50 },
51 }); 51 });
52 </script> 52 </script>
  53 +<style lang="less" scoped>
  54 + .scroll-wrap {
  55 + width: 50%;
  56 + height: 300px;
  57 + background: #fff;
  58 + }
  59 +</style>
src/views/demo/comp/scroll/VirtualScroll.vue
@@ -9,9 +9,9 @@ @@ -9,9 +9,9 @@
9 </VirtualScroll> 9 </VirtualScroll>
10 </div> 10 </div>
11 11
12 - <Divider>即使不可见,也预先加载30条数据,防止空白</Divider> 12 + <Divider>即使不可见,也预先加载50条数据,防止空白</Divider>
13 <div class="virtual-scroll-demo-wrap"> 13 <div class="virtual-scroll-demo-wrap">
14 - <VirtualScroll :itemHeight="41" :items="data" :height="300" :width="300" :bench="30"> 14 + <VirtualScroll :itemHeight="41" :items="data" :height="300" :width="300" :bench="50">
15 <template v-slot="{ item }"> 15 <template v-slot="{ item }">
16 <div class="virtual-scroll-demo__item">{{ item.title }}</div> 16 <div class="virtual-scroll-demo__item">{{ item.title }}</div>
17 </template> 17 </template>
src/views/demo/comp/scroll/index.vue
1 <template> 1 <template>
2 <div class="p-4"> 2 <div class="p-4">
3 <Alert message="抽取el-scrollbar,并对其进行扩展,滚动条美化,适用于各个浏览器" type="info" /> 3 <Alert message="抽取el-scrollbar,并对其进行扩展,滚动条美化,适用于各个浏览器" type="info" />
4 - <div class="w-1/2 h-64 bg-white"> 4 + <div class="scroll-wrap">
5 <ScrollContainer class="mt-4"> 5 <ScrollContainer class="mt-4">
6 <ul class="p-3"> 6 <ul class="p-3">
7 <template v-for="index in 100" :key="index"> 7 <template v-for="index in 100" :key="index">
8 - <li class="leading-8 px-2" :style="{ border: '1px solid #eee' }">{{ index }}</li> 8 + <li class="p-2" :style="{ border: '1px solid #eee' }">{{ index }}</li>
9 </template> 9 </template>
10 </ul> 10 </ul>
11 </ScrollContainer> 11 </ScrollContainer>
@@ -24,3 +24,10 @@ @@ -24,3 +24,10 @@
24 }, 24 },
25 }); 25 });
26 </script> 26 </script>
  27 +<style lang="less" scoped>
  28 + .scroll-wrap {
  29 + width: 50%;
  30 + height: 300px;
  31 + background: #fff;
  32 + }
  33 +</style>
src/views/demo/comp/strength-meter/index.vue
1 <template> 1 <template>
2 <div class="p-4 flex justify-center"> 2 <div class="p-4 flex justify-center">
3 - <div class="w-1/2 bg-white p-10 rounded-md"> 3 + <div class="demo-wrap p-10">
4 <StrengthMeter placeholder="默认" /> 4 <StrengthMeter placeholder="默认" />
5 <StrengthMeter placeholder="禁用" disabled /> 5 <StrengthMeter placeholder="禁用" disabled />
6 <br /> 6 <br />
@@ -21,3 +21,10 @@ @@ -21,3 +21,10 @@
21 }, 21 },
22 }); 22 });
23 </script> 23 </script>
  24 +<style lang="less" scoped>
  25 + .demo-wrap {
  26 + width: 50%;
  27 + background: #fff;
  28 + border-radius: 10px;
  29 + }
  30 +</style>
src/views/demo/comp/verify/Rotate.vue
@@ -21,3 +21,8 @@ @@ -21,3 +21,8 @@
21 }, 21 },
22 }); 22 });
23 </script> 23 </script>
  24 +<style lang="less" scoped>
  25 + .bg-gray-700 {
  26 + background: #4a5568;
  27 + }
  28 +</style>
src/views/demo/comp/verify/index.vue
@@ -88,3 +88,8 @@ @@ -88,3 +88,8 @@
88 }, 88 },
89 }); 89 });
90 </script> 90 </script>
  91 +<style lang="less" scoped>
  92 + .bg-gray-700 {
  93 + background: #4a5568;
  94 + }
  95 +</style>
src/views/demo/feat/tabs/index.vue
1 <template> 1 <template>
2 <div class="p-4"> 2 <div class="p-4">
3 - <CollapseContainer  
4 - class="px-20 bg-white w-full h-32 rounded-md"  
5 - title="在下面输入框输入文本,切换后回来内容会保存"  
6 - > 3 + <CollapseContainer title="在下面输入框输入文本,切换后回来内容会保存">
7 <a-input placeholder="请输入" /> 4 <a-input placeholder="请输入" />
8 </CollapseContainer> 5 </CollapseContainer>
9 6
10 - <CollapseContainer class="px-20 mt-10 bg-white w-full h-32 rounded-md" title="标签页操作"> 7 + <CollapseContainer class="mt-4 px-4" title="标签页操作">
11 <a-button class="mr-2" @click="closeAll">关闭所有</a-button> 8 <a-button class="mr-2" @click="closeAll">关闭所有</a-button>
12 <a-button class="mr-2" @click="closeLeft">关闭左侧</a-button> 9 <a-button class="mr-2" @click="closeLeft">关闭左侧</a-button>
13 <a-button class="mr-2" @click="closeRight">关闭右侧</a-button> 10 <a-button class="mr-2" @click="closeRight">关闭右侧</a-button>
src/views/demo/permission/back/Btn.vue
1 <template> 1 <template>
2 - <div class="p-10 m-4 rounded-md bg-white"> 2 + <div class="p-4 m-4 demo">
3 <Alert message="刷新后会还原" show-icon /> 3 <Alert message="刷新后会还原" show-icon />
4 4
5 <CurrentPermissionMode /> 5 <CurrentPermissionMode />
@@ -83,3 +83,8 @@ @@ -83,3 +83,8 @@
83 }, 83 },
84 }); 84 });
85 </script> 85 </script>
  86 +<style lang="less" scoped>
  87 + .demo {
  88 + background: #fff;
  89 + }
  90 +</style>
src/views/demo/permission/back/index.vue
1 <template> 1 <template>
2 - <div class="p-10 m-4 rounded-md bg-white"> 2 + <div class="p-4 m-4 demo">
3 <Alert 3 <Alert
4 message="目前mock了两组数据, id为1 和 2 具体返回的菜单可以在mock/sys/menu.ts内查看" 4 message="目前mock了两组数据, id为1 和 2 具体返回的菜单可以在mock/sys/menu.ts内查看"
5 show-icon 5 show-icon
@@ -35,3 +35,8 @@ @@ -35,3 +35,8 @@
35 }, 35 },
36 }); 36 });
37 </script> 37 </script>
  38 +<style lang="less" scoped>
  39 + .demo {
  40 + background: #fff;
  41 + }
  42 +</style>
src/views/demo/permission/front/AuthPageA.vue
1 <template> 1 <template>
2 - <div class="m-10 bg-primary text-2xl h-64 rounded-lg flex justify-center items-center text-white">  
3 - Super 角色可见  
4 - </div> 2 + <div class="m-10 auth-page"> Super 角色可见 </div>
5 </template> 3 </template>
6 <script lang="ts"> 4 <script lang="ts">
7 import { defineComponent } from 'vue'; 5 import { defineComponent } from 'vue';
8 export default defineComponent({}); 6 export default defineComponent({});
9 </script> 7 </script>
  8 +<style lang="less" scoped>
  9 + .auth-page {
  10 + display: flex;
  11 + height: 300px;
  12 + font-size: 24px;
  13 + color: #fff;
  14 + background: #409efe;
  15 + border-radius: 12px;
  16 + justify-content: center;
  17 + align-items: center;
  18 + }
  19 +</style>
src/views/demo/permission/front/AuthPageB.vue
1 <template> 1 <template>
2 - <div class="m-10 bg-primary text-2xl h-64 rounded-lg flex justify-center items-center text-white">  
3 - Test 角色可见  
4 - </div> 2 + <div class="m-10 auth-page"> Test 角色可见 </div>
5 </template> 3 </template>
6 <script lang="ts"> 4 <script lang="ts">
7 import { defineComponent } from 'vue'; 5 import { defineComponent } from 'vue';
8 export default defineComponent({}); 6 export default defineComponent({});
9 </script> 7 </script>
  8 +<style lang="less" scoped>
  9 + .auth-page {
  10 + display: flex;
  11 + height: 300px;
  12 + font-size: 24px;
  13 + color: #fff;
  14 + background: #409efe;
  15 + border-radius: 12px;
  16 + justify-content: center;
  17 + align-items: center;
  18 + }
  19 +</style>
src/views/demo/permission/front/Btn.vue
1 <template> 1 <template>
2 - <div class="p-10 m-4 rounded-md bg-white"> 2 + <div class="demo p-4 m-4">
3 <Alert 3 <Alert
4 message="由于刷新的时候会请求用户信息接口,会根据接口重置角色信息,所以刷新后界面会恢复原样,如果不需要,可以注释 src/layout/default/index内的获取用户信息接口" 4 message="由于刷新的时候会请求用户信息接口,会根据接口重置角色信息,所以刷新后界面会恢复原样,如果不需要,可以注释 src/layout/default/index内的获取用户信息接口"
5 show-icon 5 show-icon
@@ -82,3 +82,8 @@ @@ -82,3 +82,8 @@
82 }, 82 },
83 }); 83 });
84 </script> 84 </script>
  85 +<style lang="less" scoped>
  86 + .demo {
  87 + background: #fff;
  88 + }
  89 +</style>
src/views/demo/permission/front/index.vue
1 <template> 1 <template>
2 - <div class="p-10 m-4 rounded-md bg-white"> 2 + <div class="p-4 m-4 demo">
3 <Alert 3 <Alert
4 message="由于刷新的时候会请求用户信息接口,会根据接口重置角色信息,所以刷新后界面会恢复原样,如果不需要,可以注释 src/layout/default/index内的获取用户信息接口" 4 message="由于刷新的时候会请求用户信息接口,会根据接口重置角色信息,所以刷新后界面会恢复原样,如果不需要,可以注释 src/layout/default/index内的获取用户信息接口"
5 show-icon 5 show-icon
@@ -46,3 +46,8 @@ @@ -46,3 +46,8 @@
46 }, 46 },
47 }); 47 });
48 </script> 48 </script>
  49 +<style lang="less" scoped>
  50 + .demo {
  51 + background: #fff;
  52 + }
  53 +</style>
src/views/demo/tree/ActionTree.vue
@@ -17,7 +17,7 @@ @@ -17,7 +17,7 @@
17 <a-button @click="deleteNodeByKey('2-2')" class="mr-2">删除parent3节点</a-button> 17 <a-button @click="deleteNodeByKey('2-2')" class="mr-2">删除parent3节点</a-button>
18 <a-button @click="updateNodeByKey('1-1')" class="mr-2">更新parent2节点</a-button> 18 <a-button @click="updateNodeByKey('1-1')" class="mr-2">更新parent2节点</a-button>
19 </div> 19 </div>
20 - <CollapseContainer title="函数操作" class="w-1/3 mr-4" :canExpan="false"> 20 + <CollapseContainer title="函数操作" class="mr-4" :canExpan="false" :style="{ width: '33%' }">
21 <BasicTree :treeData="treeData" ref="treeRef" :checkable="true" /> 21 <BasicTree :treeData="treeData" ref="treeRef" :checkable="true" />
22 </CollapseContainer> 22 </CollapseContainer>
23 </div> 23 </div>
src/views/demo/tree/EditTree.vue
1 <template> 1 <template>
2 <div class="flex p-4"> 2 <div class="flex p-4">
3 - <CollapseContainer title="右侧操作按钮" class="w-1/3 mr-4"> 3 + <CollapseContainer title="右侧操作按钮" class="mr-4" :style="{ width: '33%' }">
4 <BasicTree :treeData="treeData" :actionList="actionList" /> 4 <BasicTree :treeData="treeData" :actionList="actionList" />
5 </CollapseContainer> 5 </CollapseContainer>
6 6
7 - <CollapseContainer title="右键菜单" class="w-1/3 mr-4"> 7 + <CollapseContainer title="右键菜单" class="mr-4" :style="{ width: '33%' }">
8 <BasicTree :treeData="treeData" :beforeRightClick="getRightMenuList" /> 8 <BasicTree :treeData="treeData" :beforeRightClick="getRightMenuList" />
9 </CollapseContainer> 9 </CollapseContainer>
10 </div> 10 </div>
src/views/demo/tree/index.vue
1 <template> 1 <template>
2 <div class="flex p-4"> 2 <div class="flex p-4">
3 - <CollapseContainer title="基础示例" class="w-1/3 mr-4"> 3 + <CollapseContainer title="基础示例" :style="{ width: '33%' }" class="mr-4">
4 <BasicTree :treeData="treeData" /> 4 <BasicTree :treeData="treeData" />
5 </CollapseContainer> 5 </CollapseContainer>
6 6
7 - <CollapseContainer title="可勾选" class="w-1/3 mr-4"> 7 + <CollapseContainer title="可勾选" class="mr-4" :style="{ width: '33%' }">
8 <BasicTree :treeData="treeData" :checkable="true" /> 8 <BasicTree :treeData="treeData" :checkable="true" />
9 </CollapseContainer> 9 </CollapseContainer>
10 10
11 - <CollapseContainer title="默认展开/勾选示例" class="w-1/3"> 11 + <CollapseContainer title="默认展开/勾选示例" :style="{ width: '33%' }">
12 <BasicTree 12 <BasicTree
13 :treeData="treeData" 13 :treeData="treeData"
14 :checkable="true" 14 :checkable="true"
src/views/index.vue deleted 100644 → 0
1 -<template>  
2 - <h1>{{ msg }}</h1>  
3 - <a-button @click="test">change </a-button>  
4 - <div class="sw">  
5 - <Scrollbar ref="a">  
6 - <div class="ss">13123</div>  
7 - </Scrollbar>  
8 - </div>  
9 -  
10 - <a-button @click="test1" type="primary">change</a-button>  
11 - <ScrollYTransition>  
12 - <div class="box" v-show="show"> 1 </div>  
13 - </ScrollYTransition>  
14 -  
15 - <!-- <BasicModal /> -->  
16 -</template>  
17 -<script lang="ts">  
18 - import { defineComponent, ref } from 'vue';  
19 - import { Scrollbar } from '/@/components/Scrollbar/index';  
20 - import { ScrollContainer } from '/@/components/Container/index';  
21 - import { defHttp } from '/@/utils/http/axios';  
22 - import { useThemeMode } from '/@/useApp';  
23 - import { useMessage } from '/@/hooks/web/useMessage';  
24 - import {  
25 - CollapseTransition,  
26 - ExpandXTransition,  
27 - ScaleTransition,  
28 - ScaleRotateTransition,  
29 - ScrollYTransition,  
30 - } from '/@/components/Transition';  
31 - import { ThemeModeEnum } from '../enums/appEnum';  
32 - // import { BasicModal } from '/@/components/modal';  
33 - export default defineComponent({  
34 - name: 'Home',  
35 - components: {  
36 - Scrollbar,  
37 - CollapseTransition,  
38 - ExpandXTransition,  
39 - ScaleTransition,  
40 - ScaleRotateTransition,  
41 - ScrollYTransition,  
42 - ScrollContainer,  
43 - // BasicModal  
44 - },  
45 - setup() {  
46 - const { createMessage } = useMessage();  
47 - createMessage.success({  
48 - content: '123',  
49 - duration: 999999,  
50 - });  
51 - // createMessage.error('123');  
52 - // createMessage.info('123');  
53 - // createMessage.warning('123');  
54 - // createConfirm({  
55 - // iconType: 'success',  
56 - // title: '123',  
57 - // content: '123',  
58 - // });  
59 - const { runChangeThemeMode } = useThemeMode(ThemeModeEnum.DARK);  
60 - let msg = ref('hello Home');  
61 - const show = ref(true);  
62 - function test() {  
63 - msg.value = 'hello Home1';  
64 - }  
65 - defHttp.request({  
66 - method: 'post',  
67 - url: '/login',  
68 - params: {  
69 - username: 'vben',  
70 - password: '123456',  
71 - },  
72 - });  
73 -  
74 - const a = ref(null);  
75 - function test1() {  
76 - runChangeThemeMode();  
77 - // show.value = !show.value;  
78 - // a.value.scrollTo(200);  
79 - }  
80 - return {  
81 - a,  
82 - msg,  
83 - test,  
84 - show,  
85 - test1,  
86 - };  
87 - },  
88 - });  
89 -</script>  
90 -<style lang="less" scoped>  
91 - .sw {  
92 - width: 300px;  
93 - height: 300px;  
94 - border: 1px solid red;  
95 -  
96 - .scrollbar {  
97 - height: 100%;  
98 - }  
99 -  
100 - .ss {  
101 - height: 500px;  
102 - }  
103 - }  
104 -  
105 - .box {  
106 - width: 200px;  
107 - height: 200px;  
108 - background: #000;  
109 - }  
110 -</style>  
src/views/sys/exception/Exception.tsx
@@ -15,6 +15,7 @@ import { useRoute } from &#39;vue-router&#39;; @@ -15,6 +15,7 @@ import { useRoute } from &#39;vue-router&#39;;
15 import { useGo, useRedo } from '/@/hooks/web/usePage'; 15 import { useGo, useRedo } from '/@/hooks/web/usePage';
16 import { PageEnum } from '/@/enums/pageEnum'; 16 import { PageEnum } from '/@/enums/pageEnum';
17 17
  18 +import './exception.less';
18 interface MapValue { 19 interface MapValue {
19 title: string; 20 title: string;
20 subTitle: string; 21 subTitle: string;
@@ -105,7 +106,7 @@ export default defineComponent({ @@ -105,7 +106,7 @@ export default defineComponent({
105 const { title, subTitle, btnText, icon, handler } = unref(getMapValue) || {}; 106 const { title, subTitle, btnText, icon, handler } = unref(getMapValue) || {};
106 return ( 107 return (
107 <Result 108 <Result
108 - class="flex items-center flex-col" 109 + class="exception "
109 title={props.title || title} 110 title={props.title || title}
110 sub-title={props.subTitle || subTitle} 111 sub-title={props.subTitle || subTitle}
111 > 112 >
src/views/sys/exception/exception.less 0 → 100644
  1 +.exception {
  2 + display: flex;
  3 + align-items: center;
  4 + flex-direction: column;
  5 +}
src/views/sys/login/Login.vue
1 <template> 1 <template>
2 - <div class="login h-screen relative">  
3 - <div class="login-mask h-full hidden lg:block" />  
4 - <div  
5 - class="h-full absolute right-0 top-0 w-full lg:w-2/5 xl:w-1/3 flex justify-center items-center"  
6 - >  
7 - <div class="login-form bg-white w-full rounded-sm border-solid bg-clip-padding mx-6 xl:mx-14">  
8 - <div class="w-full h-full border border-gray-600 px-2 py-10 rounded-sm">  
9 - <header class="flex justify-center items-center">  
10 - <img src="/@/assets/images/logo.png" class="w-12 mr-4 inline-block" />  
11 - <h1 class="text-2xl text-center text-primary tracking-wide">Vben Admin 2.0</h1> 2 + <div class="login">
  3 + <div class="login-mask" />
  4 + <div class="login-form-wrap">
  5 + <div class="login-form mx-6">
  6 + <div class="login-form__content px-2 py-10">
  7 + <header>
  8 + <img src="/@/assets/images/logo.png" class="mr-4" />
  9 + <h1>{{ title }}</h1>
12 </header> 10 </header>
13 11
14 - <a-form class="w-4/5 mx-auto mt-10" :model="formData" :rules="formRules" ref="formRef"> 12 + <a-form class="mx-auto mt-10" :model="formData" :rules="formRules" ref="formRef">
15 <a-form-item name="account"> 13 <a-form-item name="account">
16 <a-input size="large" v-model:value="formData.account" placeholder="vben" /> 14 <a-input size="large" v-model:value="formData.account" placeholder="vben" />
17 </a-form-item> 15 </a-form-item>
@@ -50,9 +48,11 @@ @@ -50,9 +48,11 @@
50 import { userStore } from '/@/store/modules/user'; 48 import { userStore } from '/@/store/modules/user';
51 import { appStore } from '/@/store/modules/app'; 49 import { appStore } from '/@/store/modules/app';
52 import { useMessage } from '/@/hooks/web/useMessage'; 50 import { useMessage } from '/@/hooks/web/useMessage';
  51 + import { useSetting } from '/@/hooks/core/useSetting';
53 export default defineComponent({ 52 export default defineComponent({
54 components: { BasicDragVerify }, 53 components: { BasicDragVerify },
55 setup() { 54 setup() {
  55 + const { globSetting } = useSetting();
56 const { notification } = useMessage(); 56 const { notification } = useMessage();
57 const formRef = ref<any>(null); 57 const formRef = ref<any>(null);
58 const verifyRef = ref<RefInstanceType<DragVerifyActionType>>(null); 58 const verifyRef = ref<RefInstanceType<DragVerifyActionType>>(null);
@@ -115,23 +115,79 @@ @@ -115,23 +115,79 @@
115 formRules, 115 formRules,
116 login: handleLogin, 116 login: handleLogin,
117 openLoginVerify: openLoginVerifyRef, 117 openLoginVerify: openLoginVerifyRef,
  118 + title: globSetting && globSetting.title,
118 }; 119 };
119 }, 120 },
120 }); 121 });
121 </script> 122 </script>
122 <style lang="less" scoped> 123 <style lang="less" scoped>
  124 + @import (reference) '../../../design/index.less';
  125 +
123 .login { 126 .login {
  127 + position: relative;
  128 + height: 100vh;
124 background: url(../../../assets/images/login/login-bg.png) no-repeat; 129 background: url(../../../assets/images/login/login-bg.png) no-repeat;
125 background-size: 100% 100%; 130 background-size: 100% 100%;
126 131
127 &-mask { 132 &-mask {
  133 + display: none;
  134 + height: 100%;
128 background: url(../../../assets/images/login/login-in.png) no-repeat; 135 background: url(../../../assets/images/login/login-in.png) no-repeat;
129 background-size: 100% 100%; 136 background-size: 100% 100%;
  137 +
  138 + .respond-to(large, { display: block;});
130 } 139 }
131 140
132 &-form { 141 &-form {
133 - border-color: rgba(255, 255, 255, 0.5); 142 + width: 100%;
  143 + background: @white;
  144 + border: 10px solid rgba(255, 255, 255, 0.5);
134 border-width: 10px; 145 border-width: 10px;
  146 + border-radius: 4px;
  147 + background-clip: padding-box;
  148 + .respond-to(xlarge, { margin: 0 56px});
  149 +
  150 + &-wrap {
  151 + position: absolute;
  152 + top: 0;
  153 + right: 0;
  154 + display: flex;
  155 + width: 100%;
  156 + height: 100%;
  157 + justify-content: center;
  158 + align-items: center;
  159 + .respond-to(large, { width: 40%;});
  160 + .respond-to(xlarge, { width: 33.3%;});
  161 + }
  162 +
  163 + &__content {
  164 + width: 100%;
  165 + height: 100%;
  166 + border: 1px solid #999;
  167 + border-radius: 2px;
  168 +
  169 + header {
  170 + display: flex;
  171 + justify-content: center;
  172 + align-items: center;
  173 +
  174 + img {
  175 + display: inline-block;
  176 + width: 48px;
  177 + }
  178 +
  179 + h1 {
  180 + margin-bottom: 0;
  181 + font-size: 24px;
  182 + color: @primary-color;
  183 + text-align: center;
  184 + }
  185 + }
  186 +
  187 + form {
  188 + width: 80%;
  189 + }
  190 + }
135 } 191 }
136 } 192 }
137 </style> 193 </style>
tailwind.config.js deleted 100644 → 0
1 -// #4c5eb8  
2 -const { colors, inset } = require('tailwindcss/defaultTheme');  
3 -  
4 -const themeColors = {  
5 - mask: {  
6 - light: 'rgba(255,255,255,0.3)',  
7 - },  
8 - primary: '#018ffb',  
9 - success: '#55d187',  
10 - warning: '#ffd164',  
11 - danger: '#ed6f6f',  
12 -};  
13 -  
14 -module.exports = {  
15 - purge: {  
16 - enabled: process.env.NODE_ENV === 'production',  
17 - content: [  
18 - './index.html',  
19 - './src/**/*.vue',  
20 - './src/**/*.js',  
21 - './src/**/*.jsx',  
22 - './src/**/*.ts',  
23 - './src/**/*.tsx',  
24 - ],  
25 - },  
26 - theme: {  
27 - colors: {  
28 - ...colors,  
29 - ...themeColors,  
30 - },  
31 - inset: {  
32 - ...inset,  
33 - '1/2': '50%',  
34 - },  
35 - screens: {  
36 - xs: '480px',  
37 - sm: '576px',  
38 - md: '768px',  
39 - lg: '992px',  
40 - xl: '1200px',  
41 - xxl: '1600px',  
42 - },  
43 - fontSize: {  
44 - xs: '.75rem', // 12px  
45 - sm: '.875rem', // 14px  
46 - base: '1rem', // 16px  
47 - lg: '1.125rem', // 18px  
48 - xl: '1.25rem', // 20px  
49 - '2xl': '1.5rem', // 24px  
50 - '3xl': '1.875rem', // 30px  
51 - '4xl': '2.25rem', // 36px  
52 - '5xl': '3rem', // 48px  
53 - '6xl': '4rem', // 64px  
54 - logo: '9rem', // 134px  
55 - },  
56 - fontWeight: {  
57 - light: 300,  
58 - normal: 400,  
59 - medium: 500,  
60 - semibold: 600,  
61 - bold: 700,  
62 - extrabold: 800,  
63 - black: 900,  
64 - },  
65 - fontFamily: {  
66 - logo: [' Georgia', 'serif'],  
67 - },  
68 - },  
69 - future: {  
70 - // 2.0 remove col-gap-{n}  
71 - removeDeprecatedGapUtilities: true,  
72 - purgeLayersByDefault: true,  
73 - },  
74 -};  
tsconfig.json
@@ -23,9 +23,6 @@ @@ -23,9 +23,6 @@
23 "paths": { 23 "paths": {
24 "/@/*": [ 24 "/@/*": [
25 "src/*" 25 "src/*"
26 - ],  
27 - "/@design/": [  
28 - "src/design/index.less"  
29 ] 26 ]
30 } 27 }
31 }, 28 },
yarn.lock
@@ -367,14 +367,6 @@ @@ -367,14 +367,6 @@
367 minimatch "^3.0.4" 367 minimatch "^3.0.4"
368 strip-json-comments "^3.1.1" 368 strip-json-comments "^3.1.1"
369 369
370 -"@fullhuman/postcss-purgecss@^2.1.2":  
371 - version "2.3.0"  
372 - resolved "https://registry.npmjs.org/@fullhuman/postcss-purgecss/-/postcss-purgecss-2.3.0.tgz#50a954757ec78696615d3e118e3fee2d9291882e"  
373 - integrity sha512-qnKm5dIOyPGJ70kPZ5jiz0I9foVOic0j+cOzNDoo8KoCf6HjicIZ99UfO2OmE7vCYSKAAepEwJtNzpiiZAh9xw==  
374 - dependencies:  
375 - postcss "7.0.32"  
376 - purgecss "^2.3.0"  
377 -  
378 "@iconify/iconify@2.0.0-rc.1", "@iconify/iconify@>=2.0.0-rc.1", "@iconify/iconify@^2.0.0-rc.1": 370 "@iconify/iconify@2.0.0-rc.1", "@iconify/iconify@>=2.0.0-rc.1", "@iconify/iconify@^2.0.0-rc.1":
379 version "2.0.0-rc.1" 371 version "2.0.0-rc.1"
380 resolved "https://registry.npmjs.org/@iconify/iconify/-/iconify-2.0.0-rc.1.tgz#a8bae29d71016d5af98c69f56a73c4a040217b3a" 372 resolved "https://registry.npmjs.org/@iconify/iconify/-/iconify-2.0.0-rc.1.tgz#a8bae29d71016d5af98c69f56a73c4a040217b3a"
@@ -976,21 +968,7 @@ acorn-jsx@^5.2.0: @@ -976,21 +968,7 @@ acorn-jsx@^5.2.0:
976 resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" 968 resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b"
977 integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== 969 integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==
978 970
979 -acorn-node@^1.6.1:  
980 - version "1.8.2"  
981 - resolved "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8"  
982 - integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==  
983 - dependencies:  
984 - acorn "^7.0.0"  
985 - acorn-walk "^7.0.0"  
986 - xtend "^4.0.2"  
987 -  
988 -acorn-walk@^7.0.0:  
989 - version "7.2.0"  
990 - resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc"  
991 - integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==  
992 -  
993 -acorn@^7.0.0, acorn@^7.1.1, acorn@^7.4.0: 971 +acorn@^7.1.1, acorn@^7.4.0:
994 version "7.4.1" 972 version "7.4.1"
995 resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" 973 resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
996 integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== 974 integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
@@ -1211,7 +1189,7 @@ atob@^2.1.2: @@ -1211,7 +1189,7 @@ atob@^2.1.2:
1211 resolved "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" 1189 resolved "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
1212 integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== 1190 integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
1213 1191
1214 -autoprefixer@^9.4.5, autoprefixer@^9.8.6: 1192 +autoprefixer@^9.8.6:
1215 version "9.8.6" 1193 version "9.8.6"
1216 resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz#3b73594ca1bf9266320c5acf1588d74dea74210f" 1194 resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz#3b73594ca1bf9266320c5acf1588d74dea74210f"
1217 integrity sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg== 1195 integrity sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==
@@ -1376,7 +1354,7 @@ builtin-modules@^3.1.0: @@ -1376,7 +1354,7 @@ builtin-modules@^3.1.0:
1376 resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484" 1354 resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484"
1377 integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw== 1355 integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==
1378 1356
1379 -bytes@3.1.0, bytes@^3.0.0: 1357 +bytes@3.1.0:
1380 version "3.1.0" 1358 version "3.1.0"
1381 resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" 1359 resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6"
1382 integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== 1360 integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==
@@ -1433,11 +1411,6 @@ callsites@^3.0.0: @@ -1433,11 +1411,6 @@ callsites@^3.0.0:
1433 resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 1411 resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
1434 integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 1412 integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
1435 1413
1436 -camelcase-css@^2.0.1:  
1437 - version "2.0.1"  
1438 - resolved "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5"  
1439 - integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==  
1440 -  
1441 camelcase-keys@^2.0.0: 1414 camelcase-keys@^2.0.0:
1442 version "2.1.0" 1415 version "2.1.0"
1443 resolved "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" 1416 resolved "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7"
@@ -1507,7 +1480,7 @@ chalk@2.4.2, chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: @@ -1507,7 +1480,7 @@ chalk@2.4.2, chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2:
1507 escape-string-regexp "^1.0.5" 1480 escape-string-regexp "^1.0.5"
1508 supports-color "^5.3.0" 1481 supports-color "^5.3.0"
1509 1482
1510 -chalk@4.1.0, "chalk@^3.0.0 || ^4.0.0", chalk@^4.0.0, chalk@^4.1.0: 1483 +chalk@4.1.0, chalk@^4.0.0, chalk@^4.1.0:
1511 version "4.1.0" 1484 version "4.1.0"
1512 resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" 1485 resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a"
1513 integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== 1486 integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==
@@ -1685,7 +1658,7 @@ collection-visit@^1.0.0: @@ -1685,7 +1658,7 @@ collection-visit@^1.0.0:
1685 map-visit "^1.0.0" 1658 map-visit "^1.0.0"
1686 object-visit "^1.0.0" 1659 object-visit "^1.0.0"
1687 1660
1688 -color-convert@^1.9.0, color-convert@^1.9.1: 1661 +color-convert@^1.9.0:
1689 version "1.9.3" 1662 version "1.9.3"
1690 resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 1663 resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
1691 integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 1664 integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
@@ -1704,27 +1677,11 @@ color-name@1.1.3: @@ -1704,27 +1677,11 @@ color-name@1.1.3:
1704 resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 1677 resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
1705 integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 1678 integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
1706 1679
1707 -color-name@^1.0.0, color-name@~1.1.4: 1680 +color-name@~1.1.4:
1708 version "1.1.4" 1681 version "1.1.4"
1709 resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 1682 resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
1710 integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 1683 integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
1711 1684
1712 -color-string@^1.5.4:  
1713 - version "1.5.4"  
1714 - resolved "https://registry.npmjs.org/color-string/-/color-string-1.5.4.tgz#dd51cd25cfee953d138fe4002372cc3d0e504cb6"  
1715 - integrity sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw==  
1716 - dependencies:  
1717 - color-name "^1.0.0"  
1718 - simple-swizzle "^0.2.2"  
1719 -  
1720 -color@^3.1.2:  
1721 - version "3.1.3"  
1722 - resolved "https://registry.npmjs.org/color/-/color-3.1.3.tgz#ca67fb4e7b97d611dcde39eceed422067d91596e"  
1723 - integrity sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==  
1724 - dependencies:  
1725 - color-convert "^1.9.1"  
1726 - color-string "^1.5.4"  
1727 -  
1728 colorette@^1.2.1: 1685 colorette@^1.2.1:
1729 version "1.2.1" 1686 version "1.2.1"
1730 resolved "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b" 1687 resolved "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b"
@@ -1740,11 +1697,6 @@ commander@^2.20.0: @@ -1740,11 +1697,6 @@ commander@^2.20.0:
1740 resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" 1697 resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
1741 integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== 1698 integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
1742 1699
1743 -commander@^5.0.0:  
1744 - version "5.1.0"  
1745 - resolved "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae"  
1746 - integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==  
1747 -  
1748 commitizen@^4.0.3, commitizen@^4.2.1: 1700 commitizen@^4.0.3, commitizen@^4.2.1:
1749 version "4.2.1" 1701 version "4.2.1"
1750 resolved "https://registry.npmjs.org/commitizen/-/commitizen-4.2.1.tgz#3b098b16c6b1a37f0d129018dff6751b20cd3103" 1702 resolved "https://registry.npmjs.org/commitizen/-/commitizen-4.2.1.tgz#3b098b16c6b1a37f0d129018dff6751b20cd3103"
@@ -2069,11 +2021,6 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2: @@ -2069,11 +2021,6 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2:
2069 shebang-command "^2.0.0" 2021 shebang-command "^2.0.0"
2070 which "^2.0.1" 2022 which "^2.0.1"
2071 2023
2072 -css-unit-converter@^1.1.1:  
2073 - version "1.1.2"  
2074 - resolved "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.2.tgz#4c77f5a1954e6dbff60695ecb214e3270436ab21"  
2075 - integrity sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA==  
2076 -  
2077 cssesc@^3.0.0: 2024 cssesc@^3.0.0:
2078 version "3.0.0" 2025 version "3.0.0"
2079 resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" 2026 resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
@@ -2222,11 +2169,6 @@ define-property@^2.0.2: @@ -2222,11 +2169,6 @@ define-property@^2.0.2:
2222 is-descriptor "^1.0.2" 2169 is-descriptor "^1.0.2"
2223 isobject "^3.0.1" 2170 isobject "^3.0.1"
2224 2171
2225 -defined@^1.0.0:  
2226 - version "1.0.0"  
2227 - resolved "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693"  
2228 - integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=  
2229 -  
2230 delegates@^1.0.0: 2172 delegates@^1.0.0:
2231 version "1.0.0" 2173 version "1.0.0"
2232 resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" 2174 resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
@@ -2257,15 +2199,6 @@ detect-indent@6.0.0: @@ -2257,15 +2199,6 @@ detect-indent@6.0.0:
2257 resolved "https://registry.npmjs.org/detect-indent/-/detect-indent-6.0.0.tgz#0abd0f549f69fc6659a254fe96786186b6f528fd" 2199 resolved "https://registry.npmjs.org/detect-indent/-/detect-indent-6.0.0.tgz#0abd0f549f69fc6659a254fe96786186b6f528fd"
2258 integrity sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA== 2200 integrity sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA==
2259 2201
2260 -detective@^5.2.0:  
2261 - version "5.2.0"  
2262 - resolved "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz#feb2a77e85b904ecdea459ad897cc90a99bd2a7b"  
2263 - integrity sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==  
2264 - dependencies:  
2265 - acorn-node "^1.6.1"  
2266 - defined "^1.0.0"  
2267 - minimist "^1.1.1"  
2268 -  
2269 diff@^4.0.1: 2202 diff@^4.0.1:
2270 version "4.0.2" 2203 version "4.0.2"
2271 resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" 2204 resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
@@ -2910,7 +2843,7 @@ fresh@~0.5.2: @@ -2910,7 +2843,7 @@ fresh@~0.5.2:
2910 resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" 2843 resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
2911 integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= 2844 integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
2912 2845
2913 -fs-extra@8.1.0, fs-extra@^8.0.0: 2846 +fs-extra@8.1.0:
2914 version "8.1.0" 2847 version "8.1.0"
2915 resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" 2848 resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0"
2916 integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== 2849 integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==
@@ -3558,11 +3491,6 @@ is-arrayish@^0.2.1: @@ -3558,11 +3491,6 @@ is-arrayish@^0.2.1:
3558 resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 3491 resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
3559 integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= 3492 integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
3560 3493
3561 -is-arrayish@^0.3.1:  
3562 - version "0.3.2"  
3563 - resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03"  
3564 - integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==  
3565 -  
3566 is-binary-path@~2.1.0: 3494 is-binary-path@~2.1.0:
3567 version "2.1.0" 3495 version "2.1.0"
3568 resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 3496 resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
@@ -4532,7 +4460,7 @@ minimist-options@^3.0.1: @@ -4532,7 +4460,7 @@ minimist-options@^3.0.1:
4532 arrify "^1.0.1" 4460 arrify "^1.0.1"
4533 is-plain-obj "^1.1.0" 4461 is-plain-obj "^1.1.0"
4534 4462
4535 -minimist@1.2.5, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5: 4463 +minimist@1.2.5, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5:
4536 version "1.2.5" 4464 version "1.2.5"
4537 resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 4465 resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
4538 integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 4466 integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
@@ -4645,7 +4573,7 @@ neo-async@^2.6.0: @@ -4645,7 +4573,7 @@ neo-async@^2.6.0:
4645 resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" 4573 resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
4646 integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== 4574 integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
4647 4575
4648 -node-emoji@^1.10.0, node-emoji@^1.8.1: 4576 +node-emoji@^1.10.0:
4649 version "1.10.0" 4577 version "1.10.0"
4650 resolved "https://registry.npmjs.org/node-emoji/-/node-emoji-1.10.0.tgz#8886abd25d9c7bb61802a658523d1f8d2a89b2da" 4578 resolved "https://registry.npmjs.org/node-emoji/-/node-emoji-1.10.0.tgz#8886abd25d9c7bb61802a658523d1f8d2a89b2da"
4651 integrity sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw== 4579 integrity sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw==
@@ -4687,11 +4615,6 @@ normalize-selector@^0.2.0: @@ -4687,11 +4615,6 @@ normalize-selector@^0.2.0:
4687 resolved "https://registry.npmjs.org/normalize-selector/-/normalize-selector-0.2.0.tgz#d0b145eb691189c63a78d201dc4fdb1293ef0c03" 4615 resolved "https://registry.npmjs.org/normalize-selector/-/normalize-selector-0.2.0.tgz#d0b145eb691189c63a78d201dc4fdb1293ef0c03"
4688 integrity sha1-0LFF62kRicY6eNIB3E/bEpPvDAM= 4616 integrity sha1-0LFF62kRicY6eNIB3E/bEpPvDAM=
4689 4617
4690 -normalize.css@^8.0.1:  
4691 - version "8.0.1"  
4692 - resolved "https://registry.npmjs.org/normalize.css/-/normalize.css-8.0.1.tgz#9b98a208738b9cc2634caacbc42d131c97487bf3"  
4693 - integrity sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==  
4694 -  
4695 npm-run-path@^4.0.0: 4618 npm-run-path@^4.0.0:
4696 version "4.0.1" 4619 version "4.0.1"
4697 resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" 4620 resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea"
@@ -4714,7 +4637,7 @@ number-is-nan@^1.0.0: @@ -4714,7 +4637,7 @@ number-is-nan@^1.0.0:
4714 resolved "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" 4637 resolved "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
4715 integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= 4638 integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
4716 4639
4717 -object-assign@4.x, object-assign@^4.0.1, object-assign@^4.1.1: 4640 +object-assign@4.x, object-assign@^4.0.1:
4718 version "4.1.1" 4641 version "4.1.1"
4719 resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 4642 resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
4720 integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= 4643 integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
@@ -4728,11 +4651,6 @@ object-copy@^0.1.0: @@ -4728,11 +4651,6 @@ object-copy@^0.1.0:
4728 define-property "^0.2.5" 4651 define-property "^0.2.5"
4729 kind-of "^3.0.3" 4652 kind-of "^3.0.3"
4730 4653
4731 -object-hash@^2.0.3:  
4732 - version "2.0.3"  
4733 - resolved "https://registry.npmjs.org/object-hash/-/object-hash-2.0.3.tgz#d12db044e03cd2ca3d77c0570d87225b02e1e6ea"  
4734 - integrity sha512-JPKn0GMu+Fa3zt3Bmr66JhokJU5BaNBIh4ZeTlaCBzrBsOeXzwcKKAK1tbLiPKgvwmPXsDvvLHoWh5Bm7ofIYg==  
4735 -  
4736 object-visit@^1.0.0: 4654 object-visit@^1.0.0:
4737 version "1.0.1" 4655 version "1.0.1"
4738 resolved "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" 4656 resolved "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
@@ -5109,16 +5027,6 @@ postcss-discard-comments@^4.0.2: @@ -5109,16 +5027,6 @@ postcss-discard-comments@^4.0.2:
5109 dependencies: 5027 dependencies:
5110 postcss "^7.0.0" 5028 postcss "^7.0.0"
5111 5029
5112 -postcss-functions@^3.0.0:  
5113 - version "3.0.0"  
5114 - resolved "https://registry.npmjs.org/postcss-functions/-/postcss-functions-3.0.0.tgz#0e94d01444700a481de20de4d55fb2640564250e"  
5115 - integrity sha1-DpTQFERwCkgd4g3k1V+yZAVkJQ4=  
5116 - dependencies:  
5117 - glob "^7.1.2"  
5118 - object-assign "^4.1.1"  
5119 - postcss "^6.0.9"  
5120 - postcss-value-parser "^3.3.0"  
5121 -  
5122 postcss-html@^0.36.0: 5030 postcss-html@^0.36.0:
5123 version "0.36.0" 5031 version "0.36.0"
5124 resolved "https://registry.npmjs.org/postcss-html/-/postcss-html-0.36.0.tgz#b40913f94eaacc2453fd30a1327ad6ee1f88b204" 5032 resolved "https://registry.npmjs.org/postcss-html/-/postcss-html-0.36.0.tgz#b40913f94eaacc2453fd30a1327ad6ee1f88b204"
@@ -5136,14 +5044,6 @@ postcss-import@^12.0.1: @@ -5136,14 +5044,6 @@ postcss-import@^12.0.1:
5136 read-cache "^1.0.0" 5044 read-cache "^1.0.0"
5137 resolve "^1.1.7" 5045 resolve "^1.1.7"
5138 5046
5139 -postcss-js@^2.0.0:  
5140 - version "2.0.3"  
5141 - resolved "https://registry.npmjs.org/postcss-js/-/postcss-js-2.0.3.tgz#a96f0f23ff3d08cec7dc5b11bf11c5f8077cdab9"  
5142 - integrity sha512-zS59pAk3deu6dVHyrGqmC3oDXBdNdajk4k1RyxeVXCrcEDBUBHoIhE4QTsmhxgzXxsaqFDAkUZfmMa5f/N/79w==  
5143 - dependencies:  
5144 - camelcase-css "^2.0.1"  
5145 - postcss "^7.0.18"  
5146 -  
5147 postcss-less@^3.1.4: 5047 postcss-less@^3.1.4:
5148 version "3.1.4" 5048 version "3.1.4"
5149 resolved "https://registry.npmjs.org/postcss-less/-/postcss-less-3.1.4.tgz#369f58642b5928ef898ffbc1a6e93c958304c5ad" 5049 resolved "https://registry.npmjs.org/postcss-less/-/postcss-less-3.1.4.tgz#369f58642b5928ef898ffbc1a6e93c958304c5ad"
@@ -5212,14 +5112,6 @@ postcss-modules@^3.2.2: @@ -5212,14 +5112,6 @@ postcss-modules@^3.2.2:
5212 postcss-modules-values "^3.0.0" 5112 postcss-modules-values "^3.0.0"
5213 string-hash "^1.1.1" 5113 string-hash "^1.1.1"
5214 5114
5215 -postcss-nested@^4.1.1:  
5216 - version "4.2.3"  
5217 - resolved "https://registry.npmjs.org/postcss-nested/-/postcss-nested-4.2.3.tgz#c6f255b0a720549776d220d00c4b70cd244136f6"  
5218 - integrity sha512-rOv0W1HquRCamWy2kFl3QazJMMe1ku6rCFoAAH+9AcxdbpDeBr6k968MLWuLjvjMcGEip01ak09hKOEgpK9hvw==  
5219 - dependencies:  
5220 - postcss "^7.0.32"  
5221 - postcss-selector-parser "^6.0.2"  
5222 -  
5223 postcss-resolve-nested-selector@^0.1.1: 5115 postcss-resolve-nested-selector@^0.1.1:
5224 version "0.1.1" 5116 version "0.1.1"
5225 resolved "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz#29ccbc7c37dedfac304e9fff0bf1596b3f6a0e4e" 5117 resolved "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz#29ccbc7c37dedfac304e9fff0bf1596b3f6a0e4e"
@@ -5270,7 +5162,7 @@ postcss-syntax@^0.36.2: @@ -5270,7 +5162,7 @@ postcss-syntax@^0.36.2:
5270 resolved "https://registry.npmjs.org/postcss-syntax/-/postcss-syntax-0.36.2.tgz#f08578c7d95834574e5593a82dfbfa8afae3b51c" 5162 resolved "https://registry.npmjs.org/postcss-syntax/-/postcss-syntax-0.36.2.tgz#f08578c7d95834574e5593a82dfbfa8afae3b51c"
5271 integrity sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w== 5163 integrity sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==
5272 5164
5273 -postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0: 5165 +postcss-value-parser@^3.2.3:
5274 version "3.3.1" 5166 version "3.3.1"
5275 resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" 5167 resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281"
5276 integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== 5168 integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==
@@ -5280,25 +5172,7 @@ postcss-value-parser@^4.1.0: @@ -5280,25 +5172,7 @@ postcss-value-parser@^4.1.0:
5280 resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" 5172 resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb"
5281 integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== 5173 integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==
5282 5174
5283 -postcss@7.0.32:  
5284 - version "7.0.32"  
5285 - resolved "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz#4310d6ee347053da3433db2be492883d62cec59d"  
5286 - integrity sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==  
5287 - dependencies:  
5288 - chalk "^2.4.2"  
5289 - source-map "^0.6.1"  
5290 - supports-color "^6.1.0"  
5291 -  
5292 -postcss@^6.0.9:  
5293 - version "6.0.23"  
5294 - resolved "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324"  
5295 - integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==  
5296 - dependencies:  
5297 - chalk "^2.4.1"  
5298 - source-map "^0.6.1"  
5299 - supports-color "^5.4.0"  
5300 -  
5301 -postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.11, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.18, postcss@^7.0.2, postcss@^7.0.21, postcss@^7.0.26, postcss@^7.0.28, postcss@^7.0.31, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6: 5175 +postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.21, postcss@^7.0.26, postcss@^7.0.28, postcss@^7.0.31, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6:
5302 version "7.0.35" 5176 version "7.0.35"
5303 resolved "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24" 5177 resolved "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24"
5304 integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg== 5178 integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==
@@ -5324,11 +5198,6 @@ prettier@^2.1.2: @@ -5324,11 +5198,6 @@ prettier@^2.1.2:
5324 resolved "https://registry.npmjs.org/prettier/-/prettier-2.1.2.tgz#3050700dae2e4c8b67c4c3f666cdb8af405e1ce5" 5198 resolved "https://registry.npmjs.org/prettier/-/prettier-2.1.2.tgz#3050700dae2e4c8b67c4c3f666cdb8af405e1ce5"
5325 integrity sha512-16c7K+x4qVlJg9rEbXl7HEGmQyZlG4R9AgP+oHKRMsMsuk8s+ATStlf1NpDqyBI1HpVyfjLOeMhH2LvuNvV5Vg== 5199 integrity sha512-16c7K+x4qVlJg9rEbXl7HEGmQyZlG4R9AgP+oHKRMsMsuk8s+ATStlf1NpDqyBI1HpVyfjLOeMhH2LvuNvV5Vg==
5326 5200
5327 -pretty-hrtime@^1.0.3:  
5328 - version "1.0.3"  
5329 - resolved "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1"  
5330 - integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=  
5331 -  
5332 process-nextick-args@~2.0.0: 5201 process-nextick-args@~2.0.0:
5333 version "2.0.1" 5202 version "2.0.1"
5334 resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" 5203 resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
@@ -5364,16 +5233,6 @@ pupa@^2.0.0: @@ -5364,16 +5233,6 @@ pupa@^2.0.0:
5364 dependencies: 5233 dependencies:
5365 escape-goat "^2.0.0" 5234 escape-goat "^2.0.0"
5366 5235
5367 -purgecss@^2.3.0:  
5368 - version "2.3.0"  
5369 - resolved "https://registry.npmjs.org/purgecss/-/purgecss-2.3.0.tgz#5327587abf5795e6541517af8b190a6fb5488bb3"  
5370 - integrity sha512-BE5CROfVGsx2XIhxGuZAT7rTH9lLeQx/6M0P7DTXQH4IUc3BBzs9JUzt4yzGf3JrH9enkeq6YJBe9CTtkm1WmQ==  
5371 - dependencies:  
5372 - commander "^5.0.0"  
5373 - glob "^7.0.0"  
5374 - postcss "7.0.32"  
5375 - postcss-selector-parser "^6.0.2"  
5376 -  
5377 q@^1.5.1: 5236 q@^1.5.1:
5378 version "1.5.1" 5237 version "1.5.1"
5379 resolved "https://registry.npmjs.org/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" 5238 resolved "https://registry.npmjs.org/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
@@ -5551,14 +5410,6 @@ redent@^3.0.0: @@ -5551,14 +5410,6 @@ redent@^3.0.0:
5551 indent-string "^4.0.0" 5410 indent-string "^4.0.0"
5552 strip-indent "^3.0.0" 5411 strip-indent "^3.0.0"
5553 5412
5554 -reduce-css-calc@^2.1.6:  
5555 - version "2.1.7"  
5556 - resolved "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-2.1.7.tgz#1ace2e02c286d78abcd01fd92bfe8097ab0602c2"  
5557 - integrity sha512-fDnlZ+AybAS3C7Q9xDq5y8A2z+lT63zLbynew/lur/IR24OQF5x98tfNwf79mzEdfywZ0a2wpM860FhFfMxZlA==  
5558 - dependencies:  
5559 - css-unit-converter "^1.1.1"  
5560 - postcss-value-parser "^3.3.0"  
5561 -  
5562 regenerator-runtime@^0.13.4: 5413 regenerator-runtime@^0.13.4:
5563 version "0.13.7" 5414 version "0.13.7"
5564 resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" 5415 resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55"
@@ -5713,7 +5564,7 @@ resolve-url@^0.2.1: @@ -5713,7 +5564,7 @@ resolve-url@^0.2.1:
5713 resolved "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" 5564 resolved "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
5714 integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= 5565 integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
5715 5566
5716 -resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.3.2: 5567 +resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.17.0, resolve@^1.3.2:
5717 version "1.17.0" 5568 version "1.17.0"
5718 resolved "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" 5569 resolved "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444"
5719 integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== 5570 integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==
@@ -6001,13 +5852,6 @@ signal-exit@^3.0.0, signal-exit@^3.0.2: @@ -6001,13 +5852,6 @@ signal-exit@^3.0.0, signal-exit@^3.0.2:
6001 resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" 5852 resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
6002 integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== 5853 integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==
6003 5854
6004 -simple-swizzle@^0.2.2:  
6005 - version "0.2.2"  
6006 - resolved "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"  
6007 - integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=  
6008 - dependencies:  
6009 - is-arrayish "^0.3.1"  
6010 -  
6011 slash@^3.0.0: 5855 slash@^3.0.0:
6012 version "3.0.0" 5856 version "3.0.0"
6013 resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" 5857 resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
@@ -6435,7 +6279,7 @@ supports-color@^4.0.0: @@ -6435,7 +6279,7 @@ supports-color@^4.0.0:
6435 dependencies: 6279 dependencies:
6436 has-flag "^2.0.0" 6280 has-flag "^2.0.0"
6437 6281
6438 -supports-color@^5.3.0, supports-color@^5.4.0: 6282 +supports-color@^5.3.0:
6439 version "5.5.0" 6283 version "5.5.0"
6440 resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 6284 resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
6441 integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 6285 integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
@@ -6481,34 +6325,6 @@ table@^6.0.1: @@ -6481,34 +6325,6 @@ table@^6.0.1:
6481 slice-ansi "^4.0.0" 6325 slice-ansi "^4.0.0"
6482 string-width "^4.2.0" 6326 string-width "^4.2.0"
6483 6327
6484 -tailwindcss@^1.8.13:  
6485 - version "1.8.13"  
6486 - resolved "https://registry.npmjs.org/tailwindcss/-/tailwindcss-1.8.13.tgz#ee57050a516d342bafc92cb74b4de6f92e44c189"  
6487 - integrity sha512-z3R/6qPqfjauSR4qHhlA8I0OnfSyuotvigXISq666k+V52VSs5HV//KZ0Xe3qrZ4h5Um4OG5g+lcgjXSfURjDw==  
6488 - dependencies:  
6489 - "@fullhuman/postcss-purgecss" "^2.1.2"  
6490 - autoprefixer "^9.4.5"  
6491 - browserslist "^4.12.0"  
6492 - bytes "^3.0.0"  
6493 - chalk "^3.0.0 || ^4.0.0"  
6494 - color "^3.1.2"  
6495 - detective "^5.2.0"  
6496 - fs-extra "^8.0.0"  
6497 - html-tags "^3.1.0"  
6498 - lodash "^4.17.20"  
6499 - node-emoji "^1.8.1"  
6500 - normalize.css "^8.0.1"  
6501 - object-hash "^2.0.3"  
6502 - postcss "^7.0.11"  
6503 - postcss-functions "^3.0.0"  
6504 - postcss-js "^2.0.0"  
6505 - postcss-nested "^4.1.1"  
6506 - postcss-selector-parser "^6.0.0"  
6507 - postcss-value-parser "^4.1.0"  
6508 - pretty-hrtime "^1.0.3"  
6509 - reduce-css-calc "^2.1.6"  
6510 - resolve "^1.14.2"  
6511 -  
6512 tasksfile@^5.1.1: 6328 tasksfile@^5.1.1:
6513 version "5.1.1" 6329 version "5.1.1"
6514 resolved "https://registry.npmjs.org/tasksfile/-/tasksfile-5.1.1.tgz#7d5bc643bc0dc078b491a8fd9d19341c52599a95" 6330 resolved "https://registry.npmjs.org/tasksfile/-/tasksfile-5.1.1.tgz#7d5bc643bc0dc078b491a8fd9d19341c52599a95"
@@ -7137,7 +6953,7 @@ ws@^7.2.3: @@ -7137,7 +6953,7 @@ ws@^7.2.3:
7137 resolved "https://registry.npmjs.org/ws/-/ws-7.3.1.tgz#d0547bf67f7ce4f12a72dfe31262c68d7dc551c8" 6953 resolved "https://registry.npmjs.org/ws/-/ws-7.3.1.tgz#d0547bf67f7ce4f12a72dfe31262c68d7dc551c8"
7138 integrity sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA== 6954 integrity sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==
7139 6955
7140 -xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.1: 6956 +xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1:
7141 version "4.0.2" 6957 version "4.0.2"
7142 resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" 6958 resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
7143 integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== 6959 integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==