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.
- package/README.md +47 -19
- package/dist/favicon.ico +0 -0
- package/dist/img/splash-screen.8bd73950.jpg +0 -0
- package/dist/index.html +1 -0
- package/dist/js/app.53980592.js +2 -0
- package/dist/js/app.53980592.js.map +1 -0
- package/dist/js/chunk-vendors.fe8aa7a9.js +8 -0
- package/dist/js/chunk-vendors.fe8aa7a9.js.map +1 -0
- package/package.json +36 -36
- package/reset.scss +60 -0
- package/root.scss +130 -0
- package/scss.scss +5 -3
- package/src/App.vue +122 -30
- package/src/Home.vue +112 -0
- package/src/assets/splash-screen.jpg +0 -0
- package/src/components/FuButton.vue +104 -27
- package/src/components/FuButtonLink.vue +79 -0
- package/src/components/FuCodeView.vue +58 -0
- package/src/components/FuCopy.vue +103 -0
- package/src/components/FuProgressRadial.vue +117 -0
- package/src/components/FuSelect.vue +84 -55
- package/src/components/FuSelectX.vue +317 -0
- package/src/components/FuSidebar.vue +90 -0
- package/src/components/FuText.vue +98 -60
- package/src/components/FuTextarea.vue +118 -0
- package/src/docs/DocButton.vue +67 -0
- package/src/docs/DocSandbox.vue +71 -0
- package/src/docs/DocSelect.vue +55 -0
- package/src/docs/DocSidebar.vue +93 -0
- package/src/docs/DocText.vue +59 -0
- package/src/docs/DocTextarea.vue +64 -0
- package/src/docs/DocTypo.vue +98 -0
- package/src/main.js +9 -5
- package/src/router.js +29 -17
- package/src/scss/colors.scss +16 -6
- package/src/scss/typo.scss +5 -14
- package/src/scss/ui.scss +22 -38
- package/src/scss/utils.scss +36 -0
- package/src/styles.scss +15 -0
- package/src/utils/media.js +1 -0
- package/src/utils/woosh.js +2 -0
- package/vue.config.js +1 -4
- 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.
|
|
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
package/src/App.vue
CHANGED
|
@@ -1,30 +1,122 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<
|
|
3
|
-
<
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
<
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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="
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
.
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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>
|