@refrakt-md/lumina 0.33.0 → 0.35.0

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 (142) hide show
  1. package/base.css +29 -29
  2. package/contracts/structures.json +623 -0
  3. package/dist/config.d.ts.map +1 -1
  4. package/dist/config.js.map +1 -1
  5. package/dist/icons.d.ts.map +1 -1
  6. package/dist/icons.js +57 -57
  7. package/dist/icons.js.map +1 -1
  8. package/dist/presets/catppuccin.js.map +1 -1
  9. package/dist/presets/dracula.js.map +1 -1
  10. package/dist/presets/gruvbox.js.map +1 -1
  11. package/dist/presets/niwaki.js.map +1 -1
  12. package/dist/presets/nord.js.map +1 -1
  13. package/dist/presets/one-dark.js.map +1 -1
  14. package/dist/presets/solarized.js.map +1 -1
  15. package/dist/presets/tideline.d.ts.map +1 -1
  16. package/dist/presets/tideline.js +20 -4
  17. package/dist/presets/tideline.js.map +1 -1
  18. package/dist/presets/tokyo-night.js.map +1 -1
  19. package/dist/tokens.js.map +1 -1
  20. package/index.css +124 -124
  21. package/package.json +5 -5
  22. package/presets.json +61 -13
  23. package/styles/base/attributes.css +32 -13
  24. package/styles/dimensions/checklist.css +45 -46
  25. package/styles/dimensions/cover.css +71 -51
  26. package/styles/dimensions/density.css +69 -65
  27. package/styles/dimensions/frame.css +116 -57
  28. package/styles/dimensions/metadata.css +110 -103
  29. package/styles/dimensions/motion.css +42 -13
  30. package/styles/dimensions/reading.css +27 -27
  31. package/styles/dimensions/sections.css +44 -45
  32. package/styles/dimensions/sequence.css +56 -57
  33. package/styles/dimensions/state.css +8 -2
  34. package/styles/dimensions/substrate.css +82 -58
  35. package/styles/dimensions/surfaces.css +65 -62
  36. package/styles/elements/blockquote.css +24 -25
  37. package/styles/elements/code.css +72 -71
  38. package/styles/elements/table.css +36 -37
  39. package/styles/global.css +163 -121
  40. package/styles/layouts/blog.css +219 -218
  41. package/styles/layouts/default.css +168 -167
  42. package/styles/layouts/docs.css +121 -122
  43. package/styles/layouts/mobile.css +54 -55
  44. package/styles/layouts/on-this-page.css +46 -47
  45. package/styles/layouts/plan.css +248 -247
  46. package/styles/layouts/search.css +142 -140
  47. package/styles/layouts/split.css +45 -45
  48. package/styles/layouts/theme-toggle.css +33 -31
  49. package/styles/layouts/version-switcher.css +38 -37
  50. package/styles/runes/accordion.css +90 -81
  51. package/styles/runes/aggregate.css +50 -39
  52. package/styles/runes/annotate.css +46 -45
  53. package/styles/runes/api.css +22 -23
  54. package/styles/runes/audio.css +140 -141
  55. package/styles/runes/badge.css +12 -13
  56. package/styles/runes/bar.css +4 -5
  57. package/styles/runes/bento.css +73 -62
  58. package/styles/runes/bg.css +62 -47
  59. package/styles/runes/blog.css +89 -90
  60. package/styles/runes/bond.css +49 -50
  61. package/styles/runes/breadcrumb.css +34 -35
  62. package/styles/runes/budget.css +126 -127
  63. package/styles/runes/bug.css +28 -27
  64. package/styles/runes/card.css +63 -60
  65. package/styles/runes/carousel.css +15 -15
  66. package/styles/runes/cast.css +50 -51
  67. package/styles/runes/changelog.css +45 -46
  68. package/styles/runes/character.css +31 -32
  69. package/styles/runes/chart.css +194 -106
  70. package/styles/runes/codegroup.css +109 -100
  71. package/styles/runes/collection.css +87 -86
  72. package/styles/runes/compare.css +38 -39
  73. package/styles/runes/comparison.css +205 -179
  74. package/styles/runes/conversation.css +36 -33
  75. package/styles/runes/cta.css +135 -132
  76. package/styles/runes/datatable.css +84 -83
  77. package/styles/runes/decision.css +25 -26
  78. package/styles/runes/design-context.css +21 -23
  79. package/styles/runes/details.css +26 -27
  80. package/styles/runes/diagram.css +28 -29
  81. package/styles/runes/diff.css +75 -72
  82. package/styles/runes/drawer.css +276 -198
  83. package/styles/runes/embed.css +20 -21
  84. package/styles/runes/event.css +35 -36
  85. package/styles/runes/expand.css +43 -34
  86. package/styles/runes/faction.css +47 -48
  87. package/styles/runes/feature.css +119 -112
  88. package/styles/runes/figure.css +11 -12
  89. package/styles/runes/file-ref.css +11 -13
  90. package/styles/runes/form.css +155 -154
  91. package/styles/runes/gallery.css +59 -60
  92. package/styles/runes/grid.css +10 -7
  93. package/styles/runes/hero.css +189 -185
  94. package/styles/runes/hint.css +57 -58
  95. package/styles/runes/howto.css +62 -64
  96. package/styles/runes/itinerary.css +133 -134
  97. package/styles/runes/juxtapose.css +83 -82
  98. package/styles/runes/lore.css +36 -34
  99. package/styles/runes/map.css +106 -99
  100. package/styles/runes/mediatext.css +30 -27
  101. package/styles/runes/milestone.css +98 -97
  102. package/styles/runes/mockup.css +338 -335
  103. package/styles/runes/nav.css +465 -450
  104. package/styles/runes/organization.css +23 -20
  105. package/styles/runes/page-section.css +14 -15
  106. package/styles/runes/pagination.css +45 -44
  107. package/styles/runes/palette.css +78 -80
  108. package/styles/runes/placeholder.css +8 -9
  109. package/styles/runes/plan-history.css +160 -161
  110. package/styles/runes/plan-progress.css +15 -16
  111. package/styles/runes/plan-ref.css +32 -23
  112. package/styles/runes/playlist.css +106 -107
  113. package/styles/runes/plot.css +96 -91
  114. package/styles/runes/preview.css +152 -149
  115. package/styles/runes/pricing.css +133 -123
  116. package/styles/runes/progress.css +32 -27
  117. package/styles/runes/pullquote.css +89 -90
  118. package/styles/runes/realm.css +47 -48
  119. package/styles/runes/recipe.css +112 -114
  120. package/styles/runes/relationships.css +77 -76
  121. package/styles/runes/reveal.css +90 -79
  122. package/styles/runes/sandbox.css +59 -60
  123. package/styles/runes/section.css +57 -50
  124. package/styles/runes/showcase.css +35 -16
  125. package/styles/runes/sidenote.css +30 -27
  126. package/styles/runes/snippet.css +8 -9
  127. package/styles/runes/spacing.css +86 -88
  128. package/styles/runes/spec.css +24 -25
  129. package/styles/runes/steps.css +89 -80
  130. package/styles/runes/storyboard.css +46 -45
  131. package/styles/runes/swatch.css +22 -23
  132. package/styles/runes/symbol.css +117 -118
  133. package/styles/runes/tabs.css +88 -79
  134. package/styles/runes/testimonial.css +43 -44
  135. package/styles/runes/textblock.css +32 -28
  136. package/styles/runes/timeline.css +63 -64
  137. package/styles/runes/tint.css +214 -215
  138. package/styles/runes/toc.css +40 -41
  139. package/styles/runes/track.css +89 -90
  140. package/styles/runes/typography.css +89 -91
  141. package/styles/runes/work.css +47 -36
  142. package/styles/runes/xref.css +21 -22
