@mcp-b/react-components 0.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.
Files changed (71) hide show
  1. package/LICENSE +21 -0
  2. package/dist/index.d.ts +7236 -0
  3. package/dist/index.js +8945 -0
  4. package/dist/styles/accordion.css +104 -0
  5. package/dist/styles/agent-connection.css +159 -0
  6. package/dist/styles/alert-dialog.css +144 -0
  7. package/dist/styles/artifact.css +67 -0
  8. package/dist/styles/autocomplete.css +162 -0
  9. package/dist/styles/avatar.css +31 -0
  10. package/dist/styles/badge.css +56 -0
  11. package/dist/styles/base.css +81 -0
  12. package/dist/styles/button.css +176 -0
  13. package/dist/styles/card.css +31 -0
  14. package/dist/styles/chain-of-thought.css +241 -0
  15. package/dist/styles/checkbox-group.css +10 -0
  16. package/dist/styles/checkbox.css +42 -0
  17. package/dist/styles/code-block.css +105 -0
  18. package/dist/styles/collapsible.css +95 -0
  19. package/dist/styles/combobox.css +171 -0
  20. package/dist/styles/commit.css +201 -0
  21. package/dist/styles/context-menu.css +68 -0
  22. package/dist/styles/context.css +142 -0
  23. package/dist/styles/conversation.css +81 -0
  24. package/dist/styles/dialog.css +98 -0
  25. package/dist/styles/environment-variables.css +122 -0
  26. package/dist/styles/field.css +80 -0
  27. package/dist/styles/fieldset.css +18 -0
  28. package/dist/styles/file-tree.css +128 -0
  29. package/dist/styles/form.css +5 -0
  30. package/dist/styles/github-motion-mark.css +91 -0
  31. package/dist/styles/index.css +79 -0
  32. package/dist/styles/input.css +34 -0
  33. package/dist/styles/label.css +12 -0
  34. package/dist/styles/menu.css +228 -0
  35. package/dist/styles/menubar.css +137 -0
  36. package/dist/styles/message.css +120 -0
  37. package/dist/styles/meter.css +36 -0
  38. package/dist/styles/model-selector.css +175 -0
  39. package/dist/styles/nanite-scene.css +418 -0
  40. package/dist/styles/navigation-menu.css +162 -0
  41. package/dist/styles/number-field.css +103 -0
  42. package/dist/styles/popover.css +148 -0
  43. package/dist/styles/preview-card.css +98 -0
  44. package/dist/styles/pricing-page.css +390 -0
  45. package/dist/styles/progress.css +49 -0
  46. package/dist/styles/prompt-input.css +153 -0
  47. package/dist/styles/queue.css +226 -0
  48. package/dist/styles/radio.css +64 -0
  49. package/dist/styles/reasoning.css +124 -0
  50. package/dist/styles/scroll-area.css +67 -0
  51. package/dist/styles/scrollbars.css +32 -0
  52. package/dist/styles/select.css +116 -0
  53. package/dist/styles/separator.css +15 -0
  54. package/dist/styles/shell.css +121 -0
  55. package/dist/styles/slider.css +88 -0
  56. package/dist/styles/sources.css +168 -0
  57. package/dist/styles/stepper.css +204 -0
  58. package/dist/styles/switch.css +86 -0
  59. package/dist/styles/tabs.css +102 -0
  60. package/dist/styles/task.css +164 -0
  61. package/dist/styles/terminal.css +97 -0
  62. package/dist/styles/test-results.css +267 -0
  63. package/dist/styles/toast.css +142 -0
  64. package/dist/styles/toggle-group.css +71 -0
  65. package/dist/styles/toggle.css +44 -0
  66. package/dist/styles/tokens.css +1 -0
  67. package/dist/styles/tool.css +180 -0
  68. package/dist/styles/toolbar.css +139 -0
  69. package/dist/styles/tooltip.css +49 -0
  70. package/dist/styles/web-preview.css +150 -0
  71. package/package.json +77 -0
