@screenbook/ui 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/.astro/content-assets.mjs +1 -0
  2. package/.astro/content-modules.mjs +1 -0
  3. package/.astro/content.d.ts +199 -0
  4. package/.astro/data-store.json +1 -0
  5. package/.astro/settings.json +5 -0
  6. package/.astro/types.d.ts +2 -0
  7. package/.prettierrc +15 -0
  8. package/.screenbook/coverage.json +37 -0
  9. package/.screenbook/screens.json +90 -0
  10. package/LICENSE +21 -0
  11. package/astro.config.mjs +18 -0
  12. package/dist/client/_astro/_baseUniq.BGai4mcc.js +1 -0
  13. package/dist/client/_astro/arc.DUp0dfXj.js +1 -0
  14. package/dist/client/_astro/architectureDiagram-VXUJARFQ.De_Gt-YC.js +36 -0
  15. package/dist/client/_astro/blockDiagram-VD42YOAC.BBt_VNhR.js +122 -0
  16. package/dist/client/_astro/c4Diagram-YG6GDRKO.DfgUlHvt.js +10 -0
  17. package/dist/client/_astro/channel.CNyr52v1.js +1 -0
  18. package/dist/client/_astro/chunk-4BX2VUAB.BL0ar6du.js +1 -0
  19. package/dist/client/_astro/chunk-55IACEB6.CI6SkZkY.js +1 -0
  20. package/dist/client/_astro/chunk-B4BG7PRW.Z25N80K6.js +165 -0
  21. package/dist/client/_astro/chunk-DI55MBZ5.BqjPVmi1.js +220 -0
  22. package/dist/client/_astro/chunk-FMBD7UC4.bZ9DWnFm.js +15 -0
  23. package/dist/client/_astro/chunk-QN33PNHL.BkzuUgWB.js +1 -0
  24. package/dist/client/_astro/chunk-QZHKN3VN.C__d68N_.js +1 -0
  25. package/dist/client/_astro/chunk-TZMSLE5B.BIpu8bMn.js +1 -0
  26. package/dist/client/_astro/classDiagram-2ON5EDUG.CxT3aW-h.js +1 -0
  27. package/dist/client/_astro/classDiagram-v2-WZHVMYZB.CxT3aW-h.js +1 -0
  28. package/dist/client/_astro/clone.U_lSZ6fe.js +1 -0
  29. package/dist/client/_astro/cose-bilkent-S5V4N54A.D48yfMll.js +1 -0
  30. package/dist/client/_astro/coverage.CKIVg4LY.css +1 -0
  31. package/dist/client/_astro/coverage.DDJMzKCq.css +1 -0
  32. package/dist/client/_astro/cytoscape.esm.DtBltrT8.js +331 -0
  33. package/dist/client/_astro/dagre-6UL2VRFP.LKVH7b30.js +4 -0
  34. package/dist/client/_astro/defaultLocale.C4B-KCzX.js +1 -0
  35. package/dist/client/_astro/diagram-PSM6KHXK.AHgUjH56.js +24 -0
  36. package/dist/client/_astro/diagram-QEK2KX5R.DvS33xWZ.js +43 -0
  37. package/dist/client/_astro/diagram-S2PKOQOG.BWisaYrQ.js +24 -0
  38. package/dist/client/_astro/erDiagram-Q2GNP2WA.B7oID6oT.js +60 -0
  39. package/dist/client/_astro/flowDiagram-NV44I4VS.Bb1qJLxr.js +162 -0
  40. package/dist/client/_astro/ganttDiagram-JELNMOA3.3vGHETyo.js +267 -0
  41. package/dist/client/_astro/gitGraphDiagram-NY62KEGX.Co2SKcif.js +65 -0
  42. package/dist/client/_astro/graph.B5fevUwB.js +1 -0
  43. package/dist/client/_astro/graph.astro_astro_type_script_index_0_lang.1HlATQ1g.js +1 -0
  44. package/dist/client/_astro/impact.Cvhl64u1.css +1 -0
  45. package/dist/client/_astro/impact.astro_astro_type_script_index_0_lang.D4cAR9AL.js +6 -0
  46. package/dist/client/_astro/infoDiagram-WHAUD3N6.B6ULtps1.js +2 -0
  47. package/dist/client/_astro/init.Gi6I4Gst.js +1 -0
  48. package/dist/client/_astro/journeyDiagram-XKPGCS4Q.BSOCzWmw.js +139 -0
  49. package/dist/client/_astro/kanban-definition-3W4ZIXB7.D8KKGc1o.js +89 -0
  50. package/dist/client/_astro/katex.XbL3y5x-.js +261 -0
  51. package/dist/client/_astro/layout.8vv24qEg.js +1 -0
  52. package/dist/client/_astro/linear.B6O9ymuK.js +1 -0
  53. package/dist/client/_astro/mermaid.core.CReXU7YN.js +256 -0
  54. package/dist/client/_astro/min.CdGMGVU0.js +1 -0
  55. package/dist/client/_astro/mindmap-definition-VGOIOE7T.G14HgtDw.js +68 -0
  56. package/dist/client/_astro/ordinal.BYWQX77i.js +1 -0
  57. package/dist/client/_astro/pieDiagram-ADFJNKIX.bC2VkyoW.js +30 -0
  58. package/dist/client/_astro/quadrantDiagram-AYHSOK5B.BlLaQQxO.js +7 -0
  59. package/dist/client/_astro/requirementDiagram-UZGBJVZJ.DHRnMofO.js +64 -0
  60. package/dist/client/_astro/sankeyDiagram-TZEHDZUN.BMuaJBmt.js +10 -0
  61. package/dist/client/_astro/sequenceDiagram-WL72ISMW.CnU62wqy.js +145 -0
  62. package/dist/client/_astro/stateDiagram-FKZM4ZOC.CewI55YO.js +1 -0
  63. package/dist/client/_astro/stateDiagram-v2-4FDKWEC3.7xUQqoNr.js +1 -0
  64. package/dist/client/_astro/timeline-definition-IT6M3QCI.D1PLRwss.js +61 -0
  65. package/dist/client/_astro/treemap-KMMF4GRG.D3VNVvXF.js +128 -0
  66. package/dist/client/_astro/xychartDiagram-PRI3JC2R.CQex0-ul.js +7 -0
  67. package/dist/client/logo.svg +5 -0
  68. package/dist/server/_@astrojs-ssr-adapter.mjs +1 -0
  69. package/dist/server/_noop-middleware.mjs +3 -0
  70. package/dist/server/chunks/_@astrojs-ssr-adapter_DgsYudHz.mjs +4385 -0
  71. package/dist/server/chunks/astro/server_m7yT4wCr.mjs +2787 -0
  72. package/dist/server/chunks/astro-designed-error-pages_BvPhMmw0.mjs +364 -0
  73. package/dist/server/chunks/fs-lite_COtHaKzy.mjs +157 -0
  74. package/dist/server/chunks/impactAnalysis_Bz5lMdmy.mjs +188 -0
  75. package/dist/server/chunks/loadScreens_DJf-tycc.mjs +39 -0
  76. package/dist/server/chunks/node_DoTkMCOi.mjs +1673 -0
  77. package/dist/server/chunks/remote_B3W5fv4r.mjs +188 -0
  78. package/dist/server/chunks/sharp_DHNfMLYY.mjs +99 -0
  79. package/dist/server/entry.mjs +47 -0
  80. package/dist/server/manifest_-V1HEnR8.mjs +101 -0
  81. package/dist/server/noop-entrypoint.mjs +3 -0
  82. package/dist/server/pages/_image.astro.mjs +2 -0
  83. package/dist/server/pages/coverage.astro.mjs +65 -0
  84. package/dist/server/pages/graph.astro.mjs +107 -0
  85. package/dist/server/pages/impact.astro.mjs +52 -0
  86. package/dist/server/pages/index.astro.mjs +28 -0
  87. package/dist/server/pages/screen/_id_.astro.mjs +52 -0
  88. package/dist/server/renderers.mjs +3 -0
  89. package/package.json +42 -0
  90. package/public/logo.svg +5 -0
  91. package/src/layouts/Layout.astro +60 -0
  92. package/src/pages/coverage.astro +399 -0
  93. package/src/pages/graph.astro +330 -0
  94. package/src/pages/impact.astro +459 -0
  95. package/src/pages/index.astro +167 -0
  96. package/src/pages/screen/[id].astro +186 -0
  97. package/src/styles/global.css +862 -0
  98. package/src/utils/impactAnalysis.ts +297 -0
  99. package/src/utils/loadCoverage.ts +30 -0
  100. package/src/utils/loadScreens.ts +18 -0
  101. package/tsconfig.json +9 -0
