@byline/admin 6.10.1 → 6.11.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 (103) hide show
  1. package/dist/fields/array/array-field_module.css +57 -53
  2. package/dist/fields/blocks/blocks-field_module.css +134 -130
  3. package/dist/fields/checkbox/checkbox-field_module.css +6 -2
  4. package/dist/fields/code/code-field_module.css +57 -53
  5. package/dist/fields/datetime/datetime-field_module.css +6 -2
  6. package/dist/fields/draggable-context-menu_module.css +77 -73
  7. package/dist/fields/field-renderer_module.css +12 -8
  8. package/dist/fields/file/file-field_module.css +133 -129
  9. package/dist/fields/file/file-upload-field_module.css +67 -63
  10. package/dist/fields/group/group-field_module.css +25 -21
  11. package/dist/fields/image/image-field_module.css +123 -119
  12. package/dist/fields/image/image-upload-field_module.css +81 -77
  13. package/dist/fields/locale-badge_module.css +28 -24
  14. package/dist/fields/relation/relation-display_module.css +20 -16
  15. package/dist/fields/relation/relation-field_module.css +149 -145
  16. package/dist/fields/relation/relation-picker_module.css +187 -183
  17. package/dist/fields/relation/relation-summary_module.css +34 -30
  18. package/dist/fields/select/select-field_module.css +9 -5
  19. package/dist/fields/sortable-item_module.css +126 -122
  20. package/dist/fields/text/text-field_module.css +8 -4
  21. package/dist/fields/text-area/text-area-field_module.css +8 -4
  22. package/dist/forms/available-locales-widget_module.css +19 -15
  23. package/dist/forms/document-actions_module.css +120 -116
  24. package/dist/forms/form-renderer_module.css +247 -243
  25. package/dist/forms/path-widget_module.css +29 -25
  26. package/dist/forms/scheduled-publication-control_module.css +76 -72
  27. package/dist/forms/tree-placement-widget_module.css +61 -57
  28. package/dist/modules/admin-account/components/change-password_module.css +26 -22
  29. package/dist/modules/admin-account/components/container_module.css +93 -89
  30. package/dist/modules/admin-account/components/preferences_module.css +37 -33
  31. package/dist/modules/admin-account/components/theme-switch_module.css +16 -12
  32. package/dist/modules/admin-account/components/update_module.css +26 -22
  33. package/dist/modules/admin-permissions/components/inspector_module.css +197 -193
  34. package/dist/modules/admin-roles/components/create_module.css +26 -22
  35. package/dist/modules/admin-roles/components/permissions_module.css +159 -155
  36. package/dist/modules/admin-roles/components/update_module.css +26 -22
  37. package/dist/modules/admin-users/components/create_module.css +39 -35
  38. package/dist/modules/admin-users/components/roles_module.css +65 -61
  39. package/dist/modules/admin-users/components/set-password_module.css +29 -25
  40. package/dist/modules/admin-users/components/update_module.css +32 -28
  41. package/dist/modules/analytics/components/dashboard_module.css +268 -264
  42. package/dist/modules/analytics/components/timeseries_module.css +192 -188
  43. package/dist/modules/auth/components/passkey-manager_module.css +87 -83
  44. package/dist/modules/auth/components/sign-in-form_module.css +68 -64
  45. package/dist/presentation/group_module.css +19 -15
  46. package/dist/presentation/row_module.css +17 -13
  47. package/dist/presentation/tabs_module.css +231 -227
  48. package/dist/widgets/diff-viewer/diff-modal_module.css +58 -54
  49. package/dist/widgets/source-locale-badge/source-locale-badge_module.css +12 -8
  50. package/dist/widgets/status-badge/status-badge_module.css +20 -16
  51. package/package.json +9 -8
  52. package/src/fields/array/array-field.module.css +71 -55
  53. package/src/fields/blocks/blocks-field.module.css +173 -156
  54. package/src/fields/checkbox/checkbox-field.module.css +17 -3
  55. package/src/fields/code/code-editor.tsx +2 -0
  56. package/src/fields/code/code-field.module.css +75 -59
  57. package/src/fields/datetime/datetime-field.module.css +19 -3
  58. package/src/fields/draggable-context-menu.module.css +108 -92
  59. package/src/fields/field-renderer.module.css +26 -10
  60. package/src/fields/file/file-field.module.css +147 -131
  61. package/src/fields/file/file-upload-field.module.css +91 -75
  62. package/src/fields/group/group-field.module.css +42 -26
  63. package/src/fields/image/image-field.module.css +152 -136
  64. package/src/fields/image/image-upload-field.module.css +107 -91
  65. package/src/fields/locale-badge.module.css +43 -27
  66. package/src/fields/relation/relation-display.module.css +37 -21
  67. package/src/fields/relation/relation-field.module.css +168 -152
  68. package/src/fields/relation/relation-picker.module.css +207 -191
  69. package/src/fields/relation/relation-summary.module.css +52 -36
  70. package/src/fields/select/select-field.module.css +23 -7
  71. package/src/fields/sortable-item.module.css +143 -127
  72. package/src/fields/text/text-field.module.css +21 -5
  73. package/src/fields/text-area/text-area-field.module.css +21 -5
  74. package/src/forms/available-locales-widget.module.css +39 -23
  75. package/src/forms/document-actions.module.css +139 -123
  76. package/src/forms/form-layout-styles.test.node.ts +12 -4
  77. package/src/forms/form-renderer.module.css +312 -296
  78. package/src/forms/path-widget.module.css +44 -28
  79. package/src/forms/scheduled-publication-control.module.css +104 -91
  80. package/src/forms/tree-placement-widget.module.css +80 -64
  81. package/src/modules/admin-account/components/change-password.module.css +42 -26
  82. package/src/modules/admin-account/components/container.module.css +129 -113
  83. package/src/modules/admin-account/components/preferences.module.css +56 -40
  84. package/src/modules/admin-account/components/theme-switch.module.css +32 -16
  85. package/src/modules/admin-account/components/update.module.css +42 -26
  86. package/src/modules/admin-permissions/components/inspector.module.css +255 -239
  87. package/src/modules/admin-roles/components/create.module.css +42 -26
  88. package/src/modules/admin-roles/components/permissions.module.css +204 -201
  89. package/src/modules/admin-roles/components/update.module.css +42 -26
  90. package/src/modules/admin-users/components/create.module.css +58 -42
  91. package/src/modules/admin-users/components/roles.module.css +96 -86
  92. package/src/modules/admin-users/components/set-password.module.css +46 -30
  93. package/src/modules/admin-users/components/update.module.css +49 -33
  94. package/src/modules/analytics/components/dashboard.module.css +322 -306
  95. package/src/modules/analytics/components/timeseries.module.css +237 -221
  96. package/src/modules/auth/components/passkey-manager.module.css +98 -84
  97. package/src/modules/auth/components/sign-in-form.module.css +85 -69
  98. package/src/presentation/group.module.css +36 -20
  99. package/src/presentation/row.module.css +32 -16
  100. package/src/presentation/tabs.module.css +243 -227
  101. package/src/widgets/diff-viewer/diff-modal.module.css +71 -55
  102. package/src/widgets/source-locale-badge/source-locale-badge.module.css +25 -9
  103. package/src/widgets/status-badge/status-badge.module.css +35 -19
