diff --git a/docs-app/app/components/header.gts b/docs-app/app/components/header.gts index 10a71080d..a62b1c690 100644 --- a/docs-app/app/components/header.gts +++ b/docs-app/app/components/header.gts @@ -9,18 +9,25 @@ export const TestsLink = ; @@ -36,18 +43,25 @@ export const GitHubLink = ; diff --git a/docs-app/app/components/setup.gts b/docs-app/app/components/setup.gts index 81372b196..8d642a158 100644 --- a/docs-app/app/components/setup.gts +++ b/docs-app/app/components/setup.gts @@ -4,6 +4,7 @@ import { Link } from '@universal-ember/docs-support'; import type { TOC } from '@ember/component/template-only'; +/** Install / copy-code instructions with package-manager tabs. */ function dropExtension(name: string | undefined) { if (!name) return; @@ -41,79 +42,183 @@ export const SetupInstructions: TOC<{ since?: string; }; }> = ; diff --git a/docs-app/app/components/tabs.gts b/docs-app/app/components/tabs.gts index 8d056a170..40e00d2db 100644 --- a/docs-app/app/components/tabs.gts +++ b/docs-app/app/components/tabs.gts @@ -1,6 +1,6 @@ /** -Styled tabs for documentation -*/ + * Styled tabs for documentation demos + */ import { type ButtonType, @@ -27,24 +27,41 @@ const StyledButton: TOC<{ ; @@ -60,20 +77,16 @@ const StyledContent: TOC<{ ; @@ -145,12 +158,31 @@ export const Tabs: TOC<{ ; diff --git a/docs-app/app/routes/application.ts b/docs-app/app/routes/application.ts index 90677cacf..279656834 100644 --- a/docs-app/app/routes/application.ts +++ b/docs-app/app/routes/application.ts @@ -187,3 +187,4 @@ export default class Application extends Route { ]); } } + diff --git a/docs-app/app/styles/app.css b/docs-app/app/styles/app.css index d73e42132..3fd858f63 100644 --- a/docs-app/app/styles/app.css +++ b/docs-app/app/styles/app.css @@ -54,9 +54,9 @@ ul { */ :root { --font-sans: - "InterVariable", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", - "Segoe UI Symbol", "Noto Color Emoji"; - --font-display: "Helvetica", "Arial", sans-serif; + "Inter", "InterVariable", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", + "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + --font-display: var(--font-sans); --max-width-8xl: 88rem; } @@ -87,10 +87,6 @@ body { padding-bottom: 0; } -.prose .featured-demo input { - color: black; -} - /* * TypeDoc overrides */ @@ -109,11 +105,153 @@ body { * Theme variables */ .theme-light { - --color-page-background: white; - --color-foreground: black; + --color-page-background: var(--doc-bg, white); + --color-foreground: var(--doc-text-1, black); } .theme-dark { - --color-page-background: #252525; - --color-foreground: white; + --color-page-background: var(--doc-bg, #1b1b1f); + --color-foreground: var(--doc-text-1, #dfdfd6); +} + +/* + * SetupInstructions spacing also lives in setup.gts so live previews + * always get it. Keep a matching copy here as a fallback. + */ +[data-setup] { + display: flex; + flex-direction: column; + gap: 1.25rem; + margin: 1.25rem 0 1.75rem; +} + +[data-setup-group].ember-primitives__tabs, +.ember-primitives__tabs[data-setup-group] { + display: flex; + flex-direction: column; + margin: 0; + border: 1px solid var(--doc-border); + border-radius: var(--doc-radius-md); + background: var(--doc-bg-alt); + overflow: hidden; +} + +[data-setup-group] > .ember-primitives__tabs__label { + margin: 0; + padding: 0.85rem 1.15rem 0.35rem; + font-family: var(--font-sans); + font-size: 0.75rem; + font-weight: 600; + letter-spacing: 0.04em; + text-transform: uppercase; + color: var(--doc-text-3); +} + +[data-setup-group] > [role="tablist"], +[data-setup-group] > .ember-primitives__tabs__tablist { + display: flex; + flex-wrap: wrap; + gap: 0.15rem; + width: 100%; + min-width: 0; + margin: 0; + padding: 0.15rem 0.85rem 0; + border: 0; + border-bottom: 1px solid var(--doc-border); + background: transparent; + border-radius: 0; +} + +[data-setup-group] [role="tab"] { + position: relative; + display: inline-flex; + align-items: center; + justify-content: center; + margin: 0; + padding: 0.55rem 0.9rem 0.75rem; + border: 0; + border-radius: 0; + background: transparent !important; + color: var(--doc-text-3); + font-family: var(--font-sans); + font-size: 0.8125rem; + font-weight: 500; + line-height: 1.2; + cursor: pointer; + box-shadow: none !important; + transition: color 0.12s ease; +} + +[data-setup-group] [role="tab"]:hover { + color: var(--doc-text-1); + background: transparent !important; +} + +[data-setup-group] [role="tab"][aria-selected="true"] { + color: var(--doc-brand-1); + background: transparent !important; + font-weight: 600; + box-shadow: none !important; +} + +[data-setup-group] [role="tab"][aria-selected="true"]::after { + content: ""; + position: absolute; + left: 0.55rem; + right: 0.55rem; + bottom: -1px; + height: 2px; + border-radius: 2px 2px 0 0; + background: var(--doc-brand-1); +} + +[data-setup-group] > .ember-primitives__tabs__tabpanel { + min-width: 0; + padding: 0; +} + +[data-setup-group] [role="tabpanel"] { + display: block; + margin: 0; + padding: 1.1rem 1.15rem !important; + border: 0 !important; + border-radius: 0 !important; + background: transparent !important; + color: var(--doc-text-1); + font-family: var(--font-mono); + font-size: 0.875rem; + line-height: 1.6; + letter-spacing: -0.01em; + overflow-x: auto; +} + +[data-setup-group] [role="tabpanel"] code { + font: inherit; + color: inherit; + background: transparent; + padding: 0; + border-radius: 0; +} + +[data-setup-group] [role="tabpanel"] a { + color: var(--doc-brand-1); + font-family: var(--font-sans); + font-weight: 500; + text-decoration: none; +} + +[data-setup-group] [role="tabpanel"] a:hover { + text-decoration: underline; + text-underline-offset: 0.18em; +} + +[data-setup-since] { + margin: 0; + padding: 0 0.15rem; + font-size: 0.875rem; + color: var(--doc-text-2); +} + +.prose .featured-demo input { + color: var(--doc-text-1); } diff --git a/docs-app/app/templates/3-ui/accordion.gjs.md b/docs-app/app/templates/3-ui/accordion.gjs.md index d4d759013..a0026b285 100644 --- a/docs-app/app/templates/3-ui/accordion.gjs.md +++ b/docs-app/app/templates/3-ui/accordion.gjs.md @@ -17,73 +17,68 @@ Like with the component, `
` and `` can be styled with CSS. // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/details#name @@ -93,6 +88,88 @@ Like with the component, `
` and `` can be styled with CSS. + + ## Examples
diff --git a/docs-app/app/templates/3-ui/avatar.gjs.md b/docs-app/app/templates/3-ui/avatar.gjs.md index 7442672d7..b3c186b34 100644 --- a/docs-app/app/templates/3-ui/avatar.gjs.md +++ b/docs-app/app/templates/3-ui/avatar.gjs.md @@ -10,52 +10,48 @@ import { Avatar } from 'ember-primitives'; diff --git a/docs-app/app/templates/3-ui/breadcrumb.gjs.md b/docs-app/app/templates/3-ui/breadcrumb.gjs.md index 8aa9ceb50..efe0a5a07 100644 --- a/docs-app/app/templates/3-ui/breadcrumb.gjs.md +++ b/docs-app/app/templates/3-ui/breadcrumb.gjs.md @@ -40,16 +40,15 @@ import { Breadcrumb, Menu, PortalTargets } from 'ember-primitives'; diff --git a/docs-app/app/templates/3-ui/heading.gjs.md b/docs-app/app/templates/3-ui/heading.gjs.md index ebdb62c91..d1232a51f 100644 --- a/docs-app/app/templates/3-ui/heading.gjs.md +++ b/docs-app/app/templates/3-ui/heading.gjs.md @@ -49,9 +49,11 @@ import { InViewport } from 'ember-primitives/viewport'; ``` diff --git a/docs-app/app/templates/3-ui/one-time-password/otp.gjs.md b/docs-app/app/templates/3-ui/one-time-password/otp.gjs.md index 04746d384..ae52894ff 100644 --- a/docs-app/app/templates/3-ui/one-time-password/otp.gjs.md +++ b/docs-app/app/templates/3-ui/one-time-password/otp.gjs.md @@ -18,35 +18,91 @@ import { OTP } from 'ember-primitives'; import { cell } from 'ember-resources'; const submittedCode = cell(); -const handleSubmit = ({ code }) => submittedCode.current = code; +const handleSubmit = ({ code }) => (submittedCode.current = code); diff --git a/docs-app/app/templates/3-ui/progress.gjs.md b/docs-app/app/templates/3-ui/progress.gjs.md index 810348115..7a57ef4ec 100644 --- a/docs-app/app/templates/3-ui/progress.gjs.md +++ b/docs-app/app/templates/3-ui/progress.gjs.md @@ -13,55 +13,54 @@ Before reaching for this component, consider if the [native ``](https: