@inneropen/marvin-astro 2.1.0 → 2.1.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": "@inneropen/marvin-astro",
3
- "version": "2.1.0",
3
+ "version": "2.1.1",
4
4
  "description": "Site integration for Marvin CMS on Astro — repositories, site chrome, and payload normalization",
5
5
  "type": "module",
6
6
  "exports": {
@@ -70,6 +70,7 @@ const groups = COOKIE_CATEGORIES.filter((name) => !category || name === category
70
70
  <noscript><p class="marvin-privacy__notice">{labels.noscript}</p></noscript>
71
71
  )}
72
72
  {groups.map((group) => (
73
+ <div class="marvin-privacy__table-wrap">
73
74
  <table class={['marvin-privacy__table', 'marvin-privacy__table--cookies', className].filter(Boolean).join(' ')} data-category={group.name}>
74
75
  <caption>
75
76
  {labels.categories[group.name]}
@@ -94,4 +95,5 @@ const groups = COOKIE_CATEGORIES.filter((name) => !category || name === category
94
95
  ))}
95
96
  </tbody>
96
97
  </table>
98
+ </div>
97
99
  ))}
@@ -28,6 +28,7 @@ const rows = (processors ?? []).map((processor) => ({
28
28
  ---
29
29
 
30
30
  {rows.length > 0 && (
31
+ <div class="marvin-privacy__table-wrap">
31
32
  <table class={['marvin-privacy__table', 'marvin-privacy__table--processors', className].filter(Boolean).join(' ')}>
32
33
  <thead>
33
34
  <tr>
@@ -59,4 +60,5 @@ const rows = (processors ?? []).map((processor) => ({
59
60
  ))}
60
61
  </tbody>
61
62
  </table>
63
+ </div>
62
64
  )}
@@ -20,6 +20,9 @@
20
20
 
21
21
  :where(.marvin-privacy) {
22
22
  display: grid;
23
+ /* A bare `1fr`/auto track grows to its widest child's min-content, so one wide table would push
24
+ the whole policy past the viewport. minmax(0, 1fr) keeps the track at the container's width. */
25
+ grid-template-columns: minmax(0, 1fr);
23
26
  gap: var(--marvin-privacy-gap, 2rem);
24
27
  }
25
28
 
@@ -40,12 +43,21 @@
40
43
 
41
44
  :where(.marvin-privacy__facts dd) {
42
45
  margin: 0;
46
+ min-width: 0;
47
+ overflow-wrap: break-word;
43
48
  }
44
49
 
45
50
  :where(.marvin-privacy__notice, .marvin-privacy__reviewed) {
46
51
  color: var(--marvin-privacy-muted, color-mix(in srgb, currentColor 75%, transparent));
47
52
  }
48
53
 
54
+ :where(.marvin-privacy__table-wrap) {
55
+ /* Safety net: if a table still cannot fit (many columns in a narrow column, a long URL in a
56
+ purpose cell) it scrolls inside its own box instead of stretching the page. */
57
+ max-width: 100%;
58
+ overflow-x: auto;
59
+ }
60
+
49
61
  :where(.marvin-privacy__table) {
50
62
  width: 100%;
51
63
  border-collapse: collapse;
@@ -69,6 +81,15 @@
69
81
  padding: var(--marvin-privacy-pad, 0.5rem 0.75rem);
70
82
  border-bottom: 1px solid var(--marvin-privacy-border, color-mix(in srgb, currentColor 20%, transparent));
71
83
  vertical-align: top;
84
+ /* Ordinary words wrap at normal break points. `break-word` (unlike `anywhere`) does not shrink a
85
+ column's min-content width, so a narrow column never splits a word that could sit on its own
86
+ line. Only an unbreakable token wider than its cell is broken, below. */
87
+ overflow-wrap: break-word;
88
+ }
89
+
90
+ /* Long unbreakable tokens (cookie names such as _ga_XXXXXXXX, addresses) may break anywhere, and
91
+ `anywhere` lets their column shrink so the table stays inside its container. */
92
+ :where(.marvin-privacy__table code, .marvin-privacy__table a[href^="mailto:"], .marvin-privacy__facts a[href^="mailto:"]) {
72
93
  overflow-wrap: anywhere;
73
94
  }
74
95
 
@@ -93,6 +114,12 @@
93
114
  display: block;
94
115
  }
95
116
 
117
+ /* The caption is otherwise sized as a shrink-to-fit table-caption and wraps in a sliver. */
118
+ :where(.marvin-privacy__table caption) {
119
+ display: block;
120
+ width: 100%;
121
+ }
122
+
96
123
  :where(.marvin-privacy__table thead) {
97
124
  position: absolute;
98
125
  width: 1px;