archsight 0.1.5 → 0.2.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 (170) hide show
  1. checksums.yaml +4 -4
  2. data/Dockerfile +5 -4
  3. data/README.md +17 -65
  4. data/chart/archsight/README.md +1 -158
  5. data/docs/architecture.md +39 -0
  6. data/docs/docker.md +49 -0
  7. data/{lib/archsight/web/doc → docs}/index.md.erb +3 -1
  8. data/docs/kubernetes.md +149 -0
  9. data/docs/licenses.md +307 -0
  10. data/lib/archsight/annotations/annotation.rb +13 -1
  11. data/lib/archsight/cli.rb +1 -1
  12. data/lib/archsight/graph.rb +1 -51
  13. data/lib/archsight/helpers.rb +0 -20
  14. data/lib/archsight/import/handlers/github.rb +3 -1
  15. data/lib/archsight/import/handlers/gitlab.rb +15 -5
  16. data/lib/archsight/import/handlers/repository.rb +53 -5
  17. data/lib/archsight/import/handlers/rest_api.rb +13 -1
  18. data/lib/archsight/import/license_analyzer.rb +658 -0
  19. data/lib/archsight/linter.rb +1 -1
  20. data/lib/archsight/mcp/base.rb +11 -0
  21. data/lib/archsight/renderer.rb +4 -4
  22. data/lib/archsight/resources/base.rb +2 -2
  23. data/lib/archsight/resources/business_actor.rb +17 -2
  24. data/lib/archsight/resources/technology_artifact.rb +52 -0
  25. data/lib/archsight/version.rb +1 -1
  26. data/lib/archsight/web/api/docs.rb +37 -2
  27. data/lib/archsight/web/api/json_helpers.rb +79 -13
  28. data/lib/archsight/web/api/openapi/spec.yaml +699 -0
  29. data/lib/archsight/web/api/routes.rb +23 -0
  30. data/lib/archsight/web/application.rb +40 -128
  31. data/lib/archsight/web/editor/helpers.rb +150 -0
  32. data/lib/archsight/web/editor/routes.rb +85 -212
  33. data/lib/archsight/web/public/vue/ApiDocsPage-B1RqTNqh.js +1 -0
  34. data/lib/archsight/web/public/vue/ApiDocsPage-DhNTOH4o.css +1 -0
  35. data/lib/archsight/web/public/vue/DocPage-DzwBgBd4.js +1 -0
  36. data/lib/archsight/web/public/vue/EditorPage-D_miHSv4.js +34 -0
  37. data/lib/archsight/web/public/vue/EditorPage-Dq0MuTnp.css +1 -0
  38. data/lib/archsight/web/public/vue/ErrorPage-CQQtPey3.js +2 -0
  39. data/lib/archsight/web/public/vue/ErrorPage-CwPT3JUr.css +1 -0
  40. data/lib/archsight/web/public/vue/GraphView-DRcIqAiR.css +1 -0
  41. data/lib/archsight/web/public/vue/GraphView-T9jFH_qg.js +1 -0
  42. data/lib/archsight/web/public/vue/InstanceRouter-1Sm-CRhf.js +2 -0
  43. data/lib/archsight/web/public/vue/InstanceRouter-BJkDRXZY.css +1 -0
  44. data/lib/archsight/web/public/vue/KindList-JA_L_-Cz.js +1 -0
  45. data/lib/archsight/web/public/vue/ResourceList-8iqavWdg.js +1 -0
  46. data/lib/archsight/web/public/vue/ResourceList-DP-z-j71.css +1 -0
  47. data/lib/archsight/web/public/vue/SearchResults-BGHbg48-.css +1 -0
  48. data/lib/archsight/web/public/vue/SearchResults-BdgFeHcm.js +1 -0
  49. data/lib/archsight/web/public/vue/_basePickBy-CVgieyx-.js +1 -0
  50. data/lib/archsight/web/public/vue/_baseUniq-BNfrOSaP.js +1 -0
  51. data/lib/archsight/web/public/vue/architectureDiagram-VXUJARFQ-CJXNpTr5.js +36 -0
  52. data/lib/archsight/web/public/vue/blockDiagram-VD42YOAC-B5488Hes.js +122 -0
  53. data/lib/archsight/web/public/vue/c4Diagram-YG6GDRKO-eYY3hprM.js +10 -0
  54. data/lib/archsight/web/public/vue/chunk-4BX2VUAB-ZoXeL4D1.js +1 -0
  55. data/lib/archsight/web/public/vue/chunk-55IACEB6-rNtQYnu_.js +1 -0
  56. data/lib/archsight/web/public/vue/chunk-B4BG7PRW-DolAeVV9.js +165 -0
  57. data/lib/archsight/web/public/vue/chunk-DI55MBZ5-DnN0f_hj.js +220 -0
  58. data/lib/archsight/web/public/vue/chunk-FMBD7UC4-BQWOCMuR.js +15 -0
  59. data/lib/archsight/web/public/vue/chunk-QN33PNHL-DId301Kb.js +1 -0
  60. data/lib/archsight/web/public/vue/chunk-QZHKN3VN-xbY0NLgv.js +1 -0
  61. data/lib/archsight/web/public/vue/chunk-TZMSLE5B-CgF9_37b.js +1 -0
  62. data/lib/archsight/web/public/vue/classDiagram-2ON5EDUG-jGlvI-Za.js +1 -0
  63. data/lib/archsight/web/public/vue/classDiagram-v2-WZHVMYZB-jGlvI-Za.js +1 -0
  64. data/lib/archsight/web/public/vue/clone-6iRPe1-W.js +1 -0
  65. data/lib/archsight/web/public/vue/cose-bilkent-S5V4N54A-CB9Zfu50.js +1 -0
  66. data/lib/archsight/web/public/vue/cytoscape.esm-5J0xJHOV.js +321 -0
  67. data/lib/archsight/web/public/vue/dagre-6UL2VRFP-BqkmE-LI.js +4 -0
  68. data/lib/archsight/web/public/vue/diagram-PSM6KHXK-CKBfqtw3.js +24 -0
  69. data/lib/archsight/web/public/vue/diagram-QEK2KX5R-B78rOlvK.js +43 -0
  70. data/lib/archsight/web/public/vue/diagram-S2PKOQOG-BlXC6Cia.js +24 -0
  71. data/lib/archsight/web/public/vue/erDiagram-Q2GNP2WA-BnliyziJ.js +60 -0
  72. data/lib/archsight/web/public/vue/flowDiagram-NV44I4VS-wuqPowTd.js +162 -0
  73. data/lib/archsight/web/public/vue/ganttDiagram-JELNMOA3-GSffAIH3.js +267 -0
  74. data/lib/archsight/web/public/vue/gitGraphDiagram-V2S2FVAM-OA7VyugW.js +65 -0
  75. data/lib/archsight/web/public/vue/graph-BXHAtA0S.js +1 -0
  76. data/lib/archsight/web/public/vue/graphviz-CJms5bxZ.js +13 -0
  77. data/lib/archsight/web/public/vue/index-DsEsN0_K.js +2 -0
  78. data/lib/archsight/web/public/vue/index-Tiu4C-Sb.css +1 -0
  79. data/lib/archsight/web/public/vue/infoDiagram-HS3SLOUP-nlVe2qgv.js +2 -0
  80. data/lib/archsight/web/public/vue/journeyDiagram-XKPGCS4Q-CtTIcKwf.js +139 -0
  81. data/lib/archsight/web/public/vue/kanban-definition-3W4ZIXB7-837KX0sW.js +89 -0
  82. data/lib/archsight/web/public/vue/katex-C-M49wc6.js +261 -0
  83. data/lib/archsight/web/public/vue/layout-DtE0QdL6.js +1 -0
  84. data/lib/archsight/web/public/vue/mermaid-DpPHPFQh.js +250 -0
  85. data/lib/archsight/web/public/vue/mindmap-definition-VGOIOE7T-9gLF2AoY.js +68 -0
  86. data/lib/archsight/web/public/vue/pieDiagram-ADFJNKIX-CyCNgw3u.js +30 -0
  87. data/lib/archsight/web/public/vue/quadrantDiagram-AYHSOK5B-CkPh8g02.js +7 -0
  88. data/lib/archsight/web/public/vue/requirementDiagram-UZGBJVZJ-Dkt6OSlY.js +64 -0
  89. data/lib/archsight/web/public/vue/sankeyDiagram-TZEHDZUN-BqprTk8x.js +10 -0
  90. data/lib/archsight/web/public/vue/sequenceDiagram-WL72ISMW-CTmTe1FQ.js +145 -0
  91. data/lib/archsight/web/public/vue/stateDiagram-FKZM4ZOC-CphqmkEU.js +1 -0
  92. data/lib/archsight/web/public/vue/stateDiagram-v2-4FDKWEC3-CxaDW5sW.js +1 -0
  93. data/lib/archsight/web/public/vue/timeline-definition-IT6M3QCI-CSQUZkyE.js +61 -0
  94. data/lib/archsight/web/public/vue/treemap-GDKQZRPO-DTojm7Yr.js +162 -0
  95. data/lib/archsight/web/public/{css/graph.css → vue/useGraphviz-A5s4h76R.js} +2 -1
  96. data/lib/archsight/web/public/vue/useHighlight-C6Kb5G3l.js +10 -0
  97. data/lib/archsight/web/public/vue/useMermaid-DqxTrLRB.js +1 -0
  98. data/lib/archsight/web/public/vue/usePanZoom-BybZ_rfh.js +11 -0
  99. data/lib/archsight/web/public/vue/xychartDiagram-PRI3JC2R-B1ZJZtDC.js +7 -0
  100. data/lib/archsight/web/public/vue.html +15 -0
  101. data/media/artifact.jpg +0 -0
  102. data/media/service.jpg +0 -0
  103. metadata +100 -84
  104. data/lib/archsight/web/public/css/artifact.css +0 -995
  105. data/lib/archsight/web/public/css/base.css +0 -201
  106. data/lib/archsight/web/public/css/editor.css +0 -863
  107. data/lib/archsight/web/public/css/highlight.min.css +0 -10
  108. data/lib/archsight/web/public/css/iconoir.css +0 -22
  109. data/lib/archsight/web/public/css/instance.css +0 -824
  110. data/lib/archsight/web/public/css/layout.css +0 -421
  111. data/lib/archsight/web/public/css/mermaid-layers.css +0 -188
  112. data/lib/archsight/web/public/css/pico.min.css +0 -4
  113. data/lib/archsight/web/public/img/archimate.png +0 -0
  114. data/lib/archsight/web/public/img/togaf-high-level.png +0 -0
  115. data/lib/archsight/web/public/js/editor.js +0 -421
  116. data/lib/archsight/web/public/js/graph-zoom.js +0 -18
  117. data/lib/archsight/web/public/js/highlight.min.js +0 -3899
  118. data/lib/archsight/web/public/js/htmx.min.js +0 -1
  119. data/lib/archsight/web/public/js/lexical-editor.js +0 -308
  120. data/lib/archsight/web/public/js/mermaid-init.js +0 -88
  121. data/lib/archsight/web/public/js/mermaid.min.js +0 -2811
  122. data/lib/archsight/web/public/js/sparkline.js +0 -42
  123. data/lib/archsight/web/public/js/svg-pan-zoom.min.js +0 -3
  124. data/lib/archsight/web/public/js/svg-zoom-controls.js +0 -93
  125. data/lib/archsight/web/views/api_docs.erb +0 -19
  126. data/lib/archsight/web/views/index.haml +0 -12
  127. data/lib/archsight/web/views/partials/artifact/_activity.haml +0 -55
  128. data/lib/archsight/web/views/partials/artifact/_agentic.haml +0 -25
  129. data/lib/archsight/web/views/partials/artifact/_deployment.haml +0 -29
  130. data/lib/archsight/web/views/partials/artifact/_git_info.haml +0 -16
  131. data/lib/archsight/web/views/partials/artifact/_language_stats.haml +0 -53
  132. data/lib/archsight/web/views/partials/artifact/_links.haml +0 -24
  133. data/lib/archsight/web/views/partials/artifact/_project_estimate.haml +0 -32
  134. data/lib/archsight/web/views/partials/artifact/_repositories.haml +0 -55
  135. data/lib/archsight/web/views/partials/artifact/_team.haml +0 -83
  136. data/lib/archsight/web/views/partials/artifact/_workflow.haml +0 -69
  137. data/lib/archsight/web/views/partials/components/_activity.haml +0 -37
  138. data/lib/archsight/web/views/partials/components/_git.haml +0 -17
  139. data/lib/archsight/web/views/partials/components/_jira.haml +0 -18
  140. data/lib/archsight/web/views/partials/components/_languages.haml +0 -29
  141. data/lib/archsight/web/views/partials/components/_owner.haml +0 -15
  142. data/lib/archsight/web/views/partials/components/_repositories.haml +0 -37
  143. data/lib/archsight/web/views/partials/components/_status.haml +0 -23
  144. data/lib/archsight/web/views/partials/editor/_field.haml +0 -80
  145. data/lib/archsight/web/views/partials/editor/_form.haml +0 -131
  146. data/lib/archsight/web/views/partials/editor/_relations.haml +0 -39
  147. data/lib/archsight/web/views/partials/editor/_yaml_output.haml +0 -33
  148. data/lib/archsight/web/views/partials/instance/_analysis_detail.haml +0 -67
  149. data/lib/archsight/web/views/partials/instance/_analysis_result.haml +0 -64
  150. data/lib/archsight/web/views/partials/instance/_detail.haml +0 -107
  151. data/lib/archsight/web/views/partials/instance/_graph.haml +0 -6
  152. data/lib/archsight/web/views/partials/instance/_import_detail.haml +0 -87
  153. data/lib/archsight/web/views/partials/instance/_list.haml +0 -84
  154. data/lib/archsight/web/views/partials/instance/_relations.haml +0 -43
  155. data/lib/archsight/web/views/partials/instance/_requirements.haml +0 -41
  156. data/lib/archsight/web/views/partials/instance/_view_detail.haml +0 -57
  157. data/lib/archsight/web/views/partials/layout/_content.haml +0 -50
  158. data/lib/archsight/web/views/partials/layout/_error.haml +0 -22
  159. data/lib/archsight/web/views/partials/layout/_head.haml +0 -26
  160. data/lib/archsight/web/views/partials/layout/_navigation.haml +0 -21
  161. data/lib/archsight/web/views/partials/layout/_sidebar.haml +0 -27
  162. data/lib/archsight/web/views/search.haml +0 -53
  163. /data/{lib/archsight/web/doc → docs}/archimate.md +0 -0
  164. /data/{lib/archsight/web/doc → docs}/computed_annotations.md +0 -0
  165. /data/{lib/archsight/web/doc → docs}/icons.md +0 -0
  166. /data/{lib/archsight/web/doc → docs}/import.md +0 -0
  167. /data/{lib/archsight/web/doc → docs}/modeling.md +0 -0
  168. /data/{lib/archsight/web/doc → docs}/search.md +0 -0
  169. /data/{lib/archsight/web/doc → docs}/togaf.md +0 -0
  170. /data/{lib/archsight/web/doc → docs}/tool.md +0 -0