@@ -1,3 +1,17 @@
1
+ @layer base,
2
+ byline-base,
3
+ theme,
4
+ byline-theme,
5
+ byline-functional,
6
+ byline-typography,
7
+ components,
8
+ byline-components,
9
+ overrides,
10
+ byline-utilities,
11
+ utilities;
12
+
13
+ @layer byline-components.primitives, byline-components.cms;
14
+
1
15
  /**
2
16
  * Tabs — navigation bar for admin form layouts.
3
17
  *
@@ -21,285 +35,287 @@
21
35
  * .byline-admin-tabs-overflow-item — each menu item
22
36
  */
23
37
 
24
- .tabs,
25
- :global(.byline-admin-tabs) {
26
- position: relative;
27
- display: flex;
28
- align-items: stretch;
29
- gap: var(--byline-admin-tabs-trigger-gap, 12px);
30
- }
38
+ @layer byline-components.cms {
39
+ .tabs,
40
+ :global(.byline-admin-tabs) {
41
+ position: relative;
42
+ display: flex;
43
+ align-items: stretch;
44
+ gap: var(--byline-admin-tabs-trigger-gap, 12px);
45
+ }
31
46
 
32
- /* The strip's hairline, drawn as a pseudo-element rather than a border so it
47
+ /* The strip's hairline, drawn as a pseudo-element rather than a border so it
33
48
  spans the viewport and the trigger together and so the active tab's 2px
34
49
  underline can paint over it. */
35
- .tabs::after,
36
- :global(.byline-admin-tabs)::after {
37
- content: "";
38
- position: absolute;
39
- right: 0;
40
- bottom: 0;
41
- left: 0;
42
- z-index: 0;
43
- height: var(--border-width-thin);
44
- background-color: var(--gray-200);
45
- }
50
+ .tabs::after,
51
+ :global(.byline-admin-tabs)::after {
52
+ content: "";
53
+ position: absolute;
54
+ right: 0;
55
+ bottom: 0;
56
+ left: 0;
57
+ z-index: 0;
58
+ height: var(--border-width-thin);
59
+ background-color: var(--gray-200);
60
+ }
46
61
 
47
- .viewport,
48
- :global(.byline-admin-tabs-viewport) {
49
- position: relative;
50
- z-index: 1;
51
- flex: 1 1 auto;
52
- /* A flex item refuses to shrink below its content's min-content width
62
+ .viewport,
63
+ :global(.byline-admin-tabs-viewport) {
64
+ position: relative;
65
+ z-index: 1;
66
+ flex: 1 1 auto;
67
+ /* A flex item refuses to shrink below its content's min-content width
53
68
  unless told otherwise, which would push the row past the column instead
54
69
  of scrolling it. */
55
- min-width: 0;
56
- overflow-x: auto;
57
- overflow-y: hidden;
58
- /* Stops a horizontal flick or trackpad swipe at either end of the strip
70
+ min-width: 0;
71
+ overflow-x: auto;
72
+ overflow-y: hidden;
73
+ /* Stops a horizontal flick or trackpad swipe at either end of the strip
59
74
  from chaining into the browser's back/forward navigation. */
60
- overscroll-behavior-x: contain;
61
- scrollbar-width: none;
62
- }
75
+ overscroll-behavior-x: contain;
76
+ scrollbar-width: none;
77
+ }
63
78
 
