@leanspec/ui 0.2.26 → 0.2.27

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 (222) hide show
  1. package/dist/{_baseUniq-ijHblO0i.js → _baseUniq-DeCRnh20.js} +1 -1
  2. package/dist/{arc-DSoiQqhG.js → arc-C7Ja-5dr.js} +1 -1
  3. package/dist/{architecture-U656AL7Q-0EY1UA93.js → architecture-U656AL7Q-KasuNmTK.js} +1 -1
  4. package/dist/{architectureDiagram-VXUJARFQ-CpZ7MNJ1.js → architectureDiagram-VXUJARFQ-CzHvPXJk.js} +3 -3
  5. package/dist/assets/ChatSettingsPage-Dg4b6Mdg.js +1 -0
  6. package/dist/assets/ContextPage-DLKsvbaY.js +14 -0
  7. package/dist/assets/DashboardPage-D5roDkxO.js +1 -0
  8. package/dist/assets/DependenciesPage-BlTgal-s.js +2 -0
  9. package/dist/assets/FilesPage-BOzy0zBy.css +1 -0
  10. package/dist/assets/FilesPage-u613OfDX.js +3 -0
  11. package/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  12. package/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  13. package/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  14. package/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  15. package/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  16. package/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  17. package/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  18. package/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  19. package/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  20. package/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  21. package/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  22. package/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  23. package/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  24. package/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  25. package/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  26. package/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  27. package/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  28. package/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  29. package/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  30. package/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  31. package/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  32. package/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  33. package/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  34. package/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  35. package/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  36. package/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  37. package/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  38. package/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  39. package/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  40. package/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  41. package/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  42. package/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  43. package/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  44. package/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  45. package/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  46. package/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  47. package/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  48. package/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  49. package/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  50. package/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  51. package/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  52. package/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  53. package/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  54. package/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  55. package/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  56. package/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  57. package/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  58. package/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  59. package/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  60. package/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  61. package/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  62. package/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  63. package/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  64. package/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  65. package/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  66. package/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  67. package/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  68. package/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  69. package/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  70. package/dist/assets/SessionDetailPage-CmisG8OY.js +4 -0
  71. package/dist/assets/SessionsPage-Ov5FSlG0.js +1 -0
  72. package/dist/assets/SpecDetailPage-BSMc3nst.js +3 -0
  73. package/dist/assets/SpecDetailPage-BmnaB44z.css +1 -0
  74. package/dist/assets/SpecsPage-Cj6pRfOw.js +1 -0
  75. package/dist/assets/StatsPage-fmGNHIOe.js +36 -0
  76. package/dist/assets/_baseUniq-B_33F2hD.js +1 -0
  77. package/dist/assets/arc-eeGjCukK.js +1 -0
  78. package/dist/assets/architectureDiagram-VXUJARFQ-Byc0dVxO.js +36 -0
  79. package/dist/assets/band-CquvqAHh.js +1 -0
  80. package/dist/assets/{blockDiagram-VD42YOAC-De6LVB6b.js → blockDiagram-VD42YOAC-B8mIUKCH.js} +4 -4
  81. package/dist/assets/{c4Diagram-YG6GDRKO-DmO_YZpf.js → c4Diagram-YG6GDRKO-DddzPdre.js} +3 -3
  82. package/dist/assets/channel-DlZlZmTt.js +1 -0
  83. package/dist/assets/{chunk-4BX2VUAB-D_i5DxBx.js → chunk-4BX2VUAB-4RrLP-cY.js} +1 -1
  84. package/dist/assets/{chunk-55IACEB6-CYBqqEaM.js → chunk-55IACEB6-C8ucnnQR.js} +1 -1
  85. package/dist/assets/{chunk-B4BG7PRW-B_kJst0L.js → chunk-B4BG7PRW-DwNhZZ7r.js} +3 -3
  86. package/dist/assets/{chunk-DI55MBZ5-DmQQvuy9.js → chunk-DI55MBZ5-orfhja3l.js} +2 -2
  87. package/dist/assets/{chunk-FMBD7UC4-DIj1fMOC.js → chunk-FMBD7UC4-BuW1I-fC.js} +1 -1
  88. package/dist/assets/{chunk-QN33PNHL-Dob4GXZN.js → chunk-QN33PNHL-BaA5PO8k.js} +1 -1
  89. package/dist/assets/{chunk-QZHKN3VN-B9l1Ct5_.js → chunk-QZHKN3VN-Dqa4tmK4.js} +1 -1
  90. package/dist/assets/{chunk-TZMSLE5B-D5kj2wzj.js → chunk-TZMSLE5B-djzRrJuy.js} +1 -1
  91. package/dist/assets/classDiagram-2ON5EDUG-C2Yf3yFU.js +1 -0
  92. package/dist/assets/classDiagram-v2-WZHVMYZB-C2Yf3yFU.js +1 -0
  93. package/dist/assets/clone-D-4UeXFh.js +1 -0
  94. package/dist/assets/{code-block-37QAKDTI-DPta_cDe.js → code-block-37QAKDTI-AYxzHYF3.js} +1 -1
  95. package/dist/assets/{cose-bilkent-S5V4N54A-CIbyIxy7.js → cose-bilkent-S5V4N54A-Cnp1eSFl.js} +1 -1
  96. package/dist/assets/{dagre-6UL2VRFP-DiNoo8UH.js → dagre-6UL2VRFP-CIAWAhQL.js} +2 -2
  97. package/dist/assets/defaultLocale-C4B-KCzX.js +1 -0
  98. package/dist/assets/diagram-PSM6KHXK-CPeehxEt.js +24 -0
  99. package/dist/assets/diagram-QEK2KX5R-4rkmVp8d.js +43 -0
  100. package/dist/assets/diagram-S2PKOQOG-CHZnsBbD.js +24 -0
  101. package/dist/assets/{erDiagram-Q2GNP2WA-C18-XmOn.js → erDiagram-Q2GNP2WA-C4TTAGaG.js} +2 -2
  102. package/dist/assets/{flowDiagram-NV44I4VS-C_-yn3lU.js → flowDiagram-NV44I4VS-C9c1GVlY.js} +10 -10
  103. package/dist/assets/funnel-x-BvY4n8AU.js +1 -0
  104. package/dist/assets/{ganttDiagram-JELNMOA3-Da95ISpS.js → ganttDiagram-JELNMOA3-DPd-3uLN.js} +4 -4
  105. package/dist/assets/gitGraphDiagram-NY62KEGX-Drq0KNG5.js +65 -0
  106. package/dist/assets/{graph-ByVyFk5n.js → graph-9MjkFnGf.js} +1 -1
  107. package/dist/assets/{index-BUH5BNQv.css → index-DX91j_KV.css} +1 -1
  108. package/dist/assets/index-DoWWshr8.js +2187 -0
  109. package/dist/assets/info-RxIWhHbS.js +1 -0
  110. package/dist/assets/infoDiagram-WHAUD3N6-BEa020kA.js +2 -0
  111. package/dist/assets/init-Dmth1JHB.js +1 -0
  112. package/dist/assets/{journeyDiagram-XKPGCS4Q-Dc0gGxNW.js → journeyDiagram-XKPGCS4Q-mAbpJFG8.js} +4 -4
  113. package/dist/assets/{kanban-definition-3W4ZIXB7-BBl3Os5b.js → kanban-definition-3W4ZIXB7-BbUqw1vO.js} +8 -8
  114. package/dist/assets/{layout-DUjHnQ3q.js → layout-BOFaVoue.js} +1 -1
  115. package/dist/assets/linear-xUbiORsA.js +1 -0
  116. package/dist/assets/min-eHwPCINR.js +1 -0
  117. package/dist/assets/{mindmap-definition-VGOIOE7T-DwXr0an_.js → mindmap-definition-VGOIOE7T-DoP6Td_B.js} +2 -2
  118. package/dist/assets/ordinal-DILIJJjt.js +1 -0
  119. package/dist/assets/page-transition-dCsDSjnv.js +1 -0
  120. package/dist/assets/pieDiagram-ADFJNKIX-Dp_SBNAy.js +30 -0
  121. package/dist/assets/{quadrantDiagram-AYHSOK5B-jzIPJrQC.js → quadrantDiagram-AYHSOK5B-D6Jp00F5.js} +4 -4
  122. package/dist/assets/refresh-ccw-DGe62KT5.js +1 -0
  123. package/dist/assets/{requirementDiagram-UZGBJVZJ-D7lvVmve.js → requirementDiagram-UZGBJVZJ-DOBz3Rdv.js} +3 -3
  124. package/dist/assets/sankeyDiagram-TZEHDZUN-Bz7vjGqd.js +10 -0
  125. package/dist/assets/{sequenceDiagram-WL72ISMW-DWXoU2Xu.js → sequenceDiagram-WL72ISMW-ByPYmOvZ.js} +6 -6
  126. package/dist/assets/session-mode-badge-DCssJwfh.js +1 -0
  127. package/dist/assets/stat-card-ic_H-ddZ.js +1 -0
  128. package/dist/assets/{stateDiagram-FKZM4ZOC-DKMSa2-u.js → stateDiagram-FKZM4ZOC-W833g5qw.js} +1 -1
  129. package/dist/assets/stateDiagram-v2-4FDKWEC3-CwLThngZ.js +1 -0
  130. package/dist/assets/table-of-contents-B4pUXfVp.js +2 -0
  131. package/dist/assets/time-s4hpWI0y.js +1 -0
  132. package/dist/assets/{timeline-definition-IT6M3QCI-i8tdCjji.js → timeline-definition-IT6M3QCI-B3f6ZKjd.js} +3 -3
  133. package/dist/assets/token-utils-x_d_uTQu.js +1 -0
  134. package/dist/assets/{treemap-KMMF4GRG-Bo2ueTP9.js → treemap-KMMF4GRG-CkWhJIwZ.js} +16 -16
  135. package/dist/assets/trending-up-Bp_uZ6i5.js +1 -0
  136. package/dist/assets/validation-badge-B9E1wcwj.js +1 -0
  137. package/dist/assets/{xychartDiagram-PRI3JC2R-C54lHEBd.js → xychartDiagram-PRI3JC2R-Cj3LJwsf.js} +3 -3
  138. package/dist/{blockDiagram-VD42YOAC-ByO9mclR.js → blockDiagram-VD42YOAC-DRN0jNqr.js} +5 -5
  139. package/dist/{c4Diagram-YG6GDRKO-G9IBNezV.js → c4Diagram-YG6GDRKO-CBxJIsoM.js} +2 -2
  140. package/dist/{channel-TVLaQyE6.js → channel-C2ap0mKj.js} +1 -1
  141. package/dist/{chunk-4BX2VUAB-DvQETnkD.js → chunk-4BX2VUAB-CZFPLiei.js} +1 -1
  142. package/dist/{chunk-55IACEB6-Fx760vrL.js → chunk-55IACEB6-CF8NKj4_.js} +1 -1
  143. package/dist/{chunk-B4BG7PRW-BdBF-s3l.js → chunk-B4BG7PRW-C3jkgdyU.js} +4 -4
  144. package/dist/{chunk-DI55MBZ5-Bq1Xpipe.js → chunk-DI55MBZ5-D0hqaHNM.js} +3 -3
  145. package/dist/{chunk-FMBD7UC4-CHwx9e7Z.js → chunk-FMBD7UC4-BMvRco5D.js} +1 -1
  146. package/dist/{chunk-QN33PNHL-29-xlpoh.js → chunk-QN33PNHL-D8WFPrQ5.js} +1 -1
  147. package/dist/{chunk-QZHKN3VN-B4R9UyOO.js → chunk-QZHKN3VN-BBkUib8s.js} +1 -1
  148. package/dist/{chunk-TZMSLE5B-D7ZMH86x.js → chunk-TZMSLE5B-CArYpbwP.js} +1 -1
  149. package/dist/{classDiagram-v2-WZHVMYZB-BZJNp72Q.js → classDiagram-2ON5EDUG-BCig139j.js} +2 -2
  150. package/dist/{classDiagram-2ON5EDUG-BZJNp72Q.js → classDiagram-v2-WZHVMYZB-BCig139j.js} +2 -2
  151. package/dist/{clone-BuM257qi.js → clone-DPyGLWtv.js} +1 -1
  152. package/dist/{cose-bilkent-S5V4N54A-BDx7dcIS.js → cose-bilkent-S5V4N54A-C5SYwGsk.js} +1 -1
  153. package/dist/{dagre-6UL2VRFP-fvMEdLZ9.js → dagre-6UL2VRFP-C8I3plmM.js} +5 -5
  154. package/dist/{diagram-PSM6KHXK-B5DR0Fbv.js → diagram-PSM6KHXK-cXC7AIdZ.js} +4 -4
  155. package/dist/{diagram-QEK2KX5R-DVAmb4ns.js → diagram-QEK2KX5R-CXNiTV6f.js} +3 -3
  156. package/dist/{diagram-S2PKOQOG-oXO-KMCB.js → diagram-S2PKOQOG-CxGzqgZF.js} +3 -3
  157. package/dist/{erDiagram-Q2GNP2WA-Cw3S1xrg.js → erDiagram-Q2GNP2WA-CcY6lgTn.js} +4 -4
  158. package/dist/{flowDiagram-NV44I4VS-B41EhOsx.js → flowDiagram-NV44I4VS-12EmxlpA.js} +5 -5
  159. package/dist/{ganttDiagram-JELNMOA3-CktjaPtm.js → ganttDiagram-JELNMOA3-pNkGSHoM.js} +2 -2
  160. package/dist/{gitGraph-F6HP7TQM-BtaG3hDI.js → gitGraph-F6HP7TQM-DUrKWg_A.js} +1 -1
  161. package/dist/{gitGraphDiagram-NY62KEGX-DoYr9lJ6.js → gitGraphDiagram-NY62KEGX-BXO3EwIS.js} +4 -4
  162. package/dist/{graph-aZrSt0UC.js → graph-D813u3VC.js} +2 -2
  163. package/dist/{index-2ILPnvAG.js → index-ChBmztZR.js} +2732 -2730
  164. package/dist/index.html +2 -2
  165. package/dist/info-NVLQJR56-DBBp-UIi.js +5 -0
  166. package/dist/{infoDiagram-WHAUD3N6-C-9mSXCL.js → infoDiagram-WHAUD3N6-DLh94vHX.js} +2 -2
  167. package/dist/{journeyDiagram-XKPGCS4Q-BZaGhFGN.js → journeyDiagram-XKPGCS4Q-CXPtgCeQ.js} +4 -4
  168. package/dist/{kanban-definition-3W4ZIXB7-DcgJ4LvA.js → kanban-definition-3W4ZIXB7-CdIz6-22.js} +2 -2
  169. package/dist/{katex-r9TeExgs.js → katex-Cj93GM5Y.js} +2529 -2615
  170. package/dist/{layout-CZbv8l1x.js → layout-cIjTHX6V.js} +4 -4
  171. package/dist/lib/hooks/useSpecsQuery.d.ts +5 -0
  172. package/dist/lib/index.js +1 -1
  173. package/dist/lib/lib/api.d.ts +6 -1
  174. package/dist/lib/lib/backend-adapter/core.d.ts +7 -0
  175. package/dist/lib/lib/backend-adapter/http.d.ts +7 -0
  176. package/dist/lib/lib/backend-adapter/tauri.d.ts +7 -0
  177. package/dist/lib/lib/session-stream.d.ts +2 -0
  178. package/dist/lib/locales/en/common.json.d.ts +14 -3
  179. package/dist/lib/locales/zh-CN/common.json.d.ts +14 -3
  180. package/dist/lib/stores/session-create-preferences.d.ts +26 -0
  181. package/dist/lib/types/api.d.ts +5 -1
  182. package/dist/lib/types/generated/RunnerDefinition.d.ts +10 -0
  183. package/dist/lib/types/generated/SessionMode.d.ts +1 -1
  184. package/dist/{linear-DOiEav8w.js → linear-2z6avE3r.js} +1 -1
  185. package/dist/{mermaid-parser.core-CE74cRHV.js → mermaid-parser.core-WMnVe1c0.js} +10 -10
  186. package/dist/{min-iEZRg5We.js → min-DUysNg_V.js} +2 -2
  187. package/dist/{mindmap-definition-VGOIOE7T-B7vK-2rU.js → mindmap-definition-VGOIOE7T-DEm273Z9.js} +3 -3
  188. package/dist/{packet-BFZMPI3H-CRtMZ75O.js → packet-BFZMPI3H-CmSJj4N0.js} +1 -1
  189. package/dist/pie-7BOR55EZ-x5AF7tG5.js +5 -0
  190. package/dist/{pieDiagram-ADFJNKIX-B2CycMp2.js → pieDiagram-ADFJNKIX-Ke8r-mM4.js} +4 -4
  191. package/dist/{quadrantDiagram-AYHSOK5B-DWzMKUVW.js → quadrantDiagram-AYHSOK5B-DLLlZTBr.js} +2 -2
  192. package/dist/radar-NHE76QYJ-CIhcw_Rm.js +5 -0
  193. package/dist/{requirementDiagram-UZGBJVZJ-B1JPpr0N.js → requirementDiagram-UZGBJVZJ-BR4B8eTH.js} +3 -3
  194. package/dist/{sankeyDiagram-TZEHDZUN-DUe4DMeI.js → sankeyDiagram-TZEHDZUN-pDGOsl6Q.js} +1 -1
  195. package/dist/{sequenceDiagram-WL72ISMW-D1ka_qcb.js → sequenceDiagram-WL72ISMW-yt5mqXYT.js} +3 -3
  196. package/dist/{stateDiagram-FKZM4ZOC-kHECs8c-.js → stateDiagram-FKZM4ZOC-C-huUZaG.js} +4 -4
  197. package/dist/{stateDiagram-v2-4FDKWEC3-DtTw2e8h.js → stateDiagram-v2-4FDKWEC3-CSzbVv4p.js} +2 -2
  198. package/dist/{timeline-definition-IT6M3QCI-B9QaWiVQ.js → timeline-definition-IT6M3QCI-DOzsM3OK.js} +2 -2
  199. package/dist/{treemap-KMMF4GRG-Ba6NXlAy.js → treemap-KMMF4GRG-DGnMOcp3.js} +1 -1
  200. package/dist/ui.css +1 -1
  201. package/dist/{xychartDiagram-PRI3JC2R-Cx42bjo1.js → xychartDiagram-PRI3JC2R-C-4j16qj.js} +2 -2
  202. package/package.json +5 -2
  203. package/dist/assets/_baseUniq-CwL8whuW.js +0 -1
  204. package/dist/assets/arc-DQK79yWt.js +0 -1
  205. package/dist/assets/architectureDiagram-VXUJARFQ-0lyQJAFV.js +0 -36
  206. package/dist/assets/channel-CPL3ZhB2.js +0 -1
  207. package/dist/assets/classDiagram-2ON5EDUG-BGtOMy27.js +0 -1
  208. package/dist/assets/classDiagram-v2-WZHVMYZB-BGtOMy27.js +0 -1
  209. package/dist/assets/clone-TRq3RsgR.js +0 -1
  210. package/dist/assets/diagram-PSM6KHXK-oPUYMkQi.js +0 -24
  211. package/dist/assets/diagram-QEK2KX5R-ekYHp-_K.js +0 -43
  212. package/dist/assets/diagram-S2PKOQOG-BjESZsAo.js +0 -24
  213. package/dist/assets/gitGraphDiagram-NY62KEGX-CKst-DTk.js +0 -65
  214. package/dist/assets/index-B-FvbnKr.js +0 -2236
  215. package/dist/assets/infoDiagram-WHAUD3N6-B-KLbNx8.js +0 -2
  216. package/dist/assets/min-B84CwCRn.js +0 -1
  217. package/dist/assets/pieDiagram-ADFJNKIX-kg25OEdx.js +0 -30
  218. package/dist/assets/sankeyDiagram-TZEHDZUN-CkKJUu-X.js +0 -10
  219. package/dist/assets/stateDiagram-v2-4FDKWEC3-fGhjroU9.js +0 -1
  220. package/dist/info-NVLQJR56-5Whifced.js +0 -5
  221. package/dist/pie-7BOR55EZ-CTCOpJ_s.js +0 -5
  222. package/dist/radar-NHE76QYJ-B-kEmJss.js +0 -5