@@ -1,39 +1,38 @@
1
1
  @layer skin {
2
- /* Table wrapper */
3
- .rf-table-wrapper {
4
- overflow-x: auto;
5
- -webkit-overflow-scrolling: touch;
6
- margin: 1.5rem 0;
7
- }
8
- .rf-table-wrapper table {
9
- margin: 0;
10
- border-collapse: collapse;
11
- width: 100%;
12
- }
13
- .rf-table-wrapper th {
14
- white-space: nowrap;
15
- }
16
- .rf-table-wrapper td {
17
- white-space: nowrap;
18
- }
19
- .rf-table-wrapper td:last-child {
20
- white-space: normal;
21
- min-width: 20rem;
22
- }
23
- .rf-table-wrapper th:first-child,
24
- .rf-table-wrapper td:first-child {
25
- padding-left: 0;
26
- }
27
- .rf-table-wrapper th:last-child,
28
- .rf-table-wrapper td:last-child {
29
- padding-right: 0;
30
- }
31
- .rf-table-wrapper tr:last-child td {
32
- border-bottom: none;
33
- }
34
- .rf-table-wrapper th code,
35
- .rf-table-wrapper td code {
36
- font-size: 1em;
37
- }
38
-
2
+ /* Table wrapper */
3
+ .rf-table-wrapper {
4
+ overflow-x: auto;
5
+ -webkit-overflow-scrolling: touch;
6
+ margin: 1.5rem 0;
7
+ }
8
+ .rf-table-wrapper table {
9
+ margin: 0;
10
+ border-collapse: collapse;
11
+ width: 100%;
12
+ }
13
+ .rf-table-wrapper th {
14
+ white-space: nowrap;
15
+ }
16
+ .rf-table-wrapper td {
17
+ white-space: nowrap;
18
+ }
19
+ .rf-table-wrapper td:last-child {
20
+ white-space: normal;
21
+ min-width: 20rem;
22
+ }
23
+ .rf-table-wrapper th:first-child,
24
+ .rf-table-wrapper td:first-child {
25
+ padding-left: 0;
26
+ }
27
+ .rf-table-wrapper th:last-child,
28
+ .rf-table-wrapper td:last-child {
29
+ padding-right: 0;
30
+ }
31
+ .rf-table-wrapper tr:last-child td {
32
+ border-bottom: none;
33
+ }
34
+ .rf-table-wrapper th code,
35
+ .rf-table-wrapper td code {
36
+ font-size: 1em;
37
+ }
39
38
  }