@@ -1,995 +0,0 @@
1
- /* Artifact Styles - Activity, Git, Deployment, Workflow, etc. */
2
-
3
- /* Language Distribution Bar */
4
- .language-distribution {
5
- display: flex;
6
- flex-direction: column;
7
- gap: 8px;
8
- min-width: 200px;
9
- padding: 8px 12px;
10
- background-color: var(--card-background-color);
11
- border-radius: 6px;
12
- border: 1px solid var(--muted-border-color);
13
- }
14
-
15
- .language-total {
16
- display: flex;
17
- align-items: baseline;
18
- gap: 6px;
19
- }
20
-
21
- .language-total .language-count {
22
- font-size: 1.5em;
23
- font-weight: 600;
24
- color: var(--color);
25
- }
26
-
27
- .language-total .language-label {
28
- color: var(--muted-color);
29
- font-size: 0.9em;
30
- }
31
-
32
- .language-bar {
33
- display: flex;
34
- height: 8px;
35
- border-radius: 4px;
36
- overflow: hidden;
37
- background-color: var(--muted-border-color);
38
- }
39
-
40
- .language-bar-segment {
41
- height: 100%;
42
- min-width: 2px;
43
- }
44
-
45
- /* Language colors - inspired by GitHub language colors */
46
- .language-bar-segment.lang-0,
47
- .language-legend-dot.lang-0 { background-color: #3178c6; } /* Blue - primary */
48
- .language-bar-segment.lang-1,
49
- .language-legend-dot.lang-1 { background-color: #00add8; } /* Cyan */
50
- .language-bar-segment.lang-2,
51
- .language-legend-dot.lang-2 { background-color: #f1e05a; } /* Yellow */
52
- .language-bar-segment.lang-3,
53
- .language-legend-dot.lang-3 { background-color: #e34c26; } /* Orange-red */
54
- .language-bar-segment.lang-4,
55
- .language-legend-dot.lang-4 { background-color: #563d7c; } /* Purple */
56
- .language-bar-segment.lang-5,
57
- .language-legend-dot.lang-5 { background-color: #89e051; } /* Green */
58
- .language-bar-segment.lang-6,
59
- .language-legend-dot.lang-6 { background-color: #f34b7d; } /* Pink */
60
- .language-bar-segment.lang-7,
61
- .language-legend-dot.lang-7 { background-color: #b07219; } /* Brown */
62
- .language-bar-segment.lang-8,
63
- .language-legend-dot.lang-8 { background-color: #4f5d95; } /* Slate blue */
64
- .language-bar-segment.lang-9,
65
- .language-legend-dot.lang-9 { background-color: #6b7280; } /* Gray */
66
- .language-bar-segment.lang-other,
67
- .language-legend-dot.lang-other { background-color: #9ca3af; } /* Light gray for Other */
68
-
69
- .language-legend {
70
- display: flex;
71
- flex-wrap: wrap;
72
- gap: 12px;
73
- font-size: 0.85em;
74
- }
75
-
76
- .language-legend-item {
77
- display: flex;
78
- align-items: center;
79
- gap: 4px;
80
- }
81
-
82
- .language-legend-item a {
83
- color: var(--muted-color);
84
- text-decoration: none;
85
- }
86
-
87
- .language-legend-item a:hover {
88
- color: var(--primary);
89
- text-decoration: underline;
90
- }
91
-
92
- .language-legend-dot {
93
- width: 8px;
94
- height: 8px;
95
- border-radius: 50%;
96
- flex-shrink: 0;
97
- }
98
-
99
- /* Project estimate */
100
- .project-estimate {
101
- display: flex;
102
- flex-wrap: wrap;
103
- gap: 16px;
104
- padding: 4px 0;
105
- }
106
-
107
- .estimate-item {
108
- display: flex;
109
- align-items: center;
110
- gap: 6px;
111
- padding: 6px 12px;
112
- background-color: var(--card-background-color);
113
- border-radius: 6px;
114
- border: 1px solid var(--muted-border-color);
115
- }
116
-
117
- .estimate-item i {
118
- font-size: 1.2em;
119
- color: var(--primary);
120
- }
121
-
122
- .estimate-label {
123
- color: var(--muted-color);
124
- font-size: 0.9em;
125
- }
126
-
127
- .estimate-value {
128
- font-weight: 600;
129
- color: var(--color);
130
- }
131
-
132
- .estimate-note {
133
- margin-left: 0.5rem;
134
- color: var(--muted-color);
135
- cursor: help;
136
- }
137
-
138
- .estimate-note i {
139
- font-size: 0.875rem;
140
- }
141
-
142
- /* Activity summary */
143
- .activity-summary {
144
- display: flex;
145
- flex-wrap: wrap;
146
- gap: 16px;
147
- padding: 4px 0;
148
- }
149
-
150
- .activity-item {
151
- display: flex;
152
- align-items: center;
153
- gap: 6px;
154
- padding: 6px 12px;
155
- background-color: var(--card-background-color);
156
- border-radius: 6px;
157
- border: 1px solid var(--muted-border-color);
158
- }
159
-
160
- .activity-item i {
161
- font-size: 1.2em;
162
- color: var(--primary);
163
- }
164
-
165
- .activity-label {
166
- color: var(--muted-color);
167
- font-size: 0.9em;
168
- }
169
-
170
- .activity-value {
171
- font-weight: 600;
172
- color: var(--color);
173
- }
174
-
175
- .activity-value.status-abandoned {
176
- color: #dc2626;
177
- font-weight: 700;
178
- }
179
-
180
- .activity-value.status-bot-only {
181
- color: #f59e0b;
182
- font-style: italic;
183
- }
184
-
185
- .activity-value.status-archived {
186
- color: #6b7280;
187
- font-weight: 600;
188
- text-decoration: line-through;
189
- }
190
-
191
- .activity-value.bus-factor-high {
192
- color: #dc2626;
193
- font-weight: 700;
194
- }
195
-
196
- .activity-value.bus-factor-medium {
197
- color: #f59e0b;
198
- font-weight: 600;
199
- }
200
-
201
- /* Activity Sparkline */
202
- .activity-sparkline {
203
- display: inline-flex;
204
- align-items: flex-end;
205
- gap: 1px;
206
- height: 20px;
207
- padding: 2px 4px;
208
- background-color: var(--card-background-color);
209
- border-radius: 4px;
210
- border: 1px solid var(--muted-border-color);
211
- }
212
-
213
- .activity-sparkline-bar {
214
- width: 2px;
215
- min-height: 2px;
216
- background-color: #3178c6;
217
- border-radius: 1px;
218
- transition: background-color 0.2s ease;
219
- }
220
-
221
- .activity-sparkline-bar.empty {
222
- min-height: 0;
223
- background-color: transparent;
224
- }
225
-
226
- .activity-sparkline-bar:hover {
227
- background-color: #2563eb;
228
- }
229
-
230
- .activity-sparkline-bar.empty:hover {
231
- background-color: transparent;
232
- }
233
-
234
- /* Contributors sparkline - green color */
235
- .contributors-sparkline .activity-sparkline-bar {
236
- background-color: #10b981;
237
- }
238
-
239
- .contributors-sparkline .activity-sparkline-bar:hover {
240
- background-color: #059669;
241
- }
242
-
243
- .sparkline-total {
244
- margin-left: 6px;
245
- font-size: 0.85em;
246
- color: var(--muted-color);
247
- }
248
-
249
- .contributors-total {
250
- margin-left: 4px;
251
- font-size: 0.8em;
252
- font-weight: 400;
253
- color: var(--muted-color);
254
- opacity: 0.8;
255
- }
256
-
257
- /* Repository Distribution Bar */
258
- .repository-distribution {
259
- display: flex;
260
- flex-direction: column;
261
- gap: 8px;
262
- min-width: 200px;
263
- padding: 8px 12px;
264
- background-color: var(--card-background-color);
265
- border-radius: 6px;
266
- border: 1px solid var(--muted-border-color);
267
- }
268
-
269
- .repository-total {
270
- display: flex;
271
- align-items: baseline;
272
- gap: 6px;
273
- }
274
-
275
- .repository-total .repository-count {
276
- font-size: 1.5em;
277
- font-weight: 600;
278
- color: var(--color);
279
- }
280
-
281
- .repository-total .repository-label {
282
- color: var(--muted-color);
283
- font-size: 0.9em;
284
- }
285
-
286
- .repository-bar {
287
- display: flex;
288
- height: 8px;
289
- border-radius: 4px;
290
- overflow: hidden;
291
- background-color: var(--muted-border-color);
292
- }
293
-
294
- .repository-bar-segment {
295
- height: 100%;
296
- min-width: 2px;
297
- }
298
-
299
- .repository-bar-segment.status-active {
300
- background-color: #10b981;
301
- }
302
-
303
- .repository-bar-segment.status-high-bus-factor {
304
- background-color: #f59e0b;
305
- }
306
-
307
- .repository-bar-segment.status-abandoned {
308
- background-color: #dc2626;
309
- }
310
-
311
- .repository-bar-segment.status-other {
312
- background-color: #6b7280;
313
- }
314
-
315
- .repository-bar-segment.status-archived {
316
- background-color: #9ca3af;
317
- }
318
-
319
- .repository-legend {
320
- display: flex;
321
- flex-wrap: wrap;
322
- gap: 12px;
323
- font-size: 0.85em;
324
- }
325
-
326
- .repository-legend-item {
327
- display: flex;
328
- align-items: center;
329
- gap: 4px;
330
- color: var(--muted-color);
331
- }
332
-
333
- .repository-legend-dot {
334
- width: 8px;
335
- height: 8px;
336
- border-radius: 50%;
337
- }
338
-
339
- .repository-legend-dot.status-active {
340
- background-color: #10b981;
341
- }
342
-
343
- .repository-legend-dot.status-high-bus-factor {
344
- background-color: #f59e0b;
345
- }
346
-
347
- .repository-legend-dot.status-abandoned {
348
- background-color: #dc2626;
349
- }
350
-
351
- .repository-legend-dot.status-other {
352
- background-color: #6b7280;
353
- }
354
-
355
- .repository-legend-dot.status-archived {
356
- background-color: #9ca3af;
357
- }
358
-
359
- @media (prefers-color-scheme: dark) {
360
- .repository-bar-segment.status-active,
361
- .repository-legend-dot.status-active {
362
- background-color: #34d399;
363
- }
364
-
365
- .repository-bar-segment.status-high-bus-factor,
366
- .repository-legend-dot.status-high-bus-factor {
367
- background-color: #fbbf24;
368
- }
369
-
370
- .repository-bar-segment.status-abandoned,
371
- .repository-legend-dot.status-abandoned {
372
- background-color: #f87171;
373
- }
374
-
375
- .repository-bar-segment.status-other,
376
- .repository-legend-dot.status-other {
377
- background-color: #9ca3af;
378
- }
379
-
380
- .repository-bar-segment.status-archived,
381
- .repository-legend-dot.status-archived {
382
- background-color: #d1d5db;
383
- }
384
- }
385
-
386
- /* Team */
387
- .team-stats {
388
- display: flex;
389
- flex-wrap: wrap;
390
- gap: 16px;
391
- padding: 8px 12px;
392
- background-color: var(--card-background-color);
393
- border-radius: 6px;
394
- border: 1px solid var(--muted-border-color);
395
- }
396
-
397
- .team-stat-item {
398
- display: flex;
399
- align-items: baseline;
400
- gap: 6px;
401
- }
402
-
403
- .team-stat-value {
404
- font-size: 1.5em;
405
- font-weight: 600;
406
- color: var(--color);
407
- }
408
-
409
- .team-stat-label {
410
- color: var(--muted-color);
411
- font-size: 0.9em;
412
- }
413
-
414
- .team-value {
415
- color: var(--color);
416
- }
417
-
418
- a.team-value {
419
- color: var(--primary);
420
- text-decoration: none;
421
- }
422
-
423
- a.team-value:hover {
424
- text-decoration: underline;
425
- }
426
-
427
- .team-members {
428
- display: flex;
429
- flex-direction: column;
430
- gap: 2px;
431
- }
432
-
433
- .team-member {
434
- color: var(--color);
435
- }
436
-
437
- a.team-member {
438
- color: var(--primary);
439
- text-decoration: none;
440
- }
441
-
442
- a.team-member:hover {
443
- text-decoration: underline;
444
- }
445
-
446
- /* Jira info - inline layout with wrap */
447
- .jira-info {
448
- display: flex;
449
- flex-wrap: wrap;
450
- align-items: center;
451
- gap: 10px;
452
- }
453
-
454
- .jira-metric {
455
- display: flex;
456
- align-items: center;
457
- gap: 6px;
458
- }
459
-
460
- .jira-metric-label {
461
- font-size: 0.85em;
462
- color: var(--muted-color);
463
- }
464
-
465
- .jira-metric-total {
466
- font-size: 0.85em;
467
- font-weight: 600;
468
- color: var(--color);
469
- }
470
-
471
- /* Jira sparkline colors - created = orange, resolved = green */
472
- .jira-created-sparkline .activity-sparkline-bar {
473
- background-color: #f59e0b;
474
- }
475
-
476
- .jira-created-sparkline .activity-sparkline-bar:hover {
477
- background-color: #d97706;
478
- }
479
-
480
- .jira-resolved-sparkline .activity-sparkline-bar {
481
- background-color: #10b981;
482
- }
483
-
484
- .jira-resolved-sparkline .activity-sparkline-bar:hover {
485
- background-color: #059669;
486
- }
487
-
488
- /* Jira trend indicator - compact */
489
- .jira-trend {
490
- display: flex;
491
- align-items: center;
492
- gap: 4px;
493
- font-size: 0.85em;
494
- cursor: help;
495
- }
496
-
497
- .jira-trend i {
498
- font-size: 1em;
499
- }
500
-
501
- .jira-trend-text {
502
- font-weight: 600;
503
- }
504
-
505
- /* Trend states */
506
- .jira-trend-positive i,
507
- .jira-trend-positive .jira-trend-text {
508
- color: #10b981;
509
- }
510
-
511
- .jira-trend-negative i,
512
- .jira-trend-negative .jira-trend-text {
513
- color: #ef4444;
514
- }
515
-
516
- .jira-trend-neutral i,
517
- .jira-trend-neutral .jira-trend-text {
518
- color: var(--muted-color);
519
- }
520
-
521
- @media (prefers-color-scheme: dark) {
522
- .jira-created-sparkline .activity-sparkline-bar {
523
- background-color: #fbbf24;
524
- }
525
-
526
- .jira-resolved-sparkline .activity-sparkline-bar {
527
- background-color: #34d399;
528
- }
529
-
530
- .jira-trend-positive i,
531
- .jira-trend-positive .jira-trend-text {
532
- color: #34d399;
533
- }
534
-
535
- .jira-trend-negative i,
536
- .jira-trend-negative .jira-trend-text {
537
- color: #f87171;
538
- }
539
- }
540
-
541
- /* View components - table cell styles */
542
- .component-jira,
543
- .component-activity,
544
- .component-language,
545
- .component-repos,
546
- .component-status {
547
- display: flex;
548
- align-items: center;
549
- gap: 10px;
550
- white-space: nowrap;
551
- }
552
-
553
- .badge-sm {
554
- font-size: 0.9em;
555
- padding: 4px 10px;
556
- }
557
-
558
- .component-trend {
559
- display: flex;
560
- align-items: center;
561
- gap: 2px;
562
- font-size: 0.9em;
563
- font-weight: 600;
564
- margin-left: auto;
565
- }
566
-
567
- .component-trend.trend-positive {
568
- color: #10b981;
569
- }
570
-
571
- .component-trend.trend-negative {
572
- color: #ef4444;
573
- }
574
-
575
- .component-trend.trend-neutral {
576
- color: var(--muted-color);
577
- }
578
-
579
- .component-total,
580
- .component-count {
581
- font-weight: 600;
582
- font-size: 1.1em;
583
- }
584
-
585
- .component-lang {
586
- font-weight: 600;
587
- font-size: 1em;
588
- }
589
-
590
- .component-loc {
591
- color: var(--muted-color);
592
- font-size: 0.95em;
593
- }
594
-
595
- .component-lang-bar {
596
- display: flex;
597
- width: 160px;
598
- height: 8px;
599
- border-radius: 4px;
600
- overflow: hidden;
601
- background: var(--muted-border-color);
602
- }
603
-
604
- .component-lang-bar .lang-bar-segment {
605
- height: 100%;
606
- }
607
-
608
- .lang-bar-segment.lang-0 { background-color: #3178c6; }
609
- .lang-bar-segment.lang-1 { background-color: #00add8; }
610
- .lang-bar-segment.lang-2 { background-color: #f1e05a; }
611
- .lang-bar-segment.lang-3 { background-color: #e34c26; }
612
- .lang-bar-segment.lang-4 { background-color: #563d7c; }
613
- .lang-bar-segment.lang-other { background-color: #9ca3af; }
614
-
615
- .component-badge {
616
- font-size: 0.85em;
617
- padding: 4px 10px;
618
- border-radius: 4px;
619
- background-color: var(--muted-border-color);
620
- }
621
-
622
- .component-badge.status-active {
623
- background-color: rgba(16, 185, 129, 0.15);
624
- color: #10b981;
625
- }
626
-
627
- .component-badge.status-abandoned {
628
- background-color: rgba(239, 68, 68, 0.15);
629
- color: #ef4444;
630
- }
631
-
632
- .component-badge.status-archived {
633
- background-color: rgba(107, 114, 128, 0.15);
634
- color: #6b7280;
635
- }
636
-
637
- .component-badge.bus-factor-high {
638
- background-color: rgba(239, 68, 68, 0.15);
639
- color: #ef4444;
640
- }
641
-
642
- .component-badge.bus-factor-medium {
643
- background-color: rgba(245, 158, 11, 0.15);
644
- color: #f59e0b;
645
- }
646
-
647
- .sparkline-sm {
648
- height: 28px;
649
- gap: 2px;
650
- }
651
-
652
- .sparkline-sm .activity-sparkline-bar {
653
- width: 4px;
654
- border-radius: 1px;
655
- }
656
-
657
- .component-bar-mini {
658
- display: flex;
659
- width: 120px;
660
- height: 12px;
661
- border-radius: 4px;
662
- overflow: hidden;
663
- background: var(--muted-border-color);
664
- }
665
-
666
- .component-bar-mini .bar-segment {
667
- height: 100%;
668
- }
669
-
670
- .component-bar-mini .bar-segment.status-active {
671
- background-color: #10b981;
672
- }
673
-
674
- .component-bar-mini .bar-segment.status-high-bus-factor {
675
- background-color: #f59e0b;
676
- }
677
-
678
- .component-bar-mini .bar-segment.status-archived {
679
- background-color: #9ca3af;
680
- }
681
-
682
- .component-bar-mini .bar-segment.status-other {
683
- background-color: #6b7280;
684
- }
685
-
686
- .component-bar-mini .bar-segment.status-abandoned {
687
- background-color: #ef4444;
688
- }
689
-
690
- .component-link {
691
- display: flex;
692
- align-items: center;
693
- gap: 8px;
694
- color: var(--primary);
695
- text-decoration: none;
696
- font-size: 1em;
697
- }
698
-
699
- .component-link:hover {
700
- text-decoration: underline;
701
- }
702
-
703
- .component-link i {
704
- font-size: 1.3em;
705
- }
706
-
707
- @media (prefers-color-scheme: dark) {
708
- .component-trend.trend-positive {
709
- color: #34d399;
710
- }
711
-
712
- .component-trend.trend-negative {
713
- color: #f87171;
714
- }
715
-
716
- .component-badge.status-active {
717
- background-color: rgba(52, 211, 153, 0.2);
718
- color: #34d399;
719
- }
720
-
721
- .component-badge.status-abandoned {
722
- background-color: rgba(248, 113, 113, 0.2);
723
- color: #f87171;
724
- }
725
-
726
- .component-badge.bus-factor-high {
727
- background-color: rgba(248, 113, 113, 0.2);
728
- color: #f87171;
729
- }
730
-
731
- .component-badge.bus-factor-medium {
732
- background-color: rgba(251, 191, 36, 0.2);
733
- color: #fbbf24;
734
- }
735
-
736
- .component-bar-mini .bar-segment.status-active {
737
- background-color: #34d399;
738
- }
739
-
740
- .component-bar-mini .bar-segment.status-high-bus-factor {
741
- background-color: #fbbf24;
742
- }
743
-
744
- .component-bar-mini .bar-segment.status-archived {
745
- background-color: #d1d5db;
746
- }
747
-
748
- .component-bar-mini .bar-segment.status-other {
749
- background-color: #9ca3af;
750
- }
751
-
752
- .component-bar-mini .bar-segment.status-abandoned {
753
- background-color: #f87171;
754
- }
755
- }
756
-
757
- /* Git info */
758
- .git-info {
759
- display: flex;
760
- flex-wrap: wrap;
761
- gap: 16px;
762
- padding: 4px 0;
763
- }
764
-
765
- .git-item {
766
- display: flex;
767
- align-items: center;
768
- gap: 6px;
769
- padding: 6px 12px;
770
- background-color: var(--card-background-color);
771
- border-radius: 6px;
772
- border: 1px solid var(--muted-border-color);
773
- }
774
-
775
- .git-item i {
776
- font-size: 1.2em;
777
- color: var(--primary);
778
- }
779
-
780
- .git-link {
781
- font-weight: 600;
782
- color: var(--primary);
783
- text-decoration: none;
784
- }
785
-
786
- .git-link:hover {
787
- text-decoration: underline;
788
- }
789
-
790
- .git-clone-command {
791
- color: var(--muted-color);
792
- font-size: 0.9em;
793
- font-family: monospace;
794
- background-color: var(--code-background-color);
795
- padding: 2px 6px;
796
- border-radius: 3px;
797
- }
798
-
799
- .copy-button {
800
- padding: 6px;
801
- background-color: transparent;
802
- color: var(--primary);
803
- border: 1px solid var(--muted-border-color);
804
- border-radius: 4px;
805
- cursor: pointer;
806
- transition: all 0.2s ease;
807
- display: flex;
808
- align-items: center;
809
- justify-content: center;
810
- min-width: 32px;
811
- height: 32px;
812
- }
813
-
814
- .copy-button:hover {
815
- background-color: var(--card-background-color);
816
- border-color: var(--primary);
817
- transform: scale(1.1);
818
- }
819
-
820
- .copy-button.copied {
821
- background-color: #10b981;
822
- border-color: #10b981;
823
- color: white;
824
- }
825
-
826
- .copy-button i {
827
- font-size: 1.1em;
828
- }
829
-
830
- /* Deployment info styles */
831
- .deployment-types {
832
- display: grid;
833
- grid-template-columns: repeat(2, 1fr);
834
- gap: 0.5rem;
835
- }
836
-
837
- .deployment-item {
838
- display: flex;
839
- align-items: center;
840
- gap: 0.5rem;
841
- padding: 0.5rem;
842
- background-color: var(--card-background-color);
843
- border: 1px solid var(--muted-border-color);
844
- border-radius: 6px;
845
- text-decoration: none;
846
- color: var(--color);
847
- transition: border-color 0.2s ease;
848
- }
849
-
850
- .deployment-item:hover {
851
- border-color: var(--primary);
852
- }
853
-
854
- .deployment-item i {
855
- color: var(--primary);
856
- font-size: 1.2em;
857
- flex-shrink: 0;
858
- }
859
-
860
- /* Workflow info styles */
861
- .workflow-platforms {
862
- display: grid;
863
- grid-template-columns: repeat(2, 1fr);
864
- gap: 0.5rem;
865
- }
866
-
867
- .workflow-platform-item {
868
- display: flex;
869
- align-items: center;
870
- gap: 0.5rem;
871
- padding: 0.5rem;
872
- background-color: var(--card-background-color);
873
- border: 1px solid var(--muted-border-color);
874
- border-radius: 6px;
875
- text-decoration: none;
876
- color: var(--color);
877
- transition: border-color 0.2s ease;
878
- }
879
-
880
- .workflow-platform-item:hover {
881
- border-color: var(--primary);
882
- }
883
-
884
- .workflow-platform-item input[type="checkbox"] {
885
- margin: 0;
886
- pointer-events: none;
887
- }
888
-
889
- .workflow-types ul {
890
- list-style: none;
891
- padding-left: 0;
892
- margin: 0.25rem 0 0 0;
893
- }
894
-
895
- .workflow-types li {
896
- display: flex;
897
- align-items: center;
898
- gap: 0.5rem;
899
- }
900
-
901
- .workflow-types li input[type="checkbox"] {
902
- margin: 0;
903
- pointer-events: none;
904
- }
905
-
906
- .workflow-types li a {
907
- text-decoration: none;
908
- color: var(--color);
909
- transition: color 0.2s ease;
910
- }
911
-
912
- .workflow-types li a:hover {
913
- color: var(--primary);
914
- text-decoration: underline;
915
- }
916
-
917
- .workflow-types li.grayed-out {
918
- opacity: 0.4;
919
- }
920
-
921
- .workflow-types {
922
- padding-left: 1rem;
923
- margin-top: 0.5rem;
924
- }
925
-
926
- .workflow-types>div {
927
- display: grid;
928
- grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
929
- gap: 0.5rem;
930
- }
931
-
932
- .workflow-category strong {
933
- display: block;
934
- margin-bottom: 0.25rem;
935
- }
936
-
937
- /* Agentic tools styles */
938
- .agentic-tools {
939
- display: grid;
940
- grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
941
- gap: 1rem;
942
- }
943
-
944
- .tool-item {
945
- padding: 0.75rem;
946
- background-color: var(--card-background-color);
947
- border: 1px solid var(--muted-border-color);
948
- border-radius: 6px;
949
- transition: opacity 0.2s ease, border-color 0.2s ease;
950
- text-decoration: none;
951
- color: var(--color);
952
- display: block;
953
- }
954
-
955
- .tool-item:hover {
956
- border-color: var(--primary);
957
- }
958
-
959
- .tool-item.not-implemented {
960
- opacity: 0.4;
961
- }
962
-
963
- .tool-item-header {
964
- display: flex;
965
- align-items: center;
966
- gap: 0.5rem;
967
- margin-bottom: 0.25rem;
968
- }
969
-
970
- .tool-item-header input[type="checkbox"] {
971
- margin: 0;
972
- pointer-events: none;
973
- }
974
-
975
- .tool-item-header i {
976
- font-size: 1.2em;
977
- }
978
-
979
- .tool-item-header i.implemented {
980
- color: var(--primary);
981
- }
982
-
983
- .tool-item-header i.not-implemented {
984
- color: var(--muted-color);
985
- }
986
-
987
- .tool-item-description {
988
- font-size: 0.85em;
989
- color: var(--muted-color);
990
- }
991
-
992
- /* Common info section cell padding */
993
- .info-section-cell {
994
- padding: 0.5rem 1rem;
995
- }