@master/internal-site 0.0.0-stage → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +68 -2
- package/dist/astro.d.mts +3 -0
- package/dist/astro.mjs +510 -0
- package/dist/config.d.mts +69 -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 +68 -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 +93 -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 +96 -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 +20 -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 +1081 -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 +73 -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,63 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import './footer.css'
|
|
3
|
+
import IconChevronDown from '@tabler/icons-svelte-runes/icons/chevron-down'
|
|
4
|
+
import IconDeviceDesktop from '@tabler/icons-svelte-runes/icons/device-desktop'
|
|
5
|
+
import IconLanguage from '@tabler/icons-svelte-runes/icons/language'
|
|
6
|
+
import IconMoon from '@tabler/icons-svelte-runes/icons/moon'
|
|
7
|
+
import IconSun from '@tabler/icons-svelte-runes/icons/sun'
|
|
8
|
+
import LanguageSelect from '@master/internal-site/components/LanguageSelect.svelte'
|
|
9
|
+
import Link from '@master/internal-site/components/Link.svelte'
|
|
10
|
+
import ThemeSelect from '@master/internal-site/components/ThemeSelect.svelte'
|
|
11
|
+
import { useThemeMode } from '@master/internal-site/contexts/theme-mode.svelte'
|
|
12
|
+
import { getSite } from '@master/internal-site/site'
|
|
13
|
+
import type { FooterNavGroup } from '../docs-shell/components/Footer.svelte'
|
|
14
|
+
|
|
15
|
+
let { navGroups, wordmark }: { navGroups: FooterNavGroup[], wordmark: string } = $props()
|
|
16
|
+
|
|
17
|
+
/** An open closing colophon, aligned to the page's drafting rails. */
|
|
18
|
+
const { i18n, locale, t } = getSite()
|
|
19
|
+
const themeMode = useThemeMode()
|
|
20
|
+
// The preference is read on the client; the server and the first paint show the default.
|
|
21
|
+
const preference = $derived(themeMode.preference ?? 'system')
|
|
22
|
+
const ThemeIcon = $derived(preference === 'light' ? IconSun : preference === 'dark' ? IconMoon : IconDeviceDesktop)
|
|
23
|
+
</script>
|
|
24
|
+
|
|
25
|
+
<footer class="home-footer">
|
|
26
|
+
<div aria-hidden="true" class="home-footer-drafting"></div>
|
|
27
|
+
<div class="app-wrapper home-footer-wrap">
|
|
28
|
+
<nav aria-label={t('Footer')} class="home-footer-nav">
|
|
29
|
+
{#each navGroups as group (group.name)}
|
|
30
|
+
<div class="home-footer-group">
|
|
31
|
+
<h2 class="home-footer-heading">{t(group.name)}</h2>
|
|
32
|
+
<ul class="home-footer-links">
|
|
33
|
+
{#each group.links as link (link.href)}
|
|
34
|
+
<li>
|
|
35
|
+
<Link class="home-footer-link" href={link.href}>{t(link.name)}</Link>
|
|
36
|
+
</li>
|
|
37
|
+
{/each}
|
|
38
|
+
</ul>
|
|
39
|
+
</div>
|
|
40
|
+
{/each}
|
|
41
|
+
</nav>
|
|
42
|
+
<div class="home-footer-base">
|
|
43
|
+
<div class="home-footer-meta">
|
|
44
|
+
<span class="home-footer-copyright">© {new Date().getFullYear()} Aoyue Design LLC.</span>
|
|
45
|
+
</div>
|
|
46
|
+
<div class="home-footer-preferences">
|
|
47
|
+
<label class="home-footer-select">
|
|
48
|
+
<ThemeIcon aria-hidden="true" size={15} stroke={1.5} />
|
|
49
|
+
<span>{t(preference.charAt(0).toUpperCase() + preference.slice(1))}</span>
|
|
50
|
+
<IconChevronDown aria-hidden="true" size={13} stroke={1.75} />
|
|
51
|
+
<ThemeSelect aria-label={t('Theme')} />
|
|
52
|
+
</label>
|
|
53
|
+
<label class="home-footer-select">
|
|
54
|
+
<IconLanguage aria-hidden="true" size={15} stroke={1.5} />
|
|
55
|
+
<span>{i18n.nameOfLocale[locale] ?? locale}</span>
|
|
56
|
+
<IconChevronDown aria-hidden="true" size={13} stroke={1.75} />
|
|
57
|
+
<LanguageSelect aria-label={t('Language')} />
|
|
58
|
+
</label>
|
|
59
|
+
</div>
|
|
60
|
+
</div>
|
|
61
|
+
<p aria-hidden="true" class="home-footer-mark home-lit" data-mark={wordmark}>{wordmark}</p>
|
|
62
|
+
</div>
|
|
63
|
+
</footer>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
import HomeIllustrationArt from '@master/internal-site/home/HomeIllustrationArt.svelte'
|
|
3
|
+
import type { HomeIllustrationId } from '@master/internal-site/home/home-illustration.ts'
|
|
4
|
+
|
|
5
|
+
export type { HomeIllustrationId } from '@master/internal-site/home/home-illustration.ts'
|
|
6
|
+
|
|
7
|
+
interface Props {
|
|
8
|
+
class?: string
|
|
9
|
+
icon: HomeIllustrationId
|
|
10
|
+
size?: number
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/** Decorative, theme-specific artwork. CSS reserves its square before the image loads. */
|
|
14
|
+
const { class: className, icon, size = 80 } = Astro.props
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
<HomeIllustrationArt class={className} {icon} {size} />
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { homeIconArtwork } from '@master/internal-site/home/icons/artwork.ts'
|
|
3
|
+
import '@master/internal-site/home/icons/artwork.css'
|
|
4
|
+
import Image from '@master/internal-site/components/Image.svelte'
|
|
5
|
+
import type { HomeIllustrationId } from '@master/internal-site/home/home-illustration.ts'
|
|
6
|
+
|
|
7
|
+
/** Decorative, theme-specific artwork. CSS reserves its square before the image loads. Islands render it directly; pages use `HomeIllustration.astro`. */
|
|
8
|
+
let { class: className, icon, size = 80 }: { class?: string, icon: HomeIllustrationId, size?: number } = $props()
|
|
9
|
+
const artwork = $derived(homeIconArtwork[icon])
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
<span aria-hidden="true" class={['home-illustration', className]} data-home-icon={icon}>
|
|
13
|
+
<Image alt="" class="home-icon-artwork home-illustration-light" height={size} src={artwork.light} width={size} />
|
|
14
|
+
<Image alt="" class="home-icon-artwork home-illustration-dark" height={size} src={artwork.dark} width={size} />
|
|
15
|
+
</span>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { onMount } from 'svelte'
|
|
3
|
+
|
|
4
|
+
/** Hangs the page lamp over every `.home-lit` element below the hero and in the footer; without script, CSS keeps the resting light. */
|
|
5
|
+
onMount(() => {
|
|
6
|
+
const root = document.body
|
|
7
|
+
let cleanup: (() => void) | undefined
|
|
8
|
+
let disposed = false
|
|
9
|
+
// Only a failed download falls back silently to the resting light in CSS; a fault in the lamp surfaces.
|
|
10
|
+
import('./home-lamp').then(({ mountHomeLamp }) => {
|
|
11
|
+
if (!disposed) cleanup = mountHomeLamp(root)
|
|
12
|
+
}, () => undefined)
|
|
13
|
+
return () => {
|
|
14
|
+
disposed = true
|
|
15
|
+
cleanup?.()
|
|
16
|
+
}
|
|
17
|
+
})
|
|
18
|
+
</script>
|
|
@@ -0,0 +1,532 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Home design language: quiet precision.
|
|
3
|
+
* Semantics and usage rules live in components/DESIGN.md; components use these names,
|
|
4
|
+
* never raw palette steps. Every surface, line and text token aliases a zinc role from the preset
|
|
5
|
+
* or the site theme (styles/docs-shell/theme.css), so the homepage and the docs share one system.
|
|
6
|
+
*/
|
|
7
|
+
@layer components {
|
|
8
|
+
:root:has(.home-page) {
|
|
9
|
+
/* Surfaces: the site's zinc roles. A canvas ground, a recessed shell that wraps content, raised sheets on top. */
|
|
10
|
+
--home-ground: var(--color-surface-canvas);
|
|
11
|
+
--home-tray: var(--color-surface-shell);
|
|
12
|
+
--home-sheet: var(--color-surface-raised);
|
|
13
|
+
/* A well is a recess back down to the canvas, one step below the sheet around it in either scheme. */
|
|
14
|
+
--home-well: var(--color-surface-canvas);
|
|
15
|
+
--home-float: var(--color-surface-floating);
|
|
16
|
+
--home-ink: var(--color-surface-ink);
|
|
17
|
+
|
|
18
|
+
/* Lines: hairlines separate, rules divide, strong rules mark the selected state. */
|
|
19
|
+
--home-hairline: var(--color-line-contour);
|
|
20
|
+
--home-rule: var(--color-line-divider);
|
|
21
|
+
--home-rule-strong: color-mix(in oklab, var(--color-line-control) 55%, transparent);
|
|
22
|
+
--home-guide: var(--color-line-subtle);
|
|
23
|
+
|
|
24
|
+
/* Text: display and data in full strength, prose quieter, annotations faint. */
|
|
25
|
+
--home-text: var(--color-text-strong);
|
|
26
|
+
--home-text-body: var(--color-text-body);
|
|
27
|
+
--home-text-quiet: var(--color-text-muted);
|
|
28
|
+
/* Faint still reads at 4.5:1 on the ground and on sheets: it labels figures, it never hides them. */
|
|
29
|
+
--home-text-faint: color-mix(in oklab, var(--color-text-muted) 72%, var(--color-text-subtle));
|
|
30
|
+
--home-text-inverse: var(--color-text-inverse);
|
|
31
|
+
|
|
32
|
+
/* Signal: the one accent, reserved for a live state and the path a change takes. It is the logo's gold
|
|
33
|
+
(amber, hue ≈ 80), the same light as the hero silk, so the page carries one brand color. */
|
|
34
|
+
--home-signal: var(--color-amber-40);
|
|
35
|
+
--home-signal-ink: var(--color-amber-95);
|
|
36
|
+
--home-signal-glow: color-mix(in oklab, var(--color-amber-40) 32%, transparent);
|
|
37
|
+
--home-ok: light-dark(oklch(0.53 0.12 150), oklch(0.76 0.12 150));
|
|
38
|
+
--home-warn: light-dark(oklch(0.62 0.13 65), oklch(0.8 0.12 75));
|
|
39
|
+
--home-error: light-dark(oklch(0.56 0.17 25), oklch(0.72 0.15 25));
|
|
40
|
+
--home-info: light-dark(oklch(0.55 0.1 250), oklch(0.76 0.09 250));
|
|
41
|
+
|
|
42
|
+
/* Code shares the documentation palette, including the hand-rendered editor figures. */
|
|
43
|
+
--home-code-tag: var(--color-code-function);
|
|
44
|
+
--home-code-attr: var(--color-code-property);
|
|
45
|
+
--home-code-string: var(--color-code-string);
|
|
46
|
+
--home-code-property: var(--color-code-property);
|
|
47
|
+
--home-code-selector: var(--color-code-function);
|
|
48
|
+
|
|
49
|
+
/* Light: a single source above. Raised surfaces catch a 1px line of it on their top edge and sit on a contact shadow. */
|
|
50
|
+
--home-edge: var(--shadow-edge);
|
|
51
|
+
--home-contact: var(--shadow-contact);
|
|
52
|
+
--home-shade-near: light-dark(oklch(18% 0 none / 0.04), oklch(0% 0 none / 0.4));
|
|
53
|
+
--home-shade-far: light-dark(oklch(18% 0 none / 0.07), oklch(0% 0 none / 0.55));
|
|
54
|
+
--home-elevation-1: var(--home-edge), var(--home-contact);
|
|
55
|
+
--home-elevation-2: var(--home-edge), var(--home-contact), 0 10px 28px -8px light-dark(oklch(18% 0 none / 0.05), oklch(0% 0 none / 0.45));
|
|
56
|
+
--home-elevation-3: var(--home-edge), var(--home-contact), 0 24px 60px -28px light-dark(oklch(18% 0 none / 0.1), oklch(0% 0 none / 0.7));
|
|
57
|
+
/* A well is cut in with exactly one hairline; no inner blur thickens its top edge. */
|
|
58
|
+
--home-groove: inset 0 0 0 1px var(--color-line-contour);
|
|
59
|
+
--home-pressed: var(--shadow-pressed);
|
|
60
|
+
/* The same light caught on a top edge: on a sheet or glass, and on an ink surface. */
|
|
61
|
+
--home-highlight: light-dark(rgb(255 255 255 / 0.9), rgb(255 255 255 / 0.06));
|
|
62
|
+
--home-highlight-ink: rgb(255 255 255 / 0.15);
|
|
63
|
+
|
|
64
|
+
/* Shape: a 12px inset everywhere, and radii that nest concentrically: outer = inner + inset. */
|
|
65
|
+
--home-gap: 0.75rem;
|
|
66
|
+
--home-radius-chip: 0.375rem;
|
|
67
|
+
--home-radius-well: 0.5rem;
|
|
68
|
+
--home-radius-sheet: calc(var(--home-radius-well) + var(--home-gap));
|
|
69
|
+
--home-radius-tray: calc(var(--home-radius-sheet) + var(--home-gap));
|
|
70
|
+
--home-radius-stage: var(--home-radius-tray);
|
|
71
|
+
--home-radius-control: 0.625rem;
|
|
72
|
+
|
|
73
|
+
/* Motion: one easing family; interaction is quick, explanation is calm, ambience is slow. */
|
|
74
|
+
--home-ease: cubic-bezier(0.22, 1, 0.36, 1);
|
|
75
|
+
--home-ease-inout: cubic-bezier(0.65, 0, 0.35, 1);
|
|
76
|
+
--home-quick: 160ms;
|
|
77
|
+
--home-base: 280ms;
|
|
78
|
+
--home-slow: 640ms;
|
|
79
|
+
|
|
80
|
+
/* Type: one scale. Display and section titles scale with the viewport; everything else is fixed. */
|
|
81
|
+
--home-display: clamp(2.75rem, 1.2rem + 5.4vw, 5.75rem);
|
|
82
|
+
--home-title: clamp(2.25rem, 1.55rem + 2.1vw, 3.5rem);
|
|
83
|
+
--home-lead: clamp(1.0625rem, 1rem + 0.25vw, 1.25rem);
|
|
84
|
+
--home-card-title: 1.5rem;
|
|
85
|
+
--home-body: 1rem;
|
|
86
|
+
--home-caption: 0.8125rem;
|
|
87
|
+
--home-label: 0.6875rem;
|
|
88
|
+
--home-code: 0.8125rem;
|
|
89
|
+
--home-mono: var(--font-family-mono);
|
|
90
|
+
|
|
91
|
+
/* Rhythm: sections breathe the same amount, and every figure sits the same distance below its header. */
|
|
92
|
+
--home-section-space: clamp(6rem, 3rem + 7.5vw, 10.5rem);
|
|
93
|
+
--home-header-space: clamp(3rem, 2rem + 2.6vw, 5rem);
|
|
94
|
+
|
|
95
|
+
/* Depth for the 3D stages. */
|
|
96
|
+
--home-perspective: 1800px;
|
|
97
|
+
|
|
98
|
+
/*
|
|
99
|
+
* Drafting material: the site's own diagonal stripe tile (`--stripe-image`, 6% ink) as a quiet hatch
|
|
100
|
+
* for margins, reserved space and inactive surfaces, and the guide color for hairlines and marks.
|
|
101
|
+
*/
|
|
102
|
+
--home-hatch: var(--stripe-image);
|
|
103
|
+
--home-hatch-size: 8px;
|
|
104
|
+
--home-mark: var(--home-rule-strong);
|
|
105
|
+
|
|
106
|
+
/*
|
|
107
|
+
* Stone: the hero's material, carried down the page wherever ink used to be. Polished obsidian in
|
|
108
|
+
* light mode, moonstone in dark mode. Outside the hero there is no silk to mirror, so the warm
|
|
109
|
+
* reflection on the lower bevel stays faint until a figure marks the stone live.
|
|
110
|
+
*/
|
|
111
|
+
--stone-top: light-dark(oklch(0.31 0.004 270), oklch(0.965 0.006 88));
|
|
112
|
+
--stone-mid: light-dark(oklch(0.17 0.003 270), oklch(0.91 0.012 85));
|
|
113
|
+
--stone-bottom: light-dark(oklch(0.08 0.002 270), oklch(0.81 0.022 80));
|
|
114
|
+
/* Small stones (tour controls, handles, source chips) are a step quieter in moonstone, so only the
|
|
115
|
+
primary action and the engine stay the brightest things in a dark figure. */
|
|
116
|
+
--stone-quiet-top: light-dark(oklch(0.31 0.004 270), oklch(0.79 0.008 88));
|
|
117
|
+
--stone-quiet-mid: light-dark(oklch(0.17 0.003 270), oklch(0.71 0.012 86));
|
|
118
|
+
--stone-quiet-bottom: light-dark(oklch(0.08 0.002 270), oklch(0.62 0.02 82));
|
|
119
|
+
--stone-text: light-dark(oklch(0.97 0.008 85), oklch(0.2 0.012 70));
|
|
120
|
+
--stone-lip: light-dark(rgb(255 255 255 / 0.28), rgb(255 255 255 / 0.95));
|
|
121
|
+
--stone-rim: light-dark(rgb(255 255 255 / 0.4), rgb(255 255 255 / 1));
|
|
122
|
+
--stone-gold: light-dark(oklch(0.86 0.1 82), oklch(0.74 0.12 78));
|
|
123
|
+
--stone-mirror: light-dark(oklch(0.86 0.1 82 / 0.24), oklch(0.74 0.12 78 / 0.4));
|
|
124
|
+
--stone-sheen: light-dark(rgb(255 255 255 / 0.2), rgb(255 255 255 / 0.9));
|
|
125
|
+
--stone-glare: light-dark(rgb(255 255 255 / 0.32), rgb(255 255 255 / 1));
|
|
126
|
+
--stone-adularescence: light-dark(transparent, oklch(0.92 0.025 240 / 0.22));
|
|
127
|
+
--stone-glint: light-dark(rgb(255 255 255 / 0.14), rgb(255 255 255 / 0.85));
|
|
128
|
+
--stone-contact: light-dark(rgb(0 0 0 / 0.26), rgb(0 0 0 / 0.5));
|
|
129
|
+
--stone-cast: light-dark(oklch(0.25 0.02 70 / 0.32), oklch(0.02 0.005 60 / 0.65));
|
|
130
|
+
--stone-press: light-dark(rgb(0 0 0 / 0.7), oklch(0.55 0.05 80 / 0.5));
|
|
131
|
+
/* Cut type: the same stone as glyphs. A face that darkens down each line, a highlight where the lamp
|
|
132
|
+
falls and, on moonstone, a cool sheen across from it. */
|
|
133
|
+
--stone-type-top: light-dark(oklch(0.38 0.004 270), oklch(0.99 0.004 90));
|
|
134
|
+
/* A faint reflection across the upper part of each line, the way polished stone holds the sky. */
|
|
135
|
+
--stone-type-band: light-dark(oklch(0.46 0.006 80), oklch(1 0.002 90));
|
|
136
|
+
--stone-type-mid: light-dark(oklch(0.2 0.003 270), oklch(0.93 0.012 86));
|
|
137
|
+
--stone-type-bottom: light-dark(oklch(0.09 0.002 270), oklch(0.8 0.028 82));
|
|
138
|
+
--stone-type-sheen: light-dark(oklch(0.72 0.006 80 / 0.8), oklch(0.93 0.07 84));
|
|
139
|
+
--stone-type-adularescence: light-dark(transparent, oklch(0.9 0.03 240 / 0.24));
|
|
140
|
+
/* As a title arrives, one glint crosses it; on moonstone it is a wave of the cool sheen. */
|
|
141
|
+
--stone-type-glint: light-dark(oklch(0.6 0.008 80 / 0.95), oklch(0.92 0.07 250 / 0.95));
|
|
142
|
+
--stone-type-cast: light-dark(oklch(0.3 0.03 70 / 0.1), oklch(0 0 none / 0.55));
|
|
143
|
+
|
|
144
|
+
/* Silk: the hero's gold as a material for the few things below it that are made of it. */
|
|
145
|
+
--silk-shadow: light-dark(oklch(0.7 0.13 72), oklch(0.4 0.085 68));
|
|
146
|
+
--silk-body: light-dark(oklch(0.83 0.135 80), oklch(0.66 0.13 78));
|
|
147
|
+
--silk-sheen: light-dark(oklch(0.97 0.05 92), oklch(0.93 0.085 90));
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/*
|
|
151
|
+
* The lamp. One light hangs above the page, a little left of center, and stays with the viewer; a
|
|
152
|
+
* pointer carries it lower. `home-lamp.ts` hands it to every lit element of the homepage and its
|
|
153
|
+
* footer as these properties, relative to the element. The defaults hang it above-left, so CSS alone
|
|
154
|
+
* still lights the stone, including stone that another lamp (the hero's, the close's) lights.
|
|
155
|
+
*/
|
|
156
|
+
:where(.home-lit, .home-stone, .home-stone-type) {
|
|
157
|
+
--lit-x: 30%;
|
|
158
|
+
--lit-y: -160%;
|
|
159
|
+
--lit-angle: -20deg;
|
|
160
|
+
--cast-x: 1px;
|
|
161
|
+
--cast-y: 4px;
|
|
162
|
+
--lit-near: 0;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/*
|
|
166
|
+
* A stone surface: a bevelled face that darkens toward its base, a broad sheen from the lamp, a hot
|
|
167
|
+
* spot when the lamp comes close, a rim that catches the lamp on its near side and the warm floor on
|
|
168
|
+
* its far side, and a shadow cast away from the lamp. Every layer is a background, so the element
|
|
169
|
+
* keeps its own pseudo-elements; a component that draws its own marks on the face stacks them above
|
|
170
|
+
* `--stone-face` and keeps `--stone-edge` last.
|
|
171
|
+
*/
|
|
172
|
+
.home-stone {
|
|
173
|
+
--stone-face:
|
|
174
|
+
radial-gradient(ellipse 30% 50% at clamp(12%, var(--lit-x), 88%) clamp(16%, var(--lit-y), 40%), color-mix(in oklab, var(--stone-glare) calc(var(--lit-near) * 100%), transparent), transparent) padding-box,
|
|
175
|
+
radial-gradient(ellipse 90% 75% at var(--lit-x) -10%, var(--stone-sheen), transparent 70%) padding-box,
|
|
176
|
+
radial-gradient(ellipse 60% 120% at calc(100% - var(--lit-x) * 0.6) 80%, var(--stone-adularescence), transparent 75%) padding-box,
|
|
177
|
+
linear-gradient(180deg, var(--stone-top), var(--stone-mid) 52%, var(--stone-bottom)) padding-box;
|
|
178
|
+
--stone-edge:
|
|
179
|
+
linear-gradient(var(--lit-angle), var(--stone-mirror), transparent 40%, transparent 58%, var(--stone-rim)) border-box,
|
|
180
|
+
var(--stone-mid) border-box;
|
|
181
|
+
--stone-shadow:
|
|
182
|
+
inset 0 1px 0 var(--stone-lip),
|
|
183
|
+
inset 0 -8px 12px -10px var(--stone-mirror),
|
|
184
|
+
0 1px 1px var(--stone-contact),
|
|
185
|
+
var(--cast-x) var(--cast-y) 8px -3px var(--stone-cast),
|
|
186
|
+
calc(var(--cast-x) * 2.5) calc(var(--cast-y) * 2.5) 22px -8px var(--stone-cast);
|
|
187
|
+
border: 1px solid transparent;
|
|
188
|
+
color: var(--stone-text);
|
|
189
|
+
background: var(--stone-face), var(--stone-edge);
|
|
190
|
+
box-shadow: var(--stone-shadow);
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
.home-stone-quiet {
|
|
194
|
+
--stone-top: var(--stone-quiet-top);
|
|
195
|
+
--stone-mid: var(--stone-quiet-mid);
|
|
196
|
+
--stone-bottom: var(--stone-quiet-bottom);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
/* A stone control: a glint crosses its polished face as the pointer arrives, and pressing trades its
|
|
200
|
+
cast shadow for an inner one. */
|
|
201
|
+
.home-stone-button {
|
|
202
|
+
position: relative;
|
|
203
|
+
isolation: isolate;
|
|
204
|
+
overflow: hidden;
|
|
205
|
+
cursor: pointer;
|
|
206
|
+
|
|
207
|
+
&::after {
|
|
208
|
+
position: absolute;
|
|
209
|
+
inset: 0;
|
|
210
|
+
z-index: -1;
|
|
211
|
+
border-radius: inherit;
|
|
212
|
+
background: linear-gradient(105deg, transparent 38%, var(--stone-glint) 50%, transparent 62%) 100% 0 / 250% 100% no-repeat;
|
|
213
|
+
pointer-events: none;
|
|
214
|
+
content: '';
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
/* Moonstone answers the pointer with its sheen rather than a white glare, as on the hero. */
|
|
218
|
+
&:is(:hover, :focus-visible) {
|
|
219
|
+
--stone-adularescence: light-dark(transparent, oklch(0.9 0.035 240 / 0.45));
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
&:is(:hover, :focus-visible)::after {
|
|
223
|
+
background-position: 0 0;
|
|
224
|
+
transition: background-position 900ms var(--home-ease);
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
/* Only the press eases; at rest the shadow follows the lamp frame by frame. */
|
|
228
|
+
&:active {
|
|
229
|
+
transition: box-shadow var(--home-quick) var(--home-ease);
|
|
230
|
+
box-shadow:
|
|
231
|
+
inset 0 2px 6px var(--stone-press),
|
|
232
|
+
inset 0 -1px 0 var(--stone-mirror),
|
|
233
|
+
0 1px 1px var(--stone-contact),
|
|
234
|
+
calc(var(--cast-x) * 0.4) calc(var(--cast-y) * 0.4) 6px -3px var(--stone-cast);
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
&:focus-visible {
|
|
238
|
+
outline: 2px solid var(--home-ink);
|
|
239
|
+
outline-offset: 2px;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
@media (prefers-reduced-motion: reduce) {
|
|
243
|
+
transition: none;
|
|
244
|
+
|
|
245
|
+
&::after {
|
|
246
|
+
display: none;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
/*
|
|
252
|
+
* A frame's rim catches the same lamp: brighter on the side that faces it, a touch darker on the far
|
|
253
|
+
* side, and a warm glint that slides along the edge as the pointer carries the lamp near. It is an
|
|
254
|
+
* empty child of the frame, so moving the lamp never restyles the figure inside.
|
|
255
|
+
*/
|
|
256
|
+
.home-edge-light {
|
|
257
|
+
--edge-near: light-dark(rgb(255 255 255 / 0), rgb(255 255 255 / 0.13));
|
|
258
|
+
--edge-far: light-dark(oklch(0.2 0 none / 0.05), rgb(0 0 0 / 0.3));
|
|
259
|
+
--edge-glint: light-dark(oklch(0.78 0.09 80 / 0.75), oklch(0.9 0.07 85 / 0.6));
|
|
260
|
+
position: absolute;
|
|
261
|
+
inset: 0;
|
|
262
|
+
z-index: 30;
|
|
263
|
+
padding: 1px;
|
|
264
|
+
border-radius: inherit;
|
|
265
|
+
background:
|
|
266
|
+
radial-gradient(circle 12rem at var(--lit-x) var(--lit-y), color-mix(in oklab, var(--edge-glint) calc(var(--lit-near) * 100%), transparent), transparent),
|
|
267
|
+
linear-gradient(var(--lit-angle), var(--edge-far), transparent 32%, transparent 64%, var(--edge-near));
|
|
268
|
+
mask: linear-gradient(#000 0 0) content-box exclude, linear-gradient(#000 0 0);
|
|
269
|
+
pointer-events: none;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
/*
|
|
273
|
+
* Cut type: section titles share the hero's stone, lit by the same lamp. Obsidian takes the lamp as a
|
|
274
|
+
* small reflection with a solid core, and a narrow glint that keeps every glyph at least 3:1 against
|
|
275
|
+
* the light ground; moonstone warms and glints more broadly. Once a title reaches the reading area,
|
|
276
|
+
* `home-lamp.ts` marks it and the glint crosses it once.
|
|
277
|
+
*/
|
|
278
|
+
.home-stone-type {
|
|
279
|
+
--stone-type-sheen-size: 6rem 2.25rem;
|
|
280
|
+
--stone-type-sheen-core: 20%;
|
|
281
|
+
--stone-type-sheen-fade: 60%;
|
|
282
|
+
--stone-type-glint-width: 1.25%;
|
|
283
|
+
/* The glint starts and ends just outside the title, so its whole sweep is spent on the type. */
|
|
284
|
+
--stone-type-glint-from: 77%;
|
|
285
|
+
--stone-type-glint-to: 23%;
|
|
286
|
+
--stone-type-band-at: 27%;
|
|
287
|
+
background-image:
|
|
288
|
+
linear-gradient(105deg, transparent calc(50% - var(--stone-type-glint-width)), color-mix(in oklab, var(--stone-type-glint) 45%, transparent) calc(50% - var(--stone-type-glint-width) * 0.45), var(--stone-type-glint) 50%, color-mix(in oklab, var(--stone-type-glint) 45%, transparent) calc(50% + var(--stone-type-glint-width) * 0.45), transparent calc(50% + var(--stone-type-glint-width))),
|
|
289
|
+
radial-gradient(ellipse var(--stone-type-sheen-size) at var(--lit-x) clamp(12%, var(--lit-y), 88%), color-mix(in oklab, var(--stone-type-sheen) calc(var(--lit-near) * 100%), transparent) var(--stone-type-sheen-core), transparent var(--stone-type-sheen-fade)),
|
|
290
|
+
radial-gradient(ellipse 70% 140% at calc(100% - var(--lit-x) * 0.5) 75%, var(--stone-type-adularescence), transparent 70%),
|
|
291
|
+
linear-gradient(180deg, var(--stone-type-top) 10%, var(--stone-type-band) var(--stone-type-band-at), var(--stone-type-mid) calc(var(--stone-type-band-at) + 13%), var(--stone-type-mid) 58%, var(--stone-type-bottom) 90%);
|
|
292
|
+
background-size: 300% 100%, 100% 100%, 100% 100%, 100% 1lh;
|
|
293
|
+
background-repeat: no-repeat, no-repeat, no-repeat, repeat-y;
|
|
294
|
+
/* The glint rests past the right end once it has crossed. */
|
|
295
|
+
background-position: 0 0, 0 0, 0 0, 0 0;
|
|
296
|
+
-webkit-background-clip: text;
|
|
297
|
+
background-clip: text;
|
|
298
|
+
-webkit-text-fill-color: transparent;
|
|
299
|
+
filter: drop-shadow(calc(var(--cast-x) * 0.1) calc(var(--cast-y) * 0.14) 3px var(--stone-type-cast));
|
|
300
|
+
|
|
301
|
+
.dark & {
|
|
302
|
+
--stone-type-sheen-size: 13rem 5rem;
|
|
303
|
+
--stone-type-sheen-core: 0%;
|
|
304
|
+
--stone-type-sheen-fade: 75%;
|
|
305
|
+
--stone-type-glint-width: 4%;
|
|
306
|
+
--stone-type-glint-from: 85%;
|
|
307
|
+
--stone-type-glint-to: 15%;
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
/* Han glyphs fill the em box, so their reflection sits higher and softer, above the upper strokes. */
|
|
311
|
+
&:lang(zh) {
|
|
312
|
+
--stone-type-band-at: 12%;
|
|
313
|
+
--stone-type-band: light-dark(oklch(0.34 0.005 80), oklch(0.97 0.004 90));
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
/* A reader who asks for more contrast keeps the cut stone but no light that pales the glyphs. */
|
|
317
|
+
@media (prefers-contrast: more) {
|
|
318
|
+
--stone-type-glint: transparent;
|
|
319
|
+
--stone-type-sheen: transparent;
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
/* On phones and 1x screens a blurred shadow only softens the glyphs. */
|
|
323
|
+
@media (width < 48rem), (resolution < 2dppx) {
|
|
324
|
+
filter: none;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
@media (forced-colors: active), print {
|
|
329
|
+
/* Doubled so it outranks a component that stacks its own marks on the stone. */
|
|
330
|
+
.home-stone.home-stone {
|
|
331
|
+
border-color: currentColor;
|
|
332
|
+
color: CanvasText;
|
|
333
|
+
background: Canvas;
|
|
334
|
+
box-shadow: none;
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
.home-edge-light,
|
|
338
|
+
.home-stone-button::after {
|
|
339
|
+
display: none;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
.home-stone-type {
|
|
343
|
+
background: none;
|
|
344
|
+
-webkit-text-fill-color: currentColor;
|
|
345
|
+
filter: none;
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
/* The page sits on the neutral ground, and so does the canvas around it, so the footer and overscroll match. */
|
|
350
|
+
:root:has(.home-page) {
|
|
351
|
+
background-color: var(--home-ground);
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
.home-page {
|
|
355
|
+
background-color: var(--home-ground);
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
/* Surface primitives. */
|
|
359
|
+
.home-sheet {
|
|
360
|
+
border-radius: var(--home-radius-sheet);
|
|
361
|
+
outline: 1px solid var(--home-hairline);
|
|
362
|
+
background-color: var(--home-sheet);
|
|
363
|
+
box-shadow: var(--home-elevation-1);
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
.home-float {
|
|
367
|
+
border-radius: var(--home-radius-well);
|
|
368
|
+
outline: 1px solid var(--home-hairline);
|
|
369
|
+
background-color: var(--home-float);
|
|
370
|
+
box-shadow: var(--home-elevation-2);
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
/* Glass is for things that float over the matrix: a thin translucent surface with a bright top rim. Main content stays solid. */
|
|
374
|
+
/* A barely-there dark contour defines the edge, the inner light sits on top and left, and the falloff spreads wide and soft. */
|
|
375
|
+
.home-glass {
|
|
376
|
+
border: 1px solid light-dark(oklch(24% 0.002 265 / 0.05), rgb(255 255 255 / 0.08));
|
|
377
|
+
border-bottom-color: light-dark(oklch(24% 0.002 265 / 0.07), rgb(0 0 0 / 0.4));
|
|
378
|
+
background-color: light-dark(rgb(252 252 252 / 0.6), rgb(30 30 30 / 0.55));
|
|
379
|
+
box-shadow:
|
|
380
|
+
inset 0 1px 0 light-dark(rgb(255 255 255 / 0.75), rgb(255 255 255 / 0.05)),
|
|
381
|
+
inset 1px 0 0 light-dark(rgb(255 255 255 / 0.35), transparent),
|
|
382
|
+
0 0.5px 1px light-dark(oklch(18% 0 none / 0.02), rgb(0 0 0 / 0.3)),
|
|
383
|
+
0 3px 8px -2px light-dark(oklch(18% 0 none / 0.02), rgb(0 0 0 / 0.25)),
|
|
384
|
+
0 12px 32px -8px light-dark(oklch(18% 0 none / 0.035), rgb(0 0 0 / 0.35));
|
|
385
|
+
backdrop-filter: blur(10px) saturate(1.1);
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
/* Status tones for icons and short labels. */
|
|
389
|
+
.home-tone-ok {
|
|
390
|
+
color: var(--home-ok);
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
.home-tone-warn {
|
|
394
|
+
color: var(--home-warn);
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
.home-tone-error {
|
|
398
|
+
color: var(--home-error);
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
.home-tone-info {
|
|
402
|
+
color: var(--home-info);
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
/*
|
|
406
|
+
* Han characters already sit on square bodies; display tracking that tightens Latin would make them touch.
|
|
407
|
+
* Titles break only at spaces and punctuation so a word never splits, unless a line would overflow.
|
|
408
|
+
*/
|
|
409
|
+
.home-page:lang(zh) :is(.home-display, .home-section-heading, .home-cta-title) {
|
|
410
|
+
letter-spacing: -0.015em;
|
|
411
|
+
word-break: keep-all;
|
|
412
|
+
overflow-wrap: anywhere;
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
.home-page:lang(zh) .home-section-heading {
|
|
416
|
+
max-width: 16em;
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
/*
|
|
420
|
+
* Han prose breaks between any two characters, so pretty wrapping still leaves a last line of two characters.
|
|
421
|
+
* Short leads and card descriptions balance their lines instead.
|
|
422
|
+
*/
|
|
423
|
+
.home-page:lang(zh) :is(.home-section-body, .home-bento-card-body) {
|
|
424
|
+
text-wrap: balance;
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
/* Where a two-line title runs on as one sentence, Han text keeps the break between its lines but not the space. */
|
|
428
|
+
.home-page:lang(zh) .home-title-gap {
|
|
429
|
+
font-size: 0;
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
.home-page ::selection {
|
|
433
|
+
color: inherit;
|
|
434
|
+
background-color: color-mix(in oklab, var(--home-signal) 42%, transparent);
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
/* Labels: how the page names its parts. One eyebrow per section, one annotation style inside figures. */
|
|
438
|
+
|
|
439
|
+
/* Section eyebrow: an index, a short rule that draws in as the section arrives, and a plain name. */
|
|
440
|
+
.home-eyebrow {
|
|
441
|
+
display: flex;
|
|
442
|
+
align-items: center;
|
|
443
|
+
gap: 0.625rem;
|
|
444
|
+
margin: 0;
|
|
445
|
+
font-family: var(--home-mono);
|
|
446
|
+
font-size: var(--home-label);
|
|
447
|
+
line-height: 1;
|
|
448
|
+
letter-spacing: 0.1em;
|
|
449
|
+
text-transform: uppercase;
|
|
450
|
+
color: var(--home-text-body);
|
|
451
|
+
|
|
452
|
+
&::before {
|
|
453
|
+
order: 1;
|
|
454
|
+
width: 1.5rem;
|
|
455
|
+
height: 1px;
|
|
456
|
+
background-color: var(--home-rule-strong);
|
|
457
|
+
transform-origin: left;
|
|
458
|
+
content: '';
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
& > :not(.home-eyebrow-index) {
|
|
462
|
+
order: 2;
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
.home-eyebrow-index {
|
|
467
|
+
font-variant-numeric: tabular-nums;
|
|
468
|
+
letter-spacing: 0.04em;
|
|
469
|
+
color: var(--home-text-faint);
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
/* Status marker: a dot that names a state; live pulses, the rest stay still. */
|
|
473
|
+
.home-status {
|
|
474
|
+
display: inline-flex;
|
|
475
|
+
align-items: center;
|
|
476
|
+
gap: 0.375rem;
|
|
477
|
+
font-size: 0.75rem;
|
|
478
|
+
color: var(--home-text-quiet);
|
|
479
|
+
|
|
480
|
+
&::before {
|
|
481
|
+
width: 0.375rem;
|
|
482
|
+
height: 0.375rem;
|
|
483
|
+
border-radius: calc(infinity * 1px);
|
|
484
|
+
background-color: currentColor;
|
|
485
|
+
content: '';
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
.home-status-live::before {
|
|
490
|
+
background-color: var(--home-signal);
|
|
491
|
+
box-shadow: 0 0 0 3px var(--home-signal-glow);
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
/* Annotation marker: a mono caption that labels part of a figure. */
|
|
495
|
+
.home-annotation {
|
|
496
|
+
margin: 0;
|
|
497
|
+
font-family: var(--home-mono);
|
|
498
|
+
font-size: var(--home-label);
|
|
499
|
+
line-height: 1.4;
|
|
500
|
+
letter-spacing: 0.08em;
|
|
501
|
+
text-transform: uppercase;
|
|
502
|
+
color: var(--home-text-faint);
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
@media (--motion-safe) {
|
|
506
|
+
@supports (animation-timeline: view()) {
|
|
507
|
+
.home-eyebrow::before {
|
|
508
|
+
animation-name: home-marker-rule;
|
|
509
|
+
animation-timing-function: linear;
|
|
510
|
+
animation-fill-mode: both;
|
|
511
|
+
animation-timeline: view();
|
|
512
|
+
animation-range: entry 20% entry 80%;
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
@keyframes home-marker-rule {
|
|
519
|
+
from {
|
|
520
|
+
scale: 0 1;
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
@keyframes home-stone-glint {
|
|
525
|
+
from {
|
|
526
|
+
background-position: var(--stone-type-glint-from) 0, 0 0, 0 0, 0 0;
|
|
527
|
+
}
|
|
528
|
+
|
|
529
|
+
to {
|
|
530
|
+
background-position: var(--stone-type-glint-to) 0, 0 0, 0 0, 0 0;
|
|
531
|
+
}
|
|
532
|
+
}
|