64
- .viewport::-webkit-scrollbar,
65
- :global(.byline-admin-tabs-viewport)::-webkit-scrollbar {
66
- display: none;
67
- }
79
+ .viewport::-webkit-scrollbar,
80
+ :global(.byline-admin-tabs-viewport)::-webkit-scrollbar {
81
+ display: none;
82
+ }
68
83
 
69
- /* Drag-to-scroll affordance. Only an overflowing strip has anywhere to go, so
84
+ /* Drag-to-scroll affordance. Only an overflowing strip has anywhere to go, so
70
85
  only an overflowing strip offers the grab cursor. The tabs keep their own
71
86
  pointer cursor, so they still read as clickable. */
72
- .viewport[data-draggable="true"],
73
- :global(.byline-admin-tabs-viewport)[data-draggable="true"] {
74
- cursor: grab;
75
- }
87
+ .viewport[data-draggable="true"],
88
+ :global(.byline-admin-tabs-viewport)[data-draggable="true"] {
89
+ cursor: grab;
90
+ }
76
91
 
77
- .viewport[data-dragging="true"],
78
- :global(.byline-admin-tabs-viewport)[data-dragging="true"] {
79
- cursor: grabbing;
80
- /* Suppress text selection for the duration: without this a drag across the
92
+ .viewport[data-dragging="true"],
93
+ :global(.byline-admin-tabs-viewport)[data-dragging="true"] {
94
+ cursor: grabbing;
95
+ /* Suppress text selection for the duration: without this a drag across the
81
96
  labels selects them, and the selection highlight follows the pointer. */
82
- user-select: none;
83
- -webkit-user-select: none;
84
- }
97
+ user-select: none;
98
+ -webkit-user-select: none;
99
+ }
85
100
 
