@beehexa/design-rules 0.0.0-stage → 2611.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +56 -2
- package/dist/AGENTS.md +24 -0
- package/dist/catalog.json +1814 -0
- package/dist/docs/public/_redirects +7 -0
- package/dist/docs/public/apple-touch-icon.png +0 -0
- package/dist/docs/public/brand/logos/app/apple-touch-icon.png +0 -0
- package/dist/docs/public/brand/logos/app/avatar-800.png +0 -0
- package/dist/docs/public/brand/logos/app/icon-192.png +0 -0
- package/dist/docs/public/brand/logos/app/icon-512.png +0 -0
- package/dist/docs/public/brand/logos/app/icon-maskable-512.png +0 -0
- package/dist/docs/public/brand/logos/archive/d-550/beehexa-horizontal-1-light.svg +1 -0
- package/dist/docs/public/brand/logos/archive/d-550/beehexa-horizontal-2-dark.svg +1 -0
- package/dist/docs/public/brand/logos/archive/d-550/beehexa-horizontal-3-white.svg +1 -0
- package/dist/docs/public/brand/logos/archive/d-550/beehexa-horizontal-4-graphite.svg +1 -0
- package/dist/docs/public/brand/logos/archive/d-550/hexasync-horizontal-1-light.svg +1 -0
- package/dist/docs/public/brand/logos/archive/d-550/hexasync-horizontal-2-dark.svg +1 -0
- package/dist/docs/public/brand/logos/archive/d-550/hexasync-horizontal-3-white.svg +1 -0
- package/dist/docs/public/brand/logos/archive/d-550/hexasync-horizontal-4-graphite.svg +1 -0
- package/dist/docs/public/brand/logos/archive/d-550/ui/beehexa-d-550-dark.svg +1 -0
- package/dist/docs/public/brand/logos/archive/d-550/ui/beehexa-d-550-light.svg +1 -0
- package/dist/docs/public/brand/logos/archive/d-550/ui/beehexa-design-d-550-dark.svg +1 -0
- package/dist/docs/public/brand/logos/archive/d-550/ui/beehexa-design-d-550-light.svg +1 -0
- package/dist/docs/public/brand/logos/archive/d-550/ui/hexasync-d-550-dark.svg +1 -0
- package/dist/docs/public/brand/logos/archive/d-550/ui/hexasync-d-550-light.svg +1 -0
- package/dist/docs/public/brand/logos/archive/d-550/ui/png/beehexa-design-d-550-dark@3x.png +0 -0
- package/dist/docs/public/brand/logos/archive/d-550/ui/png/beehexa-design-d-550-light@3x.png +0 -0
- package/dist/docs/public/brand/logos/beehexa-logo.zip +0 -0
- package/dist/docs/public/brand/logos/fig/anatomy-en.png +0 -0
- package/dist/docs/public/brand/logos/fig/anatomy-vi.png +0 -0
- package/dist/docs/public/brand/logos/fig/beehexa-dark-12.png +0 -0
- package/dist/docs/public/brand/logos/fig/beehexa-dark-14.png +0 -0
- package/dist/docs/public/brand/logos/fig/beehexa-dark-28.png +0 -0
- package/dist/docs/public/brand/logos/fig/beehexa-dark-32.png +0 -0
- package/dist/docs/public/brand/logos/fig/beehexa-dark-56.png +0 -0
- package/dist/docs/public/brand/logos/fig/beehexa-graphite-28.png +0 -0
- package/dist/docs/public/brand/logos/fig/beehexa-graphite-32.png +0 -0
- package/dist/docs/public/brand/logos/fig/beehexa-light-14.png +0 -0
- package/dist/docs/public/brand/logos/fig/beehexa-light-21.png +0 -0
- package/dist/docs/public/brand/logos/fig/beehexa-light-22.png +0 -0
- package/dist/docs/public/brand/logos/fig/beehexa-light-24.png +0 -0
- package/dist/docs/public/brand/logos/fig/beehexa-light-28.png +0 -0
- package/dist/docs/public/brand/logos/fig/beehexa-light-32.png +0 -0
- package/dist/docs/public/brand/logos/fig/beehexa-light-36-7c3aed7c3aed.png +0 -0
- package/dist/docs/public/brand/logos/fig/beehexa-light-36-swap.png +0 -0
- package/dist/docs/public/brand/logos/fig/beehexa-light-36.png +0 -0
- package/dist/docs/public/brand/logos/fig/beehexa-light-56.png +0 -0
- package/dist/docs/public/brand/logos/fig/beehexa-white-20.png +0 -0
- package/dist/docs/public/brand/logos/fig/beehexa-white-32.png +0 -0
- package/dist/docs/public/brand/logos/fig/clearspace.png +0 -0
- package/dist/docs/public/brand/logos/fig/construction-en.png +0 -0
- package/dist/docs/public/brand/logos/fig/construction-vi.png +0 -0
- package/dist/docs/public/brand/logos/fig/container-en.png +0 -0
- package/dist/docs/public/brand/logos/fig/container-vi.png +0 -0
- package/dist/docs/public/brand/logos/fig/hexasync-dark-20.png +0 -0
- package/dist/docs/public/brand/logos/fig/hexasync-dark-28.png +0 -0
- package/dist/docs/public/brand/logos/fig/hexasync-dark-48.png +0 -0
- package/dist/docs/public/brand/logos/fig/hexasync-light-19.png +0 -0
- package/dist/docs/public/brand/logos/fig/hexasync-light-28.png +0 -0
- package/dist/docs/public/brand/logos/fig/hexasync-light-48.png +0 -0
- package/dist/docs/public/brand/logos/fig/icon-graphite-14.png +0 -0
- package/dist/docs/public/brand/logos/fig/icon-graphite-16.png +0 -0
- package/dist/docs/public/brand/logos/fig/icon-light-16.png +0 -0
- package/dist/docs/public/brand/logos/fig/icon-light-24.png +0 -0
- package/dist/docs/public/brand/logos/fig/icon-light-48.png +0 -0
- package/dist/docs/public/brand/logos/fig/icon-light-92.png +0 -0
- package/dist/docs/public/brand/logos/fig/meaning-bee-en.png +0 -0
- package/dist/docs/public/brand/logos/fig/meaning-bee-vi.png +0 -0
- package/dist/docs/public/brand/logos/fig/meaning-outline-en.png +0 -0
- package/dist/docs/public/brand/logos/fig/meaning-outline-vi.png +0 -0
- package/dist/docs/public/brand/logos/fig/meaning-stack-en.png +0 -0
- package/dist/docs/public/brand/logos/fig/meaning-stack-vi.png +0 -0
- package/dist/docs/public/brand/logos/fig/misuse-serif.png +0 -0
- package/dist/docs/public/brand/logos/icon/beehexa-icon-graphite.svg +1 -0
- package/dist/docs/public/brand/logos/icon/beehexa-icon-white.svg +1 -0
- package/dist/docs/public/brand/logos/icon/beehexa-icon-yellow.svg +1 -0
- package/dist/docs/public/brand/logos/lockups/beehexa-horizontal-1-light.svg +1 -0
- package/dist/docs/public/brand/logos/lockups/beehexa-horizontal-2-dark.svg +1 -0
- package/dist/docs/public/brand/logos/lockups/beehexa-horizontal-3-white.svg +1 -0
- package/dist/docs/public/brand/logos/lockups/beehexa-horizontal-4-graphite.svg +1 -0
- package/dist/docs/public/brand/logos/lockups/hexasync-horizontal-1-light.svg +1 -0
- package/dist/docs/public/brand/logos/lockups/hexasync-horizontal-2-dark.svg +1 -0
- package/dist/docs/public/brand/logos/lockups/hexasync-horizontal-3-white.svg +1 -0
- package/dist/docs/public/brand/logos/lockups/hexasync-horizontal-4-graphite.svg +1 -0
- package/dist/docs/public/brand/logos/ui/beehexa-dark.svg +1 -0
- package/dist/docs/public/brand/logos/ui/beehexa-design-dark.svg +1 -0
- package/dist/docs/public/brand/logos/ui/beehexa-design-light.svg +1 -0
- package/dist/docs/public/brand/logos/ui/beehexa-icon-yellow.svg +1 -0
- package/dist/docs/public/brand/logos/ui/beehexa-light.svg +1 -0
- package/dist/docs/public/brand/logos/ui/hexasync-dark.svg +1 -0
- package/dist/docs/public/brand/logos/ui/hexasync-light.svg +1 -0
- package/dist/docs/public/brand/logos/ui/png/beehexa-design-dark@3x.png +0 -0
- package/dist/docs/public/brand/logos/ui/png/beehexa-design-light@3x.png +0 -0
- package/dist/docs/public/favicon.ico +0 -0
- package/dist/docs/public/favicon.svg +1 -0
- package/dist/docs/public/fonts/LICENSE-Inter.txt +93 -0
- package/dist/docs/public/fonts/LICENSE-JetBrainsMono.txt +93 -0
- package/dist/docs/public/fonts/inter-latin-ext-opsz-wght-italic.woff2 +0 -0
- package/dist/docs/public/fonts/inter-latin-ext-opsz-wght-normal.woff2 +0 -0
- package/dist/docs/public/fonts/inter-latin-opsz-wght-italic.woff2 +0 -0
- package/dist/docs/public/fonts/inter-latin-opsz-wght-normal.woff2 +0 -0
- package/dist/docs/public/fonts/inter-vietnamese-opsz-wght-italic.woff2 +0 -0
- package/dist/docs/public/fonts/inter-vietnamese-opsz-wght-normal.woff2 +0 -0
- package/dist/docs/public/fonts/jetbrains-mono-latin-ext-wght-normal.woff2 +0 -0
- package/dist/docs/public/fonts/jetbrains-mono-latin-wght-normal.woff2 +0 -0
- package/dist/docs/public/fonts/jetbrains-mono-vietnamese-wght-normal.woff2 +0 -0
- package/dist/docs/public/icon-192.png +0 -0
- package/dist/docs/public/icon-512.png +0 -0
- package/dist/docs/public/icon-maskable-512.png +0 -0
- package/dist/docs/public/robots.txt +4 -0
- package/dist/docs/public/site.webmanifest +21 -0
- package/dist/docs/scripts/color-pairs.mjs +46 -0
- package/dist/docs/scripts/contrast-exceptions.mjs +6 -0
- package/dist/docs/scripts/token-utils.d.mts +26 -0
- package/dist/docs/scripts/token-utils.mjs +114 -0
- package/dist/docs/src/brand/Beehexa-brandguide-full-mar12.pdf +0 -0
- package/dist/docs/src/brand/color+typoDirections.pdf +0 -0
- package/dist/docs/src/brand/structure-proposal.md +227 -0
- package/dist/docs/src/components/ChildPages.astro +25 -0
- package/dist/docs/src/components/CodeExample.astro +18 -0
- package/dist/docs/src/components/ColorDemo.astro +794 -0
- package/dist/docs/src/components/ColorExample.astro +32 -0
- package/dist/docs/src/components/ColorSwatch.astro +20 -0
- package/dist/docs/src/components/ComponentTabs.astro +21 -0
- package/dist/docs/src/components/DocsFooter.astro +25 -0
- package/dist/docs/src/components/HelpOptions.astro +20 -0
- package/dist/docs/src/components/IconBrowser.astro +257 -0
- package/dist/docs/src/components/IconDemo.astro +185 -0
- package/dist/docs/src/components/InDevelopment.astro +29 -0
- package/dist/docs/src/components/LayoutDemo.astro +384 -0
- package/dist/docs/src/components/Logo.astro +25 -0
- package/dist/docs/src/components/PhaseTable.astro +22 -0
- package/dist/docs/src/components/RoleGuides.astro +48 -0
- package/dist/docs/src/components/ShapeDemo.astro +239 -0
- package/dist/docs/src/components/ShapePin.astro +22 -0
- package/dist/docs/src/components/Sidebar.astro +206 -0
- package/dist/docs/src/components/SiteHeader.astro +211 -0
- package/dist/docs/src/components/SpacingDemo.astro +172 -0
- package/dist/docs/src/components/StatusBadge.astro +22 -0
- package/dist/docs/src/components/SystemAreas.astro +29 -0
- package/dist/docs/src/components/TableOfContents.astro +47 -0
- package/dist/docs/src/components/TokenTable.astro +40 -0
- package/dist/docs/src/components/TypeDemo.astro +249 -0
- package/dist/docs/src/components/logos/Fig.astro +28 -0
- package/dist/docs/src/components/logos/LogoAnatomy.astro +101 -0
- package/dist/docs/src/components/logos/LogoClearSpace.astro +81 -0
- package/dist/docs/src/components/logos/LogoColourVersions.astro +45 -0
- package/dist/docs/src/components/logos/LogoConstruction.astro +84 -0
- package/dist/docs/src/components/logos/LogoContainer.astro +84 -0
- package/dist/docs/src/components/logos/LogoHero.astro +42 -0
- package/dist/docs/src/components/logos/LogoInUse.astro +197 -0
- package/dist/docs/src/components/logos/LogoMeanings.astro +75 -0
- package/dist/docs/src/components/logos/LogoMinSize.astro +55 -0
- package/dist/docs/src/components/logos/LogoMistakes.astro +109 -0
- package/dist/docs/src/components/logos/LogoMisuse.astro +96 -0
- package/dist/docs/src/components/logos/LogoPair.astro +26 -0
- package/dist/docs/src/components/logos/LogoSvg.astro +68 -0
- package/dist/docs/src/content/components/button/accessibility.mdx +18 -0
- package/dist/docs/src/content/components/button/changelog.mdx +6 -0
- package/dist/docs/src/content/components/button/code.mdx +27 -0
- package/dist/docs/src/content/components/button/examples.mdx +21 -0
- package/dist/docs/src/content/components/button/meta.json +5 -0
- package/dist/docs/src/content/components/button/usage.mdx +18 -0
- package/dist/docs/src/content/foundations/guidelines/accessibility.mdx +19 -0
- package/dist/docs/src/content/foundations/guidelines/content.mdx +25 -0
- package/dist/docs/src/content/foundations/index.mdx +9 -0
- package/dist/docs/src/content/foundations/styles/border.mdx +89 -0
- package/dist/docs/src/content/foundations/styles/color/accessibility.mdx +32 -0
- package/dist/docs/src/content/foundations/styles/color/dark-mode.mdx +22 -0
- package/dist/docs/src/content/foundations/styles/color/index.mdx +65 -0
- package/dist/docs/src/content/foundations/styles/color/palette.mdx +57 -0
- package/dist/docs/src/content/foundations/styles/color/tokens.mdx +55 -0
- package/dist/docs/src/content/foundations/styles/color/usage.mdx +111 -0
- package/dist/docs/src/content/foundations/styles/data-visualization.mdx +11 -0
- package/dist/docs/src/content/foundations/styles/elevation.mdx +12 -0
- package/dist/docs/src/content/foundations/styles/icons/accessibility.mdx +72 -0
- package/dist/docs/src/content/foundations/styles/icons/code.mdx +171 -0
- package/dist/docs/src/content/foundations/styles/icons/index.mdx +62 -0
- package/dist/docs/src/content/foundations/styles/icons/library.mdx +19 -0
- package/dist/docs/src/content/foundations/styles/icons/usage.mdx +100 -0
- package/dist/docs/src/content/foundations/styles/illustration.mdx +9 -0
- package/dist/docs/src/content/foundations/styles/interaction-states.mdx +49 -0
- package/dist/docs/src/content/foundations/styles/layout/app-frame.mdx +81 -0
- package/dist/docs/src/content/foundations/styles/layout/breakpoints.mdx +56 -0
- package/dist/docs/src/content/foundations/styles/layout/grid.mdx +87 -0
- package/dist/docs/src/content/foundations/styles/layout/index.mdx +24 -0
- package/dist/docs/src/content/foundations/styles/layout/overlays.mdx +45 -0
- package/dist/docs/src/content/foundations/styles/layout/page-widths.mdx +38 -0
- package/dist/docs/src/content/foundations/styles/logos/downloads-and-terms.mdx +65 -0
- package/dist/docs/src/content/foundations/styles/logos/index.mdx +64 -0
- package/dist/docs/src/content/foundations/styles/logos/placement-and-containers.mdx +96 -0
- package/dist/docs/src/content/foundations/styles/logos/product-logos.mdx +56 -0
- package/dist/docs/src/content/foundations/styles/logos/using-the-logo.mdx +70 -0
- package/dist/docs/src/content/foundations/styles/motion.mdx +11 -0
- package/dist/docs/src/content/foundations/styles/opacity.mdx +9 -0
- package/dist/docs/src/content/foundations/styles/radius.mdx +98 -0
- package/dist/docs/src/content/foundations/styles/size-and-density.mdx +41 -0
- package/dist/docs/src/content/foundations/styles/spacing.mdx +70 -0
- package/dist/docs/src/content/foundations/styles/typography/code.mdx +53 -0
- package/dist/docs/src/content/foundations/styles/typography/index.mdx +58 -0
- package/dist/docs/src/content/foundations/styles/typography/usage.mdx +144 -0
- package/dist/docs/src/content/foundations/styles/typography/vietnamese.mdx +46 -0
- package/dist/docs/src/content/foundations/styles/z-index.mdx +9 -0
- package/dist/docs/src/content/foundations/tokens/all-tokens.mdx +36 -0
- package/dist/docs/src/content/foundations/tokens/index.mdx +27 -0
- package/dist/docs/src/content/get-started/content.mdx +14 -0
- package/dist/docs/src/content/get-started/design.mdx +30 -0
- package/dist/docs/src/content/get-started/develop.mdx +59 -0
- package/dist/docs/src/content/get-started/get-help.mdx +19 -0
- package/dist/docs/src/content/get-started/index.mdx +50 -0
- package/dist/docs/src/content/news/2026-10-16-site-structure.md +15 -0
- package/dist/docs/src/content/news/2026-10-20-docs-site.md +13 -0
- package/dist/docs/src/content/release-phases/index.mdx +12 -0
- package/dist/docs/src/content/tools/ai-agents.mdx +49 -0
- package/dist/docs/src/content/tools/ant-design-vue-theme.mdx +138 -0
- package/dist/docs/src/content/tools/eslint.mdx +15 -0
- package/dist/docs/src/content/tools/index.mdx +7 -0
- package/dist/docs/src/content/tools/stylelint.mdx +19 -0
- package/dist/docs/src/content-vi/foundations/styles/border.mdx +89 -0
- package/dist/docs/src/content-vi/foundations/styles/color/accessibility.mdx +32 -0
- package/dist/docs/src/content-vi/foundations/styles/color/dark-mode.mdx +22 -0
- package/dist/docs/src/content-vi/foundations/styles/color/index.mdx +65 -0
- package/dist/docs/src/content-vi/foundations/styles/color/palette.mdx +57 -0
- package/dist/docs/src/content-vi/foundations/styles/color/tokens.mdx +55 -0
- package/dist/docs/src/content-vi/foundations/styles/color/usage.mdx +111 -0
- package/dist/docs/src/content-vi/foundations/styles/data-visualization.mdx +11 -0
- package/dist/docs/src/content-vi/foundations/styles/icons/accessibility.mdx +72 -0
- package/dist/docs/src/content-vi/foundations/styles/icons/code.mdx +170 -0
- package/dist/docs/src/content-vi/foundations/styles/icons/index.mdx +62 -0
- package/dist/docs/src/content-vi/foundations/styles/icons/library.mdx +19 -0
- package/dist/docs/src/content-vi/foundations/styles/icons/usage.mdx +100 -0
- package/dist/docs/src/content-vi/foundations/styles/illustration.mdx +9 -0
- package/dist/docs/src/content-vi/foundations/styles/interaction-states.mdx +49 -0
- package/dist/docs/src/content-vi/foundations/styles/layout/app-frame.mdx +77 -0
- package/dist/docs/src/content-vi/foundations/styles/layout/breakpoints.mdx +56 -0
- package/dist/docs/src/content-vi/foundations/styles/layout/grid.mdx +87 -0
- package/dist/docs/src/content-vi/foundations/styles/layout/index.mdx +24 -0
- package/dist/docs/src/content-vi/foundations/styles/layout/page-widths.mdx +34 -0
- package/dist/docs/src/content-vi/foundations/styles/logos/downloads-and-terms.mdx +65 -0
- package/dist/docs/src/content-vi/foundations/styles/logos/index.mdx +64 -0
- package/dist/docs/src/content-vi/foundations/styles/logos/placement-and-containers.mdx +96 -0
- package/dist/docs/src/content-vi/foundations/styles/logos/product-logos.mdx +56 -0
- package/dist/docs/src/content-vi/foundations/styles/logos/using-the-logo.mdx +70 -0
- package/dist/docs/src/content-vi/foundations/styles/opacity.mdx +9 -0
- package/dist/docs/src/content-vi/foundations/styles/radius.mdx +98 -0
- package/dist/docs/src/content-vi/foundations/styles/size-and-density.mdx +41 -0
- package/dist/docs/src/content-vi/foundations/styles/spacing.mdx +70 -0
- package/dist/docs/src/content-vi/foundations/styles/typography/code.mdx +53 -0
- package/dist/docs/src/content-vi/foundations/styles/typography/index.mdx +58 -0
- package/dist/docs/src/content-vi/foundations/styles/typography/usage.mdx +144 -0
- package/dist/docs/src/content-vi/foundations/styles/typography/vietnamese.mdx +46 -0
- package/dist/docs/src/content-vi/foundations/styles/z-index.mdx +9 -0
- package/dist/docs/src/content.config.ts +68 -0
- package/dist/docs/src/lib/brand.ts +57 -0
- package/dist/docs/src/lib/contrast.ts +34 -0
- package/dist/docs/src/lib/i18n.ts +152 -0
- package/dist/docs/src/lib/icons.ts +46 -0
- package/dist/docs/src/lib/logo-geometry.ts +30 -0
- package/dist/docs/src/lib/lucide-categories.json +1 -0
- package/dist/docs/src/lib/lucide-data.ts +40 -0
- package/dist/docs/src/lib/navigation.ts +222 -0
- package/dist/docs/src/lib/release-phases.ts +10 -0
- package/dist/docs/src/lib/routes.ts +40 -0
- package/dist/docs/src/lib/token-descriptions-vi.ts +40 -0
- package/dist/docs/src/lib/tokens.ts +67 -0
- package/dist/docs/src/lib/tri-grid.ts +28 -0
- package/dist/docs/src/styles/chrome.css +122 -0
- package/dist/docs/src/styles/color.css +270 -0
- package/dist/docs/src/styles/docs.css +323 -0
- package/dist/docs/src/styles/global.css +66 -0
- package/dist/docs/src/styles/icons.css +135 -0
- package/dist/docs/src/styles/layout.css +165 -0
- package/dist/docs/src/styles/logos.css +236 -0
- package/dist/docs/src/styles/shapes.css +139 -0
- package/dist/docs/src/styles/tokens.css +461 -0
- package/dist/docs/src/styles/tokens.js +425 -0
- package/dist/docs/src/styles/typography.css +91 -0
- package/dist/docs/tokens/border.json +26 -0
- package/dist/docs/tokens/breakpoints.json +8 -0
- package/dist/docs/tokens/color.json +1350 -0
- package/dist/docs/tokens/elevation.json +26 -0
- package/dist/docs/tokens/layout.json +29 -0
- package/dist/docs/tokens/motion.json +12 -0
- package/dist/docs/tokens/radius.json +44 -0
- package/dist/docs/tokens/size.json +13 -0
- package/dist/docs/tokens/spacing.json +18 -0
- package/dist/docs/tokens/states.json +12 -0
- package/dist/docs/tokens/typography.json +220 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.js +1823 -0
- package/package.json +36 -4
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { flattenTokens, cssVarName, resolveValue } from '../../scripts/token-utils.mjs';
|
|
2
|
+
|
|
3
|
+
export interface Token {
|
|
4
|
+
name: string;
|
|
5
|
+
cssVar: string;
|
|
6
|
+
type: string;
|
|
7
|
+
value: string;
|
|
8
|
+
resolved: string;
|
|
9
|
+
/** Dark-theme value, when it differs from the light one. */
|
|
10
|
+
dark?: string;
|
|
11
|
+
darkResolved?: string;
|
|
12
|
+
/** Value for Vietnamese text (lang="vi"), when it differs. */
|
|
13
|
+
vi?: string;
|
|
14
|
+
viResolved?: string;
|
|
15
|
+
description: string;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const files = import.meta.glob<Record<string, unknown>>('/tokens/*.json', { eager: true, import: 'default' });
|
|
19
|
+
|
|
20
|
+
const raw = Object.values(files).flatMap((tree) => flattenTokens(tree));
|
|
21
|
+
const byName = new Map(raw.map((token) => [token.name, token]));
|
|
22
|
+
|
|
23
|
+
// A dark value can point at tokens that have dark values of their own (text.link → status.accent.fg).
|
|
24
|
+
function resolveDark(value: string, seen = new Set<string>()): string {
|
|
25
|
+
return value.replace(/\{([^}]+)\}/g, (_, ref) => {
|
|
26
|
+
if (seen.has(ref)) throw new Error(`Circular token reference: ${ref}`);
|
|
27
|
+
const target = byName.get(ref);
|
|
28
|
+
if (!target) throw new Error(`Unknown token reference: {${ref}}`);
|
|
29
|
+
return resolveDark(target.dark ?? target.value, new Set([...seen, ref]));
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export const tokens: Token[] = raw.map((token) => {
|
|
34
|
+
const resolved = resolveValue(token.value, byName);
|
|
35
|
+
const darkResolved = resolveDark(token.dark ?? token.value);
|
|
36
|
+
return {
|
|
37
|
+
name: token.name,
|
|
38
|
+
cssVar: cssVarName(token.name),
|
|
39
|
+
type: token.type,
|
|
40
|
+
value: token.value,
|
|
41
|
+
resolved,
|
|
42
|
+
dark: token.dark,
|
|
43
|
+
darkResolved: darkResolved !== resolved ? darkResolved : undefined,
|
|
44
|
+
vi: token.vi,
|
|
45
|
+
viResolved: token.vi ? resolveValue(token.vi, byName) : undefined,
|
|
46
|
+
description: token.description,
|
|
47
|
+
};
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
/** Tokens whose name starts with `prefix`, e.g. `color` or `color.brand`. */
|
|
51
|
+
// Numbered steps sort by their number (space.025 before space.100), whatever order the JSON keys come in:
|
|
52
|
+
// JavaScript puts integer-like keys such as "100" ahead of "025". Other tokens keep their file order.
|
|
53
|
+
const stepOf = (name: string) => {
|
|
54
|
+
const last = name.split('.').pop() ?? '';
|
|
55
|
+
return /^\d+$/.test(last) ? Number(last) : null;
|
|
56
|
+
};
|
|
57
|
+
export function tokensByPrefix(prefix: string): Token[] {
|
|
58
|
+
return tokens
|
|
59
|
+
.filter((token) => token.name === prefix || token.name.startsWith(`${prefix}.`))
|
|
60
|
+
.sort((a, b) => {
|
|
61
|
+
const sa = stepOf(a.name);
|
|
62
|
+
const sb = stepOf(b.name);
|
|
63
|
+
const pa = a.name.slice(0, a.name.lastIndexOf('.'));
|
|
64
|
+
const pb = b.name.slice(0, b.name.lastIndexOf('.'));
|
|
65
|
+
return sa !== null && sb !== null && pa === pb ? sa - sb : 0;
|
|
66
|
+
});
|
|
67
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// Lines of an equilateral triangle grid with vertical lines, cut to a rectangle (no clip path,
|
|
2
|
+
// so the figure screenshots stay reliable). The grid passes through (x0, y0); h is one band
|
|
3
|
+
// (the distance between vertical lines); one triangle side is h / cos 30°.
|
|
4
|
+
export function triGrid(x0: number, y0: number, h: number, box: { x1: number; y1: number; x2: number; y2: number }): string {
|
|
5
|
+
const a = h / Math.cos(Math.PI / 6);
|
|
6
|
+
const t = Math.tan(Math.PI / 6);
|
|
7
|
+
const out: string[] = [];
|
|
8
|
+
const eps = 1e-6;
|
|
9
|
+
for (let k = Math.ceil((box.x1 - x0) / h); x0 + k * h <= box.x2 + eps; k++) out.push(`M${x0 + k * h} ${box.y1}V${box.y2}`);
|
|
10
|
+
const cut = (slope: number, c: number) => {
|
|
11
|
+
// y = slope * x + c
|
|
12
|
+
const pts: [number, number][] = [];
|
|
13
|
+
for (const x of [box.x1, box.x2]) { const y = slope * x + c; if (y >= box.y1 - eps && y <= box.y2 + eps) pts.push([x, y]); }
|
|
14
|
+
for (const y of [box.y1, box.y2]) { const x = (y - c) / slope; if (x > box.x1 + eps && x < box.x2 - eps) pts.push([x, y]); }
|
|
15
|
+
if (pts.length < 2) return;
|
|
16
|
+
pts.sort((p, q) => p[0] - q[0]);
|
|
17
|
+
const [p, q] = [pts[0], pts[pts.length - 1]];
|
|
18
|
+
if (Math.hypot(q[0] - p[0], q[1] - p[1]) > h * 0.05) out.push(`M${p[0]} ${p[1]}L${q[0]} ${q[1]}`);
|
|
19
|
+
};
|
|
20
|
+
for (const slope of [t, -t]) {
|
|
21
|
+
// lines y = slope (x - x0) + y0 + n a
|
|
22
|
+
const c0 = y0 - slope * x0;
|
|
23
|
+
const cs = [box.x1, box.x2].flatMap((x) => [box.y1, box.y2].map((y) => y - slope * x - c0));
|
|
24
|
+
const nMin = Math.floor(Math.min(...cs) / a), nMax = Math.ceil(Math.max(...cs) / a);
|
|
25
|
+
for (let n = nMin; n <= nMax; n++) cut(slope, c0 + n * a);
|
|
26
|
+
}
|
|
27
|
+
return out.join('');
|
|
28
|
+
}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/* Site chrome: colour roles, header, search and the docs footer. */
|
|
2
|
+
|
|
3
|
+
:root {
|
|
4
|
+
/* Site roles, mapped to the design-system colour tokens (tokens/color.json). The tokens switch
|
|
5
|
+
between light and dark on their own. */
|
|
6
|
+
--c-bg: var(--bh-color-surface-page);
|
|
7
|
+
--c-ink: var(--bh-color-text);
|
|
8
|
+
--c-muted: var(--bh-color-text-subtle);
|
|
9
|
+
--c-line: var(--bh-color-border);
|
|
10
|
+
--c-surf: var(--bh-color-surface-subtle);
|
|
11
|
+
--c-gold: var(--bh-color-border-selected); /* indicators only, never text */
|
|
12
|
+
--c-link: var(--bh-color-link);
|
|
13
|
+
--c-hover: var(--bh-color-background-neutral-subtle-hover);
|
|
14
|
+
--c-selected: var(--bh-color-background-selected);
|
|
15
|
+
--c-selected-hover: var(--bh-color-background-selected-hover);
|
|
16
|
+
--c-code-bg: var(--bh-color-code-background);
|
|
17
|
+
--c-code-ink: var(--bh-color-code-text);
|
|
18
|
+
--c-note-line: var(--bh-color-border-brand-subtle);
|
|
19
|
+
--c-note-bg: var(--bh-color-background-brand-subtle);
|
|
20
|
+
--c-shadow: var(--bh-elevation-shadow-overlay);
|
|
21
|
+
/* App frame (Foundations › Layout › App frame). */
|
|
22
|
+
--header-h: calc(var(--bh-size-control-default) + 2 * var(--bh-space-100)); /* 48 px: a 32 px control, 8 px above and below */
|
|
23
|
+
/* The 1 px line under the header is not part of its 48 px; sticky parts start below both. */
|
|
24
|
+
--header-bottom: calc(var(--header-h) + 1px);
|
|
25
|
+
--sidebar-w: 17.5rem; /* 280 px */
|
|
26
|
+
/* Page margin: 16 px, 24 px from md (768 px), 32 px from xl (1440 px). */
|
|
27
|
+
--page-margin: var(--bh-space-200);
|
|
28
|
+
color-scheme: light;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
:root[data-theme='dark'] {
|
|
32
|
+
color-scheme: dark;
|
|
33
|
+
}
|
|
34
|
+
@media (min-width: 768px) { :root { --page-margin: var(--bh-space-300); } }
|
|
35
|
+
@media (min-width: 1440px) { :root { --page-margin: var(--bh-space-400); } }
|
|
36
|
+
|
|
37
|
+
:root[data-theme="dark"] { background: var(--c-bg); }
|
|
38
|
+
body.docs { color: var(--c-ink); background: var(--c-bg); }
|
|
39
|
+
|
|
40
|
+
.site-header { position: sticky; z-index: 100; top: 0; container-type: inline-size; box-sizing: content-box; height: var(--header-h); border-bottom: 1px solid var(--c-line); background: var(--c-bg); }
|
|
41
|
+
/* The logo sits 20 px from the window edge, in line with the side navigation icons and labels
|
|
42
|
+
(8 px inset + 12 px item padding); the tools end at the page margin. */
|
|
43
|
+
.header-inner { position: relative; display: flex; align-items: center; gap: var(--bh-space-150); height: 100%; padding: 0 var(--page-margin) 0 var(--bh-space-250); }
|
|
44
|
+
|
|
45
|
+
/* Header logo: PNG at 3× shown at 1× (see SiteHeader.astro). The image is 28 px high: a 24 px
|
|
46
|
+
icon with 2 px above and below (room for the "g"), centred in the 48 px header. */
|
|
47
|
+
.header-brand { display: flex; flex: none; text-decoration: none; }
|
|
48
|
+
.header-logo-img { display: block; width: auto; height: 28px; }
|
|
49
|
+
|
|
50
|
+
/* Theme: draw the light or the dark artwork. */
|
|
51
|
+
.logo-dark { display: none !important; }
|
|
52
|
+
:root[data-theme='dark'] .logo-light { display: none !important; }
|
|
53
|
+
:root[data-theme='dark'] .logo-dark { display: block !important; }
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
/* Design system · News sit on the right, next to search, as on atlassian.design: the header
|
|
57
|
+
switches between the two parts of the site, the sidebar holds the design system itself. */
|
|
58
|
+
.header-nav { display: none; align-self: stretch; gap: var(--bh-space-300); margin-left: auto; }
|
|
59
|
+
.header-nav a { position: relative; display: flex; align-items: center; color: var(--c-muted); text-decoration: none; white-space: nowrap; font: var(--bh-font-label-default); }
|
|
60
|
+
.header-nav a:hover { color: var(--c-ink); }
|
|
61
|
+
.header-nav a[aria-current='page'] { color: var(--c-ink); }
|
|
62
|
+
.header-nav a[aria-current='page']::after { content: ''; position: absolute; inset: auto 0 -1px; height: 2px; background: var(--c-gold); }
|
|
63
|
+
|
|
64
|
+
.header-tools { display: flex; align-items: center; gap: var(--bh-space-100); margin-left: auto; }
|
|
65
|
+
|
|
66
|
+
.icon-button { display: inline-grid; place-items: center; width: 32px; height: 32px; padding: 0; border: 1px solid var(--c-line); border-radius: var(--bh-radius-100); color: var(--c-ink); background: var(--c-bg); cursor: pointer; list-style: none; }
|
|
67
|
+
.icon-button:hover { background: var(--c-hover); }
|
|
68
|
+
.icon-button::-webkit-details-marker { display: none; }
|
|
69
|
+
.theme-sun { display: none; }
|
|
70
|
+
:root[data-theme='dark'] .theme-sun { display: block; }
|
|
71
|
+
:root[data-theme='dark'] .theme-moon { display: none; }
|
|
72
|
+
|
|
73
|
+
.search { position: relative; display: none; align-items: center; width: 240px; height: 32px; border: 1px solid var(--c-line); border-radius: var(--bh-radius-100); background: var(--c-surf); }
|
|
74
|
+
.search:focus-within { border-color: var(--c-muted); background: var(--c-bg); }
|
|
75
|
+
.search-icon { flex: none; margin-left: calc(var(--bh-space-150) - 1px); color: var(--c-muted); } /* 12 px from the outer edge, border included */
|
|
76
|
+
.search input { flex: 1; min-width: 0; height: 100%; padding: 0 var(--bh-space-100) 0 var(--bh-space-050); border: 0; outline: 0; color: var(--c-ink); background: transparent; font: var(--bh-font-body-default); }
|
|
77
|
+
.search input::placeholder { color: var(--c-muted); }
|
|
78
|
+
.search input::-webkit-search-cancel-button { display: none; }
|
|
79
|
+
.search-hint { margin-right: calc(var(--bh-space-100) - 1px); padding: 0 var(--bh-space-050); border: 1px solid var(--c-line); border-radius: var(--bh-radius-050); color: var(--c-muted); background: var(--c-bg); white-space: nowrap; font: var(--bh-font-label-small); }
|
|
80
|
+
.search:focus-within .search-hint { display: none; }
|
|
81
|
+
.search-results { position: absolute; z-index: 10; top: calc(100% + var(--bh-space-050)); right: 0; width: 360px; max-width: calc(100vw - 2 * var(--page-margin)); margin: 0; padding: var(--bh-space-100); border: 1px solid var(--c-line); border-radius: var(--bh-radius-100); background: var(--c-bg); box-shadow: var(--c-shadow); list-style: none; }
|
|
82
|
+
.search-results a { display: grid; gap: var(--bh-space-050); padding: var(--bh-space-100) var(--bh-space-150); border-radius: var(--bh-radius-050); color: var(--c-ink); text-decoration: none; }
|
|
83
|
+
.search-results b { font: var(--bh-font-label-default); }
|
|
84
|
+
.search-results span { color: var(--c-muted); font: var(--bh-font-body-small); }
|
|
85
|
+
.search-results [aria-selected='true'] a, .search-results a:hover { background: var(--c-hover); }
|
|
86
|
+
.search-empty { padding: var(--bh-space-100) var(--bh-space-150); color: var(--c-muted); font: var(--bh-font-body-default); }
|
|
87
|
+
.search-open { display: inline-grid; }
|
|
88
|
+
|
|
89
|
+
.header-menu { position: relative; display: block; }
|
|
90
|
+
.header-menu nav { position: absolute; top: calc(100% + var(--bh-space-050)); right: 0; display: grid; gap: var(--bh-space-050); width: 220px; padding: var(--bh-space-100); border: 1px solid var(--c-line); border-radius: var(--bh-radius-100); background: var(--c-bg); box-shadow: var(--c-shadow); }
|
|
91
|
+
.header-menu nav a { display: flex; align-items: center; min-height: var(--bh-size-control-default); padding: 0 var(--bh-space-150); border-radius: var(--bh-radius-050); color: var(--c-ink); text-decoration: none; font: var(--bh-font-label-default); }
|
|
92
|
+
.header-menu nav a:hover { background: var(--c-hover); }
|
|
93
|
+
.header-menu nav a[aria-current='page'] { background: linear-gradient(to right, var(--c-gold) var(--bh-border-width-selected), var(--c-selected) 0); }
|
|
94
|
+
.header-menu nav a[aria-current='page']:hover { background: var(--c-selected-hover); }
|
|
95
|
+
|
|
96
|
+
/* Footer: one 48 px line, on the same edges as the header. Muted until hover, so it never
|
|
97
|
+
competes with the page. */
|
|
98
|
+
.site-footer { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--bh-space-100) var(--bh-space-400); box-sizing: content-box; min-height: var(--header-h); padding: 0 var(--page-margin) 0 var(--bh-space-250); border-top: 1px solid var(--c-line); color: var(--c-muted); background: var(--c-bg); font: var(--bh-font-body-small); }
|
|
99
|
+
.site-footer nav { display: flex; flex-wrap: wrap; gap: var(--bh-space-050) var(--bh-space-250); }
|
|
100
|
+
.site-footer a { color: var(--c-muted); text-decoration: none; }
|
|
101
|
+
.site-footer a:hover { color: var(--c-ink); text-decoration: underline; text-underline-offset: 3px; }
|
|
102
|
+
|
|
103
|
+
/* Small windows first: the site menu, and search as a button that opens a field over the
|
|
104
|
+
header. From lg (1024 px) the header shows its links and the search field. */
|
|
105
|
+
body[data-search-open] .search { position: absolute; z-index: 5; inset: var(--bh-space-100) var(--page-margin); display: flex; width: auto; background: var(--c-bg); }
|
|
106
|
+
body[data-search-open] .search-results { left: 0; right: 0; width: auto; }
|
|
107
|
+
@media (min-width: 1024px) {
|
|
108
|
+
.header-inner { gap: var(--bh-space-300); }
|
|
109
|
+
.header-nav { display: flex; }
|
|
110
|
+
.header-tools { margin-left: 0; }
|
|
111
|
+
.header-menu { display: none; }
|
|
112
|
+
.search { display: flex; }
|
|
113
|
+
.search-open { display: none; }
|
|
114
|
+
body[data-search-open] .search { position: relative; inset: auto; width: 240px; background: var(--c-surf); }
|
|
115
|
+
body[data-search-open] .search-results { left: auto; width: 360px; }
|
|
116
|
+
}
|
|
117
|
+
/* Language switch: the other language's short name, links to the same page in it. */
|
|
118
|
+
.lang-switch { width: auto; min-width: var(--bh-size-control-default); padding: 0 var(--bh-space-100); color: var(--c-ink); text-decoration: none; font: var(--bh-font-label-small); }
|
|
119
|
+
/* The site menu repeats the language link; on narrow headers it is the only one, so the tools fit 360 px. */
|
|
120
|
+
.header-menu nav .menu-lang { margin-top: var(--bh-space-050); padding-top: var(--bh-space-050); border-top: 1px solid var(--c-line); border-radius: 0 0 var(--bh-radius-050) var(--bh-radius-050); }
|
|
121
|
+
.site-header .lang-switch { display: none; }
|
|
122
|
+
@container (min-width: 400px) { .site-header .lang-switch { display: inline-grid; } }
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
/* Color page: brand cards, scales, role tables, status and labels. Values come from the tokens. */
|
|
2
|
+
|
|
3
|
+
.c-num { font-variant-numeric: tabular-nums; }
|
|
4
|
+
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
|
|
5
|
+
|
|
6
|
+
/* Brand */
|
|
7
|
+
.c-brand { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--bh-space-200); margin: 0 0 var(--bh-space-300); }
|
|
8
|
+
.c-brand-card { display: grid; grid-template-rows: auto 1fr; margin: 0; border: 1px solid var(--c-line); border-radius: var(--bh-radius-150); overflow: hidden; }
|
|
9
|
+
.c-brand-chip { display: flex; align-items: flex-end; height: 120px; padding: var(--bh-space-200); font: var(--bh-font-heading-small); }
|
|
10
|
+
.c-brand-card.is-yellow .c-brand-chip { color: var(--bh-color-text-on-brand); }
|
|
11
|
+
.c-brand-card.is-graphite .c-brand-chip { color: var(--bh-color-brand-white); }
|
|
12
|
+
.c-brand-card.is-white .c-brand-chip { color: var(--bh-color-brand-graphite); box-shadow: inset 0 -1px 0 var(--c-line); }
|
|
13
|
+
.c-brand-card figcaption { display: grid; align-content: start; gap: var(--bh-space-050); padding: var(--bh-space-200); color: var(--c-muted); font: var(--bh-font-body-default); }
|
|
14
|
+
.c-brand-card figcaption code { color: var(--c-ink); }
|
|
15
|
+
@container prose (min-width: 640px) { .c-brand { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
|
|
16
|
+
|
|
17
|
+
/* Scales */
|
|
18
|
+
.c-scales { margin: 0 0 var(--bh-space-300); }
|
|
19
|
+
.c-scale { margin: 0 0 var(--bh-space-250); }
|
|
20
|
+
.c-scale figcaption { margin-bottom: var(--bh-space-100); color: var(--c-muted); font: var(--bh-font-body-default); }
|
|
21
|
+
.c-scale figcaption b { color: var(--c-ink); }
|
|
22
|
+
.prose .c-scale-table { width: 100%; min-width: 640px; table-layout: fixed; margin: 0; }
|
|
23
|
+
.prose .c-scale-table th, .prose .c-scale-table td { padding: var(--bh-space-050) var(--bh-space-025); border: 0; text-align: center; vertical-align: top; }
|
|
24
|
+
.prose .c-scale-table th[scope='row'] { width: 48px; text-align: left; }
|
|
25
|
+
.c-chip { display: block; height: 40px; margin-bottom: var(--bh-space-050); border-radius: var(--bh-radius-050); box-shadow: inset 0 0 0 1px rgb(127 127 127 / 18%); }
|
|
26
|
+
.c-scale-table .c-num { color: var(--c-muted); font: var(--bh-font-body-small); font-variant-numeric: tabular-nums; }
|
|
27
|
+
.prose .c-steps { display: flex; flex-wrap: wrap; gap: var(--bh-space-050) var(--bh-space-250); margin: 0; padding: 0; list-style: none; color: var(--c-muted); font: var(--bh-font-body-small); }
|
|
28
|
+
.prose .c-steps li { margin: 0; }
|
|
29
|
+
.prose .c-steps b { color: var(--c-ink); }
|
|
30
|
+
|
|
31
|
+
/* Role and status tables */
|
|
32
|
+
.c-cell { display: inline-flex; align-items: center; gap: var(--bh-space-100); white-space: nowrap; }
|
|
33
|
+
.c-cell > .c-num { align-self: baseline; font: var(--bh-font-code-default); }
|
|
34
|
+
.c-dot { flex: none; width: 16px; height: 16px; border-radius: var(--bh-radius-050); box-shadow: inset 0 0 0 1px rgb(127 127 127 / 25%); }
|
|
35
|
+
.c-check { display: block; color: var(--c-muted); font: var(--bh-font-body-small); font-variant-numeric: tabular-nums; }
|
|
36
|
+
.c-from { color: var(--c-muted); font: var(--bh-font-body-small); }
|
|
37
|
+
.prose .c-status td.c-num { font: var(--bh-font-body-small); font-variant-numeric: tabular-nums; }
|
|
38
|
+
|
|
39
|
+
/* Actions */
|
|
40
|
+
.c-actions { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--bh-space-200); margin: 0 0 var(--bh-space-300); }
|
|
41
|
+
.c-action { margin: 0; border: 1px solid var(--c-line); border-radius: var(--bh-radius-150); overflow: hidden; }
|
|
42
|
+
.c-action-stage { display: grid; place-items: center; height: 96px; background: var(--bh-color-surface-subtle); }
|
|
43
|
+
.c-action figcaption { display: grid; gap: var(--bh-space-050); padding: var(--bh-space-200); color: var(--c-muted); font: var(--bh-font-body-default); }
|
|
44
|
+
.c-action figcaption code { color: var(--c-ink); }
|
|
45
|
+
.c-button { display: inline-flex; align-items: center; height: 32px; padding: 0 var(--bh-space-150); border-radius: var(--bh-radius-100); font: var(--bh-font-label-default); }
|
|
46
|
+
.c-button.is-primary { color: var(--bh-color-text-inverse); background: var(--bh-color-background-neutral-bold); }
|
|
47
|
+
.c-button.is-danger { color: var(--bh-color-text-on-bold); background: var(--bh-color-background-danger-bold); }
|
|
48
|
+
@container prose (min-width: 640px) { .c-actions { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
|
|
49
|
+
|
|
50
|
+
/* Labels */
|
|
51
|
+
.c-labels { display: grid; gap: var(--bh-space-200); margin: 0 0 var(--bh-space-300); }
|
|
52
|
+
.c-label-set { margin: 0; padding: var(--bh-space-250); border: 1px solid var(--c-line); border-radius: var(--bh-radius-150); }
|
|
53
|
+
.c-label-set figcaption { margin-bottom: var(--bh-space-150); color: var(--c-muted); font: var(--bh-font-body-default); }
|
|
54
|
+
.c-label-set figcaption b { color: var(--c-ink); }
|
|
55
|
+
.c-label-row { display: flex; flex-wrap: wrap; align-items: center; gap: var(--bh-space-100); }
|
|
56
|
+
.c-label-row + .c-label-row { margin-top: var(--bh-space-150); }
|
|
57
|
+
|
|
58
|
+
/* Token reference */
|
|
59
|
+
.c-tokens > p { margin: 0 0 var(--bh-space-150); }
|
|
60
|
+
.c-var { display: block; color: var(--c-muted); font: var(--bh-font-body-small); }
|
|
61
|
+
.prose .c-token-ref { width: 100%; table-layout: fixed; }
|
|
62
|
+
.prose .c-token-ref th:nth-child(1) { width: 36%; }
|
|
63
|
+
.prose .c-token-ref th:nth-child(6) { width: 17%; }
|
|
64
|
+
.prose .c-token-ref td { vertical-align: top; }
|
|
65
|
+
.c-token-ref .c-cell { display: flex; white-space: normal; overflow-wrap: anywhere; }
|
|
66
|
+
.c-token-ref .c-cell + .c-cell { margin-top: var(--bh-space-050); }
|
|
67
|
+
|
|
68
|
+
/* Pairing */
|
|
69
|
+
.prose .c-pairing { width: 100%; table-layout: fixed; }
|
|
70
|
+
.prose .c-pairing td { vertical-align: top; }
|
|
71
|
+
.c-pair-token { display: inline-block; margin: 0 var(--bh-space-050) var(--bh-space-050) 0; }
|
|
72
|
+
|
|
73
|
+
/* Do / Don't */
|
|
74
|
+
.c-dd { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--bh-space-200); margin: 0 0 var(--bh-space-300); }
|
|
75
|
+
.c-dd-panel { margin: 0; border: 1px solid var(--c-line); border-radius: var(--bh-radius-150); overflow: hidden; }
|
|
76
|
+
.c-dd-panel figcaption { padding: var(--bh-space-100) var(--bh-space-200); border-bottom: 2px solid; font: var(--bh-font-label-default); }
|
|
77
|
+
.c-dd-panel.is-do figcaption { border-color: var(--bh-color-border-success); color: var(--bh-color-text-success); }
|
|
78
|
+
.c-dd-panel.is-dont figcaption { border-color: var(--bh-color-border-danger); color: var(--bh-color-text-danger); }
|
|
79
|
+
.c-dd-stage { display: grid; place-items: center; min-height: 96px; padding: var(--bh-space-200); background: var(--bh-color-surface-subtle); }
|
|
80
|
+
.c-dd-panel p { margin: 0; padding: var(--bh-space-150) var(--bh-space-200); color: var(--c-muted); font: var(--bh-font-body-default); }
|
|
81
|
+
.c-dd-row { display: inline-flex; flex-wrap: wrap; gap: var(--bh-space-100); }
|
|
82
|
+
.c-dd-code { font: var(--bh-font-code-default); }
|
|
83
|
+
.c-dd-tabs { display: flex; gap: var(--bh-space-250); border-bottom: 1px solid var(--bh-color-border); }
|
|
84
|
+
.c-dd-tab { padding: var(--bh-space-100) 0; color: var(--bh-color-text-subtle); font: var(--bh-font-label-default); }
|
|
85
|
+
.c-dd-tab.is-current { color: var(--bh-color-text); box-shadow: inset 0 -2px 0 var(--bh-color-border-selected); }
|
|
86
|
+
/* The Don't examples show colours used wrongly on purpose, so they read the scale directly. */
|
|
87
|
+
.c-dd-yellow-text { color: var(--bh-color-brand-yellow); font: var(--bh-font-label-default); text-decoration: underline; }
|
|
88
|
+
.c-dd-yellow-button { display: inline-flex; align-items: center; padding: var(--bh-space-100) var(--bh-space-200); border-radius: var(--bh-radius-100); color: var(--bh-color-brand-white); background: var(--bh-color-brand-yellow); font: var(--bh-font-label-default); }
|
|
89
|
+
.c-dd-dot { width: 12px; height: 12px; border-radius: var(--bh-radius-full); background: var(--bh-color-red-9); }
|
|
90
|
+
@container prose (min-width: 640px) { .c-dd { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
|
|
91
|
+
|
|
92
|
+
/* Annotated example */
|
|
93
|
+
.c-ex { margin: 0 0 var(--bh-space-300); }
|
|
94
|
+
.c-ex-card { border: 1px solid var(--bh-color-border); border-radius: var(--bh-radius-150); background: var(--bh-color-surface); overflow: hidden; }
|
|
95
|
+
.c-ex-head { display: flex; align-items: center; justify-content: space-between; gap: var(--bh-space-150); padding: var(--bh-space-200); border-bottom: 1px solid var(--bh-color-border); }
|
|
96
|
+
.c-ex-title { color: var(--bh-color-text); font: var(--bh-font-heading-small); }
|
|
97
|
+
.c-ex-row { display: flex; align-items: center; justify-content: space-between; gap: var(--bh-space-150); padding: var(--bh-space-150) var(--bh-space-200); border-bottom: 1px solid var(--bh-color-border); }
|
|
98
|
+
.c-ex-row:last-child { border-bottom: 0; }
|
|
99
|
+
.c-ex-row.is-selected { background: var(--bh-color-background-selected); box-shadow: inset var(--bh-border-width-selected) 0 0 var(--bh-color-border-selected); }
|
|
100
|
+
.c-ex-name { display: block; color: var(--bh-color-text); font: var(--bh-font-heading-xsmall); }
|
|
101
|
+
.c-ex-meta { color: var(--bh-color-text-subtlest); font: var(--bh-font-body-small); }
|
|
102
|
+
.c-ex-link { color: var(--bh-color-link); }
|
|
103
|
+
.c-ex-n { display: inline-grid; place-items: center; width: 18px; height: 18px; margin-left: var(--bh-space-050); border-radius: var(--bh-radius-full); color: var(--bh-color-text-inverse); background: var(--bh-color-surface-inverse); font: var(--bh-font-label-small); vertical-align: middle; }
|
|
104
|
+
.c-ex figcaption { margin-top: var(--bh-space-150); }
|
|
105
|
+
.prose .c-ex-legend { margin: 0; color: var(--c-muted); font: var(--bh-font-body-default); }
|
|
106
|
+
|
|
107
|
+
/* Extra Do / Don't stages */
|
|
108
|
+
.c-dd-fill { display: grid; gap: var(--bh-space-025); padding: var(--bh-space-100) var(--bh-space-150); border-radius: var(--bh-radius-100); color: var(--bh-color-text-on-bold); background: var(--bh-color-background-danger-bold); font: var(--bh-font-label-default); }
|
|
109
|
+
.c-dd-fill small { font: var(--bh-font-body-small); }
|
|
110
|
+
.c-dd-fill.is-wrong small { color: var(--bh-color-red-7); }
|
|
111
|
+
.c-dd-fill.is-wrong { color: var(--bh-color-red-12); }
|
|
112
|
+
.c-dd-yellow-label { display: inline-flex; align-items: center; height: 20px; padding: 0 var(--bh-space-075); border: 1px solid var(--bh-color-brand-yellow); border-radius: var(--bh-radius-full); color: var(--bh-color-yellow-9); font: var(--bh-font-label-small); }
|
|
113
|
+
|
|
114
|
+
/* Balance bar */
|
|
115
|
+
.c-balance { margin: 0 0 var(--bh-space-300); }
|
|
116
|
+
.c-balance-bar { display: flex; height: 40px; overflow: hidden; border: 1px solid var(--c-line); border-radius: var(--bh-radius-100); }
|
|
117
|
+
.c-balance figcaption { margin-top: var(--bh-space-100); color: var(--c-muted); font: var(--bh-font-body-default); }
|
|
118
|
+
|
|
119
|
+
/* Token name anatomy */
|
|
120
|
+
.c-anat { display: grid; gap: var(--bh-space-200); margin: 0 0 var(--bh-space-300); padding: var(--bh-space-250); border: 1px solid var(--c-line); border-radius: var(--bh-radius-150); }
|
|
121
|
+
.c-anat-row { display: flex; flex-wrap: wrap; align-items: flex-start; gap: var(--bh-space-025); }
|
|
122
|
+
.c-anat-part { display: grid; justify-items: center; gap: var(--bh-space-050); }
|
|
123
|
+
.c-anat-part code { padding: var(--bh-space-050) var(--bh-space-100); border-radius: var(--bh-radius-050); font: var(--bh-font-code-default); }
|
|
124
|
+
.c-anat-part small { color: var(--c-muted); font: var(--bh-font-body-small); }
|
|
125
|
+
.c-anat-part.is-prop code { box-shadow: inset 0 -3px 0 var(--bh-color-border-info); }
|
|
126
|
+
.c-anat-part.is-role code { box-shadow: inset 0 -3px 0 var(--bh-color-border-danger); }
|
|
127
|
+
.c-anat-part.is-emph code { box-shadow: inset 0 -3px 0 var(--bh-color-border-success); }
|
|
128
|
+
.c-anat-part.is-state code { box-shadow: inset 0 -3px 0 var(--bh-color-border-warning); }
|
|
129
|
+
.c-anat-part.is-skip code { text-decoration: line-through; color: var(--c-muted); }
|
|
130
|
+
.c-anat-dot { padding-top: var(--bh-space-050); font: var(--bh-font-code-default); }
|
|
131
|
+
.c-anat figcaption { color: var(--c-muted); font: var(--bh-font-body-default); }
|
|
132
|
+
|
|
133
|
+
/* Surfaces */
|
|
134
|
+
.c-surf { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--bh-space-200); margin: 0 0 var(--bh-space-300); }
|
|
135
|
+
.c-surf figure { margin: 0; }
|
|
136
|
+
.c-surf figcaption { margin-top: var(--bh-space-100); color: var(--c-muted); font: var(--bh-font-body-default); }
|
|
137
|
+
.c-surf-page { position: relative; display: grid; grid-template-columns: 42% 1fr; gap: var(--bh-space-150); min-height: 180px; padding: var(--bh-space-300) var(--bh-space-150) var(--bh-space-150); border: 1px solid var(--c-line); border-radius: var(--bh-radius-150); background: var(--bh-color-surface-page); }
|
|
138
|
+
.c-surf-page > .c-tag { position: absolute; top: 6px; left: 12px; }
|
|
139
|
+
.c-surf-side { padding: var(--bh-space-100); border-radius: var(--bh-radius-100); background: var(--bh-color-surface-subtle); }
|
|
140
|
+
.c-surf-card { position: relative; display: flex; flex-wrap: wrap; align-content: flex-start; gap: var(--bh-space-050); padding: var(--bh-space-100); border: 1px solid var(--bh-color-border); border-radius: var(--bh-radius-100); background: var(--bh-color-surface); }
|
|
141
|
+
.c-surf-tip { position: absolute; right: 8px; bottom: 8px; padding: var(--bh-space-050) var(--bh-space-100); border-radius: var(--bh-radius-100); color: var(--bh-color-text-inverse); background: var(--bh-color-surface-inverse); font: var(--bh-font-body-small); }
|
|
142
|
+
.c-tag { display: inline-block; padding: 1px var(--bh-space-075); border-radius: var(--bh-radius-050); color: var(--bh-color-text-subtle); background: var(--bh-color-background-neutral); font: var(--bh-font-code-default); font-size: 12px; }
|
|
143
|
+
.c-tag.is-on-dark { color: var(--bh-color-text-inverse); background: var(--bh-color-surface-inverse); }
|
|
144
|
+
.c-surf-page.is-dimmed { display: grid; place-items: center; grid-template-columns: 1fr; padding: var(--bh-space-500) var(--bh-space-150) var(--bh-space-200); overflow: hidden; }
|
|
145
|
+
.c-surf-scrim { position: absolute; inset: 0; padding: var(--bh-space-075) var(--bh-space-150); background: var(--bh-color-surface-scrim); }
|
|
146
|
+
.c-surf-dialog { position: relative; display: grid; gap: var(--bh-space-100); max-width: 280px; padding: var(--bh-space-200); border-radius: var(--bh-radius-100); color: var(--bh-color-text-subtle); background: var(--bh-color-surface); box-shadow: var(--bh-elevation-shadow-overlay); font: var(--bh-font-body-default); }
|
|
147
|
+
.c-surf-dialog b { color: var(--bh-color-text); font: var(--bh-font-heading-xsmall); }
|
|
148
|
+
@container prose (min-width: 640px) { .c-surf { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
|
|
149
|
+
|
|
150
|
+
/* States */
|
|
151
|
+
.prose .c-states { width: 100%; margin: 0 0 var(--bh-space-300); }
|
|
152
|
+
.prose .c-states td, .prose .c-states th { text-align: center; vertical-align: middle; }
|
|
153
|
+
.prose .c-states th[scope='row'] { text-align: left; }
|
|
154
|
+
.c-focus { outline: var(--bh-border-width-focused) solid var(--bh-color-border-focus); outline-offset: var(--bh-state-focus-offset); }
|
|
155
|
+
.c-disabled { border-color: var(--bh-color-border-disabled) !important; color: var(--bh-color-text-disabled) !important; background: var(--bh-color-background-disabled) !important; }
|
|
156
|
+
.c-state-row { display: block; min-width: 88px; padding: var(--bh-space-100) var(--bh-space-150); border-radius: var(--bh-radius-100); color: var(--bh-color-text); text-align: left; white-space: nowrap; font: var(--bh-font-body-default); }
|
|
157
|
+
.c-state-row.is-selected { background: linear-gradient(to right, var(--bh-color-border-selected) var(--bh-border-width-selected), var(--bh-color-background-selected) 0); }
|
|
158
|
+
|
|
159
|
+
/* Banners */
|
|
160
|
+
.c-banners { display: grid; gap: var(--bh-space-100); margin: 0 0 var(--bh-space-300); }
|
|
161
|
+
.c-banner { display: flex; align-items: center; gap: var(--bh-space-100); padding: calc(var(--bh-space-100) - 1px) calc(var(--bh-space-150) - 1px); border: 1px solid; border-radius: var(--bh-radius-100); color: var(--bh-color-text); font: var(--bh-font-body-default); }
|
|
162
|
+
.c-banner-icon { display: inline-flex; }
|
|
163
|
+
.c-banner.is-info { border-color: var(--bh-color-border-info-subtle); background: var(--bh-color-background-info-subtle); }
|
|
164
|
+
.c-banner.is-info .c-banner-icon { color: var(--bh-color-icon-info); }
|
|
165
|
+
.c-banner.is-success { border-color: var(--bh-color-border-success-subtle); background: var(--bh-color-background-success-subtle); }
|
|
166
|
+
.c-banner.is-success .c-banner-icon { color: var(--bh-color-icon-success); }
|
|
167
|
+
.c-banner.is-warning { border-color: var(--bh-color-border-warning-subtle); background: var(--bh-color-background-warning-subtle); }
|
|
168
|
+
.c-banner.is-warning .c-banner-icon { color: var(--bh-color-icon-warning); }
|
|
169
|
+
.c-banner.is-danger { border-color: var(--bh-color-border-danger-subtle); background: var(--bh-color-background-danger-subtle); }
|
|
170
|
+
.c-banner.is-danger .c-banner-icon { color: var(--bh-color-icon-danger); }
|
|
171
|
+
|
|
172
|
+
/* Step jobs */
|
|
173
|
+
.c-steps-ill { display: grid; gap: var(--bh-space-150); margin: 0 0 var(--bh-space-300); padding: var(--bh-space-200); border: 1px solid var(--c-line); border-radius: var(--bh-radius-150); }
|
|
174
|
+
/* Twelve steps always fit the column: on narrow columns the scale name goes on its own line. */
|
|
175
|
+
.c-steps-row { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); align-items: end; gap: var(--bh-space-050); }
|
|
176
|
+
.c-steps-row > b { grid-column: 1 / -1; }
|
|
177
|
+
@container prose (min-width: 560px) { .c-steps-row { grid-template-columns: 4.5rem repeat(12, minmax(0, 1fr)); gap: var(--bh-space-075); } .c-steps-row > b { grid-column: auto; } }
|
|
178
|
+
.c-steps-row > b { align-self: center; font: var(--bh-font-label-default); }
|
|
179
|
+
.c-step-cell { display: grid; justify-items: center; gap: var(--bh-space-050); }
|
|
180
|
+
.c-step-cell small { color: var(--c-muted); font: var(--bh-font-body-small); }
|
|
181
|
+
.c-step-bg { width: 100%; height: 32px; border: 1px solid var(--c-line); border-radius: var(--bh-radius-050); }
|
|
182
|
+
.c-step-pill, .c-step-fill { display: grid; place-items: center; overflow: hidden; width: 100%; height: 32px; border-radius: var(--bh-radius-100); color: var(--bh-color-text); font: var(--bh-font-label-small); }
|
|
183
|
+
.c-step-fill { color: var(--bh-color-text-on-bold); }
|
|
184
|
+
.c-step-line { width: 100%; height: 32px; border: 2px solid; border-radius: var(--bh-radius-100); }
|
|
185
|
+
.c-step-text { display: grid; place-items: center; height: 32px; font: var(--bh-font-heading-small); }
|
|
186
|
+
.c-steps-ill figcaption { color: var(--c-muted); font: var(--bh-font-body-small); }
|
|
187
|
+
|
|
188
|
+
/* Themes */
|
|
189
|
+
.c-themes { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--bh-space-200); margin: 0 0 var(--bh-space-300); }
|
|
190
|
+
.c-themes figure { margin: 0; }
|
|
191
|
+
.c-theme-stage { padding: var(--bh-space-200); border: 1px solid var(--c-line); border-radius: var(--bh-radius-150); }
|
|
192
|
+
.c-themes figcaption { margin-top: var(--bh-space-100); color: var(--c-muted); font: var(--bh-font-body-default); }
|
|
193
|
+
@container prose (min-width: 640px) { .c-themes { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
|
|
194
|
+
|
|
195
|
+
/* Contrast samples */
|
|
196
|
+
.c-contrast { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--bh-space-150); margin: 0 0 var(--bh-space-300); }
|
|
197
|
+
.c-contrast figure { margin: 0; border: 1px solid var(--c-line); border-radius: var(--bh-radius-150); overflow: hidden; }
|
|
198
|
+
.c-contrast-chip { display: grid; place-items: center; height: 72px; font: var(--bh-font-label-default); }
|
|
199
|
+
.c-contrast-box { width: 20px; height: 20px; border: 1px solid; border-radius: var(--bh-radius-050); background: var(--bh-color-surface); }
|
|
200
|
+
.c-contrast figcaption { padding: var(--bh-space-100) var(--bh-space-150); color: var(--c-muted); font: var(--bh-font-body-small); }
|
|
201
|
+
.c-contrast .is-pass b { color: var(--bh-color-text-success); }
|
|
202
|
+
.c-contrast .is-fail b { color: var(--bh-color-text-danger); }
|
|
203
|
+
@container prose (min-width: 640px) { .c-contrast { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
|
|
204
|
+
|
|
205
|
+
/* Values that differ by theme: show the one for the current theme. */
|
|
206
|
+
.v-dark { display: none; }
|
|
207
|
+
:root[data-theme='dark'] .v-light { display: none; }
|
|
208
|
+
:root[data-theme='dark'] .v-dark { display: inline; }
|
|
209
|
+
|
|
210
|
+
/* Palette: large swatches, one column per scale, light and dark */
|
|
211
|
+
.c-pal-set { display: grid; gap: var(--bh-space-200); margin: 0 0 var(--bh-space-300); }
|
|
212
|
+
.c-pal { margin: 0; padding: var(--bh-space-200); border: 1px solid var(--c-line); border-radius: var(--bh-radius-150); }
|
|
213
|
+
.c-pal figcaption { margin: 0 0 var(--bh-space-150); font: var(--bh-font-heading-xsmall); }
|
|
214
|
+
.c-pal-grid { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: var(--bh-space-100); }
|
|
215
|
+
.c-pal-col { display: grid; gap: var(--bh-space-025); }
|
|
216
|
+
.c-pal-col > b { margin-bottom: var(--bh-space-075); font: var(--bh-font-body-default); font-weight: var(--bh-font-weight-semibold); }
|
|
217
|
+
.c-pal-sw { display: flex; justify-content: space-between; align-items: center; gap: var(--bh-space-050); min-height: 36px; padding: 0 var(--bh-space-100); border-radius: var(--bh-radius-050); font: var(--bh-font-body-small); }
|
|
218
|
+
.c-pal-sw:first-of-type { border-radius: var(--bh-radius-100) var(--bh-radius-100) var(--bh-radius-050) var(--bh-radius-050); }
|
|
219
|
+
.c-pal-sw:last-of-type { border-radius: var(--bh-radius-050) var(--bh-radius-050) var(--bh-radius-100) var(--bh-radius-100); }
|
|
220
|
+
.c-pal-sw .c-num { font: var(--bh-font-label-small); font-family: var(--bh-font-family-mono); opacity: .9; }
|
|
221
|
+
.c-pal-sw em { margin-left: var(--bh-space-050); font-style: normal; font-weight: var(--bh-font-weight-semibold); text-transform: lowercase; }
|
|
222
|
+
.c-pal.is-light .c-pal-sw:is(:nth-of-type(1), :nth-of-type(2)) { box-shadow: inset 0 0 0 1px rgb(0 0 0 / 8%); }
|
|
223
|
+
@container prose (width < 640px) { .c-pal-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); row-gap: var(--bh-space-200); } }
|
|
224
|
+
|
|
225
|
+
/* Ramps on the overview */
|
|
226
|
+
.c-ramps { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--bh-space-200); margin: 0 0 var(--bh-space-300); }
|
|
227
|
+
.c-ramp-card { display: grid; gap: var(--bh-space-075); margin: 0; padding: var(--bh-space-300); border: 1px solid var(--c-line); border-radius: var(--bh-radius-150); }
|
|
228
|
+
.c-ramp { display: grid; grid-template-columns: repeat(12, 1fr); height: 22px; overflow: hidden; border-radius: var(--bh-radius-050); }
|
|
229
|
+
.c-ramp-card figcaption { margin-top: var(--bh-space-100); font: var(--bh-font-body-small); }
|
|
230
|
+
@container prose (min-width: 640px) { .c-ramps { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
|
|
231
|
+
|
|
232
|
+
/* Role specimens */
|
|
233
|
+
.c-roles { width: 100%; table-layout: fixed; }
|
|
234
|
+
.c-roles .c-col-token { width: 30%; }
|
|
235
|
+
.c-roles .c-col-mode { width: 15%; }
|
|
236
|
+
.c-roles .c-col-use { width: 40%; }
|
|
237
|
+
.c-roles td { vertical-align: top; overflow-wrap: anywhere; }
|
|
238
|
+
.c-roles .c-check { margin-top: var(--bh-space-050); }
|
|
239
|
+
@container prose (width < 560px) { .c-roles { table-layout: auto; } .c-roles .c-spec { display: inline-grid; margin: 0 var(--bh-space-100) 0 0; vertical-align: middle; } .c-roles .c-num { display: inline; } }
|
|
240
|
+
.c-spec { display: grid; place-items: center; width: 72px; height: 44px; margin-bottom: var(--bh-space-075); border-radius: var(--bh-radius-050); box-shadow: inset 0 0 0 1px rgb(127 127 127 / 25%); font: var(--bh-font-heading-small); }
|
|
241
|
+
.c-spec.is-border { box-shadow: none; }
|
|
242
|
+
.c-spec-fill { width: 52px; height: 28px; border-radius: var(--bh-radius-050); background: var(--fill); box-shadow: inset 0 0 0 1px var(--edge); }
|
|
243
|
+
.c-roles .c-num { display: block; font: var(--bh-font-code-default); }
|
|
244
|
+
|
|
245
|
+
/* Pairing cards */
|
|
246
|
+
.c-pairs { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--bh-space-200); margin: 0 0 var(--bh-space-300); }
|
|
247
|
+
.c-pair { margin: 0; overflow: hidden; border: 1px solid var(--c-line); border-radius: var(--bh-radius-150); }
|
|
248
|
+
.c-pair-stage { display: flex; flex-wrap: wrap; align-content: flex-start; gap: var(--bh-space-050) var(--bh-space-150); min-height: 96px; padding: var(--bh-space-200); font: var(--bh-font-body-default); }
|
|
249
|
+
.c-pair-text { font: var(--bh-font-code-default); }
|
|
250
|
+
.c-pair-marks { display: flex; flex-basis: 100%; gap: var(--bh-space-100); margin-top: var(--bh-space-050); }
|
|
251
|
+
.c-pair-mark { display: grid; place-items: center; width: 24px; height: 24px; border-radius: var(--bh-radius-050); }
|
|
252
|
+
.c-pair figcaption { padding: var(--bh-space-150) var(--bh-space-200); border-top: 1px solid var(--c-line); font: var(--bh-font-body-small); }
|
|
253
|
+
.c-pair figcaption b { margin-right: var(--bh-space-050); }
|
|
254
|
+
.c-pair figcaption .c-from { display: block; margin-top: var(--bh-space-050); }
|
|
255
|
+
@container prose (min-width: 640px) { .c-pairs { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
|
|
256
|
+
|
|
257
|
+
/* State key */
|
|
258
|
+
.c-state-key { margin: var(--bh-space-150) 0 0; padding: 0; list-style: none; color: var(--c-muted); font: var(--bh-font-body-small); }
|
|
259
|
+
.c-state-key li + li { margin-top: var(--bh-space-050); }
|
|
260
|
+
.c-state-key b { color: var(--c-ink); font-weight: var(--bh-font-weight-semibold); }
|
|
261
|
+
|
|
262
|
+
/* Emphasis */
|
|
263
|
+
.c-emph { margin: 0 0 var(--bh-space-300); padding: var(--bh-space-200); border: 1px solid var(--c-line); border-radius: var(--bh-radius-150); }
|
|
264
|
+
.c-emph-grid { display: grid; grid-template-columns: 80px repeat(3, minmax(0, 1fr)); gap: var(--bh-space-100); align-items: center; font: var(--bh-font-body-small); }
|
|
265
|
+
.c-emph-fill { display: flex; align-items: center; min-height: 40px; padding: 0 var(--bh-space-150); border-radius: var(--bh-radius-100); font: var(--bh-font-body-default); overflow-wrap: anywhere; }
|
|
266
|
+
.c-emph-none { color: var(--c-muted); text-align: center; }
|
|
267
|
+
.c-emph figcaption { margin-top: var(--bh-space-150); color: var(--c-muted); font: var(--bh-font-body-default); }
|
|
268
|
+
.c-emph-fill { box-shadow: inset 0 0 0 1px rgb(127 127 127 / 18%); }
|
|
269
|
+
.c-status .c-dot { width: 32px; height: 32px; border-radius: var(--bh-radius-050); }
|
|
270
|
+
.c-pair-warn { margin-left: var(--bh-space-025); color: var(--c-ink); font-family: var(--bh-font-family-sans); }
|