Reference
Exporting
Handing the project over, and turning a drawing into a finished asset.
Saving and exporting are different acts, and the buttons are deliberately separate. Save keeps the working files this app reopens. Export produces something to hand over — and what “something” means depends entirely on who is receiving it.
Everything written is real CSS with real tokens, because there was never a build step to strip out. The three arrangements differ only in how the same output is laid on disk.
The project
Export, beside Save. Everything goes into export/ inside the project.
| One page | a single .html with the whole stylesheet inside it |
| Three files | index.html, styles.css, globals.css, linked as they are now |
| Components | one folder per block — hero/hero.html and hero/hero.css — plus the whole sheet, globals.css, and site.css |
And, under As a picture, the same page as something to look at:
| vector, one page as tall as the design. Text stays selectable | |
| PNG | the page at twice the size, with its background |
| JPG | the same picture, smaller file, no transparency |
One page
Everything in one file, for a client or a link. The <style> block sits at the
foot of the body, so the markup is the first thing anybody opening it reads.
A picture of the page
For a client, a deck, a message — the thing you send when the person receiving it is not going to open a folder.
It is rendered, not screenshotted. The canvas is a scaled, panned frame with selection chrome drawn over it, and a picture of that is a picture of the app. What gets rendered is the same markup the one-file export writes, loaded fresh and given time to settle, so what you get is the page rather than the tool.
The width is the one on the scrubber. There is no paper size and no margin, for the same reason the artboard has none: a design on A4 with a two-centimetre border is not the design. So a picture taken at 720 is the page at 720 — which is the honest way to show somebody that it holds up narrow.
Two things it does quietly. It waits for the fonts and the pictures and then measures until the height stops changing, because a webfont resolves on its own timetable and a page measured too early is the fallback’s metrics rather than yours. And it fills the hairline that some renderers draw between two touching full-bleed sections — a transparent border pulled back by an equal margin, so nothing moves. Both belong to the picture: neither reaches the HTML and CSS you hand over.
Components
A folder per block, which is the shape Boosh CMS and FEWD Studio both expect: a page is a flat stack of sections and each section is a component.
Which rules go where is BEM, read literally — .hero__title belongs to hero
and nothing has to be guessed. The match is on the whole first class, never a
prefix: .section-2 starts with the text .section and is a different
block, and splitting on prefixes would put one section’s rules into another’s
file and leave neither complete.
The harder case is a rule named after something else — a .stat-box sitting
inside the hero. BEM says nothing about where it is used, so:
- used by one section → it goes in that section’s file
- used by more than one → genuinely shared, so
site.css - used by none — a reset, a utility, something written by hand →
site.css
Because the folders have to add up to the page. A hero/hero.css that does not
contain what hero needs is not a component.
Assets
The .svg in assets/graphics is the working file — the one the artboard
reopens and edits. An export is a finished thing for somebody else to use.
They are kept apart on purpose. A folder holding both is a folder where nobody
can tell which logo.svg is the one to edit, and the answer six months later is
whichever has the later date, which is not an answer.
| SVG | the drawing itself. The only export that keeps your tokens |
| vector, for print. Curves stay curves, text stays text | |
| PNG | pixels, with transparency, at 1× to 4× |
| WebP | the same, and much smaller |
| JPG | pixels, no transparency — so it gets a white ground rather than a black one |
The PDF is made by Chromium itself, printing the drawing offscreen — a real vector PDF rather than a picture of one.
A file you saved earlier
Every row in the library has its own Export, and there is an Export all for the folder you are looking at — which is the whole reason an icon set is a set.
Neither opens the drawing. Opening it would throw away whatever is on the artboard, and exporting twenty icons should not cost you the twenty-first you were in the middle of.
The library lists .svg only, because those are the ones you can open and edit.
An exported PNG is a finished file, not a drawing, and it belongs in the folder
rather than in the list.
A raster export paints the colours you can see. Tokens are resolved first,
because a var() inside an image cannot reach the page’s custom properties: the
SVG becomes its own document with its own root and every fill would fall back to
its saved snapshot. Right for a file on disk, wrong for an export of what is on
screen.
What an export is not, yet
The export sits inside the project and points at its assets — paths are
rewritten to reach them, one level up from export/ or two from a component
folder. It is not a self-contained bundle you can move on its own.
The single-file export with assets inlined — the one to send a client with nothing hosted — is still to come.