fu-kit 0.0.1-beta.2 → 0.0.1-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/README.md +47 -19
  2. package/dist/favicon.ico +0 -0
  3. package/dist/img/splash-screen.8bd73950.jpg +0 -0
  4. package/dist/index.html +1 -0
  5. package/dist/js/app.53980592.js +2 -0
  6. package/dist/js/app.53980592.js.map +1 -0
  7. package/dist/js/chunk-vendors.fe8aa7a9.js +8 -0
  8. package/dist/js/chunk-vendors.fe8aa7a9.js.map +1 -0
  9. package/package.json +36 -36
  10. package/reset.scss +60 -0
  11. package/root.scss +130 -0
  12. package/scss.scss +5 -3
  13. package/src/App.vue +122 -30
  14. package/src/Home.vue +112 -0
  15. package/src/assets/splash-screen.jpg +0 -0
  16. package/src/components/FuButton.vue +104 -27
  17. package/src/components/FuButtonLink.vue +79 -0
  18. package/src/components/FuCodeView.vue +58 -0
  19. package/src/components/FuCopy.vue +103 -0
  20. package/src/components/FuProgressRadial.vue +117 -0
  21. package/src/components/FuSelect.vue +84 -55
  22. package/src/components/FuSelectX.vue +317 -0
  23. package/src/components/FuSidebar.vue +90 -0
  24. package/src/components/FuText.vue +98 -60
  25. package/src/components/FuTextarea.vue +118 -0
  26. package/src/docs/DocButton.vue +67 -0
  27. package/src/docs/DocSandbox.vue +71 -0
  28. package/src/docs/DocSelect.vue +55 -0
  29. package/src/docs/DocSidebar.vue +93 -0
  30. package/src/docs/DocText.vue +59 -0
  31. package/src/docs/DocTextarea.vue +64 -0
  32. package/src/docs/DocTypo.vue +98 -0
  33. package/src/main.js +9 -5
  34. package/src/router.js +29 -17
  35. package/src/scss/colors.scss +16 -6
  36. package/src/scss/typo.scss +5 -14
  37. package/src/scss/ui.scss +22 -38
  38. package/src/scss/utils.scss +36 -0
  39. package/src/styles.scss +15 -0
  40. package/src/utils/media.js +1 -0
  41. package/src/utils/woosh.js +2 -0
  42. package/vue.config.js +1 -4
  43. package/src/views/Home.vue +0 -24