@@ -0,0 +1,186 @@
1
+ ---
2
+ import Layout from "@/layouts/Layout.astro"
3
+ import { loadScreens } from "@/utils/loadScreens"
4
+ import { getApiDependencyCount } from "@/utils/impactAnalysis"
5
+
6
+ const screens = loadScreens()
7
+ const apiCounts = getApiDependencyCount(screens)
8
+
9
+ export function getStaticPaths() {
10
+ const screens = loadScreens()
11
+ return screens.map((screen) => ({
12
+ params: { id: screen.id },
13
+ }))
14
+ }
15
+
16
+ const { id } = Astro.params
17
+ const screen = screens.find((s) => s.id === id)
18
+
19
+ if (!screen) {
20
+ return Astro.redirect("/")
21
+ }
22
+
23
+ // Find related screens
24
+ const entryScreens = screens.filter((s) => screen.entryPoints?.includes(s.id))
25
+ const nextScreens = screens.filter((s) => screen.next?.includes(s.id))
26
+ ---
27
+
28
+ <Layout title={screen.title}>
29
+ <div class="container">
30
+ <a href="/" class="back-link">
31
+ <svg fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
32
+ <path stroke-linecap="round" stroke-linejoin="round" d="M10.5 19.5L3 12m0 0l7.5-7.5M3 12h18" />
33
+ </svg>
34
+ Back to screens
35
+ </a>
36
+
37
+ <div class="detail-header">
38
+ <h1 class="detail-title">{screen.title}</h1>
39
+ <div class="detail-route">
40
+ <svg fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
41
+ <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" />
42
+ </svg>
43
+ {screen.route}
44
+ </div>
45
+ </div>
46
+
47
+ <div class="detail-content">
48
+ <div>
49
+ <!-- Information -->
50
+ <div class="section">
51
+ <h2 class="section-title">Information</h2>
52
+ <div class="info-list">
53
+ <div class="info-item">
54
+ <span class="info-label">ID</span>
55
+ <span class="info-value"><code>{screen.id}</code></span>
56
+ </div>
57
+ {screen.owner && screen.owner.length > 0 && (
58
+ <div class="info-item">
59
+ <span class="info-label">Owner</span>
60
+ <span class="info-value">{screen.owner.join(", ")}</span>
61
+ </div>
62
+ )}
63
+ {screen.tags && screen.tags.length > 0 && (
64
+ <div class="info-item">
65
+ <span class="info-label">Tags</span>
66
+ <span class="info-value">
67
+ <div class="card-tags">
68
+ {screen.tags.map((tag) => (
69
+ <span class="card-tag">{tag}</span>
70
+ ))}
71
+ </div>
72
+ </span>
73
+ </div>
74
+ )}
75
+ {screen.description && (
76
+ <div class="info-item">
77
+ <span class="info-label">Description</span>
78
+ <span class="info-value">{screen.description}</span>
79
+ </div>
80
+ )}
81
+ </div>
82
+ </div>
83
+
84
+ <!-- Dependencies -->
85
+ {screen.dependsOn && screen.dependsOn.length > 0 && (
86
+ <div class="section">
87
+ <h2 class="section-title">Dependencies</h2>
88
+ <div class="dep-list">
89
+ {screen.dependsOn.map((dep) => {
90
+ const count = apiCounts.get(dep) || 1
91
+ const otherCount = count - 1
92
+ return (
93
+ <a href={`/impact?api=${encodeURIComponent(dep)}`} class="dep-item dep-item-link">
94
+ <div class="dep-item-main">
95
+ <svg fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
96
+ <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" />
97
+ </svg>
98
+ <span>{dep}</span>
99
+ </div>
100
+ <div class="dep-item-meta">
101
+ {otherCount > 0 && (
102
+ <span class="dep-count">+{otherCount} other{otherCount > 1 ? "s" : ""}</span>
103
+ )}
104
+ <svg class="dep-arrow" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
105
+ <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" />
106
+ </svg>
107
+ </div>
108
+ </a>
109
+ )
110
+ })}
111
+ </div>
112
+ </div>
113
+ )}
114
+
115
+ <!-- External Links -->
116
+ {screen.links && screen.links.length > 0 && (
117
+ <div class="section">
118
+ <h2 class="section-title">Links</h2>
119
+ <div class="dep-list">
120
+ {screen.links.map((link) => (
121
+ <a href={link.url} target="_blank" rel="noopener noreferrer" class="dep-item">
122
+ <svg fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
123
+ <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" />
124
+ </svg>
125
+ {link.label}
126
+ </a>
127
+ ))}
128
+ </div>
129
+ </div>
130
+ )}
131
+ </div>
132
+
133
+ <div>
134
+ <!-- Entry Points -->
135
+ {entryScreens.length > 0 && (
136
+ <div class="sidebar-card">
137
+ <h3 class="sidebar-card-title">
138
+ <svg fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
139
+ <path stroke-linecap="round" stroke-linejoin="round" d="M9 15L3 9m0 0l6-6M3 9h12a6 6 0 010 12h-3" />
140
+ </svg>
141
+ Entry Points
142
+ </h3>
143
+ <div class="screen-link-list">
144
+ {entryScreens.map((s) => (
145
+ <a href={`/screen/${s.id}`} class="screen-link">
146
+ <div class="screen-link-info">
147
+ <span class="screen-link-title">{s.title}</span>
148
+ <span class="screen-link-id">{s.id}</span>
149
+ </div>
150
+ <svg class="screen-link-arrow" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
151
+ <path stroke-linecap="round" stroke-linejoin="round" d="M8.25 4.5l7.5 7.5-7.5 7.5" />
152
+ </svg>
153
+ </a>
154
+ ))}
155
+ </div>
156
+ </div>
157
+ )}
158
+
159
+ <!-- Next Screens -->
160
+ {nextScreens.length > 0 && (
161
+ <div class="sidebar-card">
162
+ <h3 class="sidebar-card-title">
163
+ <svg fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
164
+ <path stroke-linecap="round" stroke-linejoin="round" d="M13.5 4.5L21 12m0 0l-7.5 7.5M21 12H3" />
165
+ </svg>
166
+ Next Screens
167
+ </h3>
168
+ <div class="screen-link-list">
169
+ {nextScreens.map((s) => (
170
+ <a href={`/screen/${s.id}`} class="screen-link">
171
+ <div class="screen-link-info">
172
+ <span class="screen-link-title">{s.title}</span>
173
+ <span class="screen-link-id">{s.id}</span>
174
+ </div>
175
+ <svg class="screen-link-arrow" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
176
+ <path stroke-linecap="round" stroke-linejoin="round" d="M8.25 4.5l7.5 7.5-7.5 7.5" />
177
+ </svg>
178
+ </a>
179
+ ))}
180
+ </div>
181
+ </div>
182
+ )}
183
+ </div>
184
+ </div>
185
+ </div>
186
+ </Layout>