@snksergio/design-system 0.55.0 → 0.56.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 (43) hide show
  1. package/dist-lib/index.cjs +2517 -3
  2. package/dist-lib/index.cjs.map +1 -1
  3. package/dist-lib/index.mjs +2530 -16
  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/Scheduler/hooks/layout.d.ts +165 -0
  8. package/dist-lib/src/components/ui/Scheduler/hooks/layout.d.ts.map +1 -0
  9. package/dist-lib/src/components/ui/Scheduler/hooks/use-media-query.d.ts +21 -0
  10. package/dist-lib/src/components/ui/Scheduler/hooks/use-media-query.d.ts.map +1 -0
  11. package/dist-lib/src/components/ui/Scheduler/hooks/use-scheduler-dnd.d.ts +41 -0
  12. package/dist-lib/src/components/ui/Scheduler/hooks/use-scheduler-dnd.d.ts.map +1 -0
  13. package/dist-lib/src/components/ui/Scheduler/hooks/use-scheduler-filter.d.ts +35 -0
  14. package/dist-lib/src/components/ui/Scheduler/hooks/use-scheduler-filter.d.ts.map +1 -0
  15. package/dist-lib/src/components/ui/Scheduler/hooks/use-scheduler-keyboard.d.ts +47 -0
  16. package/dist-lib/src/components/ui/Scheduler/hooks/use-scheduler-keyboard.d.ts.map +1 -0
  17. package/dist-lib/src/components/ui/Scheduler/hooks/use-scheduler-state.d.ts +44 -0
  18. package/dist-lib/src/components/ui/Scheduler/hooks/use-scheduler-state.d.ts.map +1 -0
  19. package/dist-lib/src/components/ui/Scheduler/index.d.ts +14 -0
  20. package/dist-lib/src/components/ui/Scheduler/index.d.ts.map +1 -0
  21. package/dist-lib/src/components/ui/Scheduler/parts/draggable-event.d.ts +30 -0
  22. package/dist-lib/src/components/ui/Scheduler/parts/draggable-event.d.ts.map +1 -0
  23. package/dist-lib/src/components/ui/Scheduler/parts/mini-month.d.ts +28 -0
  24. package/dist-lib/src/components/ui/Scheduler/parts/mini-month.d.ts.map +1 -0
  25. package/dist-lib/src/components/ui/Scheduler/parts/scheduler-event.d.ts +53 -0
  26. package/dist-lib/src/components/ui/Scheduler/parts/scheduler-event.d.ts.map +1 -0
  27. package/dist-lib/src/components/ui/Scheduler/parts/scheduler-filter-panel.d.ts +41 -0
  28. package/dist-lib/src/components/ui/Scheduler/parts/scheduler-filter-panel.d.ts.map +1 -0
  29. package/dist-lib/src/components/ui/Scheduler/parts/scheduler-toolbar.d.ts +31 -0
  30. package/dist-lib/src/components/ui/Scheduler/parts/scheduler-toolbar.d.ts.map +1 -0
  31. package/dist-lib/src/components/ui/Scheduler/scheduler.d.ts +44 -0
  32. package/dist-lib/src/components/ui/Scheduler/scheduler.d.ts.map +1 -0
  33. package/dist-lib/src/components/ui/Scheduler/scheduler.styles.d.ts +820 -0
  34. package/dist-lib/src/components/ui/Scheduler/scheduler.styles.d.ts.map +1 -0
  35. package/dist-lib/src/components/ui/Scheduler/scheduler.types.d.ts +285 -0
  36. package/dist-lib/src/components/ui/Scheduler/scheduler.types.d.ts.map +1 -0
  37. package/dist-lib/src/components/ui/Scheduler/views/list.d.ts +33 -0
  38. package/dist-lib/src/components/ui/Scheduler/views/list.d.ts.map +1 -0
  39. package/dist-lib/src/components/ui/Scheduler/views/month.d.ts +47 -0
  40. package/dist-lib/src/components/ui/Scheduler/views/month.d.ts.map +1 -0
  41. package/dist-lib/src/components/ui/Scheduler/views/time-grid.d.ts +48 -0
  42. package/dist-lib/src/components/ui/Scheduler/views/time-grid.d.ts.map +1 -0
  43. package/package.json +210 -210
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduler.styles.d.ts","sourceRoot":"","sources":["../../../../../src/components/ui/Scheduler/scheduler.styles.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,285 @@
1
+ import { Locale } from 'date-fns';
2
+ import { ReactNode } from 'react';
3
+ /**
4
+ * União fechada sobre as 6 famílias semânticas existentes do DS. `brand`,
5
+ * não `primary` — `primary` é a nomenclatura V2 extinta que só o `Chip`
6
+ * ainda carrega por herança; componente novo não herda essa dívida
7
+ * (CLAUDE.md §Nomenclatura de cores). Default visual: `"brand"`.
8
+ *
9
+ * Teto real são ~5 categorias visualmente separáveis, não 6: `brand` e
10
+ * `success` são ambos verdes (10° de matiz) e não devem ser usados como
11
+ * duas categorias adjacentes no mesmo calendário — documentado em detalhe
12
+ * no `USAGE.md` (fatia de showcase).
13
+ *
14
+ * Gatilho de reabertura pra uma paleta categórica própria (spec §2.4): um
15
+ * consumidor real precisando de 6+ categorias simultâneas no mesmo
16
+ * calendário. Até lá esta união de 6 nomes é a fronteira; ampliá-la depois
17
+ * é aditivo, não breaking.
18
+ */
19
+ export type SchedulerEventColor = "brand" | "info" | "success" | "warning" | "danger" | "neutral";
20
+ /**
21
+ * Um evento do calendário. O `Scheduler` nunca muta este objeto nem o
22
+ * array `events` — toda mudança (mover, redimensionar) é emitida via
23
+ * callback (`onEventMove`/`onEventResize`) e o consumidor decide se e
24
+ * como aplica.
25
+ */
26
+ export type SchedulerEvent = {
27
+ /** Identificador único — usado em lane-packing, dnd e `aria-label`. */
28
+ id: string;
29
+ /** Título visível. `ReactNode` pra permitir markup rico no pill/bloco. */
30
+ title: ReactNode;
31
+ /** Início. */
32
+ start: Date;
33
+ /**
34
+ * Fim — **obrigatório**, nunca opcional. `end` opcional obrigaria cada
35
+ * função de `hooks/layout.ts` a inventar uma duração default; duração
36
+ * zero é caso legítimo (`start === end` — ver `packLanes` e
37
+ * `computeOverflow`) e deve ser dita como igualdade, não como ausência.
38
+ *
39
+ * Invariante `end >= start` é responsabilidade de quem monta o evento
40
+ * nesta fatia — `hooks/layout.ts` é puro e não normaliza entrada
41
+ * inválida (a normalização com `console.warn` em DEV é da fatia 2, em
42
+ * `use-scheduler-state.ts`).
43
+ */
44
+ end: Date;
45
+ /**
46
+ * Evento de dia inteiro. Quando `true`, a hora de `start`/`end` é
47
+ * ignorada — a faixa considerada é `[startOfDay(start), endOfDay(end)]`.
48
+ */
49
+ allDay?: boolean;
50
+ /** Categoria de cor do pill/bloco/dot. Default visual: `"brand"`. */
51
+ color?: SchedulerEventColor;
52
+ /** Id de categoria livre do consumidor — não interpretado pelo componente. */
53
+ categoryId?: string;
54
+ /** Ids de tags livres do consumidor — não interpretados pelo componente. */
55
+ tagIds?: string[];
56
+ /** Descrição — aparece na view `list` e no `aria-label` estendido. */
57
+ description?: ReactNode;
58
+ /** Sobrepõe o `draggable` global (prop do `<Scheduler>`) só pra este evento. */
59
+ draggable?: boolean;
60
+ /** Sobrepõe o `resizable` global só pra este evento. */
61
+ resizable?: boolean;
62
+ /**
63
+ * Payload cru do domínio do consumidor, devolvido intacto em
64
+ * `onEventClick`. É o que impede o `Scheduler` de conhecer o domínio —
65
+ * mesma escolha do `meta` de card do `Kanban`.
66
+ */
67
+ meta?: unknown;
68
+ /**
69
+ * Texto pra busca quando `title` não é uma string simples. O motor de
70
+ * busca (`searchable`) casa **só string**: varrer a árvore de um
71
+ * `ReactNode` pra extrair texto é caro e frágil. Sem `searchText`, um
72
+ * evento com `title` rico (ex: `<b>Reunião</b> — Cliente X`) não é
73
+ * encontrado pela busca — silenciosamente. Documentar isso é melhor do
74
+ * que fingir que a busca "sempre funciona".
75
+ */
76
+ searchText?: string;
77
+ };
78
+ export type SchedulerView = "month" | "week" | "day" | "list";
79
+ export type SchedulerHourFormat = "12h" | "24h";
80
+ /**
81
+ * União fechada, não `number`: `snapMinutes: 7` produziria uma grade que
82
+ * não fecha na hora.
83
+ */
84
+ export type SchedulerSnapMinutes = 15 | 30 | 60;
85
+ /** Em `"server"` o componente só emite `onFilterModelChange`; não filtra. */
86
+ export type SchedulerFilterMode = "client" | "server";
87
+ /** Qual alça de resize está sendo arrastada. */
88
+ export type SchedulerResizeEdge = "start" | "end";
89
+ /** Uma opção de um `SchedulerFilterField` — vira 1 chip quando aplicada. */
90
+ export type SchedulerFilterOption = {
91
+ value: string;
92
+ label: string;
93
+ /** Cor do dot do chip, quando o filtro espelha a paleta de evento. */
94
+ color?: SchedulerEventColor;
95
+ };
96
+ /**
97
+ * Campo de filtro declarativo. O `Scheduler` renderiza os chips **e**
98
+ * filtra sozinho (modo `"client"`) — nunca um form solto acima da grade
99
+ * (L-051).
100
+ */
101
+ export type SchedulerFilterField = {
102
+ id: string;
103
+ label: string;
104
+ options: SchedulerFilterOption[];
105
+ };
106
+ /**
107
+ * Valores selecionados por campo de filtro — `fieldId → values[]`. Um
108
+ * `fieldId` ausente do model equivale a "sem filtro aplicado naquele
109
+ * campo" (não a "todas as opções selecionadas").
110
+ */
111
+ export type SchedulerFilterModel = Record<string, string[]>;
112
+ export type SchedulerRef = {
113
+ /** Move a data-âncora do período pra `date` (sem trocar de view). */
114
+ goToDate: (date: Date) => void;
115
+ /** Atalho pra `goToDate(new Date())`. */
116
+ goToToday: () => void;
117
+ /** Avança 1 período (dia/semana/mês, conforme a view ativa). */
118
+ next: () => void;
119
+ /** Volta 1 período. */
120
+ prev: () => void;
121
+ /**
122
+ * Janela de datas atualmente visível. Existe pra `filterMode="server"`:
123
+ * o consumidor precisa saber qual intervalo buscar, e derivar isso de
124
+ * fora duplicaria a lógica de `hooks/layout.ts`.
125
+ */
126
+ getVisibleRange: () => {
127
+ start: Date;
128
+ end: Date;
129
+ };
130
+ };
131
+ /** Parâmetros passados pro callback `renderEvent`. */
132
+ export type SchedulerRenderEventParams = {
133
+ event: SchedulerEvent;
134
+ view: SchedulerView;
135
+ selected: boolean;
136
+ };
137
+ /**
138
+ * Payload emitido por `onEventMove`/`onEventResize`. O componente
139
+ * **emite**, nunca muta `events` — o consumidor decide se e como aplica
140
+ * (mesma gramática do `onCardMove` do `Kanban`).
141
+ */
142
+ export type SchedulerEventChange = {
143
+ id: string;
144
+ start: Date;
145
+ end: Date;
146
+ };
147
+ export type SchedulerProps = {
148
+ /** Única fonte de eventos. O componente nunca muta este array. */
149
+ events: SchedulerEvent[];
150
+ /** Locale do date-fns — nome de mês/dia e 1ª letra do weekday saem daqui. */
151
+ locale?: Locale;
152
+ /** Primeiro dia da semana. Default `0` (domingo) — convenção BR fechada. */
153
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
154
+ /** Formato de hora do gutter/pill. `"12h"` muda a largura do gutter. */
155
+ hourFormat?: SchedulerHourFormat;
156
+ /**
157
+ * Recorte de horas visíveis na grade de week/day. Não é scroll — é o
158
+ * que existe na grade (ex: `[8, 18]` não renderiza madrugada).
159
+ */
160
+ dayRange?: [number, number];
161
+ /**
162
+ * Âncora inicial do scroll, separada de `dayRange` porque "mostrar
163
+ * 0–24 mas começar às 8" é o caso comum.
164
+ */
165
+ scrollToHour?: number;
166
+ /** Linha do "agora" em week/day. Default `true`. */
167
+ nowIndicator?: boolean;
168
+ defaultDate?: Date;
169
+ date?: Date;
170
+ onDateChange?: (date: Date) => void;
171
+ defaultView?: SchedulerView;
172
+ view?: SchedulerView;
173
+ onViewChange?: (view: SchedulerView) => void;
174
+ /**
175
+ * O 2º argumento entrega o alvo pro consumidor ancorar painel/popover.
176
+ * Tipado com `KeyboardEvent` também porque `Enter`/`Space` abrem o
177
+ * evento focado (§6.2 da spec).
178
+ */
179
+ onEventClick?: (event: SchedulerEvent, evt: React.MouseEvent | React.KeyboardEvent) => void;
180
+ /** `+` revelado no hover da célula, e clique em faixa vazia. */
181
+ onSlotClick?: (start: Date, end: Date) => void;
182
+ /** Emite. Não muta — o consumidor aplica em `events`. */
183
+ onEventMove?: (change: SchedulerEventChange) => void;
184
+ /**
185
+ * Separado de `onEventMove` porque a intenção de negócio difere
186
+ * (reagendar × mudar duração) e frequentemente tem permissão diferente.
187
+ */
188
+ onEventResize?: (change: SchedulerEventChange) => void;
189
+ /**
190
+ * Global; `event.draggable` sobrepõe. Default **`false`** — dnd ligado
191
+ * sem `onEventMove` conectado deixa o usuário arrastar e ver o evento
192
+ * voltar sozinho (o pior estado possível: parece bug do app). Em DEV,
193
+ * `draggable && !onEventMove` deve emitir `console.warn` — mesma razão
194
+ * do `enableDnD` do `Kanban`.
195
+ */
196
+ draggable?: boolean;
197
+ /** Global; `event.resizable` sobrepõe. Default `false`. */
198
+ resizable?: boolean;
199
+ /** Default `15`. */
200
+ snapMinutes?: SchedulerSnapMinutes;
201
+ /**
202
+ * Preview local durante o gesto de dnd. Opt-in porque, ligado, o
203
+ * componente passa a ter um estado que pode divergir de `events`.
204
+ */
205
+ optimistic?: boolean;
206
+ /** Casa `title` (ou `searchText`), `description` e labels de `tagIds`. */
207
+ searchable?: boolean;
208
+ search?: string;
209
+ onSearchChange?: (search: string) => void;
210
+ /** Declarativo: o componente renderiza os chips e filtra sozinho. */
211
+ filterFields?: SchedulerFilterField[];
212
+ filterModel?: SchedulerFilterModel;
213
+ onFilterModelChange?: (model: SchedulerFilterModel) => void;
214
+ /** Default `"client"`. */
215
+ filterMode?: SchedulerFilterMode;
216
+ /**
217
+ * O painel de filtro já vem aberto. Default `false`.
218
+ *
219
+ * Ele é uma **coluna** à direita da grade, não um overlay: abrir encolhe a
220
+ * grade em ~296px. Por isso nasce fechado — e por isso não existe abaixo de
221
+ * 1024px, onde a coluna extra não caberia junto de uma semana legível.
222
+ *
223
+ * Só o estado INICIAL é prop: depois é o usuário que abre e fecha. Um par
224
+ * controlado (`filterPanelOpen` + `onFilterPanelOpenChange`) entraria se
225
+ * alguma tela precisasse dirigir isso de fora — nenhuma precisa hoje, e
226
+ * `defaultX` sem `x` é a metade que não mente sobre o que existe.
227
+ */
228
+ defaultFilterPanelOpen?: boolean;
229
+ /** Área custom, entre o botão de filtro e o seletor de view. */
230
+ toolbarActions?: ReactNode;
231
+ /**
232
+ * Slot do botão primário à direita. `ReactNode`, não `{ label, onClick }`,
233
+ * porque o consumidor já tem `Button` do DS e pode querer split button
234
+ * ou botão só de ícone.
235
+ */
236
+ primaryAction?: ReactNode;
237
+ /** Override do título do período (default derivado de `date`+`view`+`locale`). */
238
+ title?: ReactNode;
239
+ /**
240
+ * Substitui só o miolo do pill/bloco/linha — o wrapper (posicionamento,
241
+ * foco, dnd, borda) permanece do componente. Mesma divisão do
242
+ * `renderCard` do `Kanban`, pela mesma razão: garante consistência
243
+ * entre calendários.
244
+ */
245
+ renderEvent?: (params: SchedulerRenderEventParams) => ReactNode;
246
+ /** Só a view `list` tem empty state — mês vazio é grade vazia legítima. */
247
+ emptyState?: ReactNode;
248
+ /** ClassName extra no root. */
249
+ className?: string;
250
+ };
251
+ /**
252
+ * Um recorte de evento multi-dia dentro de UMA linha (semana) da grade do
253
+ * mês. Um evento que atravessa 2 semanas vira 2 `MonthSegment`s — um por
254
+ * linha da grade (spec §7 #1).
255
+ */
256
+ export type MonthSegment = {
257
+ event: SchedulerEvent;
258
+ /** Índice da linha (0–5) em `Date[][]`, o retorno de `buildMonthMatrix`. */
259
+ weekIndex: number;
260
+ /** Coluna inicial do segmento nesta linha (0–6). */
261
+ colStart: number;
262
+ /** Quantas colunas o segmento ocupa nesta linha. */
263
+ colSpan: number;
264
+ /**
265
+ * `true` quando este segmento contém o dia real de início do evento.
266
+ * `false` quando o segmento é a continuação truncada de uma linha ou de
267
+ * um mês anterior — nesse caso a barra não deve ter canto arredondado
268
+ * nem "ponta" desse lado (spec §5.1, §7 #2/#6/#7).
269
+ */
270
+ isStart: boolean;
271
+ /** Espelho de `isStart` para o fim do evento. */
272
+ isEnd: boolean;
273
+ };
274
+ /** Posição de um evento numa "lane" horizontal, após `packLanes`. */
275
+ export type LaneBox = {
276
+ event: SchedulerEvent;
277
+ /** Índice da lane (0-based) dentro do grupo conexo de colisão. */
278
+ laneIndex: number;
279
+ /**
280
+ * Total de lanes do grupo conexo — **não** do dia inteiro (spec §7 #3).
281
+ * Largura de render = `1 / laneCount`; `left = laneIndex / laneCount`.
282
+ */
283
+ laneCount: number;
284
+ };
285
+ //# sourceMappingURL=scheduler.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduler.types.d.ts","sourceRoot":"","sources":["../../../../../src/components/ui/Scheduler/scheduler.types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { Locale } from 'date-fns';
2
+ import { SchedulerEvent, SchedulerHourFormat, SchedulerRenderEventParams } from '../scheduler.types';
3
+ /**
4
+ * View `list` — a agenda.
5
+ *
6
+ * ## Só os dias QUE TÊM evento
7
+ *
8
+ * A grade do mês mostra os 42 dias porque a grade *é* a informação: um dia vazio
9
+ * ali diz "nada marcado nesta terça". Aqui não — uma agenda que lista 30 dias
10
+ * pra mostrar 8 eventos obriga a rolar por 22 blocos vazios. Dia sem evento
11
+ * simplesmente não aparece, e o salto entre datas é o próprio sinal de que não
12
+ * há nada no meio.
13
+ *
14
+ * ## A janela é o MÊS da âncora
15
+ *
16
+ * Mesmo recorte que `useSchedulerState.visibleRange` calcula pra `list`, e
17
+ * recalculado aqui a partir de `date` pelas mesmas regras — não recebido por
18
+ * prop, pra que a view não dependa da ordem em que o pai monta as coisas. As
19
+ * setas da toolbar andam de DIA nesta view (decisão registrada no hook), então o
20
+ * usuário navega dentro do mês sem que a lista salte de mês a cada clique.
21
+ */
22
+ export type SchedulerListViewProps = {
23
+ date: Date;
24
+ events: SchedulerEvent[];
25
+ locale?: Locale;
26
+ hourFormat: SchedulerHourFormat;
27
+ now: Date;
28
+ onEventClick?: (event: SchedulerEvent, evt: React.MouseEvent | React.KeyboardEvent) => void;
29
+ renderEvent?: (params: SchedulerRenderEventParams) => React.ReactNode;
30
+ emptyState?: React.ReactNode;
31
+ };
32
+ export declare function SchedulerListView({ date, events, locale, hourFormat, now, onEventClick, renderEvent, emptyState, }: SchedulerListViewProps): import("react/jsx-runtime").JSX.Element;
33
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Scheduler/views/list.tsx"],"names":[],"mappings":"AACA,OAAO,EAML,KAAK,MAAM,EACZ,MAAM,UAAU,CAAC;AAYlB,OAAO,KAAK,EACV,cAAc,EACd,mBAAmB,EACnB,0BAA0B,EAC3B,MAAM,oBAAoB,CAAC;AAE5B;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,mBAAmB,CAAC;IAChC,GAAG,EAAE,IAAI,CAAC;IACV,YAAY,CAAC,EAAE,CACb,KAAK,EAAE,cAAc,EACrB,GAAG,EAAE,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,aAAa,KACxC,IAAI,CAAC;IACV,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,0BAA0B,KAAK,KAAK,CAAC,SAAS,CAAC;IACtE,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC9B,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,EAChC,IAAI,EACJ,MAAM,EACN,MAAM,EACN,UAAU,EACV,GAAG,EACH,YAAY,EACZ,WAAW,EACX,UAAU,GACX,EAAE,sBAAsB,2CA6GxB"}
@@ -0,0 +1,47 @@
1
+ import { Locale } from 'date-fns';
2
+ import { SchedulerEvent, SchedulerHourFormat, SchedulerRenderEventParams } from '../scheduler.types';
3
+ /**
4
+ * View de mês — grade 6×7 fixa.
5
+ *
6
+ * ## Por que os eventos são desenhados POR CÉLULA e não como barras absolutas
7
+ *
8
+ * A `segmentMultiDay` já devolve `colStart`/`colSpan` por linha, o que
9
+ * permitiria posicionar cada evento multi-dia como uma barra única atravessando
10
+ * as colunas. Esta fatia **não** faz isso: uma barra absoluta precisa reservar
11
+ * a mesma faixa vertical em todas as células que atravessa, senão ela cobre o
12
+ * evento de um dia vizinho. Esse reservatório é lane-packing por LINHA da
13
+ * grade (não por dia), e é trabalho da fatia que traz o dnd — onde a posição
14
+ * já vai ter que ser calculada em px de qualquer forma.
15
+ *
16
+ * O que existe aqui e é honesto: o evento multi-dia aparece em **cada dia que
17
+ * ocupa**, com `truncateStart`/`truncateEnd` marcando a continuação, então o
18
+ * usuário lê a extensão dele corretamente. A barra contínua é refinamento
19
+ * visual, não informação nova.
20
+ */
21
+ export type SchedulerMonthViewProps = {
22
+ date: Date;
23
+ events: SchedulerEvent[];
24
+ locale?: Locale;
25
+ weekStartsOn: 0 | 1 | 2 | 3 | 4 | 5 | 6;
26
+ hourFormat: SchedulerHourFormat;
27
+ now: Date;
28
+ /**
29
+ * Trava quantos pills aparecem por célula. **Omita** no caso normal: sem ela,
30
+ * o corte é DERIVADO da altura real da linha, que é o que faz o calendário
31
+ * aproveitar a tela quando usado como página inteira — célula alta mostra 8
32
+ * eventos, célula baixa mostra 2, sem ninguém configurar nada.
33
+ *
34
+ * Use só quando a tela precisa de altura de linha previsível
35
+ * independentemente do conteúdo.
36
+ */
37
+ maxPerCell?: number;
38
+ onEventClick?: (event: SchedulerEvent, evt: React.MouseEvent | React.KeyboardEvent) => void;
39
+ onSlotClick?: (start: Date, end: Date) => void;
40
+ renderEvent?: (params: SchedulerRenderEventParams) => React.ReactNode;
41
+ /** Liga os droppables. `false` deixa o dnd inerte sem desmontar nada. */
42
+ dndAtivo?: boolean;
43
+ /** Decide por evento se ele pode ser arrastado — vem do hook de dnd. */
44
+ podeMover?: (event: SchedulerEvent) => boolean;
45
+ };
46
+ export declare function SchedulerMonthView({ date, events, locale, weekStartsOn, hourFormat, now, maxPerCell, onEventClick, onSlotClick, renderEvent, dndAtivo, podeMover, }: SchedulerMonthViewProps): import("react/jsx-runtime").JSX.Element;
47
+ //# sourceMappingURL=month.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"month.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Scheduler/views/month.tsx"],"names":[],"mappings":"AACA,OAAO,EAA8C,KAAK,MAAM,EAAE,MAAM,UAAU,CAAC;AAsBnF,OAAO,KAAK,EACV,cAAc,EACd,mBAAmB,EACnB,0BAA0B,EAC3B,MAAM,oBAAoB,CAAC;AAE5B;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACxC,UAAU,EAAE,mBAAmB,CAAC;IAChC,GAAG,EAAE,IAAI,CAAC;IACV;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,CACb,KAAK,EAAE,cAAc,EACrB,GAAG,EAAE,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,aAAa,KACxC,IAAI,CAAC;IACV,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,KAAK,IAAI,CAAC;IAC/C,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,0BAA0B,KAAK,KAAK,CAAC,SAAS,CAAC;IACtE,yEAAyE;IACzE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wEAAwE;IACxE,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,OAAO,CAAC;CAChD,CAAC;AAuBF,wBAAgB,kBAAkB,CAAC,EACjC,IAAI,EACJ,MAAM,EACN,MAAM,EACN,YAAY,EACZ,UAAU,EACV,GAAG,EACH,UAAU,EACV,YAAY,EACZ,WAAW,EACX,WAAW,EACX,QAAgB,EAChB,SAAS,GACV,EAAE,uBAAuB,2CAkRzB"}
@@ -0,0 +1,48 @@
1
+ import { Locale } from 'date-fns';
2
+ import { SchedulerEvent, SchedulerHourFormat, SchedulerRenderEventParams, SchedulerSnapMinutes, SchedulerView } from '../scheduler.types';
3
+ /**
4
+ * Grade de horas — serve `week` (7 colunas) e `day` (1 coluna).
5
+ *
6
+ * Uma view só, não duas: o gutter de horas, a banda de dia inteiro, o
7
+ * lane-packing de sobreposição, a linha do "agora" e o alvo de clique por faixa
8
+ * são idênticos; o que muda é quantas colunas o `.map` produz. Dois arquivos
9
+ * duplicariam cinco mecanismos pra ganhar zero.
10
+ *
11
+ * ## O acoplamento com o token, declarado
12
+ *
13
+ * `HOUR_HEIGHT_PX` espelha `h-comp-3xl` (48px). Posicionamento absoluto exige a
14
+ * altura como NÚMERO em JS — `minutesToOffset()` devolve px. Não há como derivar
15
+ * isso do CSS sem medir o DOM, e medir antes do primeiro paint produziria um
16
+ * salto visível. A nota inversa está em `scheduler.styles.ts`, no
17
+ * `schedulerTimeFrame`.
18
+ */
19
+ /**
20
+ * Espelha `h-comp-3xl` — ver nota acima.
21
+ *
22
+ * Exportado porque o `use-scheduler-dnd` precisa do MESMO número pra converter
23
+ * `delta.y` em minutos. Duas constantes iguais em arquivos diferentes é como o
24
+ * arraste passa a mover o evento pra uma hora que não é a que o cursor aponta.
25
+ */
26
+ export declare const HOUR_HEIGHT_PX = 48;
27
+ export type SchedulerTimeGridProps = {
28
+ date: Date;
29
+ view: Extract<SchedulerView, "week" | "day">;
30
+ events: SchedulerEvent[];
31
+ locale?: Locale;
32
+ weekStartsOn: 0 | 1 | 2 | 3 | 4 | 5 | 6;
33
+ hourFormat: SchedulerHourFormat;
34
+ dayRange: [number, number];
35
+ scrollToHour: number;
36
+ nowIndicator: boolean;
37
+ now: Date;
38
+ snapMinutes: SchedulerSnapMinutes;
39
+ onEventClick?: (event: SchedulerEvent, evt: React.MouseEvent | React.KeyboardEvent) => void;
40
+ onSlotClick?: (start: Date, end: Date) => void;
41
+ renderEvent?: (params: SchedulerRenderEventParams) => React.ReactNode;
42
+ /** Liga os droppables das colunas. */
43
+ dndAtivo?: boolean;
44
+ podeMover?: (event: SchedulerEvent) => boolean;
45
+ podeRedimensionar?: (event: SchedulerEvent) => boolean;
46
+ };
47
+ export declare function SchedulerTimeGrid({ date, view, events, locale, weekStartsOn, hourFormat, dayRange, scrollToHour, nowIndicator, now, snapMinutes, onEventClick, onSlotClick, renderEvent, dndAtivo, podeMover, podeRedimensionar, }: SchedulerTimeGridProps): import("react/jsx-runtime").JSX.Element;
48
+ //# sourceMappingURL=time-grid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time-grid.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Scheduler/views/time-grid.tsx"],"names":[],"mappings":"AACA,OAAO,EAOL,KAAK,MAAM,EACZ,MAAM,UAAU,CAAC;AA2BlB,OAAO,KAAK,EACV,cAAc,EACd,mBAAmB,EACnB,0BAA0B,EAC1B,oBAAoB,EACpB,aAAa,EACd,MAAM,oBAAoB,CAAC;AAE5B;;;;;;;;;;;;;;;GAeG;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,KAAK,CAAC;AASjC,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,EAAE,OAAO,CAAC,aAAa,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;IAC7C,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACxC,UAAU,EAAE,mBAAmB,CAAC;IAChC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,GAAG,EAAE,IAAI,CAAC;IACV,WAAW,EAAE,oBAAoB,CAAC;IAClC,YAAY,CAAC,EAAE,CACb,KAAK,EAAE,cAAc,EACrB,GAAG,EAAE,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,aAAa,KACxC,IAAI,CAAC;IACV,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,KAAK,IAAI,CAAC;IAC/C,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,0BAA0B,KAAK,KAAK,CAAC,SAAS,CAAC;IACtE,sCAAsC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,OAAO,CAAC;IAC/C,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,OAAO,CAAC;CACxD,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,EAChC,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,MAAM,EACN,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,GAAG,EACH,WAAW,EACX,YAAY,EACZ,WAAW,EACX,WAAW,EACX,QAAgB,EAChB,SAAS,EACT,iBAAiB,GAClB,EAAE,sBAAsB,2CA+TxB"}