@@ -0,0 +1,81 @@
1
+ /*
2
+ * Base Styles
3
+ * Global styles and font loading for the design system
4
+ */
5
+
6
+ *,
7
+ *::before,
8
+ *::after {
9
+ box-sizing: border-box;
10
+ }
11
+
12
+ * {
13
+ margin: 0;
14
+ }
15
+
16
+ body {
17
+ font-family: var(--sigvelo-font-family);
18
+ font-size: 1rem;
19
+ line-height: 1.5;
20
+ color: var(--sigvelo-text-body);
21
+ background-color: var(--sigvelo-background-color);
22
+ -webkit-font-smoothing: antialiased;
23
+ -moz-osx-font-smoothing: grayscale;
24
+ }
25
+
26
+ code,
27
+ kbd,
28
+ samp,
29
+ pre {
30
+ font-family: var(--sigvelo-font-family-code);
31
+ }
32
+
33
+ button,
34
+ [role="button"],
35
+ input,
36
+ select,
37
+ textarea,
38
+ a {
39
+ touch-action: manipulation;
40
+ }
41
+
42
+ ::selection {
43
+ background-color: var(--sigvelo-selection-background-color);
44
+ color: var(--sigvelo-selection-color);
45
+ }
46
+
47
+ .tabular-nums {
48
+ font-variant-numeric: tabular-nums;
49
+ }
50
+
51
+ @media (prefers-reduced-motion: reduce) {
52
+ *,
53
+ *::before,
54
+ *::after {
55
+ animation-duration: 0.01ms !important;
56
+ animation-iteration-count: 1 !important;
57
+ transition-duration: 0.01ms !important;
58
+ scroll-behavior: auto !important;
59
+ }
60
+ }
61
+
62
+ @media (prefers-contrast: more) {
63
+ :root {
64
+ --sigvelo-neutral-stroke-soft: var(--sigvelo-neutral-600);
65
+ --sigvelo-neutral-stroke-softer: var(--sigvelo-neutral-500);
66
+ --sigvelo-neutral-fill-softer: var(--sigvelo-neutral-200);
67
+ }
68
+ }
69
+
70
+ @media (forced-colors: active) {
71
+ :focus-visible {
72
+ outline: 2px solid Highlight;
73
+ outline-offset: 2px;
74
+ }
75
+
76
+ [data-disabled],
77
+ :disabled {
78
+ border-color: GrayText;
79
+ color: GrayText;
80
+ }
81
+ }
@@ -0,0 +1,176 @@
1
+ .button {
2
+ display: inline-flex;
3
+ align-items: center;
4
+ justify-content: center;
5
+ gap: 0.5rem;
6
+ white-space: nowrap;
7
+ border: none;
8
+ cursor: pointer;
9
+ font-family: var(--sigvelo-font-family);
10
+ font-weight: var(--sigvelo-font-weight-semibold);
11
+ line-height: 1.25;
12
+ text-decoration: none;
13
+ border-radius: var(--sigvelo-border-radius-md);
14
+ transition:
15
+ background-color 150ms ease,
16
+ color 150ms ease,
17
+ border-color 150ms ease,
18
+ box-shadow 150ms ease;
19
+ }
20
+
21
+ .button:focus-visible {
22
+ outline: var(--sigvelo-focus-ring);
23
+ outline-offset: var(--sigvelo-focus-offset);
24
+ }
25
+
26
+ .button[data-disabled] {
27
+ pointer-events: none;
28
+ opacity: 0.5;
29
+ }
30
+
31
+ /* Normal appearance */
32
+
33
+ .button--normal.button--primary {
34
+ background-color: var(--sigvelo-primary-fill-mid);
35
+ color: var(--sigvelo-primary-text-on-mid);
36
+ }
37
+
38
+ .button--normal.button--primary:hover:not([data-disabled]) {
39
+ background-color: color-mix(in oklab, var(--sigvelo-primary-fill-mid), black 5%);
40
+ }
41
+
42
+ .button--normal.button--neutral {
43
+ background-color: var(--sigvelo-neutral-fill-softer);
44
+ color: var(--sigvelo-neutral-text-on-soft);
45
+ }
46
+
47
+ .button--normal.button--neutral:hover:not([data-disabled]) {
48
+ background-color: color-mix(in oklab, var(--sigvelo-neutral-fill-softer), black 5%);
49
+ }
50
+
51
+ .button--normal.button--destructive {
52
+ background-color: var(--sigvelo-destructive-fill-mid);
53
+ color: var(--sigvelo-destructive-text-on-mid);
54
+ }
55
+
56
+ .button--normal.button--destructive:hover:not([data-disabled]) {
57
+ background-color: color-mix(in oklab, var(--sigvelo-destructive-fill-mid), black 5%);
58
+ }
59
+
60
+ /* Outline appearance */
61
+
62
+ .button--outline.button--neutral {
63
+ background-color: transparent;
64
+ color: var(--sigvelo-neutral-text-colorful);
65
+ border: var(--sigvelo-border-style) var(--sigvelo-border-width) var(--sigvelo-neutral-fill-mid);
66
+ }
67
+
68
+ .button--outline.button--neutral:hover:not([data-disabled]) {
69
+ background-color: color-mix(in oklab, transparent, var(--sigvelo-neutral-fill-mid) 7.5%);
70
+ }
71
+
72
+ .button--outline.button--primary {
73
+ background-color: transparent;
74
+ color: var(--sigvelo-primary-text-colorful);
75
+ border: var(--sigvelo-border-style) var(--sigvelo-border-width) var(--sigvelo-primary-fill-mid);
76
+ }
77
+
78
+ .button--outline.button--primary:hover:not([data-disabled]) {
79
+ background-color: color-mix(in oklab, transparent, var(--sigvelo-primary-fill-mid) 7.5%);
80
+ }
81
+
82
+ .button--outline.button--destructive {
83
+ background-color: transparent;
84
+ color: var(--sigvelo-destructive-text-colorful);
85
+ border: var(--sigvelo-border-style) var(--sigvelo-border-width)
86
+ var(--sigvelo-destructive-fill-mid);
87
+ }
88
+
89
+ .button--outline.button--destructive:hover:not([data-disabled]) {
90
+ background-color: color-mix(in oklab, transparent, var(--sigvelo-destructive-fill-mid) 7.5%);
91
+ }
92
+
93
+ /* Ghost appearance */
94
+
95
+ .button--ghost {
96
+ background: none;
97
+ color: var(--sigvelo-neutral-text-on-soft);
98
+ }
99
+
100
+ .button--ghost:hover:not([data-disabled]) {
101
+ background-color: color-mix(in oklab, transparent, var(--sigvelo-text-body) 5%);
102
+ }
103
+
104
+ /* Link appearance */
105
+
106
+ .button--link {
107
+ background-color: transparent;
108
+ color: var(--sigvelo-primary-text-colorful);
109
+ text-underline-offset: 4px;
110
+ }
111
+
112
+ .button--link:hover:not([data-disabled]) {
113
+ text-decoration: underline;
114
+ }
115
+
116
+ /* Sizes */
117
+
118
+ .button--xs {
119
+ min-height: var(--sigvelo-form-control-height-xs);
120
+ padding-block: 0;
121
+ padding-inline: 0.65rem;
122
+ font-size: var(--sigvelo-form-control-font-size-xs);
123
+ border-radius: var(--sigvelo-border-radius-sm);
124
+ }
125
+
126
+ .button--sm {
127
+ min-height: var(--sigvelo-form-control-height-sm);
128
+ padding-block: 0;
129
+ padding-inline: 0.85rem;
130
+ font-size: var(--sigvelo-form-control-font-size-sm);
131
+ border-radius: var(--sigvelo-border-radius-sm);
132
+ }
133
+
134
+ .button--md {
135
+ min-height: var(--sigvelo-form-control-height-md);
136
+ padding-block: 0;
137
+ padding-inline: 1.25rem;
138
+ font-size: var(--sigvelo-form-control-font-size-md);
139
+ }
140
+
141
+ .button--lg {
142
+ min-height: var(--sigvelo-form-control-height-lg);
143
+ padding-block: 0;
144
+ padding-inline: 1.5rem;
145
+ font-size: var(--sigvelo-form-control-font-size-lg);
146
+ }
147
+
148
+ .button--xl {
149
+ min-height: var(--sigvelo-form-control-height-xl);
150
+ padding-block: 0;
151
+ padding-inline: 1.75rem;
152
+ font-size: var(--sigvelo-form-control-font-size-xl);
153
+ }
154
+
155
+ .button--icon {
156
+ min-height: var(--sigvelo-form-control-height-md);
157
+ width: var(--sigvelo-form-control-height-md);
158
+ padding: 0;
159
+ }
160
+
161
+ @media (forced-colors: active) {
162
+ .button {
163
+ border: 1px solid ButtonText;
164
+ }
165
+
166
+ .button--ghost,
167
+ .button--link {
168
+ border-color: transparent;
169
+ }
170
+
171
+ .button[data-disabled] {
172
+ border-color: GrayText;
173
+ color: GrayText;
174
+ opacity: 1;
175
+ }
176
+ }
@@ -0,0 +1,31 @@
1
+ .card {
2
+ background-color: var(--sigvelo-paper-color);
3
+ color: var(--sigvelo-text-body);
4
+ border: var(--sigvelo-border-style) var(--sigvelo-border-width) var(--sigvelo-neutral-stroke-soft);
5
+ border-radius: var(--sigvelo-border-radius-md);
6
+ padding: 1.5rem;
7
+ container-type: inline-size;
8
+ box-shadow: var(--sigvelo-shadow-soft);
9
+ transition:
10
+ box-shadow 150ms ease,
11
+ border-color 150ms ease,
12
+ transform 150ms ease;
13
+ }
14
+
15
+ .card--hover {
16
+ cursor: default;
17
+ }
18
+
19
+ .card--hover:hover {
20
+ box-shadow: var(--sigvelo-shadow-mid);
21
+ border-color: var(--sigvelo-focus-color);
22
+ transform: translateY(-2px);
23
+ }
24
+
25
+ .card--hover:focus-visible {
26
+ outline: none;
27
+ border-color: var(--sigvelo-focus-color);
28
+ box-shadow:
29
+ 0 0 0 2px var(--sigvelo-background-color),
30
+ 0 0 0 4px var(--sigvelo-focus-color);
31
+ }
@@ -0,0 +1,241 @@
1
+ .chain-of-thought {
2
+ display: flex;
3
+ flex-direction: column;
4
+ width: 100%;
5
+ font-family: var(--sigvelo-font-family);
6
+ color: var(--sigvelo-text-body);
7
+ }
8
+
9
+ .chain-of-thought__header {
10
+ display: flex;
11
+ align-items: center;
12
+ gap: 0.5rem;
13
+ padding-block: 0.5rem;
14
+ padding-inline: 0.75rem;
15
+ background-color: transparent;
16
+ border: none;
17
+ border-radius: var(--sigvelo-border-radius-sm);
18
+ color: var(--sigvelo-text-muted);
19
+ font-family: inherit;
20
+ font-size: 0.8125rem;
21
+ font-weight: var(--sigvelo-font-weight-semibold);
22
+ cursor: pointer;
23
+ transition:
24
+ background-color 150ms ease,
25
+ color 150ms ease;
26
+ }
27
+
28
+ .chain-of-thought__header:hover:not([data-disabled]) {
29
+ background-color: var(--sigvelo-neutral-fill-softer);
30
+ color: var(--sigvelo-text-body);
31
+ }
32
+
33
+ .chain-of-thought__header:focus-visible {
34
+ outline: none;
35
+ box-shadow:
36
+ 0 0 0 2px var(--sigvelo-background-color),
37
+ 0 0 0 4px var(--sigvelo-focus-color);
38
+ }
39
+
40
+ .chain-of-thought__header-icon {
41
+ display: inline-flex;
42
+ transition: transform 200ms ease;
43
+ }
44
+
45
+ .chain-of-thought__header[data-panel-open] .chain-of-thought__header-icon {
46
+ transform: rotate(90deg);
47
+ }
48
+
49
+ .chain-of-thought__content {
50
+ overflow: hidden;
51
+ transition:
52
+ height 200ms ease,
53
+ opacity 200ms ease;
54
+ }
55
+
56
+ .chain-of-thought__content[data-closed] {
57
+ height: 0;
58
+ }
59
+
60
+ .chain-of-thought__content[data-open] {
61
+ height: var(--collapsible-panel-height);
62
+ }
63
+
64
+ .chain-of-thought__content[data-starting-style],
65
+ .chain-of-thought__content[data-ending-style] {
66
+ height: 0;
67
+ opacity: 0;
68
+ }
69
+
70
+ .chain-of-thought__steps {
71
+ display: flex;
72
+ flex-direction: column;
73
+ gap: 0.625rem;
74
+ margin: 0;
75
+ padding-block: 0.75rem;
76
+ padding-inline: 0.75rem;
77
+ margin-inline-start: 1rem;
78
+ border-inline-start: var(--sigvelo-border-style) 2px var(--sigvelo-neutral-stroke-softer);
79
+ list-style: none;
80
+ }
81
+
82
+ .chain-of-thought__step {
83
+ display: flex;
84
+ align-items: flex-start;
85
+ gap: 0.625rem;
86
+ position: relative;
87
+ }
88
+
89
+ .chain-of-thought__step-indicator {
90
+ position: relative;
91
+ display: inline-flex;
92
+ align-items: center;
93
+ justify-content: center;
94
+ width: 1.25rem;
95
+ height: 1.25rem;
96
+ margin-inline-start: -1.625rem;
97
+ border-radius: var(--sigvelo-border-radius-pill);
98
+ background-color: var(--sigvelo-paper-color);
99
+ border: var(--sigvelo-border-style) var(--sigvelo-border-width) var(--sigvelo-neutral-stroke-soft);
100
+ color: var(--sigvelo-text-muted);
101
+ flex-shrink: 0;
102
+ }
103
+
104
+ .chain-of-thought__step--complete .chain-of-thought__step-indicator {
105
+ background-color: var(--sigvelo-success-fill-mid);
106
+ border-color: var(--sigvelo-success-fill-mid);
107
+ color: var(--sigvelo-success-text-on-mid);
108
+ }
109
+
110
+ .chain-of-thought__step--active .chain-of-thought__step-indicator {
111
+ background-color: var(--sigvelo-primary-fill-softer);
112
+ border-color: var(--sigvelo-primary-stroke-soft);
113
+ color: var(--sigvelo-primary-text-colorful);
114
+ animation: chain-of-thought-spin 1.6s linear infinite;
115
+ }
116
+
117
+ .chain-of-thought__step-body {
118
+ display: flex;
119
+ flex-direction: column;
120
+ gap: 0.375rem;
121
+ min-width: 0;
122
+ flex: 1;
123
+ }
124
+
125
+ .chain-of-thought__step-label {
126
+ font-size: 0.8125rem;
127
+ font-weight: var(--sigvelo-font-weight-semibold);
128
+ color: var(--sigvelo-text-body);
129
+ }
130
+
131
+ .chain-of-thought__step--pending .chain-of-thought__step-label {
132
+ color: var(--sigvelo-text-muted);
133
+ }
134
+
135
+ .chain-of-thought__step-description {
136
+ font-size: 0.75rem;
137
+ color: var(--sigvelo-text-muted);
138
+ line-height: 1.5;
139
+ }
140
+
141
+ .chain-of-thought__step-children {
142
+ display: flex;
143
+ flex-direction: column;
144
+ gap: 0.375rem;
145
+ margin-block-start: 0.125rem;
146
+ }
147
+
148
+ .chain-of-thought__search-results {
149
+ display: flex;
150
+ flex-wrap: wrap;
151
+ gap: 0.375rem;
152
+ margin: 0;
153
+ padding: 0;
154
+ list-style: none;
155
+ }
156
+
157
+ .chain-of-thought__search-result-item {
158
+ display: block;
159
+ }
160
+
161
+ .chain-of-thought__search-result {
162
+ display: inline-flex;
163
+ align-items: center;
164
+ padding-block: 0.25rem;
165
+ padding-inline: 0.5rem;
166
+ background-color: var(--sigvelo-neutral-fill-softer);
167
+ border: var(--sigvelo-border-style) var(--sigvelo-border-width)
168
+ var(--sigvelo-neutral-stroke-softer);
169
+ border-radius: var(--sigvelo-border-radius-pill);
170
+ font-size: 0.75rem;
171
+ color: var(--sigvelo-text-body);
172
+ text-decoration: none;
173
+ max-width: 18rem;
174
+ overflow: hidden;
175
+ text-overflow: ellipsis;
176
+ white-space: nowrap;
177
+ transition:
178
+ background-color 150ms ease,
179
+ border-color 150ms ease;
180
+ }
181
+
182
+ .chain-of-thought__search-result:hover {
183
+ background-color: var(--sigvelo-neutral-fill-soft);
184
+ border-color: var(--sigvelo-neutral-stroke-soft);
185
+ }
186
+
187
+ .chain-of-thought__search-result:focus-visible {
188
+ outline: none;
189
+ box-shadow:
190
+ 0 0 0 2px var(--sigvelo-background-color),
191
+ 0 0 0 4px var(--sigvelo-focus-color);
192
+ }
193
+
194
+ .chain-of-thought__image {
195
+ margin: 0;
196
+ display: flex;
197
+ flex-direction: column;
198
+ gap: 0.25rem;
199
+ max-width: 18rem;
200
+ }
201
+
202
+ .chain-of-thought__image-img {
203
+ width: 100%;
204
+ height: auto;
205
+ border-radius: var(--sigvelo-border-radius-sm);
206
+ border: var(--sigvelo-border-style) var(--sigvelo-border-width)
207
+ var(--sigvelo-neutral-stroke-softer);
208
+ }
209
+
210
+ .chain-of-thought__image-caption {
211
+ font-size: 0.6875rem;
212
+ color: var(--sigvelo-text-muted);
213
+ }
214
+
215
+ @keyframes chain-of-thought-spin {
216
+ from {
217
+ transform: rotate(0deg);
218
+ }
219
+ to {
220
+ transform: rotate(360deg);
221
+ }
222
+ }
223
+
224
+ @media (prefers-reduced-motion: reduce) {
225
+ .chain-of-thought__step--active .chain-of-thought__step-indicator {
226
+ animation: none;
227
+ }
228
+ }
229
+
230
+ @media (forced-colors: active) {
231
+ .chain-of-thought__step-indicator,
232
+ .chain-of-thought__search-result {
233
+ border: 1px solid CanvasText;
234
+ }
235
+
236
+ .chain-of-thought__header:focus-visible,
237
+ .chain-of-thought__search-result:focus-visible {
238
+ outline: 2px solid Highlight;
239
+ outline-offset: 2px;
240
+ }
241
+ }
@@ -0,0 +1,10 @@
1
+ .checkbox-group {
2
+ display: flex;
3
+ flex-direction: column;
4
+ gap: 0.5rem;
5
+ }
6
+
7
+ .checkbox-group[data-disabled] {
8
+ opacity: 0.5;
9
+ pointer-events: none;
10
+ }
@@ -0,0 +1,42 @@
1
+ .checkbox {
2
+ display: inline-flex;
3
+ align-items: center;
4
+ justify-content: center;
5
+ width: 1rem;
6
+ height: 1rem;
7
+ border: var(--sigvelo-border-style) var(--sigvelo-border-width) var(--sigvelo-neutral-stroke-soft);
8
+ border-radius: calc(var(--sigvelo-border-radius-md) - 4px);
9
+ background-color: var(--sigvelo-background-color);
10
+ cursor: pointer;
11
+ transition:
12
+ background-color 150ms ease,
13
+ border-color 150ms ease;
14
+ }
15
+
16
+ .checkbox:hover:not([data-disabled]) {
17
+ border-color: var(--sigvelo-primary-fill-mid);
18
+ }
19
+
20
+ .checkbox:focus-visible {
21
+ outline: none;
22
+ box-shadow:
23
+ 0 0 0 2px var(--sigvelo-background-color),
24
+ 0 0 0 4px var(--sigvelo-focus-color);
25
+ }
26
+
27
+ .checkbox[data-checked] {
28
+ background-color: var(--sigvelo-primary-fill-mid);
29
+ border-color: var(--sigvelo-primary-fill-mid);
30
+ }
31
+
32
+ .checkbox[data-disabled] {
33
+ opacity: 0.5;
34
+ cursor: not-allowed;
35
+ }
36
+
37
+ .checkbox__indicator {
38
+ display: flex;
39
+ align-items: center;
40
+ justify-content: center;
41
+ color: var(--sigvelo-primary-text-on-mid);
42
+ }
@@ -0,0 +1,105 @@
1
+ .code-block {
2
+ display: flex;
3
+ flex-direction: column;
4
+ width: 100%;
5
+ font-family: var(--sigvelo-font-family);
6
+ background-color: var(--sigvelo-paper-color);
7
+ border: var(--sigvelo-border-style) var(--sigvelo-border-width)
8
+ var(--sigvelo-neutral-stroke-softer);
9
+ border-radius: var(--sigvelo-border-radius-md);
10
+ overflow: hidden;
11
+ }
12
+
13
+ .code-block__header {
14
+ display: flex;
15
+ align-items: center;
16
+ gap: 0.5rem;
17
+ padding-block: 0.5rem;
18
+ padding-inline: 0.75rem;
19
+ background-color: var(--sigvelo-neutral-fill-softer);
20
+ border-block-end: var(--sigvelo-border-style) var(--sigvelo-border-width)
21
+ var(--sigvelo-neutral-stroke-softer);
22
+ }
23
+
24
+ .code-block__title {
25
+ font-size: 0.75rem;
26
+ font-weight: var(--sigvelo-font-weight-semibold);
27
+ color: var(--sigvelo-text-body);
28
+ }
29
+
30
+ .code-block__filename {
31
+ font-family: var(--sigvelo-font-family-code);
32
+ font-size: 0.75rem;
33
+ color: var(--sigvelo-text-muted);
34
+ }
35
+
36
+ .code-block__actions {
37
+ display: inline-flex;
38
+ align-items: center;
39
+ gap: 0.25rem;
40
+ margin-inline-start: auto;
41
+ flex-shrink: 0;
42
+ }
43
+
44
+ .code-block__language-selector {
45
+ display: inline-flex;
46
+ }
47
+
48
+ .code-block__container {
49
+ position: relative;
50
+ overflow: auto;
51
+ max-height: 30rem;
52
+ }
53
+
54
+ .code-block__content {
55
+ margin: 0;
56
+ padding-block: 0.75rem;
57
+ padding-inline: 0.875rem;
58
+ font-family: var(--sigvelo-font-family-code);
59
+ font-size: 0.8125rem;
60
+ line-height: 1.55;
61
+ color: var(--sigvelo-text-body);
62
+ background-color: var(--sigvelo-paper-color);
63
+ overflow-x: auto;
64
+ }
65
+
66
+ .code-block__content--highlighted {
67
+ padding: 0;
68
+ }
69
+
70
+ .code-block__content--highlighted pre.shiki {
71
+ margin: 0;
72
+ padding-block: 0.75rem;
73
+ padding-inline: 0.875rem;
74
+ background-color: transparent !important;
75
+ font-family: var(--sigvelo-font-family-code);
76
+ font-size: 0.8125rem;
77
+ line-height: 1.55;
78
+ overflow-x: auto;
79
+ }
80
+
81
+ .code-block__content--numbered pre code {
82
+ counter-reset: line;
83
+ }
84
+
85
+ .code-block__content--numbered pre code .line {
86
+ counter-increment: line;
87
+ }
88
+
89
+ .code-block__content--numbered pre code .line::before {
90
+ content: counter(line);
91
+ display: inline-block;
92
+ width: 2rem;
93
+ padding-inline-end: 0.75rem;
94
+ margin-inline-end: 0.75rem;
95
+ color: var(--sigvelo-text-muted);
96
+ text-align: end;
97
+ border-inline-end: var(--sigvelo-border-style) var(--sigvelo-border-width)
98
+ var(--sigvelo-neutral-stroke-softer);
99
+ }
100
+
101
+ @media (forced-colors: active) {
102
+ .code-block {
103
+ border: 1px solid CanvasText;
104
+ }
105
+ }