86
- .viewport[data-dragging="true"] :global(.byline-admin-tab),
87
- :global(.byline-admin-tabs-viewport)[data-dragging="true"] :global(.byline-admin-tab) {
88
- cursor: grabbing;
89
- }
101
+ .viewport[data-dragging="true"] :global(.byline-admin-tab),
102
+ :global(.byline-admin-tabs-viewport)[data-dragging="true"] :global(.byline-admin-tab) {
103
+ cursor: grabbing;
104
+ }
90
105
 
91
- /* Edge fades, applied as a mask so they neither scroll with the content nor
106
+ /* Edge fades, applied as a mask so they neither scroll with the content nor
92
107
  need elements of their own. Each side is sized to zero unless that edge has
93
108
  something beyond it, which tabs.tsx reports via the data attributes. */
94
- .viewport,
95
- :global(.byline-admin-tabs-viewport) {
96
- --fade-start: 0px;
97
- --fade-end: 0px;
98
- -webkit-mask-image: linear-gradient(
99
- to right,
100
- transparent 0,
101
- black var(--fade-start),
102
- black calc(100% - var(--fade-end)),
103
- transparent 100%
104
- );
105
- mask-image: linear-gradient(
106
- to right,
107
- transparent 0,
108
- black var(--fade-start),
109
- black calc(100% - var(--fade-end)),
110
- transparent 100%
111
- );
112
- }
109
+ .viewport,
110
+ :global(.byline-admin-tabs-viewport) {
111
+ --fade-start: 0px;
112
+ --fade-end: 0px;
113
+ -webkit-mask-image: linear-gradient(
114
+ to right,
115
+ transparent 0,
116
+ black var(--fade-start),
117
+ black calc(100% - var(--fade-end)),
118
+ transparent 100%
119
+ );
120
+ mask-image: linear-gradient(
121
+ to right,
122
+ transparent 0,
123
+ black var(--fade-start),
124
+ black calc(100% - var(--fade-end)),
125
+ transparent 100%
126
+ );
127
+ }
113
128
 
114
- .viewport[data-at-start="false"],
115
- :global(.byline-admin-tabs-viewport)[data-at-start="false"] {
116
- --fade-start: 1.5rem;
117
- }
129
+ .viewport[data-at-start="false"],
130
+ :global(.byline-admin-tabs-viewport)[data-at-start="false"] {
131
+ --fade-start: 1.5rem;
132
+ }
118
133
 
119
- .viewport[data-at-end="false"],
120
- :global(.byline-admin-tabs-viewport)[data-at-end="false"] {
121
- --fade-end: 1.5rem;
122
- }
134
+ .viewport[data-at-end="false"],
135
+ :global(.byline-admin-tabs-viewport)[data-at-end="false"] {
136
+ --fade-end: 1.5rem;
137
+ }
123
138
 
