@ciromaciel/dashboard-kit 1.3.0 → 1.4.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/package.json +1 -1
- package/src/components/ColumnBrand.jsx +56 -0
- package/src/components/SidebarShell.jsx +11 -11
- package/src/index.js +1 -0
package/package.json
CHANGED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { Box, Text, UnstyledButton } from '@mantine/core'
|
|
2
|
+
|
|
3
|
+
import { Wordmark } from './Wordmark'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* O topo da coluna: o nome do produto e, embaixo, o que ele cuida.
|
|
7
|
+
*
|
|
8
|
+
* VEIO DE SETE CÓPIAS IGUAIS (Blogs, Forms, Links, Newsletter, Pages, Tasks,
|
|
9
|
+
* Videos) e uma quase igual (People, com cinza e espaçamento próprios). A
|
|
10
|
+
* linha de baixo virou padrão em 10/10/2026 (Ciro): todo painel diz, em duas
|
|
11
|
+
* palavras, o que cabe nele — "Artigos · Publicação", "Edições · Assinantes".
|
|
12
|
+
* Ela orienta quem chega e separa produtos de nome parecido na mesma linha.
|
|
13
|
+
*
|
|
14
|
+
* O nome é a volta para `/` (a lista de recursos, ou o Início no painel sem
|
|
15
|
+
* recurso): o mesmo destino do item "Todos os …" da coluna.
|
|
16
|
+
*
|
|
17
|
+
* @param {string} name O nome do produto ("Blogs").
|
|
18
|
+
* @param {string} tagline Os dois termos, separados por " · ". Some quando
|
|
19
|
+
* não há: uma linha vazia ocuparia espaço sem dizer nada.
|
|
20
|
+
* @param {Function} onClick Ir para `/`.
|
|
21
|
+
* @param {string} label O rótulo de acessibilidade do nome ("Todos os blogs").
|
|
22
|
+
*/
|
|
23
|
+
export function ColumnBrand({ name, tagline, onClick, label }) {
|
|
24
|
+
return (
|
|
25
|
+
<Box
|
|
26
|
+
px={12}
|
|
27
|
+
pb={8}
|
|
28
|
+
>
|
|
29
|
+
<UnstyledButton
|
|
30
|
+
onClick={onClick}
|
|
31
|
+
aria-label={label ?? name}
|
|
32
|
+
w="100%"
|
|
33
|
+
style={{ display: 'block', textAlign: 'center' }}
|
|
34
|
+
>
|
|
35
|
+
<Wordmark
|
|
36
|
+
name={name}
|
|
37
|
+
size={28}
|
|
38
|
+
/>
|
|
39
|
+
</UnstyledButton>
|
|
40
|
+
|
|
41
|
+
{tagline && (
|
|
42
|
+
<Text
|
|
43
|
+
ta="center"
|
|
44
|
+
fz={10}
|
|
45
|
+
fw={800}
|
|
46
|
+
c="gray.4"
|
|
47
|
+
tt="uppercase"
|
|
48
|
+
lts="1.5px"
|
|
49
|
+
mt={6}
|
|
50
|
+
>
|
|
51
|
+
{tagline}
|
|
52
|
+
</Text>
|
|
53
|
+
)}
|
|
54
|
+
</Box>
|
|
55
|
+
)
|
|
56
|
+
}
|
|
@@ -39,7 +39,7 @@ import { NavItem } from './NavItem'
|
|
|
39
39
|
* Nada de quota entra aqui. O painel resolve o gate e passa `createAllowed`
|
|
40
40
|
* booleano — a coluna não sabe o que é um plano.
|
|
41
41
|
*/
|
|
42
|
-
/** O botão de criar na linha da busca: quadrado de
|
|
42
|
+
/** O botão de criar na linha da busca: quadrado de 36px, preto; em contorno cinza no limite do plano. */
|
|
43
43
|
function CreateSquare({ icon: Icon, label, isAllowed, onClick }) {
|
|
44
44
|
return (
|
|
45
45
|
<Tooltip
|
|
@@ -51,7 +51,7 @@ function CreateSquare({ icon: Icon, label, isAllowed, onClick }) {
|
|
|
51
51
|
data-create
|
|
52
52
|
onClick={onClick}
|
|
53
53
|
aria-label={label}
|
|
54
|
-
size={
|
|
54
|
+
size={36}
|
|
55
55
|
radius={0}
|
|
56
56
|
variant={isAllowed ? 'filled' : 'default'}
|
|
57
57
|
color="gray.9"
|
|
@@ -59,7 +59,7 @@ function CreateSquare({ icon: Icon, label, isAllowed, onClick }) {
|
|
|
59
59
|
style={{ flex: 'none', '--ai-hover': 'var(--mantine-color-gray-7)' }}
|
|
60
60
|
>
|
|
61
61
|
<Icon
|
|
62
|
-
size={
|
|
62
|
+
size={16}
|
|
63
63
|
stroke={2}
|
|
64
64
|
style={isAllowed ? undefined : { color: 'var(--mantine-color-gray-5)' }}
|
|
65
65
|
/>
|
|
@@ -137,13 +137,13 @@ export function SidebarShell({
|
|
|
137
137
|
{header}
|
|
138
138
|
|
|
139
139
|
{/*
|
|
140
|
-
A busca
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
140
|
+
A busca se alinha com a lista: mesma borda esquerda, ícone
|
|
141
|
+
centrado na coluna dos ícones dos itens e texto onde começa o
|
|
142
|
+
rótulo de um item (42px). A altura é a de um campo, 36px, menor
|
|
143
|
+
que um item (43px): com a altura de um item, busca e criar
|
|
144
|
+
pesavam mais que a lista que servem (Ciro, 10/10/2026).
|
|
145
145
|
|
|
146
|
-
CRIAR MORA NA LINHA DA BUSCA: um quadrado preto de
|
|
146
|
+
CRIAR MORA NA LINHA DA BUSCA: um quadrado preto de 36px com o
|
|
147
147
|
ícone, colado à direita do campo (escolha do Ciro em 10/10/2026,
|
|
148
148
|
entre cinco opções). Buscar e criar viram uma faixa só de
|
|
149
149
|
ferramentas, e a lista começa limpa logo abaixo. O preto aqui não
|
|
@@ -174,7 +174,7 @@ export function SidebarShell({
|
|
|
174
174
|
leftSectionWidth={42}
|
|
175
175
|
leftSection={
|
|
176
176
|
<IconSearch
|
|
177
|
-
size={
|
|
177
|
+
size={16}
|
|
178
178
|
stroke={1.5}
|
|
179
179
|
/>
|
|
180
180
|
}
|
|
@@ -194,7 +194,7 @@ export function SidebarShell({
|
|
|
194
194
|
</ActionIcon>
|
|
195
195
|
) : null
|
|
196
196
|
}
|
|
197
|
-
styles={{ input: { height:
|
|
197
|
+
styles={{ input: { height: 36, minHeight: 36, fontSize: 13, background: 'var(--mantine-color-gray-1)' } }}
|
|
198
198
|
/>
|
|
199
199
|
{onCreate && <CreateSquare {...criar} />}
|
|
200
200
|
</Group>
|
package/src/index.js
CHANGED
|
@@ -80,6 +80,7 @@ export { NavItem } from './components/NavItem'
|
|
|
80
80
|
export { GroupLabel } from './components/GroupLabel'
|
|
81
81
|
export { ResourceItem } from './components/ResourceItem'
|
|
82
82
|
export { ActiveResource } from './components/ActiveResource'
|
|
83
|
+
export { ColumnBrand } from './components/ColumnBrand'
|
|
83
84
|
export { ListSkeleton } from './components/ListSkeleton'
|
|
84
85
|
export { DashboardFrame, SIDEBAR_WIDTH } from './components/DashboardFrame'
|
|
85
86
|
export { SidebarShell } from './components/SidebarShell'
|