package/styles/global.css CHANGED
@@ -1,5 +1,5 @@
1
1
  @layer skin {
2
- /* Lumina Theme — Global Base Styles (skin).
2
+ /* Lumina Theme — Global Base Styles (skin).
3
3
  *
4
4
  * Structure (box model, zone resets, prose/heading/list/table rhythm, the
5
5
  * responsive-image + scroll mechanisms) lives in @refrakt-md/skeleton
@@ -7,163 +7,205 @@
7
7
  * typography, colour, native chrome, and the surface treatment of code/pre/
8
8
  * tables. */
9
9
 
10
- html {
11
- font-family: var(--rf-font-sans);
12
- color: var(--rf-color-text);
13
- background: var(--rf-color-bg);
14
- line-height: var(--rf-leading-relaxed);
15
- -webkit-font-smoothing: antialiased;
16
- -moz-osx-font-smoothing: grayscale;
17
- -webkit-text-size-adjust: 100%;
18
- text-size-adjust: 100%;
19
- transition: background-color 200ms ease, color 200ms ease;
20
- /* Opt out of mobile Safari's "text inflation" — it auto-scales text
10
+ html {
11
+ font-family: var(--rf-font-sans);
12
+ color: var(--rf-color-text);
13
+ background: var(--rf-color-bg);
14
+ line-height: var(--rf-leading-relaxed);
15
+ -webkit-font-smoothing: antialiased;
16
+ -moz-osx-font-smoothing: grayscale;
17
+ -webkit-text-size-adjust: 100%;
18
+ text-size-adjust: 100%;
19
+ transition:
20
+ background-color 200ms ease,
21
+ color 200ms ease;
22
+ /* Opt out of mobile Safari's "text inflation" — it auto-scales text
21
23
  * inside elements wider than the viewport (e.g. the diff's
22
24
  * `min-width: 40rem` split panels and any horizontally-scrolling
23
25
  * code block) and makes their fonts read several pixels larger
24
26
  * than designed. */
25
- -webkit-text-size-adjust: 100%;
26
- text-size-adjust: 100%;
27
- }
27
+ -webkit-text-size-adjust: 100%;
28
+ text-size-adjust: 100%;
29
+ }
28
30
 