124
- .tablist,
125
- :global(.byline-admin-tablist) {
126
- /* `max-content` keeps the row at its intrinsic width whatever the viewport
139
+ .tablist,
140
+ :global(.byline-admin-tablist) {
141
+ /* `max-content` keeps the row at its intrinsic width whatever the viewport
127
142
  is doing. A row that shrank to fit would report the viewport's width back
128
143
  to the overflow geometry, which could then never detect overflow. It also
129
144
  makes the row the offset parent the reveal arithmetic measures against. */
130
- position: relative;
131
- display: flex;
132
- width: max-content;
133
- gap: var(--spacing-16);
134
- }
135
-
136
- .tab,
137
- :global(.byline-admin-tab) {
138
- position: relative;
139
- flex: none;
140
- padding: 0.625rem 0;
141
- border-bottom: 2px solid transparent;
142
- background: none;
143
- color: var(--gray-500);
144
- font-size: 1.1rem;
145
- font-weight: var(--font-weight-medium);
146
- white-space: nowrap;
147
- cursor: pointer;
148
- transition:
149
- color 150ms ease,
150
- border-color 150ms ease;
151
- outline: none;
152
- }
153
-
154
- .tab:hover,
155
- :global(.byline-admin-tab):hover {
156
- color: var(--gray-800);
157
- border-bottom-color: var(--gray-300);
158
- }
159
-
160
- /* An inset ring rather than an outset one: the viewport clips overflow, and an
161
- outset focus ring on the first or last tab would be cut in half. */
162
- .tab:focus-visible,
163
- :global(.byline-admin-tab):focus-visible {
164
- box-shadow: inset 0 0 0 2px var(--blue-500);
165
- border-radius: var(--radius-sm, 3px);
166
- }
167
-
168
- .tab-active,
169
- :global(.byline-admin-tab-active) {
170
- color: var(--primary-600);
171
- border-bottom-color: var(--primary-400);
172
- }
173
-
174
- .tab-active:hover,
175
- :global(.byline-admin-tab-active):hover {
176
- color: var(--primary-600);
177
- border-bottom-color: var(--primary-400);
178
- }
179
-
180
- .label,
181
- :global(.byline-admin-tab-label) {
182
- display: flex;
183
- align-items: center;
184
- gap: 0.375rem;
185
- }
186
-
187
- .badge,
188
- :global(.byline-admin-tab-badge) {
189
- display: flex;
190
- align-items: center;
191
- justify-content: center;
192
- min-width: 1.25rem;
193
- height: 1.25rem;
194
- padding: 0 0.375rem;
195
- font-size: 0.7rem;
196
- }
197
-
198
- .overflow-trigger,
199
- :global(.byline-admin-tabs-overflow-trigger) {
200
- position: relative;
201
- z-index: 1;
202
- flex: none;
203
- align-self: center;
204
- display: flex;
205
- align-items: center;
206
- justify-content: center;
207
- width: var(--byline-admin-tabs-trigger-size, 32px);
208
- height: var(--byline-admin-tabs-trigger-size, 32px);
209
- padding: 0;
210
- border: var(--border-width-thin) var(--border-style-solid) transparent;
211
- border-radius: var(--radius-sm, 3px);
212
- background: none;
213
- color: var(--gray-500);
214
- cursor: pointer;
215
- transition:
216
- color 150ms ease,
217
- background-color 150ms ease;
218
- }
219
-
220
- .overflow-trigger:hover,
221
- :global(.byline-admin-tabs-overflow-trigger):hover {
222
- color: var(--gray-800);
223
- background-color: var(--gray-100);
224
- }
225
-
226
- .overflow-trigger:focus-visible,
227
- :global(.byline-admin-tabs-overflow-trigger):focus-visible {
228
- outline: 2px solid var(--blue-500);
229
- outline-offset: 1px;
230
- }
231
-
232
- .overflow-icon,
233
- :global(.byline-admin-tabs-overflow-icon) {
234
- width: 1.125rem;
235
- height: 1.125rem;
236
- }
237
-
238
- .overflow-menu,
239
- :global(.byline-admin-tabs-overflow-menu) {
240
- min-width: 12rem;
241
- max-height: 60vh;
242
- overflow-y: auto;
243
- }
244
-
245
- .overflow-item,
246
- :global(.byline-admin-tabs-overflow-item) {
247
- display: flex;
248
- align-items: center;
249
- justify-content: space-between;
250
- gap: var(--spacing-8);
251
- }
252
-
253
- .overflow-item[data-active="true"],
254
- :global(.byline-admin-tabs-overflow-item)[data-active="true"] {
255
- color: var(--primary-600);
256
- font-weight: var(--font-weight-medium);
257
- }
258
-
259
- /* ─── Dark theme variants ───────────────────────────────────── */
260
-
261
- :is([data-theme="dark"], :global(.dark)) {
262
- .tabs::after,
263
- :global(.byline-admin-tabs)::after {
264
- background-color: var(--gray-700);
145
+ position: relative;
146
+ display: flex;
147
+ width: max-content;
148
+ gap: var(--spacing-16);
265
149
  }
266
150
 
267
151
  .tab,
268
152
  :global(.byline-admin-tab) {
269
- color: var(--gray-400);
153
+ position: relative;
154
+ flex: none;
155
+ padding: 0.625rem 0;
156
+ border-bottom: 2px solid transparent;
157
+ background: none;
158
+ color: var(--gray-500);
159
+ font-size: 1.1rem;
160
+ font-weight: var(--font-weight-medium);
161
+ white-space: nowrap;
162
+ cursor: pointer;
163
+ transition:
164
+ color 150ms ease,
165
+ border-color 150ms ease;
166
+ outline: none;
270
167
  }
271
168
 
272
169
  .tab:hover,
273
170
  :global(.byline-admin-tab):hover {
274
- color: var(--gray-200);
275
- border-bottom-color: var(--gray-600);
171
+ color: var(--gray-800);
172
+ border-bottom-color: var(--gray-300);
173
+ }
174
+
175
+ /* An inset ring rather than an outset one: the viewport clips overflow, and an
176
+ outset focus ring on the first or last tab would be cut in half. */
177
+ .tab:focus-visible,
178
+ :global(.byline-admin-tab):focus-visible {
179
+ box-shadow: inset 0 0 0 2px var(--blue-500);
180
+ border-radius: var(--radius-sm, 3px);
276
181
  }
277
182
 
278
183
  .tab-active,
279
184
  :global(.byline-admin-tab-active) {
280
- color: var(--primary-200);
185
+ color: var(--primary-600);
281
186
  border-bottom-color: var(--primary-400);
282
187
  }
283
188
 
284
189
  .tab-active:hover,
285
190
  :global(.byline-admin-tab-active):hover {
286
- color: var(--primary-200);
191
+ color: var(--primary-600);
287
192
  border-bottom-color: var(--primary-400);
288
193
  }
289
194
 
195
+ .label,
196
+ :global(.byline-admin-tab-label) {
197
+ display: flex;
198
+ align-items: center;
199
+ gap: 0.375rem;
200
+ }
201
+
202
+ .badge,
203
+ :global(.byline-admin-tab-badge) {
204
+ display: flex;
205
+ align-items: center;
206
+ justify-content: center;
207
+ min-width: 1.25rem;
208
+ height: 1.25rem;
209
+ padding: 0 0.375rem;
210
+ font-size: 0.7rem;
211
+ }
212
+
290
213
  .overflow-trigger,
291
214
  :global(.byline-admin-tabs-overflow-trigger) {
292
- color: var(--gray-400);
215
+ position: relative;
216
+ z-index: 1;
217
+ flex: none;
218
+ align-self: center;
219
+ display: flex;
220
+ align-items: center;
221
+ justify-content: center;
222
+ width: var(--byline-admin-tabs-trigger-size, 32px);
223
+ height: var(--byline-admin-tabs-trigger-size, 32px);
224
+ padding: 0;
225
+ border: var(--border-width-thin) var(--border-style-solid) transparent;
226
+ border-radius: var(--radius-sm, 3px);
227
+ background: none;
228
+ color: var(--gray-500);
229
+ cursor: pointer;
230
+ transition:
231
+ color 150ms ease,
232
+ background-color 150ms ease;
293
233
  }
294
234
 
295
235
  .overflow-trigger:hover,
296
236
  :global(.byline-admin-tabs-overflow-trigger):hover {
297
- color: var(--gray-200);
298
- background-color: var(--gray-800);
237
+ color: var(--gray-800);
238
+ background-color: var(--gray-100);
239
+ }
240
+
241
+ .overflow-trigger:focus-visible,
242
+ :global(.byline-admin-tabs-overflow-trigger):focus-visible {
243
+ outline: 2px solid var(--blue-500);
244
+ outline-offset: 1px;
245
+ }
246
+
247
+ .overflow-icon,
248
+ :global(.byline-admin-tabs-overflow-icon) {
249
+ width: 1.125rem;
250
+ height: 1.125rem;
251
+ }
252
+
253
+ .overflow-menu,
254
+ :global(.byline-admin-tabs-overflow-menu) {
255
+ min-width: 12rem;
256
+ max-height: 60vh;
257
+ overflow-y: auto;
258
+ }
259
+
260
+ .overflow-item,
261
+ :global(.byline-admin-tabs-overflow-item) {
262
+ display: flex;
263
+ align-items: center;
264
+ justify-content: space-between;
265
+ gap: var(--spacing-8);
299
266
  }
300
267
 
301
268
  .overflow-item[data-active="true"],
302
269
  :global(.byline-admin-tabs-overflow-item)[data-active="true"] {
303
- color: var(--primary-200);
270
+ color: var(--primary-600);
271
+ font-weight: var(--font-weight-medium);
272
+ }
273
+
274
+ /* ─── Dark theme variants ───────────────────────────────────── */
275
+
276
+ :is([data-theme="dark"], :global(.dark)) {
277
+ .tabs::after,
278
+ :global(.byline-admin-tabs)::after {
279
+ background-color: var(--gray-700);
280
+ }
281
+
282
+ .tab,
283
+ :global(.byline-admin-tab) {
284
+ color: var(--gray-400);
285
+ }
286
+
287
+ .tab:hover,
288
+ :global(.byline-admin-tab):hover {
289
+ color: var(--gray-200);
290
+ border-bottom-color: var(--gray-600);
291
+ }
292
+
293
+ .tab-active,
294
+ :global(.byline-admin-tab-active) {
295
+ color: var(--primary-200);
296
+ border-bottom-color: var(--primary-400);
297
+ }
298
+
299
+ .tab-active:hover,
300
+ :global(.byline-admin-tab-active):hover {
301
+ color: var(--primary-200);
302
+ border-bottom-color: var(--primary-400);
303
+ }
304
+
305
+ .overflow-trigger,
306
+ :global(.byline-admin-tabs-overflow-trigger) {
307
+ color: var(--gray-400);
308
+ }
309
+
310
+ .overflow-trigger:hover,
311
+ :global(.byline-admin-tabs-overflow-trigger):hover {
312
+ color: var(--gray-200);
313
+ background-color: var(--gray-800);
314
+ }
315
+
316
+ .overflow-item[data-active="true"],
317
+ :global(.byline-admin-tabs-overflow-item)[data-active="true"] {
318
+ color: var(--primary-200);
319
+ }
304
320
  }
305
321
  }
