@abstractdata/create-docs 0.2.3
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.
- package/README.md +36 -0
- package/bin/.fuse_hidden0000000a00000002 +194 -0
- package/bin/.fuse_hidden0000000d00000003 +194 -0
- package/bin/cli.js +194 -0
- package/package.json +38 -0
- package/template/.claude/skills/abstract-data-docs-author/SKILL.md +305 -0
- package/template/.claude/skills/abstract-data-setup/SKILL.md +555 -0
- package/template/.cursor/rules/abstract-data-docs-author.mdc +311 -0
- package/template/.cursor/rules/abstract-data-setup.mdc +561 -0
- package/template/.cursor/rules/welcome.mdc +29 -0
- package/template/.fuse_hidden0000001e00000008 +75 -0
- package/template/.fuse_hidden0000002100000009 +46 -0
- package/template/.fuse_hidden000000210000000a +75 -0
- package/template/.fuse_hidden000000240000000b +46 -0
- package/template/.github/copilot-instructions.md +893 -0
- package/template/.github/workflows/deploy-cloudflare.yml +50 -0
- package/template/.github/workflows/deploy-vercel.yml +47 -0
- package/template/.github/workflows/deploy.yml +55 -0
- package/template/CLAUDE.md +46 -0
- package/template/README.md +75 -0
- package/template/astro.config.mjs +69 -0
- package/template/package.json +25 -0
- package/template/public/favicon.svg +26 -0
- package/template/scripts/build-python-docs.mjs +385 -0
- package/template/scripts/build-ts-docs.mjs +349 -0
- package/template/scripts/python-autodoc.json +10 -0
- package/template/scripts/ts-autodoc.json +10 -0
- package/template/src/assets/README.md +1 -0
- package/template/src/content/docs/index.mdx +81 -0
- package/template/src/content/docs/quickstart.md +162 -0
- package/template/src/content.config.ts +46 -0
- package/template/src/env.d.ts +2 -0
- package/template/tsconfig.json +5 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
name: Deploy to Cloudflare Pages
|
|
2
|
+
|
|
3
|
+
# Optional. Cloudflare Pages can also auto-deploy from a connected Git repo
|
|
4
|
+
# (no workflow needed). Use this only if you want CI to control the deploy.
|
|
5
|
+
#
|
|
6
|
+
# Setup:
|
|
7
|
+
# 1. Create a Cloudflare API token with "Cloudflare Pages — Edit" permission
|
|
8
|
+
# at dash.cloudflare.com/profile/api-tokens
|
|
9
|
+
# 2. Add two GitHub secrets:
|
|
10
|
+
# - CLOUDFLARE_API_TOKEN
|
|
11
|
+
# - CLOUDFLARE_ACCOUNT_ID
|
|
12
|
+
# 3. Set the project name below (line: projectName).
|
|
13
|
+
# 4. Delete .github/workflows/deploy.yml if you're not using GitHub Pages.
|
|
14
|
+
|
|
15
|
+
on:
|
|
16
|
+
push:
|
|
17
|
+
branches: [main]
|
|
18
|
+
workflow_dispatch:
|
|
19
|
+
|
|
20
|
+
permissions:
|
|
21
|
+
contents: read
|
|
22
|
+
deployments: write
|
|
23
|
+
|
|
24
|
+
jobs:
|
|
25
|
+
deploy:
|
|
26
|
+
name: Deploy
|
|
27
|
+
runs-on: ubuntu-latest
|
|
28
|
+
steps:
|
|
29
|
+
- name: Checkout
|
|
30
|
+
uses: actions/checkout@v4
|
|
31
|
+
|
|
32
|
+
- name: Setup Bun
|
|
33
|
+
uses: oven-sh/setup-bun@v2
|
|
34
|
+
with:
|
|
35
|
+
bun-version: latest
|
|
36
|
+
|
|
37
|
+
- name: Install dependencies
|
|
38
|
+
run: bun install --frozen-lockfile
|
|
39
|
+
|
|
40
|
+
- name: Build site
|
|
41
|
+
run: bun run build
|
|
42
|
+
|
|
43
|
+
- name: Publish to Cloudflare Pages
|
|
44
|
+
uses: cloudflare/pages-action@v1
|
|
45
|
+
with:
|
|
46
|
+
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
|
47
|
+
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
|
48
|
+
projectName: your-project-name # ← change to your CF Pages project name
|
|
49
|
+
directory: dist
|
|
50
|
+
gitHubToken: ${{ secrets.GITHUB_TOKEN }}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
name: Deploy to Vercel
|
|
2
|
+
|
|
3
|
+
# Optional. Most teams just connect their Git repo to Vercel and let Vercel
|
|
4
|
+
# auto-deploy on push (no workflow needed). Use this only if you want CI to
|
|
5
|
+
# control the deploy — for example, to gate behind a typecheck/lint step.
|
|
6
|
+
#
|
|
7
|
+
# Setup:
|
|
8
|
+
# 1. Install Vercel CLI in this repo: `bun add -d vercel`
|
|
9
|
+
# 2. Run `vercel link` once locally to attach the project.
|
|
10
|
+
# 3. Add three GitHub secrets:
|
|
11
|
+
# - VERCEL_TOKEN (from vercel.com/account/tokens)
|
|
12
|
+
# - VERCEL_ORG_ID (from .vercel/project.json after link)
|
|
13
|
+
# - VERCEL_PROJECT_ID (from .vercel/project.json after link)
|
|
14
|
+
# 4. Delete .github/workflows/deploy.yml (the GitHub Pages workflow) if you're not using Pages.
|
|
15
|
+
|
|
16
|
+
on:
|
|
17
|
+
push:
|
|
18
|
+
branches: [main]
|
|
19
|
+
workflow_dispatch:
|
|
20
|
+
|
|
21
|
+
permissions:
|
|
22
|
+
contents: read
|
|
23
|
+
|
|
24
|
+
jobs:
|
|
25
|
+
deploy:
|
|
26
|
+
name: Deploy
|
|
27
|
+
runs-on: ubuntu-latest
|
|
28
|
+
steps:
|
|
29
|
+
- name: Checkout
|
|
30
|
+
uses: actions/checkout@v4
|
|
31
|
+
|
|
32
|
+
- name: Setup Bun
|
|
33
|
+
uses: oven-sh/setup-bun@v2
|
|
34
|
+
with:
|
|
35
|
+
bun-version: latest
|
|
36
|
+
|
|
37
|
+
- name: Install dependencies
|
|
38
|
+
run: bun install --frozen-lockfile
|
|
39
|
+
|
|
40
|
+
- name: Pull Vercel environment
|
|
41
|
+
run: bunx vercel pull --yes --environment=production --token=${{ secrets.VERCEL_TOKEN }}
|
|
42
|
+
|
|
43
|
+
- name: Build for Vercel
|
|
44
|
+
run: bunx vercel build --prod --token=${{ secrets.VERCEL_TOKEN }}
|
|
45
|
+
|
|
46
|
+
- name: Deploy
|
|
47
|
+
run: bunx vercel deploy --prebuilt --prod --token=${{ secrets.VERCEL_TOKEN }}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
name: Deploy to GitHub Pages
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
pages: write
|
|
11
|
+
id-token: write
|
|
12
|
+
|
|
13
|
+
concurrency:
|
|
14
|
+
group: pages
|
|
15
|
+
cancel-in-progress: false
|
|
16
|
+
|
|
17
|
+
jobs:
|
|
18
|
+
build:
|
|
19
|
+
name: Build
|
|
20
|
+
runs-on: ubuntu-latest
|
|
21
|
+
steps:
|
|
22
|
+
- name: Checkout
|
|
23
|
+
uses: actions/checkout@v4
|
|
24
|
+
|
|
25
|
+
- name: Setup Bun
|
|
26
|
+
uses: oven-sh/setup-bun@v2
|
|
27
|
+
with:
|
|
28
|
+
bun-version: latest
|
|
29
|
+
|
|
30
|
+
- name: Install dependencies
|
|
31
|
+
run: bun install --frozen-lockfile
|
|
32
|
+
|
|
33
|
+
- name: Build site
|
|
34
|
+
run: bun run build
|
|
35
|
+
env:
|
|
36
|
+
# Astro reads `BASE_URL` if you've set `base:` in astro.config.mjs
|
|
37
|
+
# for project pages. Set it here to match.
|
|
38
|
+
BASE_URL: ${{ vars.BASE_URL || '/' }}
|
|
39
|
+
|
|
40
|
+
- name: Upload Pages artifact
|
|
41
|
+
uses: actions/upload-pages-artifact@v3
|
|
42
|
+
with:
|
|
43
|
+
path: ./dist
|
|
44
|
+
|
|
45
|
+
deploy:
|
|
46
|
+
name: Deploy
|
|
47
|
+
needs: build
|
|
48
|
+
runs-on: ubuntu-latest
|
|
49
|
+
environment:
|
|
50
|
+
name: github-pages
|
|
51
|
+
url: ${{ steps.deployment.outputs.page_url }}
|
|
52
|
+
steps:
|
|
53
|
+
- name: Deploy to GitHub Pages
|
|
54
|
+
id: deployment
|
|
55
|
+
uses: actions/deploy-pages@v4
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Abstract Data Documentation Theme — agent context
|
|
2
|
+
|
|
3
|
+
This project uses the **Abstract Data Documentation Theme** (built on Astro Starlight, distributed as `@abstractdata/starlight-theme`). When talking to the user, refer to the product as the **"Abstract Data Documentation Theme"** — not "Astro Starlight" — Starlight is the substrate, not the product identity.
|
|
4
|
+
|
|
5
|
+
## First-interaction handshake — IMPORTANT
|
|
6
|
+
|
|
7
|
+
When you open a conversation in this project, immediately check the setup state:
|
|
8
|
+
|
|
9
|
+
- **`scripts/python-autodoc.json`** — does it have placeholder values like `searchPath: "../../../python-example/src"` and a `modules` list pointing at `example_module`? Or has it been customized for this project's actual Python source?
|
|
10
|
+
- **`astro.config.mjs`** — is `title: 'Your Project Docs'` still the literal placeholder? Is `site: 'https://example.com'` still the placeholder URL?
|
|
11
|
+
|
|
12
|
+
**If either signal looks like a fresh scaffold,** open the conversation with this offer (don't wait for the user to ask):
|
|
13
|
+
|
|
14
|
+
> "Looks like this is a freshly scaffolded Abstract Data Documentation Theme project. Want me to run the `abstract-data-setup` workflow now? It'll detect your Python source, audit docstring coverage, sniff your docstring style, ask a few config questions, and wire up `python-autodoc.json`, `astro.config.mjs`, and `package.json`. (Reply 'no' if you'd rather configure manually — I won't ask again.)"
|
|
15
|
+
|
|
16
|
+
If the user agrees, immediately invoke the `abstract-data-setup` skill (`.claude/skills/abstract-data-setup/SKILL.md`).
|
|
17
|
+
|
|
18
|
+
**If setup looks already-done** (JSON has real module names, `astro.config.mjs` has a real title): don't auto-offer the handshake. Just be a normal helpful assistant for whatever the user wants to work on.
|
|
19
|
+
|
|
20
|
+
**Once the user has declined or completed setup:** treat this handshake as satisfied for the rest of the conversation. Don't keep nagging.
|
|
21
|
+
|
|
22
|
+
## Skill location
|
|
23
|
+
|
|
24
|
+
The full setup workflow lives at `.claude/skills/abstract-data-setup/SKILL.md`. It's an 11-phase procedural skill: confirm context → locate source → detect Python signals → audit docstring coverage → detect docstring style → recommend modules → gather brand config → write configs → optionally run docs:python → optional pre-commit hook → summary.
|
|
25
|
+
|
|
26
|
+
## Project conventions
|
|
27
|
+
|
|
28
|
+
- **Package manager: Bun** — not npm/yarn/pnpm. Use `bun run <name>` and `bun add <pkg>`.
|
|
29
|
+
- **Commits: Conventional Commits** — release-please reads them to bump versions automatically. `feat:` for minor, `fix:` for patch, `feat!:` or `BREAKING CHANGE:` for major.
|
|
30
|
+
- **Don't hand-edit:** `.cursor/rules/abstract-data-setup.mdc`, `.github/copilot-instructions.md`, `.cursor/rules/welcome.mdc` — these are auto-generated.
|
|
31
|
+
|
|
32
|
+
## Quick reference
|
|
33
|
+
|
|
34
|
+
- `astro.config.mjs` — Starlight config: title, sidebar, plugin options
|
|
35
|
+
- `scripts/python-autodoc.json` — Python autodoc target config
|
|
36
|
+
- `scripts/build-python-docs.mjs` — orchestrator that wraps pydoc-markdown
|
|
37
|
+
- `src/content/docs/` — Markdown/MDX content
|
|
38
|
+
- `bun run dev` — start the docs dev server
|
|
39
|
+
- `bun run docs:python` — regenerate API pages from Python source
|
|
40
|
+
- `bun run build` — production build
|
|
41
|
+
|
|
42
|
+
## Links
|
|
43
|
+
|
|
44
|
+
- Source repo: https://github.com/Abstract-Data/abstract-data-doc-theme
|
|
45
|
+
- Theme on npm: https://www.npmjs.com/package/@abstractdata/starlight-theme
|
|
46
|
+
- Scaffolder on npm: https://www.npmjs.com/package/@abstractdata/create-docs
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# Abstract Data Docs Template
|
|
2
|
+
|
|
3
|
+
Starter Starlight documentation site with the [`@abstractdata/starlight-theme`](https://github.com/Abstract-Data/abstract-data-doc-theme) already wired in.
|
|
4
|
+
|
|
5
|
+
## Use this template
|
|
6
|
+
|
|
7
|
+
**The fastest path** — use the `@abstractdata/create-docs` CLI:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
bun create @abstractdata/docs my-docs
|
|
11
|
+
cd my-docs
|
|
12
|
+
bun install
|
|
13
|
+
bun dev
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
The CLI copies this template into a fresh folder, swaps `workspace:*` for a real published version of the theme, sets your project name in `package.json` and `astro.config.mjs`, and runs `git init` so you have a clean history from step zero.
|
|
17
|
+
|
|
18
|
+
**Alternative — clone manually:**
|
|
19
|
+
|
|
20
|
+
Click **"Use this template"** on the GitHub repo (or fork it) to create a new repo from this code, then:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
git clone https://github.com/your-org/your-new-repo.git
|
|
24
|
+
cd your-new-repo
|
|
25
|
+
bun install
|
|
26
|
+
bun dev
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
> **If you copied this folder out of the monorepo manually**, change the `@abstractdata/starlight-theme` dependency in `package.json` from `"workspace:*"` to a real version like `"^0.3.0"` before running `bun install`.
|
|
30
|
+
|
|
31
|
+
## Customize
|
|
32
|
+
|
|
33
|
+
See [`src/content/docs/quickstart.md`](./src/content/docs/quickstart.md) — it walks through what to change in `astro.config.mjs`, where to drop your logo, and how to toggle motion / credit / version.
|
|
34
|
+
|
|
35
|
+
### Auto-setup with your AI coding assistant
|
|
36
|
+
|
|
37
|
+
This template ships the `abstract-data-setup` workflow in three formats so it works regardless of which AI assistant you use:
|
|
38
|
+
|
|
39
|
+
| Tool | File | Fidelity |
|
|
40
|
+
|---|---|---|
|
|
41
|
+
| **Claude Code** | `.claude/skills/abstract-data-setup/SKILL.md` | full procedural workflow |
|
|
42
|
+
| **Cursor** | `.cursor/rules/abstract-data-setup.mdc` | full procedural workflow |
|
|
43
|
+
| **GitHub Copilot** | `.github/copilot-instructions.md` | static reference (Copilot can't natively run interactive prompts) |
|
|
44
|
+
|
|
45
|
+
Open your tool of choice in this folder and say **"set up docs"** (or "wire up Python autodoc", "configure docs", "audit docstrings", etc.). The workflow detects your source project, audits docstring coverage, sniffs docstring style, asks a few configuration questions, and writes the right files (`scripts/python-autodoc.json`, `astro.config.mjs` sidebar + plugin config, `package.json` scripts).
|
|
46
|
+
|
|
47
|
+
If you only use one tool, delete the other adapter folders — they're independent files.
|
|
48
|
+
|
|
49
|
+
The Claude Code SKILL.md is the source of truth; the Cursor and Copilot files are auto-generated from it. (Edit the SKILL.md and run `bun run sync-skills` if you're working in the monorepo.)
|
|
50
|
+
|
|
51
|
+
Round 1 covers Python projects. TypeScript, Next.js, TanStack, OpenAPI, and other detectors are planned for follow-up rounds.
|
|
52
|
+
|
|
53
|
+
## Deploy to GitHub Pages
|
|
54
|
+
|
|
55
|
+
The workflow at `.github/workflows/deploy.yml` is preconfigured. To enable:
|
|
56
|
+
|
|
57
|
+
1. **Repo Settings → Pages → Source:** select **"GitHub Actions"**.
|
|
58
|
+
2. **Push to `main`.** The workflow builds with Bun and publishes to Pages.
|
|
59
|
+
3. **For project pages** (e.g. `username.github.io/your-repo`), uncomment the `base:` line in `astro.config.mjs` and set it to `/your-repo-name`.
|
|
60
|
+
|
|
61
|
+
## Other deploy targets
|
|
62
|
+
|
|
63
|
+
The output is plain static HTML — drop `dist/` on any host:
|
|
64
|
+
|
|
65
|
+
- **Vercel** — easiest: connect the repo at vercel.com → New Project. Vercel auto-detects Astro and deploys on every push. No workflow needed. If you want CI control, use `.github/workflows/deploy-vercel.yml` (delete the GitHub Pages workflow first).
|
|
66
|
+
- **Cloudflare Pages** — easiest: connect at dash.cloudflare.com/?to=/:account/pages → Create Project. Same flow as Vercel. If you want CI control, use `.github/workflows/deploy-cloudflare.yml`.
|
|
67
|
+
- **Netlify** — same auto-deploy pattern. Drop a `netlify.toml` if you need to override.
|
|
68
|
+
|
|
69
|
+
## Update the theme
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
bun update @abstractdata/starlight-theme
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Bun pulls the latest minor/patch within your semver range. Major versions are opt-in.
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { defineConfig } from 'astro/config';
|
|
2
|
+
import starlight from '@astrojs/starlight';
|
|
3
|
+
import abstractData from '@abstractdata/starlight-theme';
|
|
4
|
+
import starlightLinksValidator from 'starlight-links-validator';
|
|
5
|
+
|
|
6
|
+
// https://astro.build/config
|
|
7
|
+
export default defineConfig({
|
|
8
|
+
// ⬇️ Set to your production URL before going live (sitemap depends on it).
|
|
9
|
+
site: 'https://example.com',
|
|
10
|
+
|
|
11
|
+
// ⬇️ Uncomment if deploying to a project page (e.g. github.io/<repo>/).
|
|
12
|
+
// base: '/your-repo-name',
|
|
13
|
+
|
|
14
|
+
integrations: [
|
|
15
|
+
starlight({
|
|
16
|
+
// ⬇️ Replace with your project name.
|
|
17
|
+
title: 'Your Project Docs',
|
|
18
|
+
description: 'Branded documentation by Abstract Data.',
|
|
19
|
+
|
|
20
|
+
// ⬇️ Replace with your logo. Place it in `src/assets/`.
|
|
21
|
+
// logo: { src: './src/assets/your-logo.png', replacesTitle: true },
|
|
22
|
+
|
|
23
|
+
// ⬇️ Replace or remove.
|
|
24
|
+
social: [
|
|
25
|
+
{
|
|
26
|
+
icon: 'github',
|
|
27
|
+
label: 'GitHub',
|
|
28
|
+
href: 'https://github.com/your-org/your-repo',
|
|
29
|
+
},
|
|
30
|
+
],
|
|
31
|
+
|
|
32
|
+
// ⬇️ Show "Last updated" timestamps on every page (read from git).
|
|
33
|
+
// Requires the repo to be a git checkout at build time.
|
|
34
|
+
lastUpdated: true,
|
|
35
|
+
|
|
36
|
+
// ⬇️ Show an "Edit page" link in the footer of every doc.
|
|
37
|
+
// Uncomment and replace once your repo URL is final.
|
|
38
|
+
// editLink: {
|
|
39
|
+
// baseUrl: 'https://github.com/your-org/your-repo/edit/main/',
|
|
40
|
+
// },
|
|
41
|
+
|
|
42
|
+
// ⬇️ Customize your sidebar.
|
|
43
|
+
sidebar: [
|
|
44
|
+
{
|
|
45
|
+
label: 'Get Started',
|
|
46
|
+
items: [
|
|
47
|
+
{ label: 'Welcome', slug: 'index' },
|
|
48
|
+
{ label: 'Quickstart', slug: 'quickstart' },
|
|
49
|
+
],
|
|
50
|
+
},
|
|
51
|
+
],
|
|
52
|
+
|
|
53
|
+
plugins: [
|
|
54
|
+
abstractData({
|
|
55
|
+
// 'full' = HUD with animations · 'calm' = no motion (recommended for client docs)
|
|
56
|
+
motion: 'calm',
|
|
57
|
+
// 'auto' = "Built by Abstract Data" credit visible · 'hide' = white-label
|
|
58
|
+
credit: 'auto',
|
|
59
|
+
// Optional version chip in the header. Omit to hide.
|
|
60
|
+
// version: 'v1.0.0',
|
|
61
|
+
}),
|
|
62
|
+
// Fails the build on broken internal links — run on every PR.
|
|
63
|
+
// Set `errorOnFallbackPages: false` if you only build a subset
|
|
64
|
+
// of locales in dev.
|
|
65
|
+
starlightLinksValidator(),
|
|
66
|
+
],
|
|
67
|
+
}),
|
|
68
|
+
],
|
|
69
|
+
});
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@abstractdata/docs-template",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"private": true,
|
|
5
|
+
"description": "Abstract Data documentation template — clone this for new client doc projects.",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"dev": "astro dev",
|
|
9
|
+
"build": "astro check && astro build",
|
|
10
|
+
"preview": "astro preview",
|
|
11
|
+
"typecheck": "astro check",
|
|
12
|
+
"docs:python": "node scripts/build-python-docs.mjs",
|
|
13
|
+
"docs:ts": "node scripts/build-ts-docs.mjs"
|
|
14
|
+
},
|
|
15
|
+
"dependencies": {
|
|
16
|
+
"@abstractdata/starlight-theme": "workspace:*",
|
|
17
|
+
"@astrojs/starlight": "~0.37.0",
|
|
18
|
+
"astro": "^5.10.0",
|
|
19
|
+
"sharp": "^0.33.5",
|
|
20
|
+
"starlight-links-validator": "^0.16.0"
|
|
21
|
+
},
|
|
22
|
+
"devDependencies": {
|
|
23
|
+
"typescript": "^5.6.0"
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<svg width="180" height="180" viewBox="0 0 180 180" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<style>
|
|
3
|
+
@media (prefers-color-scheme: light) {
|
|
4
|
+
.background { fill: black; }
|
|
5
|
+
.foreground { fill: white; }
|
|
6
|
+
}
|
|
7
|
+
@media (prefers-color-scheme: dark) {
|
|
8
|
+
.background { fill: white; }
|
|
9
|
+
.foreground { fill: black; }
|
|
10
|
+
}
|
|
11
|
+
</style>
|
|
12
|
+
<g clip-path="url(#clip0_7960_43945)">
|
|
13
|
+
<rect class="background" width="180" height="180" rx="37" />
|
|
14
|
+
<g style="transform: scale(95%); transform-origin: center">
|
|
15
|
+
<path class="foreground"
|
|
16
|
+
d="M101.141 53H136.632C151.023 53 162.689 64.6662 162.689 79.0573V112.904H148.112V79.0573C148.112 78.7105 148.098 78.3662 148.072 78.0251L112.581 112.898C112.701 112.902 112.821 112.904 112.941 112.904H148.112V126.672H112.941C98.5504 126.672 86.5638 114.891 86.5638 100.5V66.7434H101.141V100.5C101.141 101.15 101.191 101.792 101.289 102.422L137.56 66.7816C137.255 66.7563 136.945 66.7434 136.632 66.7434H101.141V53Z" />
|
|
17
|
+
<path class="foreground"
|
|
18
|
+
d="M65.2926 124.136L14 66.7372H34.6355L64.7495 100.436V66.7372H80.1365V118.47C80.1365 126.278 70.4953 129.958 65.2926 124.136Z" />
|
|
19
|
+
</g>
|
|
20
|
+
</g>
|
|
21
|
+
<defs>
|
|
22
|
+
<clipPath id="clip0_7960_43945">
|
|
23
|
+
<rect width="180" height="180" fill="white" />
|
|
24
|
+
</clipPath>
|
|
25
|
+
</defs>
|
|
26
|
+
</svg>
|