Make the next action and its consequence unmistakable.
A complete decision, one item at a time.
Mark each area after reviewing its examples. Your choices and notes stay on this device until you export or clear them.
A clear identity for every experience.
A living reference that turns the approved mark into one precise language for interfaces, data, invoices, print and communication.
Foundations
The decisions that keep every screen, document and message recognisably DPOS.
Use precise states, readable totals and calm feedback.
One visual grammar from interface to invoice.
Reduce decoration; preserve useful density.
Clear business operation, from point of sale to decision.
Logo system
Use the approved source artwork exactly as supplied. Never recreate the name beside it.
Clear space
Keep one icon-aperture unit on every side.
Minimum size
Use the icon alone below the minimum full-lockup size.
Alignment
Align to a real grid edge, never to the visual centre of a random container.
The logo is contained, centred and never cropped.
.dpos-safe-logo > img {
position: absolute; inset: 12.5%;
width: 75%; height: 75%;
object-fit: contain;
object-position: center;
}
Do
- Use official SVG assets.
- Preserve proportions and clear space.
- Place on quiet, high-contrast surfaces.
Don't
- Do not recolor, stretch, crop or rotate.
- Do not add shadow, outline or glow.
- Do not repeat DPOS as synthetic text.
Color system
The logo teal is the brand anchor. Neutrals carry information; semantic colors carry meaning only.
Reserve for real status and feedback.
Reserve for real status and feedback.
Reserve for real status and feedback.
Reserve for real status and feedback.
Orange earns attention only when a commercial decision matters.
Teal remains the operational primary. Conversion orange is reserved for trial, purchase, upgrade, subscription and demo actions.
Operational primary
Save, create, confirm, navigate and complete everyday work.
Commercial conversion
Use once in a decision zone for the clearest revenue action.
Use for
- Buy now, upgrade a plan or subscribe.
- Start a trial or book a product demo.
- At most one orange action in each decision zone.
Never use for
- Warnings, destructive actions or validation errors.
- Save, create and routine navigation actions.
- Multiple competing buttons in one viewport.
Contrast checker
Body text must reach 4.5:1; large text and non-text UI must reach 3:1.
Typography
Each selected language is shown in its approved default font while operational numbers remain stable.
Manrope
Aa Bb Cc Dd Ee Ff Gg
Smart operations start with one clear decision.
0123456789 · AED 12,450.00
Test the exact words before approval
The preview follows the selected language, direction and approved default font.
Smart operations start with one clear decision.
Weights: 400 body · 500 controls · 600 headings · 700 displayعنوان بارز
48 / 56700عنوان الصفحة
40 / 48700عنوان القسم
30 / 40700عنوان فرعي
22 / 30600نص أساسي واضح للقراءة المستمرة.
16 / 27400توضيح وبيانات مساندة
14 / 22400تسمية قصيرة
12 / 18500AED 12,450.00
Keep currency and value isolated LTR.25 Aug 2026 · 2026/08/25
Use one format per context.INV-2026-00124
Never mirror codes or serials.Layout & geometry
A predictable geometry for dense operational interfaces and calm communication.
8 px spacing
Radius
Elevation
24 px gutters · 24 px page inset · maximum content width 1440 px.
Open-source icon library
Lucide provides a consistent, broad and tree-shakeable system for commerce, inventory, finance and platform workflows.
No matching icon in this curated set.
States
Do
- Pair unfamiliar icons with text.
- Keep one meaning per icon.
- Use color only to reinforce state.
Don't
- Do not mix icon families.
- Do not stretch or fill outline icons.
- Do not mirror icons that carry direction-independent meaning.
Components & states
Reusable interface families with complete interaction, validation, loading and permission states.
Buttons
Minimum height 44 px · 16 px horizontal inset · one primary action per region.
Fields & validation
A label is always visible. Error text explains the repair, not only the failure.
Selection & navigation
Selected state is communicated by shape, label and color — never color alone.
Status & feedback
Status is explicit, persistent when consequential, and paired with a useful next action.
Layers & transient UI
Menus, tooltips, drawers and dialogs preserve context and keyboard control.
This action cannot be undone. Delete invoice INV-00124?
Reusable package
Six governed families cover actions, forms, feedback, data, shell and overlays across web, Flutter, email and print.
Seventeen manager-approved interface references · no runtime dependency.Data & operations
Tables are the primary operational surface: readable, sortable, keyboard-safe and responsive.
| Invoice number ↓ | Customer | Date | Status | Total | Paid | Balance | Actions | |
|---|---|---|---|---|---|---|---|---|
| INV-2026-00124 | Emerald Market | 25/08/2026 | Paid | 12,450.00 AED | 12,450.00 AED | 0.00 AED | ||
| INV-2026-00123 | Gulf Technology | 24/08/2026 | Partial | 8,750.00 AED | 5,000.00 AED | 3,750.00 AED | ||
| INV-2026-00122 | North Trading | 23/08/2026 | Overdue | 15,300.00 AED | 0.00 AED | 15,300.00 AED | ||
| INV-2026-00121 | Rashed Group | 22/08/2026 | Draft | 5,250.00 AED | 0.00 AED | 5,250.00 AED | ||
| INV-2026-00120 | Union Factory | 21/08/2026 | Refunded | 9,800.00 AED | 9,800.00 AED | 0.00 AED | ||
| INV-2026-00119 | Rayan Services | 20/08/2026 | Paid | 3,200.00 AED | 3,200.00 AED | 0.00 AED |
Full table, tools and bulk actions.
Priority columns; details on demand.
- Customer
- Emerald Market
- Total
- 12,450.00 AED
Key-value rows, never an unstructured card.
No invoices yet.
No match for the current filters.
Preserve table geometry.
Data could not be loaded.
Your role cannot view this data.
Showing the last safe snapshot.
Data visualisation system
Reusable charts with context, comparison, accessible labels, tooltips and clear decisions—not decoration.
Revenue is 8.7% above plan, led by point-of-sale growth during the evening peak.
- Best period
- Thu, 6–9 PM
- Opportunity
- Average basket
- Action
- Review bundles
Revenue performance
Revenue by channel
- Point of sale48%
- Online store27%
- Invoices17%
- Other8%
Top product categories
Sales intensity
Order fulfilment
- Completed 72%
- Processing 19%
- Delayed 9%
Sales through the day
Payment methods
Branch comparison
| Branch | Revenue | Orders | Conversion | Trend |
|---|---|---|---|---|
| Dubai Mall | AED 82.4K | 364 | 42.8% | +14.2% |
| Abu Dhabi Central | AED 71.8K | 318 | 39.6% | +9.7% |
| Sharjah City | AED 58.6K | 279 | 37.1% | +5.4% |
| Online store | AED 49.2K | 287 | 31.9% | -1.2% |
Currency identity
ISO 4217 codes are canonical data; approved symbols are presentation. Every financial value remains directionally isolated.

