unigrid.css 0.3.0 → 0.3.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.
Files changed (44) hide show
  1. package/README.md +101 -101
  2. package/dist/dropdown.js +36 -36
  3. package/dist/scrollspy.js +57 -57
  4. package/dist/tabs.js +30 -30
  5. package/dist/unigrid.css +4608 -4501
  6. package/dist/unigrid.js +173 -124
  7. package/dist/unigrid.min.css +1 -1
  8. package/dist/unigrid.min.js +1 -1
  9. package/package.json +70 -41
  10. package/src/js/dropdown.js +49 -49
  11. package/src/js/index.js +20 -19
  12. package/src/js/modal.js +81 -0
  13. package/src/js/scrollspy.js +87 -87
  14. package/src/js/tabs.js +58 -58
  15. package/src/scss/_accordion.scss +123 -123
  16. package/src/scss/_broadside.scss +125 -125
  17. package/src/scss/_buttons.scss +241 -241
  18. package/src/scss/_card.scss +168 -168
  19. package/src/scss/_components.scss +140 -140
  20. package/src/scss/_container.scss +53 -53
  21. package/src/scss/_dropdown.scss +178 -178
  22. package/src/scss/_footer.scss +147 -147
  23. package/src/scss/_formats.scss +64 -64
  24. package/src/scss/_forms.scss +192 -192
  25. package/src/scss/_grid.scss +114 -114
  26. package/src/scss/_header.scss +169 -169
  27. package/src/scss/_hero.scss +262 -262
  28. package/src/scss/_mixins.scss +120 -120
  29. package/src/scss/_modal.scss +158 -0
  30. package/src/scss/_modules.scss +238 -238
  31. package/src/scss/_navbar.scss +341 -341
  32. package/src/scss/_pagination.scss +160 -160
  33. package/src/scss/_prose.scss +393 -393
  34. package/src/scss/_reset.scss +82 -82
  35. package/src/scss/_scrollspy.scss +62 -62
  36. package/src/scss/_section.scss +91 -91
  37. package/src/scss/_sidebar.scss +147 -147
  38. package/src/scss/_table.scss +122 -122
  39. package/src/scss/_tabs.scss +178 -178
  40. package/src/scss/_typography.scss +105 -105
  41. package/src/scss/_utilities.scss +79 -79
  42. package/src/scss/_variables.scss +183 -183
  43. package/src/scss/unigrid.scss +50 -49
  44. package/dist/index.js +0 -5
