@plumile/ui-devtools 0.1.66
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.
- package/LICENSE +21 -0
- package/README.md +3 -0
- package/lib/esm/content/DevtoolsCodeBlock.js +14 -0
- package/lib/esm/content/DevtoolsCodeBlock.js.map +1 -0
- package/lib/esm/content/devtoolsCodeBlock.css.js +7 -0
- package/lib/esm/content/devtoolsCodeBlock.css.js.map +1 -0
- package/lib/esm/empty_state/DevtoolsEmptyState.js +28 -0
- package/lib/esm/empty_state/DevtoolsEmptyState.js.map +1 -0
- package/lib/esm/empty_state/devtoolsEmptyState.css.js +7 -0
- package/lib/esm/empty_state/devtoolsEmptyState.css.js.map +1 -0
- package/lib/esm/feedback/DevtoolsBadge.js +31 -0
- package/lib/esm/feedback/DevtoolsBadge.js.map +1 -0
- package/lib/esm/feedback/DevtoolsPill.js +40 -0
- package/lib/esm/feedback/DevtoolsPill.js.map +1 -0
- package/lib/esm/feedback/DevtoolsStatusLight.js +18 -0
- package/lib/esm/feedback/DevtoolsStatusLight.js.map +1 -0
- package/lib/esm/feedback/devtoolsFeedback.css.js +7 -0
- package/lib/esm/feedback/devtoolsFeedback.css.js.map +1 -0
- package/lib/esm/index.js +14 -0
- package/lib/esm/layout/DevtoolsSplitView.js +82 -0
- package/lib/esm/layout/DevtoolsSplitView.js.map +1 -0
- package/lib/esm/layout/devtoolsSplitView.css.js +7 -0
- package/lib/esm/layout/devtoolsSplitView.css.js.map +1 -0
- package/lib/esm/navigation/DevtoolsTabs.js +28 -0
- package/lib/esm/navigation/DevtoolsTabs.js.map +1 -0
- package/lib/esm/navigation/devtoolsTabs.css.js +7 -0
- package/lib/esm/navigation/devtoolsTabs.css.js.map +1 -0
- package/lib/esm/style.css +2 -0
- package/lib/esm/surfaces/DevtoolsCard.js +20 -0
- package/lib/esm/surfaces/DevtoolsCard.js.map +1 -0
- package/lib/esm/surfaces/DevtoolsSection.js +20 -0
- package/lib/esm/surfaces/DevtoolsSection.js.map +1 -0
- package/lib/esm/surfaces/devtoolsSurfaces.css.js +7 -0
- package/lib/esm/surfaces/devtoolsSurfaces.css.js.map +1 -0
- package/lib/esm/theme/DevtoolsTheme.js +14 -0
- package/lib/esm/theme/DevtoolsTheme.js.map +1 -0
- package/lib/esm/theme/devtoolsTheme.css.js +7 -0
- package/lib/esm/theme/devtoolsTheme.css.js.map +1 -0
- package/lib/esm/toolbar/DevtoolsToolbar.js +22 -0
- package/lib/esm/toolbar/DevtoolsToolbar.js.map +1 -0
- package/lib/esm/toolbar/DevtoolsToolbarButton.js +19 -0
- package/lib/esm/toolbar/DevtoolsToolbarButton.js.map +1 -0
- package/lib/esm/toolbar/DevtoolsToolbarSeparator.js +13 -0
- package/lib/esm/toolbar/DevtoolsToolbarSeparator.js.map +1 -0
- package/lib/esm/toolbar/devtoolsToolbar.css.js +7 -0
- package/lib/esm/toolbar/devtoolsToolbar.css.js.map +1 -0
- package/lib/types/content/DevtoolsCodeBlock.d.ts +6 -0
- package/lib/types/content/DevtoolsCodeBlock.d.ts.map +1 -0
- package/lib/types/content/devtoolsCodeBlock.css.d.ts +2 -0
- package/lib/types/content/devtoolsCodeBlock.css.d.ts.map +1 -0
- package/lib/types/empty_state/DevtoolsEmptyState.d.ts +9 -0
- package/lib/types/empty_state/DevtoolsEmptyState.d.ts.map +1 -0
- package/lib/types/empty_state/devtoolsEmptyState.css.d.ts +5 -0
- package/lib/types/empty_state/devtoolsEmptyState.css.d.ts.map +1 -0
- package/lib/types/feedback/DevtoolsBadge.d.ts +6 -0
- package/lib/types/feedback/DevtoolsBadge.d.ts.map +1 -0
- package/lib/types/feedback/DevtoolsPill.d.ts +6 -0
- package/lib/types/feedback/DevtoolsPill.d.ts.map +1 -0
- package/lib/types/feedback/DevtoolsStatusLight.d.ts +8 -0
- package/lib/types/feedback/DevtoolsStatusLight.d.ts.map +1 -0
- package/lib/types/feedback/devtoolsFeedback.css.d.ts +20 -0
- package/lib/types/feedback/devtoolsFeedback.css.d.ts.map +1 -0
- package/lib/types/index.d.ts +14 -0
- package/lib/types/index.d.ts.map +1 -0
- package/lib/types/layout/DevtoolsSplitView.d.ts +12 -0
- package/lib/types/layout/DevtoolsSplitView.d.ts.map +1 -0
- package/lib/types/layout/devtoolsSplitView.css.d.ts +7 -0
- package/lib/types/layout/devtoolsSplitView.css.d.ts.map +1 -0
- package/lib/types/navigation/DevtoolsTabs.d.ts +13 -0
- package/lib/types/navigation/DevtoolsTabs.d.ts.map +1 -0
- package/lib/types/navigation/devtoolsTabs.css.d.ts +4 -0
- package/lib/types/navigation/devtoolsTabs.css.d.ts.map +1 -0
- package/lib/types/surfaces/DevtoolsCard.d.ts +7 -0
- package/lib/types/surfaces/DevtoolsCard.d.ts.map +1 -0
- package/lib/types/surfaces/DevtoolsSection.d.ts +7 -0
- package/lib/types/surfaces/DevtoolsSection.d.ts.map +1 -0
- package/lib/types/surfaces/devtoolsSurfaces.css.d.ts +7 -0
- package/lib/types/surfaces/devtoolsSurfaces.css.d.ts.map +1 -0
- package/lib/types/theme/DevtoolsTheme.d.ts +4 -0
- package/lib/types/theme/DevtoolsTheme.d.ts.map +1 -0
- package/lib/types/theme/devtoolsTheme.css.d.ts +2 -0
- package/lib/types/theme/devtoolsTheme.css.d.ts.map +1 -0
- package/lib/types/toolbar/DevtoolsToolbar.d.ts +7 -0
- package/lib/types/toolbar/DevtoolsToolbar.d.ts.map +1 -0
- package/lib/types/toolbar/DevtoolsToolbarButton.d.ts +12 -0
- package/lib/types/toolbar/DevtoolsToolbarButton.d.ts.map +1 -0
- package/lib/types/toolbar/DevtoolsToolbarSeparator.d.ts +3 -0
- package/lib/types/toolbar/DevtoolsToolbarSeparator.d.ts.map +1 -0
- package/lib/types/toolbar/devtoolsToolbar.css.d.ts +6 -0
- package/lib/types/toolbar/devtoolsToolbar.css.d.ts.map +1 -0
- package/package.json +57 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) Plumile and its affiliates.
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { codeBlock as e } from "./devtoolsCodeBlock.css.js";
|
|
2
|
+
import { jsx as t } from "react/jsx-runtime";
|
|
3
|
+
//#region src/content/DevtoolsCodeBlock.tsx
|
|
4
|
+
function n(n) {
|
|
5
|
+
let { children: r } = n;
|
|
6
|
+
return /* @__PURE__ */ t("pre", {
|
|
7
|
+
className: e,
|
|
8
|
+
children: r
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
//#endregion
|
|
12
|
+
export { n as DevtoolsCodeBlock };
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=DevtoolsCodeBlock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DevtoolsCodeBlock.js","names":[],"sources":["../../../src/content/DevtoolsCodeBlock.tsx"],"sourcesContent":["import type { JSX } from 'react';\nimport { codeBlock } from './devtoolsCodeBlock.css.js';\n\nexport type DevtoolsCodeBlockProps = {\n children: string;\n};\n\n/** Render preformatted code content in the devtools theme. */\nexport function DevtoolsCodeBlock(props: DevtoolsCodeBlockProps): JSX.Element {\n const { children } = props;\n\n return <pre className={codeBlock}>{children}</pre>;\n}\n"],"mappings":";;;AAQA,SAAgB,EAAkB,GAA4C;CAC5E,IAAM,EAAE,gBAAa;AAErB,QAAO,kBAAC,OAAD;EAAK,WAAW;EAAY;EAAe,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"devtoolsCodeBlock.css.js","names":[],"sources":["../../../src/content/devtoolsCodeBlock.css.ts"],"sourcesContent":["import { style } from '@vanilla-extract/css';\n\nexport const codeBlock = style({\n margin: 0,\n padding: '12px',\n borderRadius: '6px',\n backgroundColor: 'var(--pdt-code-bg)',\n fontSize: '12px',\n lineHeight: 1.4,\n overflowX: 'auto',\n whiteSpace: 'pre-wrap',\n wordBreak: 'break-word',\n});\n"],"mappings":""}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { description as e, root as t, title as n } from "./devtoolsEmptyState.css.js";
|
|
2
|
+
import { jsx as r, jsxs as i } from "react/jsx-runtime";
|
|
3
|
+
//#region src/empty_state/DevtoolsEmptyState.tsx
|
|
4
|
+
function a(a) {
|
|
5
|
+
let { description: o, primaryAction: s, secondaryAction: c, title: l } = a;
|
|
6
|
+
return /* @__PURE__ */ i("div", {
|
|
7
|
+
className: t,
|
|
8
|
+
role: "status",
|
|
9
|
+
children: [
|
|
10
|
+
/* @__PURE__ */ r("h2", {
|
|
11
|
+
className: n,
|
|
12
|
+
children: l
|
|
13
|
+
}),
|
|
14
|
+
/* @__PURE__ */ r("p", {
|
|
15
|
+
className: e,
|
|
16
|
+
children: o
|
|
17
|
+
}),
|
|
18
|
+
(s != null || c != null) && /* @__PURE__ */ i("div", {
|
|
19
|
+
className: "fmw3vj3",
|
|
20
|
+
children: [s ?? null, c ?? null]
|
|
21
|
+
})
|
|
22
|
+
]
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
//#endregion
|
|
26
|
+
export { a as DevtoolsEmptyState };
|
|
27
|
+
|
|
28
|
+
//# sourceMappingURL=DevtoolsEmptyState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DevtoolsEmptyState.js","names":[],"sources":["../../../src/empty_state/DevtoolsEmptyState.tsx"],"sourcesContent":["import type { JSX, ReactNode } from 'react';\nimport { actions, description, root, title } from './devtoolsEmptyState.css.js';\n\nexport type DevtoolsEmptyStateProps = {\n title: ReactNode;\n description: ReactNode;\n primaryAction?: ReactNode;\n secondaryAction?: ReactNode;\n};\n\n/** Render a standardized empty state with optional actions. */\nexport function DevtoolsEmptyState(\n props: DevtoolsEmptyStateProps,\n): JSX.Element {\n const {\n description: body,\n primaryAction,\n secondaryAction,\n title: heading,\n } = props;\n const hasActions = primaryAction != null || secondaryAction != null;\n\n return (\n <div className={root} role=\"status\">\n <h2 className={title}>{heading}</h2>\n <p className={description}>{body}</p>\n {hasActions && (\n <div className={actions}>\n {primaryAction ?? null}\n {secondaryAction ?? null}\n </div>\n )}\n </div>\n );\n}\n"],"mappings":";;;AAWA,SAAgB,EACd,GACa;CACb,IAAM,EACJ,aAAa,GACb,kBACA,oBACA,OAAO,MACL;AAGJ,QACE,kBAAC,OAAD;EAAK,WAAW;EAAM,MAAK;YAA3B;GACE,kBAAC,MAAD;IAAI,WAAW;cAAQ;IAAa,CAAA;GACpC,kBAAC,KAAD;IAAG,WAAW;cAAc;IAAS,CAAA;IALtB,KAAiB,QAAQ,KAAmB,SAOzD,kBAAC,OAAD;IAAK,WAAA;cAAL,CACG,KAAiB,MACjB,KAAmB,KAChB;;GAEJ"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/* empty css */
|
|
2
|
+
//#region src/empty_state/devtoolsEmptyState.css.ts
|
|
3
|
+
var e = "fmw3vj0", t = "fmw3vj1", n = "fmw3vj2", r = "fmw3vj3";
|
|
4
|
+
//#endregion
|
|
5
|
+
export { r as actions, n as description, e as root, t as title };
|
|
6
|
+
|
|
7
|
+
//# sourceMappingURL=devtoolsEmptyState.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"devtoolsEmptyState.css.js","names":[],"sources":["../../../src/empty_state/devtoolsEmptyState.css.ts"],"sourcesContent":["import { style } from '@vanilla-extract/css';\n\nexport const root = style({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n gap: '12px',\n maxWidth: '420px',\n padding: '24px',\n});\n\nexport const title = style({\n margin: 0,\n fontSize: '18px',\n fontWeight: 600,\n});\n\nexport const description = style({\n margin: 0,\n fontSize: '13px',\n lineHeight: 1.5,\n color: 'var(--pdt-text-muted)',\n});\n\nexport const actions = style({\n display: 'flex',\n alignItems: 'center',\n gap: '12px',\n flexWrap: 'wrap',\n});\n"],"mappings":""}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { badge as e, badgeDanger as t, badgeInfo as n, badgeNeutral as r, badgeSuccess as i, badgeWarning as a } from "./devtoolsFeedback.css.js";
|
|
2
|
+
import { jsx as o } from "react/jsx-runtime";
|
|
3
|
+
//#region src/feedback/DevtoolsBadge.tsx
|
|
4
|
+
function s(s) {
|
|
5
|
+
let { children: c, tone: l = "neutral" } = s, u = r;
|
|
6
|
+
switch (l) {
|
|
7
|
+
case "info":
|
|
8
|
+
u = n;
|
|
9
|
+
break;
|
|
10
|
+
case "success":
|
|
11
|
+
u = i;
|
|
12
|
+
break;
|
|
13
|
+
case "warning":
|
|
14
|
+
u = a;
|
|
15
|
+
break;
|
|
16
|
+
case "danger":
|
|
17
|
+
u = t;
|
|
18
|
+
break;
|
|
19
|
+
default:
|
|
20
|
+
u = r;
|
|
21
|
+
break;
|
|
22
|
+
}
|
|
23
|
+
return /* @__PURE__ */ o("span", {
|
|
24
|
+
className: `${e} ${u}`,
|
|
25
|
+
children: c
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
//#endregion
|
|
29
|
+
export { s as DevtoolsBadge };
|
|
30
|
+
|
|
31
|
+
//# sourceMappingURL=DevtoolsBadge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DevtoolsBadge.js","names":[],"sources":["../../../src/feedback/DevtoolsBadge.tsx"],"sourcesContent":["import type { JSX, PropsWithChildren } from 'react';\nimport {\n badge,\n badgeDanger,\n badgeInfo,\n badgeNeutral,\n badgeSuccess,\n badgeWarning,\n} from './devtoolsFeedback.css.js';\n\nexport type DevtoolsBadgeProps = PropsWithChildren<{\n tone?: 'neutral' | 'info' | 'success' | 'warning' | 'danger';\n}>;\n\n/** Render a compact badge with tone-specific styling. */\nexport function DevtoolsBadge(props: DevtoolsBadgeProps): JSX.Element {\n const { children, tone = 'neutral' } = props;\n\n let toneClass = badgeNeutral;\n switch (tone) {\n case 'info':\n toneClass = badgeInfo;\n break;\n case 'success':\n toneClass = badgeSuccess;\n break;\n case 'warning':\n toneClass = badgeWarning;\n break;\n case 'danger':\n toneClass = badgeDanger;\n break;\n case 'neutral':\n default:\n toneClass = badgeNeutral;\n break;\n }\n\n return <span className={`${badge} ${toneClass}`}>{children}</span>;\n}\n"],"mappings":";;;AAeA,SAAgB,EAAc,GAAwC;CACpE,IAAM,EAAE,aAAU,UAAO,cAAc,GAEnC,IAAY;AAChB,SAAQ,GAAR;EACE,KAAK;AACH,OAAY;AACZ;EACF,KAAK;AACH,OAAY;AACZ;EACF,KAAK;AACH,OAAY;AACZ;EACF,KAAK;AACH,OAAY;AACZ;EAEF;AACE,OAAY;AACZ;;AAGJ,QAAO,kBAAC,QAAD;EAAM,WAAW,GAAG,EAAM,GAAG;EAAc;EAAgB,CAAA"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { pill as e, pillHistory as t, pillNavigation as n, pillNeutral as r, pillPopstate as i, pillPreload as a, pillPrepare as o, pillSnapshot as s, pillUpdate as c } from "./devtoolsFeedback.css.js";
|
|
2
|
+
import { jsx as l } from "react/jsx-runtime";
|
|
3
|
+
//#region src/feedback/DevtoolsPill.tsx
|
|
4
|
+
function u(u) {
|
|
5
|
+
let { children: d, tone: f = "neutral" } = u, p = r;
|
|
6
|
+
switch (f) {
|
|
7
|
+
case "navigation":
|
|
8
|
+
p = n;
|
|
9
|
+
break;
|
|
10
|
+
case "update":
|
|
11
|
+
p = c;
|
|
12
|
+
break;
|
|
13
|
+
case "snapshot":
|
|
14
|
+
p = s;
|
|
15
|
+
break;
|
|
16
|
+
case "preload":
|
|
17
|
+
p = a;
|
|
18
|
+
break;
|
|
19
|
+
case "history":
|
|
20
|
+
p = t;
|
|
21
|
+
break;
|
|
22
|
+
case "popstate":
|
|
23
|
+
p = i;
|
|
24
|
+
break;
|
|
25
|
+
case "prepare":
|
|
26
|
+
p = o;
|
|
27
|
+
break;
|
|
28
|
+
default:
|
|
29
|
+
p = r;
|
|
30
|
+
break;
|
|
31
|
+
}
|
|
32
|
+
return /* @__PURE__ */ l("span", {
|
|
33
|
+
className: `${e} ${p}`,
|
|
34
|
+
children: d
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
//#endregion
|
|
38
|
+
export { u as DevtoolsPill };
|
|
39
|
+
|
|
40
|
+
//# sourceMappingURL=DevtoolsPill.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DevtoolsPill.js","names":[],"sources":["../../../src/feedback/DevtoolsPill.tsx"],"sourcesContent":["import type { JSX, PropsWithChildren } from 'react';\nimport {\n pill,\n pillHistory,\n pillNavigation,\n pillNeutral,\n pillPopstate,\n pillPrepare,\n pillPreload,\n pillSnapshot,\n pillUpdate,\n} from './devtoolsFeedback.css.js';\n\nexport type DevtoolsPillProps = PropsWithChildren<{\n tone?:\n | 'neutral'\n | 'navigation'\n | 'update'\n | 'snapshot'\n | 'preload'\n | 'history'\n | 'popstate'\n | 'prepare';\n}>;\n\n/** Render a small labeled pill for router/devtools events. */\nexport function DevtoolsPill(props: DevtoolsPillProps): JSX.Element {\n const { children, tone = 'neutral' } = props;\n\n let toneClass = pillNeutral;\n switch (tone) {\n case 'navigation':\n toneClass = pillNavigation;\n break;\n case 'update':\n toneClass = pillUpdate;\n break;\n case 'snapshot':\n toneClass = pillSnapshot;\n break;\n case 'preload':\n toneClass = pillPreload;\n break;\n case 'history':\n toneClass = pillHistory;\n break;\n case 'popstate':\n toneClass = pillPopstate;\n break;\n case 'prepare':\n toneClass = pillPrepare;\n break;\n case 'neutral':\n default:\n toneClass = pillNeutral;\n break;\n }\n\n return <span className={`${pill} ${toneClass}`}>{children}</span>;\n}\n"],"mappings":";;;AA0BA,SAAgB,EAAa,GAAuC;CAClE,IAAM,EAAE,aAAU,UAAO,cAAc,GAEnC,IAAY;AAChB,SAAQ,GAAR;EACE,KAAK;AACH,OAAY;AACZ;EACF,KAAK;AACH,OAAY;AACZ;EACF,KAAK;AACH,OAAY;AACZ;EACF,KAAK;AACH,OAAY;AACZ;EACF,KAAK;AACH,OAAY;AACZ;EACF,KAAK;AACH,OAAY;AACZ;EACF,KAAK;AACH,OAAY;AACZ;EAEF;AACE,OAAY;AACZ;;AAGJ,QAAO,kBAAC,QAAD;EAAM,WAAW,GAAG,EAAK,GAAG;EAAc;EAAgB,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { statusDot as e, statusIdle as t, statusLight as n, statusReady as r } from "./devtoolsFeedback.css.js";
|
|
2
|
+
import { jsx as i, jsxs as a } from "react/jsx-runtime";
|
|
3
|
+
//#region src/feedback/DevtoolsStatusLight.tsx
|
|
4
|
+
function o(o) {
|
|
5
|
+
let { state: s, label: c, title: l } = o, u = t;
|
|
6
|
+
return s === "ready" && (u = r), /* @__PURE__ */ a("span", {
|
|
7
|
+
className: n,
|
|
8
|
+
title: l,
|
|
9
|
+
children: [/* @__PURE__ */ i("span", {
|
|
10
|
+
className: `${e} ${u}`,
|
|
11
|
+
"aria-hidden": "true"
|
|
12
|
+
}), c ?? null]
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
//#endregion
|
|
16
|
+
export { o as DevtoolsStatusLight };
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=DevtoolsStatusLight.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DevtoolsStatusLight.js","names":[],"sources":["../../../src/feedback/DevtoolsStatusLight.tsx"],"sourcesContent":["import type { JSX, ReactNode } from 'react';\nimport {\n statusDot,\n statusIdle,\n statusLight,\n statusReady,\n} from './devtoolsFeedback.css.js';\n\nexport type DevtoolsStatusLightProps = {\n state: 'ready' | 'idle';\n label?: ReactNode;\n title?: string;\n};\n\n/** Render a status indicator dot with an optional text label. */\nexport function DevtoolsStatusLight(\n props: DevtoolsStatusLightProps,\n): JSX.Element {\n const { state, label, title } = props;\n let dotClass = statusIdle;\n if (state === 'ready') {\n dotClass = statusReady;\n }\n\n return (\n <span className={statusLight} title={title}>\n <span className={`${statusDot} ${dotClass}`} aria-hidden=\"true\" />\n {label ?? null}\n </span>\n );\n}\n"],"mappings":";;;AAeA,SAAgB,EACd,GACa;CACb,IAAM,EAAE,UAAO,UAAO,aAAU,GAC5B,IAAW;AAKf,QAJI,MAAU,YACZ,IAAW,IAIX,kBAAC,QAAD;EAAM,WAAW;EAAoB;YAArC,CACE,kBAAC,QAAD;GAAM,WAAW,GAAG,EAAU,GAAG;GAAY,eAAY;GAAS,CAAA,EACjE,KAAS,KACL"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/* empty css */
|
|
2
|
+
//#region src/feedback/devtoolsFeedback.css.ts
|
|
3
|
+
var e = "kewyeu0", t = "kewyeu1", n = "kewyeu2", r = "kewyeu3", i = "kewyeu4", a = "kewyeu5", o = "kewyeu6", s = "kewyeu7", c = "kewyeu8", l = "kewyeu9", u = "kewyeua", d = "kewyeub", f = "kewyeuc", p = "kewyeud", m = "kewyeue", h = "kewyeuf", g = "kewyeug", _ = "kewyeuh", v = "kewyeui";
|
|
4
|
+
//#endregion
|
|
5
|
+
export { e as badge, a as badgeDanger, n as badgeInfo, t as badgeNeutral, r as badgeSuccess, i as badgeWarning, o as pill, f as pillHistory, c as pillNavigation, s as pillNeutral, p as pillPopstate, d as pillPreload, m as pillPrepare, u as pillSnapshot, l as pillUpdate, g as statusDot, v as statusIdle, h as statusLight, _ as statusReady };
|
|
6
|
+
|
|
7
|
+
//# sourceMappingURL=devtoolsFeedback.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"devtoolsFeedback.css.js","names":[],"sources":["../../../src/feedback/devtoolsFeedback.css.ts"],"sourcesContent":["import { style } from '@vanilla-extract/css';\n\nexport const badge = style({\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '4px',\n minHeight: '20px',\n padding: '2px 8px',\n borderRadius: '999px',\n border: '1px solid transparent',\n fontSize: '11px',\n lineHeight: 1.2,\n whiteSpace: 'nowrap',\n backgroundColor: 'var(--pdt-surface-muted)',\n color: 'var(--pdt-text-muted)',\n});\n\nexport const badgeNeutral = style({\n backgroundColor: 'var(--pdt-surface-muted)',\n borderColor: 'var(--pdt-border)',\n color: 'var(--pdt-text-muted)',\n});\n\nexport const badgeInfo = style({\n backgroundColor: 'color-mix(in srgb, var(--pdt-info) 12%, transparent)',\n borderColor: 'color-mix(in srgb, var(--pdt-info) 24%, transparent)',\n color: 'var(--pdt-info)',\n});\n\nexport const badgeSuccess = style({\n backgroundColor: 'color-mix(in srgb, var(--pdt-success) 12%, transparent)',\n borderColor: 'color-mix(in srgb, var(--pdt-success) 24%, transparent)',\n color: 'var(--pdt-success)',\n});\n\nexport const badgeWarning = style({\n backgroundColor: 'color-mix(in srgb, var(--pdt-warning) 12%, transparent)',\n borderColor: 'color-mix(in srgb, var(--pdt-warning) 24%, transparent)',\n color: 'var(--pdt-warning)',\n});\n\nexport const badgeDanger = style({\n backgroundColor: 'color-mix(in srgb, var(--pdt-danger) 12%, transparent)',\n borderColor: 'color-mix(in srgb, var(--pdt-danger) 24%, transparent)',\n color: 'var(--pdt-danger)',\n});\n\nexport const pill = style({\n display: 'inline-flex',\n alignItems: 'center',\n minHeight: '20px',\n padding: '2px 8px',\n borderRadius: '999px',\n border: '1px solid var(--pdt-border)',\n fontSize: '11px',\n lineHeight: 1.2,\n whiteSpace: 'nowrap',\n backgroundColor: 'transparent',\n color: 'var(--pdt-text)',\n});\n\nexport const pillNeutral = style({\n backgroundColor: 'var(--pdt-surface-muted)',\n borderColor: 'var(--pdt-border)',\n});\n\nexport const pillNavigation = style({\n backgroundColor: 'color-mix(in srgb, var(--pdt-accent) 10%, transparent)',\n borderColor: 'color-mix(in srgb, var(--pdt-accent) 24%, transparent)',\n});\n\nexport const pillUpdate = style({\n backgroundColor: 'color-mix(in srgb, var(--pdt-info) 10%, transparent)',\n borderColor: 'color-mix(in srgb, var(--pdt-info) 24%, transparent)',\n});\n\nexport const pillSnapshot = style({\n backgroundColor: 'rgba(99, 102, 241, 0.12)',\n borderColor: 'rgba(99, 102, 241, 0.28)',\n});\n\nexport const pillPreload = style({\n backgroundColor: 'color-mix(in srgb, var(--pdt-success) 10%, transparent)',\n borderColor: 'color-mix(in srgb, var(--pdt-success) 24%, transparent)',\n});\n\nexport const pillHistory = style({\n backgroundColor: 'rgba(147, 51, 234, 0.12)',\n borderColor: 'rgba(147, 51, 234, 0.28)',\n});\n\nexport const pillPopstate = style({\n backgroundColor: 'rgba(59, 130, 246, 0.12)',\n borderColor: 'rgba(59, 130, 246, 0.28)',\n});\n\nexport const pillPrepare = style({\n backgroundColor: 'rgba(217, 119, 6, 0.12)',\n borderColor: 'rgba(217, 119, 6, 0.28)',\n});\n\nexport const statusLight = style({\n display: 'inline-flex',\n alignItems: 'center',\n gap: '6px',\n minHeight: '20px',\n fontSize: '12px',\n color: 'var(--pdt-text-muted)',\n});\n\nexport const statusDot = style({\n width: '10px',\n height: '10px',\n borderRadius: '50%',\n backgroundColor: 'var(--pdt-border)',\n});\n\nexport const statusReady = style({\n backgroundColor: 'var(--pdt-success)',\n boxShadow:\n '0 0 0 2px color-mix(in srgb, var(--pdt-success) 30%, transparent)',\n});\n\nexport const statusIdle = style({\n backgroundColor: 'var(--pdt-border)',\n boxShadow: 'inset 0 0 0 1px var(--pdt-text-muted)',\n});\n"],"mappings":""}
|
package/lib/esm/index.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { DevtoolsCodeBlock as e } from "./content/DevtoolsCodeBlock.js";
|
|
2
|
+
import { DevtoolsEmptyState as t } from "./empty_state/DevtoolsEmptyState.js";
|
|
3
|
+
import { DevtoolsBadge as n } from "./feedback/DevtoolsBadge.js";
|
|
4
|
+
import { DevtoolsPill as r } from "./feedback/DevtoolsPill.js";
|
|
5
|
+
import { DevtoolsStatusLight as i } from "./feedback/DevtoolsStatusLight.js";
|
|
6
|
+
import { DevtoolsTheme as a } from "./theme/DevtoolsTheme.js";
|
|
7
|
+
import { DevtoolsCard as o } from "./surfaces/DevtoolsCard.js";
|
|
8
|
+
import { DevtoolsSection as s } from "./surfaces/DevtoolsSection.js";
|
|
9
|
+
import { DevtoolsTabs as c } from "./navigation/DevtoolsTabs.js";
|
|
10
|
+
import { DevtoolsToolbar as l, DevtoolsToolbarGrow as u } from "./toolbar/DevtoolsToolbar.js";
|
|
11
|
+
import { DevtoolsToolbarButton as d } from "./toolbar/DevtoolsToolbarButton.js";
|
|
12
|
+
import { DevtoolsToolbarSeparator as f } from "./toolbar/DevtoolsToolbarSeparator.js";
|
|
13
|
+
import { DevtoolsSplitView as p } from "./layout/DevtoolsSplitView.js";
|
|
14
|
+
export { n as DevtoolsBadge, o as DevtoolsCard, e as DevtoolsCodeBlock, t as DevtoolsEmptyState, r as DevtoolsPill, s as DevtoolsSection, p as DevtoolsSplitView, i as DevtoolsStatusLight, c as DevtoolsTabs, a as DevtoolsTheme, l as DevtoolsToolbar, d as DevtoolsToolbarButton, u as DevtoolsToolbarGrow, f as DevtoolsToolbarSeparator };
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { main as e, mainBordered as t, root as n } from "./devtoolsSplitView.css.js";
|
|
2
|
+
import { Fragment as r, jsx as i, jsxs as a } from "react/jsx-runtime";
|
|
3
|
+
import { useCallback as o, useEffect as s, useRef as c } from "react";
|
|
4
|
+
//#region src/layout/DevtoolsSplitView.tsx
|
|
5
|
+
function l(e, t, n) {
|
|
6
|
+
return e < t ? t : e > n ? n : e;
|
|
7
|
+
}
|
|
8
|
+
function u(u) {
|
|
9
|
+
let { main: d, maxSidebarWidth: f, minSidebarWidth: p, onSidebarWidthChange: m, sidebar: h, sidebarLabel: g, sidebarWidth: _ } = u, v = c({
|
|
10
|
+
active: !1,
|
|
11
|
+
startX: 0,
|
|
12
|
+
width: _
|
|
13
|
+
}), y = o((e) => {
|
|
14
|
+
let t = v.current;
|
|
15
|
+
if (!t.active) return;
|
|
16
|
+
let n = e.clientX - t.startX;
|
|
17
|
+
m(l(t.width - n, p, f));
|
|
18
|
+
}, [
|
|
19
|
+
f,
|
|
20
|
+
p,
|
|
21
|
+
m
|
|
22
|
+
]), b = o(() => {
|
|
23
|
+
v.current.active && (v.current.active = !1, window.removeEventListener("pointermove", y), window.removeEventListener("pointerup", b));
|
|
24
|
+
}, [y]);
|
|
25
|
+
s(() => () => {
|
|
26
|
+
window.removeEventListener("pointermove", y), window.removeEventListener("pointerup", b);
|
|
27
|
+
}, [y, b]);
|
|
28
|
+
let x = o((e) => {
|
|
29
|
+
h != null && (e.preventDefault(), v.current = {
|
|
30
|
+
active: !0,
|
|
31
|
+
startX: e.clientX,
|
|
32
|
+
width: _
|
|
33
|
+
}, window.addEventListener("pointermove", y), window.addEventListener("pointerup", b));
|
|
34
|
+
}, [
|
|
35
|
+
y,
|
|
36
|
+
b,
|
|
37
|
+
h,
|
|
38
|
+
_
|
|
39
|
+
]), S = o((e) => {
|
|
40
|
+
if (h == null) return;
|
|
41
|
+
let t = 20;
|
|
42
|
+
if (e.shiftKey && (t = 40), e.key === "ArrowLeft") {
|
|
43
|
+
e.preventDefault(), m(l(_ - t, p, f));
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
e.key === "ArrowRight" && (e.preventDefault(), m(l(_ + t, p, f)));
|
|
47
|
+
}, [
|
|
48
|
+
f,
|
|
49
|
+
p,
|
|
50
|
+
m,
|
|
51
|
+
h,
|
|
52
|
+
_
|
|
53
|
+
]), C = e;
|
|
54
|
+
return h != null && (C = `${e} ${t}`), /* @__PURE__ */ a("div", {
|
|
55
|
+
className: n,
|
|
56
|
+
children: [/* @__PURE__ */ i("div", {
|
|
57
|
+
className: C,
|
|
58
|
+
children: d
|
|
59
|
+
}), h != null && /* @__PURE__ */ a(r, { children: [/* @__PURE__ */ i("div", {
|
|
60
|
+
className: "_1m64tse3",
|
|
61
|
+
role: "separator",
|
|
62
|
+
"aria-orientation": "vertical",
|
|
63
|
+
"aria-label": g,
|
|
64
|
+
"aria-valuemin": p,
|
|
65
|
+
"aria-valuemax": f,
|
|
66
|
+
"aria-valuenow": Math.round(_),
|
|
67
|
+
tabIndex: 0,
|
|
68
|
+
onPointerDown: x,
|
|
69
|
+
onKeyDown: S,
|
|
70
|
+
children: /* @__PURE__ */ i("span", { className: "_1m64tse4" })
|
|
71
|
+
}), /* @__PURE__ */ i("section", {
|
|
72
|
+
className: "_1m64tse5",
|
|
73
|
+
"aria-label": g,
|
|
74
|
+
style: { width: `${_}px` },
|
|
75
|
+
children: h
|
|
76
|
+
})] })]
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
//#endregion
|
|
80
|
+
export { u as DevtoolsSplitView };
|
|
81
|
+
|
|
82
|
+
//# sourceMappingURL=DevtoolsSplitView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DevtoolsSplitView.js","names":[],"sources":["../../../src/layout/DevtoolsSplitView.tsx"],"sourcesContent":["import {\n useCallback,\n useEffect,\n useRef,\n type JSX,\n type KeyboardEvent as ReactKeyboardEvent,\n type PointerEvent as ReactPointerEvent,\n type ReactNode,\n} from 'react';\nimport {\n main,\n mainBordered,\n resizer,\n resizerLine,\n root,\n sidebar,\n} from './devtoolsSplitView.css.js';\n\ntype DragState = {\n active: boolean;\n startX: number;\n width: number;\n};\n\nexport type DevtoolsSplitViewProps = {\n main: ReactNode;\n sidebar: ReactNode | null;\n sidebarWidth: number;\n minSidebarWidth: number;\n maxSidebarWidth: number;\n onSidebarWidthChange: (width: number) => void;\n sidebarLabel?: string;\n};\n\n/** Clamp a sidebar width within the configured resize bounds. */\nfunction clampWidth(value: number, minWidth: number, maxWidth: number): number {\n if (value < minWidth) {\n return minWidth;\n }\n if (value > maxWidth) {\n return maxWidth;\n }\n return value;\n}\n\n/** Render a split view with a resizable optional sidebar. */\nexport function DevtoolsSplitView(props: DevtoolsSplitViewProps): JSX.Element {\n const {\n main: mainContent,\n maxSidebarWidth,\n minSidebarWidth,\n onSidebarWidthChange,\n sidebar: sidebarContent,\n sidebarLabel,\n sidebarWidth,\n } = props;\n const dragRef = useRef<DragState>({\n active: false,\n startX: 0,\n width: sidebarWidth,\n });\n\n const handlePointerMove = useCallback(\n (event: PointerEvent) => {\n const state = dragRef.current;\n if (!state.active) {\n return;\n }\n const delta = event.clientX - state.startX;\n onSidebarWidthChange(\n clampWidth(state.width - delta, minSidebarWidth, maxSidebarWidth),\n );\n },\n [maxSidebarWidth, minSidebarWidth, onSidebarWidthChange],\n );\n\n const handlePointerUp = useCallback(() => {\n if (!dragRef.current.active) {\n return;\n }\n dragRef.current.active = false;\n window.removeEventListener('pointermove', handlePointerMove);\n window.removeEventListener('pointerup', handlePointerUp);\n }, [handlePointerMove]);\n\n useEffect(() => {\n return () => {\n window.removeEventListener('pointermove', handlePointerMove);\n window.removeEventListener('pointerup', handlePointerUp);\n };\n }, [handlePointerMove, handlePointerUp]);\n\n const handlePointerDown = useCallback(\n (event: ReactPointerEvent<HTMLDivElement>) => {\n if (sidebarContent == null) {\n return;\n }\n event.preventDefault();\n dragRef.current = {\n active: true,\n startX: event.clientX,\n width: sidebarWidth,\n };\n window.addEventListener('pointermove', handlePointerMove);\n window.addEventListener('pointerup', handlePointerUp);\n },\n [handlePointerMove, handlePointerUp, sidebarContent, sidebarWidth],\n );\n\n const handleKeyDown = useCallback(\n (event: ReactKeyboardEvent<HTMLDivElement>) => {\n if (sidebarContent == null) {\n return;\n }\n let step = 20;\n if (event.shiftKey) {\n step = 40;\n }\n if (event.key === 'ArrowLeft') {\n event.preventDefault();\n onSidebarWidthChange(\n clampWidth(sidebarWidth - step, minSidebarWidth, maxSidebarWidth),\n );\n return;\n }\n if (event.key === 'ArrowRight') {\n event.preventDefault();\n onSidebarWidthChange(\n clampWidth(sidebarWidth + step, minSidebarWidth, maxSidebarWidth),\n );\n }\n },\n [\n maxSidebarWidth,\n minSidebarWidth,\n onSidebarWidthChange,\n sidebarContent,\n sidebarWidth,\n ],\n );\n\n let mainClassName = main;\n if (sidebarContent != null) {\n mainClassName = `${main} ${mainBordered}`;\n }\n\n return (\n <div className={root}>\n <div className={mainClassName}>{mainContent}</div>\n {sidebarContent != null && (\n <>\n <div\n className={resizer}\n role=\"separator\"\n aria-orientation=\"vertical\"\n aria-label={sidebarLabel}\n aria-valuemin={minSidebarWidth}\n aria-valuemax={maxSidebarWidth}\n aria-valuenow={Math.round(sidebarWidth)}\n tabIndex={0}\n onPointerDown={handlePointerDown}\n onKeyDown={handleKeyDown}\n >\n <span className={resizerLine} />\n </div>\n <section\n className={sidebar}\n aria-label={sidebarLabel}\n style={{ width: `${sidebarWidth}px` }}\n >\n {sidebarContent}\n </section>\n </>\n )}\n </div>\n );\n}\n"],"mappings":";;;;AAmCA,SAAS,EAAW,GAAe,GAAkB,GAA0B;AAO7E,QANI,IAAQ,IACH,IAEL,IAAQ,IACH,IAEF;;AAIT,SAAgB,EAAkB,GAA4C;CAC5E,IAAM,EACJ,MAAM,GACN,oBACA,oBACA,yBACA,SAAS,GACT,iBACA,oBACE,GACE,IAAU,EAAkB;EAChC,QAAQ;EACR,QAAQ;EACR,OAAO;EACR,CAAC,EAEI,IAAoB,GACvB,MAAwB;EACvB,IAAM,IAAQ,EAAQ;AACtB,MAAI,CAAC,EAAM,OACT;EAEF,IAAM,IAAQ,EAAM,UAAU,EAAM;AACpC,IACE,EAAW,EAAM,QAAQ,GAAO,GAAiB,EAAgB,CAClE;IAEH;EAAC;EAAiB;EAAiB;EAAqB,CACzD,EAEK,IAAkB,QAAkB;AACnC,IAAQ,QAAQ,WAGrB,EAAQ,QAAQ,SAAS,IACzB,OAAO,oBAAoB,eAAe,EAAkB,EAC5D,OAAO,oBAAoB,aAAa,EAAgB;IACvD,CAAC,EAAkB,CAAC;AAEvB,eACe;AAEX,EADA,OAAO,oBAAoB,eAAe,EAAkB,EAC5D,OAAO,oBAAoB,aAAa,EAAgB;IAEzD,CAAC,GAAmB,EAAgB,CAAC;CAExC,IAAM,IAAoB,GACvB,MAA6C;AACxC,OAAkB,SAGtB,EAAM,gBAAgB,EACtB,EAAQ,UAAU;GAChB,QAAQ;GACR,QAAQ,EAAM;GACd,OAAO;GACR,EACD,OAAO,iBAAiB,eAAe,EAAkB,EACzD,OAAO,iBAAiB,aAAa,EAAgB;IAEvD;EAAC;EAAmB;EAAiB;EAAgB;EAAa,CACnE,EAEK,IAAgB,GACnB,MAA8C;AAC7C,MAAI,KAAkB,KACpB;EAEF,IAAI,IAAO;AAIX,MAHI,EAAM,aACR,IAAO,KAEL,EAAM,QAAQ,aAAa;AAE7B,GADA,EAAM,gBAAgB,EACtB,EACE,EAAW,IAAe,GAAM,GAAiB,EAAgB,CAClE;AACD;;AAEF,EAAI,EAAM,QAAQ,iBAChB,EAAM,gBAAgB,EACtB,EACE,EAAW,IAAe,GAAM,GAAiB,EAAgB,CAClE;IAGL;EACE;EACA;EACA;EACA;EACA;EACD,CACF,EAEG,IAAgB;AAKpB,QAJI,KAAkB,SACpB,IAAgB,GAAG,EAAK,GAAG,MAI3B,kBAAC,OAAD;EAAK,WAAW;YAAhB,CACE,kBAAC,OAAD;GAAK,WAAW;aAAgB;GAAkB,CAAA,EACjD,KAAkB,QACjB,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,OAAD;GACE,WAAA;GACA,MAAK;GACL,oBAAiB;GACjB,cAAY;GACZ,iBAAe;GACf,iBAAe;GACf,iBAAe,KAAK,MAAM,EAAa;GACvC,UAAU;GACV,eAAe;GACf,WAAW;aAEX,kBAAC,QAAD,EAAM,WAAA,aAA0B,CAAA;GAC5B,CAAA,EACN,kBAAC,WAAD;GACE,WAAA;GACA,cAAY;GACZ,OAAO,EAAE,OAAO,GAAG,EAAa,KAAK;aAEpC;GACO,CAAA,CACT,EAAA,CAAA,CAED"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/* empty css */
|
|
2
|
+
//#region src/layout/devtoolsSplitView.css.ts
|
|
3
|
+
var e = "_1m64tse0", t = "_1m64tse1", n = "_1m64tse2", r = "_1m64tse3", i = "_1m64tse4", a = "_1m64tse5";
|
|
4
|
+
//#endregion
|
|
5
|
+
export { t as main, n as mainBordered, r as resizer, i as resizerLine, e as root, a as sidebar };
|
|
6
|
+
|
|
7
|
+
//# sourceMappingURL=devtoolsSplitView.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"devtoolsSplitView.css.js","names":[],"sources":["../../../src/layout/devtoolsSplitView.css.ts"],"sourcesContent":["import { style } from '@vanilla-extract/css';\n\nexport const root = style({\n flex: 1,\n display: 'flex',\n alignItems: 'stretch',\n minHeight: 0,\n});\n\nexport const main = style({\n flex: '1 1 auto',\n minWidth: 0,\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: 'var(--pdt-surface)',\n overflow: 'hidden',\n});\n\nexport const mainBordered = style({\n borderRight: '1px solid var(--pdt-border)',\n});\n\nexport const resizer = style({\n flex: '0 0 8px',\n position: 'relative',\n cursor: 'col-resize',\n backgroundColor: 'transparent',\n selectors: {\n '&:focus-visible': {\n outline: 'none',\n },\n },\n});\n\nexport const resizerLine = style({\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: '50%',\n width: '2px',\n transform: 'translateX(-50%)',\n borderRadius: '2px',\n backgroundColor: 'var(--pdt-border)',\n selectors: {\n [`${resizer}:hover &`]: {\n backgroundColor: 'var(--pdt-accent)',\n },\n [`${resizer}:focus-visible &`]: {\n backgroundColor: 'var(--pdt-accent)',\n },\n },\n});\n\nexport const sidebar = style({\n flex: '0 0 auto',\n minWidth: '280px',\n maxWidth: '90%',\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n backgroundColor: 'var(--pdt-surface)',\n});\n"],"mappings":""}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { container as e, tab as t, tabSelected as n } from "./devtoolsTabs.css.js";
|
|
2
|
+
import { jsx as r } from "react/jsx-runtime";
|
|
3
|
+
//#region src/navigation/DevtoolsTabs.tsx
|
|
4
|
+
function i(i) {
|
|
5
|
+
let { ariaLabel: a, items: o, onSelect: s, selectedId: c } = i;
|
|
6
|
+
return /* @__PURE__ */ r("div", {
|
|
7
|
+
className: e,
|
|
8
|
+
role: "tablist",
|
|
9
|
+
"aria-label": a,
|
|
10
|
+
children: o.map((e) => {
|
|
11
|
+
let i = e.id === c, a = t;
|
|
12
|
+
return i && (a = `${t} ${n}`), /* @__PURE__ */ r("button", {
|
|
13
|
+
type: "button",
|
|
14
|
+
role: "tab",
|
|
15
|
+
"aria-selected": i,
|
|
16
|
+
className: a,
|
|
17
|
+
onClick: () => {
|
|
18
|
+
s(e.id);
|
|
19
|
+
},
|
|
20
|
+
children: e.label
|
|
21
|
+
}, e.id);
|
|
22
|
+
})
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
//#endregion
|
|
26
|
+
export { i as DevtoolsTabs };
|
|
27
|
+
|
|
28
|
+
//# sourceMappingURL=DevtoolsTabs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DevtoolsTabs.js","names":[],"sources":["../../../src/navigation/DevtoolsTabs.tsx"],"sourcesContent":["import type { JSX, ReactNode } from 'react';\nimport { container, tab, tabSelected } from './devtoolsTabs.css.js';\n\nexport type DevtoolsTabItem = {\n id: string;\n label: ReactNode;\n};\n\nexport type DevtoolsTabsProps = {\n items: readonly DevtoolsTabItem[];\n selectedId: string;\n onSelect: (id: string) => void;\n ariaLabel?: string;\n};\n\n/** Render a simple tab list with controlled selection. */\nexport function DevtoolsTabs(props: DevtoolsTabsProps): JSX.Element {\n const { ariaLabel, items, onSelect, selectedId } = props;\n\n return (\n <div className={container} role=\"tablist\" aria-label={ariaLabel}>\n {items.map((item) => {\n const isSelected = item.id === selectedId;\n let className = tab;\n if (isSelected) {\n className = `${tab} ${tabSelected}`;\n }\n\n return (\n <button\n key={item.id}\n type=\"button\"\n role=\"tab\"\n aria-selected={isSelected}\n className={className}\n onClick={() => {\n onSelect(item.id);\n }}\n >\n {item.label}\n </button>\n );\n })}\n </div>\n );\n}\n"],"mappings":";;;AAgBA,SAAgB,EAAa,GAAuC;CAClE,IAAM,EAAE,cAAW,UAAO,aAAU,kBAAe;AAEnD,QACE,kBAAC,OAAD;EAAK,WAAW;EAAW,MAAK;EAAU,cAAY;YACnD,EAAM,KAAK,MAAS;GACnB,IAAM,IAAa,EAAK,OAAO,GAC3B,IAAY;AAKhB,UAJI,MACF,IAAY,GAAG,EAAI,GAAG,MAItB,kBAAC,UAAD;IAEE,MAAK;IACL,MAAK;IACL,iBAAe;IACJ;IACX,eAAe;AACb,OAAS,EAAK,GAAG;;cAGlB,EAAK;IACC,EAVF,EAAK,GAUH;IAEX;EACE,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"devtoolsTabs.css.js","names":[],"sources":["../../../src/navigation/devtoolsTabs.css.ts"],"sourcesContent":["import { style } from '@vanilla-extract/css';\n\nexport const container = style({\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n padding: '12px 16px',\n borderBottom: '1px solid var(--pdt-border)',\n backgroundColor: 'var(--pdt-surface)',\n});\n\nexport const tab = style({\n appearance: 'none',\n border: '1px solid var(--pdt-border)',\n borderRadius: '999px',\n backgroundColor: 'var(--pdt-bg)',\n color: 'var(--pdt-text)',\n padding: '6px 16px',\n fontSize: '12px',\n cursor: 'pointer',\n transition: 'background-color 150ms ease, border-color 150ms ease',\n selectors: {\n '&:hover:not(:disabled)': {\n backgroundColor: 'var(--pdt-border)',\n },\n '&:focus-visible': {\n outline: 'none',\n boxShadow: 'var(--pdt-shadow-focus)',\n },\n '&:disabled': {\n opacity: 0.6,\n cursor: 'default',\n },\n },\n});\n\nexport const tabSelected = style({\n backgroundColor: 'var(--pdt-accent)',\n borderColor: 'var(--pdt-accent)',\n color: '#ffffff',\n});\n"],"mappings":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
._1sbiiq0{background-color:var(--pdt-code-bg);white-space:pre-wrap;word-break:break-word;border-radius:6px;margin:0;padding:12px;font-size:12px;line-height:1.4;overflow-x:auto}.fmw3vj0{flex-direction:column;align-items:flex-start;gap:12px;max-width:420px;padding:24px;display:flex}.fmw3vj1{margin:0;font-size:18px;font-weight:600}.fmw3vj2{color:var(--pdt-text-muted);margin:0;font-size:13px;line-height:1.5}.fmw3vj3{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.kewyeu0{white-space:nowrap;background-color:var(--pdt-surface-muted);min-height:20px;color:var(--pdt-text-muted);border:1px solid #0000;border-radius:999px;justify-content:center;align-items:center;gap:4px;padding:2px 8px;font-size:11px;line-height:1.2;display:inline-flex}.kewyeu1{background-color:var(--pdt-surface-muted);border-color:var(--pdt-border);color:var(--pdt-text-muted)}.kewyeu2{background-color:color-mix(in srgb, var(--pdt-info) 12%, transparent);border-color:color-mix(in srgb, var(--pdt-info) 24%, transparent);color:var(--pdt-info)}.kewyeu3{background-color:color-mix(in srgb, var(--pdt-success) 12%, transparent);border-color:color-mix(in srgb, var(--pdt-success) 24%, transparent);color:var(--pdt-success)}.kewyeu4{background-color:color-mix(in srgb, var(--pdt-warning) 12%, transparent);border-color:color-mix(in srgb, var(--pdt-warning) 24%, transparent);color:var(--pdt-warning)}.kewyeu5{background-color:color-mix(in srgb, var(--pdt-danger) 12%, transparent);border-color:color-mix(in srgb, var(--pdt-danger) 24%, transparent);color:var(--pdt-danger)}.kewyeu6{border:1px solid var(--pdt-border);white-space:nowrap;min-height:20px;color:var(--pdt-text);background-color:#0000;border-radius:999px;align-items:center;padding:2px 8px;font-size:11px;line-height:1.2;display:inline-flex}.kewyeu7{background-color:var(--pdt-surface-muted);border-color:var(--pdt-border)}.kewyeu8{background-color:color-mix(in srgb, var(--pdt-accent) 10%, transparent);border-color:color-mix(in srgb, var(--pdt-accent) 24%, transparent)}.kewyeu9{background-color:color-mix(in srgb, var(--pdt-info) 10%, transparent);border-color:color-mix(in srgb, var(--pdt-info) 24%, transparent)}.kewyeua{background-color:#6366f11f;border-color:#6366f147}.kewyeub{background-color:color-mix(in srgb, var(--pdt-success) 10%, transparent);border-color:color-mix(in srgb, var(--pdt-success) 24%, transparent)}.kewyeuc{background-color:#9333ea1f;border-color:#9333ea47}.kewyeud{background-color:#3b82f61f;border-color:#3b82f647}.kewyeue{background-color:#d977061f;border-color:#d9770647}.kewyeuf{min-height:20px;color:var(--pdt-text-muted);align-items:center;gap:6px;font-size:12px;display:inline-flex}.kewyeug{background-color:var(--pdt-border);border-radius:50%;width:10px;height:10px}.kewyeuh{background-color:var(--pdt-success);box-shadow:0 0 0 2px color-mix(in srgb, var(--pdt-success) 30%, transparent)}.kewyeui{background-color:var(--pdt-border);box-shadow:inset 0 0 0 1px var(--pdt-text-muted)}._1m64tse0{flex:1;align-items:stretch;min-height:0;display:flex}._1m64tse1{background-color:var(--pdt-surface);flex-direction:column;flex:auto;min-width:0;display:flex;overflow:hidden}._1m64tse2{border-right:1px solid var(--pdt-border)}._1m64tse3{cursor:col-resize;background-color:#0000;flex:0 0 8px;position:relative}._1m64tse3:focus-visible{outline:none}._1m64tse4{background-color:var(--pdt-border);border-radius:2px;width:2px;position:absolute;top:0;bottom:0;left:50%;transform:translate(-50%)}._1m64tse3:hover ._1m64tse4,._1m64tse3:focus-visible ._1m64tse4{background-color:var(--pdt-accent)}._1m64tse5{background-color:var(--pdt-surface);flex-direction:column;flex:none;min-width:280px;max-width:90%;display:flex;overflow:hidden}.vzai5r0{border-bottom:1px solid var(--pdt-border);background-color:var(--pdt-surface);align-items:center;gap:8px;padding:12px 16px;display:flex}.vzai5r1{appearance:none;border:1px solid var(--pdt-border);background-color:var(--pdt-bg);color:var(--pdt-text);cursor:pointer;border-radius:999px;padding:6px 16px;font-size:12px;transition:background-color .15s,border-color .15s}.vzai5r1:hover:not(:disabled){background-color:var(--pdt-border)}.vzai5r1:focus-visible{box-shadow:var(--pdt-shadow-focus);outline:none}.vzai5r1:disabled{opacity:.6;cursor:default}.vzai5r2{background-color:var(--pdt-accent);border-color:var(--pdt-accent);color:#fff}.ca0gms0{border:1px solid var(--pdt-border);background-color:var(--pdt-surface);border-radius:8px;flex-direction:column;gap:12px;padding:16px;display:flex}.ca0gms1{justify-content:space-between;align-items:center;gap:12px;display:flex}.ca0gms2{margin:0;font-size:14px;font-weight:600}.ca0gms3{flex-direction:column;gap:8px;display:flex}.ca0gms4{justify-content:space-between;align-items:center;gap:12px;display:flex}.ca0gms5{text-transform:uppercase;letter-spacing:.04em;margin:0;font-size:13px;font-weight:600}._11l3mw40{--pdt-bg:#f3f4f6;--pdt-surface:#fff;--pdt-surface-muted:#f8fafc;--pdt-border:#d1d5db;--pdt-border-strong:#9ca3af;--pdt-text:#111827;--pdt-text-muted:#6b7280;--pdt-accent:#2563eb;--pdt-info:#0284c7;--pdt-success:#15803d;--pdt-warning:#c2410c;--pdt-danger:#dc2626;--pdt-code-bg:#0f172a0f;--pdt-shadow-focus:0 0 0 2px #2563eb59;background-color:var(--pdt-bg);color:var(--pdt-text);--lightningcss-light:initial;--lightningcss-dark: ;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;min-height:100vh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif}@media (prefers-color-scheme:dark){._11l3mw40{--lightningcss-light: ;--lightningcss-dark:initial}}._11l3mw40,._11l3mw40 *{box-sizing:border-box}._11l3mw40 a{color:var(--pdt-accent)}._11l3mw40 button,._11l3mw40 input,._11l3mw40 select,._11l3mw40 textarea{font:inherit}._11l3mw40 pre,._11l3mw40 code{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace}@media (prefers-color-scheme:dark){._11l3mw40{--pdt-bg:#1f1f1f;--pdt-surface:#242424;--pdt-surface-muted:#2d2d2d;--pdt-border:#3f3f46;--pdt-border-strong:#52525b;--pdt-text:#f5f5f5;--pdt-text-muted:#a1a1aa;--pdt-accent:#60a5fa;--pdt-info:#38bdf8;--pdt-success:#4ade80;--pdt-warning:#fb923c;--pdt-danger:#f87171;--pdt-code-bg:#94a3b81f;--pdt-shadow-focus:0 0 0 2px #60a5fa59}}._1q96x230{border-bottom:1px solid var(--pdt-border);background-color:var(--pdt-surface);align-items:center;gap:8px;padding:6px 16px;display:flex}._1q96x231{flex:1}._1q96x232{background-color:var(--pdt-border);width:1px;height:18px}._1q96x233{border:1px solid var(--pdt-border);background-color:var(--pdt-bg);min-height:28px;color:var(--pdt-text);cursor:pointer;border-radius:4px;align-items:center;gap:6px;padding:4px 12px;font-size:12px;transition:background-color .15s,border-color .15s;display:inline-flex}._1q96x233:hover:not(:disabled){background-color:var(--pdt-border)}._1q96x233:focus-visible{box-shadow:var(--pdt-shadow-focus);outline:none}._1q96x233:disabled{opacity:.5;cursor:not-allowed}._1q96x234{background-color:var(--pdt-warning);border-color:var(--pdt-warning);color:#fff}
|
|
2
|
+
/*$vite$:1*/
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { card as e, cardTitle as t } from "./devtoolsSurfaces.css.js";
|
|
2
|
+
import { jsx as n, jsxs as r } from "react/jsx-runtime";
|
|
3
|
+
//#region src/surfaces/DevtoolsCard.tsx
|
|
4
|
+
function i(i) {
|
|
5
|
+
let { actions: a, children: o, title: s } = i, c = s != null || a != null, l = /* @__PURE__ */ n("span", {});
|
|
6
|
+
return s != null && (l = /* @__PURE__ */ n("h2", {
|
|
7
|
+
className: t,
|
|
8
|
+
children: s
|
|
9
|
+
})), /* @__PURE__ */ r("section", {
|
|
10
|
+
className: e,
|
|
11
|
+
children: [c && /* @__PURE__ */ r("header", {
|
|
12
|
+
className: "ca0gms1",
|
|
13
|
+
children: [l, a ?? null]
|
|
14
|
+
}), o]
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
//#endregion
|
|
18
|
+
export { i as DevtoolsCard };
|
|
19
|
+
|
|
20
|
+
//# sourceMappingURL=DevtoolsCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DevtoolsCard.js","names":[],"sources":["../../../src/surfaces/DevtoolsCard.tsx"],"sourcesContent":["import type { JSX, PropsWithChildren, ReactNode } from 'react';\nimport { card, cardHeader, cardTitle } from './devtoolsSurfaces.css.js';\n\nexport type DevtoolsCardProps = PropsWithChildren<{\n title?: ReactNode;\n actions?: ReactNode;\n}>;\n\n/** Render a card surface with an optional header area. */\nexport function DevtoolsCard(props: DevtoolsCardProps): JSX.Element {\n const { actions, children, title } = props;\n const hasHeader = title != null || actions != null;\n\n let titleNode: ReactNode = <span />;\n if (title != null) {\n titleNode = <h2 className={cardTitle}>{title}</h2>;\n }\n\n return (\n <section className={card}>\n {hasHeader && (\n <header className={cardHeader}>\n {titleNode}\n {actions ?? null}\n </header>\n )}\n {children}\n </section>\n );\n}\n"],"mappings":";;;AASA,SAAgB,EAAa,GAAuC;CAClE,IAAM,EAAE,YAAS,aAAU,aAAU,GAC/B,IAAY,KAAS,QAAQ,KAAW,MAE1C,IAAuB,kBAAC,QAAD,EAAQ,CAAA;AAKnC,QAJI,KAAS,SACX,IAAY,kBAAC,MAAD;EAAI,WAAW;YAAY;EAAW,CAAA,GAIlD,kBAAC,WAAD;EAAS,WAAW;YAApB,CACG,KACC,kBAAC,UAAD;GAAQ,WAAA;aAAR,CACG,GACA,KAAW,KACL;MAEV,EACO"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { section as e, sectionHeader as t, sectionTitle as n } from "./devtoolsSurfaces.css.js";
|
|
2
|
+
import { jsx as r, jsxs as i } from "react/jsx-runtime";
|
|
3
|
+
//#region src/surfaces/DevtoolsSection.tsx
|
|
4
|
+
function a(a) {
|
|
5
|
+
let { actions: o, children: s, title: c } = a;
|
|
6
|
+
return /* @__PURE__ */ i("section", {
|
|
7
|
+
className: e,
|
|
8
|
+
children: [/* @__PURE__ */ i("header", {
|
|
9
|
+
className: t,
|
|
10
|
+
children: [/* @__PURE__ */ r("h2", {
|
|
11
|
+
className: n,
|
|
12
|
+
children: c
|
|
13
|
+
}), o ?? null]
|
|
14
|
+
}), s]
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
//#endregion
|
|
18
|
+
export { a as DevtoolsSection };
|
|
19
|
+
|
|
20
|
+
//# sourceMappingURL=DevtoolsSection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DevtoolsSection.js","names":[],"sources":["../../../src/surfaces/DevtoolsSection.tsx"],"sourcesContent":["import type { JSX, PropsWithChildren, ReactNode } from 'react';\nimport {\n section,\n sectionHeader,\n sectionTitle,\n} from './devtoolsSurfaces.css.js';\n\nexport type DevtoolsSectionProps = PropsWithChildren<{\n title: ReactNode;\n actions?: ReactNode;\n}>;\n\n/** Render a titled section with optional header actions. */\nexport function DevtoolsSection(props: DevtoolsSectionProps): JSX.Element {\n const { actions, children, title } = props;\n\n return (\n <section className={section}>\n <header className={sectionHeader}>\n <h2 className={sectionTitle}>{title}</h2>\n {actions ?? null}\n </header>\n {children}\n </section>\n );\n}\n"],"mappings":";;;AAaA,SAAgB,EAAgB,GAA0C;CACxE,IAAM,EAAE,YAAS,aAAU,aAAU;AAErC,QACE,kBAAC,WAAD;EAAS,WAAW;YAApB,CACE,kBAAC,UAAD;GAAQ,WAAW;aAAnB,CACE,kBAAC,MAAD;IAAI,WAAW;cAAe;IAAW,CAAA,EACxC,KAAW,KACL;MACR,EACO"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/* empty css */
|
|
2
|
+
//#region src/surfaces/devtoolsSurfaces.css.ts
|
|
3
|
+
var e = "ca0gms0", t = "ca0gms1", n = "ca0gms2", r = "ca0gms3", i = "ca0gms4", a = "ca0gms5";
|
|
4
|
+
//#endregion
|
|
5
|
+
export { e as card, t as cardHeader, n as cardTitle, r as section, i as sectionHeader, a as sectionTitle };
|
|
6
|
+
|
|
7
|
+
//# sourceMappingURL=devtoolsSurfaces.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"devtoolsSurfaces.css.js","names":[],"sources":["../../../src/surfaces/devtoolsSurfaces.css.ts"],"sourcesContent":["import { style } from '@vanilla-extract/css';\n\nexport const card = style({\n display: 'flex',\n flexDirection: 'column',\n gap: '12px',\n padding: '16px',\n border: '1px solid var(--pdt-border)',\n borderRadius: '8px',\n backgroundColor: 'var(--pdt-surface)',\n});\n\nexport const cardHeader = style({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: '12px',\n});\n\nexport const cardTitle = style({\n margin: 0,\n fontSize: '14px',\n fontWeight: 600,\n});\n\nexport const section = style({\n display: 'flex',\n flexDirection: 'column',\n gap: '8px',\n});\n\nexport const sectionHeader = style({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: '12px',\n});\n\nexport const sectionTitle = style({\n margin: 0,\n fontSize: '13px',\n fontWeight: 600,\n textTransform: 'uppercase',\n letterSpacing: '0.04em',\n});\n"],"mappings":""}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { root as e } from "./devtoolsTheme.css.js";
|
|
2
|
+
import { jsx as t } from "react/jsx-runtime";
|
|
3
|
+
//#region src/theme/DevtoolsTheme.tsx
|
|
4
|
+
function n(n) {
|
|
5
|
+
let { children: r } = n;
|
|
6
|
+
return /* @__PURE__ */ t("div", {
|
|
7
|
+
className: e,
|
|
8
|
+
children: r
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
//#endregion
|
|
12
|
+
export { n as DevtoolsTheme };
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=DevtoolsTheme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DevtoolsTheme.js","names":[],"sources":["../../../src/theme/DevtoolsTheme.tsx"],"sourcesContent":["import type { JSX, PropsWithChildren } from 'react';\nimport { root } from './devtoolsTheme.css.js';\n\nexport type DevtoolsThemeProps = PropsWithChildren;\n\n/** Provide the root devtools theme wrapper. */\nexport function DevtoolsTheme(props: DevtoolsThemeProps): JSX.Element {\n const { children } = props;\n\n return <div className={root}>{children}</div>;\n}\n"],"mappings":";;;AAMA,SAAgB,EAAc,GAAwC;CACpE,IAAM,EAAE,gBAAa;AAErB,QAAO,kBAAC,OAAD;EAAK,WAAW;EAAO;EAAe,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"devtoolsTheme.css.js","names":[],"sources":["../../../src/theme/devtoolsTheme.css.ts"],"sourcesContent":["import { globalStyle, style } from '@vanilla-extract/css';\n\nexport const root = style({\n vars: {\n '--pdt-bg': '#f3f4f6',\n '--pdt-surface': '#ffffff',\n '--pdt-surface-muted': '#f8fafc',\n '--pdt-border': '#d1d5db',\n '--pdt-border-strong': '#9ca3af',\n '--pdt-text': '#111827',\n '--pdt-text-muted': '#6b7280',\n '--pdt-accent': '#2563eb',\n '--pdt-info': '#0284c7',\n '--pdt-success': '#15803d',\n '--pdt-warning': '#c2410c',\n '--pdt-danger': '#dc2626',\n '--pdt-code-bg': 'rgba(15, 23, 42, 0.06)',\n '--pdt-shadow-focus': '0 0 0 2px rgba(37, 99, 235, 0.35)',\n },\n backgroundColor: 'var(--pdt-bg)',\n color: 'var(--pdt-text)',\n minHeight: '100vh',\n});\n\nglobalStyle(`${root}`, {\n colorScheme: 'light dark',\n fontFamily:\n '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Helvetica, Arial, sans-serif',\n});\n\nglobalStyle(`${root}, ${root} *`, {\n boxSizing: 'border-box',\n});\n\nglobalStyle(`${root} a`, {\n color: 'var(--pdt-accent)',\n});\n\nglobalStyle(`${root} button, ${root} input, ${root} select, ${root} textarea`, {\n font: 'inherit',\n});\n\nglobalStyle(`${root} pre, ${root} code`, {\n fontFamily:\n '\"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, Courier, monospace',\n});\n\nglobalStyle(`${root}`, {\n '@media': {\n '(prefers-color-scheme: dark)': {\n vars: {\n '--pdt-bg': '#1f1f1f',\n '--pdt-surface': '#242424',\n '--pdt-surface-muted': '#2d2d2d',\n '--pdt-border': '#3f3f46',\n '--pdt-border-strong': '#52525b',\n '--pdt-text': '#f5f5f5',\n '--pdt-text-muted': '#a1a1aa',\n '--pdt-accent': '#60a5fa',\n '--pdt-info': '#38bdf8',\n '--pdt-success': '#4ade80',\n '--pdt-warning': '#fb923c',\n '--pdt-danger': '#f87171',\n '--pdt-code-bg': 'rgba(148, 163, 184, 0.12)',\n '--pdt-shadow-focus': '0 0 0 2px rgba(96, 165, 250, 0.35)',\n },\n },\n },\n});\n"],"mappings":""}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { grow as e, toolbar as t } from "./devtoolsToolbar.css.js";
|
|
2
|
+
import { jsx as n } from "react/jsx-runtime";
|
|
3
|
+
//#region src/toolbar/DevtoolsToolbar.tsx
|
|
4
|
+
function r(e) {
|
|
5
|
+
let { ariaLabel: r, children: i } = e;
|
|
6
|
+
return /* @__PURE__ */ n("div", {
|
|
7
|
+
className: t,
|
|
8
|
+
role: "toolbar",
|
|
9
|
+
"aria-label": r,
|
|
10
|
+
children: i
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
function i() {
|
|
14
|
+
return /* @__PURE__ */ n("span", {
|
|
15
|
+
className: e,
|
|
16
|
+
"aria-hidden": "true"
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
//#endregion
|
|
20
|
+
export { r as DevtoolsToolbar, i as DevtoolsToolbarGrow };
|
|
21
|
+
|
|
22
|
+
//# sourceMappingURL=DevtoolsToolbar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DevtoolsToolbar.js","names":[],"sources":["../../../src/toolbar/DevtoolsToolbar.tsx"],"sourcesContent":["import type { JSX, PropsWithChildren } from 'react';\nimport { grow, toolbar } from './devtoolsToolbar.css.js';\n\nexport type DevtoolsToolbarProps = PropsWithChildren<{\n ariaLabel?: string;\n}>;\n\n/** Render a toolbar container with the devtools visual treatment. */\nexport function DevtoolsToolbar(props: DevtoolsToolbarProps): JSX.Element {\n const { ariaLabel, children } = props;\n\n return (\n <div className={toolbar} role=\"toolbar\" aria-label={ariaLabel}>\n {children}\n </div>\n );\n}\n\n/** Reserve flexible space between toolbar items. */\nexport function DevtoolsToolbarGrow(): JSX.Element {\n return <span className={grow} aria-hidden=\"true\" />;\n}\n"],"mappings":";;;AAQA,SAAgB,EAAgB,GAA0C;CACxE,IAAM,EAAE,cAAW,gBAAa;AAEhC,QACE,kBAAC,OAAD;EAAK,WAAW;EAAS,MAAK;EAAU,cAAY;EACjD;EACG,CAAA;;AAKV,SAAgB,IAAmC;AACjD,QAAO,kBAAC,QAAD;EAAM,WAAW;EAAM,eAAY;EAAS,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { button as e, buttonActive as t } from "./devtoolsToolbar.css.js";
|
|
2
|
+
import { jsx as n, jsxs as r } from "react/jsx-runtime";
|
|
3
|
+
//#region src/toolbar/DevtoolsToolbarButton.tsx
|
|
4
|
+
function i(i) {
|
|
5
|
+
let { active: a = !1, disabled: o, icon: s, label: c, onClick: l, pressed: u, title: d } = i, f = e;
|
|
6
|
+
return a && (f = `${e} ${t}`), /* @__PURE__ */ r("button", {
|
|
7
|
+
type: "button",
|
|
8
|
+
className: f,
|
|
9
|
+
disabled: o,
|
|
10
|
+
title: d,
|
|
11
|
+
"aria-pressed": u,
|
|
12
|
+
onClick: l,
|
|
13
|
+
children: [s ?? null, /* @__PURE__ */ n("span", { children: c })]
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
//#endregion
|
|
17
|
+
export { i as DevtoolsToolbarButton };
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=DevtoolsToolbarButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DevtoolsToolbarButton.js","names":[],"sources":["../../../src/toolbar/DevtoolsToolbarButton.tsx"],"sourcesContent":["import type { JSX, ReactNode } from 'react';\nimport { button, buttonActive } from './devtoolsToolbar.css.js';\n\nexport type DevtoolsToolbarButtonProps = {\n label: ReactNode;\n onClick: () => void;\n disabled?: boolean;\n active?: boolean;\n title?: string;\n icon?: ReactNode;\n pressed?: boolean;\n};\n\n/** Render a toolbar button with optional active and pressed states. */\nexport function DevtoolsToolbarButton(\n props: DevtoolsToolbarButtonProps,\n): JSX.Element {\n const {\n active = false,\n disabled,\n icon,\n label,\n onClick,\n pressed,\n title,\n } = props;\n\n let className = button;\n if (active) {\n className = `${button} ${buttonActive}`;\n }\n\n return (\n <button\n type=\"button\"\n className={className}\n disabled={disabled}\n title={title}\n aria-pressed={pressed}\n onClick={onClick}\n >\n {icon ?? null}\n <span>{label}</span>\n </button>\n );\n}\n"],"mappings":";;;AAcA,SAAgB,EACd,GACa;CACb,IAAM,EACJ,YAAS,IACT,aACA,SACA,UACA,YACA,YACA,aACE,GAEA,IAAY;AAKhB,QAJI,MACF,IAAY,GAAG,EAAO,GAAG,MAIzB,kBAAC,UAAD;EACE,MAAK;EACM;EACD;EACH;EACP,gBAAc;EACL;YANX,CAQG,KAAQ,MACT,kBAAC,QAAD,EAAA,UAAO,GAAa,CAAA,CACb"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { separator as e } from "./devtoolsToolbar.css.js";
|
|
2
|
+
import { jsx as t } from "react/jsx-runtime";
|
|
3
|
+
//#region src/toolbar/DevtoolsToolbarSeparator.tsx
|
|
4
|
+
function n() {
|
|
5
|
+
return /* @__PURE__ */ t("span", {
|
|
6
|
+
className: e,
|
|
7
|
+
"aria-hidden": "true"
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
//#endregion
|
|
11
|
+
export { n as DevtoolsToolbarSeparator };
|
|
12
|
+
|
|
13
|
+
//# sourceMappingURL=DevtoolsToolbarSeparator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DevtoolsToolbarSeparator.js","names":[],"sources":["../../../src/toolbar/DevtoolsToolbarSeparator.tsx"],"sourcesContent":["import type { JSX } from 'react';\nimport { separator } from './devtoolsToolbar.css.js';\n\n/** Render a visual separator between toolbar groups. */\nexport function DevtoolsToolbarSeparator(): JSX.Element {\n return <span className={separator} aria-hidden=\"true\" />;\n}\n"],"mappings":";;;AAIA,SAAgB,IAAwC;AACtD,QAAO,kBAAC,QAAD;EAAM,WAAW;EAAW,eAAY;EAAS,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/* empty css */
|
|
2
|
+
//#region src/toolbar/devtoolsToolbar.css.ts
|
|
3
|
+
var e = "_1q96x230", t = "_1q96x231", n = "_1q96x232", r = "_1q96x233", i = "_1q96x234";
|
|
4
|
+
//#endregion
|
|
5
|
+
export { r as button, i as buttonActive, t as grow, n as separator, e as toolbar };
|
|
6
|
+
|
|
7
|
+
//# sourceMappingURL=devtoolsToolbar.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"devtoolsToolbar.css.js","names":[],"sources":["../../../src/toolbar/devtoolsToolbar.css.ts"],"sourcesContent":["import { style } from '@vanilla-extract/css';\n\nexport const toolbar = style({\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n padding: '6px 16px',\n borderBottom: '1px solid var(--pdt-border)',\n backgroundColor: 'var(--pdt-surface)',\n});\n\nexport const grow = style({\n flex: 1,\n});\n\nexport const separator = style({\n width: '1px',\n height: '18px',\n backgroundColor: 'var(--pdt-border)',\n});\n\nexport const button = style({\n display: 'inline-flex',\n alignItems: 'center',\n gap: '6px',\n minHeight: '28px',\n padding: '4px 12px',\n border: '1px solid var(--pdt-border)',\n borderRadius: '4px',\n backgroundColor: 'var(--pdt-bg)',\n color: 'var(--pdt-text)',\n fontSize: '12px',\n cursor: 'pointer',\n transition: 'background-color 150ms ease, border-color 150ms ease',\n selectors: {\n '&:hover:not(:disabled)': {\n backgroundColor: 'var(--pdt-border)',\n },\n '&:focus-visible': {\n outline: 'none',\n boxShadow: 'var(--pdt-shadow-focus)',\n },\n '&:disabled': {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n },\n});\n\nexport const buttonActive = style({\n backgroundColor: 'var(--pdt-warning)',\n borderColor: 'var(--pdt-warning)',\n color: '#ffffff',\n});\n"],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DevtoolsCodeBlock.d.ts","sourceRoot":"","sources":["../../../src/content/DevtoolsCodeBlock.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAGjC,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAGF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,GAAG,CAAC,OAAO,CAI5E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"devtoolsCodeBlock.css.d.ts","sourceRoot":"","sources":["../../../src/content/devtoolsCodeBlock.css.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS,QAUpB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { JSX, ReactNode } from 'react';
|
|
2
|
+
export type DevtoolsEmptyStateProps = {
|
|
3
|
+
title: ReactNode;
|
|
4
|
+
description: ReactNode;
|
|
5
|
+
primaryAction?: ReactNode;
|
|
6
|
+
secondaryAction?: ReactNode;
|
|
7
|
+
};
|
|
8
|
+
export declare function DevtoolsEmptyState(props: DevtoolsEmptyStateProps): JSX.Element;
|
|
9
|
+
//# sourceMappingURL=DevtoolsEmptyState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DevtoolsEmptyState.d.ts","sourceRoot":"","sources":["../../../src/empty_state/DevtoolsEmptyState.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAG5C,MAAM,MAAM,uBAAuB,GAAG;IACpC,KAAK,EAAE,SAAS,CAAC;IACjB,WAAW,EAAE,SAAS,CAAC;IACvB,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,eAAe,CAAC,EAAE,SAAS,CAAC;CAC7B,CAAC;AAGF,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,uBAAuB,GAC7B,GAAG,CAAC,OAAO,CAqBb"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"devtoolsEmptyState.css.d.ts","sourceRoot":"","sources":["../../../src/empty_state/devtoolsEmptyState.css.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,IAAI,QAOf,CAAC;AAEH,eAAO,MAAM,KAAK,QAIhB,CAAC;AAEH,eAAO,MAAM,WAAW,QAKtB,CAAC;AAEH,eAAO,MAAM,OAAO,QAKlB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { JSX, PropsWithChildren } from 'react';
|
|
2
|
+
export type DevtoolsBadgeProps = PropsWithChildren<{
|
|
3
|
+
tone?: 'neutral' | 'info' | 'success' | 'warning' | 'danger';
|
|
4
|
+
}>;
|
|
5
|
+
export declare function DevtoolsBadge(props: DevtoolsBadgeProps): JSX.Element;
|
|
6
|
+
//# sourceMappingURL=DevtoolsBadge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DevtoolsBadge.d.ts","sourceRoot":"","sources":["../../../src/feedback/DevtoolsBadge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAUpD,MAAM,MAAM,kBAAkB,GAAG,iBAAiB,CAAC;IACjD,IAAI,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;CAC9D,CAAC,CAAC;AAGH,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,GAAG,CAAC,OAAO,CAwBpE"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { JSX, PropsWithChildren } from 'react';
|
|
2
|
+
export type DevtoolsPillProps = PropsWithChildren<{
|
|
3
|
+
tone?: 'neutral' | 'navigation' | 'update' | 'snapshot' | 'preload' | 'history' | 'popstate' | 'prepare';
|
|
4
|
+
}>;
|
|
5
|
+
export declare function DevtoolsPill(props: DevtoolsPillProps): JSX.Element;
|
|
6
|
+
//# sourceMappingURL=DevtoolsPill.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DevtoolsPill.d.ts","sourceRoot":"","sources":["../../../src/feedback/DevtoolsPill.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAapD,MAAM,MAAM,iBAAiB,GAAG,iBAAiB,CAAC;IAChD,IAAI,CAAC,EACD,SAAS,GACT,YAAY,GACZ,QAAQ,GACR,UAAU,GACV,SAAS,GACT,SAAS,GACT,UAAU,GACV,SAAS,CAAC;CACf,CAAC,CAAC;AAGH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,GAAG,CAAC,OAAO,CAiClE"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { JSX, ReactNode } from 'react';
|
|
2
|
+
export type DevtoolsStatusLightProps = {
|
|
3
|
+
state: 'ready' | 'idle';
|
|
4
|
+
label?: ReactNode;
|
|
5
|
+
title?: string;
|
|
6
|
+
};
|
|
7
|
+
export declare function DevtoolsStatusLight(props: DevtoolsStatusLightProps): JSX.Element;
|
|
8
|
+
//# sourceMappingURL=DevtoolsStatusLight.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DevtoolsStatusLight.d.ts","sourceRoot":"","sources":["../../../src/feedback/DevtoolsStatusLight.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAQ5C,MAAM,MAAM,wBAAwB,GAAG;IACrC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAGF,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,wBAAwB,GAC9B,GAAG,CAAC,OAAO,CAab"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export declare const badge: string;
|
|
2
|
+
export declare const badgeNeutral: string;
|
|
3
|
+
export declare const badgeInfo: string;
|
|
4
|
+
export declare const badgeSuccess: string;
|
|
5
|
+
export declare const badgeWarning: string;
|
|
6
|
+
export declare const badgeDanger: string;
|
|
7
|
+
export declare const pill: string;
|
|
8
|
+
export declare const pillNeutral: string;
|
|
9
|
+
export declare const pillNavigation: string;
|
|
10
|
+
export declare const pillUpdate: string;
|
|
11
|
+
export declare const pillSnapshot: string;
|
|
12
|
+
export declare const pillPreload: string;
|
|
13
|
+
export declare const pillHistory: string;
|
|
14
|
+
export declare const pillPopstate: string;
|
|
15
|
+
export declare const pillPrepare: string;
|
|
16
|
+
export declare const statusLight: string;
|
|
17
|
+
export declare const statusDot: string;
|
|
18
|
+
export declare const statusReady: string;
|
|
19
|
+
export declare const statusIdle: string;
|
|
20
|
+
//# sourceMappingURL=devtoolsFeedback.css.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"devtoolsFeedback.css.d.ts","sourceRoot":"","sources":["../../../src/feedback/devtoolsFeedback.css.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK,QAchB,CAAC;AAEH,eAAO,MAAM,YAAY,QAIvB,CAAC;AAEH,eAAO,MAAM,SAAS,QAIpB,CAAC;AAEH,eAAO,MAAM,YAAY,QAIvB,CAAC;AAEH,eAAO,MAAM,YAAY,QAIvB,CAAC;AAEH,eAAO,MAAM,WAAW,QAItB,CAAC;AAEH,eAAO,MAAM,IAAI,QAYf,CAAC;AAEH,eAAO,MAAM,WAAW,QAGtB,CAAC;AAEH,eAAO,MAAM,cAAc,QAGzB,CAAC;AAEH,eAAO,MAAM,UAAU,QAGrB,CAAC;AAEH,eAAO,MAAM,YAAY,QAGvB,CAAC;AAEH,eAAO,MAAM,WAAW,QAGtB,CAAC;AAEH,eAAO,MAAM,WAAW,QAGtB,CAAC;AAEH,eAAO,MAAM,YAAY,QAGvB,CAAC;AAEH,eAAO,MAAM,WAAW,QAGtB,CAAC;AAEH,eAAO,MAAM,WAAW,QAOtB,CAAC;AAEH,eAAO,MAAM,SAAS,QAKpB,CAAC;AAEH,eAAO,MAAM,WAAW,QAItB,CAAC;AAEH,eAAO,MAAM,UAAU,QAGrB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export { DevtoolsTheme, type DevtoolsThemeProps, } from './theme/DevtoolsTheme.js';
|
|
2
|
+
export { DevtoolsBadge, type DevtoolsBadgeProps, } from './feedback/DevtoolsBadge.js';
|
|
3
|
+
export { DevtoolsPill, type DevtoolsPillProps, } from './feedback/DevtoolsPill.js';
|
|
4
|
+
export { DevtoolsStatusLight, type DevtoolsStatusLightProps, } from './feedback/DevtoolsStatusLight.js';
|
|
5
|
+
export { DevtoolsCard, type DevtoolsCardProps, } from './surfaces/DevtoolsCard.js';
|
|
6
|
+
export { DevtoolsSection, type DevtoolsSectionProps, } from './surfaces/DevtoolsSection.js';
|
|
7
|
+
export { DevtoolsCodeBlock, type DevtoolsCodeBlockProps, } from './content/DevtoolsCodeBlock.js';
|
|
8
|
+
export { DevtoolsEmptyState, type DevtoolsEmptyStateProps, } from './empty_state/DevtoolsEmptyState.js';
|
|
9
|
+
export { DevtoolsTabs, type DevtoolsTabItem, type DevtoolsTabsProps, } from './navigation/DevtoolsTabs.js';
|
|
10
|
+
export { DevtoolsToolbar, DevtoolsToolbarGrow, type DevtoolsToolbarProps, } from './toolbar/DevtoolsToolbar.js';
|
|
11
|
+
export { DevtoolsToolbarButton, type DevtoolsToolbarButtonProps, } from './toolbar/DevtoolsToolbarButton.js';
|
|
12
|
+
export { DevtoolsToolbarSeparator } from './toolbar/DevtoolsToolbarSeparator.js';
|
|
13
|
+
export { DevtoolsSplitView, type DevtoolsSplitViewProps, } from './layout/DevtoolsSplitView.js';
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,KAAK,kBAAkB,GACxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,aAAa,EACb,KAAK,kBAAkB,GACxB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,YAAY,EACZ,KAAK,iBAAiB,GACvB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,mBAAmB,EACnB,KAAK,wBAAwB,GAC9B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,YAAY,EACZ,KAAK,iBAAiB,GACvB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,eAAe,EACf,KAAK,oBAAoB,GAC1B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,iBAAiB,EACjB,KAAK,sBAAsB,GAC5B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,kBAAkB,EAClB,KAAK,uBAAuB,GAC7B,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,YAAY,EACZ,KAAK,eAAe,EACpB,KAAK,iBAAiB,GACvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,KAAK,oBAAoB,GAC1B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,qBAAqB,EACrB,KAAK,0BAA0B,GAChC,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EACL,iBAAiB,EACjB,KAAK,sBAAsB,GAC5B,MAAM,+BAA+B,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type JSX, type ReactNode } from 'react';
|
|
2
|
+
export type DevtoolsSplitViewProps = {
|
|
3
|
+
main: ReactNode;
|
|
4
|
+
sidebar: ReactNode | null;
|
|
5
|
+
sidebarWidth: number;
|
|
6
|
+
minSidebarWidth: number;
|
|
7
|
+
maxSidebarWidth: number;
|
|
8
|
+
onSidebarWidthChange: (width: number) => void;
|
|
9
|
+
sidebarLabel?: string;
|
|
10
|
+
};
|
|
11
|
+
export declare function DevtoolsSplitView(props: DevtoolsSplitViewProps): JSX.Element;
|
|
12
|
+
//# sourceMappingURL=DevtoolsSplitView.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DevtoolsSplitView.d.ts","sourceRoot":"","sources":["../../../src/layout/DevtoolsSplitView.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,GAAG,EAGR,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAgBf,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,SAAS,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAcF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,GAAG,CAAC,OAAO,CAkI5E"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const root: string;
|
|
2
|
+
export declare const main: string;
|
|
3
|
+
export declare const mainBordered: string;
|
|
4
|
+
export declare const resizer: string;
|
|
5
|
+
export declare const resizerLine: string;
|
|
6
|
+
export declare const sidebar: string;
|
|
7
|
+
//# sourceMappingURL=devtoolsSplitView.css.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"devtoolsSplitView.css.d.ts","sourceRoot":"","sources":["../../../src/layout/devtoolsSplitView.css.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,IAAI,QAKf,CAAC;AAEH,eAAO,MAAM,IAAI,QAOf,CAAC;AAEH,eAAO,MAAM,YAAY,QAEvB,CAAC;AAEH,eAAO,MAAM,OAAO,QAUlB,CAAC;AAEH,eAAO,MAAM,WAAW,QAiBtB,CAAC;AAEH,eAAO,MAAM,OAAO,QAQlB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { JSX, ReactNode } from 'react';
|
|
2
|
+
export type DevtoolsTabItem = {
|
|
3
|
+
id: string;
|
|
4
|
+
label: ReactNode;
|
|
5
|
+
};
|
|
6
|
+
export type DevtoolsTabsProps = {
|
|
7
|
+
items: readonly DevtoolsTabItem[];
|
|
8
|
+
selectedId: string;
|
|
9
|
+
onSelect: (id: string) => void;
|
|
10
|
+
ariaLabel?: string;
|
|
11
|
+
};
|
|
12
|
+
export declare function DevtoolsTabs(props: DevtoolsTabsProps): JSX.Element;
|
|
13
|
+
//# sourceMappingURL=DevtoolsTabs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DevtoolsTabs.d.ts","sourceRoot":"","sources":["../../../src/navigation/DevtoolsTabs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAG5C,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,SAAS,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,SAAS,eAAe,EAAE,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAGF,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,GAAG,CAAC,OAAO,CA6BlE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"devtoolsTabs.css.d.ts","sourceRoot":"","sources":["../../../src/navigation/devtoolsTabs.css.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS,QAOpB,CAAC;AAEH,eAAO,MAAM,GAAG,QAuBd,CAAC;AAEH,eAAO,MAAM,WAAW,QAItB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { JSX, PropsWithChildren, ReactNode } from 'react';
|
|
2
|
+
export type DevtoolsCardProps = PropsWithChildren<{
|
|
3
|
+
title?: ReactNode;
|
|
4
|
+
actions?: ReactNode;
|
|
5
|
+
}>;
|
|
6
|
+
export declare function DevtoolsCard(props: DevtoolsCardProps): JSX.Element;
|
|
7
|
+
//# sourceMappingURL=DevtoolsCard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DevtoolsCard.d.ts","sourceRoot":"","sources":["../../../src/surfaces/DevtoolsCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAG/D,MAAM,MAAM,iBAAiB,GAAG,iBAAiB,CAAC;IAChD,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB,CAAC,CAAC;AAGH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,GAAG,CAAC,OAAO,CAoBlE"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { JSX, PropsWithChildren, ReactNode } from 'react';
|
|
2
|
+
export type DevtoolsSectionProps = PropsWithChildren<{
|
|
3
|
+
title: ReactNode;
|
|
4
|
+
actions?: ReactNode;
|
|
5
|
+
}>;
|
|
6
|
+
export declare function DevtoolsSection(props: DevtoolsSectionProps): JSX.Element;
|
|
7
|
+
//# sourceMappingURL=DevtoolsSection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DevtoolsSection.d.ts","sourceRoot":"","sources":["../../../src/surfaces/DevtoolsSection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAO/D,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;IACnD,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB,CAAC,CAAC;AAGH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,GAAG,CAAC,OAAO,CAYxE"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const card: string;
|
|
2
|
+
export declare const cardHeader: string;
|
|
3
|
+
export declare const cardTitle: string;
|
|
4
|
+
export declare const section: string;
|
|
5
|
+
export declare const sectionHeader: string;
|
|
6
|
+
export declare const sectionTitle: string;
|
|
7
|
+
//# sourceMappingURL=devtoolsSurfaces.css.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"devtoolsSurfaces.css.d.ts","sourceRoot":"","sources":["../../../src/surfaces/devtoolsSurfaces.css.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,IAAI,QAQf,CAAC;AAEH,eAAO,MAAM,UAAU,QAKrB,CAAC;AAEH,eAAO,MAAM,SAAS,QAIpB,CAAC;AAEH,eAAO,MAAM,OAAO,QAIlB,CAAC;AAEH,eAAO,MAAM,aAAa,QAKxB,CAAC;AAEH,eAAO,MAAM,YAAY,QAMvB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DevtoolsTheme.d.ts","sourceRoot":"","sources":["../../../src/theme/DevtoolsTheme.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAGpD,MAAM,MAAM,kBAAkB,GAAG,iBAAiB,CAAC;AAGnD,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,GAAG,CAAC,OAAO,CAIpE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"devtoolsTheme.css.d.ts","sourceRoot":"","sources":["../../../src/theme/devtoolsTheme.css.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,IAAI,QAoBf,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { JSX, PropsWithChildren } from 'react';
|
|
2
|
+
export type DevtoolsToolbarProps = PropsWithChildren<{
|
|
3
|
+
ariaLabel?: string;
|
|
4
|
+
}>;
|
|
5
|
+
export declare function DevtoolsToolbar(props: DevtoolsToolbarProps): JSX.Element;
|
|
6
|
+
export declare function DevtoolsToolbarGrow(): JSX.Element;
|
|
7
|
+
//# sourceMappingURL=DevtoolsToolbar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DevtoolsToolbar.d.ts","sourceRoot":"","sources":["../../../src/toolbar/DevtoolsToolbar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAGpD,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;IACnD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC,CAAC;AAGH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,GAAG,CAAC,OAAO,CAQxE;AAGD,wBAAgB,mBAAmB,IAAI,GAAG,CAAC,OAAO,CAEjD"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { JSX, ReactNode } from 'react';
|
|
2
|
+
export type DevtoolsToolbarButtonProps = {
|
|
3
|
+
label: ReactNode;
|
|
4
|
+
onClick: () => void;
|
|
5
|
+
disabled?: boolean;
|
|
6
|
+
active?: boolean;
|
|
7
|
+
title?: string;
|
|
8
|
+
icon?: ReactNode;
|
|
9
|
+
pressed?: boolean;
|
|
10
|
+
};
|
|
11
|
+
export declare function DevtoolsToolbarButton(props: DevtoolsToolbarButtonProps): JSX.Element;
|
|
12
|
+
//# sourceMappingURL=DevtoolsToolbarButton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DevtoolsToolbarButton.d.ts","sourceRoot":"","sources":["../../../src/toolbar/DevtoolsToolbarButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAG5C,MAAM,MAAM,0BAA0B,GAAG;IACvC,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAGF,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,0BAA0B,GAChC,GAAG,CAAC,OAAO,CA6Bb"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DevtoolsToolbarSeparator.d.ts","sourceRoot":"","sources":["../../../src/toolbar/DevtoolsToolbarSeparator.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAIjC,wBAAgB,wBAAwB,IAAI,GAAG,CAAC,OAAO,CAEtD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"devtoolsToolbar.css.d.ts","sourceRoot":"","sources":["../../../src/toolbar/devtoolsToolbar.css.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO,QAOlB,CAAC;AAEH,eAAO,MAAM,IAAI,QAEf,CAAC;AAEH,eAAO,MAAM,SAAS,QAIpB,CAAC;AAEH,eAAO,MAAM,MAAM,QA0BjB,CAAC;AAEH,eAAO,MAAM,YAAY,QAIvB,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@plumile/ui-devtools",
|
|
3
|
+
"version": "0.1.66",
|
|
4
|
+
"description": "Shared DevTools UI primitives for Plumile extensions",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"main": "lib/esm/index.js",
|
|
8
|
+
"module": "lib/esm/index.js",
|
|
9
|
+
"types": "lib/types/index.d.ts",
|
|
10
|
+
"typings": "lib/types/index.d.ts",
|
|
11
|
+
"exports": {
|
|
12
|
+
".": {
|
|
13
|
+
"types": "./lib/types/index.d.ts",
|
|
14
|
+
"import": "./lib/esm/index.js",
|
|
15
|
+
"default": "./lib/esm/index.js"
|
|
16
|
+
},
|
|
17
|
+
"./style.css": "./lib/esm/style.css",
|
|
18
|
+
"./package.json": "./package.json"
|
|
19
|
+
},
|
|
20
|
+
"sideEffects": true,
|
|
21
|
+
"author": "Plumile Maintainers",
|
|
22
|
+
"scripts": {
|
|
23
|
+
"build:package": "./tools/build-package.sh",
|
|
24
|
+
"build:package:esm": "vite build",
|
|
25
|
+
"build:package:types": "tsc --build tsconfig.types.json",
|
|
26
|
+
"check:build-package": "tsc --noEmit",
|
|
27
|
+
"clean": "rimraf lib && rimraf *.tsbuildinfo",
|
|
28
|
+
"test:build-package": "./tools/test-build-package.sh"
|
|
29
|
+
},
|
|
30
|
+
"engines": {
|
|
31
|
+
"node": ">=21.0.0",
|
|
32
|
+
"npm": ">=8.0.0"
|
|
33
|
+
},
|
|
34
|
+
"dependencies": {
|
|
35
|
+
"@vanilla-extract/css": "^1.19.0",
|
|
36
|
+
"tslib": "^2.8.1"
|
|
37
|
+
},
|
|
38
|
+
"devDependencies": {
|
|
39
|
+
"@types/react": "19.2.14",
|
|
40
|
+
"@types/react-dom": "19.2.3",
|
|
41
|
+
"react": "19.2.4",
|
|
42
|
+
"react-dom": "19.2.4",
|
|
43
|
+
"rimraf": "6.1.3",
|
|
44
|
+
"typescript": "5.9.3"
|
|
45
|
+
},
|
|
46
|
+
"peerDependencies": {
|
|
47
|
+
"react": "^19.2.4",
|
|
48
|
+
"react-dom": "^19.2.4"
|
|
49
|
+
},
|
|
50
|
+
"files": [
|
|
51
|
+
"lib",
|
|
52
|
+
"README.md"
|
|
53
|
+
],
|
|
54
|
+
"publishConfig": {
|
|
55
|
+
"access": "public"
|
|
56
|
+
}
|
|
57
|
+
}
|