@solidjs/start 2.0.0-beta.9 → 2.0.0-rc.2

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 (102) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/dist/config/env.js +11 -8
  3. package/dist/config/fs-routes/tree-shake.js +175 -32
  4. package/dist/config/index.js +7 -2
  5. package/dist/fns/client.js +13 -3
  6. package/dist/fns/handler.js +20 -7
  7. package/dist/fns/serialization.d.ts +15 -0
  8. package/dist/fns/serialization.js +1 -1
  9. package/dist/middleware/index.js +4 -1
  10. package/dist/server/StartServer.jsx +1 -1
  11. package/dist/server/fetchEvent.d.ts +10 -0
  12. package/dist/server/fetchEvent.js +10 -0
  13. package/dist/server/handler.d.ts +2 -2
  14. package/dist/server/handler.js +12 -14
  15. package/dist/server/index.d.ts +1 -0
  16. package/dist/server/index.jsx +1 -0
  17. package/dist/server/spa/StartServer.jsx +1 -1
  18. package/dist/server/spa/handler.d.ts +2 -2
  19. package/dist/server/spa/handler.js +2 -2
  20. package/dist/server/strip-path-base.d.ts +1 -0
  21. package/dist/server/strip-path-base.js +10 -0
  22. package/dist/server/web-stream.d.ts +9 -0
  23. package/dist/server/web-stream.js +26 -0
  24. package/dist/shared/ErrorBoundary.jsx +3 -3
  25. package/dist/shared/{dev-overlay → dev-toolbar/error-viewer}/CodeView.jsx +3 -3
  26. package/dist/shared/dev-toolbar/error-viewer/create-stack-frame.js +90 -0
  27. package/dist/shared/{dev-overlay/DevOverlayDialog.d.ts → dev-toolbar/error-viewer/index.d.ts} +3 -2
  28. package/dist/shared/{dev-overlay/DevOverlayDialog.jsx → dev-toolbar/error-viewer/index.jsx} +66 -77
  29. package/dist/shared/dev-toolbar/error-viewer/styles.css +224 -0
  30. package/dist/shared/dev-toolbar/functions/BlobViewer.css +4 -0
  31. package/dist/shared/dev-toolbar/functions/BlobViewer.d.ts +6 -0
  32. package/dist/shared/dev-toolbar/functions/BlobViewer.jsx +41 -0
  33. package/dist/shared/dev-toolbar/functions/FormDataViewer.d.ts +5 -0
  34. package/dist/shared/dev-toolbar/functions/FormDataViewer.jsx +27 -0
  35. package/dist/shared/dev-toolbar/functions/HeadersViewer.css +8 -0
  36. package/dist/shared/dev-toolbar/functions/HeadersViewer.d.ts +6 -0
  37. package/dist/shared/dev-toolbar/functions/HeadersViewer.jsx +15 -0
  38. package/dist/shared/dev-toolbar/functions/HexViewer.css +34 -0
  39. package/dist/shared/dev-toolbar/functions/HexViewer.d.ts +11 -0
  40. package/dist/shared/dev-toolbar/functions/HexViewer.jsx +78 -0
  41. package/dist/shared/dev-toolbar/functions/SerovalValue.css +7 -0
  42. package/dist/shared/dev-toolbar/functions/SerovalValue.d.ts +7 -0
  43. package/dist/shared/dev-toolbar/functions/SerovalValue.jsx +10 -0
  44. package/dist/shared/dev-toolbar/functions/SerovalViewer.css +71 -0
  45. package/dist/shared/dev-toolbar/functions/SerovalViewer.d.ts +6 -0
  46. package/dist/shared/dev-toolbar/functions/SerovalViewer.jsx +796 -0
  47. package/dist/shared/dev-toolbar/functions/URLSearchParamsViewer.d.ts +5 -0
  48. package/dist/shared/dev-toolbar/functions/URLSearchParamsViewer.jsx +24 -0
  49. package/dist/shared/dev-toolbar/functions/index.d.ts +13 -0
  50. package/dist/shared/dev-toolbar/functions/index.jsx +216 -0
  51. package/dist/shared/dev-toolbar/functions/styles.css +110 -0
  52. package/dist/shared/dev-toolbar/functions/tracker.d.ts +19 -0
  53. package/dist/shared/dev-toolbar/functions/tracker.js +29 -0
  54. package/dist/shared/{dev-overlay → dev-toolbar}/icons.d.ts +9 -0
  55. package/dist/shared/{dev-overlay → dev-toolbar}/icons.jsx +19 -1
  56. package/dist/shared/dev-toolbar/index.css +88 -0
  57. package/dist/shared/dev-toolbar/index.d.ts +6 -0
  58. package/dist/shared/dev-toolbar/index.jsx +175 -0
  59. package/dist/shared/ui/Badge.css +34 -0
  60. package/dist/shared/ui/Badge.d.ts +7 -0
  61. package/dist/shared/ui/Badge.jsx +7 -0
  62. package/dist/shared/ui/Button.css +32 -0
  63. package/dist/shared/ui/Button.d.ts +4 -0
  64. package/dist/shared/ui/Button.jsx +4 -0
  65. package/dist/shared/ui/Cascade.css +29 -0
  66. package/dist/shared/ui/Cascade.d.ts +4 -0
  67. package/dist/shared/ui/Cascade.jsx +4 -0
  68. package/dist/shared/ui/Dialog.css +26 -0
  69. package/dist/shared/ui/Dialog.d.ts +5 -0
  70. package/dist/shared/ui/Dialog.jsx +5 -0
  71. package/dist/shared/ui/IconButton.css +39 -0
  72. package/dist/shared/ui/IconButton.d.ts +4 -0
  73. package/dist/shared/ui/IconButton.jsx +4 -0
  74. package/dist/shared/ui/Placeholder.css +12 -0
  75. package/dist/shared/ui/Placeholder.d.ts +6 -0
  76. package/dist/shared/ui/Placeholder.jsx +6 -0
  77. package/dist/shared/ui/Section.css +19 -0
  78. package/dist/shared/ui/Section.d.ts +9 -0
  79. package/dist/shared/ui/Section.jsx +12 -0
  80. package/dist/shared/ui/Select.css +37 -0
  81. package/dist/shared/ui/Select.d.ts +4 -0
  82. package/dist/shared/ui/Select.jsx +4 -0
  83. package/dist/shared/ui/Table.css +22 -0
  84. package/dist/shared/ui/Table.d.ts +11 -0
  85. package/dist/shared/ui/Table.jsx +13 -0
  86. package/dist/shared/ui/Tabs.css +51 -0
  87. package/dist/shared/ui/Tabs.d.ts +6 -0
  88. package/dist/shared/ui/Tabs.jsx +6 -0
  89. package/dist/shared/ui/Text.css +69 -0
  90. package/dist/shared/ui/Text.d.ts +12 -0
  91. package/dist/shared/ui/Text.jsx +17 -0
  92. package/package.json +3 -3
  93. package/dist/shared/dev-overlay/createStackFrame.js +0 -56
  94. package/dist/shared/dev-overlay/index.d.ts +0 -5
  95. package/dist/shared/dev-overlay/index.jsx +0 -39
  96. package/dist/shared/dev-overlay/styles.css +0 -292
  97. /package/dist/shared/{dev-overlay → dev-toolbar/error-viewer}/CodeView.d.ts +0 -0
  98. /package/dist/shared/{dev-overlay/createStackFrame.d.ts → dev-toolbar/error-viewer/create-stack-frame.d.ts} +0 -0
  99. /package/dist/shared/{dev-overlay → dev-toolbar/error-viewer}/download.d.ts +0 -0
  100. /package/dist/shared/{dev-overlay → dev-toolbar/error-viewer}/download.js +0 -0
  101. /package/dist/shared/{dev-overlay → dev-toolbar/error-viewer}/get-source-map.d.ts +0 -0
  102. /package/dist/shared/{dev-overlay → dev-toolbar/error-viewer}/get-source-map.js +0 -0