29
- /* ─── Theme-aware browser chrome (WORK-351) ─────────────────────────
31
+ /* ─── Theme-aware browser chrome (WORK-351) ─────────────────────────
30
32
  * Make native chrome — scrollbars, form controls, the main viewport
31
33
  * scrollbar — follow the active theme instead of always rendering in
32
34
  * the OS default scheme. */
33
35
 
34
- /* `color-scheme` so the UA paints native widgets/scrollbars per mode. */
35
- :root { color-scheme: light; }
36
- [data-theme="dark"] { color-scheme: dark; }
37
- @media (prefers-color-scheme: dark) {
38
- :root:not([data-theme="light"]) { color-scheme: dark; }
39
- }
36
+ /* `color-scheme` so the UA paints native widgets/scrollbars per mode. */
37
+ :root {
38
+ color-scheme: light;
39
+ }
40
+ [data-theme="dark"] {
41
+ color-scheme: dark;
42
+ }
43
+ @media (prefers-color-scheme: dark) {
44
+ :root:not([data-theme="light"]) {
45
+ color-scheme: dark;
46
+ }
47
+ }
40
48
 
41
- /* Branded text selection — a subtle primary wash (the native/OS blue
49
+ /* Branded text selection — a subtle primary wash (the native/OS blue
42
50
  * otherwise leaks through). Background only, so the element's own text
43
51
  * colour stays legible under any theme. */
44
- ::selection {
45
- background: color-mix(in oklch, var(--rf-color-primary) 22%, transparent);
46
- }
52
+ ::selection {
53
+ background: color-mix(in oklch, var(--rf-color-primary) 22%, transparent);
54
+ }
47
55
 
48
- /* Token-driven scrollbars. `scrollbar-color` / `scrollbar-width` inherit,
56
+ /* Token-driven scrollbars. `scrollbar-color` / `scrollbar-width` inherit,
49
57
  * so setting them on the root reaches every overflow container (codegroup,
50
58
  * datatable, drawer body, nav/sidebar) without per-rune rules; the WebKit
51
59
  * pseudo-elements refine the same colours. More specific per-container
52
60
  * rules (e.g. the hidden docs sidebar) still win. */
53
- :root {
54
- scrollbar-width: thin;
55
- scrollbar-color: var(--rf-color-muted) transparent;
56
- }
57
- ::-webkit-scrollbar { width: 10px; height: 10px; }
58
- ::-webkit-scrollbar-track { background: transparent; }
59
- ::-webkit-scrollbar-thumb {
60
- background: var(--rf-color-muted);
61
- border-radius: var(--rf-radius-full);
62
- border: 2px solid transparent;
63
- background-clip: padding-box;
64
- }
65
- ::-webkit-scrollbar-thumb:hover { background: var(--rf-color-text); }
61
+ :root {
62
+ scrollbar-width: thin;
63
+ scrollbar-color: var(--rf-color-muted) transparent;
64
+ }
65
+ ::-webkit-scrollbar {
66
+ width: 10px;
67
+ height: 10px;
68
+ }
69
+ ::-webkit-scrollbar-track {
70
+ background: transparent;
71
+ }
72
+ ::-webkit-scrollbar-thumb {
73
+ background: var(--rf-color-muted);
74
+ border-radius: var(--rf-radius-full);
75
+ border: 2px solid transparent;
76
+ background-clip: padding-box;
77
+ }
78
+ ::-webkit-scrollbar-thumb:hover {
79
+ background: var(--rf-color-text);
80
+ }
66
81
 
