@byline/admin 6.10.0 → 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
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@byline/admin",
3
3
  "private": false,
4
4
  "license": "MPL-2.0",
5
- "version": "6.10.0",
5
+ "version": "6.11.0",
6
6
  "engines": {
7
7
  "node": ">=22.22.2"
8
8
  },
@@ -169,12 +169,12 @@
169
169
  "src/"
170
170
  ],
171
171
  "dependencies": {
172
- "@byline/analytics": "6.10.0",
173
- "@byline/analytics-agent": "6.10.0",
174
- "@byline/auth": "6.10.0",
175
- "@byline/core": "6.10.0",
176
- "@byline/i18n": "6.10.0",
177
- "@byline/ui": "6.10.0",
172
+ "@byline/analytics": "6.11.0",
173
+ "@byline/analytics-agent": "6.11.0",
174
+ "@byline/auth": "6.11.0",
175
+ "@byline/core": "6.11.0",
176
+ "@byline/i18n": "6.11.0",
177
+ "@byline/ui": "6.11.0",
178
178
  "@codemirror/commands": "^6.11.1",
179
179
  "@codemirror/lang-css": "^6.3.1",
180
180
  "@codemirror/lang-html": "^6.4.12",
@@ -214,7 +214,8 @@
214
214
  "react-dom": "^19.3.1",
215
215
  "typescript": "^7.0.2",
216
216
  "typescript-plugin-css-modules": "^5.2.0",
217
- "vitest": "^5.0.5"
217
+ "vitest": "^5.0.5",
218
+ "postcss": "^8.5.31"
218
219
  },
