@jonsoc/console-app 1.1.34

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 (217) hide show
  1. package/.opencode/agent/css.md +149 -0
  2. package/README.md +32 -0
  3. package/package.json +49 -0
  4. package/public/apple-touch-icon-v3.png +1 -0
  5. package/public/apple-touch-icon.png +1 -0
  6. package/public/email +1 -0
  7. package/public/favicon-96x96-v3.png +1 -0
  8. package/public/favicon-96x96.png +1 -0
  9. package/public/favicon-v3.ico +1 -0
  10. package/public/favicon-v3.svg +1 -0
  11. package/public/favicon.ico +1 -0
  12. package/public/favicon.svg +1 -0
  13. package/public/opencode-brand-assets.zip +0 -0
  14. package/public/robots.txt +6 -0
  15. package/public/site.webmanifest +1 -0
  16. package/public/social-share-black.png +1 -0
  17. package/public/social-share-zen.png +1 -0
  18. package/public/social-share.png +1 -0
  19. package/public/theme.json +182 -0
  20. package/public/web-app-manifest-192x192.png +1 -0
  21. package/public/web-app-manifest-512x512.png +1 -0
  22. package/script/generate-sitemap.ts +103 -0
  23. package/src/app.css +1 -0
  24. package/src/app.tsx +27 -0
  25. package/src/asset/black/hero.png +0 -0
  26. package/src/asset/brand/opencode-brand-assets.zip +0 -0
  27. package/src/asset/brand/opencode-logo-dark.png +0 -0
  28. package/src/asset/brand/opencode-logo-dark.svg +16 -0
  29. package/src/asset/brand/opencode-logo-light.png +0 -0
  30. package/src/asset/brand/opencode-logo-light.svg +16 -0
  31. package/src/asset/brand/opencode-wordmark-dark.png +0 -0
  32. package/src/asset/brand/opencode-wordmark-dark.svg +30 -0
  33. package/src/asset/brand/opencode-wordmark-light.png +0 -0
  34. package/src/asset/brand/opencode-wordmark-light.svg +30 -0
  35. package/src/asset/brand/opencode-wordmark-simple-dark.png +0 -0
  36. package/src/asset/brand/opencode-wordmark-simple-dark.svg +22 -0
  37. package/src/asset/brand/opencode-wordmark-simple-light.png +0 -0
  38. package/src/asset/brand/opencode-wordmark-simple-light.svg +22 -0
  39. package/src/asset/brand/preview-opencode-dark.png +0 -0
  40. package/src/asset/brand/preview-opencode-logo-dark.png +0 -0
  41. package/src/asset/brand/preview-opencode-logo-light.png +0 -0
  42. package/src/asset/brand/preview-opencode-wordmark-dark.png +0 -0
  43. package/src/asset/brand/preview-opencode-wordmark-light.png +0 -0
  44. package/src/asset/brand/preview-opencode-wordmark-simple-dark.png +0 -0
  45. package/src/asset/brand/preview-opencode-wordmark-simple-light.png +0 -0
  46. package/src/asset/lander/avatar-adam.png +0 -0
  47. package/src/asset/lander/avatar-david.png +0 -0
  48. package/src/asset/lander/avatar-dax.png +0 -0
  49. package/src/asset/lander/avatar-frank.png +0 -0
  50. package/src/asset/lander/avatar-jay.png +0 -0
  51. package/src/asset/lander/brand-assets-dark.svg +10 -0
  52. package/src/asset/lander/brand-assets-light.svg +10 -0
  53. package/src/asset/lander/brand.png +0 -0
  54. package/src/asset/lander/check.svg +3 -0
  55. package/src/asset/lander/copy.svg +3 -0
  56. package/src/asset/lander/desktop-app-icon.png +0 -0
  57. package/src/asset/lander/dock.png +0 -0
  58. package/src/asset/lander/logo-dark.svg +11 -0
  59. package/src/asset/lander/logo-light.svg +11 -0
  60. package/src/asset/lander/opencode-comparison-min.mp4 +0 -0
  61. package/src/asset/lander/opencode-comparison-poster.png +0 -0
  62. package/src/asset/lander/opencode-desktop-icon.png +0 -0
  63. package/src/asset/lander/opencode-logo-dark.svg +11 -0
  64. package/src/asset/lander/opencode-logo-light.svg +11 -0
  65. package/src/asset/lander/opencode-min.mp4 +0 -0
  66. package/src/asset/lander/opencode-poster.png +0 -0
  67. package/src/asset/lander/opencode-wordmark-dark.svg +25 -0
  68. package/src/asset/lander/opencode-wordmark-light.svg +25 -0
  69. package/src/asset/lander/screenshot-github.png +0 -0
  70. package/src/asset/lander/screenshot-splash.png +0 -0
  71. package/src/asset/lander/screenshot-vscode.png +0 -0
  72. package/src/asset/lander/screenshot.png +0 -0
  73. package/src/asset/lander/wordmark-dark.svg +3 -0
  74. package/src/asset/lander/wordmark-light.svg +3 -0
  75. package/src/asset/logo-ornate-dark.svg +18 -0
  76. package/src/asset/logo-ornate-light.svg +18 -0
  77. package/src/asset/logo.svg +18 -0
  78. package/src/asset/zen-ornate-dark.svg +8 -0
  79. package/src/asset/zen-ornate-light.svg +8 -0
  80. package/src/component/dropdown.css +80 -0
  81. package/src/component/dropdown.tsx +79 -0
  82. package/src/component/email-signup.tsx +48 -0
  83. package/src/component/faq.tsx +33 -0
  84. package/src/component/footer.tsx +38 -0
  85. package/src/component/header-context-menu.css +63 -0
  86. package/src/component/header.tsx +279 -0
  87. package/src/component/icon.tsx +257 -0
  88. package/src/component/legal.tsx +20 -0
  89. package/src/component/modal.css +66 -0
  90. package/src/component/modal.tsx +24 -0
  91. package/src/component/spotlight.css +15 -0
  92. package/src/component/spotlight.tsx +820 -0
  93. package/src/config.ts +29 -0
  94. package/src/context/auth.session.ts +0 -0
  95. package/src/context/auth.ts +116 -0
  96. package/src/context/auth.withActor.ts +7 -0
  97. package/src/entry-client.tsx +4 -0
  98. package/src/entry-server.tsx +30 -0
  99. package/src/global.d.ts +5 -0
  100. package/src/lib/github.ts +38 -0
  101. package/src/middleware.ts +5 -0
  102. package/src/routes/[...404].css +130 -0
  103. package/src/routes/[...404].tsx +38 -0
  104. package/src/routes/api/enterprise.ts +47 -0
  105. package/src/routes/auth/[...callback].ts +41 -0
  106. package/src/routes/auth/authorize.ts +10 -0
  107. package/src/routes/auth/index.ts +12 -0
  108. package/src/routes/auth/logout.ts +17 -0
  109. package/src/routes/auth/status.ts +7 -0
  110. package/src/routes/bench/[id].tsx +365 -0
  111. package/src/routes/bench/index.tsx +86 -0
  112. package/src/routes/bench/submission.ts +29 -0
  113. package/src/routes/black/common.tsx +62 -0
  114. package/src/routes/black/index.tsx +108 -0
  115. package/src/routes/black/subscribe/[plan].tsx +449 -0
  116. package/src/routes/black/workspace.css +214 -0
  117. package/src/routes/black/workspace.tsx +229 -0
  118. package/src/routes/black.css +828 -0
  119. package/src/routes/black.tsx +285 -0
  120. package/src/routes/brand/index.css +555 -0
  121. package/src/routes/brand/index.tsx +252 -0
  122. package/src/routes/changelog/index.css +477 -0
  123. package/src/routes/changelog/index.tsx +147 -0
  124. package/src/routes/debug/index.ts +13 -0
  125. package/src/routes/desktop-feedback.ts +5 -0
  126. package/src/routes/discord.ts +5 -0
  127. package/src/routes/docs/[...path].ts +20 -0
  128. package/src/routes/docs/index.ts +20 -0
  129. package/src/routes/download/[platform].ts +38 -0
  130. package/src/routes/download/index.css +750 -0
  131. package/src/routes/download/index.tsx +482 -0
  132. package/src/routes/download/types.ts +4 -0
  133. package/src/routes/enterprise/index.css +578 -0
  134. package/src/routes/enterprise/index.tsx +251 -0
  135. package/src/routes/index.css +1251 -0
  136. package/src/routes/index.tsx +840 -0
  137. package/src/routes/legal/privacy-policy/index.css +343 -0
  138. package/src/routes/legal/privacy-policy/index.tsx +1512 -0
  139. package/src/routes/legal/terms-of-service/index.css +254 -0
  140. package/src/routes/legal/terms-of-service/index.tsx +512 -0
  141. package/src/routes/openapi.json.ts +7 -0
  142. package/src/routes/s/[id].ts +20 -0
  143. package/src/routes/stripe/webhook.ts +532 -0
  144. package/src/routes/t/[...path].tsx +20 -0
  145. package/src/routes/temp.tsx +172 -0
  146. package/src/routes/user-menu.css +18 -0
  147. package/src/routes/user-menu.tsx +32 -0
  148. package/src/routes/workspace/[id]/billing/billing-section.module.css +185 -0
  149. package/src/routes/workspace/[id]/billing/billing-section.tsx +240 -0
  150. package/src/routes/workspace/[id]/billing/black-section.module.css +142 -0
  151. package/src/routes/workspace/[id]/billing/black-section.tsx +269 -0
  152. package/src/routes/workspace/[id]/billing/black-waitlist-section.module.css +23 -0
  153. package/src/routes/workspace/[id]/billing/index.tsx +32 -0
  154. package/src/routes/workspace/[id]/billing/monthly-limit-section.module.css +96 -0
  155. package/src/routes/workspace/[id]/billing/monthly-limit-section.tsx +133 -0
  156. package/src/routes/workspace/[id]/billing/payment-section.module.css +93 -0
  157. package/src/routes/workspace/[id]/billing/payment-section.tsx +122 -0
  158. package/src/routes/workspace/[id]/billing/reload-section.module.css +261 -0
  159. package/src/routes/workspace/[id]/billing/reload-section.tsx +213 -0
  160. package/src/routes/workspace/[id]/graph-section.module.css +145 -0
  161. package/src/routes/workspace/[id]/graph-section.tsx +475 -0
  162. package/src/routes/workspace/[id]/index.tsx +81 -0
  163. package/src/routes/workspace/[id]/keys/index.tsx +11 -0
  164. package/src/routes/workspace/[id]/keys/key-section.module.css +197 -0
  165. package/src/routes/workspace/[id]/keys/key-section.tsx +176 -0
  166. package/src/routes/workspace/[id]/members/index.tsx +11 -0
  167. package/src/routes/workspace/[id]/members/member-section.module.css +249 -0
  168. package/src/routes/workspace/[id]/members/member-section.tsx +343 -0
  169. package/src/routes/workspace/[id]/members/role-dropdown.css +72 -0
  170. package/src/routes/workspace/[id]/members/role-dropdown.tsx +43 -0
  171. package/src/routes/workspace/[id]/model-section.module.css +173 -0
  172. package/src/routes/workspace/[id]/model-section.tsx +174 -0
  173. package/src/routes/workspace/[id]/new-user-section.module.css +143 -0
  174. package/src/routes/workspace/[id]/new-user-section.tsx +104 -0
  175. package/src/routes/workspace/[id]/provider-section.module.css +138 -0
  176. package/src/routes/workspace/[id]/provider-section.tsx +188 -0
  177. package/src/routes/workspace/[id]/settings/index.tsx +11 -0
  178. package/src/routes/workspace/[id]/settings/settings-section.module.css +94 -0
  179. package/src/routes/workspace/[id]/settings/settings-section.tsx +122 -0
  180. package/src/routes/workspace/[id]/usage-section.module.css +185 -0
  181. package/src/routes/workspace/[id]/usage-section.tsx +200 -0
  182. package/src/routes/workspace/[id].css +308 -0
  183. package/src/routes/workspace/[id].tsx +62 -0
  184. package/src/routes/workspace/common.tsx +120 -0
  185. package/src/routes/workspace-picker.css +74 -0
  186. package/src/routes/workspace-picker.tsx +122 -0
  187. package/src/routes/workspace.css +107 -0
  188. package/src/routes/workspace.tsx +38 -0
  189. package/src/routes/zen/index.css +866 -0
  190. package/src/routes/zen/index.tsx +343 -0
  191. package/src/routes/zen/util/dataDumper.ts +44 -0
  192. package/src/routes/zen/util/error.ts +13 -0
  193. package/src/routes/zen/util/handler.ts +784 -0
  194. package/src/routes/zen/util/logger.ts +12 -0
  195. package/src/routes/zen/util/provider/anthropic.ts +752 -0
  196. package/src/routes/zen/util/provider/google.ts +75 -0
  197. package/src/routes/zen/util/provider/openai-compatible.ts +546 -0
  198. package/src/routes/zen/util/provider/openai.ts +630 -0
  199. package/src/routes/zen/util/provider/provider.ts +210 -0
  200. package/src/routes/zen/util/rateLimiter.ts +41 -0
  201. package/src/routes/zen/util/stickyProviderTracker.ts +16 -0
  202. package/src/routes/zen/util/trialLimiter.ts +49 -0
  203. package/src/routes/zen/v1/chat/completions.ts +11 -0
  204. package/src/routes/zen/v1/messages.ts +11 -0
  205. package/src/routes/zen/v1/models/[model].ts +13 -0
  206. package/src/routes/zen/v1/models.ts +60 -0
  207. package/src/routes/zen/v1/responses.ts +11 -0
  208. package/src/style/base.css +21 -0
  209. package/src/style/component/button.css +102 -0
  210. package/src/style/index.css +8 -0
  211. package/src/style/reset.css +76 -0
  212. package/src/style/token/color.css +91 -0
  213. package/src/style/token/font.css +21 -0
  214. package/src/style/token/space.css +46 -0
  215. package/sst-env.d.ts +9 -0
  216. package/tsconfig.json +21 -0
  217. package/vite.config.ts +25 -0