@@ -1,3 +1,17 @@
1
+ @layer base,
2
+ byline-base,
3
+ theme,
4
+ byline-theme,
5
+ byline-functional,
6
+ byline-typography,
7
+ components,
8
+ byline-components,
9
+ overrides,
10
+ byline-utilities,
11
+ utilities;
12
+
13
+ @layer byline-components.primitives, byline-components.cms;
14
+
1
15
  /**
2
16
  * DiffModal — side-by-side document version comparison modal.
3
17
  *
@@ -13,67 +27,69 @@
13
27
  * .byline-diff-modal-viewer — diff viewer wrapper
14
28
  */
15
29
 
16
- .header,
17
- :global(.byline-diff-modal-header) {
18
- padding-top: var(--spacing-16);
19
- margin-bottom: var(--spacing-8);
20
- flex-shrink: 0;
21
- }
30
+ @layer byline-components.cms {
31
+ .header,
32
+ :global(.byline-diff-modal-header) {
33
+ padding-top: var(--spacing-16);
34
+ margin-bottom: var(--spacing-8);
35
+ flex-shrink: 0;
36
+ }
22
37
 
23
- .title-stack,
24
- :global(.byline-diff-modal-title-stack) {
25
- display: flex;
26
- flex-direction: column;
27
- }
38
+ .title-stack,
39
+ :global(.byline-diff-modal-title-stack) {
40
+ display: flex;
41
+ flex-direction: column;
42
+ }
28
43
 
29
- .title,
30
- :global(.byline-diff-modal-title) {
31
- margin: 0;
32
- font-size: var(--font-size-xl);
33
- }
44
+ .title,
45
+ :global(.byline-diff-modal-title) {
46
+ margin: 0;
47
+ font-size: var(--font-size-xl);
48
+ }
34
49
 
35
- .subtitle,
36
- :global(.byline-diff-modal-subtitle) {
37
- margin: 0;
38
- font-size: var(--font-size-sm);
39
- color: var(--gray-400);
40
- }
50
+ .subtitle,
51
+ :global(.byline-diff-modal-subtitle) {
52
+ margin: 0;
53
+ font-size: var(--font-size-sm);
54
+ color: var(--gray-400);
55
+ }
41
56
 
42
- .version,
43
- :global(.byline-diff-modal-version) {
44
- font-family: var(--font-family-mono);
45
- font-size: var(--font-size-xs);
46
- background-color: var(--canvas-700);
47
- padding: 0 var(--spacing-4);
48
- border-radius: var(--border-radius-sm);
49
- }
57
+ .version,
58
+ :global(.byline-diff-modal-version) {
59
+ font-family: var(--font-family-mono);
60
+ font-size: var(--font-size-xs);
61
+ background-color: var(--canvas-700);
62
+ padding: 0 var(--spacing-4);
63
+ border-radius: var(--border-radius-sm);
64
+ }
50
65
 
51
- .content,
52
- :global(.byline-diff-modal-content) {
53
- flex: 1 1 0;
54
- overflow: auto;
55
- padding: 0;
56
- min-height: 0;
57
- }
66
+ .content,
67
+ :global(.byline-diff-modal-content) {
68
+ flex: 1 1 0;
69
+ overflow: auto;
70
+ padding: 0;
71
+ min-height: 0;
72
+ }
58
73
 
59
- .state,
60
- :global(.byline-diff-modal-state) {
61
- display: flex;
62
- align-items: center;
63
- justify-content: center;
64
- height: 100%;
65
- gap: var(--spacing-12);
66
- color: var(--gray-400);
67
- }
74
+ .state,
75
+ :global(.byline-diff-modal-state) {
76
+ display: flex;
77
+ align-items: center;
78
+ justify-content: center;
79
+ height: 100%;
80
+ gap: var(--spacing-12);
81
+ color: var(--gray-400);
82
+ }
68
83
 
69
- .error,
70
- :global(.byline-diff-modal-error) {
71
- color: var(--red-400);
72
- gap: 0;
73
- }
84
+ .error,
85
+ :global(.byline-diff-modal-error) {
86
+ color: var(--red-400);
87
+ gap: 0;
88
+ }
74
89
 
75
- .viewer,
76
- :global(.byline-diff-modal-viewer) {
77
- font-family: var(--font-family-mono);
78
- font-size: var(--font-size-sm);
90
+ .viewer,
91
+ :global(.byline-diff-modal-viewer) {
92
+ font-family: var(--font-family-mono);
93
+ font-size: var(--font-size-sm);
94
+ }
79
95
  }