@bomberstudios/css-library 1.1.0 → 1.1.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/.prettierrc +6 -0
- package/README.md +20 -0
- package/index.css +89 -26
- package/index.html +108 -53
- 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,18 +1,20 @@
|
|
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;
|
13
13
|
accent-color: var(--brand);
|
14
14
|
--brand: light-dark(#f60, #f60);
|
15
15
|
--subtle: light-dark(#aaa, #666);
|
16
|
+
--fg-color: light-dark(#333, #ddd);
|
17
|
+
--bg-color: light-dark(white, #151515);
|
16
18
|
|
17
19
|
/* Typography */
|
18
20
|
--font-family: system-ui, sans-serif;
|
@@ -20,10 +22,11 @@
|
|
20
22
|
--line-height: 1.3;
|
21
23
|
|
22
24
|
/* Visual */
|
23
|
-
--shadow-
|
24
|
-
--shadow-
|
25
|
-
--shadow-
|
26
|
-
--shadow-
|
25
|
+
--shadow-color: light-dark(rgba(0, 0, 0, 0.3), rgba(255, 255, 255, 0.3));
|
26
|
+
--shadow-small: 0 1px 3px var(--shadow-color);
|
27
|
+
--shadow-medium: 0 2px calc(var(--gap) / 2) var(--shadow-color);
|
28
|
+
--shadow-large: 0 5px var(--gap) var(--shadow-color);
|
29
|
+
--shadow-center: 0 0 var(--gap) var(--shadow-color);
|
27
30
|
}
|
28
31
|
|
29
32
|
/* Reset */
|
@@ -31,11 +34,11 @@
|
|
31
34
|
margin: 0;
|
32
35
|
padding: 0;
|
33
36
|
list-style: none;
|
34
|
-
-webkit-font-smoothing: antialiased;
|
35
37
|
box-sizing: border-box;
|
36
38
|
outline: none;
|
37
39
|
border: none;
|
38
40
|
text-decoration: none;
|
41
|
+
height: max-content;
|
39
42
|
}
|
40
43
|
|
41
44
|
html,
|
@@ -46,6 +49,10 @@ body {
|
|
46
49
|
body {
|
47
50
|
font-family: var(--font-family);
|
48
51
|
font-size: var(--font-size);
|
52
|
+
display: flex;
|
53
|
+
flex-direction: column;
|
54
|
+
color: var(--fg-color);
|
55
|
+
background-color: var(--bg-color);
|
49
56
|
}
|
50
57
|
|
51
58
|
/* Layout */
|
@@ -63,26 +70,23 @@ vstack {
|
|
63
70
|
flex-direction: column;
|
64
71
|
}
|
65
72
|
|
66
|
-
hstack[align=
|
67
|
-
vstack[align=
|
73
|
+
hstack[align='center'],
|
74
|
+
vstack[align='center'] {
|
68
75
|
justify-content: center;
|
69
76
|
}
|
70
|
-
hstack[align=
|
71
|
-
vstack[align=
|
77
|
+
hstack[align='right'],
|
78
|
+
vstack[align='right'] {
|
72
79
|
align-items: end;
|
73
80
|
justify-content: flex-end;
|
74
81
|
}
|
75
|
-
vstack[align=
|
82
|
+
vstack[align='right'] > * {
|
76
83
|
width: 100%;
|
77
84
|
}
|
78
|
-
hstack[align=
|
79
|
-
vstack[align=
|
85
|
+
hstack[align='space-between'],
|
86
|
+
vstack[align='space-between'] {
|
80
87
|
justify-content: space-between;
|
81
88
|
}
|
82
89
|
/* TODO: top and bottom alignment */
|
83
|
-
hstack[align="top"] {
|
84
|
-
align-items: start;
|
85
|
-
}
|
86
90
|
|
87
91
|
zstack {
|
88
92
|
display: grid;
|
@@ -90,6 +94,9 @@ zstack {
|
|
90
94
|
justify-items: center;
|
91
95
|
}
|
92
96
|
zstack > * {
|
97
|
+
display: flex;
|
98
|
+
align-items: center;
|
99
|
+
justify-content: center;
|
93
100
|
grid-area: 1/1/1/1;
|
94
101
|
}
|
95
102
|
|
@@ -107,6 +114,20 @@ hstack divider {
|
|
107
114
|
height: 100%;
|
108
115
|
}
|
109
116
|
|
117
|
+
/* Grid */
|
118
|
+
.cols-2 {
|
119
|
+
display: grid;
|
120
|
+
grid-template-columns: 1fr 1fr;
|
121
|
+
}
|
122
|
+
.cols-4 {
|
123
|
+
display: grid;
|
124
|
+
grid-template-columns: 1fr 1fr 1fr 1fr;
|
125
|
+
}
|
126
|
+
.cols-6 {
|
127
|
+
display: grid;
|
128
|
+
grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr;
|
129
|
+
}
|
130
|
+
|
110
131
|
/* Typography */
|
111
132
|
h1,
|
112
133
|
h2,
|
@@ -114,11 +135,29 @@ h3,
|
|
114
135
|
h4,
|
115
136
|
h5,
|
116
137
|
h6 {
|
117
|
-
margin: 1em 0;
|
138
|
+
margin: 1em 0 0.5em 0;
|
118
139
|
}
|
119
140
|
body {
|
120
141
|
line-height: var(--line-height);
|
121
142
|
}
|
143
|
+
a {
|
144
|
+
color: var(--brand);
|
145
|
+
text-decoration: underline;
|
146
|
+
text-decoration-style: dotted;
|
147
|
+
text-underline-offset: 3px;
|
148
|
+
text-decoration-thickness: 1px;
|
149
|
+
text-decoration-skip-ink: true;
|
150
|
+
transition: all 0.2s;
|
151
|
+
&:hover {
|
152
|
+
text-decoration: underline;
|
153
|
+
text-decoration-style: wavy;
|
154
|
+
text-underline-offset: 5px;
|
155
|
+
text-decoration-thickness: 1px;
|
156
|
+
}
|
157
|
+
}
|
158
|
+
p {
|
159
|
+
/* margin: 0 0 1em 0; */
|
160
|
+
}
|
122
161
|
|
123
162
|
/* UI Elements */
|
124
163
|
button,
|
@@ -127,9 +166,13 @@ button,
|
|
127
166
|
background-color: var(--brand);
|
128
167
|
color: white;
|
129
168
|
cursor: pointer;
|
130
|
-
padding: var(--padding
|
169
|
+
padding: var(--padding) var(--padding-large);
|
131
170
|
border-radius: var(--radius);
|
132
171
|
transition: all 0.2s;
|
172
|
+
&.fit {
|
173
|
+
width: fit-content;
|
174
|
+
}
|
175
|
+
|
133
176
|
&:hover {
|
134
177
|
background-color: lch(from var(--brand) calc(l - 10) c h);
|
135
178
|
}
|
@@ -138,20 +181,40 @@ button,
|
|
138
181
|
}
|
139
182
|
}
|
140
183
|
|
184
|
+
card {
|
185
|
+
background-color: var(--bg-color);
|
186
|
+
border: 1px solid var(--subtle);
|
187
|
+
border-radius: var(--radius);
|
188
|
+
padding: var(--padding-large);
|
189
|
+
box-shadow: var(--shadow-medium);
|
190
|
+
transition: all 0.2s;
|
191
|
+
&:hover {
|
192
|
+
box-shadow: var(--shadow-large);
|
193
|
+
}
|
194
|
+
h1,
|
195
|
+
h2,
|
196
|
+
h3,
|
197
|
+
h4,
|
198
|
+
h5,
|
199
|
+
h6 {
|
200
|
+
margin: 0;
|
201
|
+
}
|
202
|
+
}
|
203
|
+
|
141
204
|
/* Effects */
|
142
205
|
.glass {
|
143
206
|
background-color: #6666;
|
144
207
|
backdrop-filter: blur(20px);
|
145
208
|
}
|
146
209
|
.shadow {
|
147
|
-
box-shadow: var(--shadow-small)
|
210
|
+
box-shadow: var(--shadow-small);
|
148
211
|
}
|
149
212
|
.shadow-medium {
|
150
|
-
box-shadow: var(--shadow-medium)
|
213
|
+
box-shadow: var(--shadow-medium);
|
151
214
|
}
|
152
215
|
.shadow-large {
|
153
|
-
box-shadow: var(--shadow-large)
|
216
|
+
box-shadow: var(--shadow-large);
|
154
217
|
}
|
155
218
|
.shadow-center {
|
156
|
-
box-shadow: var(--shadow-center)
|
157
|
-
}
|
219
|
+
box-shadow: var(--shadow-center);
|
220
|
+
}
|
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,37 @@
|
|
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
|
+
<hstack>
|
58
|
+
<span>--fg-color</span>
|
59
|
+
<div class="chip" style="background-color: var(--fg-color)"></div>
|
60
|
+
</hstack>
|
61
|
+
<hstack>
|
62
|
+
<span>--bg-color</span>
|
63
|
+
<div class="chip" style="background-color: var(--bg-color)"></div>
|
64
|
+
</hstack>
|
65
|
+
</vstack>
|
66
|
+
|
37
67
|
<h2>Stacks</h2>
|
38
68
|
|
39
69
|
<h3>Vertical Stack</h3>
|
@@ -43,6 +73,15 @@
|
|
43
73
|
<div>Item 3</div>
|
44
74
|
</vstack>
|
45
75
|
|
76
|
+
<h3>Vertical Stack, with dividers</h3>
|
77
|
+
<vstack>
|
78
|
+
<div>Item 1</div>
|
79
|
+
<divider></divider>
|
80
|
+
<div>Item 2</div>
|
81
|
+
<divider></divider>
|
82
|
+
<div>Item 3</div>
|
83
|
+
</vstack>
|
84
|
+
|
46
85
|
<h3>Vertical Stack, align=center</h3>
|
47
86
|
<vstack align="center">
|
48
87
|
<div>Item 1</div>
|
@@ -57,19 +96,19 @@
|
|
57
96
|
<div>Item 3</div>
|
58
97
|
</vstack>
|
59
98
|
|
60
|
-
<h3>
|
61
|
-
<
|
99
|
+
<h3>Horizontal Stack</h3>
|
100
|
+
<hstack>
|
62
101
|
<div>Item 1</div>
|
63
|
-
<divider></divider>
|
64
102
|
<div>Item 2</div>
|
65
|
-
<divider></divider>
|
66
103
|
<div>Item 3</div>
|
67
|
-
</
|
104
|
+
</hstack>
|
68
105
|
|
69
|
-
<h3>Horizontal Stack</h3>
|
106
|
+
<h3>Horizontal Stack, with dividers</h3>
|
70
107
|
<hstack>
|
71
108
|
<div>Item 1</div>
|
109
|
+
<divider></divider>
|
72
110
|
<div>Item 2</div>
|
111
|
+
<divider></divider>
|
73
112
|
<div>Item 3</div>
|
74
113
|
</hstack>
|
75
114
|
|
@@ -81,7 +120,7 @@
|
|
81
120
|
</hstack>
|
82
121
|
|
83
122
|
<h3>Horizontal Stack, align=right</h3>
|
84
|
-
<hstack align="right">
|
123
|
+
<hstack align=" right">
|
85
124
|
<div>Item 1</div>
|
86
125
|
<div>Item 2</div>
|
87
126
|
<div>Item 3</div>
|
@@ -94,21 +133,35 @@
|
|
94
133
|
<div>Item 3</div>
|
95
134
|
</hstack>
|
96
135
|
|
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
136
|
<h3>Z Stack</h3>
|
107
|
-
<
|
108
|
-
<
|
109
|
-
<
|
110
|
-
|
111
|
-
|
137
|
+
<vstack>
|
138
|
+
<p>Great if you need to stack a bunch of elements on top of each other</p>
|
139
|
+
<zstack>
|
140
|
+
<div
|
141
|
+
style="width: 150px; height: 150px; background-color: var(--brand)"
|
142
|
+
>
|
143
|
+
1
|
144
|
+
</div>
|
145
|
+
<div
|
146
|
+
style="
|
147
|
+
width: 100px;
|
148
|
+
height: 100px;
|
149
|
+
background-color: lch(from var(--brand) calc(l + 10) c h);
|
150
|
+
"
|
151
|
+
>
|
152
|
+
2
|
153
|
+
</div>
|
154
|
+
<div
|
155
|
+
style="
|
156
|
+
width: 50px;
|
157
|
+
height: 50px;
|
158
|
+
background-color: lch(from var(--brand) calc(l + 20) c h);
|
159
|
+
"
|
160
|
+
>
|
161
|
+
3
|
162
|
+
</div>
|
163
|
+
</zstack>
|
164
|
+
</vstack>
|
112
165
|
|
113
166
|
<h3>Nested Stacks</h3>
|
114
167
|
<vstack>
|
@@ -118,7 +171,7 @@
|
|
118
171
|
<div>Item 3</div>
|
119
172
|
</hstack>
|
120
173
|
<divider></divider>
|
121
|
-
<hstack align="center" style="align-items: start
|
174
|
+
<hstack align="center" style="align-items: start">
|
122
175
|
<div>Item 4</div>
|
123
176
|
<divider></divider>
|
124
177
|
<vstack>
|
@@ -133,45 +186,47 @@
|
|
133
186
|
</hstack>
|
134
187
|
</vstack>
|
135
188
|
|
136
|
-
<h2>
|
189
|
+
<h2>UI Elements</h2>
|
190
|
+
<h3>Button</h3>
|
137
191
|
<vstack>
|
138
|
-
<
|
139
|
-
|
140
|
-
|
141
|
-
</
|
142
|
-
<hstack>
|
143
|
-
<p>--subtle</p>
|
144
|
-
<div class="chip" style="background-color: var(--subtle);"></div>
|
145
|
-
</hstack>
|
192
|
+
<span>Default button:</span>
|
193
|
+
<button>Click me</button>
|
194
|
+
<span>With '.fit' class:</span>
|
195
|
+
<button class="fit">Click me</button>
|
146
196
|
</vstack>
|
147
197
|
|
148
|
-
<
|
149
|
-
<
|
150
|
-
|
198
|
+
<h3>Card</h3>
|
199
|
+
<hstack class="cols-2">
|
200
|
+
<card>
|
201
|
+
<h3>Card Title</h3>
|
202
|
+
<p>Card content goes here</p>
|
203
|
+
</card>
|
204
|
+
<card>
|
205
|
+
<h3>Card Title</h3>
|
206
|
+
<p>Card content goes here</p>
|
207
|
+
</card>
|
208
|
+
</hstack>
|
151
209
|
|
152
210
|
<h2>Shadows</h2>
|
153
211
|
<vstack>
|
154
|
-
<hstack>
|
155
|
-
<
|
212
|
+
<hstack class="cols-2">
|
213
|
+
<span>--shadow-small, .shadow</span>
|
156
214
|
<div class="shadow chip"></div>
|
157
215
|
</hstack>
|
158
|
-
<hstack>
|
159
|
-
<
|
216
|
+
<hstack class="cols-2">
|
217
|
+
<span>--shadow-medium, .shadow-medium</span>
|
160
218
|
<div class="shadow-medium chip"></div>
|
161
219
|
</hstack>
|
162
|
-
<hstack>
|
163
|
-
<
|
220
|
+
<hstack class="cols-2">
|
221
|
+
<span>--shadow-large, .shadow-large</span>
|
164
222
|
<div class="shadow-large chip"></div>
|
165
223
|
</hstack>
|
166
|
-
<hstack>
|
167
|
-
<
|
224
|
+
<hstack class="cols-2">
|
225
|
+
<span>--shadow-center, .shadow-center</span>
|
168
226
|
<div class="shadow-center chip"></div>
|
169
227
|
</hstack>
|
170
228
|
</vstack>
|
171
229
|
|
172
|
-
<footer>
|
173
|
-
Enjoy life!
|
174
|
-
</footer>
|
230
|
+
<footer>Enjoy life!</footer>
|
175
231
|
</body>
|
176
|
-
|
177
|
-
</html>
|
232
|
+
</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.3",
|
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"
|