@@ -1,341 +1,341 @@
1
- // ==========================================================================
2
- // Unigrid CSS Framework — Navbar (BEM)
3
- //
4
- // Block: .ug-navbar
5
- // Elements: __inner, __brand, __toggle, __menu, __item, __link, __divider
6
- // Modifiers: --dark, --fixed, --transparent
7
- // __toggle--hamburger (icon variant)
8
- // __menu--open (JS-toggled)
9
- // ==========================================================================
10
-
11
- @use "variables" as *;
12
- @use "mixins" as *;
13
-
14
- .ug-navbar {
15
- width: 100%;
16
- background-color: $ug-white;
17
- border-bottom: 1px solid $ug-light-gray;
18
- position: relative;
19
- z-index: 50;
20
-
21
- // -- Inner container --
22
- &__inner {
23
- display: flex;
24
- align-items: center;
25
- justify-content: space-between;
26
- max-width: 1280px;
27
- margin: 0 auto;
28
- padding: 0 var(--ug-leading);
29
- height: calc(var(--ug-leading) * 2 - 1px);
30
- }
31
-
32
- // -- Brand --
33
- &__brand {
34
- display: flex;
35
- align-items: center;
36
- gap: calc(var(--ug-leading) * 0.5);
37
- @include ug-font-size("sm");
38
- @include ug-font-weight("bold");
39
- text-decoration: none;
40
- color: inherit;
41
- flex-shrink: 0;
42
- }
43
-
44
- // -- Toggle Button (mobile only) --
45
- // Default: outline button with "Menu" / "Close" text
46
- &__toggle {
47
- display: none;
48
- align-items: center;
49
- justify-content: center;
50
- cursor: pointer;
51
- background: none;
52
- border: 1px solid currentColor;
53
- padding: 0 calc(var(--ug-leading) * 0.75);
54
- height: calc(var(--ug-leading) * 1.5);
55
- margin-top: calc(var(--ug-leading) * 0.5);
56
- color: inherit;
57
- @include ug-font-size("sm");
58
- @include ug-font-weight("bold");
59
- letter-spacing: 0.05em;
60
- font-family: inherit;
61
- transition: background-color 0.15s, color 0.15s;
62
- z-index: $ug-navbar-toggle-z-index;
63
-
64
- &:hover {
65
- background-color: rgba(255, 255, 255, 0.1);
66
- }
67
-
68
- // "Close" text hidden by default, shown when menu is open
69
- &__close {
70
- display: none;
71
- }
72
-
73
- &__label {
74
- display: inline;
75
- }
76
-
77
- @include ug-breakpoint-down("md") {
78
- display: inline-flex;
79
- }
80
- }
81
-
82
- // When menu is open, swap text
83
- &__toggle--active {
84
- .ug-navbar__toggle__label {
85
- display: none;
86
- }
87
- .ug-navbar__toggle__close {
88
- display: inline;
89
- }
90
- }
91
-
92
- // -- Hamburger variant --
93
- // Use: .ug-navbar__toggle.ug-navbar__toggle--hamburger
94
- &__toggle--hamburger {
95
- border: 1px solid currentColor;
96
- padding: 0;
97
- margin-top: calc(var(--ug-leading) * 0.5);
98
- margin-right: 0;
99
- flex-direction: column;
100
- gap: 0;
101
- width: calc(var(--ug-leading) * 1.5);
102
- height: calc(var(--ug-leading) * 1.5);
103
-
104
- &:hover {
105
- background-color: rgba(255, 255, 255, 0.1);
106
- }
107
-
108
- span {
109
- display: block;
110
- width: 1.125rem;
111
- height: 2px;
112
- background-color: currentColor;
113
- transition: transform 0.3s, opacity 0.3s;
114
-
115
- &:nth-child(2) {
116
- margin-top: 5px;
117
- }
118
-
119
- &:nth-child(3) {
120
- margin-top: 5px;
121
- }
122
- }
123
-
124
- // X transformation when active
125
- &.ug-navbar__toggle--active {
126
- span:nth-child(1) {
127
- transform: translateY(7px) rotate(45deg);
128
- }
129
-
130
- span:nth-child(2) {
131
- opacity: 0;
132
- }
133
-
134
- span:nth-child(3) {
135
- transform: translateY(-7px) rotate(-45deg);
136
- }
137
- }
138
- }
139
-
140
- // -- Menu --
141
- &__menu {
142
- display: flex;
143
- align-items: center;
144
- gap: 0;
145
- list-style: none;
146
- margin: 0;
147
- padding: 0;
148
-
149
- // Mobile: full-screen overlay below navbar
150
- @include ug-breakpoint-down("md") {
151
- display: none;
152
- flex-direction: column;
153
- align-items: stretch;
154
- position: fixed;
155
- top: 0;
156
- left: 0;
157
- right: 0;
158
- bottom: 0;
159
- background-color: $ug-black;
160
- color: $ug-white;
161
- padding: calc(var(--ug-leading) * 4) 0 var(--ug-leading) 0;
162
- overflow-y: auto;
163
- z-index: 99;
164
-
165
- &--open {
166
- display: flex;
167
- }
168
- }
169
- }
170
-
171
- // -- Menu Item --
172
- &__item {
173
- display: flex;
174
- align-items: center;
175
- }
176
-
177
- // -- Link --
178
- &__link {
179
- display: inline-flex;
180
- align-items: center;
181
- height: 100%;
182
- padding: 0 calc(var(--ug-leading) * 0.5);
183
- @include ug-font-size("base");
184
- @include ug-font-weight("light");
185
- color: $ug-dark-gray;
186
- text-decoration: none;
187
- white-space: nowrap;
188
- transition: color 0.15s, background-color 0.15s;
189
-
190
- &:hover {
191
- color: $ug-black;
192
- background-color: $ug-warm-gray;
193
- }
194
-
195
- &--active {
196
- color: $ug-black;
197
- }
198
-
199
- @include ug-breakpoint-down("md") {
200
- display: flex;
201
- align-items: center;
202
- height: calc(var(--ug-leading) * 2);
203
- padding: 0 calc(var(--ug-leading) * 1.5);
204
- @include ug-font-size("lg");
205
- color: rgba(255, 255, 255, 0.7);
206
-
207
- &:hover {
208
- color: $ug-white;
209
- background-color: rgba(255, 255, 255, 0.05);
210
- }
211
-
212
- &--active {
213
- color: $ug-white;
214
- }
215
- }
216
- }
217
-
218
- // -- Divider --
219
- &__divider {
220
- width: 1px;
221
- height: var(--ug-leading);
222
- background-color: $ug-light-gray;
223
- margin: 0 calc(var(--ug-leading) * 0.25);
224
-
225
- @include ug-breakpoint-down("md") {
226
- width: auto;
227
- height: 1px;
228
- margin: calc(var(--ug-leading) * 0.25) calc(var(--ug-leading) * 1.5);
229
- background-color: rgba(255, 255, 255, 0.15);
230
- }
231
- }
232
-
233
- // -- Dropdown: flat in mobile menu --
234
- @include ug-breakpoint-down("md") {
235
- .ug-dropdown {
236
- flex-direction: column;
237
- align-items: stretch;
238
- }
239
-
240
- // Always show dropdown menu items inline (no popup)
241
- .ug-dropdown__menu {
242
- position: static;
243
- display: flex;
244
- flex-direction: column;
245
- background: none;
246
- border: none;
247
- box-shadow: none;
248
- padding: 0;
249
- min-width: 0;
250
- }
251
-
252
- // Indent dropdown links
253
- .ug-dropdown__link {
254
- display: flex;
255
- align-items: center;
256
- height: calc(var(--ug-leading) * 2);
257
- padding: 0 calc(var(--ug-leading) * 2.5);
258
- @include ug-font-size("base");
259
- color: rgba(255, 255, 255, 0.5);
260
- text-decoration: none;
261
-
262
- &:hover {
263
- color: $ug-white;
264
- background-color: rgba(255, 255, 255, 0.05);
265
- }
266
- }
267
-
268
- // Hide caret in mobile
269
- .ug-dropdown__caret {
270
- display: none;
271
- }
272
-
273
- // Hide dropdown dividers/headers or style them flat
274
- .ug-dropdown__divider {
275
- height: 1px;
276
- background-color: rgba(255, 255, 255, 0.1);
277
- margin: calc(var(--ug-leading) * 0.25) calc(var(--ug-leading) * 2.5);
278
- }
279
-
280
- .ug-dropdown__header {
281
- padding: 0 calc(var(--ug-leading) * 2.5);
282
- color: rgba(255, 255, 255, 0.3);
283
- }
284
- }
285
-
286
- // ==============================
287
- // Modifiers
288
- // ==============================
289
-
290
- // -- Dark --
291
- &--dark {
292
- background-color: $ug-black;
293
- border-bottom-color: rgba(255, 255, 255, 0.1);
294
-
295
- .ug-navbar__link {
296
- color: rgba(255, 255, 255, 0.7);
297
- &:hover { color: $ug-white; background-color: rgba(255, 255, 255, 0.1); }
298
- &--active { color: $ug-white; }
299
- }
300
-
301
- .ug-navbar__brand { color: $ug-white; }
302
- .ug-navbar__toggle { color: $ug-white; }
303
- .ug-navbar__divider { background-color: rgba(255, 255, 255, 0.15); }
304
-
305
- .ug-navbar__menu {
306
- @include ug-breakpoint-down("md") {
307
- background-color: $ug-black;
308
- border-bottom-color: rgba(255, 255, 255, 0.1);
309
- }
310
- }
311
- }
312
-
313
- // -- Fixed --
314
- &--fixed {
315
- position: fixed;
316
- top: 0;
317
- left: 0;
318
- right: 0;
319
- }
320
-
321
- // -- Transparent --
322
- &--transparent {
323
- background-color: transparent;
324
- border-bottom-color: transparent;
325
-
326
- .ug-navbar__link {
327
- color: rgba(255, 255, 255, 0.8);
328
- &:hover { color: $ug-white; background-color: rgba(255, 255, 255, 0.1); }
329
- &--active { color: $ug-white; }
330
- }
331
-
332
- .ug-navbar__brand { color: $ug-white; }
333
- .ug-navbar__toggle { color: $ug-white; }
334
-
335
- .ug-navbar__menu {
336
- @include ug-breakpoint-down("md") {
337
- background-color: $ug-black;
338
- }
339
- }
340
- }
341
- }
1
+ // ==========================================================================
2
+ // Unigrid CSS Framework — Navbar (BEM)
3
+ //
4
+ // Block: .ug-navbar
5
+ // Elements: __inner, __brand, __toggle, __menu, __item, __link, __divider
6
+ // Modifiers: --dark, --fixed, --transparent
7
+ // __toggle--hamburger (icon variant)
8
+ // __menu--open (JS-toggled)
9
+ // ==========================================================================
10
+
11
+ @use "variables" as *;
12
+ @use "mixins" as *;
13
+
14
+ .ug-navbar {
15
+ width: 100%;
16
+ background-color: $ug-white;
17
+ border-bottom: 1px solid $ug-light-gray;
18
+ position: relative;
19
+ z-index: 50;
20
+
21
+ // -- Inner container --
22
+ &__inner {
23
+ display: flex;
24
+ align-items: center;
25
+ justify-content: space-between;
26
+ max-width: 1280px;
27
+ margin: 0 auto;
28
+ padding: 0 var(--ug-leading);
29
+ height: calc(var(--ug-leading) * 2 - 1px);
30
+ }
31
+
32
+ // -- Brand --
33
+ &__brand {
34
+ display: flex;
35
+ align-items: center;
36
+ gap: calc(var(--ug-leading) * 0.5);
37
+ @include ug-font-size("sm");
38
+ @include ug-font-weight("bold");
39
+ text-decoration: none;
40
+ color: inherit;
41
+ flex-shrink: 0;
42
+ }
43
+
44
+ // -- Toggle Button (mobile only) --
45
+ // Default: outline button with "Menu" / "Close" text
46
+ &__toggle {
47
+ display: none;
48
+ align-items: center;
49
+ justify-content: center;
50
+ cursor: pointer;
51
+ background: none;
52
+ border: 1px solid currentColor;
53
+ padding: 0 calc(var(--ug-leading) * 0.75);
54
+ height: calc(var(--ug-leading) * 1.5);
55
+ margin-top: calc(var(--ug-leading) * 0.5);
56
+ color: inherit;
57
+ @include ug-font-size("sm");
58
+ @include ug-font-weight("bold");
59
+ letter-spacing: 0.05em;
60
+ font-family: inherit;
61
+ transition: background-color 0.15s, color 0.15s;
62
+ z-index: $ug-navbar-toggle-z-index;
63
+
64
+ &:hover {
65
+ background-color: rgba(255, 255, 255, 0.1);
66
+ }
67
+
68
+ // "Close" text hidden by default, shown when menu is open
69
+ &__close {
70
+ display: none;
71
+ }
72
+
73
+ &__label {
74
+ display: inline;
75
+ }
76
+
77
+ @include ug-breakpoint-down("md") {
78
+ display: inline-flex;
79
+ }
80
+ }
81
+
82
+ // When menu is open, swap text
83
+ &__toggle--active {
84
+ .ug-navbar__toggle__label {
85
+ display: none;
86
+ }
87
+ .ug-navbar__toggle__close {
88
+ display: inline;
89
+ }
90
+ }
91
+
92
+ // -- Hamburger variant --
93
+ // Use: .ug-navbar__toggle.ug-navbar__toggle--hamburger
94
+ &__toggle--hamburger {
95
+ border: 1px solid currentColor;
96
+ padding: 0;
97
+ margin-top: calc(var(--ug-leading) * 0.5);
98
+ margin-right: 0;
99
+ flex-direction: column;
100
+ gap: 0;
101
+ width: calc(var(--ug-leading) * 1.5);
102
+ height: calc(var(--ug-leading) * 1.5);
103
+
104
+ &:hover {
105
+ background-color: rgba(255, 255, 255, 0.1);
106
+ }
107
+
108
+ span {
109
+ display: block;
110
+ width: 1.125rem;
111
+ height: 2px;
112
+ background-color: currentColor;
113
+ transition: transform 0.3s, opacity 0.3s;
114
+
115
+ &:nth-child(2) {
116
+ margin-top: 5px;
117
+ }
118
+
119
+ &:nth-child(3) {
120
+ margin-top: 5px;
121
+ }
122
+ }
123
+
124
+ // X transformation when active
125
+ &.ug-navbar__toggle--active {
126
+ span:nth-child(1) {
127
+ transform: translateY(7px) rotate(45deg);
128
+ }
129
+
130
+ span:nth-child(2) {
131
+ opacity: 0;
132
+ }
133
+
134
+ span:nth-child(3) {
135
+ transform: translateY(-7px) rotate(-45deg);
136
+ }
137
+ }
138
+ }
139
+
140
+ // -- Menu --
141
+ &__menu {
142
+ display: flex;
143
+ align-items: center;
144
+ gap: 0;
145
+ list-style: none;
146
+ margin: 0;
147
+ padding: 0;
148
+
149
+ // Mobile: full-screen overlay below navbar
150
+ @include ug-breakpoint-down("md") {
151
+ display: none;
152
+ flex-direction: column;
153
+ align-items: stretch;
154
+ position: fixed;
155
+ top: 0;
156
+ left: 0;
157
+ right: 0;
158
+ bottom: 0;
159
+ background-color: $ug-black;
160
+ color: $ug-white;
161
+ padding: calc(var(--ug-leading) * 4) 0 var(--ug-leading) 0;
162
+ overflow-y: auto;
163
+ z-index: 99;
164
+
165
+ &--open {
166
+ display: flex;
167
+ }
168
+ }
169
+ }
170
+
171
+ // -- Menu Item --
172
+ &__item {
173
+ display: flex;
174
+ align-items: center;
175
+ }
176
+
177
+ // -- Link --
178
+ &__link {
179
+ display: inline-flex;
180
+ align-items: center;
181
+ height: 100%;
182
+ padding: 0 calc(var(--ug-leading) * 0.5);
183
+ @include ug-font-size("base");
184
+ @include ug-font-weight("light");
185
+ color: $ug-dark-gray;
186
+ text-decoration: none;
187
+ white-space: nowrap;
188
+ transition: color 0.15s, background-color 0.15s;
189
+
190
+ &:hover {
191
+ color: $ug-black;
192
+ background-color: $ug-warm-gray;
193
+ }
194
+
195
+ &--active {
196
+ color: $ug-black;
197
+ }
198
+
199
+ @include ug-breakpoint-down("md") {
200
+ display: flex;
201
+ align-items: center;
202
+ height: calc(var(--ug-leading) * 2);
203
+ padding: 0 calc(var(--ug-leading) * 1.5);
204
+ @include ug-font-size("lg");
205
+ color: rgba(255, 255, 255, 0.7);
206
+
207
+ &:hover {
208
+ color: $ug-white;
209
+ background-color: rgba(255, 255, 255, 0.05);
210
+ }
211
+
212
+ &--active {
213
+ color: $ug-white;
214
+ }
215
+ }
216
+ }
217
+
218
+ // -- Divider --
219
+ &__divider {
220
+ width: 1px;
221
+ height: var(--ug-leading);
222
+ background-color: $ug-light-gray;
223
+ margin: 0 calc(var(--ug-leading) * 0.25);
224
+
225
+ @include ug-breakpoint-down("md") {
226
+ width: auto;
227
+ height: 1px;
228
+ margin: calc(var(--ug-leading) * 0.25) calc(var(--ug-leading) * 1.5);
229
+ background-color: rgba(255, 255, 255, 0.15);
230
+ }
231
+ }
232
+
233
+ // -- Dropdown: flat in mobile menu --
234
+ @include ug-breakpoint-down("md") {
235
+ .ug-dropdown {
236
+ flex-direction: column;
237
+ align-items: stretch;
238
+ }
239
+
240
+ // Always show dropdown menu items inline (no popup)
241
+ .ug-dropdown__menu {
242
+ position: static;
243
+ display: flex;
244
+ flex-direction: column;
245
+ background: none;
246
+ border: none;
247
+ box-shadow: none;
248
+ padding: 0;
249
+ min-width: 0;
250
+ }
251
+
252
+ // Indent dropdown links
253
+ .ug-dropdown__link {
254
+ display: flex;
255
+ align-items: center;
256
+ height: calc(var(--ug-leading) * 2);
257
+ padding: 0 calc(var(--ug-leading) * 2.5);
258
+ @include ug-font-size("base");
259
+ color: rgba(255, 255, 255, 0.5);
260
+ text-decoration: none;
261
+
262
+ &:hover {
263
+ color: $ug-white;
264
+ background-color: rgba(255, 255, 255, 0.05);
265
+ }
266
+ }
267
+
268
+ // Hide caret in mobile
269
+ .ug-dropdown__caret {
270
+ display: none;
271
+ }
272
+
273
+ // Hide dropdown dividers/headers or style them flat
274
+ .ug-dropdown__divider {
275
+ height: 1px;
276
+ background-color: rgba(255, 255, 255, 0.1);
277
+ margin: calc(var(--ug-leading) * 0.25) calc(var(--ug-leading) * 2.5);
278
+ }
279
+
280
+ .ug-dropdown__header {
281
+ padding: 0 calc(var(--ug-leading) * 2.5);
282
+ color: rgba(255, 255, 255, 0.3);
283
+ }
284
+ }
285
+
286
+ // ==============================
287
+ // Modifiers
288
+ // ==============================
289
+
290
+ // -- Dark --
291
+ &--dark {
292
+ background-color: $ug-black;
293
+ border-bottom-color: rgba(255, 255, 255, 0.1);
294
+
295
+ .ug-navbar__link {
296
+ color: rgba(255, 255, 255, 0.7);
297
+ &:hover { color: $ug-white; background-color: rgba(255, 255, 255, 0.1); }
298
+ &--active { color: $ug-white; }
299
+ }
300
+
301
+ .ug-navbar__brand { color: $ug-white; }
302
+ .ug-navbar__toggle { color: $ug-white; }
303
+ .ug-navbar__divider { background-color: rgba(255, 255, 255, 0.15); }
304
+
305
+ .ug-navbar__menu {
306
+ @include ug-breakpoint-down("md") {
307
+ background-color: $ug-black;
308
+ border-bottom-color: rgba(255, 255, 255, 0.1);
309
+ }
310
+ }
311
+ }
312
+
313
+ // -- Fixed --
314
+ &--fixed {
315
+ position: fixed;
316
+ top: 0;
317
+ left: 0;
318
+ right: 0;
319
+ }
320
+
321
+ // -- Transparent --
322
+ &--transparent {
323
+ background-color: transparent;
324
+ border-bottom-color: transparent;
325
+
326
+ .ug-navbar__link {
327
+ color: rgba(255, 255, 255, 0.8);
328
+ &:hover { color: $ug-white; background-color: rgba(255, 255, 255, 0.1); }
329
+ &--active { color: $ug-white; }
330
+ }
331
+
332
+ .ug-navbar__brand { color: $ug-white; }
333
+ .ug-navbar__toggle { color: $ug-white; }
334
+
335
+ .ug-navbar__menu {
336
+ @include ug-breakpoint-down("md") {
337
+ background-color: $ug-black;
338
+ }
339
+ }
340
+ }
341
+ }