From eddabc9d000aaa287d5a308a32135ae8ffeae364 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Wed, 26 Aug 2026 02:51:06 +0000 Subject: [PATCH] Add Fumadocs plugin/theme API site matching docs-site tooling. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Static-export Next.js site for developers.dripnex.app, sourced from @dripnex/plugin-api types (PluginContext, tokens, layout zones) rather than stale user-manual MDX. Publish path is git tag + packed GitHub release; no marketplace. Co-authored-by: Tomás Maritano --- .env.example | 3 + .github/workflows/ci.yml | 24 +++ .gitignore | 9 + README.md | 31 +++- app/[[...slug]]/page.tsx | 61 +++++++ app/globals.css | 135 +++++++++++++++ app/layout.tsx | 76 ++++++++ app/not-found.tsx | 19 ++ content/docs/getting-started/index.mdx | 161 +++++++++++++++++ content/docs/getting-started/init-file.mdx | 86 ++++++++++ content/docs/getting-started/meta.json | 4 + content/docs/getting-started/style-tweaks.mdx | 59 +++++++ content/docs/guides/create-a-plugin.mdx | 162 ++++++++++++++++++ content/docs/guides/create-a-theme.mdx | 115 +++++++++++++ content/docs/guides/meta.json | 4 + content/docs/guides/publishing.mdx | 79 +++++++++ content/docs/index.mdx | 61 +++++++ content/docs/meta.json | 13 ++ content/docs/reference/commands.mdx | 90 ++++++++++ content/docs/reference/data.mdx | 96 +++++++++++ content/docs/reference/editor.mdx | 79 +++++++++ content/docs/reference/examples.mdx | 144 ++++++++++++++++ content/docs/reference/layout-zones.mdx | 89 ++++++++++ content/docs/reference/meta.json | 12 ++ content/docs/reference/plugin-context.mdx | 123 +++++++++++++ content/docs/reference/themes.mdx | 58 +++++++ lib/layout.shared.tsx | 37 ++++ lib/site.ts | 4 + lib/source.ts | 7 + mdx-components.tsx | 29 ++++ next-env.d.ts | 5 + next.config.mjs | 12 ++ package.json | 35 ++++ postcss.config.mjs | 7 + public/apple-touch-icon.png | Bin 0 -> 8321 bytes public/favicon.ico | Bin 0 -> 52494 bytes public/favicon.png | Bin 0 -> 1902 bytes public/icon.png | Bin 0 -> 116051 bytes public/logo.png | Bin 0 -> 17374 bytes source.config.ts | 7 + tsconfig.json | 32 ++++ 41 files changed, 1966 insertions(+), 2 deletions(-) create mode 100644 .env.example create mode 100644 .github/workflows/ci.yml create mode 100644 .gitignore create mode 100644 app/[[...slug]]/page.tsx create mode 100644 app/globals.css create mode 100644 app/layout.tsx create mode 100644 app/not-found.tsx create mode 100644 content/docs/getting-started/index.mdx create mode 100644 content/docs/getting-started/init-file.mdx create mode 100644 content/docs/getting-started/meta.json create mode 100644 content/docs/getting-started/style-tweaks.mdx create mode 100644 content/docs/guides/create-a-plugin.mdx create mode 100644 content/docs/guides/create-a-theme.mdx create mode 100644 content/docs/guides/meta.json create mode 100644 content/docs/guides/publishing.mdx create mode 100644 content/docs/index.mdx create mode 100644 content/docs/meta.json create mode 100644 content/docs/reference/commands.mdx create mode 100644 content/docs/reference/data.mdx create mode 100644 content/docs/reference/editor.mdx create mode 100644 content/docs/reference/examples.mdx create mode 100644 content/docs/reference/layout-zones.mdx create mode 100644 content/docs/reference/meta.json create mode 100644 content/docs/reference/plugin-context.mdx create mode 100644 content/docs/reference/themes.mdx create mode 100644 lib/layout.shared.tsx create mode 100644 lib/site.ts create mode 100644 lib/source.ts create mode 100644 mdx-components.tsx create mode 100644 next-env.d.ts create mode 100644 next.config.mjs create mode 100644 package.json create mode 100644 postcss.config.mjs create mode 100644 public/apple-touch-icon.png create mode 100644 public/favicon.ico create mode 100644 public/favicon.png create mode 100644 public/icon.png create mode 100644 public/logo.png create mode 100644 source.config.ts create mode 100644 tsconfig.json diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..4282300 --- /dev/null +++ b/.env.example @@ -0,0 +1,3 @@ +NEXT_PUBLIC_SITE_URL=https://dripnex.app +NEXT_PUBLIC_DOCS_URL=https://docs.dripnex.app +NEXT_PUBLIC_DEVELOPERS_URL=https://developers.dripnex.app diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..6ebe4e3 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,24 @@ +name: CI + +on: + push: + branches: [main] + pull_request: + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + - uses: pnpm/action-setup@v5 + - uses: actions/setup-node@v5 + with: + node-version: '22' + cache: 'pnpm' + - run: pnpm install --frozen-lockfile + - run: pnpm typecheck + - run: pnpm build + env: + NEXT_PUBLIC_SITE_URL: https://dripnex.app + NEXT_PUBLIC_DOCS_URL: https://docs.dripnex.app + NEXT_PUBLIC_DEVELOPERS_URL: https://dripnex-developers.pages.dev diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b4d1521 --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +.next/ +.source/ +node_modules/ +out/ +.vercel +.env +.env.local +*.tsbuildinfo +.wrangler/ diff --git a/README.md b/README.md index 8e8f86a..5be6a98 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,29 @@ -# developers -Dripnex developer docs — plugin and theme API (Fumadocs). Mirrors developers.inkdrop.app. +# Dripnex developers + +Plugin and theme API docs for Dripnex. Fumadocs + Next.js static export on Cloudflare Pages. + +Modeled on [developers.inkdrop.app](https://developers.inkdrop.app/). The user manual lives in [`dripnex/docs-site`](https://github.com/dripnex/docs-site) ([docs.dripnex.app](https://docs.dripnex.app)). Marketing lives in [`dripnex/marketing`](https://github.com/dripnex/marketing). + +The API described here is `@dripnex/plugin-api` in [`dripnex/app`](https://github.com/dripnex/app) (`packages/plugin-api`, default branch `develop`). `PLUGIN_API_VERSION` is `"1"`. + +## Develop + +```bash +pnpm install +pnpm dev +``` + +Content is MDX under `content/docs/`. The site is served at `/`. + +## Deploy + +```bash +NEXT_PUBLIC_SITE_URL=https://dripnex.app \ +NEXT_PUBLIC_DOCS_URL=https://docs.dripnex.app \ +NEXT_PUBLIC_DEVELOPERS_URL=https://dripnex-developers.pages.dev \ +pnpm deploy +``` + +Pages project: `dripnex-developers` → https://dripnex-developers.pages.dev + +When DNS is ready, CNAME `developers` → `dripnex-developers.pages.dev` (proxied). diff --git a/app/[[...slug]]/page.tsx b/app/[[...slug]]/page.tsx new file mode 100644 index 0000000..7ae8e29 --- /dev/null +++ b/app/[[...slug]]/page.tsx @@ -0,0 +1,61 @@ +import { notFound } from 'next/navigation'; +import { DocsPage, DocsBody, DocsTitle, DocsDescription } from 'fumadocs-ui/page'; +import defaultMdxComponents from 'fumadocs-ui/mdx'; +import { Card, Cards } from 'fumadocs-ui/components/card'; +import { Callout } from 'fumadocs-ui/components/callout'; +import { Step, Steps } from 'fumadocs-ui/components/steps'; +import { Tab, Tabs } from 'fumadocs-ui/components/tabs'; +import { Accordion, Accordions } from 'fumadocs-ui/components/accordion'; +import { File, Folder, Files } from 'fumadocs-ui/components/files'; +import { TypeTable } from 'fumadocs-ui/components/type-table'; +import { source } from '@/lib/source'; + +const mdxComponents = { + ...defaultMdxComponents, + Card, + Cards, + Callout, + Step, + Steps, + Tab, + Tabs, + Accordion, + Accordions, + File, + Folder, + Files, + TypeTable, +}; + +export default async function Page(props: { params: Promise<{ slug?: string[] }> }) { + const params = await props.params; + const page = source.getPage(params.slug); + if (!page) notFound(); + + const MDX = page.data.body; + + return ( + + {page.data.title} + {page.data.description} + + + + + ); +} + +export function generateStaticParams() { + return source.generateParams(); +} + +export async function generateMetadata(props: { params: Promise<{ slug?: string[] }> }) { + const params = await props.params; + const page = source.getPage(params.slug); + if (!page) notFound(); + + return { + title: page.data.title, + description: page.data.description, + }; +} diff --git a/app/globals.css b/app/globals.css new file mode 100644 index 0000000..5de9cf3 --- /dev/null +++ b/app/globals.css @@ -0,0 +1,135 @@ +@import 'tailwindcss'; +@import 'fumadocs-ui/css/neutral.css'; +@import 'fumadocs-ui/css/preset.css'; + +@theme { + --color-background: #09090b; + --color-surface: #111113; + --color-surface-elevated: #1a1a1f; + --color-inset: #0c0c0e; + --color-border: #27272a; + --color-border-accent: rgba(255, 255, 255, 0.12); + + --color-text-primary: #fafafa; + --color-text-secondary: #a1a1aa; + --color-text-muted: #52525b; + + --color-accent: #a1a1aa; + --color-accent-hover: #d4d4d8; + --color-accent-glow: rgba(255, 255, 255, 0.06); + + --font-sans: 'Inter', ui-sans-serif, system-ui, sans-serif; + --font-mono: 'JetBrains Mono Variable', ui-monospace, monospace; +} + +:root, +.dark { + --rd-violet: #8b5cf6; + --rd-violet-light: #a78bfa; + --rd-violet-lighter: #c4b5fd; + --rd-violet-glow-10: rgba(139, 92, 246, 0.1); + --rd-violet-glow-12: rgba(139, 92, 246, 0.12); + --rd-violet-glow-20: rgba(139, 92, 246, 0.2); + --rd-violet-glow-30: rgba(139, 92, 246, 0.3); + --rd-violet-glow-08: rgba(139, 92, 246, 0.08); + --rd-surface: #111113; + --rd-inset: #0c0c0e; + --rd-foreground: #fafafa; + --rd-muted-foreground: #a1a1aa; + --rd-subtle-foreground: #e4e4e7; + --rd-faint: #52525b; + --rd-border-subtle: rgba(255, 255, 255, 0.06); + --rd-border: rgba(255, 255, 255, 0.08); + + --color-fd-background: #09090b; + --color-fd-foreground: var(--rd-foreground); + --color-fd-muted: var(--rd-surface); + --color-fd-muted-foreground: var(--rd-muted-foreground); + --color-fd-popover: var(--rd-surface); + --color-fd-popover-foreground: var(--rd-subtle-foreground); + --color-fd-card: var(--rd-surface); + --color-fd-card-foreground: var(--rd-foreground); + --color-fd-border: var(--rd-border); + --color-fd-primary: var(--rd-violet); + --color-fd-primary-foreground: #ffffff; + --color-fd-secondary: #1a1a1f; + --color-fd-secondary-foreground: var(--rd-subtle-foreground); + --color-fd-accent: var(--rd-violet-glow-12); + --color-fd-accent-foreground: var(--rd-subtle-foreground); + --color-fd-ring: var(--rd-violet); +} + +.fd-sidebar { + --fd-sidebar-width: 260px; +} + +.fd-sidebar [data-active='true'] { + color: var(--rd-violet) !important; +} + +nav[data-fumadocs] { + border-bottom: 1px solid var(--rd-border-subtle); +} + +pre:has(code) { + background: var(--rd-inset) !important; + border: 1px solid var(--rd-border-subtle); + border-radius: 0.75rem; +} + +:not(pre) > code { + background: var(--rd-violet-glow-10) !important; + color: var(--rd-violet-lighter) !important; + border: 1px solid var(--rd-violet-glow-20); + border-radius: 0.375rem; + padding: 0.125rem 0.375rem; + font-size: 0.875em; +} + +[data-toc] a[data-active='true'] { + color: var(--rd-violet); + border-left-color: var(--rd-violet); +} + +.fd-card { + background: var(--rd-surface); + border-color: var(--rd-border); + transition: + border-color 0.2s, + box-shadow 0.2s; +} + +.fd-card:hover { + border-color: var(--rd-violet-glow-30); + box-shadow: 0 0 30px var(--rd-violet-glow-08); +} + +[data-fumadocs-search] { + --color-fd-background: var(--rd-inset); + --color-fd-popover: var(--rd-surface); +} + +nav[aria-label='Breadcrumb'] { + color: var(--rd-faint); +} + +nav[aria-label='Breadcrumb'] a:hover { + color: var(--rd-violet); +} + +.fd-page h1, +.fd-page h2, +.fd-page h3, +.fd-page h4 { + color: var(--rd-foreground); +} + +.fd-page a:not([class]) { + color: var(--rd-violet-light); + text-decoration-color: var(--rd-violet-glow-30); +} + +.fd-page a:not([class]):hover { + color: var(--rd-violet-lighter); + text-decoration-color: var(--rd-violet); +} diff --git a/app/layout.tsx b/app/layout.tsx new file mode 100644 index 0000000..62ad604 --- /dev/null +++ b/app/layout.tsx @@ -0,0 +1,76 @@ +import './globals.css'; +import '@fontsource/inter/400.css'; +import '@fontsource/inter/500.css'; +import '@fontsource/inter/600.css'; +import '@fontsource/inter/700.css'; +import '@fontsource-variable/jetbrains-mono'; +import { RootProvider } from 'fumadocs-ui/provider/next'; +import { DocsLayout } from 'fumadocs-ui/layouts/docs'; +import type { ReactNode } from 'react'; +import type { Metadata } from 'next'; +import { source } from '@/lib/source'; +import { baseOptions } from '@/lib/layout.shared'; +import { DEVELOPERS_URL, DOCS_URL } from '@/lib/site'; + +export const metadata: Metadata = { + metadataBase: new URL(DEVELOPERS_URL), + title: { + default: 'Dripnex Developers', + template: '%s | Dripnex Developers', + }, + description: + 'Plugin and theme API for Dripnex — extend the desktop editor with commands, CodeMirror, layout zones, and palettes.', + applicationName: 'Dripnex Developers', + icons: { + icon: [ + { url: '/favicon.ico' }, + { url: '/favicon.png', type: 'image/png', sizes: '32x32' }, + { url: '/icon.png', type: 'image/png', sizes: '512x512' }, + ], + apple: [{ url: '/apple-touch-icon.png', sizes: '180x180' }], + }, + openGraph: { + type: 'website', + url: DEVELOPERS_URL, + siteName: 'Dripnex Developers', + images: [{ url: '/icon.png', width: 512, height: 512, alt: 'Dripnex' }], + }, + twitter: { + card: 'summary', + images: ['/icon.png'], + }, +}; + +export default function RootLayout({ children }: { children: ReactNode }) { + return ( + + + + +

