@obosbbl/grunnmuren-tailwind 2.3.2 → 2.4.1

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@obosbbl/grunnmuren-tailwind",
3
- "version": "2.3.2",
3
+ "version": "2.4.1",
4
4
  "description": "Grunnmuren Tailwind preset",
5
5
  "repository": {
6
6
  "url": "https://github.com/code-obos/grunnmuren"
@@ -16,7 +16,7 @@
16
16
  "font.css"
17
17
  ],
18
18
  "devDependencies": {
19
- "tailwindcss": "4.1.10"
19
+ "tailwindcss": "4.1.17"
20
20
  },
21
21
  "peerDependencies": {
22
22
  "tailwindcss": "^4.0.0"
package/tailwind-base.css CHANGED
@@ -108,8 +108,14 @@
108
108
  @apply bg-white grow;
109
109
  }
110
110
 
111
+ /** Grid column spacing */
112
+ @utility layout-grid-gap-x {
113
+ @apply sm:gap-x-4 md:gap-x-9 lg:gap-x-12 xl:gap-x-16;
114
+ }
115
+
111
116
  @utility layout-gap-x {
112
- @apply gap-x-2 sm:gap-x-4 md:gap-x-9 lg:gap-x-12 xl:gap-x-16;
117
+ @apply gap-x-2;
118
+ @apply layout-grid-gap-x;
113
119
  }
114
120
 
115
121
  @utility layout-gap-y {
@@ -194,3 +200,143 @@
194
200
  display: none;
195
201
  }
196
202
  }
