@xetwa/design-system 1.0.2
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/.github/workflows/publish.yml +30 -0
- package/.storybook/main.ts +17 -0
- package/.storybook/preview.tsx +65 -0
- package/eslint.config.js +22 -0
- package/index.html +13 -0
- package/package.json +55 -0
- package/public/favicon.svg +1 -0
- package/public/icons.svg +24 -0
- package/src/App.css +184 -0
- package/src/App.tsx +122 -0
- package/src/BordasSombras.mdx +343 -0
- package/src/Colors.mdx +393 -0
- package/src/GrelhaLayout.mdx +375 -0
- package/src/Icons.mdx +42 -0
- package/src/MovimentoBreakpoints.mdx +379 -0
- package/src/Spacing.mdx +231 -0
- package/src/Typography.mdx +321 -0
- package/src/assets/Mascots/vava/estaticos/vava-acenar.svg +3 -0
- package/src/assets/Mascots/vava/estaticos/vava-acertou.svg +3 -0
- package/src/assets/Mascots/vava/estaticos/vava-celebrar.svg +3 -0
- package/src/assets/Mascots/vava/estaticos/vava-com-autocolantes.svg +3 -0
- package/src/assets/Mascots/vava/estaticos/vava-dormir.svg +3 -0
- package/src/assets/Mascots/vava/estaticos/vava-errou.svg +3 -0
- package/src/assets/Mascots/vava/estaticos/vava-feliz.svg +3 -0
- package/src/assets/Mascots/vava/estaticos/vava-neutra.svg +3 -0
- package/src/assets/Mascots/vava/estaticos/vava-original.svg +3 -0
- package/src/assets/Mascots/vava/estaticos/vava-pensar.svg +3 -0
- package/src/assets/Mascots/vava/estaticos/vava-surpresa.svg +3 -0
- package/src/assets/Mascots/yaya/avatar/yaya-avatar-falar.svg +7 -0
- package/src/assets/Mascots/yaya/avatar/yaya-avatar-feliz.svg +7 -0
- package/src/assets/Mascots/yaya/avatar/yaya-avatar-transparente.svg +6 -0
- package/src/assets/Mascots/yaya/estaticos/yaya-acertou.svg +13 -0
- package/src/assets/Mascots/yaya/estaticos/yaya-celebrar.svg +13 -0
- package/src/assets/Mascots/yaya/estaticos/yaya-dormir.svg +13 -0
- package/src/assets/Mascots/yaya/estaticos/yaya-errou.svg +13 -0
- package/src/assets/Mascots/yaya/estaticos/yaya-falar.svg +13 -0
- package/src/assets/Mascots/yaya/estaticos/yaya-feliz.svg +13 -0
- package/src/assets/Mascots/yaya/estaticos/yaya-neutra.svg +13 -0
- package/src/assets/Mascots/yaya/estaticos/yaya-pensar.svg +13 -0
- package/src/assets/Mascots/yaya/estaticos/yaya-surpresa.svg +13 -0
- package/src/assets/hero.png +0 -0
- package/src/assets/react.svg +1 -0
- package/src/assets/vite.svg +1 -0
- package/src/components/Buttons/BackButton/BackButton.stories.tsx +86 -0
- package/src/components/Buttons/BackButton/BackButton.tsx +107 -0
- package/src/components/Buttons/FabButton/FabButton.stories.tsx +74 -0
- package/src/components/Buttons/FabButton/FabButton.tsx +161 -0
- package/src/components/Buttons/IconButton/IconButton.stories.tsx +99 -0
- package/src/components/Buttons/IconButton/IconButton.tsx +189 -0
- package/src/components/Buttons/JourneyButton/JourneyButton.stories.tsx +80 -0
- package/src/components/Buttons/JourneyButton/JourneyButton.tsx +194 -0
- package/src/components/Buttons/MainButton/MainButton.stories.tsx +144 -0
- package/src/components/Buttons/MainButton/MainButton.tsx +258 -0
- package/src/components/Buttons/WordChip/WordChip.stories.tsx +84 -0
- package/src/components/Buttons/WordChip/WordChip.tsx +157 -0
- package/src/components/Buttons/WordChip/index.ts +1 -0
- package/src/components/Cards/AnswerOptionCard/AnswerOptionCard.stories.tsx +181 -0
- package/src/components/Cards/AnswerOptionCard/AnswerOptionCard.tsx +201 -0
- package/src/components/Cards/BaseCard/BaseCard.stories.tsx +148 -0
- package/src/components/Cards/BaseCard/BaseCard.tsx +181 -0
- package/src/components/Cards/BoardingPassCard/BoardingPassCard.stories.tsx +205 -0
- package/src/components/Cards/BoardingPassCard/BoardingPassCard.tsx +384 -0
- package/src/components/Cards/BoardingPassCard/FlightIcon.tsx +21 -0
- package/src/components/Cards/BoardingPassCard/FlightIcon.web.tsx +18 -0
- package/src/components/Cards/CountryCard/CountryCard.stories.tsx +97 -0
- package/src/components/Cards/CountryCard/CountryCard.tsx +185 -0
- package/src/components/Cards/LevelProgressCard/LevelProgressCard.stories.tsx +61 -0
- package/src/components/Cards/LevelProgressCard/LevelProgressCard.tsx +143 -0
- package/src/components/Cards/ModuleCard/ModuleCard.stories.tsx +108 -0
- package/src/components/Cards/ModuleCard/ModuleCard.tsx +304 -0
- package/src/components/Cards/ModuleCompletionCard/ModuleCompletionCard.stories.tsx +53 -0
- package/src/components/Cards/ModuleCompletionCard/ModuleCompletionCard.tsx +167 -0
- package/src/components/Cards/Passport/PassportCover.tsx +114 -0
- package/src/components/Cards/Passport/PassportIDPage.tsx +217 -0
- package/src/components/Cards/Passport/PassportStampPage.tsx +253 -0
- package/src/components/Cards/Passport/PassportViewer.stories.tsx +95 -0
- package/src/components/Cards/Passport/PassportViewer.tsx +328 -0
- package/src/components/Cards/PlanCard/PlanCard.stories.tsx +159 -0
- package/src/components/Cards/PlanCard/PlanCard.tsx +317 -0
- package/src/components/Cards/PricingCard/PricingCard.stories.tsx +83 -0
- package/src/components/Cards/PricingCard/PricingCard.tsx +144 -0
- package/src/components/Cards/SelectionCard/SelectionCard.stories.tsx +77 -0
- package/src/components/Cards/SelectionCard/SelectionCard.tsx +111 -0
- package/src/components/Cards/TeacherCard/TeacherCard.stories.tsx +126 -0
- package/src/components/Cards/TeacherCard/TeacherCard.tsx +236 -0
- package/src/components/Charts/WeeklyProgressChart/WeeklyProgressChart.stories.tsx +89 -0
- package/src/components/Charts/WeeklyProgressChart/WeeklyProgressChart.tsx +179 -0
- package/src/components/Charts/WeeklyProgressChart/index.ts +1 -0
- package/src/components/DataDisplay/Avatar/Avatar.stories.tsx +85 -0
- package/src/components/DataDisplay/Avatar/Avatar.tsx +118 -0
- package/src/components/DataDisplay/Avatar/index.ts +1 -0
- package/src/components/DataDisplay/Badge/Badge.stories.tsx +62 -0
- package/src/components/DataDisplay/Badge/Badge.tsx +146 -0
- package/src/components/DataDisplay/Flag/Flag.stories.tsx +98 -0
- package/src/components/DataDisplay/Flag/Flag.tsx +347 -0
- package/src/components/DataDisplay/Flag/Flag.web.tsx +334 -0
- package/src/components/DataDisplay/InstructionBubble/InstructionBubble.stories.tsx +80 -0
- package/src/components/DataDisplay/InstructionBubble/InstructionBubble.tsx +86 -0
- package/src/components/DataDisplay/LevelBadge/LevelBadge.stories.tsx +99 -0
- package/src/components/DataDisplay/LevelBadge/LevelBadge.tsx +118 -0
- package/src/components/DataDisplay/ProgressBar/ProgressBar.stories.tsx +95 -0
- package/src/components/DataDisplay/ProgressBar/ProgressBar.tsx +117 -0
- package/src/components/DataDisplay/StatBadge/StatBadge.stories.tsx +82 -0
- package/src/components/DataDisplay/StatBadge/StatBadge.tsx +135 -0
- package/src/components/DataDisplay/StatBadge/index.ts +1 -0
- package/src/components/DataDisplay/Tag/Tag.stories.tsx +63 -0
- package/src/components/DataDisplay/Tag/Tag.tsx +148 -0
- package/src/components/Feedback/FeedbackBottomSheet/FeedbackBottomSheet.stories.tsx +74 -0
- package/src/components/Feedback/FeedbackBottomSheet/FeedbackBottomSheet.tsx +200 -0
- package/src/components/Forms/Checkbox/Checkbox.stories.tsx +60 -0
- package/src/components/Forms/Checkbox/Checkbox.tsx +127 -0
- package/src/components/Forms/Checkbox/index.ts +1 -0
- package/src/components/Forms/DaySelector/DaySelector.stories.tsx +62 -0
- package/src/components/Forms/DaySelector/DaySelector.tsx +133 -0
- package/src/components/Forms/Radio/Radio.stories.tsx +61 -0
- package/src/components/Forms/Radio/Radio.tsx +141 -0
- package/src/components/Forms/Radio/index.ts +1 -0
- package/src/components/Forms/SegmentedToggle/SegmentedToggle.stories.tsx +67 -0
- package/src/components/Forms/SegmentedToggle/SegmentedToggle.tsx +150 -0
- package/src/components/Forms/SegmentedToggle/index.ts +1 -0
- package/src/components/Forms/Select/Select.stories.tsx +59 -0
- package/src/components/Forms/Select/Select.tsx +255 -0
- package/src/components/Forms/Select/index.ts +1 -0
- package/src/components/Forms/Switch/Switch.stories.tsx +57 -0
- package/src/components/Forms/Switch/Switch.tsx +120 -0
- package/src/components/Forms/Switch/index.ts +1 -0
- package/src/components/Forms/TimeSlot/TimeSlot.stories.tsx +62 -0
- package/src/components/Forms/TimeSlot/TimeSlot.tsx +116 -0
- package/src/components/Headers/CountryHeader/CountryHeader.stories.tsx +114 -0
- package/src/components/Headers/CountryHeader/CountryHeader.tsx +147 -0
- package/src/components/Headers/ProfileHeader/ProfileHeader.stories.tsx +141 -0
- package/src/components/Headers/ProfileHeader/ProfileHeader.tsx +233 -0
- package/src/components/Inputs/FillInTheBlank/FillInTheBlank.stories.tsx +333 -0
- package/src/components/Inputs/FillInTheBlank/FillInTheBlank.tsx +287 -0
- package/src/components/Inputs/FillInTheBlank/index.ts +1 -0
- package/src/components/Inputs/TextInput/TextInput.stories.tsx +103 -0
- package/src/components/Inputs/TextInput/TextInput.tsx +187 -0
- package/src/components/Mascots/Vava/Vava.stories.tsx +114 -0
- package/src/components/Mascots/Vava/Vava.tsx +276 -0
- package/src/components/Mascots/Yaya/Yaya.stories.tsx +98 -0
- package/src/components/Mascots/Yaya/Yaya.tsx +233 -0
- package/src/components/Navigation/BottomTabBar/BottomTabBar.stories.tsx +68 -0
- package/src/components/Navigation/BottomTabBar/BottomTabBar.tsx +85 -0
- package/src/components/Navigation/BottomTabBar/BottomTabBarItem.tsx +68 -0
- package/src/components/Navigation/BottomTabBar/index.ts +2 -0
- package/src/components/Navigation/PaginationDots/PaginationDots.stories.tsx +62 -0
- package/src/components/Navigation/PaginationDots/PaginationDots.tsx +81 -0
- package/src/components/Navigation/PaginationDots/index.ts +1 -0
- package/src/components/Navigation/ProgressMap/ProgressMap.stories.tsx +116 -0
- package/src/components/Navigation/ProgressMap/ProgressMap.tsx +827 -0
- package/src/components/Navigation/WorldProgressMap/WorldProgressMap.stories.tsx +169 -0
- package/src/components/Navigation/WorldProgressMap/WorldProgressMap.tsx +790 -0
- package/src/components/Typography/Typography.stories.tsx +127 -0
- package/src/components/Typography/Typography.tsx +53 -0
- package/src/hooks/useResponsive.ts +41 -0
- package/src/hooks/useTheme.ts +32 -0
- package/src/index.css +355 -0
- package/src/index.ts +28 -0
- package/src/main.tsx +10 -0
- package/src/mocks/codegenNativeComponent.ts +5 -0
- package/src/styles/countryThemes.ts +79 -0
- package/src/styles/theme.ts +297 -0
- package/src/utils/iconMap.ts +23 -0
- package/tsconfig.app.json +25 -0
- package/tsconfig.json +7 -0
- package/tsconfig.node.json +24 -0
- package/vite.config.ts +51 -0
- package/vitest.shims.d.ts +1 -0
package/src/Colors.mdx
ADDED
|
@@ -0,0 +1,393 @@
|
|
|
1
|
+
import { Meta } from '@storybook/addon-docs/blocks';
|
|
2
|
+
|
|
3
|
+
<Meta title="Brand Guidelines/Cores" />
|
|
4
|
+
|
|
5
|
+
# Paleta de Cores
|
|
6
|
+
|
|
7
|
+
Toda a paleta de cores do **Xetlingo** está definida em tokens de CSS custom properties e mapeada no tema TypeScript para o aplicativo.
|
|
8
|
+
|
|
9
|
+
> [!IMPORTANT]
|
|
10
|
+
> **Regra de Uso:** Nunca usar valores hexadecimais soltos no código do aplicativo ou nos componentes do design system. Utilize sempre as variáveis CSS ou o objeto do `theme` em TypeScript.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
{/* Paleta Primária */}
|
|
15
|
+
<div style={{
|
|
16
|
+
backgroundColor: 'var(--bg-surface)',
|
|
17
|
+
border: '1px solid var(--border-color)',
|
|
18
|
+
borderRadius: '16px',
|
|
19
|
+
padding: '1.5rem',
|
|
20
|
+
boxShadow: '0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03)',
|
|
21
|
+
marginBottom: '2.5rem',
|
|
22
|
+
marginTop: '1.5rem'
|
|
23
|
+
}}>
|
|
24
|
+
<h3 style={{
|
|
25
|
+
fontFamily: 'var(--font-title)',
|
|
26
|
+
fontSize: '1.25rem',
|
|
27
|
+
fontWeight: '700',
|
|
28
|
+
color: 'var(--text-primary)',
|
|
29
|
+
marginTop: 0,
|
|
30
|
+
marginBottom: '1.25rem',
|
|
31
|
+
}}>Paleta primária</h3>
|
|
32
|
+
|
|
33
|
+
<table style={{
|
|
34
|
+
width: '100%',
|
|
35
|
+
borderCollapse: 'collapse',
|
|
36
|
+
textAlign: 'left'
|
|
37
|
+
}}>
|
|
38
|
+
<thead>
|
|
39
|
+
<tr style={{
|
|
40
|
+
borderBottom: '2px solid var(--border-color)',
|
|
41
|
+
}}>
|
|
42
|
+
<th style={{ padding: '10px 16px', fontSize: '0.75rem', fontWeight: '700', color: 'var(--text-secondary)', textTransform: 'uppercase', letterSpacing: '0.05em' }}>Token</th>
|
|
43
|
+
<th style={{ padding: '10px 16px', fontSize: '0.75rem', fontWeight: '700', color: 'var(--text-secondary)', textTransform: 'uppercase', letterSpacing: '0.05em' }}>Valor</th>
|
|
44
|
+
<th style={{ padding: '10px 16px', fontSize: '0.75rem', fontWeight: '700', color: 'var(--text-secondary)', textTransform: 'uppercase', letterSpacing: '0.05em', width: '80px' }}>Swatch</th>
|
|
45
|
+
<th style={{ padding: '10px 16px', fontSize: '0.75rem', fontWeight: '700', color: 'var(--text-secondary)', textTransform: 'uppercase', letterSpacing: '0.05em' }}>Uso</th>
|
|
46
|
+
</tr>
|
|
47
|
+
</thead>
|
|
48
|
+
<tbody>
|
|
49
|
+
<tr style={{ borderBottom: '1px solid var(--border-color)' }}>
|
|
50
|
+
<td style={{ padding: '12px 16px' }}>
|
|
51
|
+
<code style={{ fontSize: '0.85rem', color: '#cf7a30', backgroundColor: '#fef6ee', padding: '4px 8px', borderRadius: '6px', fontWeight: '600' }}>--color-primary</code>
|
|
52
|
+
</td>
|
|
53
|
+
<td style={{ padding: '12px 16px' }}>
|
|
54
|
+
<code style={{ fontSize: '0.85rem', color: 'var(--text-secondary)', fontFamily: 'monospace' }}>#f2974b</code>
|
|
55
|
+
</td>
|
|
56
|
+
<td style={{ padding: '12px 16px' }}>
|
|
57
|
+
<div style={{ width: '36px', height: '20px', borderRadius: '4px', backgroundColor: '#f2974b', border: '1px solid rgba(0, 0, 0, 0.1)' }} />
|
|
58
|
+
</td>
|
|
59
|
+
<td style={{ padding: '12px 16px', fontSize: '0.9rem', color: 'var(--text-primary)' }}>
|
|
60
|
+
CTAs, botão primário, destaque, progresso
|
|
61
|
+
</td>
|
|
62
|
+
</tr>
|
|
63
|
+
<tr style={{ borderBottom: '1px solid var(--border-color)' }}>
|
|
64
|
+
<td style={{ padding: '12px 16px' }}>
|
|
65
|
+
<code style={{ fontSize: '0.85rem', color: '#cf7a30', backgroundColor: '#fef6ee', padding: '4px 8px', borderRadius: '6px', fontWeight: '600' }}>--color-primary-dark</code>
|
|
66
|
+
</td>
|
|
67
|
+
<td style={{ padding: '12px 16px' }}>
|
|
68
|
+
<code style={{ fontSize: '0.85rem', color: 'var(--text-secondary)', fontFamily: 'monospace' }}>#cf7a30</code>
|
|
69
|
+
</td>
|
|
70
|
+
<td style={{ padding: '12px 16px' }}>
|
|
71
|
+
<div style={{ width: '36px', height: '20px', borderRadius: '4px', backgroundColor: '#cf7a30', border: '1px solid rgba(0, 0, 0, 0.1)' }} />
|
|
72
|
+
</td>
|
|
73
|
+
<td style={{ padding: '12px 16px', fontSize: '0.9rem', color: 'var(--text-primary)' }}>
|
|
74
|
+
Sombra do botão primário, ícone selecionado, hover
|
|
75
|
+
</td>
|
|
76
|
+
</tr>
|
|
77
|
+
<tr>
|
|
78
|
+
<td style={{ padding: '12px 16px' }}>
|
|
79
|
+
<code style={{ fontSize: '0.85rem', color: '#cf7a30', backgroundColor: '#fef6ee', padding: '4px 8px', borderRadius: '6px', fontWeight: '600' }}>--color-primary-light</code>
|
|
80
|
+
</td>
|
|
81
|
+
<td style={{ padding: '12px 16px' }}>
|
|
82
|
+
<code style={{ fontSize: '0.85rem', color: 'var(--text-secondary)', fontFamily: 'monospace' }}>#fef6ee</code>
|
|
83
|
+
</td>
|
|
84
|
+
<td style={{ padding: '12px 16px' }}>
|
|
85
|
+
<div style={{ width: '36px', height: '20px', borderRadius: '4px', backgroundColor: '#fef6ee', border: '1px solid var(--border-color)' }} />
|
|
86
|
+
</td>
|
|
87
|
+
<td style={{ padding: '12px 16px', fontSize: '0.9rem', color: 'var(--text-primary)' }}>
|
|
88
|
+
Fundo de item selecionado, chip ativo
|
|
89
|
+
</td>
|
|
90
|
+
</tr>
|
|
91
|
+
</tbody>
|
|
92
|
+
</table>
|
|
93
|
+
</div>
|
|
94
|
+
|
|
95
|
+
{/* Escala de Castanho (Neutros) */}
|
|
96
|
+
<div style={{
|
|
97
|
+
backgroundColor: 'var(--bg-surface)',
|
|
98
|
+
border: '1px solid var(--border-color)',
|
|
99
|
+
borderRadius: '16px',
|
|
100
|
+
padding: '1.5rem',
|
|
101
|
+
boxShadow: '0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03)',
|
|
102
|
+
marginBottom: '2.5rem'
|
|
103
|
+
}}>
|
|
104
|
+
<h3 style={{
|
|
105
|
+
fontFamily: 'var(--font-title)',
|
|
106
|
+
fontSize: '1.25rem',
|
|
107
|
+
fontWeight: '700',
|
|
108
|
+
color: 'var(--text-primary)',
|
|
109
|
+
marginTop: 0,
|
|
110
|
+
marginBottom: '1.25rem',
|
|
111
|
+
}}>Escala de castanho (neutros)</h3>
|
|
112
|
+
|
|
113
|
+
<table style={{
|
|
114
|
+
width: '100%',
|
|
115
|
+
borderCollapse: 'collapse',
|
|
116
|
+
textAlign: 'left'
|
|
117
|
+
}}>
|
|
118
|
+
<thead>
|
|
119
|
+
<tr style={{
|
|
120
|
+
borderBottom: '2px solid var(--border-color)',
|
|
121
|
+
}}>
|
|
122
|
+
<th style={{ padding: '10px 16px', fontSize: '0.75rem', fontWeight: '700', color: 'var(--text-secondary)', textTransform: 'uppercase', letterSpacing: '0.05em' }}>Token</th>
|
|
123
|
+
<th style={{ padding: '10px 16px', fontSize: '0.75rem', fontWeight: '700', color: 'var(--text-secondary)', textTransform: 'uppercase', letterSpacing: '0.05em' }}>Valor</th>
|
|
124
|
+
<th style={{ padding: '10px 16px', fontSize: '0.75rem', fontWeight: '700', color: 'var(--text-secondary)', textTransform: 'uppercase', letterSpacing: '0.05em', width: '80px' }}>Swatch</th>
|
|
125
|
+
<th style={{ padding: '10px 16px', fontSize: '0.75rem', fontWeight: '700', color: 'var(--text-secondary)', textTransform: 'uppercase', letterSpacing: '0.05em' }}>Uso</th>
|
|
126
|
+
</tr>
|
|
127
|
+
</thead>
|
|
128
|
+
<tbody>
|
|
129
|
+
<tr style={{ borderBottom: '1px solid var(--border-color)' }}>
|
|
130
|
+
<td style={{ padding: '12px 16px' }}>
|
|
131
|
+
<code style={{ fontSize: '0.85rem', color: '#51332d', backgroundColor: '#efe2d6', padding: '4px 8px', borderRadius: '6px', fontWeight: '600' }}>--color-brown-900</code>
|
|
132
|
+
</td>
|
|
133
|
+
<td style={{ padding: '12px 16px' }}>
|
|
134
|
+
<code style={{ fontSize: '0.85rem', color: 'var(--text-secondary)', fontFamily: 'monospace' }}>#15100d</code>
|
|
135
|
+
</td>
|
|
136
|
+
<td style={{ padding: '12px 16px' }}>
|
|
137
|
+
<div style={{ width: '36px', height: '20px', borderRadius: '4px', backgroundColor: '#15100d', border: '1px solid rgba(0, 0, 0, 0.1)' }} />
|
|
138
|
+
</td>
|
|
139
|
+
<td style={{ padding: '12px 16px', fontSize: '0.9rem', color: 'var(--text-primary)' }}>
|
|
140
|
+
Cor máxima de contraste, textos ou superfícies em modo escuro
|
|
141
|
+
</td>
|
|
142
|
+
</tr>
|
|
143
|
+
<tr style={{ borderBottom: '1px solid var(--border-color)' }}>
|
|
144
|
+
<td style={{ padding: '12px 16px' }}>
|
|
145
|
+
<code style={{ fontSize: '0.85rem', color: '#51332d', backgroundColor: '#efe2d6', padding: '4px 8px', borderRadius: '6px', fontWeight: '600' }}>--color-brown-800</code>
|
|
146
|
+
</td>
|
|
147
|
+
<td style={{ padding: '12px 16px' }}>
|
|
148
|
+
<code style={{ fontSize: '0.85rem', color: 'var(--text-secondary)', fontFamily: 'monospace' }}>#51332d</code>
|
|
149
|
+
</td>
|
|
150
|
+
<td style={{ padding: '12px 16px' }}>
|
|
151
|
+
<div style={{ width: '36px', height: '20px', borderRadius: '4px', backgroundColor: '#51332d', border: '1px solid rgba(0, 0, 0, 0.1)' }} />
|
|
152
|
+
</td>
|
|
153
|
+
<td style={{ padding: '12px 16px', fontSize: '0.9rem', color: 'var(--text-primary)' }}>
|
|
154
|
+
Texto principal, cabeçalhos e botões na variante invertida
|
|
155
|
+
</td>
|
|
156
|
+
</tr>
|
|
157
|
+
<tr style={{ borderBottom: '1px solid var(--border-color)' }}>
|
|
158
|
+
<td style={{ padding: '12px 16px' }}>
|
|
159
|
+
<code style={{ fontSize: '0.85rem', color: '#51332d', backgroundColor: '#efe2d6', padding: '4px 8px', borderRadius: '6px', fontWeight: '600' }}>--color-brown-700</code>
|
|
160
|
+
</td>
|
|
161
|
+
<td style={{ padding: '12px 16px' }}>
|
|
162
|
+
<code style={{ fontSize: '0.85rem', color: 'var(--text-secondary)', fontFamily: 'monospace' }}>#3f2620</code>
|
|
163
|
+
</td>
|
|
164
|
+
<td style={{ padding: '12px 16px' }}>
|
|
165
|
+
<div style={{ width: '36px', height: '20px', borderRadius: '4px', backgroundColor: '#3f2620', border: '1px solid rgba(0, 0, 0, 0.1)' }} />
|
|
166
|
+
</td>
|
|
167
|
+
<td style={{ padding: '12px 16px', fontSize: '0.9rem', color: 'var(--text-primary)' }}>
|
|
168
|
+
Bordas internas e sombras profundas
|
|
169
|
+
</td>
|
|
170
|
+
</tr>
|
|
171
|
+
<tr style={{ borderBottom: '1px solid var(--border-color)' }}>
|
|
172
|
+
<td style={{ padding: '12px 16px' }}>
|
|
173
|
+
<code style={{ fontSize: '0.85rem', color: '#51332d', backgroundColor: '#efe2d6', padding: '4px 8px', borderRadius: '6px', fontWeight: '600' }}>--color-brown-600</code>
|
|
174
|
+
</td>
|
|
175
|
+
<td style={{ padding: '12px 16px' }}>
|
|
176
|
+
<code style={{ fontSize: '0.85rem', color: 'var(--text-secondary)', fontFamily: 'monospace' }}>#6e5a4f</code>
|
|
177
|
+
</td>
|
|
178
|
+
<td style={{ padding: '12px 16px' }}>
|
|
179
|
+
<div style={{ width: '36px', height: '20px', borderRadius: '4px', backgroundColor: '#6e5a4f', border: '1px solid rgba(0, 0, 0, 0.1)' }} />
|
|
180
|
+
</td>
|
|
181
|
+
<td style={{ padding: '12px 16px', fontSize: '0.9rem', color: 'var(--text-primary)' }}>
|
|
182
|
+
Texto de apoio escuro, iconografia
|
|
183
|
+
</td>
|
|
184
|
+
</tr>
|
|
185
|
+
<tr style={{ borderBottom: '1px solid var(--border-color)' }}>
|
|
186
|
+
<td style={{ padding: '12px 16px' }}>
|
|
187
|
+
<code style={{ fontSize: '0.85rem', color: '#51332d', backgroundColor: '#efe2d6', padding: '4px 8px', borderRadius: '6px', fontWeight: '600' }}>--color-brown-500</code>
|
|
188
|
+
</td>
|
|
189
|
+
<td style={{ padding: '12px 16px' }}>
|
|
190
|
+
<code style={{ fontSize: '0.85rem', color: 'var(--text-secondary)', fontFamily: 'monospace' }}>#9a8478</code>
|
|
191
|
+
</td>
|
|
192
|
+
<td style={{ padding: '12px 16px' }}>
|
|
193
|
+
<div style={{ width: '36px', height: '20px', borderRadius: '4px', backgroundColor: '#9a8478', border: '1px solid rgba(0, 0, 0, 0.1)' }} />
|
|
194
|
+
</td>
|
|
195
|
+
<td style={{ padding: '12px 16px', fontSize: '0.9rem', color: 'var(--text-primary)' }}>
|
|
196
|
+
Texto secundário, labels, placeholders
|
|
197
|
+
</td>
|
|
198
|
+
</tr>
|
|
199
|
+
<tr style={{ borderBottom: '1px solid var(--border-color)' }}>
|
|
200
|
+
<td style={{ padding: '12px 16px' }}>
|
|
201
|
+
<code style={{ fontSize: '0.85rem', color: '#51332d', backgroundColor: '#efe2d6', padding: '4px 8px', borderRadius: '6px', fontWeight: '600' }}>--color-brown-400</code>
|
|
202
|
+
</td>
|
|
203
|
+
<td style={{ padding: '12px 16px' }}>
|
|
204
|
+
<code style={{ fontSize: '0.85rem', color: 'var(--text-secondary)', fontFamily: 'monospace' }}>#b9a392</code>
|
|
205
|
+
</td>
|
|
206
|
+
<td style={{ padding: '12px 16px' }}>
|
|
207
|
+
<div style={{ width: '36px', height: '20px', borderRadius: '4px', backgroundColor: '#b9a392', border: '1px solid rgba(0, 0, 0, 0.1)' }} />
|
|
208
|
+
</td>
|
|
209
|
+
<td style={{ padding: '12px 16px', fontSize: '0.9rem', color: 'var(--text-primary)' }}>
|
|
210
|
+
Ícones desativados, texto terciário
|
|
211
|
+
</td>
|
|
212
|
+
</tr>
|
|
213
|
+
<tr style={{ borderBottom: '1px solid var(--border-color)' }}>
|
|
214
|
+
<td style={{ padding: '12px 16px' }}>
|
|
215
|
+
<code style={{ fontSize: '0.85rem', color: '#51332d', backgroundColor: '#efe2d6', padding: '4px 8px', borderRadius: '6px', fontWeight: '600' }}>--color-brown-300</code>
|
|
216
|
+
</td>
|
|
217
|
+
<td style={{ padding: '12px 16px' }}>
|
|
218
|
+
<code style={{ fontSize: '0.85rem', color: 'var(--text-secondary)', fontFamily: 'monospace' }}>#c3b1a4</code>
|
|
219
|
+
</td>
|
|
220
|
+
<td style={{ padding: '12px 16px' }}>
|
|
221
|
+
<div style={{ width: '36px', height: '20px', borderRadius: '4px', backgroundColor: '#c3b1a4', border: '1px solid rgba(0, 0, 0, 0.1)' }} />
|
|
222
|
+
</td>
|
|
223
|
+
<td style={{ padding: '12px 16px', fontSize: '0.9rem', color: 'var(--text-primary)' }}>
|
|
224
|
+
Ícones de navegação não selecionada
|
|
225
|
+
</td>
|
|
226
|
+
</tr>
|
|
227
|
+
<tr style={{ borderBottom: '1px solid var(--border-color)' }}>
|
|
228
|
+
<td style={{ padding: '12px 16px' }}>
|
|
229
|
+
<code style={{ fontSize: '0.85rem', color: '#51332d', backgroundColor: '#efe2d6', padding: '4px 8px', borderRadius: '6px', fontWeight: '600' }}>--color-brown-100</code>
|
|
230
|
+
</td>
|
|
231
|
+
<td style={{ padding: '12px 16px' }}>
|
|
232
|
+
<code style={{ fontSize: '0.85rem', color: 'var(--text-secondary)', fontFamily: 'monospace' }}>#efe2d6</code>
|
|
233
|
+
</td>
|
|
234
|
+
<td style={{ padding: '12px 16px' }}>
|
|
235
|
+
<div style={{ width: '36px', height: '20px', borderRadius: '4px', backgroundColor: '#efe2d6', border: '1px solid var(--border-color)' }} />
|
|
236
|
+
</td>
|
|
237
|
+
<td style={{ padding: '12px 16px', fontSize: '0.9rem', color: 'var(--text-primary)' }}>
|
|
238
|
+
Bordas, separadores e sombra do botão secundário
|
|
239
|
+
</td>
|
|
240
|
+
</tr>
|
|
241
|
+
<tr style={{ borderBottom: '1px solid var(--border-color)' }}>
|
|
242
|
+
<td style={{ padding: '12px 16px' }}>
|
|
243
|
+
<code style={{ fontSize: '0.85rem', color: '#51332d', backgroundColor: '#efe2d6', padding: '4px 8px', borderRadius: '6px', fontWeight: '600' }}>--color-brown-50</code>
|
|
244
|
+
</td>
|
|
245
|
+
<td style={{ padding: '12px 16px' }}>
|
|
246
|
+
<code style={{ fontSize: '0.85rem', color: 'var(--text-secondary)', fontFamily: 'monospace' }}>#fdf3ea</code>
|
|
247
|
+
</td>
|
|
248
|
+
<td style={{ padding: '12px 16px' }}>
|
|
249
|
+
<div style={{ width: '36px', height: '20px', borderRadius: '4px', backgroundColor: '#fdf3ea', border: '1px solid var(--border-color)' }} />
|
|
250
|
+
</td>
|
|
251
|
+
<td style={{ padding: '12px 16px', fontSize: '0.9rem', color: 'var(--text-primary)' }}>
|
|
252
|
+
Fundo de cards, chips neutros, áreas de destaque leve
|
|
253
|
+
</td>
|
|
254
|
+
</tr>
|
|
255
|
+
<tr style={{ borderBottom: '1px solid var(--border-color)' }}>
|
|
256
|
+
<td style={{ padding: '12px 16px' }}>
|
|
257
|
+
<code style={{ fontSize: '0.85rem', color: '#51332d', backgroundColor: '#efe2d6', padding: '4px 8px', borderRadius: '6px', fontWeight: '600' }}>--color-cream</code>
|
|
258
|
+
</td>
|
|
259
|
+
<td style={{ padding: '12px 16px' }}>
|
|
260
|
+
<code style={{ fontSize: '0.85rem', color: 'var(--text-secondary)', fontFamily: 'monospace' }}>#fbf6f0</code>
|
|
261
|
+
</td>
|
|
262
|
+
<td style={{ padding: '12px 16px' }}>
|
|
263
|
+
<div style={{ width: '36px', height: '20px', borderRadius: '4px', backgroundColor: '#fbf6f0', border: '1px solid var(--border-color)' }} />
|
|
264
|
+
</td>
|
|
265
|
+
<td style={{ padding: '12px 16px', fontSize: '0.9rem', color: 'var(--text-primary)' }}>
|
|
266
|
+
Fundo de ecrãs secundários
|
|
267
|
+
</td>
|
|
268
|
+
</tr>
|
|
269
|
+
<tr>
|
|
270
|
+
<td style={{ padding: '12px 16px' }}>
|
|
271
|
+
<code style={{ fontSize: '0.85rem', color: '#51332d', backgroundColor: '#efe2d6', padding: '4px 8px', borderRadius: '6px', fontWeight: '600' }}>--color-canvas</code>
|
|
272
|
+
</td>
|
|
273
|
+
<td style={{ padding: '12px 16px' }}>
|
|
274
|
+
<code style={{ fontSize: '0.85rem', color: 'var(--text-secondary)', fontFamily: 'monospace' }}>#e7e5df</code>
|
|
275
|
+
</td>
|
|
276
|
+
<td style={{ padding: '12px 16px' }}>
|
|
277
|
+
<div style={{ width: '36px', height: '20px', borderRadius: '4px', backgroundColor: '#e7e5df', border: '1px solid var(--border-color)' }} />
|
|
278
|
+
</td>
|
|
279
|
+
<td style={{ padding: '12px 16px', fontSize: '0.9rem', color: 'var(--text-secondary)', fontStyle: 'italic' }}>
|
|
280
|
+
Fundo do arquivo de design no Figma (não usado na app)
|
|
281
|
+
</td>
|
|
282
|
+
</tr>
|
|
283
|
+
</tbody>
|
|
284
|
+
</table>
|
|
285
|
+
</div>
|
|
286
|
+
|
|
287
|
+
{/* Semânticas & Base */}
|
|
288
|
+
<div style={{
|
|
289
|
+
backgroundColor: 'var(--bg-surface)',
|
|
290
|
+
border: '1px solid var(--border-color)',
|
|
291
|
+
borderRadius: '16px',
|
|
292
|
+
padding: '1.5rem',
|
|
293
|
+
boxShadow: '0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03)',
|
|
294
|
+
marginBottom: '2.5rem'
|
|
295
|
+
}}>
|
|
296
|
+
<h3 style={{
|
|
297
|
+
fontFamily: 'var(--font-title)',
|
|
298
|
+
fontSize: '1.25rem',
|
|
299
|
+
fontWeight: '700',
|
|
300
|
+
color: 'var(--text-primary)',
|
|
301
|
+
marginTop: 0,
|
|
302
|
+
marginBottom: '1.25rem',
|
|
303
|
+
}}>Semânticas & Base</h3>
|
|
304
|
+
|
|
305
|
+
<table style={{
|
|
306
|
+
width: '100%',
|
|
307
|
+
borderCollapse: 'collapse',
|
|
308
|
+
textAlign: 'left'
|
|
309
|
+
}}>
|
|
310
|
+
<thead>
|
|
311
|
+
<tr style={{
|
|
312
|
+
borderBottom: '2px solid var(--border-color)',
|
|
313
|
+
}}>
|
|
314
|
+
<th style={{ padding: '10px 16px', fontSize: '0.75rem', fontWeight: '700', color: 'var(--text-secondary)', textTransform: 'uppercase', letterSpacing: '0.05em' }}>Token</th>
|
|
315
|
+
<th style={{ padding: '10px 16px', fontSize: '0.75rem', fontWeight: '700', color: 'var(--text-secondary)', textTransform: 'uppercase', letterSpacing: '0.05em' }}>Valor</th>
|
|
316
|
+
<th style={{ padding: '10px 16px', fontSize: '0.75rem', fontWeight: '700', color: 'var(--text-secondary)', textTransform: 'uppercase', letterSpacing: '0.05em', width: '80px' }}>Swatch</th>
|
|
317
|
+
<th style={{ padding: '10px 16px', fontSize: '0.75rem', fontWeight: '700', color: 'var(--text-secondary)', textTransform: 'uppercase', letterSpacing: '0.05em' }}>Uso</th>
|
|
318
|
+
</tr>
|
|
319
|
+
</thead>
|
|
320
|
+
<tbody>
|
|
321
|
+
<tr style={{ borderBottom: '1px solid var(--border-color)' }}>
|
|
322
|
+
<td style={{ padding: '12px 16px' }}>
|
|
323
|
+
<code style={{ fontSize: '0.85rem', color: 'var(--text-primary)', backgroundColor: 'var(--bg-app)', padding: '4px 8px', borderRadius: '6px', fontWeight: '600' }}>--color-success</code>
|
|
324
|
+
</td>
|
|
325
|
+
<td style={{ padding: '12px 16px' }}>
|
|
326
|
+
<code style={{ fontSize: '0.85rem', color: 'var(--text-secondary)', fontFamily: 'monospace' }}>#16915a</code>
|
|
327
|
+
</td>
|
|
328
|
+
<td style={{ padding: '12px 16px' }}>
|
|
329
|
+
<div style={{ width: '36px', height: '20px', borderRadius: '4px', backgroundColor: '#16915a', border: '1px solid rgba(0, 0, 0, 0.1)' }} />
|
|
330
|
+
</td>
|
|
331
|
+
<td style={{ padding: '12px 16px', fontSize: '0.9rem', color: 'var(--text-primary)' }}>
|
|
332
|
+
Sucesso, acertos, módulos concluídos
|
|
333
|
+
</td>
|
|
334
|
+
</tr>
|
|
335
|
+
<tr style={{ borderBottom: '1px solid var(--border-color)' }}>
|
|
336
|
+
<td style={{ padding: '12px 16px' }}>
|
|
337
|
+
<code style={{ fontSize: '0.85rem', color: 'var(--text-primary)', backgroundColor: 'var(--bg-app)', padding: '4px 8px', borderRadius: '6px', fontWeight: '600' }}>--color-error</code>
|
|
338
|
+
</td>
|
|
339
|
+
<td style={{ padding: '12px 16px' }}>
|
|
340
|
+
<code style={{ fontSize: '0.85rem', color: 'var(--text-secondary)', fontFamily: 'monospace' }}>#cf5b48</code>
|
|
341
|
+
</td>
|
|
342
|
+
<td style={{ padding: '12px 16px' }}>
|
|
343
|
+
<div style={{ width: '36px', height: '20px', borderRadius: '4px', backgroundColor: '#cf5b48', border: '1px solid rgba(0, 0, 0, 0.1)' }} />
|
|
344
|
+
</td>
|
|
345
|
+
<td style={{ padding: '12px 16px', fontSize: '0.9rem', color: 'var(--text-primary)' }}>
|
|
346
|
+
Erro, campo inválido
|
|
347
|
+
</td>
|
|
348
|
+
</tr>
|
|
349
|
+
<tr style={{ borderBottom: '1px solid var(--border-color)' }}>
|
|
350
|
+
<td style={{ padding: '12px 16px' }}>
|
|
351
|
+
<code style={{ fontSize: '0.85rem', color: 'var(--text-primary)', backgroundColor: 'var(--bg-app)', padding: '4px 8px', borderRadius: '6px', fontWeight: '600' }}>--color-info</code>
|
|
352
|
+
</td>
|
|
353
|
+
<td style={{ padding: '12px 16px' }}>
|
|
354
|
+
<code style={{ fontSize: '0.85rem', color: 'var(--text-secondary)', fontFamily: 'monospace' }}>#2a6fc2</code>
|
|
355
|
+
</td>
|
|
356
|
+
<td style={{ padding: '12px 16px' }}>
|
|
357
|
+
<div style={{ width: '36px', height: '20px', borderRadius: '4px', backgroundColor: '#2a6fc2', border: '1px solid rgba(0, 0, 0, 0.1)' }} />
|
|
358
|
+
</td>
|
|
359
|
+
<td style={{ padding: '12px 16px', fontSize: '0.9rem', color: 'var(--text-primary)' }}>
|
|
360
|
+
Informação, link
|
|
361
|
+
</td>
|
|
362
|
+
</tr>
|
|
363
|
+
<tr style={{ borderBottom: '1px solid var(--border-color)' }}>
|
|
364
|
+
<td style={{ padding: '12px 16px' }}>
|
|
365
|
+
<code style={{ fontSize: '0.85rem', color: 'var(--text-primary)', backgroundColor: 'var(--bg-app)', padding: '4px 8px', borderRadius: '6px', fontWeight: '600' }}>--color-black</code>
|
|
366
|
+
</td>
|
|
367
|
+
<td style={{ padding: '12px 16px' }}>
|
|
368
|
+
<code style={{ fontSize: '0.85rem', color: 'var(--text-secondary)', fontFamily: 'monospace' }}>#000000</code>
|
|
369
|
+
</td>
|
|
370
|
+
<td style={{ padding: '12px 16px' }}>
|
|
371
|
+
<div style={{ width: '36px', height: '20px', borderRadius: '4px', backgroundColor: '#000000', border: '1px solid rgba(0, 0, 0, 0.1)' }} />
|
|
372
|
+
</td>
|
|
373
|
+
<td style={{ padding: '12px 16px', fontSize: '0.9rem', color: 'var(--text-primary)' }}>
|
|
374
|
+
Preto Xetwa
|
|
375
|
+
</td>
|
|
376
|
+
</tr>
|
|
377
|
+
<tr>
|
|
378
|
+
<td style={{ padding: '12px 16px' }}>
|
|
379
|
+
<code style={{ fontSize: '0.85rem', color: 'var(--text-primary)', backgroundColor: 'var(--bg-app)', padding: '4px 8px', borderRadius: '6px', fontWeight: '600' }}>--color-white</code>
|
|
380
|
+
</td>
|
|
381
|
+
<td style={{ padding: '12px 16px' }}>
|
|
382
|
+
<code style={{ fontSize: '0.85rem', color: 'var(--text-secondary)', fontFamily: 'monospace' }}>#ffffff</code>
|
|
383
|
+
</td>
|
|
384
|
+
<td style={{ padding: '12px 16px' }}>
|
|
385
|
+
<div style={{ width: '36px', height: '20px', borderRadius: '4px', backgroundColor: '#ffffff', border: '1px solid var(--border-color)' }} />
|
|
386
|
+
</td>
|
|
387
|
+
<td style={{ padding: '12px 16px', fontSize: '0.9rem', color: 'var(--text-primary)' }}>
|
|
388
|
+
Fundo principal de ecrãs, cards
|
|
389
|
+
</td>
|
|
390
|
+
</tr>
|
|
391
|
+
</tbody>
|
|
392
|
+
</table>
|
|
393
|
+
</div>
|