@bomberstudios/css-library 1.1.0 → 1.1.2
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/.prettierrc +6 -0
- package/README.md +20 -0
- package/index.css +80 -24
- package/index.html +94 -51
- package/package.json +3 -2
package/.prettierrc
ADDED
package/README.md
CHANGED
@@ -1,3 +1,23 @@
|
|
1
1
|
# CSS Library
|
2
2
|
|
3
3
|
A bunch of CSS styles that I use in my projects.
|
4
|
+
|
5
|
+
## Demo
|
6
|
+
|
7
|
+
See the styles in action [here](https://bomberstudios.github.io/css-library/index.html).
|
8
|
+
|
9
|
+
## Usage
|
10
|
+
|
11
|
+
In case it wasn't sufficiently clear, please do not use this in any of your projects unless you are me 😅.
|
12
|
+
|
13
|
+
If you are me:
|
14
|
+
|
15
|
+
```bash
|
16
|
+
npm install @bomberstudios/css-library
|
17
|
+
```
|
18
|
+
|
19
|
+
And then include the styles. For example, in an Astro project you can add this to your base Layout:
|
20
|
+
|
21
|
+
```jsx
|
22
|
+
import '@bomberstudios/css-library/index.css'
|
23
|
+
```
|
package/index.css
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
:root {
|
2
2
|
/* Spacing */
|
3
|
-
--gap:
|
3
|
+
--gap: 12px;
|
4
4
|
--radius-small: 3px;
|
5
5
|
--radius: 5px;
|
6
6
|
--radius-large: 10px;
|
7
|
-
--padding-small:
|
8
|
-
--padding
|
9
|
-
--padding:
|
7
|
+
--padding-small: calc(var(--gap) / 2);
|
8
|
+
--padding: var(--gap);
|
9
|
+
--padding-large: calc(var(--gap) * 1.5);
|
10
10
|
|
11
11
|
/* Color theme */
|
12
12
|
color-scheme: light dark;
|
@@ -21,9 +21,9 @@
|
|
21
21
|
|
22
22
|
/* Visual */
|
23
23
|
--shadow-small: 0 1px 3px rgba(0, 0, 0, 0.3);
|
24
|
-
--shadow-medium: 0 2px
|
25
|
-
--shadow-large: 0 5px
|
26
|
-
--shadow-center: 0 0
|
24
|
+
--shadow-medium: 0 2px calc(var(--gap) / 2) rgba(0, 0, 0, 0.3);
|
25
|
+
--shadow-large: 0 5px var(--gap) rgba(0, 0, 0, 0.3);
|
26
|
+
--shadow-center: 0 0 var(--gap) rgba(0, 0, 0, 0.3);
|
27
27
|
}
|
28
28
|
|
29
29
|
/* Reset */
|
@@ -36,6 +36,7 @@
|
|
36
36
|
outline: none;
|
37
37
|
border: none;
|
38
38
|
text-decoration: none;
|
39
|
+
height: max-content;
|
39
40
|
}
|
40
41
|
|
41
42
|
html,
|
@@ -46,6 +47,8 @@ body {
|
|
46
47
|
body {
|
47
48
|
font-family: var(--font-family);
|
48
49
|
font-size: var(--font-size);
|
50
|
+
display: flex;
|
51
|
+
flex-direction: column;
|
49
52
|
}
|
50
53
|
|
51
54
|
/* Layout */
|
@@ -63,26 +66,23 @@ vstack {
|
|
63
66
|
flex-direction: column;
|
64
67
|
}
|
65
68
|
|
66
|
-
hstack[align=
|
67
|
-
vstack[align=
|
69
|
+
hstack[align='center'],
|
70
|
+
vstack[align='center'] {
|
68
71
|
justify-content: center;
|
69
72
|
}
|
70
|
-
hstack[align=
|
71
|
-
vstack[align=
|
73
|
+
hstack[align='right'],
|
74
|
+
vstack[align='right'] {
|
72
75
|
align-items: end;
|
73
76
|
justify-content: flex-end;
|
74
77
|
}
|
75
|
-
vstack[align=
|
78
|
+
vstack[align='right'] > * {
|
76
79
|
width: 100%;
|
77
80
|
}
|
78
|
-
hstack[align=
|
79
|
-
vstack[align=
|
81
|
+
hstack[align='space-between'],
|
82
|
+
vstack[align='space-between'] {
|
80
83
|
justify-content: space-between;
|
81
84
|
}
|
82
85
|
/* TODO: top and bottom alignment */
|
83
|
-
hstack[align="top"] {
|
84
|
-
align-items: start;
|
85
|
-
}
|
86
86
|
|
87
87
|
zstack {
|
88
88
|
display: grid;
|
@@ -90,6 +90,9 @@ zstack {
|
|
90
90
|
justify-items: center;
|
91
91
|
}
|
92
92
|
zstack > * {
|
93
|
+
display: flex;
|
94
|
+
align-items: center;
|
95
|
+
justify-content: center;
|
93
96
|
grid-area: 1/1/1/1;
|
94
97
|
}
|
95
98
|
|
@@ -107,6 +110,20 @@ hstack divider {
|
|
107
110
|
height: 100%;
|
108
111
|
}
|
109
112
|
|
113
|
+
/* Grid */
|
114
|
+
.cols-2 {
|
115
|
+
display: grid;
|
116
|
+
grid-template-columns: 1fr 1fr;
|
117
|
+
}
|
118
|
+
.cols-4 {
|
119
|
+
display: grid;
|
120
|
+
grid-template-columns: 1fr 1fr 1fr 1fr;
|
121
|
+
}
|
122
|
+
.cols-6 {
|
123
|
+
display: grid;
|
124
|
+
grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr;
|
125
|
+
}
|
126
|
+
|
110
127
|
/* Typography */
|
111
128
|
h1,
|
112
129
|
h2,
|
@@ -114,11 +131,26 @@ h3,
|
|
114
131
|
h4,
|
115
132
|
h5,
|
116
133
|
h6 {
|
117
|
-
margin: 1em 0;
|
134
|
+
margin: 1em 0 0.5em 0;
|
118
135
|
}
|
119
136
|
body {
|
120
137
|
line-height: var(--line-height);
|
121
138
|
}
|
139
|
+
a {
|
140
|
+
color: var(--brand);
|
141
|
+
text-decoration: dotted underline;
|
142
|
+
text-decoration-skip-ink: true;
|
143
|
+
text-underline-offset: 3px;
|
144
|
+
transition: all 0.2s;
|
145
|
+
&:hover {
|
146
|
+
text-decoration: wavy underline;
|
147
|
+
text-underline-offset: 5px;
|
148
|
+
text-decoration-thickness: 1px;
|
149
|
+
}
|
150
|
+
}
|
151
|
+
p {
|
152
|
+
margin: 0 0 1em 0;
|
153
|
+
}
|
122
154
|
|
123
155
|
/* UI Elements */
|
124
156
|
button,
|
@@ -127,9 +159,13 @@ button,
|
|
127
159
|
background-color: var(--brand);
|
128
160
|
color: white;
|
129
161
|
cursor: pointer;
|
130
|
-
padding: var(--padding
|
162
|
+
padding: var(--padding) var(--padding-large);
|
131
163
|
border-radius: var(--radius);
|
132
164
|
transition: all 0.2s;
|
165
|
+
&.fit {
|
166
|
+
width: fit-content;
|
167
|
+
}
|
168
|
+
|
133
169
|
&:hover {
|
134
170
|
background-color: lch(from var(--brand) calc(l - 10) c h);
|
135
171
|
}
|
@@ -138,20 +174,40 @@ button,
|
|
138
174
|
}
|
139
175
|
}
|
140
176
|
|
177
|
+
card {
|
178
|
+
background-color: white;
|
179
|
+
border: 1px solid var(--subtle);
|
180
|
+
border-radius: var(--radius);
|
181
|
+
padding: var(--padding-large);
|
182
|
+
box-shadow: var(--shadow-medium);
|
183
|
+
transition: all 0.2s;
|
184
|
+
&:hover {
|
185
|
+
box-shadow: var(--shadow-large);
|
186
|
+
}
|
187
|
+
h1,
|
188
|
+
h2,
|
189
|
+
h3,
|
190
|
+
h4,
|
191
|
+
h5,
|
192
|
+
h6 {
|
193
|
+
margin: 0;
|
194
|
+
}
|
195
|
+
}
|
196
|
+
|
141
197
|
/* Effects */
|
142
198
|
.glass {
|
143
199
|
background-color: #6666;
|
144
200
|
backdrop-filter: blur(20px);
|
145
201
|
}
|
146
202
|
.shadow {
|
147
|
-
box-shadow: var(--shadow-small)
|
203
|
+
box-shadow: var(--shadow-small);
|
148
204
|
}
|
149
205
|
.shadow-medium {
|
150
|
-
box-shadow: var(--shadow-medium)
|
206
|
+
box-shadow: var(--shadow-medium);
|
151
207
|
}
|
152
208
|
.shadow-large {
|
153
|
-
box-shadow: var(--shadow-large)
|
209
|
+
box-shadow: var(--shadow-large);
|
154
210
|
}
|
155
211
|
.shadow-center {
|
156
|
-
box-shadow: var(--shadow-center)
|
157
|
-
}
|
212
|
+
box-shadow: var(--shadow-center);
|
213
|
+
}
|
package/index.html
CHANGED
@@ -1,12 +1,15 @@
|
|
1
1
|
<!DOCTYPE html>
|
2
2
|
<html lang="en">
|
3
|
-
|
4
3
|
<head>
|
5
|
-
<meta charset="UTF-8"
|
6
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0"
|
4
|
+
<meta charset="UTF-8" />
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
7
6
|
<title>CSS Library Demo</title>
|
8
|
-
<link rel="stylesheet" href="index.css"
|
7
|
+
<link rel="stylesheet" href="index.css" />
|
9
8
|
<style>
|
9
|
+
:root {
|
10
|
+
--brand: #3e8fe6;
|
11
|
+
}
|
12
|
+
|
10
13
|
body {
|
11
14
|
width: 50%;
|
12
15
|
margin: 0 auto;
|
@@ -30,10 +33,29 @@
|
|
30
33
|
<h1>CSS Library Demo</h1>
|
31
34
|
|
32
35
|
<p>
|
33
|
-
This is a collection of utility classes and components that I use in my
|
34
|
-
keep adding more as I go.
|
36
|
+
This is a collection of utility classes and components that I use in my
|
37
|
+
projects. It's a work in progress and I'll keep adding more as I go. Feel
|
38
|
+
free to use it in your projects, and if you have any suggestions or
|
39
|
+
feedback, please
|
40
|
+
<a href="https://github.com/bomberstudios/css-library">let me know</a>!
|
35
41
|
</p>
|
36
42
|
|
43
|
+
<h2>Colors</h2>
|
44
|
+
<vstack>
|
45
|
+
<hstack align="left">
|
46
|
+
<span>--brand</span>
|
47
|
+
<div class="chip" style="background-color: var(--brand)"></div>
|
48
|
+
</hstack>
|
49
|
+
<p>
|
50
|
+
This is overridden in this HTML from the default value, which is
|
51
|
+
(unsurprisingly) a nice shadow of orange.
|
52
|
+
</p>
|
53
|
+
<hstack>
|
54
|
+
<span>--subtle</span>
|
55
|
+
<div class="chip" style="background-color: var(--subtle)"></div>
|
56
|
+
</hstack>
|
57
|
+
</vstack>
|
58
|
+
|
37
59
|
<h2>Stacks</h2>
|
38
60
|
|
39
61
|
<h3>Vertical Stack</h3>
|
@@ -43,6 +65,15 @@
|
|
43
65
|
<div>Item 3</div>
|
44
66
|
</vstack>
|
45
67
|
|
68
|
+
<h3>Vertical Stack, with dividers</h3>
|
69
|
+
<vstack>
|
70
|
+
<div>Item 1</div>
|
71
|
+
<divider></divider>
|
72
|
+
<div>Item 2</div>
|
73
|
+
<divider></divider>
|
74
|
+
<div>Item 3</div>
|
75
|
+
</vstack>
|
76
|
+
|
46
77
|
<h3>Vertical Stack, align=center</h3>
|
47
78
|
<vstack align="center">
|
48
79
|
<div>Item 1</div>
|
@@ -57,19 +88,19 @@
|
|
57
88
|
<div>Item 3</div>
|
58
89
|
</vstack>
|
59
90
|
|
60
|
-
<h3>
|
61
|
-
<
|
91
|
+
<h3>Horizontal Stack</h3>
|
92
|
+
<hstack>
|
62
93
|
<div>Item 1</div>
|
63
|
-
<divider></divider>
|
64
94
|
<div>Item 2</div>
|
65
|
-
<divider></divider>
|
66
95
|
<div>Item 3</div>
|
67
|
-
</
|
96
|
+
</hstack>
|
68
97
|
|
69
|
-
<h3>Horizontal Stack</h3>
|
98
|
+
<h3>Horizontal Stack, with dividers</h3>
|
70
99
|
<hstack>
|
71
100
|
<div>Item 1</div>
|
101
|
+
<divider></divider>
|
72
102
|
<div>Item 2</div>
|
103
|
+
<divider></divider>
|
73
104
|
<div>Item 3</div>
|
74
105
|
</hstack>
|
75
106
|
|
@@ -81,7 +112,7 @@
|
|
81
112
|
</hstack>
|
82
113
|
|
83
114
|
<h3>Horizontal Stack, align=right</h3>
|
84
|
-
<hstack align="right">
|
115
|
+
<hstack align=" right">
|
85
116
|
<div>Item 1</div>
|
86
117
|
<div>Item 2</div>
|
87
118
|
<div>Item 3</div>
|
@@ -94,20 +125,30 @@
|
|
94
125
|
<div>Item 3</div>
|
95
126
|
</hstack>
|
96
127
|
|
97
|
-
<h3>Horizontal Stack, with dividers</h3>
|
98
|
-
<hstack>
|
99
|
-
<div>Item 1</div>
|
100
|
-
<divider></divider>
|
101
|
-
<div>Item 2</div>
|
102
|
-
<divider></divider>
|
103
|
-
<div>Item 3</div>
|
104
|
-
</hstack>
|
105
|
-
|
106
128
|
<h3>Z Stack</h3>
|
129
|
+
<p>Great if you need to stack a bunch of elements on top of each other</p>
|
107
130
|
<zstack>
|
108
|
-
<div
|
109
|
-
|
110
|
-
|
131
|
+
<div style="width: 150px; height: 150px; background-color: var(--brand)">
|
132
|
+
1
|
133
|
+
</div>
|
134
|
+
<div
|
135
|
+
style="
|
136
|
+
width: 100px;
|
137
|
+
height: 100px;
|
138
|
+
background-color: lch(from var(--brand) calc(l + 10) c h);
|
139
|
+
"
|
140
|
+
>
|
141
|
+
2
|
142
|
+
</div>
|
143
|
+
<div
|
144
|
+
style="
|
145
|
+
width: 50px;
|
146
|
+
height: 50px;
|
147
|
+
background-color: lch(from var(--brand) calc(l + 20) c h);
|
148
|
+
"
|
149
|
+
>
|
150
|
+
3
|
151
|
+
</div>
|
111
152
|
</zstack>
|
112
153
|
|
113
154
|
<h3>Nested Stacks</h3>
|
@@ -118,7 +159,7 @@
|
|
118
159
|
<div>Item 3</div>
|
119
160
|
</hstack>
|
120
161
|
<divider></divider>
|
121
|
-
<hstack align="center" style="align-items: start
|
162
|
+
<hstack align="center" style="align-items: start">
|
122
163
|
<div>Item 4</div>
|
123
164
|
<divider></divider>
|
124
165
|
<vstack>
|
@@ -133,45 +174,47 @@
|
|
133
174
|
</hstack>
|
134
175
|
</vstack>
|
135
176
|
|
136
|
-
<h2>
|
177
|
+
<h2>UI Elements</h2>
|
178
|
+
<h3>Button</h3>
|
137
179
|
<vstack>
|
138
|
-
<
|
139
|
-
|
140
|
-
|
141
|
-
</
|
142
|
-
<hstack>
|
143
|
-
<p>--subtle</p>
|
144
|
-
<div class="chip" style="background-color: var(--subtle);"></div>
|
145
|
-
</hstack>
|
180
|
+
<span>Default button:</span>
|
181
|
+
<button>Click me</button>
|
182
|
+
<span>With '.fit' class:</span>
|
183
|
+
<button class="fit">Click me</button>
|
146
184
|
</vstack>
|
147
185
|
|
148
|
-
<
|
149
|
-
<
|
150
|
-
|
186
|
+
<h3>Card</h3>
|
187
|
+
<hstack class="cols-2">
|
188
|
+
<card>
|
189
|
+
<h3>Card Title</h3>
|
190
|
+
<p>Card content goes here</p>
|
191
|
+
</card>
|
192
|
+
<card>
|
193
|
+
<h3>Card Title</h3>
|
194
|
+
<p>Card content goes here</p>
|
195
|
+
</card>
|
196
|
+
</hstack>
|
151
197
|
|
152
198
|
<h2>Shadows</h2>
|
153
199
|
<vstack>
|
154
|
-
<hstack>
|
155
|
-
<
|
200
|
+
<hstack class="cols-2">
|
201
|
+
<span>--shadow-small, .shadow</span>
|
156
202
|
<div class="shadow chip"></div>
|
157
203
|
</hstack>
|
158
|
-
<hstack>
|
159
|
-
<
|
204
|
+
<hstack class="cols-2">
|
205
|
+
<span>--shadow-medium, .shadow-medium</span>
|
160
206
|
<div class="shadow-medium chip"></div>
|
161
207
|
</hstack>
|
162
|
-
<hstack>
|
163
|
-
<
|
208
|
+
<hstack class="cols-2">
|
209
|
+
<span>--shadow-large, .shadow-large</span>
|
164
210
|
<div class="shadow-large chip"></div>
|
165
211
|
</hstack>
|
166
|
-
<hstack>
|
167
|
-
<
|
212
|
+
<hstack class="cols-2">
|
213
|
+
<span>--shadow-center, .shadow-center</span>
|
168
214
|
<div class="shadow-center chip"></div>
|
169
215
|
</hstack>
|
170
216
|
</vstack>
|
171
217
|
|
172
|
-
<footer>
|
173
|
-
Enjoy life!
|
174
|
-
</footer>
|
218
|
+
<footer>Enjoy life!</footer>
|
175
219
|
</body>
|
176
|
-
|
177
|
-
</html>
|
220
|
+
</html>
|
package/package.json
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
{
|
2
2
|
"name": "@bomberstudios/css-library",
|
3
|
-
"version": "1.1.
|
3
|
+
"version": "1.1.2",
|
4
4
|
"description": "A bunch of CSS code I reuse between projects",
|
5
5
|
"main": "index.css",
|
6
6
|
"scripts": {
|
7
|
-
"
|
7
|
+
"start": "npx reload -b",
|
8
|
+
"release": "npm version patch && npm publish --access public"
|
8
9
|
},
|
9
10
|
"author": "Ale Muñoz",
|
10
11
|
"license": "MIT"
|