@@ -0,0 +1,69 @@
1
+ [data-start-text-size="xs"] {
2
+ font-size: 0.75rem;
3
+ line-height: calc(1 / 0.75);
4
+ }
5
+ [data-start-text-size="sm"] {
6
+ font-size: 0.875rem;
7
+ line-height: calc(1.25 / 0.875);
8
+ }
9
+ [data-start-text-size="base"] {
10
+ font-size: 1rem;
11
+ line-height: 1.5;
12
+ }
13
+ [data-start-text-size="lg"] {
14
+ font-size: 1.125rem;
15
+ line-height: calc(1.75 / 1.125);
16
+ }
17
+ [data-start-text-size="xl"] {
18
+ font-size: 1.25rem;
19
+ line-height: calc(1.75 / 1.25);
20
+ }
21
+ [data-start-text-size="2xl"] {
22
+ font-size: 1.5rem;
23
+ line-height: calc(2 / 1.5);
24
+ }
25
+
26
+ [data-start-text-font="sans"] {
27
+ font-family: system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
28
+ }
29
+ [data-start-text-font="serif"] {
30
+ font-family: ui-serif, Georgia, Cambria, 'Times New Roman', Times, serif;
31
+ }
32
+ [data-start-text-font="mono"] {
33
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;
34
+ }
35
+
36
+ [data-start-text-weight="thin"] {
37
+ font-weight: 100;
38
+ }
39
+ [data-start-text-weight="extralight"] {
40
+ font-weight: 200;
41
+ }
42
+ [data-start-text-weight="light"] {
43
+ font-weight: 300;
44
+ }
45
+ [data-start-text-weight="normal"] {
46
+ font-weight: 400;
47
+ }
48
+ [data-start-text-weight="medium"] {
49
+ font-weight: 500;
50
+ }
51
+ [data-start-text-weight="semibold"] {
52
+ font-weight: 600;
53
+ }
54
+ [data-start-text-weight="bold"] {
55
+ font-weight: 700;
56
+ }
57
+ [data-start-text-weight="extrabold"] {
58
+ font-weight: 800;
59
+ }
60
+ [data-start-text-weight="black"] {
61
+ font-weight: 900;
62
+ }
63
+
64
+ [data-start-text-wrap="wrap"] {
65
+ white-space: wrap;
66
+ }
67
+ [data-start-text-wrap="nowrap"] {
68
+ white-space: nowrap;
69
+ }
@@ -0,0 +1,12 @@
1
+ import { type ComponentProps, type JSX } from 'solid-js';
2
+ import './Text.css';
3
+ export type TextProps<T extends keyof JSX.IntrinsicElements = 'span'> = ComponentProps<T> & {
4
+ options?: {
5
+ as?: T;
6
+ size?: 'xs' | 'sm' | 'base' | 'lg' | 'xl' | '2xl';
7
+ font?: 'sans' | 'serif' | 'mono';
8
+ weight?: 'thin' | 'extralight' | 'light' | 'normal' | 'medium' | 'semibold' | 'bold' | 'extrabold';
9
+ wrap?: 'wrap' | 'nowrap';
10
+ };
11
+ };
12
+ export declare function Text<T extends keyof JSX.IntrinsicElements = 'span'>(props: TextProps<T>): JSX.Element;
@@ -0,0 +1,17 @@
1
+ import { createMemo, splitProps } from 'solid-js';
2
+ import { Dynamic } from 'solid-js/web';
3
+ import './Text.css';
4
+ export function Text(props) {
5
+ const [current, rest] = splitProps(props, ['options']);
6
+ const customization = createMemo(() => {
7
+ const options = Object.assign({}, {
8
+ size: 'base',
9
+ font: 'mono',
10
+ weight: 'normal',
11
+ wrap: 'wrap',
12
+ }, current.options);
13
+ const entries = Object.entries(options);
14
+ return Object.fromEntries(entries.map(([key, value]) => [`data-start-text-${key}`, value]));
15
+ });
16
+ return (<Dynamic component={(current.options?.as || 'span')} {...rest} {...customization()}/>);
17
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@solidjs/start",
3
- "version": "2.0.0-beta.9",
3
+ "version": "2.0.0-rc.2",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist",
@@ -52,8 +52,8 @@
52
52
  "shiki": "^1.29.2",
53
53
  "solid-js": "^1.9.11",
54
54
  "source-map-js": "^1.2.1",
55
- "srvx": "^0.11.22",
56
- "terracotta": "^1.1.0",
55
+ "srvx": "^0.12.0",
56
+ "terracotta": "^1.1.1",
57
57
  "vite-plugin-solid": "^2.11.11"
58
58
  },