package/package.json CHANGED
@@ -1,36 +1,36 @@
1
- {
2
- "name": "fu-kit",
3
- "version": "0.0.1-beta.2",
4
- "description": "extremely simple (not) UI-kit for vue",
5
- "main": "components.js",
6
- "scripts": {
7
- "serve": "vue-cli-service serve --mode development",
8
- "build": "vue-cli-service build"
9
- },
10
- "repository": {
11
- "type": "git",
12
- "url": "git+https://github.com/vovchisko/fu-kit.git"
13
- },
14
- "keywords": [
15
- "ui",
16
- "ui-kit",
17
- "vue"
18
- ],
19
- "author": "@vovchisko",
20
- "license": "ISC",
21
- "bugs": {
22
- "url": "https://github.com/vovchisko/fu-kit/issues"
23
- },
24
- "homepage": "https://github.com/vovchisko/fu-kit#readme",
25
- "dependencies": {
26
- "vue": "^3.0.0",
27
- "vue-router": "^4.0.0-0"
28
- },
29
- "devDependencies": {
30
- "@vue/cli-plugin-router": "~4.5.0",
31
- "@vue/cli-service": "~4.5.0",
32
- "@vue/compiler-sfc": "^3.0.0",
33
- "sass": "^1.26.5",
34
- "sass-loader": "^8.0.2"
35
- }
36
- }
1
+ {
2
+ "name": "fu-kit",
3
+ "version": "0.0.1-beta.3",
4
+ "description": "extremely simple (not) UI-kit for vue",
5
+ "main": "components.js",
6
+ "scripts": {
7
+ "serve": "vue-cli-service serve --port 4000 --mode development",
8
+ "build": "vue-cli-service build"
9
+ },
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "git+https://github.com/vovchisko/fu-kit.git"
13
+ },
14
+ "keywords": [
15
+ "ui",
16
+ "ui-kit",
17
+ "vue"
18
+ ],
19
+ "author": "@vovchisko",
20
+ "license": "ISC",
21
+ "bugs": {
22
+ "url": "https://github.com/vovchisko/fu-kit/issues"
23
+ },
24
+ "homepage": "https://github.com/vovchisko/fu-kit#readme",
25
+ "dependencies": {
26
+ "vue": "^3.0.0",
27
+ "vue-router": "^4.0.0-0"
28
+ },
29
+ "devDependencies": {
30
+ "@vue/cli-plugin-router": "~4.5.0",
31
+ "@vue/cli-service": "~4.5.0",
32
+ "@vue/compiler-sfc": "^3.0.0",
33
+ "sass": "^1.26.5",
34
+ "sass-loader": "^8.0.2"
35
+ }
36
+ }
package/reset.scss ADDED
@@ -0,0 +1,60 @@
1
+ body {
2
+ margin: 0;
3
+ padding: 0;
4
+ }
5
+
6
+ address, article, aside, blockquote, details, dialog, dd, div, dl, dt, fieldset, figcaption,
7
+ figure, footer, form, hgroup, hr, li, main, nav,
8
+ ol, p, pre, section, table, ul {
9
+ margin: 0;
10
+ padding: 0;
11
+ box-sizing: border-box;
12
+ font-family: var(--typo-font-text);
13
+ line-height: 1.2;
14
+ }
15
+
16
+ h1, h2, h3, h4, h5, h6, header {
17
+ font-family: var(--typo-font-heading);
18
+ margin: 0;
19
+ padding: 0;
20
+ box-sizing: border-box;
21
+ line-height: 1.2;
22
+ }
23
+
24
+ input, button, textarea, select, span, b, small {
25
+ box-sizing: border-box;
26
+ line-height: 1.2;
27
+ }
28
+
29
+ h1 {
30
+ @include typo(700);
31
+ }
32
+
33
+ h2 {
34
+ @include typo(600);
35
+ }
36
+
37
+ h3 {
38
+ @include typo(500);
39
+ }
40
+
41
+ h4 {
42
+ @include typo(400);
43
+ }
44
+
45
+ h5 {
46
+ @include typo(300);
47
+ }
48
+
49
+ p {
50
+ @include typo(200);
51
+ }
52
+
53
+ small {
54
+ @include typo(100);
55
+ }
56
+
57
+ label {
58
+ @include typo(100);
59
+ display: block;
60
+ }
package/root.scss ADDED
@@ -0,0 +1,130 @@
1
+ :root {
2
+
3
+ // RAW RGB VALUES
4
+ --rgb-white: #{hex2rgb(#FFFFFF)};
5
+ --rgb-light: #{hex2rgb(#FEFEFE)};
6
+ --rgb-grey100: #{hex2rgb(#F4F4F4)};
7
+ --rgb-grey200: #{hex2rgb(#DCDCDC)};
8
+ --rgb-grey300: #{hex2rgb(#BFBFBF)};
9
+ --rgb-grey400: #{hex2rgb(#A5A5A5)};
10
+ --rgb-grey500: #{hex2rgb(#878787)};
11
+ --rgb-grey600: #{hex2rgb(#6C6C6C)};
12
+ --rgb-grey700: #{hex2rgb(#515151)};
13
+ --rgb-grey800: #{hex2rgb(#363636)};
14
+ --rgb-grey900: #{hex2rgb(#1C1C1C)};
15
+ --rgb-dark: #{hex2rgb(#151515)};
16
+ --rgb-black: #{hex2rgb(#000000)};
17
+
18
+ --rgb-brand: #{hex2rgb(#8347A8)};
19
+ --rgb-primary: #{hex2rgb(#2E88F1)};
20
+ --rgb-secondary: #{hex2rgb(#434F5F)};
21
+ --rgb-positive: #{hex2rgb(#6DBE2C)};
22
+ --rgb-warning: #{hex2rgb(#FFA927)};
23
+ --rgb-negative: #{hex2rgb(#FF4B4B)};
24
+
25
+ // Format palette colors: "--pal-{code}": #RGB
26
+
27
+ --pal-white: rgb(var(--rgb-white));
28
+ --pal-light: rgb(var(--rgb-light));
29
+ --pal-grey100: rgb(var(--rgb-grey100));
30
+ --pal-grey200: rgb(var(--rgb-grey200));
31
+ --pal-grey300: rgb(var(--rgb-grey300));
32
+ --pal-grey400: rgb(var(--rgb-grey400));
33
+ --pal-grey500: rgb(var(--rgb-grey500));
34
+ --pal-grey600: rgb(var(--rgb-grey600));
35
+ --pal-grey700: rgb(var(--rgb-grey700));
36
+ --pal-grey800: rgb(var(--rgb-grey800));
37
+ --pal-grey900: rgb(var(--rgb-grey900));
38
+ --pal-dark: rgb(var(--rgb-dark));
39
+ --pal-black: rgb(var(--rgb-black));
40
+
41
+ --pal-brand: rgb(var(--rgb-brand));
42
+ --pal-primary: rgb(var(--rgb-primary));
43
+ --pal-secondary: rgb(var(--rgb-secondary));
44
+ --pal-positive: rgb(var(--rgb-positive));
45
+ --pal-warning: rgb(var(--rgb-warning));
46
+ --pal-negative: rgb(var(--rgb-negative));
47
+
48
+ --pal-acc-brand: rgb(var(--rgb-white));
49
+ --pal-acc-primary: rgb(var(--rgb-white));
50
+ --pal-acc-secondary: rgb(var(--rgb-white));
51
+ --pal-acc-positive: rgb(var(--rgb-white));
52
+ --pal-acc-warning: rgb(var(--rgb-white));
53
+ --pal-acc-negative: rgb(var(--rgb-white));
54
+
55
+ --pal-text: rgb(var(--rgb-dark));
56
+ --pal-text-dimm: rgb(var(--rgb-grey600));
57
+ --pal-block: rgb(var(--rgb-grey100));
58
+ --pal-block-border: rgb(var(--rgb-grey200));
59
+ --pal-bg: rgb(var(--rgb-white));
60
+ --pal-overlay: rgba(var(--rgb-dark), 0.2);
61
+ --pal-link: rgb(var(--rgb-primary));
62
+ --pal-link-active: rgb(var(--rgb-brand));
63
+
64
+ --ui-pal: var(--pal-primary);
65
+ --ui-pal-bg: var(--pal-bg);
66
+ --ui-pal-acc: var(--pal-acc-primary);
67
+ --ui-pal-lateral: rgb(var(--rgb-grey200));
68
+ --ui-pal-text: rgb(var(--rgb-dark));
69
+ --ui-pal-text-select: rgb(var(--rgb-light));
70
+ --ui-pal-placeholder: rgb(var(--rgb-grey300));
71
+ --ui-pal-disabled: rgb(var(--rgb-grey100));
72
+ --ui-pal-disabled-border: rgb(var(--rgb-grey300));
73
+
74
+ --ui-transition: all linear 120ms;
75
+ --ui-lt-h: 36px;
76
+ --ui-lt-border-style: solid;
77
+ --ui-lt-border-width: 1px;
78
+ --ui-lt-border-radius: var(--lt-border-radius-inner);
79
+ --ui-lt-disabled-border-style: dashed;
80
+ --ui-lt-scroll-width: 12px;
81
+
82
+ --typo-font-heading: 'Segoe UI', San Francisco, Roboto, Lucida Sans;
83
+ --typo-font-text: 'Segoe UI', San Francisco, Roboto, Lucida Sans;
84
+ --typo-font-mono: monospace;
85
+
86
+ // font-size
87
+ // format font-size vars: "--lt-{code}": 14px;
88
+ --typo-h100: 12px;
89
+ --typo-h200: 14px;
90
+ --typo-h300: 16px;
91
+ --typo-h400: 18px;
92
+ --typo-h500: 22px;
93
+ --typo-h600: 26px;
94
+ --typo-h700: 30px;
95
+ --typo-h800: 36px;
96
+ --typo-h900: 42px;
97
+
98
+ // line-height vars (typo usually has the same number part)
99
+ // format font-size vars: "--typo-{code}": 14px;
100
+ --typo-lh100: 14px;
101
+ --typo-lh200: 16px;
102
+ --typo-lh300: 18px;
103
+ --typo-lh400: 22px;
104
+ --typo-lh500: 26px;
105
+ --typo-lh600: 32px;
106
+ --typo-lh700: 42px;
107
+ --typo-lh800: 48px;
108
+ --typo-lh900: 64px;
109
+
110
+ // spacing vars
111
+ --lt-sp100: 2px;
112
+ --lt-sp200: 4px;
113
+ --lt-sp300: 8px;
114
+ --lt-sp400: 16px;
115
+ --lt-sp500: 32px;
116
+ --lt-sp600: 64px;
117
+ --lt-sp700: 128px;
118
+ --lt-sp800: 256px;
119
+ --lt-sp900: 512px;
120
+
121
+ --lt-border-radius: 9px;
122
+ --lt-border-radius-inner: 5px;
123
+
124
+ --lt-z-1: 1;
125
+ --lt-z-back: -1;
126
+ --lt-z-pop: 1000;
127
+ --lt-z-nav: 2000;
128
+ --lt-z-modal-backdrop: 3000;
129
+ --lt-z-modal: 3001;
130
+ }
package/scss.scss CHANGED
@@ -1,3 +1,5 @@
1
- @mixin halp() {
2
- background: bisque;
3
- }
1
+ @import "./src/scss/utils";
2
+ @import "./src/scss/media";
3
+ @import "./src/scss/colors";
4
+ @import "./src/scss/typo";
5
+ @import "./src/scss/ui";
package/src/App.vue CHANGED
@@ -1,30 +1,122 @@
1
- <template>
2
- <div id="nav">
3
- <router-link to="/">Home</router-link> |
4
- <router-link to="/about">About</router-link>
5
- </div>
6
- <router-view/>
7
- </template>
8
-
9
- <style lang="scss">
10
- #app {
11
- font-family: Avenir, Helvetica, Arial, sans-serif;
12
- -webkit-font-smoothing: antialiased;
13
- -moz-osx-font-smoothing: grayscale;
14
- text-align: center;
15
- color: #2c3e50;
16
- }
17
-
18
- #nav {
19
- padding: 30px;
20
-
21
- a {
22
- font-weight: bold;
23
- color: #2c3e50;
24
-
25
- &.router-link-exact-active {
26
- color: #42b983;
27
- }
28
- }
29
- }
30
- </style>
1
+ <template>
2
+ <header class="app_header">
3
+ <h1 class="app_header-logo">
4
+ <router-link to="/" active-class="_active" class="app_header-logo-link">FU*KIT COMPONENTS</router-link>
5
+ </h1>
6
+ </header>
7
+
8
+ <main class="app_main">
9
+ <nav class="app_main-nav">
10
+ <router-link to="/" active-class="_active" class="app_main-nav-link">Home</router-link>
11
+ <router-link to="/sandbox" active-class="_active" class="app_main-nav-link">Sandbox</router-link>
12
+ <router-link to="/typo" active-class="_active" class="app_main-nav-link">Typography</router-link>
13
+ <router-link to="/button" active-class="_active" class="app_main-nav-link">Button</router-link>
14
+ <router-link to="/select" active-class="_active" class="app_main-nav-link">Select</router-link>
15
+ <router-link to="/text" active-class="_active" class="app_main-nav-link">Text</router-link>
16
+ <router-link to="/textarea" active-class="_active" class="app_main-nav-link">Textarea</router-link>
17
+ <router-link to="/sidebar" active-class="_active" class="app_main-nav-link">Sidebar</router-link>
18
+ </nav>
19
+ <div class="app_main-page">
20
+ <router-view />
21
+ </div>
22
+ </main>
23
+
24
+ <footer class="app_footer">
25
+ <small class="app_footer-copy">This is a char in brackets (a) 2021</small>
26
+ </footer>
27
+ </template>
28
+ <style lang="scss">
29
+ .brand {
30
+ --ui-pal: var(--pal-brand);
31
+ }
32
+
33
+ .primary {
34
+ --ui-pal: var(--pal-primary);
35
+ }
36
+
37
+ .secondary {
38
+ --ui-pal: var(--pal-secondary);
39
+ }
40
+
41
+ .positive {
42
+ --ui-pal: var(--pal-positive);
43
+ }
44
+
45
+ .warning {
46
+ --ui-pal: var(--pal-warning);
47
+ }
48
+
49
+ .negative {
50
+ --ui-pal: var(--pal-negative);
51
+ }
52
+ </style>
53
+ <style lang="scss" scoped>
54
+ .app {
55
+ &_header {
56
+ grid-area: header;
57
+ display: flex;
58
+ align-items: center;
59
+ justify-content: space-between;
60
+ height: var(--lt-header-height);
61
+ padding: 0 var(--lt-horizontal-padding);
62
+
63
+ &-logo {
64
+ &-link {
65
+ @include typo(400);
66
+
67
+ color: color(black);
68
+ text-decoration: none;
69
+ }
70
+ }
71
+ }
72
+
73
+ &_main {
74
+ min-height: calc(100vh - var(--lt-header-height) - var(--lt-footer-height));
75
+ display: flex;
76
+
77
+ &-page {
78
+ padding: 0 var(--lt-horizontal-padding);
79
+ flex: 1;
80
+ }
81
+
82
+ &-nav {
83
+ @include spacing-padding(200);
84
+
85
+ padding: 0 var(--lt-horizontal-padding);
86
+ position: sticky;
87
+ left: 0;
88
+ top: 0;
89
+ bottom: 0;
90
+ border-right: var(--ui-lt-border-width) solid color(grey100);
91
+ display: flex;
92
+ flex-direction: column;
93
+ gap: spacing(200);
94
+ min-width: 200px;
95
+
96
+ &-link {
97
+ width: 10em;
98
+ display: block;
99
+ text-decoration: none;
100
+
101
+ &._active {
102
+ color: black;
103
+ text-decoration: underline;
104
+ }
105
+ }
106
+ }
107
+ }
108
+
109
+ &_footer {
110
+ display: flex;
111
+ align-items: center;
112
+ justify-content: space-between;
113
+ height: var(--lt-footer-height);
114
+ padding: 0 var(--lt-horizontal-padding);
115
+
116
+ &-copy {
117
+ @include typo(100);
118
+ color: color(grey400);
119
+ }
120
+ }
121
+ }
122
+ </style>
package/src/Home.vue ADDED
@@ -0,0 +1,112 @@
1
+ <template>
2
+ <div class="home">
3
+ <div class="home_splash">
4
+ <div class="home_splash-hero">
5
+ <div class="home_splash-hero-epic">Fu</div>
6
+ <div class="home_splash-hero-sub">
7
+ <p>fu-kit</p>
8
+ <p>v0.0.1</p>
9
+ </div>
10
+ </div>
11
+ <h2 class="home_splash-slogan">Unreasonable UI<br>for unreasonable man.</h2>
12
+
13
+ <fu-copy value="npm i fu-kit" class="home_splash-copy">📋 npm i fu-kit</fu-copy>
14
+
15
+ <p class="home_text">Just the right amount of UI for your Vue 3 Application!</p>
16
+ <p class="home_text">Flexible, but not too much.</p>
17
+ <p class="home_text">Customizable, but not a "options-creep".</p>
18
+ <p class="home_text">Not too bad, not too good.</p>
19
+ <p class="home_text">Just right.</p>
20
+ </div>
21
+ </div>
22
+ </template>
23
+
24
+ <script>
25
+ import FuCopy from '@/components/FuCopy.vue'
26
+
27
+ export default {
28
+ name: 'Home',
29
+ components: { FuCopy },
30
+ }
31
+ </script>
32
+ <style lang="scss" scoped>
33
+ .home {
34
+ display: flex;
35
+ flex-direction: column;
36
+ justify-content: flex-start;
37
+ align-items: flex-start;
38
+ min-width: 0;
39
+
40
+ &_splash {
41
+ @include spacing-padding(600, 500);
42
+
43
+ --typo-font-text: Georgia, serif;
44
+ --typo-font-heading: Georgia, serif;
45
+
46
+ color: var(--pal-white);
47
+ aspect-ratio: 1 / 1.1;
48
+ width: 780px;
49
+ max-width: 100%;
50
+ min-height: 800px;
51
+ background-image: url('~@/assets/splash-screen.jpg');
52
+ background-size: cover;
53
+ background-position: 50%;
54
+
55
+ &-hero {
56
+ @include spacing-padding(200);
57
+
58
+ letter-spacing: 1px;
59
+ font-weight: normal;
60
+ height: 200px;
61
+ width: 200px;
62
+ border: 1px solid var(--pal-grey400);
63
+ display: flex;
64
+ flex-direction: column;
65
+ justify-content: space-between;
66
+
67
+ &-epic {
68
+ display: block;
69
+ font-size: 120px;
70
+ color: #c53838;
71
+ }
72
+
73
+ &-sub {
74
+ @include typo(500);
75
+ @include spacing-padding(300);
76
+
77
+ display: flex;
78
+ justify-content: space-between;
79
+
80
+ & p {
81
+ @include typo(500);
82
+ }
83
+ }
84
+ }
85
+
86
+ &-slogan {
87
+ @include typo(600);
88
+ @include spacing-margin(500, 300);
89
+ }
90
+
91
+ &-copy {
92
+ @include typo(400);
93
+ @include spacing-padding(100, 400);
94
+ @include spacing-margin(500, 300);
95
+
96
+ --ui-pal: var(--pal-light);
97
+
98
+ border: 1px solid rgba(var(--rgb-light), 0.2);
99
+ font-weight: 600;
100
+ border-radius: 3px;
101
+ }
102
+ }
103
+
104
+ &_text {
105
+ @include typo(200);
106
+ @include spacing-margin(100, 300);
107
+
108
+ text-shadow: 0 1px 1px black;
109
+ color: var(--pal-light);
110
+ }
111
+ }
112
+ </style>
Binary file
@@ -1,27 +1,104 @@
1
- <template>
2
- <button
3
- v-bind="$attrs"
4
- :type="$attrs.type || 'button'"
5
- class="fu-button"
6
- >
7
- <slot />
8
- </button>
9
- </template>
10
-
11
- <script>
12
- console.log('fu button: loaded')
13
- export default {
14
- name: 'fu-button',
15
- setup(){
16
- console.log('fu button: setup!')
17
- }
18
- }
19
- </script>
20
-
21
- <style lang="scss" scoped>
22
- .fu-button {
23
- background: deeppink;
24
- color: white;
25
- border: 0 none;
26
- }
27
- </style>
1
+ <template>
2
+ <button
3
+ v-bind="{
4
+ ...$attrs,
5
+ type: $attrs.type || 'button',
6
+ class: 'fu-button' + (hollow ? ' _hollow' : ''),
7
+ }"
8
+ @mouseup="mUp"
9
+ >
10
+ <slot />
11
+ </button>
12
+ </template>
13
+
14
+ <script>
15
+ export default {
16
+ name: 'fu-button',
17
+ props: {
18
+ hollow: { type: Boolean, default: false },
19
+ },
20
+ setup (props) {
21
+ const mUp = (e) => e.target.blur()
22
+ return { hollow: props.hollow, mUp }
23
+ },
24
+ }
25
+ </script>
26
+
27
+ <style lang="scss" scoped>
28
+ .fu-button {
29
+ @include typo(200);
30
+ @include spacing-padding(300, 400);
31
+
32
+ display: flex;
33
+ align-items: center;
34
+ justify-content: center;
35
+ box-sizing: border-box;
36
+ cursor: pointer;
37
+ font-family: var(--typo-font-text);
38
+ min-height: var(--ui-lt-h);
39
+ border-width: var(--ui-lt-border-width);
40
+ border-style: var(--ui-lt-border-style);
41
+ border-color: var(--ui-pal);
42
+ border-radius: var(--ui-lt-border-radius);
43
+ transition: var(--ui-transition);
44
+ background: var(--ui-pal);
45
+ color: var(--ui-pal-acc);
46
+ line-height: 1;
47
+ will-change: box-shadow, transform;
48
+
49
+ outline: none;
50
+ user-select: none;
51
+ -webkit-tap-highlight-color: transparent;
52
+
53
+ & > * {
54
+ pointer-events: none;
55
+ }
56
+
57
+ &:hover {
58
+ text-decoration: none;
59
+ box-shadow: 0 4px 12px -4px var(--ui-pal);
60
+ }
61
+
62
+ &:focus {
63
+ box-shadow: 0 4px 12px -4px var(--ui-pal);
64
+ }
65
+
66
+ &:active {
67
+ transform: translateY(2px);
68
+ transition-duration: 20ms;
69
+ box-shadow: 0 3px 4px -2px var(--ui-pal);
70
+ }
71
+
72
+ &:disabled {
73
+ cursor: not-allowed;
74
+ background: var(--ui-pal-disabled);
75
+ border-color: var(--ui-pal-disabled-border);
76
+ border-style: var(--ui-lt-disabled-border-style);
77
+ color: var(--ui-pal-disabled-border);
78
+ box-shadow: none;
79
+ }
80
+
81
+ &._hollow {
82
+ background: transparent;
83
+ color: var(--ui-pal);
84
+
85
+ &:hover {
86
+ box-shadow: 0 3px 10px -4px var(--ui-pal);
87
+ color: var(--ui-pal);
88
+ }
89
+
90
+ &:focus {
91
+ box-shadow: 0 3px 10px -4px var(--ui-pal);
92
+ }
93
+
94
+ &:active {
95
+ box-shadow: 0 1px 4px -2px var(--ui-pal);
96
+ }
97
+
98
+ &:disabled {
99
+ color: var(--ui-pal-disabled-border);
100
+ box-shadow: none;
101
+ }
102
+ }
103
+ }
104
+ </style>