@screenbook/ui 1.1.2 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1228,7 +1228,7 @@ async function getConfiguredImageService() {
1228
1228
  if (!globalThis?.astroAsset?.imageService) {
1229
1229
  const { default: service } = await import(
1230
1230
  // @ts-expect-error
1231
- './sharp_ADxfwDJE.mjs'
1231
+ './sharp_CUcgoDkm.mjs'
1232
1232
  ).catch((e) => {
1233
1233
  const error = new AstroError(InvalidImageService);
1234
1234
  error.cause = e;
@@ -1410,7 +1410,7 @@ const $$Image = createComponent(async ($$result, $$props, $$slots) => {
1410
1410
  }
1411
1411
  const { class: className, ...attributes } = { ...additionalAttributes, ...image.attributes };
1412
1412
  return renderTemplate`${maybeRenderHead()}<img${addAttribute(image.src, "src")}${spreadAttributes(attributes)}${addAttribute(className, "class")}>`;
1413
- }, "/home/runner/work/screenbook/screenbook/node_modules/.pnpm/astro@5.16.6_@types+node@25.0.3_jiti@2.6.1_lightningcss@1.30.2_rollup@4.54.0_tsx@4.21.0_typescript@5.9.3_yaml@2.8.2/node_modules/astro/components/Image.astro", void 0);
1413
+ }, "/home/runner/work/screenbook/screenbook/node_modules/.pnpm/astro@5.16.6_@types+node@25.0.3_db0@0.3.4_ioredis@5.8.2_jiti@2.6.1_lightningcss@1.30.2__c831498ac20d74bd769ef1f284e3b7f9/node_modules/astro/components/Image.astro", void 0);
1414
1414
 
1415
1415
  const $$Astro$1 = createAstro();
1416
1416
  const $$Picture = createComponent(async ($$result, $$props, $$slots) => {
@@ -1481,7 +1481,7 @@ const $$Picture = createComponent(async ($$result, $$props, $$slots) => {
1481
1481
  const srcsetAttribute = props.densities || !props.densities && !props.widths && !useResponsive ? `${image.src}${image.srcSet.values.length > 0 ? ", " + image.srcSet.attribute : ""}` : image.srcSet.attribute;
1482
1482
  return renderTemplate`<source${addAttribute(srcsetAttribute, "srcset")}${addAttribute(mime.lookup(image.options.format ?? image.src) ?? `image/${image.options.format}`, "type")}${spreadAttributes(sourceAdditionalAttributes)}>`;
1483
1483
  })} <img${addAttribute(fallbackImage.src, "src")}${spreadAttributes(attributes)}${addAttribute(className, "class")}> </picture>`;
1484
- }, "/home/runner/work/screenbook/screenbook/node_modules/.pnpm/astro@5.16.6_@types+node@25.0.3_jiti@2.6.1_lightningcss@1.30.2_rollup@4.54.0_tsx@4.21.0_typescript@5.9.3_yaml@2.8.2/node_modules/astro/components/Picture.astro", void 0);
1484
+ }, "/home/runner/work/screenbook/screenbook/node_modules/.pnpm/astro@5.16.6_@types+node@25.0.3_db0@0.3.4_ioredis@5.8.2_jiti@2.6.1_lightningcss@1.30.2__c831498ac20d74bd769ef1f284e3b7f9/node_modules/astro/components/Picture.astro", void 0);
1485
1485
 
1486
1486
  const fontsMod = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({
1487
1487
  __proto__: null
@@ -1540,7 +1540,7 @@ const $$Font = createComponent(($$result, $$props, $$slots) => {
1540
1540
  }
1541
1541
  const filteredPreloadData = filterPreloads(data.preloadData, preload);
1542
1542
  return renderTemplate`<style>${unescapeHTML(data.css)}</style>${filteredPreloadData?.map(({ url, type }) => renderTemplate`<link rel="preload"${addAttribute(url, "href")} as="font"${addAttribute(`font/${type}`, "type")} crossorigin>`)}`;
1543
- }, "/home/runner/work/screenbook/screenbook/node_modules/.pnpm/astro@5.16.6_@types+node@25.0.3_jiti@2.6.1_lightningcss@1.30.2_rollup@4.54.0_tsx@4.21.0_typescript@5.9.3_yaml@2.8.2/node_modules/astro/components/Font.astro", void 0);
1543
+ }, "/home/runner/work/screenbook/screenbook/node_modules/.pnpm/astro@5.16.6_@types+node@25.0.3_db0@0.3.4_ioredis@5.8.2_jiti@2.6.1_lightningcss@1.30.2__c831498ac20d74bd769ef1f284e3b7f9/node_modules/astro/components/Font.astro", void 0);
1544
1544
 
1545
1545
  const assetQueryParams = undefined;
1546
1546
  const imageConfig = {"endpoint":{"route":"/_image","entrypoint":"astro/assets/endpoint/node"},"service":{"entrypoint":"astro/assets/services/sharp","config":{}},"domains":[],"remotePatterns":[],"responsiveStyles":false};
@@ -1,5 +1,5 @@
1
1
  import { A as AstroError, ao as MissingSharp } from './astro/server_m7yT4wCr.mjs';
2
- import { b as baseService, p as parseQuality } from './node_u1SigWFL.mjs';
2
+ import { b as baseService, p as parseQuality } from './node_97fzk9fE.mjs';
3
3
 
4
4
  let sharp;
5
5
  const qualityTable = {
@@ -1,6 +1,6 @@
1
1
  import { renderers } from './renderers.mjs';
2
2
  import { c as createExports, s as serverEntrypointModule } from './chunks/_@astrojs-ssr-adapter_BCPoO8PO.mjs';
3
- import { manifest } from './manifest_BGl49hHW.mjs';
3
+ import { manifest } from './manifest_DLn4MePX.mjs';
4
4
 
5
5
  const serverIslandMap = new Map();;
6
6
 
@@ -13,7 +13,7 @@ const _page5 = () => import('./pages/impact.astro.mjs');
13
13
  const _page6 = () => import('./pages/screen/_id_.astro.mjs');
14
14
  const _page7 = () => import('./pages/index.astro.mjs');
15
15
  const pageMap = new Map([
16
- ["../../node_modules/.pnpm/astro@5.16.6_@types+node@25.0.3_jiti@2.6.1_lightningcss@1.30.2_rollup@4.54.0_tsx@4.21.0_typescript@5.9.3_yaml@2.8.2/node_modules/astro/dist/assets/endpoint/node.js", _page0],
16
+ ["../../node_modules/.pnpm/astro@5.16.6_@types+node@25.0.3_db0@0.3.4_ioredis@5.8.2_jiti@2.6.1_lightningcss@1.30.2__c831498ac20d74bd769ef1f284e3b7f9/node_modules/astro/dist/assets/endpoint/node.js", _page0],
17
17
  ["src/pages/api/save-mock.ts", _page1],
18
18
  ["src/pages/coverage.astro", _page2],
19
19
  ["src/pages/editor.astro", _page3],
@@ -0,0 +1,101 @@
1
+ import 'piccolore';
2
+ import { q as decodeKey } from './chunks/astro/server_m7yT4wCr.mjs';
3
+ import 'clsx';
4
+ import { N as NOOP_MIDDLEWARE_FN } from './chunks/astro-designed-error-pages_7IL58RLD.mjs';
5
+ import 'es-module-lexer';
6
+
7
+ function sanitizeParams(params) {
8
+ return Object.fromEntries(
9
+ Object.entries(params).map(([key, value]) => {
10
+ if (typeof value === "string") {
11
+ return [key, value.normalize().replace(/#/g, "%23").replace(/\?/g, "%3F")];
12
+ }
13
+ return [key, value];
14
+ })
15
+ );
16
+ }
17
+ function getParameter(part, params) {
18
+ if (part.spread) {
19
+ return params[part.content.slice(3)] || "";
20
+ }
21
+ if (part.dynamic) {
22
+ if (!params[part.content]) {
23
+ throw new TypeError(`Missing parameter: ${part.content}`);
24
+ }
25
+ return params[part.content];
26
+ }
27
+ return part.content.normalize().replace(/\?/g, "%3F").replace(/#/g, "%23").replace(/%5B/g, "[").replace(/%5D/g, "]");
28
+ }
29
+ function getSegment(segment, params) {
30
+ const segmentPath = segment.map((part) => getParameter(part, params)).join("");
31
+ return segmentPath ? "/" + segmentPath : "";
32
+ }
33
+ function getRouteGenerator(segments, addTrailingSlash) {
34
+ return (params) => {
35
+ const sanitizedParams = sanitizeParams(params);
36
+ let trailing = "";
37
+ if (addTrailingSlash === "always" && segments.length) {
38
+ trailing = "/";
39
+ }
40
+ const path = segments.map((segment) => getSegment(segment, sanitizedParams)).join("") + trailing;
41
+ return path || "/";
42
+ };
43
+ }
44
+
45
+ function deserializeRouteData(rawRouteData) {
46
+ return {
47
+ route: rawRouteData.route,
48
+ type: rawRouteData.type,
49
+ pattern: new RegExp(rawRouteData.pattern),
50
+ params: rawRouteData.params,
51
+ component: rawRouteData.component,
52
+ generate: getRouteGenerator(rawRouteData.segments, rawRouteData._meta.trailingSlash),
53
+ pathname: rawRouteData.pathname || void 0,
54
+ segments: rawRouteData.segments,
55
+ prerender: rawRouteData.prerender,
56
+ redirect: rawRouteData.redirect,
57
+ redirectRoute: rawRouteData.redirectRoute ? deserializeRouteData(rawRouteData.redirectRoute) : void 0,
58
+ fallbackRoutes: rawRouteData.fallbackRoutes.map((fallback) => {
59
+ return deserializeRouteData(fallback);
60
+ }),
61
+ isIndex: rawRouteData.isIndex,
62
+ origin: rawRouteData.origin
63
+ };
64
+ }
65
+
66
+ function deserializeManifest(serializedManifest) {
67
+ const routes = [];
68
+ for (const serializedRoute of serializedManifest.routes) {
69
+ routes.push({
70
+ ...serializedRoute,
71
+ routeData: deserializeRouteData(serializedRoute.routeData)
72
+ });
73
+ const route = serializedRoute;
74
+ route.routeData = deserializeRouteData(serializedRoute.routeData);
75
+ }
76
+ const assets = new Set(serializedManifest.assets);
77
+ const componentMetadata = new Map(serializedManifest.componentMetadata);
78
+ const inlinedScripts = new Map(serializedManifest.inlinedScripts);
79
+ const clientDirectives = new Map(serializedManifest.clientDirectives);
80
+ const serverIslandNameMap = new Map(serializedManifest.serverIslandNameMap);
81
+ const key = decodeKey(serializedManifest.key);
82
+ return {
83
+ // in case user middleware exists, this no-op middleware will be reassigned (see plugin-ssr.ts)
84
+ middleware() {
85
+ return { onRequest: NOOP_MIDDLEWARE_FN };
86
+ },
87
+ ...serializedManifest,
88
+ assets,
89
+ componentMetadata,
90
+ inlinedScripts,
91
+ clientDirectives,
92
+ routes,
93
+ serverIslandNameMap,
94
+ key
95
+ };
96
+ }
97
+
98
+ const manifest = deserializeManifest({"hrefRoot":"file:///home/runner/work/screenbook/screenbook/packages/ui/","cacheDir":"file:///home/runner/work/screenbook/screenbook/packages/ui/node_modules/.astro/","outDir":"file:///home/runner/work/screenbook/screenbook/packages/ui/dist/","srcDir":"file:///home/runner/work/screenbook/screenbook/packages/ui/src/","publicDir":"file:///home/runner/work/screenbook/screenbook/packages/ui/public/","buildClientDir":"file:///home/runner/work/screenbook/screenbook/packages/ui/dist/client/","buildServerDir":"file:///home/runner/work/screenbook/screenbook/packages/ui/dist/server/","adapterName":"@astrojs/node","routes":[{"file":"","links":[],"scripts":[],"styles":[],"routeData":{"type":"page","component":"_server-islands.astro","params":["name"],"segments":[[{"content":"_server-islands","dynamic":false,"spread":false}],[{"content":"name","dynamic":true,"spread":false}]],"pattern":"^\\/_server-islands\\/([^/]+?)\\/?$","prerender":false,"isIndex":false,"fallbackRoutes":[],"route":"/_server-islands/[name]","origin":"internal","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"styles":[],"routeData":{"type":"endpoint","isIndex":false,"route":"/_image","pattern":"^\\/_image\\/?$","segments":[[{"content":"_image","dynamic":false,"spread":false}]],"params":[],"component":"../../node_modules/.pnpm/astro@5.16.6_@types+node@25.0.3_db0@0.3.4_ioredis@5.8.2_jiti@2.6.1_lightningcss@1.30.2__c831498ac20d74bd769ef1f284e3b7f9/node_modules/astro/dist/assets/endpoint/node.js","pathname":"/_image","prerender":false,"fallbackRoutes":[],"origin":"internal","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"styles":[],"routeData":{"route":"/api/save-mock","isIndex":false,"type":"endpoint","pattern":"^\\/api\\/save-mock\\/?$","segments":[[{"content":"api","dynamic":false,"spread":false}],[{"content":"save-mock","dynamic":false,"spread":false}]],"params":[],"component":"src/pages/api/save-mock.ts","pathname":"/api/save-mock","prerender":false,"fallbackRoutes":[],"distURL":[],"origin":"project","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"styles":[{"type":"external","src":"/_astro/coverage.BzPU-EGZ.css"},{"type":"external","src":"/_astro/coverage.Cb0pX2ic.css"}],"routeData":{"route":"/coverage","isIndex":false,"type":"page","pattern":"^\\/coverage\\/?$","segments":[[{"content":"coverage","dynamic":false,"spread":false}]],"params":[],"component":"src/pages/coverage.astro","pathname":"/coverage","prerender":false,"fallbackRoutes":[],"distURL":[],"origin":"project","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"styles":[{"type":"external","src":"/_astro/coverage.BzPU-EGZ.css"},{"type":"inline","content":".editor-container[data-astro-cid-nmyy7qaa]{position:fixed;inset:60px 0 0;background:#141822}\n"},{"type":"external","src":"/_astro/MockFormEditor.OiYzJAtR.css"}],"routeData":{"route":"/editor","isIndex":false,"type":"page","pattern":"^\\/editor\\/?$","segments":[[{"content":"editor","dynamic":false,"spread":false}]],"params":[],"component":"src/pages/editor.astro","pathname":"/editor","prerender":false,"fallbackRoutes":[],"distURL":[],"origin":"project","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"styles":[{"type":"external","src":"/_astro/coverage.BzPU-EGZ.css"},{"type":"inline","content":".graph-controls[data-astro-cid-oy34yelw]{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;flex-wrap:wrap;gap:16px}.view-toggle[data-astro-cid-oy34yelw]{display:flex;gap:8px;background:var(--color-surface);padding:4px;border-radius:var(--radius-lg);border:1px solid var(--color-border)}.toggle-btn[data-astro-cid-oy34yelw]{display:flex;align-items:center;gap:8px;padding:8px 16px;border:none;background:transparent;color:var(--color-text-muted);font-size:var(--text-sm);font-weight:500;border-radius:var(--radius-md);cursor:pointer;transition:all .15s ease}.toggle-btn[data-astro-cid-oy34yelw]:hover{color:var(--color-text)}.toggle-btn[data-astro-cid-oy34yelw].active{background:var(--color-accent);color:var(--color-bg)}.toggle-btn[data-astro-cid-oy34yelw] svg[data-astro-cid-oy34yelw]{width:16px;height:16px}.graph-stats[data-astro-cid-oy34yelw]{display:flex;gap:16px}.stat[data-astro-cid-oy34yelw]{font-size:var(--text-sm);color:var(--color-text-muted)}.hidden[data-astro-cid-oy34yelw]{display:none!important}.legend-api[data-astro-cid-oy34yelw]{background:#14b8a6!important;border-color:#5eead4!important}.legend-mock[data-astro-cid-oy34yelw]{border-color:#14b8a6!important;border-width:2px!important}.stat-mock[data-astro-cid-oy34yelw]{color:#14b8a6}\n"}],"routeData":{"route":"/graph","isIndex":false,"type":"page","pattern":"^\\/graph\\/?$","segments":[[{"content":"graph","dynamic":false,"spread":false}]],"params":[],"component":"src/pages/graph.astro","pathname":"/graph","prerender":false,"fallbackRoutes":[],"distURL":[],"origin":"project","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"styles":[{"type":"external","src":"/_astro/coverage.BzPU-EGZ.css"},{"type":"external","src":"/_astro/impact.Cvhl64u1.css"}],"routeData":{"route":"/impact","isIndex":false,"type":"page","pattern":"^\\/impact\\/?$","segments":[[{"content":"impact","dynamic":false,"spread":false}]],"params":[],"component":"src/pages/impact.astro","pathname":"/impact","prerender":false,"fallbackRoutes":[],"distURL":[],"origin":"project","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"styles":[{"type":"external","src":"/_astro/coverage.BzPU-EGZ.css"},{"type":"external","src":"/_astro/_id_.BqQf-JH6.css"}],"routeData":{"route":"/screen/[id]","isIndex":false,"type":"page","pattern":"^\\/screen\\/([^/]+?)\\/?$","segments":[[{"content":"screen","dynamic":false,"spread":false}],[{"content":"id","dynamic":true,"spread":false}]],"params":["id"],"component":"src/pages/screen/[id].astro","prerender":false,"fallbackRoutes":[],"distURL":[],"origin":"project","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"styles":[{"type":"external","src":"/_astro/coverage.BzPU-EGZ.css"}],"routeData":{"route":"/","isIndex":true,"type":"page","pattern":"^\\/$","segments":[],"params":[],"component":"src/pages/index.astro","pathname":"/","prerender":false,"fallbackRoutes":[],"distURL":[],"origin":"project","_meta":{"trailingSlash":"ignore"}}}],"base":"/","trailingSlash":"ignore","compressHTML":true,"componentMetadata":[["/home/runner/work/screenbook/screenbook/packages/ui/src/pages/coverage.astro",{"propagation":"none","containsHead":true}],["/home/runner/work/screenbook/screenbook/packages/ui/src/pages/editor.astro",{"propagation":"none","containsHead":true}],["/home/runner/work/screenbook/screenbook/packages/ui/src/pages/graph.astro",{"propagation":"none","containsHead":true}],["/home/runner/work/screenbook/screenbook/packages/ui/src/pages/impact.astro",{"propagation":"none","containsHead":true}],["/home/runner/work/screenbook/screenbook/packages/ui/src/pages/index.astro",{"propagation":"none","containsHead":true}],["/home/runner/work/screenbook/screenbook/packages/ui/src/pages/screen/[id].astro",{"propagation":"none","containsHead":true}]],"renderers":[],"clientDirectives":[["idle","(()=>{var l=(n,t)=>{let i=async()=>{await(await n())()},e=typeof t.value==\"object\"?t.value:void 0,s={timeout:e==null?void 0:e.timeout};\"requestIdleCallback\"in window?window.requestIdleCallback(i,s):setTimeout(i,s.timeout||200)};(self.Astro||(self.Astro={})).idle=l;window.dispatchEvent(new Event(\"astro:idle\"));})();"],["load","(()=>{var e=async t=>{await(await t())()};(self.Astro||(self.Astro={})).load=e;window.dispatchEvent(new Event(\"astro:load\"));})();"],["media","(()=>{var n=(a,t)=>{let i=async()=>{await(await a())()};if(t.value){let e=matchMedia(t.value);e.matches?i():e.addEventListener(\"change\",i,{once:!0})}};(self.Astro||(self.Astro={})).media=n;window.dispatchEvent(new Event(\"astro:media\"));})();"],["only","(()=>{var e=async t=>{await(await t())()};(self.Astro||(self.Astro={})).only=e;window.dispatchEvent(new Event(\"astro:only\"));})();"],["visible","(()=>{var a=(s,i,o)=>{let r=async()=>{await(await s())()},t=typeof i.value==\"object\"?i.value:void 0,c={rootMargin:t==null?void 0:t.rootMargin},n=new IntersectionObserver(e=>{for(let l of e)if(l.isIntersecting){n.disconnect(),r();break}},c);for(let e of o.children)n.observe(e)};(self.Astro||(self.Astro={})).visible=a;window.dispatchEvent(new Event(\"astro:visible\"));})();"]],"entryModules":{"\u0000noop-middleware":"_noop-middleware.mjs","\u0000virtual:astro:actions/noop-entrypoint":"noop-entrypoint.mjs","\u0000@astro-page:src/pages/api/save-mock@_@ts":"pages/api/save-mock.astro.mjs","\u0000@astro-page:src/pages/coverage@_@astro":"pages/coverage.astro.mjs","\u0000@astro-page:src/pages/editor@_@astro":"pages/editor.astro.mjs","\u0000@astro-page:src/pages/graph@_@astro":"pages/graph.astro.mjs","\u0000@astro-page:src/pages/impact@_@astro":"pages/impact.astro.mjs","\u0000@astro-page:src/pages/screen/[id]@_@astro":"pages/screen/_id_.astro.mjs","\u0000@astro-page:src/pages/index@_@astro":"pages/index.astro.mjs","\u0000@astrojs-ssr-virtual-entry":"entry.mjs","\u0000@astro-renderers":"renderers.mjs","\u0000@astro-page:../../node_modules/.pnpm/astro@5.16.6_@types+node@25.0.3_db0@0.3.4_ioredis@5.8.2_jiti@2.6.1_lightningcss@1.30.2__c831498ac20d74bd769ef1f284e3b7f9/node_modules/astro/dist/assets/endpoint/node@_@js":"pages/_image.astro.mjs","\u0000@astrojs-ssr-adapter":"_@astrojs-ssr-adapter.mjs","\u0000@astrojs-manifest":"manifest_DLn4MePX.mjs","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/unstorage@1.17.3_db0@0.3.4_ioredis@5.8.2/node_modules/unstorage/drivers/fs-lite.mjs":"chunks/fs-lite_COtHaKzy.mjs","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/astro@5.16.6_@types+node@25.0.3_db0@0.3.4_ioredis@5.8.2_jiti@2.6.1_lightningcss@1.30.2__c831498ac20d74bd769ef1f284e3b7f9/node_modules/astro/dist/assets/services/sharp.js":"chunks/sharp_CUcgoDkm.mjs","/home/runner/work/screenbook/screenbook/packages/ui/src/pages/graph.astro?astro&type=script&index=0&lang.ts":"_astro/graph.astro_astro_type_script_index_0_lang.BxaPom9e.js","/home/runner/work/screenbook/screenbook/packages/ui/src/pages/impact.astro?astro&type=script&index=0&lang.ts":"_astro/impact.astro_astro_type_script_index_0_lang.VjeLQGe6.js","/home/runner/work/screenbook/screenbook/packages/ui/src/pages/index.astro?astro&type=script&index=0&lang.ts":"_astro/index.astro_astro_type_script_index_0_lang.D9WgmwrZ.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/c4Diagram-YG6GDRKO.mjs":"_astro/c4Diagram-YG6GDRKO.BqntXNsZ.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/flowDiagram-NV44I4VS.mjs":"_astro/flowDiagram-NV44I4VS.CV4Oenkb.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/erDiagram-Q2GNP2WA.mjs":"_astro/erDiagram-Q2GNP2WA.B4hpr69H.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/gitGraphDiagram-NY62KEGX.mjs":"_astro/gitGraphDiagram-NY62KEGX.BeY3JZYI.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/infoDiagram-WHAUD3N6.mjs":"_astro/infoDiagram-WHAUD3N6.D2_J_fR6.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/quadrantDiagram-AYHSOK5B.mjs":"_astro/quadrantDiagram-AYHSOK5B.Cma08fPv.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/requirementDiagram-UZGBJVZJ.mjs":"_astro/requirementDiagram-UZGBJVZJ.BlhVOrX0.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/sequenceDiagram-WL72ISMW.mjs":"_astro/sequenceDiagram-WL72ISMW.3cZYkaSP.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/classDiagram-2ON5EDUG.mjs":"_astro/classDiagram-2ON5EDUG.DMv55r4w.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/classDiagram-v2-WZHVMYZB.mjs":"_astro/classDiagram-v2-WZHVMYZB.DMv55r4w.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/stateDiagram-FKZM4ZOC.mjs":"_astro/stateDiagram-FKZM4ZOC.DdlRd9N7.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/stateDiagram-v2-4FDKWEC3.mjs":"_astro/stateDiagram-v2-4FDKWEC3.DCPDjwi7.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/journeyDiagram-XKPGCS4Q.mjs":"_astro/journeyDiagram-XKPGCS4Q.7c4ngVDw.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/timeline-definition-IT6M3QCI.mjs":"_astro/timeline-definition-IT6M3QCI.BshW8mMW.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/kanban-definition-3W4ZIXB7.mjs":"_astro/kanban-definition-3W4ZIXB7.D_eWex6x.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/diagram-S2PKOQOG.mjs":"_astro/diagram-S2PKOQOG.T8h5wODN.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/diagram-QEK2KX5R.mjs":"_astro/diagram-QEK2KX5R.BoqLvsuS.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/blockDiagram-VD42YOAC.mjs":"_astro/blockDiagram-VD42YOAC.6LO7yu7m.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/katex@0.16.27/node_modules/katex/dist/katex.mjs":"_astro/katex.XbL3y5x-.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/dagre-6UL2VRFP.mjs":"_astro/dagre-6UL2VRFP.tCLd0f1c.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/xychartDiagram-PRI3JC2R.mjs":"_astro/xychartDiagram-PRI3JC2R.Mg5_s08f.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/pieDiagram-ADFJNKIX.mjs":"_astro/pieDiagram-ADFJNKIX.D18DPyo6.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/mindmap-definition-VGOIOE7T.mjs":"_astro/mindmap-definition-VGOIOE7T.CjNYt18e.js","@/components/MockFormEditor":"_astro/MockFormEditor.0L29BkPy.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/architectureDiagram-VXUJARFQ.mjs":"_astro/architectureDiagram-VXUJARFQ.BF0V2v9-.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/cose-bilkent-S5V4N54A.mjs":"_astro/cose-bilkent-S5V4N54A.DlRxGhCG.js","@astrojs/react/client.js":"_astro/client.9unXo8s5.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/sankeyDiagram-TZEHDZUN.mjs":"_astro/sankeyDiagram-TZEHDZUN.HRsqw4ej.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/diagram-PSM6KHXK.mjs":"_astro/diagram-PSM6KHXK.CJA_rnN3.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/ganttDiagram-JELNMOA3.mjs":"_astro/ganttDiagram-JELNMOA3.DdpXJeX3.js","astro:scripts/before-hydration.js":""},"inlinedScripts":[["/home/runner/work/screenbook/screenbook/packages/ui/src/pages/index.astro?astro&type=script&index=0&lang.ts","const l=document.getElementById(\"search\"),g=document.getElementById(\"screen-list\"),c=document.querySelectorAll(\".tag\");let s=null;function n(){const t=l?.value.toLowerCase()??\"\";g?.querySelectorAll(\".card-link\")?.forEach(e=>{const i=e.dataset.title??\"\",r=e.dataset.id??\"\",o=e.dataset.tags??\"\",d=i.includes(t)||r.includes(t),u=!s||o.includes(s);e.style.display=d&&u?\"block\":\"none\"})}l?.addEventListener(\"input\",n);c.forEach(t=>{t.addEventListener(\"click\",()=>{const a=t.dataset.tag;s===a?(s=null,c.forEach(e=>{e.classList.remove(\"active\"),e.setAttribute(\"aria-pressed\",\"false\")})):(c.forEach(e=>{e.classList.remove(\"active\"),e.setAttribute(\"aria-pressed\",\"false\")}),s=a??null,t.classList.add(\"active\"),t.setAttribute(\"aria-pressed\",\"true\")),n()})});"]],"assets":["/_astro/_id_.BqQf-JH6.css","/_astro/coverage.Cb0pX2ic.css","/_astro/coverage.BzPU-EGZ.css","/_astro/impact.Cvhl64u1.css","/logo.svg","/_astro/MockFormEditor.0L29BkPy.js","/_astro/MockFormEditor.OiYzJAtR.css","/_astro/_baseUniq.D9ouiLRJ.js","/_astro/arc.CLU0JlVT.js","/_astro/architectureDiagram-VXUJARFQ.BF0V2v9-.js","/_astro/blockDiagram-VD42YOAC.6LO7yu7m.js","/_astro/c4Diagram-YG6GDRKO.BqntXNsZ.js","/_astro/channel._8es88oH.js","/_astro/chunk-4BX2VUAB.b97OIY94.js","/_astro/chunk-55IACEB6.Cf9hglsl.js","/_astro/chunk-B4BG7PRW.vDfM6vb1.js","/_astro/chunk-DI55MBZ5.8pHdnkw9.js","/_astro/chunk-FMBD7UC4.l_Ue7ZYJ.js","/_astro/chunk-QN33PNHL.CyBZ7SCx.js","/_astro/chunk-QZHKN3VN.BC5tI2Vw.js","/_astro/chunk-TZMSLE5B.DxkkbOL4.js","/_astro/classDiagram-2ON5EDUG.DMv55r4w.js","/_astro/classDiagram-v2-WZHVMYZB.DMv55r4w.js","/_astro/client.9unXo8s5.js","/_astro/clone.COAvtnt5.js","/_astro/cose-bilkent-S5V4N54A.DlRxGhCG.js","/_astro/cytoscape.esm.DtBltrT8.js","/_astro/dagre-6UL2VRFP.tCLd0f1c.js","/_astro/defaultLocale.C4B-KCzX.js","/_astro/diagram-PSM6KHXK.CJA_rnN3.js","/_astro/diagram-QEK2KX5R.BoqLvsuS.js","/_astro/diagram-S2PKOQOG.T8h5wODN.js","/_astro/erDiagram-Q2GNP2WA.B4hpr69H.js","/_astro/flowDiagram-NV44I4VS.CV4Oenkb.js","/_astro/ganttDiagram-JELNMOA3.DdpXJeX3.js","/_astro/gitGraphDiagram-NY62KEGX.BeY3JZYI.js","/_astro/graph.CO6LxWoK.js","/_astro/graph.astro_astro_type_script_index_0_lang.BxaPom9e.js","/_astro/impact.astro_astro_type_script_index_0_lang.VjeLQGe6.js","/_astro/index.WFquGv8Z.js","/_astro/infoDiagram-WHAUD3N6.D2_J_fR6.js","/_astro/init.Gi6I4Gst.js","/_astro/journeyDiagram-XKPGCS4Q.7c4ngVDw.js","/_astro/kanban-definition-3W4ZIXB7.D_eWex6x.js","/_astro/katex.XbL3y5x-.js","/_astro/layout.Cn9EjNLq.js","/_astro/linear.BlE_mLsy.js","/_astro/mermaid.core.CgCLOZ6t.js","/_astro/min.OtQS-qlD.js","/_astro/mindmap-definition-VGOIOE7T.CjNYt18e.js","/_astro/ordinal.BYWQX77i.js","/_astro/pieDiagram-ADFJNKIX.D18DPyo6.js","/_astro/quadrantDiagram-AYHSOK5B.Cma08fPv.js","/_astro/requirementDiagram-UZGBJVZJ.BlhVOrX0.js","/_astro/sankeyDiagram-TZEHDZUN.HRsqw4ej.js","/_astro/sequenceDiagram-WL72ISMW.3cZYkaSP.js","/_astro/stateDiagram-FKZM4ZOC.DdlRd9N7.js","/_astro/stateDiagram-v2-4FDKWEC3.DCPDjwi7.js","/_astro/timeline-definition-IT6M3QCI.BshW8mMW.js","/_astro/treemap-KMMF4GRG.BxXN_YfK.js","/_astro/xychartDiagram-PRI3JC2R.Mg5_s08f.js"],"buildFormat":"directory","checkOrigin":true,"allowedDomains":[],"serverIslandNameMap":[],"key":"wc1gaZTgEWPzqF69OiFPhjOmqbMmyVPzSrtTIsa5xkw=","sessionConfig":{"driver":"fs-lite","options":{"base":"/home/runner/work/screenbook/screenbook/packages/ui/node_modules/.astro/sessions"}}});
99
+ if (manifest.sessionConfig) manifest.sessionConfig.driverModule = () => import('./chunks/fs-lite_COtHaKzy.mjs');
100
+
101
+ export { manifest };
@@ -1,2 +1,2 @@
1
- export { a as page } from '../chunks/node_u1SigWFL.mjs';
1
+ export { a as page } from '../chunks/node_97fzk9fE.mjs';
2
2
  export { renderers } from '../renderers.mjs';
@@ -40,7 +40,7 @@ Run the build command to generate coverage data.
40
40
  </code> </div>` : renderTemplate`${renderComponent($$result2, "Fragment", Fragment, { "data-astro-cid-vq7rje7m": true }, { "default": ($$result3) => renderTemplate`<div class="coverage-hero" data-astro-cid-vq7rje7m> <div${addAttribute(`coverage-percentage ${getPercentageBg(coverage.percentage)}`, "class")} data-astro-cid-vq7rje7m> <span${addAttribute(`percentage-value ${getPercentageColor(coverage.percentage)}`, "class")} data-astro-cid-vq7rje7m> ${coverage.percentage}%
41
41
  </span> <span class="percentage-label" data-astro-cid-vq7rje7m>Coverage</span> </div> <div class="coverage-stats" data-astro-cid-vq7rje7m> <div class="stat-card" data-astro-cid-vq7rje7m> <div class="stat-value" data-astro-cid-vq7rje7m>${coverage.covered}</div> <div class="stat-label" data-astro-cid-vq7rje7m>Documented</div> </div> <div class="stat-card" data-astro-cid-vq7rje7m> <div class="stat-value" data-astro-cid-vq7rje7m>${coverage.total}</div> <div class="stat-label" data-astro-cid-vq7rje7m>Total Routes</div> </div> <div class="stat-card" data-astro-cid-vq7rje7m> <div class="stat-value" data-astro-cid-vq7rje7m>${coverage.missing.length}</div> <div class="stat-label" data-astro-cid-vq7rje7m>Missing</div> </div> </div> </div> <div class="coverage-grid" data-astro-cid-vq7rje7m> <div class="coverage-section" data-astro-cid-vq7rje7m> <h2 class="section-title" data-astro-cid-vq7rje7m> <svg aria-hidden="true" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" data-astro-cid-vq7rje7m> <path stroke-linecap="round" stroke-linejoin="round" d="M15 19.128a9.38 9.38 0 002.625.372 9.337 9.337 0 004.121-.952 4.125 4.125 0 00-7.533-2.493M15 19.128v-.003c0-1.113-.285-2.16-.786-3.07M15 19.128v.106A12.318 12.318 0 018.624 21c-2.331 0-4.512-.645-6.374-1.766l-.001-.109a6.375 6.375 0 0111.964-3.07M12 6.375a3.375 3.375 0 11-6.75 0 3.375 3.375 0 016.75 0zm8.25 2.25a2.625 2.625 0 11-5.25 0 2.625 2.625 0 015.25 0z" data-astro-cid-vq7rje7m></path> </svg>
42
42
  By Owner
43
- </h2> <div class="owner-list" data-astro-cid-vq7rje7m> ${Object.entries(coverage.byOwner).map(([owner, data]) => renderTemplate`<div class="owner-item" data-astro-cid-vq7rje7m> <div class="owner-info" data-astro-cid-vq7rje7m> <span class="owner-name" data-astro-cid-vq7rje7m>${owner}</span> <span class="owner-count" data-astro-cid-vq7rje7m>${data.count} screen${data.count > 1 ? "s" : ""}</span> </div> <div class="owner-bar" data-astro-cid-vq7rje7m> <div class="owner-bar-fill"${addAttribute(`width: ${Math.round(data.count / coverage.covered * 100)}%`, "style")} data-astro-cid-vq7rje7m></div> </div> </div>`)} </div> </div> <div class="coverage-section" data-astro-cid-vq7rje7m> <h2 class="section-title" data-astro-cid-vq7rje7m> <svg aria-hidden="true" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" data-astro-cid-vq7rje7m> <path stroke-linecap="round" stroke-linejoin="round" d="M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z" data-astro-cid-vq7rje7m></path> <path stroke-linecap="round" stroke-linejoin="round" d="M6 6h.008v.008H6V6z" data-astro-cid-vq7rje7m></path> </svg>
43
+ </h2> <div class="owner-list" data-astro-cid-vq7rje7m> ${Object.entries(coverage.byOwner).map(([owner, data]) => renderTemplate`<div class="owner-item" data-astro-cid-vq7rje7m> <div class="owner-info" data-astro-cid-vq7rje7m> <span class="owner-name" data-astro-cid-vq7rje7m>${owner}</span> <span class="owner-count" data-astro-cid-vq7rje7m> ${data.count} screen${data.count > 1 ? "s" : ""} </span> </div> <div class="owner-bar" data-astro-cid-vq7rje7m> <div class="owner-bar-fill"${addAttribute(`width: ${Math.round(data.count / coverage.covered * 100)}%`, "style")} data-astro-cid-vq7rje7m></div> </div> </div>`)} </div> </div> <div class="coverage-section" data-astro-cid-vq7rje7m> <h2 class="section-title" data-astro-cid-vq7rje7m> <svg aria-hidden="true" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" data-astro-cid-vq7rje7m> <path stroke-linecap="round" stroke-linejoin="round" d="M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z" data-astro-cid-vq7rje7m></path> <path stroke-linecap="round" stroke-linejoin="round" d="M6 6h.008v.008H6V6z" data-astro-cid-vq7rje7m></path> </svg>
44
44
  By Tag
45
45
  </h2> <div class="tags-grid" data-astro-cid-vq7rje7m> ${Object.entries(coverage.byTag).sort(([, a], [, b]) => b - a).map(([tag, count]) => renderTemplate`<a${addAttribute(`/?tag=${encodeURIComponent(tag)}`, "href")} class="tag-card" data-astro-cid-vq7rje7m> <span class="tag-name" data-astro-cid-vq7rje7m>${tag}</span> <span class="tag-count" data-astro-cid-vq7rje7m>${count}</span> </a>`)} </div> </div> </div> ${coverage.missing.length > 0 && renderTemplate`<div class="coverage-section missing-section" data-astro-cid-vq7rje7m> <h2 class="section-title" data-astro-cid-vq7rje7m> <svg aria-hidden="true" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" data-astro-cid-vq7rje7m> <path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z" data-astro-cid-vq7rje7m></path> </svg>
46
46
  Missing Documentation (${coverage.missing.length})
@@ -85,7 +85,9 @@ const $$Graph = createComponent(async ($$result, $$props, $$slots) => {
85
85
  }
86
86
  lines.push("");
87
87
  lines.push(" %% Styling");
88
- lines.push(` classDef apiNode fill:#14b8a6,stroke:#5eead4,stroke-width:2px,color:#042f2e`);
88
+ lines.push(
89
+ ` classDef apiNode fill:#14b8a6,stroke:#5eead4,stroke-width:2px,color:#042f2e`
90
+ );
89
91
  for (const api of apis) {
90
92
  const id = api.replace(/\./g, "_");
91
93
  lines.push(` class ${id} apiNode`);
@@ -104,7 +106,9 @@ Run the build command to generate screen metadata.
104
106
  Navigation
105
107
  </button> <button class="toggle-btn" data-view="api" aria-pressed="false" data-astro-cid-oy34yelw> <svg aria-hidden="true" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" data-astro-cid-oy34yelw> <path stroke-linecap="round" stroke-linejoin="round" d="M5.25 14.25h13.5m-13.5 0a3 3 0 01-3-3m3 3a3 3 0 100 6h13.5a3 3 0 100-6m-16.5-3a3 3 0 013-3h13.5a3 3 0 013 3m-19.5 0a4.5 4.5 0 01.9-2.7L5.737 5.1a3.375 3.375 0 012.7-1.35h7.126c1.062 0 2.062.5 2.7 1.35l2.587 3.45a4.5 4.5 0 01.9 2.7m0 0a3 3 0 01-3 3m0 3h.008v.008h-.008v-.008zm0-6h.008v.008h-.008v-.008zm-3 6h.008v.008h-.008v-.008zm0-6h.008v.008h-.008v-.008z" data-astro-cid-oy34yelw></path> </svg>
106
108
  API Dependencies
107
- </button> </div> <div class="graph-stats" data-astro-cid-oy34yelw> <span class="stat" data-astro-cid-oy34yelw>${screens.length} screens</span> <span class="stat" data-astro-cid-oy34yelw>${apiCount} APIs</span> ${mockCount > 0 && renderTemplate`<span class="stat stat-mock" data-astro-cid-oy34yelw>📱 ${mockCount} with mock</span>`} </div> </div> <div class="graph-container" id="navigation-graph" role="img"${addAttribute(`Navigation graph showing ${screens.length} screens and their navigation relationships`, "aria-label")} data-astro-cid-oy34yelw> <pre class="mermaid" data-graph="navigation" aria-hidden="true" data-astro-cid-oy34yelw>${navigationGraph}</pre> </div> <div class="graph-container hidden" id="api-graph" role="img"${addAttribute(`API dependency graph showing ${screens.length} screens and ${apiCount} APIs`, "aria-label")} data-astro-cid-oy34yelw> <pre class="mermaid" data-graph="api" aria-hidden="true" data-astro-cid-oy34yelw>${apiGraph}</pre> </div> <div class="graph-legend" id="navigation-legend" data-astro-cid-oy34yelw> <div class="graph-legend-item" data-astro-cid-oy34yelw> <div class="legend-node" data-astro-cid-oy34yelw></div> <span data-astro-cid-oy34yelw>Screen</span> </div> <div class="graph-legend-item" data-astro-cid-oy34yelw> <div class="legend-node legend-mock" data-astro-cid-oy34yelw></div> <span data-astro-cid-oy34yelw>Screen with mock 📱</span> </div> <div class="graph-legend-item" data-astro-cid-oy34yelw> <div class="legend-edge" data-astro-cid-oy34yelw></div> <span data-astro-cid-oy34yelw>Navigation flow</span> </div> </div> <div class="graph-legend hidden" id="api-legend" data-astro-cid-oy34yelw> <div class="graph-legend-item" data-astro-cid-oy34yelw> <div class="legend-node legend-api" data-astro-cid-oy34yelw></div> <span data-astro-cid-oy34yelw>API</span> </div> <div class="graph-legend-item" data-astro-cid-oy34yelw> <div class="legend-node" data-astro-cid-oy34yelw></div> <span data-astro-cid-oy34yelw>Screen</span> </div> <div class="graph-legend-item" data-astro-cid-oy34yelw> <div class="legend-edge" data-astro-cid-oy34yelw></div> <span data-astro-cid-oy34yelw>Depends on</span> </div> </div> ` })}`} </div> ${renderScript($$result2, "/home/runner/work/screenbook/screenbook/packages/ui/src/pages/graph.astro?astro&type=script&index=0&lang.ts")} ` })} `;
109
+ </button> </div> <div class="graph-stats" data-astro-cid-oy34yelw> <span class="stat" data-astro-cid-oy34yelw>${screens.length} screens</span> <span class="stat" data-astro-cid-oy34yelw>${apiCount} APIs</span> ${mockCount > 0 && renderTemplate`<span class="stat stat-mock" data-astro-cid-oy34yelw>📱 ${mockCount} with mock</span>`} </div> </div> <div class="graph-container" id="navigation-graph" role="img"${addAttribute(`Navigation graph showing ${screens.length} screens and their navigation relationships`, "aria-label")} data-astro-cid-oy34yelw> <pre class="mermaid" data-graph="navigation" aria-hidden="true" data-astro-cid-oy34yelw> ${navigationGraph}
110
+ </pre> </div> <div class="graph-container hidden" id="api-graph" role="img"${addAttribute(`API dependency graph showing ${screens.length} screens and ${apiCount} APIs`, "aria-label")} data-astro-cid-oy34yelw> <pre class="mermaid" data-graph="api" aria-hidden="true" data-astro-cid-oy34yelw> ${apiGraph}
111
+ </pre> </div> <div class="graph-legend" id="navigation-legend" data-astro-cid-oy34yelw> <div class="graph-legend-item" data-astro-cid-oy34yelw> <div class="legend-node" data-astro-cid-oy34yelw></div> <span data-astro-cid-oy34yelw>Screen</span> </div> <div class="graph-legend-item" data-astro-cid-oy34yelw> <div class="legend-node legend-mock" data-astro-cid-oy34yelw></div> <span data-astro-cid-oy34yelw>Screen with mock 📱</span> </div> <div class="graph-legend-item" data-astro-cid-oy34yelw> <div class="legend-edge" data-astro-cid-oy34yelw></div> <span data-astro-cid-oy34yelw>Navigation flow</span> </div> </div> <div class="graph-legend hidden" id="api-legend" data-astro-cid-oy34yelw> <div class="graph-legend-item" data-astro-cid-oy34yelw> <div class="legend-node legend-api" data-astro-cid-oy34yelw></div> <span data-astro-cid-oy34yelw>API</span> </div> <div class="graph-legend-item" data-astro-cid-oy34yelw> <div class="legend-node" data-astro-cid-oy34yelw></div> <span data-astro-cid-oy34yelw>Screen</span> </div> <div class="graph-legend-item" data-astro-cid-oy34yelw> <div class="legend-edge" data-astro-cid-oy34yelw></div> <span data-astro-cid-oy34yelw>Depends on</span> </div> </div> ` })}`} </div> ${renderScript($$result2, "/home/runner/work/screenbook/screenbook/packages/ui/src/pages/graph.astro?astro&type=script&index=0&lang.ts")} ` })} `;
108
112
  }, "/home/runner/work/screenbook/screenbook/packages/ui/src/pages/graph.astro", void 0);
