@blueprint-chart/editor 0.1.26 → 0.1.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +54 -0
- package/dist/assets/{CopyRedirect-DWJqAXhM.js → CopyRedirect-Cqrnf5wv.js} +1 -1
- package/dist/assets/LandingPage-DwbySIyi.css +1 -0
- package/dist/assets/LandingPage-gl7fYuoW.js +4 -0
- package/dist/assets/{index-CQLeIi0R.css → index-BtkgcGhX.css} +2 -2
- package/dist/assets/index-C0PNQzQK.js +859 -0
- package/dist/assets/index-DkGlODiu.js +44 -0
- package/dist/index.html +2 -2
- package/package.json +4 -3
- package/dist/assets/LandingPage-B7LxmH7R.js +0 -4
- package/dist/assets/LandingPage-DpynvD5x.css +0 -1
- package/dist/assets/index-Bv8IEq6k.js +0 -859
package/README.md
CHANGED
|
@@ -21,6 +21,60 @@ Or copy `node_modules/@blueprint-chart/editor/dist/*` into your own static hosti
|
|
|
21
21
|
|
|
22
22
|
See [the main repository](https://github.com/blueprint-chart/blueprint-chart) for development instructions.
|
|
23
23
|
|
|
24
|
+
## Optional: Accounts & hosted charts (Supabase)
|
|
25
|
+
|
|
26
|
+
The editor works fully without an account — charts live in your browser and embed
|
|
27
|
+
via self-contained base64 links. To additionally let users sign in, store charts
|
|
28
|
+
in the cloud, and publish live permalinks, configure Supabase.
|
|
29
|
+
|
|
30
|
+
### 1. Create a Supabase project and apply the schema
|
|
31
|
+
|
|
32
|
+
The schema lives in `packages/editor/supabase/migrations/20260601000000_charts.sql`
|
|
33
|
+
(creates the `charts` table and RLS policies — owner full access; public read of
|
|
34
|
+
published charts). Apply it with **either** method:
|
|
35
|
+
|
|
36
|
+
**A. Supabase SQL Editor (no tooling).** Open your project → SQL Editor → paste the
|
|
37
|
+
file contents → Run. Always works.
|
|
38
|
+
|
|
39
|
+
**B. Supabase CLI.** This repo ships a ready `packages/editor/supabase/` project, so
|
|
40
|
+
from that directory:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
cd packages/editor
|
|
44
|
+
supabase link --project-ref YOUR-PROJECT-REF
|
|
45
|
+
supabase db push
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
`db push` only recognizes migrations named `<timestamp>_name.sql` and reads them
|
|
49
|
+
from the `supabase/` project it's run against — hence `cd packages/editor` first.
|
|
50
|
+
If you keep your own `supabase/` project elsewhere, copy
|
|
51
|
+
`20260601000000_charts.sql` into its `supabase/migrations/` (keep the timestamped
|
|
52
|
+
name) before running `supabase db push`.
|
|
53
|
+
|
|
54
|
+
### 2. Configure credentials
|
|
55
|
+
|
|
56
|
+
Either bake them at build time:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
VITE_SUPABASE_URL=https://YOUR-PROJECT.supabase.co
|
|
60
|
+
VITE_SUPABASE_ANON_KEY=YOUR-PUBLIC-ANON-KEY
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
…or deploy a runtime `config.json` next to `index.html` (overrides env, so one
|
|
64
|
+
build can be configured per deploy — see `config.example.json`):
|
|
65
|
+
|
|
66
|
+
```json
|
|
67
|
+
{ "supabaseUrl": "https://YOUR-PROJECT.supabase.co", "supabaseAnonKey": "YOUR-PUBLIC-ANON-KEY" }
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
If neither is set (or only one value is present), the accounts feature stays off
|
|
71
|
+
and the editor behaves exactly as the self-contained build.
|
|
72
|
+
|
|
73
|
+
### 3. Auth provider
|
|
74
|
+
|
|
75
|
+
Sign-in uses passwordless magic links. In your Supabase project enable the Email
|
|
76
|
+
provider and add your deployed origin to the allowed redirect URLs.
|
|
77
|
+
|
|
24
78
|
## License
|
|
25
79
|
|
|
26
80
|
MIT
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as t,o,c as r,
|
|
1
|
+
import{d as t,o,c as r,a3 as a,a4 as c}from"./index-C0PNQzQK.js";const s={class:"copy-redirect","aria-hidden":"true"},i=t({__name:"CopyRedirect",setup(n){const e=a();return c().replace(e.meta.copyTarget??"/"),(p,_)=>(o(),r("div",s))}});export{i as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@charset "UTF-8";.landing-topnav__brand[data-v-8959d841]{display:inline-flex;align-items:center;gap:.5rem;color:var(--bs-body-color);text-decoration:none;white-space:nowrap}.landing-topnav__brand[data-v-8959d841]:hover{color:var(--bs-body-color)}.landing-topnav__brand-logo[data-v-8959d841]{height:1.5rem;width:auto;display:block}.landing-topnav__brand-name[data-v-8959d841]{line-height:1}.landing-chart-preview[data-v-eb03c209]{width:100%;height:100%}.landing-hero[data-v-79f507ab]{padding:3.5rem clamp(1rem,5vw,3.75rem) 4rem}.landing-hero__inner[data-v-79f507ab]{max-width:70rem;margin:0 auto;display:grid;grid-template-columns:1fr 1fr;gap:4rem;align-items:center}.landing-hero__inner__text__eyebrow[data-v-79f507ab]{margin-bottom:1.25rem}.landing-hero__inner__text__eyebrow__dot[data-v-79f507ab]{width:.4375rem;height:.4375rem;border-radius:50%;background:var(--bs-info);box-shadow:0 0 0 4px rgba(var(--bs-info-rgb),.18)}.landing-hero__inner__text__h1[data-v-79f507ab]{font-size:clamp(2.25rem,4.5vw,4rem);font-weight:400;line-height:1.05;letter-spacing:-.015em;color:var(--bs-body-color);margin-bottom:1.5rem;font-family:"DM Serif Display",Georgia,Times New Roman,serif}.landing-hero__inner__text__h1[data-v-79f507ab] em{font-style:italic;color:var(--bs-info)}.landing-hero__inner__text__sub[data-v-79f507ab]{font-size:1rem;color:var(--bs-secondary-color);line-height:1.65;max-width:28.75rem;margin-bottom:2.25rem}.landing-hero__inner__text__actions[data-v-79f507ab]{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.landing-hero__inner__chart[data-v-79f507ab]{background:var(--bc-tile-bg);border:1px solid var(--bc-hairline);border-radius:var(--bc-radius-lg);box-shadow:0 8px 24px #00000026;align-self:center;overflow:hidden}@media(max-width:51.25rem){.landing-hero[data-v-79f507ab]{padding:2.5rem 1rem 3rem}.landing-hero__inner[data-v-79f507ab]{grid-template-columns:1fr;gap:2.25rem}.landing-hero__inner__chart[data-v-79f507ab]{display:block;max-height:60vh;overflow:hidden}}.landing-value-prop-strip[data-v-b0808585]{background:var(--bc-content-bg);border-top:1px solid var(--bc-hairline);border-bottom:1px solid var(--bc-hairline);display:grid;grid-template-columns:repeat(4,1fr)}.landing-value-prop-strip__cell[data-v-b0808585]{margin:0;padding:1rem 1.25rem;display:flex;flex-direction:column;gap:.25rem;border-right:1px solid var(--bc-hairline)}.landing-value-prop-strip__cell[data-v-b0808585]:last-child{border-right:none}.landing-value-prop-strip__cell__label[data-v-b0808585]{font-family:Geist Mono,ui-monospace,monospace;font-size:var(--bs-font-size-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--bs-tertiary-color)}.landing-value-prop-strip__cell__value[data-v-b0808585]{margin-inline-start:0;font-size:var(--bs-font-size-md);font-weight:500;color:var(--bs-body-color)}.landing-value-prop-strip__cell__link[data-v-b0808585]{display:inline-flex;align-items:center;gap:.375rem;color:inherit;text-decoration:none;transition:color var(--bc-duration-base) var(--bc-ease)}.landing-value-prop-strip__cell__link[data-v-b0808585]:hover{color:var(--bs-primary);text-decoration:underline}.landing-value-prop-strip__cell__link[data-v-b0808585]:focus-visible{outline:none;box-shadow:var(--bc-focus-ring);border-radius:2px}@media(max-width:51.25rem){.landing-value-prop-strip[data-v-b0808585]{grid-template-columns:repeat(2,1fr)}.landing-value-prop-strip__cell[data-v-b0808585]{padding:.875rem 1rem}.landing-value-prop-strip__cell[data-v-b0808585]:nth-child(1),.landing-value-prop-strip__cell[data-v-b0808585]:nth-child(2){border-bottom:1px solid var(--bc-hairline)}.landing-value-prop-strip__cell[data-v-b0808585]:nth-child(2),.landing-value-prop-strip__cell[data-v-b0808585]:nth-child(4){border-right:none}.landing-value-prop-strip__cell[data-v-b0808585]:nth-child(1),.landing-value-prop-strip__cell[data-v-b0808585]:nth-child(3){border-right:1px solid var(--bc-hairline)}}@media(max-width:33.75rem){.landing-value-prop-strip[data-v-b0808585]{grid-template-columns:1fr}.landing-value-prop-strip__cell[data-v-b0808585]{border-right:none!important;border-bottom:1px solid var(--bc-hairline)}.landing-value-prop-strip__cell[data-v-b0808585]:last-child{border-bottom:none}}.landing-section[data-v-1f01ad30]{padding:4.5rem clamp(1rem,5vw,3.75rem)}.landing-section__inner[data-v-1f01ad30]{max-width:70rem;margin:0 auto}.landing-section--bordered[data-v-1f01ad30]{border-top:1px solid var(--bc-hairline)}.landing-section--surface-chrome[data-v-1f01ad30]{background:var(--bc-chrome-bg)}.landing-section--surface-content[data-v-1f01ad30]{background:var(--bc-content-bg)}.landing-section--dark[data-v-1f01ad30]{background:var(--bs-body-bg);color:var(--bs-body-color)}[data-bs-theme=dark] .landing-section--dark[data-v-1f01ad30]{background:var(--bc-content-bg)}.landing-section-header__label[data-v-893c7bf5]{font-family:Geist Mono,ui-monospace,JetBrains Mono,monospace;font-size:var(--bs-font-size-xs);font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--bs-tertiary-color);margin-bottom:.625rem}.landing-section-header__title[data-v-893c7bf5]{font-family:"DM Serif Display",serif;font-size:clamp(1.5rem,3vw,2.5rem);font-weight:400;line-height:1.15;letter-spacing:-.01em;color:var(--bs-body-color);margin-bottom:.875rem}.landing-section-header__title[data-v-893c7bf5] em{font-style:italic}.landing-section-header__lead[data-v-893c7bf5]{font-size:1rem;color:var(--bs-secondary-color);max-width:35rem;line-height:1.7;margin-bottom:2.5rem}.landing-section-header--center[data-v-893c7bf5]{text-align:center;max-width:37.5rem;margin:0 auto 3rem}.landing-section-header--center .landing-section-header__lead[data-v-893c7bf5]{margin-left:auto;margin-right:auto;margin-bottom:0}.landing-mcp__grid[data-v-14c91008]{display:grid;grid-template-columns:1fr 1fr;gap:1rem;align-items:start}.landing-mcp__chat[data-v-14c91008]{border:1px solid var(--bc-hairline);border-radius:var(--bc-radius-md);background:var(--bc-content-bg);overflow:hidden;display:flex;flex-direction:column;min-width:0}.landing-mcp__chat__head[data-v-14c91008]{display:flex;align-items:center;gap:.5rem;padding:.625rem .875rem;background:var(--bc-chrome-bg);border-bottom:1px solid var(--bc-hairline);font-size:var(--bs-font-size-sm);color:var(--bs-secondary-color)}.landing-mcp__chat__head__logo[data-v-14c91008]{width:1.125rem;height:1.125rem;border-radius:var(--bc-radius-xs);background:var(--bs-primary);color:#fff;font-size:.6875rem;font-weight:700;display:flex;align-items:center;justify-content:center}.landing-mcp__chat__body[data-v-14c91008]{padding:1rem .875rem;display:flex;flex-direction:column;gap:.875rem;background-image:radial-gradient(circle at .75rem .75rem,rgba(20,24,29,.035) 1px,transparent 1px);background-size:1.375rem 1.375rem}.landing-mcp__msg[data-v-14c91008]{display:flex;align-items:flex-start;gap:.5rem;min-width:0}.landing-mcp__msg--user[data-v-14c91008]{flex-direction:row-reverse}.landing-mcp__msg--grouped[data-v-14c91008]{margin-top:-.625rem}.landing-mcp__msg__col[data-v-14c91008]{display:flex;flex-direction:column;gap:.1875rem;max-width:92%;min-width:0}.landing-mcp__msg--user .landing-mcp__msg__col[data-v-14c91008]{align-items:flex-end}.landing-mcp__msg__name[data-v-14c91008]{font-size:.65rem;color:var(--bs-tertiary-color);padding:0 .1875rem}.landing-mcp__avatar[data-v-14c91008]{flex:none;width:1.75rem;height:1.75rem;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.6875rem;font-weight:600}.landing-mcp__avatar--asst[data-v-14c91008]{background:var(--bs-primary);color:#fff}.landing-mcp__avatar--user[data-v-14c91008]{background:var(--bc-tile-bg);color:var(--bs-secondary-color)}.landing-mcp__bubble[data-v-14c91008]{font-size:var(--bs-font-size-sm);line-height:1.5;padding:.5rem .6875rem;width:fit-content;max-width:100%;min-width:0}.landing-mcp__bubble--asst[data-v-14c91008]{background:var(--bc-tile-bg);color:var(--bs-body-color);border-radius:0 var(--bc-radius-md) var(--bc-radius-md) var(--bc-radius-md)}.landing-mcp__bubble--user[data-v-14c91008]{background:#e6eff8;color:#1d4f86;border:1px solid #cfe0f1;border-radius:var(--bc-radius-md) 0 var(--bc-radius-md) var(--bc-radius-md);text-wrap:balance;text-wrap:pretty;max-width:min(20rem,100%)}.landing-mcp__link[data-v-14c91008]{display:block;max-width:min(15rem,100%);margin-top:.375rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:Geist Mono,ui-monospace,monospace;font-size:var(--bs-font-size-xs);color:var(--bs-primary);text-decoration:none}.landing-mcp__link[data-v-14c91008]:hover,.landing-mcp__link[data-v-14c91008]:focus-visible{text-decoration:underline}.landing-mcp__chart[data-v-14c91008]{margin-top:.25rem;border:1px solid var(--bc-hairline);border-radius:var(--bc-radius-md);overflow:hidden;padding:.75rem;background:#fff}.landing-mcp__chart__img[data-v-14c91008]{display:block;width:100%;height:auto}.landing-mcp__proof[data-v-14c91008]{border:1px solid var(--bc-hairline);border-radius:var(--bc-radius-md);background:var(--bc-content-bg);padding:1.125rem;display:flex;flex-direction:column;gap:1rem;min-width:0}.landing-mcp__proof__label[data-v-14c91008]{font-family:Geist Mono,ui-monospace,monospace;font-size:var(--bs-font-size-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--bs-tertiary-color)}.landing-mcp__steps[data-v-14c91008]{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.landing-mcp__steps__item[data-v-14c91008]{position:relative;display:flex;align-items:flex-start;gap:.6875rem;padding-bottom:.875rem}.landing-mcp__steps__item[data-v-14c91008]:not(:last-child):before{content:"";position:absolute;left:.6875rem;top:1.5rem;bottom:0;width:2px;background:var(--bc-hairline)}.landing-mcp__steps__item[data-v-14c91008]:last-child{padding-bottom:0}.landing-mcp__steps__n[data-v-14c91008]{flex:none;width:1.4375rem;height:1.4375rem;border-radius:50%;border:1.5px solid var(--bs-primary);background:var(--bc-content-bg);color:var(--bs-primary);font-family:Geist Mono,ui-monospace,monospace;font-size:var(--bs-font-size-xs);font-weight:700;display:flex;align-items:center;justify-content:center;z-index:1}.landing-mcp__steps__t[data-v-14c91008]{font-size:var(--bs-font-size-sm);color:var(--bs-body-color);padding-top:.125rem}.landing-mcp__steps__t small[data-v-14c91008]{display:block;color:var(--bs-tertiary-color);font-size:var(--bs-font-size-xs)}.landing-mcp__install[data-v-14c91008]{border:1px solid var(--bc-hairline);border-radius:var(--bc-radius-md);overflow:hidden;min-width:0}.landing-mcp__install__head[data-v-14c91008]{padding:.5rem .875rem;background:var(--bc-chrome-bg);border-bottom:1px solid var(--bc-hairline);font-family:Geist Mono,ui-monospace,monospace;font-size:var(--bs-font-size-xs);letter-spacing:.06em;text-transform:uppercase;color:var(--bs-tertiary-color);display:flex;align-items:center;gap:.5rem}.landing-mcp__install__head__dots[data-v-14c91008]{display:inline-flex;gap:.1875rem}.landing-mcp__install__head__dots span[data-v-14c91008]{width:.4375rem;height:.4375rem;border-radius:50%;background:var(--bs-tertiary-color);opacity:.35}.landing-mcp__install__cmd[data-v-14c91008]{display:block;padding:.875rem 1.125rem;font-family:Geist Mono,ui-monospace,monospace;font-size:var(--bs-font-size-sm);color:var(--bs-body-color);white-space:nowrap;overflow-x:auto}.landing-mcp__cta[data-v-14c91008]{align-self:flex-start;display:inline-flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border-radius:var(--bc-radius-md);background:var(--bs-primary);color:#fff;font-size:var(--bs-font-size-sm);font-weight:600;text-decoration:none;transition:opacity var(--bc-duration-fast) var(--bc-ease)}.landing-mcp__cta[data-v-14c91008]:hover,.landing-mcp__cta[data-v-14c91008]:focus-visible{opacity:.9}.landing-mcp__cta[data-v-14c91008]:focus-visible{outline:none;box-shadow:var(--bc-focus-ring)}[data-bs-theme=dark] .landing-mcp__bubble--user[data-v-14c91008]{background:#2563a038;color:#dce8f4;border-color:#2563a073}[data-bs-theme=dark] .landing-mcp__chat__body[data-v-14c91008]{background-image:radial-gradient(circle at .75rem .75rem,rgba(255,255,255,.04) 1px,transparent 1px)}@media(max-width:51.25rem){.landing-mcp__grid[data-v-14c91008]{grid-template-columns:1fr}}.landing-default-card[data-v-582e2ff8]{background:var(--bc-tile-bg);border:1px solid var(--bc-hairline);border-radius:var(--bc-radius-md);padding:1rem 1rem .875rem;display:flex;flex-direction:column;gap:.25rem}.landing-default-card__head[data-v-582e2ff8]{display:flex;align-items:center;justify-content:space-between;margin-bottom:.375rem}.landing-default-card__head__icon[data-v-582e2ff8]{width:1.375rem;height:1.375rem;border-radius:var(--bc-radius-sm);background:var(--bs-info-bg-subtle);color:var(--bs-info);display:inline-flex;align-items:center;justify-content:center}.landing-default-card__head__tag[data-v-582e2ff8]{font-family:Geist Mono,ui-monospace,monospace;font-size:.6875rem;letter-spacing:.06em;color:var(--bs-tertiary-color);text-transform:uppercase}.landing-default-card__title[data-v-582e2ff8]{font-size:var(--bs-font-size-md);font-weight:600;color:var(--bs-body-color);margin:0}.landing-default-card__desc[data-v-582e2ff8]{font-size:var(--bs-font-size-sm);color:var(--bs-secondary-color);line-height:1.55;margin:0}.landing-format__grid[data-v-d42efcc0]{display:grid;grid-template-columns:1fr 1fr;gap:1rem;align-items:stretch}.landing-format__pane[data-v-d42efcc0]{background:var(--bc-content-bg);border:1px solid var(--bc-hairline);border-radius:var(--bc-radius-md);overflow:hidden;display:flex;flex-direction:column}.landing-format__pane__head[data-v-d42efcc0]{padding:.5rem .875rem;background:var(--bc-chrome-bg);border-bottom:1px solid var(--bc-hairline);font-family:Geist Mono,ui-monospace,monospace;font-size:var(--bs-font-size-xs);letter-spacing:.06em;color:var(--bs-tertiary-color);text-transform:uppercase;display:flex;align-items:center;gap:.5rem}.landing-format__pane__head__dots[data-v-d42efcc0]{display:inline-flex;gap:.1875rem}.landing-format__pane__head__dots span[data-v-d42efcc0]{width:.4375rem;height:.4375rem;border-radius:50%;background:var(--bs-tertiary-color);opacity:.35}.landing-format__pane__code[data-v-d42efcc0]{flex:1;padding:1rem 1.125rem;font-family:Geist Mono,ui-monospace,monospace;font-size:var(--bs-font-size-sm);line-height:1.75;color:var(--bs-body-color);margin:0;overflow:auto;scrollbar-width:none;white-space:pre}.landing-format__pane__code[data-v-d42efcc0]:hover,.landing-format__pane__code[data-v-d42efcc0]:active{scrollbar-width:thin}.landing-format__browser[data-v-d42efcc0]{align-self:flex-start;border:1px solid var(--bc-hairline);border-radius:var(--bc-radius-md);overflow:hidden;display:flex;flex-direction:column}.landing-format__browser__url[data-v-d42efcc0]{padding:.5rem .75rem;background:var(--bc-content-bg);border-bottom:1px solid var(--bc-hairline);display:flex;align-items:center;gap:.5rem}.landing-format__browser__url__dots[data-v-d42efcc0]{display:inline-flex;gap:.25rem}.landing-format__browser__url__dots span[data-v-d42efcc0]{width:.5rem;height:.5rem;border-radius:50%;background:var(--bs-tertiary-color);opacity:.4}.landing-format__browser__url__bar[data-v-d42efcc0]{flex:1;padding:.1875rem .625rem;background:var(--bc-tile-bg);border:1px solid var(--bc-hairline);border-radius:var(--bc-radius-xs);font-family:Geist Mono,ui-monospace,monospace;font-size:var(--bs-font-size-xs);color:var(--bs-secondary-color);display:inline-flex;align-items:center;gap:.375rem;min-width:0;text-decoration:none;transition:border-color var(--bc-duration-fast) var(--bc-ease)}.landing-format__browser__url__bar[data-v-d42efcc0]:hover,.landing-format__browser__url__bar[data-v-d42efcc0]:focus-visible{border-color:var(--bc-hairline-strong)}.landing-format__browser__url__bar[data-v-d42efcc0]:focus-visible{outline:none;box-shadow:var(--bc-focus-ring)}.landing-format__browser__url__bar__host[data-v-d42efcc0]{color:var(--bs-body-color);white-space:nowrap}.landing-format__browser__url__bar__fragment[data-v-d42efcc0]{color:var(--bs-tertiary-color);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.landing-format__browser__url__bar__fragment--short[data-v-d42efcc0]{display:none}.landing-format__browser__chart[data-v-d42efcc0]{flex:1;min-height:0}.landing-format__cards[data-v-d42efcc0]{display:grid;grid-template-columns:repeat(3,1fr);gap:.625rem;margin-top:1.5rem}.landing-format__footnote[data-v-d42efcc0]{display:inline-flex;align-items:flex-start;gap:.5rem;margin-top:1.25rem;padding:.5rem .875rem;border:1px solid var(--bc-hairline);border-radius:var(--bc-radius-pill);font-size:var(--bs-font-size-sm);line-height:1.5;color:var(--bs-secondary-color)}.landing-format__footnote__lead[data-v-d42efcc0]{flex:none;display:inline-flex;align-items:center;gap:.5rem;min-height:1.5em}.landing-format__footnote__label[data-v-d42efcc0]{font-family:Geist Mono,ui-monospace,monospace;font-size:var(--bs-font-size-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--bs-tertiary-color)}.landing-format__footnote__text[data-v-d42efcc0]{min-width:0}.landing-format__footnote__link[data-v-d42efcc0]{font-weight:700;color:var(--bs-primary);text-decoration:none}.landing-format__footnote__link[data-v-d42efcc0]:hover,.landing-format__footnote__link[data-v-d42efcc0]:focus-visible{text-decoration:underline}@media(max-width:51.25rem){.landing-format__grid[data-v-d42efcc0]{grid-template-columns:1fr}.landing-format__pane__code[data-v-d42efcc0]{max-height:18rem}.landing-format__cards[data-v-d42efcc0]{grid-template-columns:1fr}.landing-format__footnote[data-v-d42efcc0]{border-radius:var(--bc-radius-md)}}@media(max-width:33.75rem){.landing-format__browser__url__bar__fragment--long[data-v-d42efcc0]{display:none}.landing-format__browser__url__bar__fragment--short[data-v-d42efcc0]{display:inline}}.landing-defaults__grid[data-v-2eb1dacc]{display:grid;grid-template-columns:1fr 1fr;gap:2.5rem;align-items:stretch}.landing-defaults__grid__chart[data-v-2eb1dacc]{background:var(--bc-tile-bg);border:1px solid var(--bc-hairline);border-radius:var(--bc-radius-lg);overflow:hidden;align-self:stretch}.landing-defaults__grid__cards[data-v-2eb1dacc]{display:grid;grid-template-columns:1fr 1fr;gap:.625rem}@media(max-width:51.25rem){.landing-defaults__grid[data-v-2eb1dacc]{grid-template-columns:1fr}.landing-defaults__grid__chart[data-v-2eb1dacc]{order:-1}}@media(max-width:33.75rem){.landing-defaults__grid__cards[data-v-2eb1dacc]{grid-template-columns:1fr}}.transforms-demo[data-v-d1c11d25]{background:var(--bc-tile-bg);border:1px solid var(--bc-hairline);border-radius:var(--bc-radius-md);overflow:hidden}.transforms-demo__steps[data-v-d1c11d25]{display:flex;overflow-x:auto;border-bottom:1px solid var(--bc-hairline)}.transforms-demo__step[data-v-d1c11d25]{flex:1;min-width:0;padding:.625rem 1rem;border:none;border-right:1px solid var(--bc-hairline);background:var(--bc-content-bg);cursor:pointer;transition:background .15s;display:flex;align-items:center;gap:.5rem}.transforms-demo__step[data-v-d1c11d25]:last-child{border-right:none}.transforms-demo__step[data-v-d1c11d25]:hover{background:var(--bc-wash-soft)}.transforms-demo__step--active[data-v-d1c11d25]{background:var(--bc-wash-firm)}.transforms-demo__step__num[data-v-d1c11d25]{width:1.5rem;height:1.5rem;border-radius:50%;background:var(--bc-hairline);color:var(--bs-secondary-color);font-size:var(--bs-font-size-xs);font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .15s}.transforms-demo__step--active .transforms-demo__step__num[data-v-d1c11d25]{background:var(--bs-primary);color:#fff}.transforms-demo__step__label[data-v-d1c11d25]{font-size:var(--bs-font-size-sm);font-weight:600;color:var(--bs-secondary-color);white-space:nowrap}.transforms-demo__step--active .transforms-demo__step__label[data-v-d1c11d25]{color:var(--bs-primary)}.transforms-demo__body[data-v-d1c11d25]{display:grid;grid-template-columns:1fr 4rem 1fr;align-items:center;padding:0 1.25rem}.transforms-demo__body__panel[data-v-d1c11d25]{padding:1rem 1.25rem;border:1px solid var(--bc-hairline);border-radius:.5rem;margin:1rem 0}.transforms-demo__body__panel__title[data-v-d1c11d25]{font-size:var(--bs-font-size-xs);font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--bs-tertiary-color);margin-bottom:.75rem}.transforms-demo__body__panel__table[data-v-d1c11d25]{width:100%;border-collapse:collapse;font-size:var(--bs-font-size-sm)}.transforms-demo__body__panel__th[data-v-d1c11d25]{padding:.25rem .625rem;text-align:left;font-weight:600;font-size:var(--bs-font-size-xs);background:var(--bc-content-bg);color:var(--bs-secondary-color);border-bottom:1px solid var(--bc-hairline)}.transforms-demo__body__panel__td[data-v-d1c11d25]{padding:.25rem .625rem;border-bottom:1px solid var(--bc-hairline);color:var(--bs-secondary-color)}tr:last-child>.transforms-demo__body__panel__td[data-v-d1c11d25]{border-bottom:none}.transforms-demo__body__panel__td--highlight[data-v-d1c11d25]{color:var(--bs-primary);font-weight:600}.transforms-demo__body__panel__note[data-v-d1c11d25]{font-size:var(--bs-font-size-xs);color:var(--bs-tertiary-color);line-height:1.6;margin-top:.75rem;margin-bottom:0}.transforms-demo__body__flow[data-v-d1c11d25]{position:relative;display:flex;align-items:center}.transforms-demo__body__flow__svg[data-v-d1c11d25]{width:100%;height:2px}.transforms-demo__body__flow__wire[data-v-d1c11d25]{fill:none;stroke:var(--bc-hairline);stroke-width:1.5;stroke-dasharray:5 4;stroke-linecap:round;animation:wire-flow-d1c11d25 1s linear infinite}.transforms-demo__body__flow__dot[data-v-d1c11d25]{position:absolute;width:6px;height:6px;border-radius:50%;background:var(--bc-hairline);top:50%;transform:translateY(-50%)}.transforms-demo__body__flow__dot--left[data-v-d1c11d25]{left:-4px}.transforms-demo__body__flow__dot--right[data-v-d1c11d25]{right:-4px}@keyframes wire-flow-d1c11d25{to{stroke-dashoffset:-9}}.landing-transforms__cards[data-v-d1c11d25]{display:grid;grid-template-columns:repeat(4,1fr);gap:.875rem;margin-top:1.75rem}@media(max-width:51.25rem){.transforms-demo__step[data-v-d1c11d25]{flex:0 0 auto}.transforms-demo__body[data-v-d1c11d25]{grid-template-columns:1fr;padding:1.25rem}.transforms-demo__body__panel[data-v-d1c11d25]{margin:0}.transforms-demo__body__flow[data-v-d1c11d25]{flex-direction:column;justify-content:center;align-items:center;height:2rem;margin:-4px 0;position:relative;z-index:1;overflow:hidden}.transforms-demo__body__flow__svg[data-v-d1c11d25]{width:auto;height:auto;flex:1;transform:rotate(90deg)}.transforms-demo__body__flow__dot[data-v-d1c11d25]{position:static;transform:none;flex-shrink:0}.transforms-demo__body__flow__dot--left[data-v-d1c11d25]{order:-1}.transforms-demo__body__flow__dot--right[data-v-d1c11d25]{order:1}.landing-transforms__cards[data-v-d1c11d25]{grid-template-columns:repeat(2,1fr)}}@media(max-width:33.75rem){.landing-transforms__cards[data-v-d1c11d25]{grid-template-columns:1fr}}.scenes__grid[data-v-6712a09b]{display:grid;grid-template-columns:1fr 1.2fr;gap:2.5rem;align-items:start}.scenes__grid__features[data-v-6712a09b]{display:flex;flex-direction:column;gap:.75rem}.scenes-feature[data-v-6712a09b]{display:flex;gap:.625rem;align-items:flex-start;padding:.75rem 1rem;background:var(--bc-tile-bg);border:1px solid var(--bc-hairline);border-radius:calc(var(--bc-radius-md) - 2px)}.scenes-feature__icon[data-v-6712a09b]{margin-top:1px}.scenes-feature__title[data-v-6712a09b]{font-size:var(--bs-font-size-sm)}.scenes-feature__desc[data-v-6712a09b]{font-size:var(--bs-font-size-sm);color:var(--bs-secondary-color);margin-top:.125rem;line-height:1.5}.scenes-demo[data-v-6712a09b]{background:var(--bc-tile-bg);border:1px solid var(--bc-hairline);border-radius:var(--bc-radius-md);overflow:hidden}@media(max-width:51.25rem){.scenes__grid[data-v-6712a09b]{grid-template-columns:1fr}.scenes__grid__features[data-v-6712a09b]{order:1}}.landing-footer[data-v-14cc0356]{background:var(--bc-chrome-bg);border-top:1px solid var(--bc-hairline);padding:1.5rem clamp(1rem,5vw,3.75rem);display:flex;align-items:center;gap:1rem;font-size:var(--bs-font-size-sm);color:var(--bs-secondary-color);flex-wrap:wrap}.landing-footer__brand[data-v-14cc0356]{display:inline-flex;align-items:center;gap:.5rem;color:var(--bs-body-color);font-weight:600}.landing-footer__brand__logo[data-v-14cc0356]{height:1.125rem;width:auto}.landing-footer__sep[data-v-14cc0356]{color:var(--bs-tertiary-color)}.landing-footer__link[data-v-14cc0356]{color:var(--bs-secondary-color);text-decoration:none}.landing-footer__link[data-v-14cc0356]:hover{color:var(--bs-body-color)}.landing-footer__spacer[data-v-14cc0356]{flex:1}.landing-footer__tagline[data-v-14cc0356]{font-family:Geist Mono,ui-monospace,monospace;font-size:var(--bs-font-size-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--bs-tertiary-color)}@media(max-width:33.75rem){.landing-footer[data-v-14cc0356]{padding:1.25rem 1rem}.landing-footer__tagline[data-v-14cc0356]{width:100%}.landing-footer__spacer[data-v-14cc0356]{display:none}}.landing-page[data-v-fe1d79e1]{background:var(--bc-chrome-bg);min-height:100vh;width:100%;background-image:radial-gradient(ellipse 900px 600px at 18% 8%,rgba(37,99,160,.1),transparent 60%)}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import{d as C,o as a,c as o,a as e,r as x,b as A,_ as y,u as G,e as ce,f as H,w as h,g as r,h as d,N as _e,B as V,A as ue,i as p,j as ge,k as X,l as pe,m as Q,n as O,p as J,I as me,q as he,s as Ie,t as T,v as K,x as fe,y as q,z as be,C as ee,D as ve,E as te,F as Ce,G as z,H as ye,J as we,K as v,L as w,M as m,O as Be,P as $,Q as S,R as L,S as Se,T as ke,U as Ae,V as Me,W as Pe,X as Ze,Y as xe,Z as N,$ as Le,a0 as He,a1 as $e,a2 as Ne}from"./index-C0PNQzQK.js";const je={class:"navigation-marketing-bar","aria-label":"Marketing navigation"},De={class:"navigation-marketing-bar__inner"},Re={class:"navigation-marketing-bar__brand"},Te={key:0,class:"navigation-marketing-bar__menu","aria-label":"Sections"},Ge={key:1,class:"navigation-marketing-bar__actions"},ze={key:2,class:"navigation-marketing-bar__cta-secondary"},We={key:3,class:"navigation-marketing-bar__cta-primary"},Ve=C({__name:"NavigationMarketingBar",setup(i){return(t,u)=>(a(),o("header",je,[e("div",De,[e("div",Re,[x(t.$slots,"brand")]),t.$slots.menu?(a(),o("nav",Te,[x(t.$slots,"menu")])):A("",!0),u[0]||(u[0]=e("div",{class:"navigation-marketing-bar__spacer"},null,-1)),t.$slots.actions?(a(),o("div",Ge,[x(t.$slots,"actions")])):A("",!0),t.$slots["cta-secondary"]?(a(),o("div",ze,[x(t.$slots,"cta-secondary")])):A("",!0),t.$slots["cta-primary"]?(a(),o("div",We,[x(t.$slots,"cta-primary")])):A("",!0)])]))}}),Xe=y(Ve,[["__scopeId","data-v-55d19f31"]]),Ee=["src"],Ye=C({__name:"LandingTopNav",setup(i){const{theme:t,resolvedTheme:u,cycleTheme:g}=G(),n=ge("k"),s=X(()=>u.value==="dark"?O:J),_=pe(),f=ce("(max-width: 37.5rem)"),c={light:Ie,dark:he,auto:me},l=X(()=>c[t.value]);function I(){n.trigger()}return(k,b)=>{const M=Q("router-link");return a(),H(r(Xe),null,{brand:h(()=>[d(M,{to:"/",class:"landing-topnav__brand","aria-label":"Blueprint Chart home"},{default:h(()=>[e("img",{src:s.value,alt:"",class:"landing-topnav__brand-logo"},null,8,Ee),b[0]||(b[0]=e("span",{class:"landing-topnav__brand-name"},"Blueprint Chart",-1))]),_:1})]),menu:h(()=>[d(M,{to:{hash:"#mcp"}},{default:h(()=>[...b[1]||(b[1]=[p(" AI ",-1)])]),_:1}),d(M,{to:{hash:"#format"}},{default:h(()=>[...b[2]||(b[2]=[p(" Format ",-1)])]),_:1}),d(M,{to:{hash:"#defaults"}},{default:h(()=>[...b[3]||(b[3]=[p(" Defaults ",-1)])]),_:1}),d(M,{to:{hash:"#transforms"}},{default:h(()=>[...b[4]||(b[4]=[p(" Transforms ",-1)])]),_:1}),d(M,{to:{hash:"#scenes"}},{default:h(()=>[...b[5]||(b[5]=[p(" Scenes ",-1)])]),_:1})]),actions:h(()=>[d(r(_e),{placeholder:"Search or jump to…","shortcut-label":r(n).keyLabel,collapsed:r(f),onClick:I},null,8,["shortcut-label","collapsed"]),d(r(V),{"icon-left":l.value,label:"Toggle theme","hide-label":"",square:"",variant:"outline-secondary",size:"sm",onClick:r(g)},null,8,["icon-left","onClick"]),r(_)?(a(),H(ue,{key:0})):A("",!0)]),_:1})}}}),Fe=y(Ye,[["__scopeId","data-v-8959d841"]]),Ue=150;function Qe(i){return i?fe(i).scenes.length:0}function ne(i,t,u){ve(i,t,u)}function Oe(i,t,u){const g=be(t),n=g?t:q(""),s=g?u:t,{theme:_}=G();function f(){!i.value||!n.value||ne(i.value,n.value,s)}const c=ee(f,Ue);T([i,n,_],f,{immediate:!0}),K(i,c);function l(I){n.value=I}return{applyDsl:l}}const Je=C({__name:"LandingChartPreview",props:{bpc:{}},setup(i){const t=i,u=te("containerRef");return Oe(u,Ce(t,"bpc"),{stripColors:!0}),(g,n)=>(a(),o("div",{ref_key:"containerRef",ref:u,class:"landing-chart-preview"},null,512))}}),Y=y(Je,[["__scopeId","data-v-eb03c209"]]),Ke={class:"landing-hero"},qe={class:"landing-hero__inner"},et={class:"landing-hero__inner__text"},tt={class:"landing-hero__inner__text__actions"},nt={class:"landing-hero__inner__chart"},at=C({__name:"LandingHero",setup(i){const t=z.find(g=>g.id==="coffee-production");if(!t)throw new Error("Missing coffee-production sample — see LandingHero.vue");const u=t.dsl.replace(/\{/,`{
|
|
2
|
+
theme = "blueprint-framed"`);return(g,n)=>{const s=Y;return a(),o("section",Ke,[e("div",qe,[e("div",et,[d(r(ye),{variant:"info",pill:"",class:"landing-hero__inner__text__eyebrow"},{default:h(()=>[...n[0]||(n[0]=[e("span",{class:"landing-hero__inner__text__eyebrow__dot","aria-hidden":"true"},null,-1),p(" Open source · MIT ",-1)])]),_:1}),n[1]||(n[1]=e("h1",{class:"landing-hero__inner__text__h1"},[p(" The open chart format"),e("br"),e("em",null,"AI writes.")],-1)),n[2]||(n[2]=e("p",{class:"landing-hero__inner__text__sub"}," An open, plain-text chart format an AI can write and any browser can render. Self-contained, no backend, no account required. Prefer to do it yourself? The editor's right here. ",-1)),e("div",tt,[d(r(V),{to:"/charts",label:"My charts",variant:"outline-secondary"}),d(r(V),{to:"/new",label:"New chart",variant:"primary","icon-left":r(we)},null,8,["icon-left"])])]),e("div",nt,[d(s,{bpc:r(u)},null,8,["bpc"])])])])}}}),st=y(at,[["__scopeId","data-v-79f507ab"]]),ot={class:"landing-value-prop-strip","aria-label":"Why Blueprint Chart"},it={class:"landing-value-prop-strip__cell__label"},rt={class:"landing-value-prop-strip__cell__value"},lt=["href"],dt=C({__name:"LandingValuePropStrip",setup(i){const t=[{label:"01 / Plain text",value:"A format AI can write"},{label:"02 / No backend",value:"Renders in the browser"},{label:"03 / Data sovereignty",value:"Nothing ever uploaded"},{label:"04 / MIT",value:"Open source, forever",href:"https://github.com/blueprint-chart/blueprint-chart"}];return(u,g)=>(a(),o("section",ot,[(a(),o(v,null,w(t,n=>e("dl",{key:n.label,class:"landing-value-prop-strip__cell"},[e("dt",it,m(n.label),1),e("dd",rt,[n.href?(a(),o("a",{key:0,href:n.href,target:"_blank",rel:"noopener noreferrer",class:"landing-value-prop-strip__cell__link"},[d(r($),{name:r(Be),size:"xs"},null,8,["name"]),p(" "+m(n.value),1)],8,lt)):(a(),o(v,{key:1},[p(m(n.value),1)],64))])])),64))]))}}),ct=y(dt,[["__scopeId","data-v-b0808585"]]),_t={viewBox:"0 0 256 256",width:"1.2em",height:"1.2em"};function ut(i,t){return a(),o("svg",_t,[...t[0]||(t[0]=[e("path",{fill:"currentColor",d:"M197.58 129.06L146 110l-19-51.62a15.92 15.92 0 0 0-29.88 0L78 110l-51.62 19a15.92 15.92 0 0 0 0 29.88L78 178l19 51.62a15.92 15.92 0 0 0 29.88 0L146 178l51.62-19a15.92 15.92 0 0 0 0-29.88ZM137 164.22a8 8 0 0 0-4.74 4.74L112 223.85L91.78 169a8 8 0 0 0-4.78-4.78L32.15 144L87 123.78a8 8 0 0 0 4.78-4.78L112 64.15L132.22 119a8 8 0 0 0 4.74 4.74L191.85 144ZM144 40a8 8 0 0 1 8-8h16V16a8 8 0 0 1 16 0v16h16a8 8 0 0 1 0 16h-16v16a8 8 0 0 1-16 0V48h-16a8 8 0 0 1-8-8m104 48a8 8 0 0 1-8 8h-8v8a8 8 0 0 1-16 0v-8h-8a8 8 0 0 1 0-16h8v-8a8 8 0 0 1 16 0v8h8a8 8 0 0 1 8 8"},null,-1)])])}const E=S({name:"ph-sparkle",render:ut}),gt={viewBox:"0 0 256 256",width:"1.2em",height:"1.2em"};function pt(i,t){return a(),o("svg",gt,[...t[0]||(t[0]=[e("path",{fill:"currentColor",d:"M230.92 212c-15.23-26.33-38.7-45.21-66.09-54.16a72 72 0 1 0-73.66 0c-27.39 8.94-50.86 27.82-66.09 54.16a8 8 0 1 0 13.85 8c18.84-32.56 52.14-52 89.07-52s70.23 19.44 89.07 52a8 8 0 1 0 13.85-8M72 96a56 56 0 1 1 56 56a56.06 56.06 0 0 1-56-56"},null,-1)])])}const mt=S({name:"ph-user",render:pt}),ht=["id","data-bs-theme"],It={class:"landing-section__inner"},ft=C({__name:"LandingSection",props:{id:{default:void 0},dark:{type:Boolean,default:!1},full:{type:Boolean,default:!1},bordered:{type:Boolean,default:!0},surface:{default:"chrome"}},setup(i){return(t,u)=>(a(),o("section",{id:i.id,class:L(["landing-section",{"landing-section--dark":i.dark,"landing-section--full":i.full,"landing-section--bordered":i.bordered,[`landing-section--surface-${i.surface}`]:!0}]),"data-bs-theme":i.dark?"dark":void 0},[e("div",It,[x(t.$slots,"default",{},void 0,!0)])],10,ht))}}),j=y(ft,[["__scopeId","data-v-1f01ad30"]]),bt={class:"landing-section-header__label"},vt={class:"landing-section-header__title"},Ct={key:0,class:"landing-section-header__lead"},yt=C({__name:"LandingSectionHeader",props:{label:{},center:{type:Boolean,default:!1}},setup(i){return(t,u)=>(a(),o("div",{class:L(["landing-section-header",{"landing-section-header--center":i.center}])},[e("div",bt,m(i.label),1),e("h2",vt,[x(t.$slots,"default",{},void 0,!0)]),t.$slots.lead?(a(),o("p",Ct,[x(t.$slots,"lead",{},void 0,!0)])):A("",!0)],2))}}),D=y(yt,[["__scopeId","data-v-893c7bf5"]]),wt="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2MDAgNDkyIiByb2xlPSJpbWciIGFyaWEtbGFiZWw9IkJhciBjaGFydCB0aXRsZWQgRSBpcyB0aGUgbW9zdCBmcmVxdWVudCBsZXR0ZXIgaW4gRW5nbGlzaC4gRSBpcyBoaWdobGlnaHRlZCBhdCAxMi43IHBlcmNlbnQsIHRoZSB0YWxsZXN0IGJhciwgZm9sbG93ZWQgYnkgVCA5LjA2LCBBIDguMTcsIE8gNy41MSwgSSA2Ljk3LCBOIDYuNzUsIFMgNi4zMywgSCA2LjA5LCBSIDUuOTkgYW5kIEQgNC4yNS4iPgogIDx0ZXh0IHg9IjIiIHk9IjQwIiBmb250LWZhbWlseT0iR2VvcmdpYSwgJ1RpbWVzIE5ldyBSb21hbicsIHNlcmlmIiBmb250LXNpemU9IjI1IiBmb250LXdlaWdodD0iNjAwIiBmaWxsPSIjMWEyMTI4Ij5FIGlzIHRoZSBtb3N0IGZyZXF1ZW50IGxldHRlciBpbiBFbmdsaXNoPC90ZXh0PgogIDx0ZXh0IHg9IjIiIHk9IjY2IiBmb250LWZhbWlseT0iLWFwcGxlLXN5c3RlbSwgJ1NlZ29lIFVJJywgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE1IiBmaWxsPSIjNWI2NDcwIj5Ib3cgb2Z0ZW4gZWFjaCBsZXR0ZXIgYXBwZWFycyBpbiB0eXBpY2FsIEVuZ2xpc2ggdGV4dDwvdGV4dD4KCiAgPGcgZm9udC1mYW1pbHk9Ii1hcHBsZS1zeXN0ZW0sICdTZWdvZSBVSScsIFJvYm90bywgc2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgZmlsbD0iIzMzNDA0ZCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+CiAgICA8dGV4dCB4PSI3OCIgeT0iMTAyIiBmaWxsPSIjMjU2M0EwIiBmb250LXdlaWdodD0iNzAwIj4xMi43PC90ZXh0PgogICAgPHRleHQgeD0iMTMwIiB5PSIxODgiPjkuMDY8L3RleHQ+CiAgICA8dGV4dCB4PSIxODIiIHk9IjIwOSI+OC4xNzwvdGV4dD4KICAgIDx0ZXh0IHg9IjIzNCIgeT0iMjI1Ij43LjUxPC90ZXh0PgogICAgPHRleHQgeD0iMjg2IiB5PSIyMzciPjYuOTc8L3RleHQ+CiAgICA8dGV4dCB4PSIzMzgiIHk9IjI0MyI+Ni43NTwvdGV4dD4KICAgIDx0ZXh0IHg9IjM5MCIgeT0iMjUzIj42LjMzPC90ZXh0PgogICAgPHRleHQgeD0iNDQyIiB5PSIyNTgiPjYuMDk8L3RleHQ+CiAgICA8dGV4dCB4PSI0OTQiIHk9IjI2MSI+NS45OTwvdGV4dD4KICAgIDx0ZXh0IHg9IjU0NiIgeT0iMzAyIj40LjI1PC90ZXh0PgogIDwvZz4KCiAgPGc+CiAgICA8cmVjdCB4PSI2MCIgIHk9IjExMCIgd2lkdGg9IjM2IiBoZWlnaHQ9IjMwMCIgZmlsbD0iIzI1NjNBMCIvPgogICAgPHJlY3QgeD0iMTEyIiB5PSIxOTYiIHdpZHRoPSIzNiIgaGVpZ2h0PSIyMTQiIGZpbGw9IiNhOWMzZGQiLz4KICAgIDxyZWN0IHg9IjE2NCIgeT0iMjE3IiB3aWR0aD0iMzYiIGhlaWdodD0iMTkzIiBmaWxsPSIjYTljM2RkIi8+CiAgICA8cmVjdCB4PSIyMTYiIHk9IjIzMyIgd2lkdGg9IjM2IiBoZWlnaHQ9IjE3NyIgZmlsbD0iI2E5YzNkZCIvPgogICAgPHJlY3QgeD0iMjY4IiB5PSIyNDUiIHdpZHRoPSIzNiIgaGVpZ2h0PSIxNjUiIGZpbGw9IiNhOWMzZGQiLz4KICAgIDxyZWN0IHg9IjMyMCIgeT0iMjUxIiB3aWR0aD0iMzYiIGhlaWdodD0iMTU5IiBmaWxsPSIjYTljM2RkIi8+CiAgICA8cmVjdCB4PSIzNzIiIHk9IjI2MSIgd2lkdGg9IjM2IiBoZWlnaHQ9IjE0OSIgZmlsbD0iI2E5YzNkZCIvPgogICAgPHJlY3QgeD0iNDI0IiB5PSIyNjYiIHdpZHRoPSIzNiIgaGVpZ2h0PSIxNDQiIGZpbGw9IiNhOWMzZGQiLz4KICAgIDxyZWN0IHg9IjQ3NiIgeT0iMjY5IiB3aWR0aD0iMzYiIGhlaWdodD0iMTQxIiBmaWxsPSIjYTljM2RkIi8+CiAgICA8cmVjdCB4PSI1MjgiIHk9IjMxMCIgd2lkdGg9IjM2IiBoZWlnaHQ9IjEwMCIgZmlsbD0iI2E5YzNkZCIvPgogIDwvZz4KCiAgPGxpbmUgeDE9IjU2IiB5MT0iNDEwIiB4Mj0iNTg2IiB5Mj0iNDEwIiBzdHJva2U9IiNkNmRiZTEiIHN0cm9rZS13aWR0aD0iMSIvPgoKICA8ZyBmb250LWZhbWlseT0iLWFwcGxlLXN5c3RlbSwgJ1NlZ29lIFVJJywgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBmaWxsPSIjNWI2NDcwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj4KICAgIDx0ZXh0IHg9Ijc4IiB5PSI0MzIiPkU8L3RleHQ+CiAgICA8dGV4dCB4PSIxMzAiIHk9IjQzMiI+VDwvdGV4dD4KICAgIDx0ZXh0IHg9IjE4MiIgeT0iNDMyIj5BPC90ZXh0PgogICAgPHRleHQgeD0iMjM0IiB5PSI0MzIiPk88L3RleHQ+CiAgICA8dGV4dCB4PSIyODYiIHk9IjQzMiI+STwvdGV4dD4KICAgIDx0ZXh0IHg9IjMzOCIgeT0iNDMyIj5OPC90ZXh0PgogICAgPHRleHQgeD0iMzkwIiB5PSI0MzIiPlM8L3RleHQ+CiAgICA8dGV4dCB4PSI0NDIiIHk9IjQzMiI+SDwvdGV4dD4KICAgIDx0ZXh0IHg9IjQ5NCIgeT0iNDMyIj5SPC90ZXh0PgogICAgPHRleHQgeD0iNTQ2IiB5PSI0MzIiPkQ8L3RleHQ+CiAgPC9nPgo8L3N2Zz4K",Bt={class:"landing-mcp__grid"},St={class:"landing-mcp__chat"},kt={class:"landing-mcp__chat__body"},At={key:1,class:"landing-mcp__avatar landing-mcp__avatar--ghost","aria-hidden":"true"},Mt={class:"landing-mcp__msg__col"},Pt={key:0,class:"landing-mcp__msg__name"},Zt=["href"],xt={key:1,class:"landing-mcp__chart"},Lt=["src"],Ht={class:"landing-mcp__proof"},$t={class:"landing-mcp__steps"},Nt={class:"landing-mcp__steps__n"},jt={class:"landing-mcp__steps__t"},Dt={class:"landing-mcp__cta",href:"https://docs.blueprintchart.com/guide/mcp",target:"_blank",rel:"noopener noreferrer","aria-label":"Read the Blueprint Chart MCP documentation"},Rt='Make a bar chart of English letter frequencies with an highlight on "E".',Tt="claude mcp add blueprint-chart -- npx -y @blueprint-chart/mcp",Gt="https://blueprintchart.com/#/copy?bpc64=Y2hhcnQgYmFyLXZlcnRpY2FsIHsKICB0aXRsZSA9ICJFIGlzIHRoZSBtb3N0IGZyZXF1ZW50IGxldHRlciBpbiBFbmdsaXNoIgogIGRlc2NyaXB0aW9uID0gIkhvdyBvZnRlbiBlYWNoIGxldHRlciBhcHBlYXJzIGluIHR5cGljYWwgRW5nbGlzaCB0ZXh0IgogIGJ5bGluZSA9ICJQaWVycmUgUm9tZXJhIgogIHNvdXJjZSA9ICJMZXdhbmQsIENyeXB0b2xvZ2ljYWwgTWF0aGVtYXRpY3MiCiAgc291cmNlVXJsID0gImh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xldHRlcl9mcmVxdWVuY3kiCiAgbm90ZSA9ICJCYXNlZCBvbiBhbmFseXNpcyBvZiA0MCwwMDAgd29yZHMgZnJvbSBFbmdsaXNoIHByb3NlIgogIGNvbG9yUGFsZXR0ZSA9ICJMb25kb24iCiAgc29ydCA9IGRlc2NlbmRpbmcKICB2YWx1ZUxhYmVscyA9IHRydWUKICB2ZXJ0aWNhbExhYmVsUG9zaXRpb24gPSBvZmYKICB2ZXJ0aWNhbEdyaWRTdHlsZSA9IG5vbmUKCiAgaGlnaGxpZ2h0ICJFIgoKICBkYXRhIHsKICAgICJFIiA9IDEyLjcwCiAgICAiVCIgPSA5LjA2CiAgICAiQSIgPSA4LjE3CiAgICAiTyIgPSA3LjUxCiAgICAiSSIgPSA2Ljk3CiAgICAiTiIgPSA2Ljc1CiAgICAiUyIgPSA2LjMzCiAgICAiSCIgPSA2LjA5CiAgICAiUiIgPSA1Ljk5CiAgICAiRCIgPSA0LjI1CiAgfQp9Cg",zt=C({__name:"LandingMcp",setup(i){const t=[{role:"user",name:"You",text:Rt},{role:"asst",name:"Blueprint Chart",text:"Reading the dataviz handbook for letter-frequency conventions…"},{role:"asst",name:"Blueprint Chart",text:'Drafting the .bpc, sorting by frequency and accenting "E".'},{role:"asst",name:"Blueprint Chart",text:"Validated, no parse errors. Here's the chart 👇",chart:!0},{role:"user",name:"You",text:"Love it. Can you export it to a shareable link?"},{role:"asst",name:"Blueprint Chart",text:"Exported. Anyone can open this to view and copy the chart.",link:Gt}],u=[{n:"01",title:"Read the handbook",sub:"grounded in real dataviz pedagogy"},{n:"02",title:"Write the .bpc",sub:"compact, declarative chart source"},{n:"03",title:"Validate",sub:"structured parse errors and fixes"},{n:"04",title:"Render",sub:"SVG or PNG, deterministic"},{n:"05",title:"Iterate",sub:"a tight loop instead of guessing"}];return(g,n)=>(a(),H(j,{id:"mcp"},{default:h(()=>[d(D,{label:"01 / Author with AI"},{lead:h(()=>[...n[0]||(n[0]=[p(" Connect the Blueprint Chart MCP to Claude, Claude Code, Cursor, or any MCP client. It reads the dataviz handbook, writes the ",-1),e("code",null,".bpc",-1),p(", validates it, and renders it — so you get a real chart from a sentence. ",-1)])]),default:h(()=>[n[1]||(n[1]=p(" Describe the chart.",-1)),n[2]||(n[2]=e("br",null,null,-1)),n[3]||(n[3]=e("em",null,"Let your assistant build it.",-1))]),_:1}),e("div",Bt,[e("div",St,[n[4]||(n[4]=e("div",{class:"landing-mcp__chat__head"},[e("span",{class:"landing-mcp__chat__head__logo"},"B"),p(" Blueprint Chart · Assistant ")],-1)),e("div",kt,[(a(),o(v,null,w(t,(s,_)=>{var f,c,l;return e("div",{key:_,class:L(["landing-mcp__msg",{"landing-mcp__msg--user":s.role==="user","landing-mcp__msg--grouped":((f=t[_-1])==null?void 0:f.role)===s.role}])},[((c=t[_-1])==null?void 0:c.role)!==s.role?(a(),o("span",{key:0,class:L(["landing-mcp__avatar",`landing-mcp__avatar--${s.role}`])},[d(r($),{name:s.role==="user"?r(mt):r(E),size:"xs","aria-hidden":"true"},null,8,["name"])],2)):(a(),o("span",At)),e("div",Mt,[((l=t[_-1])==null?void 0:l.role)!==s.role?(a(),o("span",Pt,m(s.name),1)):A("",!0),e("div",{class:L(["landing-mcp__bubble",`landing-mcp__bubble--${s.role}`])},[p(m(s.text)+" ",1),s.link?(a(),o("a",{key:0,class:"landing-mcp__link",href:s.link,target:"_blank",rel:"noopener noreferrer"},m(s.link),9,Zt)):A("",!0)],2),s.chart?(a(),o("div",xt,[e("img",{class:"landing-mcp__chart__img",src:r(wt),alt:"Bar chart: E is the most frequent letter in English at 12.7%, followed by T, A, O, I, N, S, H, R and D"},null,8,Lt)])):A("",!0)])],2)}),64))])]),e("div",Ht,[n[7]||(n[7]=e("div",{class:"landing-mcp__proof__label"}," How it works ",-1)),e("ol",$t,[(a(),o(v,null,w(u,s=>e("li",{key:s.n,class:"landing-mcp__steps__item"},[e("span",Nt,m(s.n),1),e("span",jt,[p(m(s.title)+" ",1),e("small",null,m(s.sub),1)])])),64))]),e("div",{class:"landing-mcp__install","data-bs-theme":"dark"},[n[5]||(n[5]=e("div",{class:"landing-mcp__install__head"},[e("span",{class:"landing-mcp__install__head__dots"},[e("span"),e("span"),e("span")]),p(" terminal ")],-1)),e("code",{class:"landing-mcp__install__cmd"},m(Tt))]),e("a",Dt,[d(r($),{name:r(E),size:"xs","aria-hidden":"true"},null,8,["name"]),n[6]||(n[6]=p(" Read the docs ",-1))])])])]),_:1}))}}),Wt=y(zt,[["__scopeId","data-v-14c91008"]]),Vt={viewBox:"0 0 256 256",width:"1.2em",height:"1.2em"};function Xt(i,t){return a(),o("svg",Vt,[...t[0]||(t[0]=[e("path",{fill:"currentColor",d:"M208 80h-32V56a48 48 0 0 0-96 0v24H48a16 16 0 0 0-16 16v112a16 16 0 0 0 16 16h160a16 16 0 0 0 16-16V96a16 16 0 0 0-16-16M96 56a32 32 0 0 1 64 0v24H96Zm112 152H48V96h160zm-68-56a12 12 0 1 1-12-12a12 12 0 0 1 12 12"},null,-1)])])}const Et=S({name:"ph-lock",render:Xt}),Yt={viewBox:"0 0 256 256",width:"1.2em",height:"1.2em"};function Ft(i,t){return a(),o("svg",Yt,[...t[0]||(t[0]=[e("path",{fill:"currentColor",d:"M215.79 118.17a8 8 0 0 0-5-5.66L153.18 90.9l14.66-73.33a8 8 0 0 0-13.69-7l-112 120a8 8 0 0 0 3 13l57.63 21.61l-14.62 73.25a8 8 0 0 0 13.69 7l112-120a8 8 0 0 0 1.94-7.26M109.37 214l10.47-52.38a8 8 0 0 0-5-9.06L62 132.71l84.62-90.66l-10.46 52.38a8 8 0 0 0 5 9.06l52.8 19.8Z"},null,-1)])])}const Ut=S({name:"ph-lightning",render:Ft}),Qt={viewBox:"0 0 256 256",width:"1.2em",height:"1.2em"};function Ot(i,t){return a(),o("svg",Qt,[...t[0]||(t[0]=[e("path",{fill:"currentColor",d:"M53.92 34.62a8 8 0 1 0-11.84 10.76l39.24 43.17l-.06.12A65 65 0 0 0 72 88a64 64 0 0 0 0 128h88a87.3 87.3 0 0 0 31.8-5.93l10.28 11.31a8 8 0 1 0 11.84-10.76ZM160 200H72a48 48 0 0 1 0-96c1.1 0 2.2 0 3.3.12A88.4 88.4 0 0 0 72 128a8 8 0 0 0 16 0a72.3 72.3 0 0 1 5.06-26.54l87 95.7A71.7 71.7 0 0 1 160 200m88-72a87.9 87.9 0 0 1-22.35 58.61A8 8 0 0 1 213.71 176a72 72 0 0 0-96.34-106a8 8 0 0 1-9.48-12.89A88 88 0 0 1 248 128"},null,-1)])])}const Jt=S({name:"ph-cloud-slash",render:Ot}),Kt={viewBox:"0 0 256 256",width:"1.2em",height:"1.2em"};function qt(i,t){return a(),o("svg",Kt,[...t[0]||(t[0]=[e("path",{fill:"currentColor",d:"M128 24c-53.83 0-96 24.6-96 56v96c0 31.4 42.17 56 96 56s96-24.6 96-56V80c0-31.4-42.17-56-96-56m80 104c0 9.62-7.88 19.43-21.61 26.92C170.93 163.35 150.19 168 128 168s-42.93-4.65-58.39-13.08C55.88 147.43 48 137.62 48 128v-16.64c17.06 15 46.23 24.64 80 24.64s62.94-9.68 80-24.64ZM69.61 53.08C85.07 44.65 105.81 40 128 40s42.93 4.65 58.39 13.08C200.12 60.57 208 70.38 208 80s-7.88 19.43-21.61 26.92C170.93 115.35 150.19 120 128 120s-42.93-4.65-58.39-13.08C55.88 99.43 48 89.62 48 80s7.88-19.43 21.61-26.92m116.78 149.84C170.93 211.35 150.19 216 128 216s-42.93-4.65-58.39-13.08C55.88 195.43 48 185.62 48 176v-16.64c17.06 15 46.23 24.64 80 24.64s62.94-9.68 80-24.64V176c0 9.62-7.88 19.43-21.61 26.92"},null,-1)])])}const en=S({name:"ph-database",render:qt}),tn={viewBox:"0 0 256 256",width:"1.2em",height:"1.2em"};function nn(i,t){return a(),o("svg",tn,[...t[0]||(t[0]=[e("path",{fill:"currentColor",d:"M216 48v48a8 8 0 0 1-16 0V67.31l-42.34 42.35a8 8 0 0 1-11.32-11.32L188.69 56H160a8 8 0 0 1 0-16h48a8 8 0 0 1 8 8M98.34 146.34L56 188.69V160a8 8 0 0 0-16 0v48a8 8 0 0 0 8 8h48a8 8 0 0 0 0-16H67.31l42.35-42.34a8 8 0 0 0-11.32-11.32M208 152a8 8 0 0 0-8 8v28.69l-42.34-42.35a8 8 0 0 0-11.32 11.32L188.69 200H160a8 8 0 0 0 0 16h48a8 8 0 0 0 8-8v-48a8 8 0 0 0-8-8M67.31 56H96a8 8 0 0 0 0-16H48a8 8 0 0 0-8 8v48a8 8 0 0 0 16 0V67.31l42.34 42.35a8 8 0 0 0 11.32-11.32Z"},null,-1)])])}const an=S({name:"ph-arrows-out",render:nn}),sn={class:"landing-default-card"},on={class:"landing-default-card__head"},rn={class:"landing-default-card__head__icon"},ln={class:"landing-default-card__head__tag"},dn={class:"landing-default-card__title"},cn={class:"landing-default-card__desc"},_n=C({__name:"LandingDefaultCard",props:{icon:{},tag:{},title:{},description:{}},setup(i){return(t,u)=>(a(),o("div",sn,[e("div",on,[e("span",rn,[d(r($),{name:i.icon,size:"sm"},null,8,["name"])]),e("span",ln,m(i.tag),1)]),e("h4",dn,m(i.title),1),e("p",cn,m(i.description),1)]))}}),F=y(_n,[["__scopeId","data-v-582e2ff8"]]),un={class:"landing-format__grid"},gn={class:"landing-format__pane","data-bs-theme":"dark"},pn=["innerHTML"],mn={class:"landing-format__browser"},hn={class:"landing-format__browser__url","aria-hidden":"true"},In=["href"],fn={class:"landing-format__browser__chart"},bn={class:"landing-format__cards"},vn={class:"landing-format__footnote"},Cn={class:"landing-format__footnote__lead"},yn="eyJ0eXBlIjoibGluZSIsImRhdGEiOlt7IngiOiIxOTgwIix7InkiOj",wn="eyJ0...",Bn=C({__name:"LandingFormat",setup(i){const t=z.find(c=>c.id==="temperature-anomaly");if(!t)throw new Error("Missing temperature-anomaly sample — see LandingFormat.vue");const u=t.dsl.replace(/\{/,`{
|
|
3
|
+
theme = "blueprint-framed"`),g=Se(u);function n(c){const l=new TextEncoder().encode(c);let I="";for(const k of l)I+=String.fromCharCode(k);return globalThis.btoa(I)}const s=n(u),_=typeof window<"u"?`${window.location.origin}${window.location.pathname}#/render?bpc64=${encodeURIComponent(s)}`:"#",f=[{icon:Jt,tag:"A",title:"No backend",description:"The renderer runs in the browser. Self-host the editor anywhere, including a USB stick."},{icon:en,tag:"B",title:"Data stays local",description:"Your CSV never touches a server. The base64 payload is the data. It travels with the iframe."},{icon:an,tag:"C",title:"One string ships",description:"The entire chart fits in a URL fragment. One copy-paste embeds it on any CMS."}];return(c,l)=>(a(),H(j,{id:"format"},{default:h(()=>[d(D,{label:"02 / One portable file"},{lead:h(()=>[...l[0]||(l[0]=[p(" Blueprint charts are plain-text in, self-contained iframe out. No backend renders them. Your data never leaves the browser. One file is the chart, the data, and the embed, together. ",-1)])]),default:h(()=>[l[1]||(l[1]=p(" BPC: a chart you",-1)),l[2]||(l[2]=e("br",null,null,-1)),l[3]||(l[3]=e("em",null,"can hold in your hand.",-1))]),_:1}),e("div",un,[e("div",gn,[l[4]||(l[4]=e("div",{class:"landing-format__pane__head"},[e("span",{class:"landing-format__pane__head__dots"},[e("span"),e("span"),e("span")]),p(" chart.bpc ")],-1)),e("pre",{class:"landing-format__pane__code",innerHTML:r(g)},null,8,pn)]),e("div",mn,[l[7]||(l[7]=e("span",{class:"visually-hidden"},"Example embed URL",-1)),e("div",hn,[l[6]||(l[6]=e("span",{class:"landing-format__browser__url__dots"},[e("span"),e("span"),e("span")],-1)),e("a",{href:r(_),target:"_blank",rel:"noopener","aria-label":"Open this chart embed in a new tab",class:"landing-format__browser__url__bar"},[d(r($),{name:r(Et),size:"xs",variant:"success"},null,8,["name"]),l[5]||(l[5]=e("span",{class:"landing-format__browser__url__bar__host"},"blueprintchart.com/#/render?bpc64=",-1)),e("span",{class:"landing-format__browser__url__bar__fragment landing-format__browser__url__bar__fragment--long"},m(yn)),e("span",{class:"landing-format__browser__url__bar__fragment landing-format__browser__url__bar__fragment--short"},m(wn))],8,In)]),e("div",fn,[d(Y,{bpc:r(u)},null,8,["bpc"])])])]),e("div",bn,[(a(),o(v,null,w(f,I=>d(F,{key:I.tag,icon:I.icon,tag:I.tag,title:I.title,description:I.description},null,8,["icon","tag","title","description"])),64))]),e("p",vn,[e("span",Cn,[l[8]||(l[8]=e("span",{class:"landing-format__footnote__label"},"FYI",-1)),d(r($),{name:r(Ut),size:"xs",variant:"warning"},null,8,["name"])]),l[9]||(l[9]=e("span",{class:"landing-format__footnote__text"},[p(" Plain-text BPC is also an excellent target for LLMs. The official "),e("a",{class:"landing-format__footnote__link",href:"https://docs.blueprintchart.com/guide/mcp",target:"_blank",rel:"noopener noreferrer"},"MCP"),p(" writes, validates, and renders it for you. ")],-1))])]),_:1}))}}),Sn=y(Bn,[["__scopeId","data-v-d42efcc0"]]),kn={viewBox:"0 0 256 256",width:"1.2em",height:"1.2em"};function An(i,t){return a(),o("svg",kn,[...t[0]||(t[0]=[e("path",{fill:"currentColor",d:"M225 80.4L183.6 39a24 24 0 0 0-33.94 0L31 157.66a24 24 0 0 0 0 33.94l30.06 30.06a8 8 0 0 0 5.68 2.34H216a8 8 0 0 0 0-16h-84.7l93.7-93.66a24 24 0 0 0 0-33.94M108.68 208H70.05l-27.72-27.72a8 8 0 0 1 0-11.31L96 115.31L148.69 168Zm105-105L160 156.69L107.31 104L161 50.34a8 8 0 0 1 11.32 0l41.38 41.38a8 8 0 0 1 0 11.31Z"},null,-1)])])}const Mn=S({name:"ph-eraser",render:An}),Pn={viewBox:"0 0 256 256",width:"1.2em",height:"1.2em"};function Zn(i,t){return a(),o("svg",Pn,[...t[0]||(t[0]=[e("path",{fill:"currentColor",d:"M224 72h-16v-8a24 24 0 0 0-24-24H40a24 24 0 0 0-24 24v96a24 24 0 0 0 24 24h112v8a24 24 0 0 0 24 24h48a24 24 0 0 0 24-24V96a24 24 0 0 0-24-24M40 168a8 8 0 0 1-8-8V64a8 8 0 0 1 8-8h144a8 8 0 0 1 8 8v8h-16a24 24 0 0 0-24 24v72Zm192 24a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8V96a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8Zm-96 16a8 8 0 0 1-8 8H88a8 8 0 0 1 0-16h40a8 8 0 0 1 8 8m80-96a8 8 0 0 1-8 8h-16a8 8 0 0 1 0-16h16a8 8 0 0 1 8 8"},null,-1)])])}const xn=S({name:"ph-devices",render:Zn}),Ln={viewBox:"0 0 256 256",width:"1.2em",height:"1.2em"};function Hn(i,t){return a(),o("svg",Ln,[...t[0]||(t[0]=[e("path",{fill:"currentColor",d:"M100 56H40a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h60v8a32 32 0 0 1-32 32a8 8 0 0 0 0 16a48.05 48.05 0 0 0 48-48V72a16 16 0 0 0-16-16m0 80H40V72h60Zm116-80h-60a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h60v8a32 32 0 0 1-32 32a8 8 0 0 0 0 16a48.05 48.05 0 0 0 48-48V72a16 16 0 0 0-16-16m0 80h-60V72h60Z"},null,-1)])])}const $n=S({name:"ph-quotes",render:Hn}),Nn={class:"landing-defaults__grid"},jn={class:"landing-defaults__grid__chart"},Dn={class:"landing-defaults__grid__cards"},Rn=C({__name:"LandingDefaults",setup(i){const t=z.find(n=>n.id==="temperature-anomaly");if(!t)throw new Error("Missing temperature-anomaly sample — see LandingDefaults.vue");const u=t.dsl.replace(/\{/,`{
|
|
4
|
+
theme = "blueprint-framed"`),g=[{icon:ke,tag:"01",title:"Axes start at zero",description:"Bars never lie. Truncated axes require an explicit override."},{icon:Ae,tag:"02",title:"Direct labels",description:"Labels sit next to data. Readers' eyes never travel to a legend box."},{icon:Mn,tag:"03",title:"No chart junk",description:"Gridlines and borders are suppressed unless they carry information."},{icon:Me,tag:"04",title:"CVD-safe palettes",description:"Every palette tested against deuteranopia, protanopia, tritanopia."},{icon:xn,tag:"05",title:"Mobile-first",description:"Labels reflow, ticks reduce, layouts adapt from desktop down to 320 px."},{icon:$n,tag:"06",title:"Source attribution",description:"The BPC format includes a source field displayed on every chart."}];return(n,s)=>(a(),H(j,{id:"defaults"},{default:h(()=>[d(D,{label:"03 / Defaults"},{lead:h(()=>[...s[0]||(s[0]=[p(" Clutter is the enemy of insight. Blueprint Chart's defaults are opinionated by design, guided by decades of dataviz research from Tufte, Cairo and Schwabish — the same rigor newsrooms rely on — so your readers focus on the story, not the noise. ",-1)])]),default:h(()=>[s[1]||(s[1]=p(" A simple chart",-1)),s[2]||(s[2]=e("br",null,null,-1)),s[3]||(s[3]=e("em",null,"sends a big message.",-1))]),_:1}),e("div",Nn,[e("div",jn,[d(Y,{bpc:r(u)},null,8,["bpc"])]),e("div",Dn,[(a(),o(v,null,w(g,_=>d(F,{key:_.tag,icon:_.icon,tag:_.tag,title:_.title,description:_.description},null,8,["icon","tag","title","description"])),64))])])]),_:1}))}}),Tn=y(Rn,[["__scopeId","data-v-2eb1dacc"]]),Gn={viewBox:"0 0 256 256",width:"1.2em",height:"1.2em"};function zn(i,t){return a(),o("svg",Gn,[...t[0]||(t[0]=[e("path",{fill:"currentColor",d:"M208 40a8 8 0 0 1-8 8h-29.29a24 24 0 0 0-23.62 19.71l-9.5 52.29H184a8 8 0 0 1 0 16h-49.32l-10 55.16A40 40 0 0 1 85.29 224H56a8 8 0 0 1 0-16h29.29a24 24 0 0 0 23.62-19.71l9.5-52.29H72a8 8 0 0 1 0-16h49.32l10-55.16A40 40 0 0 1 170.71 32H200a8 8 0 0 1 8 8"},null,-1)])])}const Wn=S({name:"ph-function",render:zn}),Vn={class:"transforms-demo"},Xn={class:"transforms-demo__steps"},En=["onClick"],Yn={class:"transforms-demo__step__num"},Fn={class:"transforms-demo__step__label"},Un={class:"transforms-demo__body"},Qn={class:"transforms-demo__body__panel"},On={class:"transforms-demo__body__panel__title"},Jn={class:"transforms-demo__body__panel__table"},Kn={class:"transforms-demo__body__panel"},qn={class:"transforms-demo__body__panel__title"},ea={class:"transforms-demo__body__panel__table"},ta={class:"transforms-demo__body__panel__note"},na={class:"landing-transforms__cards"},aa=C({__name:"LandingTransforms",setup(i){const t=N(0),u=[{icon:Wn,tag:"SORT · FILTER · GROUP",title:"Core operations",description:"Multi-column sort, conditional filter, group-with-aggregate (sum / avg / min / max / count)."},{icon:Pe,tag:"29 OPERATIONS",title:"Parse & reshape",description:"Type conversions, string transforms, date extraction, numeric normalisation."},{icon:Ze,tag:"RENAME · HIDE",title:"Chart-ready labels",description:"Clean column names for axis labels. Hide columns without deleting your data."},{icon:xe,tag:"TRANSPOSE",title:"Pivot",description:"Swap rows and columns. First-column values become headers."}],g=[{label:"Raw CSV",inputTitle:"Uploaded data",outputTitle:"Detected types",input:[["country","year","co2"],["France","2019","4.6"],["France","2020","4.1"],["Germany","2019","8.5"],["Germany","2020","7.7"],["USA","2019","15.2"],["USA","2020","13.9"]],output:[["column","type","values"],["country","string","3 unique"],["year","number","2019 – 2020"],["co2","number","4.1 – 15.2"]],note:"Blueprint auto-detects column types from your CSV, paste or sample data."},{label:"Group by",inputTitle:"Input rows",outputTitle:"After grouping",input:[["country","year","co2"],["France","2019","4.6"],["France","2020","4.1"],["Germany","2019","8.5"],["Germany","2020","7.7"],["USA","2019","15.2"],["USA","2020","13.9"]],output:[["country","co2 (avg)"],["France","4.35"],["Germany","8.10"],["USA","14.55"]],highlightCol:"country",outputHighlightCol:"co2 (avg)",note:"Rows with the same country are grouped. CO₂ values aggregated with AVG."},{label:"Sort",inputTitle:"Grouped data",outputTitle:"Sorted descending",input:[["country","co2 (avg)"],["France","4.35"],["Germany","8.10"],["USA","14.55"]],output:[["country","co2 (avg)"],["USA","14.55"],["Germany","8.10"],["France","4.35"]],outputHighlightCol:"co2 (avg)",note:"Sorted by CO₂ descending, highest emitter first. Ready for the chart."},{label:"Rename",inputTitle:"Before rename",outputTitle:"Chart-ready",input:[["country","co2 (avg)"],["USA","14.55"],["Germany","8.10"],["France","4.35"]],output:[["Country","Avg CO₂ (tonnes)"],["USA","14.55"],["Germany","8.10"],["France","4.35"]],outputHighlightCol:"Avg CO₂ (tonnes)",note:"Clean column names for readable axis labels. Data flows straight to the chart."}];return(n,s)=>{const _=D,f=j;return a(),H(f,{id:"transforms",surface:"content"},{default:h(()=>[d(_,{label:"04 / Data pipeline"},{lead:h(()=>[...s[0]||(s[0]=[p(" Raw data rarely fits a chart out of the box. Blueprint's pipeline lets you sort, filter, group, parse and reshape, all without leaving the editor, all replayable from your BPC source. ",-1)])]),default:h(()=>[s[1]||(s[1]=p(" Reshape your data",-1)),s[2]||(s[2]=e("br",null,null,-1)),s[3]||(s[3]=e("em",null,"before you chart it.",-1))]),_:1}),e("div",Vn,[e("div",Xn,[(a(),o(v,null,w(g,(c,l)=>e("button",{key:l,class:L(["transforms-demo__step",{"transforms-demo__step--active":r(t)===l}]),onClick:I=>t.value=l},[e("span",Yn,m(l+1),1),e("span",Fn,m(c.label),1)],10,En)),64))]),e("div",Un,[e("div",Qn,[e("div",On,m(g[r(t)].inputTitle),1),e("table",Jn,[e("thead",null,[e("tr",null,[(a(!0),o(v,null,w(g[r(t)].input[0],c=>(a(),o("th",{key:c,class:"transforms-demo__body__panel__th"},m(c),1))),128))])]),e("tbody",null,[(a(!0),o(v,null,w(g[r(t)].input.slice(1),(c,l)=>(a(),o("tr",{key:l},[(a(!0),o(v,null,w(c,(I,k)=>(a(),o("td",{key:k,class:L(["transforms-demo__body__panel__td",{"transforms-demo__body__panel__td--highlight":g[r(t)].highlightCol===g[r(t)].input[0][k]}])},m(I),3))),128))]))),128))])])]),s[4]||(s[4]=e("div",{class:"transforms-demo__body__flow"},[e("svg",{viewBox:"0 0 80 10",preserveAspectRatio:"none",class:"transforms-demo__body__flow__svg"},[e("path",{d:"M0,5 C30,5 50,5 80,5",class:"transforms-demo__body__flow__wire","vector-effect":"non-scaling-stroke"})]),e("div",{class:"transforms-demo__body__flow__dot transforms-demo__body__flow__dot--left"}),e("div",{class:"transforms-demo__body__flow__dot transforms-demo__body__flow__dot--right"})],-1)),e("div",Kn,[e("div",qn,m(g[r(t)].outputTitle),1),e("table",ea,[e("thead",null,[e("tr",null,[(a(!0),o(v,null,w(g[r(t)].output[0],c=>(a(),o("th",{key:c,class:"transforms-demo__body__panel__th"},m(c),1))),128))])]),e("tbody",null,[(a(!0),o(v,null,w(g[r(t)].output.slice(1),(c,l)=>(a(),o("tr",{key:l},[(a(!0),o(v,null,w(c,(I,k)=>(a(),o("td",{key:k,class:L(["transforms-demo__body__panel__td",{"transforms-demo__body__panel__td--highlight":g[r(t)].outputHighlightCol===g[r(t)].output[0][k]}])},m(I),3))),128))]))),128))])]),e("p",ta,m(g[r(t)].note),1)])])]),e("div",na,[(a(),o(v,null,w(u,c=>d(F,{key:c.tag,icon:c.icon,tag:c.tag,title:c.title,description:c.description},null,8,["icon","tag","title","description"])),64))])]),_:1})}}}),sa=y(aa,[["__scopeId","data-v-d1c11d25"]]),oa={viewBox:"0 0 256 256",width:"1.2em",height:"1.2em"};function ia(i,t){return a(),o("svg",oa,[...t[0]||(t[0]=[e("path",{fill:"currentColor",d:"M216 104H102.09L210 75.51a8 8 0 0 0 5.68-9.84l-8.16-30a15.93 15.93 0 0 0-19.42-11.13L35.81 64.74a15.75 15.75 0 0 0-9.7 7.4a15.5 15.5 0 0 0-1.55 12L32 111.56V200a16 16 0 0 0 16 16h160a16 16 0 0 0 16-16v-88a8 8 0 0 0-8-8m-23.84-64l6 22.07l-22.62 6l-28.12-16.24Zm-66.69 17.6l28.12 16.24l-36.94 9.75l-28.12-16.22Zm-79.4 44.62l-6-22.08l26.5-7L94.69 89.4ZM208 200H48v-80h160z"},null,-1)])])}const ra=S({name:"ph-film-slate",render:ia}),la={class:"scenes__grid"},da={class:"scenes__grid__features"},ca={class:"scenes-feature__icon"},_a={class:"scenes-feature__title"},ua={class:"scenes-feature__desc"},ga={class:"scenes-demo"},pa=C({__name:"LandingScenes",setup(i){const t=z.find(B=>B.id==="farm-compass");if(!t)throw new Error("Missing farm-compass sample — see LandingScenes.vue");const u=t.dsl,g=Qe(u),n=te("containerRef"),s=q(null),_=N(-1),f=N(!1),c=N(!1);let l=null;const I=N(_.value+2);T(_,B=>{I.value=B+2});const{theme:k}=G();function b(){n.value&&(ne(n.value,u,{stripColors:!0,sceneIndex:_.value>=0?_.value:void 0,transition:c.value}),c.value=!1)}const M=ee(b,150);T([n,_,k],b,{immediate:!0}),K(n,M);function U(){var B;return((B=n.value)==null?void 0:B.querySelector(".bc-frame-footer"))??null}let P=null;T(n,B=>{if(P&&(P.disconnect(),P=null),!B){s.value=null;return}s.value=U(),P=new MutationObserver(()=>{s.value=U()}),P.observe(B,{childList:!0,subtree:!0})},{immediate:!0});function ae(B){c.value=!0,_.value=B-2}function se(){_.value>-1&&(c.value=!0,_.value=_.value-1)}function oe(){_.value<g-1&&(c.value=!0,_.value=_.value+1)}function ie(){f.value||(f.value=!0,c.value=!0,_.value=-1,l=globalThis.setInterval(()=>{_.value<g-1?(c.value=!0,_.value++):W()},3e3))}function W(){f.value=!1,l&&(globalThis.clearInterval(l),l=null)}Le(()=>{W(),P&&(P.disconnect(),P=null)});const re=[{icon:ra,title:"Sequential scenes",description:"Each scene mutates the chart: highlight, filter, zoom, reorder, or change type entirely."},{icon:E,title:"Smooth animated transitions",description:"D3-powered morphing between states: bars grow, lines redraw, highlights pulse."},{icon:He,title:"Embed anywhere",description:"One iframe embed. Works in WordPress, Ghost, any CMS."}];return(B,Z)=>{const le=D,de=j;return a(),H(de,{id:"scenes",surface:"content"},{default:h(()=>[d(le,{label:"05 / Scenes & storytelling"},{lead:h(()=>[...Z[0]||(Z[0]=[p(" Create a sequence of scenes, each one a step in your narrative. The same chart morphs from overview to focus, from cause to consequence. Press play, or step through. ",-1)])]),default:h(()=>[Z[1]||(Z[1]=p(" Guide your reader",-1)),Z[2]||(Z[2]=e("br",null,null,-1)),Z[3]||(Z[3]=e("em",null,"through the data.",-1))]),_:1}),e("div",la,[e("div",da,[(a(),o(v,null,w(re,R=>e("div",{key:R.title,class:"scenes-feature"},[e("span",ca,[d(r($),{name:R.icon,size:"sm",variant:"primary"},null,8,["name"])]),e("div",null,[e("strong",_a,m(R.title),1),e("p",ua,m(R.description),1)])])),64))]),e("div",ga,[e("div",{ref_key:"containerRef",ref:n,class:"scenes-demo__chart"},null,512),r(s)&&r(g)>0?(a(),H($e,{key:0,to:r(s)},[d(r(Ne),{total:r(g)+1,current:r(I),playing:r(f),position:"left","onUpdate:current":ae,onPrevious:se,onNext:oe,onPlay:ie,onPause:W},null,8,["total","current","playing"])],8,["to"])):A("",!0)])])]),_:1})}}}),ma=y(pa,[["__scopeId","data-v-6712a09b"]]),ha={class:"landing-footer"},Ia={class:"landing-footer__brand"},fa=["src"],ba=C({__name:"LandingFooter",setup(i){const{theme:t}=G(),u=X(()=>t.value==="dark"?O:J);return(g,n)=>{const s=Q("router-link");return a(),o("footer",ha,[e("div",Ia,[e("img",{src:u.value,alt:"Blueprint Chart",class:"landing-footer__brand__logo"},null,8,fa),n[0]||(n[0]=e("span",{class:"landing-footer__brand__name"},"Blueprint Chart",-1))]),n[2]||(n[2]=e("span",{class:"landing-footer__sep","aria-hidden":"true"},"·",-1)),d(s,{to:"/new",class:"landing-footer__link"},{default:h(()=>[...n[1]||(n[1]=[p(" Editor ",-1)])]),_:1}),n[3]||(n[3]=e("span",{class:"landing-footer__sep","aria-hidden":"true"},"·",-1)),n[4]||(n[4]=e("a",{class:"landing-footer__link",href:"https://github.com/blueprint-chart/blueprint-chart",target:"_blank",rel:"noopener noreferrer"}," GitHub ",-1)),n[5]||(n[5]=e("span",{class:"landing-footer__spacer"},null,-1)),n[6]||(n[6]=e("span",{class:"landing-footer__tagline"}," MIT · Open source charting ",-1))])}}}),va=y(ba,[["__scopeId","data-v-14cc0356"]]),Ca={class:"landing-page"},ya=C({__name:"LandingPage",setup(i){return(t,u)=>(a(),o("div",Ca,[d(Fe),d(st),d(ct),d(Wt),d(Sn),d(Tn),d(sa),d(ma),d(va)]))}}),Ba=y(ya,[["__scopeId","data-v-fe1d79e1"]]);export{Ba as default};
|