203
+
204
+ @layer components {
205
+ /*** Grid Layout ***/
206
+
207
+ .layout-grid,
208
+ .layout-grid-container {
209
+ /** Grid base: defines the grid columns and their spacing */
210
+ @apply layout-grid-gap-x sm:grid-cols-14 grid;
211
+
212
+ /** Grid container that applies the grid columns, grid spacing and the container component class */
213
+ &.layout-grid-container {
214
+ @apply container;
215
+ /** Make content of the grid span the mid 12 columns as a default (unless it has another explicit col-span class) */
216
+ & > * {
217
+ @apply sm:col-start-2 sm:col-span-12;
218
+ }
219
+ }
220
+ }
221
+
222
+ [class*="layout-subgrid-"] {
223
+ @apply layout-grid-gap-x grid;
224
+ }
225
+
226
+ [class*="layout-subgrid-1"] {
227
+ @apply grid-cols-1;
228
+ }
229
+ [class*="layout-subgrid-2"] {
230
+ @apply grid-cols-2;
231
+ }
232
+ [class*="layout-subgrid-3"] {
233
+ @apply grid-cols-3;
234
+ }
235
+ [class*="layout-subgrid-4"] {
236
+ @apply grid-cols-4;
237
+ }
238
+ [class*="layout-subgrid-5"] {
239
+ @apply grid-cols-5;
240
+ }
241
+ [class*="layout-subgrid-6"] {
242
+ @apply grid-cols-6;
243
+ }
244
+ [class*="layout-subgrid-7"] {
245
+ @apply grid-cols-7;
246
+ }
247
+ [class*="layout-subgrid-8"] {
248
+ @apply grid-cols-8;
249
+ }
250
+ [class*="layout-subgrid-9"] {
251
+ @apply grid-cols-9;
252
+ }
253
+ [class*="layout-subgrid-10"] {
254
+ @apply grid-cols-10;
255
+ }
256
+ [class*="layout-subgrid-11"] {
257
+ @apply grid-cols-11;
258
+ }
259
+ [class*="layout-subgrid-12"] {
260
+ @apply grid-cols-12;
261
+ }
262
+
263
+ /*** Link List component styles ***/
264
+ .link-list-container {
265
+ @apply @container;
266
+
267
+ &:has([data-slot="heading"]) {
268
+ .link-list,
269
+ [data-slot="link-list"] {
270
+ @apply overflow-visible;
271
+ }
272
+ }
273
+
274
+ [data-slot="heading"] {
275
+ @apply p-1.25;
276
+
277
+ [data-slot="link"] {
278
+ @apply py-2.25;
279
+ & > svg {
280
+ @apply text-base;
281
+ }
282
+ }
283
+
284
+ &:not(:has([data-slot="link"])) {
285
+ @apply my-2.25;
286
+ }
287
+ }
288
+
289
+ [data-slot="link-list"] {
290
+ @apply @sm:gap-x-4 @md:gap-x-9 @lg:gap-x-12 @xl:gap-x-16;
291
+
292
+ &:has([data-slot="link-list-item"]:nth-child(6)):not(
293
+ :has([data-slot="link-list-item"]:nth-child(9):last-child)
294
+ ):not(:has([data-slot="link-list-item"]:nth-child(11))) {
295
+ @apply @4xl:grid-cols-2;
296
+ }
297
+ &:has([data-slot="link-list-item"]:nth-child(9):last-child),
298
+ &:has([data-slot="link-list-item"]:nth-child(11)) {
299
+ @apply @4xl:grid-cols-3;
300
+ }
301
+ }
302
+ }
303
+
304
+ .link-list,
305
+ [data-slot="link-list"] {
306
+ /**
307
+ * Hides dividers at the top of the list (overflow-y)
308
+ * while preventing arrow icons from overflowing container when animated to the right (overflow-x)
309
+ */
310
+ @apply min-w-fit overflow-hidden grid auto-rows-max gap-y-px;
311
+ }
312
+
313
+ .link-list-item,
314
+ [data-slot="link-list-item"] {
315
+ /** Creates divider lines that works in any grid layout and with the focus ring */
316
+ @apply after:-top-px relative p-1.25 after:absolute after:right-0 after:left-0 after:h-px after:w-full after:bg-gray-light;
317
+ [data-slot="link"] {
318
+ @apply paragraph;
319
+ }
320
+ }
321
+
322
+ .link-list-container,
323
+ .link-list-item,
324
+ [data-slot="link-list-item"] {
325
+ [data-slot="link"] {
326
+ @apply flex w-full cursor-pointer justify-between gap-x-2 py-3.5 font-medium no-underline focus-visible:outline-focus;
327
+ }
328
+ }
329
+
330
+ .link-list-container [data-slot="link"],
331
+ [data-slot="link-list-item"] [data-slot="link"] {
332
+ &:hover:not([download]):not([rel~="external"]) svg {
333
+ @apply motion-safe:translate-x-1;
334
+ }
335
+ &[download]:hover svg {
336
+ @apply motion-safe:translate-y-1;
337
+ }
338
+ &[rel~="external"]:hover svg {
339
+ @apply motion-safe:-translate-y-0.5 motion-safe:translate-x-0.5;
340
+ }
341
+ }
342
+ }
@@ -3,34 +3,64 @@
3
3
  * To support the prose styles from the tailwindcss-typography plugin.
4
4
  */
5
5
 
