@master/internal-site 0.0.0-stage → 0.1.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/LICENSE +21 -0
- package/README.md +66 -2
- package/dist/astro.d.mts +3 -0
- package/dist/astro.mjs +510 -0
- package/dist/config.d.mts +64 -0
- package/dist/config.mjs +10 -0
- package/package.json +384 -4
- package/src/astro/Page.astro +12 -0
- package/src/astro/content-pages.ts +75 -0
- package/src/astro/index.ts +124 -0
- package/src/astro/module-id.ts +4 -0
- package/src/astro/propagated-assets.ts +29 -0
- package/src/astro/route-paths.ts +78 -0
- package/src/astro/routes.template.ts +110 -0
- package/src/astro/server-styles.ts +26 -0
- package/src/astro/site-context.ts +27 -0
- package/src/astro/source-url.ts +22 -0
- package/src/astro/svelte-renderer.ts +45 -0
- package/src/astro/svg-markup.ts +23 -0
- package/src/benchmarks/BenchmarkBarRows.astro +34 -0
- package/src/benchmarks/BenchmarkBars.astro +14 -0
- package/src/benchmarks/BenchmarkChart.astro +53 -0
- package/src/benchmarks/BenchmarkChartGroup.astro +24 -0
- package/src/benchmarks/BenchmarkDataTable.astro +24 -0
- package/src/benchmarks/BenchmarkDelta.astro +23 -0
- package/src/benchmarks/BenchmarkFigure.astro +30 -0
- package/src/benchmarks/BenchmarkMetricTable.astro +38 -0
- package/src/benchmarks/BenchmarkMetrics.astro +23 -0
- package/src/benchmarks/BenchmarkSampleSummary.astro +30 -0
- package/src/benchmarks/BenchmarkScrollRegion.svelte +27 -0
- package/src/benchmarks/BenchmarkSource.astro +20 -0
- package/src/benchmarks/BenchmarkStackedBars.astro +54 -0
- package/src/benchmarks/BenchmarkStatus.astro +16 -0
- package/src/benchmarks/types.ts +98 -0
- package/src/benchmarks/utils.ts +42 -0
- package/src/blog/BlogAuthors.astro +25 -0
- package/src/blog/article/BlogArticleContents.svelte +24 -0
- package/src/blog/article/BlogArticleEnd.astro +55 -0
- package/src/blog/article/BlogArticleMasthead.astro +61 -0
- package/src/blog/article/language.ts +29 -0
- package/src/blog/article/neighbors.ts +27 -0
- package/src/blog/article/title-lines.astro +14 -0
- package/src/blog/article/title-parts.ts +9 -0
- package/src/components.d.ts +5 -0
- package/src/config.ts +66 -0
- package/src/css/ButtonPreview.astro +22 -0
- package/src/css/ConfiguredExample.astro +15 -0
- package/src/css/NamespaceUtilityTable.astro +50 -0
- package/src/css/StylesheetExample.astro +15 -0
- package/src/css/ThemeNumberVariableTable.astro +57 -0
- package/src/css/configured-example.ts +53 -0
- package/src/css/foundation-data/elevation/shadow-data.ts +52 -0
- package/src/css/foundation-data/sizing/scale-data.ts +37 -0
- package/src/css/foundation-data/specimen-content.ts +10 -0
- package/src/css/foundation-data/specimens.ts +96 -0
- package/src/css/foundation-data/tokens.ts +32 -0
- package/src/css/generate-preset-css.ts +12 -0
- package/src/css/highlight.ts +34 -0
- package/src/css/manifest-utilities.ts +29 -0
- package/src/css/markdown.ts +279 -0
- package/src/css/preset-css.ts +15 -0
- package/src/css/preset-manifest.ts +3 -0
- package/src/css/stylesheet-example.ts +26 -0
- package/src/css/theme-variables.ts +74 -0
- package/src/css/variable-namespace-sources.ts +20 -0
- package/src/demo/Demo.svelte +55 -0
- package/src/demo/DemoAsset.astro +38 -0
- package/src/demo/DemoAxes.svelte +22 -0
- package/src/demo/DemoBadge.svelte +18 -0
- package/src/demo/DemoCatalog.astro +36 -0
- package/src/demo/DemoComparison.svelte +36 -0
- package/src/demo/DemoConfiguredExample.astro +48 -0
- package/src/demo/DemoContainer.svelte +48 -0
- package/src/demo/DemoControls.svelte +16 -0
- package/src/demo/DemoCopyButton.svelte +50 -0
- package/src/demo/DemoCopyGroup.svelte +15 -0
- package/src/demo/DemoExample.astro +27 -0
- package/src/demo/DemoFeatureSupport.svelte +18 -0
- package/src/demo/DemoGeneratedCSS.svelte +8 -0
- package/src/demo/DemoIndex.astro +23 -0
- package/src/demo/DemoInstallation.astro +17 -0
- package/src/demo/DemoItem.svelte +17 -0
- package/src/demo/DemoLabel.svelte +15 -0
- package/src/demo/DemoLegend.svelte +15 -0
- package/src/demo/DemoMeasure.svelte +28 -0
- package/src/demo/DemoMedia.svelte +43 -0
- package/src/demo/DemoMotion.svelte +41 -0
- package/src/demo/DemoPageViewport.astro +17 -0
- package/src/demo/DemoPalette.astro +29 -0
- package/src/demo/DemoPaletteGroups.svelte +15 -0
- package/src/demo/DemoScrollArea.svelte +15 -0
- package/src/demo/DemoStyleComparison.astro +25 -0
- package/src/demo/DemoSurface.svelte +15 -0
- package/src/demo/DemoSwatch.svelte +19 -0
- package/src/demo/DemoThemeComparison.astro +30 -0
- package/src/demo/DemoTokenTable.astro +34 -0
- package/src/demo/DemoViewTransition.astro +18 -0
- package/src/demo/DemoViewport.svelte +324 -0
- package/src/demo/DemoWaterfall.astro +30 -0
- package/src/demo/FoundationBreakpoint.astro +12 -0
- package/src/demo/ProjectStyleExample.astro +13 -0
- package/src/demo/copy-feedback.ts +10 -0
- package/src/demo/demo-waterfall.ts +17 -0
- package/src/demo/drag-readings.ts +20 -0
- package/src/demo/foundations/FoundationAxes.astro +12 -0
- package/src/demo/foundations/FoundationColorRoles.astro +5 -0
- package/src/demo/foundations/FoundationContainerGrid.astro +24 -0
- package/src/demo/foundations/FoundationDialog.astro +14 -0
- package/src/demo/foundations/FoundationElevation.astro +5 -0
- package/src/demo/foundations/FoundationElevationState.astro +5 -0
- package/src/demo/foundations/FoundationHue.astro +5 -0
- package/src/demo/foundations/FoundationLines.astro +5 -0
- package/src/demo/foundations/FoundationMedia.astro +28 -0
- package/src/demo/foundations/FoundationMotion.astro +5 -0
- package/src/demo/foundations/FoundationPalette.astro +8 -0
- package/src/demo/foundations/FoundationRadius.astro +13 -0
- package/src/demo/foundations/FoundationShapes.astro +12 -0
- package/src/demo/foundations/FoundationShrink.astro +14 -0
- package/src/demo/foundations/FoundationSizing.astro +19 -0
- package/src/demo/foundations/FoundationSpecimen.astro +20 -0
- package/src/demo/foundations/FoundationSurfaces.astro +5 -0
- package/src/demo/foundations/FoundationTextHue.astro +5 -0
- package/src/demo/foundations/FoundationTextRoles.astro +5 -0
- package/src/demo/foundations/FoundationTokens.astro +22 -0
- package/src/demo/foundations/FoundationTokensView.astro +65 -0
- package/src/demo/foundations/FoundationTransition.astro +5 -0
- package/src/demo/foundations/FoundationTypeComparison.astro +12 -0
- package/src/demo/foundations/FoundationTypography.astro +5 -0
- package/src/demo/foundations/Palette.svelte +37 -0
- package/src/demo/foundations/ShadowScaleDemo.astro +22 -0
- package/src/demo/illustration-materials.ts +180 -0
- package/src/demo/maintenance-example.ts +62 -0
- package/src/demo/playback.ts +75 -0
- package/src/demo/project-style-examples.ts +128 -0
- package/src/demo/reference/alignment.ts +42 -0
- package/src/demo/reference/animations.ts +30 -0
- package/src/demo/reference/backgrounds.ts +39 -0
- package/src/demo/reference/border-paint.ts +31 -0
- package/src/demo/reference/clipping.ts +26 -0
- package/src/demo/reference/document.ts +55 -0
- package/src/demo/reference/edges.ts +40 -0
- package/src/demo/reference/effects.ts +27 -0
- package/src/demo/reference/flexbox.ts +33 -0
- package/src/demo/reference/frame.css +118 -0
- package/src/demo/reference/grid.ts +42 -0
- package/src/demo/reference/html.ts +40 -0
- package/src/demo/reference/interaction.ts +42 -0
- package/src/demo/reference/layout-html.ts +10 -0
- package/src/demo/reference/layout.ts +102 -0
- package/src/demo/reference/media.ts +29 -0
- package/src/demo/reference/positioning.ts +90 -0
- package/src/demo/reference/scenes.ts +197 -0
- package/src/demo/reference/scrolling.ts +66 -0
- package/src/demo/reference/shapes.ts +22 -0
- package/src/demo/reference/sizing.ts +43 -0
- package/src/demo/reference/source.ts +8 -0
- package/src/demo/reference/text-effects.ts +37 -0
- package/src/demo/reference/text-flow.ts +41 -0
- package/src/demo/reference/transforms.ts +26 -0
- package/src/demo/reference/transitions.ts +24 -0
- package/src/demo/reference/type-specimens.ts +56 -0
- package/src/demo/reference/types.ts +30 -0
- package/src/demo/reference/typography.ts +32 -0
- package/src/demo/specimens/accent-color.json +50 -0
- package/src/demo/specimens/align-items.json +56 -0
- package/src/demo/specimens/animation-delay.json +55 -0
- package/src/demo/specimens/animation-direction.json +49 -0
- package/src/demo/specimens/animation-fill-mode.json +55 -0
- package/src/demo/specimens/animation-iteration-count.json +55 -0
- package/src/demo/specimens/animation-play-state.json +83 -0
- package/src/demo/specimens/animation-timing-function.json +48 -0
- package/src/demo/specimens/appearance.json +44 -0
- package/src/demo/specimens/aspect-ratio.json +28 -0
- package/src/demo/specimens/backdrop-filter.json +44 -0
- package/src/demo/specimens/background-attachment.json +49 -0
- package/src/demo/specimens/background-image.json +25 -0
- package/src/demo/specimens/background-origin.json +36 -0
- package/src/demo/specimens/background-size.json +29 -0
- package/src/demo/specimens/border-collapse.json +45 -0
- package/src/demo/specimens/border-color.json +35 -0
- package/src/demo/specimens/border-image-repeat.json +50 -0
- package/src/demo/specimens/border-image-slice.json +45 -0
- package/src/demo/specimens/border-radius.json +30 -0
- package/src/demo/specimens/box-decoration-break.json +35 -0
- package/src/demo/specimens/box-shadow.json +33 -0
- package/src/demo/specimens/clear.json +77 -0
- package/src/demo/specimens/clip-path.json +38 -0
- package/src/demo/specimens/content.json +27 -0
- package/src/demo/specimens/counter-set.json +31 -0
- package/src/demo/specimens/fill.json +23 -0
- package/src/demo/specimens/filter.json +23 -0
- package/src/demo/specimens/flex-direction.json +27 -0
- package/src/demo/specimens/flex-grow.json +27 -0
- package/src/demo/specimens/font-style.json +23 -0
- package/src/demo/specimens/font-variant-numeric.json +28 -0
- package/src/demo/specimens/grid-auto-columns.json +29 -0
- package/src/demo/specimens/grid-auto-flow.json +37 -0
- package/src/demo/specimens/grid-template-areas.json +34 -0
- package/src/demo/specimens/grid-template-columns.json +36 -0
- package/src/demo/specimens/isolation.json +25 -0
- package/src/demo/specimens/justify-content.json +36 -0
- package/src/demo/specimens/line-height.json +28 -0
- package/src/demo/specimens/list-style-position.json +36 -0
- package/src/demo/specimens/mask-image.json +54 -0
- package/src/demo/specimens/min-width.json +39 -0
- package/src/demo/specimens/mix-blend-mode.json +43 -0
- package/src/demo/specimens/object-fit.json +27 -0
- package/src/demo/specimens/object-position.json +27 -0
- package/src/demo/specimens/opacity.json +37 -0
- package/src/demo/specimens/order.json +28 -0
- package/src/demo/specimens/overflow-wrap.json +26 -0
- package/src/demo/specimens/overflow.json +53 -0
- package/src/demo/specimens/overscroll-behavior.json +29 -0
- package/src/demo/specimens/padding.json +84 -0
- package/src/demo/specimens/place-content.json +31 -0
- package/src/demo/specimens/pointer-events.json +46 -0
- package/src/demo/specimens/position.json +29 -0
- package/src/demo/specimens/resize.json +32 -0
- package/src/demo/specimens/screen-readers.json +37 -0
- package/src/demo/specimens/scroll-padding.json +29 -0
- package/src/demo/specimens/scroll-snap-stop.json +33 -0
- package/src/demo/specimens/shape-image-threshold.json +37 -0
- package/src/demo/specimens/shape-margin.json +40 -0
- package/src/demo/specimens/shape-outside.json +37 -0
- package/src/demo/specimens/stroke-width.json +27 -0
- package/src/demo/specimens/text-fill-color.json +23 -0
- package/src/demo/specimens/text-stroke-width.json +32 -0
- package/src/demo/specimens/touch-action.json +45 -0
- package/src/demo/specimens/transform-box.json +37 -0
- package/src/demo/specimens/transform-origin.json +56 -0
- package/src/demo/specimens/transform-style.json +55 -0
- package/src/demo/specimens/transform.json +47 -0
- package/src/demo/specimens/transition-delay.json +57 -0
- package/src/demo/specimens/transition-duration.json +60 -0
- package/src/demo/specimens/transition-property.json +60 -0
- package/src/demo/specimens/transition-timing-function.json +65 -0
- package/src/demo/specimens/user-drag.json +28 -0
- package/src/demo/specimens/user-select.json +25 -0
- package/src/demo/specimens/vertical-align.json +28 -0
- package/src/demo/specimens/width.json +56 -0
- package/src/demo/specimens/will-change.json +50 -0
- package/src/demo/specimens/writing-mode.json +26 -0
- package/src/demo/specimens/z-index.json +35 -0
- package/src/demo/style.ts +15 -0
- package/src/demo/tone.ts +4 -0
- package/src/demo/useDemoViewTransition.svelte.ts +71 -0
- package/src/docs-shell/common/i18n.config.d.ts +2 -0
- package/src/docs-shell/common/i18n.config.js +13 -0
- package/src/docs-shell/common/svgo.config.d.ts +2 -0
- package/src/docs-shell/common/svgo.config.js +11 -0
- package/src/docs-shell/components/ArticleHeader.astro +65 -0
- package/src/docs-shell/components/ArticleTOC.astro +18 -0
- package/src/docs-shell/components/Callout.astro +26 -0
- package/src/docs-shell/components/Code.astro +25 -0
- package/src/docs-shell/components/CodeCopyButton.astro +25 -0
- package/src/docs-shell/components/CodeTabBar.astro +40 -0
- package/src/docs-shell/components/CodeTabs.astro +53 -0
- package/src/docs-shell/components/CodeView.astro +23 -0
- package/src/docs-shell/components/Do.astro +5 -0
- package/src/docs-shell/components/DoNot.astro +5 -0
- package/src/docs-shell/components/DocArticle.astro +14 -0
- package/src/docs-shell/components/DocHeader.svelte +87 -0
- package/src/docs-shell/components/DocHeading.astro +28 -0
- package/src/docs-shell/components/DocMain.astro +19 -0
- package/src/docs-shell/components/DocMenuButton.svelte +95 -0
- package/src/docs-shell/components/DocSidebar.svelte +62 -0
- package/src/docs-shell/components/DocVersionSelect.svelte +22 -0
- package/src/docs-shell/components/DocWrapper.astro +11 -0
- package/src/docs-shell/components/DocumentAPIIndex.astro +24 -0
- package/src/docs-shell/components/DocumentChoices.astro +24 -0
- package/src/docs-shell/components/DocumentCodeExample.astro +20 -0
- package/src/docs-shell/components/DocumentCodeExampleView.astro +35 -0
- package/src/docs-shell/components/DocumentCodeTable.astro +19 -0
- package/src/docs-shell/components/DocumentComparison.astro +7 -0
- package/src/docs-shell/components/DocumentCopyButton.svelte +41 -0
- package/src/docs-shell/components/DocumentDeclaration.astro +17 -0
- package/src/docs-shell/components/DocumentDeclarationView.astro +12 -0
- package/src/docs-shell/components/DocumentDisclosure.astro +14 -0
- package/src/docs-shell/components/DocumentFileTree.astro +34 -0
- package/src/docs-shell/components/DocumentFlow.astro +27 -0
- package/src/docs-shell/components/DocumentIdentifier.astro +14 -0
- package/src/docs-shell/components/DocumentIllustration.astro +46 -0
- package/src/docs-shell/components/DocumentKeyList.astro +22 -0
- package/src/docs-shell/components/DocumentNamespaceTable.astro +20 -0
- package/src/docs-shell/components/DocumentOptionEntry.astro +15 -0
- package/src/docs-shell/components/DocumentOptionList.astro +11 -0
- package/src/docs-shell/components/DocumentOptions.astro +23 -0
- package/src/docs-shell/components/DocumentParameters.astro +30 -0
- package/src/docs-shell/components/DocumentPrompt.astro +16 -0
- package/src/docs-shell/components/DocumentValueList.astro +25 -0
- package/src/docs-shell/components/DocumentationIndex.svelte +144 -0
- package/src/docs-shell/components/Dropped.astro +21 -0
- package/src/docs-shell/components/ExpandContent.svelte +21 -0
- package/src/docs-shell/components/ExplorerView.astro +37 -0
- package/src/docs-shell/components/FileIcon.astro +123 -0
- package/src/docs-shell/components/Footer.svelte +80 -0
- package/src/docs-shell/components/GeneratedCSS.astro +8 -0
- package/src/docs-shell/components/Header.svelte +121 -0
- package/src/docs-shell/components/HeaderIcon.astro +14 -0
- package/src/docs-shell/components/HeaderNav.svelte +18 -0
- package/src/docs-shell/components/Image.svelte +56 -0
- package/src/docs-shell/components/Info.astro +5 -0
- package/src/docs-shell/components/InlineCode.astro +30 -0
- package/src/docs-shell/components/InteractingIndicator.astro +19 -0
- package/src/docs-shell/components/LanguageButton.svelte +18 -0
- package/src/docs-shell/components/LanguageSelect.svelte +44 -0
- package/src/docs-shell/components/Link.svelte +127 -0
- package/src/docs-shell/components/ModeImg.astro +11 -0
- package/src/docs-shell/components/NotFound.astro +21 -0
- package/src/docs-shell/components/OverviewButtons.astro +36 -0
- package/src/docs-shell/components/PMAction.astro +25 -0
- package/src/docs-shell/components/PackageBadges.astro +39 -0
- package/src/docs-shell/components/PageContent.svelte +38 -0
- package/src/docs-shell/components/PageContentBootstrap.astro +13 -0
- package/src/docs-shell/components/PageContentDisclosure.astro +25 -0
- package/src/docs-shell/components/PageContentList.svelte +70 -0
- package/src/docs-shell/components/PageContentProvider.svelte +15 -0
- package/src/docs-shell/components/PageContentTitle.svelte +16 -0
- package/src/docs-shell/components/PageNavs.astro +40 -0
- package/src/docs-shell/components/PreparedCodeView.astro +12 -0
- package/src/docs-shell/components/RenderNode.astro +16 -0
- package/src/docs-shell/components/RouteLayers.astro +17 -0
- package/src/docs-shell/components/SearchButton.svelte +31 -0
- package/src/docs-shell/components/SearchDialog.svelte +174 -0
- package/src/docs-shell/components/Segments.svelte +62 -0
- package/src/docs-shell/components/Step.astro +13 -0
- package/src/docs-shell/components/StepL.astro +10 -0
- package/src/docs-shell/components/StepR.astro +10 -0
- package/src/docs-shell/components/StepSection.astro +12 -0
- package/src/docs-shell/components/Tab.astro +8 -0
- package/src/docs-shell/components/Tabs.astro +10 -0
- package/src/docs-shell/components/ThemeIcon.astro +19 -0
- package/src/docs-shell/components/ThemeSelect.svelte +20 -0
- package/src/docs-shell/components/TimeAgo.svelte +32 -0
- package/src/docs-shell/components/Translate.astro +14 -0
- package/src/docs-shell/components/Warn.astro +5 -0
- package/src/docs-shell/components/code-props.ts +28 -0
- package/src/docs-shell/components/document-types.ts +119 -0
- package/src/docs-shell/components/markdown/Anchor.astro +5 -0
- package/src/docs-shell/components/markdown/Heading2.astro +5 -0
- package/src/docs-shell/components/markdown/Heading3.astro +5 -0
- package/src/docs-shell/components/markdown/Table.astro +6 -0
- package/src/docs-shell/components/markdown-components.ts +36 -0
- package/src/docs-shell/components/page-content-bootstrap.ts +115 -0
- package/src/docs-shell/components/page-content.svelte.ts +125 -0
- package/src/docs-shell/contexts/search.ts +18 -0
- package/src/docs-shell/contexts/theme-mode.svelte.ts +61 -0
- package/src/docs-shell/data/authors.ts +17 -0
- package/src/docs-shell/data/base-colors.ts +29 -0
- package/src/docs-shell/data/brands.ts +79 -0
- package/src/docs-shell/data/color-names.ts +1 -0
- package/src/docs-shell/data/color-palette.ts +50 -0
- package/src/docs-shell/data/colors.ts +1 -0
- package/src/docs-shell/factories/Page.astro +35 -0
- package/src/docs-shell/factories/create-page.ts +31 -0
- package/src/docs-shell/layouts/BlogArticle.astro +53 -0
- package/src/docs-shell/layouts/Doc.astro +41 -0
- package/src/docs-shell/remark/markdown-components.d.ts +2 -0
- package/src/docs-shell/remark/markdown-components.js +101 -0
- package/src/docs-shell/remark/slug-and-toc.d.ts +2 -0
- package/src/docs-shell/remark/slug-and-toc.js +53 -0
- package/src/docs-shell/scripts/code-tabs-bootstrap.ts +34 -0
- package/src/docs-shell/scripts/code.ts +124 -0
- package/src/docs-shell/scripts/document-anchor.ts +57 -0
- package/src/docs-shell/scripts/document.ts +47 -0
- package/src/docs-shell/site.ts +67 -0
- package/src/docs-shell/types/IllustrationImages.ts +2 -0
- package/src/docs-shell/types/Metadata.ts +17 -0
- package/src/docs-shell/types/Props.ts +9 -0
- package/src/docs-shell/types/StaticImage.ts +6 -0
- package/src/docs-shell/uses/use-selected-preview-syntax.svelte.ts +16 -0
- package/src/docs-shell/utils/anchor.ts +24 -0
- package/src/docs-shell/utils/beautify-css.ts +14 -0
- package/src/docs-shell/utils/beautify-html.ts +12 -0
- package/src/docs-shell/utils/beautify-js.ts +9 -0
- package/src/docs-shell/utils/create-highlighter.ts +50 -0
- package/src/docs-shell/utils/css-modern-grammar.ts +339 -0
- package/src/docs-shell/utils/documentation-search.ts +68 -0
- package/src/docs-shell/utils/generate-metadata.ts +60 -0
- package/src/docs-shell/utils/group-page-content.ts +10 -0
- package/src/docs-shell/utils/head.ts +72 -0
- package/src/docs-shell/utils/highlight-code-core.ts +146 -0
- package/src/docs-shell/utils/highlight-code.ts +1 -0
- package/src/docs-shell/utils/highlighted-code-text.ts +27 -0
- package/src/docs-shell/utils/i18n-pathname.ts +98 -0
- package/src/docs-shell/utils/i18n.ts +12 -0
- package/src/docs-shell/utils/is-date-within-seven-days.ts +16 -0
- package/src/docs-shell/utils/isBrowser.ts +1 -0
- package/src/docs-shell/utils/isInteractOutside.ts +16 -0
- package/src/docs-shell/utils/markdown-tree.ts +22 -0
- package/src/docs-shell/utils/metadata.ts +25 -0
- package/src/docs-shell/utils/prepared-code.ts +21 -0
- package/src/docs-shell/utils/resolve-heading.d.ts +1 -0
- package/src/docs-shell/utils/resolve-heading.js +19 -0
- package/src/docs-shell/utils/search-pages.ts +271 -0
- package/src/docs-shell/utils/slot-text.ts +15 -0
- package/src/docs-shell/utils/snackbar.ts +39 -0
- package/src/docs-shell/utils/syntax-theme.ts +53 -0
- package/src/docs-shell/utils/transformer-notation-word-mark.ts +146 -0
- package/src/docs-shell/utils/unique-id.ts +11 -0
- package/src/examples/article-transitions/page.astro +7 -0
- package/src/examples/article-transitions/transitions.css +10 -0
- package/src/examples/components/ArticleTransitionScene.svelte +83 -0
- package/src/examples/components/ViewTransitionScene.svelte +31 -0
- package/src/examples/images/article-aurora.jpg +0 -0
- package/src/examples/images/article-coast.jpg +0 -0
- package/src/examples/images/article-grid.jpg +0 -0
- package/src/examples/images/article-studio.jpg +0 -0
- package/src/examples/layout-system/page.astro +59 -0
- package/src/examples/scene.css +3 -0
- package/src/examples/view-transitions/page.astro +7 -0
- package/src/examples/view-transitions/transitions.css +9 -0
- package/src/home/HeroCanvas.svelte +617 -0
- package/src/home/HomeAction.astro +17 -0
- package/src/home/HomeBentoFrame.astro +9 -0
- package/src/home/HomeBentoGrid.astro +9 -0
- package/src/home/HomeCompactIcon.astro +15 -0
- package/src/home/HomeFooter.svelte +63 -0
- package/src/home/HomeIllustration.astro +17 -0
- package/src/home/HomeIllustrationArt.svelte +15 -0
- package/src/home/HomeLamp.svelte +18 -0
- package/src/home/design.css +532 -0
- package/src/home/footer.css +225 -0
- package/src/home/hero-shaders.ts +460 -0
- package/src/home/hero-title-mask.ts +175 -0
- package/src/home/hero.css +547 -0
- package/src/home/home-illustration.ts +5 -0
- package/src/home/home-lamp.ts +225 -0
- package/src/home/home.css +1077 -0
- package/src/home/icons/agent-check-preview-apply.svg +24 -0
- package/src/home/icons/agent-clients.svg +26 -0
- package/src/home/icons/agent-project-tools.svg +23 -0
- package/src/home/icons/artwork/agent-check-preview-apply-dark.webp +0 -0
- package/src/home/icons/artwork/agent-check-preview-apply-light.webp +0 -0
- package/src/home/icons/artwork/agent-clients-dark.webp +0 -0
- package/src/home/icons/artwork/agent-clients-light.webp +0 -0
- package/src/home/icons/artwork/agent-edit-file-dark.webp +0 -0
- package/src/home/icons/artwork/agent-edit-file-light.webp +0 -0
- package/src/home/icons/artwork/agent-project-tools-dark.webp +0 -0
- package/src/home/icons/artwork/agent-project-tools-light.webp +0 -0
- package/src/home/icons/artwork/design-cascade-layers-dark.webp +0 -0
- package/src/home/icons/artwork/design-cascade-layers-light.webp +0 -0
- package/src/home/icons/artwork/design-layout-motion-dark.webp +0 -0
- package/src/home/icons/artwork/design-layout-motion-light.webp +0 -0
- package/src/home/icons/artwork/design-p3-gamut-dark.webp +0 -0
- package/src/home/icons/artwork/design-p3-gamut-light.webp +0 -0
- package/src/home/icons/artwork/design-theme-modes-dark.webp +0 -0
- package/src/home/icons/artwork/design-theme-modes-light.webp +0 -0
- package/src/home/icons/artwork/design-theme-tokens-dark.webp +0 -0
- package/src/home/icons/artwork/design-theme-tokens-light.webp +0 -0
- package/src/home/icons/artwork/editor-color-tools-dark.webp +0 -0
- package/src/home/icons/artwork/editor-color-tools-light.webp +0 -0
- package/src/home/icons/artwork/editor-focused-highlighting-dark.webp +0 -0
- package/src/home/icons/artwork/editor-focused-highlighting-light.webp +0 -0
- package/src/home/icons/artwork/editor-hover-inspection-dark.webp +0 -0
- package/src/home/icons/artwork/editor-hover-inspection-light.webp +0 -0
- package/src/home/icons/artwork/editor-manifest-completions-dark.webp +0 -0
- package/src/home/icons/artwork/editor-manifest-completions-light.webp +0 -0
- package/src/home/icons/artwork/lint-class-order-dark.webp +0 -0
- package/src/home/icons/artwork/lint-class-order-light.webp +0 -0
- package/src/home/icons/artwork/lint-conflicting-classes-dark.webp +0 -0
- package/src/home/icons/artwork/lint-conflicting-classes-light.webp +0 -0
- package/src/home/icons/artwork/lint-fix-previews-dark.webp +0 -0
- package/src/home/icons/artwork/lint-fix-previews-light.webp +0 -0
- package/src/home/icons/artwork/lint-invalid-classes-dark.webp +0 -0
- package/src/home/icons/artwork/lint-invalid-classes-light.webp +0 -0
- package/src/home/icons/artwork/lint-strict-vocabulary-dark.webp +0 -0
- package/src/home/icons/artwork/lint-strict-vocabulary-light.webp +0 -0
- package/src/home/icons/artwork/lint-theme-tokens-dark.webp +0 -0
- package/src/home/icons/artwork/lint-theme-tokens-light.webp +0 -0
- package/src/home/icons/artwork/mcp-apply-preview-dark.webp +0 -0
- package/src/home/icons/artwork/mcp-apply-preview-light.webp +0 -0
- package/src/home/icons/artwork/mcp-css-compare-dark.webp +0 -0
- package/src/home/icons/artwork/mcp-css-compare-light.webp +0 -0
- package/src/home/icons/artwork/mcp-inspect-class-dark.webp +0 -0
- package/src/home/icons/artwork/mcp-inspect-class-light.webp +0 -0
- package/src/home/icons/artwork/mcp-lint-project-dark.webp +0 -0
- package/src/home/icons/artwork/mcp-lint-project-light.webp +0 -0
- package/src/home/icons/artwork/mcp-manifest-query-dark.webp +0 -0
- package/src/home/icons/artwork/mcp-manifest-query-light.webp +0 -0
- package/src/home/icons/artwork/mcp-preview-fixes-dark.webp +0 -0
- package/src/home/icons/artwork/mcp-preview-fixes-light.webp +0 -0
- package/src/home/icons/artwork/mcp-render-css-dark.webp +0 -0
- package/src/home/icons/artwork/mcp-render-css-light.webp +0 -0
- package/src/home/icons/artwork/mcp-scan-project-dark.webp +0 -0
- package/src/home/icons/artwork/mcp-scan-project-light.webp +0 -0
- package/src/home/icons/artwork/mcp-trace-class-dark.webp +0 -0
- package/src/home/icons/artwork/mcp-trace-class-light.webp +0 -0
- package/src/home/icons/artwork/render-progressive-dark.webp +0 -0
- package/src/home/icons/artwork/render-progressive-light.webp +0 -0
- package/src/home/icons/artwork/render-runtime-dark.webp +0 -0
- package/src/home/icons/artwork/render-runtime-light.webp +0 -0
- package/src/home/icons/artwork/render-static-dark.webp +0 -0
- package/src/home/icons/artwork/render-static-light.webp +0 -0
- package/src/home/icons/artwork/section-ai-agents-dark.webp +0 -0
- package/src/home/icons/artwork/section-ai-agents-light.webp +0 -0
- package/src/home/icons/artwork/section-css-size-dark.webp +0 -0
- package/src/home/icons/artwork/section-css-size-light.webp +0 -0
- package/src/home/icons/artwork/section-design-system-dark.webp +0 -0
- package/src/home/icons/artwork/section-design-system-light.webp +0 -0
- package/src/home/icons/artwork/section-editor-dark.webp +0 -0
- package/src/home/icons/artwork/section-editor-light.webp +0 -0
- package/src/home/icons/artwork/section-lint-dark.webp +0 -0
- package/src/home/icons/artwork/section-lint-light.webp +0 -0
- package/src/home/icons/artwork/section-rendering-dark.webp +0 -0
- package/src/home/icons/artwork/section-rendering-light.webp +0 -0
- package/src/home/icons/artwork/section-workflow-dark.webp +0 -0
- package/src/home/icons/artwork/section-workflow-light.webp +0 -0
- package/src/home/icons/artwork/source.json +303 -0
- package/src/home/icons/artwork/workflow-integrations-dark.webp +0 -0
- package/src/home/icons/artwork/workflow-integrations-light.webp +0 -0
- package/src/home/icons/artwork/workflow-monorepo-dark.webp +0 -0
- package/src/home/icons/artwork/workflow-monorepo-light.webp +0 -0
- package/src/home/icons/artwork/workflow-route-styles-dark.webp +0 -0
- package/src/home/icons/artwork/workflow-route-styles-light.webp +0 -0
- package/src/home/icons/artwork/workflow-trace-change-dark.webp +0 -0
- package/src/home/icons/artwork/workflow-trace-change-light.webp +0 -0
- package/src/home/icons/artwork.css +4 -0
- package/src/home/icons/artwork.ts +131 -0
- package/src/home/icons/catalog.ts +381 -0
- package/src/home/icons/design-cascade-layers.svg +32 -0
- package/src/home/icons/design-layout-motion.svg +16 -0
- package/src/home/icons/design-p3-gamut.svg +12 -0
- package/src/home/icons/design-theme-modes.svg +12 -0
- package/src/home/icons/design-theme-tokens.svg +20 -0
- package/src/home/icons/editor-color-tools.svg +18 -0
- package/src/home/icons/editor-focused-highlighting.svg +15 -0
- package/src/home/icons/editor-hover-inspection.svg +19 -0
- package/src/home/icons/editor-manifest-completions.svg +24 -0
- package/src/home/icons/lint-class-order-compact.svg +15 -0
- package/src/home/icons/lint-class-order.svg +28 -0
- package/src/home/icons/lint-conflicting-classes-compact.svg +11 -0
- package/src/home/icons/lint-conflicting-classes.svg +24 -0
- package/src/home/icons/lint-fix-previews-compact.svg +9 -0
- package/src/home/icons/lint-fix-previews.svg +19 -0
- package/src/home/icons/lint-invalid-classes-compact.svg +7 -0
- package/src/home/icons/lint-invalid-classes.svg +17 -0
- package/src/home/icons/lint-strict-vocabulary-compact.svg +8 -0
- package/src/home/icons/lint-strict-vocabulary.svg +16 -0
- package/src/home/icons/lint-theme-tokens-compact.svg +7 -0
- package/src/home/icons/lint-theme-tokens.svg +14 -0
- package/src/home/icons/mcp-apply-preview-compact.svg +9 -0
- package/src/home/icons/mcp-apply-preview.svg +18 -0
- package/src/home/icons/mcp-css-compare-compact.svg +9 -0
- package/src/home/icons/mcp-css-compare.svg +20 -0
- package/src/home/icons/mcp-inspect-class-compact.svg +9 -0
- package/src/home/icons/mcp-inspect-class.svg +18 -0
- package/src/home/icons/mcp-lint-project-compact.svg +14 -0
- package/src/home/icons/mcp-lint-project.svg +30 -0
- package/src/home/icons/mcp-manifest-query-compact.svg +14 -0
- package/src/home/icons/mcp-manifest-query.svg +27 -0
- package/src/home/icons/mcp-preview-fixes-compact.svg +9 -0
- package/src/home/icons/mcp-preview-fixes.svg +15 -0
- package/src/home/icons/mcp-render-css-compact.svg +13 -0
- package/src/home/icons/mcp-render-css.svg +30 -0
- package/src/home/icons/mcp-scan-project-compact.svg +7 -0
- package/src/home/icons/mcp-scan-project.svg +13 -0
- package/src/home/icons/mcp-trace-class-compact.svg +11 -0
- package/src/home/icons/mcp-trace-class.svg +24 -0
- package/src/home/icons/render-progressive.svg +17 -0
- package/src/home/icons/render-runtime.svg +23 -0
- package/src/home/icons/render-static.svg +29 -0
- package/src/home/icons/section-ai-agents.svg +24 -0
- package/src/home/icons/section-css-size.svg +13 -0
- package/src/home/icons/section-design-system.svg +24 -0
- package/src/home/icons/section-editor.svg +14 -0
- package/src/home/icons/section-lint.svg +14 -0
- package/src/home/icons/section-rendering.svg +30 -0
- package/src/home/icons/section-workflow.svg +22 -0
- package/src/home/icons/workflow-integrations.svg +15 -0
- package/src/home/icons/workflow-monorepo.svg +27 -0
- package/src/home/icons/workflow-route-styles.svg +24 -0
- package/src/home/icons/workflow-trace-change.svg +21 -0
- package/src/layouts/Document.astro +71 -0
- package/src/public/brand/v2/logo/mark/master-mark-small-on-dark.svg +1 -0
- package/src/public/brand/v2/logo/master-css/master-css-horizontal-on-dark.svg +1 -0
- package/src/public/brand/v2/logo/master-css/master-css-horizontal-on-light.svg +1 -0
- package/src/public/demo/border-grid.svg +7 -0
- package/src/public/demo/landscape.svg +1 -0
- package/src/public/demo/marker.svg +1 -0
- package/src/public/demo/mask.svg +1 -0
- package/src/public/fonts/Geist-Medium.ttf +0 -0
- package/src/public/fonts/Geist-Regular.ttf +0 -0
- package/src/public/fonts/GeistVariable.woff2 +0 -0
- package/src/public/fonts/IBMPlexMono-Bold.woff2 +0 -0
- package/src/public/fonts/IBMPlexMono-Medium.woff2 +0 -0
- package/src/public/fonts/IBMPlexMono-Regular.woff2 +0 -0
- package/src/public/fonts/IBMPlexMono-SemiBold.woff2 +0 -0
- package/src/public/fonts/index.css +40 -0
- package/src/public/icons/csharp.svg +1 -0
- package/src/public/icons/css.svg +1 -0
- package/src/public/icons/eslint.svg +1 -0
- package/src/public/icons/folder.svg +12 -0
- package/src/public/icons/html.svg +1 -0
- package/src/public/icons/php.svg +1 -0
- package/src/public/icons/sass.svg +1 -0
- package/src/public/icons/storybook.svg +1 -0
- package/src/public/icons/visualstudiocode.svg +41 -0
- package/src/public/images/authors/aron.jpg +0 -0
- package/src/public/images/authors/benseage.jpg +0 -0
- package/src/public/images/authors/joy.jpg +0 -0
- package/src/public/images/authors/lola.jpg +0 -0
- package/src/public/images/authors/miles.jpg +0 -0
- package/src/public/images/bootstrap.svg +23 -0
- package/src/public/images/build-tools/rsbuild.svg +1 -0
- package/src/public/images/build-tools/rspack.svg +1 -0
- package/src/public/images/build-tools/vite.svg +15 -0
- package/src/public/images/build-tools/webpack.svg +10 -0
- package/src/public/images/cdns/esm-sh.svg +1 -0
- package/src/public/images/chevron-left.svg +4 -0
- package/src/public/images/cover-bg.jpg +0 -0
- package/src/public/images/emotion.svg +1 -0
- package/src/public/images/frameworks/angular.svg +29 -0
- package/src/public/images/frameworks/astro.svg +4 -0
- package/src/public/images/frameworks/blazor.svg +22 -0
- package/src/public/images/frameworks/express.svg +1 -0
- package/src/public/images/frameworks/laravel.svg +8 -0
- package/src/public/images/frameworks/line-liff.svg +1 -0
- package/src/public/images/frameworks/lit.svg +1 -0
- package/src/public/images/frameworks/nextjs.svg +16 -0
- package/src/public/images/frameworks/nuxtjs.svg +3 -0
- package/src/public/images/frameworks/rails.svg +1 -0
- package/src/public/images/frameworks/react.svg +8 -0
- package/src/public/images/frameworks/remix.svg +5 -0
- package/src/public/images/frameworks/shopify.svg +1 -0
- package/src/public/images/frameworks/svelte.svg +6 -0
- package/src/public/images/frameworks/tanstack.svg +1 -0
- package/src/public/images/frameworks/vuejs.svg +11 -0
- package/src/public/images/frameworks/wordpress.svg +1 -0
- package/src/public/images/mui.svg +1 -0
- package/src/public/images/styled-components.svg +4 -0
- package/src/public/images/tailwindcss.svg +1 -0
- package/src/scripts/bundler-imports.ts +25 -0
- package/src/scripts/static-social.ts +333 -0
- package/src/scripts/write-if-changed.ts +26 -0
- package/src/sections/blog.astro +11 -0
- package/src/sections/design-system.astro +14 -0
- package/src/sections/document.astro +8 -0
- package/src/sections/examples.astro +6 -0
- package/src/sections/guide.astro +26 -0
- package/src/sections/home.astro +7 -0
- package/src/sections/page.astro +12 -0
- package/src/styles/base.css +57 -0
- package/src/styles/benchmarks.css +20 -0
- package/src/styles/blog-article.css +670 -0
- package/src/styles/blog-materials.css +399 -0
- package/src/styles/blog.css +568 -0
- package/src/styles/demo.css +30 -0
- package/src/styles/design-system.css +15 -0
- package/src/styles/docs-shell/code.css +61 -0
- package/src/styles/docs-shell/docs.css +79 -0
- package/src/styles/docs-shell/documentation-search.css +42 -0
- package/src/styles/docs-shell/footer.css +38 -0
- package/src/styles/docs-shell/header.css +69 -0
- package/src/styles/docs-shell/materials.css +25 -0
- package/src/styles/docs-shell/menu.css +19 -0
- package/src/styles/docs-shell/not-found.css +10 -0
- package/src/styles/docs-shell/page-content.css +37 -0
- package/src/styles/docs-shell/prose.css +89 -0
- package/src/styles/docs-shell/segments.css +13 -0
- package/src/styles/docs-shell/steps.css +39 -0
- package/src/styles/docs-shell/syntax-theme.css +18 -0
- package/src/styles/docs-shell/theme.css +68 -0
- package/src/styles/docs-shell/wrapper.css +10 -0
- package/src/styles/document-comparison.css +7 -0
- package/src/styles/documentation-illustration.css +34 -0
- package/src/styles/documentation-index.css +100 -0
- package/src/styles/documents.css +4 -0
- package/src/styles/documents.ts +2 -0
- package/src/styles/foundation.css +4 -0
- package/src/styles/globals.css +2 -0
- package/src/styles/interface.css +3 -0
- package/src/styles/interface.ts +2 -0
- package/src/styles/site.ts +2 -0
- package/src/styles/system/DESIGN.md +108 -0
- package/src/styles/system/buttons.css +51 -0
- package/src/styles/system/code.css +85 -0
- package/src/styles/system/controls.css +110 -0
- package/src/styles/system/data.css +134 -0
- package/src/styles/system/mixins.css +7 -0
- package/src/styles/system/prose.css +75 -0
- package/src/styles/system/shell.css +102 -0
- package/src/styles/system/specimens.css +98 -0
- package/src/styles/system/surfaces.css +104 -0
- package/src/styles/system/tokens.css +136 -0
- package/src/utils/cloudflare-image-loader.js +85 -0
- package/src/virtual.d.ts +36 -0
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/* Data and documents: tables own their frame, numbers align, sources stay in view. */
|
|
2
|
+
@layer components {
|
|
3
|
+
/* The contour is a border: an inset shadow would sit under the sticky header cells. */
|
|
4
|
+
.ui-table { min-width: 0; overflow: auto; border: 1px solid var(--ui-line-contour); border-radius: var(--ui-radius-xl); background: var(--ui-surface-sheet); scrollbar-width: thin; }
|
|
5
|
+
.ui-table:focus-visible { @apply --ui-focus-ring; outline-offset: 2px; }
|
|
6
|
+
.ui-table table { width: 100%; border-collapse: separate; border-spacing: 0; font-size: var(--ui-text-small); line-height: 1.5; }
|
|
7
|
+
.ui-table thead th { position: sticky; top: 0; z-index: 1; padding: .625rem var(--ui-space-md); background: var(--ui-surface-sheet-lo); color: var(--ui-text-muted); @apply --ui-label-type; text-align: start; white-space: nowrap; box-shadow: inset 0 -1px 0 var(--ui-line-divider); }
|
|
8
|
+
.ui-table :is(td, tbody th) { padding: .6875rem var(--ui-space-md); color: var(--ui-text-body); font-weight: var(--ui-weight-regular); text-align: start; vertical-align: top; border-top: 1px solid var(--ui-line-hair); }
|
|
9
|
+
.ui-table tr:first-child > :is(td, th) { border-top: 0; }
|
|
10
|
+
.ui-table tbody tr { transition: background-color var(--ui-duration-quick); }
|
|
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
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/* Shared declarations of the system components, expanded in place by Master CSS (`@apply --name`). */
|
|
2
|
+
@mixin --ui-sheet-face { background: linear-gradient(180deg, var(--ui-surface-sheet), var(--ui-surface-sheet-lo)); }
|
|
3
|
+
@mixin --ui-focus-ring { outline: 2px solid var(--ui-focus); }
|
|
4
|
+
/* A caption over a group: small, quiet, in the reading face — never a mono capital eyebrow. */
|
|
5
|
+
@mixin --ui-label-type { font: var(--ui-weight-regular) var(--ui-text-label)/1.5 var(--font-family-sans); letter-spacing: var(--ui-tracking-label); text-transform: none; }
|
|
6
|
+
/* An eyebrow over a group or a page: small sans capitals, medium weight, tracked open so the capitals breathe. */
|
|
7
|
+
@mixin --ui-eyebrow-type { font: var(--ui-weight-medium) var(--ui-text-eyebrow)/1rem var(--font-family-sans); letter-spacing: var(--ui-tracking-eyebrow); text-transform: uppercase; }
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/* Prose: the reading column. Rules reach only the article's own flow, never into components.
|
|
2
|
+
Framed surfaces (tray, code, table, parameters, prompt, tree) bleed past the text by one gutter; index cards are links and keep its edges. */
|
|
3
|
+
@layer components {
|
|
4
|
+
/* One line unit (--line, 32px at 16px: body text set at line-height 2) sets the vertical rhythm: paragraphs part by
|
|
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
|
+
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/* Docs shell: header, sidebar, contents, page head, pager, search. Chrome stays on the canvas; only content gets material. */
|
|
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
|
+
/* Section links are plain words: ink marks the section being read, no pill. */
|
|
10
|
+
.ui-header-nav { display: flex; align-items: center; gap: var(--ui-space-3xs); }
|
|
11
|
+
.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); }
|
|
12
|
+
.ui-header-nav > a:hover { color: var(--ui-text-strong); }
|
|
13
|
+
.ui-header-nav > a:is([aria-current="page"], [aria-current="true"]) { color: var(--ui-text-strong); font-weight: var(--ui-weight-medium); }
|
|
14
|
+
.ui-header-nav > a:focus-visible { @apply --ui-focus-ring; outline-offset: 0; }
|
|
15
|
+
/* A recent section: one small chip-washed word after its name */
|
|
16
|
+
.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; }
|
|
17
|
+
.ui-header-end { display: flex; align-items: center; gap: var(--ui-space-3xs); margin-left: auto; }
|
|
18
|
+
.ui-header-divider { width: 1px; height: 1rem; margin-inline: var(--ui-space-xs); background: var(--ui-line-divider); }
|
|
19
|
+
.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; }
|
|
20
|
+
|
|
21
|
+
/* The sidebar: quiet group captions over entries hung on one hairline; the page being read inks a short bar on it. */
|
|
22
|
+
.ui-sidebar { display: grid; align-content: start; gap: var(--ui-space-lg); padding: var(--ui-space-lg) var(--ui-space-lg) var(--ui-space-2xl) var(--ui-space-xl); }
|
|
23
|
+
.ui-search-trigger { appearance: none; display: flex; align-items: center; gap: .625rem; width: 100%; height: 2.5rem; padding: 0; border: 0; border-radius: 0;
|
|
24
|
+
background: transparent; color: var(--ui-text-muted); box-shadow: inset 0 -1px 0 var(--ui-line-hair); font: var(--ui-weight-regular) var(--ui-text-small)/1 var(--font-family-sans); cursor: pointer; transition: color var(--ui-duration-quick), box-shadow var(--ui-duration-quick); }
|
|
25
|
+
.ui-search-trigger:hover { color: var(--ui-text-strong); box-shadow: inset 0 -1px 0 var(--ui-line-strong); }
|
|
26
|
+
.ui-search-trigger > .ui-kbd { box-shadow: none; }
|
|
27
|
+
.ui-search-trigger:focus-visible { @apply --ui-focus-ring; outline-offset: 2px; border-radius: var(--ui-radius-sm); }
|
|
28
|
+
.ui-search-trigger > svg { flex: none; width: 15px; height: 15px; }
|
|
29
|
+
.ui-search-trigger > .ui-kbd { margin-left: auto; }
|
|
30
|
+
.ui-nav-group { display: grid; }
|
|
31
|
+
.ui-nav-group > h4 { display: flex; align-items: center; min-height: 2rem; margin: 0 0 var(--ui-space-3xs); color: var(--ui-text-muted); @apply --ui-eyebrow-type; }
|
|
32
|
+
.ui-nav-link { position: relative; display: flex; align-items: center; min-height: 2rem; padding: .3125rem 0 .3125rem 1rem; color: var(--ui-text-muted); font-size: var(--ui-text-small); line-height: 1.4; text-decoration: none; box-shadow: inset 1px 0 0 var(--ui-line-divider); transition: color var(--ui-duration-quick); }
|
|
33
|
+
.ui-nav-link::before { content: ""; position: absolute; top: .4375rem; bottom: .4375rem; left: 0; width: 2px; margin-left: -.5px; border-radius: 1px; background: transparent; transition: background-color var(--ui-duration-quick); }
|
|
34
|
+
.ui-nav-link:hover { color: var(--ui-text-strong); }
|
|
35
|
+
.ui-nav-link:hover::before { background: var(--ui-line-mark); }
|
|
36
|
+
.ui-nav-link:is([aria-current="page"], [aria-current="true"]) { color: var(--ui-text-strong); font-weight: var(--ui-weight-medium); }
|
|
37
|
+
.ui-nav-link:is([aria-current="page"], [aria-current="true"])::before { background: var(--ui-text-strong); }
|
|
38
|
+
.ui-nav-link:focus-visible { @apply --ui-focus-ring; outline-offset: 1px; border-radius: var(--ui-radius-sm); }
|
|
39
|
+
.ui-nav-link > .ui-badge { margin-left: auto; }
|
|
40
|
+
|
|
41
|
+
/* One ruler: long section ticks and short subsection ticks share a right edge before the text. Titles share a second edge;
|
|
42
|
+
current location changes ink, never the tick's length or the title's position. */
|
|
43
|
+
.ui-toc { --toc-tick: 1.5rem; --toc-tick-subsection: .75rem; --toc-gap: .75rem; --toc-gutter: calc(var(--toc-tick) + var(--toc-gap)); --toc-row-padding: .5rem;
|
|
44
|
+
display: grid; align-content: start; gap: var(--ui-space-xs); padding: var(--ui-space-xl) var(--ui-space-lg); font-size: var(--ui-text-caption); }
|
|
45
|
+
.ui-toc > h4 { margin: 0 0 var(--ui-space-2xs); padding-left: var(--toc-gutter); color: var(--ui-text-muted); @apply --ui-eyebrow-type; }
|
|
46
|
+
.ui-toc ol { display: grid; margin: 0; padding: 0; list-style: none; }
|
|
47
|
+
.ui-toc a { position: relative; display: block; padding: var(--toc-row-padding) 0 var(--toc-row-padding) var(--toc-gutter); color: var(--ui-text-muted); line-height: 1.125rem; text-decoration: none; transition: color var(--ui-duration-quick); }
|
|
48
|
+
.ui-toc a::before { content: ""; position: absolute; top: calc(var(--toc-row-padding) + .5lh - 1px); right: calc(100% - var(--toc-tick)); width: var(--toc-tick); height: 2px; border-radius: 1px; background: var(--ui-line-divider); pointer-events: none; transition: background-color var(--ui-duration-quick); }
|
|
49
|
+
.ui-toc :is(ol ol a, a[data-level="3"])::before { width: var(--toc-tick-subsection); }
|
|
50
|
+
.ui-toc a:hover { color: var(--ui-text-strong); }
|
|
51
|
+
.ui-toc a:hover::before { background: var(--ui-line-mark); }
|
|
52
|
+
.ui-toc a[aria-current="location"] { color: var(--ui-text-strong); font-weight: var(--ui-weight-medium); }
|
|
53
|
+
.ui-toc a[aria-current="location"]::before { background: var(--ui-text-strong); }
|
|
54
|
+
.ui-toc a:focus-visible { @apply --ui-focus-ring; outline-offset: 1px; border-radius: var(--ui-radius-xs); }
|
|
55
|
+
.ui-toc ol ol a:not([aria-current]) { color: color-mix(in oklab, var(--ui-text-muted) 72%, var(--ui-text-disabled)); }
|
|
56
|
+
.ui-toc ol ol a:not([aria-current])::before { background: var(--ui-line-hair); }
|
|
57
|
+
.ui-toc ol ol a:not([aria-current]):hover { color: var(--ui-text-strong); }
|
|
58
|
+
.ui-toc-actions { display: grid; padding: var(--ui-space-sm) 0 0 var(--toc-gutter); }
|
|
59
|
+
.ui-toc-actions a { padding: .3125rem 0; color: var(--ui-text-muted); font-size: .75rem; line-height: 1.5; }
|
|
60
|
+
.ui-toc-actions a::before { content: none; }
|
|
61
|
+
|
|
62
|
+
/* The page head: an eyebrow, the title and its lead. Space, not a rule, parts it from the reading. */
|
|
63
|
+
.ui-pagehead { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--ui-space-md); margin-bottom: var(--ui-space-2xl); }
|
|
64
|
+
.ui-pagehead-kicker { margin-bottom: calc(var(--ui-space-3xs) * -1); color: var(--ui-text-muted); @apply --ui-eyebrow-type; }
|
|
65
|
+
.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; }
|
|
66
|
+
/* The lead runs a little past the reading measure: at 18px it keeps the same number of words a line. */
|
|
67
|
+
.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; }
|
|
68
|
+
/* A second line of the lead, at reading size. */
|
|
69
|
+
.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; }
|
|
70
|
+
|
|
71
|
+
/* The pager: the previous and next documents under one hairline, an eyebrow over each title; no boxes. */
|
|
72
|
+
.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); }
|
|
73
|
+
.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); }
|
|
74
|
+
.ui-pager > a:hover { color: var(--ui-text-strong); }
|
|
75
|
+
.ui-pager > a:focus-visible { @apply --ui-focus-ring; outline-offset: 4px; border-radius: var(--ui-radius-xs); }
|
|
76
|
+
.ui-pager > a[rel="next"] { justify-items: end; text-align: right; }
|
|
77
|
+
.ui-pager small { color: var(--ui-text-muted); @apply --ui-eyebrow-type; }
|
|
78
|
+
.ui-pager b { font-weight: var(--ui-weight-regular); font-size: var(--ui-text-base); line-height: 1.5; text-wrap: balance; }
|
|
79
|
+
.ui-pager > a[rel="prev"] > b::before { content: "←"; margin-right: .5em; color: var(--ui-text-muted); }
|
|
80
|
+
.ui-pager > a[rel="next"] > b::after { content: "→"; margin-left: .5em; color: var(--ui-text-muted); }
|
|
81
|
+
.ui-pager > a:hover > b::before, .ui-pager > a:hover > b::after { color: var(--ui-text-strong); }
|
|
82
|
+
|
|
83
|
+
/* Overlay dialog (search, image preview) */
|
|
84
|
+
.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); }
|
|
85
|
+
.ui-dialog::backdrop { background: var(--ui-surface-scrim); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
|
|
86
|
+
.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); }
|
|
87
|
+
.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); }
|
|
88
|
+
.ui-dialog-search input:focus { outline: none; }
|
|
89
|
+
@media (forced-colors: active) { .ui-dialog-search input:focus-visible { outline: 2px solid Highlight; outline-offset: 2px; } }
|
|
90
|
+
.ui-results { display: grid; gap: 2px; margin: 0; padding: var(--ui-inset); list-style: none; }
|
|
91
|
+
.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; }
|
|
92
|
+
.ui-results > li > a small { color: var(--ui-text-muted); font: var(--ui-weight-regular) .75rem/1.4 var(--font-family-sans); }
|
|
93
|
+
.ui-results > li > a b { color: var(--ui-text-strong); font-weight: var(--ui-weight-medium); font-size: var(--ui-text-small); }
|
|
94
|
+
.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); }
|
|
95
|
+
.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; }
|
|
96
|
+
.ui-dialog-foot span { display: inline-flex; align-items: center; gap: 6px; }
|
|
97
|
+
|
|
98
|
+
.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; }
|
|
99
|
+
.ui-pagehead-meta > a { color: inherit; text-decoration: none; }
|
|
100
|
+
.ui-pagehead-meta > a:hover { color: var(--ui-text-strong); }
|
|
101
|
+
.ui-pagehead-meta > span + span::before, .ui-pagehead-meta > * + a::before { content: "·"; margin-right: var(--ui-space-md); color: var(--ui-text-disabled); }
|
|
102
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/* Specimens and annotations: the vocabulary inside a stage. Hue appears only here, always named by a legend or label. */
|
|
2
|
+
@layer components {
|
|
3
|
+
/* Item: a tile that stands for content. tone × variant */
|
|
4
|
+
.ui-item {
|
|
5
|
+
--tone: var(--ui-tone-neutral);
|
|
6
|
+
display: grid; place-items: center; min-width: 3rem; min-height: 3rem; padding: var(--ui-space-xs) var(--ui-space-sm);
|
|
7
|
+
border-radius: var(--ui-radius-md); @apply --ui-sheet-face;
|
|
8
|
+
color: var(--ui-text-strong); box-shadow: var(--ui-elevation-rise-1); font: var(--ui-weight-medium) .8125rem/1.4 var(--font-family-mono);
|
|
9
|
+
}
|
|
10
|
+
.ui-item[data-tone="blue"], .ui-badge[data-tone="blue"], .ui-legend [data-tone="blue"] { --tone: var(--ui-tone-blue); }
|
|
11
|
+
.ui-item[data-tone="violet"], .ui-badge[data-tone="violet"], .ui-legend [data-tone="violet"] { --tone: var(--ui-tone-violet); }
|
|
12
|
+
.ui-item[data-tone="amber"], .ui-badge[data-tone="amber"], .ui-legend [data-tone="amber"] { --tone: var(--ui-tone-amber); }
|
|
13
|
+
.ui-item[data-tone="green"], .ui-badge[data-tone="green"], .ui-legend [data-tone="green"] { --tone: var(--ui-tone-green); }
|
|
14
|
+
.ui-item[data-tone="red"], .ui-badge[data-tone="red"], .ui-legend [data-tone="red"] { --tone: var(--ui-tone-red); }
|
|
15
|
+
.ui-item:not([data-tone="neutral"], :not([data-tone])) {
|
|
16
|
+
background: linear-gradient(180deg, color-mix(in oklab, var(--tone) 10%, var(--ui-surface-sheet)), color-mix(in oklab, var(--tone) 13%, var(--ui-surface-sheet-lo)));
|
|
17
|
+
color: color-mix(in oklab, var(--tone) 72%, var(--ui-text-strong));
|
|
18
|
+
box-shadow: inset 0 1px 0 var(--ui-highlight), 0 0 0 1px color-mix(in oklab, var(--tone) 36%, transparent), 0 1px 1px -.5px var(--ui-shade-1), 0 2px 2px -1px var(--ui-shade-2);
|
|
19
|
+
}
|
|
20
|
+
.ui-item[data-variant="solid"] { background: var(--tone); color: light-dark(oklch(100% 0 none), oklch(15% .0016 265)); box-shadow: inset 0 1px 0 oklch(100% 0 none / .22), 0 0 0 1px color-mix(in oklab, var(--tone) 80%, black), 0 1px 1px -.5px var(--ui-shade-1), 0 2px 2px -1px var(--ui-shade-2); }
|
|
21
|
+
.ui-item[data-variant="outline"] { background: transparent; color: var(--ui-text-strong); box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--tone) 60%, transparent); }
|
|
22
|
+
.ui-item[data-variant="ghost"] { background: var(--ui-hatch); color: var(--ui-text-muted); box-shadow: inset 0 0 0 1px var(--ui-line-divider); }
|
|
23
|
+
|
|
24
|
+
/* Badge: a small, legible category or state */
|
|
25
|
+
.ui-badge {
|
|
26
|
+
--tone: var(--ui-tone-neutral);
|
|
27
|
+
display: inline-flex; align-items: center; gap: 5px; max-width: 100%; height: 1.375rem; padding: 0 .5rem; border-radius: var(--ui-radius-sm);
|
|
28
|
+
background: color-mix(in oklab, var(--tone) 10%, transparent); color: color-mix(in oklab, var(--tone) 75%, var(--ui-text-strong));
|
|
29
|
+
box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--tone) 24%, transparent);
|
|
30
|
+
font: var(--ui-weight-medium) .71875rem/1 var(--font-family-mono); letter-spacing: .01em; white-space: nowrap; vertical-align: middle;
|
|
31
|
+
}
|
|
32
|
+
.ui-badge[data-tone="neutral"], .ui-badge:not([data-tone]) { background: var(--ui-surface-well); color: var(--ui-text-body); box-shadow: inset 0 0 0 1px var(--ui-line-contour); }
|
|
33
|
+
.ui-badge[data-variant="dot"]::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--tone); }
|
|
34
|
+
.ui-badge[data-size="sm"] { height: 1.125rem; padding: 0 .375rem; font-size: .65625rem; }
|
|
35
|
+
|
|
36
|
+
/* Label: names a condition, outside the measured layout */
|
|
37
|
+
.ui-label { display: inline-block; color: var(--ui-text-muted); @apply --ui-label-type; }
|
|
38
|
+
.ui-label[data-case="as-is"] { text-transform: none; letter-spacing: 0; font-size: .75rem; }
|
|
39
|
+
/* Without `as-is` a label is a quiet heading over a group: an eyebrow. */
|
|
40
|
+
.ui-label:not([data-case]) { @apply --ui-eyebrow-type; }
|
|
41
|
+
|
|
42
|
+
/* Legend: every teaching color has a visible name */
|
|
43
|
+
.ui-legend { display: flex; flex-wrap: wrap; gap: var(--ui-space-xs) var(--ui-space-lg); margin: 0; padding: 0; list-style: none; color: var(--ui-text-body); font: var(--ui-weight-regular) .75rem/1.4 var(--font-family-sans); font-variant-numeric: tabular-nums; }
|
|
44
|
+
.ui-legend > li { display: inline-flex; align-items: center; gap: var(--ui-space-xs); }
|
|
45
|
+
.ui-legend > li > i { --tone: var(--ui-tone-neutral); width: 10px; height: 10px; border-radius: 3px; background: var(--tone); box-shadow: inset 0 0 0 1px oklch(0% 0 none / .12); }
|
|
46
|
+
|
|
47
|
+
/* Measure: drafting leaders — hairline, end dots, value on the stage */
|
|
48
|
+
.ui-measure { display: grid; gap: var(--ui-space-xs); min-width: 0; }
|
|
49
|
+
.ui-measure-head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 2px var(--ui-space-sm); color: var(--ui-text-muted); font: var(--ui-weight-regular) .6875rem/1.4 var(--font-family-mono); }
|
|
50
|
+
.ui-measure-head output { color: var(--ui-text-strong); font-weight: var(--ui-weight-medium); font-variant-numeric: tabular-nums; }
|
|
51
|
+
.ui-measure-rule { position: relative; height: 9px; }
|
|
52
|
+
.ui-measure-rule::before { content: ""; position: absolute; top: 4px; right: 3px; left: 3px; height: 1px; background: var(--ui-line-mark); }
|
|
53
|
+
.ui-measure-rule::after { content: ""; position: absolute; inset: 1px 0 auto; height: 7px; background: radial-gradient(circle at 3.5px 50%, var(--ui-surface-stage) 2px, var(--ui-line-mark) 2.2px 3px, transparent 3.2px), radial-gradient(circle at calc(100% - 3.5px) 50%, var(--ui-surface-stage) 2px, var(--ui-line-mark) 2.2px 3px, transparent 3.2px); }
|
|
54
|
+
.ui-leader { position: absolute; display: flex; align-items: center; gap: var(--ui-space-xs); color: var(--ui-text-body); font: var(--ui-weight-medium) .65625rem/1 var(--font-family-mono); white-space: nowrap; }
|
|
55
|
+
.ui-leader > i { font-style: normal; color: var(--ui-text-muted); }
|
|
56
|
+
|
|
57
|
+
/* Axes: physical directions around the subject */
|
|
58
|
+
.ui-axes { display: grid; grid-template-columns: 2rem minmax(0, 1fr); grid-template-rows: auto auto; gap: var(--ui-space-sm); min-width: 0; }
|
|
59
|
+
.ui-axes > .ui-axes-inline { grid-column: 2; display: flex; align-items: center; gap: var(--ui-space-sm); color: var(--ui-text-body); font: var(--ui-weight-medium) .6875rem/1 var(--font-family-mono); white-space: nowrap; }
|
|
60
|
+
.ui-axes > .ui-axes-block { grid-row: 2; display: flex; flex-direction: column; align-items: center; gap: var(--ui-space-xs); color: var(--ui-text-body); font: var(--ui-weight-medium) .6875rem/1 var(--font-family-mono); }
|
|
61
|
+
.ui-axes > .ui-axes-block > span:first-child { writing-mode: vertical-rl; white-space: nowrap; }
|
|
62
|
+
.ui-axes-rule { position: relative; flex: 1; background: var(--ui-line-mark); }
|
|
63
|
+
.ui-axes-inline .ui-axes-rule { height: 1px; }
|
|
64
|
+
.ui-axes-block .ui-axes-rule { width: 1px; }
|
|
65
|
+
.ui-axes-rule::after { content: ""; position: absolute; width: 6px; height: 6px; border: solid var(--ui-line-mark); }
|
|
66
|
+
.ui-axes-inline .ui-axes-rule::after { right: 0; top: -3px; border-width: 1px 1px 0 0; rotate: 45deg; }
|
|
67
|
+
.ui-axes-block .ui-axes-rule::after { bottom: 0; left: -3px; border-width: 0 1px 1px 0; rotate: 45deg; }
|
|
68
|
+
.ui-axes > .ui-axes-content { grid-column: 2; grid-row: 2; min-width: 0; }
|
|
69
|
+
|
|
70
|
+
/* Swatch: a named role with its actual paint */
|
|
71
|
+
.ui-swatch { display: grid; gap: var(--ui-space-xs); min-width: 0; margin: 0; padding: var(--ui-inset); border-radius: var(--ui-radius-lg); @apply --ui-sheet-face; box-shadow: var(--ui-elevation-rise-1); }
|
|
72
|
+
.ui-swatch-paint { height: 4.5rem; border-radius: calc(var(--ui-radius-lg) - var(--ui-inset)); box-shadow: inset 0 0 0 1px var(--ui-line-contour); }
|
|
73
|
+
.ui-swatch > figcaption { display: grid; gap: 2px; padding: 0 4px 2px; }
|
|
74
|
+
.ui-swatch > figcaption b { color: var(--ui-text-strong); font-size: .75rem; font-weight: var(--ui-weight-strong); }
|
|
75
|
+
.ui-swatch > figcaption code { color: var(--ui-text-muted); font: var(--ui-weight-regular) .6875rem/1.4 var(--font-family-mono); overflow-wrap: anywhere; }
|
|
76
|
+
|
|
77
|
+
/* Palette: fixed preset colors, copy on click */
|
|
78
|
+
.ui-palette { display: grid; gap: var(--ui-space-md); container-type: inline-size; }
|
|
79
|
+
.ui-palette-row { display: grid; grid-template-columns: 4.5rem repeat(13, minmax(0, 1fr)); align-items: center; gap: 3px; }
|
|
80
|
+
.ui-palette-row > span { color: var(--ui-text-strong); font-size: .75rem; font-weight: var(--ui-weight-medium); text-transform: capitalize; }
|
|
81
|
+
.ui-palette-cell { display: grid; min-width: 0; gap: var(--ui-space-2xs); text-align: center; }
|
|
82
|
+
.ui-palette-cell > span { color: var(--ui-text-muted); font: var(--ui-weight-regular) .6875rem/1.5 var(--font-family-mono); }
|
|
83
|
+
.ui-palette-chip { appearance: none; forced-color-adjust: none; height: 2.25rem; border: 0; border-radius: var(--ui-radius-sm); cursor: pointer; box-shadow: inset 0 0 0 1px light-dark(oklch(0% 0 none / .06), oklch(100% 0 none / .08)); transition: translate var(--ui-duration-quick) var(--ui-ease), box-shadow var(--ui-duration-quick); }
|
|
84
|
+
.ui-palette-cell:first-of-type > .ui-palette-chip { border-radius: var(--ui-radius-md) 3px 3px var(--ui-radius-md); }
|
|
85
|
+
.ui-palette-cell:last-of-type > .ui-palette-chip { border-radius: 3px var(--ui-radius-md) var(--ui-radius-md) 3px; }
|
|
86
|
+
.ui-palette-chip:hover { translate: 0 -1px; box-shadow: inset 0 0 0 1px light-dark(oklch(0% 0 none / .08), oklch(100% 0 none / .2)), 0 4px 8px -4px var(--ui-shade-2); }
|
|
87
|
+
.ui-palette-chip:focus-visible { @apply --ui-focus-ring; outline-offset: 2px; }
|
|
88
|
+
@container (width < 36rem) { .ui-palette-row { grid-template-columns: repeat(7, minmax(0, 1fr)); } .ui-palette-row > span { grid-column: 1 / -1; } }
|
|
89
|
+
|
|
90
|
+
/* Spacing specimen */
|
|
91
|
+
.ui-spacing { position: relative; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--ui-space-md); padding: var(--ui-space-md); border-radius: var(--ui-radius-lg); background: var(--ui-hatch); box-shadow: inset 0 0 0 1px var(--ui-line-divider); }
|
|
92
|
+
|
|
93
|
+
/* Player: play, pause and replay a native animation; the timeline reads its actual state */
|
|
94
|
+
.ui-player { display: flex; flex-wrap: wrap; align-items: center; gap: var(--ui-space-xs); }
|
|
95
|
+
.ui-player-time { display: flex; align-items: center; gap: var(--ui-space-sm); flex: 1; min-width: 8rem; color: var(--ui-text-muted); font: var(--ui-weight-medium) .6875rem/1 var(--font-family-mono); font-variant-numeric: tabular-nums; }
|
|
96
|
+
.ui-player-time > .ui-bar { flex: 1; height: 4px; box-shadow: none; background: var(--ui-line-divider); }
|
|
97
|
+
.ui-player[data-state="playing"] .ui-player-time > output { color: var(--ui-text-strong); }
|
|
98
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/* Surfaces and the example frame. tray (14) → 4px inset → stage / code / sheet (10) */
|
|
2
|
+
@layer components {
|
|
3
|
+
.ui-sheet { position: relative; border-radius: var(--ui-radius-xl); @apply --ui-sheet-face; color: var(--ui-text-body); box-shadow: var(--ui-elevation-rise-2); }
|
|
4
|
+
.ui-sheet[data-elevation="1"] { box-shadow: var(--ui-elevation-rise-1); }
|
|
5
|
+
.ui-sheet[data-elevation="3"] { box-shadow: var(--ui-elevation-rise-3); }
|
|
6
|
+
.ui-sheet[data-elevation="flat"] { background: var(--ui-surface-sheet); box-shadow: var(--ui-elevation-flat); }
|
|
7
|
+
.ui-well { border-radius: var(--ui-radius-md); background: var(--ui-surface-well); box-shadow: var(--ui-elevation-sink); }
|
|
8
|
+
|
|
9
|
+
/* The tray holds one complete example: head, stage, source, caption */
|
|
10
|
+
.ui-tray { position: relative; min-width: 0; margin: 0; padding: var(--ui-inset); border-radius: var(--ui-radius-2xl); background: var(--ui-surface-tray); color: var(--ui-text-body); box-shadow: inset 0 0 0 1px var(--ui-line-hair), 0 1px 0 var(--ui-lip); }
|
|
11
|
+
.ui-tray-head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--ui-space-xs) var(--ui-space-md); min-height: 2.75rem; padding: 2px var(--ui-inset) var(--ui-space-xs) var(--ui-space-sm); }
|
|
12
|
+
.ui-tray-title { min-width: 0; margin: 0; color: var(--ui-text-strong); font-size: .8125rem; font-weight: var(--ui-weight-medium); line-height: 1.4; letter-spacing: 0; }
|
|
13
|
+
.ui-tray-description { margin: 2px 0 0; color: var(--ui-text-muted); font-size: .75rem; line-height: 1.5; }
|
|
14
|
+
.ui-tray-tools { display: flex; flex-wrap: wrap; align-items: center; gap: var(--ui-space-xs); }
|
|
15
|
+
.ui-tray-caption { margin: 0; padding: var(--ui-space-sm) var(--ui-space-sm) var(--ui-space-xs); color: var(--ui-text-muted); font-size: .78125rem; line-height: 1.6; text-wrap: pretty; overflow-wrap: anywhere; }
|
|
16
|
+
.ui-tray-caption code { color: var(--ui-text-body); }
|
|
17
|
+
.ui-tray > * + :is(.ui-stage, .ui-code, .ui-browser, .ui-compare) { margin-top: var(--ui-inset); }
|
|
18
|
+
.ui-tray > .ui-tray-head + :is(.ui-stage, .ui-code, .ui-browser, .ui-compare) { margin-top: 0; }
|
|
19
|
+
/* Concentric with the tray like every panel in it: 14 less the 4px inset. */
|
|
20
|
+
.ui-tray > .ui-callout { margin-top: var(--ui-inset); border-radius: var(--ui-radius-xl); }
|
|
21
|
+
.ui-tray > .ui-disclosure > summary { padding-inline: var(--ui-space-sm); }
|
|
22
|
+
|
|
23
|
+
/* The stage: a lit, slightly recessed well where the specimen stands. It holds a small specimen in a modest frame
|
|
24
|
+
(10rem) and otherwise follows its content, so a single row never floats in an empty well. */
|
|
25
|
+
.ui-stage {
|
|
26
|
+
position: relative; isolation: isolate; container: stage / inline-size; display: grid; place-items: center;
|
|
27
|
+
min-height: 10rem; padding: 3rem 2.5rem; border-radius: var(--ui-radius-xl); overflow: hidden;
|
|
28
|
+
background: var(--ui-stage-light), var(--ui-surface-stage);
|
|
29
|
+
box-shadow: inset 0 0 0 1px var(--ui-line-contour), inset 0 1px 2px light-dark(oklch(18% 0 none / .04), oklch(0% 0 none / .45)), 0 1px 0 var(--ui-lip);
|
|
30
|
+
}
|
|
31
|
+
.ui-stage[data-padding="none"] { padding: 0; place-items: stretch; }
|
|
32
|
+
.ui-stage[data-padding="sm"] { min-height: 0; padding: var(--ui-space-md); }
|
|
33
|
+
.ui-stage[data-align="start"] { place-items: start; }
|
|
34
|
+
.ui-stage[data-background="grid"] { background: linear-gradient(var(--ui-line-hair) 1px, transparent 1px) 0 0 / 20px 20px, linear-gradient(90deg, var(--ui-line-hair) 1px, transparent 1px) 0 0 / 20px 20px, var(--ui-stage-light), var(--ui-surface-stage); }
|
|
35
|
+
.ui-stage[data-background="dots"] { background: radial-gradient(var(--ui-line-divider) .8px, transparent 1.1px) 0 0 / 14px 14px, var(--ui-stage-light), var(--ui-surface-stage); }
|
|
36
|
+
.ui-stage[data-background="hatch"] { background: var(--ui-hatch), var(--ui-surface-stage); }
|
|
37
|
+
.ui-stage[data-background="checkerboard"] { background: conic-gradient(var(--ui-line-hair) 25%, transparent 0 50%, var(--ui-line-hair) 0 75%, transparent 0) 0 0 / 16px 16px, var(--ui-surface-stage); }
|
|
38
|
+
@media (width < 35rem) { .ui-stage { min-height: 8rem; padding: 2.25rem 1.125rem; } }
|
|
39
|
+
|
|
40
|
+
/* Inside a tray the stage is told apart by its tone alone: the tray's ring is the example's one edge, so a framed
|
|
41
|
+
subject on the stage (a card, a form, a window) is the only line within it. */
|
|
42
|
+
.ui-tray .ui-stage { box-shadow: none; }
|
|
43
|
+
|
|
44
|
+
/* Standalone stage without a tray (embedded in prose for very small specimens) */
|
|
45
|
+
.ui-stage[data-standalone] { border-radius: var(--ui-radius-2xl); }
|
|
46
|
+
|
|
47
|
+
/* Comparison: the same subject under two conditions */
|
|
48
|
+
.ui-compare { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr)); gap: var(--ui-inset); }
|
|
49
|
+
.ui-compare > figure { display: grid; grid-template-rows: auto 1fr; gap: 0; min-width: 0; margin: 0; }
|
|
50
|
+
.ui-compare > figure > figcaption { padding: var(--ui-space-xs) var(--ui-space-sm); color: var(--ui-text-muted); @apply --ui-label-type; }
|
|
51
|
+
.ui-compare .ui-stage { min-height: 11rem; padding: var(--ui-space-xl) var(--ui-space-lg); }
|
|
52
|
+
|
|
53
|
+
/* Browser chrome for a real document in an iframe: one contour drawn over the whole window, the toolbar a tray tone
|
|
54
|
+
above the page with its dots only — the tray head names the document. Tone, not rules, parts them. */
|
|
55
|
+
.ui-browser { position: relative; overflow: hidden; border-radius: var(--ui-radius-xl); background: var(--ui-surface-stage); box-shadow: 0 1px 0 var(--ui-lip); }
|
|
56
|
+
.ui-browser::after { content: ""; position: absolute; inset: 0; z-index: 2; border-radius: inherit; box-shadow: inset 0 0 0 1px var(--ui-line-contour); pointer-events: none; }
|
|
57
|
+
/* A tray that holds only a browser lends it its place in the flow, not another frame. */
|
|
58
|
+
.ui-tray:has(> .ui-browser:only-child) { padding: 0; border-radius: var(--ui-radius-xl); background: none; box-shadow: none; }
|
|
59
|
+
/* Plain: a preview without chrome, where the window is not the lesson. It is a stage: inside a tray its tone sets it
|
|
60
|
+
apart and the contour goes; alone, or in a tray that lends it only its place, it keeps the contour as its edge.
|
|
61
|
+
A client viewport sits in its island's wrapper, so the tray is an ancestor, not a parent. */
|
|
62
|
+
.ui-tray .ui-browser[data-variant="plain"]::after { content: none; }
|
|
63
|
+
.ui-tray > .ui-browser[data-variant="plain"]:only-child::after { content: ""; }
|
|
64
|
+
.ui-browser-bar { display: flex; align-items: center; gap: var(--ui-space-sm); height: 2rem; padding: 0 var(--ui-space-sm); background: var(--ui-surface-tray); }
|
|
65
|
+
.ui-browser-dots { display: flex; gap: 6px; }
|
|
66
|
+
.ui-browser-dots > i { width: 9px; height: 9px; border-radius: 50%; background: var(--ui-line-divider); }
|
|
67
|
+
.ui-browser-body { position: relative; min-height: 12rem; }
|
|
68
|
+
/* A real document: the tools set the viewport width, the handle follows its edge */
|
|
69
|
+
.ui-browser-body:has(> .ui-browser-viewport) { min-height: 0; overflow-x: auto; scrollbar-width: thin; }
|
|
70
|
+
.ui-browser-viewport { position: relative; max-width: none; margin-inline: auto; }
|
|
71
|
+
.ui-browser-viewport > iframe { display: block; width: 100%; border: 0; background: transparent; }
|
|
72
|
+
/* The example's controls: a row on the tray itself, between the stage and the source, aligned with the tray head. No
|
|
73
|
+
surface of their own, so the stage stays the document and nothing inside it reads as part of the page shown. */
|
|
74
|
+
.ui-browser-tools { display: flex; flex-wrap: wrap; align-items: center; gap: var(--ui-space-xs) var(--ui-space-sm); padding: var(--ui-space-sm) var(--ui-space-sm) var(--ui-space-xs); }
|
|
75
|
+
/* One rhythm around the row: 12px to the stage above and to the source below (its 8px plus the tray's 4px inset), or to the first line of
|
|
76
|
+
a caption; its ends 16px in from the tray's edge, on the tray head's start; every control in it one 32px height. */
|
|
77
|
+
.ui-tray > :has(> .ui-browser-tools:last-child) + .ui-tray-caption, .ui-tray > .ui-browser-tools + .ui-tray-caption { padding-top: 0; }
|
|
78
|
+
.ui-browser-tools > .ui-segmented > :is(button, a) { min-height: 1.625rem; }
|
|
79
|
+
/* The range, its caption and its live reading stay one group, so a phone never parts the width from its slider. */
|
|
80
|
+
.ui-browser-range { display: flex; flex: 1 1 14rem; align-items: center; gap: var(--ui-space-sm); min-width: 0; }
|
|
81
|
+
/* Enlarged text must leave room for the label and reading in a narrow article. */
|
|
82
|
+
.ui-browser-range > .ui-range { flex: 1 1 6rem; min-width: 0; max-width: 12rem; }
|
|
83
|
+
/* The range's caption is a label in the tools' own type, whether or not the specimen parts are loaded. */
|
|
84
|
+
.ui-browser-range > label { color: var(--ui-text-muted); @apply --ui-label-type; }
|
|
85
|
+
.ui-browser-tools > output, .ui-browser-range > output { flex: 1 1 100%; color: var(--ui-text-muted); font: var(--ui-weight-regular) .6875rem/1.5 var(--font-family-mono); overflow-wrap: anywhere; }
|
|
86
|
+
/* The live viewport width stays beside the range that sets it. */
|
|
87
|
+
.ui-browser-range > .ui-browser-size { flex: none; font: var(--ui-weight-regular) .75rem/1.5 var(--font-family-sans); font-variant-numeric: tabular-nums; }
|
|
88
|
+
.ui-resize { position: absolute; top: 0; right: 0; bottom: 0; display: grid; place-items: center; width: 1rem; cursor: ew-resize; touch-action: none; }
|
|
89
|
+
.ui-resize::before { content: ""; width: 4px; height: 2.5rem; border-radius: var(--ui-radius-pill); background: var(--ui-line-strong); }
|
|
90
|
+
|
|
91
|
+
/* Local scroll region, keyboard reachable */
|
|
92
|
+
.ui-scroll { overflow: auto; overscroll-behavior: contain; max-height: 16rem; border-radius: var(--ui-radius-lg); background: var(--ui-surface-well); box-shadow: var(--ui-elevation-sink); }
|
|
93
|
+
.ui-scroll:focus-visible { @apply --ui-focus-ring; outline-offset: 2px; }
|
|
94
|
+
|
|
95
|
+
/* Expand: a long surface clamps under a canvas fade, with one quiet control to show the rest */
|
|
96
|
+
.ui-expand { position: relative; min-width: 0; }
|
|
97
|
+
.ui-expand[data-expanded="false"] > :first-child { max-height: 30rem; overflow: hidden; }
|
|
98
|
+
.ui-expand-control { display: flex; justify-content: center; padding-top: var(--ui-space-sm); }
|
|
99
|
+
.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%); }
|
|
100
|
+
.ui-expand[data-expanded="true"] > .ui-expand-control { position: sticky; bottom: var(--ui-space-sm); pointer-events: none; }
|
|
101
|
+
.ui-expand-control > .ui-button { pointer-events: auto; }
|
|
102
|
+
.ui-expand-control > .ui-button > svg { transition: rotate var(--ui-duration-quick) var(--ui-ease); }
|
|
103
|
+
.ui-expand[data-expanded="true"] > .ui-expand-control > .ui-button > svg { rotate: 180deg; }
|
|
104
|
+
}
|