@@ -0,0 +1,252 @@
1
+ import "./index.css"
2
+ import { Title, Meta, Link } from "@solidjs/meta"
3
+ import { Header } from "~/component/header"
4
+ import { config } from "~/config"
5
+ import { Footer } from "~/component/footer"
6
+ import { Legal } from "~/component/legal"
7
+ import previewLogoLight from "../../asset/brand/preview-jonsoc-logo-light.png"
8
+ import previewLogoDark from "../../asset/brand/preview-jonsoc-logo-dark.png"
9
+ import previewWordmarkLight from "../../asset/brand/preview-jonsoc-wordmark-light.png"
10
+ import previewWordmarkDark from "../../asset/brand/preview-jonsoc-wordmark-dark.png"
11
+ import previewWordmarkSimpleLight from "../../asset/brand/preview-jonsoc-wordmark-simple-light.png"
12
+ import previewWordmarkSimpleDark from "../../asset/brand/preview-jonsoc-wordmark-simple-dark.png"
13
+ import logoLightPng from "../../asset/brand/jonsoc-logo-light.png"
14
+ import logoDarkPng from "../../asset/brand/jonsoc-logo-dark.png"
15
+ import wordmarkLightPng from "../../asset/brand/jonsoc-wordmark-light.png"
16
+ import wordmarkDarkPng from "../../asset/brand/jonsoc-wordmark-dark.png"
17
+ import wordmarkSimpleLightPng from "../../asset/brand/jonsoc-wordmark-simple-light.png"
18
+ import wordmarkSimpleDarkPng from "../../asset/brand/jonsoc-wordmark-simple-dark.png"
19
+ import logoLightSvg from "../../asset/brand/jonsoc-logo-light.svg"
20
+ import logoDarkSvg from "../../asset/brand/jonsoc-logo-dark.svg"
21
+ import wordmarkLightSvg from "../../asset/brand/jonsoc-wordmark-light.svg"
22
+ import wordmarkDarkSvg from "../../asset/brand/jonsoc-wordmark-dark.svg"
23
+ import wordmarkSimpleLightSvg from "../../asset/brand/jonsoc-wordmark-simple-light.svg"
24
+ import wordmarkSimpleDarkSvg from "../../asset/brand/jonsoc-wordmark-simple-dark.svg"
25
+ const brandAssets = "/jonsoc-brand-assets.zip"
26
+
27
+ export default function Brand() {
28
+ const downloadFile = async (url: string, filename: string) => {
29
+ try {
30
+ const response = await fetch(url)
31
+ const blob = await response.blob()
32
+ const blobUrl = window.URL.createObjectURL(blob)
33
+
34
+ const link = document.createElement("a")
35
+ link.href = blobUrl
36
+ link.download = filename
37
+ document.body.appendChild(link)
38
+ link.click()
39
+ document.body.removeChild(link)
40
+
41
+ window.URL.revokeObjectURL(blobUrl)
42
+ } catch (error) {
43
+ console.error("Download failed:", error)
44
+ const link = document.createElement("a")
45
+ link.href = url
46
+ link.target = "_blank"
47
+ link.rel = "noopener noreferrer"
48
+ document.body.appendChild(link)
49
+ link.click()
50
+ document.body.removeChild(link)
51
+ }
52
+ }
53
+
54
+ return (
55
+ <main data-page="enterprise">
56
+ <Title>JonsOC | Brand</Title>
57
+ <Link rel="canonical" href={`${config.baseUrl}/brand`} />
58
+ <Meta name="description" content="JonsOC brand guidelines" />
59
+ <div data-component="container">
60
+ <Header />
61
+
62
+ <div data-component="content">
63
+ <section data-component="brand-content">
64
+ <h1>Brand guidelines</h1>
65
+ <p>Resources and assets to help you work with the JonsOC brand.</p>
66
+ <button
67
+ data-component="download-button"
68
+ onClick={() => downloadFile(brandAssets, "jonsoc-brand-assets.zip")}
69
+ >
70
+ Download all assets
71
+ <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
72
+ <path
73
+ d="M13.9583 10.6247L10 14.583L6.04167 10.6247M10 2.08301V13.958M16.25 17.9163H3.75"
74
+ stroke="currentColor"
75
+ stroke-width="1.5"
76
+ stroke-linecap="square"
77
+ />
78
+ </svg>
79
+ </button>
80
+
81
+ <div data-component="brand-grid">
82
+ <div>
83
+ <img src={previewLogoLight} alt="JonsOC brand guidelines" />
84
+ <div data-component="actions">
85
+ <button onClick={() => downloadFile(logoLightPng, "jonsoc-logo-light.png")}>
86
+ PNG
87
+ <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
88
+ <path
89
+ d="M13.9583 10.6247L10 14.583L6.04167 10.6247M10 2.08301V13.958M16.25 17.9163H3.75"
90
+ stroke="currentColor"
91
+ stroke-width="1.5"
92
+ stroke-linecap="square"
93
+ />
94
+ </svg>
95
+ </button>
96
+ <button onClick={() => downloadFile(logoLightSvg, "jonsoc-logo-light.svg")}>
97
+ SVG
98
+ <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
99
+ <path
100
+ d="M13.9583 10.6247L10 14.583L6.04167 10.6247M10 2.08301V13.958M16.25 17.9163H3.75"
101
+ stroke="currentColor"
102
+ stroke-width="1.5"
103
+ stroke-linecap="square"
104
+ />
105
+ </svg>
106
+ </button>
107
+ </div>
108
+ </div>
109
+ <div>
110
+ <img src={previewLogoDark} alt="JonsOC brand guidelines" />
111
+ <div data-component="actions">
112
+ <button onClick={() => downloadFile(logoDarkPng, "jonsoc-logo-dark.png")}>
113
+ PNG
114
+ <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
115
+ <path
116
+ d="M13.9583 10.6247L10 14.583L6.04167 10.6247M10 2.08301V13.958M16.25 17.9163H3.75"
117
+ stroke="currentColor"
118
+ stroke-width="1.5"
119
+ stroke-linecap="square"
120
+ />
121
+ </svg>
122
+ </button>
123
+ <button onClick={() => downloadFile(logoDarkSvg, "jonsoc-logo-dark.svg")}>
124
+ SVG
125
+ <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
126
+ <path
127
+ d="M13.9583 10.6247L10 14.583L6.04167 10.6247M10 2.08301V13.958M16.25 17.9163H3.75"
128
+ stroke="currentColor"
129
+ stroke-width="1.5"
130
+ stroke-linecap="square"
131
+ />
132
+ </svg>
133
+ </button>
134
+ </div>
135
+ </div>
136
+ <div>
137
+ <img src={previewWordmarkLight} alt="JonsOC brand guidelines" />
138
+ <div data-component="actions">
139
+ <button onClick={() => downloadFile(wordmarkLightPng, "jonsoc-wordmark-light.png")}>
140
+ PNG
141
+ <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
142
+ <path
143
+ d="M13.9583 10.6247L10 14.583L6.04167 10.6247M10 2.08301V13.958M16.25 17.9163H3.75"
144
+ stroke="currentColor"
145
+ stroke-width="1.5"
146
+ stroke-linecap="square"
147
+ />
148
+ </svg>
149
+ </button>
150
+ <button onClick={() => downloadFile(wordmarkLightSvg, "jonsoc-wordmark-light.svg")}>
151
+ SVG
152
+ <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
153
+ <path
154
+ d="M13.9583 10.6247L10 14.583L6.04167 10.6247M10 2.08301V13.958M16.25 17.9163H3.75"
155
+ stroke="currentColor"
156
+ stroke-width="1.5"
157
+ stroke-linecap="square"
158
+ />
159
+ </svg>
160
+ </button>
161
+ </div>
162
+ </div>
163
+ <div>
164
+ <img src={previewWordmarkDark} alt="JonsOC brand guidelines" />
165
+ <div data-component="actions">
166
+ <button onClick={() => downloadFile(wordmarkDarkPng, "jonsoc-wordmark-dark.png")}>
167
+ PNG
168
+ <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
169
+ <path
170
+ d="M13.9583 10.6247L10 14.583L6.04167 10.6247M10 2.08301V13.958M16.25 17.9163H3.75"
171
+ stroke="currentColor"
172
+ stroke-width="1.5"
173
+ stroke-linecap="square"
174
+ />
175
+ </svg>
176
+ </button>
177
+ <button onClick={() => downloadFile(wordmarkDarkSvg, "jonsoc-wordmark-dark.svg")}>
178
+ SVG
179
+ <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
180
+ <path
181
+ d="M13.9583 10.6247L10 14.583L6.04167 10.6247M10 2.08301V13.958M16.25 17.9163H3.75"
182
+ stroke="currentColor"
183
+ stroke-width="1.5"
184
+ stroke-linecap="square"
185
+ />
186
+ </svg>
187
+ </button>
188
+ </div>
189
+ </div>
190
+ <div>
191
+ <img src={previewWordmarkSimpleLight} alt="JonsOC brand guidelines" />
192
+ <div data-component="actions">
193
+ <button onClick={() => downloadFile(wordmarkSimpleLightPng, "jonsoc-wordmark-simple-light.png")}>
194
+ PNG
195
+ <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
196
+ <path
197
+ d="M13.9583 10.6247L10 14.583L6.04167 10.6247M10 2.08301V13.958M16.25 17.9163H3.75"
198
+ stroke="currentColor"
199
+ stroke-width="1.5"
200
+ stroke-linecap="square"
201
+ />
202
+ </svg>
203
+ </button>
204
+ <button onClick={() => downloadFile(wordmarkSimpleLightSvg, "jonsoc-wordmark-simple-light.svg")}>
205
+ SVG
206
+ <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
207
+ <path
208
+ d="M13.9583 10.6247L10 14.583L6.04167 10.6247M10 2.08301V13.958M16.25 17.9163H3.75"
209
+ stroke="currentColor"
210
+ stroke-width="1.5"
211
+ stroke-linecap="square"
212
+ />
213
+ </svg>
214
+ </button>
215
+ </div>
216
+ </div>
217
+ <div>
218
+ <img src={previewWordmarkSimpleDark} alt="JonsOC brand guidelines" />
219
+ <div data-component="actions">
220
+ <button onClick={() => downloadFile(wordmarkSimpleDarkPng, "jonsoc-wordmark-simple-dark.png")}>
221
+ PNG
222
+ <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
223
+ <path
224
+ d="M13.9583 10.6247L10 14.583L6.04167 10.6247M10 2.08301V13.958M16.25 17.9163H3.75"
225
+ stroke="currentColor"
226
+ stroke-width="1.5"
227
+ stroke-linecap="square"
228
+ />
229
+ </svg>
230
+ </button>
231
+ <button onClick={() => downloadFile(wordmarkSimpleDarkSvg, "jonsoc-wordmark-simple-dark.svg")}>
232
+ SVG
233
+ <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
234
+ <path
235
+ d="M13.9583 10.6247L10 14.583L6.04167 10.6247M10 2.08301V13.958M16.25 17.9163H3.75"
236
+ stroke="currentColor"
237
+ stroke-width="1.5"
238
+ stroke-linecap="square"
239
+ />
240
+ </svg>
241
+ </button>
242
+ </div>
243
+ </div>
244
+ </div>
245
+ </section>
246
+ </div>
247
+ <Footer />
248
+ </div>
249
+ <Legal />
250
+ </main>
251
+ )
252
+ }