summaryrefslogtreecommitdiff
path: root/_ds/pantograph-design-system-56a1c74e-41c1-486b-ba3c-4eabdfacef31/_ds_bundle.js
diff options
context:
space:
mode:
authort <t@tjp.lol>2026-06-16 19:28:54 -0600
committert <t@tjp.lol>2026-06-16 20:21:55 -0600
commitc21a4ebd001ca305d862b5390f090f2ef14163cf (patch)
tree6910b11139c6b01c78a64c18b206d89619bebbf1 /_ds/pantograph-design-system-56a1c74e-41c1-486b-ba3c-4eabdfacef31/_ds_bundle.js
base site: claude design plus some tweaks
Diffstat (limited to '_ds/pantograph-design-system-56a1c74e-41c1-486b-ba3c-4eabdfacef31/_ds_bundle.js')
-rw-r--r--_ds/pantograph-design-system-56a1c74e-41c1-486b-ba3c-4eabdfacef31/_ds_bundle.js1878
1 files changed, 1878 insertions, 0 deletions
diff --git a/_ds/pantograph-design-system-56a1c74e-41c1-486b-ba3c-4eabdfacef31/_ds_bundle.js b/_ds/pantograph-design-system-56a1c74e-41c1-486b-ba3c-4eabdfacef31/_ds_bundle.js
new file mode 100644
index 0000000..f584806
--- /dev/null
+++ b/_ds/pantograph-design-system-56a1c74e-41c1-486b-ba3c-4eabdfacef31/_ds_bundle.js
@@ -0,0 +1,1878 @@
+/* @ds-bundle: {"format":3,"namespace":"PantographDesignSystem_56a1c7","components":[{"name":"Callout","sourcePath":"components/code/Callout.jsx"},{"name":"CodeBlock","sourcePath":"components/code/CodeBlock.jsx"},{"name":"Terminal","sourcePath":"components/code/Terminal.jsx"},{"name":"Badge","sourcePath":"components/core/Badge.jsx"},{"name":"Button","sourcePath":"components/core/Button.jsx"},{"name":"Card","sourcePath":"components/core/Card.jsx"},{"name":"IconButton","sourcePath":"components/core/IconButton.jsx"},{"name":"Tag","sourcePath":"components/core/Tag.jsx"},{"name":"Input","sourcePath":"components/forms/Input.jsx"},{"name":"Select","sourcePath":"components/forms/Select.jsx"},{"name":"Switch","sourcePath":"components/forms/Switch.jsx"},{"name":"Tabs","sourcePath":"components/navigation/Tabs.jsx"}],"sourceHashes":{"components/code/Callout.jsx":"dc74992ca3a8","components/code/CodeBlock.jsx":"75f95cdb07d4","components/code/Terminal.jsx":"32207bf1f8d8","components/core/Badge.jsx":"c04491952135","components/core/Button.jsx":"c43631b0d758","components/core/Card.jsx":"b4474a239d87","components/core/IconButton.jsx":"bd55860ce51f","components/core/Tag.jsx":"c8a2e8432e9a","components/forms/Input.jsx":"4c58262a357e","components/forms/Select.jsx":"a2a13ccf0cb7","components/forms/Switch.jsx":"2737a3f2e747","components/navigation/Tabs.jsx":"d3f184460fa6","ui_kits/docs/App.jsx":"7a59cd523900","ui_kits/docs/DocsHeader.jsx":"2eb476264c51","ui_kits/docs/DocsSidebar.jsx":"a091bd208645","ui_kits/docs/ReferencePage.jsx":"d0855f29aced","ui_kits/home/Features.jsx":"48ac29e811d8","ui_kits/home/Hero.jsx":"2dc3333c9b3b","ui_kits/home/HomeApp.jsx":"f2a18138face","ui_kits/home/HomeHeader.jsx":"dfc98c37e66f","ui_kits/home/InstallSection.jsx":"aec2cdd7dae8"},"inlinedExternals":[],"unexposedExports":[]} */
+
+(() => {
+
+const __ds_ns = (window.PantographDesignSystem_56a1c7 = window.PantographDesignSystem_56a1c7 || {});
+
+const __ds_scope = {};
+
+(__ds_ns.__errors = __ds_ns.__errors || []);
+
+// components/code/Callout.jsx
+try { (() => {
+function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
+const STYLE_ID = 'pg-callout-css';
+function ensureStyles() {
+ if (typeof document === 'undefined' || document.getElementById(STYLE_ID)) return;
+ const el = document.createElement('style');
+ el.id = STYLE_ID;
+ el.textContent = `
+ .pg-callout {
+ display: flex; gap: 12px;
+ padding: 13px 15px;
+ background: var(--paper-0);
+ border: var(--border-thin) solid var(--border-hairline);
+ border-left: var(--border-thick) solid var(--ink-3);
+ border-radius: var(--radius-sm);
+ }
+ .pg-callout__icon { flex: none; width: 18px; height: 18px; margin-top: 1px; color: var(--ink-3); }
+ .pg-callout__icon svg { width: 100%; height: 100%; }
+ .pg-callout__body { font: var(--weight-regular) var(--text-sm)/1.55 var(--font-sans); color: var(--ink-1); }
+ .pg-callout__title {
+ font: var(--weight-semibold) var(--text-2xs)/1 var(--font-display);
+ letter-spacing: var(--tracking-label); text-transform: uppercase;
+ margin: 0 0 5px; color: var(--ink-2);
+ }
+ .pg-callout__body :last-child { margin-bottom: 0; }
+ .pg-callout--note { border-left-color: var(--ink-3); }
+ .pg-callout--tip { border-left-color: var(--green); background: var(--green-wash); }
+ .pg-callout--tip .pg-callout__icon, .pg-callout--tip .pg-callout__title { color: var(--green-deep); }
+ .pg-callout--warn { border-left-color: var(--brass); background: #F0E7D0; }
+ .pg-callout--warn .pg-callout__icon, .pg-callout--warn .pg-callout__title { color: #7A5E20; }
+ .pg-callout--danger { border-left-color: var(--red); background: var(--red-wash); }
+ .pg-callout--danger .pg-callout__icon, .pg-callout--danger .pg-callout__title { color: var(--red-deep); }
+ `;
+ document.head.appendChild(el);
+}
+const ICONS = {
+ note: /*#__PURE__*/React.createElement("svg", {
+ viewBox: "0 0 24 24",
+ fill: "none",
+ stroke: "currentColor",
+ strokeWidth: "2",
+ strokeLinecap: "round",
+ strokeLinejoin: "round"
+ }, /*#__PURE__*/React.createElement("circle", {
+ cx: "12",
+ cy: "12",
+ r: "10"
+ }), /*#__PURE__*/React.createElement("path", {
+ d: "M12 16v-4"
+ }), /*#__PURE__*/React.createElement("path", {
+ d: "M12 8h.01"
+ })),
+ tip: /*#__PURE__*/React.createElement("svg", {
+ viewBox: "0 0 24 24",
+ fill: "none",
+ stroke: "currentColor",
+ strokeWidth: "2",
+ strokeLinecap: "round",
+ strokeLinejoin: "round"
+ }, /*#__PURE__*/React.createElement("path", {
+ d: "M9 18h6"
+ }), /*#__PURE__*/React.createElement("path", {
+ d: "M10 22h4"
+ }), /*#__PURE__*/React.createElement("path", {
+ d: "M15.09 14c.18-.98.65-1.74 1.41-2.5A4.65 4.65 0 0 0 18 8 6 6 0 0 0 6 8c0 1 .23 2.23 1.5 3.5A4.61 4.61 0 0 1 8.91 14"
+ })),
+ warn: /*#__PURE__*/React.createElement("svg", {
+ viewBox: "0 0 24 24",
+ fill: "none",
+ stroke: "currentColor",
+ strokeWidth: "2",
+ strokeLinecap: "round",
+ strokeLinejoin: "round"
+ }, /*#__PURE__*/React.createElement("path", {
+ d: "m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z"
+ }), /*#__PURE__*/React.createElement("path", {
+ d: "M12 9v4"
+ }), /*#__PURE__*/React.createElement("path", {
+ d: "M12 17h.01"
+ })),
+ danger: /*#__PURE__*/React.createElement("svg", {
+ viewBox: "0 0 24 24",
+ fill: "none",
+ stroke: "currentColor",
+ strokeWidth: "2",
+ strokeLinecap: "round",
+ strokeLinejoin: "round"
+ }, /*#__PURE__*/React.createElement("circle", {
+ cx: "12",
+ cy: "12",
+ r: "10"
+ }), /*#__PURE__*/React.createElement("path", {
+ d: "m15 9-6 6"
+ }), /*#__PURE__*/React.createElement("path", {
+ d: "m9 9 6 6"
+ }))
+};
+const DEFAULT_TITLES = {
+ note: 'Note',
+ tip: 'Tip',
+ warn: 'Warning',
+ danger: 'Danger'
+};
+
+/**
+ * Callout — a documentation admonition (note / tip / warn / danger).
+ */
+function Callout({
+ variant = 'note',
+ title,
+ icon,
+ className = '',
+ children,
+ ...rest
+}) {
+ ensureStyles();
+ const heading = title === undefined ? DEFAULT_TITLES[variant] : title;
+ return /*#__PURE__*/React.createElement("div", _extends({
+ className: ['pg-callout', `pg-callout--${variant}`, className].filter(Boolean).join(' ')
+ }, rest), /*#__PURE__*/React.createElement("span", {
+ className: "pg-callout__icon"
+ }, icon || ICONS[variant]), /*#__PURE__*/React.createElement("div", {
+ className: "pg-callout__body"
+ }, heading ? /*#__PURE__*/React.createElement("p", {
+ className: "pg-callout__title"
+ }, heading) : null, children));
+}
+Object.assign(__ds_scope, { Callout });
+})(); } catch (e) { __ds_ns.__errors.push({ path: "components/code/Callout.jsx", error: String((e && e.message) || e) }); }
+
+// components/code/CodeBlock.jsx
+try { (() => {
+function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
+const STYLE_ID = 'pg-codeblock-css';
+function ensureStyles() {
+ if (typeof document === 'undefined' || document.getElementById(STYLE_ID)) return;
+ const el = document.createElement('style');
+ el.id = STYLE_ID;
+ el.textContent = `
+ .pg-code {
+ background: var(--surface-code);
+ border: var(--border-thin) solid var(--border-default);
+ border-radius: var(--radius-md);
+ overflow: hidden;
+ font-family: var(--font-mono);
+ }
+ .pg-code__bar {
+ display: flex; align-items: center; gap: 10px;
+ padding: 8px 12px; background: var(--paper-2);
+ border-bottom: var(--border-thin) solid var(--border-hairline);
+ }
+ .pg-code__name { font: var(--weight-medium) var(--text-xs)/1 var(--font-mono); color: var(--ink-2); }
+ .pg-code__lang {
+ font: var(--weight-semibold) var(--text-2xs)/1 var(--font-display);
+ letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--ink-3);
+ margin-left: auto; padding-right: 4px;
+ }
+ .pg-code__copy {
+ display: inline-flex; align-items: center; gap: 5px;
+ font: var(--weight-medium) var(--text-2xs)/1 var(--font-display);
+ letter-spacing: 0.1em; text-transform: uppercase;
+ color: var(--ink-3); background: none; border: 0; cursor: pointer;
+ padding: 4px 6px; border-radius: var(--radius-xs);
+ transition: color var(--dur-fast) var(--ease-out), background var(--dur-fast) var(--ease-out);
+ }
+ .pg-code__copy:hover { color: var(--ink-0); background: var(--paper-1); }
+ .pg-code__copy--done { color: var(--green-deep); }
+ .pg-code__copy svg { width: 13px; height: 13px; }
+ .pg-code__scroll { overflow-x: auto; padding: 14px 16px; }
+ .pg-code pre { font-size: var(--text-sm); line-height: var(--leading-mono); color: var(--ink-1); margin: 0; }
+ .pg-code--nobar { }
+ /* token colors for hand-marked spans */
+ .pg-code .tok-kw { color: var(--green-deep); }
+ .pg-code .tok-str { color: var(--red-deep); }
+ .pg-code .tok-com { color: var(--ink-4); font-style: italic; }
+ .pg-code .tok-fn { color: var(--ink-0); font-weight: 500; }
+ .pg-code .tok-num { color: var(--brass); }
+ `;
+ document.head.appendChild(el);
+}
+const CopyGlyph = () => /*#__PURE__*/React.createElement("svg", {
+ viewBox: "0 0 24 24",
+ fill: "none",
+ stroke: "currentColor",
+ strokeWidth: "2",
+ strokeLinecap: "round",
+ strokeLinejoin: "round"
+}, /*#__PURE__*/React.createElement("rect", {
+ x: "9",
+ y: "9",
+ width: "11",
+ height: "11",
+ rx: "2"
+}), /*#__PURE__*/React.createElement("path", {
+ d: "M5 15V5a2 2 0 0 1 2-2h10"
+}));
+const CheckGlyph = () => /*#__PURE__*/React.createElement("svg", {
+ viewBox: "0 0 24 24",
+ fill: "none",
+ stroke: "currentColor",
+ strokeWidth: "2.5",
+ strokeLinecap: "round",
+ strokeLinejoin: "round"
+}, /*#__PURE__*/React.createElement("path", {
+ d: "m20 6-11 11-5-5"
+}));
+
+/**
+ * CodeBlock — a code surface with an optional title bar, language label,
+ * and copy button. Pass a raw `code` string or pre-marked JSX children.
+ */
+function CodeBlock({
+ code = null,
+ language = null,
+ filename = null,
+ showBar = true,
+ className = '',
+ children,
+ ...rest
+}) {
+ ensureStyles();
+ const [copied, setCopied] = React.useState(false);
+ const preRef = React.useRef(null);
+ const copy = () => {
+ const text = code != null ? code : preRef.current ? preRef.current.innerText : '';
+ if (navigator.clipboard) navigator.clipboard.writeText(text);
+ setCopied(true);
+ setTimeout(() => setCopied(false), 1400);
+ };
+ return /*#__PURE__*/React.createElement("div", _extends({
+ className: ['pg-code', className].filter(Boolean).join(' ')
+ }, rest), showBar ? /*#__PURE__*/React.createElement("div", {
+ className: "pg-code__bar"
+ }, filename ? /*#__PURE__*/React.createElement("span", {
+ className: "pg-code__name"
+ }, filename) : null, language ? /*#__PURE__*/React.createElement("span", {
+ className: "pg-code__lang"
+ }, language) : null, /*#__PURE__*/React.createElement("button", {
+ className: ['pg-code__copy', copied ? 'pg-code__copy--done' : ''].join(' '),
+ onClick: copy
+ }, copied ? /*#__PURE__*/React.createElement(CheckGlyph, null) : /*#__PURE__*/React.createElement(CopyGlyph, null), copied ? 'Copied' : 'Copy')) : null, /*#__PURE__*/React.createElement("div", {
+ className: "pg-code__scroll"
+ }, /*#__PURE__*/React.createElement("pre", {
+ ref: preRef
+ }, /*#__PURE__*/React.createElement("code", null, children != null ? children : code))));
+}
+Object.assign(__ds_scope, { CodeBlock });
+})(); } catch (e) { __ds_ns.__errors.push({ path: "components/code/CodeBlock.jsx", error: String((e && e.message) || e) }); }
+
+// components/code/Terminal.jsx
+try { (() => {
+function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
+const STYLE_ID = 'pg-terminal-css';
+function ensureStyles() {
+ if (typeof document === 'undefined' || document.getElementById(STYLE_ID)) return;
+ const el = document.createElement('style');
+ el.id = STYLE_ID;
+ el.textContent = `
+ .pg-term {
+ background: var(--ink-1);
+ border: var(--border-thin) solid var(--ink-0);
+ border-radius: var(--radius-md);
+ overflow: hidden;
+ box-shadow: var(--shadow-md);
+ font-family: var(--font-mono);
+ }
+ .pg-term__bar {
+ display: flex; align-items: center; gap: 8px;
+ padding: 9px 12px; background: #232B3B;
+ border-bottom: var(--border-thin) solid #2E3749;
+ }
+ .pg-term__dot { width: 9px; height: 9px; border-radius: var(--radius-pill); }
+ .pg-term__title {
+ margin-left: 6px;
+ font: var(--weight-semibold) var(--text-2xs)/1 var(--font-display);
+ letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--paper-4);
+ }
+ .pg-term__body { padding: 14px 16px; overflow-x: auto; font-size: var(--text-sm); line-height: 1.65; }
+ .pg-term__line { white-space: pre; color: var(--paper-2); }
+ .pg-term__line .pg-term__prompt { color: var(--green-soft); user-select: none; }
+ .pg-term__line .pg-term__panto { color: var(--red-soft); user-select: none; }
+ .pg-term__line--cmd { color: var(--paper-0); }
+ .pg-term__line--out { color: var(--paper-4); }
+ .pg-term__line--ok { color: var(--green-soft); }
+ .pg-term__line--err { color: var(--red-soft); }
+ .pg-term__line--com { color: #6E7689; font-style: italic; }
+ .pg-term__cursor {
+ display: inline-block; width: 8px; height: 1.05em; vertical-align: text-bottom;
+ background: var(--red); margin-left: 2px;
+ animation: pg-term-blink 1.1s steps(1) infinite;
+ }
+ @keyframes pg-term-blink { 50% { opacity: 0; } }
+ @media (prefers-reduced-motion: reduce) { .pg-term__cursor { animation: none; } }
+ `;
+ document.head.appendChild(el);
+}
+
+/**
+ * Terminal — a panto CLI window. Render with a `lines` array, or pass
+ * children for full control. Line types: cmd, out, ok, err, com.
+ */
+function Terminal({
+ title = 'panto',
+ lines = null,
+ cursor = false,
+ className = '',
+ children,
+ ...rest
+}) {
+ ensureStyles();
+ return /*#__PURE__*/React.createElement("div", _extends({
+ className: ['pg-term', className].filter(Boolean).join(' ')
+ }, rest), /*#__PURE__*/React.createElement("div", {
+ className: "pg-term__bar"
+ }, /*#__PURE__*/React.createElement("span", {
+ className: "pg-term__dot",
+ style: {
+ background: 'var(--red)'
+ }
+ }), /*#__PURE__*/React.createElement("span", {
+ className: "pg-term__dot",
+ style: {
+ background: 'var(--brass)'
+ }
+ }), /*#__PURE__*/React.createElement("span", {
+ className: "pg-term__dot",
+ style: {
+ background: 'var(--green)'
+ }
+ }), /*#__PURE__*/React.createElement("span", {
+ className: "pg-term__title"
+ }, title)), /*#__PURE__*/React.createElement("div", {
+ className: "pg-term__body"
+ }, lines ? lines.map((l, i) => {
+ const type = l.type || 'out';
+ if (type === 'cmd') {
+ return /*#__PURE__*/React.createElement("div", {
+ key: i,
+ className: "pg-term__line pg-term__line--cmd"
+ }, /*#__PURE__*/React.createElement("span", {
+ className: l.shell === 'panto' ? 'pg-term__panto' : 'pg-term__prompt'
+ }, l.shell === 'panto' ? 'panto ▸ ' : '$ '), l.text);
+ }
+ return /*#__PURE__*/React.createElement("div", {
+ key: i,
+ className: `pg-term__line pg-term__line--${type}`
+ }, l.text);
+ }) : children, cursor ? /*#__PURE__*/React.createElement("span", {
+ className: "pg-term__cursor"
+ }) : null));
+}
+Object.assign(__ds_scope, { Terminal });
+})(); } catch (e) { __ds_ns.__errors.push({ path: "components/code/Terminal.jsx", error: String((e && e.message) || e) }); }
+
+// components/core/Badge.jsx
+try { (() => {
+function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
+const STYLE_ID = 'pg-badge-css';
+function ensureStyles() {
+ if (typeof document === 'undefined' || document.getElementById(STYLE_ID)) return;
+ const el = document.createElement('style');
+ el.id = STYLE_ID;
+ el.textContent = `
+ .pg-badge {
+ display: inline-flex; align-items: center; gap: 5px;
+ font-family: var(--font-display); font-weight: var(--weight-semibold);
+ font-size: var(--text-2xs); letter-spacing: var(--tracking-label);
+ text-transform: uppercase; line-height: 1; white-space: nowrap;
+ padding: 4px 7px; border-radius: var(--radius-xs);
+ border: var(--border-thin) solid transparent;
+ }
+ .pg-badge__dot { width: 6px; height: 6px; border-radius: var(--radius-pill); background: currentColor; }
+ .pg-badge--neutral { color: var(--ink-2); background: var(--paper-2); border-color: var(--paper-3); }
+ .pg-badge--danger { color: var(--red-deep); background: var(--red-wash); border-color: var(--red-soft); }
+ .pg-badge--success { color: var(--green-deep); background: var(--green-wash); border-color: var(--green-soft); }
+ .pg-badge--ink { color: var(--paper-0); background: var(--ink-1); border-color: var(--ink-1); }
+ .pg-badge--outline { color: var(--ink-2); background: transparent; border-color: var(--border-default); }
+ `;
+ document.head.appendChild(el);
+}
+
+/**
+ * Badge — a small engraved-label status marker (Stable, Beta, Deprecated, …).
+ */
+function Badge({
+ variant = 'neutral',
+ dot = false,
+ className = '',
+ children,
+ ...rest
+}) {
+ ensureStyles();
+ const cls = ['pg-badge', `pg-badge--${variant}`, className].filter(Boolean).join(' ');
+ return /*#__PURE__*/React.createElement("span", _extends({
+ className: cls
+ }, rest), dot ? /*#__PURE__*/React.createElement("span", {
+ className: "pg-badge__dot"
+ }) : null, children);
+}
+Object.assign(__ds_scope, { Badge });
+})(); } catch (e) { __ds_ns.__errors.push({ path: "components/core/Badge.jsx", error: String((e && e.message) || e) }); }
+
+// components/core/Button.jsx
+try { (() => {
+function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
+/* Injects the Button stylesheet once. Components in this system are
+ self-contained: they reference design tokens via CSS custom
+ properties and ship their own scoped CSS. */
+const STYLE_ID = 'pg-button-css';
+function ensureStyles() {
+ if (typeof document === 'undefined' || document.getElementById(STYLE_ID)) return;
+ const el = document.createElement('style');
+ el.id = STYLE_ID;
+ el.textContent = `
+ .pg-btn {
+ --_bg: var(--ink-1); --_fg: var(--paper-0); --_bd: var(--ink-1);
+ display: inline-flex; align-items: center; justify-content: center;
+ gap: var(--space-2); box-sizing: border-box;
+ font-family: var(--font-sans); font-weight: var(--weight-semibold);
+ line-height: 1; letter-spacing: 0.01em; white-space: nowrap;
+ background: var(--_bg); color: var(--_fg);
+ border: var(--border-medium) solid var(--_bd);
+ border-radius: var(--radius-sm);
+ cursor: pointer; text-decoration: none; user-select: none;
+ transition: background var(--dur-fast) var(--ease-out),
+ border-color var(--dur-fast) var(--ease-out),
+ transform var(--dur-fast) var(--ease-out),
+ box-shadow var(--dur-fast) var(--ease-out);
+ box-shadow: var(--shadow-xs);
+ }
+ .pg-btn:hover { background: var(--_bgh, var(--_bg)); border-color: var(--_bdh, var(--_bd)); }
+ .pg-btn:active { transform: translateY(1px); box-shadow: none; }
+ .pg-btn:focus-visible { outline: var(--border-thick) solid var(--focus-ring); outline-offset: 2px; }
+ .pg-btn[disabled] { cursor: not-allowed; opacity: 0.45; box-shadow: none; transform: none; }
+
+ .pg-btn--sm { font-size: var(--text-xs); padding: 6px 12px; }
+ .pg-btn--md { font-size: var(--text-sm); padding: 9px 16px; }
+ .pg-btn--lg { font-size: var(--text-base); padding: 12px 22px; }
+ .pg-btn--block { display: flex; width: 100%; }
+
+ .pg-btn--primary { --_bg: var(--ink-1); --_fg: var(--paper-0); --_bd: var(--ink-1); --_bgh: var(--ink-0); --_bdh: var(--ink-0); }
+ .pg-btn--accent { --_bg: var(--red); --_fg: var(--paper-0); --_bd: var(--red); --_bgh: var(--red-deep); --_bdh: var(--red-deep); }
+ .pg-btn--secondary { --_bg: var(--paper-0); --_fg: var(--ink-1); --_bd: var(--border-default); --_bgh: var(--paper-2); --_bdh: var(--ink-3); }
+ .pg-btn--ghost { --_bg: transparent; --_fg: var(--ink-1); --_bd: transparent; --_bgh: var(--paper-2); --_bdh: transparent; box-shadow: none; }
+ .pg-btn--danger { --_bg: transparent; --_fg: var(--red-deep); --_bd: var(--red); --_bgh: var(--red-wash); --_bdh: var(--red-deep); box-shadow: none; }
+ .pg-btn__icon { display: inline-flex; width: 1.05em; height: 1.05em; }
+ .pg-btn__icon svg { width: 100%; height: 100%; }
+ `;
+ document.head.appendChild(el);
+}
+
+/**
+ * Button — the primary action control. Machined edges, instrument palette.
+ */
+function Button({
+ variant = 'primary',
+ size = 'md',
+ block = false,
+ icon = null,
+ iconRight = null,
+ disabled = false,
+ as = 'button',
+ className = '',
+ children,
+ ...rest
+}) {
+ ensureStyles();
+ const Tag = as;
+ const cls = ['pg-btn', `pg-btn--${variant}`, `pg-btn--${size}`, block ? 'pg-btn--block' : '', className].filter(Boolean).join(' ');
+ return /*#__PURE__*/React.createElement(Tag, _extends({
+ className: cls,
+ disabled: Tag === 'button' ? disabled : undefined
+ }, rest), icon ? /*#__PURE__*/React.createElement("span", {
+ className: "pg-btn__icon"
+ }, icon) : null, children, iconRight ? /*#__PURE__*/React.createElement("span", {
+ className: "pg-btn__icon"
+ }, iconRight) : null);
+}
+Object.assign(__ds_scope, { Button });
+})(); } catch (e) { __ds_ns.__errors.push({ path: "components/core/Button.jsx", error: String((e && e.message) || e) }); }
+
+// components/core/Card.jsx
+try { (() => {
+function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
+const STYLE_ID = 'pg-card-css';
+function ensureStyles() {
+ if (typeof document === 'undefined' || document.getElementById(STYLE_ID)) return;
+ const el = document.createElement('style');
+ el.id = STYLE_ID;
+ el.textContent = `
+ .pg-card {
+ display: block; box-sizing: border-box;
+ background: var(--surface-card);
+ border: var(--border-thin) solid var(--border-hairline);
+ border-radius: var(--radius-md);
+ box-shadow: var(--shadow-sm);
+ overflow: hidden;
+ }
+ .pg-card--flat { box-shadow: none; }
+ .pg-card--sunken { background: var(--surface-sunken); box-shadow: var(--shadow-inset); border-color: var(--paper-3); }
+ .pg-card--interactive { cursor: pointer; transition: box-shadow var(--dur-base) var(--ease-out), transform var(--dur-base) var(--ease-out), border-color var(--dur-base) var(--ease-out); }
+ .pg-card--interactive:hover { box-shadow: var(--shadow-md); border-color: var(--border-default); transform: translateY(-1px); }
+ /* top engraved tick rule, like a scale edge */
+ .pg-card--ruled { border-top: var(--border-thick) solid var(--ink-1); }
+ .pg-card--ruled.pg-card--accent { border-top-color: var(--red); }
+
+ .pg-card__header {
+ display: flex; align-items: center; gap: var(--space-3);
+ padding: var(--space-4) var(--space-5);
+ border-bottom: var(--border-thin) solid var(--border-hairline);
+ }
+ .pg-card__title { font: var(--weight-semibold) var(--text-lg)/1.2 var(--font-sans); color: var(--text-strong); margin: 0; }
+ .pg-card__body { padding: var(--space-5); }
+ .pg-card__footer {
+ padding: var(--space-4) var(--space-5);
+ border-top: var(--border-thin) solid var(--border-hairline);
+ background: var(--paper-1);
+ display: flex; align-items: center; gap: var(--space-3);
+ }
+ `;
+ document.head.appendChild(el);
+}
+
+/**
+ * Card — the primary surface container. Header / body / footer are optional.
+ */
+function Card({
+ variant = 'default',
+ ruled = false,
+ interactive = false,
+ title = null,
+ actions = null,
+ footer = null,
+ className = '',
+ children,
+ ...rest
+}) {
+ ensureStyles();
+ const cls = ['pg-card', variant !== 'default' ? `pg-card--${variant}` : '', ruled ? 'pg-card--ruled' : '', interactive ? 'pg-card--interactive' : '', className].filter(Boolean).join(' ');
+ const hasHeader = title != null || actions != null;
+ return /*#__PURE__*/React.createElement("div", _extends({
+ className: cls
+ }, rest), hasHeader ? /*#__PURE__*/React.createElement("div", {
+ className: "pg-card__header"
+ }, title ? /*#__PURE__*/React.createElement("h3", {
+ className: "pg-card__title"
+ }, title) : null, actions ? /*#__PURE__*/React.createElement("div", {
+ style: {
+ marginLeft: 'auto',
+ display: 'flex',
+ gap: 'var(--space-2)'
+ }
+ }, actions) : null) : null, /*#__PURE__*/React.createElement("div", {
+ className: "pg-card__body"
+ }, children), footer ? /*#__PURE__*/React.createElement("div", {
+ className: "pg-card__footer"
+ }, footer) : null);
+}
+Object.assign(__ds_scope, { Card });
+})(); } catch (e) { __ds_ns.__errors.push({ path: "components/core/Card.jsx", error: String((e && e.message) || e) }); }
+
+// components/core/IconButton.jsx
+try { (() => {
+function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
+const STYLE_ID = 'pg-iconbutton-css';
+function ensureStyles() {
+ if (typeof document === 'undefined' || document.getElementById(STYLE_ID)) return;
+ const el = document.createElement('style');
+ el.id = STYLE_ID;
+ el.textContent = `
+ .pg-iconbtn {
+ display: inline-flex; align-items: center; justify-content: center;
+ box-sizing: border-box; padding: 0; cursor: pointer;
+ color: var(--ink-2); background: transparent;
+ border: var(--border-thin) solid transparent;
+ border-radius: var(--radius-sm);
+ transition: background var(--dur-fast) var(--ease-out),
+ color var(--dur-fast) var(--ease-out),
+ border-color var(--dur-fast) var(--ease-out),
+ transform var(--dur-fast) var(--ease-out);
+ }
+ .pg-iconbtn:hover { background: var(--paper-2); color: var(--ink-0); }
+ .pg-iconbtn:active { transform: translateY(1px); }
+ .pg-iconbtn:focus-visible { outline: var(--border-thick) solid var(--focus-ring); outline-offset: 2px; }
+ .pg-iconbtn[disabled] { cursor: not-allowed; opacity: 0.4; }
+ .pg-iconbtn--bordered { border-color: var(--border-default); background: var(--paper-0); }
+ .pg-iconbtn--bordered:hover { border-color: var(--ink-3); }
+ .pg-iconbtn--active { background: var(--paper-2); color: var(--red-deep); border-color: var(--border-default); }
+ .pg-iconbtn--sm { width: 28px; height: 28px; }
+ .pg-iconbtn--md { width: 36px; height: 36px; }
+ .pg-iconbtn--lg { width: 44px; height: 44px; }
+ .pg-iconbtn svg { width: 1.15em; height: 1.15em; display: block; }
+ .pg-iconbtn--sm svg { font-size: 15px; }
+ .pg-iconbtn--md svg { font-size: 18px; }
+ .pg-iconbtn--lg svg { font-size: 21px; }
+ `;
+ document.head.appendChild(el);
+}
+
+/**
+ * IconButton — a square, icon-only control for toolbars and dense UI.
+ */
+function IconButton({
+ size = 'md',
+ bordered = false,
+ active = false,
+ label,
+ disabled = false,
+ className = '',
+ children,
+ ...rest
+}) {
+ ensureStyles();
+ const cls = ['pg-iconbtn', `pg-iconbtn--${size}`, bordered ? 'pg-iconbtn--bordered' : '', active ? 'pg-iconbtn--active' : '', className].filter(Boolean).join(' ');
+ return /*#__PURE__*/React.createElement("button", _extends({
+ type: "button",
+ className: cls,
+ "aria-label": label,
+ title: label,
+ disabled: disabled
+ }, rest), children);
+}
+Object.assign(__ds_scope, { IconButton });
+})(); } catch (e) { __ds_ns.__errors.push({ path: "components/core/IconButton.jsx", error: String((e && e.message) || e) }); }
+
+// components/core/Tag.jsx
+try { (() => {
+function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
+const STYLE_ID = 'pg-tag-css';
+function ensureStyles() {
+ if (typeof document === 'undefined' || document.getElementById(STYLE_ID)) return;
+ const el = document.createElement('style');
+ el.id = STYLE_ID;
+ el.textContent = `
+ .pg-tag {
+ display: inline-flex; align-items: center; gap: 6px;
+ font-family: var(--font-mono); font-weight: var(--weight-medium);
+ font-size: var(--text-xs); line-height: 1; white-space: nowrap;
+ color: var(--ink-1); background: var(--paper-0);
+ padding: 5px 9px; border-radius: var(--radius-pill);
+ border: var(--border-thin) solid var(--border-default);
+ }
+ .pg-tag__dot { width: 7px; height: 7px; border-radius: var(--radius-pill); flex: none; background: var(--ink-3); }
+ .pg-tag--interactive { cursor: pointer; transition: border-color var(--dur-fast) var(--ease-out), background var(--dur-fast) var(--ease-out); }
+ .pg-tag--interactive:hover { border-color: var(--ink-3); background: var(--paper-2); }
+ .pg-tag__remove {
+ display: inline-flex; align-items: center; justify-content: center;
+ width: 14px; height: 14px; margin-right: -2px; padding: 0;
+ border: 0; background: none; cursor: pointer; color: var(--ink-3);
+ font-family: var(--font-sans); font-size: 14px; line-height: 1; border-radius: var(--radius-pill);
+ }
+ .pg-tag__remove:hover { color: var(--red); }
+ `;
+ document.head.appendChild(el);
+}
+
+/**
+ * Tag — a monospace chip for languages, keywords, and filters.
+ */
+function Tag({
+ dot = null,
+ onRemove = null,
+ interactive = false,
+ className = '',
+ children,
+ ...rest
+}) {
+ ensureStyles();
+ const cls = ['pg-tag', interactive || rest.onClick ? 'pg-tag--interactive' : '', className].filter(Boolean).join(' ');
+ return /*#__PURE__*/React.createElement("span", _extends({
+ className: cls
+ }, rest), dot ? /*#__PURE__*/React.createElement("span", {
+ className: "pg-tag__dot",
+ style: {
+ background: dot === true ? undefined : dot
+ }
+ }) : null, children, onRemove ? /*#__PURE__*/React.createElement("button", {
+ type: "button",
+ className: "pg-tag__remove",
+ "aria-label": "Remove",
+ onClick: e => {
+ e.stopPropagation();
+ onRemove(e);
+ }
+ }, "\xD7") : null);
+}
+Object.assign(__ds_scope, { Tag });
+})(); } catch (e) { __ds_ns.__errors.push({ path: "components/core/Tag.jsx", error: String((e && e.message) || e) }); }
+
+// components/forms/Input.jsx
+try { (() => {
+function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
+const STYLE_ID = 'pg-input-css';
+function ensureStyles() {
+ if (typeof document === 'undefined' || document.getElementById(STYLE_ID)) return;
+ const el = document.createElement('style');
+ el.id = STYLE_ID;
+ el.textContent = `
+ .pg-field { display: flex; flex-direction: column; gap: 6px; }
+ .pg-field__label {
+ font: var(--weight-semibold) var(--text-xs)/1 var(--font-display);
+ letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--ink-2);
+ }
+ .pg-field__req { color: var(--red); margin-left: 3px; }
+ .pg-input-wrap { position: relative; display: flex; align-items: center; }
+ .pg-input-wrap__icon {
+ position: absolute; left: 11px; display: inline-flex; color: var(--ink-3); pointer-events: none;
+ }
+ .pg-input-wrap__icon svg { width: 16px; height: 16px; }
+ .pg-input {
+ width: 100%; box-sizing: border-box;
+ font: var(--weight-regular) var(--text-sm)/1.4 var(--font-sans);
+ color: var(--ink-1); background: var(--paper-0);
+ border: var(--border-thin) solid var(--border-default);
+ border-radius: var(--radius-xs);
+ padding: 9px 12px;
+ transition: border-color var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out);
+ }
+ .pg-input--mono { font-family: var(--font-mono); }
+ .pg-input--has-icon { padding-left: 34px; }
+ .pg-input::placeholder { color: var(--text-placeholder); }
+ .pg-input:hover { border-color: var(--ink-4); }
+ .pg-input:focus { outline: none; border-color: var(--green); box-shadow: 0 0 0 3px var(--green-wash); }
+ .pg-input--invalid { border-color: var(--red); }
+ .pg-input--invalid:focus { border-color: var(--red); box-shadow: 0 0 0 3px var(--red-wash); }
+ .pg-input:disabled { background: var(--paper-2); color: var(--ink-3); cursor: not-allowed; }
+ .pg-field__hint { font: var(--weight-regular) var(--text-xs)/1.4 var(--font-sans); color: var(--ink-3); }
+ .pg-field__hint--error { color: var(--red-deep); }
+ `;
+ document.head.appendChild(el);
+}
+
+/**
+ * Input — single-line text field with optional label, icon, and validation.
+ */
+function Input({
+ label = null,
+ hint = null,
+ error = null,
+ icon = null,
+ mono = false,
+ required = false,
+ id,
+ className = '',
+ ...rest
+}) {
+ ensureStyles();
+ const inputId = id || (label ? `pg-in-${Math.random().toString(36).slice(2, 8)}` : undefined);
+ const cls = ['pg-input', mono ? 'pg-input--mono' : '', icon ? 'pg-input--has-icon' : '', error ? 'pg-input--invalid' : '', className].filter(Boolean).join(' ');
+ return /*#__PURE__*/React.createElement("div", {
+ className: "pg-field"
+ }, label ? /*#__PURE__*/React.createElement("label", {
+ className: "pg-field__label",
+ htmlFor: inputId
+ }, label, required ? /*#__PURE__*/React.createElement("span", {
+ className: "pg-field__req"
+ }, "*") : null) : null, /*#__PURE__*/React.createElement("div", {
+ className: "pg-input-wrap"
+ }, icon ? /*#__PURE__*/React.createElement("span", {
+ className: "pg-input-wrap__icon"
+ }, icon) : null, /*#__PURE__*/React.createElement("input", _extends({
+ id: inputId,
+ className: cls,
+ "aria-invalid": !!error
+ }, rest))), error ? /*#__PURE__*/React.createElement("span", {
+ className: "pg-field__hint pg-field__hint--error"
+ }, error) : hint ? /*#__PURE__*/React.createElement("span", {
+ className: "pg-field__hint"
+ }, hint) : null);
+}
+Object.assign(__ds_scope, { Input });
+})(); } catch (e) { __ds_ns.__errors.push({ path: "components/forms/Input.jsx", error: String((e && e.message) || e) }); }
+
+// components/forms/Select.jsx
+try { (() => {
+function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
+const STYLE_ID = 'pg-select-css';
+function ensureStyles() {
+ if (typeof document === 'undefined' || document.getElementById(STYLE_ID)) return;
+ const el = document.createElement('style');
+ el.id = STYLE_ID;
+ el.textContent = `
+ .pg-select-field { display: flex; flex-direction: column; gap: 6px; }
+ .pg-select-field__label {
+ font: var(--weight-semibold) var(--text-xs)/1 var(--font-display);
+ letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--ink-2);
+ }
+ .pg-select-wrap { position: relative; display: flex; align-items: center; }
+ .pg-select {
+ width: 100%; box-sizing: border-box; appearance: none;
+ font: var(--weight-regular) var(--text-sm)/1.4 var(--font-sans);
+ color: var(--ink-1); background: var(--paper-0);
+ border: var(--border-thin) solid var(--border-default);
+ border-radius: var(--radius-xs);
+ padding: 9px 34px 9px 12px; cursor: pointer;
+ transition: border-color var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out);
+ }
+ .pg-select:hover { border-color: var(--ink-4); }
+ .pg-select:focus { outline: none; border-color: var(--green); box-shadow: 0 0 0 3px var(--green-wash); }
+ .pg-select:disabled { background: var(--paper-2); color: var(--ink-3); cursor: not-allowed; }
+ .pg-select-wrap__chevron {
+ position: absolute; right: 11px; pointer-events: none; color: var(--ink-3);
+ width: 16px; height: 16px;
+ }
+ `;
+ document.head.appendChild(el);
+}
+
+/**
+ * Select — native dropdown styled to the system, with a custom chevron.
+ */
+function Select({
+ label = null,
+ options = [],
+ placeholder = null,
+ id,
+ className = '',
+ children,
+ ...rest
+}) {
+ ensureStyles();
+ const selId = id || (label ? `pg-sel-${Math.random().toString(36).slice(2, 8)}` : undefined);
+ return /*#__PURE__*/React.createElement("div", {
+ className: "pg-select-field"
+ }, label ? /*#__PURE__*/React.createElement("label", {
+ className: "pg-select-field__label",
+ htmlFor: selId
+ }, label) : null, /*#__PURE__*/React.createElement("div", {
+ className: "pg-select-wrap"
+ }, /*#__PURE__*/React.createElement("select", _extends({
+ id: selId,
+ className: ['pg-select', className].filter(Boolean).join(' ')
+ }, rest), placeholder ? /*#__PURE__*/React.createElement("option", {
+ value: "",
+ disabled: true
+ }, placeholder) : null, children, options.map(o => {
+ const value = typeof o === 'string' ? o : o.value;
+ const optLabel = typeof o === 'string' ? o : o.label;
+ return /*#__PURE__*/React.createElement("option", {
+ key: value,
+ value: value
+ }, optLabel);
+ })), /*#__PURE__*/React.createElement("svg", {
+ className: "pg-select-wrap__chevron",
+ viewBox: "0 0 24 24",
+ fill: "none",
+ stroke: "currentColor",
+ strokeWidth: "2",
+ strokeLinecap: "round",
+ strokeLinejoin: "round"
+ }, /*#__PURE__*/React.createElement("path", {
+ d: "m6 9 6 6 6-6"
+ }))));
+}
+Object.assign(__ds_scope, { Select });
+})(); } catch (e) { __ds_ns.__errors.push({ path: "components/forms/Select.jsx", error: String((e && e.message) || e) }); }
+
+// components/forms/Switch.jsx
+try { (() => {
+function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
+const STYLE_ID = 'pg-switch-css';
+function ensureStyles() {
+ if (typeof document === 'undefined' || document.getElementById(STYLE_ID)) return;
+ const el = document.createElement('style');
+ el.id = STYLE_ID;
+ el.textContent = `
+ .pg-switch { display: inline-flex; align-items: center; gap: 10px; cursor: pointer; user-select: none; }
+ .pg-switch input { position: absolute; opacity: 0; width: 0; height: 0; }
+ .pg-switch__track {
+ position: relative; flex: none; width: 38px; height: 22px;
+ background: var(--paper-3); border: var(--border-thin) solid var(--border-default);
+ border-radius: var(--radius-pill);
+ transition: background var(--dur-base) var(--ease-slide), border-color var(--dur-base) var(--ease-slide);
+ }
+ .pg-switch__thumb {
+ position: absolute; top: 2px; left: 2px; width: 16px; height: 16px;
+ background: var(--paper-0); border-radius: var(--radius-pill);
+ box-shadow: var(--shadow-sm);
+ transition: transform var(--dur-base) var(--ease-slide);
+ }
+ .pg-switch input:checked + .pg-switch__track { background: var(--green); border-color: var(--green-deep); }
+ .pg-switch input:checked + .pg-switch__track .pg-switch__thumb { transform: translateX(16px); }
+ .pg-switch input:focus-visible + .pg-switch__track { outline: var(--border-thick) solid var(--focus-ring); outline-offset: 2px; }
+ .pg-switch input:disabled + .pg-switch__track { opacity: 0.45; cursor: not-allowed; }
+ .pg-switch__label { font: var(--weight-regular) var(--text-sm)/1.3 var(--font-sans); color: var(--ink-1); }
+ `;
+ document.head.appendChild(el);
+}
+
+/**
+ * Switch — a toggle. The "on" state slides to instrument green.
+ */
+function Switch({
+ checked,
+ defaultChecked,
+ onChange,
+ disabled = false,
+ label = null,
+ id,
+ className = '',
+ ...rest
+}) {
+ ensureStyles();
+ const swId = id || `pg-sw-${Math.random().toString(36).slice(2, 8)}`;
+ return /*#__PURE__*/React.createElement("label", {
+ className: ['pg-switch', className].filter(Boolean).join(' '),
+ htmlFor: swId
+ }, /*#__PURE__*/React.createElement("input", _extends({
+ id: swId,
+ type: "checkbox",
+ checked: checked,
+ defaultChecked: defaultChecked,
+ onChange: onChange,
+ disabled: disabled
+ }, rest)), /*#__PURE__*/React.createElement("span", {
+ className: "pg-switch__track"
+ }, /*#__PURE__*/React.createElement("span", {
+ className: "pg-switch__thumb"
+ })), label ? /*#__PURE__*/React.createElement("span", {
+ className: "pg-switch__label"
+ }, label) : null);
+}
+Object.assign(__ds_scope, { Switch });
+})(); } catch (e) { __ds_ns.__errors.push({ path: "components/forms/Switch.jsx", error: String((e && e.message) || e) }); }
+
+// components/navigation/Tabs.jsx
+try { (() => {
+function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
+const STYLE_ID = 'pg-tabs-css';
+function ensureStyles() {
+ if (typeof document === 'undefined' || document.getElementById(STYLE_ID)) return;
+ const el = document.createElement('style');
+ el.id = STYLE_ID;
+ el.textContent = `
+ .pg-tabs { display: flex; align-items: stretch; gap: 2px; border-bottom: var(--border-thin) solid var(--border-hairline); }
+ .pg-tabs--pill { border-bottom: 0; gap: 4px; background: var(--paper-2); padding: 3px; border-radius: var(--radius-sm); width: max-content; }
+ .pg-tab {
+ display: inline-flex; align-items: center; gap: 7px;
+ font: var(--weight-medium) var(--text-sm)/1 var(--font-sans);
+ color: var(--ink-3); background: none; border: 0; cursor: pointer;
+ padding: 10px 14px; position: relative; white-space: nowrap;
+ transition: color var(--dur-fast) var(--ease-out);
+ }
+ .pg-tab:hover { color: var(--ink-1); }
+ .pg-tab__icon { display: inline-flex; width: 15px; height: 15px; }
+ .pg-tab__icon svg { width: 100%; height: 100%; }
+ /* underline indicator — the engraved cursor line */
+ .pg-tabs:not(.pg-tabs--pill) .pg-tab::after {
+ content: ''; position: absolute; left: 8px; right: 8px; bottom: -1px; height: 2px;
+ background: var(--red); transform: scaleX(0); transform-origin: center;
+ transition: transform var(--dur-base) var(--ease-slide);
+ }
+ .pg-tabs:not(.pg-tabs--pill) .pg-tab[aria-selected="true"] { color: var(--ink-0); font-weight: var(--weight-semibold); }
+ .pg-tabs:not(.pg-tabs--pill) .pg-tab[aria-selected="true"]::after { transform: scaleX(1); }
+ .pg-tab:focus-visible { outline: var(--border-thick) solid var(--focus-ring); outline-offset: -2px; border-radius: var(--radius-xs); }
+ /* pill variant */
+ .pg-tabs--pill .pg-tab { border-radius: var(--radius-xs); padding: 7px 13px; font-family: var(--font-mono); font-size: var(--text-xs); }
+ .pg-tabs--pill .pg-tab[aria-selected="true"] { background: var(--paper-0); color: var(--ink-0); box-shadow: var(--shadow-xs); }
+ `;
+ document.head.appendChild(el);
+}
+
+/**
+ * Tabs — segmented navigation. Default variant draws the engraved red cursor
+ * underline; `pill` variant is a compact monospace switch (e.g. language picker).
+ */
+function Tabs({
+ tabs = [],
+ value,
+ onChange,
+ variant = 'underline',
+ className = '',
+ ...rest
+}) {
+ ensureStyles();
+ const cls = ['pg-tabs', variant === 'pill' ? 'pg-tabs--pill' : '', className].filter(Boolean).join(' ');
+ return /*#__PURE__*/React.createElement("div", _extends({
+ className: cls,
+ role: "tablist"
+ }, rest), tabs.map(t => {
+ const id = typeof t === 'string' ? t : t.id;
+ const label = typeof t === 'string' ? t : t.label;
+ const icon = typeof t === 'string' ? null : t.icon;
+ const selected = id === value;
+ return /*#__PURE__*/React.createElement("button", {
+ key: id,
+ role: "tab",
+ "aria-selected": selected,
+ className: "pg-tab",
+ onClick: () => onChange && onChange(id)
+ }, icon ? /*#__PURE__*/React.createElement("span", {
+ className: "pg-tab__icon"
+ }, icon) : null, label);
+ }));
+}
+Object.assign(__ds_scope, { Tabs });
+})(); } catch (e) { __ds_ns.__errors.push({ path: "components/navigation/Tabs.jsx", error: String((e && e.message) || e) }); }
+
+// ui_kits/docs/App.jsx
+try { (() => {
+// App — composes the docs shell: header, sidebar, content, on-this-page TOC.
+(function () {
+ const React = window.React;
+ const TOC = [{
+ id: 'example',
+ label: 'Example'
+ }, {
+ id: 'parameters',
+ label: 'Parameters'
+ }, {
+ id: 'returns',
+ label: 'Returns'
+ }];
+ function App() {
+ const [active, setActive] = React.useState('complete()');
+ const [menuOpen, setMenuOpen] = React.useState(false);
+ return /*#__PURE__*/React.createElement("div", {
+ className: "dk-app"
+ }, /*#__PURE__*/React.createElement(window.DocsHeader, {
+ onMenu: () => setMenuOpen(v => !v)
+ }), /*#__PURE__*/React.createElement("div", {
+ className: "dk-shell"
+ }, /*#__PURE__*/React.createElement(window.DocsSidebar, {
+ active: active,
+ onSelect: it => {
+ setActive(it);
+ setMenuOpen(false);
+ },
+ open: menuOpen
+ }), menuOpen ? /*#__PURE__*/React.createElement("div", {
+ className: "dk-scrim",
+ onClick: () => setMenuOpen(false)
+ }) : null, /*#__PURE__*/React.createElement("main", {
+ className: "dk-main"
+ }, /*#__PURE__*/React.createElement(window.ReferencePage, null)), /*#__PURE__*/React.createElement("aside", {
+ className: "dk-toc"
+ }, /*#__PURE__*/React.createElement("p", {
+ className: "dk-toc__title"
+ }, "On this page"), /*#__PURE__*/React.createElement("ul", {
+ className: "dk-toc__list"
+ }, TOC.map(t => /*#__PURE__*/React.createElement("li", {
+ key: t.id
+ }, /*#__PURE__*/React.createElement("a", {
+ href: '#' + t.id,
+ className: "dk-toc__link"
+ }, t.label)))), /*#__PURE__*/React.createElement("div", {
+ className: "panto-tick-rule",
+ style: {
+ margin: 'var(--space-5) 0 var(--space-4)'
+ }
+ }), /*#__PURE__*/React.createElement("a", {
+ className: "dk-edit",
+ href: "#"
+ }, "Edit this page \u2192"))));
+ }
+ window.DocsApp = App;
+})();
+})(); } catch (e) { __ds_ns.__errors.push({ path: "ui_kits/docs/App.jsx", error: String((e && e.message) || e) }); }
+
+// ui_kits/docs/DocsHeader.jsx
+try { (() => {
+// Lucide-derived inline icons (ISC) + DocsHeader. Icons live here (a JSX file)
+// so the design-system compiler treats them as kit-local, not a bundle module.
+(function () {
+ const React = window.React;
+ const S = (paths, extra = {}) => props => React.createElement('svg', Object.assign({
+ viewBox: '0 0 24 24',
+ fill: 'none',
+ stroke: 'currentColor',
+ strokeWidth: 2,
+ strokeLinecap: 'round',
+ strokeLinejoin: 'round',
+ width: '1em',
+ height: '1em'
+ }, extra, props), paths.map((d, i) => React.createElement('path', {
+ key: i,
+ d
+ })));
+ const M = (children, extra = {}) => props => React.createElement('svg', Object.assign({
+ viewBox: '0 0 24 24',
+ fill: 'none',
+ stroke: 'currentColor',
+ strokeWidth: 2,
+ strokeLinecap: 'round',
+ strokeLinejoin: 'round',
+ width: '1em',
+ height: '1em'
+ }, extra, props), children(React));
+ window.Icons = {
+ Search: M(R => [R.createElement('circle', {
+ key: 0,
+ cx: 11,
+ cy: 11,
+ r: 8
+ }), R.createElement('path', {
+ key: 1,
+ d: 'm21 21-4.3-4.3'
+ })]),
+ ChevronRight: S(['m9 18 6-6-6-6']),
+ Hash: S(['M4 9h16', 'M4 15h16', 'M10 3 8 21', 'M16 3l-2 18']),
+ Book: S(['M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H20v20H6.5a2.5 2.5 0 0 1 0-5H20']),
+ Terminal: S(['m4 17 6-6-6-6', 'M12 19h8']),
+ Github: M(R => [R.createElement('path', {
+ key: 0,
+ d: 'M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 .5 5 .5 5 .5c-.3 1.15-.3 2.35 0 3.5A5.4 5.4 0 0 0 4 7.5c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4'
+ }), R.createElement('path', {
+ key: 1,
+ d: 'M9 18c-4.51 2-5-2-7-2'
+ })]),
+ Zap: S(['M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z']),
+ Boxes: S(['M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z', 'm7 16.5-4.74-2.85', 'm7 16.5 5-3', 'M7 16.5v5.17', 'M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z', 'm17 16.5-5-3', 'm17 16.5 4.74-2.85', 'M17 16.5v5.17', 'M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z', 'M12 8 7.26 5.15', 'm12 8 4.74-2.85', 'M12 13.5V8']),
+ Layers: S(['m12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83Z', 'M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12', 'M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17']),
+ Menu: S(['M4 12h16', 'M4 6h16', 'M4 18h16']),
+ Check: S(['M20 6 9 17l-5-5']),
+ Compass: M(R => [R.createElement('path', {
+ key: 0,
+ d: 'm16.24 7.76-1.804 5.411a2 2 0 0 1-1.265 1.265L7.76 16.24l1.804-5.411a2 2 0 0 1 1.265-1.265z'
+ }), R.createElement('circle', {
+ key: 1,
+ cx: 12,
+ cy: 12,
+ r: 10
+ })])
+ };
+})();
+
+// DocsHeader — top bar: logo lockup, primary nav, search, github.
+(function () {
+ const React = window.React;
+ const {
+ Badge,
+ IconButton
+ } = window.PantographDesignSystem_56a1c7;
+ const I = window.Icons;
+ function DocsHeader({
+ onMenu
+ }) {
+ return /*#__PURE__*/React.createElement("header", {
+ className: "dk-header"
+ }, /*#__PURE__*/React.createElement("div", {
+ className: "dk-header__left"
+ }, /*#__PURE__*/React.createElement("button", {
+ className: "dk-menu",
+ "aria-label": "Menu",
+ onClick: onMenu
+ }, /*#__PURE__*/React.createElement(I.Menu, null)), /*#__PURE__*/React.createElement("a", {
+ className: "dk-brand",
+ href: "#"
+ }, /*#__PURE__*/React.createElement("img", {
+ src: "../../assets/logo-mark.svg",
+ width: "28",
+ height: "28",
+ alt: ""
+ }), /*#__PURE__*/React.createElement("span", {
+ className: "dk-brand__word"
+ }, "pantograph"), /*#__PURE__*/React.createElement("span", {
+ className: "dk-brand__div"
+ }, "/"), /*#__PURE__*/React.createElement("span", {
+ className: "dk-brand__sub"
+ }, "libpanto")), /*#__PURE__*/React.createElement(Badge, {
+ variant: "outline"
+ }, "v2.4")), /*#__PURE__*/React.createElement("nav", {
+ className: "dk-nav"
+ }, /*#__PURE__*/React.createElement("a", {
+ href: "#",
+ className: "dk-nav__link"
+ }, "Guides"), /*#__PURE__*/React.createElement("a", {
+ href: "#",
+ className: "dk-nav__link dk-nav__link--active"
+ }, "Reference"), /*#__PURE__*/React.createElement("a", {
+ href: "#",
+ className: "dk-nav__link"
+ }, "CLI"), /*#__PURE__*/React.createElement("a", {
+ href: "#",
+ className: "dk-nav__link"
+ }, "Changelog")), /*#__PURE__*/React.createElement("div", {
+ className: "dk-header__right"
+ }, /*#__PURE__*/React.createElement("label", {
+ className: "dk-search"
+ }, /*#__PURE__*/React.createElement("span", {
+ className: "dk-search__icon"
+ }, /*#__PURE__*/React.createElement(I.Search, null)), /*#__PURE__*/React.createElement("input", {
+ className: "dk-search__input",
+ placeholder: "Search the docs"
+ }), /*#__PURE__*/React.createElement("kbd", {
+ className: "dk-search__kbd"
+ }, "/")), /*#__PURE__*/React.createElement(IconButton, {
+ label: "GitHub",
+ bordered: true
+ }, /*#__PURE__*/React.createElement(I.Github, null))));
+ }
+ window.DocsHeader = DocsHeader;
+})();
+})(); } catch (e) { __ds_ns.__errors.push({ path: "ui_kits/docs/DocsHeader.jsx", error: String((e && e.message) || e) }); }
+
+// ui_kits/docs/DocsSidebar.jsx
+try { (() => {
+// DocsSidebar — grouped navigation tree.
+(function () {
+ const React = window.React;
+ const I = window.Icons;
+ const NAV = [{
+ group: 'Getting Started',
+ items: ['Installation', 'Quickstart', 'Authentication']
+ }, {
+ group: 'Guides',
+ items: ['Streaming', 'Tool use', 'Structured output', 'Retries & timeouts']
+ }, {
+ group: 'Reference',
+ items: ['Client', 'complete()', 'respond()', 'Response', 'Errors']
+ }, {
+ group: 'CLI · panto',
+ items: ['panto run', 'panto chat', 'Configuration']
+ }];
+ function DocsSidebar({
+ active,
+ onSelect,
+ open
+ }) {
+ return /*#__PURE__*/React.createElement("aside", {
+ className: 'dk-sidebar' + (open ? ' dk-sidebar--open' : '')
+ }, /*#__PURE__*/React.createElement("div", {
+ className: "dk-sidebar__scroll"
+ }, NAV.map(sec => /*#__PURE__*/React.createElement("div", {
+ className: "dk-navsec",
+ key: sec.group
+ }, /*#__PURE__*/React.createElement("p", {
+ className: "dk-navsec__title"
+ }, sec.group), /*#__PURE__*/React.createElement("ul", {
+ className: "dk-navsec__list"
+ }, sec.items.map(it => /*#__PURE__*/React.createElement("li", {
+ key: it
+ }, /*#__PURE__*/React.createElement("a", {
+ href: "#",
+ className: 'dk-navsec__link' + (it === active ? ' dk-navsec__link--active' : ''),
+ onClick: e => {
+ e.preventDefault();
+ onSelect(it);
+ }
+ }, it))))))));
+ }
+ window.DocsSidebar = DocsSidebar;
+})();
+})(); } catch (e) { __ds_ns.__errors.push({ path: "ui_kits/docs/DocsSidebar.jsx", error: String((e && e.message) || e) }); }
+
+// ui_kits/docs/ReferencePage.jsx
+try { (() => {
+// ReferencePage — the main documentation view for client.complete().
+(function () {
+ const React = window.React;
+ const {
+ Badge,
+ Tag,
+ Tabs,
+ CodeBlock,
+ Callout,
+ Card
+ } = window.PantographDesignSystem_56a1c7;
+ const I = window.Icons;
+ const SAMPLES = {
+ python: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", {
+ className: "tok-kw"
+ }, "import"), " panto", "\n\n", "client = panto.", /*#__PURE__*/React.createElement("span", {
+ className: "tok-fn"
+ }, "Client"), "()", "\n", "resp = client.", /*#__PURE__*/React.createElement("span", {
+ className: "tok-fn"
+ }, "complete"), "(", "\n", " ", "prompt=", /*#__PURE__*/React.createElement("span", {
+ className: "tok-str"
+ }, "\"explain this stack trace\""), ",", "\n", " ", "model=", /*#__PURE__*/React.createElement("span", {
+ className: "tok-str"
+ }, "\"claude-sonnet\""), ",", "\n", " ", "max_tokens=", /*#__PURE__*/React.createElement("span", {
+ className: "tok-num"
+ }, "1024"), ",", "\n", ")", "\n", /*#__PURE__*/React.createElement("span", {
+ className: "tok-kw"
+ }, "print"), "(resp.text)"),
+ rust: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", {
+ className: "tok-kw"
+ }, "use"), " panto::Client;", "\n\n", /*#__PURE__*/React.createElement("span", {
+ className: "tok-kw"
+ }, "let"), " client = Client::", /*#__PURE__*/React.createElement("span", {
+ className: "tok-fn"
+ }, "new"), "()?;", "\n", /*#__PURE__*/React.createElement("span", {
+ className: "tok-kw"
+ }, "let"), " resp = client", "\n", " ", ".", /*#__PURE__*/React.createElement("span", {
+ className: "tok-fn"
+ }, "complete"), "(", /*#__PURE__*/React.createElement("span", {
+ className: "tok-str"
+ }, "\"explain this stack trace\""), ")", "\n", " ", ".", /*#__PURE__*/React.createElement("span", {
+ className: "tok-fn"
+ }, "model"), "(", /*#__PURE__*/React.createElement("span", {
+ className: "tok-str"
+ }, "\"claude-sonnet\""), ")", "\n", " ", ".", /*#__PURE__*/React.createElement("span", {
+ className: "tok-fn"
+ }, "max_tokens"), "(", /*#__PURE__*/React.createElement("span", {
+ className: "tok-num"
+ }, "1024"), ")", "\n", " ", ".", /*#__PURE__*/React.createElement("span", {
+ className: "tok-fn"
+ }, "send"), "().", /*#__PURE__*/React.createElement("span", {
+ className: "tok-kw"
+ }, "await"), "?;", "\n", /*#__PURE__*/React.createElement("span", {
+ className: "tok-fn"
+ }, "println!"), "(", /*#__PURE__*/React.createElement("span", {
+ className: "tok-str"
+ }, "\"", `{}`, "\""), ", resp.text);"),
+ typescript: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", {
+ className: "tok-kw"
+ }, "import"), " ", "{ Client }", " ", /*#__PURE__*/React.createElement("span", {
+ className: "tok-kw"
+ }, "from"), " ", /*#__PURE__*/React.createElement("span", {
+ className: "tok-str"
+ }, "\"panto\""), ";", "\n\n", /*#__PURE__*/React.createElement("span", {
+ className: "tok-kw"
+ }, "const"), " client = ", /*#__PURE__*/React.createElement("span", {
+ className: "tok-kw"
+ }, "new"), " ", /*#__PURE__*/React.createElement("span", {
+ className: "tok-fn"
+ }, "Client"), "();", "\n", /*#__PURE__*/React.createElement("span", {
+ className: "tok-kw"
+ }, "const"), " resp = ", /*#__PURE__*/React.createElement("span", {
+ className: "tok-kw"
+ }, "await"), " client.", /*#__PURE__*/React.createElement("span", {
+ className: "tok-fn"
+ }, "complete"), "(", "{", "\n", " ", "prompt: ", /*#__PURE__*/React.createElement("span", {
+ className: "tok-str"
+ }, "\"explain this stack trace\""), ",", "\n", " ", "model: ", /*#__PURE__*/React.createElement("span", {
+ className: "tok-str"
+ }, "\"claude-sonnet\""), ",", "\n", " ", "maxTokens: ", /*#__PURE__*/React.createElement("span", {
+ className: "tok-num"
+ }, "1024"), ",", "\n", "});", "\n", "console.", /*#__PURE__*/React.createElement("span", {
+ className: "tok-fn"
+ }, "log"), "(resp.text);")
+ };
+ const FILE = {
+ python: 'main.py',
+ rust: 'src/main.rs',
+ typescript: 'index.ts'
+ };
+ const PARAMS = [['prompt', 'string', 'required', 'The input message sent to the model.'], ['model', 'string', '"claude-sonnet"', 'Provider-agnostic model alias. Resolved per provider.'], ['max_tokens', 'int', '1024', 'Upper bound on generated tokens.'], ['stream', 'bool', 'false', 'Return an async iterator of deltas instead of a full Response.'], ['tools', 'Tool[]', '[]', 'Tool definitions the model may call.']];
+ function ReferencePage() {
+ const [lang, setLang] = React.useState('python');
+ return /*#__PURE__*/React.createElement("article", {
+ className: "dk-doc"
+ }, /*#__PURE__*/React.createElement("div", {
+ className: "dk-crumbs"
+ }, /*#__PURE__*/React.createElement("span", null, "Reference"), /*#__PURE__*/React.createElement(I.ChevronRight, null), /*#__PURE__*/React.createElement("span", {
+ className: "dk-crumbs__here"
+ }, "complete()")), /*#__PURE__*/React.createElement("p", {
+ className: "panto-eyebrow"
+ }, "SDK Reference"), /*#__PURE__*/React.createElement("h1", {
+ className: "dk-doc__h1"
+ }, "client.complete()"), /*#__PURE__*/React.createElement("div", {
+ className: "dk-doc__meta"
+ }, /*#__PURE__*/React.createElement(Badge, {
+ variant: "success",
+ dot: true
+ }, "Stable"), /*#__PURE__*/React.createElement(Badge, {
+ variant: "neutral"
+ }, "since v2.0"), /*#__PURE__*/React.createElement(Tag, {
+ dot: "#3572A5"
+ }, "python"), /*#__PURE__*/React.createElement(Tag, {
+ dot: "#DEA584"
+ }, "rust"), /*#__PURE__*/React.createElement(Tag, {
+ dot: "#3178C6"
+ }, "typescript")), /*#__PURE__*/React.createElement("p", {
+ className: "dk-lead"
+ }, "Send a single prompt and receive one complete response. The same call signature is reproduced across every binding \u2014 write it once, scale it to any language."), /*#__PURE__*/React.createElement("h2", {
+ className: "dk-h2",
+ id: "example"
+ }, "Example"), /*#__PURE__*/React.createElement("div", {
+ className: "dk-langbar"
+ }, /*#__PURE__*/React.createElement(Tabs, {
+ variant: "pill",
+ value: lang,
+ onChange: setLang,
+ tabs: ['python', 'rust', 'typescript']
+ })), /*#__PURE__*/React.createElement(CodeBlock, {
+ filename: FILE[lang],
+ language: lang
+ }, SAMPLES[lang]), /*#__PURE__*/React.createElement(Callout, {
+ variant: "tip"
+ }, "Set ", /*#__PURE__*/React.createElement("code", null, "PANTO_KEY"), " in your environment once. Every binding \u2014 and the ", /*#__PURE__*/React.createElement("code", null, "panto"), " CLI \u2014 reads it automatically."), /*#__PURE__*/React.createElement("h2", {
+ className: "dk-h2",
+ id: "parameters"
+ }, "Parameters"), /*#__PURE__*/React.createElement("div", {
+ className: "dk-table-wrap"
+ }, /*#__PURE__*/React.createElement("table", {
+ className: "dk-table"
+ }, /*#__PURE__*/React.createElement("thead", null, /*#__PURE__*/React.createElement("tr", null, /*#__PURE__*/React.createElement("th", null, "Name"), /*#__PURE__*/React.createElement("th", null, "Type"), /*#__PURE__*/React.createElement("th", null, "Default"), /*#__PURE__*/React.createElement("th", null, "Description"))), /*#__PURE__*/React.createElement("tbody", null, PARAMS.map(p => /*#__PURE__*/React.createElement("tr", {
+ key: p[0]
+ }, /*#__PURE__*/React.createElement("td", null, /*#__PURE__*/React.createElement("code", null, p[0])), /*#__PURE__*/React.createElement("td", null, /*#__PURE__*/React.createElement("span", {
+ className: "dk-type"
+ }, p[1])), /*#__PURE__*/React.createElement("td", null, p[2] === 'required' ? /*#__PURE__*/React.createElement(Badge, {
+ variant: "danger"
+ }, "required") : /*#__PURE__*/React.createElement("code", {
+ className: "dk-default"
+ }, p[2])), /*#__PURE__*/React.createElement("td", null, p[3])))))), /*#__PURE__*/React.createElement("h2", {
+ className: "dk-h2",
+ id: "returns"
+ }, "Returns"), /*#__PURE__*/React.createElement("p", {
+ className: "dk-body"
+ }, "A ", /*#__PURE__*/React.createElement("a", {
+ href: "#"
+ }, "Response"), " object with ", /*#__PURE__*/React.createElement("code", null, ".text"), ", ", /*#__PURE__*/React.createElement("code", null, ".usage"), ", and ", /*#__PURE__*/React.createElement("code", null, ".stop_reason"), ". When ", /*#__PURE__*/React.createElement("code", null, "stream=true"), ", returns an async iterator yielding ", /*#__PURE__*/React.createElement("code", null, "Delta"), " objects instead."), /*#__PURE__*/React.createElement(Callout, {
+ variant: "danger",
+ title: "Deprecated argument"
+ }, "The ", /*#__PURE__*/React.createElement("code", null, "temperature"), " float is removed in v3 \u2014 pass a", /*#__PURE__*/React.createElement("code", null, "Sampling"), " config instead. See the migration guide."));
+ }
+ window.ReferencePage = ReferencePage;
+})();
+})(); } catch (e) { __ds_ns.__errors.push({ path: "ui_kits/docs/ReferencePage.jsx", error: String((e && e.message) || e) }); }
+
+// ui_kits/home/Features.jsx
+try { (() => {
+// Features — a grid of capability cards.
+(function () {
+ const React = window.React;
+ const {
+ Card,
+ Badge
+ } = window.PantographDesignSystem_56a1c7;
+ const I = window.Icons;
+ const FEATURES = [{
+ icon: /*#__PURE__*/React.createElement(I.Boxes, null),
+ title: 'Provider-agnostic',
+ body: 'One client targets OpenAI, Anthropic, or a local model. Swap providers with a string — no rewrites.'
+ }, {
+ icon: /*#__PURE__*/React.createElement(I.Zap, null),
+ title: 'Streaming & tools',
+ body: 'First-class async iterators for token streams and a typed tool-use loop across every binding.'
+ }, {
+ icon: /*#__PURE__*/React.createElement(I.Layers, null),
+ title: 'Typed responses',
+ body: 'complete() returns a structured Response — text, usage, stop reason — not a raw string.'
+ }, {
+ icon: /*#__PURE__*/React.createElement(I.Terminal, null),
+ title: 'The panto agent',
+ body: 'A terminal coding agent built on libpanto — a minimal system prompt and tool set you can swap out entirely. Written in Zig, extended in Lua.'
+ }];
+ function Features() {
+ return /*#__PURE__*/React.createElement("section", {
+ className: "hm-features"
+ }, /*#__PURE__*/React.createElement("div", {
+ className: "hm-section-head"
+ }, /*#__PURE__*/React.createElement("p", {
+ className: "panto-eyebrow"
+ }, "Why pantograph"), /*#__PURE__*/React.createElement("h2", {
+ className: "hm-h2"
+ }, "A small instrument, precisely built.")), /*#__PURE__*/React.createElement("div", {
+ className: "hm-feature-grid"
+ }, FEATURES.map(f => /*#__PURE__*/React.createElement(Card, {
+ key: f.title,
+ className: "hm-feature"
+ }, /*#__PURE__*/React.createElement("span", {
+ className: "hm-feature__icon"
+ }, f.icon), /*#__PURE__*/React.createElement("h3", {
+ className: "hm-feature__title"
+ }, f.title), /*#__PURE__*/React.createElement("p", {
+ className: "hm-feature__body"
+ }, f.body)))));
+ }
+ window.Features = Features;
+})();
+})(); } catch (e) { __ds_ns.__errors.push({ path: "ui_kits/home/Features.jsx", error: String((e && e.message) || e) }); }
+
+// ui_kits/home/Hero.jsx
+try { (() => {
+// Hero — headline, install command, CTAs, and a live-looking terminal.
+(function () {
+ const React = window.React;
+ const {
+ Button,
+ Badge,
+ Terminal
+ } = window.PantographDesignSystem_56a1c7;
+ const I = window.Icons;
+ function CopyCommand({
+ text
+ }) {
+ const [done, setDone] = React.useState(false);
+ return /*#__PURE__*/React.createElement("button", {
+ className: "hm-cmd",
+ onClick: () => {
+ if (navigator.clipboard) navigator.clipboard.writeText(text);
+ setDone(true);
+ setTimeout(() => setDone(false), 1400);
+ }
+ }, /*#__PURE__*/React.createElement("span", {
+ className: "hm-cmd__prompt"
+ }, "$"), /*#__PURE__*/React.createElement("span", {
+ className: "hm-cmd__text"
+ }, text), /*#__PURE__*/React.createElement("span", {
+ className: 'hm-cmd__copy' + (done ? ' hm-cmd__copy--done' : '')
+ }, done ? /*#__PURE__*/React.createElement(I.Check, null) : /*#__PURE__*/React.createElement(I.Compass, null)));
+ }
+ function Hero() {
+ return /*#__PURE__*/React.createElement("section", {
+ className: "hm-hero"
+ }, /*#__PURE__*/React.createElement("div", {
+ className: "hm-hero__copy"
+ }, /*#__PURE__*/React.createElement("p", {
+ className: "panto-eyebrow"
+ }, "Open source \xB7 MIT \xB7 v2.4"), /*#__PURE__*/React.createElement("h1", {
+ className: "hm-hero__h1"
+ }, "Scale one prompt", /*#__PURE__*/React.createElement("br", null), "to every provider."), /*#__PURE__*/React.createElement("p", {
+ className: "hm-hero__lead"
+ }, /*#__PURE__*/React.createElement("strong", null, "libpanto"), " is a single, small set of motions \u2014 faithfully reproduced across OpenAI, Anthropic, and your local models. ", /*#__PURE__*/React.createElement("strong", null, "panto"), " ", "is the terminal coding agent built on top."), /*#__PURE__*/React.createElement(CopyCommand, {
+ text: "pip install panto"
+ }), /*#__PURE__*/React.createElement("div", {
+ className: "hm-hero__cta"
+ }, /*#__PURE__*/React.createElement(Button, {
+ variant: "accent",
+ size: "lg",
+ icon: /*#__PURE__*/React.createElement(I.Terminal, null)
+ }, "Get started"), /*#__PURE__*/React.createElement(Button, {
+ variant: "secondary",
+ size: "lg",
+ icon: /*#__PURE__*/React.createElement(I.Github, null)
+ }, "Star on GitHub")), /*#__PURE__*/React.createElement("div", {
+ className: "hm-hero__langs"
+ }, /*#__PURE__*/React.createElement("span", {
+ className: "hm-hero__langlabel"
+ }, "Bindings"), /*#__PURE__*/React.createElement("span", {
+ className: "hm-langdot",
+ style: {
+ background: '#3572A5'
+ }
+ }), "python", /*#__PURE__*/React.createElement("span", {
+ className: "hm-langdot",
+ style: {
+ background: '#DEA584'
+ }
+ }), "rust", /*#__PURE__*/React.createElement("span", {
+ className: "hm-langdot",
+ style: {
+ background: '#3178C6'
+ }
+ }), "typescript", /*#__PURE__*/React.createElement("span", {
+ className: "hm-hero__more"
+ }, "+ 1 in beta"))), /*#__PURE__*/React.createElement("div", {
+ className: "hm-hero__demo"
+ }, /*#__PURE__*/React.createElement(Terminal, {
+ title: "panto \xB7 run",
+ cursor: true,
+ lines: [{
+ type: 'cmd',
+ shell: 'shell',
+ text: 'panto run "add a --json flag to the export command"'
+ }, {
+ type: 'com',
+ text: '• indexed 41 files · 3 relevant'
+ }, {
+ type: 'cmd',
+ shell: 'panto',
+ text: "I'll add a --json flag and route output through the serializer."
+ }, {
+ type: 'out',
+ text: ' cli/export.py +18 −2'
+ }, {
+ type: 'out',
+ text: ' cli/__init__.py +3'
+ }, {
+ type: 'ok',
+ text: '✓ applied · 2 files changed in 0.3s'
+ }]
+ })));
+ }
+ window.Hero = Hero;
+})();
+})(); } catch (e) { __ds_ns.__errors.push({ path: "ui_kits/home/Hero.jsx", error: String((e && e.message) || e) }); }
+
+// ui_kits/home/HomeApp.jsx
+try { (() => {
+// HomeApp — composes the marketing page + footer.
+(function () {
+ const React = window.React;
+ function Footer() {
+ const COLS = [{
+ h: 'SDK',
+ items: ['Installation', 'Reference', 'Streaming', 'Tool use']
+ }, {
+ h: 'panto CLI',
+ items: ['Quickstart', 'Commands', 'Configuration']
+ }, {
+ h: 'Project',
+ items: ['GitHub', 'Changelog', 'Roadmap', 'License (MIT)']
+ }];
+ return /*#__PURE__*/React.createElement("footer", {
+ className: "hm-footer"
+ }, /*#__PURE__*/React.createElement("div", {
+ className: "hm-footer__inner"
+ }, /*#__PURE__*/React.createElement("div", {
+ className: "hm-footer__brand"
+ }, /*#__PURE__*/React.createElement("div", {
+ className: "hm-brand"
+ }, /*#__PURE__*/React.createElement("img", {
+ src: "../../assets/logo-mark.svg",
+ width: "28",
+ height: "28",
+ alt: ""
+ }), /*#__PURE__*/React.createElement("span", {
+ className: "hm-brand__word"
+ }, "pantograph")), /*#__PURE__*/React.createElement("p", {
+ className: "hm-footer__tag"
+ }, "Scale one prompt to every provider.")), COLS.map(c => /*#__PURE__*/React.createElement("div", {
+ className: "hm-footer__col",
+ key: c.h
+ }, /*#__PURE__*/React.createElement("p", {
+ className: "hm-footer__h"
+ }, c.h), c.items.map(it => /*#__PURE__*/React.createElement("a", {
+ key: it,
+ href: "#",
+ className: "hm-footer__link"
+ }, it))))), /*#__PURE__*/React.createElement("div", {
+ className: "hm-footer__bar"
+ }, /*#__PURE__*/React.createElement("span", null, "\xA9 2026 the pantograph authors"), /*#__PURE__*/React.createElement("span", {
+ className: "hm-footer__mono"
+ }, "built with libpanto")));
+ }
+ function HomeApp() {
+ return /*#__PURE__*/React.createElement("div", {
+ className: "hm-app"
+ }, /*#__PURE__*/React.createElement(window.HomeHeader, null), /*#__PURE__*/React.createElement("main", null, /*#__PURE__*/React.createElement(window.Hero, null), /*#__PURE__*/React.createElement("div", {
+ className: "hm-ruler",
+ "aria-hidden": "true"
+ }), /*#__PURE__*/React.createElement(window.InstallSection, null), /*#__PURE__*/React.createElement(window.Features, null)), /*#__PURE__*/React.createElement(Footer, null));
+ }
+ window.HomeApp = HomeApp;
+})();
+})(); } catch (e) { __ds_ns.__errors.push({ path: "ui_kits/home/HomeApp.jsx", error: String((e && e.message) || e) }); }
+
+// ui_kits/home/HomeHeader.jsx
+try { (() => {
+// Lucide-derived inline icons (ISC) + HomeHeader. Icons live here (a JSX file)
+// so the design-system compiler treats them as kit-local, not a bundle module.
+(function () {
+ const React = window.React;
+ const S = (paths, extra = {}) => props => React.createElement('svg', Object.assign({
+ viewBox: '0 0 24 24',
+ fill: 'none',
+ stroke: 'currentColor',
+ strokeWidth: 2,
+ strokeLinecap: 'round',
+ strokeLinejoin: 'round',
+ width: '1em',
+ height: '1em'
+ }, extra, props), paths.map((d, i) => React.createElement('path', {
+ key: i,
+ d
+ })));
+ const M = (children, extra = {}) => props => React.createElement('svg', Object.assign({
+ viewBox: '0 0 24 24',
+ fill: 'none',
+ stroke: 'currentColor',
+ strokeWidth: 2,
+ strokeLinecap: 'round',
+ strokeLinejoin: 'round',
+ width: '1em',
+ height: '1em'
+ }, extra, props), children(React));
+ window.Icons = {
+ ChevronRight: S(['m9 18 6-6-6-6']),
+ Book: S(['M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H20v20H6.5a2.5 2.5 0 0 1 0-5H20']),
+ Terminal: S(['m4 17 6-6-6-6', 'M12 19h8']),
+ Github: M(R => [R.createElement('path', {
+ key: 0,
+ d: 'M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 .5 5 .5 5 .5c-.3 1.15-.3 2.35 0 3.5A5.4 5.4 0 0 0 4 7.5c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4'
+ }), R.createElement('path', {
+ key: 1,
+ d: 'M9 18c-4.51 2-5-2-7-2'
+ })]),
+ Zap: S(['M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z']),
+ Boxes: S(['M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z', 'm7 16.5-4.74-2.85', 'm7 16.5 5-3', 'M7 16.5v5.17', 'M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z', 'm17 16.5-5-3', 'm17 16.5 4.74-2.85', 'M17 16.5v5.17', 'M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z', 'M12 8 7.26 5.15', 'm12 8 4.74-2.85', 'M12 13.5V8']),
+ Layers: S(['m12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83Z', 'M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12', 'M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17']),
+ Check: S(['M20 6 9 17l-5-5']),
+ Compass: M(R => [R.createElement('path', {
+ key: 0,
+ d: 'm16.24 7.76-1.804 5.411a2 2 0 0 1-1.265 1.265L7.76 16.24l1.804-5.411a2 2 0 0 1 1.265-1.265z'
+ }), R.createElement('circle', {
+ key: 1,
+ cx: 12,
+ cy: 12,
+ r: 10
+ })])
+ };
+})();
+
+// HomeHeader — marketing top bar.
+(function () {
+ const React = window.React;
+ const {
+ Button
+ } = window.PantographDesignSystem_56a1c7;
+ const I = window.Icons;
+ function HomeHeader() {
+ return /*#__PURE__*/React.createElement("header", {
+ className: "hm-header"
+ }, /*#__PURE__*/React.createElement("a", {
+ className: "hm-brand",
+ href: "#"
+ }, /*#__PURE__*/React.createElement("img", {
+ src: "../../assets/logo-mark.svg",
+ width: "30",
+ height: "30",
+ alt: ""
+ }), /*#__PURE__*/React.createElement("span", {
+ className: "hm-brand__word"
+ }, "pantograph")), /*#__PURE__*/React.createElement("nav", {
+ className: "hm-nav"
+ }, /*#__PURE__*/React.createElement("a", {
+ href: "#",
+ className: "hm-nav__link"
+ }, "Docs"), /*#__PURE__*/React.createElement("a", {
+ href: "#",
+ className: "hm-nav__link"
+ }, "SDK"), /*#__PURE__*/React.createElement("a", {
+ href: "#",
+ className: "hm-nav__link"
+ }, "CLI"), /*#__PURE__*/React.createElement("a", {
+ href: "#",
+ className: "hm-nav__link"
+ }, "Blog")), /*#__PURE__*/React.createElement("div", {
+ className: "hm-header__right"
+ }, /*#__PURE__*/React.createElement("a", {
+ href: "#",
+ className: "hm-stars"
+ }, /*#__PURE__*/React.createElement(I.Github, null), " 14.2k"), /*#__PURE__*/React.createElement(Button, {
+ variant: "primary",
+ size: "sm",
+ icon: /*#__PURE__*/React.createElement(I.Book, null)
+ }, "Read the docs")));
+ }
+ window.HomeHeader = HomeHeader;
+})();
+})(); } catch (e) { __ds_ns.__errors.push({ path: "ui_kits/home/HomeHeader.jsx", error: String((e && e.message) || e) }); }
+
+// ui_kits/home/InstallSection.jsx
+try { (() => {
+// InstallSection — "same call, every language" with a language switcher.
+(function () {
+ const React = window.React;
+ const {
+ Tabs,
+ CodeBlock
+ } = window.PantographDesignSystem_56a1c7;
+ const INSTALL = {
+ python: 'pip install panto',
+ rust: 'cargo add panto',
+ typescript: 'npm install panto'
+ };
+ const FILE = {
+ python: 'main.py',
+ rust: 'src/main.rs',
+ typescript: 'index.ts'
+ };
+ const CODE = {
+ python: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", {
+ className: "tok-kw"
+ }, "import"), " panto", "\n\n", "resp = panto.", /*#__PURE__*/React.createElement("span", {
+ className: "tok-fn"
+ }, "Client"), "().", /*#__PURE__*/React.createElement("span", {
+ className: "tok-fn"
+ }, "complete"), "(", /*#__PURE__*/React.createElement("span", {
+ className: "tok-str"
+ }, "\"name three uses for a pantograph\""), ")", "\n", /*#__PURE__*/React.createElement("span", {
+ className: "tok-kw"
+ }, "print"), "(resp.text)"),
+ rust: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", {
+ className: "tok-kw"
+ }, "use"), " panto::Client;", "\n\n", /*#__PURE__*/React.createElement("span", {
+ className: "tok-kw"
+ }, "let"), " resp = Client::", /*#__PURE__*/React.createElement("span", {
+ className: "tok-fn"
+ }, "new"), "()?", "\n", " ", ".", /*#__PURE__*/React.createElement("span", {
+ className: "tok-fn"
+ }, "complete"), "(", /*#__PURE__*/React.createElement("span", {
+ className: "tok-str"
+ }, "\"name three uses for a pantograph\""), ")", "\n", " ", ".", /*#__PURE__*/React.createElement("span", {
+ className: "tok-fn"
+ }, "send"), "().", /*#__PURE__*/React.createElement("span", {
+ className: "tok-kw"
+ }, "await"), "?;", "\n", /*#__PURE__*/React.createElement("span", {
+ className: "tok-fn"
+ }, "println!"), "(", /*#__PURE__*/React.createElement("span", {
+ className: "tok-str"
+ }, "\"", `{}`, "\""), ", resp.text);"),
+ typescript: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", {
+ className: "tok-kw"
+ }, "import"), " ", "{ Client }", " ", /*#__PURE__*/React.createElement("span", {
+ className: "tok-kw"
+ }, "from"), " ", /*#__PURE__*/React.createElement("span", {
+ className: "tok-str"
+ }, "\"panto\""), ";", "\n\n", /*#__PURE__*/React.createElement("span", {
+ className: "tok-kw"
+ }, "const"), " resp = ", /*#__PURE__*/React.createElement("span", {
+ className: "tok-kw"
+ }, "await"), " ", /*#__PURE__*/React.createElement("span", {
+ className: "tok-kw"
+ }, "new"), " ", /*#__PURE__*/React.createElement("span", {
+ className: "tok-fn"
+ }, "Client"), "()", "\n", " ", ".", /*#__PURE__*/React.createElement("span", {
+ className: "tok-fn"
+ }, "complete"), "(", /*#__PURE__*/React.createElement("span", {
+ className: "tok-str"
+ }, "\"name three uses for a pantograph\""), ");", "\n", "console.", /*#__PURE__*/React.createElement("span", {
+ className: "tok-fn"
+ }, "log"), "(resp.text);")
+ };
+ function InstallSection() {
+ const [lang, setLang] = React.useState('python');
+ return /*#__PURE__*/React.createElement("section", {
+ className: "hm-install"
+ }, /*#__PURE__*/React.createElement("div", {
+ className: "hm-section-head"
+ }, /*#__PURE__*/React.createElement("p", {
+ className: "panto-eyebrow"
+ }, "The SDK"), /*#__PURE__*/React.createElement("h2", {
+ className: "hm-h2"
+ }, "Same call, every language."), /*#__PURE__*/React.createElement("p", {
+ className: "hm-section-sub"
+ }, "The signature doesn't change when the language does. Learn it once.")), /*#__PURE__*/React.createElement("div", {
+ className: "hm-install__panel"
+ }, /*#__PURE__*/React.createElement("div", {
+ className: "hm-install__tabs"
+ }, /*#__PURE__*/React.createElement(Tabs, {
+ variant: "pill",
+ value: lang,
+ onChange: setLang,
+ tabs: ['python', 'rust', 'typescript']
+ })), /*#__PURE__*/React.createElement(CodeBlock, {
+ filename: "install",
+ language: "shell",
+ showBar: true,
+ code: INSTALL[lang]
+ }), /*#__PURE__*/React.createElement(CodeBlock, {
+ filename: FILE[lang],
+ language: lang
+ }, CODE[lang])));
+ }
+ window.InstallSection = InstallSection;
+})();
+})(); } catch (e) { __ds_ns.__errors.push({ path: "ui_kits/home/InstallSection.jsx", error: String((e && e.message) || e) }); }
+
+__ds_ns.Callout = __ds_scope.Callout;
+
+__ds_ns.CodeBlock = __ds_scope.CodeBlock;
+
+__ds_ns.Terminal = __ds_scope.Terminal;
+
+__ds_ns.Badge = __ds_scope.Badge;
+
+__ds_ns.Button = __ds_scope.Button;
+
+__ds_ns.Card = __ds_scope.Card;
+
+__ds_ns.IconButton = __ds_scope.IconButton;
+
+__ds_ns.Tag = __ds_scope.Tag;
+
+__ds_ns.Input = __ds_scope.Input;
+
+__ds_ns.Select = __ds_scope.Select;
+
+__ds_ns.Switch = __ds_scope.Switch;
+
+__ds_ns.Tabs = __ds_scope.Tabs;
+
+})();