67
- /* ─── Keyboard focus (WORK-352) ─────────────────────────────────────
82
+ /* ─── Keyboard focus (WORK-352) ─────────────────────────────────────
68
83
  * A uniform, token-driven focus ring on every interactive element, at
69
84
  * zero specificity (`:where`) so a rune's own `:focus-visible` overrides
70
85
  * it. An outline (not box-shadow) follows border-radius and never shifts
71
86
  * layout; `outline-color` uses `primary`, so it is visible in both modes. */
72
- :where(
73
- a[href], button, input, select, textarea, summary,
74
- [tabindex]:not([tabindex="-1"]),
75
- [role="button"], [role="tab"], [role="link"], [role="menuitem"], [role="menuitemradio"]
76
- ):focus-visible {
77
- outline: 2px solid var(--rf-color-primary);
78
- outline-offset: 2px;
79
- }
87
+ :where(
88
+ a[href],
89
+ button,
90
+ input,
91
+ select,
92
+ textarea,
93
+ summary,
94
+ [tabindex]:not([tabindex="-1"]),
95
+ [role="button"],
96
+ [role="tab"],
97
+ [role="link"],
98
+ [role="menuitem"],
99
+ [role="menuitemradio"]
100
+ ):focus-visible {
101
+ outline: 2px solid var(--rf-color-primary);
102
+ outline-offset: 2px;
103
+ }
80
104
 
81
- /* ─── Reduced motion (WORK-352) ─────────────────────────────────────
105
+ /* ─── Reduced motion (WORK-352) ─────────────────────────────────────
82
106
  * Honour the user's motion preference across every animated rune
83
107
  * (chart, reveal, juxtapose, accordion, drawer, …) in one place. Uses a
84
108
  * near-zero duration rather than `none` so animation/transition end
85
109
  * events still fire for behaviours that await them. */