109
113
 
110
114
  const $$file = "/home/runner/work/screenbook/screenbook/packages/ui/src/pages/graph.astro";
@@ -26,15 +26,21 @@ Analyze which screens are affected when an API changes.
26
26
  </p> </div> ${screens.length === 0 ? renderTemplate`<div class="empty-state" data-astro-cid-kf663cba> <svg class="empty-state-icon" aria-hidden="true" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5" data-astro-cid-kf663cba> <path stroke-linecap="round" stroke-linejoin="round" d="M3.75 13.5l10.5-11.25L12 10.5h8.25L9.75 21.75 12 13.5H3.75z" data-astro-cid-kf663cba></path> </svg> <h2 class="empty-state-title" data-astro-cid-kf663cba>No screen data</h2> <p class="empty-state-description" data-astro-cid-kf663cba>
27
27
  Run the build command to generate screen metadata.
28
28
  </p> <code class="empty-state-code" data-astro-cid-kf663cba> <span class="prompt" data-astro-cid-kf663cba>$</span> screenbook build
29
- </code> </div>` : renderTemplate`${renderComponent($$result2, "Fragment", Fragment, { "data-astro-cid-kf663cba": true }, { "default": async ($$result3) => renderTemplate` <div class="impact-search" data-astro-cid-kf663cba> <form method="get" class="search-form" role="search" data-astro-cid-kf663cba> <div class="search-wrapper impact-search-wrapper" data-astro-cid-kf663cba> <svg class="search-icon" aria-hidden="true" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" data-astro-cid-kf663cba> <path stroke-linecap="round" stroke-linejoin="round" d="M3.75 13.5l10.5-11.25L12 10.5h8.25L9.75 21.75 12 13.5H3.75z" data-astro-cid-kf663cba></path> </svg> <label for="api-input" class="sr-only" data-astro-cid-kf663cba>API name to analyze</label> <input type="text" id="api-input" name="api" class="search-input" placeholder="Enter API name (e.g., InvoiceAPI.getDetail)"${addAttribute(apiQuery, "value")} list="api-suggestions" data-astro-cid-kf663cba> <datalist id="api-suggestions" data-astro-cid-kf663cba> ${allApis.map((api) => renderTemplate`<option${addAttribute(api, "value")} data-astro-cid-kf663cba></option>`)} </datalist> <button type="submit" class="search-button" data-astro-cid-kf663cba>
29
+ </code> </div>` : renderTemplate`${renderComponent($$result2, "Fragment", Fragment, { "data-astro-cid-kf663cba": true }, { "default": async ($$result3) => renderTemplate` <div class="impact-search" data-astro-cid-kf663cba> <form method="get" class="search-form" role="search" data-astro-cid-kf663cba> <div class="search-wrapper impact-search-wrapper" data-astro-cid-kf663cba> <svg class="search-icon" aria-hidden="true" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" data-astro-cid-kf663cba> <path stroke-linecap="round" stroke-linejoin="round" d="M3.75 13.5l10.5-11.25L12 10.5h8.25L9.75 21.75 12 13.5H3.75z" data-astro-cid-kf663cba></path> </svg> <label for="api-input" class="sr-only" data-astro-cid-kf663cba>
30
+ API name to analyze
31
+ </label> <input type="text" id="api-input" name="api" class="search-input" placeholder="Enter API name (e.g., InvoiceAPI.getDetail)"${addAttribute(apiQuery, "value")} list="api-suggestions" data-astro-cid-kf663cba> <datalist id="api-suggestions" data-astro-cid-kf663cba> ${allApis.map((api) => renderTemplate`<option${addAttribute(api, "value")} data-astro-cid-kf663cba></option>`)} </datalist> <button type="submit" class="search-button" data-astro-cid-kf663cba>
30
32
  Analyze
31
- </button> </div> </form> ${allApis.length > 0 && !apiQuery && renderTemplate`<div class="api-suggestions" data-astro-cid-kf663cba> <p class="suggestions-label" data-astro-cid-kf663cba>Available APIs:</p> <div class="tags" data-astro-cid-kf663cba> ${allApis.slice(0, 10).map((api) => renderTemplate`<a${addAttribute(`/impact?api=${encodeURIComponent(api)}`, "href")} class="tag" data-astro-cid-kf663cba> ${api} </a>`)} ${allApis.length > 10 && renderTemplate`<span class="tag tag-more" data-astro-cid-kf663cba>+${allApis.length - 10} more</span>`} </div> </div>`} </div> ${result && renderTemplate`<div class="impact-results" data-astro-cid-kf663cba> <div class="impact-summary" data-astro-cid-kf663cba> <div class="stats" data-astro-cid-kf663cba> <div class="stat" data-astro-cid-kf663cba> <div class="stat-value stat-total" data-astro-cid-kf663cba>${result.totalCount}</div> <div class="stat-label" data-astro-cid-kf663cba>Total Affected</div> </div> <div class="stat" data-astro-cid-kf663cba> <div class="stat-value stat-direct" data-astro-cid-kf663cba>${result.direct.length}</div> <div class="stat-label" data-astro-cid-kf663cba>Direct</div> </div> <div class="stat" data-astro-cid-kf663cba> <div class="stat-value stat-transitive" data-astro-cid-kf663cba>${result.transitive.length}</div> <div class="stat-label" data-astro-cid-kf663cba>Transitive</div> </div> </div> <button id="copy-markdown" class="copy-button"${addAttribute(markdown, "data-markdown")} aria-label="Copy impact analysis as Markdown" data-astro-cid-kf663cba> <svg aria-hidden="true" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" data-astro-cid-kf663cba> <path stroke-linecap="round" stroke-linejoin="round" d="M15.666 3.888A2.25 2.25 0 0013.5 2.25h-3c-1.03 0-1.9.693-2.166 1.638m7.332 0c.055.194.084.4.084.612v0a.75.75 0 01-.75.75H9a.75.75 0 01-.75-.75v0c0-.212.03-.418.084-.612m7.332 0c.646.049 1.288.11 1.927.184 1.1.128 1.907 1.077 1.907 2.185V19.5a2.25 2.25 0 01-2.25 2.25H6.75A2.25 2.25 0 014.5 19.5V6.257c0-1.108.806-2.057 1.907-2.185a48.208 48.208 0 011.927-.184" data-astro-cid-kf663cba></path> </svg>
33
+ </button> </div> </form> ${allApis.length > 0 && !apiQuery && renderTemplate`<div class="api-suggestions" data-astro-cid-kf663cba> <p class="suggestions-label" data-astro-cid-kf663cba>Available APIs:</p> <div class="tags" data-astro-cid-kf663cba> ${allApis.slice(0, 10).map((api) => renderTemplate`<a${addAttribute(`/impact?api=${encodeURIComponent(api)}`, "href")} class="tag" data-astro-cid-kf663cba> ${api} </a>`)} ${allApis.length > 10 && renderTemplate`<span class="tag tag-more" data-astro-cid-kf663cba>
34
+ +${allApis.length - 10} more
35
+ </span>`} </div> </div>`} </div> ${result && renderTemplate`<div class="impact-results" data-astro-cid-kf663cba> <div class="impact-summary" data-astro-cid-kf663cba> <div class="stats" data-astro-cid-kf663cba> <div class="stat" data-astro-cid-kf663cba> <div class="stat-value stat-total" data-astro-cid-kf663cba>${result.totalCount}</div> <div class="stat-label" data-astro-cid-kf663cba>Total Affected</div> </div> <div class="stat" data-astro-cid-kf663cba> <div class="stat-value stat-direct" data-astro-cid-kf663cba> ${result.direct.length} </div> <div class="stat-label" data-astro-cid-kf663cba>Direct</div> </div> <div class="stat" data-astro-cid-kf663cba> <div class="stat-value stat-transitive" data-astro-cid-kf663cba> ${result.transitive.length} </div> <div class="stat-label" data-astro-cid-kf663cba>Transitive</div> </div> </div> <button id="copy-markdown" class="copy-button"${addAttribute(markdown, "data-markdown")} aria-label="Copy impact analysis as Markdown" data-astro-cid-kf663cba> <svg aria-hidden="true" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" data-astro-cid-kf663cba> <path stroke-linecap="round" stroke-linejoin="round" d="M15.666 3.888A2.25 2.25 0 0013.5 2.25h-3c-1.03 0-1.9.693-2.166 1.638m7.332 0c.055.194.084.4.084.612v0a.75.75 0 01-.75.75H9a.75.75 0 01-.75-.75v0c0-.212.03-.418.084-.612m7.332 0c.646.049 1.288.11 1.927.184 1.1.128 1.907 1.077 1.907 2.185V19.5a2.25 2.25 0 01-2.25 2.25H6.75A2.25 2.25 0 014.5 19.5V6.257c0-1.108.806-2.057 1.907-2.185a48.208 48.208 0 011.927-.184" data-astro-cid-kf663cba></path> </svg>
32
36
  Copy as Markdown
33
- </button> </div> ${result.totalCount === 0 ? renderTemplate`<div class="no-impact" data-astro-cid-kf663cba> <svg aria-hidden="true" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5" data-astro-cid-kf663cba> <path stroke-linecap="round" stroke-linejoin="round" d="M9 12.75L11.25 15 15 9.75M21 12a9 9 0 11-18 0 9 9 0 0118 0z" data-astro-cid-kf663cba></path> </svg> <p data-astro-cid-kf663cba>No screens depend on <code data-astro-cid-kf663cba>${apiQuery}</code></p> </div>` : renderTemplate`${renderComponent($$result3, "Fragment", Fragment, { "data-astro-cid-kf663cba": true }, { "default": async ($$result4) => renderTemplate` <div class="impact-graph" role="img"${addAttribute(`Impact analysis graph showing ${result.direct.length} direct and ${result.transitive.length} transitive dependencies for ${apiQuery}`, "aria-label")} data-astro-cid-kf663cba> <div class="graph-container" data-astro-cid-kf663cba> <pre class="mermaid" aria-hidden="true" data-astro-cid-kf663cba>${mermaidGraph}</pre> </div> <div class="graph-legend" data-astro-cid-kf663cba> <div class="graph-legend-item" data-astro-cid-kf663cba> <div class="legend-node legend-direct" data-astro-cid-kf663cba></div> <span data-astro-cid-kf663cba>Direct dependency</span> </div> <div class="graph-legend-item" data-astro-cid-kf663cba> <div class="legend-node legend-transitive" data-astro-cid-kf663cba></div> <span data-astro-cid-kf663cba>Transitive</span> </div> <div class="graph-legend-item" data-astro-cid-kf663cba> <div class="legend-node" data-astro-cid-kf663cba></div> <span data-astro-cid-kf663cba>Not affected</span> </div> </div> </div> <div class="impact-details" data-astro-cid-kf663cba> ${result.direct.length > 0 && renderTemplate`<div class="section" data-astro-cid-kf663cba> <h3 class="section-title" data-astro-cid-kf663cba> <svg aria-hidden="true" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" data-astro-cid-kf663cba> <path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z" data-astro-cid-kf663cba></path> </svg>
37
+ </button> </div> ${result.totalCount === 0 ? renderTemplate`<div class="no-impact" data-astro-cid-kf663cba> <svg aria-hidden="true" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5" data-astro-cid-kf663cba> <path stroke-linecap="round" stroke-linejoin="round" d="M9 12.75L11.25 15 15 9.75M21 12a9 9 0 11-18 0 9 9 0 0118 0z" data-astro-cid-kf663cba></path> </svg> <p data-astro-cid-kf663cba>
38
+ No screens depend on <code data-astro-cid-kf663cba>${apiQuery}</code> </p> </div>` : renderTemplate`${renderComponent($$result3, "Fragment", Fragment, { "data-astro-cid-kf663cba": true }, { "default": async ($$result4) => renderTemplate` <div class="impact-graph" role="img"${addAttribute(`Impact analysis graph showing ${result.direct.length} direct and ${result.transitive.length} transitive dependencies for ${apiQuery}`, "aria-label")} data-astro-cid-kf663cba> <div class="graph-container" data-astro-cid-kf663cba> <pre class="mermaid" aria-hidden="true" data-astro-cid-kf663cba> ${mermaidGraph}
39
+ </pre> </div> <div class="graph-legend" data-astro-cid-kf663cba> <div class="graph-legend-item" data-astro-cid-kf663cba> <div class="legend-node legend-direct" data-astro-cid-kf663cba></div> <span data-astro-cid-kf663cba>Direct dependency</span> </div> <div class="graph-legend-item" data-astro-cid-kf663cba> <div class="legend-node legend-transitive" data-astro-cid-kf663cba></div> <span data-astro-cid-kf663cba>Transitive</span> </div> <div class="graph-legend-item" data-astro-cid-kf663cba> <div class="legend-node" data-astro-cid-kf663cba></div> <span data-astro-cid-kf663cba>Not affected</span> </div> </div> </div> <div class="impact-details" data-astro-cid-kf663cba> ${result.direct.length > 0 && renderTemplate`<div class="section" data-astro-cid-kf663cba> <h3 class="section-title" data-astro-cid-kf663cba> <svg aria-hidden="true" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" data-astro-cid-kf663cba> <path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z" data-astro-cid-kf663cba></path> </svg>
34
40
  Direct Dependencies (${result.direct.length})
35
- </h3> <div class="screen-link-list" data-astro-cid-kf663cba> ${result.direct.map((screen) => renderTemplate`<a${addAttribute(`/screen/${screen.id}`, "href")} class="screen-link impact-screen direct" data-astro-cid-kf663cba> <div class="screen-link-info" data-astro-cid-kf663cba> <div class="screen-link-title" data-astro-cid-kf663cba>${screen.title}</div> <div class="screen-link-id" data-astro-cid-kf663cba>${screen.route}</div> </div> ${screen.owner && screen.owner.length > 0 && renderTemplate`<div class="screen-link-owner" data-astro-cid-kf663cba> ${screen.owner.join(", ")} </div>`} </a>`)} </div> </div>`} ${result.transitive.length > 0 && renderTemplate`<div class="section" data-astro-cid-kf663cba> <h3 class="section-title" data-astro-cid-kf663cba> <svg aria-hidden="true" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" data-astro-cid-kf663cba> <path stroke-linecap="round" stroke-linejoin="round" d="M7.5 21L3 16.5m0 0L7.5 12M3 16.5h13.5m0-13.5L21 7.5m0 0L16.5 12M21 7.5H7.5" data-astro-cid-kf663cba></path> </svg>
41
+ </h3> <div class="screen-link-list" data-astro-cid-kf663cba> ${result.direct.map((screen) => renderTemplate`<a${addAttribute(`/screen/${screen.id}`, "href")} class="screen-link impact-screen direct" data-astro-cid-kf663cba> <div class="screen-link-info" data-astro-cid-kf663cba> <div class="screen-link-title" data-astro-cid-kf663cba> ${screen.title} </div> <div class="screen-link-id" data-astro-cid-kf663cba>${screen.route}</div> </div> ${screen.owner && screen.owner.length > 0 && renderTemplate`<div class="screen-link-owner" data-astro-cid-kf663cba> ${screen.owner.join(", ")} </div>`} </a>`)} </div> </div>`} ${result.transitive.length > 0 && renderTemplate`<div class="section" data-astro-cid-kf663cba> <h3 class="section-title" data-astro-cid-kf663cba> <svg aria-hidden="true" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" data-astro-cid-kf663cba> <path stroke-linecap="round" stroke-linejoin="round" d="M7.5 21L3 16.5m0 0L7.5 12M3 16.5h13.5m0-13.5L21 7.5m0 0L16.5 12M21 7.5H7.5" data-astro-cid-kf663cba></path> </svg>
36
42
  Transitive Dependencies (${result.transitive.length})
37
- </h3> <div class="screen-link-list" data-astro-cid-kf663cba> ${result.transitive.map(({ screen, path }) => renderTemplate`<a${addAttribute(`/screen/${screen.id}`, "href")} class="screen-link impact-screen transitive" data-astro-cid-kf663cba> <div class="screen-link-info" data-astro-cid-kf663cba> <div class="screen-link-title" data-astro-cid-kf663cba>${screen.title}</div> <div class="screen-link-path" data-astro-cid-kf663cba> ${path.join(" \u2192 ")} </div> </div> </a>`)} </div> </div>`} </div> ` })}`} </div>`}` })}`} </div> ${renderScript($$result2, "/home/runner/work/screenbook/screenbook/packages/ui/src/pages/impact.astro?astro&type=script&index=0&lang.ts")} ` })} `;
43
+ </h3> <div class="screen-link-list" data-astro-cid-kf663cba> ${result.transitive.map(({ screen, path }) => renderTemplate`<a${addAttribute(`/screen/${screen.id}`, "href")} class="screen-link impact-screen transitive" data-astro-cid-kf663cba> <div class="screen-link-info" data-astro-cid-kf663cba> <div class="screen-link-title" data-astro-cid-kf663cba> ${screen.title} </div> <div class="screen-link-path" data-astro-cid-kf663cba> ${path.join(" \u2192 ")} </div> </div> </a>`)} </div> </div>`} </div> ` })}`} </div>`}` })}`} </div> ${renderScript($$result2, "/home/runner/work/screenbook/screenbook/packages/ui/src/pages/impact.astro?astro&type=script&index=0&lang.ts")} ` })} `;
38
44
  }, "/home/runner/work/screenbook/screenbook/packages/ui/src/pages/impact.astro", void 0);
39
45
 
40
46
  const $$file = "/home/runner/work/screenbook/screenbook/packages/ui/src/pages/impact.astro";
@@ -7,10 +7,13 @@ const $$Index = createComponent(($$result, $$props, $$slots) => {
7
7
  const screens = loadScreens();
8
8
  const allTags = [...new Set(screens.flatMap((s) => s.tags ?? []))];
9
9
  return renderTemplate`${renderComponent($$result, "Layout", $$Layout, { "title": "Screens", "currentPage": "screens" }, { "default": ($$result2) => renderTemplate` ${maybeRenderHead()}<div class="container"> <div class="page-header"> <h1 class="page-title">Screens</h1> <p class="page-description">
10
- Browse all screens in your application. Click on a screen to see details and navigation flows.
10
+ Browse all screens in your application. Click on a screen to see details
11
+ and navigation flows.
11
12
  </p> </div> ${screens.length === 0 ? renderTemplate`<div class="empty-state"> <svg class="empty-state-icon" aria-hidden="true" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"> <path stroke-linecap="round" stroke-linejoin="round" d="M19.5 14.25v-2.625a3.375 3.375 0 00-3.375-3.375h-1.5A1.125 1.125 0 0113.5 7.125v-1.5a3.375 3.375 0 00-3.375-3.375H8.25m2.25 0H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 00-9-9z"></path> </svg> <h2 class="empty-state-title">No screens found</h2> <p class="empty-state-description">
12
13
  Get started by generating screen metadata from your routes.
13
- </p> <div class="empty-state-steps"> <div class="empty-state-step"> <span class="step-number">1</span> <div class="step-content"> <div class="step-title">Generate screen.meta.ts files</div> <code class="step-code">screenbook generate</code> </div> </div> <div class="empty-state-step"> <span class="step-number">2</span> <div class="step-content"> <div class="step-title">Build the screen catalog</div> <code class="step-code">screenbook build</code> </div> </div> <div class="empty-state-step"> <span class="step-number">3</span> <div class="step-content"> <div class="step-title">Restart the dev server</div> <code class="step-code">screenbook dev</code> </div> </div> </div> <div class="empty-state-features"> <p class="features-title">What you'll get:</p> <ul class="features-list"> <li>Screen catalog with search & filter</li> <li>Navigation graph visualization</li> <li>Impact analysis for API changes</li> <li>CI lint for documentation coverage</li> </ul> </div> </div>` : renderTemplate`${renderComponent($$result2, "Fragment", Fragment, {}, { "default": ($$result3) => renderTemplate` <div class="search-wrapper"> <svg class="search-icon" aria-hidden="true" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"> <path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path> </svg> <label for="search" class="sr-only">Search screens</label> <input type="text" id="search" placeholder="Search screens..." class="search-input"> </div> ${allTags.length > 0 && renderTemplate`<div class="tags" role="group" aria-label="Filter by tag"> ${allTags.map((tag) => renderTemplate`<button class="tag"${addAttribute(tag, "data-tag")} aria-pressed="false">${tag}</button>`)} </div>`}<h2 class="sr-only">All Screens</h2> <div class="screen-grid" id="screen-list" aria-live="polite"> ${screens.map((screen) => renderTemplate`<a${addAttribute(`/screen/${screen.id}`, "href")} class="card-link"${addAttribute(screen.tags?.join(",") ?? "", "data-tags")}${addAttribute(screen.title.toLowerCase(), "data-title")}${addAttribute(screen.id.toLowerCase(), "data-id")}> <div class="card"> <h3 class="card-title">${screen.title}</h3> <div class="card-route">${screen.route}</div> <div class="card-meta"> <span class="card-meta-item"> <svg aria-hidden="true" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"> <path stroke-linecap="round" stroke-linejoin="round" d="M5.25 8.25h15m-16.5 7.5h15m-1.8-13.5l-3.9 19.5m-2.1-19.5l-3.9 19.5"></path> </svg> ${screen.id} </span> ${screen.owner && screen.owner.length > 0 && renderTemplate`<span class="card-meta-item"> <svg aria-hidden="true" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"> <path stroke-linecap="round" stroke-linejoin="round" d="M15 19.128a9.38 9.38 0 002.625.372 9.337 9.337 0 004.121-.952 4.125 4.125 0 00-7.533-2.493M15 19.128v-.003c0-1.113-.285-2.16-.786-3.07M15 19.128v.106A12.318 12.318 0 018.624 21c-2.331 0-4.512-.645-6.374-1.766l-.001-.109a6.375 6.375 0 0111.964-3.07M12 6.375a3.375 3.375 0 11-6.75 0 3.375 3.375 0 016.75 0zm8.25 2.25a2.625 2.625 0 11-5.25 0 2.625 2.625 0 015.25 0z"></path> </svg> ${screen.owner.join(", ")} </span>`} </div> ${screen.tags && screen.tags.length > 0 && renderTemplate`<div class="card-tags"> ${screen.tags.map((tag) => renderTemplate`<span class="card-tag">${tag}</span>`)} </div>`} </div> </a>`)} </div> ` })}`} </div> ${renderScript($$result2, "/home/runner/work/screenbook/screenbook/packages/ui/src/pages/index.astro?astro&type=script&index=0&lang.ts")} ` })}`;
14
+ </p> <div class="empty-state-steps"> <div class="empty-state-step"> <span class="step-number">1</span> <div class="step-content"> <div class="step-title">Generate screen.meta.ts files</div> <code class="step-code">screenbook generate</code> </div> </div> <div class="empty-state-step"> <span class="step-number">2</span> <div class="step-content"> <div class="step-title">Build the screen catalog</div> <code class="step-code">screenbook build</code> </div> </div> <div class="empty-state-step"> <span class="step-number">3</span> <div class="step-content"> <div class="step-title">Restart the dev server</div> <code class="step-code">screenbook dev</code> </div> </div> </div> <div class="empty-state-features"> <p class="features-title">What you'll get:</p> <ul class="features-list"> <li>Screen catalog with search & filter</li> <li>Navigation graph visualization</li> <li>Impact analysis for API changes</li> <li>CI lint for documentation coverage</li> </ul> </div> </div>` : renderTemplate`${renderComponent($$result2, "Fragment", Fragment, {}, { "default": ($$result3) => renderTemplate` <div class="search-wrapper"> <svg class="search-icon" aria-hidden="true" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"> <path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path> </svg> <label for="search" class="sr-only">
15
+ Search screens
16
+ </label> <input type="text" id="search" placeholder="Search screens..." class="search-input"> </div> ${allTags.length > 0 && renderTemplate`<div class="tags" role="group" aria-label="Filter by tag"> ${allTags.map((tag) => renderTemplate`<button class="tag"${addAttribute(tag, "data-tag")} aria-pressed="false"> ${tag} </button>`)} </div>`}<h2 class="sr-only">All Screens</h2> <div class="screen-grid" id="screen-list" aria-live="polite"> ${screens.map((screen) => renderTemplate`<a${addAttribute(`/screen/${screen.id}`, "href")} class="card-link"${addAttribute(screen.tags?.join(",") ?? "", "data-tags")}${addAttribute(screen.title.toLowerCase(), "data-title")}${addAttribute(screen.id.toLowerCase(), "data-id")}> <div class="card"> <h3 class="card-title">${screen.title}</h3> <div class="card-route">${screen.route}</div> <div class="card-meta"> <span class="card-meta-item"> <svg aria-hidden="true" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"> <path stroke-linecap="round" stroke-linejoin="round" d="M5.25 8.25h15m-16.5 7.5h15m-1.8-13.5l-3.9 19.5m-2.1-19.5l-3.9 19.5"></path> </svg> ${screen.id} </span> ${screen.owner && screen.owner.length > 0 && renderTemplate`<span class="card-meta-item"> <svg aria-hidden="true" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"> <path stroke-linecap="round" stroke-linejoin="round" d="M15 19.128a9.38 9.38 0 002.625.372 9.337 9.337 0 004.121-.952 4.125 4.125 0 00-7.533-2.493M15 19.128v-.003c0-1.113-.285-2.16-.786-3.07M15 19.128v.106A12.318 12.318 0 018.624 21c-2.331 0-4.512-.645-6.374-1.766l-.001-.109a6.375 6.375 0 0111.964-3.07M12 6.375a3.375 3.375 0 11-6.75 0 3.375 3.375 0 016.75 0zm8.25 2.25a2.625 2.625 0 11-5.25 0 2.625 2.625 0 015.25 0z"></path> </svg> ${screen.owner.join(", ")} </span>`} </div> ${screen.tags && screen.tags.length > 0 && renderTemplate`<div class="card-tags"> ${screen.tags.map((tag) => renderTemplate`<span class="card-tag">${tag}</span>`)} </div>`} </div> </a>`)} </div> ` })}`} </div> ${renderScript($$result2, "/home/runner/work/screenbook/screenbook/packages/ui/src/pages/index.astro?astro&type=script&index=0&lang.ts")} ` })}`;
14
17
  }, "/home/runner/work/screenbook/screenbook/packages/ui/src/pages/index.astro", void 0);
15
18
 
16
19
  const $$file = "/home/runner/work/screenbook/screenbook/packages/ui/src/pages/index.astro";
@@ -151,7 +151,8 @@ Back to screens
151
151
  </a> <div class="detail-header"> <h1 class="detail-title">${screen.title}</h1> <div class="detail-route"> <svg aria-hidden="true" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"> <path stroke-linecap="round" stroke-linejoin="round" d="M13.19 8.688a4.5 4.5 0 011.242 7.244l-4.5 4.5a4.5 4.5 0 01-6.364-6.364l1.757-1.757m13.35-.622l1.757-1.757a4.5 4.5 0 00-6.364-6.364l-4.5 4.5a4.5 4.5 0 001.242 7.244"></path> </svg> ${screen.route} </div> </div> <div class="detail-content"> <div> <!-- Information --> <div class="section"> <h2 class="section-title">Information</h2> <div class="info-list"> <div class="info-item"> <span class="info-label">ID</span> <span class="info-value"><code>${screen.id}</code></span> </div> ${screen.owner && screen.owner.length > 0 && renderTemplate`<div class="info-item"> <span class="info-label">Owner</span> <span class="info-value">${screen.owner.join(", ")}</span> </div>`} ${screen.tags && screen.tags.length > 0 && renderTemplate`<div class="info-item"> <span class="info-label">Tags</span> <span class="info-value"> <div class="card-tags"> ${screen.tags.map((tag) => renderTemplate`<span class="card-tag">${tag}</span>`)} </div> </span> </div>`} ${screen.description && renderTemplate`<div class="info-item"> <span class="info-label">Description</span> <span class="info-value">${screen.description}</span> </div>`} </div> </div> <!-- Dependencies --> ${screen.dependsOn && screen.dependsOn.length > 0 && renderTemplate`<div class="section"> <h2 class="section-title">Dependencies</h2> <div class="dep-list"> ${screen.dependsOn.map((dep) => {
152
152
  const count = apiCounts.get(dep) || 1;
153
153
  const otherCount = count - 1;
154
- return renderTemplate`<a${addAttribute(`/impact?api=${encodeURIComponent(dep)}`, "href")} class="dep-item dep-item-link"> <div class="dep-item-main"> <svg aria-hidden="true" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"> <path stroke-linecap="round" stroke-linejoin="round" d="M17.25 6.75L22.5 12l-5.25 5.25m-10.5 0L1.5 12l5.25-5.25m7.5-3l-4.5 16.5"></path> </svg> <span>${dep}</span> </div> <div class="dep-item-meta"> ${otherCount > 0 && renderTemplate`<span class="dep-count">+${otherCount} other${otherCount > 1 ? "s" : ""}</span>`} <svg class="dep-arrow" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"> <path stroke-linecap="round" stroke-linejoin="round" d="M3.75 13.5l10.5-11.25L12 10.5h8.25L9.75 21.75 12 13.5H3.75z"></path> </svg> </div> </a>`;
154
+ return renderTemplate`<a${addAttribute(`/impact?api=${encodeURIComponent(dep)}`, "href")} class="dep-item dep-item-link"> <div class="dep-item-main"> <svg aria-hidden="true" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"> <path stroke-linecap="round" stroke-linejoin="round" d="M17.25 6.75L22.5 12l-5.25 5.25m-10.5 0L1.5 12l5.25-5.25m7.5-3l-4.5 16.5"></path> </svg> <span>${dep}</span> </div> <div class="dep-item-meta"> ${otherCount > 0 && renderTemplate`<span class="dep-count">
155
+ +${otherCount} other${otherCount > 1 ? "s" : ""} </span>`} <svg class="dep-arrow" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"> <path stroke-linecap="round" stroke-linejoin="round" d="M3.75 13.5l10.5-11.25L12 10.5h8.25L9.75 21.75 12 13.5H3.75z"></path> </svg> </div> </a>`;
155
156
  })} </div> </div>`} <!-- External Links --> ${screen.links && screen.links.length > 0 && renderTemplate`<div class="section"> <h2 class="section-title">Links</h2> <div class="dep-list"> ${screen.links.map((link) => renderTemplate`<a${addAttribute(link.url, "href")} target="_blank" rel="noopener noreferrer" class="dep-item"> <svg aria-hidden="true" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"> <path stroke-linecap="round" stroke-linejoin="round" d="M13.5 6H5.25A2.25 2.25 0 003 8.25v10.5A2.25 2.25 0 005.25 21h10.5A2.25 2.25 0 0018 18.75V10.5m-10.5 6L21 3m0 0h-5.25M21 3v5.25"></path> </svg> ${link.label} </a>`)} </div> </div>`} <!-- Mock Preview --> ${screen.mock && renderTemplate`<div class="section"> <h2 class="section-title">UI Wireframe</h2> ${renderComponent($$result2, "MockPreview", $$MockPreview, { "mock": screen.mock, "screenId": screen.id })} </div>`} </div> <div> <!-- Entry Points --> ${entryScreens.length > 0 && renderTemplate`<div class="sidebar-card"> <h3 class="sidebar-card-title"> <svg aria-hidden="true" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"> <path stroke-linecap="round" stroke-linejoin="round" d="M9 15L3 9m0 0l6-6M3 9h12a6 6 0 010 12h-3"></path> </svg>
