@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.
Files changed (92) hide show
  1. package/dist-lib/index.cjs +4461 -16
  2. package/dist-lib/index.cjs.map +1 -1
  3. package/dist-lib/index.mjs +4477 -32
  4. package/dist-lib/index.mjs.map +1 -1
  5. package/dist-lib/src/components/index.d.ts +1 -0
  6. package/dist-lib/src/components/index.d.ts.map +1 -1
  7. package/dist-lib/src/components/ui/Gantt/gantt.d.ts +21 -0
  8. package/dist-lib/src/components/ui/Gantt/gantt.d.ts.map +1 -0
  9. package/dist-lib/src/components/ui/Gantt/gantt.styles.d.ts +2985 -0
  10. package/dist-lib/src/components/ui/Gantt/gantt.styles.d.ts.map +1 -0
  11. package/dist-lib/src/components/ui/Gantt/gantt.types.d.ts +445 -0
  12. package/dist-lib/src/components/ui/Gantt/gantt.types.d.ts.map +1 -0
  13. package/dist-lib/src/components/ui/Gantt/hooks/drag.d.ts +71 -0
  14. package/dist-lib/src/components/ui/Gantt/hooks/drag.d.ts.map +1 -0
  15. package/dist-lib/src/components/ui/Gantt/hooks/filters.d.ts +79 -0
  16. package/dist-lib/src/components/ui/Gantt/hooks/filters.d.ts.map +1 -0
  17. package/dist-lib/src/components/ui/Gantt/hooks/layout.d.ts +232 -0
  18. package/dist-lib/src/components/ui/Gantt/hooks/layout.d.ts.map +1 -0
  19. package/dist-lib/src/components/ui/Gantt/hooks/links.d.ts +120 -0
  20. package/dist-lib/src/components/ui/Gantt/hooks/links.d.ts.map +1 -0
  21. package/dist-lib/src/components/ui/Gantt/hooks/week-segments.d.ts +69 -0
  22. package/dist-lib/src/components/ui/Gantt/hooks/week-segments.d.ts.map +1 -0
  23. package/dist-lib/src/components/ui/Gantt/index.d.ts +46 -0
  24. package/dist-lib/src/components/ui/Gantt/index.d.ts.map +1 -0
  25. package/dist-lib/src/components/ui/Gantt/parts/gantt-applied-filters.d.ts +20 -0
  26. package/dist-lib/src/components/ui/Gantt/parts/gantt-applied-filters.d.ts.map +1 -0
  27. package/dist-lib/src/components/ui/Gantt/parts/gantt-bar.d.ts +68 -0
  28. package/dist-lib/src/components/ui/Gantt/parts/gantt-bar.d.ts.map +1 -0
  29. package/dist-lib/src/components/ui/Gantt/parts/gantt-filter-panel.d.ts +16 -0
  30. package/dist-lib/src/components/ui/Gantt/parts/gantt-filter-panel.d.ts.map +1 -0
  31. package/dist-lib/src/components/ui/Gantt/parts/gantt-grid.d.ts +55 -0
  32. package/dist-lib/src/components/ui/Gantt/parts/gantt-grid.d.ts.map +1 -0
  33. package/dist-lib/src/components/ui/Gantt/parts/gantt-links-layer.d.ts +46 -0
  34. package/dist-lib/src/components/ui/Gantt/parts/gantt-links-layer.d.ts.map +1 -0
  35. package/dist-lib/src/components/ui/Gantt/parts/gantt-skeleton.d.ts +36 -0
  36. package/dist-lib/src/components/ui/Gantt/parts/gantt-skeleton.d.ts.map +1 -0
  37. package/dist-lib/src/components/ui/Gantt/parts/gantt-toolbar.d.ts +46 -0
  38. package/dist-lib/src/components/ui/Gantt/parts/gantt-toolbar.d.ts.map +1 -0
  39. package/dist-lib/src/components/ui/Gantt/views/calendar.d.ts +64 -0
  40. package/dist-lib/src/components/ui/Gantt/views/calendar.d.ts.map +1 -0
  41. package/dist-lib/src/components/ui/Gantt/views/list.d.ts +53 -0
  42. package/dist-lib/src/components/ui/Gantt/views/list.d.ts.map +1 -0
  43. package/dist-lib/src/components/ui/Gantt/views/timeline.d.ts +85 -0
  44. package/dist-lib/src/components/ui/Gantt/views/timeline.d.ts.map +1 -0
  45. package/dist-lib/src/components/ui/MessageBubble/index.d.ts +1 -1
  46. package/dist-lib/src/components/ui/MessageBubble/index.d.ts.map +1 -1
  47. package/dist-lib/src/components/ui/MessageBubble/message-bubble.d.ts +1 -1
  48. package/dist-lib/src/components/ui/MessageBubble/message-bubble.d.ts.map +1 -1
  49. package/dist-lib/src/components/ui/MessageBubble/message-bubble.styles.d.ts +22 -2
  50. package/dist-lib/src/components/ui/MessageBubble/message-bubble.styles.d.ts.map +1 -1
  51. package/dist-lib/src/components/ui/MessageBubble/message-bubble.types.d.ts +8 -0
  52. package/dist-lib/src/components/ui/MessageBubble/message-bubble.types.d.ts.map +1 -1
  53. package/dist-lib/theme/brand-pay.css +205 -189
  54. package/dist-lib/theme/brand-vibrant.css +162 -148
  55. package/dist-lib/theme.css +19 -0
  56. package/dist-lib/tokens/brands/blue/primitives/color-palette.d.ts +28 -0
  57. package/dist-lib/tokens/brands/blue/primitives/color-palette.d.ts.map +1 -1
  58. package/dist-lib/tokens/brands/blue/semantic/color-dark.d.ts +16 -0
  59. package/dist-lib/tokens/brands/blue/semantic/color-dark.d.ts.map +1 -1
  60. package/dist-lib/tokens/brands/blue/semantic/color-light.d.ts +16 -0
  61. package/dist-lib/tokens/brands/blue/semantic/color-light.d.ts.map +1 -1
  62. package/dist-lib/tokens/brands/default/primitives/color-palette.d.ts +29 -0
  63. package/dist-lib/tokens/brands/default/primitives/color-palette.d.ts.map +1 -1
  64. package/dist-lib/tokens/brands/default/semantic/color-dark.d.ts +16 -0
  65. package/dist-lib/tokens/brands/default/semantic/color-dark.d.ts.map +1 -1
  66. package/dist-lib/tokens/brands/default/semantic/color-light.d.ts +16 -0
  67. package/dist-lib/tokens/brands/default/semantic/color-light.d.ts.map +1 -1
  68. package/dist-lib/tokens/brands/default/semantic/elevation.d.ts +4 -0
  69. package/dist-lib/tokens/brands/default/semantic/elevation.d.ts.map +1 -1
  70. package/dist-lib/tokens/brands/green/primitives/color-palette.d.ts +28 -0
  71. package/dist-lib/tokens/brands/green/primitives/color-palette.d.ts.map +1 -1
  72. package/dist-lib/tokens/brands/green/semantic/color-dark.d.ts +16 -0
  73. package/dist-lib/tokens/brands/green/semantic/color-dark.d.ts.map +1 -1
  74. package/dist-lib/tokens/brands/green/semantic/color-light.d.ts +16 -0
  75. package/dist-lib/tokens/brands/green/semantic/color-light.d.ts.map +1 -1
  76. package/dist-lib/tokens/brands/pay/primitives/color-palette.d.ts +6 -0
  77. package/dist-lib/tokens/brands/pay/primitives/color-palette.d.ts.map +1 -1
  78. package/dist-lib/tokens/brands/pay/semantic/color-dark.d.ts +16 -0
  79. package/dist-lib/tokens/brands/pay/semantic/color-dark.d.ts.map +1 -1
  80. package/dist-lib/tokens/brands/pay/semantic/color-light.d.ts +16 -0
  81. package/dist-lib/tokens/brands/pay/semantic/color-light.d.ts.map +1 -1
  82. package/dist-lib/tokens/brands/vibrant/primitives/color-palette.d.ts +29 -1
  83. package/dist-lib/tokens/brands/vibrant/primitives/color-palette.d.ts.map +1 -1
  84. package/dist-lib/tokens/brands/vibrant/semantic/color-dark.d.ts +16 -0
  85. package/dist-lib/tokens/brands/vibrant/semantic/color-dark.d.ts.map +1 -1
  86. package/dist-lib/tokens/brands/vibrant/semantic/color-light.d.ts +16 -0
  87. package/dist-lib/tokens/brands/vibrant/semantic/color-light.d.ts.map +1 -1
  88. package/dist-lib/tokens.cjs +23 -2
  89. package/dist-lib/tokens.cjs.map +1 -1
  90. package/dist-lib/tokens.mjs +23 -2
  91. package/dist-lib/tokens.mjs.map +1 -1
  92. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gantt.styles.d.ts","sourceRoot":"","sources":["../../../../../src/components/ui/Gantt/gantt.styles.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,445 @@