219
220
  "publishConfig": {
220
221
  "access": "public",
@@ -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
  * ArrayField — homogeneous array of child fields with optional D&D.
3
17
  *
@@ -12,67 +26,69 @@
12
26
  * .byline-field-array-group-fields — vertical stack of fields inside an item
13
27
  */
14
28
 
15
- .title,
16
- :global(.byline-field-array-title) {
17
- margin-bottom: 0.25rem;
18
- font-size: 1rem;
19
- font-weight: var(--font-weight-medium);
20
- }
29
+ @layer byline-components.cms {
30
+ .title,
31
+ :global(.byline-field-array-title) {
32
+ margin-bottom: 0.25rem;
33
+ font-size: 1rem;
34
+ font-weight: var(--font-weight-medium);
35
+ }
21
36
 
22
- .stack,
23
- :global(.byline-field-array-stack) {
24
- display: flex;
25
- flex-direction: column;
26
- gap: var(--spacing-16);
27
- }
37
+ .stack,
38
+ :global(.byline-field-array-stack) {
39
+ display: flex;
40
+ flex-direction: column;
41
+ gap: var(--spacing-16);
42
+ }
28
43
 
29
- .card,
30
- :global(.byline-field-array-card) {
31
- display: flex;
32
- flex-direction: column;
33
- gap: var(--spacing-16);
34
- padding: var(--spacing-16);
35
- border: var(--border-width-thin) dashed var(--gray-600);
36
- border-radius: var(--border-radius-md);
37
- }
44
+ .card,
45
+ :global(.byline-field-array-card) {
46
+ display: flex;
47
+ flex-direction: column;
48
+ gap: var(--spacing-16);
49
+ padding: var(--spacing-16);
50
+ border: var(--border-width-thin) dashed var(--gray-600);
51
+ border-radius: var(--border-radius-md);
52
+ }
38
53
 
39
- .group-header,
40
- :global(.byline-field-array-group-header) {
41
- font-size: 0.9rem;
42
- font-weight: var(--font-weight-medium);
43
- }
54
+ .group-header,
55
+ :global(.byline-field-array-group-header) {
56
+ font-size: 0.9rem;
57
+ font-weight: var(--font-weight-medium);
58
+ }
44
59
 
45
- .group-fields,
46
- :global(.byline-field-array-group-fields) {
47
- display: flex;
48
- flex-direction: column;
49
- gap: var(--spacing-16);
50
- }
60
+ .group-fields,
61
+ :global(.byline-field-array-group-fields) {
62
+ display: flex;
63
+ flex-direction: column;
64
+ gap: var(--spacing-16);
65
+ }
51
66
 
52
- .add-row,
53
- :global(.byline-field-array-add-row) {
54
- display: flex;
55
- align-items: center;
56
- font-size: 0.9rem;
57
- color: var(--muted);
58
- gap: var(--spacing-8);
59
- }
67
+ .add-row,
68
+ :global(.byline-field-array-add-row) {
69
+ display: flex;
70
+ align-items: center;
71
+ font-size: 0.9rem;
72
+ color: var(--muted);
73
+ gap: var(--spacing-8);
74
+ }
60
75
 
61
- /* Text-styled companion button for the add row's label — clickable like the
76
+ /* Text-styled companion button for the add row's label — clickable like the
62
77
  icon button. Hovering anywhere on the row brightens the label text. */
63
- .add-label,
64
- :global(.byline-field-array-add-label) {
65
- appearance: none;
66
- background: none;
67
- border: none;
68
- padding: 0;
69
- font: inherit;
70
- color: inherit;
71
- cursor: pointer;
72
- transition: color 120ms ease;
73
- }
78
+ .add-label,
79
+ :global(.byline-field-array-add-label) {
80
+ appearance: none;
81
+ background: none;
82
+ border: none;
83
+ padding: 0;
84
+ font: inherit;
85
+ color: inherit;
86
+ cursor: pointer;
87
+ transition: color 120ms ease;
88
+ }
74
89
 
75
- .add-row:hover .add-label,
76
- :global(.byline-field-array-add-row):hover :global(.byline-field-array-add-label) {
77
- color: var(--text);
90
+ .add-row:hover .add-label,
91
+ :global(.byline-field-array-add-row):hover :global(.byline-field-array-add-label) {
92
+ color: var(--text);
93
+ }
78
94
  }
@@ -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
  * BlocksField — heterogeneous array picked from a modal of block variants.
3
17
  *
@@ -20,91 +34,93 @@
20
34
  * .byline-field-blocks-card-cursor — cursor: pointer hint on the modal content
21
35
  */
22
36
 
23
- .title,
24
- :global(.byline-field-blocks-title) {
25
- margin-bottom: 0.25rem;
26
- font-size: 1rem;
27
- font-weight: var(--font-weight-medium);
28
- }
37
+ @layer byline-components.cms {
38
+ .title,
39
+ :global(.byline-field-blocks-title) {
40
+ margin-bottom: 0.25rem;
41
+ font-size: 1rem;
42
+ font-weight: var(--font-weight-medium);
43
+ }
29
44
 
30
- .stack,
31
- :global(.byline-field-blocks-stack) {
32
- display: flex;
33
- flex-direction: column;
34
- gap: var(--spacing-16);
35
- }
45
+ .stack,
46
+ :global(.byline-field-blocks-stack) {
47
+ display: flex;
48
+ flex-direction: column;
49
+ gap: var(--spacing-16);
50
+ }
36
51
 
37
- .unavailable,
38
- :global(.byline-field-blocks-unavailable) {
39
- display: flex;
40
- align-items: flex-start;
41
- gap: var(--spacing-8);
42
- padding: var(--spacing-16);
43
- border: 1px solid var(--stroke-warning);
44
- border-radius: var(--border-radius-md);
45
- background-color: oklch(from var(--fill-warning-weak) l c h / calc(alpha * 0.5));
46
- color: var(--foreground);
47
- }
52
+ .unavailable,
53
+ :global(.byline-field-blocks-unavailable) {
54
+ display: flex;
55
+ align-items: flex-start;
56
+ gap: var(--spacing-8);
57
+ padding: var(--spacing-16);
58
+ border: 1px solid var(--stroke-warning);
59
+ border-radius: var(--border-radius-md);
60
+ background-color: oklch(from var(--fill-warning-weak) l c h / calc(alpha * 0.5));
61
+ color: var(--foreground);
62
+ }
48
63
 
49
- .unavailable > :first-child,
50
- :global(.byline-field-blocks-unavailable) > :first-child {
51
- flex-shrink: 0;
52
- }
64
+ .unavailable > :first-child,
65
+ :global(.byline-field-blocks-unavailable) > :first-child {
66
+ flex-shrink: 0;
67
+ }
53
68
 
54
- .unavailable p,
55
- :global(.byline-field-blocks-unavailable) p {
56
- margin: var(--spacing-4) 0 0;
57
- }
69
+ .unavailable p,
70
+ :global(.byline-field-blocks-unavailable) p {
71
+ margin: var(--spacing-4) 0 0;
72
+ }
58
73
 
59
- .add-row,
60
- :global(.byline-field-blocks-add-row) {
61
- display: flex;
62
- align-items: center;
63
- font-size: 0.9rem;
64
- color: var(--muted);
65
- gap: var(--spacing-8);
66
- }
74
+ .add-row,
75
+ :global(.byline-field-blocks-add-row) {
76
+ display: flex;
77
+ align-items: center;
78
+ font-size: 0.9rem;
79
+ color: var(--muted);
80
+ gap: var(--spacing-8);
81
+ }
67
82
 
68
- /* Text-styled companion button for the add row's label — clickable like the
83
+ /* Text-styled companion button for the add row's label — clickable like the
69
84
  icon button. Hovering anywhere on the row brightens the label text. */
70
- .add-label,
71
- :global(.byline-field-blocks-add-label) {
72
- appearance: none;
73
- background: none;
74
- border: none;
75
- padding: 0;
76
- font: inherit;
77
- color: inherit;
78
- cursor: pointer;
79
- transition: color 120ms ease;
80
- }
85
+ .add-label,
86
+ :global(.byline-field-blocks-add-label) {
87
+ appearance: none;
88
+ background: none;
89
+ border: none;
90
+ padding: 0;
91
+ font: inherit;
92
+ color: inherit;
93
+ cursor: pointer;
94
+ transition: color 120ms ease;
95
+ }
81
96
 
82
- .add-label:disabled,
83
- :global(.byline-field-blocks-add-label):disabled {
84
- cursor: default;
85
- }
97
+ .add-label:disabled,
98
+ :global(.byline-field-blocks-add-label):disabled {
99
+ cursor: default;
100
+ }
86
101
 
87
- .add-row:hover .add-label:not(:disabled),
88
- :global(.byline-field-blocks-add-row):hover :global(.byline-field-blocks-add-label):not(:disabled) {
89
- color: var(--text);
90
- }
102
+ .add-row:hover .add-label:not(:disabled),
103
+ :global(.byline-field-blocks-add-row):hover
104
+ :global(.byline-field-blocks-add-label):not(:disabled) {
105
+ color: var(--text);
106
+ }
91
107
 
92
- .modal-head,
93
- :global(.byline-field-blocks-modal-head) {
94
- padding-top: 1rem;
95
- margin-bottom: var(--spacing-8);
96
- }
108
+ .modal-head,
109
+ :global(.byline-field-blocks-modal-head) {
110
+ padding-top: 1rem;
111
+ margin-bottom: var(--spacing-8);
112
+ }
97
113
 
98
- .modal-title,
99
- :global(.byline-field-blocks-modal-title) {
100
- margin: 0 0 var(--spacing-8) 0;
101
- font-size: var(--font-size-2xl);
102
- }
114
+ .modal-title,
115
+ :global(.byline-field-blocks-modal-title) {
116
+ margin: 0 0 var(--spacing-8) 0;
117
+ font-size: var(--font-size-2xl);
118
+ }
103
119
 
104
- .modal-content,
105
- :global(.byline-field-blocks-card-cursor) {
106
- cursor: pointer;
107
- /* Cap the picker's height and scroll the card grid when a collection
120
+ .modal-content,
121
+ :global(.byline-field-blocks-card-cursor) {
122
+ cursor: pointer;
123
+ /* Cap the picker's height and scroll the card grid when a collection
108
124
  declares more blocks than fit. Mobile-first: 80% of the (dynamic)
109
125
  viewport height, tightening to 70% on tablet and 60% on desktop —
110
126
  smaller screens get proportionally more of the picker. `min-height: 0`
@@ -112,113 +128,114 @@
112
128
  shrink and scroll; `overscroll-behavior` keeps wheel momentum from
113
129
  spilling into the document behind the modal. All caps stay inside the
114
130
  Modal.Container's own viewport-height limit. */
115
- max-height: 80dvh;
116
- min-height: 0;
117
- overflow-y: auto;
118
- overscroll-behavior: contain;
119
- }
120
-
121
- @media (min-width: 40rem) {
122
- .modal-content,
123
- :global(.byline-field-blocks-card-cursor) {
124
- max-height: 70dvh;
131
+ max-height: 80dvh;
132
+ min-height: 0;
133
+ overflow-y: auto;
134
+ overscroll-behavior: contain;
125
135
  }
126
- }
127
136
 
128
- @media (min-width: 64rem) {
129
- .modal-content,
130
- :global(.byline-field-blocks-card-cursor) {
131
- max-height: 60dvh;
137
+ @media (min-width: 40rem) {
138
+ .modal-content,
139
+ :global(.byline-field-blocks-card-cursor) {
140
+ max-height: 70dvh;
141
+ }
132
142
  }
133
- }
134
-
135
- .grid,
136
- :global(.byline-field-blocks-grid) {
137
- display: grid;
138
- grid-template-columns: 1fr;
139
- gap: var(--spacing-16);
140
- }
141
143
 
142
- @media (min-width: 40rem) {
143
- .grid,
144
- :global(.byline-field-blocks-grid) {
145
- grid-template-columns: repeat(2, 1fr);
144
+ @media (min-width: 64rem) {
145
+ .modal-content,
146
+ :global(.byline-field-blocks-card-cursor) {
147
+ max-height: 60dvh;
148
+ }
146
149
  }
147
- }
148
150
 
149
- @media (min-width: 48rem) {
150
151
  .grid,
151
152
  :global(.byline-field-blocks-grid) {
152
- grid-template-columns: repeat(3, 1fr);
153
+ display: grid;
154
+ grid-template-columns: 1fr;
155
+ gap: var(--spacing-16);
153
156
  }
154
- }
155
-
156
- .card,
157
- :global(.byline-field-blocks-card) {
158
- margin-bottom: var(--spacing-8);
159
- }
160
157
 
161
- .card-head,
162
- :global(.byline-field-blocks-card-head) {
163
- display: flex;
164
- align-items: flex-start;
165
- justify-content: space-between;
166
- gap: var(--spacing-8);
167
- }
168
-
169
- .card-title,
170
- :global(.byline-field-blocks-card-title) {
171
- font-size: 1.3rem;
172
- line-height: var(--line-height-tight);
173
- }
158
+ @media (min-width: 40rem) {
159
+ .grid,
160
+ :global(.byline-field-blocks-grid) {
161
+ grid-template-columns: repeat(2, 1fr);
162
+ }
163
+ }
174
164
 
175
- .card-index,
176
- :global(.byline-field-blocks-card-index) {
177
- flex-shrink: 0;
178
- display: inline-flex;
179
- align-items: center;
180
- justify-content: center;
181
- width: 1.25rem;
182
- height: 1.25rem;
183
- margin-top: 0.125rem;
184
- border: var(--border-width-thin) var(--border-style-solid) var(--gray-100);
185
- border-radius: var(--border-radius-full);
186
- color: var(--gray-400);
187
- font-size: 10px;
188
- font-weight: var(--font-weight-semibold);
189
- font-variant-numeric: tabular-nums;
190
- }
165
+ @media (min-width: 48rem) {
166
+ .grid,
167
+ :global(.byline-field-blocks-grid) {
168
+ grid-template-columns: repeat(3, 1fr);
169
+ }
170
+ }
191
171
 
192
- .card-code,
193
- :global(.byline-field-blocks-card-code) {
194
- display: block;
195
- margin-top: 0;
196
- color: var(--gray-400);
197
- font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
198
- font-size: 12px;
199
- }
172
+ .card,
173
+ :global(.byline-field-blocks-card) {
174
+ margin-bottom: var(--spacing-8);
175
+ }
200
176
 
201
- .card-body,
202
- :global(.byline-field-blocks-card-body) {
203
- color: var(--gray-500);
204
- font-size: var(--font-size-sm);
205
- }
177
+ .card-head,
178
+ :global(.byline-field-blocks-card-head) {
179
+ display: flex;
180
+ align-items: flex-start;
181
+ justify-content: space-between;
182
+ gap: var(--spacing-8);
183
+ }
206
184
 
207
- /* ─── Dark theme variants ───────────────────────────────────── */
185
+ .card-title,
186
+ :global(.byline-field-blocks-card-title) {
187
+ font-size: 1.3rem;
188
+ line-height: var(--line-height-tight);
189
+ }
208
190
 
209
- :is([data-theme="dark"], :global(.dark)) {
210
191
  .card-index,
211
192
  :global(.byline-field-blocks-card-index) {
212
- border-color: var(--gray-700);
193
+ flex-shrink: 0;
194
+ display: inline-flex;
195
+ align-items: center;
196
+ justify-content: center;
197
+ width: 1.25rem;
198
+ height: 1.25rem;
199
+ margin-top: 0.125rem;
200
+ border: var(--border-width-thin) var(--border-style-solid) var(--gray-100);
201
+ border-radius: var(--border-radius-full);
202
+ color: var(--gray-400);
203
+ font-size: 10px;
204
+ font-weight: var(--font-weight-semibold);
205
+ font-variant-numeric: tabular-nums;
213
206
  }
214
207
 
215
208
  .card-code,
216
209
  :global(.byline-field-blocks-card-code) {
217
- color: var(--gray-500);
210
+ display: block;
211
+ margin-top: 0;
212
+ color: var(--gray-400);
213
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
214
+ font-size: 12px;
218
215
  }
219
216
 
220
217
  .card-body,
221
218
  :global(.byline-field-blocks-card-body) {
222
- color: var(--gray-200);
219
+ color: var(--gray-500);
220
+ font-size: var(--font-size-sm);
221
+ }
222
+
223
+ /* ─── Dark theme variants ───────────────────────────────────── */
224
+
225
+ :is([data-theme="dark"], :global(.dark)) {
226
+ .card-index,
227
+ :global(.byline-field-blocks-card-index) {
228
+ border-color: var(--gray-700);
229
+ }
230
+
231
+ .card-code,
232
+ :global(.byline-field-blocks-card-code) {
233
+ color: var(--gray-500);
234
+ }
235
+
236
+ .card-body,
237
+ :global(.byline-field-blocks-card-body) {
238
+ color: var(--gray-200);
239
+ }
223
240
  }
224
241
  }
@@ -1,4 +1,18 @@
1
- :global(.byline-field-checkbox),
2
- .field-checkbox {
3
- margin: 0;
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
+ @layer byline-components.primitives, byline-components.cms;
13
+ @layer byline-components.cms {
14
+ :global(.byline-field-checkbox),
15
+ .field-checkbox {
16
+ margin: 0;
17
+ }
4
18
  }
@@ -98,6 +98,8 @@ const bylineCodeTheme = EditorView.theme({
98
98
  },
99
99
  '.cm-activeLine': { backgroundColor: 'var(--byline-code-active-line)' },
100
100
  '.cm-activeLineGutter': { backgroundColor: 'var(--byline-code-active-line)' },
101
+ // Runtime exception: CodeMirror injects unlayered selection rules. Keep the
102
+ // selection token authoritative; see the UI kit CSS contract's runtime limits.
101
103
  '&.cm-focused .cm-selectionBackground, .cm-selectionBackground, ::selection': {
102
104
  backgroundColor: 'var(--byline-code-selection) !important',
103
105
  },