59
59
  "engines": {
@@ -1,56 +0,0 @@
1
- import { createMemo, createResource } from "solid-js";
2
- import getSourceMap from "./get-source-map.js";
3
- function getActualFileSource(path) {
4
- if (path.startsWith("file://")) {
5
- return "/_build/@fs" + path.substring("file://".length);
6
- }
7
- return path;
8
- }
9
- export function createStackFrame(stackframe, isCompiled) {
10
- const [data] = createResource(() => ({
11
- fileName: stackframe.fileName,
12
- line: stackframe.lineNumber,
13
- column: stackframe.columnNumber,
14
- functionName: stackframe.functionName,
15
- }), async (source) => {
16
- if (!source.fileName) {
17
- return null;
18
- }
19
- const response = await fetch(getActualFileSource(source.fileName));
20
- if (!response.ok) {
21
- return null;
22
- }
23
- const content = await response.text();
24
- const sourceMap = await getSourceMap(source.fileName, content);
25
- return {
26
- source,
27
- content,
28
- sourceMap,
29
- };
30
- });
31
- const info = createMemo(() => {
32
- const current = data();
33
- if (!current) {
34
- return undefined;
35
- }
36
- const { source, content, sourceMap } = current;
37
- if (!isCompiled() && source.line && source.column && sourceMap) {
38
- const result = sourceMap.originalPositionFor({
39
- line: source.line,
40
- column: source.column,
41
- });
42
- return {
43
- ...result,
44
- content: sourceMap.sourceContentFor(result.source),
45
- };
46
- }
47
- return {
48
- source: source.fileName,
49
- line: source.line,
50
- column: source.column,
51
- name: source.functionName,
52
- content,
53
- };
54
- });
55
- return info;
56
- }
@@ -1,5 +0,0 @@
1
- import { type JSX } from "solid-js";
2
- export interface DevOverlayProps {
3
- children?: JSX.Element;
4
- }
5
- export declare function DevOverlay(props: DevOverlayProps): JSX.Element;
@@ -1,39 +0,0 @@
1
- // @refresh skip
2
- import { createEffect, createSignal, ErrorBoundary, onCleanup, resetErrorBoundaries, Show, } from "solid-js";
3
- import clientOnly from "../clientOnly.js";
4
- import { HttpStatusCode } from "../HttpStatusCode.js";
5
- const DevOverlayDialog = import.meta.env.PROD
6
- ? () => <></>
7
- : clientOnly(() => import("./DevOverlayDialog"), { lazy: true });
8
- export function DevOverlay(props) {
9
- const [errors, setErrors] = createSignal([]);
10
- function resetError() {
11
- setErrors([]);
12
- resetErrorBoundaries();
13
- }
14
- function pushError(error) {
15
- console.error(error);
16
- setErrors(current => [error, ...current]);
17
- }
18
- createEffect(() => {
19
- const onErrorEvent = (error) => {
20
- pushError(error.error ?? error);
21
- };
22
- window.addEventListener("error", onErrorEvent);
23
- onCleanup(() => {
24
- window.removeEventListener("error", onErrorEvent);
25
- });
26
- });
27
- return (<>
28
- <ErrorBoundary fallback={error => {
29
- pushError(error);
30
- return <HttpStatusCode code={500}/>;
31
- }}>
32
- {props.children}
33
- </ErrorBoundary>
34
- <Show when={errors().length}>
35
- <HttpStatusCode code={500}/>
36
- <DevOverlayDialog errors={errors()} resetError={resetError}/>
37
- </Show>
38
- </>);
39
- }
@@ -1,292 +0,0 @@
1
- [data-start-dev-overlay] {
2
- position: fixed;
3
- inset: 0px;
4
- z-index: 50;
5
- overflow-y: auto;
6
- }
7
-
8
- [data-start-dev-overlay]>div {
9
- position: relative;
10
- display: flex;
11
- align-items: center;
12
- justify-content: center;
13
- min-height: 100vh;
14
- }
15
-
16
- [data-start-dev-overlay-background] {
17
- position: absolute;
18
- inset: 0px;
19
- background-color: rgb(17 24 39 / 0.5);
20
- }
21
-
22
- [data-start-dev-overlay-panel] {
23
- display: flex;
24
- flex-direction: column;
25
- width: 75vw;
26
- margin-top: 2rem;
27
- margin-bottom: 2rem;
28
- gap: 0.5rem;
29
- color: rgb(17 24 39);
30
- font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
31
- }
32
-
33
- [data-start-dev-overlay-panel-container] {
34
- margin: 2rem;
35
- z-index: 10;
36
- }
37
-
38
- [data-start-dev-overlay-navbar] {
39
- display: flex;
40
- flex-direction: row;
41
- align-items: center;
42
- justify-content: space-between;
43
- gap: 0.5rem;
44
- }
45
-
46
- [data-start-dev-overlay-pagination] {
47
- display: flex;
48
- flex-direction: row;
49
- align-items: center;
50
- justify-content: center;
51
- gap: 0.5rem;
52
- border-radius: 9999px;
53
- background-color: rgb(249 250 251);
54
- padding: 0.25rem;
55
- }
56
-
57
- [data-start-dev-overlay-button] {
58
- display: flex;
59
- padding: 0.125rem;
60
- border-radius: 9999px;
61
- border-width: 0px;
62
- align-items: center;
63
- justify-content: center;
64
- background-color: rgb(249 250 251);
65
- color: rgb(17 24 39);
66
- transition-property: color, background-color, border-color, box-shadow;
67
- transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
68
- transition-duration: 150ms;
69
- }
70
-
71
- [data-start-dev-overlay-button]:hover {
72
- background-color: rgb(229 231 235);
73
- color: rgb(55 65 81);
74
- }
75
-
76
- [data-start-dev-overlay-button]:focus {
77
- outline: 2px solid transparent;
78
- outline-offset: 2px
79
- }
80
-
81
- [data-start-dev-overlay-button]:focus-visible {
82
- box-shadow: 0 0 0 calc(3px) rgb(17 24 39 / 0.75);
83
- }
84
-
85
- [data-start-dev-overlay-button]:active {
86
- background-color: rgb(243 244 246);
87
- color: rgb(31 41 55);
88
- }
89
-
90
- [data-start-dev-overlay-button]>svg {
91
- height: 1.5rem;
92
- width: 1.5rem;
93
- }
94
-
95
- [data-start-dev-overlay-page-counter] {
96
- font-size: 0.875rem;
97
- line-height: 1.25rem;
98
- font-weight: 600;
99
- }
100
-
101
- [data-start-dev-overlay-navbar-left] {
102
- display: flex;
103
- flex-direction: row;
104
- gap: 0.5rem;
105
- }
106
-
107
-
108
- [data-start-dev-overlay-controls] {
109
- display: flex;
110
- flex-direction: row;
111
- align-items: center;
112
- justify-content: center;
113
- gap: 0.25rem;
114
- border-radius: 9999px;
115
- background-color: rgb(249 250 251);
116
- padding: 0.25rem;
117
- }
118
-
119
- [data-start-dev-overlay-version] {
120
- display: flex;
121
- flex-direction: row;
122
- align-items: center;
123
- justify-content: center;
124
- gap: 0.25rem;
125
- border-radius: 9999px;
126
- background-color: rgb(249 250 251);
127
- padding: 0.25rem 0.5rem;
128
- font-size: 0.875rem;
129
- line-height: 1.25rem;
130
- font-weight: 600;
131
- }
132
-
133
- [data-start-dev-overlay-version]>div {
134
- height: 1.5rem;
135
- width: 1.5rem;
136
- }
137
-
138
- [data-start-dev-overlay-version]>div>svg {
139
- height: 1.5rem;
140
- width: 1.5rem;
141
- }
142
-
143
- [data-start-dev-overlay-content] {
144
- display: flex;
145
- flex-direction: column;
146
- gap: 0.75rem;
147
- border-radius: 1.5rem;
148
- background-color: rgb(249 250 251);
149
- padding: 1rem;
150
- }
151
-
152
- [data-start-dev-overlay-error-info] {
153
- display: flex;
154
- flex-direction: column;
155
- gap: 0.25rem;
156
- }
157
-
158
- [data-start-dev-overlay-error-info-name] {
159
- font-weight: 700;
160
- }
161
-
162
- [data-start-dev-overlay-error-info-message] {
163
- font-size: 1.5rem;
164
- line-height: 2rem;
165
- color: rgb(239 68 68);
166
- font-weight: 700;
167
- }
168
-
169
- [data-start-dev-overlay-stack-frames-content] {
170
- display: flex;
171
- flex-direction: column;
172
- gap: 0.75rem;
173
- }
174
-
175
- [data-start-dev-overlay-stack-frames] {
176
- flex: 1 1 0%;
177
- display: flex;
178
- flex-direction: column;
179
- margin: 0;
180
- margin-block: 0;
181
- list-style-type: none;
182
- padding-inline: 0;
183
- max-height: 16rem;
184
- overflow-y: auto;
185
- border-radius: 0.5rem;
186
- }
187
-
188
- [data-start-dev-overlay-stack-frame] {
189
- display: flex;
190
- flex-direction: row;
191
- align-items: center;
192
- justify-content: space-between;
193
- gap: 1rem;
194
- color: rgb(17 24 39);
195
- cursor: default;
196
- user-select: none;
197
- padding-top: 0.5rem;
198
- padding-bottom: 0.5rem;
199
- padding-left: 1rem;
200
- padding-right: 1rem;
201
- font-size: 0.875rem;
202
- line-height: 1.25rem;
203
- outline: none;
204
- }
205
-
206
- [data-start-dev-overlay-stack-frame][tc-active],
207
- [data-start-dev-overlay-stack-frame][tc-selected],
208
- [data-start-dev-overlay-stack-frame]:focus {
209
- background-color: rgb(219 234 254);
210
- color: rgb(30 58 138);
211
- }
212
-
213
- [data-start-dev-overlay-stack-frame-function] {
214
- font-weight: 700;
215
- }
216
-
217
- [data-start-dev-overlay-stack-frame-file] {
218
- white-space: nowrap;
219
- font-size: 0.75rem;
220
- /* 12px */
221
- line-height: 1rem;
222
- /* 16px */
223
- }
224
-
225
- [data-start-dev-overlay-stack-frames-code] {
226
- padding: 0.5rem 1rem;
227
- gap: 0.25rem;
228
- flex: 1 1 0%;
229
- display: flex;
230
- flex-direction: column;
231
- align-items: center;
232
- justify-content: center;
233
- border-radius: 0.5rem;
234
- background-color: rgb(17 24 39);
235
- }
236
-
237
- [data-start-dev-overlay-stack-frames-code-fallback] {
238
- display: flex;
239
- align-items: center;
240
- justify-content: center;
241
- color: rgb(249 250 251);
242
- min-height: 16rem;
243
- font-size: 0.875rem;
244
- line-height: 1.25rem;
245
- }
246
-
247
- [data-start-dev-overlay-stack-frames-code-source] {
248
- font-size: 0.875rem;
249
- line-height: 1.25rem;
250
- color: rgb(249 250 251);
251
- }
252
-
253
- [data-start-dev-overlay-stack-frames-code-container] {
254
- width: 100%;
255
- overflow: hidden;
256
- min-width: 100%;
257
- min-height: 16rem;
258
- border-top-width: 1px;
259
- border-top-style: solid;
260
- border-top-color: rgb(249 250 251);
261
- }
262
-
263
- [data-start-dev-overlay-code-view] {
264
- overflow: auto;
265
- min-width: 100%;
266
- min-height: 16rem;
267
- }
268
-
269
- [data-start-dev-overlay-code-view]>.shiki {
270
- float: left;
271
- min-width: 100%;
272
- overflow-x: auto;
273
- font-size: 0.75rem;
274
- line-height: 1rem;
275
- counter-reset: step;
276
- counter-increment: step calc(var(--dev-overlay-code-view-start, 1) - 1);
277
- background-color: transparent !important;
278
- }
279
-
280
- [data-start-dev-overlay-code-view]>.shiki .line::before {
281
- content: counter(step);
282
- counter-increment: step;
283
- width: 1rem;
284
- margin-right: 1.5rem;
285
- display: inline-block;
286
- text-align: right;
287
- color: rgba(115, 138, 148, .4)
288
- }
289
-
290
- [data-start-dev-overlay-error-line] {
291
- background-color: rgba(239, 68, 68, .4);
292
- }