@screenbook/ui 0.0.1 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dist/client/_astro/coverage.BnE2oGo8.css +1 -0
  3. package/dist/client/_astro/coverage.Cb0pX2ic.css +1 -0
  4. package/dist/client/_astro/graph.astro_astro_type_script_index_0_lang.B0fEnVdy.js +1 -0
  5. package/dist/server/_@astrojs-ssr-adapter.mjs +1 -1
  6. package/dist/server/chunks/{_@astrojs-ssr-adapter_DgsYudHz.mjs → _@astrojs-ssr-adapter_BCPoO8PO.mjs} +1 -1
  7. package/dist/server/chunks/{astro-designed-error-pages_BvPhMmw0.mjs → astro-designed-error-pages_7IL58RLD.mjs} +2 -2
  8. package/dist/server/chunks/{impactAnalysis_Bz5lMdmy.mjs → impactAnalysis_LvYEc57d.mjs} +11 -4
  9. package/dist/server/chunks/loadScreens_JhK3F9tC.mjs +39 -0
  10. package/dist/server/chunks/{node_DoTkMCOi.mjs → node_u1SigWFL.mjs} +5 -5
  11. package/dist/server/chunks/{sharp_DHNfMLYY.mjs → sharp_ADxfwDJE.mjs} +1 -1
  12. package/dist/server/entry.mjs +5 -5
  13. package/dist/server/manifest_CicDtuHD.mjs +101 -0
  14. package/dist/server/pages/_image.astro.mjs +1 -1
  15. package/dist/server/pages/coverage.astro.mjs +8 -8
  16. package/dist/server/pages/graph.astro.mjs +8 -8
  17. package/dist/server/pages/impact.astro.mjs +10 -10
  18. package/dist/server/pages/index.astro.mjs +5 -5
  19. package/dist/server/pages/screen/_id_.astro.mjs +9 -9
  20. package/package.json +41 -41
  21. package/src/layouts/Layout.astro +28 -11
  22. package/src/pages/coverage.astro +6 -6
  23. package/src/pages/graph.astro +16 -12
  24. package/src/pages/impact.astro +12 -9
  25. package/src/pages/index.astro +18 -9
  26. package/src/pages/screen/[id].astro +6 -6
  27. package/src/styles/global.css +55 -13
  28. package/src/utils/impactAnalysis.ts +12 -5
  29. package/.astro/data-store.json +0 -1
  30. package/.astro/settings.json +0 -5
  31. package/.screenbook/coverage.json +0 -37
  32. package/.screenbook/screens.json +0 -90
  33. package/LICENSE +0 -21
  34. package/dist/client/_astro/coverage.CKIVg4LY.css +0 -1
  35. package/dist/client/_astro/coverage.DDJMzKCq.css +0 -1
  36. package/dist/client/_astro/graph.astro_astro_type_script_index_0_lang.1HlATQ1g.js +0 -1
  37. package/dist/server/chunks/loadScreens_DJf-tycc.mjs +0 -39
  38. package/dist/server/manifest_-V1HEnR8.mjs +0 -101
