@refrakt-md/lumina 0.24.4 → 0.24.6

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,7 +1,7 @@
1
1
  {
2
2
  "name": "@refrakt-md/lumina",
3
3
  "description": "Lumina theme for refrakt.md — design tokens, CSS, identity transform, and layout configs",
4
- "version": "0.24.4",
4
+ "version": "0.24.6",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
7
  "repository": {
@@ -84,10 +84,10 @@
84
84
  "generate-tokens": "node scripts/generate-tokens.mjs"
85
85
  },
86
86
  "dependencies": {
87
- "@refrakt-md/runes": "0.24.4",
88
- "@refrakt-md/skeleton": "0.24.4",
89
- "@refrakt-md/transform": "0.24.4",
90
- "@refrakt-md/types": "0.24.4"
87
+ "@refrakt-md/runes": "0.24.6",
88
+ "@refrakt-md/skeleton": "0.24.6",
89
+ "@refrakt-md/transform": "0.24.6",
90
+ "@refrakt-md/types": "0.24.6"
91
91
  },
92
92
  "devDependencies": {
93
93
  "postcss": "^8.4.0"
@@ -118,4 +118,26 @@
118
118
  * reads consistently from desktop to mobile. For self-target (showcase) the
119
119
  * negative-margin spill stays on too — that's the intended breakout. */
120
120
 
121
+ /* ── frame-overflow="bleed" (SPEC-116) ───────────────────────────────────
122
+ * The host declares the policy (`data-frame-overflow="bleed"` on its media
123
+ * zone, a bleed host only); the guest signals the fact (`data-overflowing`,
124
+ * set by its runtime when its content is wider than the frame). When both
125
+ * hold on a narrow viewport, run the guest's inline-end out to the layout
126
+ * edge and square those corners, so an overflowing component reads as cropped
127
+ * by the screen instead of clipped at the rounded inset edge.
128
+ *
129
+ * The reach is a LAYOUT-OWNED inset (`--rf-bleed-room-end`, default the page
130
+ * gutter — never the raw viewport, so a chrome'd layout like docs can cap it
131
+ * at the content row). v1 is inline-end only; direction (via frame-anchor) and
132
+ * side-by-side are deferred. The host media zone is already `overflow: visible`
133
+ * for a rune guest (the bleed-host guestFit rule), so the guest can spill. */
134
+ @media (max-width: 640px) {
135
+ [data-frame-overflow="bleed"] > [data-overflowing] {
136
+ width: calc(100% + var(--rf-bleed-room-end, var(--rf-content-gutter, 1.5rem)));
137
+ max-width: none;
138
+ border-start-end-radius: 0;
139
+ border-end-end-radius: 0;
140
+ }
141
+ }
142
+
121
143
  }
@@ -137,7 +137,9 @@
137
137
  @media (max-width: 768px) {
138
138
  .rf-search-trigger {
139
139
  padding: 0.375rem;
140
- border-radius: var(--rf-radius-sm);
140
+ /* Collapsed to an icon-only button — keep it fully rounded so it reads
141
+ * as a circle matching the adjacent theme toggle, not a small square. */
142
+ border-radius: var(--rf-radius-full);
141
143
  }
142
144
  .rf-search-dialog[open] {
143
145
  border-radius: 0;
@@ -4,19 +4,22 @@
4
4
  * Layout chrome — a peer of the search trigger, placed in the header/toolbar.
5
5
  * The `theme-toggle` behavior cycles auto → light → dark and reflects the
6
6
  * current preference onto the button as `data-theme-pref`; the icon below
7
- * tracks that. Ported verbatim from the former `ThemeToggle.svelte` so the
8
- * look is unchanged, with the icon selector rekeyed from a swapped class to
9
- * the `data-theme-pref` attribute. */
7
+ * tracks that, with the icon selector keyed to the `data-theme-pref`
8
+ * attribute. Chrome (surface fill, full radius, muted colour, primary hover
9
+ * accent) is kept in sync with the search trigger so the two header buttons
10
+ * read as a matched set. */
10
11
  .rf-theme-toggle {
11
12
  padding: 0;
12
13
  border: 1px solid var(--rf-color-border);
13
- border-radius: var(--rf-radius-md);
14
- background: transparent;
15
- color: var(--rf-color-text);
14
+ border-radius: var(--rf-radius-full);
15
+ background: var(--rf-color-surface);
16
+ color: var(--rf-color-muted);
16
17
  cursor: pointer;
17
- transition: background-color 120ms ease, border-color 120ms ease;
18
+ transition: border-color 0.15s, color 0.15s, background 0.15s;
18
19
  }
19
20
  .rf-theme-toggle:hover {
21
+ border-color: var(--rf-color-primary);
22
+ color: var(--rf-color-text);
20
23
  background: var(--rf-color-surface-hover);
21
24
  }
22
25
  .rf-theme-toggle:focus-visible {