@deriv-ds/design-intelligence-layer 0.1.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +15 -15
- package/README.md +362 -156
- package/dist/index.cjs +2905 -1538
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +169 -73
- package/dist/index.d.ts +169 -73
- package/dist/index.js +2703 -1332
- package/dist/index.js.map +1 -1
- package/guides/brand-voice/deriv-brand-voice.md +250 -0
- package/guides/design-system-guide/{trading-game-ds-guide.md → deriv-design-intelligence-guide.md} +14 -14
- package/guides/design-system-guide/quill-ds-guide.md +817 -0
- package/guides/personas/trading-game-player-field-guide.md +4 -112
- package/guides/rules/design-system-consuming-project.mdc +17 -17
- package/package.json +1 -1
- package/src/styles.css +2315 -202
- package/guides/brand-voice/trading-game-brand-voice.md +0 -325
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
# Deriv brand voice
|
|
2
|
+
|
|
3
|
+
A reference guide for anyone writing in Deriv's voice — product copy, marketing, documentation, support, or internal comms. This guide defines how Deriv sounds, not just what it says.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Voice principles
|
|
8
|
+
|
|
9
|
+
Deriv's voice is **friendly and direct, never condescending**. Every piece of communication — from a button label to a blog post — should feel like it comes from the same company.
|
|
10
|
+
|
|
11
|
+
These five qualities define the voice:
|
|
12
|
+
|
|
13
|
+
1. **Capable, not patronising.** Talk to traders as adults who understand risk. Don't over-explain the obvious.
|
|
14
|
+
2. **Warm but efficient.** Be human, then get to the point. "Deposit successful. Funds usually appear in a few minutes." — not "Great news! Your deposit has been successfully processed."
|
|
15
|
+
3. **Calm under pressure.** When something goes wrong — a loss, an error, a delay — the copy should be steady, not alarming. A financial loss is serious. Meet it with composure.
|
|
16
|
+
4. **Personal, not corporate.** Use "you" and "we." The relationship is clear. Avoid the passive voice that hides who does what.
|
|
17
|
+
5. **Simple, always.** Deriv's traders come from 38+ markets. Many are not native English speakers. If a sentence sounds clever, it probably won't translate.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Tone calibration
|
|
22
|
+
|
|
23
|
+
The voice stays the same. The tone shifts based on what the trader is experiencing.
|
|
24
|
+
|
|
25
|
+
| Context | Tone | Example |
|
|
26
|
+
|---------|------|---------|
|
|
27
|
+
| Onboarding | Warm, encouraging | "Let's get your account set up. It takes about 3 minutes." |
|
|
28
|
+
| Trade placement | Focused, efficient | "Place trade" — not "Let's go!" |
|
|
29
|
+
| Error or failure | Calm, helpful | "We hit a snag. Try again or contact support." |
|
|
30
|
+
| Financial loss or stop-out | Steady, factual | "Your position has been closed. The market reached your stop-out level." |
|
|
31
|
+
| Success | Confirming, brief | "Withdrawal submitted. We'll process it within 1-3 business days." |
|
|
32
|
+
| Empty state | Inviting, low pressure | "Your trades will appear here. Ready to start?" |
|
|
33
|
+
| Destructive action | Clear, no drama | "Delete your account? This can't be undone." |
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Writing rules
|
|
38
|
+
|
|
39
|
+
### 1. Say the thing first
|
|
40
|
+
|
|
41
|
+
No preamble. The most important word goes first.
|
|
42
|
+
|
|
43
|
+
| ❌ Don't | ✅ Do |
|
|
44
|
+
|----------|-------|
|
|
45
|
+
| Please note that your session has expired | Your session has expired |
|
|
46
|
+
| In order to proceed, you'll need to verify your identity | Verify your identity to continue |
|
|
47
|
+
| We wanted to let you know that your deposit was successful | Deposit successful |
|
|
48
|
+
| Kindly be informed that this feature is unavailable | This feature isn't available yet |
|
|
49
|
+
|
|
50
|
+
### 2. Active voice
|
|
51
|
+
|
|
52
|
+
Passive voice hides who does what. In Deriv's world, someone always acts.
|
|
53
|
+
|
|
54
|
+
| ❌ Don't | ✅ Do |
|
|
55
|
+
|----------|-------|
|
|
56
|
+
| Your account has been verified | We've verified your account |
|
|
57
|
+
| An error was encountered | Something went wrong |
|
|
58
|
+
| Your withdrawal has been submitted | We've submitted your withdrawal |
|
|
59
|
+
| Deal cancellation has been activated | Deal cancellation is now active |
|
|
60
|
+
|
|
61
|
+
### 3. Positive framing
|
|
62
|
+
|
|
63
|
+
Tell traders what they *can* do, not what they *can't*. This is a hard rule for geographic restrictions.
|
|
64
|
+
|
|
65
|
+
| ❌ Don't | ✅ Do |
|
|
66
|
+
|----------|-------|
|
|
67
|
+
| Not available in your country | Available in selected countries |
|
|
68
|
+
| You can't withdraw until you verify | Verify your identity to unlock withdrawals |
|
|
69
|
+
| This feature is not supported on mobile | Available on desktop |
|
|
70
|
+
| Stop loss is not available during deal cancellation | Stop loss is available once deal cancellation expires |
|
|
71
|
+
|
|
72
|
+
### 4. Be specific
|
|
73
|
+
|
|
74
|
+
Vague copy forces people to guess. Specific copy removes doubt — especially around money.
|
|
75
|
+
|
|
76
|
+
| ❌ Don't | ✅ Do |
|
|
77
|
+
|----------|-------|
|
|
78
|
+
| We'll be in touch soon | We'll respond within 2 business days |
|
|
79
|
+
| Your request is being processed | Withdrawal processing — usually 1-3 hours |
|
|
80
|
+
| Please try again later | Try again in a few minutes |
|
|
81
|
+
| A small fee applies | A cancellation fee of [amount] applies |
|
|
82
|
+
|
|
83
|
+
### 5. Plain language, not jargon
|
|
84
|
+
|
|
85
|
+
Use Deriv's approved terminology, but write around it plainly. Labels use official terms — everything else explains them in plain language.
|
|
86
|
+
|
|
87
|
+
| ❌ Jargon | ✅ Plain |
|
|
88
|
+
|-----------|---------|
|
|
89
|
+
| Crystallise your position | Close your trade to lock in your profit or loss |
|
|
90
|
+
| The contract has lapsed | Your trade has expired |
|
|
91
|
+
| Initiate a deposit | Deposit funds |
|
|
92
|
+
| The indicative price is non-deterministic | This price may change before your trade closes |
|
|
93
|
+
|
|
94
|
+
### 6. One job per string
|
|
95
|
+
|
|
96
|
+
Each label, message, or instruction does one thing. If copy is trying to explain two things at once, that's a structural problem — don't solve it with longer copy.
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## Banned words
|
|
101
|
+
|
|
102
|
+
These are regulatory and brand rules. No exceptions, regardless of channel.
|
|
103
|
+
|
|
104
|
+
| ❌ Never use | ✅ Use instead | Why |
|
|
105
|
+
|-------------|---------------|-----|
|
|
106
|
+
| invest / investment | trade | Regulatory compliance |
|
|
107
|
+
| investor | trader | Regulatory compliance |
|
|
108
|
+
| win | earn / receive | Regulatory compliance |
|
|
109
|
+
| click here | Descriptive verb + noun (e.g. "Visit the Help centre") | Accessibility and clarity |
|
|
110
|
+
| soon | A specific timeframe (e.g. "within 2 business days") | Precision |
|
|
111
|
+
| a small fee | The actual fee amount | Specificity — always show the number |
|
|
112
|
+
| not available in your country | Available in selected countries | Positive framing — hard rule |
|
|
113
|
+
| something went wrong | Name the specific failure | Too vague — gives people nothing to act on |
|
|
114
|
+
| unsuccessful | Not possible | "Unsuccessful" implies general failure; "not possible" names a constraint |
|
|
115
|
+
|
|
116
|
+
### On "stake"
|
|
117
|
+
|
|
118
|
+
Allowed as a UI label and in trade mechanics context. The banned substitution ("initial capital") applies only in regulatory or compliance-facing copy. When in doubt, check with compliance.
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## Terminology and naming
|
|
123
|
+
|
|
124
|
+
### Platform names — exact capitalisation
|
|
125
|
+
|
|
126
|
+
One wrong character damages consistency. These are the only correct forms:
|
|
127
|
+
|
|
128
|
+
| ✅ Correct | ❌ Never |
|
|
129
|
+
|-----------|---------|
|
|
130
|
+
| Deriv MT5 | dMT5, MT5 alone, Deriv MT 5 |
|
|
131
|
+
| Deriv cTrader | Deriv Ctrader, DCtrader, ctrader |
|
|
132
|
+
| Deriv GO | Deriv Go, DerivGo |
|
|
133
|
+
| Deriv Bot | dBot, DerivBot |
|
|
134
|
+
| Deriv Trader | DTrader, dTrader |
|
|
135
|
+
| SmartTrader | Smart Trader, Smarttrader |
|
|
136
|
+
| Deriv Nakala | Nakala alone |
|
|
137
|
+
| Deriv P2P | DerivP2P, Deriv p2p |
|
|
138
|
+
| Deriv One | Deriv one, DerivOne, D1, Deriv 1 |
|
|
139
|
+
| Swap-free | Swap-Free, SwapFree, Swap free |
|
|
140
|
+
| Zero Spread | Zero spread, zero-spread, ZeroSpread |
|
|
141
|
+
|
|
142
|
+
### Trade type capitalisation
|
|
143
|
+
|
|
144
|
+
- Accumulator options (not "Accumulators")
|
|
145
|
+
- Digital options (not "Digitals")
|
|
146
|
+
- Multipliers (capital M as product name)
|
|
147
|
+
- CFDs (never "CFD's")
|
|
148
|
+
- Vanilla options, Lookbacks options — lowercase "options"
|
|
149
|
+
- Rise/Fall, Higher/Lower, Ends Between, Stays Between — as shown
|
|
150
|
+
|
|
151
|
+
### Derived indices — use the right level
|
|
152
|
+
|
|
153
|
+
| Term | When to use |
|
|
154
|
+
|------|-------------|
|
|
155
|
+
| Derived indices | Umbrella term for the whole category |
|
|
156
|
+
| Synthetic indices | The simulated subset (Volatility, Crash/Boom, Jump, etc.) |
|
|
157
|
+
| Basket indices | Currency basket products |
|
|
158
|
+
| Derived FX | Simulated forex products |
|
|
159
|
+
|
|
160
|
+
Never use "Synthetic indices" as a synonym for "Derived indices." They are a subset, not the whole.
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
## Language conventions
|
|
165
|
+
|
|
166
|
+
### British English — always
|
|
167
|
+
|
|
168
|
+
| ✅ British | ❌ American |
|
|
169
|
+
|-----------|-----------|
|
|
170
|
+
| authorise | authorize |
|
|
171
|
+
| centre | center |
|
|
172
|
+
| colour | color |
|
|
173
|
+
| programme | program (unless a proper noun) |
|
|
174
|
+
| fulfil | fulfill |
|
|
175
|
+
| licence (noun) | license (noun) |
|
|
176
|
+
| practise (verb) | practice (verb) |
|
|
177
|
+
| realise | realize |
|
|
178
|
+
|
|
179
|
+
### Sentence case — everywhere
|
|
180
|
+
|
|
181
|
+
Buttons, headings, labels, navigation, tab names, modal titles — all sentence case. No Title Case except proper nouns and platform/product names.
|
|
182
|
+
|
|
183
|
+
| ✅ Do | ❌ Don't |
|
|
184
|
+
|-------|----------|
|
|
185
|
+
| Your account settings | Your Account Settings |
|
|
186
|
+
| Deposit funds | Deposit Funds |
|
|
187
|
+
| Trade on Deriv MT5 | Trade On Deriv MT5 |
|
|
188
|
+
|
|
189
|
+
### Numbers
|
|
190
|
+
|
|
191
|
+
- Use numerals always: 5%, not "five per cent."
|
|
192
|
+
- Use commas for 4+ digits: 1,200 USD.
|
|
193
|
+
- Truncate large numbers with units only in charts ("1.2K"). Never truncate in financial confirmations — always show the full amount.
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## Error and loss communication
|
|
198
|
+
|
|
199
|
+
Errors and loss events are the highest-stakes moments for Deriv's voice. The rules are stricter here.
|
|
200
|
+
|
|
201
|
+
**Structure for errors:** What happened → What to do → Why (only if it helps).
|
|
202
|
+
|
|
203
|
+
**Tone rules:**
|
|
204
|
+
- Never blame the user: "You entered an invalid…" → "Enter a valid…"
|
|
205
|
+
- Never use error codes in user-facing messages (logs only).
|
|
206
|
+
- For financial loss events: factual and steady, not apologetic or alarming.
|
|
207
|
+
- Always include what to do next — even if it's just "Try again."
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
## Geographic and regulatory sensitivity
|
|
212
|
+
|
|
213
|
+
Deriv operates across 38+ markets under different regulatory bodies. Copy must respect this.
|
|
214
|
+
|
|
215
|
+
| Scenario | Guidance |
|
|
216
|
+
|----------|----------|
|
|
217
|
+
| Feature not available in EU | Do not expose in EU-regulated flows. When in doubt, flag to compliance before writing. |
|
|
218
|
+
| Feature restricted in some non-EU markets | Use positive framing: "Available in selected countries." Never "Not available in your country." |
|
|
219
|
+
| Copy must work across EU and non-EU surfaces | Write for the more restricted version. Flag to the team that a variant may be needed. |
|
|
220
|
+
| Tooltip for an EU-unavailable term in shared codebase | Write the copy, but ensure the component is hidden for EU users. Don't omit the copy — coordinate with engineering. |
|
|
221
|
+
|
|
222
|
+
---
|
|
223
|
+
|
|
224
|
+
## Quick reference checklist
|
|
225
|
+
|
|
226
|
+
Before any copy ships, run through this:
|
|
227
|
+
|
|
228
|
+
**Clarity**
|
|
229
|
+
- Does it start with the most important word?
|
|
230
|
+
- Can any word be removed without losing meaning?
|
|
231
|
+
- Is the voice active?
|
|
232
|
+
- Is it free of jargon a first-time trader wouldn't know?
|
|
233
|
+
|
|
234
|
+
**Accuracy**
|
|
235
|
+
- Does it avoid banned words?
|
|
236
|
+
- Are platform and product names capitalised correctly?
|
|
237
|
+
- Is it sentence case?
|
|
238
|
+
- Is it British English?
|
|
239
|
+
- Does it use positive framing for restrictions?
|
|
240
|
+
|
|
241
|
+
**Action**
|
|
242
|
+
- Does it tell the reader what to do, not just what happened?
|
|
243
|
+
- If it's a button: is the label a verb that matches the outcome?
|
|
244
|
+
- If it's an error: does it say what to do next?
|
|
245
|
+
|
|
246
|
+
---
|
|
247
|
+
|
|
248
|
+
## Sources
|
|
249
|
+
|
|
250
|
+
This guide is derived from Deriv's UX writing system, product glossary, and content style guide. For element-specific rules (character limits, component patterns, copy bricks), refer to the full UX writing skill. For approved product term definitions, refer to the Deriv product glossary.
|
package/guides/design-system-guide/{trading-game-ds-guide.md → deriv-design-intelligence-guide.md}
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Deriv Design Intelligence Guide
|
|
2
2
|
|
|
3
|
-
> **Package:** `@
|
|
4
|
-
> **Audience:** AI agents and developers building UI for
|
|
3
|
+
> **Package:** `@deriv-ds/design-intelligence-layer`
|
|
4
|
+
> **Audience:** AI agents and developers building UI for Deriv products. This is the single source of truth for setting up and using the design system in any project.
|
|
5
5
|
|
|
6
6
|
---
|
|
7
7
|
|
|
@@ -82,7 +82,7 @@ Each component in the catalogue is tagged:
|
|
|
82
82
|
### Step 1 — Install the package
|
|
83
83
|
|
|
84
84
|
```bash
|
|
85
|
-
npm install @
|
|
85
|
+
npm install @deriv-ds/design-intelligence-layer@latest --safe-chain-skip-minimum-package-age
|
|
86
86
|
```
|
|
87
87
|
|
|
88
88
|
### Step 2 — Add CSS imports
|
|
@@ -92,8 +92,8 @@ In your main CSS file (e.g. `globals.css` or `index.css`):
|
|
|
92
92
|
```css
|
|
93
93
|
@import url("https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@300;400;500;600;700;800&display=swap");
|
|
94
94
|
@import "tailwindcss";
|
|
95
|
-
@import "@
|
|
96
|
-
@source "../node_modules/@
|
|
95
|
+
@import "@deriv-ds/design-intelligence-layer/styles";
|
|
96
|
+
@source "../node_modules/@deriv-ds/design-intelligence-layer/dist";
|
|
97
97
|
```
|
|
98
98
|
|
|
99
99
|
> **Note:** Fonts are loaded via a direct Google Fonts `@import` URL. Do NOT use `next/font`.
|
|
@@ -105,7 +105,7 @@ The design system is light-first. No extra class is required on `<html>` for the
|
|
|
105
105
|
### Step 4 — Import components
|
|
106
106
|
|
|
107
107
|
```tsx
|
|
108
|
-
import { Button, Card, Badge } from "@
|
|
108
|
+
import { Button, Card, Badge } from "@deriv-ds/design-intelligence-layer"
|
|
109
109
|
```
|
|
110
110
|
|
|
111
111
|
---
|
|
@@ -457,7 +457,7 @@ All buttons: `font-display font-bold`, sentence case (no `uppercase`, no `tracki
|
|
|
457
457
|
|
|
458
458
|
## 8 — Available Components
|
|
459
459
|
|
|
460
|
-
> **All components below are exported from `@
|
|
460
|
+
> **All components below are exported from `@deriv-ds/design-intelligence-layer`.**
|
|
461
461
|
> - If a component is listed → import and use it. Do NOT re-implement.
|
|
462
462
|
> - If NOT listed → STOP and ask the user (see Rule 1).
|
|
463
463
|
> - For props, variants, sizes, and sub-components → inspect the package's TypeScript types after installation.
|
|
@@ -467,13 +467,13 @@ All buttons: `font-display font-bold`, sentence case (no `uppercase`, no `tracki
|
|
|
467
467
|
All components use the same import path:
|
|
468
468
|
|
|
469
469
|
```tsx
|
|
470
|
-
import { Button, Card, Badge } from "@
|
|
470
|
+
import { Button, Card, Badge } from "@deriv-ds/design-intelligence-layer"
|
|
471
471
|
```
|
|
472
472
|
|
|
473
473
|
### Example — composed component with sub-components
|
|
474
474
|
|
|
475
475
|
```tsx
|
|
476
|
-
import { Dialog, DialogTrigger, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter, DialogClose } from "@
|
|
476
|
+
import { Dialog, DialogTrigger, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter, DialogClose } from "@deriv-ds/design-intelligence-layer"
|
|
477
477
|
|
|
478
478
|
<Dialog>
|
|
479
479
|
<DialogTrigger asChild><Button>Open</Button></DialogTrigger>
|
|
@@ -528,7 +528,7 @@ import { Dialog, DialogTrigger, DialogContent, DialogHeader, DialogTitle, Dialog
|
|
|
528
528
|
| Kbd | [simple] | KbdGroup |
|
|
529
529
|
| Label | [simple] | — |
|
|
530
530
|
| Link | [simple] | — |
|
|
531
|
-
|
|
|
531
|
+
| LoadingSpinner | [simple] | — |
|
|
532
532
|
| NavigationMenu | [complex] | NavigationMenuList, NavigationMenuItem, NavigationMenuTrigger, NavigationMenuContent, NavigationMenuLink, NavigationMenuIndicator, NavigationMenuViewport, navigationMenuTriggerStyle |
|
|
533
533
|
| NativeSelect | [simple] | NativeSelectOption, NativeSelectOptGroup |
|
|
534
534
|
| Pagination | [composed] | PaginationContent, PaginationItem, PaginationLink, PaginationPrevious, PaginationNext, PaginationEllipsis |
|
|
@@ -570,12 +570,12 @@ These are styling behaviors you can't discover from TypeScript types alone:
|
|
|
570
570
|
| Tabs | **Variants:** `default` (pill, `bg-tabs`) and `line` (underline, transparent bg). **Sizes:** `sm` (h-8, text-xs), `md` (h-10, text-sm, default), `lg` (h-12, text-base). **Icon position:** `inline` (default) or `top` (stacks icon above label). **Orientation:** `horizontal` (default) or `vertical` (line variant renders left-edge indicator). Hover: `bg-secondary-hover` (default) / `text-primary` (line). Selected: `bg-tabs-active` + `text-primary font-semibold`. Line variant underline: `bg-primary`. |
|
|
571
571
|
| Select | Item hover: `bg-primary/[0.08]`. Selected: `text-primary font-medium` + checkmark. `SelectTrigger` accepts `readOnly` prop: blocks interaction, retains full default appearance, chevron renders at `opacity-30` |
|
|
572
572
|
| Progress | Track: `bg-primary/20`. Indicator: `bg-primary`. Radius: `rounded-2xs` |
|
|
573
|
-
|
|
|
573
|
+
| LoadingSpinner | Arc spinner. Color comes from `--loading-spinner-bg-default` token (coral `#ff444f`). Size defaults to `size-4` (16px); override via `className` (e.g. `size-6`, `size-8`). |
|
|
574
574
|
| Stepper | Numeric input flanked by `−` / `+` tertiary `icon-xs` buttons. Composes `InputGroup` internally. Props: `value`, `defaultValue`, `onValueChange`, `min`, `max`, `step` (default 1), `disabled`, `placeholder`. Supports controlled & uncontrolled modes, keyboard Arrow Up/Down, and floating-point steps. Default width: `w-32` |
|
|
575
575
|
| Switch | Checked track: `bg-slider-range`. Checked thumb: `bg-primary` |
|
|
576
576
|
| Slider | Thumb: square `rounded-[4px]`, `bg-primary`. Track range: `bg-slider-range` |
|
|
577
577
|
| Dialog/Sheet | Footer buttons should use `size="md"`. Overlay: `bg-overlay` |
|
|
578
|
-
|
|
|
578
|
+
| Link | **5 variants:** `primary` (coral, theme-agnostic), `secondary-normal` (dark on light / auto-switches to inverse white on dark mode), `secondary-inverse` (white, always for dark backgrounds), `secondary-static-light` (always dark, light backgrounds), `secondary-static-dark` (always white, dark backgrounds). Always underlined. Sizes: `sm` (12px), `md` (14px), `lg` (16px, default). Disabled via `aria-disabled="true"`. |
|
|
579
579
|
| Toggle | Pressed: `bg-primary/10` + `border-primary` + `text-primary` |
|
|
580
580
|
| Calendar | Selected: `bg-secondary-hover` + `text-primary font-bold`. Today: primary dot below date |
|
|
581
581
|
|
|
@@ -585,7 +585,7 @@ These are styling behaviors you can't discover from TypeScript types alone:
|
|
|
585
585
|
|
|
586
586
|
> Blocks are fully composed UI sections built from design system primitives. They appear in the **Blocks** tab of the playground.
|
|
587
587
|
> - Blocks are **NOT exported** from the npm package — they are playground demonstrations only.
|
|
588
|
-
> - To build them in a consuming project, import the underlying components (`Button`, etc.) from `@
|
|
588
|
+
> - To build them in a consuming project, import the underlying components (`Button`, etc.) from `@deriv-ds/design-intelligence-layer` and compose them manually using design tokens only.
|
|
589
589
|
> - Do NOT mistake a Block for a component — it will not appear in Rule 1's component list.
|
|
590
590
|
|
|
591
591
|
### NavBar
|