package/CHANGELOG.md ADDED
@@ -0,0 +1,23 @@
1
+ # @screenbook/ui
2
+
3
+ ## 0.1.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`0067b16`](https://github.com/wadakatu/screenbook/commit/0067b16006cdf9d0a52e89558b42d33a5a4b0679) - Initial release of Screenbook - screen catalog and navigation graph generator for frontend applications.
8
+
9
+ Features:
10
+ - `defineScreen()` for type-safe screen metadata definitions
11
+ - `screenbook build` to generate screens.json
12
+ - `screenbook dev` to start the UI server
13
+ - `screenbook lint` to detect missing screen.meta files
14
+ - `screenbook init` to scaffold initial configuration
15
+ - `screenbook generate` to generate screen.meta.ts files
16
+ - `screenbook pr-impact` for PR impact analysis
17
+ - Screen list with search and filtering
18
+ - Navigation graph visualization with Mermaid
19
+
20
+ ### Patch Changes
21
+
22
+ - Updated dependencies [[`0067b16`](https://github.com/wadakatu/screenbook/commit/0067b16006cdf9d0a52e89558b42d33a5a4b0679)]:
23
+ - @screenbook/core@0.1.0
@@ -0,0 +1 @@
1
+ /*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-yellow-400:oklch(85.2% .199 91.936);--color-yellow-500:oklch(79.5% .184 86.047);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.25rem;--text-2xl:1.5rem;--text-3xl:2rem;--radius-sm:6px;--radius-md:8px;--radius-lg:12px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-bg:#111;--color-bg-muted:#222;--color-surface:#1a1a1a;--color-surface-hover:#252525;--color-border:#2e2e2e;--color-border-hover:#3a3a3a;--color-text:#eee;--color-text-secondary:#a0a0a0;--color-text-muted:#8a8a8a;--color-accent:#5eead4;--color-accent-hover:#99f6e4;--color-accent-bg:#5eead41a;--color-success:#4ade80;--color-warning:#fbbf24}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.block{display:block}.flex{display:flex}.hidden{display:none}.flex-shrink{flex-shrink:1}.flex-wrap{flex-wrap:wrap}.border{border-style:var(--tw-border-style);border-width:1px}.border-green-500\/30{border-color:#00c7584d}@supports (color:color-mix(in lab,red,red)){.border-green-500\/30{border-color:color-mix(in oklab,var(--color-green-500)30%,transparent)}}.border-red-500\/30{border-color:#fb2c364d}@supports (color:color-mix(in lab,red,red)){.border-red-500\/30{border-color:color-mix(in oklab,var(--color-red-500)30%,transparent)}}.border-yellow-500\/30{border-color:#edb2004d}@supports (color:color-mix(in lab,red,red)){.border-yellow-500\/30{border-color:color-mix(in oklab,var(--color-yellow-500)30%,transparent)}}.bg-green-500\/20{background-color:#00c75833}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/20{background-color:color-mix(in oklab,var(--color-green-500)20%,transparent)}}.bg-red-500\/20{background-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/20{background-color:color-mix(in oklab,var(--color-red-500)20%,transparent)}}.bg-yellow-500\/20{background-color:#edb20033}@supports (color:color-mix(in lab,red,red)){.bg-yellow-500\/20{background-color:color-mix(in oklab,var(--color-yellow-500)20%,transparent)}}.text-green-400{color:var(--color-green-400)}.text-red-400{color:var(--color-red-400)}.text-yellow-400{color:var(--color-yellow-400)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}}*{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;scroll-behavior:smooth}body{background:var(--color-bg);color:var(--color-text);font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:var(--text-base);line-height:1.6}h1,h2,h3,h4{color:var(--color-text);font-weight:600;line-height:1.3}h1{font-size:var(--text-3xl)}h2{font-size:var(--text-2xl)}h3{font-size:var(--text-xl)}h4{font-size:var(--text-lg)}p{color:var(--color-text-secondary)}a{color:var(--color-accent);text-decoration:none}a:hover{color:var(--color-accent-hover)}code{background:var(--color-bg-muted);border-radius:var(--radius-sm);padding:.2em .4em;font-family:ui-monospace,SF Mono,Menlo,Monaco,monospace;font-size:.9em}::selection{background:#5eead433}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--color-border-hover)}.container{max-width:1200px;margin:0 auto;padding:0 24px}.header{border-bottom:1px solid var(--color-border);background:var(--color-bg);z-index:100;padding:16px 0;position:sticky;top:0}.header-content{justify-content:space-between;align-items:center;gap:24px;display:flex}.logo{font-weight:600;font-size:var(--text-lg);color:var(--color-text);align-items:center;gap:10px;display:flex}.logo:hover{color:var(--color-text)}.logo-icon{width:28px;height:28px;color:var(--color-accent)}.nav{align-items:center;gap:4px;display:flex}.nav-link{font-size:var(--text-sm);color:var(--color-text-secondary);border-radius:var(--radius-md);align-items:center;gap:6px;padding:8px 14px;font-weight:500;transition:all .15s;display:flex}.nav-link:hover{color:var(--color-text);background:var(--color-surface-hover)}.nav-link.active{color:var(--color-accent);background:var(--color-accent-bg)}.nav-link svg{width:16px;height:16px}.page-header{padding:48px 0 32px}.page-title{margin-bottom:8px}.page-description{font-size:var(--text-lg);color:var(--color-text-muted);max-width:600px}.search-wrapper{max-width:400px;margin-bottom:32px;position:relative}.search-icon{width:18px;height:18px;color:var(--color-text-muted);pointer-events:none;position:absolute;top:50%;left:14px;transform:translateY(-50%)}.search-input{width:100%;font-size:var(--text-sm);color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);outline:none;padding:10px 14px 10px 42px;transition:border-color .15s}.search-input::placeholder{color:var(--color-text-muted)}.search-input:focus{border-color:var(--color-accent)}.tags{flex-wrap:wrap;gap:8px;margin-bottom:32px;display:flex}.tag{font-size:var(--text-xs);color:var(--color-text-secondary);background:var(--color-surface);border:1px solid var(--color-border);cursor:pointer;border-radius:9999px;align-items:center;padding:5px 12px;font-weight:500;transition:all .15s;display:inline-flex}.tag:hover{border-color:var(--color-border-hover);color:var(--color-text)}.tag.active{background:var(--color-accent-bg);border-color:var(--color-accent);color:var(--color-accent)}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:20px;transition:border-color .15s}.card-link{color:inherit;display:block}.card-link:hover{color:inherit}.card-link:hover .card{border-color:var(--color-border-hover)}.card-link:hover .card-title{color:var(--color-accent)}.card-title{font-size:var(--text-base);margin-bottom:4px;font-weight:600;transition:color .15s}.card-route{font-family:ui-monospace,monospace;font-size:var(--text-sm);color:var(--color-text-muted);margin-bottom:12px}.card-meta{font-size:var(--text-xs);color:var(--color-text-muted);flex-wrap:wrap;gap:12px;margin-bottom:12px;display:flex}.card-meta-item{align-items:center;gap:4px;display:flex}.card-meta-item svg{width:14px;height:14px}.card-tags{flex-wrap:wrap;gap:6px;display:flex}.card-tag{font-size:var(--text-xs);background:var(--color-bg-muted);color:var(--color-text-secondary);border-radius:4px;padding:3px 8px}.screen-grid{grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:16px;display:grid}.section{margin-bottom:32px}.section-title{font-size:var(--text-sm);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--color-border);margin-bottom:16px;padding-bottom:8px;font-weight:600}.detail-header{border-bottom:1px solid var(--color-border);margin-bottom:32px;padding:32px 0}.detail-title{font-size:var(--text-2xl);margin-bottom:8px}.detail-route{font-family:ui-monospace,monospace;font-size:var(--text-sm);color:var(--color-accent);background:var(--color-accent-bg);border-radius:var(--radius-md);align-items:center;gap:8px;padding:6px 12px;display:inline-flex}.detail-route svg{width:16px;height:16px}.detail-content{grid-template-columns:1fr 320px;gap:48px;display:grid}@media(max-width:900px){.detail-content{grid-template-columns:1fr;gap:32px}}.info-list{flex-direction:column;gap:16px;display:flex}.info-item{gap:16px;display:flex}.info-label{width:100px;font-size:var(--text-sm);color:var(--color-text-muted);flex-shrink:0}.info-value{font-size:var(--text-sm);color:var(--color-text)}.dep-list{flex-direction:column;gap:8px;display:flex}.dep-item{background:var(--color-bg-muted);border-radius:var(--radius-md);font-family:ui-monospace,monospace;font-size:var(--text-sm);align-items:center;gap:10px;padding:10px 12px;display:flex}.dep-item svg{width:16px;height:16px;color:var(--color-text-muted)}.dep-item-link{color:inherit;justify-content:space-between;align-items:center;text-decoration:none;transition:all .15s;display:flex}.dep-item-link:hover{background:var(--color-surface-hover);color:inherit}.dep-item-main{align-items:center;gap:10px;display:flex}.dep-item-meta{align-items:center;gap:8px;display:flex}.dep-count{font-size:var(--text-xs);color:var(--color-text-muted);background:var(--color-bg);border-radius:var(--radius-sm);padding:2px 8px}.dep-arrow{width:14px;height:14px;color:var(--color-accent);opacity:0;transition:opacity .15s}.dep-item-link:hover .dep-arrow{opacity:1}.screen-link-list{flex-direction:column;gap:8px;display:flex}.screen-link{background:var(--color-bg-muted);border-radius:var(--radius-md);color:var(--color-text);justify-content:space-between;align-items:center;padding:12px;transition:background .15s;display:flex}.screen-link:hover{background:var(--color-surface-hover);color:var(--color-text)}.screen-link-info{flex-direction:column;gap:2px;display:flex}.screen-link-title{font-size:var(--text-sm);font-weight:500}.screen-link-id{font-size:var(--text-xs);color:var(--color-text-muted);font-family:ui-monospace,monospace}.screen-link-arrow{width:16px;height:16px;color:var(--color-text-muted)}.sidebar-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);margin-bottom:16px;padding:20px}.sidebar-card-title{font-size:var(--text-sm);color:var(--color-text-muted);align-items:center;gap:8px;margin-bottom:16px;font-weight:600;display:flex}.sidebar-card-title svg{width:16px;height:16px}.graph-container{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);justify-content:center;align-items:center;min-height:400px;padding:32px;display:flex}.graph-legend{font-size:var(--text-sm);color:var(--color-text-muted);justify-content:center;gap:32px;margin-top:24px;display:flex}.graph-legend-item{align-items:center;gap:8px;display:flex}.legend-node{background:var(--color-bg-muted);border:1px solid var(--color-border-hover);border-radius:4px;width:32px;height:20px}.legend-edge{background:var(--color-accent);width:32px;height:2px}.empty-state{text-align:center;max-width:400px;margin:0 auto;padding:64px 24px}.empty-state-icon{width:48px;height:48px;color:var(--color-text-muted);margin:0 auto 16px}.empty-state-title{font-size:var(--text-lg);margin-bottom:8px}.empty-state-description{color:var(--color-text-muted);margin-bottom:24px}.empty-state-code{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);font-family:ui-monospace,monospace;font-size:var(--text-sm);align-items:center;gap:8px;padding:12px 20px;display:inline-flex}.empty-state-code .prompt{color:var(--color-text-muted)}.empty-state-steps{text-align:left;flex-direction:column;gap:16px;margin:32px 0;display:flex}.empty-state-step{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);align-items:flex-start;gap:16px;padding:16px;display:flex}.step-number{background:var(--color-accent-bg);width:28px;height:28px;color:var(--color-accent);font-size:var(--text-sm);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-weight:600;display:flex}.step-content{flex:1}.step-title{font-size:var(--text-sm);color:var(--color-text);margin-bottom:4px}.step-code{font-family:ui-monospace,monospace;font-size:var(--text-sm);color:var(--color-text-secondary);background:var(--color-bg);border-radius:var(--radius-sm);padding:4px 8px}.empty-state-features{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);text-align:left;margin-top:32px;padding:20px}.features-title{font-size:var(--text-sm);color:var(--color-text);margin-bottom:12px;font-weight:500}.features-list{margin:0;padding:0;list-style:none}.features-list li{font-size:var(--text-sm);color:var(--color-text-secondary);padding:6px 0 6px 20px;position:relative}.features-list li:before{content:"";background:var(--color-accent);border-radius:50%;width:6px;height:6px;position:absolute;top:12px;left:0}.back-link{font-size:var(--text-sm);color:var(--color-text-muted);align-items:center;gap:6px;margin-bottom:24px;display:inline-flex}.back-link:hover{color:var(--color-text)}.back-link svg{width:16px;height:16px}.stats{gap:24px;display:flex}.stat{text-align:center}.stat-value{font-size:var(--text-2xl);color:var(--color-text);font-weight:600}.stat-label{font-size:var(--text-xs);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em}.mermaid{background:0 0}.mermaid .node rect{fill:var(--color-bg-muted);stroke:var(--color-border-hover);stroke-width:1px;rx:6px}.mermaid .nodeLabel{color:var(--color-text);font-family:system-ui,sans-serif;font-size:13px}.mermaid .edgePath .path{stroke:var(--color-accent);stroke-width:1.5px}.mermaid .edgeLabel{background:var(--color-bg);color:var(--color-text-muted)}.sr-only{clip:rect(0,0,0,0);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:1000;background:var(--color-accent);color:var(--color-bg);font-weight:600;font-size:var(--text-sm);border-radius:var(--radius-md);padding:12px 24px;text-decoration:none;transition:top .2s;position:absolute;top:-100%;left:16px}.skip-link:focus{outline:none;top:16px}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}:focus:not(:focus-visible){outline:none}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}
@@ -0,0 +1 @@
1
+ .coverage-hero[data-astro-cid-vq7rje7m]{display:flex;gap:32px;align-items:center;margin-bottom:48px}.coverage-percentage[data-astro-cid-vq7rje7m]{display:flex;flex-direction:column;align-items:center;justify-content:center;width:180px;height:180px;border-radius:50%;border:3px solid;flex-shrink:0}.percentage-value[data-astro-cid-vq7rje7m]{font-size:3.5rem;font-weight:700;line-height:1}.percentage-label[data-astro-cid-vq7rje7m]{font-size:var(--text-sm);color:var(--color-text-secondary);margin-top:4px}.coverage-stats[data-astro-cid-vq7rje7m]{display:flex;gap:24px;flex-wrap:wrap}.stat-card[data-astro-cid-vq7rje7m]{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:24px 32px;text-align:center;min-width:120px}.stat-value[data-astro-cid-vq7rje7m]{font-size:var(--text-3xl);font-weight:700;color:var(--color-text)}.stat-label[data-astro-cid-vq7rje7m]{font-size:var(--text-sm);color:var(--color-text-muted);margin-top:4px}.coverage-grid[data-astro-cid-vq7rje7m]{display:grid;grid-template-columns:repeat(auto-fit,minmax(350px,1fr));gap:32px;margin-bottom:48px}.coverage-section[data-astro-cid-vq7rje7m]{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:24px}.section-title[data-astro-cid-vq7rje7m]{display:flex;align-items:center;gap:10px;font-size:var(--text-lg);font-weight:600;margin-bottom:20px;color:var(--color-text)}.section-title[data-astro-cid-vq7rje7m] svg[data-astro-cid-vq7rje7m]{width:20px;height:20px;color:var(--color-accent)}.section-description[data-astro-cid-vq7rje7m]{font-size:var(--text-sm);color:var(--color-text-muted);margin-bottom:16px}.owner-list[data-astro-cid-vq7rje7m]{display:flex;flex-direction:column;gap:16px}.owner-item[data-astro-cid-vq7rje7m]{display:flex;flex-direction:column;gap:8px}.owner-info[data-astro-cid-vq7rje7m]{display:flex;justify-content:space-between;align-items:center}.owner-name[data-astro-cid-vq7rje7m]{font-size:var(--text-sm);font-weight:500;color:var(--color-text)}.owner-count[data-astro-cid-vq7rje7m]{font-size:var(--text-xs);color:var(--color-text-muted)}.owner-bar[data-astro-cid-vq7rje7m]{height:8px;background:var(--color-bg-muted);border-radius:4px;overflow:hidden}.owner-bar-fill[data-astro-cid-vq7rje7m]{height:100%;background:var(--color-accent);border-radius:4px;transition:width .3s ease}.tags-grid[data-astro-cid-vq7rje7m]{display:flex;flex-wrap:wrap;gap:8px}.tag-card[data-astro-cid-vq7rje7m]{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--color-bg-muted);border-radius:var(--radius-md);text-decoration:none;transition:background .15s ease}.tag-card[data-astro-cid-vq7rje7m]:hover{background:var(--color-surface-hover)}.tag-name[data-astro-cid-vq7rje7m]{font-size:var(--text-sm);color:var(--color-text)}.tag-count[data-astro-cid-vq7rje7m]{font-size:var(--text-xs);color:var(--color-accent);font-weight:600;background:var(--color-accent-bg);padding:2px 6px;border-radius:4px}.missing-section[data-astro-cid-vq7rje7m]{grid-column:1 / -1}.missing-list[data-astro-cid-vq7rje7m]{display:flex;flex-direction:column;gap:12px}.missing-item[data-astro-cid-vq7rje7m]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:var(--color-bg-muted);border-radius:var(--radius-md);border-left:3px solid var(--color-warning)}.missing-route[data-astro-cid-vq7rje7m]{display:flex;align-items:center;gap:10px;font-size:var(--text-sm);color:var(--color-text)}.missing-route[data-astro-cid-vq7rje7m] svg[data-astro-cid-vq7rje7m]{width:16px;height:16px;color:var(--color-text-muted)}.suggested-path[data-astro-cid-vq7rje7m]{font-size:var(--text-xs);color:var(--color-text-muted)}.coverage-footer[data-astro-cid-vq7rje7m]{text-align:center;padding-top:24px;border-top:1px solid var(--color-border)}.timestamp[data-astro-cid-vq7rje7m]{font-size:var(--text-xs);color:var(--color-text-muted)}@media(max-width:768px){.coverage-hero[data-astro-cid-vq7rje7m]{flex-direction:column;text-align:center}.coverage-stats[data-astro-cid-vq7rje7m]{justify-content:center}.missing-item[data-astro-cid-vq7rje7m]{flex-direction:column;align-items:flex-start;gap:8px}}
@@ -0,0 +1 @@
1
+ import{m as c}from"./mermaid.core.CReXU7YN.js";const m={startOnLoad:!1,theme:"dark",themeVariables:{darkMode:!0,background:"transparent",primaryColor:"#222222",primaryBorderColor:"#3a3a3a",primaryTextColor:"#eeeeee",lineColor:"#5eead4",fontFamily:"system-ui, sans-serif"},flowchart:{useMaxWidth:!0,htmlLabels:!0,curve:"basis",padding:20,nodeSpacing:50,rankSpacing:60}};c.initialize(m);async function g(){const e=document.querySelectorAll(".mermaid");for(const t of e){const a=t.getAttribute("data-graph"),l=t.textContent||"";try{const{svg:r}=await c.render(`mermaid-${a}`,l);t.innerHTML=r}catch(r){console.error(`Failed to render ${a} graph:`,r)}}}g();const s=document.querySelectorAll(".toggle-btn"),n=document.getElementById("navigation-graph"),i=document.getElementById("api-graph"),d=document.getElementById("navigation-legend"),o=document.getElementById("api-legend");s.forEach(e=>{e.addEventListener("click",()=>{const t=e.getAttribute("data-view");s.forEach(a=>{a.classList.remove("active"),a.setAttribute("aria-pressed","false")}),e.classList.add("active"),e.setAttribute("aria-pressed","true"),t==="navigation"?(n?.classList.remove("hidden"),i?.classList.add("hidden"),d?.classList.remove("hidden"),o?.classList.add("hidden")):(n?.classList.add("hidden"),i?.classList.remove("hidden"),d?.classList.add("hidden"),o?.classList.remove("hidden"))})});
@@ -1 +1 @@
1
- export { c as createExports, a as start } from './chunks/_@astrojs-ssr-adapter_DgsYudHz.mjs';
1
+ export { c as createExports, a as start } from './chunks/_@astrojs-ssr-adapter_BCPoO8PO.mjs';
@@ -1,7 +1,7 @@
1
1
  import { v as decryptString, w as createSlotValueFromString, x as isAstroComponentFactory, k as renderComponent, r as renderTemplate, R as ROUTE_TYPE_HEADER, y as REROUTE_DIRECTIVE_HEADER, A as AstroError, z as i18nNoLocaleFoundInPath, B as ResponseSentError, C as ActionNotFoundError, D as MiddlewareNoDataOrNextCalled, G as MiddlewareNotAResponse, H as originPathnameSymbol, J as RewriteWithBodyUsed, K as GetStaticPathsRequired, O as InvalidGetStaticPathsReturn, P as InvalidGetStaticPathsEntry, Q as GetStaticPathsExpectedParams, S as GetStaticPathsInvalidRouteParam, T as PageNumberParamNotFound, V as DEFAULT_404_COMPONENT, W as NoMatchingStaticPathFound, X as PrerenderDynamicEndpointPathCollide, Y as ReservedSlotName, Z as renderSlotToString, _ as renderJSX, $ as chunkToString, a0 as isRenderInstruction, a1 as ForbiddenRewrite, a2 as SessionStorageInitError, a3 as SessionStorageSaveError, a4 as ASTRO_VERSION, a5 as CspNotEnabled, a6 as LocalsReassigned, a7 as generateCspDigest, a8 as PrerenderClientAddressNotAvailable, a9 as clientAddressSymbol, aa as ClientAddressNotAvailable, ab as StaticClientAddressNotAvailable, ac as AstroResponseHeadersReassigned, ad as responseSentSymbol$1, ae as renderPage, af as REWRITE_DIRECTIVE_HEADER_KEY, ag as REWRITE_DIRECTIVE_HEADER_VALUE, ah as renderEndpoint, ai as LocalsNotAnObject, aj as REROUTABLE_STATUS_CODES, ak as nodeRequestAbortControllerCleanupSymbol } from './astro/server_m7yT4wCr.mjs';
2
2
  import colors from 'piccolore';
3
3
  import 'clsx';
4
- import { A as ActionError, d as deserializeActionResult, s as serializeActionResult, a as ACTION_RPC_ROUTE_PATTERN, b as ACTION_QUERY_PARAMS, g as getActionQueryString, D as DEFAULT_404_ROUTE, c as default404Instance, N as NOOP_MIDDLEWARE_FN, e as ensure404Route } from './astro-designed-error-pages_BvPhMmw0.mjs';
4
+ import { A as ActionError, d as deserializeActionResult, s as serializeActionResult, a as ACTION_RPC_ROUTE_PATTERN, b as ACTION_QUERY_PARAMS, g as getActionQueryString, D as DEFAULT_404_ROUTE, c as default404Instance, N as NOOP_MIDDLEWARE_FN, e as ensure404Route } from './astro-designed-error-pages_7IL58RLD.mjs';
5
5
  import 'es-module-lexer';
6
6
  import buffer from 'node:buffer';
7
7
  import crypto$1 from 'node:crypto';
@@ -126,7 +126,7 @@ function getActionQueryString(name) {
126
126
  }
127
127
  function serializeActionResult(res) {
128
128
  if (res.error) {
129
- if (Object.assign(__vite_import_meta_env__, {})?.DEV) {
129
+ if (Object.assign(__vite_import_meta_env__, { CI: true, _: process.env._ })?.DEV) {
130
130
  actionResultErrorStack.set(res.error.stack);
131
131
  }
132
132
  let body2;
@@ -193,7 +193,7 @@ function deserializeActionResult(res) {
193
193
  })
194
194
  };
195
195
  }
196
- if (Object.assign(__vite_import_meta_env__, {})?.PROD) {
196
+ if (Object.assign(__vite_import_meta_env__, { CI: true, _: process.env._ })?.PROD) {
197
197
  return { error: ActionError.fromJson(json), data: void 0 };
198
198
  } else {
199
199
  const error = ActionError.fromJson(json);
@@ -23,7 +23,7 @@ function buildNavigationGraph(screens) {
23
23
  graph.set(screen.id, /* @__PURE__ */ new Set());
24
24
  }
