+
diff --git a/docs-app/app/templates/page.gjs b/docs-app/app/templates/page.gjs
deleted file mode 100644
index 2e80244b..00000000
--- a/docs-app/app/templates/page.gjs
+++ /dev/null
@@ -1,102 +0,0 @@
-import { ExternalLink, service } from 'ember-primitives';
-import Route from 'ember-route-template';
-import { Page } from 'kolay/components';
-
-// Removes the App Shell / welcome UI
-// before initial rending and chunk loading finishes
-function removeLoader() {
- document.querySelector('#initial-loader')?.remove();
-}
-
-function resetScroll() {
- document.querySelector('html')?.scrollTo(0, 0);
-}
-
-export default Route(
-
-
-
-
- {{! TODO: we need a pending state here
- right now this is ignored, because the :pending
- block doesn't exist.
- }}
- <:pending>
-
-
-
- <:error as |error|>
-
-
-
-
-
- <:success as |prose|>
-
- {{(removeLoader)}}
- {{! this is probably really bad, and anti-patterny
- but ember doesn't have a good way to have libraries
- tie in to the URL without a bunch of setup -- which is maybe fine?
- needs some experimenting -- there is a bit of a disconnect with
- deriving data from the URL, and the timing of the model hooks.
- It might be possible to have an afterModel hook wait until the page is
- compiled.
- (that's why we have async state, because we're compiling, not loading)
- }}
- {{resetScroll prose}}
-
-
-
-
-
-
-);
-
-const ReportingAnIssue =
-
- reporting an issue
-
-;
-
-const Error =
-
-
Oops!
- {{@error}}
-
-
-
- If you have a GitHub account (and the time),
-
- would be most helpful! 🎉
-
- {{/let}}
-;
diff --git a/docs-app/app/templates/page.gts b/docs-app/app/templates/page.gts
new file mode 100644
index 00000000..391c7229
--- /dev/null
+++ b/docs-app/app/templates/page.gts
@@ -0,0 +1,155 @@
+import { Header } from 'docs-app/components/header';
+import { Menu } from 'docs-app/components/icons';
+import { Nav } from 'docs-app/components/nav';
+// @ts-expect-error - no types are provided for ember-mobile-menu
+import MenuWrapper from 'ember-mobile-menu/components/mobile-menu-wrapper';
+import { ExternalLink, service } from 'ember-primitives';
+import Route from 'ember-route-template';
+import { Page } from 'kolay/components';
+
+import type { TOC } from '@ember/component/template-only';
+
+// Removes the App Shell / welcome UI
+// before initial rending and chunk loading finishes
+function removeLoader() {
+ document.querySelector('#initial-loader')?.remove();
+}
+
+function resetScroll(..._args: unknown[]) {
+ document.querySelector('html')?.scrollTo(0, 0);
+}
+
+const DocsPage =
+
+
+
+
+ {{! TODO: we need a pending state here
+ right now this is ignored, because the :pending
+ block doesn't exist.
+ }}
+ {{! -- <:pending>
+
+
+ --}}
+
+ <:error as |error|>
+
+
+
+
+
+ <:success as |prose|>
+
+ {{(removeLoader)}}
+ {{! this is probably really bad, and anti-patterny
+ but ember doesn't have a good way to have libraries
+ tie in to the URL without a bunch of setup -- which is maybe fine?
+ needs some experimenting -- there is a bit of a disconnect with
+ deriving data from the URL, and the timing of the model hooks.
+ It might be possible to have an afterModel hook wait until the page is
+ compiled.
+ (that's why we have async state, because we're compiling, not loading)
+ }}
+ {{resetScroll prose}}
+
+
+
+
+
+
+;
+
+export default Route(DocsPage);
+
+const Layout: TOC<{ Blocks: { default: [] }}> =
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{@error}}
+
+
+
+ If you have a GitHub account (and the time),
+
+ would be most helpful! 🎉
+
+;
+
diff --git a/docs-app/public/docs/8-layout/hero.md b/docs-app/public/docs/8-layout/hero.md
new file mode 100644
index 00000000..8aacd408
--- /dev/null
+++ b/docs-app/public/docs/8-layout/hero.md
@@ -0,0 +1,54 @@
+# Hero
+
+The hero pattern is for featuring large, eye-catching content, such as an image or video, along with a clear, easy to read headline or call to action.
+
+## Features
+
+* Covers the full browser height and width, including proper dimensionality on dynamically sized viewports, such as on mobile.
+
+## Anatomy
+
+```js
+import { Hero } from 'ember-primitives/layout/hero';
+```
+
+```gjs
+import { Hero } from 'ember-primitives/layout/hero';
+
+
+
+ content
+
+
+```
+
+There is 1 BEM-style class on the element to enable further customization or styling.
+```css
+/*
+ the containing element.
+ this is not the same element that `...attributes` is on.
+*/
+.ember-primitives__hero__wrapper
+```
+
+## Accessibility
+
+This component provides no accessibility patterns and using `` / `