@@ -1,4 +1,4 @@
1
- import { aV as L, bq as ln, aE as A, aT as P, br as gn, bs as dn, aD as W, bt as hn, bu as z, bv as pn, bl as An, bw as m, aW as N, a$ as U, b2 as T, bx as _n, aZ as on, by as wn, bo as On, aF as V, bm as vn, bz as I } from "./index-2ILPnvAG.js";
1
+ import { aV as L, bq as ln, aE as A, aT as P, br as gn, bs as dn, aD as W, bt as hn, bu as z, bv as pn, bl as An, bw as m, aW as N, a$ as U, b2 as T, bx as _n, aZ as on, by as wn, bo as On, aF as V, bm as vn, bz as I } from "./index-ChBmztZR.js";
2
2
  var Pn = "[object Symbol]";
3
3
  function x(n) {
4
4
  return typeof n == "symbol" || L(n) && ln(n) == Pn;
@@ -1,4 +1,4 @@
1
- import { a0 as ln, a1 as an, a2 as y, a3 as tn, a4 as H, a5 as q, a6 as _, a7 as un, a8 as B, a9 as rn, aa as L, ab as o, ac as sn, ad as on, ae as fn } from "./index-2ILPnvAG.js";
1
+ import { a0 as ln, a1 as an, a2 as y, a3 as tn, a4 as H, a5 as q, a6 as _, a7 as un, a8 as B, a9 as rn, aa as L, ab as o, ac as sn, ad as on, ae as fn } from "./index-ChBmztZR.js";
2
2
  function cn(l) {
3
3
  return l.innerRadius;
4
4
  }
@@ -1,4 +1,4 @@
1
- import { A as c, e as t } from "./mermaid-parser.core-CE74cRHV.js";
1
+ import { A as c, e as t } from "./mermaid-parser.core-WMnVe1c0.js";
2
2
  export {
3
3
  c as ArchitectureModule,
4
4
  t as createArchitectureServices
@@ -1,6 +1,6 @@
1
- import { aG as ke, _ as dt, H as Ze, V as qe, l as Se, b as Qe, a as Je, p as Ke, q as je, g as _e, s as tr, y as er, D as rr, E as ir, F as ar, c as Ee, ak as me, aH as pe, i as nr, d as or, x as sr, aI as hr, aJ as lr } from "./index-2ILPnvAG.js";
2
- import { p as fr } from "./chunk-4BX2VUAB-DvQETnkD.js";
3
- import { p as cr } from "./mermaid-parser.core-CE74cRHV.js";
1
+ import { aG as ke, _ as dt, H as Ze, V as qe, l as Se, b as Qe, a as Je, p as Ke, q as je, g as _e, s as tr, y as er, D as rr, E as ir, F as ar, c as Ee, ak as me, aH as pe, i as nr, d as or, x as sr, aI as hr, aJ as lr } from "./index-ChBmztZR.js";
2
+ import { p as fr } from "./chunk-4BX2VUAB-CZFPLiei.js";
3
+ import { p as cr } from "./mermaid-parser.core-WMnVe1c0.js";
4
4
  import { c as Fe } from "./cytoscape.esm-Cvf3sx9F.js";
5
5
  var he = { exports: {} }, le = { exports: {} }, fe = { exports: {} }, gr = fe.exports, we;
6
6
  function ur() {
@@ -0,0 +1 @@
1
+ import{h as de,u as U,aP as re,aQ as ce,aR as oe,r as x,j as e,aS as H,C as F,l as z,aT as Z,a as r,aU as he,i as O,k as q,aV as B,aW as G,aX as V,aY as $,aZ as _,a_ as Q,a$ as W,b0 as p,D as S,b as T,c as P,d as M,b1 as L,b2 as R,B as A,b3 as xe,b4 as X}from"./index-DoWWshr8.js";const me=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}]],Y=de("pen",me);function m({htmlFor:t,children:u,className:l=""}){return e.jsx("label",{htmlFor:t,className:`text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 ${l}`,children:u})}function ve(){const{t}=U("common"),u=re(),{data:l,isLoading:j,error:a,refetch:i}=ce(),{updateProvider:o,deleteProvider:d,updateModel:c,deleteModel:h,updateDefaults:f}=oe(),v=a?.message??null,[n,y]=x.useState(!1),[J,C]=x.useState(null),[ee,b]=x.useState(!1),[N,k]=x.useState(null),[K,D]=x.useState(null),[I,w]=x.useState(null),se=s=>{D(s)},te=async()=>{!l||!K||(await d({config:l,providerId:K}),D(null))},ae=async s=>{l&&(await o({config:l,provider:s}),y(!1),C(null))},ie=async(s,g)=>{l&&(await c({config:l,providerId:s,model:g}),b(!1),k(null))},ne=(s,g)=>{w({providerId:s,modelId:g})},le=async()=>{!l||!I||(await h({config:l,providerId:I.providerId,modelId:I.modelId}),w(null))},E=async(s,g)=>{l&&await f({config:l,field:s,value:g})};return j?e.jsx("div",{className:"flex items-center justify-center h-full",children:e.jsx("div",{className:"animate-pulse text-muted-foreground",children:t("actions.loading")})}):v||!l?e.jsx(H,{children:e.jsx(F,{children:e.jsxs(z,{className:"p-6",children:[e.jsxs("div",{className:"flex items-center gap-2 text-destructive",children:[e.jsx(Z,{className:"h-5 w-5"}),e.jsx("p",{children:v||t("chat.settings.errors.loadConfiguration")})]}),e.jsx(r,{onClick:()=>i(),className:"mt-4",children:t("actions.retry")})]})})}):e.jsxs("div",{className:"h-full overflow-auto",children:[e.jsxs(H,{contentClassName:"space-y-6",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx(r,{variant:"ghost",size:"icon",onClick:()=>u(-1),children:e.jsx(he,{className:"h-4 w-4"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold",children:t("chat.settings.title")}),e.jsx("p",{className:"text-sm text-muted-foreground",children:t("chat.settings.description")})]})]}),e.jsxs(F,{children:[e.jsx(O,{children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(q,{children:t("chat.settings.providers")}),e.jsx(B,{children:t("chat.settings.providersDescription")})]}),e.jsxs(r,{onClick:()=>{C(null),y(!0)},size:"sm",children:[e.jsx(G,{className:"h-4 w-4 mr-2"}),t("chat.settings.addProvider")]})]})}),e.jsx(z,{className:"space-y-4",children:l.providers.map(s=>e.jsx(ue,{provider:s,isDefault:l.settings.defaultProviderId===s.id,onEdit:()=>{C(s),y(!0)},onDelete:()=>se(s.id),onAddModel:()=>{k({providerId:s.id,model:null}),b(!0)},onEditModel:g=>{k({providerId:s.id,model:g}),b(!0)},onDeleteModel:g=>ne(s.id,g)},s.id))})]}),e.jsxs(F,{children:[e.jsxs(O,{children:[e.jsx(q,{children:t("chat.settings.defaults")}),e.jsx(B,{children:t("chat.settings.defaultsDescription")})]}),e.jsx(z,{className:"space-y-4",children:e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"default-provider",children:t("chat.settings.defaultProvider")}),e.jsxs(V,{value:l.settings.defaultProviderId,onValueChange:s=>E("defaultProviderId",s),children:[e.jsx($,{id:"default-provider",children:e.jsx(_,{})}),e.jsx(Q,{children:l.providers.map(s=>e.jsx(W,{value:s.id,disabled:!s.hasApiKey,children:s.name},s.id))})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"default-model",children:t("chat.settings.defaultModel")}),e.jsxs(V,{value:l.settings.defaultModelId,onValueChange:s=>E("defaultModelId",s),children:[e.jsx($,{id:"default-model",children:e.jsx(_,{})}),e.jsx(Q,{children:l.providers.find(s=>s.id===l.settings.defaultProviderId)?.models.map(s=>e.jsx(W,{value:s.id,children:s.name},s.id))})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"max-steps",children:t("chat.settings.maxSteps")}),e.jsx(p,{id:"max-steps",type:"number",min:1,max:50,value:l.settings.maxSteps,onChange:s=>E("maxSteps",Number(s.target.value))}),e.jsx("p",{className:"text-xs text-muted-foreground",children:t("chat.settings.maxStepsHelp")})]})]})})]})]}),n&&e.jsx(je,{provider:J,existingIds:l.providers.map(s=>s.id),onSave:ae,onCancel:()=>{y(!1),C(null)}}),ee&&N&&e.jsx(ge,{model:N.model,providerId:N.providerId,existingIds:l.providers.find(s=>s.id===N.providerId)?.models.map(s=>s.id)??[],onSave:s=>ie(N.providerId,s),onCancel:()=>{b(!1),k(null)}}),e.jsx(S,{open:!!K,onOpenChange:s=>!s&&D(null),children:e.jsxs(T,{children:[e.jsxs(P,{children:[e.jsx(M,{children:t("chat.settings.deleteProviderTitle")}),e.jsx(L,{children:t("chat.settings.confirmDeleteProvider")})]}),e.jsxs(R,{children:[e.jsx(r,{variant:"outline",onClick:()=>D(null),children:t("actions.cancel")}),e.jsx(r,{variant:"destructive",onClick:te,children:t("actions.delete")})]})]})}),e.jsx(S,{open:!!I,onOpenChange:s=>!s&&w(null),children:e.jsxs(T,{children:[e.jsxs(P,{children:[e.jsx(M,{children:t("chat.settings.deleteModelTitle")}),e.jsx(L,{children:t("chat.settings.confirmDeleteModel")})]}),e.jsxs(R,{children:[e.jsx(r,{variant:"outline",onClick:()=>w(null),children:t("actions.cancel")}),e.jsx(r,{variant:"destructive",onClick:le,children:t("actions.delete")})]})]})})]})}function ue({provider:t,isDefault:u,onEdit:l,onDelete:j,onAddModel:a,onEditModel:i,onDeleteModel:o}){const{t:d}=U("common");return e.jsxs("div",{className:"border rounded-lg p-4 space-y-3",children:[e.jsxs("div",{className:"flex items-start justify-between",children:[e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("h3",{className:"font-semibold",children:t.name}),u&&e.jsx(A,{variant:"secondary",className:"text-xs",children:d("chat.settings.default")}),t.hasApiKey?e.jsxs(A,{variant:"outline",className:"text-xs gap-1",children:[e.jsx(xe,{className:"h-3 w-3"}),d("chat.settings.keyConfigured")]}):e.jsxs(A,{variant:"destructive",className:"text-xs gap-1",children:[e.jsx(Z,{className:"h-3 w-3"}),d("chat.settings.noKey")]})]}),e.jsxs("p",{className:"text-sm text-muted-foreground mt-1",children:[t.id," ",t.baseURL&&`• ${t.baseURL}`]})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(r,{variant:"ghost",size:"icon",onClick:l,children:e.jsx(Y,{className:"h-4 w-4"})}),e.jsx(r,{variant:"ghost",size:"icon",onClick:j,children:e.jsx(X,{className:"h-4 w-4"})})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("span",{className:"text-sm font-medium",children:d("chat.settings.models")}),e.jsxs(r,{variant:"ghost",size:"sm",onClick:a,children:[e.jsx(G,{className:"h-3 w-3 mr-1"}),d("chat.settings.addModel")]})]}),e.jsx("div",{className:"space-y-1",children:t.models.map(c=>e.jsxs("div",{className:"flex items-center justify-between text-sm py-1 px-2 rounded hover:bg-muted",children:[e.jsxs("div",{children:[e.jsx("span",{className:"font-mono text-xs",children:c.id}),e.jsx("span",{className:"mx-2 text-muted-foreground",children:"•"}),e.jsx("span",{children:c.name}),c.maxTokens&&e.jsxs("span",{className:"ml-2 text-xs text-muted-foreground",children:["(",c.maxTokens.toLocaleString()," tokens)"]})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(r,{variant:"ghost",size:"icon",className:"h-6 w-6",onClick:()=>i(c),children:e.jsx(Y,{className:"h-3 w-3"})}),e.jsx(r,{variant:"ghost",size:"icon",className:"h-6 w-6",onClick:()=>o(c.id),children:e.jsx(X,{className:"h-3 w-3"})})]})]},c.id))})]})]})}function je({provider:t,existingIds:u,onSave:l,onCancel:j}){const{t:a}=U("common"),[i,o]=x.useState({id:t?.id??"",name:t?.name??"",baseURL:t?.baseURL??"",apiKey:"",hasApiKey:t?.hasApiKey??!1}),[d,c]=x.useState({}),h=!!t,f=()=>{const n={};return i.id.trim()?!h&&u.includes(i.id)?n.id=a("chat.settings.errors.idExists"):/^[a-z0-9-]+$/.test(i.id)||(n.id=a("chat.settings.errors.idInvalid")):n.id=a("chat.settings.errors.idRequired"),i.name.trim()||(n.name=a("chat.settings.errors.nameRequired")),i.baseURL&&!i.baseURL.match(/^https?:\/\//)&&(n.baseURL=a("chat.settings.errors.urlInvalid")),c(n),Object.keys(n).length===0},v=()=>{if(!f())return;const n=i.apiKey.trim();l({id:i.id,name:i.name,baseURL:i.baseURL||void 0,models:t?.models??[],hasApiKey:n?!0:i.hasApiKey,apiKey:n||void 0})};return e.jsx(S,{open:!0,onOpenChange:j,children:e.jsxs(T,{children:[e.jsxs(P,{children:[e.jsx(M,{children:a(h?"chat.settings.editProvider":"chat.settings.addProvider")}),e.jsx(L,{children:a("chat.settings.providerDialogDescription")})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(m,{htmlFor:"provider-id",children:[a("chat.settings.providerId")," ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx(p,{id:"provider-id",value:i.id,onChange:n=>o({...i,id:n.target.value}),placeholder:a("chat.settings.placeholders.providerId"),disabled:h}),d.id&&e.jsx("p",{className:"text-xs text-destructive",children:d.id}),e.jsx("p",{className:"text-xs text-muted-foreground",children:a("chat.settings.providerIdHelp")})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(m,{htmlFor:"provider-name",children:[a("chat.settings.providerName")," ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx(p,{id:"provider-name",value:i.name,onChange:n=>o({...i,name:n.target.value}),placeholder:a("chat.settings.placeholders.providerName")}),d.name&&e.jsx("p",{className:"text-xs text-destructive",children:d.name})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"provider-baseurl",children:a("chat.settings.baseURL")}),e.jsx(p,{id:"provider-baseurl",value:i.baseURL,onChange:n=>o({...i,baseURL:n.target.value}),placeholder:a("chat.settings.placeholders.baseUrl")}),d.baseURL&&e.jsx("p",{className:"text-xs text-destructive",children:d.baseURL}),e.jsx("p",{className:"text-xs text-muted-foreground",children:a("chat.settings.baseURLHelp")})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"provider-apikey",children:a("chat.settings.apiKey")}),e.jsx(p,{id:"provider-apikey",type:"password",value:i.apiKey,onChange:n=>o({...i,apiKey:n.target.value}),placeholder:a(h?"chat.settings.placeholders.apiKeyMasked":"chat.settings.placeholders.apiKeyEnv")}),e.jsx("p",{className:"text-xs text-muted-foreground",children:a("chat.settings.apiKeyHelp")})]})]}),e.jsxs(R,{children:[e.jsx(r,{variant:"outline",onClick:j,children:a("actions.cancel")}),e.jsx(r,{onClick:v,children:a("actions.save")})]})]})})}function ge({model:t,existingIds:u,onSave:l,onCancel:j}){const{t:a}=U("common"),[i,o]=x.useState({id:t?.id??"",name:t?.name??"",maxTokens:t?.maxTokens?.toString()??""}),[d,c]=x.useState({}),h=!!t,f=()=>{const n={};return i.id.trim()?!h&&u.includes(i.id)&&(n.id=a("chat.settings.errors.modelIdExists")):n.id=a("chat.settings.errors.modelIdRequired"),i.name.trim()||(n.name=a("chat.settings.errors.modelNameRequired")),i.maxTokens&&Number.isNaN(Number(i.maxTokens))&&(n.maxTokens=a("chat.settings.errors.maxTokensInvalid")),c(n),Object.keys(n).length===0},v=()=>{f()&&l({id:i.id,name:i.name,maxTokens:i.maxTokens?Number(i.maxTokens):void 0})};return e.jsx(S,{open:!0,onOpenChange:j,children:e.jsxs(T,{children:[e.jsxs(P,{children:[e.jsx(M,{children:a(h?"chat.settings.editModel":"chat.settings.addModel")}),e.jsx(L,{children:a("chat.settings.modelDialogDescription")})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(m,{htmlFor:"model-id",children:[a("chat.settings.modelId")," ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx(p,{id:"model-id",value:i.id,onChange:n=>o({...i,id:n.target.value}),placeholder:a("chat.settings.placeholders.modelId"),disabled:h}),d.id&&e.jsx("p",{className:"text-xs text-destructive",children:d.id})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(m,{htmlFor:"model-name",children:[a("chat.settings.modelName")," ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx(p,{id:"model-name",value:i.name,onChange:n=>o({...i,name:n.target.value}),placeholder:a("chat.settings.placeholders.modelName")}),d.name&&e.jsx("p",{className:"text-xs text-destructive",children:d.name})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"model-maxtokens",children:a("chat.settings.maxTokens")}),e.jsx(p,{id:"model-maxtokens",type:"number",value:i.maxTokens,onChange:n=>o({...i,maxTokens:n.target.value}),placeholder:a("chat.settings.placeholders.maxTokens")}),d.maxTokens&&e.jsx("p",{className:"text-xs text-destructive",children:d.maxTokens}),e.jsx("p",{className:"text-xs text-muted-foreground",children:a("chat.settings.maxTokensHelp")})]})]}),e.jsxs(R,{children:[e.jsx(r,{variant:"outline",onClick:j,children:a("actions.cancel")}),e.jsx(r,{onClick:v,children:a("actions.save")})]})]})})}export{ve as ChatSettingsPage};
@@ -0,0 +1,14 @@
1
+ import{h as z,r as m,u as P,j as e,aS as v,a as k,aU as _,bU as M,bA as H,bV as $,B as f,bW as V,bX as J,bY as W,bZ as U,b_ as q,b$ as R,c0 as X,c1 as G,c2 as Y,bm as Z,bf as K,bn as Q,b0 as ee,br as te,C as N,l as y,c3 as A,f as I,c4 as E,c5 as se,i as ne,k as ae,aV as oe,aT as S,bh as ce,c6 as re,c7 as le}from"./index-DoWWshr8.js";import{T as ie,a as de}from"./table-of-contents-B4pUXfVp.js";import{I as xe}from"./info-RxIWhHbS.js";const me=[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]],ge=z("external-link",me);const he=[["path",{d:"M12 4v16",key:"1654pz"}],["path",{d:"M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2",key:"e0r10z"}],["path",{d:"M9 20h6",key:"s66wpe"}]],pe=z("type",he);function ue(t){return e.jsx("input",{type:"checkbox",...t,className:"appearance-none h-4 w-4 shrink-0 rounded-sm border border-input bg-background disabled:cursor-default checked:bg-primary checked:border-primary relative mr-2 top-[3px] align-middle after:content-[''] after:hidden checked:after:block after:absolute after:left-[5px] after:top-[1px] after:w-[4px] after:h-[8px] after:border-r-[2px] after:border-b-[2px] after:border-primary-foreground after:rotate-45"})}function fe(t,o){return`vscode://file${o.startsWith("/")?o:`${t}/${o}`}`}function je({file:t,projectRoot:o,onBack:i}){const[s,x]=m.useState(!1),r=t.name.toLowerCase().endsWith(".md"),c=t.name.toLowerCase().endsWith(".json"),{t:n,i18n:l}=P("common"),h=m.useMemo(()=>t.content,[t.content]),g=async()=>{try{await navigator.clipboard.writeText(t.content),x(!0),setTimeout(()=>x(!1),1500)}catch(a){console.error("Failed to copy context content",a)}},p=()=>{o&&window.open(fe(o,t.path),"_blank")};return e.jsxs(v,{contentClassName:"space-y-6",children:[e.jsxs("header",{className:"flex flex-col gap-3 sticky top-14 bg-background py-2 z-10",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[i&&e.jsxs(k,{variant:"ghost",size:"sm",onClick:i,className:"h-8 px-2",children:[e.jsx(_,{className:"h-4 w-4 mr-1"}),n("contextPage.detail.back")]}),e.jsx(M,{className:"h-5 w-5 text-primary"}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx("h2",{className:"text-lg sm:text-xl font-semibold leading-tight break-words",children:t.name}),e.jsx("span",{className:"text-xs text-muted-foreground break-all",children:t.path})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[o&&e.jsxs(k,{variant:"ghost",size:"sm",onClick:p,className:"h-8 px-3 text-xs",children:[e.jsx(ge,{className:"h-3.5 w-3.5 mr-1"}),n("contextPage.detail.openInEditor")]}),e.jsxs(k,{variant:"ghost",size:"sm",onClick:g,className:"h-8 px-3 text-xs",children:[s?e.jsx(H,{className:"h-3.5 w-3.5 mr-1 text-green-600"}):e.jsx($,{className:"h-3.5 w-3.5 mr-1"}),n(s?"contextPage.detail.copySuccess":"contextPage.detail.copy")]})]})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2 text-xs text-muted-foreground",children:[e.jsxs(f,{variant:"outline",className:"text-xs flex items-center gap-1",children:[e.jsx(pe,{className:"h-3 w-3"}),t.fileType||n("contextPage.detail.defaultFileType")]}),e.jsxs(f,{variant:"outline",className:"text-xs flex items-center gap-1",children:[e.jsx(V,{className:"h-3 w-3"}),n("contextPage.badges.tokens",{formattedCount:t.tokenCount.toLocaleString()})]}),e.jsxs(f,{variant:"outline",className:"text-xs flex items-center gap-1",children:[e.jsx(M,{className:"h-3 w-3"}),n("contextPage.detail.lines",{count:t.lineCount})]}),e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(J,{className:"h-3.5 w-3.5"}),n("contextPage.detail.modified",{date:W(t.modified??t.modifiedAt,l.language)})]}),e.jsx("span",{className:"text-muted-foreground",children:"•"}),e.jsx("span",{children:n("contextPage.detail.size",{size:(t.size/1024).toFixed(1)})})]})]}),e.jsxs("div",{className:"grid gap-6 xl:grid-cols-[minmax(0,1fr)_320px]",children:[e.jsx("div",{className:"overflow-hidden p-4 sm:p-6",children:c?e.jsx("pre",{className:"p-3 text-sm overflow-x-auto bg-muted/40 rounded-md border whitespace-pre-wrap",children:(()=>{try{return JSON.stringify(JSON.parse(t.content),null,2)}catch(a){return console.error("Failed to parse JSON context file",a),t.content}})()}):r?e.jsx("article",{className:"prose prose-slate dark:prose-invert max-w-none prose-sm sm:prose-base",children:e.jsx(U,{remarkPlugins:[X,G],rehypePlugins:[q,R],components:{input:a=>a.type==="checkbox"?e.jsx(ue,{...a}):e.jsx("input",{...a}),pre:({children:a,...d})=>{const j=(Array.isArray(a)?a:[a])[0];if(j&&typeof j=="object"&&"props"in j&&typeof j.props?.className=="string"&&j.props?.className?.includes("language-mermaid")){const C=j.props?.children,F=typeof C=="string"?C:"";return e.jsx(Y,{chart:F})}return e.jsx("pre",{...d,children:a})}},children:t.content})}):e.jsx("pre",{className:"p-3 text-sm overflow-x-auto bg-muted/40 rounded-md border whitespace-pre-wrap",children:t.content})}),r&&e.jsx("aside",{className:"hidden xl:block sticky top-28 h-[calc(100vh-8rem)] overflow-y-auto",children:e.jsx(ie,{content:h})})]}),r&&e.jsx("div",{className:"xl:hidden",children:e.jsx(de,{content:h})})]})}function L(t){return t<5e3?"text-green-600 dark:text-green-400":t<1e4?"text-blue-600 dark:text-blue-400":t<2e4?"text-yellow-600 dark:text-yellow-400":"text-red-600 dark:text-red-400"}function b(t,o){if(!o||o.length<2)return 0;const i=new RegExp(o.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"gi"),s=t.match(i);return s?s.length:0}function O({icon:t,title:o,description:i,suggestion:s}){return e.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[e.jsx(t,{className:"h-12 w-12 text-muted-foreground/50 mb-4"}),e.jsx("h3",{className:"text-sm font-medium text-muted-foreground",children:o}),e.jsx("p",{className:"text-xs text-muted-foreground/70 mt-1 max-w-xs",children:i}),s&&e.jsx("p",{className:"text-xs text-primary mt-2",children:s})]})}function Ne({file:t,searchQuery:o,onClick:i}){const{t:s}=P("common"),x=o?b(t.content,o):0;if(!(!o||x>0||t.name.toLowerCase().includes(o.toLowerCase())))return null;const c=x===1?s("contextPage.badges.matchesSingular",{count:x}):s("contextPage.badges.matchesPlural",{count:x}),n=s("contextPage.badges.tokens",{formattedCount:t.tokenCount.toLocaleString()});return e.jsx("button",{onClick:i,className:"w-full text-left p-4 rounded-lg border border-border bg-card hover:bg-accent transition-colors",children:e.jsxs("div",{className:"flex items-center justify-between gap-3",children:[e.jsxs("div",{className:"flex items-center gap-2 min-w-0",children:[e.jsx(M,{className:"h-4 w-4 text-primary shrink-0"}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("div",{className:"text-sm font-medium truncate",children:t.name}),e.jsx("div",{className:"text-xs text-muted-foreground truncate",children:t.path})]})]}),e.jsxs("div",{className:"flex items-center gap-2 shrink-0",children:[o&&x>0&&e.jsx(f,{variant:"secondary",className:"text-xs bg-yellow-100 dark:bg-yellow-900",children:c}),e.jsxs(f,{variant:"outline",className:"text-xs",children:[e.jsx(A,{className:"h-3 w-3 mr-1"}),n]})]})]})})}function T({title:t,description:o,icon:i,files:s,emptyMessage:x,emptySuggestion:r,searchQuery:c,onFileSelect:n}){const{t:l}=P("common"),h=s.reduce((u,w)=>u+w.tokenCount,0),g=m.useMemo(()=>!c||c.length<2?s:s.filter(u=>{const w=b(u.content,c),B=u.name.toLowerCase().includes(c.toLowerCase());return w>0||B}),[s,c]),p=m.useMemo(()=>!c||c.length<2?0:g.reduce((u,w)=>u+b(w.content,c),0),[g,c]),a=g.length,d=m.useMemo(()=>p===1?l("contextPage.badges.matchesSingular",{count:p}):l("contextPage.badges.matchesPlural",{count:p}),[l,p]),D=m.useMemo(()=>a===s.length?a===1?l("contextPage.badges.filesSingular",{count:a}):l("contextPage.badges.filesPlural",{count:a}):l("contextPage.badges.filesFiltered",{count:a,total:s.length}),[s.length,a,l]),j=m.useMemo(()=>l("contextPage.badges.tokens",{formattedCount:h.toLocaleString()}),[l,h]),C=c?l("contextPage.search.noMatchesTitle"):x,F=l(c?"contextPage.search.noMatchesDescription":"contextPage.search.noFilesDescription");return e.jsxs(N,{children:[e.jsx(ne,{className:"pb-3",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"p-2 rounded-lg bg-primary/10",children:e.jsx(i,{className:"h-5 w-5 text-primary"})}),e.jsxs("div",{children:[e.jsx(ae,{className:"text-lg",children:t}),e.jsx(oe,{children:o})]})]}),s.length>0&&e.jsxs("div",{className:"flex items-center gap-2",children:[c&&p>0&&e.jsx(f,{variant:"secondary",className:"text-xs bg-yellow-100 dark:bg-yellow-900 text-yellow-800 dark:text-yellow-200",children:d}),e.jsx(f,{variant:"secondary",className:"text-xs",children:D}),e.jsxs(f,{variant:"outline",className:I("text-xs",L(h)),children:[e.jsx(A,{className:"h-3 w-3 mr-1"}),j]})]})]})}),e.jsx(y,{children:g.length===0?e.jsx(O,{icon:S,title:C,description:F,suggestion:c?void 0:r}):e.jsx("div",{className:"space-y-3",children:g.map(u=>e.jsx(Ne,{file:u,searchQuery:c,onClick:()=>n?.(u)},u.path))})})]})}function ye({context:t}){const[o,i]=m.useState(!1),[s,x]=m.useState(""),[r,c]=m.useState(null),{t:n}=P("common"),l=async()=>{const a=[];for(const d of t.agentInstructions)a.push(`# ${d.path}
2
+
3
+ ${d.content}
4
+ `);t.config.file&&a.push(`# ${t.config.file.path}
5
+
6
+ ${t.config.file.content}
7
+ `);for(const d of t.projectDocs)a.push(`# ${d.path}
8
+
9
+ ${d.content}
10
+ `);try{await navigator.clipboard.writeText(a.join(`
11
+ ---
12
+
13
+ `)),i(!0),setTimeout(()=>i(!1),2e3)}catch(d){console.error("Failed to copy all content:",d)}},h=t.agentInstructions.length>0||t.config.file!==null||t.projectDocs.length>0,g=m.useMemo(()=>{if(!s||s.length<2)return 0;let a=0;for(const d of t.agentInstructions)a+=b(d.content,s);t.config.file&&(a+=b(t.config.file.content,s));for(const d of t.projectDocs)a+=b(d.content,s);return a},[t,s]),p=r?{name:r.name,path:r.path,content:r.content,size:new Blob([r.content]).size,tokenCount:r.tokenCount,lineCount:r.content.split(`
14
+ `).length,modified:r.lastModified instanceof Date?r.lastModified.toISOString():r.lastModified}:null;return r&&p?e.jsx("div",{className:"min-h-screen bg-background",children:e.jsx(je,{file:p,projectRoot:t.projectRoot,onBack:()=>c(null)})}):e.jsxs(v,{contentClassName:"space-y-6",children:[e.jsx(Z,{title:n("contextPage.title"),description:n("contextPage.description"),actions:h?e.jsx(k,{variant:"outline",size:"sm",onClick:l,className:"shrink-0",children:o?e.jsxs(e.Fragment,{children:[e.jsx(K,{className:"h-4 w-4 mr-2 text-green-600"}),n("contextPage.copyAllSuccess")]}):e.jsxs(e.Fragment,{children:[e.jsx($,{className:"h-4 w-4 mr-2"}),n("contextPage.copyAll")]})}):void 0}),h&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"relative",children:[e.jsx(Q,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(ee,{type:"text",placeholder:n("contextPage.searchPlaceholder"),value:s,onChange:a=>x(a.target.value),className:"pl-10 pr-10"}),s&&e.jsx(k,{variant:"ghost",size:"sm",className:"absolute right-1 top-1/2 -translate-y-1/2 h-7 w-7 p-0",onClick:()=>x(""),children:e.jsx(te,{className:"h-4 w-4"})})]}),s&&s.length>=2&&e.jsx("div",{className:"flex items-center gap-2 text-sm",children:g>0?e.jsx(f,{variant:"secondary",className:"bg-yellow-100 dark:bg-yellow-900 text-yellow-800 dark:text-yellow-200",children:g===1?n("contextPage.badges.matchesFoundSingular",{count:g}):n("contextPage.badges.matchesFoundPlural",{count:g})}):e.jsx("span",{className:"text-muted-foreground",children:n("contextPage.searchNoMatches",{query:s})})}),e.jsx(N,{className:"bg-muted/30",children:e.jsx(y,{className:"py-4",children:e.jsxs("div",{className:"flex flex-wrap items-center gap-4 sm:gap-8",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(A,{className:I("h-5 w-5",L(t.totalTokens))}),e.jsx("span",{className:"text-sm",children:e.jsx("strong",{className:L(t.totalTokens),children:n("contextPage.summary.totalTokens",{formattedCount:t.totalTokens.toLocaleString()})})})]}),e.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[e.jsx(xe,{className:"h-4 w-4"}),n("contextPage.summary.contextBudget")]})]})})})]}),e.jsxs("div",{className:"space-y-6",children:[e.jsx(T,{title:n("contextPage.sections.agents.title"),description:n("contextPage.sections.agents.description"),icon:E,files:t.agentInstructions,emptyMessage:n("contextPage.sections.agents.empty"),emptySuggestion:n("contextPage.sections.agents.suggestion"),searchQuery:s,onFileSelect:c}),e.jsx(T,{title:n("contextPage.sections.config.title"),description:n("contextPage.sections.config.description"),icon:se,files:t.config.file?[t.config.file]:[],emptyMessage:n("contextPage.sections.config.empty"),emptySuggestion:n("contextPage.sections.config.suggestion"),searchQuery:s,onFileSelect:c}),e.jsx(T,{title:n("contextPage.sections.docs.title"),description:n("contextPage.sections.docs.description"),icon:M,files:t.projectDocs,emptyMessage:n("contextPage.sections.docs.empty"),emptySuggestion:n("contextPage.sections.docs.suggestion"),searchQuery:s,onFileSelect:c})]}),!h&&e.jsx(N,{className:"mt-8",children:e.jsx(y,{className:"py-12",children:e.jsx(O,{icon:E,title:n("contextPage.emptyState.title"),description:n("contextPage.emptyState.description"),suggestion:n("contextPage.emptyState.suggestion")})})})]})}function ke(){const{currentProject:t,loading:o,error:i}=ce(),{t:s}=P(["common","errors"]),[x,r]=m.useState(null),[c,n]=m.useState(!0),[l,h]=m.useState(null),g=i instanceof Error?i.message:i;return m.useEffect(()=>{async function p(){if(!o){if(!t?.id){r(null),n(!1);return}n(!0),h(null);try{const a=await le.getProjectContext();r(a)}catch(a){const d=a instanceof Error?a.message:s("contextPage.errors.list",{ns:"common"});h(d)}finally{n(!1)}}}p()},[t?.id,o,s]),o||c?e.jsx(re,{}):l&&t?e.jsx(v,{children:e.jsx(N,{children:e.jsxs(y,{className:"py-10 text-center space-y-3",children:[e.jsx("div",{className:"flex justify-center",children:e.jsx(S,{className:"h-6 w-6 text-destructive"})}),e.jsx("div",{className:"text-lg font-semibold",children:s("contextPage.errors.loadFailed",{ns:"common"})}),e.jsx("p",{className:"text-sm text-muted-foreground",children:g||l||s("errors.loadingError",{ns:"errors"})})]})})}):t?x?e.jsx(ye,{context:x}):e.jsx(v,{children:e.jsx(N,{children:e.jsxs(y,{className:"py-10 text-center space-y-3",children:[e.jsx("div",{className:"flex justify-center",children:e.jsx(S,{className:"h-6 w-6 text-muted-foreground"})}),e.jsx("div",{className:"text-lg font-semibold",children:s("contextPage.emptyState.title")}),e.jsx("p",{className:"text-sm text-muted-foreground",children:s("contextPage.emptyState.description")})]})})}):e.jsx(v,{children:e.jsx(N,{children:e.jsxs(y,{className:"py-10 text-center space-y-3",children:[e.jsx("div",{className:"flex justify-center",children:e.jsx(S,{className:"h-6 w-6 text-muted-foreground"})}),e.jsx("div",{className:"text-lg font-semibold",children:s("contextPage.errors.noProject",{ns:"common"})}),e.jsx("p",{className:"text-sm text-muted-foreground",children:s("contextPage.errors.noProjectDescription",{ns:"common"})})]})})})}export{ke as ContextPage};
@@ -0,0 +1 @@
1
+ import{h as $,j as e,c8 as p,B,c9 as F,ca as E,u as T,bB as I,aS as w,bU as R,bX as A,cb as S,cc as U,C as m,i as u,k as j,l as x,a as f,L as M,bh as q,bj as V,cd as z,r as P,ce as Q,aT as _}from"./index-DoWWshr8.js";import{S as N}from"./stat-card-ic_H-ddZ.js";import{T as D}from"./trending-up-Bp_uZ6i5.js";const H=[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]],W=$("calendar",H);function C({spec:s,basePath:i="/projects"}){const l=s.title||s.specName,c=`${i}/specs/${s.specName}`;return e.jsx(p,{to:c,className:"block p-3 rounded-lg hover:bg-accent transition-colors",title:s.specName,children:e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[s.specNumber&&e.jsxs("span",{className:"text-sm font-mono text-muted-foreground shrink-0",children:["#",s.specNumber]}),e.jsx("h4",{className:"text-sm font-medium truncate",children:l})]}),l!==s.specName&&e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:s.specName}),s.tags&&s.tags.length>0&&e.jsx("div",{className:"flex flex-wrap gap-1",children:s.tags.slice(0,3).map(r=>e.jsx(B,{variant:"secondary",className:"text-xs",children:r},r))})]}),e.jsxs("div",{className:"flex flex-col items-end gap-1 shrink-0",children:[s.status&&e.jsx(F,{status:s.status,className:"text-[11px]"}),s.priority&&e.jsx(E,{priority:s.priority,className:"text-[11px]"})]})]})})}function X({spec:s,action:i,time:l,basePath:c="/projects"}){const r=s.title||s.specName,a=`${c}/specs/${s.specName}`,{i18n:d}=T("common"),o=I(l,d.language);return e.jsxs("div",{className:"flex items-start gap-3 py-2",children:[e.jsx("div",{className:"w-2 h-2 rounded-full bg-primary mt-2 shrink-0"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("p",{className:"text-sm",children:[e.jsxs(p,{to:a,className:"font-medium hover:underline",title:s.specName,children:[s.specNumber&&`#${s.specNumber} `,r]})," ",e.jsx("span",{className:"text-muted-foreground",children:i})]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-0.5",children:o})]})]})}function G({specs:s,stats:i,projectColor:l,projectName:c,basePath:r="/projects"}){const{t:a}=T("common"),d=s.filter(t=>t.status==="in-progress").sort((t,n)=>(n.specNumber||0)-(t.specNumber||0)).slice(0,5),o=s.filter(t=>t.status==="planned").sort((t,n)=>(n.specNumber||0)-(t.specNumber||0)).slice(0,5),b=s.slice().sort((t,n)=>{if(!t.createdAt)return 1;if(!n.createdAt)return-1;const v=new Date(t.createdAt).getTime();return new Date(n.createdAt).getTime()-v}).slice(0,5),g=s.filter(t=>t.updatedAt).sort((t,n)=>{if(!t.updatedAt)return 1;if(!n.updatedAt)return-1;const v=new Date(t.updatedAt).getTime();return new Date(n.updatedAt).getTime()-v}).slice(0,10),h=(i.specsByStatus??[]).reduce((t,n)=>(t[n.status]=n.count,t),{}),y=h.complete||0,k=i.completionRate??0;return e.jsxs(w,{contentClassName:"space-y-6 sm:space-y-8",children:[e.jsx("div",{children:e.jsxs("div",{className:"flex items-center gap-3",children:[l&&e.jsx("div",{className:"h-8 w-2 rounded-full shrink-0",style:{backgroundColor:l}}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-3xl sm:text-4xl font-bold tracking-tight",children:a("dashboard.title")}),e.jsx("p",{className:"text-muted-foreground mt-2",children:c?a("dashboard.subtitleWithProject",{projectName:c}):a("dashboard.subtitle")})]})]})}),e.jsxs("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-3 sm:gap-4",children:[e.jsx(N,{title:a("dashboard.cards.total"),value:i.totalSpecs,icon:R,iconColor:"text-blue-600",gradientFrom:"from-blue-500/10"}),e.jsx(N,{title:a("dashboard.cards.planned"),value:h.planned||0,icon:A,iconColor:"text-purple-600",gradientFrom:"from-purple-500/10"}),e.jsx(N,{title:a("dashboard.cards.inProgress"),value:h["in-progress"]||0,icon:S,iconColor:"text-orange-600",gradientFrom:"from-orange-500/10"}),e.jsx(N,{title:a("dashboard.cards.completed"),value:y,icon:U,iconColor:"text-green-600",gradientFrom:"from-green-500/10",subtext:e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(D,{className:"h-3 w-3"}),a("dashboard.cards.completionRate",{rate:k.toFixed(1)})]})})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-4 sm:gap-6",children:[e.jsxs(m,{children:[e.jsx(u,{children:e.jsxs(j,{className:"text-lg flex items-center gap-2",children:[e.jsx(W,{className:"h-5 w-5 text-blue-600"}),a("dashboard.recentlyAdded")]})}),e.jsx(x,{className:"space-y-1",children:b.slice(0,5).map(t=>e.jsx(C,{spec:t,basePath:r},t.id))})]}),e.jsxs(m,{children:[e.jsx(u,{children:e.jsxs(j,{className:"text-lg flex items-center gap-2",children:[e.jsx(A,{className:"h-5 w-5 text-purple-600"}),a("dashboard.plannedSection",{count:o.length})]})}),e.jsx(x,{className:"space-y-1",children:o.length>0?o.map(t=>e.jsx(C,{spec:t,basePath:r},t.id)):e.jsx("p",{className:"text-sm text-muted-foreground py-4 text-center",children:a("dashboard.noPlanned")})})]}),e.jsxs(m,{children:[e.jsx(u,{children:e.jsxs(j,{className:"text-lg flex items-center gap-2",children:[e.jsx(S,{className:"h-5 w-5 text-orange-600"}),a("dashboard.inProgressSection",{count:d.length})]})}),e.jsx(x,{className:"space-y-1",children:d.length>0?d.map(t=>e.jsx(C,{spec:t,basePath:r},t.id)):e.jsx("p",{className:"text-sm text-muted-foreground py-4 text-center",children:a("dashboard.noInProgress")})})]})]}),e.jsxs(m,{children:[e.jsx(u,{children:e.jsx(j,{className:"text-lg",children:a("dashboard.recentActivity")})}),e.jsx(x,{children:e.jsx("div",{className:"border-l-2 border-muted pl-4 space-y-1",children:g.map(t=>e.jsx(X,{spec:t,action:a("dashboard.actionUpdated"),time:t.updatedAt??null,basePath:r},t.id))})})]}),e.jsxs(m,{children:[e.jsx(u,{children:e.jsx(j,{className:"text-lg",children:a("dashboard.quickActions")})}),e.jsx(x,{children:e.jsxs("div",{className:"flex flex-wrap gap-3",children:[e.jsx(f,{asChild:!0,children:e.jsxs(p,{to:`${r}/specs`,children:[e.jsx(M,{className:"h-4 w-4 mr-2"}),a("dashboard.viewAllSpecs")]})}),e.jsx(f,{variant:"outline",asChild:!0,children:e.jsxs(p,{to:`${r}/stats`,children:[e.jsx(D,{className:"h-4 w-4 mr-2"}),a("dashboard.viewStats")]})})]})})]})]})}function Y(){const{currentProject:s,loading:i}=q(),l=s?.id??null,c=V(l),r=z(l),{t:a}=T("common"),d=s&&"color"in s?s.color:void 0,o=s?.id?`/projects/${s.id}`:"/projects",b=P.useMemo(()=>Array.isArray(c.data)?c.data:[],[c.data]),g=r.data??null,h=P.useCallback(async()=>{await Promise.all([c.refetch(),r.refetch()])},[c,r]),y=i||c.isLoading||r.isLoading,t=c.error||r.error?a("dashboard.state.errorDescription"):null;return y?e.jsx(Q,{}):s?t?e.jsx(w,{children:e.jsx(m,{children:e.jsxs(x,{className:"py-10 text-center space-y-3",children:[e.jsx("div",{className:"flex justify-center",children:e.jsx(_,{className:"h-6 w-6 text-destructive"})}),e.jsx("div",{className:"text-lg font-semibold",children:a("dashboard.state.errorTitle")}),e.jsx("p",{className:"text-sm text-muted-foreground",children:t||a("dashboard.state.errorDescription")}),e.jsx(f,{variant:"secondary",size:"sm",onClick:h,className:"mt-2",children:a("actions.retry")})]})})}):g?e.jsx(G,{specs:b,stats:g,projectColor:d,projectName:s?.name,basePath:o}):null:e.jsx(w,{children:e.jsx(m,{children:e.jsxs(x,{className:"py-10 text-center space-y-3",children:[e.jsx("div",{className:"text-lg font-semibold",children:a("dashboard.state.noProjectTitle",{defaultValue:"No project selected"})}),e.jsx("p",{className:"text-sm text-muted-foreground",children:a("dashboard.state.noProjectDescription",{defaultValue:"Select or create a project to view the dashboard."})}),e.jsx(p,{to:"/projects",className:"inline-flex",children:e.jsx(f,{variant:"secondary",size:"sm",children:a("projectsPage.title",{defaultValue:"Projects"})})})]})})})}export{Y as DashboardPage};
@@ -0,0 +1,2 @@
1
+ import{r as f,d5 as _e,d6 as me,x as Je,d7 as et,d8 as y,d9 as Le,da as ge,db as tt,dc as nt,dd as st,de as ve,df as rt,dg as ot,dh as at,u as Ne,j as e,cI as Oe,cc as Re,cb as Te,bX as he,cM as Fe,cN as pe,cO as Ae,aT as Be,f as C,di as ye,b5 as it,b6 as ct,a as lt,b7 as dt,b8 as ut,b9 as mt,ba as gt,bb as ht,bc as pt,bd as xt,be as De,br as ft,bf as bt,dj as Ie,dk as we,dl as yt,bg as wt,aP as vt,bl as Nt,bh as jt,c7 as kt,dm as $e,dn as St,aS as Ee,bm as Et}from"./index-DoWWshr8.js";const Ve=({id:t,x:n,y:c,width:l,height:r,style:a,color:g,strokeColor:x,strokeWidth:d,className:i,borderRadius:m,shapeRendering:h,onClick:N,selected:s})=>{const{background:v,backgroundColor:k}=a||{},P=g||v||k;return y.createElement("rect",{className:ge(["react-flow__minimap-node",{selected:s},i]),x:n,y:c,rx:m,ry:m,width:l,height:r,fill:P,stroke:x,strokeWidth:d,shapeRendering:h,onClick:N?M=>N(M,t):void 0})};Ve.displayName="MiniMapNode";var Ct=f.memo(Ve);const Mt=t=>t.nodeOrigin,Pt=t=>t.getNodes().filter(n=>!n.hidden&&n.width&&n.height),Ce=t=>t instanceof Function?t:()=>t;function Dt({nodeStrokeColor:t="transparent",nodeColor:n="#e2e2e2",nodeClassName:c="",nodeBorderRadius:l=5,nodeStrokeWidth:r=2,nodeComponent:a=Ct,onClick:g}){const x=me(Pt,ve),d=me(Mt),i=Ce(n),m=Ce(t),h=Ce(c),N=typeof window>"u"||window.chrome?"crispEdges":"geometricPrecision";return y.createElement(y.Fragment,null,x.map(s=>{const{x:v,y:k}=st(s,d).positionAbsolute;return y.createElement(a,{key:s.id,x:v,y:k,width:s.width,height:s.height,style:s.style,selected:s.selected,className:h(s),color:i(s),borderRadius:l,strokeColor:m(s),strokeWidth:r,shapeRendering:N,onClick:g,id:s.id})}))}var It=f.memo(Dt);const $t=200,zt=150,Ht=t=>{const n=t.getNodes(),c={x:-t.transform[0]/t.transform[2],y:-t.transform[1]/t.transform[2],width:t.width/t.transform[2],height:t.height/t.transform[2]};return{viewBB:c,boundingRect:n.length>0?rt(ot(n,t.nodeOrigin),c):c,rfId:t.rfId}},_t="react-flow__minimap-desc";function We({style:t,className:n,nodeStrokeColor:c="transparent",nodeColor:l="#e2e2e2",nodeClassName:r="",nodeBorderRadius:a=5,nodeStrokeWidth:g=2,nodeComponent:x,maskColor:d="rgb(240, 240, 240, 0.6)",maskStrokeColor:i="none",maskStrokeWidth:m=1,position:h="bottom-right",onClick:N,onNodeClick:s,pannable:v=!1,zoomable:k=!1,ariaLabel:P="React Flow mini map",inversePan:M=!1,zoomStep:E=10,offsetScale:S=5}){const T=_e(),I=f.useRef(null),{boundingRect:O,viewBB:$,rfId:Q}=me(Ht,ve),b=t?.width??$t,L=t?.height??zt,G=O.width/b,xe=O.height/L,B=Math.max(G,xe),ce=B*b,oe=B*L,z=S*B,R=O.x-(ce-O.width)/2-z,q=O.y-(oe-O.height)/2-z,X=ce+z*2,ae=oe+z*2,fe=`${_t}-${Q}`,Y=f.useRef(0);Y.current=B,f.useEffect(()=>{if(I.current){const K=Je(I.current),J=U=>{const{transform:o,d3Selection:p,d3Zoom:w}=T.getState();if(U.sourceEvent.type!=="wheel"||!p||!w)return;const D=-U.sourceEvent.deltaY*(U.sourceEvent.deltaMode===1?.05:U.sourceEvent.deltaMode?1:.002)*E,H=o[2]*Math.pow(2,D);w.scaleTo(p,H)},le=U=>{const{transform:o,d3Selection:p,d3Zoom:w,translateExtent:D,width:H,height:F}=T.getState();if(U.sourceEvent.type!=="mousemove"||!p||!w)return;const A=Y.current*Math.max(1,o[2])*(M?-1:1),V={x:o[0]-U.sourceEvent.movementX*A,y:o[1]-U.sourceEvent.movementY*A},ee=[[0,0],[H,F]],ie=tt.translate(V.x,V.y).scale(o[2]),re=w.constrain()(ie,ee,D);w.transform(p,re)},ke=et().on("zoom",v?le:null).on("zoom.wheel",k?J:null);return K.call(ke),()=>{K.on("zoom",null)}}},[v,k,M,E]);const se=N?K=>{const J=nt(K);N(K,{x:J[0],y:J[1]})}:void 0,je=s?(K,J)=>{const le=T.getState().nodeInternals.get(J);s(K,le)}:void 0;return y.createElement(Le,{position:h,style:t,className:ge(["react-flow__minimap",n]),"data-testid":"rf__minimap"},y.createElement("svg",{width:b,height:L,viewBox:`${R} ${q} ${X} ${ae}`,role:"img","aria-labelledby":fe,ref:I,onClick:se},P&&y.createElement("title",{id:fe},P),y.createElement(It,{onClick:je,nodeColor:l,nodeStrokeColor:c,nodeBorderRadius:a,nodeClassName:r,nodeStrokeWidth:g,nodeComponent:x}),y.createElement("path",{className:"react-flow__minimap-mask",d:`M${R-z},${q-z}h${X+z*2}v${ae+z*2}h${-X-z*2}z
2
+ M${$.x},${$.y}h${$.width}v${$.height}h${-$.width}z`,fill:d,fillRule:"evenodd",stroke:i,strokeWidth:m,pointerEvents:"none"})))}We.displayName="MiniMap";var Lt=f.memo(We);function Ot(){return y.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32"},y.createElement("path",{d:"M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z"}))}function Rt(){return y.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 5"},y.createElement("path",{d:"M0 0h32v4.2H0z"}))}function Tt(){return y.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 30"},y.createElement("path",{d:"M3.692 4.63c0-.53.4-.938.939-.938h5.215V0H4.708C2.13 0 0 2.054 0 4.63v5.216h3.692V4.631zM27.354 0h-5.2v3.692h5.17c.53 0 .984.4.984.939v5.215H32V4.631A4.624 4.624 0 0027.354 0zm.954 24.83c0 .532-.4.94-.939.94h-5.215v3.768h5.215c2.577 0 4.631-2.13 4.631-4.707v-5.139h-3.692v5.139zm-23.677.94c-.531 0-.939-.4-.939-.94v-5.138H0v5.139c0 2.577 2.13 4.707 4.708 4.707h5.138V25.77H4.631z"}))}function Ft(){return y.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32"},y.createElement("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0 8 0 4.571 3.429 4.571 7.619v3.048H3.048A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047zm4.724-13.866H7.467V7.619c0-2.59 2.133-4.724 4.723-4.724 2.591 0 4.724 2.133 4.724 4.724v3.048z"}))}function At(){return y.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32"},y.createElement("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047z"}))}const ue=({children:t,className:n,...c})=>y.createElement("button",{type:"button",className:ge(["react-flow__controls-button",n]),...c},t);ue.displayName="ControlButton";const Bt=t=>({isInteractive:t.nodesDraggable||t.nodesConnectable||t.elementsSelectable,minZoomReached:t.transform[2]<=t.minZoom,maxZoomReached:t.transform[2]>=t.maxZoom}),Ze=({style:t,showZoom:n=!0,showFitView:c=!0,showInteractive:l=!0,fitViewOptions:r,onZoomIn:a,onZoomOut:g,onFitView:x,onInteractiveChange:d,className:i,children:m,position:h="bottom-left"})=>{const N=_e(),[s,v]=f.useState(!1),{isInteractive:k,minZoomReached:P,maxZoomReached:M}=me(Bt,ve),{zoomIn:E,zoomOut:S,fitView:T}=at();if(f.useEffect(()=>{v(!0)},[]),!s)return null;const I=()=>{E(),a?.()},O=()=>{S(),g?.()},$=()=>{T(r),x?.()},Q=()=>{N.setState({nodesDraggable:!k,nodesConnectable:!k,elementsSelectable:!k}),d?.(!k)};return y.createElement(Le,{className:ge(["react-flow__controls",i]),position:h,style:t,"data-testid":"rf__controls"},n&&y.createElement(y.Fragment,null,y.createElement(ue,{onClick:I,className:"react-flow__controls-zoomin",title:"zoom in","aria-label":"zoom in",disabled:M},y.createElement(Ot,null)),y.createElement(ue,{onClick:O,className:"react-flow__controls-zoomout",title:"zoom out","aria-label":"zoom out",disabled:P},y.createElement(Rt,null))),c&&y.createElement(ue,{className:"react-flow__controls-fitview",onClick:$,title:"fit view","aria-label":"fit view"},y.createElement(Tt,null)),l&&y.createElement(ue,{className:"react-flow__controls-interactive",onClick:Q,title:"toggle interactivity","aria-label":"toggle interactivity"},k?y.createElement(At,null):y.createElement(Ft,null)),m)};Ze.displayName="Controls";var Vt=f.memo(Ze),Z;(function(t){t.Lines="lines",t.Dots="dots",t.Cross="cross"})(Z||(Z={}));function Wt({color:t,dimensions:n,lineWidth:c}){return y.createElement("path",{stroke:t,strokeWidth:c,d:`M${n[0]/2} 0 V${n[1]} M0 ${n[1]/2} H${n[0]}`})}function Zt({color:t,radius:n}){return y.createElement("circle",{cx:n,cy:n,r:n,fill:t})}const Ut={[Z.Dots]:"#91919a",[Z.Lines]:"#eee",[Z.Cross]:"#e2e2e2"},Gt={[Z.Dots]:1,[Z.Lines]:1,[Z.Cross]:6},qt=t=>({transform:t.transform,patternId:`pattern-${t.rfId}`});function Ue({id:t,variant:n=Z.Dots,gap:c=20,size:l,lineWidth:r=1,offset:a=2,color:g,style:x,className:d}){const i=f.useRef(null),{transform:m,patternId:h}=me(qt,ve),N=g||Ut[n],s=l||Gt[n],v=n===Z.Dots,k=n===Z.Cross,P=Array.isArray(c)?c:[c,c],M=[P[0]*m[2]||1,P[1]*m[2]||1],E=s*m[2],S=k?[E,E]:M,T=v?[E/a,E/a]:[S[0]/a,S[1]/a];return y.createElement("svg",{className:ge(["react-flow__background",d]),style:{...x,position:"absolute",width:"100%",height:"100%",top:0,left:0},ref:i,"data-testid":"rf__background"},y.createElement("pattern",{id:h+t,x:m[0]%M[0],y:m[1]%M[1],width:M[0],height:M[1],patternUnits:"userSpaceOnUse",patternTransform:`translate(-${T[0]},-${T[1]})`},v?y.createElement(Zt,{color:N,radius:E/a}):y.createElement(Wt,{dimensions:S,color:N,lineWidth:r})),y.createElement("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:`url(#${h+t})`}))}Ue.displayName="Background";var Xt=f.memo(Ue);const Ge={planned:he,"in-progress":Te,complete:Re,archived:Oe},qe={critical:Be,high:Ae,medium:pe,low:Fe};function ze({spec:t,type:n,depth:c,onClick:l}){const{t:r}=Ne(),a={upstream:"border-l-amber-500",downstream:"border-l-emerald-500"},g=c===1?r("dependenciesPage.sidebar.depth.direct"):r("dependenciesPage.sidebar.depth.level",{depth:c}),x=Ge[t.status]||he,d=qe[t.priority]||pe;return e.jsxs("button",{onClick:l,className:C("w-full text-left px-2 py-1.5 rounded border-l-2 bg-muted/30 hover:bg-muted/50 transition-colors",a[n]),children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsxs("span",{className:"text-[10px] font-bold text-muted-foreground",children:["#",t.number]}),e.jsx("div",{className:C("rounded p-0.5 flex items-center justify-center",t.status==="planned"&&"bg-blue-500/20",t.status==="in-progress"&&"bg-orange-500/20",t.status==="complete"&&"bg-green-500/20",t.status==="archived"&&"bg-gray-500/20"),title:r(`status.${t.status}`),children:e.jsx(x,{className:C("h-2.5 w-2.5",t.status==="planned"&&"text-blue-600 dark:text-blue-400",t.status==="in-progress"&&"text-orange-600 dark:text-orange-400",t.status==="complete"&&"text-green-600 dark:text-green-400",t.status==="archived"&&"text-gray-500 dark:text-gray-400")})}),e.jsx("div",{className:C("rounded p-0.5 flex items-center justify-center",t.priority==="critical"&&"bg-red-500/20",t.priority==="high"&&"bg-orange-500/20",t.priority==="medium"&&"bg-blue-500/20",t.priority==="low"&&"bg-gray-500/20"),title:t.priority?r(`priority.${t.priority}`):void 0,children:e.jsx(d,{className:C("h-2.5 w-2.5",t.priority==="critical"&&"text-red-600 dark:text-red-400",t.priority==="high"&&"text-orange-600 dark:text-orange-400",t.priority==="medium"&&"text-blue-600 dark:text-blue-400",t.priority==="low"&&"text-gray-500 dark:text-gray-400")})}),e.jsx("span",{className:"text-[8px] px-1 py-0.5 rounded bg-muted text-muted-foreground font-medium ml-auto",children:g})]}),e.jsx("p",{className:"text-[11px] text-foreground truncate leading-tight mt-0.5",children:t.name})]})}function Yt({focusedDetails:t,onSelectSpec:n,onOpenSpec:c}){const{t:l}=Ne();if(!t)return e.jsx("div",{className:"w-64 shrink-0 rounded-lg border border-border bg-background/95 overflow-hidden flex flex-col",children:e.jsx("div",{className:"flex-1 flex items-center justify-center p-4",children:e.jsxs("div",{className:"text-center text-muted-foreground",children:[e.jsx("div",{className:"w-12 h-12 mx-auto mb-3 rounded-full bg-muted/50 flex items-center justify-center",children:e.jsx("svg",{className:"w-6 h-6",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"M15 15l-2 5L9 9l11 4-5 2zm0 0l5 5M7.188 2.239l.777 2.897M5.136 7.965l-2.898-.777M13.95 4.05l-2.122 2.122m-5.657 5.656l-2.12 2.122"})})}),e.jsx("p",{className:"text-sm font-medium",children:l("dependenciesPage.sidebar.emptyTitle")}),e.jsx("p",{className:"text-xs mt-1",children:l("dependenciesPage.sidebar.emptyDescription")})]})})});const{node:r,upstream:a,downstream:g}=t,x=Ge[r.status]||he,d=qe[r.priority]||pe;return e.jsxs("div",{className:"w-64 shrink-0 rounded-lg border border-border bg-background/95 overflow-hidden flex flex-col",children:[e.jsxs("div",{className:"p-3 border-b border-border bg-muted/30",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsxs("span",{className:"font-bold text-sm",children:["#",r.number]}),e.jsx("div",{className:C("rounded p-1 flex items-center justify-center",r.status==="planned"&&"bg-blue-500/20",r.status==="in-progress"&&"bg-orange-500/20",r.status==="complete"&&"bg-green-500/20",r.status==="archived"&&"bg-gray-500/20"),title:r.status,children:e.jsx(x,{className:C("h-3 w-3",r.status==="planned"&&"text-blue-600 dark:text-blue-300",r.status==="in-progress"&&"text-orange-600 dark:text-orange-300",r.status==="complete"&&"text-green-600 dark:text-green-300",r.status==="archived"&&"text-gray-500 dark:text-gray-300")})}),e.jsx("div",{className:C("rounded p-1 flex items-center justify-center",r.priority==="critical"&&"bg-red-500/20",r.priority==="high"&&"bg-orange-500/20",r.priority==="medium"&&"bg-blue-500/20",r.priority==="low"&&"bg-gray-500/20"),title:r.priority,children:e.jsx(d,{className:C("h-3 w-3",r.priority==="critical"&&"text-red-600 dark:text-red-300",r.priority==="high"&&"text-orange-600 dark:text-orange-300",r.priority==="medium"&&"text-blue-600 dark:text-blue-300",r.priority==="low"&&"text-gray-500 dark:text-gray-300")})})]}),e.jsx("p",{className:"text-sm font-medium text-foreground leading-snug",children:r.name}),e.jsx("button",{onClick:()=>c(r.number),className:"mt-2 w-full rounded bg-primary/20 border border-primary/40 px-2 py-1.5 text-xs text-primary hover:bg-primary/30 font-medium",children:l("dependenciesPage.sidebar.openSpec")})]}),e.jsxs("div",{className:"flex-1 overflow-auto p-3 space-y-4",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[e.jsx("span",{className:"inline-block w-2 h-2 rounded-full bg-amber-500"}),e.jsx("span",{className:"text-xs font-semibold text-muted-foreground uppercase tracking-wide",children:l("dependenciesPage.sidebar.dependsOnHeading",{count:a.reduce((i,m)=>i+m.specs.length,0)})})]}),a.length>0?e.jsx("div",{className:"space-y-1.5",children:a.flatMap(i=>i.specs.map(m=>e.jsx(ze,{spec:m,type:"upstream",depth:i.depth,onClick:()=>n(m.id)},m.id)))}):e.jsx("p",{className:"text-xs text-muted-foreground/60 italic",children:l("dependenciesPage.sidebar.emptyUpstream")})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[e.jsx("span",{className:"inline-block w-2 h-2 rounded-full bg-emerald-500"}),e.jsx("span",{className:"text-xs font-semibold text-muted-foreground uppercase tracking-wide",children:l("dependenciesPage.sidebar.requiredByHeading",{count:g.reduce((i,m)=>i+m.specs.length,0)})})]}),g.length>0?e.jsx("div",{className:"space-y-1.5",children:g.flatMap(i=>i.specs.map(m=>e.jsx(ze,{spec:m,type:"downstream",depth:i.depth,onClick:()=>n(m.id)},m.id)))}):e.jsx("p",{className:"text-xs text-muted-foreground/60 italic",children:l("dependenciesPage.sidebar.emptyDownstream")})]})]})]})}const Me=180,Xe=60,Pe=120,Ye=40,be="#f59e0b",Kt={planned:"border-blue-500 bg-blue-100 text-blue-800 dark:bg-blue-950/60 dark:text-blue-200","in-progress":"border-orange-500 bg-orange-100 text-orange-800 dark:bg-orange-950/60 dark:text-orange-200",complete:"border-green-500 bg-green-100 text-green-800 dark:bg-green-950/60 dark:text-green-200",archived:"border-gray-400 bg-gray-100 text-gray-600 dark:border-gray-500/80 dark:bg-gray-900/60 dark:text-gray-400"},Qt={planned:"#3b82f6","in-progress":"#f97316",complete:"#22c55e",archived:"#6b7280"};function Jt(t,n,c=2){const l=new Map;l.set(t,0);const r=new Map,a=new Map;n.forEach(d=>{r.has(d.source)||r.set(d.source,new Set),r.get(d.source).add(d.target),a.has(d.target)||a.set(d.target,new Set),a.get(d.target).add(d.source)});let g=new Set([t]),x=1;for(;g.size>0&&x<=c;){const d=new Set;g.forEach(i=>{const m=r.get(i);m&&m.forEach(h=>{l.has(h)||(l.set(h,x),d.add(h))})}),g=d,x++}for(g=new Set([t]),x=1;g.size>0&&x<=c;){const d=new Set;g.forEach(i=>{const m=a.get(i);m&&m.forEach(h=>{l.has(h)||(l.set(h,x),d.add(h))})}),g=d,x++}return l}function He(t,n,c,l,r={}){if(t.length===0)return{nodes:[],edges:[]};if((r.mode??"graph")==="focus"&&r.focusedNodeId)return en(t,n,c);const g=c?Pe:Me,x=c?Ye:Xe,d=c?30:50,i=new Set;n.forEach(s=>{i.add(s.source),i.add(s.target)});const m=t.filter(s=>i.has(s.id)),h=l?t.filter(s=>!i.has(s.id)):[],N=[];if(m.length>0){const s=new ye.graphlib.Graph;s.setGraph({rankdir:"LR",align:"UL",nodesep:c?30:50,ranksep:c?80:120,marginx:40,marginy:40}),s.setDefaultEdgeLabel(()=>({})),m.forEach(E=>{s.setNode(E.id,{width:g,height:x})}),n.forEach(E=>{i.has(E.source)&&i.has(E.target)&&s.setEdge(E.source,E.target)}),ye.layout(s);let v=1/0,k=1/0,P=0,M=0;if(m.forEach(E=>{const S=s.node(E.id);v=Math.min(v,S.x-g/2),k=Math.min(k,S.y-x/2),P=Math.max(P,S.x+g/2),M=Math.max(M,S.y+x/2)}),m.forEach(E=>{const S=s.node(E.id);N.push({...E,position:{x:S.x-v,y:S.y-k}})}),h.length>0){const E=M-k,S=P-v,T=E+d*2,I=Math.ceil(Math.sqrt(h.length*1.5)),O=I*(g+d),$=S>O?Math.floor((S-O)/2):0;h.forEach((Q,b)=>{const L=b%I,G=Math.floor(b/I);N.push({...Q,position:{x:$+L*(g+d),y:T+G*(x+d)}})})}}else{const s=Math.ceil(Math.sqrt(h.length*1.5));h.forEach((v,k)=>{const P=k%s,M=Math.floor(k/s);N.push({...v,position:{x:P*(g+d),y:M*(x+d)}})})}return{nodes:N,edges:n}}function en(t,n,c){const l=c?Pe:Me,r=c?Ye:Xe,a=new ye.graphlib.Graph;a.setGraph({rankdir:"LR",align:"UL",nodesep:c?30:50,ranksep:c?80:120,marginx:40,marginy:40}),a.setDefaultEdgeLabel(()=>({})),t.forEach(i=>{a.setNode(i.id,{width:l,height:r})}),n.forEach(i=>{a.setEdge(i.source,i.target)}),ye.layout(a);let g=1/0,x=1/0;return t.forEach(i=>{const m=a.node(i.id);g=Math.min(g,m.x-l/2),x=Math.min(x,m.y-r/2)}),{nodes:t.map(i=>{const m=a.node(i.id);return{...i,position:{x:m.x-g,y:m.y-x}}}),edges:n}}function tn({statusFilter:t,statusCounts:n,showStandalone:c,isCompact:l,viewMode:r,focusedNodeId:a,connectionStats:g,onToggleStatus:x,onToggleStandalone:d,onToggleCompact:i,onToggleViewMode:m,onClear:h,t:N}){const s=t.length>0||a;return e.jsxs("div",{className:"flex flex-wrap items-center gap-1.5 text-xs",children:[["draft","planned","in-progress","complete","archived"].map(v=>{const k=t.length===0||t.includes(v),P=N(`status.${v}`),M=n[v]||0;return e.jsxs("button",{onClick:()=>x(v),className:C("rounded border px-2 py-1 font-medium transition-colors",k&&v==="draft"&&"border-slate-500/60 bg-slate-500/20 text-slate-700 dark:text-slate-200",k&&v==="planned"&&"border-blue-500/60 bg-blue-500/20 text-blue-700 dark:text-blue-300",k&&v==="in-progress"&&"border-orange-500/60 bg-orange-500/20 text-orange-700 dark:text-orange-300",k&&v==="complete"&&"border-green-500/60 bg-green-500/20 text-green-700 dark:text-green-300",k&&v==="archived"&&"border-gray-500/60 bg-gray-500/20 text-gray-600 dark:text-gray-300",!k&&"border-border bg-background text-muted-foreground/40"),children:[P,e.jsx("span",{className:"ml-1 opacity-60",children:N("dependenciesPage.filters.count",{count:M})})]},v)}),e.jsx("span",{className:"h-3 w-px bg-border"}),e.jsx("button",{onClick:d,className:C("rounded border px-2 py-1 font-medium transition-colors",c?"border-violet-500/60 bg-violet-500/20 text-violet-700 dark:text-violet-300":"border-border bg-background hover:bg-accent text-muted-foreground"),children:N("dependenciesPage.filters.showStandalone",{count:g.standalone})}),e.jsx("span",{className:"h-3 w-px bg-border"}),e.jsx("button",{onClick:i,className:C("rounded border px-2 py-1 font-medium transition-colors",l?"border-primary/60 bg-primary/20 text-primary":"border-border bg-background hover:bg-accent text-muted-foreground"),children:N("dependenciesPage.filters.compact")}),a&&e.jsx("button",{onClick:m,className:C("rounded border px-2 py-1 font-medium transition-colors",r==="focus"?"border-primary/60 bg-primary/20 text-primary":"border-border bg-background hover:bg-accent text-muted-foreground"),children:N("dependenciesPage.filters.focusMode")}),s&&e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"h-3 w-px bg-border"}),e.jsx("button",{onClick:h,className:"rounded border border-red-500/40 bg-red-500/10 px-2 py-1 font-medium text-red-400 hover:bg-red-500/20",children:N("dependenciesPage.filters.clear")})]})]})}function nn({data:t,focusedNodeId:n,onSelectSpec:c,onClearSelection:l,t:r}){const[a,g]=f.useState(!1),[x,d]=f.useState(""),i=f.useMemo(()=>n?t.nodes.find(h=>h.id===n):null,[n,t]),m=f.useMemo(()=>{const h=[...t.nodes].sort((s,v)=>v.number-s.number);if(!x.trim())return h.slice(0,15);const N=x.toLowerCase();return h.filter(s=>s.name.toLowerCase().includes(N)||s.number.toString().includes(N)||s.tags.some(v=>v.toLowerCase().includes(N))).slice(0,15)},[t,x]);return e.jsxs(it,{open:a,onOpenChange:g,children:[e.jsx(ct,{asChild:!0,children:e.jsxs(lt,{variant:"outline",role:"combobox","aria-expanded":a,className:C("w-[240px] h-9 justify-between px-3 text-xs",n&&"border-primary/60 bg-primary/10 text-foreground"),children:[i?e.jsxs("span",{className:"truncate flex items-center",children:[e.jsxs("span",{className:"text-muted-foreground mr-2 font-mono",children:["#",i.number]}),e.jsx("span",{className:"truncate",children:i.name})]}):e.jsx("span",{className:"text-muted-foreground font-normal",children:r("dependenciesPage.selector.placeholder")}),e.jsx(dt,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),e.jsx(ut,{className:"w-[300px] p-0",align:"end",children:e.jsxs(mt,{shouldFilter:!1,children:[e.jsx(gt,{placeholder:r("dependenciesPage.selector.filterPlaceholder"),value:x,onValueChange:d,className:"text-xs"}),e.jsxs(ht,{children:[e.jsx(pt,{className:"py-2 text-center text-xs text-muted-foreground",children:r("dependenciesPage.selector.empty")}),e.jsxs(xt,{children:[n&&e.jsxs(De,{onSelect:()=>{l(),g(!1),d("")},className:"text-muted-foreground",children:[e.jsx(ft,{className:"mr-2 h-3.5 w-3.5"}),r("dependenciesPage.selector.clearSelection")]}),m.map(h=>e.jsxs(De,{value:h.id,onSelect:()=>{c(h.id),g(!1),d("")},children:[e.jsxs("span",{className:"text-muted-foreground font-mono mr-2",children:["#",h.number]}),e.jsx("span",{className:"truncate flex-1",children:h.name}),e.jsx("span",{className:C("text-[9px] px-1 py-0.5 rounded uppercase font-medium ml-2 shrink-0",h.status==="draft"&&"bg-slate-500/20 text-slate-600 dark:text-slate-300",h.status==="planned"&&"bg-blue-500/20 text-blue-600 dark:text-blue-400",h.status==="in-progress"&&"bg-orange-500/20 text-orange-600 dark:text-orange-400",h.status==="complete"&&"bg-green-500/20 text-green-600 dark:text-green-400",h.status==="archived"&&"bg-gray-500/20 text-gray-500 dark:text-gray-400"),children:h.status==="in-progress"?"WIP":h.status.slice(0,3)}),e.jsx("div",{className:C("mr-2 flex h-4 w-4 items-center justify-center",n===h.id?"opacity-100":"opacity-0"),children:e.jsx(bt,{className:"h-4 w-4"})})]},h.id))]})]})]})})]})}const sn={planned:he,"in-progress":Te,complete:Re,archived:Oe},rn={critical:Be,high:Ae,medium:pe,low:Fe},Ke=f.memo(function({data:n}){const{t:c}=Ne(),l=n.isCompact,r=n.isSecondary,a=n.connectionDepth===0?1:n.connectionDepth===1?.95:n.connectionDepth===2?.7:n.isDimmed?.15:1,g=r?.65:1,x=sn[n.tone]||he,d=rn[n.priority]||pe;return e.jsxs("div",{className:C("flex flex-col rounded-lg shadow-lg transition-all duration-200",Kt[n.tone],n.interactive&&"cursor-pointer hover:scale-105 hover:shadow-xl hover:border-gray-400 dark:hover:border-white/50",n.isFocused&&"ring-2 ring-gray-800 dark:ring-white ring-offset-2 ring-offset-background scale-110 z-50",n.connectionDepth===1&&"ring-1 ring-gray-400 dark:ring-white/40",l?"px-2 py-1 gap-0.5":"px-2.5 py-1.5 gap-0.5",r?"border border-dashed":"border-2"),style:{width:l?Pe:Me,opacity:a*g,transform:n.isDimmed?"scale(0.9)":void 0},children:[e.jsx(Ie,{type:"target",position:we.Left,className:"opacity-0"}),e.jsxs("div",{className:"flex items-center justify-between gap-1",children:[e.jsxs("span",{className:C("font-bold",l?"text-[9px]":"text-[10px]"),children:["#",n.number.toString().padStart(3,"0")]}),e.jsxs("div",{className:"flex items-center gap-0.5",children:[e.jsx("div",{className:C("rounded flex items-center justify-center",l?"p-0.5":"p-1",n.tone==="planned"&&"bg-blue-500/30",n.tone==="in-progress"&&"bg-orange-500/30",n.tone==="complete"&&"bg-green-500/30",n.tone==="archived"&&"bg-gray-500/30"),title:c(`status.${n.tone}`),children:e.jsx(x,{className:C(l?"h-2 w-2":"h-2.5 w-2.5")})}),e.jsx("div",{className:C("rounded flex items-center justify-center",l?"p-0.5":"p-1",n.priority==="critical"&&"bg-red-500/30",n.priority==="high"&&"bg-orange-500/30",n.priority==="medium"&&"bg-blue-500/30",n.priority==="low"&&"bg-gray-500/30"),title:n.priority?c(`priority.${n.priority}`):void 0,children:e.jsx(d,{className:C(l?"h-2 w-2":"h-2.5 w-2.5")})}),n.connectionDepth!==void 0&&n.connectionDepth>0&&e.jsx("span",{className:C("font-medium rounded bg-muted/50 text-muted-foreground",l?"text-[7px] px-0.5 py-0.5":"text-[8px] px-1 py-0.5"),title:c("dependenciesPage.graph.levelTitle",{depth:n.connectionDepth}),children:c("dependenciesPage.graph.levelBadge",{depth:n.connectionDepth})})]})]}),e.jsx("span",{className:C("font-medium leading-tight truncate",l?"text-[8px]":"text-[10px]"),title:n.label,children:l?n.shortLabel:n.label}),e.jsx(Ie,{type:"source",position:we.Right,className:"opacity-0"})]})});Ke.displayName="SpecNode";const on={specNode:Ke};function an({nodes:t,edges:n,showStandalone:c,onNodeClick:l,onPaneClick:r,onInstance:a,t:g}){const x=f.useCallback(d=>{a(d),requestAnimationFrame(()=>{d.fitView({padding:.15,duration:300})})},[a]);return t.length===0?e.jsx("div",{className:"flex h-full items-center justify-center text-muted-foreground",children:e.jsxs("div",{className:"text-center",children:[e.jsx("p",{className:"text-sm font-medium",children:g("dependenciesPage.empty.title")}),e.jsx("p",{className:"text-xs mt-1",children:g(c?"dependenciesPage.empty.filters":"dependenciesPage.empty.standaloneHint")})]})}):e.jsxs(yt,{nodes:t,edges:n,nodeTypes:on,onInit:x,className:"h-full w-full",fitView:!0,proOptions:{hideAttribution:!0},nodesDraggable:!0,nodesConnectable:!1,elementsSelectable:!0,panOnScroll:!0,panOnDrag:!0,zoomOnScroll:!0,zoomOnPinch:!0,minZoom:.05,maxZoom:2,onNodeClick:l,onPaneClick:r,children:[e.jsx(Xt,{gap:20,size:1,color:"rgba(100, 116, 139, 0.06)"}),e.jsx(Vt,{showInteractive:!1,className:"!bg-background/90 !border-border !rounded-md"}),e.jsx(Lt,{nodeColor:d=>{const i=d.data;return Qt[i.tone]||"#6b7280"},maskColor:"rgba(128, 128, 128, 0.6)",className:"!bg-white/95 dark:!bg-background/95 !border-border !rounded-md",style:{width:120,height:80},pannable:!0,zoomable:!0})]})}function ln(){const{specName:t,projectId:n}=wt(),c=vt(),[l,r]=Nt(),{t:a}=Ne(),{currentProject:g,loading:x}=jt(),d=!n||g?.id===n,i=l.get("spec"),m=n??g?.id,h=m?`/projects/${m}`:"/projects",N=f.useCallback(o=>`${h}/specs/${o}`,[h]),[s,v]=f.useState(null),[k,P]=f.useState(!0),[M,E]=f.useState(null),[S,T]=f.useState(null),[I,O]=f.useState(!1),[$,Q]=f.useState([]),[b,L]=f.useState(null),[G,xe]=f.useState("graph"),[B,ce]=f.useState(!1),oe=f.useRef(!1),z=f.useRef(null);f.useEffect(()=>{!d||x||(P(!0),kt.getDependencies(t).then(o=>{v(o),ce(o.nodes.length>30)}).catch(o=>E(o instanceof Error?o.message:a("errors:loadingError"))).finally(()=>P(!1)))},[x,d,t,a]),f.useEffect(()=>{if(s&&!oe.current){if(i){const o=s.nodes.find(p=>p.number.toString()===i);o&&(z.current=o.id,L(o.id))}oe.current=!0}},[i,s]),f.useEffect(()=>{if(!s||!oe.current)return;if(z.current!==null){if(b===z.current){z.current=null;return}z.current=null}const o=b?s.nodes.find(w=>w.id===b):null,p=o?o.number.toString():null;if(p!==i){const w=new URLSearchParams(l);p?w.set("spec",p):w.delete("spec"),r(w,{replace:!0})}},[b,s,i,l,r]);const R=f.useMemo(()=>(s?.edges||[]).filter(o=>o.type==="dependsOn"),[s?.edges]),q=f.useMemo(()=>{const o=new Map,p=new Map;return R.forEach(w=>{o.has(w.source)||o.set(w.source,new Set),o.get(w.source).add(w.target),p.has(w.target)||p.set(w.target,new Set),p.get(w.target).add(w.source)}),{upstream:o,downstream:p}},[R]),X=f.useMemo(()=>b?Jt(b,R,1/0):null,[b,R]);f.useEffect(()=>{!b&&G==="focus"&&xe("graph")},[b,G]);const ae=f.useCallback((o,p)=>{const w=new Set,D=[o];for(;D.length>0;){const H=D.shift(),F=p.get(H);F&&F.forEach(A=>{w.has(A)||(w.add(A),D.push(A))})}return w},[]),fe=f.useMemo(()=>{if(!b||!s)return null;const o=s.nodes.find(D=>D.id===b);if(!o)return null;const p=new Map(s.nodes.map(D=>[D.id,D])),w=(D,H)=>{const F=new Set([D]),A=[];let V=new Set([D]),ee=1;for(;V.size>0;){const ie=new Set,re=[];V.forEach(Se=>{const u=H.get(Se);u&&u.forEach(j=>{if(!F.has(j)){F.add(j),ie.add(j);const W=p.get(j);W&&re.push(W)}})}),re.length>0&&A.push({depth:ee,specs:re}),V=ie,ee++}return A};return{node:o,upstream:w(b,q.upstream),downstream:w(b,q.downstream)}},[b,s,q]),Y=f.useMemo(()=>{if(!s)return{nodes:[],edges:[]};const o=G==="focus"&&!!b,p=(u,j)=>({id:u.id,type:"specNode",data:{label:u.name,shortLabel:u.name.length>14?u.name.slice(0,12)+"…":u.name,badge:u.status==="in-progress"?"WIP":u.status.slice(0,3).toUpperCase(),number:u.number,tone:u.status,priority:u.priority,href:N(u.number),interactive:!0,isFocused:j.isFocused,connectionDepth:j.connectionDepth,isDimmed:j.isDimmed,isCompact:B,isSecondary:j.isSecondary},position:{x:0,y:0},draggable:!0,selectable:!0,sourcePosition:we.Right,targetPosition:we.Left});if(o&&b){const u=ae(b,q.upstream),j=ae(b,q.downstream),W=new Set([b,...u,...j]),ne=s.nodes.filter(_=>W.has(_.id)).map(_=>{const de=b===_.id;return p(_,{isFocused:de,connectionDepth:de?0:X?.get(_.id),isDimmed:!1,isSecondary:!1})}),Qe=R.filter(_=>W.has(_.source)&&W.has(_.target)).map(_=>{const de=_.source===b||_.target===b;return{id:`${_.source}-${_.target}-dependsOn`,source:_.source,target:_.target,type:"smoothstep",animated:de,markerEnd:{type:$e.ArrowClosed,color:be,width:18,height:18},style:{stroke:be,strokeWidth:de?2.75:2,opacity:1}}});return He(ne,Qe,B,!1,{mode:"focus",focusedNodeId:b})}const w=s.nodes.filter(u=>$.length===0||$.includes(u.status)),D=new Set(w.map(u=>u.id)),H=new Set(D),F=[...D];for(;F.length>0;){const u=F.shift();R.forEach(j=>{j.source===u&&!H.has(j.target)&&(H.add(j.target),F.push(j.target)),j.target===u&&!H.has(j.source)&&(H.add(j.source),F.push(j.source))})}const A=R.filter(u=>H.has(u.source)&&H.has(u.target));let V=s.nodes.filter(u=>H.has(u.id));if(!I){const u=new Set;A.forEach(j=>{u.add(j.source),u.add(j.target)}),V=V.filter(j=>u.has(j.id))}const ee=new Set(V.map(u=>u.id)),ie=new Set([...ee].filter(u=>!D.has(u))),re=V.map(u=>{const j=b===u.id,W=ie.has(u.id);let te,ne=!1;return b&&(te=X?.get(u.id),ne=te===void 0),p(u,{isFocused:j,connectionDepth:te,isDimmed:ne,isSecondary:W})}),Se=A.filter(u=>ee.has(u.source)&&ee.has(u.target)).map(u=>{let j=!0,W=.7;if(b){const te=X?.get(u.source),ne=X?.get(u.target);j=te!==void 0&&ne!==void 0&&(te===0||ne===0),W=j?1:te!==void 0&&ne!==void 0?.4:.1}return{id:`${u.source}-${u.target}-dependsOn`,source:u.source,target:u.target,type:"smoothstep",animated:j&&b!==null,markerEnd:{type:$e.ArrowClosed,color:be,width:18,height:18},style:{stroke:be,strokeWidth:j?2.5:1.5,opacity:W}}});return He(re,Se,B,I,{mode:"graph"})},[s,R,$,b,X,B,I,q,G,N,ae]),se=f.useMemo(()=>{if(!s)return{connected:0,standalone:0};const o=new Set;return R.forEach(p=>{o.add(p.source),o.add(p.target)}),{connected:o.size,standalone:s.nodes.length-o.size}},[R,s]),je=f.useMemo(()=>{if(!s)return{};const o={};return s.nodes.forEach(p=>{o[p.status]=(o[p.status]||0)+1}),o},[s]);f.useEffect(()=>{if(!S)return;const o=setTimeout(()=>{S.fitView({padding:.15,duration:300})},50);return()=>clearTimeout(o)},[S,Y,$,I]),f.useEffect(()=>{if(!S||!b||!i)return;const o=Y.nodes.find(p=>p.id===b);if(o){const p=setTimeout(()=>{S.setCenter(o.position.x+80,o.position.y+30,{duration:400,zoom:1})},400);return()=>clearTimeout(p)}},[S,b,i,Y.nodes]);const K=f.useCallback((o,p)=>{if(p?.data){if(o.detail===2&&p.data.href){c(p.data.href);return}L(w=>w===p.id?null:p.id)}},[c]),J=f.useCallback(()=>{L(null)},[]),le=o=>{Q(p=>p.includes(o)?p.filter(w=>w!==o):[...p,o]),L(null)},ke=()=>{Q([]),L(null)},U=o=>{if(L(o),S){const p=Y.nodes.find(w=>w.id===o);p&&S.setCenter(p.position.x+80,p.position.y+30,{duration:400,zoom:1})}};return k?e.jsx(St,{}):M||!s?e.jsx(Ee,{children:e.jsx("div",{className:"flex items-center justify-center h-[calc(100vh-10rem)]",children:e.jsxs("div",{className:"text-center",children:[e.jsx("p",{className:"text-lg font-semibold text-destructive mb-2",children:a("dependenciesPage.state.errorTitle")}),e.jsx("p",{className:"text-sm text-muted-foreground",children:M||a("dependenciesPage.state.errorDescription")})]})})}):s.nodes.length===0?e.jsx(Ee,{children:e.jsxs("div",{className:"rounded-lg border border-border bg-muted/30 p-8 text-center",children:[e.jsx("h2",{className:"text-xl font-semibold mb-2",children:a("dependenciesPage.empty.noDependencies")}),e.jsx("p",{className:"text-muted-foreground",children:a("dependenciesPage.empty.noDependenciesDescription")})]})}):e.jsx(Ee,{className:"h-[calc(100vh-7rem)]",contentClassName:"flex h-full flex-col gap-4",children:e.jsxs("div",{className:"flex h-full flex-col gap-4",children:[e.jsx(Et,{title:a("dependenciesPage.title"),description:a("dependenciesPage.description"),actions:e.jsx(nn,{data:s,focusedNodeId:b,onSelectSpec:U,onClearSelection:()=>L(null),t:a})}),e.jsx("div",{className:"text-sm text-muted-foreground",children:se.connected>0?e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"text-emerald-600 dark:text-emerald-400",children:a("dependenciesPage.header.summary.connected",{count:se.connected})}),se.standalone>0&&e.jsxs(e.Fragment,{children:[" • ",e.jsx("span",{className:"text-muted-foreground",children:a("dependenciesPage.header.summary.standalone",{count:se.standalone})})]})]}):e.jsx("span",{children:a("dependenciesPage.header.summary.none")})}),e.jsx(tn,{statusFilter:$,statusCounts:je,showStandalone:I,isCompact:B,viewMode:G,focusedNodeId:b,connectionStats:se,onToggleStatus:le,onToggleStandalone:()=>O(!I),onToggleCompact:()=>ce(!B),onToggleViewMode:()=>xe(o=>o==="graph"?"focus":"graph"),onClear:ke,t:a}),e.jsxs("div",{className:"flex flex-1 gap-3 min-h-0",children:[e.jsx("div",{className:"flex-1 overflow-hidden rounded-lg border border-border bg-gray-50 dark:bg-[#080c14]",children:e.jsx(an,{nodes:Y.nodes,edges:Y.edges,showStandalone:I,onNodeClick:K,onPaneClick:J,onInstance:T,t:a})}),e.jsx(Yt,{focusedDetails:fe,onSelectSpec:L,onOpenSpec:o=>c(N(o))})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-4 text-[10px] text-muted-foreground",children:[e.jsxs("span",{className:"inline-flex items-center gap-1.5",children:[e.jsx("span",{className:"inline-block h-0.5 w-6 bg-amber-400 rounded"}),a("dependenciesPage.legend.dependsOn")]}),e.jsx("span",{className:"text-muted-foreground/50 ml-auto",children:a("dependenciesPage.legend.instructions")})]})]})})}export{ln as DependenciesPage};
@@ -0,0 +1 @@
1
+ @font-face{font-family:FontAwesome;font-weight:400;font-style:normal;src:url(/assets/fontawesome-B-jkhYfk.woff2) format("woff2")}@font-face{font-family:Mfizz;font-weight:400;font-style:normal;src:url(/assets/mfixx-DfQCz-aF.woff2) format("woff2")}@font-face{font-family:Devicons;font-weight:400;font-style:normal;src:url(/assets/devopicons-JYBX4xNv.woff2) format("woff2")}@font-face{font-family:file-icons;font-weight:400;font-style:normal;src:url(/assets/file-icons-Byv9wKV-.woff2) format("woff2")}@font-face{font-family:Octicons Regular;font-weight:400;font-style:normal;src:url(/assets/octicons-CS-gsnb3.woff2) format("woff2")}.light-red:before{color:#c97071}.medium-red:before{color:#ac4142}.dark-red:before{color:#742c2d}.light-green:before{color:#b2c38b}.medium-green:before{color:#90a959}.dark-green:before{color:#66783e}.light-yellow:before{color:#fae0bc}.medium-yellow:before{color:#f4bf75}.dark-yellow:before{color:#ee9e2e}.light-blue:before{color:#9dc0ce}.medium-blue:before{color:#6a9fb5}.dark-blue:before{color:#46788d}.light-maroon:before{color:#be7953}.medium-maroon:before{color:#8f5536}.dark-maroon:before{color:#573421}.light-purple:before{color:#c7a4c0}.medium-purple:before{color:#aa759f}.dark-purple:before{color:#825078}.light-orange:before{color:#e1ad83}.medium-orange:before{color:#d28445}.dark-orange:before{color:#a35f27}.light-cyan:before{color:#a7d0c9}.medium-cyan:before{color:#75b5aa}.dark-cyan:before{color:#4d9085}.light-pink:before{color:#ff4ddb}.medium-pink:before{color:#f0c}.dark-pink:before{color:#b3008f}.light-grey:before{color:#a5a5a5}.medium-grey:before{color:#7f7f7f}.dark-grey:before{color:#595959}.icon:before{font-weight:400;font-style:normal;text-align:center;width:16px;line-height:1;position:relative;display:inline-block;-webkit-font-smoothing:antialiased}.thicken{-webkit-font-smoothing:subpixel-antialiased}.sharpen{text-shadow:0 0 0}.octicons{font-family:Octicons Regular;font-size:16px;top:1px}.binary-icon:before{font-family:Octicons Regular;font-size:16px;top:1px;content:""}.book-icon:before{font-family:Octicons Regular;font-size:16px;top:1px;content:""}.checklist-icon:before{font-family:Octicons Regular;top:1px;content:"";font-size:17px;left:1px}.code-icon:before{font-family:Octicons Regular;font-size:16px;top:1px;content:""}.database-icon:before{font-family:Octicons Regular;font-size:16px;top:1px;content:""}.gear-icon:before{font-family:Octicons Regular;font-size:16px;top:1px;content:""}.git-commit-icon:before{font-family:Octicons Regular;font-size:16px;top:1px;content:""}.git-merge-icon:before{font-family:Octicons Regular;font-size:16px;top:1px;content:""}.github-icon:before{font-family:Octicons Regular;font-size:16px;top:1px;content:""}.graph-icon:before{font-family:Octicons Regular;font-size:16px;top:1px;content:""}.image-icon:before{font-family:Octicons Regular;font-size:16px;top:1px;content:""}.key-icon:before{font-family:Octicons Regular;font-size:16px;top:1px;content:""}.link-icon:before{font-family:Octicons Regular;font-size:16px;top:1px;content:""}.markdown-icon:before{font-family:Octicons Regular;font-size:16px;top:1px;content:""}.package-icon:before{font-family:Octicons Regular;font-size:16px;top:1px;content:""}.ruby-icon:before{font-family:Octicons Regular;font-size:16px;top:1px;content:""}.secret-icon:before{font-family:Octicons Regular;font-size:16px;top:1px;content:""}.squirrel-icon:before{font-family:Octicons Regular;top:1px;content:"";font-size:15px}.text-icon:before{font-family:Octicons Regular;font-size:16px;top:1px;content:""}.zip-icon:before{font-family:Octicons Regular;font-size:16px;top:1px;content:""}.fa{font-family:FontAwesome;font-size:13px}.anchor-icon:before{font-family:FontAwesome;content:"";font-size:16px;top:1px}.android-icon:before{font-family:FontAwesome;content:"";font-size:16px;top:1px}.at-icon:before{font-family:FontAwesome;content:"";font-size:15px;top:1px}.audio-icon:before{font-family:FontAwesome;content:"";font-size:15px;top:1px}.backup-icon:before{font-family:FontAwesome;content:"";font-size:13px;top:1px}.book-alt-icon:before{font-family:FontAwesome;content:"";font-size:16px;top:2px}.bullhorn-icon:before{font-family:FontAwesome;content:"";font-size:16px;top:2px}.calc-icon:before{font-family:FontAwesome;content:"";font-size:14px}.coffee-icon:before{font-family:FontAwesome;content:"";font-size:14px;top:1px}.css3-icon:before{font-family:FontAwesome;font-size:13px;content:"";top:0}.circle-icon:before{font-family:FontAwesome;content:"";font-size:16px;top:1px}.download-icon:before{font-family:FontAwesome;content:"";font-size:16px;top:2px}.earth-icon:before{font-family:FontAwesome;content:"";font-size:15px}.filter-icon:before{font-family:FontAwesome;content:"";font-size:16px}.gears-icon:before{font-family:FontAwesome;content:"";font-size:15px}.html5-icon:before{font-family:FontAwesome;content:"";font-size:15px;top:1px}.lock-icon:before{font-family:FontAwesome;content:"";font-size:17px;top:2px}.mobile-icon:before{font-family:FontAwesome;content:"";font-size:20px;top:2px}.moon-icon:before{font-family:FontAwesome;content:"";font-size:16px;top:1px}.music-icon:before{font-family:FontAwesome;content:"";font-size:15px}.print-icon:before{font-family:FontAwesome;content:"";font-size:15px;top:2px}.question-icon:before{font-family:FontAwesome;content:"";font-size:16px;top:1px}.recycle-icon:before{font-family:FontAwesome;content:"";font-size:15px;top:2px}.rss-icon:before{font-family:FontAwesome;content:"";font-size:16px;top:2px}.scales-icon:before{font-family:FontAwesome;content:"";font-size:15px;top:1px}.tree-view .scales-icon:before{left:-1px}.smarty-icon:before{font-family:FontAwesome;content:"";font-size:15px}.sourcemap-icon:before{font-family:FontAwesome;content:"";font-size:14px}.sun-icon:before{font-family:FontAwesome;content:"";font-size:14px;-webkit-font-smoothing:subpixel-antialiased}.toc-icon:before{font-family:FontAwesome;content:"";font-size:15px;top:2px}.wechat-icon:before{font-family:FontAwesome;content:"";font-size:16px;top:2px}.mf{font-family:Mfizz;font-size:14px}.apache-icon:before{font-family:Mfizz;content:"";top:3px;font-size:15px}.archlinux-icon:before{font-family:Mfizz;content:"A";top:1px;font-size:15px}.c-icon:before{font-family:Mfizz;content:"";top:1px;font-size:13px}.cpp-icon:before{font-family:Mfizz;font-size:14px;content:"";top:1px}.csharp-icon:before{font-family:Mfizz;font-size:14px;content:"";top:1px}.debian-icon:before{font-family:Mfizz;font-size:14px;content:"";top:1px}.elixir-icon:before{font-family:Mfizz;font-size:14px;content:"";top:1px}.gnome-icon:before{font-family:Mfizz;font-size:14px;content:"";top:1px}.haskell-icon:before{font-family:Mfizz;content:"";top:2px;font-size:16px}.java-icon:before{font-family:Mfizz;content:"";top:2px;font-size:16px}.js-icon:before{font-family:Mfizz;content:"";top:1px;font-size:14px}.msql-icon:before{font-family:Mfizz;content:"";top:2px;font-size:15px;text-shadow:0 0 0}.objc-icon:before{font-family:Mfizz;content:"";top:2px;font-size:16px}.osx-icon:before{font-family:Mfizz;font-size:14px;content:"";top:1px}.pgsql-icon:before{font-family:Mfizz;content:"";top:2px;font-size:16px}.python-icon:before{font-family:Mfizz;font-size:14px;content:"";top:1px}.red-hat-icon:before{font-family:Mfizz;font-size:14px;content:"";top:2px}.scala-icon:before{font-family:Mfizz;font-size:14px;content:"";top:1px}.sql-icon:before{font-family:Mfizz;font-size:14px;content:"";top:1px}.svg-icon:before{font-family:Mfizz;font-size:14px;content:"";top:1px}.x11-icon:before{font-family:Mfizz;content:"";top:1px;font-size:13px}.devicons{font-family:Devicons;font-size:16px;top:3px}.angular-icon:before{font-family:Devicons;font-size:16px;top:3px;content:""}.appcelerator-icon:before{font-family:Devicons;font-size:16px;top:3px;content:""}.appstore-icon:before{font-family:Devicons;font-size:16px;top:3px;content:""}.asp-icon:before{font-family:Devicons;font-size:16px;top:3px;content:""}.atom-icon:before{font-family:Devicons;font-size:16px;top:3px;content:"";-webkit-font-smoothing:subpixel-antialiased}.backbone-icon:before{font-family:Devicons;font-size:16px;top:3px;content:""}.bitbucket-icon:before{font-family:Devicons;font-size:16px;top:3px;content:""}.bootstrap-icon:before{font-family:Devicons;content:"";font-size:15px;top:2px}.bower-icon:before{font-family:Devicons;font-size:16px;top:3px;content:"";text-shadow:0 0 0}.chrome-icon:before{font-family:Devicons;font-size:16px;top:3px;content:""}.clojure-icon:before{font-family:Devicons;font-size:16px;top:3px;content:"";-webkit-font-smoothing:subpixel-antialiased}.compass-icon:before{font-family:Devicons;content:"";font-size:14px;top:2px}.dart-icon:before{font-family:Devicons;content:"";font-size:15px;top:2px}.dlang-icon:before{font-family:Devicons;font-size:16px;top:3px;content:""}.dojo-icon:before{font-family:Devicons;content:"";font-size:16px;top:4px;transform:scale(1.2);-webkit-font-smoothing:subpixel-antialiased}.dropbox-icon:before{font-family:Devicons;font-size:16px;top:3px;content:""}.eclipse-icon:before{font-family:Devicons;font-size:16px;top:3px;content:""}.erlang-icon:before{font-family:Devicons;font-size:16px;top:3px;content:""}.extjs-icon:before{font-family:Devicons;font-size:16px;top:3px;content:""}.firefox-icon:before{font-family:Devicons;font-size:16px;top:3px;content:""}.fsharp-icon:before{font-family:Devicons;font-size:16px;content:"";left:1px;top:2px}.git-icon:before{font-family:Devicons;content:"";font-size:15px;top:2px}.heroku-icon:before{font-family:Devicons;font-size:16px;top:3px;content:""}.jekyll-icon:before{font-family:Devicons;top:3px;content:"";font-size:16px;text-shadow:0 0 0}.jquery-icon:before{font-family:Devicons;content:"";font-size:15px;top:2px}.jqueryui-icon:before{font-family:Devicons;content:"";font-size:15px;top:2px}.laravel-icon:before{font-family:Devicons;font-size:16px;top:3px;content:"";-webkit-font-smoothing:subpixel-antialiased}.materialize-icon:before{font-family:Devicons;font-size:16px;top:3px;content:"";transform:scale(1.2);-webkit-font-smoothing:subpixel-antialiased}.modernizr-icon:before{font-family:Devicons;font-size:16px;top:3px;content:""}.mootools-icon:before{font-family:Devicons;font-size:16px;top:3px;content:"";text-shadow:0 0 0}.node-icon:before{font-family:Devicons;font-size:16px;top:3px;content:""}.perl-icon:before{font-family:Devicons;content:"";font-size:15px;top:2px}.prolog-icon:before{font-family:Devicons;font-size:16px;top:3px;content:""}.rails-icon:before{font-family:Devicons;font-size:16px;top:3px;content:""}.raphael-icon:before{font-family:Devicons;top:3px;content:"";font-size:15px}.requirejs-icon:before{font-family:Devicons;font-size:16px;top:3px;content:""}.rust-icon:before{font-family:Devicons;font-size:16px;top:3px;content:""}.safari-icon:before{font-family:Devicons;font-size:16px;top:3px;content:""}.sass-icon:before{font-family:Devicons;font-size:16px;top:3px;content:""}.sencha-icon:before{font-family:Devicons;font-size:16px;top:3px;content:""}.snapsvg-icon:before{font-family:Devicons;font-size:16px;top:3px;content:""}.swift-icon:before{font-family:Devicons;font-size:16px;top:3px;content:"";left:-1px}.travis-icon:before{font-family:Devicons;content:"";font-size:15px;top:2px}.typo3-icon:before{font-family:Devicons;font-size:16px;top:3px;content:""}.uikit-icon:before{font-family:Devicons;content:"";font-size:15px;top:2px}.unity3d-icon:before{font-family:Devicons;font-size:16px;top:3px;content:""}.vim-icon:before{font-family:Devicons;font-size:16px;top:3px;content:""}.vs-icon:before{font-family:Devicons;content:"";font-size:14px;top:2px}.windows-icon:before{font-family:Devicons;content:"";font-size:14px;top:2px}.yeoman-icon:before{font-family:Devicons;font-size:16px;top:3px;content:""}.fi{font-family:file-icons;font-size:15px}.test-file{top:3px;font-size:17px}._1c-icon:before{font-family:file-icons;content:"ꗪ";top:3px;font-size:16px}._1c-alt-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}._4d-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.a-plus-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.abap-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.abif-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.access-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.acre-icon:before{font-family:file-icons;content:"⍺";top:3px;font-size:16px}.ada-icon:before{font-family:file-icons;content:"";top:3px;font-size:17px}.ae-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.affectscript-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.affinity-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.agda-icon:before{font-family:file-icons;content:"𓅚";top:2px;font-size:16px;text-shadow:0 0 0}.ahk-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.ai-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.alacritty-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.alacritty-alt-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.alex-icon:before{font-family:file-icons;content:"⧋";top:4px;font-size:16px;-webkit-font-smoothing:subpixel-antialiased}.alloy-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.alpine-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.ampl-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px;left:1px}.amusewiki-icon:before{font-family:file-icons;content:"";top:3px;font-size:17px}.amx-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.analytica-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.angelscript-icon:before{font-family:file-icons;content:"";top:4px;font-size:18px;left:-2px;transform:scale(1.3);text-shadow:0 0 0}.animate-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.animestudio-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.ansible-icon:before{font-family:file-icons;font-size:15px;content:"Ⓐ";top:2px}.ant-icon:before{font-family:file-icons;content:"";top:4px;font-size:18px;transform:scale(1.1)}.antlr-icon:before{font-family:file-icons;font-size:15px;content:"";top:3px}.antwar-icon:before{font-family:file-icons;content:"░";top:3px;font-size:16px}.anyscript-icon:before{font-family:file-icons;content:"";top:4px;font-size:17px}.api-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.apiextractor-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.apl-icon:before{font-family:file-icons;font-size:15px;content:"⍋";top:2px}.apple-icon:before{font-family:file-icons;font-size:15px;content:"";top:1px}.appveyor-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.arc-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.arduino-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.arttext-icon:before{font-family:file-icons;font-size:15px;content:"ⓐ";top:2px}.as-icon:before{font-family:file-icons;content:"";top:1px;font-size:14px}.asciidoc-icon:before{font-family:file-icons;content:"";top:1px;font-size:14px}.asciidoctor-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px;text-shadow:0 0 0}.asm-icon:before{font-family:file-icons;content:"";top:2px;font-size:17px;left:-1px;transform:scale(1.1)}.asm-agc-icon:before{font-family:file-icons;content:"";top:2px;font-size:17px;left:-1px;transform:scale(1.1)}.asm-arm-icon:before{font-family:file-icons;content:"";top:2px;font-size:17px;left:-1px;transform:scale(1.1)}.asm-avr-icon:before{font-family:file-icons;content:"";top:2px;font-size:17px;left:-1px;transform:scale(1.1)}.asm-hitachi-icon:before{font-family:file-icons;content:"";top:2px;font-size:17px;left:-1px;transform:scale(1.1)}.asm-intel-icon:before{font-family:file-icons;content:"";top:2px;font-size:17px;left:-1px;transform:scale(1.1)}.asm-m68k-icon:before{font-family:file-icons;content:"";top:2px;font-size:17px;left:-1px;transform:scale(1.1)}.asm-vax-icon:before{font-family:file-icons;content:"";top:2px;font-size:17px;left:-1px;transform:scale(1.1)}.asm-zilog-icon:before{font-family:file-icons;content:"";top:2px;font-size:17px;left:-1px;transform:scale(1.1)}.asymptote-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px;-webkit-font-smoothing:subpixel-antialiased}.atoum-icon:before{font-family:file-icons;content:"♉";top:2px;font-size:16px}.ats-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.audacity-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.augeas-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.aurelia-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.autoit-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.azurepipelines-icon:before{font-family:file-icons;font-size:15px;content:"🚀";top:2px}.avro-icon:before{font-family:file-icons;content:"";top:4px;font-size:16px;left:1px;transform:scale(1.2)}.babel-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px;left:1px}.ballerina-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.bazaar-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px;text-shadow:0 0 0}.bazel-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px;text-shadow:0 0 0}.behat-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.bem-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.bibtex-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px;-webkit-font-smoothing:subpixel-antialiased}.biml-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.bintray-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.bison-icon:before{font-family:file-icons;content:"🐂";top:3px;font-size:16px}.bithound-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.blender-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.bluespec-icon:before{font-family:file-icons;content:"";top:1px;font-size:13px;left:1px}.bnf-icon:before{font-family:file-icons;content:"⩴";top:4px;font-size:16px}.boo-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.boot-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.bosque-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.brain-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.brakeman-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.brew-icon:before{font-family:file-icons;content:"🍺";top:3px;font-size:17px}.bro-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.broccoli-icon:before{font-family:file-icons;content:"";top:1px;font-size:14px}.brotli-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.browserslist-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.browsersync-icon:before{font-family:file-icons;font-size:15px;content:"b";top:2px}.brunch-icon:before{font-family:file-icons;content:"";top:3px;font-size:17px;left:-1px}.buck-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.bundler-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.byond-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.cabal-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.caddy-icon:before{font-family:file-icons;font-size:15px;content:"🔒";top:2px}.caffe-icon:before{font-family:file-icons;content:"";top:3px;font-size:17px}.caffe2-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.cake-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.cakefile-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.cakephp-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.carthage-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.cc-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.cdf-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.ceylon-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.cf-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.chai-icon:before{font-family:file-icons;content:"c";top:3px;font-size:16px}.chapel-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.chartjs-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.cheetah3d-icon:before{font-family:file-icons;content:"🐆";top:2px;font-size:16px;text-shadow:0 0 0}.chef-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.chocolatey-icon:before{font-family:file-icons;content:"🍫";top:3px;font-size:17px}.chuck-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.circleci-icon:before{font-family:file-icons;content:"";top:2px;font-size:14px}.cirru-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px;text-shadow:0 0 0}.cl-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px;text-shadow:0 0 0}.clarion-icon:before{font-family:file-icons;content:"";top:1px;font-size:14px;left:1px}.clean-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.click-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.clips-icon:before{font-family:file-icons;content:"";top:3px;font-size:18px}.cljs-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.closure-tpl-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.cloudfoundry-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.cmake-icon:before{font-family:file-icons;content:"";top:1px;font-size:14px}.cobol-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.cocoapods-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.codacy-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.codecov-icon:before{font-family:file-icons;font-size:15px;content:"☂";top:2px}.codekit-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.codemeta-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.codeship-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.commitlint-icon:before{font-family:file-icons;font-size:15px;content:"🆑";top:2px}.composer-icon:before{font-family:file-icons;content:"";top:3px;font-size:17px}.conan-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.conda-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.config-icon:before{font-family:file-icons;content:"";top:2px;font-size:14px}.config-coffee-icon:before{font-family:file-icons;content:"";top:3px;font-size:17px}.config-go-icon:before{font-family:file-icons;content:"";top:3px;font-size:18px}.config-hs-icon:before{font-family:file-icons;content:"";top:3px;font-size:17px}.config-js-icon:before{font-family:file-icons;content:"";top:3px;font-size:17px}.config-perl-icon:before{font-family:file-icons;content:"";top:3px;font-size:17px}.config-python-icon:before{font-family:file-icons;content:"";top:3px;font-size:17px}.config-react-icon:before{font-family:file-icons;content:"";top:3px;font-size:17px}.config-ruby-icon:before{font-family:file-icons;content:"";top:3px;font-size:17px}.config-rust-icon:before{font-family:file-icons;content:"";top:3px;font-size:17px}.config-ts-icon:before{font-family:file-icons;content:"";top:3px;font-size:17px}.conll-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.coq-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px;left:1px}.cordova-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.corel-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.coreldraw-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.coveralls-icon:before{font-family:file-icons;font-size:15px;content:"✪";top:2px}.cp-icon:before{font-family:file-icons;content:"";top:3px;font-size:17px}.cpan-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.cpcdosc-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.crafttweaker-icon:before{font-family:file-icons;content:"";top:2px;font-size:17px}.creole-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.crowdin-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px;text-shadow:0 0 0}.crystal-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px;left:1px}.csound-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.csscript-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.cubit-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.cuneiform-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.cucumber-icon:before{font-family:file-icons;font-size:15px;content:"";top:3px}.curl-icon:before{font-family:file-icons;content:"/";top:3px;font-size:16px}.curry-icon:before{font-family:file-icons;content:"";top:3px;font-size:17px}.cvs-icon:before{font-family:file-icons;content:"🐟";top:1px;font-size:16px}.cwl-icon:before{font-family:file-icons;content:"⧙";top:2px;font-size:16px}.cython-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.d3-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.dafny-icon:before{font-family:file-icons;content:"";top:3px;font-size:17px}.darcs-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.dashboard-icon:before{font-family:file-icons;content:"";top:2px;font-size:13px}.dataweave-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.dbase-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.dna-icon:before{font-family:file-icons;content:"☤";top:2px;font-size:16px}.default-icon:before{font-family:file-icons;content:"🗌";top:2px;font-size:14px}.delphi-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.deno-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.dependabot-icon:before{font-family:file-icons;content:"";top:3px;font-size:17px}.devcontainer-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.devicetree-icon:before{font-family:file-icons;content:"";top:2px;font-size:17px;text-shadow:0 0 0}.dhall-icon:before{font-family:file-icons;content:"🖋";top:3px;font-size:17px}.dia-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.digdag-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.diff-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.docbook-icon:before{font-family:file-icons;content:"𓅧";top:2px;font-size:16px}.docker-icon:before{font-family:file-icons;content:"";top:3px;font-size:18px}.doclets-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.docpad-icon:before{font-family:file-icons;content:"↹";top:4px;font-size:17px}.doge-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.dosbox-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.dotjs-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.doxygen-icon:before{font-family:file-icons;content:"";top:1px;font-size:13px}.dragula-icon:before{font-family:file-icons;content:"👌";top:3px;font-size:17px}.drawio-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.drone-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.dvc-icon:before{font-family:file-icons;content:"";top:4px;font-size:17px;transform:scale(1.1)}.dyalog-icon:before{font-family:file-icons;content:"";top:1px;font-size:14px;left:1px}.dylib-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.e-icon:before{font-family:file-icons;content:"E";top:1px;font-size:14px}.eagle-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.easybuild-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.ec-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.ecere-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.eclipse-lang-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.editorconfig-icon:before{font-family:file-icons;font-size:15px;content:"";top:3px}.edge-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.eiffel-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.ejs-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.electron-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px;text-shadow:0 0 0}.elm-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.em-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.emacs-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.ember-icon:before{font-family:file-icons;content:"";top:2px;font-size:14px}.ensime-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.eq-icon:before{font-family:file-icons;font-size:15px;content:"";top:5px}.esdoc-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.eslint-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.excel-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.expo-icon:before{font-family:file-icons;content:"";top:2px;font-size:17px}.fabric-icon:before{font-family:file-icons;content:"📜";top:3px;font-size:16px}.fabfile-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.factor-icon:before{font-family:file-icons;content:"";top:3px;font-size:18px;left:-2px;transform:scale(1.2)}.falcon-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.fancy-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.fantom-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px;left:1px}.faust-icon:before{font-family:file-icons;font-size:15px;content:"⋀";top:2px}.fbx-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.fexl-icon:before{font-family:file-icons;content:"";top:4px;font-size:17px}.ff-icon:before{font-family:file-icons;font-size:15px;content:"ff";top:3px}.finaldraft-icon:before{font-family:file-icons;content:"𝒻";top:2px;font-size:16px}.finder-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.firebase-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.firebase-bolt-icon:before{font-family:file-icons;font-size:15px;content:"⚡";top:3px}.flask-icon:before{font-family:file-icons;font-size:15px;content:"🜄";top:2px}.floobits-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.flow-icon:before{font-family:file-icons;font-size:15px;content:"";top:1px}.flutter-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px;left:-1px}.flux-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.font-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px;text-shadow:0 0 0}.font-bitmap-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.fork-icon:before{font-family:file-icons;font-size:15px;content:"⑂";top:2px}.fortran-icon:before{font-family:file-icons;content:"";top:1px;font-size:14px;left:1px}.fossa-icon:before{font-family:file-icons;content:"";top:3px;font-size:17px}.fossil-icon:before{font-family:file-icons;content:"";top:2px;font-size:17px;text-shadow:0 0 0}.fountain-icon:before{font-family:file-icons;content:"🄵";top:2px;font-size:16px}.franca-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.freemarker-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px;left:1px}.frege-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px;left:1px}.fthtml-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.fuelux-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px;left:2px;transform:scale(1.15);text-shadow:0 0 0}.fusebox-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.futhark-icon:before{font-family:file-icons;content:"";top:3px;font-size:18px;left:-1px}.gams-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px;left:1px}.galaxy-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.galen-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.gap-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px;left:1px}.gatsby-icon:before{font-family:file-icons;font-size:15px;content:"Ⓖ";top:2px}.gauss-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.gdb-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px;transform:scale(1.15);text-shadow:0 0 0}.genshi-icon:before{font-family:file-icons;font-size:15px;content:"";top:3px}.genstat-icon:before{font-family:file-icons;font-size:15px;content:"∿";top:2px}.gentoo-icon:before{font-family:file-icons;content:"";top:1px;font-size:14px;left:1px}.gf-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.gimp-icon:before{font-family:file-icons;content:"";top:2px;font-size:17px;transform:scale(1.15)}.gitlab-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.glade-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.glide-icon:before{font-family:file-icons;content:"";top:3px;font-size:17px;transform:scale(1.15)}.gltf-icon:before{font-family:file-icons;content:"";top:3px;font-size:17px}.glyphs-icon:before{font-family:file-icons;font-size:15px;content:"G";top:3px}.gml-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.gn-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.gnu-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px;text-shadow:0 0 0}.gnuplot-icon:before{font-family:file-icons;content:"📈";top:3px;font-size:16px;text-shadow:0 0 0}.go-icon:before{font-family:file-icons;content:"";top:4px;font-size:18px;left:-1px}.godot-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.golo-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.goreleaser-icon:before{font-family:file-icons;content:"";top:4px;font-size:18px;left:1px}.gosu-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.gradle-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px;left:1px}.graphite-icon:before{font-family:file-icons;content:"";top:2px;font-size:17px}.graphql-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.graphviz-icon:before{font-family:file-icons;content:"";top:4px;font-size:17px;left:1px}.greenkeeper-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.gvdesign-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.gridsome-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.groovy-icon:before{font-family:file-icons;content:"";top:4px;font-size:17px;left:-1px}.grunt-icon:before{font-family:file-icons;content:"";top:1px;font-size:14px}.gulp-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.hack-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.haml-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.hoplon-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.harbour-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px;text-shadow:0 0 0}.hashicorp-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.haxe-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.haxedevelop-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px;-webkit-font-smoothing:subpixel-antialiased}.helix-icon:before{font-family:file-icons;content:"⚕";top:2px;font-size:16px}.hg-icon:before{font-family:file-icons;font-size:15px;content:"☿";top:2px}.hjson-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px;-webkit-font-smoothing:subpixel-antialiased}.houndci-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.hp-icon:before{font-family:file-icons;font-size:15px;content:"㏋";top:2px}.hy-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.hygen-icon:before{font-family:file-icons;content:"📃";top:2px;font-size:16px}.hyper-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.kx-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.husky-icon:before{font-family:file-icons;content:"🐶";top:2px;font-size:17px;text-shadow:0 0 0}.icomoon-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.idl-icon:before{font-family:file-icons;content:"";top:3px;font-size:18px}.idris-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px;-webkit-font-smoothing:subpixel-antialiased}.igorpro-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px;-webkit-font-smoothing:subpixel-antialiased}.indesign-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.infopath-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.inform7-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px;text-shadow:0 0 0}.inkscape-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.inno-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.imba-icon:before{font-family:file-icons;content:"⛿";top:2px;font-size:16px}.ink-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.io-icon:before{font-family:file-icons;content:"";top:1px;font-size:13px;-webkit-font-smoothing:subpixel-antialiased}.ioke-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.ionic-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.isabelle-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.istanbul-icon:before{font-family:file-icons;content:"🕌";top:2px;font-size:17px}.j-icon:before{font-family:file-icons;content:"";top:1px;font-size:13px}.jade-icon:before{font-family:file-icons;content:"";top:1px;font-size:14px}.jake-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.janet-icon:before{font-family:file-icons;content:"";top:2px;font-size:17px}.jasmine-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.jenkins-icon:before{font-family:file-icons;content:"";top:3px;font-size:18px;text-shadow:0 0 0}.jest-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.jolie-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.jinja-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.jison-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.jscpd-icon:before{font-family:file-icons;content:"";top:3px;font-size:17px;text-shadow:0 0 0}.json-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.json5-icon:before{font-family:file-icons;font-size:15px;content:"⑸";top:2px}.jsonld-icon:before{font-family:file-icons;content:"";top:3px;font-size:17px}.jsonnet-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.jsx-icon:before{font-family:file-icons;content:"";top:1px;font-size:14px}.julia-icon:before{font-family:file-icons;content:"⛬";top:1px;font-size:14px}.junos-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.jupyter-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.kaitai-icon:before{font-family:file-icons;content:"カ";top:3px;font-size:16px}.karma-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.keybase-icon:before{font-family:file-icons;content:"";top:2px;font-size:17px}.keynote-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.khronos-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.kicad-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.kitchenci-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.kivy-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.knockout-icon:before{font-family:file-icons;font-size:15px;content:"K";top:2px}.kos-icon:before{font-family:file-icons;content:"k";top:4px;font-size:17px}.kotlin-icon:before{font-family:file-icons;content:"";top:1px;font-size:14px}.krl-icon:before{font-family:file-icons;content:"";top:1px;font-size:14px}.kubernetes-icon:before{font-family:file-icons;content:"⎈";top:2px;font-size:16px}.kusto-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.labview-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.lasso-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px;left:1px}.latino-icon:before{font-family:file-icons;content:"🐦";top:4px;font-size:17px;transform:scale(1.25)}.leaflet-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.lean-icon:before{font-family:file-icons;content:"L";top:1px;font-size:13px}.lefthook-icon:before{font-family:file-icons;content:"";top:3px;font-size:17px}.lein-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px;text-shadow:0 0 0;transform:scale(1.15)}.lektor-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.lerna-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px;transform:scale(1.15)}.lex-icon:before{font-family:file-icons;content:"𐇯";top:3px;font-size:16px}.lfe-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.lgtm-icon:before{font-family:file-icons;content:"🐵";top:4px;font-size:17px;transform:scale(1.15)}.lighthouse-icon:before{font-family:file-icons;content:"⛯";top:2px;font-size:16px}.lightwave-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.lilypond-icon:before{font-family:file-icons;content:"💮";top:2px;font-size:16px}.lime-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.linqpad-icon:before{font-family:file-icons;font-size:15px;content:"𝛌";top:2px}.lisp-icon:before{font-family:file-icons;content:"";top:3px;font-size:17px}.llvm-icon:before{font-family:file-icons;content:"";top:3px;font-size:17px}.logtalk-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px;text-shadow:0 0 0}.lolcode-icon:before{font-family:file-icons;content:"😺";top:2px;font-size:16px;text-shadow:0 0 0}.lookml-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px;text-shadow:0 0 0}.ls-icon:before{font-family:file-icons;content:"";top:2px;font-size:14px}.lsl-icon:before{font-family:file-icons;font-size:15px;content:"";top:1px}.lua-icon:before{font-family:file-icons;content:"";top:2px;font-size:14px}.lync-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.macaulay2-icon:before{font-family:file-icons;content:"♄";top:3px;font-size:17px}.mako-icon:before{font-family:file-icons;content:"";top:4px;font-size:16px}.manpage-icon:before{font-family:file-icons;font-size:15px;content:"";top:3px}.mapbox-icon:before{font-family:file-icons;content:"";top:1px;font-size:13px}.marko-icon:before{font-family:file-icons;content:"";top:4px;font-size:18px;left:-1px;transform:scale(1.05)}.markdownlint-icon:before{font-family:file-icons;content:"";top:3px;font-size:17px;transform:scale(1.25);transform-origin:0 60%}.mathematica-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.mathjax-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.matlab-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.matroska-icon:before{font-family:file-icons;font-size:15px;content:"♨";top:2px}.max-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.maxscript-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.maya-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.mdx-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.mediawiki-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.melpa-icon:before{font-family:file-icons;content:"㎫";top:2px;font-size:16px}.mercury-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px;transform:scale(1.2)}.mermaid-icon:before{font-family:file-icons;content:"";top:3px;font-size:17px}.meson-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.metal-icon:before{font-family:file-icons;font-size:15px;content:"M";top:1px;left:1px}.meteor-icon:before{font-family:file-icons;font-size:15px;content:"";top:1px}.minecraft-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.minizinc-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.mirah-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.miranda-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.mirc-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.mjml-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.mocha-icon:before{font-family:file-icons;content:"⛾";top:2px;font-size:17px}.model-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.modula2-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.modula3-icon:before{font-family:file-icons;content:"❸";top:3px;font-size:17px}.modelica-icon:before{font-family:file-icons;content:"";top:4px;font-size:17px;transform:scale(1.2)}.modo-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.moho-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.moleculer-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.moment-icon:before{font-family:file-icons;font-size:15px;content:"🕘";top:2px}.moment-tz-icon:before{font-family:file-icons;font-size:15px;content:"🌍";top:2px}.monotone-icon:before{font-family:file-icons;content:"🐀";top:2px;font-size:18px}.monkey-icon:before{font-family:file-icons;content:"";top:3px;font-size:18px;left:-1px}.mruby-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.msproject-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.mupad-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.mustache-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.n64-icon:before{font-family:file-icons;content:"n";top:2px;font-size:16px}.nailpolish-icon:before{font-family:file-icons;content:"💅";top:3px;font-size:16px;left:1px}.nano-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.nanoc-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.nant-icon:before{font-family:file-icons;font-size:15px;content:"";top:3px;transform:scale(1.2)}.nasm-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.ndepend-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.neko-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.neo4j-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.neon-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.nessus-icon:before{font-family:file-icons;font-size:15px;content:"⏣";top:2px;-webkit-font-smoothing:subpixel-antialiased}.netlify-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.netlogo-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px;left:1px}.newrelic-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.nextflow-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.nextjs-icon:before{font-family:file-icons;font-size:15px;content:"Ⓝ";top:2px}.nestjs-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.nginx-icon:before{font-family:file-icons;font-size:15px;content:"󱑫";top:2px}.nib-icon:before{font-family:file-icons;font-size:15px;content:"✒";top:2px}.nickle-icon:before{font-family:file-icons;content:"¢";top:3px;font-size:16px}.nightwatch-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.nimble-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.nimrod-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.nit-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.nix-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.nmap-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px;transform:scale(1.1)}.nodemon-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.nomad-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.noon-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.normalize-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.npm-icon:before{font-family:file-icons;content:"";top:3px;font-size:17px}.nsis-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.nsri-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.nsri-alt-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.nuclide-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.nuget-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.numpy-icon:before{font-family:file-icons;content:"";top:2px;font-size:14px}.nunjucks-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.nuxt-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.nx-icon:before{font-family:file-icons;content:"";top:3px;font-size:17px}.nxc-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.nvidia-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.oberon-icon:before{font-family:file-icons;content:"";top:3px;font-size:17px;transform:scale(1.1)}.objj-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.ocaml-icon:before{font-family:file-icons;content:"";top:1px;font-size:14px}.octave-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.odin-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.onenote-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.ooc-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.opa-icon:before{font-family:file-icons;font-size:15px;content:"☁";top:2px}.openbsd-icon:before{font-family:file-icons;content:"🐡";top:3px;font-size:17px;text-shadow:0 0 0;transform:scale(1.1)}.opencl-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.opengl-icon:before{font-family:file-icons;content:"";top:3px;font-size:18px;transform:scale(1.1)}.openoffice-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.openpolicy-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.openvms-icon:before{font-family:file-icons;content:"";top:1px;font-size:16px;transform:scale(1.1)}.openvpn-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.org-icon:before{font-family:file-icons;content:"";top:1px;font-size:14px;left:1px}.outlook-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.owl-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.ox-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px;text-shadow:0 0 0}.oxygene-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.oz-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.p4-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.pan-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.papyrus-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.parrot-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.pascal-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.patch-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.patreon-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.pawn-icon:before{font-family:file-icons;content:"♟";top:1px;font-size:14px}.pcd-icon:before{font-family:file-icons;content:"⛅";top:2px;font-size:16px}.peg-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.perl6-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.phalcon-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.phoenix-icon:before{font-family:file-icons;content:"";top:3px;font-size:17px;transform:scale(1.1)}.php-icon:before{font-family:file-icons;content:"";top:1px;font-size:14px;left:1px}.phpunit-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.phraseapp-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.pickle-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.pico8-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.picolisp-icon:before{font-family:file-icons;content:"";top:3px;font-size:17px}.pike-icon:before{font-family:file-icons;content:"";top:4px;font-size:16px;-webkit-font-smoothing:subpixel-antialiased;transform:scale(1.15)}.pinescript-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.pipenv-icon:before{font-family:file-icons;font-size:15px;content:"🎁";top:2px}.platformio-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.pm2-icon:before{font-family:file-icons;font-size:15px;content:"☰";top:3px}.pnpm-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px;text-shadow:0 0 0}.pod-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px;left:1px}.pogo-icon:before{font-family:file-icons;content:"";top:3px;font-size:14px;-webkit-font-smoothing:subpixel-antialiased}.pointwise-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.polymer-icon:before{font-family:file-icons;font-size:15px;content:"";top:3px}.pony-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.postcss-icon:before{font-family:file-icons;content:"";top:2px;font-size:14px}.postscript-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px;left:1px}.povray-icon:before{font-family:file-icons;font-size:15px;content:"P";top:2px;left:1px}.powerbuilder-icon:before{font-family:file-icons;font-size:15px;content:""}.powerpoint-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.powershell-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.precommit-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.premiere-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.prettier-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.prisma-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.processing-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.progress-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.proselint-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.pros-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.propeller-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.protractor-icon:before{font-family:file-icons;font-size:15px;content:"";top:3px}.psd-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.publisher-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.pug-alt-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.pug-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.puppet-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px;left:1px}.pure-icon:before{font-family:file-icons;content:"💧";top:2px;font-size:16px;text-shadow:0 0 0}.purebasic-icon:before{font-family:file-icons;font-size:15px;content:"Ƶ";top:2px}.purescript-icon:before{font-family:file-icons;font-size:15px;content:"";top:3px}.pullapprove-icon:before{font-family:file-icons;font-size:15px;content:"⤾";top:2px}.pypi-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.pyret-icon:before{font-family:file-icons;content:"☠";top:2px;font-size:16px}.pyup-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.qiskit-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px;text-shadow:0 0 0}.qlik-icon:before{font-family:file-icons;font-size:15px;content:"🔍";top:2px}.qsharp-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.qt-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.quasar-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.r-icon:before{font-family:file-icons;content:"";top:3px;font-size:17px}.racket-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px;left:1px}.raml-icon:before{font-family:file-icons;content:"";top:1px;font-size:14px}.rascal-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.razzle-icon:before{font-family:file-icons;font-size:15px;content:"R";top:2px}.rdata-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.rdoc-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px;left:1px}.react-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.reason-icon:before{font-family:file-icons;font-size:15px;content:"";top:3px}.reasonstudios-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.rebol-icon:before{font-family:file-icons;content:"";top:1px;font-size:13px}.red-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.redux-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.reek-icon:before{font-family:file-icons;content:"";top:3px;font-size:17px;text-shadow:0 0 0}.regex-icon:before{font-family:file-icons;content:"*";top:1px;font-size:12px;left:1px}.remark-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.renovate-icon:before{font-family:file-icons;content:"";top:2px;font-size:17px}.rexx-icon:before{font-family:file-icons;content:"";top:2px;font-size:14px;left:1px}.rhino-icon:before{font-family:file-icons;content:"";top:4px;font-size:16px;left:1px;transform:scale(1.1)}.ring-icon:before{font-family:file-icons;font-size:15px;content:"💍";top:2px}.riot-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.rmarkdown-icon:before{font-family:file-icons;content:"ℛ";top:3px;font-size:17px}.robot-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.robots-icon:before{font-family:file-icons;font-size:15px;content:"🤖";top:2px}.rollup-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.rspec-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.rst-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.rstudio-icon:before{font-family:file-icons;font-size:15px;content:"Ⓡ";top:2px}.rubocop-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.sac-icon:before{font-family:file-icons;content:"‼";top:3px;font-size:16px}.sage-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px;-webkit-font-smoothing:subpixel-antialiased}.sails-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.saltstack-icon:before{font-family:file-icons;content:"";top:2px;font-size:14px}.sas-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.san-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.sbt-icon:before{font-family:file-icons;content:"";top:2px;font-size:14px}.scad-icon:before{font-family:file-icons;content:"";top:2px;font-size:14px}.scd-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.scheme-icon:before{font-family:file-icons;font-size:15px;content:"λ";top:2px}.scilab-icon:before{font-family:file-icons;content:"";top:3px;font-size:18px;left:-1px;-webkit-font-smoothing:subpixel-antialiased}.scilla-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.scratch-icon:before{font-family:file-icons;font-size:15px;content:"§";top:2px}.scrutinizer-icon:before{font-family:file-icons;content:"";top:2px;font-size:14px}.self-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px;text-shadow:0 0 0;transform:scale(1.2)}.semrelease-icon:before{font-family:file-icons;content:"🟍";top:2px;font-size:16px}.sentry-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.serverless-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.sequelize-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.sf-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.sgi-icon:before{font-family:file-icons;font-size:15px;content:"⌘";top:2px}.shadowcljs-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px;-webkit-font-smoothing:subpixel-antialiased}.shen-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.shipit-icon:before{font-family:file-icons;content:"⛵";top:2px;font-size:16px;transform:scale(1.1)}.shippable-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.shopify-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.shuriken-icon:before{font-family:file-icons;content:"✫";top:2px;font-size:14px}.sigils-icon:before{font-family:file-icons;content:"🝤";top:3px;font-size:16px;text-shadow:0 0 0}.silverstripe-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.sketch-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.sketchup-lo-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.sketchup-mk-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.sketchup-sb-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.slash-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.snapcraft-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.snort-icon:before{font-family:file-icons;content:"🐽";top:3px;font-size:17px}.snyk-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.solidarity-icon:before{font-family:file-icons;font-size:15px;content:"𝗦";top:2px}.solidity-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.sophia-icon:before{font-family:file-icons;content:"";top:3px;font-size:17px}.sorbet-icon:before{font-family:file-icons;content:"🍦";top:2px;font-size:16px}.source-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.spacemacs-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.sparql-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.sqf-icon:before{font-family:file-icons;font-size:15px;content:"";top:1px;text-shadow:0 0 0}.sqlite-icon:before{font-family:file-icons;font-size:15px;content:"";top:3px}.squarespace-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.stan-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.stata-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.stdlibjs-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.stencil-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.storyist-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.strings-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.stylable-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.storybook-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.stylelint-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.stylishhaskell-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.stylus-icon:before{font-family:file-icons;font-size:15px;content:"s";top:2px;left:1px}.sublime-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.svelte-icon:before{font-family:file-icons;content:"㏜";top:3px;font-size:16px}.svn-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.swagger-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.sysverilog-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.tag-icon:before{font-family:file-icons;content:"";top:2px;font-size:14px}.tailwind-icon:before{font-family:file-icons;content:"〜";top:3px;font-size:17px}.tcl-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.telegram-icon:before{font-family:file-icons;font-size:15px;content:"✈";top:2px}.templeos-icon:before{font-family:file-icons;content:"⚖";top:4px;font-size:18px}.terminal-icon:before{font-family:file-icons;content:"";top:2px;font-size:14px}.tern-icon:before{font-family:file-icons;content:"🕊";top:4px;font-size:16px}.terraform-icon:before{font-family:file-icons;content:"";top:1px;font-size:14px}.terser-icon:before{font-family:file-icons;font-size:15px;content:"✬";top:2px}.testcafe-icon:before{font-family:file-icons;content:"✔";top:3px;font-size:17px}.test-coffee-icon:before{font-family:file-icons;content:"";top:3px;font-size:17px}.test-dir-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.test-generic-icon:before{font-family:file-icons;content:"";top:3px;font-size:17px}.test-go-icon:before{font-family:file-icons;content:"";top:3px;font-size:17px}.test-hs-icon:before{font-family:file-icons;content:"";top:3px;font-size:17px}.test-js-icon:before{font-family:file-icons;content:"";top:3px;font-size:17px}.test-perl-icon:before{font-family:file-icons;content:"";top:3px;font-size:17px}.test-python-icon:before{font-family:file-icons;content:"";top:3px;font-size:17px}.test-react-icon:before{font-family:file-icons;content:"";top:3px;font-size:17px}.test-ruby-icon:before{font-family:file-icons;content:"";top:3px;font-size:17px}.test-rust-icon:before{font-family:file-icons;content:"";top:3px;font-size:17px}.test-ts-icon:before{font-family:file-icons;content:"";top:3px;font-size:17px}.tex-icon:before{font-family:file-icons;content:"";top:4px;font-size:16px;-webkit-font-smoothing:subpixel-antialiased}.textile-icon:before{font-family:file-icons;font-size:15px;content:"t";top:2px}.textmate-icon:before{font-family:file-icons;content:"™";top:2px;font-size:16px}.tfs-icon:before{font-family:file-icons;font-size:15px;content:"";top:3px}.thor-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.tilt-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.tipe-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.tla-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.tmux-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.toml-icon:before{font-family:file-icons;font-size:15px;content:"🅃";top:2px}.tortoise-icon:before{font-family:file-icons;content:"";top:3px;font-size:17px;transform:scale(1.15)}.totvs-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.truffle-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.ts-icon:before{font-family:file-icons;content:"ʦ";top:1px;font-size:14px}.tsx-icon:before{font-family:file-icons;content:"";top:1px;font-size:14px}.tt-icon:before{font-family:file-icons;font-size:15px;content:"T";top:2px}.ttcn3-icon:before{font-family:file-icons;font-size:15px;content:"⑶";top:2px}.turing-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.twine-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.twig-icon:before{font-family:file-icons;content:"⸙";top:2px;font-size:16px;text-shadow:0 0 0}.txl-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.typedoc-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.typings-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.ufo-icon:before{font-family:file-icons;content:"🅄";top:2px;font-size:16px;text-shadow:0 0 0}.unbeautify-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px;text-shadow:0 0 0}.unicode-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.uno-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.unreal-icon:before{font-family:file-icons;font-size:15px;content:"u";top:2px}.urweb-icon:before{font-family:file-icons;content:"";top:4px;font-size:18px;left:-1px;text-shadow:0 0 0}.v-icon:before{font-family:file-icons;font-size:15px;content:"v";top:2px}.v8-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.v8-turbofan-icon:before{font-family:file-icons;content:"";top:3px;font-size:17px}.vagrant-icon:before{font-family:file-icons;content:"V";top:2px;font-size:14px}.vala-icon:before{font-family:file-icons;font-size:15px;content:"𝒱";top:2px}.varnish-icon:before{font-family:file-icons;content:"";top:1px;font-size:14px}.velocity-icon:before{font-family:file-icons;content:"⮔";top:3px;font-size:17px;transform:scale(1.1)}.verilog-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.vertex-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.vhdl-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.video-icon:before{font-family:file-icons;content:"";top:1px;font-size:14px}.virtualbox-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.visio-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.vmware-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px;text-shadow:0 0 0}.vue-icon:before{font-family:file-icons;font-size:15px;content:"";top:3px}.vyper-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.vsts-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px;left:-1px}.wallaby-icon:before{font-family:file-icons;font-size:15px;content:"⌟";top:2px}.walt-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.wasm-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.watchman-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.wenyan-icon:before{font-family:file-icons;content:"言";top:3px;font-size:17px}.wdl-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.webgl-icon:before{font-family:file-icons;content:"";top:3px;font-size:18px;transform:scale(1.1)}.webhint-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.webpack-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.webvtt-icon:before{font-family:file-icons;content:"";top:4px;font-size:16px;transform:scale(1.1)}.wercker-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.wget-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.wix-icon:before{font-family:file-icons;content:"";top:3px;font-size:16px}.word-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.workbox-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.wurst-icon:before{font-family:file-icons;content:"🌭";top:2px;font-size:16px}.xamarin-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.x10-icon:before{font-family:file-icons;font-size:15px;content:"Ⅹ";top:2px}.xmake-icon:before{font-family:file-icons;font-size:15px;content:"";top:3px}.xmos-icon:before{font-family:file-icons;content:"X";top:1px;font-size:14px}.xojo-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.xpages-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.xtend-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.yaml-icon:before{font-family:file-icons;font-size:15px;content:"y";top:2px}.yandex-icon:before{font-family:file-icons;font-size:15px;content:"Я";top:2px}.yang-icon:before{font-family:file-icons;font-size:15px;content:"☯";top:2px}.yara-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.yarn-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.yorick-icon:before{font-family:file-icons;font-size:15px;content:"💀";top:2px}.yui-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px}.zbrush-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px}.zeit-icon:before{font-family:file-icons;font-size:15px;content:"▲";top:2px}.zephir-icon:before{font-family:file-icons;font-size:15px;content:"";top:2px;-webkit-font-smoothing:subpixel-antialiased}.zig-icon:before{font-family:file-icons;content:"z";top:3px;font-size:16px}.zimpl-icon:before{font-family:file-icons;content:"";top:2px;font-size:16px;left:1px}.zork-icon:before{font-family:file-icons;font-size:15px;content:"ƶ";top:2px}