25
25
  for (const nextId of screen.next) {
26
- graph.get(screen.id).add(nextId);
26
+ graph.get(screen.id)?.add(nextId);
27
27
  }
28
28
  }
29
29
  return graph;
@@ -35,6 +35,7 @@ function findPathToDirectDependent(startId, targetIds, graph, maxDepth) {
35
35
  const localVisited = /* @__PURE__ */ new Set([startId]);
36
36
  while (queue.length > 0) {
37
37
  const current = queue.shift();
38
+ if (!current) break;
38
39
  if (current.path.length > maxDepth + 1) {
39
40
  continue;
40
41
  }
@@ -120,9 +121,15 @@ function generateImpactMermaid(screens, result) {
120
121
  const directIds = new Set(result.direct.map((s) => s.id));
121
122
  const transitiveIds = new Set(result.transitive.map((t) => t.screen.id));
122
123
  const lines = ["flowchart TD"];
123
- lines.push(" classDef direct fill:#dc2626,stroke:#fef2f2,color:#ffffff,stroke-width:3px,font-weight:bold");
124
- lines.push(" classDef transitive fill:#ea580c,stroke:#fff7ed,color:#ffffff,stroke-width:3px,font-weight:bold");
125
- lines.push(" classDef normal fill:#1e293b,stroke:#64748b,color:#e2e8f0,stroke-width:1px");
124
+ lines.push(
125
+ " classDef direct fill:#dc2626,stroke:#fef2f2,color:#ffffff,stroke-width:3px,font-weight:bold"
126
+ );
127
+ lines.push(
128
+ " classDef transitive fill:#ea580c,stroke:#fff7ed,color:#ffffff,stroke-width:3px,font-weight:bold"
129
+ );
130
+ lines.push(
131
+ " classDef normal fill:#1e293b,stroke:#64748b,color:#e2e8f0,stroke-width:1px"
132
+ );
126
133
  for (const screen of screens) {
127
134
  const label = screen.title.replace(/"/g, "'");
128
135
  const id = screen.id.replace(/\./g, "_");
@@ -0,0 +1,39 @@
1
+ import { e as createComponent, f as createAstro, o as renderHead, h as addAttribute, p as renderSlot, r as renderTemplate } from './astro/server_m7yT4wCr.mjs';
2
+ import 'piccolore';
3
+ import 'clsx';
4
+ /* empty css */
5
+ import { existsSync, readFileSync } from 'node:fs';
6
+ import { join } from 'node:path';
7
+
8
+ const $$Astro = createAstro();
9
+ const $$Layout = createComponent(($$result, $$props, $$slots) => {
10
+ const Astro2 = $$result.createAstro($$Astro, $$props, $$slots);
11
+ Astro2.self = $$Layout;
12
+ const { title, currentPage } = Astro2.props;
13
+ return renderTemplate`<html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>${title} | Screenbook</title>${renderHead()}</head> <body> <a href="#main-content" class="skip-link">Skip to main content</a> <header class="header"> <div class="container"> <div class="header-content"> <a href="/" class="logo"> <img src="/logo.svg" alt="Screenbook home" class="logo-icon" width="24" height="24">
14
+ Screenbook
15
+ </a> <nav class="nav" aria-label="Main navigation"> <a href="/"${addAttribute(["nav-link", { active: currentPage === "screens" }], "class:list")}${addAttribute(currentPage === "screens" ? "page" : void 0, "aria-current")}> <svg aria-hidden="true" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"> <path stroke-linecap="round" stroke-linejoin="round" d="M3.75 6A2.25 2.25 0 016 3.75h2.25A2.25 2.25 0 0110.5 6v2.25a2.25 2.25 0 01-2.25 2.25H6a2.25 2.25 0 01-2.25-2.25V6zM3.75 15.75A2.25 2.25 0 016 13.5h2.25a2.25 2.25 0 012.25 2.25V18a2.25 2.25 0 01-2.25 2.25H6A2.25 2.25 0 013.75 18v-2.25zM13.5 6a2.25 2.25 0 012.25-2.25H18A2.25 2.25 0 0120.25 6v2.25A2.25 2.25 0 0118 10.5h-2.25a2.25 2.25 0 01-2.25-2.25V6zM13.5 15.75a2.25 2.25 0 012.25-2.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-2.25A2.25 2.25 0 0113.5 18v-2.25z"></path> </svg>
16
+ Screens
17
+ </a> <a href="/graph"${addAttribute(["nav-link", { active: currentPage === "graph" }], "class:list")}${addAttribute(currentPage === "graph" ? "page" : void 0, "aria-current")}> <svg aria-hidden="true" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"> <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"></path> </svg>
18
+ Graph
19
+ </a> <a href="/impact"${addAttribute(["nav-link", { active: currentPage === "impact" }], "class:list")}${addAttribute(currentPage === "impact" ? "page" : void 0, "aria-current")}> <svg aria-hidden="true" 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>
20
+ Impact
21
+ </a> <a href="/coverage"${addAttribute(["nav-link", { active: currentPage === "coverage" }], "class:list")}${addAttribute(currentPage === "coverage" ? "page" : void 0, "aria-current")}> <svg aria-hidden="true" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"> <path stroke-linecap="round" stroke-linejoin="round" d="M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v6.75C7.5 20.496 6.996 21 6.375 21h-2.25A1.125 1.125 0 013 19.875v-6.75zM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v11.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 01-1.125-1.125V8.625zM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v15.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 01-1.125-1.125V4.125z"></path> </svg>
22
+ Coverage
23
+ </a> </nav> </div> </div> </header> <main id="main-content"> ${renderSlot($$result, $$slots["default"])} </main> </body></html>`;
24
+ }, "/home/runner/work/screenbook/screenbook/packages/ui/src/layouts/Layout.astro", void 0);
25
+
26
+ function loadScreens() {
27
+ const screensPath = join(process.cwd(), ".screenbook", "screens.json");
28
+ if (!existsSync(screensPath)) {
29
+ return [];
30
+ }
31
+ try {
32
+ const content = readFileSync(screensPath, "utf-8");
33
+ return JSON.parse(content);
34
+ } catch {
35
+ return [];
36
+ }
37
+ }
38
+
39
+ export { $$Layout as $, loadScreens as l };
@@ -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_DHNfMLYY.mjs'
1231
+ './sharp_ADxfwDJE.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
- }, "/Users/wadakatu/www/experiments/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_typescript@5.9.3/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_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);
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
- }, "/Users/wadakatu/www/experiments/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_typescript@5.9.3/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_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);
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
- }, "/Users/wadakatu/www/experiments/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_typescript@5.9.3/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_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);
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};
@@ -1555,7 +1555,7 @@ const assetQueryParams = undefined;
1555
1555
  // in the Lambda bundle, which would bloat the bundle with images.
1556
1556
  // To prevent this, we mark the URL construction as pure,
1557
1557
  // so that it's tree-shaken away for all platforms that don't need it.
1558
- const outDir = /* #__PURE__ */ new URL("file:///Users/wadakatu/www/experiments/screenbook/packages/ui/dist/client/");
1558
+ const outDir = /* #__PURE__ */ new URL("file:///home/runner/work/screenbook/screenbook/packages/ui/dist/client/");
1559
1559
  const getImage = async (options) => await getImage$1(options, imageConfig);
1560
1560
 
1561
1561
  const fnv1a52 = (str) => {
@@ -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_DoTkMCOi.mjs';
2
+ import { b as baseService, p as parseQuality } from './node_u1SigWFL.mjs';
3
3
 
4
4
  let sharp;
5
5
  const qualityTable = {
@@ -1,6 +1,6 @@
1
1
  import { renderers } from './renderers.mjs';
2
- import { c as createExports, s as serverEntrypointModule } from './chunks/_@astrojs-ssr-adapter_DgsYudHz.mjs';
3
- import { manifest } from './manifest_-V1HEnR8.mjs';
2
+ import { c as createExports, s as serverEntrypointModule } from './chunks/_@astrojs-ssr-adapter_BCPoO8PO.mjs';
3
+ import { manifest } from './manifest_CicDtuHD.mjs';
4
4
 
5
5
  const serverIslandMap = new Map();;
6
6
 
@@ -11,7 +11,7 @@ const _page3 = () => import('./pages/impact.astro.mjs');
11
11
  const _page4 = () => import('./pages/screen/_id_.astro.mjs');
12
12
  const _page5 = () => import('./pages/index.astro.mjs');
13
13
  const pageMap = new Map([
14
- ["../../node_modules/.pnpm/astro@5.16.6_@types+node@25.0.3_jiti@2.6.1_lightningcss@1.30.2_rollup@4.54.0_typescript@5.9.3/node_modules/astro/dist/assets/endpoint/node.js", _page0],
14
+ ["../../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],
15
15
  ["src/pages/coverage.astro", _page1],
16
16
  ["src/pages/graph.astro", _page2],
17
17
  ["src/pages/impact.astro", _page3],
@@ -28,8 +28,8 @@ const _manifest = Object.assign(manifest, {
28
28
  });
29
29
  const _args = {
30
30
  "mode": "standalone",
31
- "client": "file:///Users/wadakatu/www/experiments/screenbook/packages/ui/dist/client/",
32
- "server": "file:///Users/wadakatu/www/experiments/screenbook/packages/ui/dist/server/",
31
+ "client": "file:///home/runner/work/screenbook/screenbook/packages/ui/dist/client/",
32
+ "server": "file:///home/runner/work/screenbook/screenbook/packages/ui/dist/server/",
33
33
  "host": false,
34
34
  "port": 4321,
35
35
  "assets": "_astro",
@@ -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_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":[{"type":"external","src":"/_astro/coverage.BnE2oGo8.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.BnE2oGo8.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}\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.BnE2oGo8.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.BnE2oGo8.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.BnE2oGo8.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/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/coverage@_@astro":"pages/coverage.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_CicDtuHD.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/impact.astro?astro&type=script&index=0&lang.ts":"_astro/impact.astro_astro_type_script_index_0_lang.D4cAR9AL.js","/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.B0fEnVdy.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.DfgUlHvt.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.Bb1qJLxr.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.B7oID6oT.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.Co2SKcif.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.B6ULtps1.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.BlLaQQxO.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.DHRnMofO.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.CnU62wqy.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.CxT3aW-h.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.CxT3aW-h.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.CewI55YO.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.7xUQqoNr.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.BSOCzWmw.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.D1PLRwss.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.D8KKGc1o.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.BWisaYrQ.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.DvS33xWZ.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.BBt_VNhR.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.LKVH7b30.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.CQex0-ul.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.bC2VkyoW.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.G14HgtDw.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.De_Gt-YC.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.D48yfMll.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.BMuaJBmt.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.AHgUjH56.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.3vGHETyo.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/coverage.BnE2oGo8.css","/_astro/coverage.Cb0pX2ic.css","/_astro/impact.Cvhl64u1.css","/logo.svg","/_astro/_baseUniq.BGai4mcc.js","/_astro/arc.DUp0dfXj.js","/_astro/architectureDiagram-VXUJARFQ.De_Gt-YC.js","/_astro/blockDiagram-VD42YOAC.BBt_VNhR.js","/_astro/c4Diagram-YG6GDRKO.DfgUlHvt.js","/_astro/channel.CNyr52v1.js","/_astro/chunk-4BX2VUAB.BL0ar6du.js","/_astro/chunk-55IACEB6.CI6SkZkY.js","/_astro/chunk-B4BG7PRW.Z25N80K6.js","/_astro/chunk-DI55MBZ5.BqjPVmi1.js","/_astro/chunk-FMBD7UC4.bZ9DWnFm.js","/_astro/chunk-QN33PNHL.BkzuUgWB.js","/_astro/chunk-QZHKN3VN.C__d68N_.js","/_astro/chunk-TZMSLE5B.BIpu8bMn.js","/_astro/classDiagram-2ON5EDUG.CxT3aW-h.js","/_astro/classDiagram-v2-WZHVMYZB.CxT3aW-h.js","/_astro/clone.U_lSZ6fe.js","/_astro/cose-bilkent-S5V4N54A.D48yfMll.js","/_astro/cytoscape.esm.DtBltrT8.js","/_astro/dagre-6UL2VRFP.LKVH7b30.js","/_astro/defaultLocale.C4B-KCzX.js","/_astro/diagram-PSM6KHXK.AHgUjH56.js","/_astro/diagram-QEK2KX5R.DvS33xWZ.js","/_astro/diagram-S2PKOQOG.BWisaYrQ.js","/_astro/erDiagram-Q2GNP2WA.B7oID6oT.js","/_astro/flowDiagram-NV44I4VS.Bb1qJLxr.js","/_astro/ganttDiagram-JELNMOA3.3vGHETyo.js","/_astro/gitGraphDiagram-NY62KEGX.Co2SKcif.js","/_astro/graph.B5fevUwB.js","/_astro/graph.astro_astro_type_script_index_0_lang.B0fEnVdy.js","/_astro/impact.astro_astro_type_script_index_0_lang.D4cAR9AL.js","/_astro/infoDiagram-WHAUD3N6.B6ULtps1.js","/_astro/init.Gi6I4Gst.js","/_astro/journeyDiagram-XKPGCS4Q.BSOCzWmw.js","/_astro/kanban-definition-3W4ZIXB7.D8KKGc1o.js","/_astro/katex.XbL3y5x-.js","/_astro/layout.8vv24qEg.js","/_astro/linear.B6O9ymuK.js","/_astro/mermaid.core.CReXU7YN.js","/_astro/min.CdGMGVU0.js","/_astro/mindmap-definition-VGOIOE7T.G14HgtDw.js","/_astro/ordinal.BYWQX77i.js","/_astro/pieDiagram-ADFJNKIX.bC2VkyoW.js","/_astro/quadrantDiagram-AYHSOK5B.BlLaQQxO.js","/_astro/requirementDiagram-UZGBJVZJ.DHRnMofO.js","/_astro/sankeyDiagram-TZEHDZUN.BMuaJBmt.js","/_astro/sequenceDiagram-WL72ISMW.CnU62wqy.js","/_astro/stateDiagram-FKZM4ZOC.CewI55YO.js","/_astro/stateDiagram-v2-4FDKWEC3.7xUQqoNr.js","/_astro/timeline-definition-IT6M3QCI.D1PLRwss.js","/_astro/treemap-KMMF4GRG.D3VNVvXF.js","/_astro/xychartDiagram-PRI3JC2R.CQex0-ul.js"],"buildFormat":"directory","checkOrigin":true,"allowedDomains":[],"serverIslandNameMap":[],"key":"mZ8nFSs8Bh+YzrIevrTLXHY6E2j/f6mZgc5P1bLo6qw=","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_DoTkMCOi.mjs';
1
+ export { a as page } from '../chunks/node_u1SigWFL.mjs';
2
2
  export { renderers } from '../renderers.mjs';
@@ -1,6 +1,6 @@
1
1
  import { e as createComponent, k as renderComponent, r as renderTemplate, m as maybeRenderHead, l as Fragment, h as addAttribute } from '../chunks/astro/server_m7yT4wCr.mjs';
2
2
  import 'piccolore';
3
- import { l as loadScreens, $ as $$Layout } from '../chunks/loadScreens_DJf-tycc.mjs';
3
+ import { l as loadScreens, $ as $$Layout } from '../chunks/loadScreens_JhK3F9tC.mjs';
4
4
  import { existsSync, readFileSync } from 'node:fs';
5
5
  import { join } from 'node:path';
6
6
  /* empty css */
@@ -34,23 +34,23 @@ const $$Coverage = createComponent(($$result, $$props, $$slots) => {
34
34
  }
35
35
  return renderTemplate`${renderComponent($$result, "Layout", $$Layout, { "title": "Coverage", "currentPage": "coverage", "data-astro-cid-vq7rje7m": true }, { "default": ($$result2) => renderTemplate` ${maybeRenderHead()}<div class="container" data-astro-cid-vq7rje7m> <div class="page-header" data-astro-cid-vq7rje7m> <h1 class="page-title" data-astro-cid-vq7rje7m>Coverage Dashboard</h1> <p class="page-description" data-astro-cid-vq7rje7m>
36
36
  Track documentation coverage across your screens.
37
- </p> </div> ${!coverage ? renderTemplate`<div class="empty-state" data-astro-cid-vq7rje7m> <svg class="empty-state-icon" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5" data-astro-cid-vq7rje7m> <path stroke-linecap="round" stroke-linejoin="round" d="M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v6.75C7.5 20.496 6.996 21 6.375 21h-2.25A1.125 1.125 0 013 19.875v-6.75zM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v11.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 01-1.125-1.125V8.625zM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v15.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 01-1.125-1.125V4.125z" data-astro-cid-vq7rje7m></path> </svg> <h2 class="empty-state-title" data-astro-cid-vq7rje7m>No coverage data</h2> <p class="empty-state-description" data-astro-cid-vq7rje7m>
37
+ </p> </div> ${!coverage ? renderTemplate`<div class="empty-state" data-astro-cid-vq7rje7m> <svg class="empty-state-icon" aria-hidden="true" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5" data-astro-cid-vq7rje7m> <path stroke-linecap="round" stroke-linejoin="round" d="M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v6.75C7.5 20.496 6.996 21 6.375 21h-2.25A1.125 1.125 0 013 19.875v-6.75zM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v11.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 01-1.125-1.125V8.625zM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v15.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 01-1.125-1.125V4.125z" data-astro-cid-vq7rje7m></path> </svg> <h2 class="empty-state-title" data-astro-cid-vq7rje7m>No coverage data</h2> <p class="empty-state-description" data-astro-cid-vq7rje7m>
38
38
  Run the build command to generate coverage data.
39
39
  </p> <code class="empty-state-code" data-astro-cid-vq7rje7m> <span class="prompt" data-astro-cid-vq7rje7m>$</span> screenbook build
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
- </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 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>
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 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
- </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 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>
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})
47
47
  </h2> <p class="section-description" data-astro-cid-vq7rje7m>
48
48
  These routes don't have a <code data-astro-cid-vq7rje7m>screen.meta.ts</code> file yet.
49
- </p> <div class="missing-list" data-astro-cid-vq7rje7m> ${coverage.missing.map((item) => renderTemplate`<div class="missing-item" data-astro-cid-vq7rje7m> <div class="missing-route" data-astro-cid-vq7rje7m> <svg fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" data-astro-cid-vq7rje7m> <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" data-astro-cid-vq7rje7m></path> </svg> <span data-astro-cid-vq7rje7m>${item.route}</span> </div> <div class="missing-action" data-astro-cid-vq7rje7m> <code class="suggested-path" data-astro-cid-vq7rje7m>${item.suggestedPath}</code> </div> </div>`)} </div> </div>`}<div class="coverage-footer" data-astro-cid-vq7rje7m> <p class="timestamp" data-astro-cid-vq7rje7m>
49
+ </p> <div class="missing-list" data-astro-cid-vq7rje7m> ${coverage.missing.map((item) => renderTemplate`<div class="missing-item" data-astro-cid-vq7rje7m> <div class="missing-route" 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="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" data-astro-cid-vq7rje7m></path> </svg> <span data-astro-cid-vq7rje7m>${item.route}</span> </div> <div class="missing-action" data-astro-cid-vq7rje7m> <code class="suggested-path" data-astro-cid-vq7rje7m>${item.suggestedPath}</code> </div> </div>`)} </div> </div>`}<div class="coverage-footer" data-astro-cid-vq7rje7m> <p class="timestamp" data-astro-cid-vq7rje7m>
50
50
  Last updated: ${new Date(coverage.timestamp).toLocaleString()} </p> </div> ` })}`} </div> ` })} `;
51
- }, "/Users/wadakatu/www/experiments/screenbook/packages/ui/src/pages/coverage.astro", void 0);
51
+ }, "/home/runner/work/screenbook/screenbook/packages/ui/src/pages/coverage.astro", void 0);
52
52
 
