@snksergio/design-system 0.58.0 → 0.60.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/dist-lib/index.cjs +4461 -16
- package/dist-lib/index.cjs.map +1 -1
- package/dist-lib/index.mjs +4477 -32
- package/dist-lib/index.mjs.map +1 -1
- package/dist-lib/src/components/index.d.ts +1 -0
- package/dist-lib/src/components/index.d.ts.map +1 -1
- package/dist-lib/src/components/ui/Gantt/gantt.d.ts +21 -0
- package/dist-lib/src/components/ui/Gantt/gantt.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Gantt/gantt.styles.d.ts +2985 -0
- package/dist-lib/src/components/ui/Gantt/gantt.styles.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Gantt/gantt.types.d.ts +445 -0
- package/dist-lib/src/components/ui/Gantt/gantt.types.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Gantt/hooks/drag.d.ts +71 -0
- package/dist-lib/src/components/ui/Gantt/hooks/drag.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Gantt/hooks/filters.d.ts +79 -0
- package/dist-lib/src/components/ui/Gantt/hooks/filters.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Gantt/hooks/layout.d.ts +232 -0
- package/dist-lib/src/components/ui/Gantt/hooks/layout.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Gantt/hooks/links.d.ts +120 -0
- package/dist-lib/src/components/ui/Gantt/hooks/links.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Gantt/hooks/week-segments.d.ts +69 -0
- package/dist-lib/src/components/ui/Gantt/hooks/week-segments.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Gantt/index.d.ts +46 -0
- package/dist-lib/src/components/ui/Gantt/index.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Gantt/parts/gantt-applied-filters.d.ts +20 -0
- package/dist-lib/src/components/ui/Gantt/parts/gantt-applied-filters.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Gantt/parts/gantt-bar.d.ts +68 -0
- package/dist-lib/src/components/ui/Gantt/parts/gantt-bar.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Gantt/parts/gantt-filter-panel.d.ts +16 -0
- package/dist-lib/src/components/ui/Gantt/parts/gantt-filter-panel.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Gantt/parts/gantt-grid.d.ts +55 -0
- package/dist-lib/src/components/ui/Gantt/parts/gantt-grid.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Gantt/parts/gantt-links-layer.d.ts +46 -0
- package/dist-lib/src/components/ui/Gantt/parts/gantt-links-layer.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Gantt/parts/gantt-skeleton.d.ts +36 -0
- package/dist-lib/src/components/ui/Gantt/parts/gantt-skeleton.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Gantt/parts/gantt-toolbar.d.ts +46 -0
- package/dist-lib/src/components/ui/Gantt/parts/gantt-toolbar.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Gantt/views/calendar.d.ts +64 -0
- package/dist-lib/src/components/ui/Gantt/views/calendar.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Gantt/views/list.d.ts +53 -0
- package/dist-lib/src/components/ui/Gantt/views/list.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Gantt/views/timeline.d.ts +85 -0
- package/dist-lib/src/components/ui/Gantt/views/timeline.d.ts.map +1 -0
- package/dist-lib/src/components/ui/MessageBubble/index.d.ts +1 -1
- package/dist-lib/src/components/ui/MessageBubble/index.d.ts.map +1 -1
- package/dist-lib/src/components/ui/MessageBubble/message-bubble.d.ts +1 -1
- package/dist-lib/src/components/ui/MessageBubble/message-bubble.d.ts.map +1 -1
- package/dist-lib/src/components/ui/MessageBubble/message-bubble.styles.d.ts +22 -2
- package/dist-lib/src/components/ui/MessageBubble/message-bubble.styles.d.ts.map +1 -1
- package/dist-lib/src/components/ui/MessageBubble/message-bubble.types.d.ts +8 -0
- package/dist-lib/src/components/ui/MessageBubble/message-bubble.types.d.ts.map +1 -1
- package/dist-lib/theme/brand-pay.css +205 -189
- package/dist-lib/theme/brand-vibrant.css +162 -148
- package/dist-lib/theme.css +19 -0
- package/dist-lib/tokens/brands/blue/primitives/color-palette.d.ts +28 -0
- package/dist-lib/tokens/brands/blue/primitives/color-palette.d.ts.map +1 -1
- package/dist-lib/tokens/brands/blue/semantic/color-dark.d.ts +16 -0
- package/dist-lib/tokens/brands/blue/semantic/color-dark.d.ts.map +1 -1
- package/dist-lib/tokens/brands/blue/semantic/color-light.d.ts +16 -0
- package/dist-lib/tokens/brands/blue/semantic/color-light.d.ts.map +1 -1
- package/dist-lib/tokens/brands/default/primitives/color-palette.d.ts +29 -0
- package/dist-lib/tokens/brands/default/primitives/color-palette.d.ts.map +1 -1
- package/dist-lib/tokens/brands/default/semantic/color-dark.d.ts +16 -0
- package/dist-lib/tokens/brands/default/semantic/color-dark.d.ts.map +1 -1
- package/dist-lib/tokens/brands/default/semantic/color-light.d.ts +16 -0
- package/dist-lib/tokens/brands/default/semantic/color-light.d.ts.map +1 -1
- package/dist-lib/tokens/brands/default/semantic/elevation.d.ts +4 -0
- package/dist-lib/tokens/brands/default/semantic/elevation.d.ts.map +1 -1
- package/dist-lib/tokens/brands/green/primitives/color-palette.d.ts +28 -0
- package/dist-lib/tokens/brands/green/primitives/color-palette.d.ts.map +1 -1
- package/dist-lib/tokens/brands/green/semantic/color-dark.d.ts +16 -0
- package/dist-lib/tokens/brands/green/semantic/color-dark.d.ts.map +1 -1
- package/dist-lib/tokens/brands/green/semantic/color-light.d.ts +16 -0
- package/dist-lib/tokens/brands/green/semantic/color-light.d.ts.map +1 -1
- package/dist-lib/tokens/brands/pay/primitives/color-palette.d.ts +6 -0
- package/dist-lib/tokens/brands/pay/primitives/color-palette.d.ts.map +1 -1
- package/dist-lib/tokens/brands/pay/semantic/color-dark.d.ts +16 -0
- package/dist-lib/tokens/brands/pay/semantic/color-dark.d.ts.map +1 -1
- package/dist-lib/tokens/brands/pay/semantic/color-light.d.ts +16 -0
- package/dist-lib/tokens/brands/pay/semantic/color-light.d.ts.map +1 -1
- package/dist-lib/tokens/brands/vibrant/primitives/color-palette.d.ts +29 -1
- package/dist-lib/tokens/brands/vibrant/primitives/color-palette.d.ts.map +1 -1
- package/dist-lib/tokens/brands/vibrant/semantic/color-dark.d.ts +16 -0
- package/dist-lib/tokens/brands/vibrant/semantic/color-dark.d.ts.map +1 -1
- package/dist-lib/tokens/brands/vibrant/semantic/color-light.d.ts +16 -0
- package/dist-lib/tokens/brands/vibrant/semantic/color-light.d.ts.map +1 -1
- package/dist-lib/tokens.cjs +23 -2
- package/dist-lib/tokens.cjs.map +1 -1
- package/dist-lib/tokens.mjs +23 -2
- package/dist-lib/tokens.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,2985 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Estilos do `Gantt`.
|
|
3
|
+
*
|
|
4
|
+
* ## A pele é do DS, a estrutura é das referências
|
|
5
|
+
*
|
|
6
|
+
* As 13 referências visuais decidiram **estrutura**: grade à esquerda, eixo em
|
|
7
|
+
* dois níveis, divisor arrastável, setas ortogonais, losango pro marco. Nenhuma
|
|
8
|
+
* decidiu **pele** — fonte, cor, espaçamento, radius e foco vêm dos tokens,
|
|
9
|
+
* conforme `.ai/context/referencia-visual.md`.
|
|
10
|
+
*
|
|
11
|
+
* ⛔ Nenhum hex saiu de pixel de print. Os prints trazem roxo, laranja e
|
|
12
|
+
* azul-royal de outros produtos; o DS tem 5 chaves de chart e as famílias
|
|
13
|
+
* semânticas, e é só isso que existe aqui.
|
|
14
|
+
*
|
|
15
|
+
* ## Por que a barra é TINGIDA e não sólida com texto branco
|
|
16
|
+
*
|
|
17
|
+
* As referências mostram barra saturada com texto branco. O DS não faz isso, e a
|
|
18
|
+
* razão foi **medida** na v0.56.0 ao especificar o `Scheduler`: texto colorido
|
|
19
|
+
* ou branco sobre pílula tingida dá contraste de **1.72–4.49 no light** e
|
|
20
|
+
* 2.97–4.31 no dark — nenhuma família passa AA, e `warning` chega a 1.72:1.
|
|
21
|
+
*
|
|
22
|
+
* A receita do DS é: fundo tingido + `fg-default` no texto + a cor viva num
|
|
23
|
+
* **acento** (aqui, a borda esquerda de 3px) e no preenchimento de progresso.
|
|
24
|
+
* A cor segue dizendo qual frente é; ela só não carrega o texto.
|
|
25
|
+
*
|
|
26
|
+
* ⛔ Nada aqui é importado do `Scheduler` — só a gramática visual foi copiada,
|
|
27
|
+
* pelo mesmo motivo que ele copiou a do `TableToolbar` em vez de importar
|
|
28
|
+
* (L-049): cross-import entre pastas de `ui/` gera `registryDependency`
|
|
29
|
+
* pendente e o `igreen:add` estreia quebrado.
|
|
30
|
+
*/
|
|
31
|
+
/**
|
|
32
|
+
* Altura da linha, em px — **fonte ÚNICA, consumida pelos dois painéis**.
|
|
33
|
+
*
|
|
34
|
+
* ⚠️ É constante e não classe utilitária de propósito. A grade da esquerda e o
|
|
35
|
+
* canvas da direita têm que concordar **ao pixel**: a barra é posicionada em
|
|
36
|
+
* `top` absoluto calculado a partir do índice da linha, e a célula da esquerda é
|
|
37
|
+
* um elemento de fluxo. Se as duas derivassem a altura de lugares diferentes —
|
|
38
|
+
* uma de `min-h-comp-2xl`, outra de um `--var` — bastaria um `line-height`
|
|
39
|
+
* herdado pra desalinhar, e o desalinho cresce linha a linha.
|
|
40
|
+
*
|
|
41
|
+
* É a classe de defeito da L-038: default resolvido em dois render-sites que
|
|
42
|
+
* divergem. Aqui há um número só, e um teste compara os dois `getBoundingClientRect`.
|
|
43
|
+
*
|
|
44
|
+
* 48px: os 44 de `comp-2xl` (alvo de toque WCAG) + 2px de respiro em cima e
|
|
45
|
+
* 2 embaixo. Em 44 exatos a linha ficava com o texto encostado nas divisórias.
|
|
46
|
+
*/
|
|
47
|
+
export declare const GANTT_ROW_HEIGHT_PX = 48;
|
|
48
|
+
/**
|
|
49
|
+
* Altura da barra dentro da linha.
|
|
50
|
+
*
|
|
51
|
+
* 26 e não 18: em 44px de linha, 18px de barra deixava 13px de folga em cima e
|
|
52
|
+
* embaixo, e o card parecia flutuar solto na faixa. A barra é CENTRADA
|
|
53
|
+
* verticalmente — `(rowHeight - barHeight) / 2` —, não colada no topo.
|
|
54
|
+
*/
|
|
55
|
+
export declare const GANTT_BAR_HEIGHT_PX = 26;
|
|
56
|
+
/** Barra-resumo: mais fina de propósito, ela agrega e não é trabalho. */
|
|
57
|
+
export declare const GANTT_SUMMARY_BAR_HEIGHT_PX = 12;
|
|
58
|
+
/** Altura de uma lane dentro de uma linha com N barras (`lanePacking: "stack"`). */
|
|
59
|
+
export declare const GANTT_LANE_HEIGHT_PX = 30;
|
|
60
|
+
/**
|
|
61
|
+
* Altura do cabeçalho — dois níveis empilhados.
|
|
62
|
+
*
|
|
63
|
+
* 68 e não 56: com 28+28 o rótulo do dia ficava colado na divisória, e o eixo
|
|
64
|
+
* lia como uma faixa comprimida ao lado de linhas de 44px. 30 no grupo (mês) +
|
|
65
|
+
* 38 na unidade (dia), que é onde mora o par `S 21`.
|
|
66
|
+
*/
|
|
67
|
+
export declare const GANTT_HEAD_HEIGHT_PX = 84;
|
|
68
|
+
/**
|
|
69
|
+
* Faixa do mês/ano — **42px, igual à faixa da unidade**.
|
|
70
|
+
*
|
|
71
|
+
* Passou por 30 (o rótulo encostava na divisória) e 38 (melhor, mas a faixa
|
|
72
|
+
* ainda lia como subordinada à de baixo). Em 42 as duas têm o mesmo peso, que é
|
|
73
|
+
* o correto: são dois NÍVEIS do mesmo eixo, não um cabeçalho e um sub-cabeçalho.
|
|
74
|
+
*
|
|
75
|
+
* ⚠️ **Não há token de 42px, e isso é deliberado.** A escala `form` do DS pula
|
|
76
|
+
* de 40 (`form-lg`) pra 44 (`form-xl`, alvo WCAG); nenhum tier cai em 42. Toda a
|
|
77
|
+
* família `GANTT_HEAD_*`/`GANTT_ROW_HEIGHT_PX` é geometria DE COMPONENTE em px,
|
|
78
|
+
* pela mesma razão: são medidas que os dois painéis têm que casar ao pixel, não
|
|
79
|
+
* alturas de controle interativo. Criar token semântico pra a faixa de
|
|
80
|
+
* cabeçalho de UM componente violaria a Regra 1 (só criar se nenhum servir E
|
|
81
|
+
* for reutilizável).
|
|
82
|
+
*
|
|
83
|
+
* Se em algum momento isto tiver que virar token, o tier honesto é `form-xl`
|
|
84
|
+
* (44) — e aí as duas faixas vão junto, não só esta.
|
|
85
|
+
*/
|
|
86
|
+
export declare const GANTT_HEAD_GROUP_PX = 42;
|
|
87
|
+
/** Faixa da unidade — empilha a abreviação do dia sobre o número (#10). */
|
|
88
|
+
export declare const GANTT_HEAD_UNIT_PX = 42;
|
|
89
|
+
/**
|
|
90
|
+
* Largura mínima de rótulo de GRUPO, em px.
|
|
91
|
+
*
|
|
92
|
+
* 96px porque o pior caso real é "novembro 2026" em `caption-md`, que mede
|
|
93
|
+
* ~85px de texto: em 92px ele encostava nas duas bordas.
|
|
94
|
+
*
|
|
95
|
+
* Abaixo disso o rótulo não é renderizado — a célula fica, pra o alinhamento
|
|
96
|
+
* não quebrar, mas vazia. Medido no exemplo de tela cheia: a janela começava em
|
|
97
|
+
* 31/ago e o grupo "agosto 2026" saía com **46px** (um dia só), com o texto
|
|
98
|
+
* transbordando por cima do vizinho.
|
|
99
|
+
*
|
|
100
|
+
* Esconder é melhor que abreviar: "ago" em 46px ainda encosta nas duas bordas,
|
|
101
|
+
* e o mês já está implícito no grupo seguinte, que é grande.
|
|
102
|
+
*/
|
|
103
|
+
export declare const GANTT_GROUP_LABEL_MIN_PX = 96;
|
|
104
|
+
/** Largura de coluna por granularidade, em px por dia. */
|
|
105
|
+
/**
|
|
106
|
+
* Largura por dia, em px — derivada da largura-alvo da UNIDADE.
|
|
107
|
+
*
|
|
108
|
+
* ⚠️ A largura-alvo NÃO é "o que o rótulo precisa". Era, e foi o erro: "set"
|
|
109
|
+
* cabe em 60px, então o mês nasceu com 150 e o trimestre com 190 — larguras
|
|
110
|
+
* suficientes pro CABEÇALHO e insuficientes pro CONTEÚDO. Quem ocupa a coluna
|
|
111
|
+
* é a barra, e ela mede em dias:
|
|
112
|
+
*
|
|
113
|
+
* escala antes uma tarefa de 6 dias uma de 12
|
|
114
|
+
* month 150px (4.93/d) → 30px → 59px
|
|
115
|
+
* quarter 190px (2.09/d) → 13px → 25px
|
|
116
|
+
*
|
|
117
|
+
* Em 30px não cabe rótulo nem o acento de 3px lê como acento; em 13px a barra
|
|
118
|
+
* é um traço. O cronograma inteiro virava uma tira achatada, que é justamente
|
|
119
|
+
* o que se vai olhar quando se escolhe uma escala grossa.
|
|
120
|
+
*
|
|
121
|
+
* escala agora 6 dias 12 dias
|
|
122
|
+
* month 240px (7.89/d) → 47px → 95px
|
|
123
|
+
* quarter 320px (3.52/d) → 21px → 42px
|
|
124
|
+
*
|
|
125
|
+
* O custo é largura total do trilho — com `GANTT_WINDOW_DAYS`, mês vai a
|
|
126
|
+
* ~5.760px e trimestre a ~6.420px. É rolagem, e rolagem é o preço certo:
|
|
127
|
+
* conteúdo ilegível não tem preço de troco.
|
|
128
|
+
*
|
|
129
|
+
* `day` fica em 46 porque lá a coluna carrega duas informações empilhadas (a
|
|
130
|
+
* abreviação do dia e o número) e a barra já tem 46px por dia.
|
|
131
|
+
*/
|
|
132
|
+
export declare const GANTT_PX_PER_DAY: {
|
|
133
|
+
readonly day: 46;
|
|
134
|
+
readonly week: number;
|
|
135
|
+
readonly month: number;
|
|
136
|
+
readonly quarter: number;
|
|
137
|
+
};
|
|
138
|
+
/**
|
|
139
|
+
* Quantos dias a janela cobre em cada escala, quando o consumidor NÃO controla.
|
|
140
|
+
*
|
|
141
|
+
* ⚠️ Sem isto, trocar pra trimestre mantinha a janela de ~60 dias e o
|
|
142
|
+
* cronograma inteiro colapsava numa tira de **128px** — medido. Escolher uma
|
|
143
|
+
* escala mais grossa é pedir pra ver MAIS TEMPO, não a mesma janela comprimida.
|
|
144
|
+
*/
|
|
145
|
+
export declare const GANTT_WINDOW_DAYS: {
|
|
146
|
+
readonly day: 60;
|
|
147
|
+
readonly week: 180;
|
|
148
|
+
readonly month: 730;
|
|
149
|
+
readonly quarter: 1825;
|
|
150
|
+
};
|
|
151
|
+
/**
|
|
152
|
+
* A raiz — toolbar em cima, os dois painéis embaixo.
|
|
153
|
+
*
|
|
154
|
+
* ⚠️ `gap-gp-3xl` (20px) e não `gap-gp-xl` (12px): em 12px a toolbar encostava
|
|
155
|
+
* na moldura do cronograma e as duas liam como uma caixa só, com os controles
|
|
156
|
+
* parecendo parte do cabeçalho da grade. 20px é a distância que separa
|
|
157
|
+
* "controles DA tela" de "a tela".
|
|
158
|
+
*/
|
|
159
|
+
export declare const ganttRoot: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
160
|
+
/**
|
|
161
|
+
* Duas linhas abaixo de `lg`, uma a partir dele — mesma decisão que a toolbar do
|
|
162
|
+
* `Scheduler` tomou na v0.58.0, e pelo mesmo motivo medido: `flex-wrap` puro
|
|
163
|
+
* deixa a quebra a cargo do espaço que sobrar, e em 375px os controles disputam
|
|
164
|
+
* largura com a busca.
|
|
165
|
+
*/
|
|
166
|
+
export declare const ganttToolbar: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
167
|
+
/**
|
|
168
|
+
* Os dois lados da toolbar.
|
|
169
|
+
*
|
|
170
|
+
* O lado esquerdo usa o gap do `toolbarLeft` do `TableToolbar` —
|
|
171
|
+
* `gap-gp-sm md:gap-gp-lg` (6px → 10px) —, e não um valor próprio. Ele tem a
|
|
172
|
+
* mesma anatomia da toolbar da tabela: seletor de visão, DIVISOR, e o que a
|
|
173
|
+
* visão governa. O divisor carrega `mx-sp-sm`, então o gap do grupo é metade do
|
|
174
|
+
* respiro que aparece em volta dele; com 16px ali o divisor ficava com 22px de
|
|
175
|
+
* cada lado contra os 16px da tabela, e era isso que fazia as abas, o divisor e
|
|
176
|
+
* a data parecerem soltos entre si. À direita o gap é 8px: lá é tudo controle,
|
|
177
|
+
* e agrupar é o que se quer.
|
|
178
|
+
*
|
|
179
|
+
* ⛔ Três classes da receita da tabela ficaram FORA de propósito:
|
|
180
|
+
* - `max-md:hidden` — na tabela o grupo esquerdo desaparece no mobile porque
|
|
181
|
+
* toggle, abas e "adicionar" colapsam pro menu de Configurações. Aqui o
|
|
182
|
+
* grupo carrega o título do mês e o `‹ Hoje ›`, que são a ÚNICA navegação do
|
|
183
|
+
* componente; não há menu pra onde colapsar, então esconder equivale a
|
|
184
|
+
* travar o Gantt no mês em que abriu.
|
|
185
|
+
* - `[&>*]:shrink-0` — o título é TEXTO, e o `ganttTitleText` trunca de
|
|
186
|
+
* propósito ("31 ago – 2 nov 2026" é longo). `shrink-0` no filho impede o
|
|
187
|
+
* truncate e o texto vaza a toolbar. Na tabela todos os filhos são
|
|
188
|
+
* controles de largura própria, e ali a classe está certa.
|
|
189
|
+
* - `flex-1` — a raiz (`ganttToolbar`) já é `justify-between`, então o lado
|
|
190
|
+
* esquerdo já recebe a sobra sem precisar disputá-la.
|
|
191
|
+
*
|
|
192
|
+
* ⚠️ O `gap` está NAS VARIANTES e não na base, e isso não é estilo — é
|
|
193
|
+
* necessidade. MEDIDO: `tailwind-merge` **não colapsa** `gap-gp-*`. Um elemento
|
|
194
|
+
* com `gap-gp-md gap-gp-2xl` mantém as DUAS classes e quem decide é a ordem no
|
|
195
|
+
* CSS gerado — que entregou 8px, o valor da base. Sozinha, `gap-gp-2xl` dá 16.
|
|
196
|
+
*
|
|
197
|
+
* O motivo: o grupo `gap` do tailwind-merge valida o sufixo como número ou
|
|
198
|
+
* valor arbitrário, e `gp-md` não é nem um nem outro — então ele nem reconhece
|
|
199
|
+
* as duas como conflitantes. É a mesma armadilha da L-016 (preset tipográfico
|
|
200
|
+
* invisível pro merge), na família de espaçamento: falha em silêncio, com `tsc`
|
|
201
|
+
* e testes verdes.
|
|
202
|
+
*
|
|
203
|
+
* ⛔ Regra prática: com prefixo DS (`gp-`, `sp-`, `pad-`, `form-`, `icon-`),
|
|
204
|
+
* NÃO conte com variante sobrescrevendo a base. Declare o valor em UM lugar só.
|
|
205
|
+
*/
|
|
206
|
+
export declare const ganttToolbarSide: import('tailwind-variants').TVReturnType<{
|
|
207
|
+
slot: {
|
|
208
|
+
leading: string[];
|
|
209
|
+
trailing: string;
|
|
210
|
+
};
|
|
211
|
+
}, undefined, "flex min-w-0 items-center", {
|
|
212
|
+
slot: {
|
|
213
|
+
leading: string[];
|
|
214
|
+
trailing: string;
|
|
215
|
+
};
|
|
216
|
+
}, undefined, import('tailwind-variants').TVReturnType<{
|
|
217
|
+
slot: {
|
|
218
|
+
leading: string[];
|
|
219
|
+
trailing: string;
|
|
220
|
+
};
|
|
221
|
+
}, undefined, "flex min-w-0 items-center", unknown, unknown, undefined>>;
|
|
222
|
+
/**
|
|
223
|
+
* Título do período. `<span>` e não heading — ele rotula a toolbar, não abre
|
|
224
|
+
* seção de documento; como `h2` entraria no índice da página no mesmo nível das
|
|
225
|
+
* seções (medido na doc page do `Scheduler`).
|
|
226
|
+
*/
|
|
227
|
+
export declare const ganttTitle: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
228
|
+
/**
|
|
229
|
+
* O texto do período. `truncate` mora AQUI e não na raiz do título.
|
|
230
|
+
*
|
|
231
|
+
* Na raiz, o `truncate` (que é `overflow:hidden` + `text-overflow`) se aplicava
|
|
232
|
+
* ao flex container e cortava o ícone junto quando o espaço apertava — o ícone
|
|
233
|
+
* é o primeiro filho, então sumia primeiro. No texto, quem encurta é só o texto.
|
|
234
|
+
*/
|
|
235
|
+
export declare const ganttTitleText: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "min-w-0 truncate first-letter:uppercase", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "min-w-0 truncate first-letter:uppercase", unknown, unknown, undefined>>;
|
|
236
|
+
/**
|
|
237
|
+
* Controle segmentado de VISÃO — trilho com pílula ativa.
|
|
238
|
+
*
|
|
239
|
+
* ⚠️ Isto é o `toolbarSegmented`/`toolbarSegmentedButton` do `TableToolbar`,
|
|
240
|
+
* token por token. É o mesmo controle que troca Tabela/Lista/Kanban na
|
|
241
|
+
* `DataTable`, e trocar de visão é a mesma ação nas duas telas — o usuário não
|
|
242
|
+
* deve aprender dois controles pro mesmo gesto.
|
|
243
|
+
*
|
|
244
|
+
* ⛔ Minha primeira versão eram dois `Button` de texto unidos pelo
|
|
245
|
+
* `ganttNavGroup`. Funcionava e estava ERRADO: eu disse que ia seguir o modelo
|
|
246
|
+
* do DS e inventei um controle, quando o modelo existia a um arquivo de
|
|
247
|
+
* distância. Trilho `bg-bg-muted` com pílula `bg-bg-accent` é uma gramática
|
|
248
|
+
* diferente de dois botões `outline` colados — não é detalhe de estilo, é outro
|
|
249
|
+
* componente visual.
|
|
250
|
+
*
|
|
251
|
+
* ⛔ Copiado e não importado: `ToolbarSegmented` vive em `ui/TableToolbar/`, e
|
|
252
|
+
* cross-import entre pastas de `ui/` gera `registryDependency` pendente (L-049).
|
|
253
|
+
*/
|
|
254
|
+
export declare const ganttViewSwitch: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
255
|
+
export declare const ganttViewSwitchButton: import('tailwind-variants').TVReturnType<{
|
|
256
|
+
isActive: {
|
|
257
|
+
true: string;
|
|
258
|
+
false: string;
|
|
259
|
+
};
|
|
260
|
+
}, undefined, string[], {
|
|
261
|
+
isActive: {
|
|
262
|
+
true: string;
|
|
263
|
+
false: string;
|
|
264
|
+
};
|
|
265
|
+
}, undefined, import('tailwind-variants').TVReturnType<{
|
|
266
|
+
isActive: {
|
|
267
|
+
true: string;
|
|
268
|
+
false: string;
|
|
269
|
+
};
|
|
270
|
+
}, undefined, string[], unknown, unknown, undefined>>;
|
|
271
|
+
/**
|
|
272
|
+
* Divisor vertical entre grupos da toolbar.
|
|
273
|
+
*
|
|
274
|
+
* ⛔ Cópia do `toolbarDivider` do `TableToolbar` (1px × 24px, `border-default`,
|
|
275
|
+
* 6px de respiro, centrado). Mesma medida e mesmo token: é o mesmo separador
|
|
276
|
+
* lógico — "acabou um grupo de controles, começa outro" — e duas espessuras
|
|
277
|
+
* diferentes pra isso no mesmo produto é ruído.
|
|
278
|
+
*/
|
|
279
|
+
export declare const ganttToolbarDivider: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "max-md:hidden mx-sp-sm h-[24px] w-sp-px shrink-0 self-center bg-border-default", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "max-md:hidden mx-sp-sm h-[24px] w-sp-px shrink-0 self-center bg-border-default", unknown, unknown, undefined>>;
|
|
280
|
+
/**
|
|
281
|
+
* `‹ Hoje ›` — três botões `soft` colados, com moldura e divisórias de 1px.
|
|
282
|
+
*
|
|
283
|
+
* ## A borda é pintada por LADO, não por botão
|
|
284
|
+
*
|
|
285
|
+
* O `Button` já nasce com `border border-transparent` (padrão do DS, pra
|
|
286
|
+
* transição suave). Então não se acrescenta borda aqui — só se dá COR: topo e
|
|
287
|
+
* base em todos, ESQUERDA em todos, direita só no último. Lendo da esquerda pra
|
|
288
|
+
* direita isso desenha moldura e divisórias de uma vez — a esquerda do primeiro
|
|
289
|
+
* é o lado do quadro, a dos outros dois é a divisória com o vizinho.
|
|
290
|
+
*
|
|
291
|
+
* Três consequências de fazer assim, e as três importam:
|
|
292
|
+
* - **A altura não muda.** O 1px já estava reservado nos quatro lados de cada
|
|
293
|
+
* botão; colorir não empurra layout. Uma borda no CONTAINER somaria 2px e o
|
|
294
|
+
* grupo ficaria mais alto que o seletor de visão (40px) ao lado.
|
|
295
|
+
* - **Toda linha tem a MESMA espessura e a mesma cor.** Cada junção recebe
|
|
296
|
+
* exatamente uma face colorida (a esquerda do botão da direita); a face que
|
|
297
|
+
* encosta nela fica transparente. Sem isso, duas bordas de 1px encostadas
|
|
298
|
+
* desenhariam uma divisória de 2px, o dobro da moldura.
|
|
299
|
+
* - **Sem `-ml-px`.** No segmentado clássico ele existe pra colapsar essas duas
|
|
300
|
+
* bordas em uma; aqui não há o que colapsar, e o overlap seria ATIVAMENTE
|
|
301
|
+
* ruim: `border-input` é `oklch(1 0 0 / 0.08)` e `bg-bg-muted` é
|
|
302
|
+
* `oklch(1 0 0 / 0.03)` — cores com ALPHA. Sobrepor 1px empilharia as duas
|
|
303
|
+
* camadas e a divisória sairia ~2× mais forte que a moldura.
|
|
304
|
+
*
|
|
305
|
+
* Os cantos retos no miolo (`!rounded-none`, meio-raio nas pontas) completam o
|
|
306
|
+
* efeito: sem eles, três retângulos arredondados encostados desenham entalhes.
|
|
307
|
+
*
|
|
308
|
+
* A cor é a do botão secundário `outline` — `border-subtle` no light,
|
|
309
|
+
* `border-input` no dark —, porque é o mesmo papel: moldura de controle neutro.
|
|
310
|
+
*
|
|
311
|
+
* O `z-[1]` no foco fica: o `ring-4` de um botão do meio seria coberto pelos
|
|
312
|
+
* vizinhos, que encostam nele.
|
|
313
|
+
*/
|
|
314
|
+
export declare const ganttNavGroup: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
315
|
+
/**
|
|
316
|
+
* Menu de opções da toolbar — o `md:hidden` do Gantt.
|
|
317
|
+
*
|
|
318
|
+
* ## Por que existe
|
|
319
|
+
*
|
|
320
|
+
* Medido a 375px ANTES dele: a barra ocupava duas linhas de 40px, o campo de
|
|
321
|
+
* busca era espremido a **51px** (o ícone e nada mais, impossível digitar) e o
|
|
322
|
+
* título do período saía cortado no meio ("3…"). Cinco controles disputando
|
|
323
|
+
* 335px não cabem, e `flex-wrap` só empilha o problema.
|
|
324
|
+
*
|
|
325
|
+
* ## A regra é a da `TableToolbar`, não uma invenção
|
|
326
|
+
*
|
|
327
|
+
* Lá o grupo esquerdo inteiro sai em <md (`max-md:hidden`) e o que ele
|
|
328
|
+
* continha reaparece no menu de Configurações, em seções inline marcadas
|
|
329
|
+
* `md:hidden`; a barra fica com **busca + ícones**. Aqui é o mesmo: seletor de
|
|
330
|
+
* visão, `‹ Hoje ›`, escala e caminho crítico saem da barra e viram seções
|
|
331
|
+
* deste menu.
|
|
332
|
+
*
|
|
333
|
+
* ⛔ **O título do período FICA.** É a única diferença, e é de conteúdo: a
|
|
334
|
+
* toolbar da tabela não tem rótulo de contexto pra preservar — a do Gantt tem,
|
|
335
|
+
* e "outubro 2026" é o que diz o que a tela está mostrando. Escondê-lo pra
|
|
336
|
+
* seguir a regra ao pé da letra deixaria o usuário sem saber que mês vê.
|
|
337
|
+
*
|
|
338
|
+
* A gramática visual é cópia do `toolbar-settings-menu`: `p-pad-sm` com
|
|
339
|
+
* `gap-px`, rótulo `caption-sm` maiúsculo em `fg-subtle`, separador `h-px`,
|
|
340
|
+
* item `px-pad-lg py-pad-md` de `fg-muted` pra `fg-default` no hover.
|
|
341
|
+
*/
|
|
342
|
+
export declare const ganttMobileMenu: import('tailwind-variants').TVReturnType<{
|
|
343
|
+
active: {
|
|
344
|
+
true: {
|
|
345
|
+
item: string;
|
|
346
|
+
};
|
|
347
|
+
false: {};
|
|
348
|
+
};
|
|
349
|
+
}, {
|
|
350
|
+
trigger: string;
|
|
351
|
+
content: string;
|
|
352
|
+
label: string;
|
|
353
|
+
separator: string;
|
|
354
|
+
field: string;
|
|
355
|
+
item: string[];
|
|
356
|
+
}, undefined, {
|
|
357
|
+
active: {
|
|
358
|
+
true: {
|
|
359
|
+
item: string;
|
|
360
|
+
};
|
|
361
|
+
false: {};
|
|
362
|
+
};
|
|
363
|
+
}, {
|
|
364
|
+
trigger: string;
|
|
365
|
+
content: string;
|
|
366
|
+
label: string;
|
|
367
|
+
separator: string;
|
|
368
|
+
field: string;
|
|
369
|
+
item: string[];
|
|
370
|
+
}, import('tailwind-variants').TVReturnType<{
|
|
371
|
+
active: {
|
|
372
|
+
true: {
|
|
373
|
+
item: string;
|
|
374
|
+
};
|
|
375
|
+
false: {};
|
|
376
|
+
};
|
|
377
|
+
}, {
|
|
378
|
+
trigger: string;
|
|
379
|
+
content: string;
|
|
380
|
+
label: string;
|
|
381
|
+
separator: string;
|
|
382
|
+
field: string;
|
|
383
|
+
item: string[];
|
|
384
|
+
}, undefined, unknown, unknown, undefined>>;
|
|
385
|
+
/**
|
|
386
|
+
* Dentro do menu, os dois grupos de controle ocupam a LARGURA CHEIA.
|
|
387
|
+
*
|
|
388
|
+
* Na barra eles são `shrink-0` e do tamanho do conteúdo; num painel de 280px
|
|
389
|
+
* isso os deixaria encolhidos à esquerda com um vazio à direita. `fluid` é a
|
|
390
|
+
* mesma ideia do `ToolbarSegmented fluid` que a tabela passa pro menu dela.
|
|
391
|
+
*/
|
|
392
|
+
export declare const ganttMenuGroupFluid: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "flex w-full [&>*]:flex-1", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "flex w-full [&>*]:flex-1", unknown, unknown, undefined>>;
|
|
393
|
+
/**
|
|
394
|
+
* Esqueleto de carregamento.
|
|
395
|
+
*
|
|
396
|
+
* ## A silhueta é a mesma do conteúdo, e isso é a regra
|
|
397
|
+
*
|
|
398
|
+
* Copiada do `DataTableLoading`: o esqueleto usa o MESMO container do estado
|
|
399
|
+
* carregado (mesma borda, mesmo raio, mesma altura de linha) pra que a
|
|
400
|
+
* chegada do dado não desloque nada. Esqueleto de silhueta diferente troca
|
|
401
|
+
* "espera" por um salto de layout, que é pior que a espera.
|
|
402
|
+
*
|
|
403
|
+
* Por isso há três variantes, uma por visão: as três têm geometrias
|
|
404
|
+
* diferentes, e um esqueleto genérico saltaria em duas delas.
|
|
405
|
+
*
|
|
406
|
+
* `animate-pulse` é do Tailwind e não a `ds-pulse` da L-067 — esta última é a
|
|
407
|
+
* animação de ATENÇÃO do DS (um realce que chama), e aqui o pulso é de
|
|
408
|
+
* espera. São dois significados, e usar o de atenção pra espera faria o
|
|
409
|
+
* carregamento gritar.
|
|
410
|
+
*/
|
|
411
|
+
export declare const ganttSkeleton: import('tailwind-variants').TVReturnType<{
|
|
412
|
+
[key: string]: {
|
|
413
|
+
[key: string]: import('tailwind-merge').ClassNameValue | {
|
|
414
|
+
canvas?: import('tailwind-merge').ClassNameValue;
|
|
415
|
+
head?: import('tailwind-merge').ClassNameValue;
|
|
416
|
+
cell?: import('tailwind-merge').ClassNameValue;
|
|
417
|
+
grid?: import('tailwind-merge').ClassNameValue;
|
|
418
|
+
row?: import('tailwind-merge').ClassNameValue;
|
|
419
|
+
root?: import('tailwind-merge').ClassNameValue;
|
|
420
|
+
bar?: import('tailwind-merge').ClassNameValue;
|
|
421
|
+
pane?: import('tailwind-merge').ClassNameValue;
|
|
422
|
+
};
|
|
423
|
+
};
|
|
424
|
+
} | {
|
|
425
|
+
[x: string]: {
|
|
426
|
+
[x: string]: import('tailwind-merge').ClassNameValue | {
|
|
427
|
+
canvas?: import('tailwind-merge').ClassNameValue;
|
|
428
|
+
head?: import('tailwind-merge').ClassNameValue;
|
|
429
|
+
cell?: import('tailwind-merge').ClassNameValue;
|
|
430
|
+
grid?: import('tailwind-merge').ClassNameValue;
|
|
431
|
+
row?: import('tailwind-merge').ClassNameValue;
|
|
432
|
+
root?: import('tailwind-merge').ClassNameValue;
|
|
433
|
+
bar?: import('tailwind-merge').ClassNameValue;
|
|
434
|
+
pane?: import('tailwind-merge').ClassNameValue;
|
|
435
|
+
};
|
|
436
|
+
};
|
|
437
|
+
} | {}, {
|
|
438
|
+
root: string;
|
|
439
|
+
/** A faixa do cabeçalho do eixo — mesma altura do `ganttHead`. */
|
|
440
|
+
head: string;
|
|
441
|
+
/** Linha do corpo — a MESMA altura de `GANTT_ROW_HEIGHT_PX`. */
|
|
442
|
+
row: string;
|
|
443
|
+
/** O retângulo cinza que faz as vezes de texto ou de barra. */
|
|
444
|
+
bar: string;
|
|
445
|
+
/** Painel esquerdo da timeline — só ele tem borda de separação. */
|
|
446
|
+
pane: string;
|
|
447
|
+
canvas: string;
|
|
448
|
+
/** Célula da grade de mês. */
|
|
449
|
+
cell: string;
|
|
450
|
+
grid: string;
|
|
451
|
+
}, undefined, {
|
|
452
|
+
[key: string]: {
|
|
453
|
+
[key: string]: import('tailwind-merge').ClassNameValue | {
|
|
454
|
+
canvas?: import('tailwind-merge').ClassNameValue;
|
|
455
|
+
head?: import('tailwind-merge').ClassNameValue;
|
|
456
|
+
cell?: import('tailwind-merge').ClassNameValue;
|
|
457
|
+
grid?: import('tailwind-merge').ClassNameValue;
|
|
458
|
+
row?: import('tailwind-merge').ClassNameValue;
|
|
459
|
+
root?: import('tailwind-merge').ClassNameValue;
|
|
460
|
+
bar?: import('tailwind-merge').ClassNameValue;
|
|
461
|
+
pane?: import('tailwind-merge').ClassNameValue;
|
|
462
|
+
};
|
|
463
|
+
};
|
|
464
|
+
} | {}, {
|
|
465
|
+
root: string;
|
|
466
|
+
/** A faixa do cabeçalho do eixo — mesma altura do `ganttHead`. */
|
|
467
|
+
head: string;
|
|
468
|
+
/** Linha do corpo — a MESMA altura de `GANTT_ROW_HEIGHT_PX`. */
|
|
469
|
+
row: string;
|
|
470
|
+
/** O retângulo cinza que faz as vezes de texto ou de barra. */
|
|
471
|
+
bar: string;
|
|
472
|
+
/** Painel esquerdo da timeline — só ele tem borda de separação. */
|
|
473
|
+
pane: string;
|
|
474
|
+
canvas: string;
|
|
475
|
+
/** Célula da grade de mês. */
|
|
476
|
+
cell: string;
|
|
477
|
+
grid: string;
|
|
478
|
+
}, import('tailwind-variants').TVReturnType<unknown, {
|
|
479
|
+
root: string;
|
|
480
|
+
/** A faixa do cabeçalho do eixo — mesma altura do `ganttHead`. */
|
|
481
|
+
head: string;
|
|
482
|
+
/** Linha do corpo — a MESMA altura de `GANTT_ROW_HEIGHT_PX`. */
|
|
483
|
+
row: string;
|
|
484
|
+
/** O retângulo cinza que faz as vezes de texto ou de barra. */
|
|
485
|
+
bar: string;
|
|
486
|
+
/** Painel esquerdo da timeline — só ele tem borda de separação. */
|
|
487
|
+
pane: string;
|
|
488
|
+
canvas: string;
|
|
489
|
+
/** Célula da grade de mês. */
|
|
490
|
+
cell: string;
|
|
491
|
+
grid: string;
|
|
492
|
+
}, undefined, unknown, unknown, undefined>>;
|
|
493
|
+
export declare const ganttSearch: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
494
|
+
export declare const ganttSearchInput: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
495
|
+
/**
|
|
496
|
+
* Linha dos filtros APLICADOS, abaixo da toolbar.
|
|
497
|
+
*
|
|
498
|
+
* ⚠️ Estes estilos são uma reprodução do `toolbarApplied*` do `TableToolbar`,
|
|
499
|
+
* token por token. A anatomia do chip da tabela não é preferência estética —
|
|
500
|
+
* é a experiência que o usuário já aprendeu em outra tela do mesmo produto.
|
|
501
|
+
* A minha primeira versão divergia em três pontos (× à direita, borda sólida
|
|
502
|
+
* brand, sem operador) e cada divergência era uma coisa a reaprender.
|
|
503
|
+
*
|
|
504
|
+
* O que documenta CADA decisão é o JSDoc de `gantt-applied-filters.tsx`.
|
|
505
|
+
*
|
|
506
|
+
* ## O divisor
|
|
507
|
+
*
|
|
508
|
+
* `16px → border-top → 16px → chips`, igual ao `toolbarApplied`. A linha
|
|
509
|
+
* importa porque a fileira de chips não é um controle da toolbar — é o resumo
|
|
510
|
+
* de um estado que ela produziu. Sem o divisor os chips liam como uma segunda
|
|
511
|
+
* fileira de botões.
|
|
512
|
+
*
|
|
513
|
+
* ⚠️ O espaçamento mora AQUI (`mt`/`pt`) e não como `gap` do pai: a linha só
|
|
514
|
+
* existe quando há filtro aplicado, e um `gap` no pai cobraria margem por uma
|
|
515
|
+
* linha ausente na maior parte do tempo.
|
|
516
|
+
*
|
|
517
|
+
* Rola na horizontal no mobile em vez de quebrar linha: no celular, 4 chips
|
|
518
|
+
* empilhados empurrariam a grade pra fora da tela.
|
|
519
|
+
*
|
|
520
|
+
* ⛔ Gramática copiada, não importada — cross-import entre pastas de `ui/` gera
|
|
521
|
+
* `registryDependency` pendente (L-049).
|
|
522
|
+
*/
|
|
523
|
+
export declare const ganttAppliedRow: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
524
|
+
/**
|
|
525
|
+
* O chip. Borda **tracejada e neutra**, como na tabela.
|
|
526
|
+
*
|
|
527
|
+
* ⚠️ Era `border-solid border-border-brand bg-bg-brand-subtle` na minha versão,
|
|
528
|
+
* e estava errado: chip aplicado não precisa gritar — ele já É a prova de que
|
|
529
|
+
* algo está ligado. Sólido em brand fazia a linha competir com a grade, que é o
|
|
530
|
+
* conteúdo, e ainda colidia com o verde que aqui significa "hoje"/"selecionado".
|
|
531
|
+
*
|
|
532
|
+
* `shrink-0` porque no scroll horizontal do mobile (`flex-nowrap`) os chips não
|
|
533
|
+
* podem comprimir.
|
|
534
|
+
*/
|
|
535
|
+
export declare const ganttAppliedChip: import('tailwind-variants').TVReturnType<{
|
|
536
|
+
/** Clicável (abre as opções do campo). Sempre `true` hoje; ver o part. */
|
|
537
|
+
interactive: {
|
|
538
|
+
true: string[];
|
|
539
|
+
false: string;
|
|
540
|
+
};
|
|
541
|
+
}, undefined, string[], {
|
|
542
|
+
/** Clicável (abre as opções do campo). Sempre `true` hoje; ver o part. */
|
|
543
|
+
interactive: {
|
|
544
|
+
true: string[];
|
|
545
|
+
false: string;
|
|
546
|
+
};
|
|
547
|
+
}, undefined, import('tailwind-variants').TVReturnType<{
|
|
548
|
+
/** Clicável (abre as opções do campo). Sempre `true` hoje; ver o part. */
|
|
549
|
+
interactive: {
|
|
550
|
+
true: string[];
|
|
551
|
+
false: string;
|
|
552
|
+
};
|
|
553
|
+
}, undefined, string[], unknown, unknown, undefined>>;
|
|
554
|
+
/**
|
|
555
|
+
* O `⊗` de remover — à ESQUERDA do chip.
|
|
556
|
+
*
|
|
557
|
+
* ⚠️ Posição copiada da tabela, e ela tem razão de ser: à direita o alvo fica
|
|
558
|
+
* depois de um valor de largura variável e "dança" de posição entre chips; à
|
|
559
|
+
* esquerda todos ficam alinhados numa coluna, e limpar três filtros são três
|
|
560
|
+
* cliques sem reposicionar a mira.
|
|
561
|
+
*/
|
|
562
|
+
export declare const ganttAppliedChipRemove: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
563
|
+
/** O nome do campo — "Frente", "Responsável". */
|
|
564
|
+
export declare const ganttAppliedChipName: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "font-semibold text-fg-default", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "font-semibold text-fg-default", unknown, unknown, undefined>>;
|
|
565
|
+
/**
|
|
566
|
+
* O operador — "é".
|
|
567
|
+
*
|
|
568
|
+
* ⚠️ Minha versão não tinha. Sem ele o chip lê "Status Ativo", uma justaposição
|
|
569
|
+
* ambígua; com ele lê "Status é Ativo", que é a frase que o filtro executa.
|
|
570
|
+
*/
|
|
571
|
+
export declare const ganttAppliedChipOp: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "text-caption-sm text-fg-muted", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "text-caption-sm text-fg-muted", unknown, unknown, undefined>>;
|
|
572
|
+
/** Cada valor, em pílula própria. Um por valor até o limite do part. */
|
|
573
|
+
export declare const ganttAppliedChipValue: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
574
|
+
/**
|
|
575
|
+
* "Limpar todos" no fim da linha.
|
|
576
|
+
*
|
|
577
|
+
* Link e não `Button`: é a saída de um estado, não ação de primeira ordem — um
|
|
578
|
+
* botão de 40px ali competiria com os próprios chips.
|
|
579
|
+
*/
|
|
580
|
+
export declare const ganttClearLink: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
581
|
+
/** Ponto no canto do botão de filtro — portador NÃO-cromático de "tem filtro". */
|
|
582
|
+
export declare const ganttFilterDot: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
583
|
+
/**
|
|
584
|
+
* Grupo de opções — um por campo, COLAPSÁVEL.
|
|
585
|
+
*
|
|
586
|
+
* Seção inteiriça com padding próprio e divisória de ponta a ponta: o painel
|
|
587
|
+
* não tem padding, quem paga o respiro é o grupo. É o que faz a linha chegar
|
|
588
|
+
* até as bordas, do jeito que se espera de uma lista de categorias — mesma
|
|
589
|
+
* anatomia do `schedulerAsideSection`.
|
|
590
|
+
*/
|
|
591
|
+
export declare const ganttFilterGroup: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
592
|
+
/** Cabeçalho clicável do grupo — o alvo é a linha inteira, não só o chevron. */
|
|
593
|
+
export declare const ganttFilterGroupHead: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
594
|
+
export declare const ganttFilterGroupTitle: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
595
|
+
/**
|
|
596
|
+
* Chevron do grupo. Rotação e não dois ícones: com dois, o nó troca no DOM e a
|
|
597
|
+
* transição não acontece — o chevron pisca em vez de girar.
|
|
598
|
+
*/
|
|
599
|
+
export declare const ganttFilterGroupChevron: import('tailwind-variants').TVReturnType<{
|
|
600
|
+
open: {
|
|
601
|
+
true: string;
|
|
602
|
+
false: string;
|
|
603
|
+
};
|
|
604
|
+
}, undefined, "size-icon-sm shrink-0 text-fg-subtle transition-transform duration-200", {
|
|
605
|
+
open: {
|
|
606
|
+
true: string;
|
|
607
|
+
false: string;
|
|
608
|
+
};
|
|
609
|
+
}, undefined, import('tailwind-variants').TVReturnType<{
|
|
610
|
+
open: {
|
|
611
|
+
true: string;
|
|
612
|
+
false: string;
|
|
613
|
+
};
|
|
614
|
+
}, undefined, "size-icon-sm shrink-0 text-fg-subtle transition-transform duration-200", unknown, unknown, undefined>>;
|
|
615
|
+
/**
|
|
616
|
+
* "Selecionar todas" / "Limpar" do grupo.
|
|
617
|
+
*
|
|
618
|
+
* Link e não `Button`: são ações de ajuste fino dentro de um grupo, e dois
|
|
619
|
+
* botões de 32px empilhados sobre a lista competiriam com as próprias opções
|
|
620
|
+
* pela atenção. Mesma decisão do `schedulerClearLink`.
|
|
621
|
+
*/
|
|
622
|
+
export declare const ganttFilterGroupActions: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
623
|
+
/** Busca dentro do grupo — mesma gramática da busca da toolbar, menor. */
|
|
624
|
+
export declare const ganttFilterSearch: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
625
|
+
export declare const ganttFilterSearchInput: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
626
|
+
/**
|
|
627
|
+
* Input de filtro de VALOR — `text`, `number`, `date`.
|
|
628
|
+
*
|
|
629
|
+
* Mesma gramática de campo do `ganttFilterSearch` (altura `form-md`, borda
|
|
630
|
+
* `border-subtle`/`border-input` no dark, anel de foco do DS), mas sem o ícone
|
|
631
|
+
* de lupa: aqui não se busca na lista, se declara um valor.
|
|
632
|
+
*
|
|
633
|
+
* ⛔ Não é `<Input>` do DS importado: `ui/Input` é outra pasta de `ui/`, e
|
|
634
|
+
* cross-import entre elas gera `registryDependency` pendente (L-049). O
|
|
635
|
+
* `FormField`/`Input` do DS entrariam se este fosse um formulário — é um
|
|
636
|
+
* controle de filtro dentro do próprio componente.
|
|
637
|
+
*/
|
|
638
|
+
export declare const ganttFilterInput: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
639
|
+
/**
|
|
640
|
+
* A dupla de campos de uma FAIXA (`number`, `date`).
|
|
641
|
+
*
|
|
642
|
+
* Dois campos e não um só com máscara: "entre 3 e 10" tem dois valores
|
|
643
|
+
* independentes, e um deles pode ficar vazio (">= 3", "até 10"). Máscara única
|
|
644
|
+
* obrigaria a preencher os dois pra o filtro valer.
|
|
645
|
+
*/
|
|
646
|
+
export declare const ganttFilterRange: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "flex items-center gap-gp-sm px-pad-xl pb-pad-sm", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "flex items-center gap-gp-sm px-pad-xl pb-pad-sm", unknown, unknown, undefined>>;
|
|
647
|
+
/** O "e" entre os dois campos da faixa. */
|
|
648
|
+
export declare const ganttFilterRangeSep: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "shrink-0 text-caption-sm text-fg-muted", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "shrink-0 text-caption-sm text-fg-muted", unknown, unknown, undefined>>;
|
|
649
|
+
/** Nenhuma opção casou com a busca do grupo. */
|
|
650
|
+
export declare const ganttFilterEmpty: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "px-pad-xl py-pad-md text-body-sm text-fg-muted", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "px-pad-xl py-pad-md text-body-sm text-fg-muted", unknown, unknown, undefined>>;
|
|
651
|
+
/**
|
|
652
|
+
* Linha de opção do painel.
|
|
653
|
+
*
|
|
654
|
+
* `<label htmlFor>` nativo (L-025) — o alvo é o rótulo inteiro, e o clique
|
|
655
|
+
* propaga pro `Checkbox` real sem `onClick` intermediário.
|
|
656
|
+
*/
|
|
657
|
+
export declare const ganttFilterOption: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
658
|
+
/**
|
|
659
|
+
* `className` aplicada no `Checkbox` REAL do DS — não uma caixa desenhada.
|
|
660
|
+
*
|
|
661
|
+
* ⚠️ A primeira versão pintava um `<span>` com um ícone de check dentro. Saía
|
|
662
|
+
* fora do padrão: sem o anel de foco do DS, sem os `data-state` do Radix, sem
|
|
663
|
+
* indeterminate, e com a marcação num tom que não era o do componente real.
|
|
664
|
+
*
|
|
665
|
+
* Aqui a cor da opção entra só na BORDA e no fundo do estado marcado, e o
|
|
666
|
+
* comportamento continua sendo o do `Checkbox`. É o mesmo recurso que o
|
|
667
|
+
* `schedulerOptionBox` usa, e a razão de o `Checkbox` aceitar `className`.
|
|
668
|
+
*
|
|
669
|
+
* A cor da caixa é a cor com que a barra aparece na grade — dispensa legenda.
|
|
670
|
+
*/
|
|
671
|
+
export declare const ganttFilterOptionBox: import('tailwind-variants').TVReturnType<{
|
|
672
|
+
colorKey: {
|
|
673
|
+
"chart-1": string;
|
|
674
|
+
"chart-2": string;
|
|
675
|
+
"chart-3": string;
|
|
676
|
+
"chart-4": string;
|
|
677
|
+
"chart-5": string;
|
|
678
|
+
brand: string;
|
|
679
|
+
success: string;
|
|
680
|
+
warning: string;
|
|
681
|
+
danger: string;
|
|
682
|
+
info: string;
|
|
683
|
+
neutral: string;
|
|
684
|
+
};
|
|
685
|
+
}, undefined, "shrink-0 transition-colors duration-150", {
|
|
686
|
+
colorKey: {
|
|
687
|
+
"chart-1": string;
|
|
688
|
+
"chart-2": string;
|
|
689
|
+
"chart-3": string;
|
|
690
|
+
"chart-4": string;
|
|
691
|
+
"chart-5": string;
|
|
692
|
+
brand: string;
|
|
693
|
+
success: string;
|
|
694
|
+
warning: string;
|
|
695
|
+
danger: string;
|
|
696
|
+
info: string;
|
|
697
|
+
neutral: string;
|
|
698
|
+
};
|
|
699
|
+
}, undefined, import('tailwind-variants').TVReturnType<{
|
|
700
|
+
colorKey: {
|
|
701
|
+
"chart-1": string;
|
|
702
|
+
"chart-2": string;
|
|
703
|
+
"chart-3": string;
|
|
704
|
+
"chart-4": string;
|
|
705
|
+
"chart-5": string;
|
|
706
|
+
brand: string;
|
|
707
|
+
success: string;
|
|
708
|
+
warning: string;
|
|
709
|
+
danger: string;
|
|
710
|
+
info: string;
|
|
711
|
+
neutral: string;
|
|
712
|
+
};
|
|
713
|
+
}, undefined, "shrink-0 transition-colors duration-150", unknown, unknown, undefined>>;
|
|
714
|
+
export declare const ganttFilterOptionLabel: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "min-w-0 flex-1 truncate text-body-sm text-fg-default", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "min-w-0 flex-1 truncate text-body-sm text-fg-default", unknown, unknown, undefined>>;
|
|
715
|
+
/** Contagem por opção, e o "Todas" do título do grupo. */
|
|
716
|
+
export declare const ganttFilterOptionCount: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "shrink-0 text-caption-sm tabular-nums text-fg-subtle", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "shrink-0 text-caption-sm tabular-nums text-fg-subtle", unknown, unknown, undefined>>;
|
|
717
|
+
/**
|
|
718
|
+
* A área abaixo da toolbar.
|
|
719
|
+
*
|
|
720
|
+
* ⚠️ A moldura é VARIANTE porque as duas visões a resolvem em lugares
|
|
721
|
+
* diferentes. Na `timeline` quem molda é este contêiner (os dois painéis vivem
|
|
722
|
+
* dentro dele e o divisor os separa). Na `calendar` quem molda é o
|
|
723
|
+
* `ganttMonthFrame`, que traz borda e radius próprios — deixar as duas ligadas
|
|
724
|
+
* desenhava **duas bordas concêntricas** separadas por 1px.
|
|
725
|
+
*/
|
|
726
|
+
export declare const ganttBody: import('tailwind-variants').TVReturnType<{
|
|
727
|
+
framed: {
|
|
728
|
+
true: string;
|
|
729
|
+
false: string;
|
|
730
|
+
};
|
|
731
|
+
}, undefined, "flex min-h-0 flex-1 overflow-hidden", {
|
|
732
|
+
framed: {
|
|
733
|
+
true: string;
|
|
734
|
+
false: string;
|
|
735
|
+
};
|
|
736
|
+
}, undefined, import('tailwind-variants').TVReturnType<{
|
|
737
|
+
framed: {
|
|
738
|
+
true: string;
|
|
739
|
+
false: string;
|
|
740
|
+
};
|
|
741
|
+
}, undefined, "flex min-h-0 flex-1 overflow-hidden", unknown, unknown, undefined>>;
|
|
742
|
+
/** Painel esquerdo: a grade de linhas. */
|
|
743
|
+
export declare const ganttGridPane: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
744
|
+
/**
|
|
745
|
+
* Divisor arrastável entre os painéis.
|
|
746
|
+
*
|
|
747
|
+
* ## `w-[3px]`, e o alvo do ponteiro é maior que a linha
|
|
748
|
+
*
|
|
749
|
+
* Esta é a ÚNICA linha entre os dois painéis — o `ganttGridPane` não tem borda
|
|
750
|
+
* direita de propósito (ver a nota lá). Então a espessura dela é a espessura da
|
|
751
|
+
* separação.
|
|
752
|
+
*
|
|
753
|
+
* ⚠️ 3px, e a ordem em que chegamos aqui importa: passamos por 5px enquanto a
|
|
754
|
+
* cor ainda era `border-default`. Com a cor certa, 5px viraram excesso — era
|
|
755
|
+
* **contraste** que faltava, e espessura tinha sido usada como substituto. Se
|
|
756
|
+
* alguém for engrossar esta linha de novo, cheque primeiro se o problema não é
|
|
757
|
+
* a cor: foi duas vezes.
|
|
758
|
+
*
|
|
759
|
+
* O `after` estende o alvo do ponteiro 4px pra cada lado — 11px de área contra
|
|
760
|
+
* 3px de linha. Alvo do tamanho da linha é frustrante mesmo com mouse, e aqui a
|
|
761
|
+
* linha é fina por decisão visual, não por ser pequena de propósito.
|
|
762
|
+
*
|
|
763
|
+
* ## `bg-scrollbar-thumb` e não `border-default`
|
|
764
|
+
*
|
|
765
|
+
* Este componente tem TRÊS degraus de linha, e eles precisam ser distinguíveis
|
|
766
|
+
* por cor, não só por espessura. ΔL contra a superfície onde cada uma vive:
|
|
767
|
+
*
|
|
768
|
+
* papel token dark light
|
|
769
|
+
* coluna do dia (1px) border-subtle 0.031 0.069
|
|
770
|
+
* virada de mês (2px) border-input 0.062 0.124
|
|
771
|
+
* os dois painéis (3px) bg-scrollbar-thumb/70 0.132 0.171
|
|
772
|
+
*
|
|
773
|
+
* ⚠️ O `/70` é diluição DELIBERADA, não descuido. Em 24% cheios (0.186/0.240) a
|
|
774
|
+
* linha ficou forte demais — ela é estrutura de fundo, e competia com a barra,
|
|
775
|
+
* que é conteúdo. E não há degrau intermediário no vocabulário neutro: entre
|
|
776
|
+
* `scrollbar-thumb` (24%) e `border-input` (8%) só existe `bg-accent-hover`
|
|
777
|
+
* (16%), cujo nome é de ESTADO — usar um token `-hover` como preenchimento em
|
|
778
|
+
* repouso engana quem lê depois.
|
|
779
|
+
*
|
|
780
|
+
* Diluir o token certo é mais honesto que apropriar o token errado, e o DS já
|
|
781
|
+
* faz isso em `bg-bg-subtle/50` e `bg-bg-brand/30` neste mesmo arquivo. ⛔ Não
|
|
782
|
+
* confundir com a L-001, que proíbe alpha em token de **ring** (lá o alpha já
|
|
783
|
+
* vem embutido).
|
|
784
|
+
*
|
|
785
|
+
* Era `border-default`, que dá **0.040 no dark** — praticamente a linha de
|
|
786
|
+
* coluna (0.031). Um separador de painel que some é pior que uma linha de 1px
|
|
787
|
+
* que se vê: a espessura promete estrutura e a cor não entrega.
|
|
788
|
+
*
|
|
789
|
+
* ⚠️ `bg-scrollbar-thumb` NÃO é oportunismo de valor — é o token cujo papel
|
|
790
|
+
* casa: "barra neutra fina que o usuário agarra". É literalmente o que este
|
|
791
|
+
* divisor é. Descartei `border-input` (viraria a MESMA cor da virada de mês,
|
|
792
|
+
* achatando o sistema em dois degraus) e `bg-accent-hover` (número bom, mas
|
|
793
|
+
* usar um token `-hover` como preenchimento em repouso engana quem lê depois).
|
|
794
|
+
*
|
|
795
|
+
* ⚠️ Não existe degrau neutro mais forte que sirva nos dois modos: os tokens de
|
|
796
|
+
* `bg-emphasis`/`bg-accent` sobem no dark e DESCEM no light (0.060 contra os
|
|
797
|
+
* 0.092 de hoje). Se precisar de mais, o próximo passo é `fg-disabled`
|
|
798
|
+
* (0.135/0.298) — e aí já é uma barra cinza, não uma divisória.
|
|
799
|
+
*/
|
|
800
|
+
export declare const ganttSplitter: import('tailwind-variants').TVReturnType<{
|
|
801
|
+
active: {
|
|
802
|
+
true: string;
|
|
803
|
+
false: string;
|
|
804
|
+
};
|
|
805
|
+
}, undefined, string[], {
|
|
806
|
+
active: {
|
|
807
|
+
true: string;
|
|
808
|
+
false: string;
|
|
809
|
+
};
|
|
810
|
+
}, undefined, import('tailwind-variants').TVReturnType<{
|
|
811
|
+
active: {
|
|
812
|
+
true: string;
|
|
813
|
+
false: string;
|
|
814
|
+
};
|
|
815
|
+
}, undefined, string[], unknown, unknown, undefined>>;
|
|
816
|
+
/** Painel direito: cabeçalho fixo + canvas rolável. */
|
|
817
|
+
export declare const ganttTimelinePane: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "flex min-w-0 min-h-0 flex-1 flex-col", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "flex min-w-0 min-h-0 flex-1 flex-col", unknown, unknown, undefined>>;
|
|
818
|
+
/**
|
|
819
|
+
* Cabeçalho do eixo.
|
|
820
|
+
*
|
|
821
|
+
* ⚠️ **Vive DENTRO do scroller horizontal**, não fora dele.
|
|
822
|
+
*
|
|
823
|
+
* Fora, ele ficava imóvel enquanto o canvas rolava para o lado — as colunas do
|
|
824
|
+
* eixo desalinhavam das colunas da grade, e o rótulo "12" passava a ficar em
|
|
825
|
+
* cima do dia 20. Foi o defeito #5 reportado.
|
|
826
|
+
*
|
|
827
|
+
* `sticky top-0` prende só na VERTICAL: rolando pra baixo o cabeçalho fica,
|
|
828
|
+
* rolando pra o lado ele acompanha. É o comportamento que as 13 referências
|
|
829
|
+
* têm, e ele só é possível com o cabeçalho e o canvas no mesmo contêiner
|
|
830
|
+
* rolável.
|
|
831
|
+
*/
|
|
832
|
+
export declare const ganttHead: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
833
|
+
/**
|
|
834
|
+
* Faixa do cabeçalho — `relative`, e as células dentro são ABSOLUTAS.
|
|
835
|
+
*
|
|
836
|
+
* ⚠️ Era `flex`, e é o defeito #5b: com `pxPerDay` fracionário (trimestre =
|
|
837
|
+
* 190/91 ≈ 2.088px/dia) o fluxo do flex acumula a largura item a item e o
|
|
838
|
+
* navegador arredonda cada caixa ao pixel do dispositivo, enquanto as colunas
|
|
839
|
+
* do canvas são posicionadas por `left` absoluto. As duas contas dão o mesmo
|
|
840
|
+
* número em ponto flutuante e pixels DIFERENTES na tela — as divisórias do
|
|
841
|
+
* grupo, da unidade e do conteúdo saíam desalinhadas ao longo do eixo.
|
|
842
|
+
*
|
|
843
|
+
* Em `day` o efeito não aparecia porque 46px/dia é inteiro. É a L-038 outra
|
|
844
|
+
* vez: a mesma posição derivada em dois lugares. Agora as TRÊS camadas leem
|
|
845
|
+
* `dateToX`.
|
|
846
|
+
*/
|
|
847
|
+
export declare const ganttHeadRow: import('tailwind-variants').TVReturnType<{
|
|
848
|
+
level: {
|
|
849
|
+
/** Nível de cima: mês/ano. Divisória mais forte entre grupos. */
|
|
850
|
+
group: string;
|
|
851
|
+
/** Nível de baixo: a unidade da grade. */
|
|
852
|
+
unit: string;
|
|
853
|
+
};
|
|
854
|
+
}, undefined, "relative", {
|
|
855
|
+
level: {
|
|
856
|
+
/** Nível de cima: mês/ano. Divisória mais forte entre grupos. */
|
|
857
|
+
group: string;
|
|
858
|
+
/** Nível de baixo: a unidade da grade. */
|
|
859
|
+
unit: string;
|
|
860
|
+
};
|
|
861
|
+
}, undefined, import('tailwind-variants').TVReturnType<{
|
|
862
|
+
level: {
|
|
863
|
+
/** Nível de cima: mês/ano. Divisória mais forte entre grupos. */
|
|
864
|
+
group: string;
|
|
865
|
+
/** Nível de baixo: a unidade da grade. */
|
|
866
|
+
unit: string;
|
|
867
|
+
};
|
|
868
|
+
}, undefined, "relative", unknown, unknown, undefined>>;
|
|
869
|
+
export declare const ganttHeadCell: import('tailwind-variants').TVReturnType<{
|
|
870
|
+
level: {
|
|
871
|
+
group: string;
|
|
872
|
+
/**
|
|
873
|
+
* #10 — a unidade EMPILHA: abreviação do dia em cima, número embaixo e
|
|
874
|
+
* maior. Lado a lado (`S 21`), o par competia por largura com a
|
|
875
|
+
* divisória; empilhado, a data ganha peso e a abreviação vira legenda.
|
|
876
|
+
*/
|
|
877
|
+
unit: string;
|
|
878
|
+
};
|
|
879
|
+
/** Fim de semana: coluna sombreada, e o rótulo desce um tom. */
|
|
880
|
+
weekend: {
|
|
881
|
+
true: string;
|
|
882
|
+
false: string;
|
|
883
|
+
};
|
|
884
|
+
today: {
|
|
885
|
+
true: string;
|
|
886
|
+
false: string;
|
|
887
|
+
};
|
|
888
|
+
/** #2 — coluna selecionada por clique: cabeçalho no verde da marca. */
|
|
889
|
+
selected: {
|
|
890
|
+
true: string;
|
|
891
|
+
false: string;
|
|
892
|
+
};
|
|
893
|
+
/**
|
|
894
|
+
* #1 — última unidade de um grupo (o último dia do mês, em `day`).
|
|
895
|
+
*
|
|
896
|
+
* Divisória mais grossa e mais clara, atravessando o cabeçalho inteiro e o
|
|
897
|
+
* conteúdo: é o que faz o mês ler como um BLOCO em vez de uma fileira
|
|
898
|
+
* contínua de dias. O limite vem de `axis.groups`, então acompanha a escala
|
|
899
|
+
* — vira mês em `day`/`week` e ano em `month`/`quarter`.
|
|
900
|
+
*
|
|
901
|
+
* ⚠️ `border-input` foi ESCOLHIDO por medição, não por nome. ΔL de cada
|
|
902
|
+
* candidato contra a superfície onde a linha vive:
|
|
903
|
+
*
|
|
904
|
+
* token dark (bg 0.225) light (bg 1.0) × a linha comum
|
|
905
|
+
* border-subtle (comum) 0.031 0.069 1.0×
|
|
906
|
+
* border-default 0.040 0.092 1.3× / 1.3×
|
|
907
|
+
* border-input 0.062 0.124 2.0× / 1.8×
|
|
908
|
+
* chart-grid 0.093 0.092 3.0× / 1.3×
|
|
909
|
+
*
|
|
910
|
+
* Três voltas até aqui, e cada uma ensinou algo:
|
|
911
|
+
*
|
|
912
|
+
* 1. `border-default` a 2px ficou **invisível** — 0.040 contra 0.031 é a MESMA
|
|
913
|
+
* linha. Eu tinha medido que o valor do token mudou, não que a mudança se
|
|
914
|
+
* vê; espessura não compra o que falta em contraste.
|
|
915
|
+
* 2. `chart-grid` a 3px resolveu o contraste e passou do ponto nos dois
|
|
916
|
+
* eixos: 3px vira moldura, e 3× a linha comum vira estrutura competindo
|
|
917
|
+
* com a barra.
|
|
918
|
+
* 3. `border-input` a 2px é o degrau do meio, e é o único candidato que fica
|
|
919
|
+
* em ~2× nos DOIS modos — por isso não precisa de par `dark:`. Menos
|
|
920
|
+
* classe e sem risco de os dois modos divergirem na próxima edição.
|
|
921
|
+
*
|
|
922
|
+
* ⛔ Não meça isto durante a transição: a coluna tem `transition-colors`, e
|
|
923
|
+
* ler no meio dela devolve o valor interpolado (serializado em `oklab`, que é
|
|
924
|
+
* a pista). Já me enganou uma vez nesta mesma linha.
|
|
925
|
+
*
|
|
926
|
+
* ⛔ Não troque por um token de marca: o verde já significa "hoje" e
|
|
927
|
+
* "selecionado" aqui, e a virada de mês não é nem uma nem outra.
|
|
928
|
+
*/
|
|
929
|
+
boundary: {
|
|
930
|
+
true: string;
|
|
931
|
+
false: string;
|
|
932
|
+
};
|
|
933
|
+
}, undefined, string[], {
|
|
934
|
+
level: {
|
|
935
|
+
group: string;
|
|
936
|
+
/**
|
|
937
|
+
* #10 — a unidade EMPILHA: abreviação do dia em cima, número embaixo e
|
|
938
|
+
* maior. Lado a lado (`S 21`), o par competia por largura com a
|
|
939
|
+
* divisória; empilhado, a data ganha peso e a abreviação vira legenda.
|
|
940
|
+
*/
|
|
941
|
+
unit: string;
|
|
942
|
+
};
|
|
943
|
+
/** Fim de semana: coluna sombreada, e o rótulo desce um tom. */
|
|
944
|
+
weekend: {
|
|
945
|
+
true: string;
|
|
946
|
+
false: string;
|
|
947
|
+
};
|
|
948
|
+
today: {
|
|
949
|
+
true: string;
|
|
950
|
+
false: string;
|
|
951
|
+
};
|
|
952
|
+
/** #2 — coluna selecionada por clique: cabeçalho no verde da marca. */
|
|
953
|
+
selected: {
|
|
954
|
+
true: string;
|
|
955
|
+
false: string;
|
|
956
|
+
};
|
|
957
|
+
/**
|
|
958
|
+
* #1 — última unidade de um grupo (o último dia do mês, em `day`).
|
|
959
|
+
*
|
|
960
|
+
* Divisória mais grossa e mais clara, atravessando o cabeçalho inteiro e o
|
|
961
|
+
* conteúdo: é o que faz o mês ler como um BLOCO em vez de uma fileira
|
|
962
|
+
* contínua de dias. O limite vem de `axis.groups`, então acompanha a escala
|
|
963
|
+
* — vira mês em `day`/`week` e ano em `month`/`quarter`.
|
|
964
|
+
*
|
|
965
|
+
* ⚠️ `border-input` foi ESCOLHIDO por medição, não por nome. ΔL de cada
|
|
966
|
+
* candidato contra a superfície onde a linha vive:
|
|
967
|
+
*
|
|
968
|
+
* token dark (bg 0.225) light (bg 1.0) × a linha comum
|
|
969
|
+
* border-subtle (comum) 0.031 0.069 1.0×
|
|
970
|
+
* border-default 0.040 0.092 1.3× / 1.3×
|
|
971
|
+
* border-input 0.062 0.124 2.0× / 1.8×
|
|
972
|
+
* chart-grid 0.093 0.092 3.0× / 1.3×
|
|
973
|
+
*
|
|
974
|
+
* Três voltas até aqui, e cada uma ensinou algo:
|
|
975
|
+
*
|
|
976
|
+
* 1. `border-default` a 2px ficou **invisível** — 0.040 contra 0.031 é a MESMA
|
|
977
|
+
* linha. Eu tinha medido que o valor do token mudou, não que a mudança se
|
|
978
|
+
* vê; espessura não compra o que falta em contraste.
|
|
979
|
+
* 2. `chart-grid` a 3px resolveu o contraste e passou do ponto nos dois
|
|
980
|
+
* eixos: 3px vira moldura, e 3× a linha comum vira estrutura competindo
|
|
981
|
+
* com a barra.
|
|
982
|
+
* 3. `border-input` a 2px é o degrau do meio, e é o único candidato que fica
|
|
983
|
+
* em ~2× nos DOIS modos — por isso não precisa de par `dark:`. Menos
|
|
984
|
+
* classe e sem risco de os dois modos divergirem na próxima edição.
|
|
985
|
+
*
|
|
986
|
+
* ⛔ Não meça isto durante a transição: a coluna tem `transition-colors`, e
|
|
987
|
+
* ler no meio dela devolve o valor interpolado (serializado em `oklab`, que é
|
|
988
|
+
* a pista). Já me enganou uma vez nesta mesma linha.
|
|
989
|
+
*
|
|
990
|
+
* ⛔ Não troque por um token de marca: o verde já significa "hoje" e
|
|
991
|
+
* "selecionado" aqui, e a virada de mês não é nem uma nem outra.
|
|
992
|
+
*/
|
|
993
|
+
boundary: {
|
|
994
|
+
true: string;
|
|
995
|
+
false: string;
|
|
996
|
+
};
|
|
997
|
+
}, undefined, import('tailwind-variants').TVReturnType<{
|
|
998
|
+
level: {
|
|
999
|
+
group: string;
|
|
1000
|
+
/**
|
|
1001
|
+
* #10 — a unidade EMPILHA: abreviação do dia em cima, número embaixo e
|
|
1002
|
+
* maior. Lado a lado (`S 21`), o par competia por largura com a
|
|
1003
|
+
* divisória; empilhado, a data ganha peso e a abreviação vira legenda.
|
|
1004
|
+
*/
|
|
1005
|
+
unit: string;
|
|
1006
|
+
};
|
|
1007
|
+
/** Fim de semana: coluna sombreada, e o rótulo desce um tom. */
|
|
1008
|
+
weekend: {
|
|
1009
|
+
true: string;
|
|
1010
|
+
false: string;
|
|
1011
|
+
};
|
|
1012
|
+
today: {
|
|
1013
|
+
true: string;
|
|
1014
|
+
false: string;
|
|
1015
|
+
};
|
|
1016
|
+
/** #2 — coluna selecionada por clique: cabeçalho no verde da marca. */
|
|
1017
|
+
selected: {
|
|
1018
|
+
true: string;
|
|
1019
|
+
false: string;
|
|
1020
|
+
};
|
|
1021
|
+
/**
|
|
1022
|
+
* #1 — última unidade de um grupo (o último dia do mês, em `day`).
|
|
1023
|
+
*
|
|
1024
|
+
* Divisória mais grossa e mais clara, atravessando o cabeçalho inteiro e o
|
|
1025
|
+
* conteúdo: é o que faz o mês ler como um BLOCO em vez de uma fileira
|
|
1026
|
+
* contínua de dias. O limite vem de `axis.groups`, então acompanha a escala
|
|
1027
|
+
* — vira mês em `day`/`week` e ano em `month`/`quarter`.
|
|
1028
|
+
*
|
|
1029
|
+
* ⚠️ `border-input` foi ESCOLHIDO por medição, não por nome. ΔL de cada
|
|
1030
|
+
* candidato contra a superfície onde a linha vive:
|
|
1031
|
+
*
|
|
1032
|
+
* token dark (bg 0.225) light (bg 1.0) × a linha comum
|
|
1033
|
+
* border-subtle (comum) 0.031 0.069 1.0×
|
|
1034
|
+
* border-default 0.040 0.092 1.3× / 1.3×
|
|
1035
|
+
* border-input 0.062 0.124 2.0× / 1.8×
|
|
1036
|
+
* chart-grid 0.093 0.092 3.0× / 1.3×
|
|
1037
|
+
*
|
|
1038
|
+
* Três voltas até aqui, e cada uma ensinou algo:
|
|
1039
|
+
*
|
|
1040
|
+
* 1. `border-default` a 2px ficou **invisível** — 0.040 contra 0.031 é a MESMA
|
|
1041
|
+
* linha. Eu tinha medido que o valor do token mudou, não que a mudança se
|
|
1042
|
+
* vê; espessura não compra o que falta em contraste.
|
|
1043
|
+
* 2. `chart-grid` a 3px resolveu o contraste e passou do ponto nos dois
|
|
1044
|
+
* eixos: 3px vira moldura, e 3× a linha comum vira estrutura competindo
|
|
1045
|
+
* com a barra.
|
|
1046
|
+
* 3. `border-input` a 2px é o degrau do meio, e é o único candidato que fica
|
|
1047
|
+
* em ~2× nos DOIS modos — por isso não precisa de par `dark:`. Menos
|
|
1048
|
+
* classe e sem risco de os dois modos divergirem na próxima edição.
|
|
1049
|
+
*
|
|
1050
|
+
* ⛔ Não meça isto durante a transição: a coluna tem `transition-colors`, e
|
|
1051
|
+
* ler no meio dela devolve o valor interpolado (serializado em `oklab`, que é
|
|
1052
|
+
* a pista). Já me enganou uma vez nesta mesma linha.
|
|
1053
|
+
*
|
|
1054
|
+
* ⛔ Não troque por um token de marca: o verde já significa "hoje" e
|
|
1055
|
+
* "selecionado" aqui, e a virada de mês não é nem uma nem outra.
|
|
1056
|
+
*/
|
|
1057
|
+
boundary: {
|
|
1058
|
+
true: string;
|
|
1059
|
+
false: string;
|
|
1060
|
+
};
|
|
1061
|
+
}, undefined, string[], unknown, unknown, undefined>>;
|
|
1062
|
+
/**
|
|
1063
|
+
* Abreviação do dia da semana — a linha de cima da célula.
|
|
1064
|
+
*
|
|
1065
|
+
* `caption-xs` e cor `subtle`: é legenda da data, não a informação. Com o mesmo
|
|
1066
|
+
* peso do número, os dois competiam e a coluna virava um bloco de texto.
|
|
1067
|
+
*/
|
|
1068
|
+
export declare const ganttHeadWeekday: import('tailwind-variants').TVReturnType<{
|
|
1069
|
+
weekend: {
|
|
1070
|
+
true: string;
|
|
1071
|
+
false: string;
|
|
1072
|
+
};
|
|
1073
|
+
}, undefined, "text-caption-xs leading-none text-fg-subtle", {
|
|
1074
|
+
weekend: {
|
|
1075
|
+
true: string;
|
|
1076
|
+
false: string;
|
|
1077
|
+
};
|
|
1078
|
+
}, undefined, import('tailwind-variants').TVReturnType<{
|
|
1079
|
+
weekend: {
|
|
1080
|
+
true: string;
|
|
1081
|
+
false: string;
|
|
1082
|
+
};
|
|
1083
|
+
}, undefined, "text-caption-xs leading-none text-fg-subtle", unknown, unknown, undefined>>;
|
|
1084
|
+
/** O número do dia. `tabular-nums` pra a coluna não dançar entre 9 e 10. */
|
|
1085
|
+
export declare const ganttHeadDayNumber: import('tailwind-variants').TVReturnType<{
|
|
1086
|
+
today: {
|
|
1087
|
+
true: string;
|
|
1088
|
+
false: string;
|
|
1089
|
+
};
|
|
1090
|
+
}, undefined, "mt-[2px] text-body-sm leading-none tabular-nums", {
|
|
1091
|
+
today: {
|
|
1092
|
+
true: string;
|
|
1093
|
+
false: string;
|
|
1094
|
+
};
|
|
1095
|
+
}, undefined, import('tailwind-variants').TVReturnType<{
|
|
1096
|
+
today: {
|
|
1097
|
+
true: string;
|
|
1098
|
+
false: string;
|
|
1099
|
+
};
|
|
1100
|
+
}, undefined, "mt-[2px] text-body-sm leading-none tabular-nums", unknown, unknown, undefined>>;
|
|
1101
|
+
/** Cabeçalho da grade esquerda — alinha com os dois níveis da direita. */
|
|
1102
|
+
/**
|
|
1103
|
+
* Cabeçalho da grade esquerda.
|
|
1104
|
+
*
|
|
1105
|
+
* ⚠️ `items-center` e não `items-end`.
|
|
1106
|
+
*
|
|
1107
|
+
* O cabeçalho tem a altura dos DOIS níveis do eixo da direita (68px), mas do
|
|
1108
|
+
* lado esquerdo existe um nível só. Alinhado embaixo, ele deixava ~38px de área
|
|
1109
|
+
* branca acima dos rótulos, e a grade parecia começar torta em relação ao eixo.
|
|
1110
|
+
* Centrado, o espaço se distribui e os dois lados leem como o mesmo cabeçalho.
|
|
1111
|
+
*/
|
|
1112
|
+
export declare const ganttGridHead: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
1113
|
+
export declare const ganttGridHeadCell: import('tailwind-variants').TVReturnType<{
|
|
1114
|
+
align: {
|
|
1115
|
+
left: string;
|
|
1116
|
+
center: string;
|
|
1117
|
+
right: string;
|
|
1118
|
+
};
|
|
1119
|
+
}, undefined, string[], {
|
|
1120
|
+
align: {
|
|
1121
|
+
left: string;
|
|
1122
|
+
center: string;
|
|
1123
|
+
right: string;
|
|
1124
|
+
};
|
|
1125
|
+
}, undefined, import('tailwind-variants').TVReturnType<{
|
|
1126
|
+
align: {
|
|
1127
|
+
left: string;
|
|
1128
|
+
center: string;
|
|
1129
|
+
right: string;
|
|
1130
|
+
};
|
|
1131
|
+
}, undefined, string[], unknown, unknown, undefined>>;
|
|
1132
|
+
/** Linha da grade esquerda. */
|
|
1133
|
+
export declare const ganttGridRow: import('tailwind-variants').TVReturnType<{
|
|
1134
|
+
type: {
|
|
1135
|
+
task: string;
|
|
1136
|
+
/** `summary` é agrupador: peso maior e fundo levemente destacado. */
|
|
1137
|
+
summary: string;
|
|
1138
|
+
milestone: string;
|
|
1139
|
+
};
|
|
1140
|
+
/**
|
|
1141
|
+
* #7 — linha selecionada, no verde da marca.
|
|
1142
|
+
*
|
|
1143
|
+
* Mesma leitura da linha selecionada do `DataTable`: a cor da marca diz "é
|
|
1144
|
+
* esta que estou olhando". Vence o hover no `compoundVariant` abaixo —
|
|
1145
|
+
* senão passar o mouse sobre a linha selecionada a apagava.
|
|
1146
|
+
*/
|
|
1147
|
+
selected: {
|
|
1148
|
+
true: string;
|
|
1149
|
+
false: string;
|
|
1150
|
+
};
|
|
1151
|
+
/**
|
|
1152
|
+
* #3 — hover CRUZADO, controlado por estado e não por `:hover` do CSS.
|
|
1153
|
+
*
|
|
1154
|
+
* `:hover` só acende o elemento sob o cursor, e aqui a linha vive em DOIS
|
|
1155
|
+
* painéis irmãos: passar o mouse no nome tem que acender a faixa da barra e
|
|
1156
|
+
* vice-versa. Nenhum seletor CSS alcança um irmão de outro contêiner, então
|
|
1157
|
+
* o índice da linha sob o cursor é estado do React.
|
|
1158
|
+
*
|
|
1159
|
+
* ⚠️ `bg-bg-muted` e não `bg-bg-subtle`: no dark, `subtle` é
|
|
1160
|
+
* `oklch(1 0 0 / 0.01)` — 1% de branco, que é **invisível** na prática.
|
|
1161
|
+
* Medi o hover e o antes/depois diferiam em 1 centésimo de alfa. `muted` é
|
|
1162
|
+
* 3%, e ainda foi preciso somar a borda pra o realce se ler.
|
|
1163
|
+
*/
|
|
1164
|
+
hovered: {
|
|
1165
|
+
true: string;
|
|
1166
|
+
false: string;
|
|
1167
|
+
};
|
|
1168
|
+
}, undefined, string[], {
|
|
1169
|
+
type: {
|
|
1170
|
+
task: string;
|
|
1171
|
+
/** `summary` é agrupador: peso maior e fundo levemente destacado. */
|
|
1172
|
+
summary: string;
|
|
1173
|
+
milestone: string;
|
|
1174
|
+
};
|
|
1175
|
+
/**
|
|
1176
|
+
* #7 — linha selecionada, no verde da marca.
|
|
1177
|
+
*
|
|
1178
|
+
* Mesma leitura da linha selecionada do `DataTable`: a cor da marca diz "é
|
|
1179
|
+
* esta que estou olhando". Vence o hover no `compoundVariant` abaixo —
|
|
1180
|
+
* senão passar o mouse sobre a linha selecionada a apagava.
|
|
1181
|
+
*/
|
|
1182
|
+
selected: {
|
|
1183
|
+
true: string;
|
|
1184
|
+
false: string;
|
|
1185
|
+
};
|
|
1186
|
+
/**
|
|
1187
|
+
* #3 — hover CRUZADO, controlado por estado e não por `:hover` do CSS.
|
|
1188
|
+
*
|
|
1189
|
+
* `:hover` só acende o elemento sob o cursor, e aqui a linha vive em DOIS
|
|
1190
|
+
* painéis irmãos: passar o mouse no nome tem que acender a faixa da barra e
|
|
1191
|
+
* vice-versa. Nenhum seletor CSS alcança um irmão de outro contêiner, então
|
|
1192
|
+
* o índice da linha sob o cursor é estado do React.
|
|
1193
|
+
*
|
|
1194
|
+
* ⚠️ `bg-bg-muted` e não `bg-bg-subtle`: no dark, `subtle` é
|
|
1195
|
+
* `oklch(1 0 0 / 0.01)` — 1% de branco, que é **invisível** na prática.
|
|
1196
|
+
* Medi o hover e o antes/depois diferiam em 1 centésimo de alfa. `muted` é
|
|
1197
|
+
* 3%, e ainda foi preciso somar a borda pra o realce se ler.
|
|
1198
|
+
*/
|
|
1199
|
+
hovered: {
|
|
1200
|
+
true: string;
|
|
1201
|
+
false: string;
|
|
1202
|
+
};
|
|
1203
|
+
}, undefined, import('tailwind-variants').TVReturnType<{
|
|
1204
|
+
type: {
|
|
1205
|
+
task: string;
|
|
1206
|
+
/** `summary` é agrupador: peso maior e fundo levemente destacado. */
|
|
1207
|
+
summary: string;
|
|
1208
|
+
milestone: string;
|
|
1209
|
+
};
|
|
1210
|
+
/**
|
|
1211
|
+
* #7 — linha selecionada, no verde da marca.
|
|
1212
|
+
*
|
|
1213
|
+
* Mesma leitura da linha selecionada do `DataTable`: a cor da marca diz "é
|
|
1214
|
+
* esta que estou olhando". Vence o hover no `compoundVariant` abaixo —
|
|
1215
|
+
* senão passar o mouse sobre a linha selecionada a apagava.
|
|
1216
|
+
*/
|
|
1217
|
+
selected: {
|
|
1218
|
+
true: string;
|
|
1219
|
+
false: string;
|
|
1220
|
+
};
|
|
1221
|
+
/**
|
|
1222
|
+
* #3 — hover CRUZADO, controlado por estado e não por `:hover` do CSS.
|
|
1223
|
+
*
|
|
1224
|
+
* `:hover` só acende o elemento sob o cursor, e aqui a linha vive em DOIS
|
|
1225
|
+
* painéis irmãos: passar o mouse no nome tem que acender a faixa da barra e
|
|
1226
|
+
* vice-versa. Nenhum seletor CSS alcança um irmão de outro contêiner, então
|
|
1227
|
+
* o índice da linha sob o cursor é estado do React.
|
|
1228
|
+
*
|
|
1229
|
+
* ⚠️ `bg-bg-muted` e não `bg-bg-subtle`: no dark, `subtle` é
|
|
1230
|
+
* `oklch(1 0 0 / 0.01)` — 1% de branco, que é **invisível** na prática.
|
|
1231
|
+
* Medi o hover e o antes/depois diferiam em 1 centésimo de alfa. `muted` é
|
|
1232
|
+
* 3%, e ainda foi preciso somar a borda pra o realce se ler.
|
|
1233
|
+
*/
|
|
1234
|
+
hovered: {
|
|
1235
|
+
true: string;
|
|
1236
|
+
false: string;
|
|
1237
|
+
};
|
|
1238
|
+
}, undefined, string[], unknown, unknown, undefined>>;
|
|
1239
|
+
/**
|
|
1240
|
+
* Célula da grade.
|
|
1241
|
+
*
|
|
1242
|
+
* ⚠️ `text-body-sm` na base NÃO é redundante com o `ganttGridLabelText`.
|
|
1243
|
+
*
|
|
1244
|
+
* Só a PRIMEIRA célula usa aquele estilo; as outras (data, duração, %) não
|
|
1245
|
+
* tinham preset nenhum e herdavam os **16px do body** — medido: numa linha de
|
|
1246
|
+
* 44px a data renderizava em 16px, quase o dobro do vizinho, e a coluna parecia
|
|
1247
|
+
* outro componente. É a L-007 na prática: tipografia avulsa por omissão.
|
|
1248
|
+
*/
|
|
1249
|
+
export declare const ganttGridCell: import('tailwind-variants').TVReturnType<{
|
|
1250
|
+
align: {
|
|
1251
|
+
left: string;
|
|
1252
|
+
center: string;
|
|
1253
|
+
right: string;
|
|
1254
|
+
};
|
|
1255
|
+
/** Coluna de número/data: `tabular-nums` pra alinhar dígito com dígito. */
|
|
1256
|
+
numeric: {
|
|
1257
|
+
true: string;
|
|
1258
|
+
false: string;
|
|
1259
|
+
};
|
|
1260
|
+
/**
|
|
1261
|
+
* #6 — hierarquia dentro da linha.
|
|
1262
|
+
*
|
|
1263
|
+
* O nome da tarefa é a informação; data, duração e responsável são apoio.
|
|
1264
|
+
* Com todos em `fg-default` e o mesmo peso, as quatro colunas disputavam a
|
|
1265
|
+
* atenção e a grade lia como um bloco de texto. `muted` + `font-normal`
|
|
1266
|
+
* recua o apoio sem escondê-lo.
|
|
1267
|
+
*/
|
|
1268
|
+
tone: {
|
|
1269
|
+
default: string;
|
|
1270
|
+
muted: string;
|
|
1271
|
+
};
|
|
1272
|
+
}, undefined, string[], {
|
|
1273
|
+
align: {
|
|
1274
|
+
left: string;
|
|
1275
|
+
center: string;
|
|
1276
|
+
right: string;
|
|
1277
|
+
};
|
|
1278
|
+
/** Coluna de número/data: `tabular-nums` pra alinhar dígito com dígito. */
|
|
1279
|
+
numeric: {
|
|
1280
|
+
true: string;
|
|
1281
|
+
false: string;
|
|
1282
|
+
};
|
|
1283
|
+
/**
|
|
1284
|
+
* #6 — hierarquia dentro da linha.
|
|
1285
|
+
*
|
|
1286
|
+
* O nome da tarefa é a informação; data, duração e responsável são apoio.
|
|
1287
|
+
* Com todos em `fg-default` e o mesmo peso, as quatro colunas disputavam a
|
|
1288
|
+
* atenção e a grade lia como um bloco de texto. `muted` + `font-normal`
|
|
1289
|
+
* recua o apoio sem escondê-lo.
|
|
1290
|
+
*/
|
|
1291
|
+
tone: {
|
|
1292
|
+
default: string;
|
|
1293
|
+
muted: string;
|
|
1294
|
+
};
|
|
1295
|
+
}, undefined, import('tailwind-variants').TVReturnType<{
|
|
1296
|
+
align: {
|
|
1297
|
+
left: string;
|
|
1298
|
+
center: string;
|
|
1299
|
+
right: string;
|
|
1300
|
+
};
|
|
1301
|
+
/** Coluna de número/data: `tabular-nums` pra alinhar dígito com dígito. */
|
|
1302
|
+
numeric: {
|
|
1303
|
+
true: string;
|
|
1304
|
+
false: string;
|
|
1305
|
+
};
|
|
1306
|
+
/**
|
|
1307
|
+
* #6 — hierarquia dentro da linha.
|
|
1308
|
+
*
|
|
1309
|
+
* O nome da tarefa é a informação; data, duração e responsável são apoio.
|
|
1310
|
+
* Com todos em `fg-default` e o mesmo peso, as quatro colunas disputavam a
|
|
1311
|
+
* atenção e a grade lia como um bloco de texto. `muted` + `font-normal`
|
|
1312
|
+
* recua o apoio sem escondê-lo.
|
|
1313
|
+
*/
|
|
1314
|
+
tone: {
|
|
1315
|
+
default: string;
|
|
1316
|
+
muted: string;
|
|
1317
|
+
};
|
|
1318
|
+
}, undefined, string[], unknown, unknown, undefined>>;
|
|
1319
|
+
/**
|
|
1320
|
+
* #1 — a linha `summary` é um CABEÇALHO de grupo, não uma linha de dados.
|
|
1321
|
+
*
|
|
1322
|
+
* Ela atravessa a grade inteira em vez de caber na primeira coluna. Confinada,
|
|
1323
|
+
* "1. Descoberta e escopo" truncava em "1. Desco…" com as colunas de Duração e
|
|
1324
|
+
* Resp. vazias ao lado — texto cortado por causa de espaço que estava logo ali,
|
|
1325
|
+
* sem uso. É o mesmo tratamento que linha de grupo recebe em data grid.
|
|
1326
|
+
*/
|
|
1327
|
+
export declare const ganttGridGroupCell: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
1328
|
+
/**
|
|
1329
|
+
* Conectores de árvore — o "├" e o "└" que ligam a linha ao pai.
|
|
1330
|
+
*
|
|
1331
|
+
* ## Por que virou conector e não guia
|
|
1332
|
+
*
|
|
1333
|
+
* A primeira versão desenhava só a vertical por nível ("guia"), e ficou ruim:
|
|
1334
|
+
* a linha passava ao lado do nome sem tocá-lo, então lia como divisória de
|
|
1335
|
+
* coluna, não como vínculo. O que diz "sou filho DESTE" é o **cotovelo** — a
|
|
1336
|
+
* vertical que desce do pai e vira à direita na altura do meu texto.
|
|
1337
|
+
*
|
|
1338
|
+
* ## Anatomia de uma coluna de recuo
|
|
1339
|
+
*
|
|
1340
|
+
* Cada nível de profundidade tem uma coluna de 16px. Numa linha em `depth d`:
|
|
1341
|
+
*
|
|
1342
|
+
* colunas 0 .. d-2 → PASS-THROUGH: só a vertical, e só se o ancestral
|
|
1343
|
+
* daquele nível ainda tiver irmão abaixo
|
|
1344
|
+
* coluna d-1 → o COTOVELO desta linha:
|
|
1345
|
+
* vertical do topo até o meio (sempre)
|
|
1346
|
+
* + vertical do meio até a base (só se NÃO for o último)
|
|
1347
|
+
* + horizontal do meio até a direita (sempre)
|
|
1348
|
+
*
|
|
1349
|
+
* Anatomia copiada do `hierarchicalLayout` do `List`, que é a implementação
|
|
1350
|
+
* que já pagou o preço de acertar o índice (L-045).
|
|
1351
|
+
*/
|
|
1352
|
+
export declare const ganttTreeRail: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "pointer-events-none absolute inset-y-0 left-pad-2xl", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "pointer-events-none absolute inset-y-0 left-pad-2xl", unknown, unknown, undefined>>;
|
|
1353
|
+
/**
|
|
1354
|
+
* Uma coluna de recuo. `relative` porque os segmentos se posicionam dentro dela.
|
|
1355
|
+
*
|
|
1356
|
+
* ⚠️ A largura tem que ser a MESMA do `paddingLeft: depth * 16` do rótulo. As
|
|
1357
|
+
* duas medidas são a mesma coisa em lugares diferentes — se divergirem, o
|
|
1358
|
+
* cotovelo aponta pro vazio ao lado do texto (L-038).
|
|
1359
|
+
*/
|
|
1360
|
+
export declare const ganttTreeColumn: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "absolute inset-y-0 w-[16px]", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "absolute inset-y-0 w-[16px]", unknown, unknown, undefined>>;
|
|
1361
|
+
/**
|
|
1362
|
+
* Um segmento de linha do conector.
|
|
1363
|
+
*
|
|
1364
|
+
* ⚠️ `border-input`, e cheguei nele **errando duas vezes o mesmo raciocínio**.
|
|
1365
|
+
* ΔL sobre a superfície da grade, no dark:
|
|
1366
|
+
*
|
|
1367
|
+
* border-subtle 0.031 = a divisória de linha. O conector se dissolvia
|
|
1368
|
+
* DENTRO da grade — virava mais uma linha da malha.
|
|
1369
|
+
* border-default 0.040 1ª tentativa. Escrevi aqui que "a linha é curta e o
|
|
1370
|
+
* olho segue o desenho, o degrau basta" — afirmação
|
|
1371
|
+
* que eu NÃO verifiquei. Na tela não se via nada.
|
|
1372
|
+
* border-input 0.062 2× a divisória. O conector é um GRAFO deliberado,
|
|
1373
|
+
* não fundo: tem que ganhar da malha que atravessa.
|
|
1374
|
+
*
|
|
1375
|
+
* A lição é a mesma que já me pegou na virada de mês e no divisor dos painéis:
|
|
1376
|
+
* trocar de token e conferir que o VALOR mudou não é conferir que a mudança se
|
|
1377
|
+
* VÊ. Aqui eu ainda por cima escrevi a garantia no comentário (L-060).
|
|
1378
|
+
*/
|
|
1379
|
+
export declare const ganttTreeSegment: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "absolute bg-border-input", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "absolute bg-border-input", unknown, unknown, undefined>>;
|
|
1380
|
+
export declare const ganttGridLabel: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "flex min-w-0 flex-col justify-center", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "flex min-w-0 flex-col justify-center", unknown, unknown, undefined>>;
|
|
1381
|
+
export declare const ganttGridLabelText: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "truncate text-body-sm text-fg-default", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "truncate text-body-sm text-fg-default", unknown, unknown, undefined>>;
|
|
1382
|
+
export declare const ganttGridSublabel: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "truncate text-caption-sm font-normal text-fg-muted", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "truncate text-caption-sm font-normal text-fg-muted", unknown, unknown, undefined>>;
|
|
1383
|
+
/**
|
|
1384
|
+
* Chevron do collapse.
|
|
1385
|
+
*
|
|
1386
|
+
* Rotação e não dois ícones: com dois ícones o nó troca no DOM e a transição
|
|
1387
|
+
* não acontece — o chevron "pisca" em vez de girar.
|
|
1388
|
+
*/
|
|
1389
|
+
export declare const ganttChevron: import('tailwind-variants').TVReturnType<{
|
|
1390
|
+
open: {
|
|
1391
|
+
true: string;
|
|
1392
|
+
false: string;
|
|
1393
|
+
};
|
|
1394
|
+
/** Folha: reserva o espaço sem desenhar o chevron, pra o rótulo alinhar. */
|
|
1395
|
+
hidden: {
|
|
1396
|
+
true: string;
|
|
1397
|
+
false: string;
|
|
1398
|
+
};
|
|
1399
|
+
}, undefined, string[], {
|
|
1400
|
+
open: {
|
|
1401
|
+
true: string;
|
|
1402
|
+
false: string;
|
|
1403
|
+
};
|
|
1404
|
+
/** Folha: reserva o espaço sem desenhar o chevron, pra o rótulo alinhar. */
|
|
1405
|
+
hidden: {
|
|
1406
|
+
true: string;
|
|
1407
|
+
false: string;
|
|
1408
|
+
};
|
|
1409
|
+
}, undefined, import('tailwind-variants').TVReturnType<{
|
|
1410
|
+
open: {
|
|
1411
|
+
true: string;
|
|
1412
|
+
false: string;
|
|
1413
|
+
};
|
|
1414
|
+
/** Folha: reserva o espaço sem desenhar o chevron, pra o rótulo alinhar. */
|
|
1415
|
+
hidden: {
|
|
1416
|
+
true: string;
|
|
1417
|
+
false: string;
|
|
1418
|
+
};
|
|
1419
|
+
}, undefined, string[], unknown, unknown, undefined>>;
|
|
1420
|
+
export declare const ganttCanvasScroll: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
1421
|
+
/** Camada de posicionamento — `relative`, e é a origem de todo `top`/`left`. */
|
|
1422
|
+
export declare const ganttCanvas: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "relative", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "relative", unknown, unknown, undefined>>;
|
|
1423
|
+
/** Linha de fundo do canvas — o par visual da linha da grade esquerda. */
|
|
1424
|
+
export declare const ganttCanvasRow: import('tailwind-variants').TVReturnType<{
|
|
1425
|
+
type: {
|
|
1426
|
+
task: string;
|
|
1427
|
+
summary: string;
|
|
1428
|
+
milestone: string;
|
|
1429
|
+
};
|
|
1430
|
+
hovered: {
|
|
1431
|
+
true: string;
|
|
1432
|
+
false: string;
|
|
1433
|
+
};
|
|
1434
|
+
selected: {
|
|
1435
|
+
true: string;
|
|
1436
|
+
false: string;
|
|
1437
|
+
};
|
|
1438
|
+
}, undefined, string[], {
|
|
1439
|
+
type: {
|
|
1440
|
+
task: string;
|
|
1441
|
+
summary: string;
|
|
1442
|
+
milestone: string;
|
|
1443
|
+
};
|
|
1444
|
+
hovered: {
|
|
1445
|
+
true: string;
|
|
1446
|
+
false: string;
|
|
1447
|
+
};
|
|
1448
|
+
selected: {
|
|
1449
|
+
true: string;
|
|
1450
|
+
false: string;
|
|
1451
|
+
};
|
|
1452
|
+
}, undefined, import('tailwind-variants').TVReturnType<{
|
|
1453
|
+
type: {
|
|
1454
|
+
task: string;
|
|
1455
|
+
summary: string;
|
|
1456
|
+
milestone: string;
|
|
1457
|
+
};
|
|
1458
|
+
hovered: {
|
|
1459
|
+
true: string;
|
|
1460
|
+
false: string;
|
|
1461
|
+
};
|
|
1462
|
+
selected: {
|
|
1463
|
+
true: string;
|
|
1464
|
+
false: string;
|
|
1465
|
+
};
|
|
1466
|
+
}, undefined, string[], unknown, unknown, undefined>>;
|
|
1467
|
+
/** Coluna vertical de grade, sombreando fim de semana. */
|
|
1468
|
+
export declare const ganttGridColumn: import('tailwind-variants').TVReturnType<{
|
|
1469
|
+
weekend: {
|
|
1470
|
+
true: string;
|
|
1471
|
+
false: string;
|
|
1472
|
+
};
|
|
1473
|
+
/** Coluna sob o cursor — a outra metade da mira. */
|
|
1474
|
+
hovered: {
|
|
1475
|
+
true: string;
|
|
1476
|
+
false: string;
|
|
1477
|
+
};
|
|
1478
|
+
/** #7 — coluna da linha selecionada, no verde da marca. */
|
|
1479
|
+
selected: {
|
|
1480
|
+
true: string;
|
|
1481
|
+
false: string;
|
|
1482
|
+
};
|
|
1483
|
+
/**
|
|
1484
|
+
* #1 — virada de mês/ano: o par da divisória do cabeçalho, MESMAS classes.
|
|
1485
|
+
* A tabela de ΔL que justifica a escolha do token está no `ganttHeadCell`.
|
|
1486
|
+
*/
|
|
1487
|
+
boundary: {
|
|
1488
|
+
true: string;
|
|
1489
|
+
false: string;
|
|
1490
|
+
};
|
|
1491
|
+
}, undefined, string[], {
|
|
1492
|
+
weekend: {
|
|
1493
|
+
true: string;
|
|
1494
|
+
false: string;
|
|
1495
|
+
};
|
|
1496
|
+
/** Coluna sob o cursor — a outra metade da mira. */
|
|
1497
|
+
hovered: {
|
|
1498
|
+
true: string;
|
|
1499
|
+
false: string;
|
|
1500
|
+
};
|
|
1501
|
+
/** #7 — coluna da linha selecionada, no verde da marca. */
|
|
1502
|
+
selected: {
|
|
1503
|
+
true: string;
|
|
1504
|
+
false: string;
|
|
1505
|
+
};
|
|
1506
|
+
/**
|
|
1507
|
+
* #1 — virada de mês/ano: o par da divisória do cabeçalho, MESMAS classes.
|
|
1508
|
+
* A tabela de ΔL que justifica a escolha do token está no `ganttHeadCell`.
|
|
1509
|
+
*/
|
|
1510
|
+
boundary: {
|
|
1511
|
+
true: string;
|
|
1512
|
+
false: string;
|
|
1513
|
+
};
|
|
1514
|
+
}, undefined, import('tailwind-variants').TVReturnType<{
|
|
1515
|
+
weekend: {
|
|
1516
|
+
true: string;
|
|
1517
|
+
false: string;
|
|
1518
|
+
};
|
|
1519
|
+
/** Coluna sob o cursor — a outra metade da mira. */
|
|
1520
|
+
hovered: {
|
|
1521
|
+
true: string;
|
|
1522
|
+
false: string;
|
|
1523
|
+
};
|
|
1524
|
+
/** #7 — coluna da linha selecionada, no verde da marca. */
|
|
1525
|
+
selected: {
|
|
1526
|
+
true: string;
|
|
1527
|
+
false: string;
|
|
1528
|
+
};
|
|
1529
|
+
/**
|
|
1530
|
+
* #1 — virada de mês/ano: o par da divisória do cabeçalho, MESMAS classes.
|
|
1531
|
+
* A tabela de ΔL que justifica a escolha do token está no `ganttHeadCell`.
|
|
1532
|
+
*/
|
|
1533
|
+
boundary: {
|
|
1534
|
+
true: string;
|
|
1535
|
+
false: string;
|
|
1536
|
+
};
|
|
1537
|
+
}, undefined, string[], unknown, unknown, undefined>>;
|
|
1538
|
+
/**
|
|
1539
|
+
* A barra.
|
|
1540
|
+
*
|
|
1541
|
+
* `absolute` porque a posição vem de `left`/`width` calculados em px a partir da
|
|
1542
|
+
* data — não de grid nem de flex. Grid de N colunas parece mais limpo até a
|
|
1543
|
+
* primeira barra que começa às 14h de um dia: ela não cai em limite de coluna.
|
|
1544
|
+
*/
|
|
1545
|
+
export declare const ganttBar: import('tailwind-variants').TVReturnType<{
|
|
1546
|
+
/**
|
|
1547
|
+
* ⚠️ A cor entra no fundo TINGIDO e no acento, nunca no texto — ver a nota
|
|
1548
|
+
* do topo. As chaves de chart usam `/14`, que é a mesma proporção do
|
|
1549
|
+
* `color-mix(… 14%, transparent)` com que o DS deriva os `-subtle`.
|
|
1550
|
+
*/
|
|
1551
|
+
colorKey: {
|
|
1552
|
+
"chart-1": {
|
|
1553
|
+
root: string;
|
|
1554
|
+
accent: string;
|
|
1555
|
+
progress: string;
|
|
1556
|
+
};
|
|
1557
|
+
"chart-2": {
|
|
1558
|
+
root: string;
|
|
1559
|
+
accent: string;
|
|
1560
|
+
progress: string;
|
|
1561
|
+
};
|
|
1562
|
+
"chart-3": {
|
|
1563
|
+
root: string;
|
|
1564
|
+
accent: string;
|
|
1565
|
+
progress: string;
|
|
1566
|
+
};
|
|
1567
|
+
"chart-4": {
|
|
1568
|
+
root: string;
|
|
1569
|
+
accent: string;
|
|
1570
|
+
progress: string;
|
|
1571
|
+
};
|
|
1572
|
+
"chart-5": {
|
|
1573
|
+
root: string;
|
|
1574
|
+
accent: string;
|
|
1575
|
+
progress: string;
|
|
1576
|
+
};
|
|
1577
|
+
brand: {
|
|
1578
|
+
root: string;
|
|
1579
|
+
accent: string;
|
|
1580
|
+
progress: string;
|
|
1581
|
+
};
|
|
1582
|
+
success: {
|
|
1583
|
+
root: string;
|
|
1584
|
+
accent: string;
|
|
1585
|
+
progress: string;
|
|
1586
|
+
};
|
|
1587
|
+
warning: {
|
|
1588
|
+
root: string;
|
|
1589
|
+
accent: string;
|
|
1590
|
+
progress: string;
|
|
1591
|
+
};
|
|
1592
|
+
danger: {
|
|
1593
|
+
root: string;
|
|
1594
|
+
accent: string;
|
|
1595
|
+
progress: string;
|
|
1596
|
+
};
|
|
1597
|
+
info: {
|
|
1598
|
+
root: string;
|
|
1599
|
+
accent: string;
|
|
1600
|
+
progress: string;
|
|
1601
|
+
};
|
|
1602
|
+
neutral: {
|
|
1603
|
+
root: string;
|
|
1604
|
+
accent: string;
|
|
1605
|
+
progress: string;
|
|
1606
|
+
};
|
|
1607
|
+
};
|
|
1608
|
+
/**
|
|
1609
|
+
* `summary` é mais baixa e sem acento: ela agrega, não é trabalho. As
|
|
1610
|
+
* referências desenham as pontas viradas pra baixo; aqui o sinal é a altura
|
|
1611
|
+
* reduzida e o radius menor, que sobrevive em 4px de largura por dia.
|
|
1612
|
+
*/
|
|
1613
|
+
type: {
|
|
1614
|
+
task: {
|
|
1615
|
+
root: string;
|
|
1616
|
+
};
|
|
1617
|
+
summary: {
|
|
1618
|
+
root: string;
|
|
1619
|
+
accent: string;
|
|
1620
|
+
};
|
|
1621
|
+
milestone: {
|
|
1622
|
+
root: string;
|
|
1623
|
+
accent: string;
|
|
1624
|
+
label: string;
|
|
1625
|
+
};
|
|
1626
|
+
};
|
|
1627
|
+
/** Barra que atravessa a janela: perde o canto e a borda daquele lado. */
|
|
1628
|
+
continuesBefore: {
|
|
1629
|
+
true: {
|
|
1630
|
+
root: string;
|
|
1631
|
+
};
|
|
1632
|
+
false: {};
|
|
1633
|
+
};
|
|
1634
|
+
continuesAfter: {
|
|
1635
|
+
true: {
|
|
1636
|
+
root: string;
|
|
1637
|
+
};
|
|
1638
|
+
false: {};
|
|
1639
|
+
};
|
|
1640
|
+
/** Vínculo violado — marcação não-cromática somada à cor. */
|
|
1641
|
+
conflict: {
|
|
1642
|
+
true: {
|
|
1643
|
+
root: string;
|
|
1644
|
+
};
|
|
1645
|
+
false: {};
|
|
1646
|
+
};
|
|
1647
|
+
/** No caminho crítico: anel externo, sem trocar a cor da categoria. */
|
|
1648
|
+
critical: {
|
|
1649
|
+
true: {
|
|
1650
|
+
root: string;
|
|
1651
|
+
};
|
|
1652
|
+
false: {};
|
|
1653
|
+
};
|
|
1654
|
+
dragging: {
|
|
1655
|
+
true: {
|
|
1656
|
+
root: string;
|
|
1657
|
+
};
|
|
1658
|
+
false: {};
|
|
1659
|
+
};
|
|
1660
|
+
movable: {
|
|
1661
|
+
true: {
|
|
1662
|
+
root: string;
|
|
1663
|
+
};
|
|
1664
|
+
false: {
|
|
1665
|
+
root: string;
|
|
1666
|
+
};
|
|
1667
|
+
};
|
|
1668
|
+
}, {
|
|
1669
|
+
root: string[];
|
|
1670
|
+
/** Acento sólido na borda esquerda — é AQUI que a cor viva mora. */
|
|
1671
|
+
accent: string;
|
|
1672
|
+
/** Preenchimento de progresso, sobre o tingido. */
|
|
1673
|
+
progress: string;
|
|
1674
|
+
label: string;
|
|
1675
|
+
}, undefined, {
|
|
1676
|
+
/**
|
|
1677
|
+
* ⚠️ A cor entra no fundo TINGIDO e no acento, nunca no texto — ver a nota
|
|
1678
|
+
* do topo. As chaves de chart usam `/14`, que é a mesma proporção do
|
|
1679
|
+
* `color-mix(… 14%, transparent)` com que o DS deriva os `-subtle`.
|
|
1680
|
+
*/
|
|
1681
|
+
colorKey: {
|
|
1682
|
+
"chart-1": {
|
|
1683
|
+
root: string;
|
|
1684
|
+
accent: string;
|
|
1685
|
+
progress: string;
|
|
1686
|
+
};
|
|
1687
|
+
"chart-2": {
|
|
1688
|
+
root: string;
|
|
1689
|
+
accent: string;
|
|
1690
|
+
progress: string;
|
|
1691
|
+
};
|
|
1692
|
+
"chart-3": {
|
|
1693
|
+
root: string;
|
|
1694
|
+
accent: string;
|
|
1695
|
+
progress: string;
|
|
1696
|
+
};
|
|
1697
|
+
"chart-4": {
|
|
1698
|
+
root: string;
|
|
1699
|
+
accent: string;
|
|
1700
|
+
progress: string;
|
|
1701
|
+
};
|
|
1702
|
+
"chart-5": {
|
|
1703
|
+
root: string;
|
|
1704
|
+
accent: string;
|
|
1705
|
+
progress: string;
|
|
1706
|
+
};
|
|
1707
|
+
brand: {
|
|
1708
|
+
root: string;
|
|
1709
|
+
accent: string;
|
|
1710
|
+
progress: string;
|
|
1711
|
+
};
|
|
1712
|
+
success: {
|
|
1713
|
+
root: string;
|
|
1714
|
+
accent: string;
|
|
1715
|
+
progress: string;
|
|
1716
|
+
};
|
|
1717
|
+
warning: {
|
|
1718
|
+
root: string;
|
|
1719
|
+
accent: string;
|
|
1720
|
+
progress: string;
|
|
1721
|
+
};
|
|
1722
|
+
danger: {
|
|
1723
|
+
root: string;
|
|
1724
|
+
accent: string;
|
|
1725
|
+
progress: string;
|
|
1726
|
+
};
|
|
1727
|
+
info: {
|
|
1728
|
+
root: string;
|
|
1729
|
+
accent: string;
|
|
1730
|
+
progress: string;
|
|
1731
|
+
};
|
|
1732
|
+
neutral: {
|
|
1733
|
+
root: string;
|
|
1734
|
+
accent: string;
|
|
1735
|
+
progress: string;
|
|
1736
|
+
};
|
|
1737
|
+
};
|
|
1738
|
+
/**
|
|
1739
|
+
* `summary` é mais baixa e sem acento: ela agrega, não é trabalho. As
|
|
1740
|
+
* referências desenham as pontas viradas pra baixo; aqui o sinal é a altura
|
|
1741
|
+
* reduzida e o radius menor, que sobrevive em 4px de largura por dia.
|
|
1742
|
+
*/
|
|
1743
|
+
type: {
|
|
1744
|
+
task: {
|
|
1745
|
+
root: string;
|
|
1746
|
+
};
|
|
1747
|
+
summary: {
|
|
1748
|
+
root: string;
|
|
1749
|
+
accent: string;
|
|
1750
|
+
};
|
|
1751
|
+
milestone: {
|
|
1752
|
+
root: string;
|
|
1753
|
+
accent: string;
|
|
1754
|
+
label: string;
|
|
1755
|
+
};
|
|
1756
|
+
};
|
|
1757
|
+
/** Barra que atravessa a janela: perde o canto e a borda daquele lado. */
|
|
1758
|
+
continuesBefore: {
|
|
1759
|
+
true: {
|
|
1760
|
+
root: string;
|
|
1761
|
+
};
|
|
1762
|
+
false: {};
|
|
1763
|
+
};
|
|
1764
|
+
continuesAfter: {
|
|
1765
|
+
true: {
|
|
1766
|
+
root: string;
|
|
1767
|
+
};
|
|
1768
|
+
false: {};
|
|
1769
|
+
};
|
|
1770
|
+
/** Vínculo violado — marcação não-cromática somada à cor. */
|
|
1771
|
+
conflict: {
|
|
1772
|
+
true: {
|
|
1773
|
+
root: string;
|
|
1774
|
+
};
|
|
1775
|
+
false: {};
|
|
1776
|
+
};
|
|
1777
|
+
/** No caminho crítico: anel externo, sem trocar a cor da categoria. */
|
|
1778
|
+
critical: {
|
|
1779
|
+
true: {
|
|
1780
|
+
root: string;
|
|
1781
|
+
};
|
|
1782
|
+
false: {};
|
|
1783
|
+
};
|
|
1784
|
+
dragging: {
|
|
1785
|
+
true: {
|
|
1786
|
+
root: string;
|
|
1787
|
+
};
|
|
1788
|
+
false: {};
|
|
1789
|
+
};
|
|
1790
|
+
movable: {
|
|
1791
|
+
true: {
|
|
1792
|
+
root: string;
|
|
1793
|
+
};
|
|
1794
|
+
false: {
|
|
1795
|
+
root: string;
|
|
1796
|
+
};
|
|
1797
|
+
};
|
|
1798
|
+
}, {
|
|
1799
|
+
root: string[];
|
|
1800
|
+
/** Acento sólido na borda esquerda — é AQUI que a cor viva mora. */
|
|
1801
|
+
accent: string;
|
|
1802
|
+
/** Preenchimento de progresso, sobre o tingido. */
|
|
1803
|
+
progress: string;
|
|
1804
|
+
label: string;
|
|
1805
|
+
}, import('tailwind-variants').TVReturnType<{
|
|
1806
|
+
/**
|
|
1807
|
+
* ⚠️ A cor entra no fundo TINGIDO e no acento, nunca no texto — ver a nota
|
|
1808
|
+
* do topo. As chaves de chart usam `/14`, que é a mesma proporção do
|
|
1809
|
+
* `color-mix(… 14%, transparent)` com que o DS deriva os `-subtle`.
|
|
1810
|
+
*/
|
|
1811
|
+
colorKey: {
|
|
1812
|
+
"chart-1": {
|
|
1813
|
+
root: string;
|
|
1814
|
+
accent: string;
|
|
1815
|
+
progress: string;
|
|
1816
|
+
};
|
|
1817
|
+
"chart-2": {
|
|
1818
|
+
root: string;
|
|
1819
|
+
accent: string;
|
|
1820
|
+
progress: string;
|
|
1821
|
+
};
|
|
1822
|
+
"chart-3": {
|
|
1823
|
+
root: string;
|
|
1824
|
+
accent: string;
|
|
1825
|
+
progress: string;
|
|
1826
|
+
};
|
|
1827
|
+
"chart-4": {
|
|
1828
|
+
root: string;
|
|
1829
|
+
accent: string;
|
|
1830
|
+
progress: string;
|
|
1831
|
+
};
|
|
1832
|
+
"chart-5": {
|
|
1833
|
+
root: string;
|
|
1834
|
+
accent: string;
|
|
1835
|
+
progress: string;
|
|
1836
|
+
};
|
|
1837
|
+
brand: {
|
|
1838
|
+
root: string;
|
|
1839
|
+
accent: string;
|
|
1840
|
+
progress: string;
|
|
1841
|
+
};
|
|
1842
|
+
success: {
|
|
1843
|
+
root: string;
|
|
1844
|
+
accent: string;
|
|
1845
|
+
progress: string;
|
|
1846
|
+
};
|
|
1847
|
+
warning: {
|
|
1848
|
+
root: string;
|
|
1849
|
+
accent: string;
|
|
1850
|
+
progress: string;
|
|
1851
|
+
};
|
|
1852
|
+
danger: {
|
|
1853
|
+
root: string;
|
|
1854
|
+
accent: string;
|
|
1855
|
+
progress: string;
|
|
1856
|
+
};
|
|
1857
|
+
info: {
|
|
1858
|
+
root: string;
|
|
1859
|
+
accent: string;
|
|
1860
|
+
progress: string;
|
|
1861
|
+
};
|
|
1862
|
+
neutral: {
|
|
1863
|
+
root: string;
|
|
1864
|
+
accent: string;
|
|
1865
|
+
progress: string;
|
|
1866
|
+
};
|
|
1867
|
+
};
|
|
1868
|
+
/**
|
|
1869
|
+
* `summary` é mais baixa e sem acento: ela agrega, não é trabalho. As
|
|
1870
|
+
* referências desenham as pontas viradas pra baixo; aqui o sinal é a altura
|
|
1871
|
+
* reduzida e o radius menor, que sobrevive em 4px de largura por dia.
|
|
1872
|
+
*/
|
|
1873
|
+
type: {
|
|
1874
|
+
task: {
|
|
1875
|
+
root: string;
|
|
1876
|
+
};
|
|
1877
|
+
summary: {
|
|
1878
|
+
root: string;
|
|
1879
|
+
accent: string;
|
|
1880
|
+
};
|
|
1881
|
+
milestone: {
|
|
1882
|
+
root: string;
|
|
1883
|
+
accent: string;
|
|
1884
|
+
label: string;
|
|
1885
|
+
};
|
|
1886
|
+
};
|
|
1887
|
+
/** Barra que atravessa a janela: perde o canto e a borda daquele lado. */
|
|
1888
|
+
continuesBefore: {
|
|
1889
|
+
true: {
|
|
1890
|
+
root: string;
|
|
1891
|
+
};
|
|
1892
|
+
false: {};
|
|
1893
|
+
};
|
|
1894
|
+
continuesAfter: {
|
|
1895
|
+
true: {
|
|
1896
|
+
root: string;
|
|
1897
|
+
};
|
|
1898
|
+
false: {};
|
|
1899
|
+
};
|
|
1900
|
+
/** Vínculo violado — marcação não-cromática somada à cor. */
|
|
1901
|
+
conflict: {
|
|
1902
|
+
true: {
|
|
1903
|
+
root: string;
|
|
1904
|
+
};
|
|
1905
|
+
false: {};
|
|
1906
|
+
};
|
|
1907
|
+
/** No caminho crítico: anel externo, sem trocar a cor da categoria. */
|
|
1908
|
+
critical: {
|
|
1909
|
+
true: {
|
|
1910
|
+
root: string;
|
|
1911
|
+
};
|
|
1912
|
+
false: {};
|
|
1913
|
+
};
|
|
1914
|
+
dragging: {
|
|
1915
|
+
true: {
|
|
1916
|
+
root: string;
|
|
1917
|
+
};
|
|
1918
|
+
false: {};
|
|
1919
|
+
};
|
|
1920
|
+
movable: {
|
|
1921
|
+
true: {
|
|
1922
|
+
root: string;
|
|
1923
|
+
};
|
|
1924
|
+
false: {
|
|
1925
|
+
root: string;
|
|
1926
|
+
};
|
|
1927
|
+
};
|
|
1928
|
+
}, {
|
|
1929
|
+
root: string[];
|
|
1930
|
+
/** Acento sólido na borda esquerda — é AQUI que a cor viva mora. */
|
|
1931
|
+
accent: string;
|
|
1932
|
+
/** Preenchimento de progresso, sobre o tingido. */
|
|
1933
|
+
progress: string;
|
|
1934
|
+
label: string;
|
|
1935
|
+
}, undefined, unknown, unknown, undefined>>;
|
|
1936
|
+
/** Losango do marco. Ponto no tempo, não intervalo — duração é ignorada. */
|
|
1937
|
+
export declare const ganttMilestone: import('tailwind-variants').TVReturnType<{
|
|
1938
|
+
colorKey: {
|
|
1939
|
+
"chart-1": string;
|
|
1940
|
+
"chart-2": string;
|
|
1941
|
+
"chart-3": string;
|
|
1942
|
+
"chart-4": string;
|
|
1943
|
+
"chart-5": string;
|
|
1944
|
+
brand: string;
|
|
1945
|
+
success: string;
|
|
1946
|
+
warning: string;
|
|
1947
|
+
danger: string;
|
|
1948
|
+
info: string;
|
|
1949
|
+
neutral: string;
|
|
1950
|
+
};
|
|
1951
|
+
}, undefined, string[], {
|
|
1952
|
+
colorKey: {
|
|
1953
|
+
"chart-1": string;
|
|
1954
|
+
"chart-2": string;
|
|
1955
|
+
"chart-3": string;
|
|
1956
|
+
"chart-4": string;
|
|
1957
|
+
"chart-5": string;
|
|
1958
|
+
brand: string;
|
|
1959
|
+
success: string;
|
|
1960
|
+
warning: string;
|
|
1961
|
+
danger: string;
|
|
1962
|
+
info: string;
|
|
1963
|
+
neutral: string;
|
|
1964
|
+
};
|
|
1965
|
+
}, undefined, import('tailwind-variants').TVReturnType<{
|
|
1966
|
+
colorKey: {
|
|
1967
|
+
"chart-1": string;
|
|
1968
|
+
"chart-2": string;
|
|
1969
|
+
"chart-3": string;
|
|
1970
|
+
"chart-4": string;
|
|
1971
|
+
"chart-5": string;
|
|
1972
|
+
brand: string;
|
|
1973
|
+
success: string;
|
|
1974
|
+
warning: string;
|
|
1975
|
+
danger: string;
|
|
1976
|
+
info: string;
|
|
1977
|
+
neutral: string;
|
|
1978
|
+
};
|
|
1979
|
+
}, undefined, string[], unknown, unknown, undefined>>;
|
|
1980
|
+
/** Punho de resize nas pontas. Revelado no hover da barra. */
|
|
1981
|
+
export declare const ganttResizeHandle: import('tailwind-variants').TVReturnType<{
|
|
1982
|
+
side: {
|
|
1983
|
+
start: string;
|
|
1984
|
+
end: string;
|
|
1985
|
+
};
|
|
1986
|
+
}, undefined, string[], {
|
|
1987
|
+
side: {
|
|
1988
|
+
start: string;
|
|
1989
|
+
end: string;
|
|
1990
|
+
};
|
|
1991
|
+
}, undefined, import('tailwind-variants').TVReturnType<{
|
|
1992
|
+
side: {
|
|
1993
|
+
start: string;
|
|
1994
|
+
end: string;
|
|
1995
|
+
};
|
|
1996
|
+
}, undefined, string[], unknown, unknown, undefined>>;
|
|
1997
|
+
/**
|
|
1998
|
+
* Conector de vínculo — o pontinho de onde se arrasta pra criar a seta.
|
|
1999
|
+
*
|
|
2000
|
+
* Fora da barra (`-left-*`/`-right-*`) e não dentro: dentro, ele competiria com
|
|
2001
|
+
* o punho de resize pelo mesmo pixel, e o usuário acertaria o errado.
|
|
2002
|
+
*/
|
|
2003
|
+
export declare const ganttLinkPort: import('tailwind-variants').TVReturnType<{
|
|
2004
|
+
side: {
|
|
2005
|
+
start: string;
|
|
2006
|
+
end: string;
|
|
2007
|
+
};
|
|
2008
|
+
}, undefined, string[], {
|
|
2009
|
+
side: {
|
|
2010
|
+
start: string;
|
|
2011
|
+
end: string;
|
|
2012
|
+
};
|
|
2013
|
+
}, undefined, import('tailwind-variants').TVReturnType<{
|
|
2014
|
+
side: {
|
|
2015
|
+
start: string;
|
|
2016
|
+
end: string;
|
|
2017
|
+
};
|
|
2018
|
+
}, undefined, string[], unknown, unknown, undefined>>;
|
|
2019
|
+
/**
|
|
2020
|
+
* Camada SVG dos vínculos.
|
|
2021
|
+
*
|
|
2022
|
+
* ⚠️ **Irmã do canvas, não filha da célula** — e `pointer-events-none` na
|
|
2023
|
+
* camada, reativado só nos paths.
|
|
2024
|
+
*
|
|
2025
|
+
* Filha da célula, ela seria recortada pelo `overflow` de qualquer ancestral, e
|
|
2026
|
+
* a seta desapareceria ao sair da linha de origem. É o mesmo defeito que o
|
|
2027
|
+
* `DragOverlay` resolveu no `Scheduler` — lá o bloco arrastado sumia atrás das
|
|
2028
|
+
* grades, por clipping de 3 ancestrais.
|
|
2029
|
+
*/
|
|
2030
|
+
export declare const ganttLinksLayer: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "pointer-events-none absolute inset-0 z-[3] overflow-visible", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "pointer-events-none absolute inset-0 z-[3] overflow-visible", unknown, unknown, undefined>>;
|
|
2031
|
+
/**
|
|
2032
|
+
* A linha-fantasma enquanto o usuário arrasta pra criar um vínculo.
|
|
2033
|
+
*
|
|
2034
|
+
* Tracejada e na cor da marca: tracejado diz "ainda não existe" (vínculo real
|
|
2035
|
+
* é sólido) e a marca diz "isto é o seu gesto", separando-a das setas já
|
|
2036
|
+
* desenhadas. Sem ela o usuário arrasta no vazio e não sabe se o gesto pegou.
|
|
2037
|
+
*/
|
|
2038
|
+
export declare const ganttLinkGhost: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
2039
|
+
export declare const ganttLinkPath: import('tailwind-variants').TVReturnType<{
|
|
2040
|
+
state: {
|
|
2041
|
+
default: string;
|
|
2042
|
+
/** Violado: tracejado + cor de perigo. Duplo canal, não só cor. */
|
|
2043
|
+
conflict: string;
|
|
2044
|
+
critical: string;
|
|
2045
|
+
};
|
|
2046
|
+
}, undefined, string[], {
|
|
2047
|
+
state: {
|
|
2048
|
+
default: string;
|
|
2049
|
+
/** Violado: tracejado + cor de perigo. Duplo canal, não só cor. */
|
|
2050
|
+
conflict: string;
|
|
2051
|
+
critical: string;
|
|
2052
|
+
};
|
|
2053
|
+
}, undefined, import('tailwind-variants').TVReturnType<{
|
|
2054
|
+
state: {
|
|
2055
|
+
default: string;
|
|
2056
|
+
/** Violado: tracejado + cor de perigo. Duplo canal, não só cor. */
|
|
2057
|
+
conflict: string;
|
|
2058
|
+
critical: string;
|
|
2059
|
+
};
|
|
2060
|
+
}, undefined, string[], unknown, unknown, undefined>>;
|
|
2061
|
+
/** Ponta de seta. `context-stroke` herda a cor do path sem duplicar variante. */
|
|
2062
|
+
export declare const ganttLinkArrow: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "fill-[context-stroke]", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "fill-[context-stroke]", unknown, unknown, undefined>>;
|
|
2063
|
+
export declare const ganttNowLine: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "pointer-events-none absolute inset-y-0 z-[2] w-0", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "pointer-events-none absolute inset-y-0 z-[2] w-0", unknown, unknown, undefined>>;
|
|
2064
|
+
export declare const ganttNowStroke: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "absolute inset-y-0 left-0 w-px -translate-x-1/2 bg-bg-danger", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "absolute inset-y-0 left-0 w-px -translate-x-1/2 bg-bg-danger", unknown, unknown, undefined>>;
|
|
2065
|
+
/**
|
|
2066
|
+
* Ponta da linha do "hoje".
|
|
2067
|
+
*
|
|
2068
|
+
* ⚠️ Sem `-translate-y-1/2`. A primeira versão tinha, e a bolinha saía
|
|
2069
|
+
* **cortada pela metade**: a metade de cima caía fora do contêiner, que tem
|
|
2070
|
+
* `overflow`. Não era z-index — era recorte, o mesmo diagnóstico que eu errei
|
|
2071
|
+
* primeiro no `DragOverlay` do Scheduler.
|
|
2072
|
+
*
|
|
2073
|
+
* ⛔ Houve aqui uma etiqueta com a data ("17 set") ancorada no cabeçalho.
|
|
2074
|
+
* REMOVIDA a pedido (#2): no cabeçalho ela cobria justamente o par
|
|
2075
|
+
* abreviação+número da coluna de hoje — trocava uma informação por outra em
|
|
2076
|
+
* cima da mesma. A linha vermelha basta pra localizar o dia, e a data já está
|
|
2077
|
+
* na própria coluna do eixo, embaixo dela.
|
|
2078
|
+
*/
|
|
2079
|
+
export declare const ganttNowDot: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
2080
|
+
/**
|
|
2081
|
+
* ⚠️ Grade de mês PRÓPRIA do `Gantt`, não a do `Scheduler`.
|
|
2082
|
+
*
|
|
2083
|
+
* A spec §5 registra a decisão e o preço: delegar criaria acoplamento por
|
|
2084
|
+
* herança de propósito — necessidade nova do Gantt viraria mudança numa API
|
|
2085
|
+
* publicada que serve outros consumidores. O preço é haver duas grades no repo,
|
|
2086
|
+
* com consistência garantida por revisão e não por construção.
|
|
2087
|
+
*/
|
|
2088
|
+
export declare const ganttMonthFrame: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
2089
|
+
export declare const ganttWeekdayRow: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "grid shrink-0 grid-cols-7 border-b border-border-default bg-bg-table-head", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "grid shrink-0 grid-cols-7 border-b border-border-default bg-bg-table-head", unknown, unknown, undefined>>;
|
|
2090
|
+
export declare const ganttWeekdayCell: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
2091
|
+
/**
|
|
2092
|
+
* A grade do mês — 6 linhas, com **altura mínima por linha e rolagem**.
|
|
2093
|
+
*
|
|
2094
|
+
* ⚠️ Era `grid-rows-6` puro, e o defeito foi medido: com 409px disponíveis a
|
|
2095
|
+
* linha saía com **68px**, que depois do número do dia (14) e dos paddings (12)
|
|
2096
|
+
* deixa 42px — **2 fatias de chip**. Numa célula com 4 tarefas o resultado era 1
|
|
2097
|
+
* chip visível e um "+3 mais".
|
|
2098
|
+
*
|
|
2099
|
+
* `minmax(88px, 1fr)`: 88 é 26 de cabeçalho + 3 fatias de 20 + folga, o mínimo
|
|
2100
|
+
* pra a célula responder "o que acontece neste dia" em vez de "tem coisa aqui".
|
|
2101
|
+
* Em viewport alta as linhas crescem com o `1fr`; em viewport curta a grade
|
|
2102
|
+
* **rola**, que é o que um calendário de mês faz.
|
|
2103
|
+
*
|
|
2104
|
+
* ⛔ Não troque por `grid-rows-6` "pra caber sem rolar": caber sem rolar aqui
|
|
2105
|
+
* significa não mostrar o conteúdo.
|
|
2106
|
+
*/
|
|
2107
|
+
export declare const ganttMonthGrid: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
2108
|
+
/**
|
|
2109
|
+
* Uma LINHA de semana — o contêiner que tornou o segmento contínuo possível.
|
|
2110
|
+
*
|
|
2111
|
+
* ⚠️ Antes a grade era 42 células soltas num `grid-cols-7 auto-rows-*`, e nessa
|
|
2112
|
+
* estrutura uma barra de 6 dias **não tem como** ser um elemento só: ela viraria
|
|
2113
|
+
* 6 chips, um por célula, cada um repetindo o nome. Lê como seis tarefas de um
|
|
2114
|
+
* dia em vez de uma de seis — o oposto do que um cronograma diz.
|
|
2115
|
+
*
|
|
2116
|
+
* Agora cada semana é uma linha `relative` com DUAS camadas:
|
|
2117
|
+
*
|
|
2118
|
+
* ganttWeekDays → as 7 células (fundo, número do dia, "+N mais", o "+")
|
|
2119
|
+
* ganttWeekSegments → camada absoluta com as barras atravessando colunas
|
|
2120
|
+
*
|
|
2121
|
+
* O `minmax(88px,1fr)` virou `min-h`: 88 é o mínimo pra a célula responder "o
|
|
2122
|
+
* que acontece neste dia" em vez de "tem coisa aqui", e em viewport alta a linha
|
|
2123
|
+
* cresce com o `flex-1`.
|
|
2124
|
+
*/
|
|
2125
|
+
export declare const ganttWeekRow: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "relative flex min-h-[88px] shrink-0 flex-1 flex-col", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "relative flex min-h-[88px] shrink-0 flex-1 flex-col", unknown, unknown, undefined>>;
|
|
2126
|
+
/** As 7 células de fundo da semana. */
|
|
2127
|
+
export declare const ganttWeekDays: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "grid min-h-0 flex-1 grid-cols-7", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "grid min-h-0 flex-1 grid-cols-7", unknown, unknown, undefined>>;
|
|
2128
|
+
/**
|
|
2129
|
+
* Camada dos segmentos.
|
|
2130
|
+
*
|
|
2131
|
+
* `pointer-events-none` na camada e reativado em cada segmento: senão ela
|
|
2132
|
+
* cobriria as células e o hover do "+" nunca disparava. Mesmo padrão do
|
|
2133
|
+
* `ganttLinksLayer` na timeline, e pela mesma razão.
|
|
2134
|
+
*/
|
|
2135
|
+
export declare const ganttWeekSegments: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "pointer-events-none absolute inset-x-0", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "pointer-events-none absolute inset-x-0", unknown, unknown, undefined>>;
|
|
2136
|
+
/**
|
|
2137
|
+
* Um segmento — a barra atravessando as colunas que ocupa.
|
|
2138
|
+
*
|
|
2139
|
+
* As pontas cortadas usam o MESMO vocabulário da timeline
|
|
2140
|
+
* (`continuesBefore`/`continuesAfter`): perdem o canto e a borda daquele lado,
|
|
2141
|
+
* pra o corte na virada de semana parecer intencional em vez de bug.
|
|
2142
|
+
*/
|
|
2143
|
+
export declare const ganttDaySegment: import('tailwind-variants').TVReturnType<{
|
|
2144
|
+
colorKey: {
|
|
2145
|
+
"chart-1": {
|
|
2146
|
+
root: string;
|
|
2147
|
+
dot: string;
|
|
2148
|
+
};
|
|
2149
|
+
"chart-2": {
|
|
2150
|
+
root: string;
|
|
2151
|
+
dot: string;
|
|
2152
|
+
};
|
|
2153
|
+
"chart-3": {
|
|
2154
|
+
root: string;
|
|
2155
|
+
dot: string;
|
|
2156
|
+
};
|
|
2157
|
+
"chart-4": {
|
|
2158
|
+
root: string;
|
|
2159
|
+
dot: string;
|
|
2160
|
+
};
|
|
2161
|
+
"chart-5": {
|
|
2162
|
+
root: string;
|
|
2163
|
+
dot: string;
|
|
2164
|
+
};
|
|
2165
|
+
brand: {
|
|
2166
|
+
root: string;
|
|
2167
|
+
dot: string;
|
|
2168
|
+
};
|
|
2169
|
+
success: {
|
|
2170
|
+
root: string;
|
|
2171
|
+
dot: string;
|
|
2172
|
+
};
|
|
2173
|
+
warning: {
|
|
2174
|
+
root: string;
|
|
2175
|
+
dot: string;
|
|
2176
|
+
};
|
|
2177
|
+
danger: {
|
|
2178
|
+
root: string;
|
|
2179
|
+
dot: string;
|
|
2180
|
+
};
|
|
2181
|
+
info: {
|
|
2182
|
+
root: string;
|
|
2183
|
+
dot: string;
|
|
2184
|
+
};
|
|
2185
|
+
neutral: {
|
|
2186
|
+
root: string;
|
|
2187
|
+
dot: string;
|
|
2188
|
+
};
|
|
2189
|
+
};
|
|
2190
|
+
continuesBefore: {
|
|
2191
|
+
true: {
|
|
2192
|
+
root: string;
|
|
2193
|
+
};
|
|
2194
|
+
false: {};
|
|
2195
|
+
};
|
|
2196
|
+
continuesAfter: {
|
|
2197
|
+
true: {
|
|
2198
|
+
root: string;
|
|
2199
|
+
};
|
|
2200
|
+
false: {};
|
|
2201
|
+
};
|
|
2202
|
+
conflict: {
|
|
2203
|
+
true: {
|
|
2204
|
+
root: string;
|
|
2205
|
+
};
|
|
2206
|
+
false: {};
|
|
2207
|
+
};
|
|
2208
|
+
critical: {
|
|
2209
|
+
true: {
|
|
2210
|
+
root: string;
|
|
2211
|
+
};
|
|
2212
|
+
false: {};
|
|
2213
|
+
};
|
|
2214
|
+
}, {
|
|
2215
|
+
root: string[];
|
|
2216
|
+
dot: string;
|
|
2217
|
+
label: string;
|
|
2218
|
+
}, undefined, {
|
|
2219
|
+
colorKey: {
|
|
2220
|
+
"chart-1": {
|
|
2221
|
+
root: string;
|
|
2222
|
+
dot: string;
|
|
2223
|
+
};
|
|
2224
|
+
"chart-2": {
|
|
2225
|
+
root: string;
|
|
2226
|
+
dot: string;
|
|
2227
|
+
};
|
|
2228
|
+
"chart-3": {
|
|
2229
|
+
root: string;
|
|
2230
|
+
dot: string;
|
|
2231
|
+
};
|
|
2232
|
+
"chart-4": {
|
|
2233
|
+
root: string;
|
|
2234
|
+
dot: string;
|
|
2235
|
+
};
|
|
2236
|
+
"chart-5": {
|
|
2237
|
+
root: string;
|
|
2238
|
+
dot: string;
|
|
2239
|
+
};
|
|
2240
|
+
brand: {
|
|
2241
|
+
root: string;
|
|
2242
|
+
dot: string;
|
|
2243
|
+
};
|
|
2244
|
+
success: {
|
|
2245
|
+
root: string;
|
|
2246
|
+
dot: string;
|
|
2247
|
+
};
|
|
2248
|
+
warning: {
|
|
2249
|
+
root: string;
|
|
2250
|
+
dot: string;
|
|
2251
|
+
};
|
|
2252
|
+
danger: {
|
|
2253
|
+
root: string;
|
|
2254
|
+
dot: string;
|
|
2255
|
+
};
|
|
2256
|
+
info: {
|
|
2257
|
+
root: string;
|
|
2258
|
+
dot: string;
|
|
2259
|
+
};
|
|
2260
|
+
neutral: {
|
|
2261
|
+
root: string;
|
|
2262
|
+
dot: string;
|
|
2263
|
+
};
|
|
2264
|
+
};
|
|
2265
|
+
continuesBefore: {
|
|
2266
|
+
true: {
|
|
2267
|
+
root: string;
|
|
2268
|
+
};
|
|
2269
|
+
false: {};
|
|
2270
|
+
};
|
|
2271
|
+
continuesAfter: {
|
|
2272
|
+
true: {
|
|
2273
|
+
root: string;
|
|
2274
|
+
};
|
|
2275
|
+
false: {};
|
|
2276
|
+
};
|
|
2277
|
+
conflict: {
|
|
2278
|
+
true: {
|
|
2279
|
+
root: string;
|
|
2280
|
+
};
|
|
2281
|
+
false: {};
|
|
2282
|
+
};
|
|
2283
|
+
critical: {
|
|
2284
|
+
true: {
|
|
2285
|
+
root: string;
|
|
2286
|
+
};
|
|
2287
|
+
false: {};
|
|
2288
|
+
};
|
|
2289
|
+
}, {
|
|
2290
|
+
root: string[];
|
|
2291
|
+
dot: string;
|
|
2292
|
+
label: string;
|
|
2293
|
+
}, import('tailwind-variants').TVReturnType<{
|
|
2294
|
+
colorKey: {
|
|
2295
|
+
"chart-1": {
|
|
2296
|
+
root: string;
|
|
2297
|
+
dot: string;
|
|
2298
|
+
};
|
|
2299
|
+
"chart-2": {
|
|
2300
|
+
root: string;
|
|
2301
|
+
dot: string;
|
|
2302
|
+
};
|
|
2303
|
+
"chart-3": {
|
|
2304
|
+
root: string;
|
|
2305
|
+
dot: string;
|
|
2306
|
+
};
|
|
2307
|
+
"chart-4": {
|
|
2308
|
+
root: string;
|
|
2309
|
+
dot: string;
|
|
2310
|
+
};
|
|
2311
|
+
"chart-5": {
|
|
2312
|
+
root: string;
|
|
2313
|
+
dot: string;
|
|
2314
|
+
};
|
|
2315
|
+
brand: {
|
|
2316
|
+
root: string;
|
|
2317
|
+
dot: string;
|
|
2318
|
+
};
|
|
2319
|
+
success: {
|
|
2320
|
+
root: string;
|
|
2321
|
+
dot: string;
|
|
2322
|
+
};
|
|
2323
|
+
warning: {
|
|
2324
|
+
root: string;
|
|
2325
|
+
dot: string;
|
|
2326
|
+
};
|
|
2327
|
+
danger: {
|
|
2328
|
+
root: string;
|
|
2329
|
+
dot: string;
|
|
2330
|
+
};
|
|
2331
|
+
info: {
|
|
2332
|
+
root: string;
|
|
2333
|
+
dot: string;
|
|
2334
|
+
};
|
|
2335
|
+
neutral: {
|
|
2336
|
+
root: string;
|
|
2337
|
+
dot: string;
|
|
2338
|
+
};
|
|
2339
|
+
};
|
|
2340
|
+
continuesBefore: {
|
|
2341
|
+
true: {
|
|
2342
|
+
root: string;
|
|
2343
|
+
};
|
|
2344
|
+
false: {};
|
|
2345
|
+
};
|
|
2346
|
+
continuesAfter: {
|
|
2347
|
+
true: {
|
|
2348
|
+
root: string;
|
|
2349
|
+
};
|
|
2350
|
+
false: {};
|
|
2351
|
+
};
|
|
2352
|
+
conflict: {
|
|
2353
|
+
true: {
|
|
2354
|
+
root: string;
|
|
2355
|
+
};
|
|
2356
|
+
false: {};
|
|
2357
|
+
};
|
|
2358
|
+
critical: {
|
|
2359
|
+
true: {
|
|
2360
|
+
root: string;
|
|
2361
|
+
};
|
|
2362
|
+
false: {};
|
|
2363
|
+
};
|
|
2364
|
+
}, {
|
|
2365
|
+
root: string[];
|
|
2366
|
+
dot: string;
|
|
2367
|
+
label: string;
|
|
2368
|
+
}, undefined, unknown, unknown, undefined>>;
|
|
2369
|
+
/**
|
|
2370
|
+
* O "+" de adicionar, revelado no hover da célula.
|
|
2371
|
+
*
|
|
2372
|
+
* ⚠️ Só renderiza quando o consumidor passa `onDayAdd`. Um "+" que não
|
|
2373
|
+
* adiciona nada é pior que a ausência dele — é a mesma regra do toggle de
|
|
2374
|
+
* caminho crítico sem vínculo.
|
|
2375
|
+
*
|
|
2376
|
+
* `opacity-0` + `group-hover` e não `hidden`: com `hidden` o nó entra e sai do
|
|
2377
|
+
* fluxo no hover, e a célula muda de altura embaixo do cursor.
|
|
2378
|
+
*/
|
|
2379
|
+
export declare const ganttDayAdd: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
2380
|
+
export declare const ganttMonthCell: import('tailwind-variants').TVReturnType<{
|
|
2381
|
+
/** Dia de fora do mês âncora: presente, mas recuado. */
|
|
2382
|
+
/**
|
|
2383
|
+
* ## O mês é UNIFORME. O que se destaca é o que não é dele.
|
|
2384
|
+
*
|
|
2385
|
+
* Todo dia do mês âncora tem o mesmo fundo — útil ou fim de semana, tanto
|
|
2386
|
+
* faz. Só as células de OUTRO mês recebem `bg-canvas`, e a grade passa a
|
|
2387
|
+
* responder uma pergunta só: onde este mês começa e onde acaba.
|
|
2388
|
+
*
|
|
2389
|
+
* ⛔ **Não existe variante de fim de semana aqui, e isso é decisão.**
|
|
2390
|
+
* Sombrear sábado e domingo divide o mês em blocos verticais e compete com
|
|
2391
|
+
* a única distinção que a grade precisa fazer. Num calendário de agenda o
|
|
2392
|
+
* fim de semana importa (não se marca reunião); num CRONOGRAMA a barra
|
|
2393
|
+
* atravessa o fim de semana de qualquer jeito, e listrar as colunas só
|
|
2394
|
+
* atrapalha a leitura do segmento contínuo que passa por cima.
|
|
2395
|
+
*
|
|
2396
|
+
* ## Por que `bg-canvas` e não escurecer com `/NN`
|
|
2397
|
+
*
|
|
2398
|
+
* O dia de outro mês não é uma SOBREPOSIÇÃO sobre a grade: é o buraco por
|
|
2399
|
+
* onde se vê o fundo da página. O token que significa isso é `bg-canvas`
|
|
2400
|
+
* (0.205), e contra a superfície da grade (`bg-surface`, 0.225) ele dá
|
|
2401
|
+
* ΔL 0.020.
|
|
2402
|
+
*
|
|
2403
|
+
* ⚠️ 0.020 é pouco pra uma LINHA e suficiente pra uma ÁREA — contraste de
|
|
2404
|
+
* área grande é muito mais perceptível que de traço fino. É por isso que
|
|
2405
|
+
* aqui 0.020 lê enquanto na virada de mês do eixo 0.040 não lia.
|
|
2406
|
+
*
|
|
2407
|
+
* ## O histórico, porque ele explica as duas variantes que sumiram
|
|
2408
|
+
*
|
|
2409
|
+
* outside `bg-bg-subtle/40` → branco 1% × 40% = 0.004 de alfa
|
|
2410
|
+
* weekend `bg-bg-subtle/30` → branco 1% × 30% = 0.003 de alfa
|
|
2411
|
+
*
|
|
2412
|
+
* As duas abaixo do limiar de percepção: existiam no CSS e não pintavam
|
|
2413
|
+
* nada — 20 das 42 células com estilo que ninguém via. Ao consertar, eu
|
|
2414
|
+
* tornei o fim de semana visível TAMBÉM, e aí ele virou o defeito oposto:
|
|
2415
|
+
* as colunas de sábado e domingo escuras de ponta a ponta, com o mês
|
|
2416
|
+
* parecendo quatro blocos. O conserto certo era **remover**, não calibrar.
|
|
2417
|
+
*
|
|
2418
|
+
* ⛔ E o `text-fg-subtle` que morava na variante `outside` era CÓDIGO MORTO:
|
|
2419
|
+
* medido, o `ganttDayNumber` põe a própria cor no `<span>` e vence a
|
|
2420
|
+
* herança. Quem dim o número do dia de fora é a variante `outside` DELE.
|
|
2421
|
+
*/
|
|
2422
|
+
outside: {
|
|
2423
|
+
true: string;
|
|
2424
|
+
false: string;
|
|
2425
|
+
};
|
|
2426
|
+
today: {
|
|
2427
|
+
true: string;
|
|
2428
|
+
false: string;
|
|
2429
|
+
};
|
|
2430
|
+
}, undefined, string[], {
|
|
2431
|
+
/** Dia de fora do mês âncora: presente, mas recuado. */
|
|
2432
|
+
/**
|
|
2433
|
+
* ## O mês é UNIFORME. O que se destaca é o que não é dele.
|
|
2434
|
+
*
|
|
2435
|
+
* Todo dia do mês âncora tem o mesmo fundo — útil ou fim de semana, tanto
|
|
2436
|
+
* faz. Só as células de OUTRO mês recebem `bg-canvas`, e a grade passa a
|
|
2437
|
+
* responder uma pergunta só: onde este mês começa e onde acaba.
|
|
2438
|
+
*
|
|
2439
|
+
* ⛔ **Não existe variante de fim de semana aqui, e isso é decisão.**
|
|
2440
|
+
* Sombrear sábado e domingo divide o mês em blocos verticais e compete com
|
|
2441
|
+
* a única distinção que a grade precisa fazer. Num calendário de agenda o
|
|
2442
|
+
* fim de semana importa (não se marca reunião); num CRONOGRAMA a barra
|
|
2443
|
+
* atravessa o fim de semana de qualquer jeito, e listrar as colunas só
|
|
2444
|
+
* atrapalha a leitura do segmento contínuo que passa por cima.
|
|
2445
|
+
*
|
|
2446
|
+
* ## Por que `bg-canvas` e não escurecer com `/NN`
|
|
2447
|
+
*
|
|
2448
|
+
* O dia de outro mês não é uma SOBREPOSIÇÃO sobre a grade: é o buraco por
|
|
2449
|
+
* onde se vê o fundo da página. O token que significa isso é `bg-canvas`
|
|
2450
|
+
* (0.205), e contra a superfície da grade (`bg-surface`, 0.225) ele dá
|
|
2451
|
+
* ΔL 0.020.
|
|
2452
|
+
*
|
|
2453
|
+
* ⚠️ 0.020 é pouco pra uma LINHA e suficiente pra uma ÁREA — contraste de
|
|
2454
|
+
* área grande é muito mais perceptível que de traço fino. É por isso que
|
|
2455
|
+
* aqui 0.020 lê enquanto na virada de mês do eixo 0.040 não lia.
|
|
2456
|
+
*
|
|
2457
|
+
* ## O histórico, porque ele explica as duas variantes que sumiram
|
|
2458
|
+
*
|
|
2459
|
+
* outside `bg-bg-subtle/40` → branco 1% × 40% = 0.004 de alfa
|
|
2460
|
+
* weekend `bg-bg-subtle/30` → branco 1% × 30% = 0.003 de alfa
|
|
2461
|
+
*
|
|
2462
|
+
* As duas abaixo do limiar de percepção: existiam no CSS e não pintavam
|
|
2463
|
+
* nada — 20 das 42 células com estilo que ninguém via. Ao consertar, eu
|
|
2464
|
+
* tornei o fim de semana visível TAMBÉM, e aí ele virou o defeito oposto:
|
|
2465
|
+
* as colunas de sábado e domingo escuras de ponta a ponta, com o mês
|
|
2466
|
+
* parecendo quatro blocos. O conserto certo era **remover**, não calibrar.
|
|
2467
|
+
*
|
|
2468
|
+
* ⛔ E o `text-fg-subtle` que morava na variante `outside` era CÓDIGO MORTO:
|
|
2469
|
+
* medido, o `ganttDayNumber` põe a própria cor no `<span>` e vence a
|
|
2470
|
+
* herança. Quem dim o número do dia de fora é a variante `outside` DELE.
|
|
2471
|
+
*/
|
|
2472
|
+
outside: {
|
|
2473
|
+
true: string;
|
|
2474
|
+
false: string;
|
|
2475
|
+
};
|
|
2476
|
+
today: {
|
|
2477
|
+
true: string;
|
|
2478
|
+
false: string;
|
|
2479
|
+
};
|
|
2480
|
+
}, undefined, import('tailwind-variants').TVReturnType<{
|
|
2481
|
+
/** Dia de fora do mês âncora: presente, mas recuado. */
|
|
2482
|
+
/**
|
|
2483
|
+
* ## O mês é UNIFORME. O que se destaca é o que não é dele.
|
|
2484
|
+
*
|
|
2485
|
+
* Todo dia do mês âncora tem o mesmo fundo — útil ou fim de semana, tanto
|
|
2486
|
+
* faz. Só as células de OUTRO mês recebem `bg-canvas`, e a grade passa a
|
|
2487
|
+
* responder uma pergunta só: onde este mês começa e onde acaba.
|
|
2488
|
+
*
|
|
2489
|
+
* ⛔ **Não existe variante de fim de semana aqui, e isso é decisão.**
|
|
2490
|
+
* Sombrear sábado e domingo divide o mês em blocos verticais e compete com
|
|
2491
|
+
* a única distinção que a grade precisa fazer. Num calendário de agenda o
|
|
2492
|
+
* fim de semana importa (não se marca reunião); num CRONOGRAMA a barra
|
|
2493
|
+
* atravessa o fim de semana de qualquer jeito, e listrar as colunas só
|
|
2494
|
+
* atrapalha a leitura do segmento contínuo que passa por cima.
|
|
2495
|
+
*
|
|
2496
|
+
* ## Por que `bg-canvas` e não escurecer com `/NN`
|
|
2497
|
+
*
|
|
2498
|
+
* O dia de outro mês não é uma SOBREPOSIÇÃO sobre a grade: é o buraco por
|
|
2499
|
+
* onde se vê o fundo da página. O token que significa isso é `bg-canvas`
|
|
2500
|
+
* (0.205), e contra a superfície da grade (`bg-surface`, 0.225) ele dá
|
|
2501
|
+
* ΔL 0.020.
|
|
2502
|
+
*
|
|
2503
|
+
* ⚠️ 0.020 é pouco pra uma LINHA e suficiente pra uma ÁREA — contraste de
|
|
2504
|
+
* área grande é muito mais perceptível que de traço fino. É por isso que
|
|
2505
|
+
* aqui 0.020 lê enquanto na virada de mês do eixo 0.040 não lia.
|
|
2506
|
+
*
|
|
2507
|
+
* ## O histórico, porque ele explica as duas variantes que sumiram
|
|
2508
|
+
*
|
|
2509
|
+
* outside `bg-bg-subtle/40` → branco 1% × 40% = 0.004 de alfa
|
|
2510
|
+
* weekend `bg-bg-subtle/30` → branco 1% × 30% = 0.003 de alfa
|
|
2511
|
+
*
|
|
2512
|
+
* As duas abaixo do limiar de percepção: existiam no CSS e não pintavam
|
|
2513
|
+
* nada — 20 das 42 células com estilo que ninguém via. Ao consertar, eu
|
|
2514
|
+
* tornei o fim de semana visível TAMBÉM, e aí ele virou o defeito oposto:
|
|
2515
|
+
* as colunas de sábado e domingo escuras de ponta a ponta, com o mês
|
|
2516
|
+
* parecendo quatro blocos. O conserto certo era **remover**, não calibrar.
|
|
2517
|
+
*
|
|
2518
|
+
* ⛔ E o `text-fg-subtle` que morava na variante `outside` era CÓDIGO MORTO:
|
|
2519
|
+
* medido, o `ganttDayNumber` põe a própria cor no `<span>` e vence a
|
|
2520
|
+
* herança. Quem dim o número do dia de fora é a variante `outside` DELE.
|
|
2521
|
+
*/
|
|
2522
|
+
outside: {
|
|
2523
|
+
true: string;
|
|
2524
|
+
false: string;
|
|
2525
|
+
};
|
|
2526
|
+
today: {
|
|
2527
|
+
true: string;
|
|
2528
|
+
false: string;
|
|
2529
|
+
};
|
|
2530
|
+
}, undefined, string[], unknown, unknown, undefined>>;
|
|
2531
|
+
/**
|
|
2532
|
+
* O número do dia na célula do mês.
|
|
2533
|
+
*
|
|
2534
|
+
* ⚠️ A variante `outside` existe porque o FUNDO deixou de distinguir dia de
|
|
2535
|
+
* outro mês de fim de semana deste — os dois são `bg-canvas` agora. Quem carrega
|
|
2536
|
+
* essa diferença é o número: `fg-disabled` (0.36 no dark) contra `fg-muted`
|
|
2537
|
+
* (0.7025) é meio tom de luminosidade, e lê imediatamente.
|
|
2538
|
+
*
|
|
2539
|
+
* `fg-disabled` e não um `fg-subtle` qualquer: um dia de outro mês não é
|
|
2540
|
+
* acionável nesta grade — não recebe `+`, não recebe segmento próprio, e clicar
|
|
2541
|
+
* nele não faz nada. O token que significa isso é o de desabilitado.
|
|
2542
|
+
*/
|
|
2543
|
+
export declare const ganttDayNumber: import('tailwind-variants').TVReturnType<{
|
|
2544
|
+
outside: {
|
|
2545
|
+
true: string;
|
|
2546
|
+
false: string;
|
|
2547
|
+
};
|
|
2548
|
+
today: {
|
|
2549
|
+
true: string[];
|
|
2550
|
+
false: string;
|
|
2551
|
+
};
|
|
2552
|
+
}, undefined, "text-caption-sm tabular-nums text-fg-muted", {
|
|
2553
|
+
outside: {
|
|
2554
|
+
true: string;
|
|
2555
|
+
false: string;
|
|
2556
|
+
};
|
|
2557
|
+
today: {
|
|
2558
|
+
true: string[];
|
|
2559
|
+
false: string;
|
|
2560
|
+
};
|
|
2561
|
+
}, undefined, import('tailwind-variants').TVReturnType<{
|
|
2562
|
+
outside: {
|
|
2563
|
+
true: string;
|
|
2564
|
+
false: string;
|
|
2565
|
+
};
|
|
2566
|
+
today: {
|
|
2567
|
+
true: string[];
|
|
2568
|
+
false: string;
|
|
2569
|
+
};
|
|
2570
|
+
}, undefined, "text-caption-sm tabular-nums text-fg-muted", unknown, unknown, undefined>>;
|
|
2571
|
+
/** Chip de barra dentro da célula do mês. */
|
|
2572
|
+
export declare const ganttDayChip: import('tailwind-variants').TVReturnType<{
|
|
2573
|
+
colorKey: {
|
|
2574
|
+
"chart-1": {
|
|
2575
|
+
root: string;
|
|
2576
|
+
dot: string;
|
|
2577
|
+
};
|
|
2578
|
+
"chart-2": {
|
|
2579
|
+
root: string;
|
|
2580
|
+
dot: string;
|
|
2581
|
+
};
|
|
2582
|
+
"chart-3": {
|
|
2583
|
+
root: string;
|
|
2584
|
+
dot: string;
|
|
2585
|
+
};
|
|
2586
|
+
"chart-4": {
|
|
2587
|
+
root: string;
|
|
2588
|
+
dot: string;
|
|
2589
|
+
};
|
|
2590
|
+
"chart-5": {
|
|
2591
|
+
root: string;
|
|
2592
|
+
dot: string;
|
|
2593
|
+
};
|
|
2594
|
+
brand: {
|
|
2595
|
+
root: string;
|
|
2596
|
+
dot: string;
|
|
2597
|
+
};
|
|
2598
|
+
success: {
|
|
2599
|
+
root: string;
|
|
2600
|
+
dot: string;
|
|
2601
|
+
};
|
|
2602
|
+
warning: {
|
|
2603
|
+
root: string;
|
|
2604
|
+
dot: string;
|
|
2605
|
+
};
|
|
2606
|
+
danger: {
|
|
2607
|
+
root: string;
|
|
2608
|
+
dot: string;
|
|
2609
|
+
};
|
|
2610
|
+
info: {
|
|
2611
|
+
root: string;
|
|
2612
|
+
dot: string;
|
|
2613
|
+
};
|
|
2614
|
+
neutral: {
|
|
2615
|
+
root: string;
|
|
2616
|
+
dot: string;
|
|
2617
|
+
};
|
|
2618
|
+
};
|
|
2619
|
+
}, {
|
|
2620
|
+
root: string[];
|
|
2621
|
+
dot: string;
|
|
2622
|
+
label: string;
|
|
2623
|
+
}, undefined, {
|
|
2624
|
+
colorKey: {
|
|
2625
|
+
"chart-1": {
|
|
2626
|
+
root: string;
|
|
2627
|
+
dot: string;
|
|
2628
|
+
};
|
|
2629
|
+
"chart-2": {
|
|
2630
|
+
root: string;
|
|
2631
|
+
dot: string;
|
|
2632
|
+
};
|
|
2633
|
+
"chart-3": {
|
|
2634
|
+
root: string;
|
|
2635
|
+
dot: string;
|
|
2636
|
+
};
|
|
2637
|
+
"chart-4": {
|
|
2638
|
+
root: string;
|
|
2639
|
+
dot: string;
|
|
2640
|
+
};
|
|
2641
|
+
"chart-5": {
|
|
2642
|
+
root: string;
|
|
2643
|
+
dot: string;
|
|
2644
|
+
};
|
|
2645
|
+
brand: {
|
|
2646
|
+
root: string;
|
|
2647
|
+
dot: string;
|
|
2648
|
+
};
|
|
2649
|
+
success: {
|
|
2650
|
+
root: string;
|
|
2651
|
+
dot: string;
|
|
2652
|
+
};
|
|
2653
|
+
warning: {
|
|
2654
|
+
root: string;
|
|
2655
|
+
dot: string;
|
|
2656
|
+
};
|
|
2657
|
+
danger: {
|
|
2658
|
+
root: string;
|
|
2659
|
+
dot: string;
|
|
2660
|
+
};
|
|
2661
|
+
info: {
|
|
2662
|
+
root: string;
|
|
2663
|
+
dot: string;
|
|
2664
|
+
};
|
|
2665
|
+
neutral: {
|
|
2666
|
+
root: string;
|
|
2667
|
+
dot: string;
|
|
2668
|
+
};
|
|
2669
|
+
};
|
|
2670
|
+
}, {
|
|
2671
|
+
root: string[];
|
|
2672
|
+
dot: string;
|
|
2673
|
+
label: string;
|
|
2674
|
+
}, import('tailwind-variants').TVReturnType<{
|
|
2675
|
+
colorKey: {
|
|
2676
|
+
"chart-1": {
|
|
2677
|
+
root: string;
|
|
2678
|
+
dot: string;
|
|
2679
|
+
};
|
|
2680
|
+
"chart-2": {
|
|
2681
|
+
root: string;
|
|
2682
|
+
dot: string;
|
|
2683
|
+
};
|
|
2684
|
+
"chart-3": {
|
|
2685
|
+
root: string;
|
|
2686
|
+
dot: string;
|
|
2687
|
+
};
|
|
2688
|
+
"chart-4": {
|
|
2689
|
+
root: string;
|
|
2690
|
+
dot: string;
|
|
2691
|
+
};
|
|
2692
|
+
"chart-5": {
|
|
2693
|
+
root: string;
|
|
2694
|
+
dot: string;
|
|
2695
|
+
};
|
|
2696
|
+
brand: {
|
|
2697
|
+
root: string;
|
|
2698
|
+
dot: string;
|
|
2699
|
+
};
|
|
2700
|
+
success: {
|
|
2701
|
+
root: string;
|
|
2702
|
+
dot: string;
|
|
2703
|
+
};
|
|
2704
|
+
warning: {
|
|
2705
|
+
root: string;
|
|
2706
|
+
dot: string;
|
|
2707
|
+
};
|
|
2708
|
+
danger: {
|
|
2709
|
+
root: string;
|
|
2710
|
+
dot: string;
|
|
2711
|
+
};
|
|
2712
|
+
info: {
|
|
2713
|
+
root: string;
|
|
2714
|
+
dot: string;
|
|
2715
|
+
};
|
|
2716
|
+
neutral: {
|
|
2717
|
+
root: string;
|
|
2718
|
+
dot: string;
|
|
2719
|
+
};
|
|
2720
|
+
};
|
|
2721
|
+
}, {
|
|
2722
|
+
root: string[];
|
|
2723
|
+
dot: string;
|
|
2724
|
+
label: string;
|
|
2725
|
+
}, undefined, unknown, unknown, undefined>>;
|
|
2726
|
+
/**
|
|
2727
|
+
* O "+N mais" da célula do mês.
|
|
2728
|
+
*
|
|
2729
|
+
* ⚠️ `absolute`, e isto é conserto de um defeito medido: no fluxo do flex ele
|
|
2730
|
+
* caía logo depois do número do dia — **na mesma faixa vertical dos
|
|
2731
|
+
* segmentos** — e como os segmentos vivem numa camada absoluta por cima, o
|
|
2732
|
+
* botão aparecia atravessado pelas barras. Posicionado, ele fica exatamente
|
|
2733
|
+
* abaixo da última faixa visível (o `top` vem da view, que sabe quantas são).
|
|
2734
|
+
*/
|
|
2735
|
+
export declare const ganttOverflowButton: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
2736
|
+
/**
|
|
2737
|
+
* A agenda.
|
|
2738
|
+
*
|
|
2739
|
+
* ⛔ Gramática copiada do `schedulerList*`, não importada (L-049). A moldura é
|
|
2740
|
+
* própria e por isso o `ganttBody` entra sem `framed` nesta visão — duas
|
|
2741
|
+
* bordas concêntricas separadas por 1px é o que sai de deixar as duas.
|
|
2742
|
+
*/
|
|
2743
|
+
export declare const ganttListFrame: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
2744
|
+
export declare const ganttListDay: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "flex flex-col gap-gp-md border-b border-border-subtle p-sp-xl last:border-b-0", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "flex flex-col gap-gp-md border-b border-border-subtle p-sp-xl last:border-b-0", unknown, unknown, undefined>>;
|
|
2745
|
+
/**
|
|
2746
|
+
* Cabeçalho do dia.
|
|
2747
|
+
*
|
|
2748
|
+
* `sticky` com fundo OPACO: numa agenda longa, saber "que dia é este que estou
|
|
2749
|
+
* lendo" é justamente o que se perde ao rolar. Fundo translúcido deixaria o
|
|
2750
|
+
* conteúdo passar por baixo do rótulo.
|
|
2751
|
+
*
|
|
2752
|
+
* As margens negativas existem porque o `p-sp-xl` do dia já recuou o conteúdo:
|
|
2753
|
+
* sem elas o sticky grudaria 20px abaixo do topo do scroller.
|
|
2754
|
+
*/
|
|
2755
|
+
export declare const ganttListDayHead: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
2756
|
+
export declare const ganttListDayNumber: import('tailwind-variants').TVReturnType<{
|
|
2757
|
+
today: {
|
|
2758
|
+
true: string;
|
|
2759
|
+
false: string;
|
|
2760
|
+
};
|
|
2761
|
+
}, undefined, "text-title-sm font-semibold tabular-nums", {
|
|
2762
|
+
today: {
|
|
2763
|
+
true: string;
|
|
2764
|
+
false: string;
|
|
2765
|
+
};
|
|
2766
|
+
}, undefined, import('tailwind-variants').TVReturnType<{
|
|
2767
|
+
today: {
|
|
2768
|
+
true: string;
|
|
2769
|
+
false: string;
|
|
2770
|
+
};
|
|
2771
|
+
}, undefined, "text-title-sm font-semibold tabular-nums", unknown, unknown, undefined>>;
|
|
2772
|
+
export declare const ganttListDayName: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "text-body-sm text-fg-muted first-letter:uppercase", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "text-body-sm text-fg-muted first-letter:uppercase", unknown, unknown, undefined>>;
|
|
2773
|
+
export declare const ganttListItems: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "flex flex-col gap-gp-sm", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "flex flex-col gap-gp-sm", unknown, unknown, undefined>>;
|
|
2774
|
+
/**
|
|
2775
|
+
* Uma tarefa na agenda — linha larga com sublinha e metadado à direita.
|
|
2776
|
+
*
|
|
2777
|
+
* Mesma anatomia do `schedulerEvent` variante `row`, e a cor segue a receita
|
|
2778
|
+
* do resto deste componente: fundo TINGIDO + `fg-default` no texto + a cor viva
|
|
2779
|
+
* num ponto. Ver a nota do topo do arquivo — texto colorido sobre pílula
|
|
2780
|
+
* tingida dá 1.72–4.49 de contraste no light, e nenhuma família passa AA.
|
|
2781
|
+
*/
|
|
2782
|
+
export declare const ganttListItem: import('tailwind-variants').TVReturnType<{
|
|
2783
|
+
colorKey: {
|
|
2784
|
+
"chart-1": {
|
|
2785
|
+
root: string;
|
|
2786
|
+
dot: string;
|
|
2787
|
+
};
|
|
2788
|
+
"chart-2": {
|
|
2789
|
+
root: string;
|
|
2790
|
+
dot: string;
|
|
2791
|
+
};
|
|
2792
|
+
"chart-3": {
|
|
2793
|
+
root: string;
|
|
2794
|
+
dot: string;
|
|
2795
|
+
};
|
|
2796
|
+
"chart-4": {
|
|
2797
|
+
root: string;
|
|
2798
|
+
dot: string;
|
|
2799
|
+
};
|
|
2800
|
+
"chart-5": {
|
|
2801
|
+
root: string;
|
|
2802
|
+
dot: string;
|
|
2803
|
+
};
|
|
2804
|
+
brand: {
|
|
2805
|
+
root: string;
|
|
2806
|
+
dot: string;
|
|
2807
|
+
};
|
|
2808
|
+
success: {
|
|
2809
|
+
root: string;
|
|
2810
|
+
dot: string;
|
|
2811
|
+
};
|
|
2812
|
+
warning: {
|
|
2813
|
+
root: string;
|
|
2814
|
+
dot: string;
|
|
2815
|
+
};
|
|
2816
|
+
danger: {
|
|
2817
|
+
root: string;
|
|
2818
|
+
dot: string;
|
|
2819
|
+
};
|
|
2820
|
+
info: {
|
|
2821
|
+
root: string;
|
|
2822
|
+
dot: string;
|
|
2823
|
+
};
|
|
2824
|
+
neutral: {
|
|
2825
|
+
root: string;
|
|
2826
|
+
dot: string;
|
|
2827
|
+
};
|
|
2828
|
+
};
|
|
2829
|
+
conflict: {
|
|
2830
|
+
true: {
|
|
2831
|
+
root: string;
|
|
2832
|
+
};
|
|
2833
|
+
false: {};
|
|
2834
|
+
};
|
|
2835
|
+
critical: {
|
|
2836
|
+
true: {
|
|
2837
|
+
root: string;
|
|
2838
|
+
};
|
|
2839
|
+
false: {};
|
|
2840
|
+
};
|
|
2841
|
+
}, {
|
|
2842
|
+
root: string[];
|
|
2843
|
+
dot: string;
|
|
2844
|
+
body: string;
|
|
2845
|
+
title: string;
|
|
2846
|
+
sub: string;
|
|
2847
|
+
meta: string;
|
|
2848
|
+
}, undefined, {
|
|
2849
|
+
colorKey: {
|
|
2850
|
+
"chart-1": {
|
|
2851
|
+
root: string;
|
|
2852
|
+
dot: string;
|
|
2853
|
+
};
|
|
2854
|
+
"chart-2": {
|
|
2855
|
+
root: string;
|
|
2856
|
+
dot: string;
|
|
2857
|
+
};
|
|
2858
|
+
"chart-3": {
|
|
2859
|
+
root: string;
|
|
2860
|
+
dot: string;
|
|
2861
|
+
};
|
|
2862
|
+
"chart-4": {
|
|
2863
|
+
root: string;
|
|
2864
|
+
dot: string;
|
|
2865
|
+
};
|
|
2866
|
+
"chart-5": {
|
|
2867
|
+
root: string;
|
|
2868
|
+
dot: string;
|
|
2869
|
+
};
|
|
2870
|
+
brand: {
|
|
2871
|
+
root: string;
|
|
2872
|
+
dot: string;
|
|
2873
|
+
};
|
|
2874
|
+
success: {
|
|
2875
|
+
root: string;
|
|
2876
|
+
dot: string;
|
|
2877
|
+
};
|
|
2878
|
+
warning: {
|
|
2879
|
+
root: string;
|
|
2880
|
+
dot: string;
|
|
2881
|
+
};
|
|
2882
|
+
danger: {
|
|
2883
|
+
root: string;
|
|
2884
|
+
dot: string;
|
|
2885
|
+
};
|
|
2886
|
+
info: {
|
|
2887
|
+
root: string;
|
|
2888
|
+
dot: string;
|
|
2889
|
+
};
|
|
2890
|
+
neutral: {
|
|
2891
|
+
root: string;
|
|
2892
|
+
dot: string;
|
|
2893
|
+
};
|
|
2894
|
+
};
|
|
2895
|
+
conflict: {
|
|
2896
|
+
true: {
|
|
2897
|
+
root: string;
|
|
2898
|
+
};
|
|
2899
|
+
false: {};
|
|
2900
|
+
};
|
|
2901
|
+
critical: {
|
|
2902
|
+
true: {
|
|
2903
|
+
root: string;
|
|
2904
|
+
};
|
|
2905
|
+
false: {};
|
|
2906
|
+
};
|
|
2907
|
+
}, {
|
|
2908
|
+
root: string[];
|
|
2909
|
+
dot: string;
|
|
2910
|
+
body: string;
|
|
2911
|
+
title: string;
|
|
2912
|
+
sub: string;
|
|
2913
|
+
meta: string;
|
|
2914
|
+
}, import('tailwind-variants').TVReturnType<{
|
|
2915
|
+
colorKey: {
|
|
2916
|
+
"chart-1": {
|
|
2917
|
+
root: string;
|
|
2918
|
+
dot: string;
|
|
2919
|
+
};
|
|
2920
|
+
"chart-2": {
|
|
2921
|
+
root: string;
|
|
2922
|
+
dot: string;
|
|
2923
|
+
};
|
|
2924
|
+
"chart-3": {
|
|
2925
|
+
root: string;
|
|
2926
|
+
dot: string;
|
|
2927
|
+
};
|
|
2928
|
+
"chart-4": {
|
|
2929
|
+
root: string;
|
|
2930
|
+
dot: string;
|
|
2931
|
+
};
|
|
2932
|
+
"chart-5": {
|
|
2933
|
+
root: string;
|
|
2934
|
+
dot: string;
|
|
2935
|
+
};
|
|
2936
|
+
brand: {
|
|
2937
|
+
root: string;
|
|
2938
|
+
dot: string;
|
|
2939
|
+
};
|
|
2940
|
+
success: {
|
|
2941
|
+
root: string;
|
|
2942
|
+
dot: string;
|
|
2943
|
+
};
|
|
2944
|
+
warning: {
|
|
2945
|
+
root: string;
|
|
2946
|
+
dot: string;
|
|
2947
|
+
};
|
|
2948
|
+
danger: {
|
|
2949
|
+
root: string;
|
|
2950
|
+
dot: string;
|
|
2951
|
+
};
|
|
2952
|
+
info: {
|
|
2953
|
+
root: string;
|
|
2954
|
+
dot: string;
|
|
2955
|
+
};
|
|
2956
|
+
neutral: {
|
|
2957
|
+
root: string;
|
|
2958
|
+
dot: string;
|
|
2959
|
+
};
|
|
2960
|
+
};
|
|
2961
|
+
conflict: {
|
|
2962
|
+
true: {
|
|
2963
|
+
root: string;
|
|
2964
|
+
};
|
|
2965
|
+
false: {};
|
|
2966
|
+
};
|
|
2967
|
+
critical: {
|
|
2968
|
+
true: {
|
|
2969
|
+
root: string;
|
|
2970
|
+
};
|
|
2971
|
+
false: {};
|
|
2972
|
+
};
|
|
2973
|
+
}, {
|
|
2974
|
+
root: string[];
|
|
2975
|
+
dot: string;
|
|
2976
|
+
body: string;
|
|
2977
|
+
title: string;
|
|
2978
|
+
sub: string;
|
|
2979
|
+
meta: string;
|
|
2980
|
+
}, undefined, unknown, unknown, undefined>>;
|
|
2981
|
+
export declare const ganttEmpty: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
2982
|
+
export declare const ganttEmptyText: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "text-body-sm text-fg-muted", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "text-body-sm text-fg-muted", unknown, unknown, undefined>>;
|
|
2983
|
+
/** Aviso de largura insuficiente — declarado, não escondido. */
|
|
2984
|
+
export declare const ganttNarrowNotice: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
2985
|
+
//# sourceMappingURL=gantt.styles.d.ts.map
|