Iconography
Source-defined Lucide meanings, sizes, geometry, semantic colours and accessible application.
Clear symbols, consistent meaning
JR Dream uses a curated outline family to support Architectural Minimalism with Technical Precision. Stable geometry, explicit labels and consistent meanings help people distinguish navigation, actions and feedback. Interface symbols never replace the complete JR Dream logo.
These are internally accepted working specifications, pending implementation testing and final company approval. Service and operational examples describe a proposed vocabulary, not evidence of business capabilities or existing software.
Source: Iconography System Exploration & Validation v1.0, pages 1 and 16–17.
Library, source version and meaning register
The source selects 40 Lucide icons, not the entire catalogue. This page renders genuine SVGs from the exact lucide-static 1.59.0 archive. The existing application retains lucide-react 0.468.0 and its current icon usage. These versions are distinct; this page does not establish a second global production icon system.
The original SVGs and full ISC licence, including the Feather-derived MIT notice, are retained alongside the scoped implementation. Commercial use is permitted under those notices; retain the full licence in source and asset distributions. No visible attribution line is required by the reviewed licence.
Use building-complex and trash in the source register. Do not substitute the older Building2 export, or treat aliases as separate meanings. Any future framework upgrade needs deliberate name, geometry, API and licence review.
Register previews use primary charcoal. Their role labels describe intended application colours, demonstrated separately below.
| Source icon | Meaning and context | Default size / role | Visible text and restriction |
|---|---|---|---|
building-complex | Property management Service / property | 32px / Primary | Required. Not ownership or a luxury claim. |
wrench | Facilities / maintenance Service / maintenance | 32px / Primary | Required. Label facilities versus repair context. |
bed-double | Accommodation Service / accommodation | 32px / Primary | Required. Not a hotel or booking claim. |
clipboard-list | Project consultancy Service / project | 32px / Primary | Required. Not proof of project tracking features. |
house | Home Main navigation | 20px / Primary | Required. Home only, not the property service. |
briefcase-business | Services Main navigation | 20px / Primary | Required. Distinguish service index from individual services. |
users-round | About Main navigation | 20px / Primary | Required. Could imply team; always label About. |
contact | Contact page Main navigation | 20px / Primary | Required. Page destination, not an individual record. |
menu | Open menu Navigation control | 24px / Primary | Exception. Icon-only requires an accessible Open menu name. |
arrow-left | Back Previous view / step | 20px / Action | Required. Swap direction for logical Back in RTL. |
arrow-right | Forward Next view / step | 20px / Action | Required. Swap direction for logical Forward in RTL. |
external-link | External destination Link suffix | 16px / Inherit | Link text. Keep orientation; disclose a new window separately. |
chevron-down | Expand / collapse Disclosure | 20px / Inherit | Trigger text. Not download; expose expanded state. |
x | Close Dialog / panel action | 24px / Primary | Exception. Accessible Close name; never deletion. |
| Source icon | Meaning and context | Default size / role | Visible text and restriction |
|---|---|---|---|
layout-dashboard | Dashboard Operational navigation | 20px / Primary | Required. Proposed context only. |
folders | Records collection Operational navigation | 20px / Primary | Required. Collection, not individual document. |
inbox | Requests Operational navigation | 20px / Primary | Required. Label Requests; not an email inbox here. |
chart-column | Reports Operational navigation | 20px / Primary | Required. No analytics capability claim. |
search | Search Search field / action | 20px / Muted | Field label. Icon-only submit needs an accessible Search name. |
list-filter | Filter Filter trigger | 20px / Primary | Required. Label applied state and clear-filter action. |
plus | Add Create action | 20px / Inherit | Required. Name the object, such as Add record. |
pencil | Edit Edit action | 20px / Inherit | Required. Repeated icon-only exceptions must name the record. |
trash | Delete Destructive action | 20px / Error | Required. Label Delete; confirmation / undo policy is deferred. |
download | Download File action | 20px / Inherit | Required. Name the file; no offline availability promise. |
upload | Upload File action | 20px / Inherit | Required. Not submit or send. |
settings | Settings Configuration | 20px / Primary | Required. Not generic maintenance; no feature claim. |
bell | Notifications Notification control | 20px / Primary | Required. Count / unread state needs accessible wording. |
| Source icon | Meaning and context | Default size / role | Visible text and restriction |
|---|---|---|---|
circle-check | Success Feedback / result | 20px / Success | Required. Only after a stated outcome is confirmed. |
info | Information Informational feedback | 20px / Information | Required. Do not imply verification. |
triangle-alert | Warning Attention needed | 20px / Warning | Required. Include reason and next action. |
circle-x | Error Failure feedback | 20px / Error | Required. Distinct from plain x / close. |
clock | Pending review Workflow status | 20px / Muted | Required. No countdown or SLA implication. |
folder-open | Empty collection Empty state | 32px / Muted | Required. Use No records wording; not failure. |
map-pin | Location Place / contact detail | 20px / Primary | Required. No unsupported exact address or GPS claim. |
clipboard-check | Inspection Operational concept | 24px / Primary | Required. Label inspection; not certification. |
file-text | Document Individual document | 20px / Primary | Required. Distinct from collection / records navigation. |
boxes | Asset inventory Operational concept | 24px / Primary | Required. Label assets; could otherwise imply shipping. |
list-checks | Tasks Operational concept | 24px / Primary | Required. Not project consultancy service shorthand. |
mail | Email Contact channel | 20px / Primary | Channel text. Verified email or explicit placeholder. |
phone | Telephone Contact channel | 20px / Primary | Channel text. Verified number or explicit placeholder. |
Role key: Primary uses --text-primary; Muted uses --text-secondary; Action uses --action-primary-background on light surfaces. Inherit uses the tested parent text colour. Status roles use their existing foreground/tint pairs. Inverse applications require a suitable light foreground. Exception means only the named patterns described below.
Source: Iconography System Exploration & Validation v1.0, pages 2, 5–7 and 14–17.
Source-defined sizes
Simple labelled link suffixes and supporting symbols only.
Standard navigation, actions and feedback.
Prominent controls and detailed operational concepts.
Labelled services and empty states.
Keep the complete 24 × 24 design canvas and proportions. Restrict 16px to simple, labelled supporting roles. Buildings, clipboard details, boxes and settings are denser at small sizes; use 24px or 32px for detailed business concepts. Increase size or use text if recognition is weak, without drawing a special small variant.
A standalone control retains a minimum var(--target-min) 48 × 48px target. A centred 24px glyph has approximately 12px breathing room per side. The glyph size is not the click target.
Source: Iconography System Exploration & Validation v1.0, pages 3–4 and 15.
Stroke and visual weight
| Property | Working specification |
|---|---|
| Canvas | viewBox 0 0 24 24; keep full proportions. |
| Outline | 2 SVG units at design size; round caps and joins; fill none. |
| Scaling | Uniform scaling, including strokes. No non-scaling-stroke override. |
| Primitives | Preserve internal dots and tiny supplied shapes; do not force-fill glyphs. |
| Separation | SVG stroke geometry is independent of interface border widths and corner radii. |
| Rendered canvas | Source stroke width |
|---|---|
| 16px | about 1.33px |
| 20px | about 1.67px |
| 24px | 2px |
| 32px | about 2.67px |
These are geometric widths, not constant 2 CSS-pixel strokes at every size. Numerical contrast does not prove that thin strokes remain clear after rasterisation.
Source: Iconography System Exploration & Validation v1.0, pages 3–4 and 8.
Optical balance and label alignment
Labelled service specimen
Labelled service specimen
Equal canvases create stable alignment, not identical visible silhouettes. Keep native optical positioning: do not stretch the bed, thicken only the building or shift individual nodes to equalise bounds. Leading icons use an 8px logical gap via --space-08, alongside the first line of wrapped labels. Centre the pair inside a flexible-height button wrapper.
Optical balance does not introduce a new spacing scale or authorise arbitrary per-icon offsets. The examples preserve source geometry.
Source: Iconography System Exploration & Validation v1.0, pages 3, 10–11 and 14.
Colour roles, contrast and states
Inline SVG strokes inherit semantic currentColor. Use charcoal on light surfaces, muted secondary for supporting metadata and white inside primary orange actions. Primary hover and pressed fills use --action-primary-hover and --action-primary-pressed; the white glyph and its meaning stay stable.
| Pair | Existing tokens and resolved values | Source ratio | Meaningful icon check |
|---|---|---|---|
| Standard / white | --text-primary #252827--surface-primary #FFFFFF | 14.88:1 | Meets 3:1 numerical threshold |
| Standard / warm white | --text-primary #252827--surface-secondary #F7F4ED | 13.54:1 | Meets 3:1 numerical threshold |
| Muted / white | --text-secondary #635F57--surface-primary #FFFFFF | 6.35:1 | Meets 3:1 numerical threshold |
| Muted / warm white | --text-secondary #635F57--surface-secondary #F7F4ED | 5.78:1 | Meets 3:1 numerical threshold |
| Action / white | --action-primary-background #B83D16--surface-primary #FFFFFF | 5.65:1 | Meets 3:1 numerical threshold |
| Inverse / charcoal | --text-inverse #FFFFFF--surface-inverse #252827 | 14.88:1 | Meets 3:1 numerical threshold |
| Disabled / stone | --state-disabled-text #635F57--state-disabled-background #EFEAE0 | 5.30:1 | Meets 3:1 numerical threshold |
| Success / tint | --status-success #22633F--status-success-surface #EDF7F0 | 6.55:1 | Meets 3:1 numerical threshold |
| Information / tint | --status-information #245B8A--status-information-surface #EDF4FC | 6.45:1 | Meets 3:1 numerical threshold |
| Warning / tint | --status-warning #855500--status-warning-surface #FFF6DD | 5.91:1 | Meets 3:1 numerical threshold |
| Error / tint | --status-error #B42318--status-error-surface #FFF0EE | 5.93:1 | Meets 3:1 numerical threshold |
| Error / charcoal | --status-error #B42318--surface-inverse #252827 | 2.26:1 | Below 3:1; restricted |
| Decorative divider / white | --border-default #DED8CC--surface-primary #FFFFFF | 1.42:1 | Below 3:1; restricted |
| Brand orange / white | --brand-accent-primary #F15E2A--surface-primary #FFFFFF | 3.29:1 | Meets 3:1 numerical threshold |
Independent implementation recalculation matches all 14 source ratios to two decimals. These numerical checks do not establish comprehensive WCAG conformance. Meaningful non-text cues target 3:1 against adjacent colours; normal text retains its own 4.5:1 requirement.
- Decorative brand orange passes 3:1 on white but fails normal-text contrast. Use it for restrained decorative emphasis, not as the automatic icon colour or small white labels.
- Error red alone fails on charcoal. Use the existing light error panel with an explicit message.
- Decorative separators are not meaningful icon cues or functional control boundaries.
- Inactive controls are exempt from the non-text criterion; JR Dream still prefers the readable disabled pair, without whole-control opacity.
The source selected recipe uses orange icons on subtle orange fill, with written/semantic state. The accepted documentation sidebar remains solid accessible orange with white text/icons, 4px radius, no marker or selected outline, aria-current="page", existing focus and minimum targets. That shell exception is not a general corporate website selection rule.
Source: Iconography System Exploration & Validation v1.0, pages 8–9 and 15.
Documentation interface specimens
These excerpts demonstrate source-supported combinations. They are not production-ready components, functioning business services or an approved application workflow.
Service metaphor specimen. Approved service copy is still required.
Service metaphor specimen. Approved service copy is still required.
Service metaphor specimen. Approved service copy is still required.
Service metaphor specimen. Approved service copy is still required.
Documentation controls only. Adding a record changes a local count; no data is saved. The named menu button toggles the demonstration panel.
Demonstration panel. This is an inline disclosure, not the documentation navigation or a modal dialog.
Static print representation of interactive specimens:
Read-only visual specimen; no search is performed.
| Reference | Written status | Action vocabulary (static) |
|---|---|---|
| JRD-024 | Pending review | Edit record JRD-024 |
Static feedback is not announced as a live event. The Add demonstration record control above confirms a real local outcome through a success shape, text and polite status announcement. No notification dot, hue or glyph alone carries state.
Source: Iconography System Exploration & Validation v1.0, pages 5–7, 9 and 11–12.
Correct and incorrect applications
| Use | Avoid |
|---|---|
| One curated outline family with visible, role-specific wording. | Mixed families, manually redrawn details or a building glyph as the JR Dream logo. |
| Native proportions and scaled 2-unit outlines. | Stretching, decorative rotation, gradients, glyph shadows or forcing fill for selection. |
| 32px labelled building-complex for the property service. | House as property service, or an unverified visually similar replacement. |
| Wrench for labelled facilities / maintenance. | Settings gear as generic maintenance; changing metaphors between card and navigation. |
| Plain x for Close; circle-x plus explicit error wording for failure. | Using Close for Delete, or status colour as the only meaning. |
| Increase size or retain text when a detailed glyph is hard to recognise. | Thickening selected paths or creating a custom 16px variant. |
Source: Iconography System Exploration & Validation v1.0, pages 3–7 and 9–12.
Names, targets and keyboard access
With equivalent visible wording, hide the redundant SVG using aria-hidden="true" and focusable="false". If a standalone informational SVG is essential, use role="img" with an accessible name, such as an associated title; prefer visible text. Never announce both an image and an equivalent repeated label.
Icon-only exceptions use real buttons with accessible action names. A tooltip may supplement the name. Keep at least 48 × 48px targets, 8px between neighbouring targets, flexible heights and visible focus. Repeated actions should name their object; any later justified icon-only exception must name the record.
Preserve the local 2px focus ring plus 2px surface-coloured gap; inverse focus uses --focus-inverse on charcoal. Do not clip focus or remove required control boundaries. Selection needs semantic current/selected state and written or equivalent meaning. The shell retains its accepted exception above.
The source’s accessibility conventions appear on pages 8–10 and reference WCAG non-text contrast on page 17. The demonstrations apply those conventions; automated DOM and contrast checks do not replace screen-reader, native high-contrast, user recognition or comprehensive accessibility testing.
Source: Iconography System Exploration & Validation v1.0, pages 8–10 and 15–17.
Responsive, bilingual and physical contexts
Retain the documented size roles and allow labels and wrappers to grow. A narrower viewport does not justify shrinking detailed service symbols to 16px or compressing a target to its glyph. Use logical placement, an 8px gap and first-line alignment. Inter and IBM Plex Sans Arabic remain the established type families.
For RTL logical Back, choose arrow-right; for Forward, choose arrow-left. Resolve names semantically, not with a global SVG flip. External-link retains its orientation. Download, upload and chevron-down retain vertical direction; disclosures expose aria-expanded. Buildings, beds, tools, documents, statuses and charts retain native geometry. Technical English identifiers here are direction-isolated; no Arabic translation or sample prose is supplied.
| Context | Working recipe and limitation |
|---|---|
| Presentation service | 24pt square beside EN 22pt / AR 24pt body; the 2-unit stroke becomes 2pt. |
| Presentation sequence | Labelled Document / Inspection / Tasks using file-text / clipboard-check / list-checks. A sequence example, not a JR Dream workflow claim. |
| Document contact | 12pt square beside EN 11pt / AR 12.5pt body. Label channels and use verified values or explicit placeholders. |
| Export | Prefer vectors. If SVG import fails, use a high-resolution transparent PNG at intended physical size and inspect after import. |
| Validation | CSS pixels are not physical units. Native slide/document import and actual-size print/projector proofs remain pending. |
Source: Iconography System Exploration & Validation v1.0, pages 10–14 and 16.
Developer and asset governance reference
Import only explicit approved meanings. This page reads its 40 verified assets at build time and alters only rendered size/accessibility attributes, retaining native paths and geometry. Originals, archive integrity and per-file hashes are recorded locally. Do not migrate existing React imports implicitly or mix source releases inside a new production inventory.
.icon-action {
display: inline-flex;
align-items: center;
gap: var(--space-08);
min-block-size: var(--target-min);
padding: var(--space-12) var(--space-16);
border-radius: var(--radius-control);
color: var(--action-primary-text);
background: var(--action-primary-background);
}
.icon-action > svg { flex: 0 0 auto; }
.icon-action > span { min-inline-size: 0; overflow-wrap: anywhere; }
.icon-action:hover { background: var(--action-primary-hover); }
.icon-action:active { background: var(--action-primary-pressed); }
/* For wrapped labels: top-align the pair and align the icon with
the first line. Keep the 8px gap, not arbitrary node shifts. */
.label-pair { display: flex; align-items: flex-start; gap: var(--space-08); }
.icon-action:focus-visible {
outline: var(--focus-width) solid var(--focus-ring);
outline-offset: var(--focus-offset);
box-shadow: 0 0 0 var(--focus-offset) var(--focus-gap);
}
@media (forced-colors: active) {
.icon-action:focus-visible { outline-color: Highlight; box-shadow: none; }
}<!-- Use the verified source SVG, not a manually redrawn path.
Set its outer width/height to 20; retain viewBox="0 0 24 24",
fill="none", stroke="currentColor", stroke-width="2" and round
caps/joins. Do not set vector-effect="non-scaling-stroke". -->
<button type="button" class="icon-action">
<!-- Verified plus.svg inline; aria-hidden="true" focusable="false" -->
<span>Add record</span>
</button>
<!-- Icon-only: put aria-label="Open menu" on the real button.
A tooltip is supplementary, never the sole accessible name. -->
<!-- Meaningful standalone SVG: role="img" and an accessible name.
Prefer visible text; never duplicate an equivalent label. -->// Semantic mapping, not a global transform on all SVGs.
const back = direction === "rtl" ? "arrow-right" : "arrow-left";
const forward = direction === "rtl" ? "arrow-left" : "arrow-right";
// external-link, download, upload and direction-neutral symbols stay intact.
// Load only verified, explicitly selected source assets.
/* A language-specific container also needs its appropriate lang attribute. */
.bilingual-row { display: flex; gap: var(--space-08); text-align: start; }
.bilingual-row > span { min-inline-size: 0; }
/* Isolate mixed identifiers with <bdi dir="ltr">JRD-024</bdi>.
Set dir="rtl" on the actual Arabic container, once approved copy exists. */Set --focus-ring and --focus-gap to the immediate local surface, including light content inside an inverse parent. Inline SVG supports inherited colour; an external image does not inherit parent currentColor into its SVG. Use a prepared export with meaningful alternative text, or empty alternative text for redundant imagery.
Future Figma masters use names such as Icon/Lucide/building-complex, retain 24 × 24 frames and original 2-unit strokes, and bind semantic colour variables. Scale vectors and strokes together; resizing only the frame is insufficient. One owner should review changes to meanings, all four sizes, contrast, labels, RTL and licence notices. No Figma library is created here.
For the future corporate website, deliberately select and pin compatible source/framework versions, retain notices and log mapping changes. The source’s proposed asset organisation is governance guidance, not an instruction to create another global icon utility in this repository.
Source: Iconography System Exploration & Validation v1.0, pages 2, 14–15 and 17.
Validation and approval status
The source study reports 40 genuine SVGs and 320 placements across four sizes and two surfaces, 14 colour calculations and static bilingual layout checks. That evidence belongs to the source study, not this website’s browser testing.
Task-specific checks and results are recorded in docs/stage-02.2f-implementation.md. The working source’s label vocabulary, service metaphors and meaning register remain subject to implementation testing and final company approval.
- Actual-screen recognition at standard and high pixel density remains pending.
- Competent Arabic/native-reader review, culturally appropriate meanings and real bilingual content remain pending. No unreliable PDF Arabic sample was reused.
- Real devices, assistive technology, native forced colours, text-spacing overrides and browser zoom/reflow require further testing.
- Figma import, physical print/projector output and final company approval remain pending.
Photography, graphics and architectural motifs have separate source PDFs and remain outside this stage. The original logo and all prior foundations are preserved. Documentation specimens do not establish production component readiness.
Review colour roles and geometry and focus guidance before reuse.
Source: Iconography System Exploration & Validation v1.0, pages 16–17.