156
157
  Entry Points
157
158
  </h3> <div class="screen-link-list"> ${entryScreens.map((s) => renderTemplate`<a${addAttribute(`/screen/${s.id}`, "href")} class="screen-link"> <div class="screen-link-info"> <span class="screen-link-title">${s.title}</span> <span class="screen-link-id">${s.id}</span> </div> <svg class="screen-link-arrow" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"> <path stroke-linecap="round" stroke-linejoin="round" d="M8.25 4.5l7.5 7.5-7.5 7.5"></path> </svg> </a>`)} </div> </div>`} <!-- Next Screens --> ${nextScreens.length > 0 && renderTemplate`<div class="sidebar-card"> <h3 class="sidebar-card-title"> <svg aria-hidden="true" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"> <path stroke-linecap="round" stroke-linejoin="round" d="M13.5 4.5L21 12m0 0l-7.5 7.5M21 12H3"></path> </svg>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@screenbook/ui",
3
- "version": "1.1.2",
3
+ "version": "1.4.0",
4
4
  "description": "UI for Screenbook - screen catalog and navigation graph viewer",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -1,101 +0,0 @@
1
- import 'piccolore';
2
- import { q as decodeKey } from './chunks/astro/server_m7yT4wCr.mjs';
3
- import 'clsx';
4
- import { N as NOOP_MIDDLEWARE_FN } from './chunks/astro-designed-error-pages_7IL58RLD.mjs';
5
- import 'es-module-lexer';
6
-
7
- function sanitizeParams(params) {
8
- return Object.fromEntries(
9
- Object.entries(params).map(([key, value]) => {
10
- if (typeof value === "string") {
11
- return [key, value.normalize().replace(/#/g, "%23").replace(/\?/g, "%3F")];
12
- }
13
- return [key, value];
14
- })
15
- );
16
- }
17
- function getParameter(part, params) {
18
- if (part.spread) {
19
- return params[part.content.slice(3)] || "";
20
- }
21
- if (part.dynamic) {
22
- if (!params[part.content]) {
23
- throw new TypeError(`Missing parameter: ${part.content}`);
24
- }
25
- return params[part.content];
26
- }
27
- return part.content.normalize().replace(/\?/g, "%3F").replace(/#/g, "%23").replace(/%5B/g, "[").replace(/%5D/g, "]");
28
- }
29
- function getSegment(segment, params) {
30
- const segmentPath = segment.map((part) => getParameter(part, params)).join("");
31
- return segmentPath ? "/" + segmentPath : "";
32
- }
33
- function getRouteGenerator(segments, addTrailingSlash) {
34
- return (params) => {
35
- const sanitizedParams = sanitizeParams(params);
36
- let trailing = "";
37
- if (addTrailingSlash === "always" && segments.length) {
38
- trailing = "/";
39
- }
40
- const path = segments.map((segment) => getSegment(segment, sanitizedParams)).join("") + trailing;
41
- return path || "/";
42
- };
43
- }
44
-
45
- function deserializeRouteData(rawRouteData) {
46
- return {
47
- route: rawRouteData.route,
48
- type: rawRouteData.type,
49
- pattern: new RegExp(rawRouteData.pattern),
50
- params: rawRouteData.params,
51
- component: rawRouteData.component,
52
- generate: getRouteGenerator(rawRouteData.segments, rawRouteData._meta.trailingSlash),
53
- pathname: rawRouteData.pathname || void 0,
54
- segments: rawRouteData.segments,
55
- prerender: rawRouteData.prerender,
56
- redirect: rawRouteData.redirect,
57
- redirectRoute: rawRouteData.redirectRoute ? deserializeRouteData(rawRouteData.redirectRoute) : void 0,
58
- fallbackRoutes: rawRouteData.fallbackRoutes.map((fallback) => {
59
- return deserializeRouteData(fallback);
60
- }),
61
- isIndex: rawRouteData.isIndex,
62
- origin: rawRouteData.origin
63
- };
64
- }
65
-
66
- function deserializeManifest(serializedManifest) {
67
- const routes = [];
68
- for (const serializedRoute of serializedManifest.routes) {
69
- routes.push({
70
- ...serializedRoute,
71
- routeData: deserializeRouteData(serializedRoute.routeData)
72
- });
73
- const route = serializedRoute;
74
- route.routeData = deserializeRouteData(serializedRoute.routeData);
75
- }
76
- const assets = new Set(serializedManifest.assets);
77
- const componentMetadata = new Map(serializedManifest.componentMetadata);
78
- const inlinedScripts = new Map(serializedManifest.inlinedScripts);
79
- const clientDirectives = new Map(serializedManifest.clientDirectives);
80
- const serverIslandNameMap = new Map(serializedManifest.serverIslandNameMap);
81
- const key = decodeKey(serializedManifest.key);
82
- return {
83
- // in case user middleware exists, this no-op middleware will be reassigned (see plugin-ssr.ts)
84
- middleware() {
85
- return { onRequest: NOOP_MIDDLEWARE_FN };
86
- },
87
- ...serializedManifest,
88
- assets,
89
- componentMetadata,
90
- inlinedScripts,
91
- clientDirectives,
92
- routes,
93
- serverIslandNameMap,
94
- key
95
- };
96
- }
97
-
98
- const manifest = deserializeManifest({"hrefRoot":"file:///home/runner/work/screenbook/screenbook/packages/ui/","cacheDir":"file:///home/runner/work/screenbook/screenbook/packages/ui/node_modules/.astro/","outDir":"file:///home/runner/work/screenbook/screenbook/packages/ui/dist/","srcDir":"file:///home/runner/work/screenbook/screenbook/packages/ui/src/","publicDir":"file:///home/runner/work/screenbook/screenbook/packages/ui/public/","buildClientDir":"file:///home/runner/work/screenbook/screenbook/packages/ui/dist/client/","buildServerDir":"file:///home/runner/work/screenbook/screenbook/packages/ui/dist/server/","adapterName":"@astrojs/node","routes":[{"file":"","links":[],"scripts":[],"styles":[],"routeData":{"type":"page","component":"_server-islands.astro","params":["name"],"segments":[[{"content":"_server-islands","dynamic":false,"spread":false}],[{"content":"name","dynamic":true,"spread":false}]],"pattern":"^\\/_server-islands\\/([^/]+?)\\/?$","prerender":false,"isIndex":false,"fallbackRoutes":[],"route":"/_server-islands/[name]","origin":"internal","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"styles":[],"routeData":{"type":"endpoint","isIndex":false,"route":"/_image","pattern":"^\\/_image\\/?$","segments":[[{"content":"_image","dynamic":false,"spread":false}]],"params":[],"component":"../../node_modules/.pnpm/astro@5.16.6_@types+node@25.0.3_jiti@2.6.1_lightningcss@1.30.2_rollup@4.54.0_tsx@4.21.0_typescript@5.9.3_yaml@2.8.2/node_modules/astro/dist/assets/endpoint/node.js","pathname":"/_image","prerender":false,"fallbackRoutes":[],"origin":"internal","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"styles":[],"routeData":{"route":"/api/save-mock","isIndex":false,"type":"endpoint","pattern":"^\\/api\\/save-mock\\/?$","segments":[[{"content":"api","dynamic":false,"spread":false}],[{"content":"save-mock","dynamic":false,"spread":false}]],"params":[],"component":"src/pages/api/save-mock.ts","pathname":"/api/save-mock","prerender":false,"fallbackRoutes":[],"distURL":[],"origin":"project","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"styles":[{"type":"external","src":"/_astro/coverage.BzPU-EGZ.css"},{"type":"external","src":"/_astro/coverage.Cb0pX2ic.css"}],"routeData":{"route":"/coverage","isIndex":false,"type":"page","pattern":"^\\/coverage\\/?$","segments":[[{"content":"coverage","dynamic":false,"spread":false}]],"params":[],"component":"src/pages/coverage.astro","pathname":"/coverage","prerender":false,"fallbackRoutes":[],"distURL":[],"origin":"project","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"styles":[{"type":"external","src":"/_astro/coverage.BzPU-EGZ.css"},{"type":"inline","content":".editor-container[data-astro-cid-nmyy7qaa]{position:fixed;inset:60px 0 0;background:#141822}\n"},{"type":"external","src":"/_astro/MockFormEditor.OiYzJAtR.css"}],"routeData":{"route":"/editor","isIndex":false,"type":"page","pattern":"^\\/editor\\/?$","segments":[[{"content":"editor","dynamic":false,"spread":false}]],"params":[],"component":"src/pages/editor.astro","pathname":"/editor","prerender":false,"fallbackRoutes":[],"distURL":[],"origin":"project","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"styles":[{"type":"external","src":"/_astro/coverage.BzPU-EGZ.css"},{"type":"inline","content":".graph-controls[data-astro-cid-oy34yelw]{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;flex-wrap:wrap;gap:16px}.view-toggle[data-astro-cid-oy34yelw]{display:flex;gap:8px;background:var(--color-surface);padding:4px;border-radius:var(--radius-lg);border:1px solid var(--color-border)}.toggle-btn[data-astro-cid-oy34yelw]{display:flex;align-items:center;gap:8px;padding:8px 16px;border:none;background:transparent;color:var(--color-text-muted);font-size:var(--text-sm);font-weight:500;border-radius:var(--radius-md);cursor:pointer;transition:all .15s ease}.toggle-btn[data-astro-cid-oy34yelw]:hover{color:var(--color-text)}.toggle-btn[data-astro-cid-oy34yelw].active{background:var(--color-accent);color:var(--color-bg)}.toggle-btn[data-astro-cid-oy34yelw] svg[data-astro-cid-oy34yelw]{width:16px;height:16px}.graph-stats[data-astro-cid-oy34yelw]{display:flex;gap:16px}.stat[data-astro-cid-oy34yelw]{font-size:var(--text-sm);color:var(--color-text-muted)}.hidden[data-astro-cid-oy34yelw]{display:none!important}.legend-api[data-astro-cid-oy34yelw]{background:#14b8a6!important;border-color:#5eead4!important}.legend-mock[data-astro-cid-oy34yelw]{border-color:#14b8a6!important;border-width:2px!important}.stat-mock[data-astro-cid-oy34yelw]{color:#14b8a6}\n"}],"routeData":{"route":"/graph","isIndex":false,"type":"page","pattern":"^\\/graph\\/?$","segments":[[{"content":"graph","dynamic":false,"spread":false}]],"params":[],"component":"src/pages/graph.astro","pathname":"/graph","prerender":false,"fallbackRoutes":[],"distURL":[],"origin":"project","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"styles":[{"type":"external","src":"/_astro/coverage.BzPU-EGZ.css"},{"type":"external","src":"/_astro/impact.Cvhl64u1.css"}],"routeData":{"route":"/impact","isIndex":false,"type":"page","pattern":"^\\/impact\\/?$","segments":[[{"content":"impact","dynamic":false,"spread":false}]],"params":[],"component":"src/pages/impact.astro","pathname":"/impact","prerender":false,"fallbackRoutes":[],"distURL":[],"origin":"project","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"styles":[{"type":"external","src":"/_astro/coverage.BzPU-EGZ.css"},{"type":"external","src":"/_astro/_id_.BqQf-JH6.css"}],"routeData":{"route":"/screen/[id]","isIndex":false,"type":"page","pattern":"^\\/screen\\/([^/]+?)\\/?$","segments":[[{"content":"screen","dynamic":false,"spread":false}],[{"content":"id","dynamic":true,"spread":false}]],"params":["id"],"component":"src/pages/screen/[id].astro","prerender":false,"fallbackRoutes":[],"distURL":[],"origin":"project","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"styles":[{"type":"external","src":"/_astro/coverage.BzPU-EGZ.css"}],"routeData":{"route":"/","isIndex":true,"type":"page","pattern":"^\\/$","segments":[],"params":[],"component":"src/pages/index.astro","pathname":"/","prerender":false,"fallbackRoutes":[],"distURL":[],"origin":"project","_meta":{"trailingSlash":"ignore"}}}],"base":"/","trailingSlash":"ignore","compressHTML":true,"componentMetadata":[["/home/runner/work/screenbook/screenbook/packages/ui/src/pages/coverage.astro",{"propagation":"none","containsHead":true}],["/home/runner/work/screenbook/screenbook/packages/ui/src/pages/editor.astro",{"propagation":"none","containsHead":true}],["/home/runner/work/screenbook/screenbook/packages/ui/src/pages/graph.astro",{"propagation":"none","containsHead":true}],["/home/runner/work/screenbook/screenbook/packages/ui/src/pages/impact.astro",{"propagation":"none","containsHead":true}],["/home/runner/work/screenbook/screenbook/packages/ui/src/pages/index.astro",{"propagation":"none","containsHead":true}],["/home/runner/work/screenbook/screenbook/packages/ui/src/pages/screen/[id].astro",{"propagation":"none","containsHead":true}]],"renderers":[],"clientDirectives":[["idle","(()=>{var l=(n,t)=>{let i=async()=>{await(await n())()},e=typeof t.value==\"object\"?t.value:void 0,s={timeout:e==null?void 0:e.timeout};\"requestIdleCallback\"in window?window.requestIdleCallback(i,s):setTimeout(i,s.timeout||200)};(self.Astro||(self.Astro={})).idle=l;window.dispatchEvent(new Event(\"astro:idle\"));})();"],["load","(()=>{var e=async t=>{await(await t())()};(self.Astro||(self.Astro={})).load=e;window.dispatchEvent(new Event(\"astro:load\"));})();"],["media","(()=>{var n=(a,t)=>{let i=async()=>{await(await a())()};if(t.value){let e=matchMedia(t.value);e.matches?i():e.addEventListener(\"change\",i,{once:!0})}};(self.Astro||(self.Astro={})).media=n;window.dispatchEvent(new Event(\"astro:media\"));})();"],["only","(()=>{var e=async t=>{await(await t())()};(self.Astro||(self.Astro={})).only=e;window.dispatchEvent(new Event(\"astro:only\"));})();"],["visible","(()=>{var a=(s,i,o)=>{let r=async()=>{await(await s())()},t=typeof i.value==\"object\"?i.value:void 0,c={rootMargin:t==null?void 0:t.rootMargin},n=new IntersectionObserver(e=>{for(let l of e)if(l.isIntersecting){n.disconnect(),r();break}},c);for(let e of o.children)n.observe(e)};(self.Astro||(self.Astro={})).visible=a;window.dispatchEvent(new Event(\"astro:visible\"));})();"]],"entryModules":{"\u0000noop-middleware":"_noop-middleware.mjs","\u0000virtual:astro:actions/noop-entrypoint":"noop-entrypoint.mjs","\u0000@astro-page:src/pages/api/save-mock@_@ts":"pages/api/save-mock.astro.mjs","\u0000@astro-page:src/pages/coverage@_@astro":"pages/coverage.astro.mjs","\u0000@astro-page:src/pages/editor@_@astro":"pages/editor.astro.mjs","\u0000@astro-page:src/pages/graph@_@astro":"pages/graph.astro.mjs","\u0000@astro-page:src/pages/impact@_@astro":"pages/impact.astro.mjs","\u0000@astro-page:src/pages/screen/[id]@_@astro":"pages/screen/_id_.astro.mjs","\u0000@astro-page:src/pages/index@_@astro":"pages/index.astro.mjs","\u0000@astrojs-ssr-virtual-entry":"entry.mjs","\u0000@astro-renderers":"renderers.mjs","\u0000@astro-page:../../node_modules/.pnpm/astro@5.16.6_@types+node@25.0.3_jiti@2.6.1_lightningcss@1.30.2_rollup@4.54.0_tsx@4.21.0_typescript@5.9.3_yaml@2.8.2/node_modules/astro/dist/assets/endpoint/node@_@js":"pages/_image.astro.mjs","\u0000@astrojs-ssr-adapter":"_@astrojs-ssr-adapter.mjs","\u0000@astrojs-manifest":"manifest_BGl49hHW.mjs","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/unstorage@1.17.3/node_modules/unstorage/drivers/fs-lite.mjs":"chunks/fs-lite_COtHaKzy.mjs","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/astro@5.16.6_@types+node@25.0.3_jiti@2.6.1_lightningcss@1.30.2_rollup@4.54.0_tsx@4.21.0_typescript@5.9.3_yaml@2.8.2/node_modules/astro/dist/assets/services/sharp.js":"chunks/sharp_ADxfwDJE.mjs","/home/runner/work/screenbook/screenbook/packages/ui/src/pages/graph.astro?astro&type=script&index=0&lang.ts":"_astro/graph.astro_astro_type_script_index_0_lang.BxaPom9e.js","/home/runner/work/screenbook/screenbook/packages/ui/src/pages/impact.astro?astro&type=script&index=0&lang.ts":"_astro/impact.astro_astro_type_script_index_0_lang.VjeLQGe6.js","/home/runner/work/screenbook/screenbook/packages/ui/src/pages/index.astro?astro&type=script&index=0&lang.ts":"_astro/index.astro_astro_type_script_index_0_lang.D9WgmwrZ.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/c4Diagram-YG6GDRKO.mjs":"_astro/c4Diagram-YG6GDRKO.BqntXNsZ.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/flowDiagram-NV44I4VS.mjs":"_astro/flowDiagram-NV44I4VS.CV4Oenkb.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/erDiagram-Q2GNP2WA.mjs":"_astro/erDiagram-Q2GNP2WA.B4hpr69H.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/gitGraphDiagram-NY62KEGX.mjs":"_astro/gitGraphDiagram-NY62KEGX.BeY3JZYI.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/infoDiagram-WHAUD3N6.mjs":"_astro/infoDiagram-WHAUD3N6.D2_J_fR6.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/quadrantDiagram-AYHSOK5B.mjs":"_astro/quadrantDiagram-AYHSOK5B.Cma08fPv.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/requirementDiagram-UZGBJVZJ.mjs":"_astro/requirementDiagram-UZGBJVZJ.BlhVOrX0.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/sequenceDiagram-WL72ISMW.mjs":"_astro/sequenceDiagram-WL72ISMW.3cZYkaSP.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/classDiagram-2ON5EDUG.mjs":"_astro/classDiagram-2ON5EDUG.DMv55r4w.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/classDiagram-v2-WZHVMYZB.mjs":"_astro/classDiagram-v2-WZHVMYZB.DMv55r4w.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/stateDiagram-FKZM4ZOC.mjs":"_astro/stateDiagram-FKZM4ZOC.DdlRd9N7.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/stateDiagram-v2-4FDKWEC3.mjs":"_astro/stateDiagram-v2-4FDKWEC3.DCPDjwi7.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/journeyDiagram-XKPGCS4Q.mjs":"_astro/journeyDiagram-XKPGCS4Q.7c4ngVDw.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/timeline-definition-IT6M3QCI.mjs":"_astro/timeline-definition-IT6M3QCI.BshW8mMW.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/kanban-definition-3W4ZIXB7.mjs":"_astro/kanban-definition-3W4ZIXB7.D_eWex6x.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/diagram-S2PKOQOG.mjs":"_astro/diagram-S2PKOQOG.T8h5wODN.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/diagram-QEK2KX5R.mjs":"_astro/diagram-QEK2KX5R.BoqLvsuS.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/blockDiagram-VD42YOAC.mjs":"_astro/blockDiagram-VD42YOAC.6LO7yu7m.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/katex@0.16.27/node_modules/katex/dist/katex.mjs":"_astro/katex.XbL3y5x-.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/dagre-6UL2VRFP.mjs":"_astro/dagre-6UL2VRFP.tCLd0f1c.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/xychartDiagram-PRI3JC2R.mjs":"_astro/xychartDiagram-PRI3JC2R.Mg5_s08f.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/pieDiagram-ADFJNKIX.mjs":"_astro/pieDiagram-ADFJNKIX.D18DPyo6.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/mindmap-definition-VGOIOE7T.mjs":"_astro/mindmap-definition-VGOIOE7T.CjNYt18e.js","@/components/MockFormEditor":"_astro/MockFormEditor.0L29BkPy.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/architectureDiagram-VXUJARFQ.mjs":"_astro/architectureDiagram-VXUJARFQ.BF0V2v9-.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/cose-bilkent-S5V4N54A.mjs":"_astro/cose-bilkent-S5V4N54A.DlRxGhCG.js","@astrojs/react/client.js":"_astro/client.9unXo8s5.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/sankeyDiagram-TZEHDZUN.mjs":"_astro/sankeyDiagram-TZEHDZUN.HRsqw4ej.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/diagram-PSM6KHXK.mjs":"_astro/diagram-PSM6KHXK.CJA_rnN3.js","/home/runner/work/screenbook/screenbook/node_modules/.pnpm/mermaid@11.12.2/node_modules/mermaid/dist/chunks/mermaid.core/ganttDiagram-JELNMOA3.mjs":"_astro/ganttDiagram-JELNMOA3.DdpXJeX3.js","astro:scripts/before-hydration.js":""},"inlinedScripts":[["/home/runner/work/screenbook/screenbook/packages/ui/src/pages/index.astro?astro&type=script&index=0&lang.ts","const l=document.getElementById(\"search\"),g=document.getElementById(\"screen-list\"),c=document.querySelectorAll(\".tag\");let s=null;function n(){const t=l?.value.toLowerCase()??\"\";g?.querySelectorAll(\".card-link\")?.forEach(e=>{const i=e.dataset.title??\"\",r=e.dataset.id??\"\",o=e.dataset.tags??\"\",d=i.includes(t)||r.includes(t),u=!s||o.includes(s);e.style.display=d&&u?\"block\":\"none\"})}l?.addEventListener(\"input\",n);c.forEach(t=>{t.addEventListener(\"click\",()=>{const a=t.dataset.tag;s===a?(s=null,c.forEach(e=>{e.classList.remove(\"active\"),e.setAttribute(\"aria-pressed\",\"false\")})):(c.forEach(e=>{e.classList.remove(\"active\"),e.setAttribute(\"aria-pressed\",\"false\")}),s=a??null,t.classList.add(\"active\"),t.setAttribute(\"aria-pressed\",\"true\")),n()})});"]],"assets":["/_astro/_id_.BqQf-JH6.css","/_astro/coverage.Cb0pX2ic.css","/_astro/coverage.BzPU-EGZ.css","/_astro/impact.Cvhl64u1.css","/logo.svg","/_astro/MockFormEditor.0L29BkPy.js","/_astro/MockFormEditor.OiYzJAtR.css","/_astro/_baseUniq.D9ouiLRJ.js","/_astro/arc.CLU0JlVT.js","/_astro/architectureDiagram-VXUJARFQ.BF0V2v9-.js","/_astro/blockDiagram-VD42YOAC.6LO7yu7m.js","/_astro/c4Diagram-YG6GDRKO.BqntXNsZ.js","/_astro/channel._8es88oH.js","/_astro/chunk-4BX2VUAB.b97OIY94.js","/_astro/chunk-55IACEB6.Cf9hglsl.js","/_astro/chunk-B4BG7PRW.vDfM6vb1.js","/_astro/chunk-DI55MBZ5.8pHdnkw9.js","/_astro/chunk-FMBD7UC4.l_Ue7ZYJ.js","/_astro/chunk-QN33PNHL.CyBZ7SCx.js","/_astro/chunk-QZHKN3VN.BC5tI2Vw.js","/_astro/chunk-TZMSLE5B.DxkkbOL4.js","/_astro/classDiagram-2ON5EDUG.DMv55r4w.js","/_astro/classDiagram-v2-WZHVMYZB.DMv55r4w.js","/_astro/client.9unXo8s5.js","/_astro/clone.COAvtnt5.js","/_astro/cose-bilkent-S5V4N54A.DlRxGhCG.js","/_astro/cytoscape.esm.DtBltrT8.js","/_astro/dagre-6UL2VRFP.tCLd0f1c.js","/_astro/defaultLocale.C4B-KCzX.js","/_astro/diagram-PSM6KHXK.CJA_rnN3.js","/_astro/diagram-QEK2KX5R.BoqLvsuS.js","/_astro/diagram-S2PKOQOG.T8h5wODN.js","/_astro/erDiagram-Q2GNP2WA.B4hpr69H.js","/_astro/flowDiagram-NV44I4VS.CV4Oenkb.js","/_astro/ganttDiagram-JELNMOA3.DdpXJeX3.js","/_astro/gitGraphDiagram-NY62KEGX.BeY3JZYI.js","/_astro/graph.CO6LxWoK.js","/_astro/graph.astro_astro_type_script_index_0_lang.BxaPom9e.js","/_astro/impact.astro_astro_type_script_index_0_lang.VjeLQGe6.js","/_astro/index.WFquGv8Z.js","/_astro/infoDiagram-WHAUD3N6.D2_J_fR6.js","/_astro/init.Gi6I4Gst.js","/_astro/journeyDiagram-XKPGCS4Q.7c4ngVDw.js","/_astro/kanban-definition-3W4ZIXB7.D_eWex6x.js","/_astro/katex.XbL3y5x-.js","/_astro/layout.Cn9EjNLq.js","/_astro/linear.BlE_mLsy.js","/_astro/mermaid.core.CgCLOZ6t.js","/_astro/min.OtQS-qlD.js","/_astro/mindmap-definition-VGOIOE7T.CjNYt18e.js","/_astro/ordinal.BYWQX77i.js","/_astro/pieDiagram-ADFJNKIX.D18DPyo6.js","/_astro/quadrantDiagram-AYHSOK5B.Cma08fPv.js","/_astro/requirementDiagram-UZGBJVZJ.BlhVOrX0.js","/_astro/sankeyDiagram-TZEHDZUN.HRsqw4ej.js","/_astro/sequenceDiagram-WL72ISMW.3cZYkaSP.js","/_astro/stateDiagram-FKZM4ZOC.DdlRd9N7.js","/_astro/stateDiagram-v2-4FDKWEC3.DCPDjwi7.js","/_astro/timeline-definition-IT6M3QCI.BshW8mMW.js","/_astro/treemap-KMMF4GRG.BxXN_YfK.js","/_astro/xychartDiagram-PRI3JC2R.Mg5_s08f.js"],"buildFormat":"directory","checkOrigin":true,"allowedDomains":[],"serverIslandNameMap":[],"key":"EoprQf2rQrRBIAw8HesJb6iO5xu3hwlfC20OFHiaHSk=","sessionConfig":{"driver":"fs-lite","options":{"base":"/home/runner/work/screenbook/screenbook/packages/ui/node_modules/.astro/sessions"}}});
99
- if (manifest.sessionConfig) manifest.sessionConfig.driverModule = () => import('./chunks/fs-lite_COtHaKzy.mjs');
100
-
101
- export { manifest };