@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 ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "tabWidth": 2,
3
+ "useTabs": false,
4
+ "singleQuote": true,
5
+ "proseWrap": "always"
6
+ }
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: 10px;
3
+ --gap: 12px;
4
4
  --radius-small: 3px;
5
5
  --radius: 5px;
6
6
  --radius-large: 10px;
7
- --padding-small: 5px;
8
- --padding-medium: 8px;
9
- --padding: 10px;
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-small: 0 1px 3px rgba(0, 0, 0, 0.3);
24
- --shadow-medium: 0 2px 5px rgba(0, 0, 0, 0.3);
25
- --shadow-large: 0 5px 10px rgba(0, 0, 0, 0.3);
26
- --shadow-center: 0 0 10px rgba(0, 0, 0, 0.3);
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="center"],
67
- vstack[align="center"] {
73
+ hstack[align='center'],
74
+ vstack[align='center'] {
68
75
  justify-content: center;
69
76
  }
70
- hstack[align="right"],
71
- vstack[align="right"] {
77
+ hstack[align='right'],
78
+ vstack[align='right'] {
72
79
  align-items: end;
73
80
  justify-content: flex-end;
74
81
  }
75
- vstack[align="right"] > * {
82
+ vstack[align='right'] > * {
76
83
  width: 100%;
77
84
  }
78
- hstack[align="space-between"],
79
- vstack[align="space-between"] {
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-medium) 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 projects. It's a work in progress and I'll
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>Vertical Stack, with dividers</h3>
61
- <vstack>
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
- </vstack>
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
- <zstack>
108
- <div>Item 1</div>
109
- <div>Item 2</div>
110
- <div>Item 3</div>
111
- </zstack>
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>Colors</h2>
189
+ <h2>UI Elements</h2>
190
+ <h3>Button</h3>
137
191
  <vstack>
138
- <hstack align="left">
139
- <p>--brand</p>
140
- <div class="chip" style="background-color: var(--brand);"></div>
141
- </hstack>
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
- <h2>UI Elements</h2>
149
- <h3>Button</h3>
150
- <button>Click me</button>
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
- <p>--shadow-small, .shadow</p>
212
+ <hstack class="cols-2">
213
+ <span>--shadow-small, .shadow</span>
156
214
  <div class="shadow chip"></div>
157
215
  </hstack>
158
- <hstack>
159
- <p>--shadow-medium, .shadow-medium</p>
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
- <p>--shadow-large, .shadow-large</p>
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
- <p>--shadow-center, .shadow-center</p>
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.0",
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
- "release": "npm publish --access public"
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"