zubo 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (222) hide show
  1. package/.github/workflows/ci.yml +35 -0
  2. package/README.md +149 -0
  3. package/bun.lock +216 -0
  4. package/desktop/README.md +57 -0
  5. package/desktop/package.json +12 -0
  6. package/desktop/src-tauri/Cargo.toml +25 -0
  7. package/desktop/src-tauri/build.rs +3 -0
  8. package/desktop/src-tauri/icons/README.md +17 -0
  9. package/desktop/src-tauri/icons/icon.png +0 -0
  10. package/desktop/src-tauri/src/main.rs +189 -0
  11. package/desktop/src-tauri/tauri.conf.json +68 -0
  12. package/docs/ROADMAP.md +490 -0
  13. package/migrations/001_init.sql +9 -0
  14. package/migrations/002_memory.sql +33 -0
  15. package/migrations/003_cron.sql +24 -0
  16. package/migrations/004_usage.sql +12 -0
  17. package/migrations/005_secrets.sql +8 -0
  18. package/migrations/006_agents.sql +1 -0
  19. package/migrations/007_workflows.sql +22 -0
  20. package/migrations/008_proactive.sql +24 -0
  21. package/migrations/009_uploads.sql +9 -0
  22. package/migrations/010_observability.sql +22 -0
  23. package/migrations/011_api_keys.sql +7 -0
  24. package/migrations/012_indexes.sql +5 -0
  25. package/migrations/013_budget.sql +11 -0
  26. package/migrations/014_usage_session_idx.sql +2 -0
  27. package/package.json +39 -0
  28. package/site/404.html +156 -0
  29. package/site/CNAME +1 -0
  30. package/site/docs/agents.html +294 -0
  31. package/site/docs/api.html +446 -0
  32. package/site/docs/channels.html +345 -0
  33. package/site/docs/cli.html +238 -0
  34. package/site/docs/config.html +1034 -0
  35. package/site/docs/index.html +433 -0
  36. package/site/docs/integrations.html +381 -0
  37. package/site/docs/memory.html +254 -0
  38. package/site/docs/security.html +375 -0
  39. package/site/docs/skills.html +322 -0
  40. package/site/docs.css +412 -0
  41. package/site/index.html +638 -0
  42. package/site/install.sh +98 -0
  43. package/site/logo.svg +1 -0
  44. package/site/og-image.png +0 -0
  45. package/site/robots.txt +4 -0
  46. package/site/script.js +361 -0
  47. package/site/sitemap.xml +63 -0
  48. package/site/skills.html +532 -0
  49. package/site/style.css +1686 -0
  50. package/src/agent/agents.ts +159 -0
  51. package/src/agent/compaction.ts +53 -0
  52. package/src/agent/context.ts +18 -0
  53. package/src/agent/delegate.ts +118 -0
  54. package/src/agent/loop.ts +318 -0
  55. package/src/agent/prompts.ts +111 -0
  56. package/src/agent/session.ts +87 -0
  57. package/src/agent/teams.ts +116 -0
  58. package/src/agent/workflow-executor.ts +192 -0
  59. package/src/agent/workflow.ts +175 -0
  60. package/src/channels/adapter.ts +21 -0
  61. package/src/channels/dashboard.html.ts +2969 -0
  62. package/src/channels/discord.ts +137 -0
  63. package/src/channels/optional-deps.d.ts +17 -0
  64. package/src/channels/router.ts +199 -0
  65. package/src/channels/signal.ts +133 -0
  66. package/src/channels/slack.ts +101 -0
  67. package/src/channels/telegram.ts +102 -0
  68. package/src/channels/utils.ts +18 -0
  69. package/src/channels/webchat.ts +1797 -0
  70. package/src/channels/whatsapp.ts +119 -0
  71. package/src/config/loader.ts +22 -0
  72. package/src/config/paths.ts +43 -0
  73. package/src/config/schema.ts +121 -0
  74. package/src/db/connection.ts +20 -0
  75. package/src/db/export.ts +148 -0
  76. package/src/db/migrations.ts +42 -0
  77. package/src/index.ts +261 -0
  78. package/src/llm/claude.ts +193 -0
  79. package/src/llm/factory.ts +115 -0
  80. package/src/llm/failover.ts +101 -0
  81. package/src/llm/openai-compat.ts +409 -0
  82. package/src/llm/provider.ts +83 -0
  83. package/src/llm/smart-router.ts +241 -0
  84. package/src/logs.ts +53 -0
  85. package/src/memory/chunker.ts +58 -0
  86. package/src/memory/document-parser.ts +115 -0
  87. package/src/memory/embedder.ts +235 -0
  88. package/src/memory/engine.ts +170 -0
  89. package/src/memory/fts-index.ts +55 -0
  90. package/src/memory/hybrid-search.ts +72 -0
  91. package/src/memory/store.ts +56 -0
  92. package/src/memory/vector-index.ts +72 -0
  93. package/src/model.ts +118 -0
  94. package/src/registry/cli.ts +43 -0
  95. package/src/registry/client.ts +54 -0
  96. package/src/registry/installer.ts +67 -0
  97. package/src/scheduler/briefing.ts +71 -0
  98. package/src/scheduler/cron.ts +258 -0
  99. package/src/scheduler/heartbeat.ts +58 -0
  100. package/src/scheduler/memory-triggers.ts +100 -0
  101. package/src/scheduler/natural-cron.ts +163 -0
  102. package/src/scheduler/proactive.ts +25 -0
  103. package/src/scheduler/recipes.ts +110 -0
  104. package/src/secrets/store.ts +64 -0
  105. package/src/setup.ts +413 -0
  106. package/src/skills.ts +293 -0
  107. package/src/start.ts +373 -0
  108. package/src/status.ts +165 -0
  109. package/src/tools/builtin/connect-service.ts +205 -0
  110. package/src/tools/builtin/cron.ts +126 -0
  111. package/src/tools/builtin/datetime.ts +36 -0
  112. package/src/tools/builtin/delegate-task.ts +81 -0
  113. package/src/tools/builtin/delegate.ts +42 -0
  114. package/src/tools/builtin/diagnose.ts +41 -0
  115. package/src/tools/builtin/google-oauth.ts +379 -0
  116. package/src/tools/builtin/manage-agents.ts +149 -0
  117. package/src/tools/builtin/manage-skills.ts +294 -0
  118. package/src/tools/builtin/manage-teams.ts +89 -0
  119. package/src/tools/builtin/manage-triggers.ts +94 -0
  120. package/src/tools/builtin/manage-workflows.ts +119 -0
  121. package/src/tools/builtin/memory-search.ts +38 -0
  122. package/src/tools/builtin/memory-write.ts +30 -0
  123. package/src/tools/builtin/run-workflow.ts +36 -0
  124. package/src/tools/builtin/secrets.ts +122 -0
  125. package/src/tools/builtin/skill-registry.ts +75 -0
  126. package/src/tools/builtin-integrations/api-helpers.ts +26 -0
  127. package/src/tools/builtin-integrations/github/github_issues/SKILL.md +56 -0
  128. package/src/tools/builtin-integrations/github/github_issues/handler.ts +108 -0
  129. package/src/tools/builtin-integrations/github/github_prs/SKILL.md +57 -0
  130. package/src/tools/builtin-integrations/github/github_prs/handler.ts +113 -0
  131. package/src/tools/builtin-integrations/github/github_repos/SKILL.md +37 -0
  132. package/src/tools/builtin-integrations/github/github_repos/handler.ts +88 -0
  133. package/src/tools/builtin-integrations/google/gmail/SKILL.md +51 -0
  134. package/src/tools/builtin-integrations/google/gmail/handler.ts +125 -0
  135. package/src/tools/builtin-integrations/google/google_calendar/SKILL.md +35 -0
  136. package/src/tools/builtin-integrations/google/google_calendar/handler.ts +105 -0
  137. package/src/tools/builtin-integrations/google/google_docs/SKILL.md +35 -0
  138. package/src/tools/builtin-integrations/google/google_docs/handler.ts +108 -0
  139. package/src/tools/builtin-integrations/google/google_drive/SKILL.md +39 -0
  140. package/src/tools/builtin-integrations/google/google_drive/handler.ts +106 -0
  141. package/src/tools/builtin-integrations/google/google_sheets/SKILL.md +36 -0
  142. package/src/tools/builtin-integrations/google/google_sheets/handler.ts +116 -0
  143. package/src/tools/builtin-integrations/jira/jira_boards/SKILL.md +21 -0
  144. package/src/tools/builtin-integrations/jira/jira_boards/handler.ts +74 -0
  145. package/src/tools/builtin-integrations/jira/jira_issues/SKILL.md +28 -0
  146. package/src/tools/builtin-integrations/jira/jira_issues/handler.ts +140 -0
  147. package/src/tools/builtin-integrations/linear/linear_issues/SKILL.md +30 -0
  148. package/src/tools/builtin-integrations/linear/linear_issues/handler.ts +75 -0
  149. package/src/tools/builtin-integrations/linear/linear_projects/SKILL.md +21 -0
  150. package/src/tools/builtin-integrations/linear/linear_projects/handler.ts +43 -0
  151. package/src/tools/builtin-integrations/notion/notion_databases/SKILL.md +39 -0
  152. package/src/tools/builtin-integrations/notion/notion_databases/handler.ts +83 -0
  153. package/src/tools/builtin-integrations/notion/notion_pages/SKILL.md +43 -0
  154. package/src/tools/builtin-integrations/notion/notion_pages/handler.ts +130 -0
  155. package/src/tools/builtin-integrations/notion/notion_search/SKILL.md +27 -0
  156. package/src/tools/builtin-integrations/notion/notion_search/handler.ts +69 -0
  157. package/src/tools/builtin-integrations/slack/slack_messages/SKILL.md +42 -0
  158. package/src/tools/builtin-integrations/slack/slack_messages/handler.ts +72 -0
  159. package/src/tools/builtin-integrations/twitter/twitter_posts/SKILL.md +24 -0
  160. package/src/tools/builtin-integrations/twitter/twitter_posts/handler.ts +133 -0
  161. package/src/tools/builtin-skills/file-read/SKILL.md +26 -0
  162. package/src/tools/builtin-skills/file-read/handler.ts +66 -0
  163. package/src/tools/builtin-skills/file-write/SKILL.md +30 -0
  164. package/src/tools/builtin-skills/file-write/handler.ts +64 -0
  165. package/src/tools/builtin-skills/http-request/SKILL.md +34 -0
  166. package/src/tools/builtin-skills/http-request/handler.ts +87 -0
  167. package/src/tools/builtin-skills/shell/SKILL.md +26 -0
  168. package/src/tools/builtin-skills/shell/handler.ts +96 -0
  169. package/src/tools/builtin-skills/url-fetch/SKILL.md +26 -0
  170. package/src/tools/builtin-skills/url-fetch/handler.ts +37 -0
  171. package/src/tools/builtin-skills/web-search/SKILL.md +26 -0
  172. package/src/tools/builtin-skills/web-search/handler.ts +50 -0
  173. package/src/tools/executor.ts +205 -0
  174. package/src/tools/integration-installer.ts +106 -0
  175. package/src/tools/permissions.ts +45 -0
  176. package/src/tools/registry.ts +39 -0
  177. package/src/tools/sandbox-runner.ts +56 -0
  178. package/src/tools/sandbox.ts +82 -0
  179. package/src/tools/skill-installer.ts +52 -0
  180. package/src/tools/skill-loader.ts +259 -0
  181. package/src/types/optional-deps.d.ts +23 -0
  182. package/src/util/auth.ts +121 -0
  183. package/src/util/costs.ts +59 -0
  184. package/src/util/error-buffer.ts +32 -0
  185. package/src/util/google-tokens.ts +180 -0
  186. package/src/util/logger.ts +73 -0
  187. package/src/util/perf-collector.ts +35 -0
  188. package/src/util/rate-limiter.ts +70 -0
  189. package/src/util/tokens.ts +17 -0
  190. package/src/voice/stt.ts +57 -0
  191. package/src/voice/tts.ts +103 -0
  192. package/tests/agent/session.test.ts +109 -0
  193. package/tests/agent-loop.test.ts +54 -0
  194. package/tests/auth.test.ts +89 -0
  195. package/tests/channels.test.ts +67 -0
  196. package/tests/compaction.test.ts +44 -0
  197. package/tests/config.test.ts +51 -0
  198. package/tests/costs.test.ts +19 -0
  199. package/tests/cron.test.ts +55 -0
  200. package/tests/db/export.test.ts +219 -0
  201. package/tests/executor.test.ts +144 -0
  202. package/tests/export.test.ts +137 -0
  203. package/tests/helpers/mock-llm.ts +34 -0
  204. package/tests/helpers/test-db.ts +74 -0
  205. package/tests/integration/chat-flow.test.ts +48 -0
  206. package/tests/integrations.test.ts +97 -0
  207. package/tests/memory/engine.test.ts +114 -0
  208. package/tests/memory-engine.test.ts +57 -0
  209. package/tests/permissions.test.ts +21 -0
  210. package/tests/rate-limiter.test.ts +70 -0
  211. package/tests/registry.test.ts +67 -0
  212. package/tests/router.test.ts +36 -0
  213. package/tests/session.test.ts +58 -0
  214. package/tests/skill-loader.test.ts +44 -0
  215. package/tests/tokens.test.ts +30 -0
  216. package/tests/tools/executor.test.ts +130 -0
  217. package/tests/util/auth.test.ts +75 -0
  218. package/tests/util/rate-limiter.test.ts +73 -0
  219. package/tests/voice.test.ts +60 -0
  220. package/tests/webchat.test.ts +88 -0
  221. package/tests/workflow.test.ts +38 -0
  222. package/tsconfig.json +16 -0