53
- const $$file = "/Users/wadakatu/www/experiments/screenbook/packages/ui/src/pages/coverage.astro";
53
+ const $$file = "/home/runner/work/screenbook/screenbook/packages/ui/src/pages/coverage.astro";
54
54
  const $$url = "/coverage";
55
55
 
56
56
  const _page = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({
@@ -1,6 +1,6 @@
1
- import { e as createComponent, k as renderComponent, r as renderTemplate, m as maybeRenderHead, n as renderScript, l as Fragment } from '../chunks/astro/server_m7yT4wCr.mjs';
1
+ import { e as createComponent, k as renderComponent, r as renderTemplate, m as maybeRenderHead, n as renderScript, l as Fragment, h as addAttribute } from '../chunks/astro/server_m7yT4wCr.mjs';
2
2
  import 'piccolore';
3
- import { l as loadScreens, $ as $$Layout } from '../chunks/loadScreens_DJf-tycc.mjs';
3
+ import { l as loadScreens, $ as $$Layout } from '../chunks/loadScreens_JhK3F9tC.mjs';
4
4
  /* empty css */
5
5
  export { renderers } from '../renderers.mjs';
6
6
 
@@ -82,17 +82,17 @@ const $$Graph = createComponent(async ($$result, $$props, $$slots) => {
82
82
  ).size;
83
83
  return renderTemplate`${renderComponent($$result, "Layout", $$Layout, { "title": "Graph", "currentPage": "graph", "data-astro-cid-oy34yelw": true }, { "default": async ($$result2) => renderTemplate` ${maybeRenderHead()}<div class="container" data-astro-cid-oy34yelw> <div class="page-header" data-astro-cid-oy34yelw> <h1 class="page-title" data-astro-cid-oy34yelw>Dependency Graph</h1> <p class="page-description" data-astro-cid-oy34yelw>
84
84
  Visualize relationships between screens and APIs.
85
- </p> </div> ${screens.length === 0 ? renderTemplate`<div class="empty-state" data-astro-cid-oy34yelw> <svg class="empty-state-icon" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5" data-astro-cid-oy34yelw> <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-oy34yelw></path> </svg> <h2 class="empty-state-title" data-astro-cid-oy34yelw>No graph data</h2> <p class="empty-state-description" data-astro-cid-oy34yelw>
85
+ </p> </div> ${screens.length === 0 ? renderTemplate`<div class="empty-state" data-astro-cid-oy34yelw> <svg class="empty-state-icon" aria-hidden="true" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5" data-astro-cid-oy34yelw> <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-oy34yelw></path> </svg> <h2 class="empty-state-title" data-astro-cid-oy34yelw>No graph data</h2> <p class="empty-state-description" data-astro-cid-oy34yelw>
86
86
  Run the build command to generate screen metadata.
87
87
  </p> <code class="empty-state-code" data-astro-cid-oy34yelw> <span class="prompt" data-astro-cid-oy34yelw>$</span> screenbook build
88
- </code> </div>` : renderTemplate`${renderComponent($$result2, "Fragment", Fragment, { "data-astro-cid-oy34yelw": true }, { "default": async ($$result3) => renderTemplate` <div class="graph-controls" data-astro-cid-oy34yelw> <div class="view-toggle" data-astro-cid-oy34yelw> <button class="toggle-btn active" data-view="navigation" data-astro-cid-oy34yelw> <svg fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" data-astro-cid-oy34yelw> <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-oy34yelw></path> </svg>
88
+ </code> </div>` : renderTemplate`${renderComponent($$result2, "Fragment", Fragment, { "data-astro-cid-oy34yelw": true }, { "default": async ($$result3) => renderTemplate` <div class="graph-controls" data-astro-cid-oy34yelw> <div class="view-toggle" role="group" aria-label="Graph view" data-astro-cid-oy34yelw> <button class="toggle-btn active" data-view="navigation" aria-pressed="true" 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="M7.5 21L3 16.5m0 0L7.5 12M3 16.5h13.5m0-13.5L21 7.5m0 0L16.5 12M21 7.5H7.5" data-astro-cid-oy34yelw></path> </svg>
89
89
  Navigation
90
- </button> <button class="toggle-btn" data-view="api" data-astro-cid-oy34yelw> <svg 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>
90
+ </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>
91
91
  API Dependencies
92
- </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> </div> </div> <div class="graph-container" id="navigation-graph" data-astro-cid-oy34yelw> <pre class="mermaid" data-graph="navigation" data-astro-cid-oy34yelw>${navigationGraph}</pre> </div> <div class="graph-container hidden" id="api-graph" data-astro-cid-oy34yelw> <pre class="mermaid" data-graph="api" 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-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, "/Users/wadakatu/www/experiments/screenbook/packages/ui/src/pages/graph.astro?astro&type=script&index=0&lang.ts")} ` })} `;
93
- }, "/Users/wadakatu/www/experiments/screenbook/packages/ui/src/pages/graph.astro", void 0);
92
+ </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> </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-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")} ` })} `;
93
+ }, "/home/runner/work/screenbook/screenbook/packages/ui/src/pages/graph.astro", void 0);
94
94
 
95
- const $$file = "/Users/wadakatu/www/experiments/screenbook/packages/ui/src/pages/graph.astro";
95
+ const $$file = "/home/runner/work/screenbook/screenbook/packages/ui/src/pages/graph.astro";
96
96
  const $$url = "/graph";
97
97
 
98
98
  const _page = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({