The new symbol is the default display mark for AED.
Use the official artwork without redrawing it. Store and exchange the value with AED and ISO numeric code 784.
Keep SAR and numeric code 682 in data, exports and ambiguous contexts.
| Currency | ISO 4217 | Numeric | Approved symbol | Minor units | Display example | Accounting example |
|---|---|---|---|---|---|---|
| United Arab Emirates Dirhammiddle-east | AED | 784 | ![]() |
2 | 1,234.56 |
AED 1,234.56 |
| Saudi Riyalmiddle-east | SAR | 682 | 2 | 1,234.56 | SAR 1,234.56 | |
| Qatari Riyalmiddle-east | QAR | 634 | ر.ق | 2 | ر.ق1,234.56 | QAR 1,234.56 |
| Kuwaiti Dinarmiddle-east | KWD | 414 | د.ك | 3 | د.ك1,234.560 | KWD 1,234.560 |
| Bahraini Dinarmiddle-east | BHD | 048 | د.ب | 3 | د.ب1,234.560 | BHD 1,234.560 |
| Omani Rialmiddle-east | OMR | 512 | ر.ع | 3 | ر.ع1,234.560 | OMR 1,234.560 |
| Jordanian Dinarmiddle-east | JOD | 400 | د.أ | 3 | د.أ1,234.560 | JOD 1,234.560 |
| Egyptian Poundmiddle-east | EGP | 818 | ج.م | 2 | ج.م1,234.56 | EGP 1,234.56 |
| United States Dollarglobal | USD | 840 | $ | 2 | $1,234.56 | USD 1,234.56 |
| Euroglobal | EUR | 978 | € | 2 | €1,234.56 | EUR 1,234.56 |
| Pound Sterlingglobal | GBP | 826 | £ | 2 | £1,234.56 | GBP 1,234.56 |
| Swiss Francglobal | CHF | 756 | CHF | 2 | CHF1,234.56 | CHF 1,234.56 |
| Canadian Dollarglobal | CAD | 124 | CA$ | 2 | CA$1,234.56 | CAD 1,234.56 |
| Australian Dollarglobal | AUD | 036 | A$ | 2 | A$1,234.56 | AUD 1,234.56 |
| Indian Rupeeasia | INR | 356 | ₹ | 2 | ₹1,234.56 | INR 1,234.56 |
| Pakistani Rupeeasia | PKR | 586 | ₨ | 2 | ₨1,234.56 | PKR 1,234.56 |
| Chinese Yuanasia | CNY | 156 | ¥ | 2 | ¥1,234.56 | CNY 1,234.56 |
| Japanese Yenasia | JPY | 392 | ¥ | 0 | ¥1,235 | JPY 1,235 |
| Philippine Pesoasia | PHP | 608 | ₱ | 2 | ₱1,234.56 | PHP 1,234.56 |
| New Zealand Dollarglobal | NZD | 554 | NZ$ | 2 | NZ$1,234.56 | NZD 1,234.56 |
| Singapore Dollarasia | SGD | 702 | S$ | 2 | S$1,234.56 | SGD 1,234.56 |
| Hong Kong Dollarasia | HKD | 344 | HK$ | 2 | HK$1,234.56 | HKD 1,234.56 |
| South Korean Wonasia | KRW | 410 | ₩ | 0 | ₩1,235 | KRW 1,235 |
| Turkish Liramiddle-east | TRY | 949 | ₺ | 2 | ₺1,234.56 | TRY 1,234.56 |
| South African Randglobal | ZAR | 710 | R | 2 | R1,234.56 | ZAR 1,234.56 |
| Brazilian Realglobal | BRL | 986 | R$ | 2 | R$1,234.56 | BRL 1,234.56 |
| Mexican Pesoglobal | MXN | 484 | MX$ | 2 | MX$1,234.56 | MXN 1,234.56 |
| Swedish Kronaglobal | SEK | 752 | kr | 2 | kr1,234.56 | SEK 1,234.56 |
| Norwegian Kroneglobal | NOK | 578 | kr | 2 | kr1,234.56 | NOK 1,234.56 |
| Danish Kroneglobal | DKK | 208 | kr | 2 | kr1,234.56 | DKK 1,234.56 |
| Polish Zlotyglobal | PLN | 985 | zł | 2 | zł1,234.56 | PLN 1,234.56 |
| Thai Bahtasia | THB | 764 | ฿ | 2 | ฿1,234.56 | THB 1,234.56 |
| Indonesian Rupiahasia | IDR | 360 | Rp | 2 | Rp1,234.56 | IDR 1,234.56 |
| Malaysian Ringgitasia | MYR | 458 | RM | 2 | RM1,234.56 | MYR 1,234.56 |
34 supported currencies
ISO 4217
Persist alpha and numeric codes; never persist a visual glyph as identity.
Direction isolation
Wrap amounts in bdi or an explicit LTR run inside RTL content.
Ambiguous symbols
Use ISO beside $, ¥ and kr whenever context can contain multiple currencies.
Authoritative sources
Identity in real applications
The same logo, hierarchy and states must feel native on web, mobile, desktop and print.
Good morning, Ahmed
Full wordmark in the permanent shell; compact icon only when the navigation collapses.
Icon-first header, 44 px targets and one unmistakable primary action.
- Coffee beans ×2
- 90.00
- Travel tumbler
- 72.50
- Reusable bag
- 6.00
Total176.93 AEDQR
High-contrast mark, black-safe totals and no color-dependent meaning.
Use the icon alone, optically centred with a quiet safe zone on every platform.
Documents & invoices
A unified document language for tax invoices, receipts, quotations, credit notes and operational print.
Tax invoice
TAX INVOICERiyadh, Saudi Arabia
TRN 310987654300003
accounts@ditcpos.com
Dubai, United Arab Emirates
TRN 100234567800003
purchasing@emerald.example
| # | Description | Qty | Unit price | VAT | Total |
|---|---|---|---|---|---|
| 1 | Point of sale subscription | 1 | 8,000.00 | 400.00 | 8,400.00 |
| 2 | Inventory onboarding service | 1 | 3,500.00 | 175.00 | 3,675.00 |
| 3 | Thermal receipt configuration | 1 | 500.00 | 25.00 | 525.00 |
Payment is due within 14 days. Quote the invoice number with your transfer.
- Subtotal
- 12,000.00 AED
- VAT 5%
- 600.00 AED
- Discount
- 150.00 AED
- Total
- 12,450.00 AED
- Paid
- 12,450.00 AED
- Balance
- 0.00 AED
Communication
Transactional email, notifications and brand voice follow the same hierarchy and semantic discipline.
Your invoice was issued successfully
Hello, your tax invoice is ready. Review the details and download the approved copy using the button below.
View invoice- Invoice
- INV-2026-00124
- Total
- 12,450.00 AED
- Status
- Paid
Clear
“Enter an amount greater than zero.”
Not: “Invalid input.”Calm
“We could not save this yet. Your entries are still here.”
Explain impact before blame.Actionable
“Reconnect, then try again.”
Always provide a useful next step.Accessibility & RTL
Inclusive behaviour is part of the identity contract, not a final visual check.
Contrast
AA for body text; 3:1 for large text, icons and controls.
Focus
A visible 2 px ring with 2 px offset on every interactive control.
Touch target
44 × 44 px minimum even when the visible icon is smaller.
Keyboard
Logical order, no traps, Escape closes transient layers.
RTL & LTR
Mirror layout, not identifiers, currencies, charts or media controls.
Motion
180–240 ms for feedback and zero essential information in animation.
- Invoice number
- INV-00124
- Total
- AED 12,450.00
- Invoice number
- INV-00124
- Total
- AED 12,450.00
Motion laboratory
Small, purposeful interactions inspired by Lottie timing principles—implemented accessibly and ready for dotLottie assets where illustration is justified.
Production-ready Web Animations with reduced-motion and viewport safeguards.
Motion documentation ↗Sale completed
- Duration
- 120–180 ms
- Easing
- ease-out
- Repeat
- Once
Payment processing
- Duration
- 600–900 ms
- Easing
- linear
- Repeat
- While active
Inventory sync
- Duration
- 240–320 ms
- Easing
- ease-in-out
- Repeat
- Once
Receipt printing
- Duration
- 180–240 ms
- Easing
- ease-out
- Repeat
- Once
Barcode scan
- Duration
- 180 ms
- Easing
- linear
- Repeat
- Once
Helpful empty state
- Duration
- 600 ms
- Easing
- ease-in-out
- Repeat
- Once
Notification arrival
- Duration
- 240 ms
- Easing
- ease-out
- Repeat
- Once
Section transition
- Duration
- 240–320 ms
- Easing
- ease-in-out
- Repeat
- Once
Added to cart
- Duration
- 220–300 ms
- Easing
- spring
- Repeat
- Once
Refund confirmed
- Duration
- 260–360 ms
- Easing
- ease-out
- Repeat
- Once
Approval granted
- Duration
- 180–240 ms
- Easing
- ease-out
- Repeat
- Once
Action rejected
- Duration
- 180–240 ms
- Easing
- ease-out
- Repeat
- Once
File upload
- Duration
- 500–800 ms
- Easing
- ease-in-out
- Repeat
- While active
Report download
- Duration
- 300–440 ms
- Easing
- ease-out
- Repeat
- Once
Connection restored
- Duration
- 300–500 ms
- Easing
- ease-out
- Repeat
- Once
Offline warning
- Duration
- 240–320 ms
- Easing
- ease-in-out
- Repeat
- Once
Drawer opening
- Duration
- 240–320 ms
- Easing
- ease-out
- Repeat
- Once
Toast message
- Duration
- 200–260 ms
- Easing
- ease-out
- Repeat
- Once
Modal entrance
- Duration
- 220–300 ms
- Easing
- ease-out
- Repeat
- Once
Skeleton loading
- Duration
- 900–1200 ms
- Easing
- linear
- Repeat
- While active
Counter update
- Duration
- 180–240 ms
- Easing
- ease-out
- Repeat
- Once
Chart reveal
- Duration
- 420–600 ms
- Easing
- ease-out
- Repeat
- Once
Row reordered
- Duration
- 220–300 ms
- Easing
- spring
- Repeat
- Once
Focused action
- Duration
- 160–220 ms
- Easing
- ease-out
- Repeat
- Once
Meaning before delight
Motion confirms state, orientation or progress. It never delays the task.
Motion + dotLottie
Use Motion for interface feedback and open .lottie assets for complex illustration; keep critical state in accessible HTML.
Motion / MIT ↗dotLottie Web / MIT ↗
prefers-reduced-motion
Reduced-motion users receive the final state immediately, with no lost information.
Runtime rule
Pause looping motion off-screen and when the page is hidden.
Assets, tokens & governance
One distribution point for reviewed assets, implementation tokens and release checks.
Official logos
Full lockup and icon from the approved vector source.
Design tokens
Colors, type, spacing, geometry, elevation, motion and focus.
Token manifest
Machine-readable contract for web, Flutter, email and print.
Component package
Reusable actions, fields, status, data, shell and overlay families.
Digital
- sRGB
- SVG / WebP / PNG
- Logo minimum 140 px
- Transparent background when required
- CMYK / PDF/X-4
- Logo minimum 25 mm
- 3 mm bleed where applicable
- Embed or outline licensed fonts
Documents
- A4 / 80 mm
- 15 mm safe margin
- Black-safe totals and QR
- Never rasterise small text
Use approved artwork and tokens.
Compose from reusable families.
Check content, contrast, RTL and states.
Record the decision and version.
Brand preflight
A release is not on-brand until every applicable check passes.
- Official logo and #125076 primary
- Complete default, focus, error, loading and disabled states
- Tables, totals and identifiers remain readable
- Arabic RTL and English LTR verified
- AA contrast, 44 px targets and reduced motion
- A4, receipt, email and responsive output checked