zark-design 2.0.0 → 3.0.1
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/bin/cli.js +363 -90
- package/package.json +2 -2
- package/templates/{README.md → README.md.hbs} +8 -8
- package/templates/_shared/ASSETS-README.md.hbs +39 -0
- package/templates/_shared/tokens.css.hbs +202 -0
- package/templates/_shared/tokens.js.hbs +34 -0
- package/templates/html/components.css +22 -22
- package/templates/html/{index.html → index.html.hbs} +3 -3
- package/templates/html/{showcase.html → showcase.html.hbs} +53 -1424
- package/templates/jsx/{App.example.jsx → App.example.jsx.hbs} +10 -10
- package/templates/jsx/components/Avatar.jsx +2 -2
- package/templates/jsx/components/Funnel.jsx +2 -2
- package/templates/jsx/components/Sidebar.jsx +1 -1
- package/templates/jsx/components.css +22 -22
- package/templates/jsx/icons.jsx +2 -2
- package/templates/jsx/index.js +27 -27
- package/templates/presets/zark/preset.json +26 -0
- package/templates/html/tokens.css +0 -283
- package/templates/jsx/assets/logo-zark-laranja.png +0 -0
- package/templates/jsx/assets/zark-icon.png +0 -0
- package/templates/jsx/tokens.css +0 -283
- package/templates/jsx/tokens.js +0 -62
- /package/templates/{html/assets/zark-icon.png → presets/zark/assets/icon.png} +0 -0
- /package/templates/{html/assets/logo-zark-laranja.png → presets/zark/assets/logo-primary.png} +0 -0
|
@@ -40,8 +40,8 @@ import {
|
|
|
40
40
|
Icons,
|
|
41
41
|
} from './index';
|
|
42
42
|
|
|
43
|
-
import logoZark from './assets/logo-
|
|
44
|
-
import iconZark from './assets/
|
|
43
|
+
import logoZark from './assets/logo-primary.png';
|
|
44
|
+
import iconZark from './assets/icon.png';
|
|
45
45
|
|
|
46
46
|
export default function App() {
|
|
47
47
|
const [tab, setTab] = useState('hoje');
|
|
@@ -53,7 +53,7 @@ export default function App() {
|
|
|
53
53
|
<div style={{ display: 'grid', gridTemplateColumns: 'var(--sidebar-w) 1fr', minHeight: '100vh' }}>
|
|
54
54
|
|
|
55
55
|
{/* SIDEBAR */}
|
|
56
|
-
<Sidebar logo={<img src={logoZark} alt="
|
|
56
|
+
<Sidebar logo={<img src={logoZark} alt="{{name}}" className="zk-sidebar-logo"/>}>
|
|
57
57
|
<SidebarSection>Workspace</SidebarSection>
|
|
58
58
|
<SidebarLink active icon={<Icons.Home/>} shortcut={<Kbd>⌥D</Kbd>}>Dashboard</SidebarLink>
|
|
59
59
|
<SidebarLink icon={<Icons.Activity/>} shortcut={<Kbd>⌥P</Kbd>}>Pipeline</SidebarLink>
|
|
@@ -61,7 +61,7 @@ export default function App() {
|
|
|
61
61
|
<SidebarLink icon={<Icons.Docs/>} shortcut={<Kbd>⌥F</Kbd>}>Financeiro</SidebarLink>
|
|
62
62
|
|
|
63
63
|
<SidebarSection>Compartilhados</SidebarSection>
|
|
64
|
-
<SidebarLink icon={<AvatarSpace name="Z" spaceKey="zark" size={18}/>}>
|
|
64
|
+
<SidebarLink icon={<AvatarSpace name="Z" spaceKey="zark" size={18}/>}>{{name}}</SidebarLink>
|
|
65
65
|
<SidebarLink icon={<AvatarSpace name="V" spaceKey="vipcar" size={18}/>}>VIPCAR</SidebarLink>
|
|
66
66
|
<SidebarLink icon={<AvatarSpace name="L" spaceKey="limppe" size={18}/>}>LIMPPE TEC</SidebarLink>
|
|
67
67
|
</Sidebar>
|
|
@@ -112,7 +112,7 @@ export default function App() {
|
|
|
112
112
|
<AlertCritical
|
|
113
113
|
title="8 tarefas em atraso"
|
|
114
114
|
items={[
|
|
115
|
-
{ tag: <TagDot kind="priority" value="urgent">URGENTE</TagDot>, label: 'Enviar proposta para TR PAULO', source: '
|
|
115
|
+
{ tag: <TagDot kind="priority" value="urgent">URGENTE</TagDot>, label: 'Enviar proposta para TR PAULO', source: '{{name}} · Tarefas', meta: '3 dias' },
|
|
116
116
|
{ tag: <TagDot kind="priority" value="urgent">URGENTE</TagDot>, label: 'CHAMANDO O HEXA!', source: 'VIPCAR · Acompanhamento', meta: '3 dias' },
|
|
117
117
|
]}
|
|
118
118
|
footer="+ 6 outras tarefas atrasadas"
|
|
@@ -124,7 +124,7 @@ export default function App() {
|
|
|
124
124
|
<Funnel stages={[
|
|
125
125
|
{ label: 'Novo', count: 0, color: '#3b82f6', percent: 0 },
|
|
126
126
|
{ label: 'Qualificando', count: 4, color: '#7c3aed', percent: 36 },
|
|
127
|
-
{ label: 'Reunião', count: 1, color: 'var(--
|
|
127
|
+
{ label: 'Reunião', count: 1, color: 'var(--brand-500)', percent: 18 },
|
|
128
128
|
{ label: 'Proposta', count: 0, color: '#06b6d4', percent: 0 },
|
|
129
129
|
{ label: 'Won', count: 0, color: 'var(--success-500)', percent: 0 },
|
|
130
130
|
{ label: 'Perdido', count: 0, color: 'var(--ink-300)', percent: 0 },
|
|
@@ -159,7 +159,7 @@ export default function App() {
|
|
|
159
159
|
/>
|
|
160
160
|
</KanbanColumn>
|
|
161
161
|
|
|
162
|
-
<KanbanColumn title="EM PROGRESSO" count={1} dotColor="var(--
|
|
162
|
+
<KanbanColumn title="EM PROGRESSO" count={1} dotColor="var(--brand-500)" onAddClick={() => {}}>
|
|
163
163
|
<LeadCard
|
|
164
164
|
hot
|
|
165
165
|
name="Paulo Turismo"
|
|
@@ -197,14 +197,14 @@ export default function App() {
|
|
|
197
197
|
</div>
|
|
198
198
|
|
|
199
199
|
<Spec label="Heights" value="22 / 28 / 32 / 40 px"/>
|
|
200
|
-
<Spec label="Primary fill" value="
|
|
200
|
+
<Spec label="Primary fill" value="brand-600 → brand-700 hover"/>
|
|
201
201
|
</Panel>
|
|
202
202
|
|
|
203
203
|
<div style={{ height: 32 }}/>
|
|
204
204
|
|
|
205
205
|
{/* Toast */}
|
|
206
|
-
<Toast tone="default" icon={<img src={iconZark} alt="
|
|
207
|
-
Welcome to
|
|
206
|
+
<Toast tone="default" icon={<img src={iconZark} alt="{{name}}" style={{ height: 14, filter: 'brightness(0) invert(1)' }}/>}>
|
|
207
|
+
Welcome to {{name}}!
|
|
208
208
|
</Toast>
|
|
209
209
|
|
|
210
210
|
{/* Modal */}
|
|
@@ -5,11 +5,11 @@ import React from 'react';
|
|
|
5
5
|
*
|
|
6
6
|
* @param name string — primeira letra é renderizada
|
|
7
7
|
* @param size number (px) default 24
|
|
8
|
-
* @param color CSS color default --
|
|
8
|
+
* @param color CSS color default --brand-500
|
|
9
9
|
* @param square boolean — usa raio --r-sm em vez de 50%
|
|
10
10
|
* @param src string — se passada, renderiza <img>
|
|
11
11
|
*/
|
|
12
|
-
export function Avatar({ name, size = 24, color = 'var(--
|
|
12
|
+
export function Avatar({ name, size = 24, color = 'var(--brand-500)', square = false, src, className = '', ...rest }) {
|
|
13
13
|
const cls = ['avatar', square && 'avatar-sq', className].filter(Boolean).join(' ');
|
|
14
14
|
const style = {
|
|
15
15
|
width: size,
|
|
@@ -4,7 +4,7 @@ import React from 'react';
|
|
|
4
4
|
* Funnel — horizontal segmented funnel (Pipeline de Vendas)
|
|
5
5
|
*
|
|
6
6
|
* @param stages [{ label, count, color, percent }]
|
|
7
|
-
* color — qualquer CSS color (sugestão: var(--
|
|
7
|
+
* color — qualquer CSS color (sugestão: var(--brand-500), var(--success-500), etc)
|
|
8
8
|
* percent — 0-100, largura proporcional do segmento
|
|
9
9
|
*/
|
|
10
10
|
export function Funnel({ stages = [] }) {
|
|
@@ -42,7 +42,7 @@ export function Funnel({ stages = [] }) {
|
|
|
42
42
|
export function ProgressBar({ value = 0, tone = 'success', height = 4 }) {
|
|
43
43
|
const colorMap = {
|
|
44
44
|
success: 'var(--success-500)',
|
|
45
|
-
ember: 'var(--
|
|
45
|
+
ember: 'var(--brand-500)',
|
|
46
46
|
danger: 'var(--danger-500)',
|
|
47
47
|
};
|
|
48
48
|
return (
|
|
@@ -37,7 +37,7 @@ export function SidebarLink({ active = false, icon, shortcut, onClick, href, chi
|
|
|
37
37
|
const cls = `zk-sidebar-link ${active ? 'active' : ''}`.trim();
|
|
38
38
|
const content = (
|
|
39
39
|
<>
|
|
40
|
-
{icon && <span style={{ display: 'inline-flex', color: active ? 'var(--
|
|
40
|
+
{icon && <span style={{ display: 'inline-flex', color: active ? 'var(--brand-600)' : 'var(--ink-400)' }}>{icon}</span>}
|
|
41
41
|
<span style={{ flex: 1 }}>{children}</span>
|
|
42
42
|
{shortcut}
|
|
43
43
|
</>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* ============================================================
|
|
2
|
-
|
|
2
|
+
Brand DESIGN SYSTEM — COMPONENTS
|
|
3
3
|
v3 · Sistemas/Apps · 2026
|
|
4
4
|
Importe APÓS tokens.css.
|
|
5
5
|
============================================================ */
|
|
@@ -33,18 +33,18 @@
|
|
|
33
33
|
.btn-full { width: 100%; }
|
|
34
34
|
|
|
35
35
|
.btn-primary {
|
|
36
|
-
background: var(--
|
|
36
|
+
background: var(--brand-600); color: #fff;
|
|
37
37
|
box-shadow: inset 0 1px 0 rgba(255,255,255,0.18), 0 1px 2px rgba(168, 53, 8, 0.18);
|
|
38
38
|
}
|
|
39
|
-
.btn-primary:hover { background: var(--
|
|
39
|
+
.btn-primary:hover { background: var(--brand-700); }
|
|
40
40
|
.btn-secondary {
|
|
41
41
|
background: var(--surface); color: var(--ink-700);
|
|
42
42
|
border-color: var(--line-300);
|
|
43
43
|
box-shadow: var(--shadow-xs);
|
|
44
44
|
}
|
|
45
45
|
.btn-secondary:hover { background: var(--paper); }
|
|
46
|
-
.btn-soft { background: var(--
|
|
47
|
-
.btn-soft:hover { background: var(--
|
|
46
|
+
.btn-soft { background: var(--brand-50); color: var(--brand-700); }
|
|
47
|
+
.btn-soft:hover { background: var(--brand-100); }
|
|
48
48
|
.btn-ghost { background: transparent; color: var(--ink-600); }
|
|
49
49
|
.btn-ghost:hover{ background: var(--ink-50); }
|
|
50
50
|
.btn-danger { background: var(--surface); color: var(--danger-700); border-color: var(--line-300); }
|
|
@@ -72,7 +72,7 @@
|
|
|
72
72
|
width: 100%;
|
|
73
73
|
transition: box-shadow var(--t-fast), border-color var(--t-fast);
|
|
74
74
|
}
|
|
75
|
-
.input:focus-within { box-shadow: var(--ring-focus); border-color: var(--
|
|
75
|
+
.input:focus-within { box-shadow: var(--ring-focus); border-color: var(--brand-400); }
|
|
76
76
|
.input.invalid { border-color: var(--danger-500); }
|
|
77
77
|
.input.invalid:focus-within { box-shadow: 0 0 0 3px rgba(220, 53, 69, 0.18); }
|
|
78
78
|
.input-sm { height: 28px; padding: 0 8px; font-size: var(--fs-sm); }
|
|
@@ -123,7 +123,7 @@
|
|
|
123
123
|
.tag-sm { height: 22px; padding: 0 8px; font-size: var(--fs-xs); }
|
|
124
124
|
.tag-md { height: 26px; padding: 0 10px; font-size: var(--fs-sm); }
|
|
125
125
|
.tag-square { border-radius: var(--r-xs); }
|
|
126
|
-
.tag-ember { background: var(--
|
|
126
|
+
.tag-ember { background: var(--brand-50); color: var(--brand-700); }
|
|
127
127
|
.tag-mono { background: var(--tag-bg); color: var(--tag-fg); }
|
|
128
128
|
.tag-success { background: var(--success-50); color: var(--success-700); }
|
|
129
129
|
.tag-warning { background: var(--warning-50); color: var(--warning-700); }
|
|
@@ -150,14 +150,14 @@
|
|
|
150
150
|
|
|
151
151
|
/* Status — 5 estados base */
|
|
152
152
|
.s-todo { background: #fff8e6; color: #9a6500; }
|
|
153
|
-
.s-progress { background: var(--
|
|
153
|
+
.s-progress { background: var(--brand-50); color: var(--brand-700); }
|
|
154
154
|
.s-review { background: var(--info-50); color: var(--info-700); }
|
|
155
155
|
.s-done { background: var(--success-50); color: var(--success-700); }
|
|
156
156
|
.s-canceled { background: var(--ink-50); color: var(--ink-500); }
|
|
157
157
|
/* Modificadores */
|
|
158
158
|
.s-overdue { background: var(--danger-50); color: var(--danger-700); }
|
|
159
159
|
.s-paused { background: var(--warning-50); color: var(--warning-700); }
|
|
160
|
-
.s-followup { background: var(--
|
|
160
|
+
.s-followup { background: var(--brand-50); color: var(--brand-700); }
|
|
161
161
|
|
|
162
162
|
/* Prioridade */
|
|
163
163
|
.p-urgent { background: var(--danger-50); color: var(--danger-700); }
|
|
@@ -179,7 +179,7 @@
|
|
|
179
179
|
.badge {
|
|
180
180
|
display: inline-flex; align-items: center; justify-content: center;
|
|
181
181
|
min-width: 18px; height: 18px; padding: 0 5px;
|
|
182
|
-
background: var(--
|
|
182
|
+
background: var(--brand-500); color: #fff;
|
|
183
183
|
font-size: var(--fs-2xs); font-weight: 600;
|
|
184
184
|
border-radius: var(--r-sm);
|
|
185
185
|
}
|
|
@@ -193,7 +193,7 @@
|
|
|
193
193
|
border: none; cursor: pointer; position: relative;
|
|
194
194
|
transition: background var(--t-base) var(--ease-out);
|
|
195
195
|
}
|
|
196
|
-
.toggle.on { background: var(--
|
|
196
|
+
.toggle.on { background: var(--brand-500); }
|
|
197
197
|
.toggle .knob {
|
|
198
198
|
position: absolute; top: 2px; left: 2px;
|
|
199
199
|
width: 16px; height: 16px; border-radius: var(--r-xs);
|
|
@@ -246,13 +246,13 @@
|
|
|
246
246
|
transition: all var(--t-fast);
|
|
247
247
|
}
|
|
248
248
|
.chip:hover { background: var(--ink-50); color: var(--ink-700); }
|
|
249
|
-
.chip.active { background: var(--
|
|
249
|
+
.chip.active { background: var(--brand-50); color: var(--brand-700); border-color: var(--brand-200); }
|
|
250
250
|
.chip .count { font-family: var(--font-mono); font-size: var(--fs-2xs); color: inherit; opacity: 0.7; }
|
|
251
251
|
|
|
252
252
|
/* ---------- AVATAR ---------- */
|
|
253
253
|
.avatar {
|
|
254
254
|
width: 24px; height: 24px;
|
|
255
|
-
background: var(--
|
|
255
|
+
background: var(--brand-500); color: #fff;
|
|
256
256
|
border-radius: 50%;
|
|
257
257
|
display: inline-flex; align-items: center; justify-content: center;
|
|
258
258
|
font-size: 11px; font-weight: 600;
|
|
@@ -328,7 +328,7 @@
|
|
|
328
328
|
font-size: var(--fs-xs);
|
|
329
329
|
letter-spacing: var(--ls-widest);
|
|
330
330
|
text-transform: uppercase;
|
|
331
|
-
color: var(--
|
|
331
|
+
color: var(--brand-600);
|
|
332
332
|
margin-bottom: 14px;
|
|
333
333
|
}
|
|
334
334
|
.section h2 {
|
|
@@ -394,7 +394,7 @@
|
|
|
394
394
|
color: #fff;
|
|
395
395
|
}
|
|
396
396
|
.stat-icon.green { background: var(--success-500); }
|
|
397
|
-
.stat-icon.orange { background: var(--
|
|
397
|
+
.stat-icon.orange { background: var(--brand-500); }
|
|
398
398
|
.stat-icon.blue { background: var(--info-500); }
|
|
399
399
|
.stat-icon.purple { background: #7c3aed; }
|
|
400
400
|
.stat-icon.red { background: var(--danger-500); }
|
|
@@ -518,7 +518,7 @@
|
|
|
518
518
|
cursor: pointer;
|
|
519
519
|
transition: all var(--t-fast);
|
|
520
520
|
}
|
|
521
|
-
.k-add:hover { color: var(--
|
|
521
|
+
.k-add:hover { color: var(--brand-700); border-color: var(--brand-300); background: var(--brand-50); }
|
|
522
522
|
|
|
523
523
|
/* ---------- LEAD CARD ---------- */
|
|
524
524
|
.lead-card {
|
|
@@ -536,7 +536,7 @@
|
|
|
536
536
|
.lead-card.is-overdue { border-left: 3px solid var(--danger-500); }
|
|
537
537
|
.lead-card-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
|
|
538
538
|
.lead-card-name { display: inline-flex; align-items: center; gap: 6px; font-size: var(--fs-md); font-weight: 600; color: var(--ink-700); }
|
|
539
|
-
.lead-card-name .flame { color: var(--
|
|
539
|
+
.lead-card-name .flame { color: var(--brand-500); }
|
|
540
540
|
.lead-card-sub { font-size: var(--fs-xs); color: var(--ink-400); }
|
|
541
541
|
.lead-card-meta { display: flex; align-items: center; justify-content: space-between; font-size: var(--fs-xs); color: var(--ink-400); }
|
|
542
542
|
.lead-card-meta .icons { display: inline-flex; gap: 6px; color: var(--ink-300); }
|
|
@@ -548,7 +548,7 @@
|
|
|
548
548
|
}
|
|
549
549
|
.lead-card-followup {
|
|
550
550
|
display: inline-flex; align-items: center; gap: 4px;
|
|
551
|
-
font-size: var(--fs-xs); color: var(--
|
|
551
|
+
font-size: var(--fs-xs); color: var(--brand-700); font-weight: 500;
|
|
552
552
|
}
|
|
553
553
|
|
|
554
554
|
/* ---------- EMPTY STATE ---------- */
|
|
@@ -620,8 +620,8 @@
|
|
|
620
620
|
}
|
|
621
621
|
.zk-sidebar-link:hover { background: var(--ink-50); color: var(--ink-700); }
|
|
622
622
|
.zk-sidebar-link.active {
|
|
623
|
-
color: var(--
|
|
624
|
-
background: var(--
|
|
623
|
+
color: var(--brand-700);
|
|
624
|
+
background: var(--brand-50);
|
|
625
625
|
font-weight: 500;
|
|
626
626
|
}
|
|
627
627
|
|
|
@@ -686,7 +686,7 @@
|
|
|
686
686
|
text-align: center;
|
|
687
687
|
font-size: var(--fs-md); color: var(--ink-600);
|
|
688
688
|
}
|
|
689
|
-
.announce a { color: var(--
|
|
689
|
+
.announce a { color: var(--brand-700); text-decoration: underline; }
|
|
690
690
|
.tip {
|
|
691
691
|
display: flex; gap: 12px; padding: 14px;
|
|
692
692
|
background: var(--surface);
|
|
@@ -695,7 +695,7 @@
|
|
|
695
695
|
max-width: 320px;
|
|
696
696
|
box-shadow: var(--shadow-md);
|
|
697
697
|
}
|
|
698
|
-
.tip .ico { color: var(--
|
|
698
|
+
.tip .ico { color: var(--brand-500); margin-top: 2px; }
|
|
699
699
|
.tip .what {
|
|
700
700
|
font-size: var(--fs-xs); font-family: var(--font-mono);
|
|
701
701
|
letter-spacing: var(--ls-wider);
|
package/templates/jsx/icons.jsx
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
//
|
|
1
|
+
// Brand Icon Set — outline · stroke 1.5px · viewBox 18×18 · currentColor
|
|
2
2
|
// Usage:
|
|
3
3
|
// import { Icons } from './icons';
|
|
4
4
|
// <Icons.Search size={16}/>
|
|
5
|
-
// <Icons.Bell size={20} style={{ color: 'var(--
|
|
5
|
+
// <Icons.Bell size={20} style={{ color: 'var(--brand-500)' }}/>
|
|
6
6
|
|
|
7
7
|
import React from 'react';
|
|
8
8
|
|
package/templates/jsx/index.js
CHANGED
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
//
|
|
1
|
+
// Design System — barrel export
|
|
2
2
|
// Importe componentes individuais ou o objeto inteiro:
|
|
3
|
-
//
|
|
3
|
+
// import { Button, TagDot, StatCard } from '@zark/design-system-apps/jsx';
|
|
4
4
|
|
|
5
|
-
export { Button }
|
|
6
|
-
export { Input, UrlInputFull }
|
|
7
|
-
export { Tag }
|
|
8
|
-
export { TagDot }
|
|
9
|
-
export { Badge }
|
|
10
|
-
export { Toggle }
|
|
11
|
-
export { Segmented }
|
|
12
|
-
export { Chips }
|
|
13
|
-
export { StatCard }
|
|
14
|
-
export { AlertCritical }
|
|
15
|
-
export { Funnel, ProgressBar }
|
|
16
|
-
export { EmptyState }
|
|
17
|
-
export { KanbanColumn, KanbanBoard }
|
|
18
|
-
export { LeadCard }
|
|
19
|
-
export { TableActions }
|
|
5
|
+
export { Button } from './components/Button.jsx';
|
|
6
|
+
export { Input, UrlInputFull } from './components/Input.jsx';
|
|
7
|
+
export { Tag } from './components/Tag.jsx';
|
|
8
|
+
export { TagDot } from './components/TagDot.jsx';
|
|
9
|
+
export { Badge } from './components/Badge.jsx';
|
|
10
|
+
export { Toggle } from './components/Toggle.jsx';
|
|
11
|
+
export { Segmented } from './components/Segmented.jsx';
|
|
12
|
+
export { Chips } from './components/Chip.jsx';
|
|
13
|
+
export { StatCard } from './components/StatCard.jsx';
|
|
14
|
+
export { AlertCritical } from './components/AlertCritical.jsx';
|
|
15
|
+
export { Funnel, ProgressBar } from './components/Funnel.jsx';
|
|
16
|
+
export { EmptyState } from './components/EmptyState.jsx';
|
|
17
|
+
export { KanbanColumn, KanbanBoard } from './components/KanbanColumn.jsx';
|
|
18
|
+
export { LeadCard } from './components/LeadCard.jsx';
|
|
19
|
+
export { TableActions } from './components/TableActions.jsx';
|
|
20
20
|
export { Sidebar, SidebarLink, SidebarSection } from './components/Sidebar.jsx';
|
|
21
|
-
export { Panel }
|
|
22
|
-
export { Section }
|
|
23
|
-
export { Modal }
|
|
24
|
-
export { Toast }
|
|
25
|
-
export { Announce, Tip }
|
|
26
|
-
export { CodeBlock }
|
|
27
|
-
export { Avatar, AvatarSpace }
|
|
28
|
-
export { Kbd }
|
|
29
|
-
export { Spec }
|
|
21
|
+
export { Panel } from './components/Panel.jsx';
|
|
22
|
+
export { Section } from './components/Section.jsx';
|
|
23
|
+
export { Modal } from './components/Modal.jsx';
|
|
24
|
+
export { Toast } from './components/Toast.jsx';
|
|
25
|
+
export { Announce, Tip } from './components/Banner.jsx';
|
|
26
|
+
export { CodeBlock } from './components/CodeBlock.jsx';
|
|
27
|
+
export { Avatar, AvatarSpace } from './components/Avatar.jsx';
|
|
28
|
+
export { Kbd } from './components/Kbd.jsx';
|
|
29
|
+
export { Spec } from './components/Spec.jsx';
|
|
30
30
|
|
|
31
|
-
export { Icons }
|
|
31
|
+
export { Icons } from './icons.jsx';
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ZARK",
|
|
3
|
+
"slug": "zark",
|
|
4
|
+
"preset": "zark",
|
|
5
|
+
"brand": {
|
|
6
|
+
"50": "#fff3e9",
|
|
7
|
+
"100": "#ffe1c8",
|
|
8
|
+
"200": "#ffc28e",
|
|
9
|
+
"300": "#ffa056",
|
|
10
|
+
"400": "#ff8a3a",
|
|
11
|
+
"500": "#f56f10",
|
|
12
|
+
"600": "#d45e0d",
|
|
13
|
+
"700": "#ad4a09",
|
|
14
|
+
"800": "#843706",
|
|
15
|
+
"900": "#5e2704",
|
|
16
|
+
"ring": "rgba(255, 93, 31, 0.20)",
|
|
17
|
+
"ringSoft": "rgba(255, 93, 31, 0.12)",
|
|
18
|
+
"ringDark": "rgba(255, 138, 58, 0.30)",
|
|
19
|
+
"ringSoftDark": "rgba(255, 138, 58, 0.16)"
|
|
20
|
+
},
|
|
21
|
+
"fonts": {
|
|
22
|
+
"ui": "Inter",
|
|
23
|
+
"mono": "JetBrains Mono",
|
|
24
|
+
"display": "Space Grotesk"
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -1,283 +0,0 @@
|
|
|
1
|
-
/* ============================================================
|
|
2
|
-
ZARK DESIGN SYSTEM — TOKENS
|
|
3
|
-
v3 · Sistemas/Apps · 2026
|
|
4
|
-
Importe este arquivo no entry-point do projeto antes de
|
|
5
|
-
components.css.
|
|
6
|
-
============================================================ */
|
|
7
|
-
|
|
8
|
-
:root {
|
|
9
|
-
/* ---------- BRAND / EMBER (Liquid Lava scale) ---------- */
|
|
10
|
-
--ember-50: #fff3e9;
|
|
11
|
-
--ember-100: #ffe1c8;
|
|
12
|
-
--ember-200: #ffc28e;
|
|
13
|
-
--ember-300: #ffa056;
|
|
14
|
-
--ember-400: #ff8a3a;
|
|
15
|
-
--ember-500: #f56f10; /* LIQUID LAVA — brand primary */
|
|
16
|
-
--ember-600: #d45e0d;
|
|
17
|
-
--ember-700: #ad4a09;
|
|
18
|
-
--ember-800: #843706;
|
|
19
|
-
--ember-900: #5e2704;
|
|
20
|
-
--liquid-lava: #f56f10;
|
|
21
|
-
--dark-void: #151419;
|
|
22
|
-
--glucon-grey: #1b1a1e;
|
|
23
|
-
|
|
24
|
-
/* ---------- NEUTRALS (warm paper → ink) ---------- */
|
|
25
|
-
--paper: #fafaf8;
|
|
26
|
-
--canvas: #f5f4f1;
|
|
27
|
-
--surface: #ffffff;
|
|
28
|
-
--line-100: #f0eeea;
|
|
29
|
-
--line-200: #e8e6e1;
|
|
30
|
-
--line-300: #d8d5cf;
|
|
31
|
-
|
|
32
|
-
--ink-50: #f4f3f0;
|
|
33
|
-
--ink-100: #e8e6e1;
|
|
34
|
-
--ink-200: #c8c5bf;
|
|
35
|
-
--ink-300: #a09c95;
|
|
36
|
-
--ink-400: #6f6b64;
|
|
37
|
-
--ink-500: #4a4741;
|
|
38
|
-
--ink-600: #2e2c28;
|
|
39
|
-
--ink-700: #1a1916;
|
|
40
|
-
--ink-800: #111110;
|
|
41
|
-
--ink-900: #0a0a09;
|
|
42
|
-
|
|
43
|
-
/* ---------- SEMANTIC ---------- */
|
|
44
|
-
--success-50: #ecfdf3;
|
|
45
|
-
--success-500: #10a960;
|
|
46
|
-
--success-700: #067a44;
|
|
47
|
-
|
|
48
|
-
--warning-50: #fff8e6;
|
|
49
|
-
--warning-500: #d99000;
|
|
50
|
-
--warning-700: #9a6500;
|
|
51
|
-
|
|
52
|
-
--danger-50: #fef1f1;
|
|
53
|
-
--danger-500: #dc3545;
|
|
54
|
-
--danger-700: #a52833;
|
|
55
|
-
|
|
56
|
-
--info-50: #eef5ff;
|
|
57
|
-
--info-500: #2f7adc;
|
|
58
|
-
--info-700: #1f5ba8;
|
|
59
|
-
|
|
60
|
-
--tag-bg: #fff0e0;
|
|
61
|
-
--tag-fg: #ad4a09;
|
|
62
|
-
--code-bg: #fff5ea;
|
|
63
|
-
--code-fg: #ad4a09;
|
|
64
|
-
|
|
65
|
-
/* ---------- SPACE / CLIENTE COLORS (CRM) ---------- */
|
|
66
|
-
--space-zark: #f56f10;
|
|
67
|
-
--space-zark-soft: #fff3e9;
|
|
68
|
-
--space-allsec: #c2410c;
|
|
69
|
-
--space-allsec-soft: #fff3e9;
|
|
70
|
-
--space-vipcar: #ea580c;
|
|
71
|
-
--space-vipcar-soft: #fff3e9;
|
|
72
|
-
--space-limppe: #f59e0b;
|
|
73
|
-
--space-limppe-soft: #fff8e6;
|
|
74
|
-
--space-gerais: #1f2937;
|
|
75
|
-
--space-gerais-soft: #f4f3f0;
|
|
76
|
-
--space-mixshop: #b91c1c;
|
|
77
|
-
--space-mixshop-soft:#fef1f1;
|
|
78
|
-
--space-vipseg: #991b1b;
|
|
79
|
-
--space-vipseg-soft: #fef1f1;
|
|
80
|
-
|
|
81
|
-
/* ---------- TYPOGRAPHY ----------
|
|
82
|
-
Inter → UI texto + NÚMEROS (KPIs, valores, contadores)
|
|
83
|
-
JetBrains → Código, labels técnicos, kbd
|
|
84
|
-
Space Grotesk→ TÍTULOS (h1, h2, h3, modal titles, header bands)
|
|
85
|
-
*/
|
|
86
|
-
--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
|
|
87
|
-
--font-mono: "JetBrains Mono", "SF Mono", Menlo, Consolas, monospace;
|
|
88
|
-
--font-display: "Space Grotesk", "Inter Tight", "Inter", sans-serif;
|
|
89
|
-
--font-ui: "Inter", -apple-system, sans-serif;
|
|
90
|
-
|
|
91
|
-
/* type scale (px) */
|
|
92
|
-
--fs-2xs: 10px;
|
|
93
|
-
--fs-xs: 11px;
|
|
94
|
-
--fs-sm: 12px;
|
|
95
|
-
--fs-md: 13px;
|
|
96
|
-
--fs-base:14px;
|
|
97
|
-
--fs-lg: 16px;
|
|
98
|
-
--fs-xl: 18px;
|
|
99
|
-
--fs-2xl: 22px;
|
|
100
|
-
--fs-3xl: 28px;
|
|
101
|
-
--fs-4xl: 36px;
|
|
102
|
-
--fs-5xl: 48px;
|
|
103
|
-
--fs-6xl: 64px;
|
|
104
|
-
--fs-display: 88px;
|
|
105
|
-
|
|
106
|
-
/* line-heights */
|
|
107
|
-
--lh-tight: 1.1;
|
|
108
|
-
--lh-snug: 1.25;
|
|
109
|
-
--lh-base: 1.45;
|
|
110
|
-
--lh-loose: 1.6;
|
|
111
|
-
|
|
112
|
-
/* letter spacing */
|
|
113
|
-
--ls-tight: -0.02em;
|
|
114
|
-
--ls-snug: -0.01em;
|
|
115
|
-
--ls-normal: 0;
|
|
116
|
-
--ls-wide: 0.04em;
|
|
117
|
-
--ls-wider: 0.08em;
|
|
118
|
-
--ls-widest: 0.14em;
|
|
119
|
-
|
|
120
|
-
/* weights */
|
|
121
|
-
--fw-regular: 400;
|
|
122
|
-
--fw-medium: 500;
|
|
123
|
-
--fw-semibold:600;
|
|
124
|
-
--fw-bold: 700;
|
|
125
|
-
|
|
126
|
-
/* ---------- SPACING (4px base) ---------- */
|
|
127
|
-
--sp-0: 0;
|
|
128
|
-
--sp-1: 2px;
|
|
129
|
-
--sp-2: 4px;
|
|
130
|
-
--sp-3: 6px;
|
|
131
|
-
--sp-4: 8px;
|
|
132
|
-
--sp-5: 10px;
|
|
133
|
-
--sp-6: 12px;
|
|
134
|
-
--sp-7: 14px;
|
|
135
|
-
--sp-8: 16px;
|
|
136
|
-
--sp-10: 20px;
|
|
137
|
-
--sp-12: 24px;
|
|
138
|
-
--sp-14: 28px;
|
|
139
|
-
--sp-16: 32px;
|
|
140
|
-
--sp-20: 40px;
|
|
141
|
-
--sp-24: 48px;
|
|
142
|
-
--sp-32: 64px;
|
|
143
|
-
--sp-40: 80px;
|
|
144
|
-
--sp-48: 96px;
|
|
145
|
-
|
|
146
|
-
/* ---------- RADII (sem pill) ---------- */
|
|
147
|
-
--r-xs: 3px;
|
|
148
|
-
--r-sm: 4px;
|
|
149
|
-
--r-md: 6px;
|
|
150
|
-
--r-lg: 8px;
|
|
151
|
-
--r-xl: 12px;
|
|
152
|
-
--r-2xl: 16px;
|
|
153
|
-
--r-3xl: 20px;
|
|
154
|
-
|
|
155
|
-
/* ---------- SHADOWS (warm-black, never cool-black) ---------- */
|
|
156
|
-
--shadow-xs: 0 1px 0 rgba(20, 17, 12, 0.04);
|
|
157
|
-
--shadow-sm: 0 1px 2px rgba(20, 17, 12, 0.05), 0 0 0 1px rgba(20, 17, 12, 0.04);
|
|
158
|
-
--shadow-md: 0 4px 12px rgba(20, 17, 12, 0.06), 0 1px 2px rgba(20, 17, 12, 0.05);
|
|
159
|
-
--shadow-lg: 0 12px 32px rgba(20, 17, 12, 0.08), 0 2px 6px rgba(20, 17, 12, 0.04);
|
|
160
|
-
--shadow-xl: 0 24px 64px rgba(20, 17, 12, 0.12), 0 4px 12px rgba(20, 17, 12, 0.05);
|
|
161
|
-
--shadow-modal: 0 32px 96px rgba(20, 17, 12, 0.18), 0 8px 24px rgba(20, 17, 12, 0.08);
|
|
162
|
-
--shadow-inset: inset 0 1px 0 rgba(255, 255, 255, 0.08);
|
|
163
|
-
|
|
164
|
-
--ring-focus: 0 0 0 3px rgba(255, 93, 31, 0.20);
|
|
165
|
-
--ring-focus-soft: 0 0 0 3px rgba(255, 93, 31, 0.12);
|
|
166
|
-
|
|
167
|
-
/* ---------- MOTION ---------- */
|
|
168
|
-
--ease-out: cubic-bezier(0.22, 1, 0.36, 1);
|
|
169
|
-
--ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
|
|
170
|
-
--ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
171
|
-
--t-fast: 120ms;
|
|
172
|
-
--t-base: 180ms;
|
|
173
|
-
--t-slow: 280ms;
|
|
174
|
-
--t-slower: 420ms;
|
|
175
|
-
|
|
176
|
-
/* ---------- LAYOUT ---------- */
|
|
177
|
-
--sidebar-w: 240px;
|
|
178
|
-
--topbar-h: 56px;
|
|
179
|
-
--container-max: 1280px;
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
/* ============================================================
|
|
183
|
-
DARK THEME
|
|
184
|
-
============================================================ */
|
|
185
|
-
[data-theme="dark"] {
|
|
186
|
-
--ember-50: #2a1810;
|
|
187
|
-
--ember-100: #3d2114;
|
|
188
|
-
--ember-200: #5e2704;
|
|
189
|
-
--ember-300: #843706;
|
|
190
|
-
--ember-400: #ad4a09;
|
|
191
|
-
--ember-500: #f56f10; /* brand inalterado */
|
|
192
|
-
--ember-600: #ff8a3a;
|
|
193
|
-
--ember-700: #ffa056;
|
|
194
|
-
--ember-800: #ffc28e;
|
|
195
|
-
--ember-900: #ffe1c8;
|
|
196
|
-
|
|
197
|
-
--paper: #0e0d11;
|
|
198
|
-
--canvas: #151419;
|
|
199
|
-
--surface: #1b1a1e;
|
|
200
|
-
--line-100: #232227;
|
|
201
|
-
--line-200: #2c2b32;
|
|
202
|
-
--line-300: #3a383f;
|
|
203
|
-
|
|
204
|
-
--ink-50: #1a1916;
|
|
205
|
-
--ink-100: #2c2b27;
|
|
206
|
-
--ink-200: #4a4741;
|
|
207
|
-
--ink-300: #6f6b64;
|
|
208
|
-
--ink-400: #a09c95;
|
|
209
|
-
--ink-500: #c8c5bf;
|
|
210
|
-
--ink-600: #e0ddd6;
|
|
211
|
-
--ink-700: #f0ede5;
|
|
212
|
-
--ink-800: #f7f5ef;
|
|
213
|
-
--ink-900: #fafaf8;
|
|
214
|
-
|
|
215
|
-
--success-50: #0f2419;
|
|
216
|
-
--warning-50: #2a1f08;
|
|
217
|
-
--danger-50: #2a1010;
|
|
218
|
-
--info-50: #0e1a2c;
|
|
219
|
-
|
|
220
|
-
--tag-bg: #3d2114;
|
|
221
|
-
--tag-fg: #ffc28e;
|
|
222
|
-
--code-bg: #2a1810;
|
|
223
|
-
--code-fg: #ffa056;
|
|
224
|
-
|
|
225
|
-
--shadow-xs: 0 1px 0 rgba(0, 0, 0, 0.5);
|
|
226
|
-
--shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.4), 0 0 0 1px rgba(255, 255, 255, 0.04);
|
|
227
|
-
--shadow-md: 0 4px 12px rgba(0, 0, 0, 0.4), 0 1px 2px rgba(0, 0, 0, 0.3);
|
|
228
|
-
--shadow-lg: 0 12px 32px rgba(0, 0, 0, 0.5), 0 2px 6px rgba(0, 0, 0, 0.3);
|
|
229
|
-
--shadow-xl: 0 24px 64px rgba(0, 0, 0, 0.6), 0 4px 12px rgba(0, 0, 0, 0.3);
|
|
230
|
-
--shadow-modal: 0 32px 96px rgba(0, 0, 0, 0.7), 0 8px 24px rgba(0, 0, 0, 0.4);
|
|
231
|
-
--shadow-inset: inset 0 1px 0 rgba(255, 255, 255, 0.04);
|
|
232
|
-
|
|
233
|
-
--ring-focus: 0 0 0 3px rgba(255, 138, 58, 0.30);
|
|
234
|
-
--ring-focus-soft: 0 0 0 3px rgba(255, 138, 58, 0.16);
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
/* Auto dark via OS, opt-out: <html data-theme="light"> */
|
|
238
|
-
@media (prefers-color-scheme: dark) {
|
|
239
|
-
:root:not([data-theme="light"]) {
|
|
240
|
-
--ember-50: #2a1810; --ember-100: #3d2114; --ember-200: #5e2704;
|
|
241
|
-
--ember-300: #843706; --ember-400: #ad4a09; --ember-500: #f56f10;
|
|
242
|
-
--ember-600: #ff8a3a; --ember-700: #ffa056; --ember-800: #ffc28e;
|
|
243
|
-
--ember-900: #ffe1c8;
|
|
244
|
-
--paper: #0e0d11; --canvas: #151419; --surface: #1b1a1e;
|
|
245
|
-
--line-100: #232227; --line-200: #2c2b32; --line-300: #3a383f;
|
|
246
|
-
--ink-50: #1a1916; --ink-100: #2c2b27; --ink-200: #4a4741;
|
|
247
|
-
--ink-300: #6f6b64; --ink-400: #a09c95; --ink-500: #c8c5bf;
|
|
248
|
-
--ink-600: #e0ddd6; --ink-700: #f0ede5; --ink-800: #f7f5ef;
|
|
249
|
-
--ink-900: #fafaf8;
|
|
250
|
-
--success-50: #0f2419; --warning-50: #2a1f08; --danger-50: #2a1010; --info-50: #0e1a2c;
|
|
251
|
-
--tag-bg: #3d2114; --tag-fg: #ffc28e; --code-bg: #2a1810; --code-fg: #ffa056;
|
|
252
|
-
--shadow-xs: 0 1px 0 rgba(0, 0, 0, 0.5);
|
|
253
|
-
--shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.4), 0 0 0 1px rgba(255, 255, 255, 0.04);
|
|
254
|
-
--shadow-md: 0 4px 12px rgba(0, 0, 0, 0.4), 0 1px 2px rgba(0, 0, 0, 0.3);
|
|
255
|
-
--shadow-lg: 0 12px 32px rgba(0, 0, 0, 0.5), 0 2px 6px rgba(0, 0, 0, 0.3);
|
|
256
|
-
--shadow-xl: 0 24px 64px rgba(0, 0, 0, 0.6), 0 4px 12px rgba(0, 0, 0, 0.3);
|
|
257
|
-
--shadow-modal: 0 32px 96px rgba(0, 0, 0, 0.7), 0 8px 24px rgba(0, 0, 0, 0.4);
|
|
258
|
-
--shadow-inset: inset 0 1px 0 rgba(255, 255, 255, 0.04);
|
|
259
|
-
--ring-focus: 0 0 0 3px rgba(255, 138, 58, 0.30);
|
|
260
|
-
--ring-focus-soft: 0 0 0 3px rgba(255, 138, 58, 0.16);
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
|
|
264
|
-
/* ============================================================
|
|
265
|
-
BASE
|
|
266
|
-
============================================================ */
|
|
267
|
-
* { box-sizing: border-box; }
|
|
268
|
-
html, body {
|
|
269
|
-
margin: 0; padding: 0;
|
|
270
|
-
font-family: var(--font-sans);
|
|
271
|
-
font-size: var(--fs-base);
|
|
272
|
-
line-height: var(--lh-base);
|
|
273
|
-
color: var(--ink-700);
|
|
274
|
-
background: var(--paper);
|
|
275
|
-
-webkit-font-smoothing: antialiased;
|
|
276
|
-
text-rendering: optimizeLegibility;
|
|
277
|
-
}
|
|
278
|
-
::selection { background: var(--ember-200); color: var(--ink-700); }
|
|
279
|
-
a { color: inherit; text-decoration: none; }
|
|
280
|
-
button { font-family: inherit; }
|
|
281
|
-
|
|
282
|
-
@keyframes zk-spin { to { transform: rotate(360deg); } }
|
|
283
|
-
@keyframes zk-fadein { from { opacity: 0; transform: translateY(4px);} to { opacity: 1; transform: translateY(0);} }
|
|
Binary file
|
|
Binary file
|