+ Desktop plugin API.{' '} + + User manual + +

+ + ), + }} + > + {children} +
+
+ + + ); +} diff --git a/app/not-found.tsx b/app/not-found.tsx new file mode 100644 index 0000000..96a745f --- /dev/null +++ b/app/not-found.tsx @@ -0,0 +1,19 @@ +import Link from 'next/link'; + +export default function NotFound() { + return ( +
+

404

+

This page wandered off

+

+ That API page doesn't exist, or the URL changed. +

+ + Back to the API + +
+ ); +} diff --git a/content/docs/getting-started/index.mdx b/content/docs/getting-started/index.mdx new file mode 100644 index 0000000..cadc4a0 --- /dev/null +++ b/content/docs/getting-started/index.mdx @@ -0,0 +1,161 @@ +--- +title: Plugin structure +description: How a Dripnex plugin repo is laid out — manifest, main, and package files +--- + +# Plugin structure + +A community plugin is **its own git repository**. It is not a folder inside `dripnex/app`. Version is the git tag. The install artifact is a tarball from `dripnex-plugin pack` attached to a GitHub release. + +## What Dripnex loads + +Two worlds share one `PluginHost`: + +| Kind | Where it lives | How it activates | +| ---- | -------------- | ---------------- | +| **Built-in** | Shipped in the desktop bundle | Enabled unless `plugin_registry.enabled === false` | +| **Discovered** | `userData/plugins//` | Scanner → `loadPluginFromSource()` → same host | +| **Hackable files** | Data directory (`init.js`, `styles.css`, `keybindings.json`) | `init.js` loads as plugin `user-init` | + +Discovered packs always live in user data. There is no extraResources plugin tree in the app bundle. + +### Plugins directory (packaged desktop) + +| OS | Path | +| -- | ---- | +| macOS | `~/Library/Application Support/Dripnex/plugins` | +| Linux | `~/.config/Dripnex/plugins` | +| Windows | `%APPDATA%/Dripnex/plugins` | + +Override with `DRIPNEX_DATA_DIR` or `--user-data-dir` if the CLI and the app disagree about the folder. + +## Repo layout + +`dripnex-plugin init "My Plugin"` writes: + + + + + + + + + + + + + + + + + + + + + + + + +On disk after install, the scanner expects: + +``` +userData/plugins// + manifest.json # id, name, version, main?, configSchema? +
# usually dist/index.js + keymaps/ menus/ styles/ themes/ # optional + theme.json # optional palette +``` + +A folder is skipped unless `manifest.main` exists **or** it is theme-only (`theme.json` / `themes/`). + +## Manifest + +`manifest.json` is the on-disk identity. The **evaluated** module must export the same `id` as `manifest.json`. + +```json +{ + "id": "stamp", + "name": "Stamp", + "version": "0.1.0", + "description": "Insert the current date or timestamp at the cursor.", + "main": "dist/index.js" +} +``` + +| Field | Required | Rules | +| ----- | -------- | ----- | +| `id` | Yes | Kebab-case (`^[a-z][a-z0-9]*(-[a-z0-9]+)*$`). Install folder name. | +| `name` | Yes | Display name | +| `version` | Yes | Semver `major.minor.patch` (optional pre-release / build) | +| `description` | No | Short summary | +| `main` | For JS packs | Path to the bundled CommonJS file | +| `apiVersion` | No | Target plugin API major (current: `"1"`) | +| `configSchema` | No | Settings fields rendered in Settings → Plugins | +| `dependencies` | No | `pluginId` → semver range of other packs | + +`id`, `name`, `version`, and `activate` are also validated on the **exported** module (`validateManifest` in `@dripnex/plugin-api`). + +## The module must be CommonJS + +The renderer evaluates `main` with `new Function('module', 'exports', 'require', code)`. The export must be: + +```js +module.exports = { + id: 'stamp', + name: 'Stamp', + version: '0.1.0', + activate(context) { + /* … */ + return { dispose() { /* unregister */ } }; + }, +}; +``` + +If the filesystem `manifest.json` `id` and `module.exports.id` disagree, the pack is rejected. + +Host `require()` is a whitelist. Anything else must be **bundled into** `index.js`: + +- `react`, `react-dom`, `react/jsx-runtime` +- `@codemirror/state`, `@codemirror/view`, `@codemirror/language`, `@codemirror/commands`, `@codemirror/search` +- `@dripnex/plugin-api` + +That is why [dripnex/plugin-vim](https://github.com/dripnex/plugin-vim) bundles `@replit/codemirror-vim` instead of requiring it. + +## Declarative package files + +Applied **after** `activate()` from `packages/plugin-api` package-file parsers: + +| Path | Role | +| ---- | ---- | +| `keymaps/*.json` | Default chords for commands this pack already registered (`plugin::…` only) | +| `menus/*.json` | Plugins menu + context menus | +| `styles/*.css` | Injected stylesheets | +| `theme.json` / `themes/*.json` | Token palettes | + +Keymap chords only bind if the command was registered in `activate()`. They cannot rebind core `app:` / `editor:` commands. + +## Plugin contract + +Keep markdown portable. These are product rules, not extra host checks: + +1. **Removable without breaking `.md` files** — uninstall and notes stay valid markdown. +2. **No new syntax** other editors cannot read. +3. **No automatic content mutation** — never rewrite the user's markdown without an explicit command. +4. **Not required to interpret text** — notes must be readable without the pack. +5. **No inter-note dependencies** that break if a note is moved or deleted. + +## Official satellites (verified) + +Install with `dripnex-plugin install owner/repo` or **Settings → Plugins → Connect**. Manifest id, GitHub repo, and any registry slug are **not** interchangeable. + +| Repo | Manifest id | What it actually does | +| ---- | ----------- | --------------------- | +| [dripnex/plugin-stamp](https://github.com/dripnex/plugin-stamp) | `stamp` | Insert date / timestamp at the cursor | +| [dripnex/plugin-mermaid](https://github.com/dripnex/plugin-mermaid) | `mermaid` | Insert a ` ```mermaid ` fence. **No renderer.** Diagrams are the built-in `dripnex-mermaid` pack. | +| [dripnex/plugin-math](https://github.com/dripnex/plugin-math) | `math` | Insert `$$…$$`. **No KaTeX.** Math rendering is the built-in `dripnex-math` pack. | +| [dripnex/plugin-vim](https://github.com/dripnex/plugin-vim) | `dripnex-vim-mode` | Real `@replit/codemirror-vim`. Install spec is `dripnex/plugin-vim`, not the manifest id. | +| [dripnex/theme-parchment](https://github.com/dripnex/theme-parchment) | `theme-parchment` | Official warm-paper palette. Many other palettes live in `dripnex/theme-*` repos. | + +Built-in mermaid, math, and tables **renderers** ship in the app. Do not treat the mermaid/math satellites as those renderers. + +Next: the [init file](/getting-started/init-file) and [style tweaks](/getting-started/style-tweaks), then [create a plugin](/guides/create-a-plugin). diff --git a/content/docs/getting-started/init-file.mdx b/content/docs/getting-started/init-file.mdx new file mode 100644 index 0000000..e46df66 --- /dev/null +++ b/content/docs/getting-started/init-file.mdx @@ -0,0 +1,86 @@ +--- +title: The init file +description: Customize Dripnex on startup with init.js — the host PluginContext, not Inkdrop’s Atom APIs +--- + +# The init file + +`init.js` is a **user file** in the data directory, not a plugin repo. Open it from **Settings → Plugins**. Dripnex writes a template on first open. + +It is the same idea as Inkdrop's init file: run JavaScript at startup. The object you get is **Dripnex's** host API (`createInitApi` in `@dripnex/plugin-api`), not Inkdrop's Atom-style `inkdrop` global. + +## Two formats + +`loadInitScript()` accepts: + +1. **Free-form (default).** The file is wrapped as plugin `user-init` and runs at activate with a `dripnex` argument. +2. **CommonJS `PluginManifest`.** If the file assigns `module.exports` / `exports.*` and looks like a manifest (`id`, `activate`, `name`, or `version`), it is validated and loaded as a normal pack. + +Free-form is what the default template uses (`dripnex.menu.add`, `dripnex.commands.add`). Do not assume a browser `window.dripnex` with a `.menu` — the host injects the init API as the `dripnex` function argument. + +```js +dripnex.commands.add('paste-as-link', 'Paste as Link', () => { + const { from, to } = dripnex.editor.getSelection(); + const text = dripnex.editor.getContent().slice(from, to); + dripnex.editor.replaceRange(from, to, '[' + text + '](url)'); +}); +``` + +Reload plugins (**Settings → Plugins → Reload**) after saving. + +## The `dripnex` object (`InitApi`) + +| Surface | Notes | +| ------- | ----- | +| `editor`, `app`, `data`, `log`, `config`, `layout`, `decorations` | Same as `PluginContext` | +| `store` | Read-only snapshot. **No** `store.dispatch`. | +| `commands.add(id, name, execute, options?)` | Registers a command (palette) | +| `commands.dispatch(id, payload?)` | Host or plugin command (`app:save-note`, `plugin:…`) | +| `registerCommand`, `registerExtensions`, `registerAiCommand` | Same as context | +| `registerCssVariables`, `registerTheme`, `themes` | Palettes | +| `registerRemarkPlugin`, `registerRehypePlugin`, `registerPreviewComponent`, `registerCodeBlockRenderer` | Preview pipeline | +| `menu`, `clipboard`, `notifications`, `contextMenu`, `preview`, `components`, `markdownRenderer` | Same as context | +| `vim` | `@replit/codemirror-vim` `Vim` object **when** [plugin-vim](https://github.com/dripnex/plugin-vim) is loaded; otherwise unavailable | +| `getActiveEditor()` | `{ editor, cm }` where `cm` is `editor.getView()` (live CodeMirror 6 view or `null`) | + +There is no Inkdrop `inkdrop.packages`, `CompositeDisposable`, or Atom command registry. Map keys with `dripnex.commands.add` / `registerCommand`, or with `Vim.map` after the Vim pack has called `registerVim`. + +## Read-only store + +```js +const { editingNote, notes, navigation } = dripnex.store.getState(); + +const unsub = dripnex.store.subscribe(() => { + const { editingNote: next } = dripnex.store.getState(); + dripnex.log.debug(next.id, next.isDirty); +}); +``` + +- `notes.items` is the **visible list in this window**, not the whole library. Query with `dripnex.app.listNotes()` or `dripnex.data.getNotes()`. +- Mutate through `dripnex.commands.dispatch`, `editor`, or `data`. +- `settings` is appearance only (theme, accent, zoom). It never includes API keys. + +## Vim maps (after installing Vim) + +Vim is **not** built-in. Install `dripnex/plugin-vim` (manifest id `dripnex-vim-mode`) and enable it. The pack publishes `dripnex.vim` via `registerVim` so init can map keys: + +```js +const Vim = dripnex.vim; +if (Vim) { + Vim.map('jj', '', 'insert'); + Vim.map('Y', 'y$'); + Vim.defineEx('find', 'f', () => { + void dripnex.commands.dispatch('app:focus-search'); + }); +} +``` + +## Also in the data directory + +| File | Role | +| ---- | ---- | +| `init.js` | This page | +| `styles.css` | [Style tweaks](/getting-started/style-tweaks) | +| `keybindings.json` | Command id → chord, or `null` to unbind. Contexts: `editor`, `note-list`, `app`, `global`. | + +`j` / `k` in `note-list` move to next/prev note and do **not** fire in the editor (so they stay free for Vim). diff --git a/content/docs/getting-started/meta.json b/content/docs/getting-started/meta.json new file mode 100644 index 0000000..1bbf0f6 --- /dev/null +++ b/content/docs/getting-started/meta.json @@ -0,0 +1,4 @@ +{ + "title": "Getting started", + "pages": ["index", "init-file", "style-tweaks"] +} diff --git a/content/docs/getting-started/style-tweaks.mdx b/content/docs/getting-started/style-tweaks.mdx new file mode 100644 index 0000000..b12b40c --- /dev/null +++ b/content/docs/getting-started/style-tweaks.mdx @@ -0,0 +1,59 @@ +--- +title: Style tweaks +description: Personal CSS and theme tokens without shipping a full theme pack +--- + +# Style tweaks + +`styles.css` in the data directory is injected into every renderer window. Save to apply. Open it from **Settings → Plugins** (written on first open, same as `init.js`). + +Use this for personal chrome. To **share** a palette, ship a [theme pack](/guides/create-a-theme). + +## CSS variables the app already uses + +Themes (and `styles.css`) may set tokens from `CORE_THEME_TOKENS` in `@dripnex/plugin-api`. `--accent-primary` is the chrome accent (buttons, settings). A palette that only sets `--accent` gets `--accent-primary` copied in `validateThemeTokens`. + +**Core tokens** + +`--bg-base`, `--bg-surface`, `--bg-elevated`, `--bg-inset`, `--bg-hover`, `--bg-active`, `--accent`, `--accent-primary`, `--accent-hover`, `--accent-muted`, `--accent-subtle`, `--text-primary`, `--text-secondary`, `--text-muted`, `--text-faint`, `--border`, `--border-subtle`, `--border-strong`, `--glass-bg`, `--glass-border`, `--glass-bg-menu`, `--glass-border-menu`, `--danger`, `--danger-muted`, `--warning`, `--warning-muted`, `--success`, `--success-muted`, `--status-active`, `--status-on-hold`, `--status-completed`, `--status-dropped` + +**Extension scopes** (`THEME_EXTENSION_SCOPES`) — any token starting with: + +`--syntax-`, `--preview-`, `--ui-`, `--cm-`, `--md-`, `--mde-` + +Unknown names are rejected for **registered themes**. Your personal `styles.css` is injected as raw CSS, so you can also target existing classes — keep selectors specific so they survive app updates. + +```css +:root { + --accent: #2a7d6f; + --accent-primary: #2a7d6f; +} + +.cm-editor { + font-size: 15px; +} +``` + +## From a plugin or init.js + +Packs can register variables without a `theme.json`: + +```js +dripnex.registerCssVariables('my-tweaks', { + '--accent': '#8b5cf6', + '--cm-link': '#a78bfa', +}); +``` + +`registerTheme` / `theme.json` go through the whitelist. Invalid tokens are dropped with a console warning. + +## Theme packs vs style tweaks + +| | `styles.css` | Theme pack | +| - | ------------ | ---------- | +| Audience | You | Anyone who installs `owner/repo` | +| Activation | Always, for your user data | Settings → Themes | +| Token validation | Raw CSS | `CORE_THEME_TOKENS` + extension scopes | +| Example | A larger editor font | [dripnex/theme-parchment](https://github.com/dripnex/theme-parchment) | + +Settings → Themes lists the default `tokens.css` plus installed plugin themes. diff --git a/content/docs/guides/create-a-plugin.mdx b/content/docs/guides/create-a-plugin.mdx new file mode 100644 index 0000000..6878381 --- /dev/null +++ b/content/docs/guides/create-a-plugin.mdx @@ -0,0 +1,162 @@ +--- +title: Create a plugin +description: Scaffold, activate, bundle to CommonJS, and load a Dripnex plugin from disk +--- + +# Create a plugin + +This walkthrough builds a pack you can load locally. The real first-party example is [dripnex/plugin-stamp](https://github.com/dripnex/plugin-stamp): CommonJS, `menu.add`, `editor.insertAtCursor`. + +## 1. Scaffold + +```bash +dripnex-plugin init "Hello Stamp" +cd hello-stamp +npm install +``` + +From the app monorepo you can also run `pnpm plugin init "Hello Stamp"`. + +`init` without `--type theme` creates `manifest.json`, `src/index.ts` (CJS export), `keymaps/`, `menus/`, and `styles/`. + +## 2. Write `activate` + +The host evaluates a **pre-bundled CommonJS** file. The CLI template already uses `module.exports`. Stamp's source (trimmed) is the shape you want: + +```js +module.exports = { + id: 'stamp', + name: 'Stamp', + version: '0.1.0', + description: 'Insert the current date or timestamp at the cursor.', + + activate(context) { + const removeDate = context.menu.add({ + label: 'Insert Date', + accelerator: 'Mod+Shift+T', + click: () => { + const now = new Date(); + const pad = (n) => String(n).padStart(2, '0'); + context.editor.insertAtCursor( + `${now.getFullYear()}-${pad(now.getMonth() + 1)}-${pad(now.getDate())}` + ); + return true; + }, + }); + + return { + dispose() { + removeDate(); + }, + }; + }, +}; +``` + +Keep `id` / `name` / `version` in sync with `manifest.json`. Return `{ dispose() }` and unregister everything you added. + +TypeScript is fine if your bundler emits CJS `module.exports`. Named ESM `export const plugin` is **not** what `loadPluginFromSource` reads. + +## 3. Commands and layout (optional) + +Commands land in the palette as `plugin::`: + +```js +const off = context.registerCommand( + { + id: 'hello', + name: 'Say Hello', + category: 'Hello Stamp', + keybinding: { key: 'H', modifiers: ['Mod', 'Shift'] }, + icon: 'Smile', + }, + () => { + context.notifications.addInfo('Hello from the plugin.'); + return true; + } +); +``` + +Mount UI with `context.layout.addComponent`. Zones are listed in [Layout zones](/reference/layout-zones). Status bar example: + +```js +context.layout.addComponent('editor-status-bar', { + id: 'hello-stamp:status', + component: function Status() { + return 'Hello'; + }, + order: 30, +}); +``` + +Community packs conventionally use `order` 30–99. + +## 4. Config schema + +Fields in `configSchema` render under **Settings → Plugins**: + +```js +module.exports = { + id: 'hello-stamp', + name: 'Hello Stamp', + version: '0.1.0', + configSchema: { + includeTime: { + type: 'boolean', + default: false, + description: 'Append local time', + }, + }, + activate(context) { + const includeTime = context.config.get('includeTime') ?? false; + const stop = context.config.observe('includeTime', (value) => { + context.log.info('includeTime', value); + }); + return { + dispose() { + stop(); + }, + }; + }, +}; +``` + +`config.get` is sync. `config.set` persists. `config.observe` fires when Settings (or another window) changes the value. + +Field types: `string`, `number`, `boolean`, `enum` (`options: [{ value, label }]`), `range` (`min`, `max`, `step`). + +## 5. Build and install locally + +```bash +npm run build +dripnex-plugin install . +``` + +Or `dripnex-plugin link` / `pnpm plugin link` from a monorepo checkout. Then **Settings → Plugins → Reload**. + +The pack must appear under `…/Dripnex/plugins//`. If the CLI printed success but the app shows nothing, set `DRIPNEX_DATA_DIR` to the same userData the packaged app uses. + +CLI `install` **refuses** if `` is already installed. Settings overwrite is allowed. To refresh from CLI: uninstall, then install again. + +## 6. Lifecycle + +``` +scan manifest.json → eval main → activate(context) → apply keymaps/menus/styles/themes → dispose() +``` + +`PluginRegistry` unsubscribes leftover `editor.on*` / `app.on*` listeners on deactivate. Still call your own `dispose()`. + +## Five rules + +1. Removable without breaking `.md` files. +2. No invented markdown other editors cannot read. +3. No automatic content mutation. +4. Notes stay readable without the pack. +5. No brittle inter-note graph that the pack owns. + +## Next + +- [Create a theme](/guides/create-a-theme) +- [Publish](/guides/publishing) (`dripnex-plugin pack` → git tag → GitHub release) +- [PluginContext](/reference/plugin-context) +- [Examples](/reference/examples) diff --git a/content/docs/guides/create-a-theme.mdx b/content/docs/guides/create-a-theme.mdx new file mode 100644 index 0000000..7dd0e28 --- /dev/null +++ b/content/docs/guides/create-a-theme.mdx @@ -0,0 +1,115 @@ +--- +title: Create a theme +description: Ship a Dripnex palette with theme.json, CORE_THEME_TOKENS, and THEME_EXTENSION_SCOPES +--- + +# Create a theme + +A theme pack is a git repo that contributes CSS variables. Official palettes live in `dripnex/theme-*` repositories. [dripnex/theme-parchment](https://github.com/dripnex/theme-parchment) is the reference: pack id `theme-parchment`, palette id `dripnex-parchment`. + +You do **not** need JavaScript. The scanner treats a folder as theme-only when `theme.json` or `themes/` is present even if `manifest.main` is missing. + +## Scaffold + +```bash +dripnex-plugin init "Harbor Dusk" --type theme +cd harbor-dusk +``` + +That writes `manifest.json`, `theme.json`, and `styles/index.css` (no `src/`). + +## `manifest.json` + +```json +{ + "id": "theme-harbor-dusk", + "name": "Harbor Dusk", + "version": "0.1.0", + "description": "A Dripnex theme: Harbor Dusk" +} +``` + +`id` is kebab-case. It is the install folder name. It does not have to equal the palette id inside `theme.json`. + +There is no `themeType` field on `PluginManifest`. Theme-ness is `theme.json` / `themes/*.json` (and optional `registerTheme` in JS). + +## `theme.json` + +Parsed by `parsePluginTheme`. Required: `colorScheme` (`"light"` | `"dark"`) and `tokens` (string map). Optional: `id`, `name`, `description`, `author`, `frosted`. + +If `id` / `name` are omitted, the pack id is used. `frosted: true` marks native window vibrancy; chrome tokens should be translucent. + +Tokens pass `validateThemeTokens`: + +- Names in `CORE_THEME_TOKENS`, or +- Names starting with a `THEME_EXTENSION_SCOPES` prefix (`--syntax-`, `--preview-`, `--ui-`, `--cm-`, `--md-`, `--mde-`) + +Everything else is dropped with `[ThemeRegistry] Theme "": rejected invalid token "…"`. If `--accent` is set and `--accent-primary` is not, `--accent-primary` is copied from `--accent`. + +Parchment (light) — subset of the real file: + +```json +{ + "id": "dripnex-parchment", + "name": "Parchment", + "description": "Warm paper. Reading notes, long sessions.", + "author": "Dripnex", + "colorScheme": "light", + "tokens": { + "--bg-base": "#f3ead4", + "--bg-surface": "#ebe0c4", + "--bg-elevated": "#faf3e3", + "--bg-inset": "#e6d9b8", + "--text-primary": "#3a3224", + "--text-secondary": "rgba(58, 50, 36, 0.74)", + "--text-muted": "rgba(58, 50, 36, 0.52)", + "--border": "rgba(58, 50, 36, 0.12)", + "--accent": "#2a7d6f", + "--accent-hover": "#21675c", + "--glass-bg": "rgba(243, 234, 212, 0.9)", + "--status-active": "#2a7d6f", + "--status-on-hold": "#c27a1a", + "--status-completed": "#3d8b4a", + "--status-dropped": "#c44b4b" + } +} +``` + +### Core tokens (`CORE_THEME_TOKENS`) + +`--bg-base`, `--bg-surface`, `--bg-elevated`, `--bg-inset`, `--bg-hover`, `--bg-active`, `--accent`, `--accent-primary`, `--accent-hover`, `--accent-muted`, `--accent-subtle`, `--text-primary`, `--text-secondary`, `--text-muted`, `--text-faint`, `--border`, `--border-subtle`, `--border-strong`, `--glass-bg`, `--glass-border`, `--glass-bg-menu`, `--glass-border-menu`, `--danger`, `--danger-muted`, `--warning`, `--warning-muted`, `--success`, `--success-muted`, `--status-active`, `--status-on-hold`, `--status-completed`, `--status-dropped` + +Editor / preview extras belong under `--cm-`, `--md-`, `--syntax-`, and so on — for example `--cm-heading`, `--cm-link` in the CLI theme template. + +## Optional CSS + +`styles/*.css` is registered as a plugin stylesheet after activate (theme-only packs use an empty `activate()`). Use it for selectors that are not tokens. Prefer tokens so Settings → Themes can switch palettes cleanly. + +## Registering from JavaScript + +If the pack has a `main` file, you can also call: + +```js +context.registerTheme({ + id: 'harbor-dusk', + name: 'Harbor Dusk', + colorScheme: 'dark', + tokens: { + '--bg-base': '#0c1117', + '--accent': '#5eead4', + }, +}); +``` + +Same whitelist. `context.themes.list()`, `getActive()`, `setActive(id | null)`, and `onDidChange` read the registry. + +There is **no** `context.getTheme()` / `onThemeChanged()`. Appearance lives on `store.getState().settings.theme` (`'dark' | 'light' | 'system'`) and `themes.getActive()`. + +## Pack and try it + +```bash +dripnex-plugin pack +dripnex-plugin install . +``` + +Then Settings → Themes. To share it, follow [Publishing](/guides/publishing): tag `v0.1.0` and attach `theme-harbor-dusk-0.1.0.tar.gz`. diff --git a/content/docs/guides/meta.json b/content/docs/guides/meta.json new file mode 100644 index 0000000..a1b3af7 --- /dev/null +++ b/content/docs/guides/meta.json @@ -0,0 +1,4 @@ +{ + "title": "Guides", + "pages": ["create-a-plugin", "create-a-theme", "publishing"] +} diff --git a/content/docs/guides/publishing.mdx b/content/docs/guides/publishing.mdx new file mode 100644 index 0000000..d993b15 --- /dev/null +++ b/content/docs/guides/publishing.mdx @@ -0,0 +1,79 @@ +--- +title: Publishing +description: One git repo per pack. Version is the git tag. Artifact is the tarball from dripnex-plugin pack on a GitHub release. +--- + +# Publishing + +A community plugin or theme is **not** a folder inside Dripnex and **not** an upload to an app store. It is its own git repository. + +| Piece | What it is | +| ----- | ---------- | +| Repo | One pack, one repository | +| Version | `manifest.json` `version` **and** git tag `vX.Y.Z` | +| Artifact | `-.tar.gz` from `dripnex-plugin pack` | +| Install | `dripnex-plugin install owner/repo[@tag]` or Settings → Plugins → Connect | + +There is **no public marketplace** and no store-publish API for third-party authors. [dripnex.app/plugins](https://dripnex.app/plugins) is a marketing catalog of packs people should know about, not an upload target. + +## Author loop + +```bash +dripnex-plugin init "Mermaid Plus" +cd mermaid-plus +# write the pack, keep it useful +npm install && npm run build +dripnex-plugin pack +``` + +`pack` writes `{id}-{version}.tar.gz` next to the cwd (`manifest.id`, not the GitHub repo name). The archive includes `manifest.json`, `dist/` (or `main`), and any of `keymaps/`, `menus/`, `styles/`, `theme.json`, `themes/` that exist. + +Then: + +```bash +git tag v1.2.3 +git push origin v1.2.3 +gh release create v1.2.3 mermaid-plus-1.2.3.tar.gz --title "Mermaid Plus 1.2.3" +``` + +The release **must** attach that `.tar.gz`. A git tag or GitHub's source zip is not enough — install looks for a built archive (`manifest.json` + `dist/` or `theme.json`). + +`dripnex-plugin publish` packs and, when `gh` works, creates that GitHub release. Treat the GitHub release as the publish step. Do not wait on a community registry. + +## Install from a repo + +```bash +dripnex-plugin install dripnex/plugin-stamp +dripnex-plugin install acme/mermaid-plus@v1.2.3 +dripnex-plugin install https://github.com/acme/mermaid-plus +``` + +No tag means the **latest GitHub release**, first `.tar.gz` / `.tgz` asset. Then reload plugins or restart the app. + +The same `owner/repo` spec works in **Settings → Plugins → Connect** (and the “Other package” field). Prefer the GitHub repo, not the manifest id, when they differ: + +| Role | Vim example | +| ---- | ----------- | +| Manifest id / install folder | `dripnex-vim-mode` | +| GitHub repo (working install spec) | `dripnex/plugin-vim` | + +```bash +dripnex-plugin install dripnex/plugin-vim +``` + +Typing `dripnex-vim-mode` as if it were `owner/repo` is the wrong spec. + +CLI install errors if that `manifest.id` is already present. Settings can overwrite. There is no auto-update; Settings → Plugins → Updates is a manual check against known GitHub releases / first-party rows. + +## First-party Browse + +Official `dripnex/plugin-*` and `dripnex/theme-*` repos whose **latest GitHub release** has a packed `{id}-{version}.tar.gz` can appear in Settings → Plugins → Browse. That is an index of first-party satellites, not a community store you submit to. + +Do not list a pack in any first-party catalog until the release has the packed tarball — Browse install would 404. + +## What does not belong here + +- Proof toys (word count, typewriter, reading time, focus, active line) stay off [dripnex.app/plugins](https://dripnex.app/plugins). +- Do not open a plugin PR against `dripnex/app` unless it is becoming a **built-in**. +- Do not invent a second version number besides the git tag. +- Do not document or depend on a public marketplace publish endpoint. Phase 5 “plugin registry/marketplace” is explicitly later / not planned for this site. diff --git a/content/docs/index.mdx b/content/docs/index.mdx new file mode 100644 index 0000000..9dc6a69 --- /dev/null +++ b/content/docs/index.mdx @@ -0,0 +1,61 @@ +--- +title: Start building with the Dripnex API +description: Plugin and theme API for extending the Dripnex desktop app +--- + +# Start building with the Dripnex API + +The Dripnex plugin API lets you extend the desktop editor: commands, CodeMirror 6, layout zones, preview hooks, and color palettes. Plugins run in the renderer with a controlled `PluginContext`. There is no public marketplace — a pack is a git repo, a git tag, and a tarball on a GitHub release. + +Desktop only. Phone v1 has no plugin path. Current API major: `PLUGIN_API_VERSION = "1"`. + +End-user help lives in the [user manual](https://docs.dripnex.app). The product catalog is at [dripnex.app/plugins](https://dripnex.app/plugins). + +## Getting started + +Before you ship a pack, learn how Dripnex loads scripts and styles from the data directory: + + + + Customize startup with JavaScript in `init.js`. Register commands, map Vim keys, or read the store — without a plugin repo. + + + Restyle the UI with `styles.css` and CSS variables. You do not need a full theme pack for a personal tweak. + + + +How a **plugin repo** is structured (manifest, `main`, package files) is in [Plugin structure](/getting-started). + +## Guides + + + + Scaffold, activate, bundle to CommonJS, and load a pack from disk. + + + Ship a palette with `theme.json`, `CORE_THEME_TOKENS`, and extension scopes. + + + Tag `vX.Y.Z`, attach `{id}-{version}.tar.gz`, install with `dripnex-plugin install owner/repo`. + + + +## Resources + + + + Everything passed to `activate()` — commands, editor, layout, data, themes. + + + `registerCommand`, `dispatchCommand`, menus, and keymaps. + + + CodeMirror 6, decorations, and the live `EditorView`. + + + Token whitelist, `registerTheme`, and `context.themes`. + + + Where plugins can mount React components. + + diff --git a/content/docs/meta.json b/content/docs/meta.json new file mode 100644 index 0000000..0d355ee --- /dev/null +++ b/content/docs/meta.json @@ -0,0 +1,13 @@ +{ + "title": "Dripnex API", + "root": true, + "pages": [ + "index", + "---Getting started---", + "getting-started", + "---Guides---", + "guides", + "---Resources---", + "reference" + ] +} diff --git a/content/docs/reference/commands.mdx b/content/docs/reference/commands.mdx new file mode 100644 index 0000000..38bfbc6 --- /dev/null +++ b/content/docs/reference/commands.mdx @@ -0,0 +1,90 @@ +--- +title: Commands +description: registerCommand, dispatchCommand, menus, context menus, and package keymaps +--- + +# Commands + +## `registerCommand` + +```ts +registerCommand( + options: PluginCommandOptions, + execute: (payload?: Record) => boolean | void | Promise +): () => void +``` + +| Field | Type | Required | Notes | +| ----- | ---- | -------- | ----- | +| `id` | `string` | Yes | Id **within** the pack. Host qualifies it as `plugin::`. | +| `name` | `string` | Yes | Palette label | +| `category` | `string` | No | Palette grouping | +| `keybinding` | `{ key, modifiers? }` | No | `modifiers`: `'Mod'` (Cmd on macOS, Ctrl elsewhere), `'Shift'`, `'Alt'` | +| `icon` | `string` | No | Lucide icon name | +| `showInPalette` | `boolean` | No | Default true | + +Return `true` from `execute` when the command handled the invocation. + +```js +const off = context.registerCommand( + { + id: 'say-hello', + name: 'Say Hello', + keybinding: { key: 'H', modifiers: ['Mod', 'Shift'] }, + icon: 'Smile', + }, + () => { + context.notifications.addSuccess('Hello'); + return true; + } +); +``` + +From `init.js`, `dripnex.commands.add(id, name, execute, options?)` is the same registration without repeating `id`/`name` in the options object. + +## `dispatchCommand` + +```ts +dispatchCommand(id: string, payload?: Record): Promise +``` + +Use a **full** id: host commands such as `app:save-note`, or `plugin:stamp:…`. Init equivalent: `dripnex.commands.dispatch`. + +Vim's `:cmd {id}` (from plugin-vim) is this dispatch, not an Inkdrop command bus. + +## Plugins menu + +```js +context.menu.add({ + label: 'Insert Date', + accelerator: 'Mod+Shift+T', + click: () => context.editor.insertAtCursor(localDate(new Date())), +}); + +// or reuse a command you already registered +context.menu.add({ + label: 'Say Hello', + command: 'say-hello', +}); +``` + +`click` is registered as a command. `command` reuses an existing command id (qualified to `plugin::…`). + +## Context menus + +```ts +context.contextMenu.add( + 'note-list-item' | 'notebook-item' | 'tag-item' | 'editor', + { label, command?, click? } +) +``` + +## Package files + +After `activate()`, `keymaps/*.json` and `menus/*.json` are applied. + +**Keymap** — Dripnex form `{ "say-hello": "Mod+Shift+H" }` or Inkdrop form `{ "body": { "ctrl-alt-n": "say-hello" } }`. Chords parse `Mod+Shift+K` or `ctrl-alt-n`. Only `plugin::…` commands this pack registered are bound; core `app:` / `editor:` ids are skipped. + +**Menus** — JSON items with `label` + `command`, optional `accelerator`, optional `submenu`. Context-menu selectors map aliases such as `note-list`, `.cm-editor`, `tag` onto the four targets above. + +Declarative keymaps cannot invent commands. Register them in `activate()` first. diff --git a/content/docs/reference/data.mdx b/content/docs/reference/data.mdx new file mode 100644 index 0000000..fa63b2e --- /dev/null +++ b/content/docs/reference/data.mdx @@ -0,0 +1,96 @@ +--- +title: Data API +description: Notes, notebooks, tags, links, and graph — DataAPI plus the slimmer AppAPI +--- + +# Data API + +Plugins do not talk to a local HTTP server. Reads and writes go through `context.data` (`DataAPI`) and a smaller `context.app` (`AppAPI`). Types: `packages/plugin-api/src/data/dataTypes.ts` and `createDataAPI.ts`. + +## `AppAPI` (`context.app`) + +Read-only convenience: + +| Method | Returns | +| ------ | ------- | +| `getCurrentNote()` | `NoteInfo \| null` (`id`, `title`, `content`) | +| `searchNotes(query)` | `Promise<{ id, title }[]>` | +| `getNoteById(id)` | `Promise` | +| `getNoteTags(noteId)` | `Promise` | +| `getBacklinks(noteId)` | `Promise<{ noteId, noteTitle }[]>` | +| `listNotes()` | `Promise` | +| `listNotebooks()` | `Promise` | +| `listTags()` | `Promise` | +| `onNoteSelected` / `onNoteCreated` / `onNoteDeleted` | unsubscribe | + +`NoteSummaryInfo`: `id`, `title`, `notebookId`, `tags`, `wordCount`, `createdAt`, `updatedAt`, `isPinned`, `status`. + +`NotebookInfo`: `id`, `name`, `parentId`, optional `icon`. + +## `DataAPI` (`context.data`) + +Richer queries. Failures throw `DataAccessError` (`[DataAPI.] …`). + +### Notes + +```ts +getNotes(options?: NoteQueryOptions): Promise +getNote(id: string): Promise +searchNotes(query: string, options?: SearchOptions): Promise +countNotes(options?: NoteQueryOptions): Promise +createNote(input: { content: string; notebookId?: string }): Promise +updateNote(id: string, content: string): Promise +trashNote(id: string): Promise +onNotesChanged(cb): () => void +``` + +`NoteQueryOptions`: `notebookId`, `tag`, `status`, `isPinned`, `sortBy` (`title` \| `createdAt` \| `updatedAt` \| `wordCount`), `sortOrder`, `limit`, `offset`. + +`NoteQueryResult`: `{ notes, total, hasMore }`. + +### Notebooks + +```ts +getNotebooks(options?: { tree?: boolean; includeCounts?: boolean }): Promise +getNotebook(id: string): Promise +createNotebook(input: { name: string; parentId?: string | null }): Promise +updateNotebook(id, patch: { name?, icon?, parentId? }): Promise +deleteNotebook(id: string): Promise +onNotebooksChanged(cb): () => void +``` + +### Tags + +```ts +getTags(options?: TagQueryOptions): Promise +setTagColor(name: string, color: string | null): Promise +renameTag(oldName: string, newName: string): Promise +onTagsChanged(cb): () => void +``` + +`TagInfo`: `{ name, color?, count? }`. Query options: `includeColors`, `includeCount`, `filter` (substring), `limit`, `offset`. + +### Links and graph + +```ts +getBacklinks(noteId: string): Promise +getOutgoingLinks(noteId: string): Promise +getGraphData(options?: { notebookId?: string; depth?: number }): Promise +``` + +Outgoing links include `resolved: boolean` and `targetId` which may be `null`. + +### Change events + +```ts +interface DataChangeEvent { + kind: T; + action: 'created' | 'updated' | 'deleted' | 'renamed'; + id: string; + previousName?: string; +} +``` + +## Store vs data + +`context.store.getState().notes.items` is the **visible list in this window**. Use `data.getNotes()` / `app.listNotes()` for library queries. The store has no `dispatch`. diff --git a/content/docs/reference/editor.mdx b/content/docs/reference/editor.mdx new file mode 100644 index 0000000..cd34f83 --- /dev/null +++ b/content/docs/reference/editor.mdx @@ -0,0 +1,79 @@ +--- +title: Editor extensions +description: EditorAPI, CodeMirror 6 registerExtensions, decorations, and getView() +--- + +# Editor extensions + +## `EditorAPI` (`context.editor`) + +Controlled subset of editor operations: + +| Method | Returns | Notes | +| ------ | ------- | ----- | +| `getContent()` | `string` | Full buffer | +| `getSelection()` | `{ from, to }` | Document offsets | +| `setSelection(from, to?)` | `void` | | +| `replaceRange(from, to, text)` | `void` | | +| `insertAtCursor(text)` | `void` | | +| `getWordCount()` / `getCharCount()` / `getLineCount()` | `number` | | +| `onDocChanged(cb)` | unsubscribe | `cb(content: string)` | +| `onSelectionChanged(cb)` | unsubscribe | `cb({ from, to })` | +| `focus()` | `void` | | +| `getView()` | `EditorView \| null` | Live CodeMirror 6 view, or `null` if unmounted | + +```js +const content = context.editor.getContent(); +const { from, to } = context.editor.getSelection(); +context.editor.replaceRange(from, to, '[' + content.slice(from, to) + '](url)'); + +const view = context.editor.getView(); +if (view) { + view.dispatch(/* … */); +} +``` + +From init.js, `dripnex.getActiveEditor()` returns `{ editor, cm }` with `cm === editor.getView()`. + +## CodeMirror 6 extensions + +```ts +registerExtensions(id: string, extensions: Extension[]): () => void +``` + +Extensions are installed in a compartment (`pluginExtensionCompartment`) so they can be swapped without rebuilding the editor. Host `require('@codemirror/view')` (and `state`, `language`, `commands`, `search`) is the **app's singleton** — do not bundle a second CodeMirror. + +```js +const { keymap } = require('@codemirror/view'); + +const off = context.registerExtensions('hello-keymap', [ + keymap.of([ + { + key: 'Mod-Shift-h', + run: () => { + context.editor.insertAtCursor('hello'); + return true; + }, + }, + ]), +]); +``` + +Anything not on the [host require whitelist](/getting-started#the-module-must-be-commonjs) (for example `@replit/codemirror-vim`) must be bundled. That is how [plugin-vim](https://github.com/dripnex/plugin-vim) works: `registerExtensions` + `registerVim` + status bar, not an Atom keymap. + +## Decorations + +`context.decorations` (`EditorDecorationAPI`): + +| Method | Notes | +| ------ | ----- | +| `addLineHighlight(line, className)` | **1-indexed** line. Returns remove. | +| `addWidget(pos, dom)` | DOM widget at a document position. Returns remove. | +| `clear()` | Drop all decorations owned by this instance | + +The decoration `StateField` is created with `createDecorationAPI` and must be present as a CM6 extension (the host wires this for plugins). + +```js +const remove = context.decorations.addLineHighlight(1, 'cm-activeLine'); +remove(); +``` diff --git a/content/docs/reference/examples.mdx b/content/docs/reference/examples.mdx new file mode 100644 index 0000000..1bc85ca --- /dev/null +++ b/content/docs/reference/examples.mdx @@ -0,0 +1,144 @@ +--- +title: Examples +description: Patterns from official satellites and valid PluginContext usage +--- + +# Examples + +## Stamp (official satellite) + +[dripnex/plugin-stamp](https://github.com/dripnex/plugin-stamp) — insert date/timestamp. CommonJS, `menu.add`, `insertAtCursor`. Install: `dripnex-plugin install dripnex/plugin-stamp`. + +```js +function pad(n) { + return String(n).padStart(2, '0'); +} + +function localDate(now) { + return `${now.getFullYear()}-${pad(now.getMonth() + 1)}-${pad(now.getDate())}`; +} + +function insert(context, text) { + if (!context.editor || typeof context.editor.insertAtCursor !== 'function') { + return false; + } + context.editor.insertAtCursor(text); + return true; +} + +module.exports = { + id: 'stamp', + name: 'Stamp', + version: '0.1.0', + description: 'Insert the current date or timestamp at the cursor.', + + activate(context) { + const removeDate = context.menu.add({ + label: 'Insert Date', + accelerator: 'Mod+Shift+T', + click: () => insert(context, localDate(new Date())), + }); + const removeStamp = context.menu.add({ + label: 'Insert Timestamp', + click: () => + insert( + context, + `${localDate(new Date())} ${pad(new Date().getHours())}:${pad(new Date().getMinutes())}` + ), + }); + + return { + dispose() { + removeDate(); + removeStamp(); + }, + }; + }, +}; +``` + +## Insert-only mermaid / math (not renderers) + +[plugin-mermaid](https://github.com/dripnex/plugin-mermaid) and [plugin-math](https://github.com/dripnex/plugin-math) insert a fence or `$$` block. Diagram and KaTeX **rendering** is built-in (`dripnex-mermaid`, `dripnex-math`). A pack that only inserts markdown should look like Stamp: `insertAtCursor('```mermaid\\n…\\n```')`, not `registerCodeBlockRenderer`. + +## Status bar + config + +Valid `PluginContext` usage (proof plugins like reading-time stay off the marketing catalog): + +```js +const React = require('react'); + +function ReadingTime({ meta }) { + const editor = meta && meta.editor; + const [minutes, setMinutes] = React.useState(0); + + React.useEffect(() => { + if (!editor) return; + const update = () => { + const words = editor.getWordCount(); + setMinutes(Math.max(1, Math.ceil(words / 200))); + }; + update(); + return editor.onDocChanged(update); + }, [editor]); + + if (!editor) return null; + return React.createElement('span', null, minutes + ' min read'); +} + +module.exports = { + id: 'reading-time', + name: 'Reading Time', + version: '1.0.0', + activate(context) { + context.layout.addComponent('editor-status-bar', { + id: 'reading-time:status', + component: ReadingTime, + order: 20, + meta: { editor: context.editor }, + }); + return { + dispose() { + context.layout.removeComponent('reading-time:status'); + }, + }; + }, +}; +``` + +## Clipboard command + +Use `context.clipboard`, not `navigator.clipboard`: + +```js +module.exports = { + id: 'copy-note', + name: 'Copy note', + version: '1.0.0', + activate(context) { + const off = context.registerCommand( + { id: 'copy-markdown', name: 'Copy as Markdown', icon: 'Copy' }, + async () => { + const content = context.editor.getContent(); + if (!content) return false; + await context.clipboard.writeText(content); + context.notifications.addSuccess('Copied'); + return true; + } + ); + return { dispose: off }; + }, +}; +``` + +## Dispatch a host command + +```js +await context.dispatchCommand('app:save-note'); +``` + +Init.js equivalent: `void dripnex.commands.dispatch('app:save-note')`. + +## Vim (community) + +[dripnex/plugin-vim](https://github.com/dripnex/plugin-vim) — manifest id `dripnex-vim-mode`. Bundles `@replit/codemirror-vim`, calls `registerExtensions` and `registerVim`. After it is enabled, `init.js` may use `dripnex.vim` ([init file](/getting-started/init-file#vim-maps-after-installing-vim)). diff --git a/content/docs/reference/layout-zones.mdx b/content/docs/reference/layout-zones.mdx new file mode 100644 index 0000000..aeec236 --- /dev/null +++ b/content/docs/reference/layout-zones.mdx @@ -0,0 +1,89 @@ +--- +title: Layout zones +description: LayoutZoneName values plugins can mount React components into +--- + +# Layout zones + +`context.layout` is a `LayoutManager`. Zone names are the `LayoutZoneName` union in `packages/plugin-api/src/layout/types.ts`. + +```ts +addComponent(zone: LayoutZoneName, entry: Omit): void +removeComponent(id: string): void +removeAllForPlugin(pluginId: string): void +``` + +`pluginId` is filled by the host. You pass `id`, `component`, `order`, and optional `meta`. + +## Zones + +| Zone | Typical use | +| ---- | ----------- | +| `sidebar-section` | Left sidebar blocks | +| `sidebar-footer` | Bottom of the sidebar | +| `editor-toolbar` | Above the editor | +| `editor-status-bar` | Bottom of the editor (Vim mode, timers) | +| `editor-header-actions` | Note header buttons | +| `editor-footer` | Below the editor | +| `preview-toolbar` | Preview chrome | +| `panel` | Side panel (large UI) | +| `modal` | Overlay — pair with `context.components.Modal` / `Dialog` | +| `settings-section` | Extra Settings UI (schema fields already render without this) | +| `note-list-header` | Top of the note list | +| `note-list-footer` | Bottom of the note list | +| `note-list-item-suffix` | Per-row suffix in the list | +| `command-palette-footer` | Below the palette | + +``` +┌─────────────────────────────────────────────────────┐ +│ sidebar-section │ editor-header-actions │ +│ ├───────────────────────────────┐ │ +│ │ editor-toolbar │ │ +│ ├───────────────────────────────┤ │ +│ │ [Editor] │panel│ +│ │ │ │ +│ ├───────────────────────────────┤ │ +│ note-list-footer│ editor-status-bar / footer │ │ +└─────────────────────────────────────────────────────┘ +``` + +## Zone entry + +```js +context.layout.addComponent('editor-status-bar', { + id: 'hello:status', + component: Status, + order: 30, + meta: { editor: context.editor }, +}); +``` + +```ts +function Status({ meta }: ZoneComponentProps) { + const editor = meta?.editor; + return editor ? String(editor.getWordCount()) : null; +} +``` + +`order`: lower first (further left / further up). Convention: 1–9 core, 10–29 built-ins, **30–99 community**. + +Components should be React function components. Host `require('react')` is the app singleton so hooks work. + +## Cleanup + +```js +activate(context) { + context.layout.addComponent('editor-status-bar', { + id: 'hello:status', + component: Status, + order: 30, + }); + return { + dispose() { + context.layout.removeComponent('hello:status'); + }, + }; +} +``` + +`removeAllForPlugin` runs on unload; still remove explicitly when you can. diff --git a/content/docs/reference/meta.json b/content/docs/reference/meta.json new file mode 100644 index 0000000..d252b4c --- /dev/null +++ b/content/docs/reference/meta.json @@ -0,0 +1,12 @@ +{ + "title": "Resources", + "pages": [ + "plugin-context", + "commands", + "editor", + "themes", + "layout-zones", + "data", + "examples" + ] +} diff --git a/content/docs/reference/plugin-context.mdx b/content/docs/reference/plugin-context.mdx new file mode 100644 index 0000000..939b236 --- /dev/null +++ b/content/docs/reference/plugin-context.mdx @@ -0,0 +1,123 @@ +--- +title: PluginContext +description: The object passed to activate() — methods and nested APIs from @dripnex/plugin-api +--- + +# PluginContext + +`activate(context: PluginContext)` receives this object. Types live in `packages/plugin-api/src/types.ts`. Current major: `PLUGIN_API_VERSION = "1"`. + +```ts +activate(context: PluginContext): PluginDisposable | void +``` + +Return `{ dispose() }` and undo registrations. `deactivate()` on the manifest is optional. + +## Nested objects + +| Property | Type | Role | +| -------- | ---- | ---- | +| `layout` | `LayoutManager` | [Layout zones](/reference/layout-zones) | +| `editor` | `EditorAPI` | [Editor](/reference/editor) | +| `decorations` | `EditorDecorationAPI` | Line highlights and widgets | +| `config` | `PluginConfigAPI` | `get` / `set` / `observe` | +| `log` | `PluginLogger` | `debug`, `info`, `warn`, `error` | +| `app` | `AppAPI` | Read-only notes, notebooks, tags, events | +| `store` | `AppStore` | `getState()` / `subscribe()`. No `dispatch`. | +| `data` | `DataAPI` | [Notes, notebooks, tags, graph](/reference/data) | +| `menu` | `{ add(item) }` | Plugins menu | +| `clipboard` | `{ readText, writeText }` | Async clipboard | +| `notifications` | `{ addSuccess, addInfo, addWarning, addError }` | Toasts | +| `contextMenu` | `{ add(target, item) }` | `note-list-item` \| `notebook-item` \| `tag-item` \| `editor` | +| `components` | `PluginComponents` | Stock `Button`, `Modal`, `Dialog` | +| `preview` | `{ on(event, handler) }` | `'a:click'` \| `'checkbox:change'` | +| `themes` | `{ list, getActive, setActive, onDidChange }` | [Themes](/reference/themes) | +| `markdownRenderer` | `MarkdownRenderer` | Inkdrop-shaped remark/rehype/React/fence maps | + +## Registration methods + +Each returns an unregister function unless noted. + +### `registerCommand(options, execute)` + +Palette command. See [Commands](/reference/commands). + +### `dispatchCommand(id, payload?)` + +Dispatch a **host or plugin** command by id (`app:save-note`, `plugin:…`). Returns `Promise`. + +### `registerExtensions(id, extensions)` + +CodeMirror 6 `Extension[]` in a compartment. See [Editor](/reference/editor). + +### `registerVim(api)` + +Publish a Vim API for `dripnex.vim` in `init.js`. Call at **module load**, not only inside `activate`, so init can `Vim.map` as soon as the pack is present. + +### `registerRemarkPlugin(id, plugin, options?)` / `registerRehypePlugin(id, plugin, options?)` + +Preview pipeline (appended after core). `PluginHookOptions`: `name?`, `version?`, `priority?` (lower runs first, default `100`). + +### `registerPreviewComponent(id, tagName, component)` + +Replace an HTML tag in the preview with a React component. + +### `registerCodeBlockRenderer(id, language, component)` + +Fence renderer. Props: `{ code, language, meta? }` (`CodeBlockRendererProps`). Built-in mermaid/math already register `mermaid` / `math` / `latex`. A satellite that only inserts a fence should not claim to be that renderer. + +### `registerAiCommand(options)` + +Appears in the AI panel and the command palette. Placeholders in `userPromptTemplate`: `{{selection}}`, `{{note}}`, `{{title}}`. `outputTarget`: `'replace'` \| `'insert'` \| `'panel'` (default `'panel'`). + +### `registerCssVariables(id, variables)` / `registerTheme(theme)` + +See [Themes](/reference/themes). + +## Config + +```ts +context.config.get('workMinutes'); +context.config.set('workMinutes', 30); +const stop = context.config.observe('workMinutes', (value) => { /* … */ }); +``` + +## Logger + +`debug` / `info` / `warn` / `error`. Prefixed with the plugin id in the developer console. + +## Components and preview events + +```js +const { Button, Modal, Dialog } = context.components; +// aliases: components.get('Button'), components.getComponentClass('Button') + +const off = context.preview.on('a:click', (detail) => { + // detail.href, detail.text — return false to prevent default +}); +context.preview.on('checkbox:change', (detail) => { + // detail.index, detail.checked +}); +``` + +Mount overlays with `layout.addComponent('modal', …)`. + +## Manifest (exported module) + +Besides on-disk `manifest.json`, the evaluated module must satisfy `PluginManifest`: + +| Field | Required | Notes | +| ----- | -------- | ----- | +| `id` | Yes | Kebab-case; must match `manifest.json` | +| `name` | Yes | | +| `version` | Yes | Semver | +| `description` | No | | +| `apiVersion` | No | e.g. `"1"` | +| `dependencies` | No | Other `pluginId` → semver range | +| `configSchema` | No | | +| `activate` | Yes | Function | +| `deactivate` | No | Function if present | + +There is **no** `themeType` on the type. There is **no** `getTheme` / `onThemeChanged` on `PluginContext`. + +`validateManifest` / `assertValidManifest` / `validateConfigValue` are exported from `@dripnex/plugin-api`. diff --git a/content/docs/reference/themes.mdx b/content/docs/reference/themes.mdx new file mode 100644 index 0000000..4bfbc43 --- /dev/null +++ b/content/docs/reference/themes.mdx @@ -0,0 +1,58 @@ +--- +title: Themes +description: CORE_THEME_TOKENS, THEME_EXTENSION_SCOPES, registerTheme, and context.themes +--- + +# Themes + +Palettes are `ThemeDefinition` objects in `themeRegistryStore`. User-facing switcher: Settings → Themes. + +## Token whitelist + +From `packages/plugin-api/src/theme/themeTypes.ts`. + +`isValidThemeToken(token)` is true when the name is in `CORE_THEME_TOKENS` or starts with a `THEME_EXTENSION_SCOPES` prefix. + +`validateThemeTokens(tokens, themeId)` keeps valid entries, warns on rejects, and copies `--accent` → `--accent-primary` when the latter is missing. + +**`CORE_THEME_TOKENS`:** `--bg-base`, `--bg-surface`, `--bg-elevated`, `--bg-inset`, `--bg-hover`, `--bg-active`, `--accent`, `--accent-primary`, `--accent-hover`, `--accent-muted`, `--accent-subtle`, `--text-primary`, `--text-secondary`, `--text-muted`, `--text-faint`, `--border`, `--border-subtle`, `--border-strong`, `--glass-bg`, `--glass-border`, `--glass-bg-menu`, `--glass-border-menu`, `--danger`, `--danger-muted`, `--warning`, `--warning-muted`, `--success`, `--success-muted`, `--status-active`, `--status-on-hold`, `--status-completed`, `--status-dropped` + +**`THEME_EXTENSION_SCOPES`:** `--syntax-`, `--preview-`, `--ui-`, `--cm-`, `--md-`, `--mde-` + +## `registerTheme` + +```ts +registerTheme(theme: { + id: string; + name: string; + description?: string; + author?: string; + colorScheme: 'dark' | 'light'; + tokens: Record; +}): () => void +``` + +`frosted?: boolean` exists on `ThemeDefinition` (native vibrancy). Package `theme.json` may set it; the `registerTheme` argument type on `PluginContext` does not list `frosted` — use `theme.json` for that flag. + +## `context.themes` + +```ts +list(): ThemeInfo[] +getActive(): ThemeInfo | null +setActive(id: string | null): boolean +onDidChange(callback: (id: string | null) => void): () => void +``` + +`ThemeInfo`: `{ id, name, colorScheme, description? }`. `setActive(null)` clears the plugin palette (back to the app default). + +Appearance (`'dark' | 'light' | 'system'`) is `store.getState().settings.theme`, not a `getTheme()` helper — that method is not on `PluginContext`. + +## CSS variables without a full palette + +```ts +registerCssVariables(id: string, variables: Record): () => void +``` + +## Package files + +`theme.json` / `themes/*.json` are parsed after activate. See [Create a theme](/guides/create-a-theme). Official examples: [theme-parchment](https://github.com/dripnex/theme-parchment) and other `dripnex/theme-*` repos. diff --git a/lib/layout.shared.tsx b/lib/layout.shared.tsx new file mode 100644 index 0000000..8924357 --- /dev/null +++ b/lib/layout.shared.tsx @@ -0,0 +1,37 @@ +import type { BaseLayoutProps } from 'fumadocs-ui/layouts/shared'; +import { DOCS_URL, SITE_URL } from '@/lib/site'; + +export function baseOptions(): BaseLayoutProps { + return { + nav: { + title: ( + + + + dripnex. + + developers + + ), + transparentMode: 'top', + }, + githubUrl: 'https://github.com/dripnex/developers', + links: [ + { + text: 'Product', + url: SITE_URL, + external: true, + }, + { + text: 'User docs', + url: DOCS_URL, + external: true, + }, + { + text: 'Plugins', + url: `${SITE_URL}/plugins`, + external: true, + }, + ], + }; +} diff --git a/lib/site.ts b/lib/site.ts new file mode 100644 index 0000000..0c35f29 --- /dev/null +++ b/lib/site.ts @@ -0,0 +1,4 @@ +export const SITE_URL = process.env.NEXT_PUBLIC_SITE_URL ?? 'https://dripnex.app'; +export const DOCS_URL = process.env.NEXT_PUBLIC_DOCS_URL ?? 'https://docs.dripnex.app'; +export const DEVELOPERS_URL = + process.env.NEXT_PUBLIC_DEVELOPERS_URL ?? 'https://developers.dripnex.app'; diff --git a/lib/source.ts b/lib/source.ts new file mode 100644 index 0000000..8a0b363 --- /dev/null +++ b/lib/source.ts @@ -0,0 +1,7 @@ +import { loader } from 'fumadocs-core/source'; +import { docs } from '@/.source/server'; + +export const source = loader({ + baseUrl: '/', + source: docs.toFumadocsSource(), +}); diff --git a/mdx-components.tsx b/mdx-components.tsx new file mode 100644 index 0000000..daed3fd --- /dev/null +++ b/mdx-components.tsx @@ -0,0 +1,29 @@ +import type { MDXComponents } from 'mdx/types'; +import defaultComponents from 'fumadocs-ui/mdx'; +import { Card, Cards } from 'fumadocs-ui/components/card'; +import { Callout } from 'fumadocs-ui/components/callout'; +import { Step, Steps } from 'fumadocs-ui/components/steps'; +import { Tab, Tabs } from 'fumadocs-ui/components/tabs'; +import { Accordion, Accordions } from 'fumadocs-ui/components/accordion'; +import { File, Folder, Files } from 'fumadocs-ui/components/files'; +import { TypeTable } from 'fumadocs-ui/components/type-table'; + +export function useMDXComponents(components: MDXComponents): MDXComponents { + return { + ...defaultComponents, + Card, + Cards, + Callout, + Step, + Steps, + Tab, + Tabs, + Accordion, + Accordions, + File, + Folder, + Files, + TypeTable, + ...components, + }; +} diff --git a/next-env.d.ts b/next-env.d.ts new file mode 100644 index 0000000..1b3be08 --- /dev/null +++ b/next-env.d.ts @@ -0,0 +1,5 @@ +/// +/// + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/next.config.mjs b/next.config.mjs new file mode 100644 index 0000000..649691f --- /dev/null +++ b/next.config.mjs @@ -0,0 +1,12 @@ +import { createMDX } from 'fumadocs-mdx/next'; + +const withMDX = createMDX(); + +/** @type {import('next').NextConfig} */ +const config = { + output: 'export', + reactStrictMode: true, + images: { unoptimized: true }, +}; + +export default withMDX(config); diff --git a/package.json b/package.json new file mode 100644 index 0000000..46af6f1 --- /dev/null +++ b/package.json @@ -0,0 +1,35 @@ +{ + "name": "@dripnex/developers", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "postinstall": "fumadocs-mdx", + "typecheck": "tsc --noEmit", + "deploy": "pnpm build && npx wrangler pages deploy out --project-name dripnex-developers --branch main" + }, + "dependencies": { + "@fontsource-variable/jetbrains-mono": "^5.2.8", + "@fontsource/inter": "^5.2.8", + "fumadocs-core": "^16.9.3", + "fumadocs-mdx": "^15.0.11", + "fumadocs-ui": "^16.9.3", + "next": "^16.2.7", + "next-themes": "^0.4.6", + "react": "^19.2.7", + "react-dom": "^19.2.7" + }, + "devDependencies": { + "@tailwindcss/postcss": "^4.3.0", + "@types/mdx": "^2.0.13", + "@types/node": "25.9.2", + "@types/react": "^19.2.17", + "@types/react-dom": "^19.2.3", + "postcss": "^8.5.15", + "tailwindcss": "^4.3.0", + "typescript": "^6.0.3" + }, + "packageManager": "pnpm@11.9.0" +} diff --git a/postcss.config.mjs b/postcss.config.mjs new file mode 100644 index 0000000..ba30d5f --- /dev/null +++ b/postcss.config.mjs @@ -0,0 +1,7 @@ +/** @type {import('postcss').Config} */ +const config = { + plugins: { + "@tailwindcss/postcss": {}, + }, +}; +export default config; diff --git a/public/apple-touch-icon.png b/public/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..e4be9517afa4e2a02d811e3aa77e5cd55360d031 GIT binary patch literal 8321 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 O%nJT1CjEbt>i+JJB5A}CQ7zH+(``p- zw8Kc7p~g5nQHBzt6+@+T)z8LQMlsS_+Ci0>Xv*3zZMW^&v-_QMzk9#?JkP!Fec$(- zuaFWRYz1|I0svqY8bXW&J=|bs#^8JXkmdmZPvZap_ay*)#H(nFz=HshMGH+JlYvjb*bFer=Kv5eG6Ky3GypJ> z8387sH!|d8#_v$L%;bG+Abyv3Vg;o2bE0Sh8aWIX&rNn`Fu5mK?!siAfdJrzI513R z2^er;a#BhvPUwet&A@@NA&o@9UsD99{17xU1s=%dv*6zD9_}6p0u&C11w|D_*5Z>4yo zVc-uo;LYy7&Vt)ZfZ~zwj*0;7T=1<0@7Q1{F(4|$>eAI-Bs0cQJ)&WI&VNL78F?`4 z*KKzcVPkR2IcdY_x8`Qo^WB4w)9^^h!G?xJXVl)1g59=mpO?1gei``<`p&?eju^E( zhBO)aWKBBtQo5u&BuyP7oO@VMP){Nf+uPgkudlDW8au2|L^k#2zDeGLnEg4oe@a@% z80V=Ph%i%6o=&Gba^y%~*pw)BIN)L|Q;9xL+T6ixoBUnfgC{4Gk_5^}g9Xc*j2{A* zhl?*?mSHVBOrELLYU^Eurk0jN7z{HpabRHJMnwhI@e9@6P*RLSLTzORauN+rek@aoC=kgzbz+d+Y!{Ed0AO&d%Np_9Bo<1w2FS=^qDi3!R+H@ zHW$6Ep1`blC=`lJCSSR7MRK#L$?gs>yQH)Bow1WbOKrI$B0KGTnn4iC?) zysWIO^xMfjw>g!cAG`!>r<=6L(CMAJ7ccnbTL|+*B_+0^bdgA}RnO(*)tLC=0xtw%3l^1 zlCgH;GV>jyR>qA>_h+5+f2JKjUNaTCRV{$ZgFQVxZ)FjRMqhniTkrb{NmdoWMBO}b9Pq|w9qlt-MmNx&nwzgO0@VGSY7#DqPjM6Ntxq0(>-1J?& zCObSDJSQQf_d0)Sf*b?^3V#$Ig#2l`sR@%UoV61%nR|7zmX>R;EOA%csQfZXe7VC` zHRozLBZx@4wUD}>Cm`np%Fht8>uIu8jmYKXY$- zI-uGXW4o~5iLdu Z*VRAx4}Bjq2>uiSAe0nNtotlZ{BHsDC-VRR literal 0 HcmV?d00001 diff --git a/public/icon.png b/public/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..e892e774100e5d6acc715ac29164884e4622ab4e GIT binary patch literal 116051 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%0A!$At)y{eXOK!U_c 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%0AS4P)Y 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 A-~a#s literal 0 HcmV?d00001 diff --git a/public/logo.png b/public/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..95710fe635d4c2eac6321fbaf8f84efb29f94e9c GIT binary patch literal 17374 zcmXV%Ral!{l!dE6@fLR{I3;M%;_mJ(?(SNgV!_>=V#O^$kpjWp-Q67mlYeF|2v6?v zB;VO!(30okwkBo0EfHr0wpNlPuL%w66vjp^55L`%P92l zpnTNuxSvR$K2Tti3kTY0&v(avfQs0?W((fkK4mwx3aYz4`r2=jt$AhhbDteJAF8>| zU6xI)l(ZqD6Z6;%F*jvSth66^|FR&bPuv5UYF}vb%ZO>O84AWEI=1^HX>ag6XwgeP zx6y}jfmbC{3U*R};EM9TCHLiYO}^J1wioWCd!8eA678c~`H9YQM%^sa1$)g3t&0$w z>-~v2bL}}vnXNOT$?jZ8sdh4bUldEet0PT;B_SwX(fPMRjBvlo<6ZWW*W>gAO}1*Q zTMbjZo_2B>ggO4+Dch0E5~7Jt?GCtJv#AT{;{n@>->pBZ-=B#f;D0=W+U4 zU1P})0Tz-@MUjAnCTsLzswPROBC~mmebIwJw_gCDgtc8X>m1*1SWH8~>)(L)n(kPi zonwGrC1Rg5)r|mGyhMlA;@AgbItob)nk#bSc51h=xWb&;&5pTS22?CheRKNGq|~f? z#`^sVM>%^BX8PS6a-YWji33=z&;L?Of-kq%jellfN)LQhdPqeF4boDR#WSmuoh;{q z2F5cGE1DH8)l|4@GYygDzWA3#^98zOerQ|w=PUD{VB$fl5pE2)NT701{ZQH8Wbm1u zFOXl7bJOzDGd~j@!}Vp=ttX@18mWi`Cfa3J`dvb0jLkL* zH%%oMtcbqwSt)s%Rc;WHYUqDte}F^e!tP|2Z*yYcPv2^dP&H#%Q^DWnBJ&!EiU=i? zZJPZx$y%J8?fOYYnw^U&-=8g?E#K_hde3nygDrY+3ylrfB(YCNqJn_?H;AV&ew+Hu zh7$9P+?VG{o$BhLLAjeMHQQSzrMFHyhV$biuP;H*@baOEjD zH@UOY1V`JI9982@&NnopnaIa1%JQGlCBNI~y4iTczU}j$@6(ecBca@%ap>nzdjSRSoVtY~RnubF#_)P{ai@9`)Cq1+!mp=JC#p1jUiGqWYF z#DfJDje*7^^f*KD%XC{7Cm%+!0_95m4uW4sQAOm&c?-^)z3_GUXeF5hR)(A$4G>8^ z$n|}1P}BK6fw24jxk;`i8!Tr>e192Ov4ixmSIZyXA`l~xRN9PDS1Z^mr&+Lz^GA{* z;6~8}lL$}epBJ*F12c~9rO|l0WPX|Iny{vU=SMU`4!Y-6$9|H7MeFLkI4a5HOu6AK zokCfDjx`Wrq+PO>eiF=aqCQ`SlPlHBvNtHSF#`2i!+WN)@x1sQMd z+K$9CQ>vywlS<2syO0+8$gim&Pk|c#kvMl~d^a>Q{7TCMK<{Y-7{&8;l7&?z9w_+WjMW zw}f7=GF+Z7a@@wk7Euf&Nj<5V^;@HGnRTWCy01ry-!0Y3QDTW9sYx%F7x5R;1mau5 z?~dcvQ)vz11KK1(-ixHr{q!=|zS5vS<)nh6;Znwxi@FVgEW$WMILG_6#bw#C|7}NO zkd*RmtSEXOo`FZe%i|otqzhXn#C=te4wz6&%t#>gNn2uTgkE#iL`+;DUNXHzA4Y|^ z;Zbp8pEH1C5tMYMSCg%CS3;;h(Rfh2;&Sm1ZwgWHJfH(Kl?-TT4D^57pi!YE4Hmdf z)djZ(Q|4o<8^529iu<5tYWhY^$kA_7FC4?ZE;C;r*48GDC=Awe{uq04NFWu;WAQM9 zNB{6lA8We)H^5~^U2{SRHYL>MSIQ&jSO`r3s46NdTAmTIq&+>ze8NoHmz9Kcs%F2c$TWt@qgpu{LAE!Al@x3p_ey{T?ohLKHyB)Hh{{;xW=u)WkX7j1At%A7{c>@-OR6vtei~1jc2H)dsRWF-$p3B4u)e%X0a5Y2ovACj zbQm$e)#Q+5N+g(o&y8utp@+4HkGP@GJsS}%MOJP4n|Y3}o7UG@4~o>IIAI2v7Gdi` zabsCrsFJ{=$vPX>sANL9^CQt&P;R|sMRSZ!64V&ga&Wdg?C#9A&oa|I``y*+;~e*7 zDw{C_gr=QCn;)if6#pKB|L3UCD_{LTT-{U%N19Z4p$>=SrG=C1LP!r;HU;DlYt-1R}-uLdmJ9;-ydhH?U2rFv=ZN?9sVVYzFo9tZ9VTk zh;G7xYB~JbZios_zz*Ofp&?)jlDHxMjpp&1St(-)bd&J!F4w9|X!rxn)69lA27YKq znx!RVWtmIowBG-RXINMO7Hqv#2x~fT{4QqI_szB^45I{gy97S%c(T)J_i7mW7ANN@ zWT!MxN;4eecU7@Yzh0UCa|kfQEp_@bzNQ=`HL;=r%=&sgSx`8wVGG#^CECB=0%MG- z$nqkw`En9=uT9Q7ZuL#LcRsE3nPJk8N+2_BAutf2Z%Pgde2j!}VpkK@GnIWTR5&{G z0_YnY-rz()DjARlNqKj^zyIKJVK(|~><~{0qa4%6~V_b~%K5UplarCJTiGlzWF*`ymeWfxLs zwj%ucSp6!)s8Qh{%2D3lX#qdR#gQznv2OD}!UoyY{(kvMnyf&|GyDS`e6K=gDG2@B z65zFSE>hk4*o1wssuupioGQr}nBzt80fcMD<$X)cd)f@1w61PX=1Ad@?FPwyqBUJg z*0qzy({u3qslV#Exy3&yV;fIg^R|F3nLXDln8?GdA~>&t8cJiD=XPBJ3@S8G15S|> zBOt9|Qfpa%FR6_(e|dhmo&ftrC9@jZ$rPK)9Eo`k#Jirace$LltQG6KuWwZ6@v4Hy8B%pz1DVeGskjbUalmWZ=&FR z7sf<9jqGB3UKZgLpVPyL8vuA{Sxbe6ej@FuRVn z_n~5X@4YJ=TSN{0NkdihM-aF-RTVuCr+_=UuAbg~}{;Pb`Q*De5hH zD!vpWC0V)#f4xzB4?Ie)F~q$rw->)-Z!|!4`u9E5**%E051GG6IYG|5QSxX#x8o#n zvQLyF*eNpgo|jyvN8;{p#-jKBc;E_uWIqJV zh-QroMdtjQB#%rQO&z4fI1V=Dh&5M?o=i<4{b1m^gY($r|J0=PcaGkO^LK(J2V`w# zM!Y1`37N!sctWXIPK%lHW4=RJ?7hz3TLPBW+xQwvSezcI_Tix+M;bVN|3KYFy=gV> zv1BZOo>TRoZMkN3afW>dh#wC}Xg=J-ntoNczp(x)vibGpDXio@E{mSlfiZz9?Xvc6 z{{%jU|F3Gb3Rz6~r%n#VwFhuo_?<8?@U<4GIl<#l#&sG~MHm!OwMiVu$pFplg9XeVk zIurOK8U=3WsciJsxL1GZg0WQxYWze%zBrLbRpY9$g~q_LWO zTY*AGbQ1;6{k$t3zgKoEU-=#x@BlmWS6s5?j;EEw&q)-1oFW)M`-DY1e!kJO&+6~_ z#(>I>fAY2cvtAnu@vH2mi~n-_Q=pNg*WSCYF#WhT|3{ z>h+N*QrL*TJZ7FqJ_7@qC&CkQNZs&*r2CP#AAJ3^~Q^yR}3ZRWp41Xv{^ z7t}vU|I`|BgXTHBrVcWDq4TW2Nh0HIq^KJyRW7iATjzZ5vv%%p;wExz6kB_~Ji(i= z7Dw6feuj<*E${`EMJXtusB?o{BQ%!MUST#U%%E0Pyd9vv0GA@kR zEl3}l38>P_d!Sx)Te9tW*8~4TG#A)t-YZVVf4|Ojz)hxz=`furUJ}t-yGWG z9*E6QwtK4du5zMck7WG1qLL~c63^Ew9gQ$u2iylBlIG$W`ur-E=M&?gM0+XX!P;cD zLRgGkv>X$-Lsh7CJJG?PF!rT^(e#Wi490O}kL8Iw^rApZKxqg=D%WA0QspHYY8sK| zM<4E`M%VMDcd3xCo^B5PVcwyQ+CpA?nUhcBQ* z(F6Akn;j?wZl+aT;8Kv5Azb*4euUzXM@m>U3>|H$0(XIR6;)&~mfzY!DJ=7kG)gL6 zj}$Q9=I3r)ChkS@HMbo$eE&}UqkJ?bRWu6TtI_B+S*U-=@wtSakAUIhg&|YU_NBFN zWzk@!2c;hYgOr#wi8XUOntK(qKnMuLcH~5iU60|A82n18s8UNX=m!~59mg6YuSDd; zPZBL?M7H)p{ms*qz8UVQ=4Eidr=|Q9e%PTU9IY3=uK#%m=C+QU$`xqd4EJidsqOHB=JspIEYd? zM6Jx4$^<#@U*){MYkzq>QsOG~e|)e4H!eHL@?H(IGh!I$GbP3|k83$iGZLasZEyH& zI+7wzx{$vpc$wKesEEX^Ze4!)j*uO)iOk_&(nC{-nie{vJ&&&%C$7MMQMgWhV)o%k zYq>;$iv(!m;89|7JYU1?Y&mDBt3=*K&b~qN<5q zpE=62HT0t&oAG_`-ay8u242yGxcn>dVbb&)YACI+q@_*DwOFO^ z7vF+Fm{G{TPdMf%FW=#Hc~4MrD4CgkPq=?^#LPf{?d7&<>Y(IR(u0skRl}{`4H)75 z1(lPAeV_|#Z0rZF(;L6&xEK9>1j5Hk(|44fmRjseV)6mHJK>6A?M4EoFD@@3a6g%3wcd@oH_GYpSgWag9b1BlO6q)^6vI8AFn zO857q^VRQqQkHcRF8oBWdO54SsNt47W+B=c3KiRcLtOMBrH!f)?M7F3_a-}m-vl*D zxHr)Rzy`td&Bfx(qD!aO-?jJ&-Yn!LT|tObdqS_CR|p%IJJsV*K+YGd1T~T(L3)X^ z1H9K&_}bXL`VW!J$Kk$Gn226hYVQk7AxS@Uedegxlv0|^_S6Y|ZV!V$5rtJV&iUp& znQTH{usB=Wtd!PCj#V?2L{#p7u;RMPy*;uohD6kT^`WHCc;`zsr}b=bblu&mx6!=) z9J^)&RiPPCxovg(ZDA6lW{5zK%qBt#h*T2rJ+o9}0@;&Z*TPnhn^{+?l_Rs@PGUo8 zE9)9kL@t3@%rps-2IP_qVv%V?;o(y2PC78#lYyM5|06k}cnPIvqM2B4!?vm1S*_a4jJfk79$UWll0c z^N~AYFKbLWb)T>&ss2NpR=of%1k=L#VqvB%P3PhLiGu$S&nJIlLUuFMla43SjgcO> zXreeV#;iE@SN!Q`+3PYrz>pm8lkIm~aZSMt&-O6-OsuLxLM0xTV@_?rZ85IsEb^;b zqg?4qIU!FWylCyBFK(q%9aR%sQq$A#FB)$nt>SX~*TZg5;aD?{Pk$7F{L@JjE9?T? z6xKgD!T%9EgYyWT5agsrg;G?ZlXvTe>~8x4H|rtHig-*~^T5?WU^?6GX#XgUXi6_VlBs*DgopeIC^C9e& zxRH9+1-b}k^ZiWDD_oO$>A)*yLYzQru^%LKpu?5oNuLSO`jS(Btgb>aS16qzA}nY! zfSE#J-?Ed;VLFHn-)wN(A9gc-58o|2W1tZL>uZf8a4Ht*_a{6OD~B52eL*J^Wa3w# z`V2nD4US(dtmpw_{nXb(IN+JoPA{hkLM1Q)Nl7f;^1;WH6cLg9(Zq^mGXe#jyTX}A zKi__s5TtcyYM2y24;=XsMuJ=0`&+$SEzNu^n}kKA`iXXS*)C~q1>XP=9u~Kn5HU#Q!bo|ePvKSy7f>dZY`Ou95`lk~M7IKek~D#|vY#R1T%K?M z!6>_wog1>QDObw15kqZCq^2q5Q&h9OsxR&}6RxXfCuUx*Sfs9xCL1P3_~YSs4D8gs zGm@q4xb_?=l%;&tz$BY0hKC<=_&CT|UAjf)ReA@Dg0nLr&r#k6aXw$kDE!Zd@$c-C z%H32xG}Z>GS(97P3iEtwyzt!G%B)uRRyiQ=35BA^m)kFL&fgHE+H;1ZAA;U(Xu=PT^ZKOD zrvfherBE~?+~k10kqo>{v2qFzwb6wFDxH(OEY?JQDf(L)UmCxivv)6UmI%aiq|Gru zA5&#?`%ui(c4Ad4GAlQ+9%{h8QKNikkijjgvfe#b537>^aNT?ghSFPOxlz4^dVp>nnhWN(n?-j2~QI+WGBi~0mb^z}`3PEzomvLoXS^ZFuNKQY#-p<%0wWr2SB8GJYvibvvxh`+O^ zwU%s5Y^;Uv*X9$|{xG7?68~D`l&P&>_l&7QO1rW5QVp_lU*saKVo9yqiB7$d>s;Sy zHhFwlFX*Y-Ce&ZR&L6*k6A-jBv0hshA;k>0ing{4bfM?-KSVOm8%hTv%mxr1pD%WY z(`AQdm;;{=MMN-ibnRgRaHr2K{f~3dL1$Og6^)Qln6nHiFj=<%$$o$hE?aKaaW3qLc)`%AwNQn+rR5$vr8l?0Df zNyjN?)J=W#x_Bziu*(;E-oO}dZlB0W*w&-NvVhQ}@ff~qh?o}g(u!lh5YXE%W3?Fw zPP!hQ;VxKeK@r@`c_n$=1_)`#5jdT_F`<9K;T(l~IuYTQUM&C00pg?kZWPw>APhl# zAQT?*%(N^zVwU?~+_fH6VcfY547^LbbYU6<#=qz=|Cm9iW7Kj*9`m8>wQ>su{!Jhp zvIR+6nZ@lI6K{yeJm4UBO^D-7N(wzHyKh%mYn4{UmJFZ{rLdNCzT8wtD73FBFlCwy zCI2JgO6ob}PKCw~J(VE5kN}{|f$y5iZx}HmHNO&;x7V(eOy3^bS6q z2AAOewTRjwZn^k^MQC_inGN5$Q=XB-olY9&#wR4nDhKC(xiKd=zF)QPgatld?FtlL zYPC3-I>ghf(uO@Tx|&EG=<>jofL$lMvo>GQ9T}=rSwS`PY0{87s8{td`uq1~)(y*5 zT*uOf+#lUvX{os=T}_OlDl8agg&g%mX34A$WG038`D{_nMhg;pxq+6-% zB@s8q44K#};elMO{o+2A3m`Zl^vRL2Y>Umr{#8N+_ zp&M2y$2L4H63hyOu6m!LxyzMNEy2hAe!MJ85u6n^POuQfsBsi{Q6y)4%VTOtcnjtr zEsg#*n{b^w&5hi$uH%?|vr;UnkZ+1VteK#&CAksZ97g7sx_Xs;SHGNPH%Fkd*zO8# zcI2D7U9u-5CV%N8->Y#uS&WtLizbp>vZ<3_s%?KfEO&uFxsmRV4V!6_KbTdhnnM;F z9wi28GfSw$)bK7^WM!N%=_7LeaG}P|&1#Vk$v3g>kf&)?#gMS0Rrr{XZ2QxX`Hz*| zfYYk~0q&@XND&}MRYFbtDgVZVm8JgMe!I%>6rcof zJqqzk*2!W*H%Jd+7S|{Jnqo3CpZ~3*^WyVZCR}TB1f%Lhp?T# z0ub4P*~q(ASgsV|n@=-^^;Ufa<%J|>b+uFzFg(+bA4angyRP>ayBi1{)%o^|@3c8+ z^zKCj-1}F9^Ka$1D zM+#Bg<%7^T+jMAOT$507 z9*dq7eAi}!!OrX>fKo~fg0x+q%P_c2NMSSuNim@RJcZqjH6A=-VV8V{9s13nu#d+mg^SL^g zIrY68v0XqFiD(83K5A*bja)N%9x^1&9b$bo(1OMPUxonolscyoWQjAa$hN2!X8zSA z`KlB&u=J7`wfRnex)RvOK!GVY)dvM|CD-s8v`P&)pcp@$*!xSWmUK`ZFHhJtN*!bz zdW0m%Ww=Rc)%xAc%n|nA|6_h(*1PxEXSbXbd%VgyD`u=}&ab5m&1VEfXq5?$=kpK@ zwLn}V~w6Lw-Br!bRY{cml>ZHbv*gUnnM z4cR*QSU5c|KRisPNqM@X6@D{gs?}P(V<7|I>tqFP+e*Iv8P?@RO8-+AoZ_fjD>*bE zrp?@}sj@-sf8S$UKf<*Xx}yS(RaT3Cl!2)df4Ugywvw$*fZT7QY)I>UQgC>mUwR@BLx}z4e)iW&6TyoK1(ZjDILtWm$AJN?(0*0 zuF$UQrXq$T7|Ery?k%~*)U?6IZt4Fho!7(8&iR$)K6f?N_>JT!#fFa{*<<-fCTPoj z%SKGsQ&WMzvHM+fM=4R+ZFdUWU}71sp6Z;o`P8a zPS`El&}<|wvr56&fc#eKq49=IJku{9oHskZ@QXNkLO`h z6&X1lrKxk`0x{y)C%VFr?qS z^4G(7*MKHOMmOc)sd57**T^C))YJY8;1FCz_hbnSJAN!cUaIZ*7@2Q*y4><3$@+2| zisolQYVYlT!+cm=RmHTd43>_Vr04vYGlli6bi47~Tt_b0OB{6-dtFiBFB=!5fSNyP z@%UaN&RKeP3Q%mI+#nYx4m0sO@A8E2f|gUoU4O^RTDz_476Edpn8|^AV>#8E&QPhs z@Qm8jf}5F4d0s_`K1!-ev=KDGB?x^pZ*ra^VC&uTVGy>28pa@b_9HKdtnPc)JFk}q zQ#8QEnBf|M$_?`pTvG9}5&X`(5Y?Llqk6j^3CZ}3hqUzv`LmhCB5JI+;$B7-|NN+3 zS9bBb)PrLYn5-H{Byrh@{~ zOKyisO?elcB@2C|)TIUNo;aC5`NdcKF}APIQE-sH!+s;kc=6-i=o0mc=VTVj4@2vY zl58&qAJ|Q4LCo>J8RoOr>h6%9aeqwSNfQ~7!EZQwF2i@Dh3rufq$b;rvsD_z<;MQg z97K>>P36ImedU6SFnQ{+efb=ySjLQpDSly4Cj37f`11nHvl;#eh0peHQss09yr;o@ z(!7P$3*`OOhb@TuxY=gNQ7V)oNMvGi!r?xs)N zgf$A%tey(nS)Ae^<+I2Ahm66GNSi12(FX!i1&tibL3s@i{7!iw(DtvgpE`hS4;2qo z{e-lH;Jl-O;)`t#zh^s_J_18@Mm-%9us;=`J~s!C@Nyu=W$L;C*l?%!57r7%JdjEK z5}uDcm>GuC5J#NeJ=5Z=OcUbe*)ZDaup#mYkIeBpjwql^pXc%tfKCyfXK>DNy~FBX zw!?QWg-|XSN##x|;NJHj&6OCG#3_xg0MeRF3XGu!q@hc`pmyW*B&Lna^go@bs`ve7 ztNY9#L|yK}04IK(9|78pHffQPe0zBc8)Q@SHO2?8FKg8yrr#|qaJ!VZcfLmPeRL;> zQp8?Z#h8C|7!wKL&~U^Q{DqP3K^_YLdSpuR+L&`&M)9H%hix-vZlM_R1Y~>L)iB@< z1{%DVj1%~G0ME@b-ZTx~T_|%jd0Zh?LXY#N$p_ivCDH3Aajt@L0(Q0k>Im8@d^a8w zjQM?TA~qn`;!hb#Z_YLLNj!|>0iKe;zksF7-{sWS$VJz8)3~O(8^j?AHccyT4iGhG zi@5AN8qPTnfdaNw)W{MX0H6a{;TRRyTwzq$(5evrv7`Z}i@ z>H7Vv@(Kfp*S`F?VxP5-ts%p#A-qc5M~I`W{#%sJ9dTm4*$81e$k}WjDe$b@jvz{m zPRILE$M!t}DiZiw=;eOv2j66(IvHtn!{30Ie{(;t#QIwjoJx8Z-k!y%yr8*HB4YIE zg7ekiM%HqX8C6&(mT^W_k51S-d75aqx!F3zuecE@7DzVPeXSH%t!A%3l5_lTPbFNX z_k27s?>56w=_7xOezB#8Cn!Ogn6mI8X|21%12?D2ea2F_1pjQgVOt|w}L%+3$z!{iEXcKTb}+C*tRZx_t> z;fBs`Uv{{(kZTm2V?6S$s77yB&Vxj=TsYRbz?y6fkyxy?ytMlI{FCaVOg}frgB9s2 z8LJ*S2{IrJjq4Kqt7}NsP71Rw?&*=#|7H+F_;fuc-CtM+ z5iCd_S~pBBi~_3v2~+#*6-{@fV`)KD*qU7BA~&TB{C*U&NrAJov(JBIRyM6N*nD02 zRk0poOn;+$(dH5lFQ64&?$85m!~^*z@#%Xk_@$v{rOCUt%k;{$*zDoBpT91&RqKXY zkle-60(mvoDA;8d7^6gs;htYU2m$SjyPWWq+dBo%EGn+)_S;2vo9lLu3nNai0y?`H ztjSD>evo=Nz+UtZ_)UZbkJQ6GyLf2gF1ec_%9;1>R93&!q>GmMobnm2v~!qVq|91`Y-vms*)cq2jnUIq_PrXkKlHp4g|sC4o(lb$q;cmM@a7bwNvuKsaJ zskcD9guZBWUg>&0=!$O4`(5HMDA57m2GZ(7A9#(q{$EZw%P&K2=DJ*+ccvI<@zOw# zYWBS`5)$kKm}2rfuV~7qg21#dHQb7+(VCL@uenb{m;)XSsy zYSt+ha#0qjk~*qKE&yw~^R%Q_Z>sWgkr};qgj-_6`%Rl?Hf2k_6;EX$#o4`jhm9=` zLS~bQ9m5Ea`4_Q+jIZnpW)Fw z>1MPiPvvuG(RUtcNU|r^c?Fo$PHb<*($jL_QOfSl8fBF(;VN?nw;p7n*ot?%t%q>V zGB6yC4n6ff|F2h6; z{w=2~o1WLPhfBdpessh##nDLf@Je5>nvV4N4n>{7rg$^L-nNd!Ia{f#+K^u20#3L3+Qz zIpgv8aaYH7+x^-)FXC@HHv@@x<*HF?>3di?_dHn+-Jhb}riF@D7=y&p1>s_Deb3JY z`d(z>;~3f)VR@kAAeikXz6H1uy;L>SM`o9*GiEWm-!-XqEY_2&#>&;nXYna#mDQnT zQoJ`8bmk}Vf4+$R8$irqYEaFdw;qam0I&X#zzJk!l4rxFAu@*#Y8cm~2lhgPF&&@9 zg2EtmWosjkl)^>-Lq-s=SgTz0{D`VZTg=jdh9vu-f9kAbF67t8ESJe&*S{2f-gUpJ z9N`NSC++z6THSW~c;KV{|v860T-R7zvn{e4#>8nF5))$>$jWv4~7_XxP4*Ff7G%1rHkaDov%~f z-L1nQG`ib;fZ0VVoA6m=tOmU|KKwYe%F*52f?O8k5)l zGerMYX1(A_yE4J8nyoE@5Q?g7Jx0RHYdIQzZ*BTvva^jBRAajQ7&m;#NF-&)qga=N zuyQ!4%}tI<01U2b-i$b(=hdl<_n`9Fh?57B%7@k3{)hMC4PyK4J zv!FoR7_}<F z!u+(18THmu`3c0*JJ4}S;khJy9D%z@HM8PXgLqUjG-p!`{nADS?jV0Y>+y|)xZS)H zO=fCydQ(2^Ss}*6EAeSRcQa^2i@gQVyv=tUTv+j7v0%sX`i`4iW)~gT?LC~z1|P#1 z-RAEPr}@gXyQc8E!v00#O+D-xVsZtDj(-y7nwES#nRp9AbfWywf@z6@PUx}?BP`cC z!E{F*X0_KwTHi9J@crlcBr@d+_JKThFx;!-O>bGvo zlV@w-#hzg9qrqxmgM;EQHC=)y6=!BcW6()TV*(%kY;&>cOp7m;Iuqcoe{f61w}>~ z#ay{uI2_)K4ju*VEnW8!*{423BtmO{ntWHm6^2NC)si+t`;oh;H#t|}Z?H#|O)4CB ze$h*4pOM0qors!miorK2m&MCjp@BwN|1nX$^$%f@gn%>`bf45~pQ3d=@E|%%(nvHe zN_P+eNl-ghuKcXI%PO?Ii)vJKGbnSST&Tzd6TJStur8-sQJeoj3BgHm)Qg71Yd`P0 z{Y-zgwne0k;DhM~cE_Y=Gd%gWe7r{KVb_2d7V`sWMl1=u`;z69%{II&`K1OZK}#Ky zjEyuMuGb~lh!e&VvXxvwTK`X{a`g?{6es5zfHjWRfv7 zrV)Ddo0SzQ#hp|^4#ZYJzcEZ;_SQ`#)t;dlcZrs_3@4 z%0choa7ljtWZXFQ`4wsNT#(Qn`m+f1z^`XmHcRoNNSbJl9_IY4;KfpfYdTo47f-Ie ziI&Y<-8HC&@3N>6m3bx&$Pz2ba&4#pWZyEV_1%(8M!~^vazGvjwBI}P7!KEqR24uA z`glbHmdb-5I=@$Vj#Wft4^f8vrF)d^W4ZzKq)vEBgfiVsktb3c7yFd73tgY>p7|F1 z^3HI&`s|Tt_W7c8`ygz95PpekR@;2C1b%lxrdRZ9*OX$yoUZk`pSVQZW(4Cw=_FsQu&?NZHW{p3 z8CX;)BK=w7XbGKDF^VOUV-6nh9XzeQl9ISiD@z0Os|c@cB*%=7|I<6&HQun(&es=Y z>WQzAWD1T+;;*|Q+wvje+gim*_t!Zus74pi@@@~5onf@dMNVR?7O6{!MNBscK8Yoo zW$i#tNr$cCn#QgGS%I4$qQ!?CfCqP{1b)g0+k8P?vxnJnp#c!V0b8lj@s}NkBrdkga3qq z_lbJT-${?NmApu=AqrD(Kom?dfErycf+I8aM$hmXAYP_1 z{MZBzm9JW`&JczxNzA%C53CR12NQ)rY%8noj*5r%pm~}$IvNc>x~7Wkw`6mGxs5K_ zD#i>tk;rRc>mg#_bwKjuEDzl$lQ?B}cW&5qiO{E|t7!@}dtJcdP-h_=PX)eg2`OOk zfu(v`DFbPHDVf-MuBJsMeSD%^Pn53b4w0n=sTKW?6i?a{3@oL0zMnVU834@(oOL?= z1mIrST&y_|NgS&(M-sR4_4(l{$hktVBB0eks5g~|z%anW9ex~Jh+Ons!NF!5Lpdz)!=YG2UM~CKw z{|gv^SS9hV)--WIim3t|#lxOGwCSwtI^H+YX&XKx6w*?Xd?9wWD^26In`XWrME0yS zPZjYc@_IT@FvM&uThu(;6SvZ!eUTH9)ureqURZZeE^>UebcCuFaj-XZm;?pdl6S4h zFbN9EY^NyA63af70dWQh^h53x2VZdsw&#u46ycY1@JZ(tsk3t6t*J?E^DJ@exvCIx z)-W^`v6OdUjb*0}h*omM+Tl%qOm8$B;$6T!TVfek@{9IhpQHAg3XA;~;7hcvdND(D zA70$-N9g5dBEHFs`X!) zI#4OTMh1SZ!qcRz+&|jXV8wxdy!7=Gt9Pi&fiKM zJF2eE1^XUvxxk;~bf6YJKkZPQ-}6?^cnF?BV$@B8pvHzw#D)j4;glh}6r&PUSvOQd zN7w%_=S__ZMHih0$3c60wqj`a$bRnF4LnPkG#9+mZiU@y|3;lfjx3T~xH~NOmtr>? z{s}Dk!m0tvT!%p#f{Eo_?}tew2H&V~K|{ib73UsW4XFhMh%B$Vt;Ph!)=s#l@1(GS4ATQSoV*Q419yv}>^R(KVZLQz4-B@%pd zeLddP>1$`In~m*9y7_rwQt16q8C|-rlhsYIIe&>7&l=eyUOjZZE2uMVPoP(5er*Yi z;Wo4cl-~8xpX0J3vc6>~Jxh;?8OeN*T(l}@?(wE1T~N|p=zwFjKPs+QBitGHS_w&# zLg=zm+R_Z4y3nhsq-rhrsau!{oHvxOqs#o=?`Yf6Rm4Ehqs3oVmCa*oYoZ1==`#PC z;a7?U_&Z(yzD2CBFL((@-oH(%_TgMU`eQPiUwg}a8ukZbCiey7m*H}lDBWrf5qFqi zcoX$i-z>Z-4f0-Y9XKKk&T(p78TaknvWWoR7NaAS^dMKbwRsp zP=iZ>1q@Gjd^en-VZ=anlAa~aDn04fz1K{_z7nW{k-tj~C)L#VU)U3$6%*OQ#f?YK z+dmUuET%r%*M17p%A!6pDZIR#Wh1>WBDQ_tv|ojsW1nw?k+EEEKn(n0uDln$3H$K( zRWuortEk5hCS9Mae{8P{CVbF_L&&hJ@$J|?J2@B%qUBRanP8*cM@Fh1$FT^}n-2h4 zOJ3UsSV|{^;+W3JS7kj()1ZjeXXC>Sh_$>Fk4A+wK`KOal84cH+Xl*sbxLDVtJ}I` z^GiKYfk@TgaVf_o9&mAfjMHm>jmv+DpV45|djL1oh5oO1tXzWTeWvua!zDs6OPywi zAGLa}nb}0h;&bEakzmo+J)h4Ca~c6ow_cUoS}LIzJgcFTohT$yC5d>M_l`ox69cvE zC)<{_cmTKE;WU>)`d5R8-L=Ug*&ydc@WhbQkEod4?f$}W7I7i@IlY#l$}SRmYpIDP zpd2$Mc{^9*i~fln>Plv2{x2rLMubJ?4aebLfg!mfcIQ!5+kP;Xf(_*64lW&20HFtZ zomQ7LUIlh?`+DlPud)c3;3-t8bji(>|8G1?HAa^S-K^3PQ&t(xe$2(0*1H#(NpOtEp_-_apL};>!g>;=9UecVL730Oz`Cg*?9I^*I z;U7&rE*oAgW9GK=pYdjZJ z@%?FqVEe)=96j`>=7#L+_iyGJHNW4@!{`IW39l`p@gJWF5pKVwwJwPFoK2P->wt%3 zTPzHi-<)slcPG>kA3`ycUsP-ZUu2wN1^Z{eh56?fhz>Hk_hqYUg)N^KOWbOu+WJ8k z;Q*Xe6+;&}AoLHm>5AD%5;&bf*eZ=$6kr-Lh79pI1WrmE%pQ zo&hWlRmEi6fmzdyMGUC*XAocqz>qS*6VR=zAJZUq8(O>eete^fRS0c_Jg#`fG%6zE!MB5Xa)hWlF6BXrt>N zIY<-BYXVePs{ARk{z=jM`uJ(>DNw`9+cPfDan$3{n*X2o)r^p51#)0@uO3n#E9mgK zrMl%GMgQ)mU=%q(-ttY3jNRApMcig>67%s;*0;)KLnlK5M>Mhe)U6}Xh4Ao4kN_Dk zH!41_w34G`1TH(ODYzb79%)W#ZthV3DEd?DJL&O3u0Zu<*wl*aGWUDpc_X?iy&7|< z5;z>PF1%`$BWg(~OttL6jno4LGvSRs)Q``p8IKgrwefrosSe=h1=T(qQ~$iVtBIWA zv>8^sJJG|1;&aR}u_VlTEt5S~RxcB!?`L z45*Dq{C@=fLk*H;w5F-NjQvvJQPbIE1$DdO#-?@l$z;_Ro*Ke(B#$$BDb?9><1-Pc zuE@btx?B#Ap^=bzJm*0hkNRo)bzcAM&8|Gpe_O6jX;7*j6wldTp@+JxsBm^H6{8dD ztt;x*A7mH^&PX!sklJ$NDBOy0YJ80|yQqHhlQ-A9Qtf zy*JNkGeNDE;=PY;)NU2Il<@Fko-{7bY`9-lPH%lWtPWb<*f2gY~TSJun jcIC