Design playground

Reduced motion follows your system setting.

1 Tokens

Source: apps/notefriends/brand/tokens.css (.notefriends-brand). Values shown are live, so they follow the token editor.

Type

--nf-font-ui Little notes, big thoughts. Haskoy for buttons and chrome.

--nf-font-label SPACE GROTESK LABELS 0123456789

--nf-font-reading Georgia for reading text, in the note itself.

Instrument Serif A little room to think

Stroke, radius, focus

--nf-stroke
--nf-radius
--nf-focus

2 Token editor

Edits apply to this whole page at once and are kept in this browser. Copy the result back into apps/notefriends/brand/tokens.css (or paste it to the agent). Note colours below are per look, applied to the reading samples in sections 4 and 5.

Brand tokens --nf-*

Look --note-*

Changed: 0 tokens

3 Shell controls

Source: components.css and notes.css. Markup copied from index.html, account-ui.js, my-notes-ui.js, block-menu.js. Hover and focus states need the pointer or Tab; use the keyboard to see them.

Buttons

button, .primary, .danger, .icon-button, .action-icon, :disabled. Hover, focus-visible: use the pointer or Tab.

Select, text input, link row

.notefriends-brand select, .link-row, .template-shelf.

Import / export disclosure (open)

details.export-menu, .export-options. Open with the open attribute.

Import / export

Notice, dialog, message line

.notice, dialog.notice (non-modal here), #message[data-kind] (the app's one id-styled message line).

You’re viewing a shared note. You can’t edit it.

Sharing uploads a copy and makes a link anyone can read. Continue?

Delete “Weekend plans”? There is no trash, so it cannot be restored.

Skip link (visible state)

.skip from packages/design/base.css; it slides in on focus, shown here in place. The real one is the first Tab stop on this page.

Topbar: signed out and signed in

.topbar, .wordmark, .account.

Toolbar

.toolbar, .save-line, .file-actions.

Saved in this browser · Links last 24 hours unless you sign in.
Import / export

Appearance panel and looks

.appearance-panel, .looks, .look, .look-preview. One look checked, one disabled; swatches are built from appearance.js.

Look

Saved with the note, so everyone who opens it sees the same look.

Look

Custom style. Choosing a look replaces it.

Crumbs

.pane-label.crumbs.

My notes list

.my-notes-head, .my-notes-list, .my-note-open[aria-current], .my-note-move, .my-note-delete, .project-open, .project-actions, .account-menu.

My notes

People list row

.people-list with a role select.

  • sam@example.com · can view
  • alex@example.com · can edit

Block menu

.nf-menu, .nf-menu-item, .is-active, [aria-disabled], .nf-menu-back, .nf-menu-hint, .nf-menu-keys. In the app it floats (position: fixed); here it sits in the flow.

4 In-note editing controls

Source: components.css / notes.css rules scoped to #preview, reading --note-*. The whole sample is one #preview.reading-surface.prose; change the Look to restyle it. Progress, timeline and calendar are rendered by the real renderNote with editable: true.

Gutter: normal, expanded (menu open), compact (.nf-gutter, [data-compact])
Editing outline on a paragraph ([data-edit][data-editing]), and a plain editable one

This paragraph can be edited in place; hover shows a text cursor.

This paragraph is being edited: the outline takes no space.

Pending placeholders ([data-pending][data-shape])

Table tools, menu open, with a pressed and a disabled button (.nf-table-tools, .nf-table-menu)

Row 1, column 2

DayPlan
SaturdayWalk by the water
Board: status pill, open status menu, add card (.nf-status-btn, .nf-status-menu, .nf-add-card)
Progress tools and timeline tools (.nf-prog-tools, .nf-w-btn, .nf-w-input, .nf-tl-tools). Quiet until hover or focus; disabled buttons shown.
Widget buttons: normal, primary, disabled, number input (.nf-w-btn, .nf-w-primary)
Calendar: Add event, per-day add, event edit (.nf-cal-add-day, .nf-cal-add, .nf-event-edit)
Popover form with a field in error (.nf-pop). In the app it floats; here it sits in the flow.
Unreadable block (.nf-invalid)

This progress list has a line it can't read. Use the block menu to delete it, then add a new one.

  • Project tasks
  • Reading goal

5 Every block

Source: render-note.js, styled by reading.css. "Every block" is built from INSERT_TYPES in block-ops.js with the exact Markdown the Add a block menu inserts, so a new block type appears here on its own. "Variants" covers the other states each block can be in. Editable renders as the app's editor does (editable: true). View switchers on boards, calendars, cards, charts and galleries work.

6 Brand assets

Source: apps/notefriends/brand/*.svg. The 114 icons and symbols live in brand/icons/ with their own contact sheet.