package/site/docs.css ADDED
@@ -0,0 +1,412 @@
1
+ /* ============================================
2
+ Zubo Docs — docs.css
3
+ Layout & typography for documentation pages
4
+ ============================================ */
5
+
6
+ /* --- Docs Layout --- */
7
+ .docs-layout {
8
+ display: flex;
9
+ min-height: calc(100vh - var(--nav-h));
10
+ margin-top: var(--nav-h);
11
+ }
12
+
13
+ /* --- Docs Sidebar --- */
14
+ .docs-sidebar {
15
+ width: 260px;
16
+ flex-shrink: 0;
17
+ position: sticky;
18
+ top: var(--nav-h);
19
+ height: calc(100vh - var(--nav-h));
20
+ overflow-y: auto;
21
+ padding: 32px 24px;
22
+ border-right: 1px solid var(--border);
23
+ background: var(--bg-elevated);
24
+ }
25
+
26
+ .docs-sidebar-section {
27
+ margin-bottom: 28px;
28
+ }
29
+
30
+ .docs-sidebar-heading {
31
+ font-family: var(--display);
32
+ font-size: 11px;
33
+ font-weight: 700;
34
+ text-transform: uppercase;
35
+ letter-spacing: 0.1em;
36
+ color: var(--text-muted);
37
+ margin-bottom: 12px;
38
+ padding-left: 12px;
39
+ }
40
+
41
+ .docs-sidebar-links {
42
+ display: flex;
43
+ flex-direction: column;
44
+ gap: 2px;
45
+ }
46
+
47
+ .docs-sidebar-links a {
48
+ display: block;
49
+ padding: 8px 12px;
50
+ font-size: 13px;
51
+ font-weight: 500;
52
+ color: var(--text-secondary);
53
+ border-radius: 8px;
54
+ transition: all 0.2s;
55
+ text-decoration: none;
56
+ }
57
+
58
+ .docs-sidebar-links a:hover {
59
+ color: #fff;
60
+ background: rgba(255, 255, 255, 0.04);
61
+ }
62
+
63
+ .docs-sidebar-links a.active {
64
+ color: #c4b5fd;
65
+ background: rgba(124, 58, 237, 0.1);
66
+ font-weight: 600;
67
+ }
68
+
69
+ /* --- Mobile sidebar toggle --- */
70
+ .docs-sidebar-toggle {
71
+ display: none;
72
+ position: fixed;
73
+ bottom: 24px;
74
+ right: 24px;
75
+ z-index: 100;
76
+ width: 48px;
77
+ height: 48px;
78
+ border-radius: 50%;
79
+ background: var(--gradient);
80
+ border: none;
81
+ color: #fff;
82
+ font-size: 20px;
83
+ cursor: pointer;
84
+ box-shadow: 0 4px 16px rgba(124, 58, 237, 0.4);
85
+ align-items: center;
86
+ justify-content: center;
87
+ }
88
+
89
+ /* --- Docs Content --- */
90
+ .docs-content {
91
+ flex: 1;
92
+ min-width: 0;
93
+ max-width: 800px;
94
+ padding: 40px 48px 80px;
95
+ }
96
+
97
+ /* --- Typography --- */
98
+ .docs-content h1 {
99
+ font-family: var(--display);
100
+ font-size: clamp(2rem, 4vw, 2.8rem);
101
+ font-weight: 800;
102
+ letter-spacing: -0.03em;
103
+ line-height: 1.15;
104
+ margin-bottom: 16px;
105
+ color: #fff;
106
+ }
107
+
108
+ .docs-content h2 {
109
+ font-family: var(--display);
110
+ font-size: 1.5rem;
111
+ font-weight: 700;
112
+ letter-spacing: -0.02em;
113
+ margin-top: 48px;
114
+ margin-bottom: 16px;
115
+ padding-bottom: 12px;
116
+ border-bottom: 1px solid var(--border);
117
+ color: #fff;
118
+ }
119
+
120
+ .docs-content h3 {
121
+ font-family: var(--display);
122
+ font-size: 1.15rem;
123
+ font-weight: 700;
124
+ letter-spacing: -0.01em;
125
+ margin-top: 32px;
126
+ margin-bottom: 12px;
127
+ color: var(--text);
128
+ }
129
+
130
+ .docs-content h4 {
131
+ font-family: var(--display);
132
+ font-size: 1rem;
133
+ font-weight: 600;
134
+ margin-top: 24px;
135
+ margin-bottom: 8px;
136
+ color: var(--text);
137
+ }
138
+
139
+ .docs-content p {
140
+ font-size: 15px;
141
+ line-height: 1.75;
142
+ color: var(--text-secondary);
143
+ margin-bottom: 16px;
144
+ }
145
+
146
+ .docs-content a {
147
+ color: #a78bfa;
148
+ text-decoration: underline;
149
+ text-underline-offset: 2px;
150
+ transition: color 0.2s;
151
+ }
152
+
153
+ .docs-content a:hover {
154
+ color: #c4b5fd;
155
+ }
156
+
157
+ .docs-content strong {
158
+ font-weight: 600;
159
+ color: #fff;
160
+ }
161
+
162
+ .docs-content em {
163
+ font-style: italic;
164
+ color: var(--text);
165
+ }
166
+
167
+ /* --- Inline code --- */
168
+ .docs-content code {
169
+ font-family: var(--mono);
170
+ font-size: 0.875em;
171
+ background: rgba(255, 255, 255, 0.06);
172
+ padding: 2px 7px;
173
+ border-radius: 5px;
174
+ color: #c4b5fd;
175
+ }
176
+
177
+ /* --- Code blocks --- */
178
+ .docs-content pre {
179
+ margin: 20px 0;
180
+ background: #0c0c10;
181
+ border: 1px solid var(--border);
182
+ border-radius: var(--radius);
183
+ overflow-x: auto;
184
+ }
185
+
186
+ .docs-content pre code {
187
+ display: block;
188
+ padding: 20px 24px;
189
+ background: transparent;
190
+ color: var(--text-secondary);
191
+ font-size: 13px;
192
+ line-height: 1.8;
193
+ border-radius: 0;
194
+ }
195
+
196
+ /* --- Tables --- */
197
+ .docs-content table {
198
+ width: 100%;
199
+ border-collapse: collapse;
200
+ margin: 20px 0;
201
+ font-size: 14px;
202
+ }
203
+
204
+ .docs-content th {
205
+ text-align: left;
206
+ padding: 12px 16px;
207
+ font-size: 12px;
208
+ font-weight: 600;
209
+ text-transform: uppercase;
210
+ letter-spacing: 0.05em;
211
+ color: var(--text-muted);
212
+ border-bottom: 1px solid var(--border);
213
+ background: rgba(255, 255, 255, 0.02);
214
+ }
215
+
216
+ .docs-content td {
217
+ padding: 12px 16px;
218
+ border-bottom: 1px solid var(--border);
219
+ color: var(--text-secondary);
220
+ vertical-align: top;
221
+ }
222
+
223
+ .docs-content td code {
224
+ font-size: 12px;
225
+ white-space: nowrap;
226
+ }
227
+
228
+ .docs-content tr:hover td {
229
+ background: rgba(255, 255, 255, 0.02);
230
+ }
231
+
232
+ /* --- Lists --- */
233
+ .docs-content ul,
234
+ .docs-content ol {
235
+ margin: 12px 0 20px;
236
+ padding-left: 24px;
237
+ }
238
+
239
+ .docs-content li {
240
+ font-size: 15px;
241
+ line-height: 1.75;
242
+ color: var(--text-secondary);
243
+ margin-bottom: 6px;
244
+ }
245
+
246
+ .docs-content li code {
247
+ font-size: 0.85em;
248
+ }
249
+
250
+ /* --- Blockquote / Callouts --- */
251
+ .docs-content blockquote {
252
+ margin: 20px 0;
253
+ padding: 16px 20px;
254
+ background: rgba(124, 58, 237, 0.06);
255
+ border-left: 3px solid var(--violet);
256
+ border-radius: 0 var(--radius) var(--radius) 0;
257
+ }
258
+
259
+ .docs-content blockquote p {
260
+ margin: 0;
261
+ color: var(--text);
262
+ }
263
+
264
+ /* --- Horizontal rule --- */
265
+ .docs-content hr {
266
+ border: none;
267
+ height: 1px;
268
+ background: var(--border);
269
+ margin: 40px 0;
270
+ }
271
+
272
+ /* --- Docs breadcrumb --- */
273
+ .docs-breadcrumb {
274
+ font-size: 13px;
275
+ color: var(--text-muted);
276
+ margin-bottom: 24px;
277
+ }
278
+
279
+ .docs-breadcrumb a {
280
+ color: var(--text-muted);
281
+ text-decoration: none;
282
+ }
283
+
284
+ .docs-breadcrumb a:hover {
285
+ color: var(--text);
286
+ }
287
+
288
+ .docs-breadcrumb span {
289
+ margin: 0 6px;
290
+ opacity: 0.5;
291
+ }
292
+
293
+ /* --- Architecture diagram (ASCII block) --- */
294
+ .docs-arch {
295
+ background: #0c0c10;
296
+ border: 1px solid var(--border);
297
+ border-radius: var(--radius);
298
+ padding: 24px;
299
+ font-family: var(--mono);
300
+ font-size: 12px;
301
+ line-height: 1.6;
302
+ color: var(--text-secondary);
303
+ overflow-x: auto;
304
+ white-space: pre;
305
+ margin: 20px 0;
306
+ }
307
+
308
+ /* --- Docs page nav (prev/next) --- */
309
+ .docs-page-nav {
310
+ display: flex;
311
+ gap: 16px;
312
+ margin-top: 64px;
313
+ padding-top: 32px;
314
+ border-top: 1px solid var(--border);
315
+ }
316
+
317
+ .docs-page-nav a {
318
+ flex: 1;
319
+ display: flex;
320
+ flex-direction: column;
321
+ gap: 4px;
322
+ padding: 16px 20px;
323
+ background: var(--bg-card);
324
+ border: 1px solid var(--border);
325
+ border-radius: var(--radius);
326
+ text-decoration: none;
327
+ transition: all 0.2s;
328
+ }
329
+
330
+ .docs-page-nav a:hover {
331
+ border-color: rgba(124, 58, 237, 0.3);
332
+ background: var(--bg-card-hover);
333
+ }
334
+
335
+ .docs-page-nav .nav-dir {
336
+ font-size: 12px;
337
+ color: var(--text-muted);
338
+ font-weight: 500;
339
+ }
340
+
341
+ .docs-page-nav .nav-label {
342
+ font-size: 14px;
343
+ font-weight: 600;
344
+ color: var(--text);
345
+ }
346
+
347
+ .docs-page-nav a:last-child {
348
+ text-align: right;
349
+ }
350
+
351
+ /* ========== RESPONSIVE ========== */
352
+ @media (max-width: 768px) {
353
+ .docs-sidebar {
354
+ position: fixed;
355
+ top: var(--nav-h);
356
+ left: 0;
357
+ bottom: 0;
358
+ z-index: 99;
359
+ transform: translateX(-100%);
360
+ transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1);
361
+ box-shadow: none;
362
+ }
363
+
364
+ .docs-sidebar.open {
365
+ transform: translateX(0);
366
+ box-shadow: 4px 0 24px rgba(0, 0, 0, 0.5);
367
+ }
368
+
369
+ .docs-sidebar-toggle {
370
+ display: flex;
371
+ }
372
+
373
+ .docs-content {
374
+ padding: 28px 20px 60px;
375
+ }
376
+
377
+ .docs-content h1 {
378
+ font-size: 1.8rem;
379
+ }
380
+
381
+ .docs-content h2 {
382
+ font-size: 1.3rem;
383
+ }
384
+
385
+ .docs-page-nav {
386
+ flex-direction: column;
387
+ }
388
+
389
+ .docs-page-nav a:last-child {
390
+ text-align: left;
391
+ }
392
+ }
393
+
394
+ @media (max-width: 480px) {
395
+ .docs-content {
396
+ padding: 20px 16px 60px;
397
+ }
398
+
399
+ .docs-content pre code {
400
+ font-size: 11px;
401
+ padding: 14px 16px;
402
+ }
403
+
404
+ .docs-content table {
405
+ font-size: 12px;
406
+ }
407
+
408
+ .docs-content th,
409
+ .docs-content td {
410
+ padding: 8px 10px;
411
+ }
412
+ }