@misoto22/folio 0.16.0 → 0.17.1
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/dist/agent/Accordion.md +1 -1
- package/dist/agent/Actions.md +1 -1
- package/dist/agent/Alert.md +1 -1
- package/dist/agent/AppShell.md +1 -1
- package/dist/agent/ArchitectureFigure.md +1 -1
- package/dist/agent/AreaChart.md +1 -1
- package/dist/agent/Article.md +1 -1
- package/dist/agent/AspectRatio.md +1 -1
- package/dist/agent/Avatar.md +1 -1
- package/dist/agent/Badge.md +1 -1
- package/dist/agent/BarChart.md +1 -1
- package/dist/agent/BarList.md +1 -1
- package/dist/agent/BigNumber.md +1 -1
- package/dist/agent/BoxPlot.md +1 -1
- package/dist/agent/Breadcrumb.md +1 -1
- package/dist/agent/BulletChart.md +1 -1
- package/dist/agent/Button.md +1 -1
- package/dist/agent/Calendar.md +1 -1
- package/dist/agent/CalendarHeatmap.md +1 -1
- package/dist/agent/Card.md +1 -1
- package/dist/agent/Checkbox.md +1 -1
- package/dist/agent/Code.md +1 -1
- package/dist/agent/CodeBlock.md +1 -1
- package/dist/agent/Collapsible.md +1 -1
- package/dist/agent/Collection.md +1 -1
- package/dist/agent/ColorPicker.md +1 -1
- package/dist/agent/Combobox.md +1 -1
- package/dist/agent/Command.md +1 -1
- package/dist/agent/ComposedChart.md +1 -1
- package/dist/agent/Contact.md +1 -1
- package/dist/agent/Content.md +1 -1
- package/dist/agent/ContextMenu.md +1 -1
- package/dist/agent/Conversation.md +1 -1
- package/dist/agent/DataflowFigure.md +1 -1
- package/dist/agent/DatePicker.md +1 -1
- package/dist/agent/DescriptionList.md +1 -1
- package/dist/agent/Diagram.md +1 -1
- package/dist/agent/DiagramCanvas.md +1 -1
- package/dist/agent/DiagramExportMenu.md +1 -1
- package/dist/agent/DiagramInspector.md +1 -1
- package/dist/agent/DiagramLegend.md +1 -1
- package/dist/agent/DiagramMinimap.md +1 -1
- package/dist/agent/DiagramToolbar.md +1 -1
- package/dist/agent/Dialog.md +1 -1
- package/dist/agent/DropdownMenu.md +1 -1
- package/dist/agent/EmptyState.md +1 -1
- package/dist/agent/ErrorState.md +1 -1
- package/dist/agent/Evidence.md +1 -1
- package/dist/agent/Facet.md +1 -1
- package/dist/agent/Field.md +1 -1
- package/dist/agent/FigureBand.md +1 -1
- package/dist/agent/FloatingIconButton.md +1 -1
- package/dist/agent/FunnelChart.md +1 -1
- package/dist/agent/Heading.md +1 -1
- package/dist/agent/Heatmap.md +1 -1
- package/dist/agent/Histogram.md +1 -1
- package/dist/agent/Input.md +1 -1
- package/dist/agent/Kbd.md +1 -1
- package/dist/agent/LifecycleFigure.md +1 -1
- package/dist/agent/LineChart.md +1 -1
- package/dist/agent/LinkArrow.md +1 -1
- package/dist/agent/Markdown.md +1 -1
- package/dist/agent/Media.md +1 -1
- package/dist/agent/Metric.md +1 -1
- package/dist/agent/Metrics.md +1 -1
- package/dist/agent/Music.md +1 -1
- package/dist/agent/NativeSelect.md +1 -1
- package/dist/agent/NavItem.md +1 -1
- package/dist/agent/NumberField.md +1 -1
- package/dist/agent/PageHeader.md +1 -1
- package/dist/agent/Pagination.md +1 -1
- package/dist/agent/PieChart.md +1 -1
- package/dist/agent/Popover.md +1 -1
- package/dist/agent/Portfolio.md +1 -1
- package/dist/agent/PortfolioIndex.md +1 -1
- package/dist/agent/Progress.md +1 -1
- package/dist/agent/RadarChart.md +1 -1
- package/dist/agent/RadialChart.md +1 -1
- package/dist/agent/RadioGroup.md +1 -1
- package/dist/agent/Reading.md +1 -1
- package/dist/agent/Recovery.md +1 -1
- package/dist/agent/SankeyChart.md +1 -1
- package/dist/agent/ScatterChart.md +1 -1
- package/dist/agent/ScrollArea.md +1 -1
- package/dist/agent/SearchPalette.md +1 -1
- package/dist/agent/SearchableMenu.md +1 -1
- package/dist/agent/Select.md +1 -1
- package/dist/agent/Separator.md +1 -1
- package/dist/agent/SequenceFigure.md +1 -1
- package/dist/agent/Sheet.md +1 -1
- package/dist/agent/Sidebar.md +1 -1
- package/dist/agent/SiteNavigation.md +1 -1
- package/dist/agent/SiteShell.md +1 -1
- package/dist/agent/Skeleton.md +1 -1
- package/dist/agent/Slider.md +1 -1
- package/dist/agent/Sparkline.md +1 -1
- package/dist/agent/Spinner.md +1 -1
- package/dist/agent/StatusDot.md +1 -1
- package/dist/agent/StatusPill.md +1 -1
- package/dist/agent/Steps.md +1 -1
- package/dist/agent/Switch.md +1 -1
- package/dist/agent/Table.md +1 -1
- package/dist/agent/Tabs.md +1 -1
- package/dist/agent/Tag.md +1 -1
- package/dist/agent/Text.md +1 -1
- package/dist/agent/Textarea.md +1 -1
- package/dist/agent/Timeline.md +1 -1
- package/dist/agent/Timestamp.md +1 -1
- package/dist/agent/Toast.md +1 -1
- package/dist/agent/ToggleGroup.md +1 -1
- package/dist/agent/Toolbar.md +1 -1
- package/dist/agent/Tooltip.md +1 -1
- package/dist/agent/TreemapChart.md +1 -1
- package/dist/agent/WaterfallChart.md +1 -1
- package/dist/agent/Workbench.md +142 -0
- package/dist/agent/WorkflowFigure.md +1 -1
- package/dist/agent/catalog.json +51 -2
- package/dist/agent/index.md +6 -3
- package/dist/article.css +1 -1
- package/dist/components/Badge/Badge.js +1 -1
- package/dist/components/Badge/Badge.js.map +1 -1
- package/dist/components/Button/Button.js +1 -1
- package/dist/components/Button/Button.js.map +1 -1
- package/dist/components/FigureBand/FigureBand.js +1 -1
- package/dist/components/FigureBand/FigureBand.js.map +1 -1
- package/dist/components/Heading/Heading.js +1 -1
- package/dist/components/Heading/Heading.js.map +1 -1
- package/dist/components/Pagination/Pagination.js +2 -2
- package/dist/components/Pagination/Pagination.js.map +1 -1
- package/dist/components/Table/Table.js +1 -1
- package/dist/components/Table/Table.js.map +1 -1
- package/dist/components/Tag/Tag.js +3 -3
- package/dist/components/Tag/Tag.js.map +1 -1
- package/dist/components/Text/Text.js +2 -2
- package/dist/components/Text/Text.js.map +1 -1
- package/dist/components/ToggleGroup/ToggleGroup.js +2 -2
- package/dist/components/ToggleGroup/ToggleGroup.js.map +1 -1
- package/dist/semantic.css +9 -0
- package/dist/styles.css +1 -1
- package/dist/themes.css +99 -0
- package/dist/tokens.css +29 -2
- package/dist/tokens.d.ts +9 -0
- package/dist/tokens.js +51 -2
- package/dist/tokens.json +51 -2
- package/dist/website/Workbench/Chronology.d.ts +32 -0
- package/dist/website/Workbench/Chronology.js +32 -0
- package/dist/website/Workbench/Chronology.js.map +1 -0
- package/dist/website/Workbench/ContactRow.d.ts +13 -0
- package/dist/website/Workbench/ContactRow.js +11 -0
- package/dist/website/Workbench/ContactRow.js.map +1 -0
- package/dist/website/Workbench/PhotoMosaic.d.ts +13 -0
- package/dist/website/Workbench/PhotoMosaic.js +15 -0
- package/dist/website/Workbench/PhotoMosaic.js.map +1 -0
- package/dist/website/Workbench/Reveal.d.ts +19 -0
- package/dist/website/Workbench/Reveal.js +29 -0
- package/dist/website/Workbench/Reveal.js.map +1 -0
- package/dist/website/Workbench/ToolStrip.d.ts +18 -0
- package/dist/website/Workbench/ToolStrip.js +15 -0
- package/dist/website/Workbench/ToolStrip.js.map +1 -0
- package/dist/website/Workbench/Workbench.d.ts +23 -0
- package/dist/website/Workbench/Workbench.js +22 -0
- package/dist/website/Workbench/Workbench.js.map +1 -0
- package/dist/website/Workbench/WorkbenchCard.d.ts +29 -0
- package/dist/website/Workbench/WorkbenchCard.js +21 -0
- package/dist/website/Workbench/WorkbenchCard.js.map +1 -0
- package/dist/website/Workbench/WorkbenchEntries.d.ts +22 -0
- package/dist/website/Workbench/WorkbenchEntries.js +24 -0
- package/dist/website/Workbench/WorkbenchEntries.js.map +1 -0
- package/dist/website/Workbench/WorkbenchFigure.d.ts +20 -0
- package/dist/website/Workbench/WorkbenchFigure.js +15 -0
- package/dist/website/Workbench/WorkbenchFigure.js.map +1 -0
- package/dist/website/Workbench/WorkbenchHero.d.ts +24 -0
- package/dist/website/Workbench/WorkbenchHero.js +24 -0
- package/dist/website/Workbench/WorkbenchHero.js.map +1 -0
- package/dist/website/Workbench/theme.d.ts +22 -0
- package/dist/website/Workbench/theme.js +12 -0
- package/dist/website/Workbench/theme.js.map +1 -0
- package/dist/website/index.d.ts +11 -0
- package/dist/website/index.js +11 -0
- package/dist/website/index.js.map +1 -1
- package/dist/website-collection.css +8 -8
- package/dist/website-contact.css +9 -3
- package/dist/website-content.css +4 -1
- package/dist/website-conversation.css +6 -6
- package/dist/website-evidence.css +1 -1
- package/dist/website-media.css +13 -13
- package/dist/website-metrics.css +1 -1
- package/dist/website-music.css +1 -1
- package/dist/website-portfolio.css +4 -4
- package/dist/website-reading.css +13 -13
- package/dist/website-recovery.css +1 -1
- package/dist/website-shell.css +1 -1
- package/dist/website-timeline.css +3 -3
- package/dist/website-workbench.css +162 -0
- package/dist/website.css +1 -0
- package/package.json +1 -1
- package/skills/folio-design/rules/tokens.md +4 -2
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
|
|
4
|
+
interface WorkbenchSectionProps {
|
|
5
|
+
/** The heading's first, ink-coloured clause. */
|
|
6
|
+
title: ReactNode;
|
|
7
|
+
/** The muted continuation that follows the title in the same line. */
|
|
8
|
+
lead?: ReactNode;
|
|
9
|
+
/** One accent link under the heading, such as "All projects →". */
|
|
10
|
+
action?: ReactNode;
|
|
11
|
+
/** Heading level; sections on a page are h2. */
|
|
12
|
+
level?: 2 | 3;
|
|
13
|
+
id?: string;
|
|
14
|
+
children: ReactNode;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* The Workbench section: a hairline, a two-tone heading in the first four
|
|
18
|
+
* columns, and the content on an eight-column subgrid beside it. Every section
|
|
19
|
+
* on a Workbench page uses this one rhythm, which is what keeps them aligned.
|
|
20
|
+
*/
|
|
21
|
+
declare function WorkbenchSection({ title, lead, action, level, id, children }: WorkbenchSectionProps): react.JSX.Element;
|
|
22
|
+
|
|
23
|
+
export { WorkbenchSection, type WorkbenchSectionProps };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Reveal } from "./Reveal.js";
|
|
3
|
+
function WorkbenchSection({ title, lead, action, level = 2, id, children }) {
|
|
4
|
+
const Heading = level === 2 ? "h2" : "h3";
|
|
5
|
+
return /* @__PURE__ */ jsx(Reveal, { children: /* @__PURE__ */ jsxs("section", { className: "folio-wb-section", id, children: [
|
|
6
|
+
/* @__PURE__ */ jsxs("div", { className: "folio-wb-section-head", children: [
|
|
7
|
+
/* @__PURE__ */ jsxs(Heading, { className: "folio-wb-heading", children: [
|
|
8
|
+
/* @__PURE__ */ jsx("span", { children: title }),
|
|
9
|
+
lead && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
10
|
+
" ",
|
|
11
|
+
/* @__PURE__ */ jsx("span", { className: "folio-wb-heading-lead", children: lead })
|
|
12
|
+
] })
|
|
13
|
+
] }),
|
|
14
|
+
action && /* @__PURE__ */ jsx("div", { className: "folio-wb-section-action", children: action })
|
|
15
|
+
] }),
|
|
16
|
+
/* @__PURE__ */ jsx("div", { className: "folio-wb-section-body", children })
|
|
17
|
+
] }) });
|
|
18
|
+
}
|
|
19
|
+
export {
|
|
20
|
+
WorkbenchSection
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=Workbench.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/website/Workbench/Workbench.tsx"],"sourcesContent":["import type { ReactNode } from 'react'\nimport { Reveal } from './Reveal'\n\nexport interface WorkbenchSectionProps {\n /** The heading's first, ink-coloured clause. */\n title: ReactNode\n /** The muted continuation that follows the title in the same line. */\n lead?: ReactNode\n /** One accent link under the heading, such as \"All projects →\". */\n action?: ReactNode\n /** Heading level; sections on a page are h2. */\n level?: 2 | 3\n id?: string\n children: ReactNode\n}\n\n/**\n * The Workbench section: a hairline, a two-tone heading in the first four\n * columns, and the content on an eight-column subgrid beside it. Every section\n * on a Workbench page uses this one rhythm, which is what keeps them aligned.\n */\nexport function WorkbenchSection({ title, lead, action, level = 2, id, children }: WorkbenchSectionProps) {\n const Heading = level === 2 ? 'h2' : 'h3'\n return (\n <Reveal>\n <section className=\"folio-wb-section\" id={id}>\n <div className=\"folio-wb-section-head\">\n <Heading className=\"folio-wb-heading\">\n <span>{title}</span>\n {lead && <> <span className=\"folio-wb-heading-lead\">{lead}</span></>}\n </Heading>\n {action && <div className=\"folio-wb-section-action\">{action}</div>}\n </div>\n <div className=\"folio-wb-section-body\">{children}</div>\n </section>\n </Reveal>\n )\n}\n"],"mappings":"AA4BY,SACS,UADT,KACS,YADT;AA3BZ,SAAS,cAAc;AAoBhB,SAAS,iBAAiB,EAAE,OAAO,MAAM,QAAQ,QAAQ,GAAG,IAAI,SAAS,GAA0B;AACxG,QAAM,UAAU,UAAU,IAAI,OAAO;AACrC,SACE,oBAAC,UACC,+BAAC,aAAQ,WAAU,oBAAmB,IACpC;AAAA,yBAAC,SAAI,WAAU,yBACb;AAAA,2BAAC,WAAQ,WAAU,oBACjB;AAAA,4BAAC,UAAM,iBAAM;AAAA,QACZ,QAAQ,iCAAE;AAAA;AAAA,UAAC,oBAAC,UAAK,WAAU,yBAAyB,gBAAK;AAAA,WAAO;AAAA,SACnE;AAAA,MACC,UAAU,oBAAC,SAAI,WAAU,2BAA2B,kBAAO;AAAA,OAC9D;AAAA,IACA,oBAAC,SAAI,WAAU,yBAAyB,UAAS;AAAA,KACnD,GACF;AAEJ;","names":[]}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
|
|
4
|
+
interface WorkbenchCardProps {
|
|
5
|
+
/** A cover image, or a `WorkbenchTile` when there is no picture. */
|
|
6
|
+
cover: ReactNode;
|
|
7
|
+
/** The title, usually a link; the whole card becomes its hit area. */
|
|
8
|
+
title: ReactNode;
|
|
9
|
+
description?: ReactNode;
|
|
10
|
+
meta?: ReactNode;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* An image-led record. The title's link is stretched over the card, so the
|
|
14
|
+
* card is one target without nesting interactive elements.
|
|
15
|
+
*/
|
|
16
|
+
declare function WorkbenchCard({ cover, title, description, meta }: WorkbenchCardProps): react.JSX.Element;
|
|
17
|
+
interface WorkbenchCardGridProps {
|
|
18
|
+
children: ReactNode;
|
|
19
|
+
}
|
|
20
|
+
/** Two cards per row on the content subgrid, one on a phone. */
|
|
21
|
+
declare function WorkbenchCardGrid({ children }: WorkbenchCardGridProps): react.JSX.Element;
|
|
22
|
+
interface WorkbenchTileProps {
|
|
23
|
+
/** Large word set on the tile, such as a product name. */
|
|
24
|
+
label: ReactNode;
|
|
25
|
+
}
|
|
26
|
+
/** A typographic stand-in cover: ink ground, a fine grid, one word. */
|
|
27
|
+
declare function WorkbenchTile({ label }: WorkbenchTileProps): react.JSX.Element;
|
|
28
|
+
|
|
29
|
+
export { WorkbenchCard, WorkbenchCardGrid, type WorkbenchCardGridProps, type WorkbenchCardProps, WorkbenchTile, type WorkbenchTileProps };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
function WorkbenchCard({ cover, title, description, meta }) {
|
|
3
|
+
return /* @__PURE__ */ jsxs("article", { className: "folio-wb-card", children: [
|
|
4
|
+
/* @__PURE__ */ jsx("div", { className: "folio-wb-card-cover", children: cover }),
|
|
5
|
+
/* @__PURE__ */ jsx("h3", { className: "folio-wb-card-title", children: title }),
|
|
6
|
+
description && /* @__PURE__ */ jsx("p", { className: "folio-wb-card-description", children: description }),
|
|
7
|
+
meta && /* @__PURE__ */ jsx("p", { className: "folio-wb-card-meta", children: meta })
|
|
8
|
+
] });
|
|
9
|
+
}
|
|
10
|
+
function WorkbenchCardGrid({ children }) {
|
|
11
|
+
return /* @__PURE__ */ jsx("div", { className: "folio-wb-card-grid", children });
|
|
12
|
+
}
|
|
13
|
+
function WorkbenchTile({ label }) {
|
|
14
|
+
return /* @__PURE__ */ jsx("div", { className: "folio-wb-tile", children: /* @__PURE__ */ jsx("span", { children: label }) });
|
|
15
|
+
}
|
|
16
|
+
export {
|
|
17
|
+
WorkbenchCard,
|
|
18
|
+
WorkbenchCardGrid,
|
|
19
|
+
WorkbenchTile
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=WorkbenchCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/website/Workbench/WorkbenchCard.tsx"],"sourcesContent":["import type { ReactNode } from 'react'\n\nexport interface WorkbenchCardProps {\n /** A cover image, or a `WorkbenchTile` when there is no picture. */\n cover: ReactNode\n /** The title, usually a link; the whole card becomes its hit area. */\n title: ReactNode\n description?: ReactNode\n meta?: ReactNode\n}\n\n/**\n * An image-led record. The title's link is stretched over the card, so the\n * card is one target without nesting interactive elements.\n */\nexport function WorkbenchCard({ cover, title, description, meta }: WorkbenchCardProps) {\n return (\n <article className=\"folio-wb-card\">\n <div className=\"folio-wb-card-cover\">{cover}</div>\n <h3 className=\"folio-wb-card-title\">{title}</h3>\n {description && <p className=\"folio-wb-card-description\">{description}</p>}\n {meta && <p className=\"folio-wb-card-meta\">{meta}</p>}\n </article>\n )\n}\n\nexport interface WorkbenchCardGridProps {\n children: ReactNode\n}\n\n/** Two cards per row on the content subgrid, one on a phone. */\nexport function WorkbenchCardGrid({ children }: WorkbenchCardGridProps) {\n return <div className=\"folio-wb-card-grid\">{children}</div>\n}\n\nexport interface WorkbenchTileProps {\n /** Large word set on the tile, such as a product name. */\n label: ReactNode\n}\n\n/** A typographic stand-in cover: ink ground, a fine grid, one word. */\nexport function WorkbenchTile({ label }: WorkbenchTileProps) {\n return (\n <div className=\"folio-wb-tile\">\n <span>{label}</span>\n </div>\n )\n}\n"],"mappings":"AAiBI,SACE,KADF;AAFG,SAAS,cAAc,EAAE,OAAO,OAAO,aAAa,KAAK,GAAuB;AACrF,SACE,qBAAC,aAAQ,WAAU,iBACjB;AAAA,wBAAC,SAAI,WAAU,uBAAuB,iBAAM;AAAA,IAC5C,oBAAC,QAAG,WAAU,uBAAuB,iBAAM;AAAA,IAC1C,eAAe,oBAAC,OAAE,WAAU,6BAA6B,uBAAY;AAAA,IACrE,QAAQ,oBAAC,OAAE,WAAU,sBAAsB,gBAAK;AAAA,KACnD;AAEJ;AAOO,SAAS,kBAAkB,EAAE,SAAS,GAA2B;AACtE,SAAO,oBAAC,SAAI,WAAU,sBAAsB,UAAS;AACvD;AAQO,SAAS,cAAc,EAAE,MAAM,GAAuB;AAC3D,SACE,oBAAC,SAAI,WAAU,iBACb,8BAAC,UAAM,iBAAM,GACf;AAEJ;","names":[]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
|
|
4
|
+
interface WorkbenchEntry {
|
|
5
|
+
id: string;
|
|
6
|
+
/** The title, usually a link. */
|
|
7
|
+
title: ReactNode;
|
|
8
|
+
excerpt?: ReactNode;
|
|
9
|
+
/** A short date such as "Jun 25". */
|
|
10
|
+
date?: ReactNode;
|
|
11
|
+
/** Category and reading time. */
|
|
12
|
+
meta?: ReactNode;
|
|
13
|
+
}
|
|
14
|
+
interface WorkbenchEntriesProps {
|
|
15
|
+
/** Shown as a typographic notebook tile; the rest list beside it. */
|
|
16
|
+
featured?: WorkbenchEntry;
|
|
17
|
+
entries: WorkbenchEntry[];
|
|
18
|
+
}
|
|
19
|
+
/** A featured entry set as a tile, with the next few entries stacked beside it. */
|
|
20
|
+
declare function WorkbenchEntries({ featured, entries }: WorkbenchEntriesProps): react.JSX.Element;
|
|
21
|
+
|
|
22
|
+
export { WorkbenchEntries, type WorkbenchEntriesProps, type WorkbenchEntry };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
function WorkbenchEntries({ featured, entries }) {
|
|
3
|
+
return /* @__PURE__ */ jsxs("div", { className: "folio-wb-entries", "data-has-featured": featured ? true : void 0, children: [
|
|
4
|
+
featured && /* @__PURE__ */ jsxs("article", { className: "folio-wb-entry-featured", children: [
|
|
5
|
+
/* @__PURE__ */ jsx("h3", { children: featured.title }),
|
|
6
|
+
featured.excerpt && /* @__PURE__ */ jsx("p", { children: featured.excerpt }),
|
|
7
|
+
/* @__PURE__ */ jsxs("p", { className: "folio-wb-entry-meta", children: [
|
|
8
|
+
featured.meta,
|
|
9
|
+
featured.meta && featured.date && " \xB7 ",
|
|
10
|
+
featured.date
|
|
11
|
+
] })
|
|
12
|
+
] }),
|
|
13
|
+
/* @__PURE__ */ jsx("ul", { children: entries.map((entry) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsxs("article", { className: "folio-wb-entry", children: [
|
|
14
|
+
entry.date && /* @__PURE__ */ jsx("p", { className: "folio-wb-entry-date", children: entry.date }),
|
|
15
|
+
/* @__PURE__ */ jsx("h3", { children: entry.title }),
|
|
16
|
+
entry.excerpt && /* @__PURE__ */ jsx("p", { className: "folio-wb-entry-excerpt", children: entry.excerpt }),
|
|
17
|
+
entry.meta && /* @__PURE__ */ jsx("p", { className: "folio-wb-entry-meta", children: entry.meta })
|
|
18
|
+
] }) }, entry.id)) })
|
|
19
|
+
] });
|
|
20
|
+
}
|
|
21
|
+
export {
|
|
22
|
+
WorkbenchEntries
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=WorkbenchEntries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/website/Workbench/WorkbenchEntries.tsx"],"sourcesContent":["import type { ReactNode } from 'react'\n\nexport interface WorkbenchEntry {\n id: string\n /** The title, usually a link. */\n title: ReactNode\n excerpt?: ReactNode\n /** A short date such as \"Jun 25\". */\n date?: ReactNode\n /** Category and reading time. */\n meta?: ReactNode\n}\n\nexport interface WorkbenchEntriesProps {\n /** Shown as a typographic notebook tile; the rest list beside it. */\n featured?: WorkbenchEntry\n entries: WorkbenchEntry[]\n}\n\n/** A featured entry set as a tile, with the next few entries stacked beside it. */\nexport function WorkbenchEntries({ featured, entries }: WorkbenchEntriesProps) {\n return (\n <div className=\"folio-wb-entries\" data-has-featured={featured ? true : undefined}>\n {featured && (\n <article className=\"folio-wb-entry-featured\">\n <h3>{featured.title}</h3>\n {featured.excerpt && <p>{featured.excerpt}</p>}\n <p className=\"folio-wb-entry-meta\">\n {featured.meta}\n {featured.meta && featured.date && ' · '}\n {featured.date}\n </p>\n </article>\n )}\n <ul>\n {entries.map((entry) => (\n <li key={entry.id}>\n <article className=\"folio-wb-entry\">\n {entry.date && <p className=\"folio-wb-entry-date\">{entry.date}</p>}\n <h3>{entry.title}</h3>\n {entry.excerpt && <p className=\"folio-wb-entry-excerpt\">{entry.excerpt}</p>}\n {entry.meta && <p className=\"folio-wb-entry-meta\">{entry.meta}</p>}\n </article>\n </li>\n ))}\n </ul>\n </div>\n )\n}\n"],"mappings":"AAyBU,cAEA,YAFA;AALH,SAAS,iBAAiB,EAAE,UAAU,QAAQ,GAA0B;AAC7E,SACE,qBAAC,SAAI,WAAU,oBAAmB,qBAAmB,WAAW,OAAO,QACpE;AAAA,gBACC,qBAAC,aAAQ,WAAU,2BACjB;AAAA,0BAAC,QAAI,mBAAS,OAAM;AAAA,MACnB,SAAS,WAAW,oBAAC,OAAG,mBAAS,SAAQ;AAAA,MAC1C,qBAAC,OAAE,WAAU,uBACV;AAAA,iBAAS;AAAA,QACT,SAAS,QAAQ,SAAS,QAAQ;AAAA,QAClC,SAAS;AAAA,SACZ;AAAA,OACF;AAAA,IAEF,oBAAC,QACE,kBAAQ,IAAI,CAAC,UACZ,oBAAC,QACC,+BAAC,aAAQ,WAAU,kBAChB;AAAA,YAAM,QAAQ,oBAAC,OAAE,WAAU,uBAAuB,gBAAM,MAAK;AAAA,MAC9D,oBAAC,QAAI,gBAAM,OAAM;AAAA,MAChB,MAAM,WAAW,oBAAC,OAAE,WAAU,0BAA0B,gBAAM,SAAQ;AAAA,MACtE,MAAM,QAAQ,oBAAC,OAAE,WAAU,uBAAuB,gBAAM,MAAK;AAAA,OAChE,KANO,MAAM,EAOf,CACD,GACH;AAAA,KACF;AAEJ;","names":[]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { ReactElement, ReactNode } from 'react';
|
|
3
|
+
|
|
4
|
+
interface WorkbenchFigureProps {
|
|
5
|
+
/** The image element (or a host image component); it fills the frame. */
|
|
6
|
+
children: ReactElement;
|
|
7
|
+
/** Caption start: the photograph's title. */
|
|
8
|
+
title?: ReactNode;
|
|
9
|
+
/** Caption end: place and year, right-aligned. */
|
|
10
|
+
meta?: ReactNode;
|
|
11
|
+
/** Frame proportion. */
|
|
12
|
+
ratio?: 'wide' | 'landscape' | 'portrait' | 'panorama';
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* A photograph shown as a photograph: its own proportion, an 8px corner, and a
|
|
16
|
+
* caption line beneath — never a backdrop for something else.
|
|
17
|
+
*/
|
|
18
|
+
declare function WorkbenchFigure({ children, title, meta, ratio }: WorkbenchFigureProps): react.JSX.Element;
|
|
19
|
+
|
|
20
|
+
export { WorkbenchFigure, type WorkbenchFigureProps };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Slot } from "@radix-ui/react-slot";
|
|
3
|
+
function WorkbenchFigure({ children, title, meta, ratio = "landscape" }) {
|
|
4
|
+
return /* @__PURE__ */ jsxs("figure", { className: "folio-wb-figure", "data-ratio": ratio, children: [
|
|
5
|
+
/* @__PURE__ */ jsx(Slot, { className: "folio-wb-figure-frame", children }),
|
|
6
|
+
(title || meta) && /* @__PURE__ */ jsxs("figcaption", { children: [
|
|
7
|
+
title && /* @__PURE__ */ jsx("span", { children: title }),
|
|
8
|
+
meta && /* @__PURE__ */ jsx("span", { className: "folio-wb-figure-meta", children: meta })
|
|
9
|
+
] })
|
|
10
|
+
] });
|
|
11
|
+
}
|
|
12
|
+
export {
|
|
13
|
+
WorkbenchFigure
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=WorkbenchFigure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/website/Workbench/WorkbenchFigure.tsx"],"sourcesContent":["import { Slot } from '@radix-ui/react-slot'\nimport type { ReactElement, ReactNode } from 'react'\n\nexport interface WorkbenchFigureProps {\n /** The image element (or a host image component); it fills the frame. */\n children: ReactElement\n /** Caption start: the photograph's title. */\n title?: ReactNode\n /** Caption end: place and year, right-aligned. */\n meta?: ReactNode\n /** Frame proportion. */\n ratio?: 'wide' | 'landscape' | 'portrait' | 'panorama'\n}\n\n/**\n * A photograph shown as a photograph: its own proportion, an 8px corner, and a\n * caption line beneath — never a backdrop for something else.\n */\nexport function WorkbenchFigure({ children, title, meta, ratio = 'landscape' }: WorkbenchFigureProps) {\n return (\n <figure className=\"folio-wb-figure\" data-ratio={ratio}>\n <Slot className=\"folio-wb-figure-frame\">{children}</Slot>\n {(title || meta) && (\n <figcaption>\n {title && <span>{title}</span>}\n {meta && <span className=\"folio-wb-figure-meta\">{meta}</span>}\n </figcaption>\n )}\n </figure>\n )\n}\n"],"mappings":"AAqBM,cAEE,YAFF;AArBN,SAAS,YAAY;AAkBd,SAAS,gBAAgB,EAAE,UAAU,OAAO,MAAM,QAAQ,YAAY,GAAyB;AACpG,SACE,qBAAC,YAAO,WAAU,mBAAkB,cAAY,OAC9C;AAAA,wBAAC,QAAK,WAAU,yBAAyB,UAAS;AAAA,KAChD,SAAS,SACT,qBAAC,gBACE;AAAA,eAAS,oBAAC,UAAM,iBAAM;AAAA,MACtB,QAAQ,oBAAC,UAAK,WAAU,wBAAwB,gBAAK;AAAA,OACxD;AAAA,KAEJ;AAEJ;","names":[]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
|
|
4
|
+
interface WorkbenchStat {
|
|
5
|
+
id: string;
|
|
6
|
+
value: ReactNode;
|
|
7
|
+
label: ReactNode;
|
|
8
|
+
}
|
|
9
|
+
interface WorkbenchHeroProps {
|
|
10
|
+
/** The ink clause of the statement; it is the page's h1. */
|
|
11
|
+
statement: ReactNode;
|
|
12
|
+
/** The muted continuation of the statement. */
|
|
13
|
+
lead?: ReactNode;
|
|
14
|
+
/** Up to two buttons or links, primary first. */
|
|
15
|
+
actions?: ReactNode;
|
|
16
|
+
/** Small counts beside the statement, such as projects and posts. */
|
|
17
|
+
stats?: WorkbenchStat[];
|
|
18
|
+
/** One captioned photograph under the statement — a `WorkbenchFigure`. */
|
|
19
|
+
figure?: ReactNode;
|
|
20
|
+
}
|
|
21
|
+
/** The Workbench opening: a two-tone statement, its actions, a few counts and one photograph. */
|
|
22
|
+
declare function WorkbenchHero({ statement, lead, actions, stats, figure }: WorkbenchHeroProps): react.JSX.Element;
|
|
23
|
+
|
|
24
|
+
export { WorkbenchHero, type WorkbenchHeroProps, type WorkbenchStat };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
function WorkbenchHero({ statement, lead, actions, stats = [], figure }) {
|
|
3
|
+
return /* @__PURE__ */ jsxs("section", { className: "folio-wb-hero", children: [
|
|
4
|
+
/* @__PURE__ */ jsxs("div", { className: "folio-wb-hero-copy", children: [
|
|
5
|
+
/* @__PURE__ */ jsxs("h1", { className: "folio-wb-heading folio-wb-hero-statement", children: [
|
|
6
|
+
/* @__PURE__ */ jsx("span", { children: statement }),
|
|
7
|
+
lead && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
8
|
+
" ",
|
|
9
|
+
/* @__PURE__ */ jsx("span", { className: "folio-wb-heading-lead", children: lead })
|
|
10
|
+
] })
|
|
11
|
+
] }),
|
|
12
|
+
actions && /* @__PURE__ */ jsx("div", { className: "folio-wb-hero-actions", children: actions })
|
|
13
|
+
] }),
|
|
14
|
+
stats.length > 0 && /* @__PURE__ */ jsx("dl", { className: "folio-wb-hero-stats", children: stats.map((stat) => /* @__PURE__ */ jsxs("div", { children: [
|
|
15
|
+
/* @__PURE__ */ jsx("dt", { children: stat.label }),
|
|
16
|
+
/* @__PURE__ */ jsx("dd", { children: stat.value })
|
|
17
|
+
] }, stat.id)) }),
|
|
18
|
+
figure && /* @__PURE__ */ jsx("div", { className: "folio-wb-hero-figure", children: figure })
|
|
19
|
+
] });
|
|
20
|
+
}
|
|
21
|
+
export {
|
|
22
|
+
WorkbenchHero
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=WorkbenchHero.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/website/Workbench/WorkbenchHero.tsx"],"sourcesContent":["import type { ReactNode } from 'react'\n\nexport interface WorkbenchStat {\n id: string\n value: ReactNode\n label: ReactNode\n}\n\nexport interface WorkbenchHeroProps {\n /** The ink clause of the statement; it is the page's h1. */\n statement: ReactNode\n /** The muted continuation of the statement. */\n lead?: ReactNode\n /** Up to two buttons or links, primary first. */\n actions?: ReactNode\n /** Small counts beside the statement, such as projects and posts. */\n stats?: WorkbenchStat[]\n /** One captioned photograph under the statement — a `WorkbenchFigure`. */\n figure?: ReactNode\n}\n\n/** The Workbench opening: a two-tone statement, its actions, a few counts and one photograph. */\nexport function WorkbenchHero({ statement, lead, actions, stats = [], figure }: WorkbenchHeroProps) {\n return (\n <section className=\"folio-wb-hero\">\n <div className=\"folio-wb-hero-copy\">\n <h1 className=\"folio-wb-heading folio-wb-hero-statement\">\n <span>{statement}</span>\n {lead && <> <span className=\"folio-wb-heading-lead\">{lead}</span></>}\n </h1>\n {actions && <div className=\"folio-wb-hero-actions\">{actions}</div>}\n </div>\n {stats.length > 0 && (\n <dl className=\"folio-wb-hero-stats\">\n {stats.map((stat) => (\n <div key={stat.id}>\n <dt>{stat.label}</dt>\n <dd>{stat.value}</dd>\n </div>\n ))}\n </dl>\n )}\n {figure && <div className=\"folio-wb-hero-figure\">{figure}</div>}\n </section>\n )\n}\n"],"mappings":"AA2BU,SACS,UADT,KACS,YADT;AALH,SAAS,cAAc,EAAE,WAAW,MAAM,SAAS,QAAQ,CAAC,GAAG,OAAO,GAAuB;AAClG,SACE,qBAAC,aAAQ,WAAU,iBACjB;AAAA,yBAAC,SAAI,WAAU,sBACb;AAAA,2BAAC,QAAG,WAAU,4CACZ;AAAA,4BAAC,UAAM,qBAAU;AAAA,QAChB,QAAQ,iCAAE;AAAA;AAAA,UAAC,oBAAC,UAAK,WAAU,yBAAyB,gBAAK;AAAA,WAAO;AAAA,SACnE;AAAA,MACC,WAAW,oBAAC,SAAI,WAAU,yBAAyB,mBAAQ;AAAA,OAC9D;AAAA,IACC,MAAM,SAAS,KACd,oBAAC,QAAG,WAAU,uBACX,gBAAM,IAAI,CAAC,SACV,qBAAC,SACC;AAAA,0BAAC,QAAI,eAAK,OAAM;AAAA,MAChB,oBAAC,QAAI,eAAK,OAAM;AAAA,SAFR,KAAK,EAGf,CACD,GACH;AAAA,IAED,UAAU,oBAAC,SAAI,WAAU,wBAAwB,kBAAO;AAAA,KAC3D;AAEJ;","names":[]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Workbench preset as the attributes a host writes on `<html>`.
|
|
3
|
+
*
|
|
4
|
+
* A preset is a combination of theme axes, never a block of its own, so this
|
|
5
|
+
* is the whole of it: linen ground and warm ink, an ember accent for links and
|
|
6
|
+
* the current state, primary buttons in ink, headings in the grotesk at a quiet voice, and quiet rules. Radius, motion
|
|
7
|
+
* and density stay on their defaults. Spread it onto the root element:
|
|
8
|
+
*
|
|
9
|
+
* ```tsx
|
|
10
|
+
* <html {...WORKBENCH_THEME} data-mode="light">
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
declare const WORKBENCH_THEME: {
|
|
14
|
+
readonly 'data-surface': "linen";
|
|
15
|
+
readonly 'data-accent': "ember";
|
|
16
|
+
readonly 'data-action': "ink";
|
|
17
|
+
readonly 'data-type': "grotesk";
|
|
18
|
+
readonly 'data-rules': "quiet";
|
|
19
|
+
readonly 'data-voice': "quiet";
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export { WORKBENCH_THEME };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/website/Workbench/theme.ts"],"sourcesContent":["/**\n * The Workbench preset as the attributes a host writes on `<html>`.\n *\n * A preset is a combination of theme axes, never a block of its own, so this\n * is the whole of it: linen ground and warm ink, an ember accent for links and\n * the current state, primary buttons in ink, headings in the grotesk at a quiet voice, and quiet rules. Radius, motion\n * and density stay on their defaults. Spread it onto the root element:\n *\n * ```tsx\n * <html {...WORKBENCH_THEME} data-mode=\"light\">\n * ```\n */\nexport const WORKBENCH_THEME = {\n 'data-surface': 'linen',\n 'data-accent': 'ember',\n 'data-action': 'ink',\n 'data-type': 'grotesk',\n 'data-rules': 'quiet',\n 'data-voice': 'quiet',\n} as const\n"],"mappings":"AAYO,MAAM,kBAAkB;AAAA,EAC7B,gBAAgB;AAAA,EAChB,eAAe;AAAA,EACf,eAAe;AAAA,EACf,aAAa;AAAA,EACb,cAAc;AAAA,EACd,cAAc;AAChB;","names":[]}
|
package/dist/website/index.d.ts
CHANGED
|
@@ -18,6 +18,17 @@ export { ClipboardButton, ClipboardButtonProps, CodePanel, CodePanelProps } from
|
|
|
18
18
|
export { ActionMenu, ActionMenuItem, ActionMenuProps, ScrollControl, ScrollControlProps } from './Actions/Actions.js';
|
|
19
19
|
export { ActionProposal, ActionProposalProps, ConversationAnswer, ConversationAnswerHeading, ConversationAnswerProps, ConversationControl, ConversationDock, ConversationDockCorner, ConversationDockProps, ConversationDockWelcome, ConversationDockWelcomeProps, ConversationFacts, ConversationFactsProps, ConversationLauncher, ConversationLauncherProps, ConversationLayout, ConversationLayoutProps, ConversationLog, ConversationLogProps, ConversationProse, ConversationQuote, ConversationQuoteProps, ConversationResizeHandle, ConversationResizeHandleProps, ConversationRoomLink, ConversationSource, ConversationSources, ConversationSourcesProps, ConversationSuggestion, ConversationSuggestions, ConversationSuggestionsProps, ConversationThread, ConversationThreadProps, ConversationTurn, ConversationTurnProps, QuestionComposer, QuestionComposerProps, SelectionToolbar, SelectionToolbarAction, SelectionToolbarProps, StreamingCaret } from './Conversation/Conversation.js';
|
|
20
20
|
export { ActivityTrace, ActivityTraceItem, ActivityTraceProps, EvidenceDisclosure, EvidenceDisclosureProps, EvidenceDuration, EvidenceDurations, EvidenceDurationsProps, EvidenceFacts, EvidenceFactsProps, EvidenceMeter, EvidenceMeterProps, EvidencePanel, EvidencePanelProps, EvidenceQuery, EvidenceQueryProps, EvidenceScore, EvidenceScores, EvidenceScoresProps, EvidenceSelection, EvidenceSelectionProps, EvidenceStage, EvidenceStageProps, EvidenceStages, EvidenceState, EvidenceStatus, EvidenceStatusProps, EvidenceSummary, EvidenceSummaryProps, SignalFigure, SignalFigureProps } from './Evidence/Evidence.js';
|
|
21
|
+
export { Reveal, RevealProps } from './Workbench/Reveal.js';
|
|
22
|
+
export { WorkbenchSection, WorkbenchSectionProps } from './Workbench/Workbench.js';
|
|
23
|
+
export { WorkbenchHero, WorkbenchHeroProps, WorkbenchStat } from './Workbench/WorkbenchHero.js';
|
|
24
|
+
export { WorkbenchFigure, WorkbenchFigureProps } from './Workbench/WorkbenchFigure.js';
|
|
25
|
+
export { ToolStrip, ToolStripItem, ToolStripProps } from './Workbench/ToolStrip.js';
|
|
26
|
+
export { WorkbenchCard, WorkbenchCardGrid, WorkbenchCardGridProps, WorkbenchCardProps, WorkbenchTile, WorkbenchTileProps } from './Workbench/WorkbenchCard.js';
|
|
27
|
+
export { WorkbenchEntries, WorkbenchEntriesProps, WorkbenchEntry } from './Workbench/WorkbenchEntries.js';
|
|
28
|
+
export { Chronology, ChronologyItem, ChronologyProps } from './Workbench/Chronology.js';
|
|
29
|
+
export { PhotoMosaic, PhotoMosaicProps } from './Workbench/PhotoMosaic.js';
|
|
30
|
+
export { ContactRow, ContactRowProps } from './Workbench/ContactRow.js';
|
|
31
|
+
export { WORKBENCH_THEME } from './Workbench/theme.js';
|
|
21
32
|
import 'react';
|
|
22
33
|
import '../components/DescriptionList/DescriptionList.js';
|
|
23
34
|
import '../components/ErrorState/ErrorState.js';
|
package/dist/website/index.js
CHANGED
|
@@ -18,4 +18,15 @@ export * from "./Content/CodePanel.js";
|
|
|
18
18
|
export * from "./Actions/Actions.js";
|
|
19
19
|
export * from "./Conversation/Conversation.js";
|
|
20
20
|
export * from "./Evidence/Evidence.js";
|
|
21
|
+
export * from "./Workbench/Reveal.js";
|
|
22
|
+
export * from "./Workbench/Workbench.js";
|
|
23
|
+
export * from "./Workbench/WorkbenchHero.js";
|
|
24
|
+
export * from "./Workbench/WorkbenchFigure.js";
|
|
25
|
+
export * from "./Workbench/ToolStrip.js";
|
|
26
|
+
export * from "./Workbench/WorkbenchCard.js";
|
|
27
|
+
export * from "./Workbench/WorkbenchEntries.js";
|
|
28
|
+
export * from "./Workbench/Chronology.js";
|
|
29
|
+
export * from "./Workbench/PhotoMosaic.js";
|
|
30
|
+
export * from "./Workbench/ContactRow.js";
|
|
31
|
+
export * from "./Workbench/theme.js";
|
|
21
32
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/website/index.ts"],"sourcesContent":["export * from './SiteShell/SiteShell'\nexport * from './SiteNavigation/SiteNavigation'\nexport * from './Portfolio/Portfolio'\nexport * from './Portfolio/QuestionCard'\nexport * from './PortfolioIndex/PortfolioIndex'\nexport * from './Collection/Collection'\nexport * from './Reading/Reading'\nexport * from './Contact/Contact'\nexport * from './Music/Music'\nexport * from './Timeline/Timeline'\nexport * from './Recovery/Recovery'\nexport * from './Media/Media'\nexport * from './Media/MediaLightbox'\nexport * from './Metrics/Metrics'\nexport * from './SearchPalette/SearchPalette'\nexport * from './Content/Content'\nexport * from './Content/CodePanel'\nexport * from './Actions/Actions'\nexport * from './Conversation/Conversation'\nexport * from './Evidence/Evidence'\n"],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/website/index.ts"],"sourcesContent":["export * from './SiteShell/SiteShell'\nexport * from './SiteNavigation/SiteNavigation'\nexport * from './Portfolio/Portfolio'\nexport * from './Portfolio/QuestionCard'\nexport * from './PortfolioIndex/PortfolioIndex'\nexport * from './Collection/Collection'\nexport * from './Reading/Reading'\nexport * from './Contact/Contact'\nexport * from './Music/Music'\nexport * from './Timeline/Timeline'\nexport * from './Recovery/Recovery'\nexport * from './Media/Media'\nexport * from './Media/MediaLightbox'\nexport * from './Metrics/Metrics'\nexport * from './SearchPalette/SearchPalette'\nexport * from './Content/Content'\nexport * from './Content/CodePanel'\nexport * from './Actions/Actions'\nexport * from './Conversation/Conversation'\nexport * from './Evidence/Evidence'\nexport * from './Workbench/Reveal'\nexport * from './Workbench/Workbench'\nexport * from './Workbench/WorkbenchHero'\nexport * from './Workbench/WorkbenchFigure'\nexport * from './Workbench/ToolStrip'\nexport * from './Workbench/WorkbenchCard'\nexport * from './Workbench/WorkbenchEntries'\nexport * from './Workbench/Chronology'\nexport * from './Workbench/PhotoMosaic'\nexport * from './Workbench/ContactRow'\nexport * from './Workbench/theme'\n"],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
|
|
@@ -6,21 +6,21 @@
|
|
|
6
6
|
.folio-content-band[data-spacing=section]{padding-block:clamp(3rem,7vw,6rem)}
|
|
7
7
|
.folio-collection-intro{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.65fr);align-items:center;gap:clamp(2rem,5vw,5rem);padding-block:clamp(3.5rem,8vw,6.5rem) clamp(2.5rem,5vw,4.5rem)}
|
|
8
8
|
.folio-collection-intro:has(>div:only-child){grid-template-columns:minmax(0,1fr)}
|
|
9
|
-
.folio-collection-intro h1{margin:0;font-family:var(--serif-i18n,var(--font-heading));font-weight:
|
|
9
|
+
.folio-collection-intro h1{margin:0;font-family:var(--serif-i18n,var(--font-heading));font-weight:var(--display-weight);font-size:var(--fs-title);line-height:1.05;letter-spacing:-.032em;text-wrap:balance}
|
|
10
10
|
.folio-collection-intro>div:first-child>p{max-width:54ch;margin-block:1.5rem 0;color:var(--ink-2);font-size:clamp(1.0625rem,1.6vw,1.25rem);line-height:1.65;text-wrap:pretty}
|
|
11
11
|
.folio-collection-intro[data-compact] h1{font-size:var(--fs-lead)}
|
|
12
12
|
.folio-collection-intro-media{min-width:0}
|
|
13
13
|
.folio-collection-intro-media img{width:100%;height:auto}
|
|
14
|
-
.folio-collection-context,.folio-record-context,.folio-record-metadata,.folio-collection-count{font-family:var(--mono-i18n,var(--font
|
|
15
|
-
.folio-collection-context{margin-block-end:1rem;text-transform:
|
|
14
|
+
.folio-collection-context,.folio-record-context,.folio-record-metadata,.folio-collection-count{font-family:var(--mono-i18n,var(--label-font));font-size:.6875rem;line-height:1.65;letter-spacing:calc(.09em * var(--label-tracking-scale));color:var(--ink-3-aa)}
|
|
15
|
+
.folio-collection-context{margin-block-end:1rem;text-transform:var(--label-case)}
|
|
16
16
|
.folio-collection-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem;margin-block-start:1.5rem}
|
|
17
17
|
.folio-collection-metadata{display:flex;flex-wrap:wrap;gap:1.5rem 3rem;margin:0;padding-block:1.25rem;border-block:1px solid var(--rule)}
|
|
18
18
|
.folio-collection-metadata dt{font-family:var(--mono-i18n,var(--font-mono));font-size:.6875rem;color:var(--ink-3-aa)}
|
|
19
19
|
.folio-collection-metadata dd{margin:.5rem 0 0;color:var(--ink)}
|
|
20
20
|
.folio-collection-group{padding-block-start:clamp(3rem,7vw,6rem)}
|
|
21
21
|
.folio-collection-group[data-compact]{padding-block-start:1.5rem}
|
|
22
|
-
.folio-collection-group-heading{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:1rem;border-block-end:1px solid var(--rule-
|
|
23
|
-
.folio-collection-group-heading h2{margin:0;font-family:var(--serif-i18n,var(--font-heading));font-weight:
|
|
22
|
+
.folio-collection-group-heading{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:1rem;border-block-end:1px solid var(--rule-divider);padding-block-end:1rem;margin-block-end:1rem}
|
|
23
|
+
.folio-collection-group-heading h2{margin:0;font-family:var(--serif-i18n,var(--font-heading));font-weight:var(--display-weight);font-size:var(--fs-lead);line-height:1.1;letter-spacing:-.028em}
|
|
24
24
|
.folio-collection-group-heading>span{font-family:var(--mono-i18n,var(--font-mono));font-size:.6875rem;color:var(--ink-3-aa)}
|
|
25
25
|
.folio-collection-controls{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem 2rem;border-block:1px solid var(--rule);padding-block:1rem}
|
|
26
26
|
.folio-collection-controls[data-quiet]{border:0}
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
.folio-record-media[data-empty]{border:0;background:transparent}
|
|
39
39
|
.folio-record-media img{display:block;width:100%;height:100%;object-fit:cover}
|
|
40
40
|
.folio-record-copy{min-width:0}
|
|
41
|
-
.folio-record-copy h2,.folio-record-copy h3{margin:.375rem 0 0;font-family:var(--serif-i18n,var(--font-heading));font-size:var(--fs-heading);font-weight:
|
|
41
|
+
.folio-record-copy h2,.folio-record-copy h3{margin:.375rem 0 0;font-family:var(--serif-i18n,var(--font-heading));font-size:var(--fs-heading);font-weight:var(--display-weight);line-height:1.16;letter-spacing:-.022em}
|
|
42
42
|
.folio-record-link:hover h2,.folio-record-link:hover h3{color:var(--ink-2)}
|
|
43
43
|
.folio-record-context{display:flex;flex-wrap:wrap;gap:.75rem}
|
|
44
44
|
.folio-record-summary{max-width:var(--measure-record,62ch);margin:.875rem 0 0;color:var(--ink-2);line-height:1.66;text-wrap:pretty}
|
|
@@ -59,13 +59,13 @@
|
|
|
59
59
|
.folio-featured-record-media{position:relative;aspect-ratio:4/3;overflow:hidden;background:var(--paper-2);border-radius:var(--radius-sm)}
|
|
60
60
|
.folio-featured-record-media>a{display:block;width:100%;height:100%}
|
|
61
61
|
.folio-featured-record-media img{width:100%;height:100%;object-fit:cover}
|
|
62
|
-
.folio-featured-record h2{margin-block:1.125rem 0;font-family:var(--serif-i18n,var(--font-heading));font-size:var(--fs-lead);font-weight:
|
|
62
|
+
.folio-featured-record h2{margin-block:1.125rem 0;font-family:var(--serif-i18n,var(--font-heading));font-size:var(--fs-lead);font-weight:var(--display-weight);line-height:1.1;letter-spacing:-.028em}
|
|
63
63
|
.folio-featured-record h2 a{display:inline-flex;align-items:center;min-height:44px;color:inherit;text-decoration:none}
|
|
64
64
|
.folio-featured-record p{max-width:49ch;margin-block:1.25rem 0;color:var(--ink-2);line-height:1.7}
|
|
65
65
|
.folio-collection-footer{padding-block-start:clamp(2rem,5vw,4rem)}
|
|
66
66
|
.folio-collection-footer>div{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:1rem 2rem}
|
|
67
67
|
.folio-taxonomy-links{display:flex;flex-wrap:wrap;gap:.5rem;margin-block:1.5rem}
|
|
68
|
-
.folio-reference-rows{margin:0;border-block-start:1px solid var(--rule-
|
|
68
|
+
.folio-reference-rows{margin:0;border-block-start:1px solid var(--rule-divider)}
|
|
69
69
|
.folio-reference-rows>div{display:grid;grid-template-columns:minmax(10rem,1fr) minmax(0,3fr);gap:1.5rem;padding-block:1.5rem;border-block-end:1px solid var(--rule)}
|
|
70
70
|
.folio-reference-rows dt{font-family:var(--mono-i18n,var(--font-mono));font-size:.75rem;color:var(--ink-3-aa)}
|
|
71
71
|
.folio-reference-rows dt p{font-family:var(--sans);font-size:.8125rem;line-height:1.6;margin-block:.5rem 0}
|
package/dist/website-contact.css
CHANGED
|
@@ -2,15 +2,21 @@
|
|
|
2
2
|
display: grid;
|
|
3
3
|
align-items: start;
|
|
4
4
|
gap: 3rem;
|
|
5
|
-
border-block-start: 1px solid var(--rule-
|
|
5
|
+
border-block-start: 1px solid var(--rule-divider);
|
|
6
6
|
padding-block: clamp(2.5rem, 5vw, 4rem) clamp(4rem, 8vw, 7rem);
|
|
7
7
|
}
|
|
8
8
|
.folio-contact-form, .folio-contact-facts { min-inline-size: 0; }
|
|
9
|
-
.folio-contact-form__fields { display: grid; gap: 2rem; border-block-start: 1px solid var(--rule-
|
|
9
|
+
.folio-contact-form__fields { display: grid; gap: 2rem; border-block-start: 1px solid var(--rule-divider); padding-block-start: 2rem; }
|
|
10
10
|
.folio-contact-form__identity { display: grid; gap: 2rem; }
|
|
11
11
|
.folio-contact-form__actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1.25rem; }
|
|
12
12
|
.folio-contact-facts__links { display: flex; flex-wrap: wrap; gap: .5rem 1rem; margin-block-start: 1rem; }
|
|
13
|
-
|
|
13
|
+
/* A fact's link sits on the same left edge as its label: a ghost button's
|
|
14
|
+
inline padding read as an indent where an icon had gone missing. The 44px
|
|
15
|
+
block size the host gives the link is kept. */
|
|
16
|
+
.folio-contact-facts dd > a:first-child,
|
|
17
|
+
.folio-contact-facts__links > a { padding-inline: 0; }
|
|
18
|
+
.folio-contact-facts__links { column-gap: 1.5rem; }
|
|
19
|
+
.folio-question-list__items { border-block-start: 1px solid var(--rule-divider); }
|
|
14
20
|
.folio-question-list__item { display: grid; gap: 1rem; padding-block: 1.5rem; border-block-end: 1px solid var(--rule); }
|
|
15
21
|
.folio-location-figure { margin: 0; }
|
|
16
22
|
.folio-location-figure__map { position: relative; aspect-ratio: 16 / 10; overflow: hidden; border-radius: var(--radius-sm); background: var(--paper-2); }
|
package/dist/website-content.css
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
.folio-step-sequence { margin: 0; }
|
|
2
|
+
/* A sequence's anchor is emphasis, not progress, so it takes the primary
|
|
3
|
+
action's fill: the accent by default, ink where `data-action` says so. */
|
|
4
|
+
.folio-sequence-step[data-anchor] .folio-sequence-counter { border-color: var(--action); background: var(--action); color: var(--action-foreground); }
|
|
2
5
|
/* The rail itself is the core Steps rendering; only what Steps has no slot for lives here. The column's own 0.25rem gap plus this margin keeps tags 0.625rem under the note. */
|
|
3
6
|
.folio-sequence-tags { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-block-start: 0.375rem; }
|
|
4
7
|
.folio-sequence-caption { max-inline-size: 62ch; margin-block-start: 1.5rem; padding-block-start: 1rem; border-block-start: 1px solid var(--border-subtle); color: var(--foreground-muted); font-size: 0.875rem; line-height: 1.65; }
|
|
@@ -8,7 +11,7 @@
|
|
|
8
11
|
.folio-code-panel,
|
|
9
12
|
figure:has(> .folio-code-panel-head) { min-inline-size: 0; margin-block: 2rem; margin-inline: 0; overflow: hidden; border: 1px solid var(--border-subtle); border-radius: var(--radius); background: var(--background); }
|
|
10
13
|
.folio-code-panel-head { display: flex; align-items: center; justify-content: space-between; gap: 0.75rem; padding-block: 0.25rem; padding-inline: 1rem 0.375rem; border-block-end: 1px solid var(--border-subtle); background: var(--background-elevated); }
|
|
11
|
-
.folio-code-panel-head > span { color: var(--secondary-text); font-family: var(--font
|
|
14
|
+
.folio-code-panel-head > span { color: var(--secondary-text); font-family: var(--label-font); font-size: 0.625rem; letter-spacing: calc(0.14em * var(--label-tracking-scale)); }
|
|
12
15
|
.folio-clipboard-button { min-inline-size: 44px; min-block-size: 44px; }
|
|
13
16
|
pre.folio-code-panel-pre,
|
|
14
17
|
[data-folio-article] pre.folio-code-panel-pre { min-inline-size: 0; margin: 0; padding: 1rem 1.125rem; overflow-x: auto; border: 0; border-radius: 0; background: var(--background); color: var(--foreground); font-family: var(--font-mono); font-size: 0.8125rem; line-height: 1.7; scrollbar-width: thin; }
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
.folio-conversation-facts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.25rem 2rem; border-block: 1px solid var(--rule); padding-block: 1.25rem; }
|
|
4
4
|
.folio-conversation-facts dd > span { display: inline-flex; align-items: center; gap: .5rem; }
|
|
5
5
|
.folio-conversation-thread { min-inline-size: 0; }
|
|
6
|
-
.folio-conversation-thread__intro { border-block-start: 1px solid var(--rule-
|
|
6
|
+
.folio-conversation-thread__intro { border-block-start: 1px solid var(--rule-divider); padding-block-start: 2rem; }
|
|
7
7
|
.folio-conversation-thread__intro > h2 { max-inline-size: 22ch; text-wrap: balance; }
|
|
8
8
|
.folio-conversation-thread__intro > p { max-inline-size: 56ch; }
|
|
9
9
|
.folio-conversation-suggestions { margin-block-start: 2rem; }
|
|
@@ -11,12 +11,12 @@
|
|
|
11
11
|
.folio-conversation-suggestions > ul > li, .folio-conversation-sources > ul > li { border-block-end: 1px solid var(--rule); }
|
|
12
12
|
.folio-conversation-suggestions__action { inline-size: 100%; justify-content: space-between; text-align: start; gap: 1.5rem; padding-inline: 0; }
|
|
13
13
|
.folio-conversation-suggestions__action > svg { flex-shrink: 0; }
|
|
14
|
-
.folio-conversation-thread__controls { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .25rem 1.5rem; border-block-start: 1px solid var(--rule-
|
|
14
|
+
.folio-conversation-thread__controls { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .25rem 1.5rem; border-block-start: 1px solid var(--rule-divider); padding-block-start: .75rem; }
|
|
15
15
|
.folio-conversation-thread__controls > div { display: flex; flex-wrap: wrap; gap: .25rem; }
|
|
16
16
|
.folio-conversation-log { display: flex; flex-direction: column; }
|
|
17
17
|
.folio-conversation-log[data-compact] { gap: 2rem; }
|
|
18
18
|
.folio-conversation-thread__composer { margin-block-start: 3rem; }
|
|
19
|
-
.folio-conversation-thread__composer[data-sticky] { position: sticky; inset-block-end: 0; z-index: 10; margin-block-start: 2rem; padding-block: 1rem .75rem; border-block-start: 1px solid var(--rule-
|
|
19
|
+
.folio-conversation-thread__composer[data-sticky] { position: sticky; inset-block-end: 0; z-index: 10; margin-block-start: 2rem; padding-block: 1rem .75rem; border-block-start: 1px solid var(--rule-divider); background: var(--paper); }
|
|
20
20
|
.folio-conversation-thread__proposal { margin-block-end: 1.25rem; }
|
|
21
21
|
.folio-question-composer__row { display: flex; align-items: end; gap: 1rem; }
|
|
22
22
|
.folio-question-composer__field { flex: 1; min-inline-size: 0; }
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
.folio-conversation-turn__body { max-inline-size: 64ch; padding-block-start: .75rem; }
|
|
33
33
|
.folio-conversation-turn__preview { max-inline-size: 64ch; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
34
34
|
.folio-conversation-quote { margin: 0 0 1.5rem; border-inline-start: 1px solid var(--rule-2); padding-inline-start: 1.25rem; }
|
|
35
|
-
.folio-conversation-quote > blockquote { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 4; overflow: hidden; margin: .5rem 0 0; font-family: var(--font-heading); font-weight:
|
|
35
|
+
.folio-conversation-quote > blockquote { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 4; overflow: hidden; margin: .5rem 0 0; font-family: var(--font-heading); font-weight: var(--display-weight); font-style: italic; font-size: 1rem; line-height: 1.6; color: var(--ink-2); }
|
|
36
36
|
.folio-conversation-quote[data-compact] { margin-block-end: 1rem; padding-inline-start: .875rem; }
|
|
37
37
|
.folio-conversation-quote[data-compact] > blockquote { -webkit-line-clamp: 3; font-size: .875rem; }
|
|
38
38
|
.folio-conversation-answer__question { margin-block: .375rem 1rem; font-family: var(--font-heading); }
|
|
@@ -43,13 +43,13 @@
|
|
|
43
43
|
.folio-conversation-prose p.folio-conversation-prose__heading[data-lead] { margin-block-start: 0; }
|
|
44
44
|
.folio-conversation-prose sup { font-size: .75em; }
|
|
45
45
|
.folio-conversation-caret { display: inline-block; inline-size: .375rem; block-size: 1em; margin-inline-start: .2rem; vertical-align: -.1em; background: var(--ink); }
|
|
46
|
-
.folio-conversation-sources { margin-block-start: 1.5rem; border-block-start: 1px solid var(--rule-
|
|
46
|
+
.folio-conversation-sources { margin-block-start: 1.5rem; border-block-start: 1px solid var(--rule-divider); padding-block-start: .75rem; }
|
|
47
47
|
.folio-conversation-sources__header { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; }
|
|
48
48
|
.folio-conversation-sources__link { display: grid; grid-template-columns: 2rem minmax(0, 1fr) auto; inline-size: 100%; align-items: baseline; text-align: start; gap: .75rem; padding-inline: 0; }
|
|
49
49
|
.folio-conversation-sources__link[data-highlighted] { background: var(--accent-muted); }
|
|
50
50
|
.folio-conversation-sources__link > span:nth-child(2) { min-inline-size: 0; }
|
|
51
51
|
.folio-conversation-sources__link > span:nth-child(2) > span { display: block; }
|
|
52
|
-
.folio-action-proposal__actions { margin-block-start: .375rem; border-block-start: 1px solid var(--rule-
|
|
52
|
+
.folio-action-proposal__actions { margin-block-start: .375rem; border-block-start: 1px solid var(--rule-divider); }
|
|
53
53
|
.folio-action-proposal__action { display: flex; inline-size: 100%; justify-content: space-between; gap: 1rem; text-align: start; border-block-end: 1px solid var(--rule); padding-inline: 0; }
|
|
54
54
|
.folio-action-proposal__action > span { min-inline-size: 0; }
|
|
55
55
|
.folio-action-proposal__action > span:last-child { display: flex; align-items: center; gap: .75rem; flex-shrink: 0; }
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
.folio-activity-trace li > span { overflow-wrap: anywhere; }
|
|
8
8
|
.folio-activity-trace__summary { margin-inline-start: auto; flex-shrink: 0; white-space: nowrap; font-variant-numeric: tabular-nums; }
|
|
9
9
|
.folio-evidence-panel { min-inline-size: 0; }
|
|
10
|
-
.folio-evidence-panel > header { display: flex; align-items: start; justify-content: space-between; gap: 1rem; padding-block-end: 1rem; border-block-end: 1px solid var(--rule-
|
|
10
|
+
.folio-evidence-panel > header { display: flex; align-items: start; justify-content: space-between; gap: 1rem; padding-block-end: 1rem; border-block-end: 1px solid var(--rule-divider); }
|
|
11
11
|
.folio-evidence-panel > header h2 { margin-block-start: .375rem; }
|
|
12
12
|
.folio-evidence-panel > header > .folio-evidence-status { flex-shrink: 0; margin-block-start: .25rem; }
|
|
13
13
|
.folio-evidence-panel > .folio-activity-trace { border-block-end: 1px solid var(--rule); padding-block: .75rem; }
|