move to top banner
This commit is contained in:
@@ -1,18 +1,17 @@
|
||||
# Federated Computer — Hugo Site
|
||||
|
||||
A Hugo template for the Federated Computer site, laid out like
|
||||
[supermemory.ai](https://supermemory.ai): a sticky left rail (logo, the
|
||||
site's pages, Start Now / Sign In, and an "On this page" index of the
|
||||
current page's sections) beside a single narrow reading column. White
|
||||
page, near-black ink, one electric blue (`#0562ef`), hairline rules,
|
||||
square corners, no shadows. The product's four layers
|
||||
(Federated Core → Software Library → Agent Sandbox → Data & Controls)
|
||||
recur as stacked bars — in the blue hero "field", the layer-fit panels,
|
||||
and the closing call to action.
|
||||
[nebius.com](https://nebius.com): a sticky dark navy top bar with dropdown
|
||||
menus, a full-bleed navy hero (copy left, a visual right), then full-width
|
||||
bands that alternate white and light grey inside a centered 1280px
|
||||
container. Big, tight Inter headlines, rounded filled cards, a lime primary
|
||||
button (`#e0ff4f`) and a violet accent (`#614efa`). Stats, the closing call
|
||||
to action, and the footer return to navy. Copy still to be written is
|
||||
filled with "lorem ipsum".
|
||||
|
||||
## Requirements
|
||||
|
||||
- [Hugo](https://gohugo.io/) (extended version). Tested on v0.123.7.
|
||||
- [Hugo](https://gohugo.io/) (extended version), recent enough to have `hugo.Data`. Tested on v0.167.0.
|
||||
|
||||
## Running it locally
|
||||
|
||||
@@ -48,13 +47,13 @@ partial in `layouts/partials/sections/`.
|
||||
Any section can take:
|
||||
- `id: "some-id"` — anchor for links (e.g. `/start-now/#pricing`). Without
|
||||
one, the id is made from `toc`, `kicker`, or `headline`.
|
||||
- `toc: "Short label"` — the label for the rail's "On this page" index
|
||||
(defaults to the kicker, then the headline). Sections without any of
|
||||
these, plus `hero`, `divider`, and `final-cta`, are left out of the index.
|
||||
|
||||
Every section opens on a hairline rule, so the older `bordered`, `tinted`,
|
||||
and `dark` options are accepted but no longer change the look. `final-cta`
|
||||
always renders as the dark closing plate.
|
||||
Sections alternate white and grey bands automatically (cards inside take
|
||||
the opposite tone), so the older `bordered`, `tinted`, and `dark` options
|
||||
are accepted but no longer change the look. `stats` always renders as a
|
||||
navy band; `final-cta` always renders as the navy closing band. A `text`
|
||||
section with a heading puts it on the left and the copy on the right; one
|
||||
without a heading renders as a large statement.
|
||||
|
||||
### Customer paths (Solutions)
|
||||
|
||||
@@ -82,11 +81,15 @@ New section types:
|
||||
- `savings` — a bar comparison (`bars`: `name`, `amount`, `highlight`) and a savings calculator (`apps`: `name`, `cost`, `perSeat`, `selected`; compared with `federatedAnnual`) (Pricing)
|
||||
- `stats` values that start with a number ("80%+", "100+") count up when scrolled into view
|
||||
- `quote` takes one `text`/`cite`, or several as `items`. With `cards: true`, items render as a two-column testimonial grid: `text`, `name`, optional `role` and `photo` (initials show when there's no photo). Customer headshots live in `static/images/customers/` (home page). `savings:` adds a compact savings calculator below the quotes: it picks the named `apps` (and ticks `selected`) out of the `savings` section on the page at `from` (e.g. `/pricing`), so app prices live in one place; `more` links to the full calculator
|
||||
- `logos` — a logo wall. `source: "apps"` fills it from `data/app_wall.yaml` (home); otherwise `items` of `name` + optional `url`
|
||||
- `cards` — a grid of rounded cards: `items` with `title`, `body`, optional `label`, `image`, `link`/`linktext`; `visual: true` draws a gradient panel where there's no image; `columns: 2` or `3` fixes the grid
|
||||
- `news` — "What's new" cards: `items` with `tag` (Blog, Video, Event…), `title`, `date`, `url`, optional `image` (home; lorem ipsum for now)
|
||||
- `banner` — an announcement plate: `badge`, `kicker`, `headline`, `body`, `ctas` (home; lorem ipsum for now)
|
||||
- `app-directory` items can also take `page:` — the app's own page on this site
|
||||
- `hero` accepts `log:` — a list of lines (`tag` + `text`; `think: true` for a greyed reasoning step with a spinner and a pause; `done: true` to close the run) typed out in a fixed-height console window that scrolls like a terminal, as an agent's activity log (home page). Without JS or with reduced motion, all lines show at once. `logTitle` sets the window's title; `logImage` puts a photo behind the console in place of the blue field (home: Pikes Peak, `static/images/hero-pikes-peak.jpg`), and `logCaption` adds a small credit in its corner
|
||||
- `hero` accepts `fit:` to show the layer panel under the actions (in place
|
||||
of the blue field); `bars: false` drops the field; `compact: true` makes
|
||||
the field shorter
|
||||
the field shorter. A photo set with `logImage` sits behind the whole hero band
|
||||
|
||||
Every section type now renders `kicker`, `headline`, and an optional `lede`
|
||||
through `partials/sections/head.html`.
|
||||
@@ -104,14 +107,15 @@ Some pages are long-form Markdown rather than a `sections:` list:
|
||||
Site-wide links live in `hugo.toml`: `params.demoUrl` (the booking page),
|
||||
`params.supportUrl` (the help portal), and the `footer_social` / `footer_legal` menus.
|
||||
|
||||
### The "Apps + AI" wall
|
||||
### The app logo wall
|
||||
|
||||
The rail ends with a slowly scrolling grid of app tiles, pinned to the bottom
|
||||
of the column on screens wider than 1000px and taller than 720px. Tiles come
|
||||
from `data/app_wall.yaml` (`name`, `url`, optional `icon`). Icons are symbols
|
||||
in the sprite `static/images/app-icons.svg` (from Simple Icons, CC0; DocuSeal
|
||||
from its own repo). A tile without an `icon` shows its first letter. The
|
||||
scroll pauses on hover and focus, and stops for reduced motion.
|
||||
The home page's `logos` section draws its tiles from `data/app_wall.yaml`
|
||||
(`name`, `url`, optional `icon`). Icons are symbols in the sprite
|
||||
`static/images/app-icons.svg` (from Simple Icons, CC0; DocuSeal from its own
|
||||
repo). A tile without an `icon` shows its first letter.
|
||||
|
||||
Dropdown entries in the top bar can carry a one-line description:
|
||||
`[menu.product.params] desc = "..."` in `hugo.toml`.
|
||||
|
||||
### Adding a new page
|
||||
|
||||
@@ -156,9 +160,9 @@ layouts/
|
||||
product/list.html Product overview (renders sections)
|
||||
partials/
|
||||
head.html, footer.html
|
||||
header.html The rail (nav, actions, "On this page")
|
||||
header.html The top bar (nav with dropdowns, actions, mobile menu)
|
||||
render-sections.html Dispatches each section to its partial
|
||||
section-id.html Anchor id shared by sections and the rail index
|
||||
section-id.html Anchor id for each section
|
||||
sections/*.html One partial per section type
|
||||
static/
|
||||
css/style.css The whole design system
|
||||
@@ -167,17 +171,20 @@ hugo.toml Site config + nav/footer menus
|
||||
|
||||
## Design notes
|
||||
|
||||
- **Layout:** `.page` is a two-column grid — the rail (`layouts/partials/header.html`)
|
||||
and the column (`main.col`, which also holds the footer). Below 1000px the
|
||||
rail becomes a one-line top bar with a Menu toggle.
|
||||
- **Type:** Geist (reading) and Geist Mono (caps labels, numbers, buttons),
|
||||
loaded from Google Fonts in `layouts/partials/head.html`.
|
||||
- **Layout:** a sticky top bar (`layouts/partials/header.html`), then
|
||||
`main`, then the footer — all full width. Content sits in `.wrap`
|
||||
(max 1280px, centered). Below 1080px the nav folds into a Menu toggle.
|
||||
- **Type:** Inter (headlines and reading) and JetBrains Mono (small caps
|
||||
labels and numbers), loaded from Google Fonts in `layouts/partials/head.html`.
|
||||
- **Color tokens** are CSS custom properties at the top of
|
||||
`static/css/style.css` (`--ink`, `--ink-68`, `--rule`, `--paper`,
|
||||
`--blue`, etc.) — change the palette there and it cascades everywhere.
|
||||
- **Buttons:** CTA `style: primary` is the solid blue button with an arrow
|
||||
tile, `ghost` the pale blue one with corner ticks, `text` a quiet link.
|
||||
A trailing `→` in a label is dropped; the arrow is drawn for you.
|
||||
`static/css/style.css` (`--navy-deep`, `--lime`, `--violet`, `--paper`,
|
||||
`--ink`, `--rule`, etc.) — change the palette there and it cascades
|
||||
everywhere. Each section sets `--section-bg` and `--surface` (the card
|
||||
tone), which flip on alternating bands.
|
||||
- **Buttons:** CTA `style: primary` is the solid lime button (navy on white
|
||||
bands), `ghost` the outlined one, `text` a violet link. A trailing `→` in
|
||||
a label is dropped; the arrow is drawn for you.
|
||||
- **JS is optional.** A small inline script in `baseof.html` fades sections
|
||||
in and highlights the current "On this page" entry. Without it everything
|
||||
still shows; the mobile menu, FAQ, and app directory use native `<details>`.
|
||||
in and darkens the top bar on scroll. Without it everything still shows;
|
||||
the dropdowns are CSS (hover and focus), and the mobile menu, FAQ, and
|
||||
app directory use native `<details>`.
|
||||
|
||||
Reference in New Issue
Block a user