86
- @media (prefers-reduced-motion: reduce) {
87
- *, *::before, *::after {
88
- animation-duration: 0.01ms !important;
89
- animation-iteration-count: 1 !important;
90
- transition-duration: 0.01ms !important;
91
- scroll-behavior: auto !important;
110
+ @media (prefers-reduced-motion: reduce) {
111
+ *,
112
+ *::before,
113
+ *::after {
114
+ animation-duration: 0.01ms !important;
115
+ animation-iteration-count: 1 !important;
116
+ transition-duration: 0.01ms !important;
117
+ scroll-behavior: auto !important;
118
+ }
92
119
  }
93
- }
94
-
95
- h1, h2, h3, h4, h5, h6 {
96
- line-height: var(--rf-leading-tight);
97
- font-weight: var(--rf-weight-semibold);
98
- letter-spacing: var(--rf-tracking-tight);
99
- }
100
120
 
101
- h1 { font-size: var(--rf-text-3xl); font-weight: var(--rf-weight-bold); letter-spacing: var(--rf-tracking-tight); }
102
- h2 { font-size: var(--rf-text-2xl); }
103
- h3 { font-size: var(--rf-text-xl); }
104
- h4 { font-size: var(--rf-text); }
121
+ h1,
122
+ h2,
123
+ h3,
124
+ h4,
125
+ h5,
126
+ h6 {
127
+ line-height: var(--rf-leading-tight);
128
+ font-weight: var(--rf-weight-semibold);
129
+ letter-spacing: var(--rf-tracking-tight);
130
+ }
105
131
 
106
- a {
107
- color: var(--rf-color-primary);
108
- text-decoration: none;
109
- transition: color 150ms ease;
110
- }
111
- a:hover {
112
- color: var(--rf-color-primary-hover);
113
- text-decoration: underline;
114
- }
132
+ h1 {
133
+ font-size: var(--rf-text-3xl);
134
+ font-weight: var(--rf-weight-bold);
135
+ letter-spacing: var(--rf-tracking-tight);
136
+ }
137
+ h2 {
138
+ font-size: var(--rf-text-2xl);
139
+ }
140
+ h3 {
141
+ font-size: var(--rf-text-xl);
142
+ }
143
+ h4 {
144
+ font-size: var(--rf-text);
145
+ }
115
146
 
116
- strong { font-weight: var(--rf-weight-semibold); }
147
+ a {
148
+ color: var(--rf-color-primary);
149
+ text-decoration: none;
150
+ transition: color 150ms ease;
151
+ }
152
+ a:hover {
153
+ color: var(--rf-color-primary-hover);
154
+ text-decoration: underline;
155
+ }
117
156
 
118
- code {
119
- font-family: var(--rf-font-mono);
120
- font-size: 0.875em;
121
- background: var(--rf-color-inline-code-bg);
122
- padding: 0.15rem 0.4rem;
123
- border-radius: var(--rf-radius-sm);
124
- font-variant-ligatures: none;
125
- }
157
+ strong {
158
+ font-weight: var(--rf-weight-semibold);
159
+ }
126
160
 
127
- pre {
128
- background: var(--rf-color-code-bg);
129
- color: var(--rf-color-code-text);
130
- padding: 1.25rem 1.5rem;
131
- border-radius: var(--rf-radius-md);
132
- font-size: var(--rf-text-sm);
133
- line-height: var(--rf-leading-relaxed);
134
- border: 1px solid var(--rf-color-border);
135
- }
161
+ code {
162
+ font-family: var(--rf-font-mono);
163
+ font-size: 0.875em;
164
+ background: var(--rf-color-inline-code-bg);
165
+ padding: 0.15rem 0.4rem;
166
+ border-radius: var(--rf-radius-sm);
167
+ font-variant-ligatures: none;
168
+ }
136
169
 
137
- pre code {
138
- background: none;
139
- padding: 0;
140
- font-size: inherit;
141
- border-radius: 0;
142
- }
170
+ pre {
171
+ background: var(--rf-color-code-bg);
172
+ color: var(--rf-color-code-text);
173
+ padding: 1.25rem 1.5rem;
174
+ border-radius: var(--rf-radius-md);
175
+ font-size: var(--rf-text-sm);
176
+ line-height: var(--rf-leading-relaxed);
177
+ border: 1px solid var(--rf-color-border);
178
+ }
143
179
 
144
- hr {
145
- border: none;
146
- border-top: 1px solid var(--rf-color-border);
147
- }
180
+ pre code {
181
+ background: none;
182
+ padding: 0;
183
+ font-size: inherit;
184
+ border-radius: 0;
185
+ }
148
186
 
149
- table {
150
- font-size: var(--rf-text-sm);
151
- }
187
+ hr {
188
+ border: none;
189
+ border-top: 1px solid var(--rf-color-border);
190
+ }
152
191
 
153
- th {
154
- text-align: left;
155
- font-weight: var(--rf-weight-semibold);
156
- padding: 0.625rem 1rem;
157
- border-bottom: 1px solid var(--rf-color-border);
158
- font-size: var(--rf-text-xs);
159
- text-transform: uppercase;
160
- letter-spacing: var(--rf-tracking-wide);
161
- color: var(--rf-color-muted);
162
- }
192
+ table {
193
+ font-size: var(--rf-text-sm);
194
+ }
163
195
 
164
- td {
165
- padding: 0.625rem 1rem;
166
- border-bottom: 1px solid var(--rf-color-border);
167
- }
196
+ th {
197
+ text-align: left;
198
+ font-weight: var(--rf-weight-semibold);
199
+ padding: 0.625rem 1rem;
200
+ border-bottom: 1px solid var(--rf-color-border);
201
+ font-size: var(--rf-text-xs);
202
+ text-transform: uppercase;
203
+ letter-spacing: var(--rf-tracking-wide);
204
+ color: var(--rf-color-muted);
205
+ }
168
206
 
207
+ td {
208
+ padding: 0.625rem 1rem;
209
+ border-bottom: 1px solid var(--rf-color-border);
210
+ }
169
211
  }