6
- @custom-variant prose-headings (& :is(h1, h2, h3, h4, h5, th):not(:where([class~='not-prose'], [class~='not-prose'] *)));
7
- @custom-variant prose-lead (& :is([class~="lead"]):not(:where([class~='not-prose'], [class~='not-prose'] *)));
8
- @custom-variant prose-h1 (& :is(h1):not(:where([class~='not-prose'], [class~='not-prose'] *)));
9
- @custom-variant prose-h2 (& :is(h2):not(:where([class~='not-prose'], [class~='not-prose'] *)));
10
- @custom-variant prose-h3 (& :is(h3):not(:where([class~='not-prose'], [class~='not-prose'] *)));
11
- @custom-variant prose-h4 (& :is(h4):not(:where([class~='not-prose'], [class~='not-prose'] *)));
12
- @custom-variant prose-h5 (& :is(h5):not(:where([class~='not-prose'], [class~='not-prose'] *)));
13
- @custom-variant prose-p (& :is(p):not(:where([class~='not-prose'], [class~='not-prose'] *)));
14
- @custom-variant prose-a (& :is(a):not(:where([class~='not-prose'], [class~='not-prose'] *)));
15
- @custom-variant prose-blockquote (& :is(blockquote):not(:where([class~='not-prose'], [class~='not-prose'] *)));
16
- @custom-variant prose-figure (& :is(figure):not(:where([class~='not-prose'], [class~='not-prose'] *)));
17
- @custom-variant prose-figcaption (& :is(figcaption):not(:where([class~='not-prose'], [class~='not-prose'] *)));
18
- @custom-variant prose-strong (& :is(strong):not(:where([class~='not-prose'], [class~='not-prose'] *)));
19
- @custom-variant prose-em (& :is(em):not(:where([class~='not-prose'], [class~='not-prose'] *)));
20
- @custom-variant prose-kbd (& :is(kbd):not(:where([class~='not-prose'], [class~='not-prose'] *)));
21
- @custom-variant prose-code (& :is(code):not(:where([class~='not-prose'], [class~='not-prose'] *)));
22
- @custom-variant prose-pre (& :is(pre):not(:where([class~='not-prose'], [class~='not-prose'] *)));
23
- @custom-variant prose-ol (& :is(ol):not(:where([class~='not-prose'], [class~='not-prose'] *)));
24
- @custom-variant prose-ul (& :is(ul):not(:where([class~='not-prose'], [class~='not-prose'] *)));
25
- @custom-variant prose-li (& :is(li):not(:where([class~='not-prose'], [class~='not-prose'] *)));
26
- @custom-variant prose-table (& :is(table):not(:where([class~='not-prose'], [class~='not-prose'] *)));
27
- @custom-variant prose-thead (& :is(thead):not(:where([class~='not-prose'], [class~='not-prose'] *)));
28
- @custom-variant prose-tr (& :is(tr):not(:where([class~='not-prose'], [class~='not-prose'] *)));
29
- @custom-variant prose-th (& :is(th):not(:where([class~='not-prose'], [class~='not-prose'] *)));
30
- @custom-variant prose-td (& :is(td):not(:where([class~='not-prose'], [class~='not-prose'] *)));
31
- @custom-variant prose-img (& :is(img):not(:where([class~='not-prose'], [class~='not-prose'] *)));
32
- @custom-variant prose-video (& :is(video):not(:where([class~='not-prose'], [class~='not-prose'] *)));
33
- @custom-variant prose-hr (& :is(hr):not(:where([class~='not-prose'], [class~='not-prose'] *)));
6
+ @custom-variant prose-headings (&
7
+ :is(h1, h2, h3, h4, h5, th):not(
8
+ :where([class~="not-prose"], [class~="not-prose"] *)
9
+ ));
10
+ @custom-variant prose-lead (&
11
+ :is([class~="lead"]):not(:where([class~="not-prose"], [class~="not-prose"] *)));
12
+ @custom-variant prose-h1 (&
13
+ :is(h1):not(:where([class~="not-prose"], [class~="not-prose"] *)));
14
+ @custom-variant prose-h2 (&
15
+ :is(h2):not(:where([class~="not-prose"], [class~="not-prose"] *)));
16
+ @custom-variant prose-h3 (&
17
+ :is(h3):not(:where([class~="not-prose"], [class~="not-prose"] *)));
18
+ @custom-variant prose-h4 (&
19
+ :is(h4):not(:where([class~="not-prose"], [class~="not-prose"] *)));
20
+ @custom-variant prose-h5 (&
21
+ :is(h5):not(:where([class~="not-prose"], [class~="not-prose"] *)));
22
+ @custom-variant prose-p (&
23
+ :is(p):not(:where([class~="not-prose"], [class~="not-prose"] *)));
24
+ @custom-variant prose-a (&
25
+ :is(a):not(:where([class~="not-prose"], [class~="not-prose"] *)));
26
+ @custom-variant prose-blockquote (&
27
+ :is(blockquote):not(:where([class~="not-prose"], [class~="not-prose"] *)));
28
+ @custom-variant prose-figure (&
29
+ :is(figure):not(:where([class~="not-prose"], [class~="not-prose"] *)));
30
+ @custom-variant prose-figcaption (&
31
+ :is(figcaption):not(:where([class~="not-prose"], [class~="not-prose"] *)));
32
+ @custom-variant prose-strong (&
33
+ :is(strong):not(:where([class~="not-prose"], [class~="not-prose"] *)));
34
+ @custom-variant prose-em (&
35
+ :is(em):not(:where([class~="not-prose"], [class~="not-prose"] *)));
36
+ @custom-variant prose-kbd (&
37
+ :is(kbd):not(:where([class~="not-prose"], [class~="not-prose"] *)));
38
+ @custom-variant prose-code (&
39
+ :is(code):not(:where([class~="not-prose"], [class~="not-prose"] *)));
40
+ @custom-variant prose-pre (&
41
+ :is(pre):not(:where([class~="not-prose"], [class~="not-prose"] *)));
42
+ @custom-variant prose-ol (&
43
+ :is(ol):not(:where([class~="not-prose"], [class~="not-prose"] *)));
44
+ @custom-variant prose-ul (&
45
+ :is(ul):not(:where([class~="not-prose"], [class~="not-prose"] *)));
46
+ @custom-variant prose-li (&
47
+ :is(li):not(:where([class~="not-prose"], [class~="not-prose"] *)));
48
+ @custom-variant prose-table (&
49
+ :is(table):not(:where([class~="not-prose"], [class~="not-prose"] *)));
50
+ @custom-variant prose-thead (&
51
+ :is(thead):not(:where([class~="not-prose"], [class~="not-prose"] *)));
52
+ @custom-variant prose-tr (&
53
+ :is(tr):not(:where([class~="not-prose"], [class~="not-prose"] *)));
54
+ @custom-variant prose-th (&
55
+ :is(th):not(:where([class~="not-prose"], [class~="not-prose"] *)));
56
+ @custom-variant prose-td (&
57
+ :is(td):not(:where([class~="not-prose"], [class~="not-prose"] *)));
58
+ @custom-variant prose-img (&
59
+ :is(img):not(:where([class~="not-prose"], [class~="not-prose"] *)));
60
+ @custom-variant prose-video (&
61
+ :is(video):not(:where([class~="not-prose"], [class~="not-prose"] *)));
62
+ @custom-variant prose-hr (&
63
+ :is(hr):not(:where([class~="not-prose"], [class~="not-prose"] *)));
34
64
 
