@master/internal-site 0.1.2 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +43 -0
- package/dist/astro.mjs +233 -47
- package/dist/config.d.mts +6 -0
- package/dist/localization-LfIbIysE.mjs +356 -0
- package/dist/localization.d.mts +69 -0
- package/dist/localization.mjs +1 -0
- package/package.json +12 -9
- package/src/astro/content-pages.ts +30 -11
- package/src/astro/index.ts +11 -5
- package/src/astro/localized-mdx.ts +45 -0
- package/src/astro/routes.template.ts +4 -0
- package/src/astro/site-context.ts +10 -2
- package/src/astro/style-assets.ts +107 -0
- package/src/benchmarks/BenchmarkBarRows.astro +3 -2
- package/src/benchmarks/BenchmarkBars.astro +1 -1
- package/src/benchmarks/BenchmarkChart.astro +5 -1
- package/src/benchmarks/BenchmarkChartGroup.astro +1 -1
- package/src/benchmarks/BenchmarkDataTable.astro +1 -1
- package/src/benchmarks/BenchmarkFigure.astro +2 -1
- package/src/benchmarks/BenchmarkMetricTable.astro +2 -2
- package/src/benchmarks/BenchmarkMetrics.astro +1 -1
- package/src/benchmarks/BenchmarkSampleSummary.astro +1 -1
- package/src/benchmarks/BenchmarkScrollRegion.svelte +2 -1
- package/src/benchmarks/BenchmarkSource.astro +1 -1
- package/src/benchmarks/BenchmarkStackedBars.astro +4 -3
- package/src/benchmarks/BenchmarkStatus.astro +3 -1
- package/src/benchmarks/localization.ts +22 -0
- package/src/benchmarks/types.ts +2 -0
- package/src/blog/article/BlogArticleContents.svelte +1 -1
- package/src/blog/article/BlogArticleEnd.astro +6 -9
- package/src/blog/article/BlogArticleMasthead.astro +17 -9
- package/src/config.ts +3 -0
- package/src/css/NamespaceUtilityTable.astro +1 -1
- package/src/css/ThemeNumberVariableTable.astro +1 -1
- package/src/css/foundation-data/specimen-content.ts +2 -2
- package/src/css/markdown.ts +64 -14
- package/src/demo/Demo.svelte +10 -4
- package/src/demo/DemoAsset.astro +6 -3
- package/src/demo/DemoAxes.svelte +4 -2
- package/src/demo/DemoCatalog.astro +9 -6
- package/src/demo/DemoComparison.svelte +3 -0
- package/src/demo/DemoContainer.svelte +8 -3
- package/src/demo/DemoControls.svelte +5 -1
- package/src/demo/DemoCopyButton.svelte +9 -4
- package/src/demo/DemoCopyGroup.svelte +6 -2
- package/src/demo/DemoExample.astro +3 -1
- package/src/demo/DemoFeatureSupport.svelte +5 -1
- package/src/demo/DemoGeneratedCSS.svelte +5 -1
- package/src/demo/DemoIndex.astro +6 -3
- package/src/demo/DemoLegend.svelte +3 -1
- package/src/demo/DemoMeasure.svelte +4 -2
- package/src/demo/DemoMedia.svelte +3 -1
- package/src/demo/DemoMotion.svelte +6 -3
- package/src/demo/DemoPaletteGroups.svelte +4 -2
- package/src/demo/DemoScrollArea.svelte +2 -0
- package/src/demo/DemoStyleComparison.astro +6 -3
- package/src/demo/DemoSurface.svelte +2 -0
- package/src/demo/DemoThemeComparison.astro +5 -2
- package/src/demo/DemoTokenTable.astro +5 -3
- package/src/demo/DemoViewTransition.astro +3 -1
- package/src/demo/DemoViewport.svelte +18 -11
- package/src/demo/DemoWaterfall.astro +4 -2
- package/src/demo/ProjectStyleExample.astro +4 -1
- package/src/demo/foundations/FoundationDialog.astro +6 -2
- package/src/demo/foundations/FoundationMedia.astro +1 -0
- package/src/demo/foundations/FoundationShrink.astro +1 -0
- package/src/demo/foundations/FoundationTokensView.astro +16 -5
- package/src/demo/foundations/Palette.svelte +11 -7
- package/src/demo/foundations/dialog-copy.d.ts +1 -0
- package/src/demo/foundations/dialog-copy.js +5 -0
- package/src/demo/illustration-materials.ts +1 -1
- package/src/demo/illustration.css +218 -0
- package/src/docs-shell/common/i18n.config.d.ts +1 -1
- package/src/docs-shell/common/i18n.config.js +4 -12
- package/src/docs-shell/common/locales.d.ts +8 -0
- package/src/docs-shell/common/locales.js +18 -0
- package/src/docs-shell/common/terminology.json +32 -0
- package/src/docs-shell/common/translations.d.ts +3 -0
- package/src/docs-shell/common/translations.js +294 -0
- package/src/docs-shell/components/ArticleHeader.astro +5 -3
- package/src/docs-shell/components/Callout.astro +1 -0
- package/src/docs-shell/components/CodeCopyButton.astro +5 -1
- package/src/docs-shell/components/CodeTabBar.astro +7 -3
- package/src/docs-shell/components/CodeTabs.astro +2 -1
- package/src/docs-shell/components/CodeView.astro +1 -1
- package/src/docs-shell/components/DocHeader.svelte +13 -17
- package/src/docs-shell/components/DocHeading.astro +3 -1
- package/src/docs-shell/components/DocMenuButton.svelte +126 -61
- package/src/docs-shell/components/DocSidebar.svelte +3 -2
- package/src/docs-shell/components/DocVersionSelect.svelte +2 -0
- package/src/docs-shell/components/DocumentAPIIndex.astro +1 -1
- package/src/docs-shell/components/DocumentChoices.astro +1 -1
- package/src/docs-shell/components/DocumentCodeExampleView.astro +3 -1
- package/src/docs-shell/components/DocumentCodeTable.astro +4 -2
- package/src/docs-shell/components/DocumentCopyButton.svelte +3 -0
- package/src/docs-shell/components/DocumentDisclosure.astro +2 -0
- package/src/docs-shell/components/DocumentFileTree.astro +3 -0
- package/src/docs-shell/components/DocumentFlow.astro +4 -1
- package/src/docs-shell/components/DocumentIllustration.astro +8 -12
- package/src/docs-shell/components/DocumentKeyList.astro +6 -4
- package/src/docs-shell/components/DocumentNamespaceTable.astro +5 -3
- package/src/docs-shell/components/DocumentOptionEntry.astro +0 -1
- package/src/docs-shell/components/DocumentOptionList.astro +1 -1
- package/src/docs-shell/components/DocumentOptions.astro +3 -2
- package/src/docs-shell/components/DocumentParameters.astro +1 -1
- package/src/docs-shell/components/DocumentPrompt.astro +2 -0
- package/src/docs-shell/components/DocumentValueList.astro +1 -1
- package/src/docs-shell/components/DocumentationIndex.svelte +8 -7
- package/src/docs-shell/components/ExpandContent.svelte +3 -0
- package/src/docs-shell/components/ExplorerView.astro +1 -0
- package/src/docs-shell/components/GeneratedCSS.astro +4 -1
- package/src/docs-shell/components/Header.svelte +1 -1
- package/src/docs-shell/components/InlineCode.astro +1 -0
- package/src/docs-shell/components/InteractingIndicator.astro +1 -0
- package/src/docs-shell/components/LanguageButton.svelte +1 -0
- package/src/docs-shell/components/LanguageSelect.svelte +2 -0
- package/src/docs-shell/components/Link.svelte +3 -2
- package/src/docs-shell/components/NotFound.astro +6 -4
- package/src/docs-shell/components/PMAction.astro +1 -0
- package/src/docs-shell/components/PageContent.svelte +1 -1
- package/src/docs-shell/components/PageContentDisclosure.astro +2 -1
- package/src/docs-shell/components/PageContentList.svelte +2 -0
- package/src/docs-shell/components/PageNavs.astro +3 -3
- package/src/docs-shell/components/SearchButton.svelte +3 -0
- package/src/docs-shell/components/SearchDialog.svelte +18 -16
- package/src/docs-shell/components/Segments.svelte +2 -0
- package/src/docs-shell/components/StepSection.astro +1 -2
- package/src/docs-shell/components/Tabs.astro +1 -0
- package/src/docs-shell/components/ThemeSelect.svelte +2 -0
- package/src/docs-shell/components/TimeAgo.svelte +6 -6
- package/src/docs-shell/components/markdown/Table.astro +1 -0
- package/src/docs-shell/components/markdown-components.ts +0 -1
- package/src/docs-shell/contexts/search.ts +1 -1
- package/src/docs-shell/factories/Page.astro +10 -5
- package/src/docs-shell/factories/create-page.ts +33 -6
- package/src/docs-shell/layouts/BlogArticle.astro +3 -11
- package/src/docs-shell/remark/markdown-components.js +28 -7
- package/src/docs-shell/remark/slug-and-toc.js +5 -7
- package/src/docs-shell/scripts/code.ts +5 -2
- package/src/docs-shell/scripts/document.ts +1 -1
- package/src/docs-shell/site.ts +9 -1
- package/src/docs-shell/types/Metadata.ts +11 -0
- package/src/docs-shell/utils/document-copy.d.ts +2 -0
- package/src/docs-shell/utils/document-copy.js +18 -0
- package/src/docs-shell/utils/generate-metadata.ts +5 -1
- package/src/docs-shell/utils/head.ts +5 -2
- package/src/docs-shell/utils/i18n-pathname.ts +13 -2
- package/src/docs-shell/utils/i18n.ts +4 -1
- package/src/docs-shell/utils/localized-metadata.ts +22 -0
- package/src/docs-shell/utils/markdown-links.ts +61 -0
- package/src/docs-shell/utils/markdown-tree.ts +19 -6
- package/src/docs-shell/utils/resolve-heading.d.ts +1 -0
- package/src/docs-shell/utils/resolve-heading.js +21 -0
- package/src/docs-shell/utils/search-pages.ts +75 -22
- package/src/examples/components/ArticleTransitionScene.svelte +4 -0
- package/src/examples/layout-system/page.astro +0 -1
- package/src/home/HomeBentoFrame.astro +1 -0
- package/src/home/HomeBentoGrid.astro +1 -0
- package/src/home/bento.css +167 -0
- package/src/home/design.css +1 -1
- package/src/home/hero.css +5 -0
- package/src/home/home.css +4 -576
- package/src/home/segmented-control.css +94 -0
- package/src/layouts/Document.astro +4 -2
- package/src/public/icons/json.svg +1 -0
- package/src/scripts/atomic-class-authoring.ts +98 -0
- package/src/scripts/localization.ts +239 -0
- package/src/scripts/mdx-sample.ts +12 -0
- package/src/scripts/static-social.ts +17 -3
- package/src/scripts/style-delivery.mjs +120 -0
- package/src/sections/blog.astro +1 -1
- package/src/sections/guide.astro +4 -3
- package/src/styles/blog-article.css +10 -7
- package/src/styles/blog-materials.css +13 -0
- package/src/styles/demo.css +0 -1
- package/src/styles/docs-shell/code.css +5 -61
- package/src/styles/docs-shell/documentation-search.css +1 -0
- package/src/styles/docs-shell/header.css +2 -73
- package/src/styles/docs-shell/menu.css +37 -17
- package/src/styles/docs-shell/page-content.css +2 -37
- package/src/styles/docs-shell/prose.css +18 -9
- package/src/styles/docs-shell/steps.css +2 -39
- package/src/styles/document-comparison.css +5 -2
- package/src/styles/documentation-illustration.css +1 -9
- package/src/styles/documentation-index.css +2 -1
- package/src/styles/documents.css +2 -4
- package/src/styles/interface.css +5 -3
- package/src/styles/system/DESIGN.md +34 -14
- package/src/styles/system/browser.css +21 -0
- package/src/styles/system/button-feedback.css +13 -0
- package/src/styles/system/callout.css +14 -0
- package/src/styles/system/chart.css +18 -0
- package/src/styles/system/checks.css +18 -0
- package/src/styles/system/code-panel.css +82 -0
- package/src/styles/system/code-tabs.css +40 -0
- package/src/styles/system/code.css +8 -85
- package/src/styles/system/compare.css +7 -0
- package/src/styles/system/controls.css +10 -109
- package/src/styles/system/copy.css +32 -0
- package/src/styles/system/data.css +10 -134
- package/src/styles/system/dialog.css +16 -0
- package/src/styles/system/disclosure.css +19 -0
- package/src/styles/system/expand.css +11 -0
- package/src/styles/system/fields.css +25 -0
- package/src/styles/system/header-core.css +101 -0
- package/src/styles/system/hint.css +5 -0
- package/src/styles/system/index.css +13 -0
- package/src/styles/system/inline-code.css +4 -0
- package/src/styles/system/kbd.css +4 -0
- package/src/styles/system/logos.css +10 -0
- package/src/styles/system/menu.css +14 -0
- package/src/styles/system/metrics.css +22 -0
- package/src/styles/system/pagehead.css +13 -0
- package/src/styles/system/pager.css +13 -0
- package/src/styles/system/parameters.css +17 -0
- package/src/styles/system/prompt.css +7 -0
- package/src/styles/system/prose.css +4 -75
- package/src/styles/system/range.css +12 -0
- package/src/styles/system/reading.css +44 -0
- package/src/styles/system/scroll.css +6 -0
- package/src/styles/system/search-trigger.css +10 -0
- package/src/styles/system/segmented.css +22 -0
- package/src/styles/system/sheet.css +8 -0
- package/src/styles/system/shell.css +8 -102
- package/src/styles/system/sidebar.css +14 -0
- package/src/styles/system/source.css +5 -0
- package/src/styles/system/specimens.css +3 -0
- package/src/styles/system/stage.css +18 -0
- package/src/styles/system/steps.css +51 -0
- package/src/styles/system/surfaces.css +8 -104
- package/src/styles/system/table.css +23 -0
- package/src/styles/system/toc.css +59 -0
- package/src/styles/system/tooltip.css +6 -0
- package/src/styles/system/tray-code.css +6 -0
- package/src/styles/system/tray.css +20 -0
- package/src/styles/system/tree.css +15 -0
- package/src/styles/system/waterfall.css +14 -0
- package/src/virtual.d.ts +5 -1
- package/src/blog/article/language.ts +0 -29
|
@@ -1,134 +1,10 @@
|
|
|
1
|
-
/*
|
|
2
|
-
@
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
.ui-table tbody tr:hover { background: light-dark(oklch(22% .002 265 / .022), oklch(100% 0 none / .025)); }
|
|
12
|
-
.ui-table tbody tr > :first-child { color: var(--ui-text-strong); }
|
|
13
|
-
.ui-table :is(td, th)[data-align="end"] { text-align: end; font-variant-numeric: tabular-nums; white-space: nowrap; }
|
|
14
|
-
/* In a cell code is a fill only: several hairline chips to a cell read as a grid inside the grid. A long value may wrap
|
|
15
|
-
when the table runs out of room, so the prose column beside it keeps a readable measure. */
|
|
16
|
-
/* A code name in a column head reads as part of the caption: the head's ink and size in mono, without a chip. */
|
|
17
|
-
.ui-table thead th code { padding: 0; border-radius: 0; background: none; color: inherit; box-shadow: none; font: inherit; font-family: var(--font-family-mono); font-size: .75rem; letter-spacing: 0; }
|
|
18
|
-
.ui-table :is(td, tbody th) code { padding: .125em .375em; border-radius: var(--ui-radius-xs); background: var(--ui-surface-chip); color: var(--ui-text-strong); box-shadow: none; font: var(--ui-weight-regular) .8125rem/1.6 var(--font-family-mono); overflow-wrap: anywhere; -webkit-box-decoration-break: clone; box-decoration-break: clone; }
|
|
19
|
-
/* The row's key reads whole: the first column's names break only where the text allows (a space, a slash marked
|
|
20
|
-
with <wbr>), never inside a name. */
|
|
21
|
-
.ui-table :is(td:first-child, tbody th) code { white-space: normal; overflow-wrap: normal; }
|
|
22
|
-
.ui-table :is(td, tbody th) .ui-preview { display: inline-block; width: 1.25rem; height: 1.25rem; margin-right: var(--ui-space-xs); border-radius: var(--ui-radius-sm); vertical-align: -.3em; box-shadow: inset 0 0 0 1px var(--ui-line-contour); }
|
|
23
|
-
.ui-table[data-density="compact"] :is(th, td) { padding-block: .4375rem; }
|
|
24
|
-
/* Lookup: the key column fits its longest key; values wrap at their spaces */
|
|
25
|
-
.ui-table[data-variant="lookup"] tbody th { width: 1%; white-space: nowrap; }
|
|
26
|
-
.ui-table[data-variant="lookup"] td code { white-space: normal; line-height: 1.5; }
|
|
27
|
-
.ui-table :is(td, tbody th) ul { display: flex; flex-wrap: wrap; gap: 6px; margin: 0; padding: 0; list-style: none; }
|
|
28
|
-
.ui-table :is(td, tbody th) .ui-disclosure > summary { min-height: 2.25rem; }
|
|
29
|
-
.ui-table-caption { display: flex; justify-content: space-between; gap: var(--ui-space-md); padding: var(--ui-space-sm) var(--ui-space-md); color: var(--ui-text-muted); font-size: .75rem; box-shadow: inset 0 1px 0 var(--ui-line-hair); }
|
|
30
|
-
|
|
31
|
-
/* Metrics: aligned values with their caveats */
|
|
32
|
-
.ui-metrics { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 10rem), 1fr)); gap: var(--ui-inset); }
|
|
33
|
-
.ui-metric { display: grid; align-content: start; min-width: 0; gap: 6px; overflow-wrap: anywhere; padding: var(--ui-space-md); border-radius: var(--ui-radius-lg); @apply --ui-sheet-face; box-shadow: var(--ui-elevation-rise-1); }
|
|
34
|
-
.ui-metric > small { color: var(--ui-text-muted); @apply --ui-label-type; }
|
|
35
|
-
.ui-metric > b { color: var(--ui-text-strong); font-size: 1.625rem; font-weight: var(--ui-weight-heading); letter-spacing: -.03em; line-height: 1.1; font-variant-numeric: tabular-nums; }
|
|
36
|
-
.ui-metric > b > span { color: var(--ui-text-muted); font-size: .875rem; font-weight: var(--ui-weight-medium); letter-spacing: 0; }
|
|
37
|
-
.ui-metric > p { margin: 0; color: var(--ui-text-muted); font-size: .75rem; line-height: 1.5; }
|
|
38
|
-
.ui-bar { height: 6px; border-radius: var(--ui-radius-pill); background: var(--ui-surface-well); box-shadow: var(--ui-elevation-sink); overflow: hidden; }
|
|
39
|
-
.ui-bar > i { display: block; height: 100%; border-radius: inherit; background: var(--ui-text-strong); }
|
|
40
|
-
.ui-bar > i[data-tone="muted"] { background: var(--ui-line-mark); }
|
|
41
|
-
/* Series tones appear only where a legend names them */
|
|
42
|
-
.ui-bar > i[data-tone="blue"] { background: var(--ui-tone-blue); }
|
|
43
|
-
.ui-bar > i[data-tone="violet"] { background: var(--ui-tone-violet); }
|
|
44
|
-
.ui-bar > i[data-tone="amber"] { background: var(--ui-tone-amber); }
|
|
45
|
-
.ui-bar > i[data-tone="green"] { background: var(--ui-tone-green); }
|
|
46
|
-
.ui-bar > i[data-tone="red"] { background: var(--ui-tone-red); }
|
|
47
|
-
.ui-bar > i[data-tone="neutral"] { background: var(--ui-tone-neutral); }
|
|
48
|
-
.ui-bar[data-variant="stacked"] { display: flex; gap: 1px; }
|
|
49
|
-
.ui-bar[data-variant="stacked"] > i { flex: none; border-radius: 0; }
|
|
50
|
-
.ui-bar[data-variant="stacked"] > i:first-child { border-start-start-radius: inherit; border-end-start-radius: inherit; }
|
|
51
|
-
.ui-bar[data-variant="stacked"] > i:last-child { border-start-end-radius: inherit; border-end-end-radius: inherit; }
|
|
52
|
-
|
|
53
|
-
/* Evidence footer: the source and its date, always beside the claim */
|
|
54
|
-
.ui-source { display: flex; flex-wrap: wrap; align-items: center; gap: 4px var(--ui-space-md); padding: var(--ui-space-sm) var(--ui-space-sm) 2px; color: var(--ui-text-muted); font: var(--ui-weight-regular) .71875rem/1.5 var(--font-family-mono); }
|
|
55
|
-
.ui-source a { color: var(--ui-text-body); text-decoration: underline; text-decoration-color: var(--ui-line-mark); text-underline-offset: .2em; }
|
|
56
|
-
|
|
57
|
-
/* Parameters / contracts: a definition list that reads like a table */
|
|
58
|
-
.ui-params { display: grid; margin: 0; border-radius: var(--ui-radius-xl); background: var(--ui-surface-sheet); box-shadow: inset 0 0 0 1px var(--ui-line-contour); }
|
|
59
|
-
.ui-params > div { display: grid; grid-template-columns: minmax(8rem, 13rem) minmax(0, 1fr); gap: var(--ui-space-xs) var(--ui-space-lg); padding: var(--ui-space-sm) var(--ui-space-md); border-top: 1px solid var(--ui-line-hair); }
|
|
60
|
-
.ui-params > div:first-child { border-top: 0; }
|
|
61
|
-
.ui-params dt { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px; min-width: 0; overflow-wrap: anywhere; color: var(--ui-text-strong); font: var(--ui-weight-medium) .8125rem/1.5 var(--font-family-mono); }
|
|
62
|
-
.ui-params dt small { color: var(--ui-text-muted); font-weight: var(--ui-weight-regular); }
|
|
63
|
-
.ui-params dd { margin: 0; color: var(--ui-text-body); font-size: var(--ui-text-small); line-height: 1.6; overflow-wrap: anywhere; }
|
|
64
|
-
.ui-params dd > * { margin: 0; }
|
|
65
|
-
.ui-params dd > * + * { margin-top: var(--ui-space-xs); }
|
|
66
|
-
.ui-params dd small { color: var(--ui-text-muted); font-size: .75rem; }
|
|
67
|
-
/* A link in a description reads as the prose's own links do. */
|
|
68
|
-
.ui-params dd a:not([class]) { color: var(--ui-text-strong); text-decoration: underline 1px var(--ui-line-strong); text-underline-offset: .24em; }
|
|
69
|
-
.ui-params dd a:not([class]):hover { text-decoration-color: currentColor; }
|
|
70
|
-
.ui-params :is(dt, dd) :is(h3, h4) { margin: 0; font: inherit; color: inherit; letter-spacing: inherit; }
|
|
71
|
-
.ui-params dd code { padding: .125em .375em; border-radius: var(--ui-radius-xs); background: var(--ui-surface-chip); color: var(--ui-text-strong); box-shadow: inset 0 0 0 1px var(--ui-line-hair); font: var(--ui-weight-regular) .8125rem/1 var(--font-family-mono); }
|
|
72
|
-
@media (width < 35rem) { .ui-params > div { grid-template-columns: 1fr; } }
|
|
73
|
-
|
|
74
|
-
/* Steps: numbered sequence on one hairline rail; code stays in the reading flow */
|
|
75
|
-
.ui-steps { counter-reset: step; display: grid; gap: 0; margin: 0; padding: 0; list-style: none; }
|
|
76
|
-
.ui-steps > li { counter-increment: step; position: relative; display: grid; grid-template-columns: 1.75rem minmax(0, 1fr); gap: var(--ui-space-lg); padding-bottom: var(--ui-space-2xl); }
|
|
77
|
-
.ui-steps > li::before { content: counter(step, decimal-leading-zero); display: grid; place-items: center; width: 1.75rem; height: 1.75rem; color: var(--ui-text-muted); font: var(--ui-weight-regular) .875rem/1 var(--font-family-sans); font-variant-numeric: tabular-nums; }
|
|
78
|
-
.ui-steps > li::after { content: ""; position: absolute; top: 2.25rem; bottom: .5rem; left: .875rem; width: 1px; background: var(--ui-line-divider); }
|
|
79
|
-
.ui-steps > li:last-child { padding-bottom: 0; }
|
|
80
|
-
.ui-steps > li:last-child::after { display: none; }
|
|
81
|
-
.ui-steps > li > div > h4 { margin: .125rem 0 var(--ui-space-xs); color: var(--ui-text-strong); font-size: var(--ui-text-base); font-weight: var(--ui-weight-medium); line-height: 1.5rem; }
|
|
82
|
-
.ui-steps > li > div > p { margin: 0 0 var(--ui-space-sm); }
|
|
83
|
-
|
|
84
|
-
/* Index: grouped links with a useful start — free-standing hairline sheets, so a short last row leaves only canvas */
|
|
85
|
-
.ui-index { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 14rem), 1fr)); gap: var(--ui-space-sm); }
|
|
86
|
-
.ui-index > a { display: grid; align-content: start; gap: var(--ui-space-2xs); padding: var(--ui-space-md) var(--ui-space-md) 1.125rem; border-radius: var(--ui-radius-xl); background: var(--ui-surface-sheet); color: var(--ui-text-body); box-shadow: inset 0 0 0 1px var(--ui-line-contour), 0 1px 0 var(--ui-lip); text-decoration: none; transition: box-shadow var(--ui-duration-quick) var(--ui-ease), translate var(--ui-duration-quick) var(--ui-ease); }
|
|
87
|
-
.ui-index > a:hover { translate: 0 -.5px; box-shadow: var(--ui-elevation-rise-1h); }
|
|
88
|
-
.ui-index > a:focus-visible { @apply --ui-focus-ring; outline-offset: 2px; }
|
|
89
|
-
.ui-index > a > svg { width: 18px; height: 18px; margin-bottom: var(--ui-space-2xs); color: var(--ui-text-strong); stroke-width: 1.5; }
|
|
90
|
-
.ui-index > a > b { color: var(--ui-text-strong); font-size: .9375rem; font-weight: var(--ui-weight-medium); line-height: 1.4; letter-spacing: -.006em; }
|
|
91
|
-
.ui-index > a > span { font-size: .8125rem; line-height: 1.6; color: var(--ui-text-muted); }
|
|
92
|
-
.ui-index > a > b code { font: var(--ui-weight-medium) .875rem/1.45 var(--font-family-mono); letter-spacing: 0; overflow-wrap: anywhere; }
|
|
93
|
-
.ui-index[data-density="compact"] { grid-template-columns: repeat(auto-fill, minmax(min(100%, 12rem), 1fr)); gap: var(--ui-space-xs); }
|
|
94
|
-
.ui-index[data-density="compact"] > a { gap: 2px; padding: var(--ui-space-sm) var(--ui-space-md); }
|
|
95
|
-
|
|
96
|
-
/* Logo directory: compact, open rows; the surrounding group owns the section rule. */
|
|
97
|
-
.ui-logos { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 9rem), 1fr)); gap: var(--ui-space-2xs) var(--ui-space-md); }
|
|
98
|
-
.ui-logos > a { display: flex; align-items: center; gap: var(--ui-space-sm); min-width: 0; min-height: 2.75rem; padding: .5rem var(--ui-space-xs); border-radius: var(--ui-radius-sm); color: var(--ui-text-body); font-size: .8125rem; line-height: 1.5; text-decoration: none; transition: background var(--ui-duration-quick) var(--ui-ease), color var(--ui-duration-quick) var(--ui-ease); }
|
|
99
|
-
.ui-logos > a:hover { color: var(--ui-text-strong); background: var(--ui-surface-chip); }
|
|
100
|
-
.ui-logos > a:focus-visible { @apply --ui-focus-ring; outline-offset: 2px; }
|
|
101
|
-
.ui-logos > a > svg { flex: none; width: 1.25rem; height: 1.25rem; }
|
|
102
|
-
.ui-logos > a > span { min-width: 0; overflow-wrap: anywhere; }
|
|
103
|
-
|
|
104
|
-
/* Chart frame: units, series and sample context together. Captions and readings are small sans with tabular figures. */
|
|
105
|
-
.ui-chart { display: grid; gap: var(--ui-space-md); padding: var(--ui-space-lg); border-radius: var(--ui-radius-xl); @apply --ui-sheet-face; box-shadow: var(--ui-elevation-rise-1); }
|
|
106
|
-
.ui-chart-head { display: flex; flex-wrap: wrap; justify-content: space-between; gap: var(--ui-space-xs) var(--ui-space-md); }
|
|
107
|
-
.ui-chart-head b { color: var(--ui-text-strong); font-size: var(--ui-text-small); font-weight: var(--ui-weight-strong); }
|
|
108
|
-
.ui-chart-head small { display: block; color: var(--ui-text-muted); font: var(--ui-weight-regular) var(--ui-text-caption)/1.5 var(--font-family-sans); font-variant-numeric: tabular-nums; }
|
|
109
|
-
.ui-chart-row { display: grid; grid-template-columns: minmax(6.5rem, 12rem) minmax(0, 1fr) minmax(4.5rem, auto); align-items: center; gap: var(--ui-space-xs) var(--ui-space-sm); font-size: .8125rem; }
|
|
110
|
-
.ui-chart-row > span:first-child { display: flex; flex-wrap: wrap; align-items: center; gap: 2px var(--ui-space-xs); min-width: 0; color: var(--ui-text-strong); overflow-wrap: anywhere; }
|
|
111
|
-
.ui-chart-row > span:first-child > small { flex-basis: 100%; color: var(--ui-text-muted); font: var(--ui-weight-regular) .75rem/1.4 var(--font-family-sans); font-variant-numeric: tabular-nums; }
|
|
112
|
-
.ui-chart-row > output { color: var(--ui-text-body); font: var(--ui-weight-regular) .8125rem/1 var(--font-family-sans); text-align: end; white-space: nowrap; font-variant-numeric: tabular-nums; }
|
|
113
|
-
/* A stacked row names its segments under the bar */
|
|
114
|
-
.ui-chart-row > .ui-legend { grid-column: 2 / -1; gap: 2px var(--ui-space-md); font-size: .75rem; }
|
|
115
|
-
.ui-chart-row > .ui-legend b { color: var(--ui-text-strong); font-weight: var(--ui-weight-medium); }
|
|
116
|
-
@media (width < 35rem) {
|
|
117
|
-
.ui-chart-row { grid-template-columns: minmax(0, 1fr) auto; }
|
|
118
|
-
.ui-chart-row > .ui-bar { grid-column: 1 / -1; grid-row: 2; }
|
|
119
|
-
.ui-chart-row > .ui-legend { grid-column: 1 / -1; }
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
/* Waterfall: resource order on one time axis */
|
|
123
|
-
.ui-waterfall { display: grid; gap: 2px; padding: var(--ui-space-md) var(--ui-space-lg) var(--ui-space-lg); border-radius: var(--ui-radius-xl); @apply --ui-sheet-face; box-shadow: var(--ui-elevation-rise-1); }
|
|
124
|
-
.ui-waterfall-axis { display: grid; grid-template-columns: 7.5rem 1fr; margin-bottom: var(--ui-space-xs); color: var(--ui-text-muted); font: var(--ui-weight-regular) .65625rem/1 var(--font-family-mono); }
|
|
125
|
-
.ui-waterfall-axis > div { display: flex; justify-content: space-between; }
|
|
126
|
-
.ui-waterfall-row { display: grid; grid-template-columns: 7.5rem 1fr; align-items: center; min-height: 1.75rem; font-size: .78125rem; }
|
|
127
|
-
.ui-waterfall-row > span { overflow: hidden; color: var(--ui-text-strong); font-family: var(--font-family-mono); font-size: .71875rem; text-overflow: ellipsis; white-space: nowrap; }
|
|
128
|
-
.ui-waterfall-track { position: relative; height: 100%; background: repeating-linear-gradient(90deg, var(--ui-line-hair) 0 1px, transparent 1px 25%); }
|
|
129
|
-
.ui-waterfall-track > i { position: absolute; top: 50%; height: 8px; translate: 0 -50%; border-radius: 3px; background: var(--ui-text-strong); }
|
|
130
|
-
@media (forced-colors: active) { .ui-waterfall-track > i { box-sizing: border-box; border: 1px solid CanvasText; } }
|
|
131
|
-
.ui-waterfall-track > i[data-tone="muted"] { background: var(--ui-line-mark); }
|
|
132
|
-
.ui-waterfall-track > i[data-tone="blocking"] { background: var(--ui-tone-amber); }
|
|
133
|
-
.ui-waterfall-mark { position: absolute; top: 2px; bottom: 2px; width: 2px; margin-left: -1px; border-radius: 1px; background: var(--ui-status-danger); }
|
|
134
|
-
}
|
|
1
|
+
/* Explicit full data collection. Components import their own leaf stylesheet. */
|
|
2
|
+
@import './table.css';
|
|
3
|
+
@import './metrics.css';
|
|
4
|
+
@import './source.css';
|
|
5
|
+
@import './parameters.css';
|
|
6
|
+
@import './steps.css';
|
|
7
|
+
@import './index.css';
|
|
8
|
+
@import './logos.css';
|
|
9
|
+
@import './chart.css';
|
|
10
|
+
@import './waterfall.css';
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/* dialog: owned component styles; shared definitions come from the foundation. */
|
|
2
|
+
@layer components {
|
|
3
|
+
.ui-dialog { width: min(40rem, calc(100vw - 2rem)); max-height: min(36rem, calc(100dvh - 4rem)); padding: 0; overflow: hidden; border: 0; border-radius: var(--ui-radius-2xl); background: var(--ui-surface-float); color: var(--ui-text-body); box-shadow: var(--ui-elevation-overlay); }
|
|
4
|
+
.ui-dialog::backdrop { background: var(--ui-surface-scrim); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
|
|
5
|
+
.ui-dialog-search { display: flex; flex-wrap: wrap; align-items: center; gap: var(--ui-space-sm); min-height: 3.5rem; padding: 0 var(--ui-space-md); box-shadow: inset 0 -1px 0 var(--ui-line-hair); }
|
|
6
|
+
.ui-dialog-search input { flex: 1 1 8rem; min-width: 0; border: 0; background: transparent; color: var(--ui-text-strong); font: var(--ui-weight-regular) 1rem/1 var(--font-family-sans); }
|
|
7
|
+
.ui-dialog-search input:focus { outline: none; }
|
|
8
|
+
@media (forced-colors: active) { .ui-dialog-search input:focus-visible { outline: 2px solid Highlight; outline-offset: 2px; } }
|
|
9
|
+
.ui-results { display: grid; gap: 2px; margin: 0; padding: var(--ui-inset); list-style: none; }
|
|
10
|
+
.ui-results > li > a { display: grid; gap: 2px; padding: .625rem .75rem; border-radius: var(--ui-radius-md); color: var(--ui-text-body); text-decoration: none; }
|
|
11
|
+
.ui-results > li > a small { color: var(--ui-text-muted); font: var(--ui-weight-regular) .75rem/1.4 var(--font-family-sans); }
|
|
12
|
+
.ui-results > li > a b { color: var(--ui-text-strong); font-weight: var(--ui-weight-medium); font-size: var(--ui-text-small); }
|
|
13
|
+
.ui-results > li > a[aria-selected="true"], .ui-results > li > a:hover { background: var(--ui-surface-chip); box-shadow: inset 0 0 0 1px var(--ui-line-hair); }
|
|
14
|
+
.ui-dialog-foot { display: flex; flex-wrap: wrap; gap: var(--ui-space-md); padding: var(--ui-space-sm) var(--ui-space-md); box-shadow: inset 0 1px 0 var(--ui-line-hair); color: var(--ui-text-muted); font-size: .71875rem; }
|
|
15
|
+
.ui-dialog-foot span { display: inline-flex; align-items: center; gap: 6px; }
|
|
16
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/* disclosure: owned component styles; shared definitions come from the foundation. */
|
|
2
|
+
@layer components {
|
|
3
|
+
.ui-disclosure { min-width: 0; }
|
|
4
|
+
.ui-disclosure > summary { display: flex; flex-wrap: wrap; align-items: center; gap: var(--ui-space-xs); min-height: 2.75rem; color: var(--ui-text-body); font: var(--ui-weight-medium) .8125rem/1.3 var(--font-family-sans); list-style: none; cursor: pointer; }
|
|
5
|
+
.ui-disclosure > summary::-webkit-details-marker { display: none; }
|
|
6
|
+
.ui-disclosure > summary::before { content: ""; flex: none; width: 14px; height: 14px; background: currentColor; opacity: .6; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='m6 3.5 4.5 4.5L6 12.5' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat; transition: rotate var(--ui-duration-base) var(--ui-ease); }
|
|
7
|
+
.ui-disclosure[open] > summary::before { rotate: 90deg; }
|
|
8
|
+
.ui-disclosure > summary:hover { color: var(--ui-text-strong); }
|
|
9
|
+
.ui-disclosure > summary:focus-visible { @apply --ui-focus-ring; outline-offset: 2px; border-radius: var(--ui-radius-md); }
|
|
10
|
+
.ui-disclosure > summary .ui-disclosure-meta { margin-left: auto; color: var(--ui-text-muted); font: var(--ui-weight-regular) .75rem/1 var(--font-family-sans); }
|
|
11
|
+
.ui-disclosure[data-variant="rule"] { border-block: 1px solid var(--ui-line-hair); }
|
|
12
|
+
.ui-disclosure[data-variant="rule"] + .ui-disclosure[data-variant="rule"] { border-top: 0; }
|
|
13
|
+
.ui-disclosure-body { padding-bottom: var(--ui-space-md); }
|
|
14
|
+
/* Preserve the disclosure's bottom inset when its body is also a tray caption,
|
|
15
|
+
independent of which component stylesheet is shared by the build. */
|
|
16
|
+
.ui-disclosure-body.ui-tray-caption { padding-bottom: var(--ui-space-md); }
|
|
17
|
+
.ui-disclosure > .ui-disclosure-body > :first-child { margin-top: 0; }
|
|
18
|
+
.ui-disclosure > .ui-disclosure-body > :last-child { margin-bottom: 0; }
|
|
19
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/* expand: owned component styles; shared definitions come from the foundation. */
|
|
2
|
+
@layer components {
|
|
3
|
+
.ui-expand { position: relative; min-width: 0; }
|
|
4
|
+
.ui-expand[data-expanded="false"] > :first-child { max-height: 30rem; overflow: hidden; }
|
|
5
|
+
.ui-expand-control { display: flex; justify-content: center; padding-top: var(--ui-space-sm); }
|
|
6
|
+
.ui-expand[data-expanded="false"] > .ui-expand-control { position: absolute; inset-inline: 0; bottom: 0; padding-top: 6rem; background: linear-gradient(to bottom, transparent, var(--ui-surface-canvas) 72%); }
|
|
7
|
+
.ui-expand[data-expanded="true"] > .ui-expand-control { position: sticky; bottom: var(--ui-space-sm); pointer-events: none; }
|
|
8
|
+
.ui-expand-control > .ui-button { pointer-events: auto; }
|
|
9
|
+
.ui-expand-control > .ui-button > svg { transition: rotate var(--ui-duration-quick) var(--ui-ease); }
|
|
10
|
+
.ui-expand[data-expanded="true"] > .ui-expand-control > .ui-button > svg { rotate: 180deg; }
|
|
11
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/* fields: owned component styles; shared definitions come from the foundation. */
|
|
2
|
+
@layer components {
|
|
3
|
+
.ui-field { display: grid; gap: var(--ui-space-xs); color: var(--ui-text-strong); font-size: var(--ui-text-small); font-weight: var(--ui-weight-medium); }
|
|
4
|
+
.ui-field-hint { color: var(--ui-text-muted); font-size: .75rem; font-weight: var(--ui-weight-regular); }
|
|
5
|
+
.ui-input, .ui-select {
|
|
6
|
+
width: 100%; min-height: 2.5rem; padding: .5625rem .75rem; border: 0; border-radius: var(--ui-radius-md);
|
|
7
|
+
background: var(--ui-surface-well); color: var(--ui-text-strong); box-shadow: var(--ui-elevation-sink);
|
|
8
|
+
font: var(--ui-weight-regular) var(--ui-text-small)/1.45 var(--font-family-sans); resize: vertical;
|
|
9
|
+
transition: box-shadow var(--ui-duration-quick), background-color var(--ui-duration-quick);
|
|
10
|
+
}
|
|
11
|
+
.ui-input::placeholder { color: var(--ui-text-muted); }
|
|
12
|
+
.ui-input:hover:not(:focus, :disabled), .ui-select:hover:not(:focus, :disabled) { background: var(--ui-surface-well-hover); }
|
|
13
|
+
.ui-input:focus, .ui-select:focus-visible { outline: none; background: var(--ui-surface-sheet); box-shadow: inset 0 0 0 1px var(--ui-line-mark), 0 0 0 3px light-dark(oklch(22% .002 265 / .1), oklch(100% 0 none / .12)); }
|
|
14
|
+
.ui-input:disabled, .ui-select:disabled { color: var(--ui-text-disabled); cursor: not-allowed; }
|
|
15
|
+
.ui-select { appearance: none; padding-right: 2rem; cursor: pointer;
|
|
16
|
+
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23888' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m4.5 6.5 3.5 3.5 3.5-3.5'/%3E%3C/svg%3E");
|
|
17
|
+
background-repeat: no-repeat; background-position: right .625rem center; background-size: 14px; }
|
|
18
|
+
.ui-select[data-variant="raised"] { background-color: transparent; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23888' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m4.5 6.5 3.5 3.5 3.5-3.5'/%3E%3C/svg%3E"), linear-gradient(180deg, var(--ui-surface-sheet), var(--ui-surface-sheet-lo)); background-position: right .625rem center, 0 0; background-size: 14px, auto; box-shadow: var(--ui-elevation-rise-1); font-weight: var(--ui-weight-medium); }
|
|
19
|
+
.ui-select[data-variant="overlay"] { position: absolute; inset: 0; width: 100%; height: 100%; min-height: 0; padding: 0; opacity: 0; cursor: pointer; }
|
|
20
|
+
:has(> .ui-select[data-variant="overlay"]:focus-visible) { @apply --ui-focus-ring; outline-offset: 2px; }
|
|
21
|
+
|
|
22
|
+
@media (pointer: coarse) {
|
|
23
|
+
.ui-input, .ui-select { min-height: 2.75rem; }
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/* header-core: owned component styles; shared definitions come from the foundation. */
|
|
2
|
+
@layer components {
|
|
3
|
+
.ui-app { min-height: 100dvh; background: var(--ui-surface-canvas); color: var(--ui-text-body); }
|
|
4
|
+
|
|
5
|
+
.ui-header { position: sticky; top: 0; z-index: 40; display: flex; align-items: center; gap: var(--ui-space-lg); height: 3.75rem; padding: 0 var(--ui-space-lg);
|
|
6
|
+
background: color-mix(in oklab, var(--ui-surface-canvas) 82%, transparent); -webkit-backdrop-filter: blur(16px) saturate(1.3); backdrop-filter: blur(16px) saturate(1.3);
|
|
7
|
+
box-shadow: inset 0 -1px 0 var(--ui-line-hair); }
|
|
8
|
+
.ui-header-brand { display: inline-flex; align-items: center; gap: var(--ui-space-xs); color: var(--ui-text-strong); font-weight: var(--ui-weight-medium); font-size: 1.0625rem; letter-spacing: -.02em; text-decoration: none; white-space: nowrap; }
|
|
9
|
+
.ui-header-nav { display: flex; align-items: center; gap: var(--ui-space-3xs); }
|
|
10
|
+
.ui-header-nav > a { display: inline-flex; align-items: center; height: 2.25rem; padding: 0 .75rem; border-radius: var(--ui-radius-md); color: var(--ui-text-body); font-size: var(--ui-text-small); font-weight: var(--ui-weight-regular); text-decoration: none; transition: color var(--ui-duration-quick); }
|
|
11
|
+
.ui-header-nav > a:hover { color: var(--ui-text-strong); }
|
|
12
|
+
.ui-header-nav > a:is([aria-current="page"], [aria-current="true"]) { color: var(--ui-text-strong); font-weight: var(--ui-weight-medium); }
|
|
13
|
+
.ui-header-nav > a:focus-visible { @apply --ui-focus-ring; outline-offset: 0; }
|
|
14
|
+
.ui-header-nav > a > small { margin-left: var(--ui-space-2xs); padding: 1px 5px; border-radius: var(--ui-radius-xs); background: var(--ui-surface-chip); color: var(--ui-text-muted); box-shadow: inset 0 0 0 1px var(--ui-line-hair); font: var(--ui-weight-medium) .6875rem/1.4 var(--font-family-sans); letter-spacing: .02em; }
|
|
15
|
+
.ui-header-end { display: flex; align-items: center; gap: var(--ui-space-3xs); margin-left: auto; }
|
|
16
|
+
.ui-header-divider { width: 1px; height: 1rem; margin-inline: var(--ui-space-xs); background: var(--ui-line-divider); }
|
|
17
|
+
.ui-version { display: inline-flex; align-items: center; gap: var(--ui-space-3xs); height: 2.25rem; padding: 0 .375rem; border-radius: var(--ui-radius-md); color: var(--ui-text-body); font: var(--ui-weight-regular) var(--ui-text-small)/1 var(--font-family-sans); font-variant-numeric: tabular-nums; }
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/*
|
|
21
|
+
* The site header (`ui-header`, styles/system/shell.css) placed for the site: it sticks above documentation pages and
|
|
22
|
+
* overlays the homepage and blog as a stickable header that slides away while reading down (`data-tucked`) and is
|
|
23
|
+
* transparent at the top of the page (`data-background="transparent"`).
|
|
24
|
+
*/
|
|
25
|
+
@layer components {
|
|
26
|
+
/* A single rhythm for the page header and the modal's matching top bar. */
|
|
27
|
+
.ui-header, .ui-mobile-menu-bar { --ui-header-target: 2.25rem; --ui-header-icon: 1.125rem; --ui-header-control-gap: .5rem; }
|
|
28
|
+
.ui-header .ui-button.ui-header-control[data-shape="icon"], .ui-mobile-menu-bar .ui-button.ui-header-control[data-shape="icon"] {
|
|
29
|
+
position: relative; box-sizing: border-box; flex: 0 0 var(--ui-header-target); width: var(--ui-header-target); min-width: var(--ui-header-target); height: var(--ui-header-target); min-height: var(--ui-header-target); margin: 0; padding: 0; align-items: center; justify-content: center; border-radius: var(--ui-radius-md); line-height: 1;
|
|
30
|
+
}
|
|
31
|
+
.ui-header-control.ui-button[data-variant="quiet"]:not(:disabled) { background: transparent; box-shadow: none; translate: none; color: var(--ui-text-muted); }
|
|
32
|
+
.ui-header-control.ui-button[data-variant="quiet"]:where(:hover, :active, :focus-visible, :has(select:focus-visible)):not(:disabled) { color: var(--ui-text-strong); }
|
|
33
|
+
.ui-header-control.ui-button > svg:not(.ui-header-external) { flex: none; width: var(--ui-header-icon); height: var(--ui-header-icon); }
|
|
34
|
+
.ui-header .ui-header-end, .ui-header .ui-header-nav { align-items: center; gap: var(--ui-header-control-gap); }
|
|
35
|
+
.ui-header .ui-header-divider { flex: none; margin: 0 .25rem; height: var(--ui-header-icon); }
|
|
36
|
+
.ui-header .ui-header-nav > a, .ui-header .ui-version { height: var(--ui-header-target); }
|
|
37
|
+
.ui-header { padding-top: env(safe-area-inset-top); padding-inline: max(var(--ui-space-xl), env(safe-area-inset-left)) max(var(--ui-space-xl), env(safe-area-inset-right)); height: calc(3.75rem + env(safe-area-inset-top)); box-sizing: border-box; }
|
|
38
|
+
.ui-header[data-variant="stickable"] { position: fixed; inset: 0 0 auto; width: 100%; transition: translate var(--ui-duration-base) var(--ui-ease), background-color var(--ui-duration-base), box-shadow var(--ui-duration-base); }
|
|
39
|
+
.ui-header[data-tucked] { translate: 0 -100%; }
|
|
40
|
+
/* A focused control stays on screen after the header has tucked away, revealed at once. */
|
|
41
|
+
.ui-header:focus-within { translate: none; transition-duration: 0s; }
|
|
42
|
+
.ui-header[data-background="transparent"] { background: transparent; box-shadow: none; -webkit-backdrop-filter: none; backdrop-filter: none; }
|
|
43
|
+
/* Without scripts the header never leaves its transparent top state, so it scrolls away instead of covering content. */
|
|
44
|
+
@media (scripting: none) { .ui-header[data-background="transparent"] { position: absolute; } }
|
|
45
|
+
@media (prefers-reduced-motion: reduce) { .ui-header, .ui-header[data-variant="stickable"] { transition: none; } }
|
|
46
|
+
@media print { .ui-header { display: none; } }
|
|
47
|
+
|
|
48
|
+
.ui-header-brand { display: inline-flex; align-items: center; min-height: var(--ui-header-target); border-radius: var(--ui-radius-sm); }
|
|
49
|
+
.ui-header-brand:focus-visible { @apply --ui-focus-ring; outline-offset: 2px; }
|
|
50
|
+
/* The version chip opens the native version list laid over it. */
|
|
51
|
+
.ui-header .ui-version { position: relative; cursor: pointer; }
|
|
52
|
+
.ui-header .ui-version > svg { width: 12px; height: 12px; color: var(--ui-text-muted); }
|
|
53
|
+
.ui-header .ui-version:hover { color: var(--ui-text-strong); }
|
|
54
|
+
.ui-header-nav > a > .ui-badge { margin-left: var(--ui-space-2xs); }
|
|
55
|
+
/* External destinations carry a small raised arrow beside the label or icon. */
|
|
56
|
+
.ui-header-nav > a:has(.ui-header-external) { position: relative; padding-right: 1.125rem; }
|
|
57
|
+
.ui-header-nav > a > .ui-header-external, .ui-header-end > .ui-button > .ui-header-external { position: absolute; top: .375rem; right: .125rem; width: .625rem; height: .625rem; pointer-events: none; }
|
|
58
|
+
/* Anchor the small external mark to the icon centre, independent of the 36/44px target. */
|
|
59
|
+
.ui-header-end > .ui-button > .ui-header-external { top: calc(50% - .875rem); right: calc(50% - 1rem); }
|
|
60
|
+
.ui-header-end > .ui-button[data-disabled] { color: var(--ui-text-disabled); pointer-events: none; }
|
|
61
|
+
/* Icon-only controls name themselves with an ink tooltip under the pointer or keyboard focus. */
|
|
62
|
+
.ui-header-end > :is(a, button, label) { position: relative; }
|
|
63
|
+
.ui-header-end > * > .ui-tooltip { top: calc(100% + 8px); left: 50%; translate: -50% 0; opacity: 0; visibility: hidden; transition: opacity var(--ui-duration-quick), visibility 0s linear var(--ui-duration-quick); }
|
|
64
|
+
.ui-header-end > :is(:hover, :focus-visible, :has(:focus-visible)) > .ui-tooltip { opacity: 1; visibility: visible; transition-delay: 400ms, 400ms; }
|
|
65
|
+
.ui-header-end > :last-child > .ui-tooltip { left: auto; right: 0; translate: none; }
|
|
66
|
+
.ui-header-end > :last-child > .ui-tooltip::before { left: auto; right: calc(1rem - 4px); translate: none; }
|
|
67
|
+
@media (hover: none) { .ui-header-end > * > .ui-tooltip { display: none; } }
|
|
68
|
+
|
|
69
|
+
/* Desktop search retains its original hairline pill and visible shortcut. */
|
|
70
|
+
.ui-header-search { appearance: none; box-sizing: border-box; display: inline-flex; align-items: center; gap: .4375rem; flex: none; height: 1.875rem; margin: 0; padding: 0 .8125rem 0 .6875rem; border: 0; border-radius: var(--ui-radius-pill);
|
|
71
|
+
background: transparent; color: var(--ui-text-muted); box-shadow: inset 0 0 0 1px var(--ui-line-contour); font: var(--ui-weight-regular) .75rem/1 var(--font-family-sans); cursor: pointer;
|
|
72
|
+
transition: color var(--ui-duration-quick), box-shadow var(--ui-duration-quick), background-color var(--ui-duration-quick); }
|
|
73
|
+
.ui-header-search:hover { color: var(--ui-text-strong); background: var(--ui-surface-chip); box-shadow: inset 0 0 0 1px var(--ui-line-strong); }
|
|
74
|
+
.ui-header-search:focus-visible { @apply --ui-focus-ring; outline-offset: 2px; }
|
|
75
|
+
.ui-header-search > svg { flex: none; width: 1rem; height: 1rem; }
|
|
76
|
+
.ui-header-search > .ui-kbd { min-width: 0; height: auto; padding: 0; background: none; color: inherit; box-shadow: none; font: var(--ui-weight-regular) .6875rem/1 var(--font-family-sans); letter-spacing: .04em; }
|
|
77
|
+
|
|
78
|
+
/* The compact header: the menu at the start, the brand centred, search at the end. */
|
|
79
|
+
.ui-header .ui-header-menu { display: none; }
|
|
80
|
+
@media (width < 64rem) {
|
|
81
|
+
.ui-header, .ui-mobile-menu-bar { --ui-header-target: 2.75rem; }
|
|
82
|
+
.ui-header { gap: var(--ui-space-xs); padding-inline: max(var(--ui-space-xs), env(safe-area-inset-left)) max(var(--ui-space-xs), env(safe-area-inset-right)); }
|
|
83
|
+
.ui-header .ui-header-menu { display: inline-flex; }
|
|
84
|
+
.ui-header-brand { margin-inline: auto; }
|
|
85
|
+
.ui-header > :is(.ui-version, .ui-header-nav), .ui-header-end > :not(.ui-header-search) { display: none; }
|
|
86
|
+
.ui-header-end { margin-left: 0; }
|
|
87
|
+
.ui-header-search { justify-content: center; width: var(--ui-header-target); height: var(--ui-header-target); padding: 0; border-radius: var(--ui-radius-md); box-shadow: none; }
|
|
88
|
+
.ui-header-search:hover { background: transparent; box-shadow: none; }
|
|
89
|
+
.ui-header-search > svg { width: var(--ui-header-icon); height: var(--ui-header-icon); }
|
|
90
|
+
.ui-header-search > .ui-kbd { display: none; }
|
|
91
|
+
/* Search can be the last visible action while hidden siblings still follow it. */
|
|
92
|
+
.ui-header-end > * > .ui-tooltip { left: auto; right: 0; translate: none; }
|
|
93
|
+
.ui-header-end > * > .ui-tooltip::before { left: auto; right: calc(var(--ui-header-target) / 2 - 4px); translate: none; }
|
|
94
|
+
/* Equal ends keep the brand centred, including the homepage's GitHub action. */
|
|
95
|
+
.ui-header .ui-header-end { width: var(--ui-header-target); }
|
|
96
|
+
}
|
|
97
|
+
@media (width >= 64rem) {
|
|
98
|
+
/* The homepage's wide header leaves search out. */
|
|
99
|
+
.ui-header-search[data-compact] { display: none; }
|
|
100
|
+
}
|
|
101
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/* hint: owned component styles; shared definitions come from the foundation. */
|
|
2
|
+
@layer components {
|
|
3
|
+
.ui-hint { display: flex; align-items: flex-start; gap: var(--ui-space-xs); color: var(--ui-text-muted); font-size: var(--ui-text-small); line-height: var(--ui-leading-small); }
|
|
4
|
+
.ui-hint > svg { flex: none; width: 1rem; height: 1rem; margin-top: calc((1lh - 1rem) / 2); color: var(--ui-text-body); stroke-width: 1.5; }
|
|
5
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/* index: owned component styles; shared definitions come from the foundation. */
|
|
2
|
+
@layer components {
|
|
3
|
+
.ui-index { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 14rem), 1fr)); gap: var(--ui-space-sm); }
|
|
4
|
+
.ui-index > a { display: grid; align-content: start; gap: var(--ui-space-2xs); padding: var(--ui-space-md) var(--ui-space-md) 1.125rem; border-radius: var(--ui-radius-xl); background: var(--ui-surface-sheet); color: var(--ui-text-body); box-shadow: inset 0 0 0 1px var(--ui-line-contour), 0 1px 0 var(--ui-lip); text-decoration: none; transition: box-shadow var(--ui-duration-quick) var(--ui-ease), translate var(--ui-duration-quick) var(--ui-ease); }
|
|
5
|
+
.ui-index > a:hover { translate: 0 -.5px; box-shadow: var(--ui-elevation-rise-1h); }
|
|
6
|
+
.ui-index > a:focus-visible { @apply --ui-focus-ring; outline-offset: 2px; }
|
|
7
|
+
.ui-index > a > svg { width: 18px; height: 18px; margin-bottom: var(--ui-space-2xs); color: var(--ui-text-strong); stroke-width: 1.5; }
|
|
8
|
+
.ui-index > a > b { color: var(--ui-text-strong); font-size: .9375rem; font-weight: var(--ui-weight-medium); line-height: 1.4; letter-spacing: -.006em; }
|
|
9
|
+
.ui-index > a > span { font-size: .8125rem; line-height: 1.6; color: var(--ui-text-muted); }
|
|
10
|
+
.ui-index > a > b code { font: var(--ui-weight-medium) .875rem/1.45 var(--font-family-mono); letter-spacing: 0; overflow-wrap: anywhere; }
|
|
11
|
+
.ui-index[data-density="compact"] { grid-template-columns: repeat(auto-fill, minmax(min(100%, 12rem), 1fr)); gap: var(--ui-space-xs); }
|
|
12
|
+
.ui-index[data-density="compact"] > a { gap: 2px; padding: var(--ui-space-sm) var(--ui-space-md); }
|
|
13
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/* inline-code: owned component styles; shared definitions come from the foundation. */
|
|
2
|
+
@layer components {
|
|
3
|
+
.ui-inline-code { padding: .125em .375em; border-radius: var(--ui-radius-xs); background: var(--ui-surface-chip); color: var(--ui-text-strong); box-shadow: inset 0 0 0 1px var(--ui-line-hair); font: var(--ui-weight-regular) .84em/1 var(--font-family-mono); overflow-wrap: anywhere; }
|
|
4
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/* kbd: owned component styles; shared definitions come from the foundation. */
|
|
2
|
+
@layer components {
|
|
3
|
+
.ui-kbd { display: inline-grid; place-items: center; min-width: 1.375rem; height: 1.375rem; padding: 0 .3125rem; border-radius: var(--ui-radius-xs); background: transparent; color: var(--ui-text-muted); box-shadow: inset 0 0 0 1px var(--ui-line-contour); font: var(--ui-weight-regular) .6875rem/1 var(--font-family-mono); }
|
|
4
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
@prune native;
|
|
2
|
+
/* logos: owned component styles; shared definitions come from the foundation. */
|
|
3
|
+
@layer components {
|
|
4
|
+
.ui-logos { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 9rem), 1fr)); gap: var(--ui-space-2xs) var(--ui-space-md); }
|
|
5
|
+
.ui-logos > a { display: flex; align-items: center; gap: var(--ui-space-sm); min-width: 0; min-height: 2.75rem; padding: .5rem var(--ui-space-xs); border-radius: var(--ui-radius-sm); color: var(--ui-text-body); font-size: .8125rem; line-height: 1.5; text-decoration: none; transition: background var(--ui-duration-quick) var(--ui-ease), color var(--ui-duration-quick) var(--ui-ease); }
|
|
6
|
+
.ui-logos > a:hover { color: var(--ui-text-strong); background: var(--ui-surface-chip); }
|
|
7
|
+
.ui-logos > a:focus-visible { @apply --ui-focus-ring; outline-offset: 2px; }
|
|
8
|
+
.ui-logos > a > svg { flex: none; width: 1.25rem; height: 1.25rem; }
|
|
9
|
+
.ui-logos > a > span { min-width: 0; overflow-wrap: anywhere; }
|
|
10
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
@prune native;
|
|
2
|
+
/* menu: owned component styles; shared definitions come from the foundation. */
|
|
3
|
+
@layer components {
|
|
4
|
+
.ui-menu { display: grid; gap: 1px; min-width: 12rem; margin: 0; padding: var(--ui-inset); border-radius: var(--ui-radius-lg); background: var(--ui-surface-float); box-shadow: var(--ui-elevation-rise-3); list-style: none; }
|
|
5
|
+
.ui-menu-label { padding: .375rem .625rem .25rem; color: var(--ui-text-muted); @apply --ui-label-type; }
|
|
6
|
+
.ui-menu-item { appearance: none; display: flex; align-items: center; gap: var(--ui-space-xs); width: 100%; min-height: 2rem; padding: 0 .625rem; border: 0; border-radius: var(--ui-radius-sm); background: transparent; color: var(--ui-text-body); font: var(--ui-weight-regular) var(--ui-text-small)/1 var(--font-family-sans); text-align: start; text-decoration: none; cursor: pointer; }
|
|
7
|
+
.ui-menu-item > svg { flex: none; width: 15px; height: 15px; color: var(--ui-text-muted); }
|
|
8
|
+
.ui-menu-item > small { margin-left: auto; color: var(--ui-text-muted); font: var(--ui-weight-regular) .6875rem/1 var(--font-family-mono); }
|
|
9
|
+
.ui-menu-item:is(:hover, [data-highlighted]) { color: var(--ui-text-strong); background: light-dark(oklch(22% .002 265 / .05), oklch(100% 0 none / .06)); }
|
|
10
|
+
.ui-menu-item[aria-checked="true"] { color: var(--ui-text-strong); font-weight: var(--ui-weight-medium); }
|
|
11
|
+
.ui-menu-item[aria-checked="true"]::after { content: ""; width: 14px; height: 14px; margin-left: auto; background: currentColor; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='m3.5 8.5 3 3 6-7' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat; }
|
|
12
|
+
.ui-menu-item:focus-visible { @apply --ui-focus-ring; outline-offset: -2px; }
|
|
13
|
+
.ui-menu-separator { height: 1px; margin: var(--ui-space-3xs) .375rem; background: var(--ui-line-hair); }
|
|
14
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/* metrics: owned component styles; shared definitions come from the foundation. */
|
|
2
|
+
@layer components {
|
|
3
|
+
.ui-metrics { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 10rem), 1fr)); gap: var(--ui-inset); }
|
|
4
|
+
.ui-metric { display: grid; align-content: start; min-width: 0; gap: 6px; overflow-wrap: anywhere; padding: var(--ui-space-md); border-radius: var(--ui-radius-lg); @apply --ui-sheet-face; box-shadow: var(--ui-elevation-rise-1); }
|
|
5
|
+
.ui-metric > small { color: var(--ui-text-muted); @apply --ui-label-type; }
|
|
6
|
+
.ui-metric > b { color: var(--ui-text-strong); font-size: 1.625rem; font-weight: var(--ui-weight-heading); letter-spacing: -.03em; line-height: 1.1; font-variant-numeric: tabular-nums; }
|
|
7
|
+
.ui-metric > b > span { color: var(--ui-text-muted); font-size: .875rem; font-weight: var(--ui-weight-medium); letter-spacing: 0; }
|
|
8
|
+
.ui-metric > p { margin: 0; color: var(--ui-text-muted); font-size: .75rem; line-height: 1.5; }
|
|
9
|
+
.ui-bar { height: 6px; border-radius: var(--ui-radius-pill); background: var(--ui-surface-well); box-shadow: var(--ui-elevation-sink); overflow: hidden; }
|
|
10
|
+
.ui-bar > i { display: block; height: 100%; border-radius: inherit; background: var(--ui-text-strong); }
|
|
11
|
+
.ui-bar > i[data-tone="muted"] { background: var(--ui-line-mark); }
|
|
12
|
+
.ui-bar > i[data-tone="blue"] { background: var(--ui-tone-blue); }
|
|
13
|
+
.ui-bar > i[data-tone="violet"] { background: var(--ui-tone-violet); }
|
|
14
|
+
.ui-bar > i[data-tone="amber"] { background: var(--ui-tone-amber); }
|
|
15
|
+
.ui-bar > i[data-tone="green"] { background: var(--ui-tone-green); }
|
|
16
|
+
.ui-bar > i[data-tone="red"] { background: var(--ui-tone-red); }
|
|
17
|
+
.ui-bar > i[data-tone="neutral"] { background: var(--ui-tone-neutral); }
|
|
18
|
+
.ui-bar[data-variant="stacked"] { display: flex; gap: 1px; }
|
|
19
|
+
.ui-bar[data-variant="stacked"] > i { flex: none; border-radius: 0; }
|
|
20
|
+
.ui-bar[data-variant="stacked"] > i:first-child { border-start-start-radius: inherit; border-end-start-radius: inherit; }
|
|
21
|
+
.ui-bar[data-variant="stacked"] > i:last-child { border-start-end-radius: inherit; border-end-end-radius: inherit; }
|
|
22
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/* pagehead: owned component styles; shared definitions come from the foundation. */
|
|
2
|
+
@layer components {
|
|
3
|
+
.ui-pagehead { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--ui-space-md); margin-bottom: var(--ui-space-2xl); }
|
|
4
|
+
.ui-pagehead-kicker { margin-bottom: calc(var(--ui-space-3xs) * -1); color: var(--ui-text-muted); @apply --ui-eyebrow-type; }
|
|
5
|
+
.ui-pagehead h1 { margin: 0; color: var(--ui-text-strong); font-size: var(--ui-text-title); font-weight: var(--ui-weight-heading); line-height: var(--ui-leading-title); letter-spacing: var(--ui-tracking-title); text-wrap: balance; overflow-wrap: break-word; }
|
|
6
|
+
.ui-pagehead p { max-width: calc(var(--measure, 41rem) * 1.125); margin: 0; color: var(--ui-text-body); font-size: var(--ui-text-lead); line-height: var(--ui-leading-lead); letter-spacing: -.004em; text-wrap: pretty; overflow-wrap: break-word; }
|
|
7
|
+
.ui-pagehead p + p:not([class]) { max-width: var(--measure, 41rem); margin-top: calc(var(--ui-space-xs) * -1); font-size: var(--ui-text-base); line-height: var(--ui-leading-body); letter-spacing: 0; }
|
|
8
|
+
|
|
9
|
+
.ui-pagehead-meta { display: flex; flex-wrap: wrap; align-items: center; gap: var(--ui-space-xs) var(--ui-space-md); padding-top: var(--ui-space-xs); color: var(--ui-text-muted); font-size: .78125rem; }
|
|
10
|
+
.ui-pagehead-meta > a { color: inherit; text-decoration: none; }
|
|
11
|
+
.ui-pagehead-meta > a:hover { color: var(--ui-text-strong); }
|
|
12
|
+
.ui-pagehead-meta > span + span::before, .ui-pagehead-meta > * + a::before { content: "·"; margin-right: var(--ui-space-md); color: var(--ui-text-disabled); }
|
|
13
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/* pager: owned component styles; shared definitions come from the foundation. */
|
|
2
|
+
@layer components {
|
|
3
|
+
.ui-pager { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--ui-space-xl); margin-top: 5rem; padding-top: var(--ui-space-lg); box-shadow: inset 0 1px 0 var(--ui-line-hair); }
|
|
4
|
+
.ui-pager > a { display: grid; align-content: start; gap: var(--ui-space-2xs); color: var(--ui-text-body); text-decoration: none; transition: color var(--ui-duration-quick); }
|
|
5
|
+
.ui-pager > a:hover { color: var(--ui-text-strong); }
|
|
6
|
+
.ui-pager > a:focus-visible { @apply --ui-focus-ring; outline-offset: 4px; border-radius: var(--ui-radius-xs); }
|
|
7
|
+
.ui-pager > a[rel="next"] { justify-items: end; text-align: right; }
|
|
8
|
+
.ui-pager small { color: var(--ui-text-muted); @apply --ui-eyebrow-type; }
|
|
9
|
+
.ui-pager b { font-weight: var(--ui-weight-regular); font-size: var(--ui-text-base); line-height: 1.5; text-wrap: balance; }
|
|
10
|
+
.ui-pager > a[rel="prev"] > b::before { content: "←"; margin-right: .5em; color: var(--ui-text-muted); }
|
|
11
|
+
.ui-pager > a[rel="next"] > b::after { content: "→"; margin-left: .5em; color: var(--ui-text-muted); }
|
|
12
|
+
.ui-pager > a:hover > b::before, .ui-pager > a:hover > b::after { color: var(--ui-text-strong); }
|
|
13
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/* parameters: owned component styles; shared definitions come from the foundation. */
|
|
2
|
+
@layer components {
|
|
3
|
+
.ui-params { display: grid; margin: 0; border-radius: var(--ui-radius-xl); background: var(--ui-surface-sheet); box-shadow: inset 0 0 0 1px var(--ui-line-contour); }
|
|
4
|
+
.ui-params > div { display: grid; grid-template-columns: minmax(8rem, 13rem) minmax(0, 1fr); gap: var(--ui-space-xs) var(--ui-space-lg); padding: var(--ui-space-sm) var(--ui-space-md); border-top: 1px solid var(--ui-line-hair); }
|
|
5
|
+
.ui-params > div:first-child { border-top: 0; }
|
|
6
|
+
.ui-params dt { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px; min-width: 0; overflow-wrap: anywhere; color: var(--ui-text-strong); font: var(--ui-weight-medium) .8125rem/1.5 var(--font-family-mono); }
|
|
7
|
+
.ui-params dt small { color: var(--ui-text-muted); font-weight: var(--ui-weight-regular); }
|
|
8
|
+
.ui-params dd { margin: 0; color: var(--ui-text-body); font-size: var(--ui-text-small); line-height: 1.6; overflow-wrap: anywhere; }
|
|
9
|
+
.ui-params dd > * { margin: 0; }
|
|
10
|
+
.ui-params dd > * + * { margin-top: var(--ui-space-xs); }
|
|
11
|
+
.ui-params dd small { color: var(--ui-text-muted); font-size: .75rem; }
|
|
12
|
+
.ui-params dd a:not([class]) { color: var(--ui-text-strong); text-decoration: underline 1px var(--ui-line-strong); text-underline-offset: .24em; }
|
|
13
|
+
.ui-params dd a:not([class]):hover { text-decoration-color: currentColor; }
|
|
14
|
+
.ui-params :is(dt, dd) :is(h3, h4) { margin: 0; font: inherit; color: inherit; letter-spacing: inherit; }
|
|
15
|
+
.ui-params dd code { padding: .125em .375em; border-radius: var(--ui-radius-xs); background: var(--ui-surface-chip); color: var(--ui-text-strong); box-shadow: inset 0 0 0 1px var(--ui-line-hair); font: var(--ui-weight-regular) .8125rem/1 var(--font-family-mono); }
|
|
16
|
+
@media (width < 35rem) { .ui-params > div { grid-template-columns: 1fr; } }
|
|
17
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/* prompt: owned component styles; shared definitions come from the foundation. */
|
|
2
|
+
@layer components {
|
|
3
|
+
.ui-prompt { --code-corner: calc(var(--ui-space-md) + var(--ui-text-code) * var(--ui-leading-code) / 2 - 1rem); }
|
|
4
|
+
.ui-prompt { display: grid; gap: 0; min-width: 0; overflow: hidden; border-radius: var(--ui-radius-xl); background: var(--ui-surface-code); box-shadow: inset 0 0 0 1px var(--ui-line-contour), 0 1px 0 var(--ui-lip); }
|
|
5
|
+
.ui-prompt-body { margin: 0; padding: var(--ui-space-xs) var(--ui-space-md) var(--ui-space-md); color: var(--ui-text-strong); font: var(--ui-weight-regular) .9375rem/1.7 var(--font-family-sans); white-space: pre-wrap; }
|
|
6
|
+
.ui-prompt-body var { padding: 0 .25em; border-radius: var(--ui-radius-xs); background: var(--ui-surface-chip); color: var(--ui-text-body); box-shadow: inset 0 0 0 1px var(--ui-line-hair); font: var(--ui-weight-regular) .8125rem/1 var(--font-family-mono); font-style: normal; }
|
|
7
|
+
}
|
|
@@ -1,75 +1,4 @@
|
|
|
1
|
-
/*
|
|
2
|
-
|
|
3
|
-
@
|
|
4
|
-
|
|
5
|
-
three quarters of it, sections open on two lines, wide blocks keep one line of air. */
|
|
6
|
-
.ui-prose { --measure: 41rem; --bleed: 2rem; --line: 2rem; color: var(--ui-text-body); font-size: var(--ui-text-base); line-height: var(--ui-leading-body); }
|
|
7
|
-
.ui-prose > :is(p, ul, ol, h2, h3, h4, blockquote, .ui-callout, .ui-disclosure, hr):not(:where(.ui-steps)) { max-width: var(--measure); }
|
|
8
|
-
.ui-prose > :is(.ui-tray, .ui-code, .ui-table, .ui-params, .ui-prompt, .ui-tree) { margin-inline: calc(var(--bleed) * -1); }
|
|
9
|
-
@media (width < 52rem) { .ui-prose { --bleed: 0rem; } }
|
|
10
|
-
.ui-prose > :is(p, ul, ol, blockquote) { margin-block: calc(var(--line) * .75); }
|
|
11
|
-
.ui-prose > :is(.ui-tray, .ui-code, .ui-table, .ui-callout, .ui-steps, .ui-index, .ui-logos, .ui-params, .ui-prompt, .ui-tree) { margin-block: var(--line); }
|
|
12
|
-
/* Files that answer one instruction sit together: consecutive code panels part by a small gap, not a line. */
|
|
13
|
-
.ui-prose > .ui-code:has(+ .ui-code) { margin-bottom: var(--ui-space-sm); }
|
|
14
|
-
.ui-prose > .ui-code + .ui-code { margin-top: var(--ui-space-sm); }
|
|
15
|
-
.ui-prose > h2 { margin: calc(var(--line) * 2) 0 calc(var(--line) * .5); color: var(--ui-text-strong); font-size: var(--ui-text-h2); font-weight: var(--ui-weight-heading); line-height: var(--ui-leading-h2); letter-spacing: var(--ui-tracking-h2); text-wrap: balance; }
|
|
16
|
-
.ui-prose > h3 { margin: calc(var(--line) * 1.5) 0 calc(var(--line) * .375); color: var(--ui-text-strong); font-size: var(--ui-text-h3); font-weight: var(--ui-weight-heading); line-height: var(--ui-leading-h3); letter-spacing: var(--ui-tracking-h3); }
|
|
17
|
-
.ui-prose > h4 { margin: calc(var(--line) * 1.25) 0 calc(var(--line) * .25); color: var(--ui-text-strong); font-size: var(--ui-text-base); font-weight: var(--ui-weight-strong); line-height: 1.5rem; }
|
|
18
|
-
/* A subsection that opens its section sits close under it, as one heading group. */
|
|
19
|
-
.ui-prose > h2 + h3, .ui-prose > h3 + :is(h3, h4) { margin-top: calc(var(--line) * .5); }
|
|
20
|
-
.ui-prose > :is(h2, h3) { position: relative; width: fit-content; scroll-margin-top: 5rem; }
|
|
21
|
-
/* A section opens on one hairline across the reading measure, closer to its heading than to the text before it. */
|
|
22
|
-
.ui-prose > h2 { width: auto; }
|
|
23
|
-
.ui-prose > h2:not(:first-child)::before { content: ""; display: var(--section-rule, block); position: absolute; top: calc(var(--line) * -.875); inset-inline: 0 var(--rule-end, 0); height: 1px; background: var(--ui-line-hair); pointer-events: none; }
|
|
24
|
-
/* The page's first section keeps only its space (after the page head too), and so does one after a disclosure, which
|
|
25
|
-
already closes on a hairline, even as the last part of a section wrapper;
|
|
26
|
-
legacy anchors and space-only rules in between do not count. A disclosure joined under its code is a framed panel, not
|
|
27
|
-
a rule, so the heading after it keeps its own. */
|
|
28
|
-
.ui-prose > :is(a[id]:empty, .sr-only):first-child + h2,
|
|
29
|
-
.ui-prose > .ui-disclosure:not(.ui-code + *) + h2, .ui-prose > .ui-disclosure:not(.ui-code + *) + a[id]:empty + h2,
|
|
30
|
-
.ui-prose > .ui-disclosure:not(.ui-code + *) + hr + h2, .ui-prose > .ui-disclosure:not(.ui-code + *) + hr + a[id]:empty + h2,
|
|
31
|
-
.ui-prose > .ui-pagehead + h2, .ui-prose > .ui-pagehead + a[id]:empty + h2,
|
|
32
|
-
.ui-prose > :has(> .ui-disclosure:last-child) + h2 { --section-rule: none; }
|
|
33
|
-
.ui-anchor { position: absolute; right: 100%; top: 50%; translate: -.375rem -50%; display: grid; place-items: center; width: 1.5rem; height: 1.5rem; border-radius: var(--ui-radius-sm); color: var(--ui-text-disabled); font: var(--ui-weight-regular) .875rem/1 var(--font-family-mono); opacity: 0; text-decoration: none; transition: opacity var(--ui-duration-quick), color var(--ui-duration-quick); }
|
|
34
|
-
.ui-anchor:hover { color: var(--ui-text-muted); }
|
|
35
|
-
.ui-prose > :is(h2, h3):is(:hover, :target, :focus-within) > .ui-anchor { opacity: 1; }
|
|
36
|
-
.ui-anchor:focus-visible { opacity: 1; @apply --ui-focus-ring; outline-offset: 1px; }
|
|
37
|
-
.ui-prose > :is(p, ul, ol, blockquote, h2, h3, h4) :is(strong, b) { color: var(--ui-text-strong); font-weight: var(--ui-weight-strong); }
|
|
38
|
-
.ui-prose > :is(p, ul, ol, blockquote) a:not([class]) { color: var(--ui-text-strong); text-decoration: underline; text-decoration-color: var(--ui-line-strong); text-decoration-thickness: 1px; text-underline-offset: .24em; transition: text-decoration-color var(--ui-duration-quick); }
|
|
39
|
-
.ui-prose > :is(p, ul, ol, blockquote) a:not([class]):hover { text-decoration-color: currentColor; }
|
|
40
|
-
.ui-prose > :is(p, ul, ol, blockquote) a:not([class]):focus-visible { @apply --ui-focus-ring; outline-offset: 2px; border-radius: var(--ui-radius-xs); }
|
|
41
|
-
/* Inline code is set apart by a hairline chip in a mid ink, never the darkest spot of a paragraph. */
|
|
42
|
-
.ui-prose > :is(p, ul, ol, blockquote, h2, h3, h4) code:not(pre code), .ui-callout code { padding: .125em .375em; border-radius: var(--ui-radius-xs); background: var(--ui-surface-chip); color: color-mix(in oklab, var(--ui-text-strong) 60%, var(--ui-text-body)); box-shadow: inset 0 0 0 1px var(--ui-line-hair); font: var(--ui-weight-regular) .84em/1 var(--font-family-mono); overflow-wrap: anywhere; }
|
|
43
|
-
/* In a heading, code is the heading's own words in the mono face. */
|
|
44
|
-
.ui-prose > :is(h2, h3, h4) code:not(pre code) { padding: 0; background: none; box-shadow: none; color: inherit; font-size: .9em; }
|
|
45
|
-
.ui-prose > :is(ul, ol):not([class]) { padding-left: 1.25em; }
|
|
46
|
-
.ui-prose > :is(ul, ol):not([class]) li { margin-block: calc(var(--line) * .25); padding-left: .375em; }
|
|
47
|
-
.ui-prose > :is(ul, ol):not([class]) li > :is(p, ul, ol) { margin-block: calc(var(--line) * .25); }
|
|
48
|
-
.ui-prose > ul:not([class]) { list-style: disc; }
|
|
49
|
-
.ui-prose > ul:not([class]) li::marker { color: var(--ui-text-disabled); font-size: .8em; }
|
|
50
|
-
.ui-prose > ol:not([class]) li::marker { color: var(--ui-text-muted); font: var(--ui-weight-regular) .875em var(--font-family-sans); font-variant-numeric: tabular-nums; }
|
|
51
|
-
.ui-prose > hr { height: 1px; margin: calc(var(--line) * 1.75) 0 calc(var(--line) * 1.25); border: 0; background: var(--ui-line-divider); }
|
|
52
|
-
.ui-prose > hr + * { margin-top: 0; }
|
|
53
|
-
/* A rule an author sets before a section heading (or the legacy anchor before it) is space only: the heading's own opening already parts the sections. */
|
|
54
|
-
.ui-prose > hr:has(+ h2, + a[id]:empty + h2) { height: 0; margin: 0; background: none; }
|
|
55
|
-
.ui-prose > hr + h2 { margin-top: calc(var(--line) * 2); }
|
|
56
|
-
.ui-prose > blockquote { margin-inline: 0; padding: .25rem 0 .25rem 1.25rem; box-shadow: inset 1px 0 0 var(--ui-line-strong); color: color-mix(in oklab, var(--ui-text-strong) 50%, var(--ui-text-body)); }
|
|
57
|
-
.ui-prose > blockquote > p { margin-block: 0; } .ui-prose > blockquote > p + p { margin-top: .75em; }
|
|
58
|
-
.ui-prose > figure { margin: var(--line) 0; }
|
|
59
|
-
.ui-prose > figure:not(.ui-tray) > figcaption { margin-top: var(--ui-space-sm); color: var(--ui-text-muted); font-size: var(--ui-text-caption); line-height: var(--ui-leading-caption); }
|
|
60
|
-
|
|
61
|
-
/* Callout: one icon, one tint, a hairline — never a thick left border */
|
|
62
|
-
/* Hint: how to use the example that follows, a muted line led by its gesture */
|
|
63
|
-
.ui-hint { display: flex; align-items: flex-start; gap: var(--ui-space-xs); color: var(--ui-text-muted); font-size: var(--ui-text-small); line-height: var(--ui-leading-small); }
|
|
64
|
-
.ui-hint > svg { flex: none; width: 1rem; height: 1rem; margin-top: calc((1lh - 1rem) / 2); color: var(--ui-text-body); stroke-width: 1.5; }
|
|
65
|
-
.ui-callout { --tone: var(--ui-tone-neutral); display: grid; grid-template-columns: auto minmax(0, 1fr); gap: var(--ui-space-sm); padding: .875rem var(--ui-space-md); border-radius: var(--ui-radius-lg);
|
|
66
|
-
background: color-mix(in oklab, var(--tone) 2.5%, var(--ui-surface-canvas)); box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--tone) 12%, var(--ui-line-contour)); color: var(--ui-text-body); font-size: var(--ui-text-small); line-height: var(--ui-leading-small); }
|
|
67
|
-
.ui-callout > svg { width: 1rem; height: 1rem; margin-top: .21875rem; color: color-mix(in oklab, var(--tone) 80%, var(--ui-text-strong)); }
|
|
68
|
-
.ui-callout > div { min-width: 0; overflow-wrap: anywhere; }
|
|
69
|
-
.ui-callout > div > :first-child { margin-top: 0; } .ui-callout > div > :last-child { margin-bottom: 0; }
|
|
70
|
-
.ui-callout b { color: var(--ui-text-strong); font-weight: var(--ui-weight-strong); }
|
|
71
|
-
.ui-callout[data-tone="info"] { --tone: var(--ui-status-info); }
|
|
72
|
-
.ui-callout[data-tone="success"], .ui-callout[data-tone="do"] { --tone: var(--ui-status-success); }
|
|
73
|
-
.ui-callout[data-tone="warning"] { --tone: var(--ui-status-warning); }
|
|
74
|
-
.ui-callout[data-tone="danger"], .ui-callout[data-tone="dont"] { --tone: var(--ui-status-danger); }
|
|
75
|
-
}
|
|
1
|
+
/* Explicit full prose collection. Components import their own leaf stylesheet. */
|
|
2
|
+
@import './reading.css';
|
|
3
|
+
@import './callout.css';
|
|
4
|
+
@import './hint.css';
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/* range: owned component styles; shared definitions come from the foundation. */
|
|
2
|
+
@layer components {
|
|
3
|
+
.ui-range { --value: 50%; appearance: none; width: 100%; min-width: 6rem; height: 1.75rem; margin: 0; background: transparent; cursor: ew-resize; }
|
|
4
|
+
.ui-range::-webkit-slider-runnable-track { height: 4px; border-radius: var(--ui-radius-pill); background: linear-gradient(90deg, var(--ui-text-strong) var(--value), var(--ui-line-divider) var(--value)); }
|
|
5
|
+
.ui-range::-moz-range-track { height: 4px; border-radius: var(--ui-radius-pill); background: var(--ui-line-divider); }
|
|
6
|
+
.ui-range::-moz-range-progress { height: 4px; border-radius: var(--ui-radius-pill); background: var(--ui-text-strong); }
|
|
7
|
+
.ui-range::-webkit-slider-thumb { appearance: none; width: 16px; height: 16px; margin-top: -6px; border: 0; border-radius: 50%; background: linear-gradient(180deg, oklch(100% 0 none), oklch(96.5% .0011 265)); box-shadow: 0 0 0 1px var(--ui-line-strong), 0 1px 1px var(--ui-shade-1), 0 2px 4px -1px var(--ui-shade-2); }
|
|
8
|
+
.ui-range::-moz-range-thumb { width: 16px; height: 16px; border: 0; border-radius: 50%; background: linear-gradient(180deg, oklch(100% 0 none), oklch(96.5% .0011 265)); box-shadow: 0 0 0 1px var(--ui-line-strong), 0 1px 1px var(--ui-shade-1), 0 2px 4px -1px var(--ui-shade-2); }
|
|
9
|
+
.ui-range:focus-visible { outline: none; }
|
|
10
|
+
.ui-range:focus-visible::-webkit-slider-thumb { box-shadow: 0 0 0 1px var(--ui-line-strong), 0 0 0 2px var(--ui-surface-stage), 0 0 0 4px var(--ui-focus); }
|
|
11
|
+
.ui-range:focus-visible::-moz-range-thumb { box-shadow: 0 0 0 1px var(--ui-line-strong), 0 0 0 2px var(--ui-surface-stage), 0 0 0 4px var(--ui-focus); }
|
|
12
|
+
}
|