1
+ import { ReactNode, MouseEvent } from 'react';
2
+ import { Locale } from 'date-fns';
3
+ /**
4
+ * Contrato público do `Gantt`.
5
+ *
6
+ * Spec: `.ai/specs/gantt-componente-de-cronograma.md`.
7
+ *
8
+ * ## A distinção que justifica o componente existir
9
+ *
10
+ * O DS já sabia mostrar **quando** algo acontece (`Scheduler`) e **qual data** foi
11
+ * escolhida num formulário (`Calendar`/`DatePicker`). Não sabia mostrar **o que
12
+ * depende de quê** — e é isso que `links` traz. Sem vínculo isto seria uma
13
+ * timeline, não um Gantt.
14
+ *
15
+ * ## Um tipo, dois formatos de dado
16
+ *
17
+ * `GanttRow.bars` é array de propósito, e é o que faz um componente servir duas
18
+ * leituras sem `if` no consumidor:
19
+ *
20
+ * 1 barra + `parent` → Gantt de projeto (a linha É a tarefa)
21
+ * N barras sem `parent` → timeline de portfólio (a linha é a sprint/frente,
22
+ * e as barras são o que tem dentro)
23
+ *
24
+ * ⛔ Nada aqui é importado do `Scheduler`. Os dois modelos são incompatíveis por
25
+ * desenho — `SchedulerEvent` é plano, com cor semântica, e não tem onde guardar
26
+ * hierarquia nem vínculo. Só a gramática visual é compartilhada (ver o topo de
27
+ * `gantt.styles.ts`, L-049).
28
+ */
29
+ /**
30
+ * Chave de cor da barra.
31
+ *
32
+ * ⚠️ **A paleta de chart vem primeiro porque no Gantt a cor diz CATEGORIA — qual
33
+ * frente de trabalho —, não ESTADO.** Estado viaja em `GanttRow.trailing` como
34
+ * `Chip`, que é o canal que o DS já usa pra status.
35
+ *
36
+ * Isso é o que autoriza `chart-3` (azul): o `DESIGN.md` diz que *"the system has
37
+ * zero blue tokens"* e o `Chart/USAGE.md` descreve a paleta como *"verde-marca +
38
+ * harmônicas (teal/azul/âmbar/violeta)"*. Azul é legítimo como **dado
39
+ * categórico** e proibido na **interface** — e barra de Gantt é dado.
40
+ *
41
+ * As chaves semânticas seguem disponíveis pro caso em que a cor realmente diz
42
+ * status (um `milestone` atrasado, por exemplo). União fechada: ampliar é
43
+ * aditivo e não quebra ninguém.
44
+ */
45
+ export type GanttColorKey = "chart-1" | "chart-2" | "chart-3" | "chart-4" | "chart-5" | "brand" | "success" | "warning" | "danger" | "info" | "neutral";
46
+ export type GanttBar = {
47
+ /** Identidade. É o que volta nos callbacks e o que `GanttLink` referencia. */
48
+ id: string;
49
+ /** Rótulo dentro da barra. Some quando a barra fica estreita demais. */
50
+ label?: ReactNode;
51
+ /**
52
+ * Texto pra busca. Existe porque `label` é `ReactNode` e o motor de busca só
53
+ * casa string — sem isto, uma barra rotulada com JSX é invisível à busca.
54
+ */
55
+ searchText?: string;
56
+ start: Date;
57
+ /**
58
+ * Fim, **obrigatório**.
59
+ *
60
+ * Duração zero se diz como `end === start`, não como `end` ausente. Opcional,
61
+ * ele obrigaria todo cálculo a decidir o que fazer com o vazio — e cada lugar
62
+ * decidiria diferente. É a mesma escolha do `SchedulerEvent`.
63
+ */
64
+ end: Date;
65
+ colorKey?: GanttColorKey;
66
+ /**
67
+ * Progresso 0–100, preenchido como faixa mais escura dentro da barra.
68
+ *
69
+ * `undefined` **não** é 0: ausente significa "não rastreia progresso" e não
70
+ * desenha faixa nenhuma; `0` significa "rastreia, e está em zero" e desenha a
71
+ * trilha vazia. Nas referências os dois estados aparecem lado a lado.
72
+ */
73
+ progress?: number;
74
+ /**
75
+ * A barra atravessa a borda da janela visível.
76
+ *
77
+ * Corta o raio daquele lado — sinal de "não acaba aqui". Passa a ser
78
+ * necessário no instante em que a janela é fixa (`windowStart`/`windowEnd`),
79
+ * porque sem isso uma barra truncada é indistinguível de uma que termina ali.
80
+ *
81
+ * Normalmente derivado pelo próprio componente ao recortar na janela; a prop
82
+ * existe pro consumidor que já pagina no servidor e sabe o que ficou fora.
83
+ */
84
+ continuesBefore?: boolean;
85
+ continuesAfter?: boolean;
86
+ /** Payload cru do consumidor. Devolvido intacto nos callbacks. */
87
+ meta?: unknown;
88
+ };
89
+ /**
90
+ * - `task` — trabalho com duração. O caso comum.
91
+ * - `summary` — agrupador. O intervalo é **derivado dos filhos**, não informado.
92
+ * - `milestone` — ponto no tempo, desenhado como losango. Duração é ignorada.
93
+ */
94
+ export type GanttRowType = "task" | "summary" | "milestone";
95
+ export type GanttRow = {
96
+ id: string;
97
+ label: ReactNode;
98
+ /** Segunda linha do rótulo — código, responsável, contagem. */
99
+ sublabel?: ReactNode;
100
+ searchText?: string;
101
+ /** @default "task" */
102
+ type?: GanttRowType;
103
+ /**
104
+ * Id da linha-pai. Ausente = raiz.
105
+ *
106
+ * Uma linha `summary` com filhos tem o intervalo calculado pelo componente
107
+ * (menor `start`, maior `end`). Informar `bars` num `summary` é aceito e
108
+ * vence o cálculo — pro caso em que o consumidor tem o agregado do servidor e
109
+ * não quer que o componente recompute.
110
+ */
111
+ parent?: string;
112
+ /** Ver a nota do topo: 1 barra = tarefa, N barras = contêiner. */
113
+ bars: GanttBar[];
114
+ /**
115
+ * `stack` = uma lane por barra (o "arco-íris": todas visíveis, linha mais alta).
116
+ * `compact` = barras que não se sobrepõem dividem a mesma lane (linha baixa).
117
+ *
118
+ * @default "stack"
119
+ */
120
+ lanePacking?: "stack" | "compact";
121
+ /**
122
+ * Conteúdo livre depois do rótulo, na grade da esquerda — chip de status,
123
+ * avatar do responsável, contador. Mesmo papel do `trailing` do `Breadcrumb`.
124
+ */
125
+ trailing?: ReactNode;
126
+ /** Estado inicial de collapse. Controle contínuo via `onRowToggle`. */
127
+ collapsed?: boolean;
128
+ };
129
+ /**
130
+ * Os 4 tipos canônicos de dependência.
131
+ *
132
+ * | Tipo | Restrição | Uso |
133
+ * |------|----------------------------------------|----------------------------|
134
+ * | `FS` | `target.start ≥ source.end + lag` | ~90% do uso real. Default |
135
+ * | `SS` | `target.start ≥ source.start + lag` | arrancam juntas |
136
+ * | `FF` | `target.end ≥ source.end + lag` | terminam juntas |
137
+ * | `SF` | `target.end ≥ source.start + lag` | raro, existe por completude|
138
+ */
139
+ export type GanttLinkType = "FS" | "SS" | "FF" | "SF";
140
+ export type GanttLink = {
141
+ id: string;
142
+ /**
143
+ * Ids de **BARRA**, não de linha.
144
+ *
145
+ * Uma linha-contêiner tem N barras, e o vínculo é entre trabalhos, não entre
146
+ * agrupamentos — apontar pra linha tornaria o vínculo ambíguo no formato de
147
+ * portfólio.
148
+ */
149
+ source: string;
150
+ target: string;
151
+ /** @default "FS" */
152
+ type?: GanttLinkType;
153
+ /**
154
+ * Dias de espera (positivo) ou antecipação (negativo, *lead*).
155
+ *
156
+ * `lag: 2` num FS = "começa 2 dias depois que o anterior termina".
157
+ * `lag: -1` = "pode começar 1 dia antes de o anterior terminar".
158
+ */
159
+ lag?: number;
160
+ };
161
+ /** Vínculo cuja restrição as datas atuais violam. */
162
+ export type GanttLinkViolation = {
163
+ link: GanttLink;
164
+ /** Dias de folga negativa — o quanto o alvo teria que andar pra satisfazer. */
165
+ deficitDays: number;
166
+ };
167
+ export type GanttColumn = {
168
+ /** Chave estável. `"label"` é a coluna do nome e sempre existe. */
169
+ id: string;
170
+ header: ReactNode;
171
+ /** Largura em px. A coluna do nome estica; as outras são fixas. */
172
+ width?: number;
173
+ align?: "left" | "center" | "right";
174
+ /** Render da célula. Sem isto, cai no `label`/`sublabel` da linha. */
175
+ render?: (row: GanttRow) => ReactNode;
176
+ };
177
+ export type GanttBarChange = {
178
+ bar: GanttBar;
179
+ row: GanttRow;
180
+ start: Date;
181
+ end: Date;
182
+ };
183
+ /**
184
+ * As três visões, e cada uma responde uma pergunta diferente do MESMO dado:
185
+ *
186
+ * timeline "o que depende do quê" eixo horizontal + setas + gesto
187
+ * calendar "o que acontece no dia 12" grade de mês com segmentos
188
+ * list "o que vem a seguir" agenda por dia, só dias com tarefa
189
+ *
190
+ * ⚠️ A `list` NÃO é uma tabela de tarefas — isso é o `DataTable` (view lista,
191
+ * `hierarchical`). Ela é uma AGENDA: agrupa por DIA e repete a tarefa em cada
192
+ * dia que ela ocupa, com a posição dentro do intervalo. Responde "o que estou
193
+ * fazendo hoje e amanhã", que nem o eixo nem a grade de mês respondem sem o
194
+ * usuário contar colunas.
195
+ */
196
+ export type GanttView = "timeline" | "calendar" | "list";
197
+ export type GanttGranularity = "day" | "week" | "month" | "quarter";
198
+ export type GanttFilterOption = {
199
+ value: string;
200
+ label: string;
201
+ colorKey?: GanttColorKey;
202
+ };
203
+ /**
204
+ * Que tipo de filtro este campo é — e portanto que input o painel renderiza.
205
+ *
206
+ * O vocabulário espelha o da `DataTable` (`text` / `number` / `select` +
207
+ * `filterType` pra date), porque o usuário lê a mesma frase nas duas telas:
208
+ * "Status é Ativo", "Duração entre 3 e 10", "Início a partir de 01/09/26".
209
+ *
210
+ * ⚠️ Até a v0.59 o `Gantt` aceitava só `multi` — não por bug, por ausência de
211
+ * contrato. Filtro de texto, faixa ou período eram impossíveis de expressar.
212
+ *
213
+ * | kind | input | `model[id]` |
214
+ * |-----------|--------------------------|--------------------------|
215
+ * | `multi` | checkboxes (default) | os valores marcados |
216
+ * | `single` | radio | um valor |
217
+ * | `text` | campo de busca | `[termo]` |
218
+ * | `number` | dois campos numéricos | `[min, max]` — "" = livre |
219
+ * | `date` | dois campos de data | `[de, até]` — "" = livre |
220
+ * | `boolean` | radio Sim/Não | `["true"]` \| `["false"]` |
221
+ *
222
+ * ⚠️ `GanttFilterModel` NÃO mudou de forma pra isso — segue
223
+ * `Record<string, string[]>`. O que faltava não era a forma do dado, era como
224
+ * interpretá-lo; por isso não há migração pra quem já usava `multi`.
225
+ */
226
+ export type GanttFilterKind = "multi" | "single" | "text" | "number" | "date" | "boolean";
227
+ export type GanttFilterField = {
228
+ id: string;
229
+ label: string;
230
+ /** @default "multi" */
231
+ kind?: GanttFilterKind;
232
+ /**
233
+ * Opções — obrigatórias em `multi`/`single`, opcionais em `boolean` (sem
234
+ * elas o chip usa "Sim"/"Não"), ignoradas em `text`/`number`/`date`.
235
+ */
236
+ options?: GanttFilterOption[];
237
+ /**
238
+ * Extrai o valor da linha pra comparar.
239
+ *
240
+ * O tipo de retorno é largo porque o predicado depende do `kind`: `number`
241
+ * aceita número ou string numérica, `date` aceita `Date` ou ISO, `boolean`
242
+ * normaliza "1"/"sim"/"true". Devolver `undefined` **exclui** a linha quando
243
+ * o filtro está ativo — filtrar por "Responsável = Ana" e receber as linhas
244
+ * sem responsável nenhum é o oposto do pedido.
245
+ */
246
+ accessor: (row: GanttRow) => string | string[] | number | Date | boolean | null | undefined;
247
+ /** Placeholder dos inputs de `text`/`number`/`date`. */
248
+ placeholder?: string;
249
+ /**
250
+ * Força o campo de busca dentro deste grupo.
251
+ *
252
+ * Sem isto, a busca aparece a partir de 7 opções — abaixo disso ela é
253
+ * ruído: ocupa a altura de uma opção e meia pra filtrar algo que já cabe
254
+ * inteiro na tela.
255
+ *
256
+ * Serve pro caso em que o consumidor sabe que a lista cresce em produção
257
+ * mesmo tendo poucas opções no mock.
258
+ */
259
+ searchable?: boolean;
260
+ };
261
+ export type GanttFilterModel = Record<string, string[]>;
262
+ export interface GanttProps {
263
+ rows: GanttRow[];
264
+ /** Ausente = sem setas. Presente = é um Gantt de verdade. */
265
+ links?: GanttLink[];
266
+ /**
267
+ * ## O par valor + callback, e por que os TRÊS seguem o mesmo formato
268
+ *
269
+ * `view`, `granularity` e `criticalPath` são estados que a UI do próprio
270
+ * componente mexe (o seletor de visão, o dropdown de escala, o botão de
271
+ * caminho crítico). Cada um aceita as duas formas:
272
+ *
273
+ * - **omitido** → o componente guarda o estado e o controle funciona
274
+ * sozinho. É o caso comum.
275
+ * - **passado** → quem manda é você, e o `on*Change` avisa da intenção do
276
+ * usuário. Passar o valor SEM o callback congela o controle — semântica
277
+ * normal de campo controlado no React, e é deliberado.
278
+ *
279
+ * ⚠️ `granularity` e `criticalPath` não tinham callback até esta rodada, e
280
+ * o resultado era a segunda forma sem escapatória: passar `granularity="day"`
281
+ * (que a doc ensinava como valor INICIAL) matava o dropdown de escala em
282
+ * silêncio — o clique mudava o estado interno e o valor da prop o mascarava
283
+ * de volta, com `tsc` verde e nenhum erro. `view` já tinha o par, e o JSDoc
284
+ * do handler dele descreve exatamente este defeito.
285
+ *
286
+ * @default "timeline"
287
+ */
288
+ view?: GanttView;
289
+ onViewChange?: (view: GanttView) => void;
290
+ /**
291
+ * **Quais visões existem** — não qual está aberta (isso é `view`).
292
+ *
293
+ * Nem todo cronograma quer as três. Um painel de dependências não ganha
294
+ * nada com a agenda; uma tela de acompanhamento por mês pode não querer o
295
+ * eixo. Omitido, as três aparecem.
296
+ *
297
+ * ⚠️ **Com UMA visão o seletor não é renderizado** (nem o divisor ao lado
298
+ * dele). Um controle segmentado com uma opção só é um controle que nunca
299
+ * muda nada — a mesma regra do toggle de caminho crítico sem vínculo e do
300
+ * "+" da grade sem `onDayAdd`.
301
+ *
302
+ * ⚠️ **`views` vence `view`.** Passar `view="list"` com
303
+ * `views={["timeline"]}` abre a `timeline`: a lista diz o que EXISTE, e
304
+ * renderizar algo que o consumidor excluiu seria pior que corrigir.
305
+ *
306
+ * @default ["timeline", "calendar", "list"]
307
+ */
308
+ views?: GanttView[];
309
+ /**
310
+ * **Carregando** — o esqueleto no lugar do conteúdo.
311
+ *
312
+ * ⚠️ Não é firula. Sem isto, `rows={[]}` durante o fetch mostra
313
+ * *"Nenhuma tarefa neste período"* — uma AFIRMAÇÃO falsa: o componente não
314
+ * sabe se não há tarefas, ele ainda não recebeu nenhuma. O usuário lê que o
315
+ * cronograma está vazio e vai embora antes do dado chegar.
316
+ *
317
+ * A toolbar continua renderizada (período, busca, filtro): o contexto não
318
+ * depende dos dados, e apagá-lo faria a tela piscar inteira quando eles
319
+ * chegam. Mesmo desenho do `DataTable`.
320
+ *
321
+ * @default false
322
+ */
323
+ loading?: boolean;
324
+ /**
325
+ * Substitui o esqueleto padrão. Par do `emptyState`.
326
+ *
327
+ * O padrão imita a SILHUETA da visão atual — painel + barras na timeline,
328
+ * 6×7 na grade de mês, blocos de dia na agenda. Se você trocar, mantenha a
329
+ * altura: esqueleto de silhueta diferente troca "espera" por um salto de
330
+ * layout quando o dado chega.
331
+ */
332
+ loadingState?: ReactNode;
333
+ /**
334
+ * **Janela visível, e ela é do consumidor.**
335
+ *
336
+ * O componente não navega sozinho — mesmo princípio do `Kanban` e da `Table`.
337
+ * Quem consome troca a janela; o `Gantt` só desenha o que cabe nela e marca as
338
+ * barras que a atravessam (`continuesBefore`/`continuesAfter`).
339
+ *
340
+ * Omitidos, o componente deriva a janela do menor `start` e maior `end` das
341
+ * barras — conveniência pro caso simples, não substituto do controle.
342
+ */
343
+ windowStart?: Date;
344
+ windowEnd?: Date;
345
+ /**
346
+ * Escala do eixo. Ver a nota do par valor + callback em `view`.
347
+ *
348
+ * @default "day"
349
+ */
350
+ granularity?: GanttGranularity;
351
+ onGranularityChange?: (granularity: GanttGranularity) => void;
352
+ /** Colunas da grade esquerda. Omitido, usa nome + datas + duração. */
353
+ columns?: GanttColumn[];
354
+ /**
355
+ * Largura inicial da grade esquerda, em px. O divisor entre os painéis é
356
+ * arrastável — todas as referências têm isso.
357
+ *
358
+ * 360 e não 320: com as 3 colunas default (nome + início + fim), 320 deixava
359
+ * ~136px pro nome, que trunca em qualquer tarefa com mais de duas palavras.
360
+ * @default 360
361
+ */
362
+ gridWidth?: number;
363
+ /**
364
+ * @default false — ligado sem `onBarMove` conectado, o usuário arrasta e vê a
365
+ * barra voltar sozinha, que lê como bug do app. Mesmo default do `Scheduler`.
366
+ */
367
+ draggable?: boolean;
368
+ resizable?: boolean;
369
+ /** Criar vínculo arrastando do conector da barra. @default false */
370
+ linkable?: boolean;
371
+ /**
372
+ * Destaca o caminho crítico. Ver a nota do par valor + callback em `view`.
373
+ *
374
+ * @default false — e não é economia de pixel: é **cálculo**. Exige ordenação
375
+ * topológica sobre os vínculos, e num grafo com ciclo não existe resposta.
376
+ * Ligado por default, um dado malformado do consumidor viraria travamento ou
377
+ * resultado silenciosamente errado. Ciclo detectado → `onGraphError`.
378
+ */
379
+ criticalPath?: boolean;
380
+ onCriticalPathChange?: (on: boolean) => void;
381
+ /**
382
+ * Mostra o botão que liga/desliga o caminho crítico na toolbar.
383
+ *
384
+ * `false` quando o estado é uma decisão da TELA e não do usuário — por
385
+ * exemplo um painel onde o crítico está sempre visível. Aí o botão só
386
+ * ocuparia 40px oferecendo desligar algo que a tela quer ligado.
387
+ *
388
+ * ⚠️ Desligar o botão NÃO desliga o realce: o realce é `criticalPath`. As
389
+ * duas props são independentes de propósito — esconder o controle de um
390
+ * estado permanente é diferente de não ter o estado.
391
+ *
392
+ * O botão também não aparece quando não há `links`: sem grafo não existe
393
+ * caminho crítico, e um toggle que nunca muda nada é pior que a ausência.
394
+ */
395
+ criticalPathToggle?: boolean;
396
+ onGraphError?: (erro: {
397
+ kind: "cycle";
398
+ barIds: string[];
399
+ }) => void;
400
+ /** Vínculos violados pelas datas atuais. Emitido quando o conjunto muda. */
401
+ onLinkViolations?: (violations: GanttLinkViolation[]) => void;
402
+ searchable?: boolean;
403
+ filterFields?: GanttFilterField[];
404
+ filterModel?: GanttFilterModel;
405
+ onFilterModelChange?: (model: GanttFilterModel) => void;
406
+ /** Abre o painel de detalhe — que é da TELA, não do componente. */
407
+ onBarClick?: (bar: GanttBar, row: GanttRow, evt: MouseEvent) => void;
408
+ onRowClick?: (row: GanttRow, evt: MouseEvent) => void;
409
+ /** Emitem a intenção. **Não aplicam** — quem aplica é o consumidor. */
410
+ onBarMove?: (change: GanttBarChange) => void;
411
+ onBarResize?: (change: GanttBarChange) => void;
412
+ onLinkCreate?: (link: Omit<GanttLink, "id">) => void;
413
+ onLinkDelete?: (link: GanttLink) => void;
414
+ /**
415
+ * Clique no "+" de uma célula da visão `calendar`.
416
+ *
417
+ * ⚠️ **Sem este handler o "+" não é renderizado.** Um botão de adicionar que
418
+ * não adiciona nada é pior que a ausência dele — mesma regra do toggle de
419
+ * caminho crítico sem vínculo no grafo.
420
+ *
421
+ * Recebe o dia clicado à meia-noite local. Quem cria a tarefa é você: o
422
+ * `Gantt` é dumb sobre mutação.
423
+ */
424
+ onDayAdd?: (date: Date) => void;
425
+ onRowToggle?: (rowId: string, collapsed: boolean) => void;
426
+ /** "Hoje". Injetável pra teste e pra fuso do servidor. @default new Date() */
427
+ now?: Date;
428
+ locale?: Locale;
429
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
430
+ /** Slot livre na toolbar, entre o filtro e o seletor de visão. */
431
+ toolbarActions?: ReactNode;
432
+ primaryAction?: ReactNode;
433
+ /** Sem nenhuma linha depois de busca e filtro. */
434
+ emptyState?: ReactNode;
435
+ className?: string;
436
+ }
437
+ export type GanttRef = {
438
+ /** Move a janela pra conter esta data, preservando a largura. */
439
+ goToDate: (date: Date) => void;
440
+ goToToday: () => void;
441
+ /** Expande/colapsa tudo. */
442
+ expandAll: () => void;
443
+ collapseAll: () => void;
444
+ };
445
+ //# sourceMappingURL=gantt.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gantt.types.d.ts","sourceRoot":"","sources":["../../../../../src/components/ui/Gantt/gantt.types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ import { GanttLinkType } from '../gantt.types';
2
+ /**
3
+ * Núcleo puro do gesto — sem React, sem DOM.
4
+ *
5
+ * ## Por que pointer events nativos e não `@dnd-kit`
6
+ *
7
+ * O dnd-kit **está** no DS (o `Scheduler` e o `Kanban` usam), então isto não é
8
+ * sobre dependência. É sobre o gesto ser de natureza diferente:
9
+ *
10
+ * - dnd-kit resolve **"em qual ZONA eu soltei"**. Aqui o alvo não é uma zona, é
11
+ * uma **coordenada contínua** no eixo do tempo — não há droppable pra colidir.
12
+ * - O gesto é 1-D com snap em dia inteiro. Toda a maquinaria de colisão do
13
+ * dnd-kit seria peso morto, e o `transform` dele em px teria que ser
14
+ * reconvertido em data de qualquer forma.
15
+ * - O `ganttSplitter` deste mesmo componente já usa `pointerdown` + listeners
16
+ * de `window`. Duas mecânicas de arraste no mesmo arquivo seria pior.
17
+ *
18
+ * ⚠️ Consequência de teste, e ela é a favor: o `PointerSensor` do dnd-kit
19
+ * **recusa evento sintético** (medido nesta sessão), então um gesto por dnd-kit
20
+ * não seria verificável no browser de teste. `pointerdown`/`pointermove`
21
+ * nativos são.
22
+ *
23
+ * ## Snap em dia inteiro, e por que `addDays`
24
+ *
25
+ * ⛔ Nunca `new Date(t + dias * 86_400_000)`. Em fuso com horário de verão o dia
26
+ * tem 23 ou 25 horas, e a soma em milissegundos desloca a barra em 1 hora — o
27
+ * que, com snap, vira **um dia inteiro** de erro. `addDays` do date-fns é
28
+ * calendário, não aritmética de timestamp. Mesma razão pela qual o resto do
29
+ * componente usa `differenceInCalendarDays`.
30
+ */
31
+ export type GanttDragMode = "move" | "resize-start" | "resize-end";
32
+ /**
33
+ * Onde a barra fica depois de arrastar `deltaPx`.
34
+ *
35
+ * Devolve SEMPRE um par válido (`start <= end`) — ver a nota do clamp abaixo.
36
+ * Não muta nada e não decide se a mudança é aceitável: quem aplica é o
37
+ * consumidor, e o `Gantt` é dumb sobre mutação.
38
+ */
39
+ export declare function dragToDates(bar: {
40
+ start: Date;
41
+ end: Date;
42
+ }, deltaPx: number, pxPerDay: number, mode: GanttDragMode): {
43
+ start: Date;
44
+ end: Date;
45
+ };
46
+ /**
47
+ * Que tipo de vínculo nasce ao ligar a ponta `de` de uma barra na ponta `para`
48
+ * de outra.
49
+ *
50
+ * As 4 combinações cobrem os 4 tipos — não há caso descartado:
51
+ *
52
+ * fim → início FS finish-to-start (o comum: "só começa quando aquela acabar")
53
+ * início→ início SS start-to-start ("começam juntas")
54
+ * fim → fim FF finish-to-finish ("acabam juntas")
55
+ * início→ fim SF start-to-finish (raro, existe em turno/handover)
56
+ *
57
+ * ⚠️ A ponta de DESTINO é decidida pela metade da barra em que o ponteiro
58
+ * soltou, não por acertar a portinha de 9px. Exigir o port como alvo tornaria
59
+ * FF e SF inalcançáveis na prática — 9px não é uma afordância, é uma punição.
60
+ * Meia barra é alvo de verdade e ainda distingue as 4 combinações.
61
+ */
62
+ export declare function linkTypeFromSides(de: "start" | "end", para: "start" | "end"): GanttLinkType;
63
+ /**
64
+ * Em qual metade da barra o ponteiro está — decide a ponta de destino.
65
+ *
66
+ * `left`/`width` são os da barra na tela; `x` é relativo ao mesmo sistema de
67
+ * coordenadas (o canvas). Barra de largura zero devolve `"start"`: sem largura
68
+ * não há duas metades, e `start` é a ponta do caso comum (FS).
69
+ */
70
+ export declare function sideFromPointer(x: number, left: number, width: number): "start" | "end";
71
+ //# sourceMappingURL=drag.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drag.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Gantt/hooks/drag.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,cAAc,GAAG,YAAY,CAAC;AAEnE;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,IAAI,CAAA;CAAE,EAC/B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,aAAa,GAClB;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,IAAI,CAAA;CAAE,CA2C5B;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,OAAO,GAAG,KAAK,EACnB,IAAI,EAAE,OAAO,GAAG,KAAK,GACpB,aAAa,CAGf;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,CAAC,EAAE,MAAM,EACT,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GACZ,OAAO,GAAG,KAAK,CAGjB"}
@@ -0,0 +1,79 @@
1
+ import { GanttFilterField, GanttFilterKind, GanttFilterModel, GanttRow } from '../gantt.types';
2
+ /**
3
+ * Núcleo puro do filtro — sem React, sem DOM.
4
+ *
5
+ * ## Por que este arquivo existe
6
+ *
7
+ * Até aqui o `Gantt` aceitava **um único tipo de filtro**: multi-seleção de
8
+ * `options` pré-declaradas. Filtro de texto, de faixa numérica, de período ou
9
+ * booleano eram impossíveis — não por bug, por ausência de contrato. A
10
+ * `DataTable` aceita `text` / `number` / `select` (+ `filterType` pra date e
11
+ * currency) com operador por campo; o Gantt aceitava 1 de 6.
12
+ *
13
+ * ## A decisão que evitou breaking change: o modelo NÃO mudou
14
+ *
15
+ * `GanttFilterModel` continua `Record<string, string[]>`. Todos os 6 tipos
16
+ * codificam o valor em `string[]`:
17
+ *
18
+ * multi ["design", "produto"] → os valores marcados
19
+ * single ["design"] → um só (a UI é radio)
20
+ * text ["mapa de"] → o termo
21
+ * number ["3", "10"] → [min, max], "" = sem limite
22
+ * date ["2026-09-01", ""] → [de, até], "" = sem limite
23
+ * boolean ["true"] → o valor
24
+ *
25
+ * `string[]` já era um carregador genérico o suficiente; o que faltava não era
26
+ * a forma do dado — era **como interpretá-lo** e **que input renderizar**. Por
27
+ * isso `appliedCount`, o "Limpar tudo", a serialização do consumidor e o
28
+ * `filterModel` controlado seguem funcionando sem uma linha de migração.
29
+ *
30
+ * ⚠️ A convenção de "vazio = SEM filtro" (não "esconde tudo") vale pros 6, e é
31
+ * a mesma do `filterModel` do resto do DS. Um tipo que resolvesse isso
32
+ * diferente faria o mesmo modelo significar coisas opostas em telas diferentes.
33
+ */
34
+ /**
35
+ * Compara texto ignorando caixa **e acento**.
36
+ *
37
+ * ⚠️ O acento não é preciosismo: em pt-BR, "Fábio", "Sustentação" e "Aquisição"
38
+ * são nomes reais no dado, e um usuário que digita "fabio" espera achar. Sem a
39
+ * decomposição NFD, `includes` falha e o filtro parece quebrado.
40
+ */
41
+ export declare function normalizarTexto(s: string): string;
42
+ export declare function parseDiaISO(s: string): Date | null;
43
+ /**
44
+ * Operador exibido no chip, por tipo — o vocabulário é o do `AppliedFilterOp`
45
+ * da `DataTable`, pra o usuário ler a mesma frase nas duas telas.
46
+ *
47
+ * `number` e `date` variam com QUAIS limites estão preenchidos: "entre 3 e 10",
48
+ * "≥ 3", "até 10". Um operador fixo mentiria em 2 dos 3 casos.
49
+ */
50
+ export declare function operadorDoCampo(kind: GanttFilterKind, values: readonly string[]): string;
51
+ /**
52
+ * O campo está SEM filtro?
53
+ *
54
+ * ⚠️ Não é `values.length === 0`. Em `number` e `date` o modelo guarda um par,
55
+ * e `["", ""]` tem length 2 com zero intenção de filtrar. Tratar isso como
56
+ * filtro ativo esconderia todas as linhas cujo acessor não é numérico — um
57
+ * "sumiu tudo" sem nada marcado na tela.
58
+ */
59
+ export declare function campoVazio(kind: GanttFilterKind, values: readonly string[] | undefined): boolean;
60
+ /**
61
+ * A linha passa neste campo?
62
+ *
63
+ * ⚠️ Linha cujo acessor devolve `undefined` é **excluída** quando o filtro está
64
+ * ativo — não incluída "por falta de informação". Filtrar por "Responsável =
65
+ * Ana" e receber as linhas sem responsável nenhum é o oposto do pedido.
66
+ */
67
+ export declare function linhaPassaNoCampo(campo: GanttFilterField, values: readonly string[] | undefined, row: GanttRow): boolean;
68
+ /** Aplica todos os campos. Ordem não importa — é conjunção. */
69
+ export declare function aplicarFiltros(rows: readonly GanttRow[], fields: readonly GanttFilterField[] | undefined, model: GanttFilterModel): GanttRow[];
70
+ /** Quantos campos estão de fato filtrando — o número do badge e do painel. */
71
+ export declare function contarAplicados(fields: readonly GanttFilterField[] | undefined, model: GanttFilterModel): number;
72
+ /**
73
+ * O que o chip mostra depois do operador.
74
+ *
75
+ * Devolve LISTA porque `multi` rende uma pílula por valor (é o formato da
76
+ * tabela). Os outros tipos rendem uma só.
77
+ */
78
+ export declare function valoresDoChip(campo: GanttFilterField, values: readonly string[] | undefined, formatarData?: (iso: string) => string): string[];
79
+ //# sourceMappingURL=filters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Gantt/hooks/filters.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,QAAQ,EACT,MAAM,gBAAgB,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAIH;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAMjD;AAsCD,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAUlD;AAWD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,eAAe,EACrB,MAAM,EAAE,SAAS,MAAM,EAAE,GACxB,MAAM,CAsBR;AAID;;;;;;;GAOG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,eAAe,EACrB,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,GACpC,OAAO,CAMT;AAID;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,gBAAgB,EACvB,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EACrC,GAAG,EAAE,QAAQ,GACZ,OAAO,CA+DT;AAED,+DAA+D;AAC/D,wBAAgB,cAAc,CAC5B,IAAI,EAAE,SAAS,QAAQ,EAAE,EACzB,MAAM,EAAE,SAAS,gBAAgB,EAAE,GAAG,SAAS,EAC/C,KAAK,EAAE,gBAAgB,GACtB,QAAQ,EAAE,CASZ;AAED,8EAA8E;AAC9E,wBAAgB,eAAe,CAC7B,MAAM,EAAE,SAAS,gBAAgB,EAAE,GAAG,SAAS,EAC/C,KAAK,EAAE,gBAAgB,GACtB,MAAM,CAKR;AAID;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,gBAAgB,EACvB,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EACrC,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GACrC,MAAM,EAAE,CAsCV"}