@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 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,12 +1,12 @@
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;
@@ -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 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);
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="center"],
67
- vstack[align="center"] {
69
+ hstack[align='center'],
70
+ vstack[align='center'] {
68
71
  justify-content: center;
69
72
  }
70
- hstack[align="right"],
71
- vstack[align="right"] {
73
+ hstack[align='right'],
74
+ vstack[align='right'] {
72
75
  align-items: end;
73
76
  justify-content: flex-end;
74
77
  }
75
- vstack[align="right"] > * {
78
+ vstack[align='right'] > * {
76
79
  width: 100%;
77
80
  }
78
- hstack[align="space-between"],
79
- vstack[align="space-between"] {
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-medium) 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 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
+ </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>Vertical Stack, with dividers</h3>
61
- <vstack>
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
- </vstack>
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>Item 1</div>
109
- <div>Item 2</div>
110
- <div>Item 3</div>
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>Colors</h2>
177
+ <h2>UI Elements</h2>
178
+ <h3>Button</h3>
137
179
  <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>
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
- <h2>UI Elements</h2>
149
- <h3>Button</h3>
150
- <button>Click me</button>
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
- <p>--shadow-small, .shadow</p>
200
+ <hstack class="cols-2">
201
+ <span>--shadow-small, .shadow</span>
156
202
  <div class="shadow chip"></div>
157
203
  </hstack>
158
- <hstack>
159
- <p>--shadow-medium, .shadow-medium</p>
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
- <p>--shadow-large, .shadow-large</p>
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
- <p>--shadow-center, .shadow-center</p>
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.0",
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
- "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"