Status colour & approval icons
Four generic status hues, and four approval icons that carry what a property actually needs.
Status colour
Success: Success
Information: Information
Caution: Caution
Error: Error
Code
<GdAlert tone="success" title="Packaged">…</GdAlert>
<GdAlert tone="info" title="For your information">…</GdAlert>
<GdAlert tone="caution" title="Check this">…</GdAlert>
<GdAlert tone="danger" title="It broke">…</GdAlert>--gd-success#1B8A4C#8FBF87success fill — dots, icon tiles, progress bars. Never set type in it AA-nontext on --gd-surface
--gd-success-ink#15703D#8FBF87the only success value that may carry text. Re-derived for dark rather than lightened — a tint that reads as caution on white reads as sickly on charcoal AA on --gd-surface
--gd-success-wash#F1F7F2color-mix(in oklab, #8FBF87 14%, #17181E)the success ground — alerts, callouts, washed chips
--gd-success-tint#CFE3D5color-mix(in oklab, #8FBF87 34%, #17181E)the border of a success wash
--gd-success-on-solid#FFFFFF#14151Athe GLYPH on a filled success tile. Non-text: these tiles carry a 15px icon, never prose — success at 4.4:1 would not clear AA for a sentence AA-nontext on --gd-success
--gd-info#2F6FB0#7FB3E6info fill — dots, icon tiles, progress bars. Never set type in it AA-nontext on --gd-surface
--gd-info-ink#285F96#7FB3E6the only info value that may carry text. Re-derived for dark rather than lightened — a tint that reads as caution on white reads as sickly on charcoal AA on --gd-surface
--gd-info-wash#EDF3FAcolor-mix(in oklab, #7FB3E6 14%, #17181E)the info ground — alerts, callouts, washed chips
--gd-info-tint#C5DAEEcolor-mix(in oklab, #7FB3E6 34%, #17181E)the border of a info wash
--gd-info-on-solid#FFFFFF#14151Athe GLYPH on a filled info tile. Non-text: these tiles carry a 15px icon, never prose — success at 4.4:1 would not clear AA for a sentence AA-nontext on --gd-info
--gd-caution#A8850F#DDB63Fcaution fill — dots, icon tiles, progress bars. Never set type in it AA-nontext on --gd-surface
--gd-caution-ink#8A6D09#D9B34Athe only caution value that may carry text. Re-derived for dark rather than lightened — a tint that reads as caution on white reads as sickly on charcoal AA on --gd-surface
--gd-caution-wash#FCF6E6color-mix(in oklab, #DDB63F 14%, #17181E)the caution ground — alerts, callouts, washed chips
--gd-caution-tint#EBD9A2color-mix(in oklab, #DDB63F 34%, #17181E)the border of a caution wash
--gd-caution-on-solid#FFFFFF#14151Athe GLYPH on a filled caution tile. Non-text: these tiles carry a 15px icon, never prose — success at 4.4:1 would not clear AA for a sentence AA-nontext on --gd-caution
--gd-danger#C43D3D#E97B7Bdanger fill — dots, icon tiles, progress bars. Never set type in it AA-nontext on --gd-surface
--gd-danger-ink#A83232#E97B7Bthe only danger value that may carry text. Re-derived for dark rather than lightened — a tint that reads as caution on white reads as sickly on charcoal AA on --gd-surface
--gd-danger-wash#FCEFEFcolor-mix(in oklab, #E97B7B 14%, #17181E)the danger ground — alerts, callouts, washed chips
--gd-danger-tint#EFCACAcolor-mix(in oklab, #E97B7B 34%, #17181E)the border of a danger wash
--gd-danger-on-solid#FFFFFF#14151Athe GLYPH on a filled danger tile. Non-text: these tiles carry a 15px icon, never prose — success at 4.4:1 would not clear AA for a sentence AA-nontext on --gd-danger
Approval icons
No approval needed
Nothing to lodge and nobody to ask. Keep the work inside the published limits and you may start.
e.g. A garden shed under 10 m² behind the building line
Building approval
A private building certifier confirms the structure is safe and engineered to the National Construction Code. Nobody assesses the design.
e.g. A deck more than a metre off the ground
Council approval
The local government assesses the proposal against its planning scheme and decides. A formal application, with fees and a decision period.
e.g. A second dwelling on a lot in a low-density zone
Public notice
A notice goes on the fence and in the paper, and neighbours have a legal right to make submissions the council must consider.
e.g. A use the zone does not anticipate
State approval
A state agency is a referral or assessment authority — because of a road, a waterway, a heritage listing or a state interest.
e.g. A crossover onto a state-controlled road
Layering
Code
<GdApprovalStack :required="[]" />
<GdApprovalStack :required="['building']" />
<GdApprovalStack :required="['building', 'council']" />
<GdApprovalStack :required="['building', 'council', 'public', 'state']" />Inline
Code
<GdApprovalStack inline :required="['building', 'council']" />Rules
- Keep the fixed order, always: building → council → public notification → state. It is not a sort key.
- Build a stack with
stackFor(). It is the only sanctioned way to make one. - Never stack "no approval". It is the absence of the others, shown alone.
- Never colour an approval icon. The stack must read in pure greyscale; the words beside it carry the verdict.
- Never overlap the tiles. Side by side with a 4px gap, so every authority stays fully legible.
- Never set type in a status solid. Each hue's
-inkis the only member of the quartet that may carry a sentence. - Take the whole quartet or none of it. Solid, ink, wash and tint travel together.
- Never let a status hue mean a planning outcome. A red toast is an error, not a verdict.
- Lead with plain English. A statutory term belongs beside it as a chip, never instead of it.
Behavior & Anatomy
Colour is decoupled from content
The obvious system encodes the planning outcome in HUE: green for accepted development, red for impact assessable. It holds until colour has to do anything else. A failed network request drawn in the app's error red then reads as an impact-assessable verdict, and a success toast reads as a planning approval. Colour would be carrying content, so it could not also carry status, and every new status would have to be argued against the ramp.
So the two are separate. Colour is generic and means what it means in any product. What approvals a property needs is CONTENT, and content is carried by these four icons plus the words beside them. That separation is what buys the ability to show a red toast without it reading as an impact-assessable verdict.
Why the quartet travels together
Taking the solid without the ink is how type ends up set in a 4:1 fill.
Caution is the one every system gets wrong exactly once. #C9A21A on white is 2.41:1 — a caution dot drawn in it is a graphic you cannot reliably perceive, which WCAG 1.4.11 does not allow for a mark that carries meaning. The darker #A8850F the design already used for its filled tile is promoted to BE the caution solid, so the failing value has no role left to leak into; #C9A21A survives only as --gd-editorial-caution-accent, a callout's left rule, where the heading ink beside it carries the meaning.
Why the icons are never coloured
An approval stack must be legible in pure greyscale, which is the accessibility story and the honesty story at once: nobody can mistake a colour they cannot see for a verdict.
Why the order is fixed
Building → council → public notification → state is not a sort key. The stack reads left to right as "and then", so re-ordering it changes what it claims about the sequence a person faces. The four authorities stack because approvals stack in real life.
In the inline form the HIGHEST authority wins the slot, because it is the one that decides how hard the project is.