35
65
  @utility prose {
36
66
  --tw-prose-body: --theme(--color-black, initial);
@@ -165,10 +195,7 @@
165
195
  }
166
196
 
167
197
  &:where(blockquote) {
168
- @apply font-medium italic grid grid-cols-[3rem_1fr] gap-x-[0.4375rem]
169
- pt-4 text-[1.4375rem]/[2.25rem] lg:text-[1.625rem]/[2.5625rem]
170
- before:text-[4.6875rem]/[1.6875rem] before:font-display
171
- before:not-italic before:content-["“"];
198
+ @apply font-medium italic grid grid-cols-[3rem_1fr] gap-x-[0.4375rem] pt-4 text-[1.4375rem]/[2.25rem] lg:text-[1.625rem]/[2.5625rem] before:text-[4.6875rem]/[1.6875rem] before:font-display before:not-italic before:content-["“"];
172
199
  margin-top: 1.6em;
173
200
  margin-bottom: 1.6em;
174
201
  }
@@ -246,8 +273,9 @@
246
273
  font-weight: 500;
247
274
  font-family: inherit;
248
275
  color: var(--tw-prose-kbd);
249
- box-shadow: 0 0 0 1px --alpha(var(--tw-prose-kbd-shadows) / 10%), 0 3px 0
250
- --alpha(var(--tw-prose-kbd-shadows) / 10%);
276
+ box-shadow:
277
+ 0 0 0 1px --alpha(var(--tw-prose-kbd-shadows) / 10%),
278
+ 0 3px 0 --alpha(var(--tw-prose-kbd-shadows) / 10%);
251
279
  font-size: 0.875em;
252
280
  border-radius: 0.3125rem;
253
281
  padding-top: 0.1875em;