@snksergio/design-system 0.55.0 → 0.57.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 +2597 -3
- package/dist-lib/index.cjs.map +1 -1
- package/dist-lib/index.mjs +2631 -37
- 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/Scheduler/hooks/layout.d.ts +165 -0
- package/dist-lib/src/components/ui/Scheduler/hooks/layout.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Scheduler/hooks/use-media-query.d.ts +21 -0
- package/dist-lib/src/components/ui/Scheduler/hooks/use-media-query.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Scheduler/hooks/use-scheduler-dnd.d.ts +41 -0
- package/dist-lib/src/components/ui/Scheduler/hooks/use-scheduler-dnd.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Scheduler/hooks/use-scheduler-filter.d.ts +35 -0
- package/dist-lib/src/components/ui/Scheduler/hooks/use-scheduler-filter.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Scheduler/hooks/use-scheduler-keyboard.d.ts +47 -0
- package/dist-lib/src/components/ui/Scheduler/hooks/use-scheduler-keyboard.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Scheduler/hooks/use-scheduler-state.d.ts +44 -0
- package/dist-lib/src/components/ui/Scheduler/hooks/use-scheduler-state.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Scheduler/index.d.ts +14 -0
- package/dist-lib/src/components/ui/Scheduler/index.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Scheduler/parts/draggable-event.d.ts +30 -0
- package/dist-lib/src/components/ui/Scheduler/parts/draggable-event.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Scheduler/parts/mini-month.d.ts +28 -0
- package/dist-lib/src/components/ui/Scheduler/parts/mini-month.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Scheduler/parts/scheduler-event.d.ts +53 -0
- package/dist-lib/src/components/ui/Scheduler/parts/scheduler-event.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Scheduler/parts/scheduler-filter-panel.d.ts +54 -0
- package/dist-lib/src/components/ui/Scheduler/parts/scheduler-filter-panel.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Scheduler/parts/scheduler-toolbar.d.ts +25 -0
- package/dist-lib/src/components/ui/Scheduler/parts/scheduler-toolbar.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Scheduler/scheduler.d.ts +44 -0
- package/dist-lib/src/components/ui/Scheduler/scheduler.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Scheduler/scheduler.styles.d.ts +911 -0
- package/dist-lib/src/components/ui/Scheduler/scheduler.styles.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Scheduler/scheduler.types.d.ts +285 -0
- package/dist-lib/src/components/ui/Scheduler/scheduler.types.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Scheduler/views/list.d.ts +33 -0
- package/dist-lib/src/components/ui/Scheduler/views/list.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Scheduler/views/month.d.ts +47 -0
- package/dist-lib/src/components/ui/Scheduler/views/month.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Scheduler/views/time-grid.d.ts +48 -0
- package/dist-lib/src/components/ui/Scheduler/views/time-grid.d.ts.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,911 @@
|
|
|
1
|
+
import { VariantProps } from '../../../utils/tv';
|
|
2
|
+
/**
|
|
3
|
+
* Fonte única do visual do `Scheduler`. Nenhum componente da pasta escreve
|
|
4
|
+
* classe de estilo inline — quem quiser mudar a pele muda AQUI (regra de ouro
|
|
5
|
+
* do DS).
|
|
6
|
+
*
|
|
7
|
+
* ⛔ Nada aqui importa de `../TableToolbar`. A gramática visual da toolbar
|
|
8
|
+
* (segmented, busca, chip aplicado) é **copiada** de
|
|
9
|
+
* `TableToolbar/table-toolbar.styles.ts`, não importada — cross-import entre
|
|
10
|
+
* pastas de `ui/` é o que gerou o `registryDependency` dangling da L-049 no
|
|
11
|
+
* `DataList`: `@igreen/table-toolbar` não existe como item de registry, então
|
|
12
|
+
* `igreen:add scheduler` estrearia quebrado no consumidor de copy-in enquanto
|
|
13
|
+
* `tsc` e showcase ficam verdes. O custo aceito é manter as duas cópias em
|
|
14
|
+
* sync na mão; a alternativa era um defeito invisível justamente onde a gente
|
|
15
|
+
* não olha (spec §4.1).
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* `h-full` (não só `min-h-0`) é o que impede o painel de filtro de esticar a
|
|
19
|
+
* altura da linha inteira.
|
|
20
|
+
*
|
|
21
|
+
* Sem ele o root dimensionava por CONTEÚDO: a coluna do painel, que é uma pilha
|
|
22
|
+
* de mini-calendário + grupos, ficava mais alta que a grade e passava a mandar
|
|
23
|
+
* na altura das duas — no exemplo do showcase isso vazava pra fora do
|
|
24
|
+
* `h-[720px]` e cortava. Com `h-full`, o root ocupa o pai, `schedulerBody` é
|
|
25
|
+
* `flex-1 min-h-0`, e o painel rola por dentro em vez de crescer.
|
|
26
|
+
*
|
|
27
|
+
* Em pai de altura automática, `height: 100%` resolve contra `auto` e se
|
|
28
|
+
* comporta como `auto` — ou seja, não piora o caso "esqueci de dar altura", que
|
|
29
|
+
* segue documentado como gotcha nº 1 do USAGE.
|
|
30
|
+
*/
|
|
31
|
+
export declare const schedulerRoot: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
32
|
+
/**
|
|
33
|
+
* Uma linha em desktop, quebra em duas abaixo de ~1024px. `flex-wrap` +
|
|
34
|
+
* `justify-between` em vez de grid de 2 colunas: os dois lados têm largura de
|
|
35
|
+
* conteúdo (o título muda de tamanho por mês e por view), e grid obrigaria a
|
|
36
|
+
* fixar uma fração que sobra ou falta.
|
|
37
|
+
*/
|
|
38
|
+
/**
|
|
39
|
+
* Toolbar — DUAS LINHAS abaixo de `lg`, uma só a partir dele.
|
|
40
|
+
*
|
|
41
|
+
* Empilhado (<1024px): linha 1 é `[título] ······ [‹ Hoje ›]`, com a navegação
|
|
42
|
+
* empurrada pro fim; linha 2 é `[busca ·····] [📅] [⚙] [+]`, a busca comendo a
|
|
43
|
+
* sobra e os três controles como ícone puro.
|
|
44
|
+
*
|
|
45
|
+
* Antes era `flex-wrap` puro, e a quebra ficava a cargo do espaço disponível:
|
|
46
|
+
* em 375px saía título e navegação grudados à esquerda com um vão à direita, e
|
|
47
|
+
* os 4 controles da segunda linha disputando largura com os rótulos por
|
|
48
|
+
* extenso — "Mês", "Filtro" e "Novo evento" custam ~210px que a busca não
|
|
49
|
+
* tinha. Wrap resolve transbordo, não hierarquia.
|
|
50
|
+
*/
|
|
51
|
+
export declare const schedulerToolbar: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
52
|
+
export declare const schedulerToolbarSide: import('tailwind-variants').TVReturnType<{
|
|
53
|
+
/**
|
|
54
|
+
* `leading` = título + navegação. Empilhado, ocupa a linha inteira e
|
|
55
|
+
* separa os dois extremos — é o que joga `‹ Hoje ›` pro fim.
|
|
56
|
+
* `trailing` = busca + controles. A busca é quem estica (`flex-1` nela),
|
|
57
|
+
* então aqui basta ocupar a linha.
|
|
58
|
+
*/
|
|
59
|
+
slot: {
|
|
60
|
+
leading: string;
|
|
61
|
+
trailing: string;
|
|
62
|
+
};
|
|
63
|
+
}, undefined, "flex min-w-0 items-center gap-gp-md", {
|
|
64
|
+
/**
|
|
65
|
+
* `leading` = título + navegação. Empilhado, ocupa a linha inteira e
|
|
66
|
+
* separa os dois extremos — é o que joga `‹ Hoje ›` pro fim.
|
|
67
|
+
* `trailing` = busca + controles. A busca é quem estica (`flex-1` nela),
|
|
68
|
+
* então aqui basta ocupar a linha.
|
|
69
|
+
*/
|
|
70
|
+
slot: {
|
|
71
|
+
leading: string;
|
|
72
|
+
trailing: string;
|
|
73
|
+
};
|
|
74
|
+
}, undefined, import('tailwind-variants').TVReturnType<{
|
|
75
|
+
/**
|
|
76
|
+
* `leading` = título + navegação. Empilhado, ocupa a linha inteira e
|
|
77
|
+
* separa os dois extremos — é o que joga `‹ Hoje ›` pro fim.
|
|
78
|
+
* `trailing` = busca + controles. A busca é quem estica (`flex-1` nela),
|
|
79
|
+
* então aqui basta ocupar a linha.
|
|
80
|
+
*/
|
|
81
|
+
slot: {
|
|
82
|
+
leading: string;
|
|
83
|
+
trailing: string;
|
|
84
|
+
};
|
|
85
|
+
}, undefined, "flex min-w-0 items-center gap-gp-md", unknown, unknown, undefined>>;
|
|
86
|
+
/**
|
|
87
|
+
* Título do período ("setembro 2026"). `text-title-sm` e não `heading`: o
|
|
88
|
+
* calendário mora dentro de uma página que já tem `PageHeader` com o H1 — um
|
|
89
|
+
* heading aqui competiria com ele.
|
|
90
|
+
*
|
|
91
|
+
* `first-letter:uppercase` porque o date-fns com locale ptBR devolve o mês em
|
|
92
|
+
* minúscula ("setembro"), e no topo de um bloco isso lê como texto cortado.
|
|
93
|
+
* Capitalizar no CSS e não no JS mantém a string original acessível a quem
|
|
94
|
+
* usa `title` como override.
|
|
95
|
+
*/
|
|
96
|
+
export declare const schedulerTitle: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
97
|
+
/**
|
|
98
|
+
* Três segmentos colados num controle só. Não usa o `ButtonGroup` do DS de
|
|
99
|
+
* propósito: ele resolve o **split button** (2 slots, `Primary` + `Chevron`,
|
|
100
|
+
* com os cantos já decididos em `!rounded-r-none` / `!rounded-l-none`) e não
|
|
101
|
+
* tem como expressar um segmento do MEIO sem canto nenhum. Forçá-lo aqui
|
|
102
|
+
* exigiria brigar com os `!` dele.
|
|
103
|
+
*
|
|
104
|
+
* O que este grupo faz é só a junta: os três filhos continuam sendo `Button`
|
|
105
|
+
* do DS, então cor, foco, altura e estados vêm de lá.
|
|
106
|
+
*
|
|
107
|
+
* `-ml-px` no 2º em diante colapsa a borda dupla entre segmentos vizinhos.
|
|
108
|
+
*/
|
|
109
|
+
export declare const schedulerNavGroup: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
110
|
+
/**
|
|
111
|
+
* Substituiu o segmented de 4 posições. O segmented mostrava as 4 opções de
|
|
112
|
+
* uma vez, o que é bom, mas custava ~230px numa toolbar que agora também tem
|
|
113
|
+
* botão de filtro — em 1280px ele empurrava a ação primária pra segunda linha.
|
|
114
|
+
* O dropdown custa ~110px e diz qual view está ativa no próprio rótulo.
|
|
115
|
+
*/
|
|
116
|
+
export declare const schedulerViewTriggerLabel: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "tabular-nums", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "tabular-nums", unknown, unknown, undefined>>;
|
|
117
|
+
export declare const schedulerViewMenuItem: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "flex items-center justify-between gap-gp-xl", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "flex items-center justify-between gap-gp-xl", unknown, unknown, undefined>>;
|
|
118
|
+
/**
|
|
119
|
+
* Ponto de "tem filtro aplicado" no canto do botão — mesma convenção do
|
|
120
|
+
* `toolbarToolDot` do `TableToolbar`. `border-2 border-bg-canvas` recorta o
|
|
121
|
+
* ponto do botão embaixo, senão ele parece um pixel sujo na borda.
|
|
122
|
+
*/
|
|
123
|
+
export declare const schedulerFilterDot: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
124
|
+
export declare const schedulerSearch: import('tailwind-variants').TVReturnType<{
|
|
125
|
+
/** Mantém expandido mesmo sem foco quando já há termo digitado. */
|
|
126
|
+
expanded: {
|
|
127
|
+
true: string;
|
|
128
|
+
false: string;
|
|
129
|
+
};
|
|
130
|
+
}, undefined, string[], {
|
|
131
|
+
/** Mantém expandido mesmo sem foco quando já há termo digitado. */
|
|
132
|
+
expanded: {
|
|
133
|
+
true: string;
|
|
134
|
+
false: string;
|
|
135
|
+
};
|
|
136
|
+
}, undefined, import('tailwind-variants').TVReturnType<{
|
|
137
|
+
/** Mantém expandido mesmo sem foco quando já há termo digitado. */
|
|
138
|
+
expanded: {
|
|
139
|
+
true: string;
|
|
140
|
+
false: string;
|
|
141
|
+
};
|
|
142
|
+
}, undefined, string[], unknown, unknown, undefined>>;
|
|
143
|
+
export declare const schedulerSearchInput: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
144
|
+
export declare const schedulerFilterRow: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
145
|
+
/**
|
|
146
|
+
* Chip de filtro **aplicado**. Desde que o painel lateral passou a ser o lugar
|
|
147
|
+
* de escolher, esta linha não mostra mais chip vazio de borda tracejada: ela é
|
|
148
|
+
* só o resumo do que está ligado, com o `×` pra desligar sem reabrir o painel
|
|
149
|
+
* — que é o que a L-051 pede (o estado filtrado tem que ser visível e
|
|
150
|
+
* desfazível sem procurar o controle que o produziu).
|
|
151
|
+
*
|
|
152
|
+
* A variante `applied` continua no tv() porque o `false` ainda serve pro caso
|
|
153
|
+
* de um chip renderizado durante a animação de saída.
|
|
154
|
+
*/
|
|
155
|
+
export declare const schedulerFilterChip: import('tailwind-variants').TVReturnType<{
|
|
156
|
+
applied: {
|
|
157
|
+
true: string;
|
|
158
|
+
false: string;
|
|
159
|
+
};
|
|
160
|
+
}, undefined, string[], {
|
|
161
|
+
applied: {
|
|
162
|
+
true: string;
|
|
163
|
+
false: string;
|
|
164
|
+
};
|
|
165
|
+
}, undefined, import('tailwind-variants').TVReturnType<{
|
|
166
|
+
applied: {
|
|
167
|
+
true: string;
|
|
168
|
+
false: string;
|
|
169
|
+
};
|
|
170
|
+
}, undefined, string[], unknown, unknown, undefined>>;
|
|
171
|
+
export declare const schedulerFilterChipName: 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>>;
|
|
172
|
+
export declare const schedulerFilterChipValue: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
173
|
+
export declare const schedulerClearLink: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
174
|
+
/**
|
|
175
|
+
* A área abaixo da toolbar. O painel de filtro é uma **coluna de verdade**, não
|
|
176
|
+
* um overlay: ele empurra a grade em vez de cobri-la.
|
|
177
|
+
*
|
|
178
|
+
* É a diferença que importa aqui. Um `Popover`/`Sheet` por cima obriga a
|
|
179
|
+
* fechar pra ver o efeito do filtro — e filtro é exatamente o controle cujo
|
|
180
|
+
* resultado você quer olhar enquanto mexe. Como coluna, marcar uma caixa e ver
|
|
181
|
+
* a grade reagir acontece no mesmo gesto.
|
|
182
|
+
*
|
|
183
|
+
* O custo é largura: a grade encolhe ~296px. Por isso o painel é fechado por
|
|
184
|
+
* default e some abaixo de `lg` (ver `schedulerFilterAside`).
|
|
185
|
+
*/
|
|
186
|
+
export declare const schedulerBody: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "flex min-h-0 flex-1 gap-gp-2xl", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "flex min-h-0 flex-1 gap-gp-2xl", unknown, unknown, undefined>>;
|
|
187
|
+
export declare const schedulerMain: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "flex min-h-0 min-w-0 flex-1 flex-col", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "flex min-h-0 min-w-0 flex-1 flex-col", unknown, unknown, undefined>>;
|
|
188
|
+
/**
|
|
189
|
+
* `w-[280px] shrink-0` — largura fixa, não fração: o mini-calendário tem 7
|
|
190
|
+
* colunas de largura mínima e uma fração de viewport o quebraria em telas
|
|
191
|
+
* médias.
|
|
192
|
+
*
|
|
193
|
+
* ⚠️ **Não há media query aqui, de propósito.** A primeira versão tinha
|
|
194
|
+
* `hidden lg:flex`, e o `scheduler.tsx` gateava o botão de filtro com um
|
|
195
|
+
* `matchMedia("(min-width: 1024px)")` — o MESMO breakpoint escrito em dois
|
|
196
|
+
* lugares, com dois mecanismos diferentes. Medido no browser: dá pra chegar num
|
|
197
|
+
* estado em que o botão se diz aberto e o painel está `display: none`, ou seja
|
|
198
|
+
* um controle que não faz nada visível.
|
|
199
|
+
*
|
|
200
|
+
* Agora o breakpoint vive **só** no `useMediaQuery` do `scheduler.tsx`, que
|
|
201
|
+
* decide se o painel é montado. Uma fonte de verdade: painel no DOM ⟺ botão
|
|
202
|
+
* diz aberto. Se o hook estiver defasado, os dois estão defasados juntos —
|
|
203
|
+
* consistente, em vez de contraditório.
|
|
204
|
+
*/
|
|
205
|
+
export declare const schedulerFilterAside: import('tailwind-variants').TVReturnType<{
|
|
206
|
+
/**
|
|
207
|
+
* `embedded` = o painel vive DENTRO de outro contêiner que já é a
|
|
208
|
+
* superfície — hoje o `FloatingPanel` do modo drawer (<1024px).
|
|
209
|
+
*
|
|
210
|
+
* Como coluna (`false`, o default) ele É o card: largura própria, borda,
|
|
211
|
+
* radius e fundo. Embutido, os quatro viram defeito — largura fixa deixa
|
|
212
|
+
* uma faixa morta à direita do drawer, e borda+radius+fundo repetem a
|
|
213
|
+
* superfície do painel que já o embrulha (card dentro de card, a mesma
|
|
214
|
+
* classe de erro da L-050).
|
|
215
|
+
*/
|
|
216
|
+
embedded: {
|
|
217
|
+
false: string[];
|
|
218
|
+
true: string;
|
|
219
|
+
};
|
|
220
|
+
}, undefined, string[], {
|
|
221
|
+
/**
|
|
222
|
+
* `embedded` = o painel vive DENTRO de outro contêiner que já é a
|
|
223
|
+
* superfície — hoje o `FloatingPanel` do modo drawer (<1024px).
|
|
224
|
+
*
|
|
225
|
+
* Como coluna (`false`, o default) ele É o card: largura própria, borda,
|
|
226
|
+
* radius e fundo. Embutido, os quatro viram defeito — largura fixa deixa
|
|
227
|
+
* uma faixa morta à direita do drawer, e borda+radius+fundo repetem a
|
|
228
|
+
* superfície do painel que já o embrulha (card dentro de card, a mesma
|
|
229
|
+
* classe de erro da L-050).
|
|
230
|
+
*/
|
|
231
|
+
embedded: {
|
|
232
|
+
false: string[];
|
|
233
|
+
true: string;
|
|
234
|
+
};
|
|
235
|
+
}, undefined, import('tailwind-variants').TVReturnType<{
|
|
236
|
+
/**
|
|
237
|
+
* `embedded` = o painel vive DENTRO de outro contêiner que já é a
|
|
238
|
+
* superfície — hoje o `FloatingPanel` do modo drawer (<1024px).
|
|
239
|
+
*
|
|
240
|
+
* Como coluna (`false`, o default) ele É o card: largura própria, borda,
|
|
241
|
+
* radius e fundo. Embutido, os quatro viram defeito — largura fixa deixa
|
|
242
|
+
* uma faixa morta à direita do drawer, e borda+radius+fundo repetem a
|
|
243
|
+
* superfície do painel que já o embrulha (card dentro de card, a mesma
|
|
244
|
+
* classe de erro da L-050).
|
|
245
|
+
*/
|
|
246
|
+
embedded: {
|
|
247
|
+
false: string[];
|
|
248
|
+
true: string;
|
|
249
|
+
};
|
|
250
|
+
}, undefined, string[], unknown, unknown, undefined>>;
|
|
251
|
+
/**
|
|
252
|
+
* Seção do painel — **inteiriça**, com padding próprio, e a divisória de ponta
|
|
253
|
+
* a ponta entre uma e outra.
|
|
254
|
+
*
|
|
255
|
+
* O painel não tem padding nem gap: quem paga o respiro é a seção. É o que faz
|
|
256
|
+
* a linha divisória chegar até as bordas do card, do jeito que se espera de uma
|
|
257
|
+
* pilha de blocos. Com padding no container e `gap`, a divisória ficaria
|
|
258
|
+
* recuada dos dois lados e leria como sublinhado de um item, não como separação
|
|
259
|
+
* entre blocos.
|
|
260
|
+
*
|
|
261
|
+
* `last:border-b-0` fecha a última: a borda do card já encerra a pilha, e uma
|
|
262
|
+
* divisória imediatamente antes dela vira duas linhas paralelas a 1px.
|
|
263
|
+
*/
|
|
264
|
+
export declare const schedulerAsideSection: import('tailwind-variants').TVReturnType<{
|
|
265
|
+
/** O cabeçalho é mais raso: só uma linha de título + ações. */
|
|
266
|
+
compact: {
|
|
267
|
+
true: string;
|
|
268
|
+
false: string;
|
|
269
|
+
};
|
|
270
|
+
/**
|
|
271
|
+
* Cabeçalho fixo no topo enquanto o resto rola.
|
|
272
|
+
*
|
|
273
|
+
* `bg-bg-surface` é **obrigatório** e não decoração: `sticky` não cria
|
|
274
|
+
* fundo, então sem ele o mini-calendário passaria por baixo do título. E
|
|
275
|
+
* `z-[1]` porque as caixas e o `Checkbox` do Radix criam contexto próprio
|
|
276
|
+
* de empilhamento — sem o z, o conteúdo que rola sobrepõe o cabeçalho.
|
|
277
|
+
*/
|
|
278
|
+
sticky: {
|
|
279
|
+
true: string;
|
|
280
|
+
false: string;
|
|
281
|
+
};
|
|
282
|
+
}, undefined, string[], {
|
|
283
|
+
/** O cabeçalho é mais raso: só uma linha de título + ações. */
|
|
284
|
+
compact: {
|
|
285
|
+
true: string;
|
|
286
|
+
false: string;
|
|
287
|
+
};
|
|
288
|
+
/**
|
|
289
|
+
* Cabeçalho fixo no topo enquanto o resto rola.
|
|
290
|
+
*
|
|
291
|
+
* `bg-bg-surface` é **obrigatório** e não decoração: `sticky` não cria
|
|
292
|
+
* fundo, então sem ele o mini-calendário passaria por baixo do título. E
|
|
293
|
+
* `z-[1]` porque as caixas e o `Checkbox` do Radix criam contexto próprio
|
|
294
|
+
* de empilhamento — sem o z, o conteúdo que rola sobrepõe o cabeçalho.
|
|
295
|
+
*/
|
|
296
|
+
sticky: {
|
|
297
|
+
true: string;
|
|
298
|
+
false: string;
|
|
299
|
+
};
|
|
300
|
+
}, undefined, import('tailwind-variants').TVReturnType<{
|
|
301
|
+
/** O cabeçalho é mais raso: só uma linha de título + ações. */
|
|
302
|
+
compact: {
|
|
303
|
+
true: string;
|
|
304
|
+
false: string;
|
|
305
|
+
};
|
|
306
|
+
/**
|
|
307
|
+
* Cabeçalho fixo no topo enquanto o resto rola.
|
|
308
|
+
*
|
|
309
|
+
* `bg-bg-surface` é **obrigatório** e não decoração: `sticky` não cria
|
|
310
|
+
* fundo, então sem ele o mini-calendário passaria por baixo do título. E
|
|
311
|
+
* `z-[1]` porque as caixas e o `Checkbox` do Radix criam contexto próprio
|
|
312
|
+
* de empilhamento — sem o z, o conteúdo que rola sobrepõe o cabeçalho.
|
|
313
|
+
*/
|
|
314
|
+
sticky: {
|
|
315
|
+
true: string;
|
|
316
|
+
false: string;
|
|
317
|
+
};
|
|
318
|
+
}, undefined, string[], unknown, unknown, undefined>>;
|
|
319
|
+
export declare const schedulerAsideHead: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "flex items-center justify-between gap-gp-md", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "flex items-center justify-between gap-gp-md", unknown, unknown, undefined>>;
|
|
320
|
+
export declare const schedulerAsideTitle: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "text-body-sm font-semibold text-fg-default", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "text-body-sm font-semibold text-fg-default", unknown, unknown, undefined>>;
|
|
321
|
+
export declare const schedulerMiniHead: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "flex items-center justify-between gap-gp-sm", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "flex items-center justify-between gap-gp-sm", unknown, unknown, undefined>>;
|
|
322
|
+
export declare const schedulerMiniTitle: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "min-w-0 truncate text-body-sm font-semibold text-fg-default first-letter:uppercase", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "min-w-0 truncate text-body-sm font-semibold text-fg-default first-letter:uppercase", unknown, unknown, undefined>>;
|
|
323
|
+
export declare const schedulerMiniGrid: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "grid grid-cols-7 gap-gp-2xs", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "grid grid-cols-7 gap-gp-2xs", unknown, unknown, undefined>>;
|
|
324
|
+
export declare const schedulerMiniWeekday: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
325
|
+
/**
|
|
326
|
+
* Célula do mini-calendário. `today` é o anel; `selected` é o preenchido — os
|
|
327
|
+
* dois podem coexistir, e é por isso que são variantes separadas em vez de um
|
|
328
|
+
* único `state`. Quando coincidem, o preenchido vence e o anel some (senão
|
|
329
|
+
* viram dois círculos concêntricos de 24px, ilegíveis).
|
|
330
|
+
*/
|
|
331
|
+
export declare const schedulerMiniDay: import('tailwind-variants').TVReturnType<{
|
|
332
|
+
outside: {
|
|
333
|
+
true: string;
|
|
334
|
+
false: string;
|
|
335
|
+
};
|
|
336
|
+
hasEvents: {
|
|
337
|
+
true: string;
|
|
338
|
+
false: string;
|
|
339
|
+
};
|
|
340
|
+
today: {
|
|
341
|
+
true: string;
|
|
342
|
+
false: string;
|
|
343
|
+
};
|
|
344
|
+
selected: {
|
|
345
|
+
true: string;
|
|
346
|
+
false: string;
|
|
347
|
+
};
|
|
348
|
+
}, undefined, string[], {
|
|
349
|
+
outside: {
|
|
350
|
+
true: string;
|
|
351
|
+
false: string;
|
|
352
|
+
};
|
|
353
|
+
hasEvents: {
|
|
354
|
+
true: string;
|
|
355
|
+
false: string;
|
|
356
|
+
};
|
|
357
|
+
today: {
|
|
358
|
+
true: string;
|
|
359
|
+
false: string;
|
|
360
|
+
};
|
|
361
|
+
selected: {
|
|
362
|
+
true: string;
|
|
363
|
+
false: string;
|
|
364
|
+
};
|
|
365
|
+
}, undefined, import('tailwind-variants').TVReturnType<{
|
|
366
|
+
outside: {
|
|
367
|
+
true: string;
|
|
368
|
+
false: string;
|
|
369
|
+
};
|
|
370
|
+
hasEvents: {
|
|
371
|
+
true: string;
|
|
372
|
+
false: string;
|
|
373
|
+
};
|
|
374
|
+
today: {
|
|
375
|
+
true: string;
|
|
376
|
+
false: string;
|
|
377
|
+
};
|
|
378
|
+
selected: {
|
|
379
|
+
true: string;
|
|
380
|
+
false: string;
|
|
381
|
+
};
|
|
382
|
+
}, undefined, string[], unknown, unknown, undefined>>;
|
|
383
|
+
export declare const schedulerGroup: 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>>;
|
|
384
|
+
/**
|
|
385
|
+
* `-mx-pad-sm px-pad-sm`: o fundo do hover sangra 6px pra fora, mas o TEXTO
|
|
386
|
+
* fica alinhado com o padding da seção. Sem o `-mx`, o rótulo do grupo ficaria
|
|
387
|
+
* 6px mais dentro que o título "Filtros" do cabeçalho — desalinho visível numa
|
|
388
|
+
* coluna estreita.
|
|
389
|
+
*/
|
|
390
|
+
export declare const schedulerGroupHead: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
391
|
+
export declare const schedulerGroupChevron: import('tailwind-variants').TVReturnType<{
|
|
392
|
+
open: {
|
|
393
|
+
true: string;
|
|
394
|
+
false: string;
|
|
395
|
+
};
|
|
396
|
+
}, undefined, "transition-transform duration-150", {
|
|
397
|
+
open: {
|
|
398
|
+
true: string;
|
|
399
|
+
false: string;
|
|
400
|
+
};
|
|
401
|
+
}, undefined, import('tailwind-variants').TVReturnType<{
|
|
402
|
+
open: {
|
|
403
|
+
true: string;
|
|
404
|
+
false: string;
|
|
405
|
+
};
|
|
406
|
+
}, undefined, "transition-transform duration-150", unknown, unknown, undefined>>;
|
|
407
|
+
/**
|
|
408
|
+
* Linha de opção: `<label>` nativo embrulhando o `Checkbox`, **não**
|
|
409
|
+
* `<button>`. O label propaga o clique pro checkbox real, mantém a semântica
|
|
410
|
+
* de checkbox no leitor de tela e faz a linha inteira ser alvo de clique —
|
|
411
|
+
* é a mesma lição do `CardCheckbox` (L-025).
|
|
412
|
+
*/
|
|
413
|
+
export declare const schedulerOption: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
414
|
+
export declare const schedulerOptionLabel: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "min-w-0 flex-1 truncate", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "min-w-0 flex-1 truncate", unknown, unknown, undefined>>;
|
|
415
|
+
export declare const schedulerOptionCount: 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>>;
|
|
416
|
+
/**
|
|
417
|
+
* Cor da caixa quando marcada. Sobrescreve o `data-[state=checked]:bg-bg-brand`
|
|
418
|
+
* do `Checkbox` via `className` — `tailwind-merge` resolve o par (mesmo
|
|
419
|
+
* modificador, mesmo grupo de utilitário) mantendo o último.
|
|
420
|
+
*
|
|
421
|
+
* O `[&_svg]` é necessário porque o tique mora no `Indicator`, que é filho e
|
|
422
|
+
* não alcançável por className na raiz.
|
|
423
|
+
*/
|
|
424
|
+
export declare const schedulerOptionBox: import('tailwind-variants').TVReturnType<{
|
|
425
|
+
color: {
|
|
426
|
+
brand: string;
|
|
427
|
+
info: string;
|
|
428
|
+
success: string;
|
|
429
|
+
warning: string;
|
|
430
|
+
danger: string;
|
|
431
|
+
neutral: string;
|
|
432
|
+
};
|
|
433
|
+
}, undefined, "shrink-0", {
|
|
434
|
+
color: {
|
|
435
|
+
brand: string;
|
|
436
|
+
info: string;
|
|
437
|
+
success: string;
|
|
438
|
+
warning: string;
|
|
439
|
+
danger: string;
|
|
440
|
+
neutral: string;
|
|
441
|
+
};
|
|
442
|
+
}, undefined, import('tailwind-variants').TVReturnType<{
|
|
443
|
+
color: {
|
|
444
|
+
brand: string;
|
|
445
|
+
info: string;
|
|
446
|
+
success: string;
|
|
447
|
+
warning: string;
|
|
448
|
+
danger: string;
|
|
449
|
+
neutral: string;
|
|
450
|
+
};
|
|
451
|
+
}, undefined, "shrink-0", unknown, unknown, undefined>>;
|
|
452
|
+
/**
|
|
453
|
+
* `overflow-hidden` + `rounded` no wrapper, e as células desenham só borda
|
|
454
|
+
* direita/inferior: é o que produz a régua interna sem borda dupla e sem
|
|
455
|
+
* precisar de `:last-child` em 42 células.
|
|
456
|
+
*/
|
|
457
|
+
export declare const schedulerMonthFrame: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
458
|
+
export declare const schedulerWeekdayRow: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
459
|
+
export declare const schedulerWeekdayCell: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
460
|
+
export declare const schedulerMonthGrid: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "grid min-h-0 flex-1 grid-cols-7 grid-rows-6", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "grid min-h-0 flex-1 grid-cols-7 grid-rows-6", unknown, unknown, undefined>>;
|
|
461
|
+
/**
|
|
462
|
+
* `[&:nth-child(7n)]:border-r-0` zera a borda direita da última coluna sem
|
|
463
|
+
* precisar passar índice pro componente da célula.
|
|
464
|
+
*/
|
|
465
|
+
export declare const schedulerMonthCell: import('tailwind-variants').TVReturnType<{
|
|
466
|
+
/** Dia de mês vizinho — recuado, não escondido: a grade é sempre 6×7. */
|
|
467
|
+
outside: {
|
|
468
|
+
true: string;
|
|
469
|
+
false: string;
|
|
470
|
+
};
|
|
471
|
+
/** Última linha da grade não desenha borda inferior (o frame já fecha). */
|
|
472
|
+
lastRow: {
|
|
473
|
+
true: string;
|
|
474
|
+
false: string;
|
|
475
|
+
};
|
|
476
|
+
interactive: {
|
|
477
|
+
true: string;
|
|
478
|
+
false: string;
|
|
479
|
+
};
|
|
480
|
+
}, undefined, string[], {
|
|
481
|
+
/** Dia de mês vizinho — recuado, não escondido: a grade é sempre 6×7. */
|
|
482
|
+
outside: {
|
|
483
|
+
true: string;
|
|
484
|
+
false: string;
|
|
485
|
+
};
|
|
486
|
+
/** Última linha da grade não desenha borda inferior (o frame já fecha). */
|
|
487
|
+
lastRow: {
|
|
488
|
+
true: string;
|
|
489
|
+
false: string;
|
|
490
|
+
};
|
|
491
|
+
interactive: {
|
|
492
|
+
true: string;
|
|
493
|
+
false: string;
|
|
494
|
+
};
|
|
495
|
+
}, undefined, import('tailwind-variants').TVReturnType<{
|
|
496
|
+
/** Dia de mês vizinho — recuado, não escondido: a grade é sempre 6×7. */
|
|
497
|
+
outside: {
|
|
498
|
+
true: string;
|
|
499
|
+
false: string;
|
|
500
|
+
};
|
|
501
|
+
/** Última linha da grade não desenha borda inferior (o frame já fecha). */
|
|
502
|
+
lastRow: {
|
|
503
|
+
true: string;
|
|
504
|
+
false: string;
|
|
505
|
+
};
|
|
506
|
+
interactive: {
|
|
507
|
+
true: string;
|
|
508
|
+
false: string;
|
|
509
|
+
};
|
|
510
|
+
}, undefined, string[], unknown, unknown, undefined>>;
|
|
511
|
+
export declare const schedulerDayHead: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "flex shrink-0 items-center justify-between gap-gp-sm", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "flex shrink-0 items-center justify-between gap-gp-sm", unknown, unknown, undefined>>;
|
|
512
|
+
/**
|
|
513
|
+
* Número do dia. `tabular-nums` pra 1 e 11 ocuparem a mesma largura — sem
|
|
514
|
+
* isso a coluna de números "dança" entre as linhas.
|
|
515
|
+
*/
|
|
516
|
+
export declare const schedulerDayNumber: import('tailwind-variants').TVReturnType<{
|
|
517
|
+
today: {
|
|
518
|
+
true: string;
|
|
519
|
+
false: string;
|
|
520
|
+
};
|
|
521
|
+
outside: {
|
|
522
|
+
true: string;
|
|
523
|
+
false: string;
|
|
524
|
+
};
|
|
525
|
+
}, undefined, string[], {
|
|
526
|
+
today: {
|
|
527
|
+
true: string;
|
|
528
|
+
false: string;
|
|
529
|
+
};
|
|
530
|
+
outside: {
|
|
531
|
+
true: string;
|
|
532
|
+
false: string;
|
|
533
|
+
};
|
|
534
|
+
}, undefined, import('tailwind-variants').TVReturnType<{
|
|
535
|
+
today: {
|
|
536
|
+
true: string;
|
|
537
|
+
false: string;
|
|
538
|
+
};
|
|
539
|
+
outside: {
|
|
540
|
+
true: string;
|
|
541
|
+
false: string;
|
|
542
|
+
};
|
|
543
|
+
}, undefined, string[], unknown, unknown, undefined>>;
|
|
544
|
+
/**
|
|
545
|
+
* O `+` de criar evento, revelado no hover ou no foco da célula. Fica em
|
|
546
|
+
* `opacity-0` e não em `hidden` pra manter o alvo de foco no fluxo do
|
|
547
|
+
* teclado — `hidden` o tiraria da ordem de tabulação (spec §6.2).
|
|
548
|
+
*/
|
|
549
|
+
export declare const schedulerSlotAdd: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
550
|
+
export declare const schedulerCellEvents: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "flex min-h-0 flex-col gap-gp-2xs overflow-hidden", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "flex min-h-0 flex-col gap-gp-2xs overflow-hidden", unknown, unknown, undefined>>;
|
|
551
|
+
export declare const schedulerOverflowButton: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
552
|
+
export declare const schedulerOverflowPanel: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "flex max-h-[320px] min-w-[240px] flex-col gap-gp-2xs overflow-y-auto p-sp-xs", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "flex max-h-[320px] min-w-[240px] flex-col gap-gp-2xs overflow-y-auto p-sp-xs", unknown, unknown, undefined>>;
|
|
553
|
+
export declare const schedulerOverflowPanelTitle: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "px-pad-md pb-pad-sm text-caption-sm font-semibold text-fg-muted first-letter:uppercase", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "px-pad-md pb-pad-sm text-caption-sm font-semibold text-fg-muted first-letter:uppercase", unknown, unknown, undefined>>;
|
|
554
|
+
/**
|
|
555
|
+
* ⚠️ **`HOUR_HEIGHT_PX` em `views/time-grid.tsx` espelha `h-comp-3xl` (48px).**
|
|
556
|
+
* A altura da hora precisa existir como número em JS porque
|
|
557
|
+
* `minutesToOffset()` posiciona os eventos em px. Se este valor mudar aqui,
|
|
558
|
+
* mude lá — é o acoplamento inevitável de posicionamento absoluto sobre grade
|
|
559
|
+
* tokenizada, e está declarado dos dois lados.
|
|
560
|
+
*/
|
|
561
|
+
export declare const schedulerTimeFrame: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
562
|
+
/** Cabeçalho de dias: o vão da esquerda alinha com o gutter de horas. */
|
|
563
|
+
export declare const schedulerTimeHead: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "flex shrink-0 border-b border-border-default bg-bg-subtle dark:bg-bg-canvas", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "flex shrink-0 border-b border-border-default bg-bg-subtle dark:bg-bg-canvas", unknown, unknown, undefined>>;
|
|
564
|
+
/**
|
|
565
|
+
* Largura do gutter de horas. `w-comp-4xl` (56px) cabe "12:00 AM" no formato
|
|
566
|
+
* 12h — o 24h caberia em menos, mas variar a largura por formato faria a grade
|
|
567
|
+
* "pular" ao trocar de idioma.
|
|
568
|
+
*/
|
|
569
|
+
export declare const schedulerTimeGutter: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "w-comp-4xl shrink-0", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "w-comp-4xl shrink-0", unknown, unknown, undefined>>;
|
|
570
|
+
export declare const schedulerTimeHeadDay: import('tailwind-variants').TVReturnType<{
|
|
571
|
+
/** Sábado/domingo recuados — mesma leitura da grade do mês. */
|
|
572
|
+
weekend: {
|
|
573
|
+
true: string;
|
|
574
|
+
false: string;
|
|
575
|
+
};
|
|
576
|
+
}, undefined, string[], {
|
|
577
|
+
/** Sábado/domingo recuados — mesma leitura da grade do mês. */
|
|
578
|
+
weekend: {
|
|
579
|
+
true: string;
|
|
580
|
+
false: string;
|
|
581
|
+
};
|
|
582
|
+
}, undefined, import('tailwind-variants').TVReturnType<{
|
|
583
|
+
/** Sábado/domingo recuados — mesma leitura da grade do mês. */
|
|
584
|
+
weekend: {
|
|
585
|
+
true: string;
|
|
586
|
+
false: string;
|
|
587
|
+
};
|
|
588
|
+
}, undefined, string[], unknown, unknown, undefined>>;
|
|
589
|
+
export declare const schedulerTimeHeadWeekday: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "text-caption-md font-medium uppercase text-fg-muted", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "text-caption-md font-medium uppercase text-fg-muted", unknown, unknown, undefined>>;
|
|
590
|
+
/** Banda de dia inteiro, entre o cabeçalho e a grade rolável. */
|
|
591
|
+
export declare const schedulerAllDayRow: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "flex shrink-0 border-b border-border-default", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "flex shrink-0 border-b border-border-default", unknown, unknown, undefined>>;
|
|
592
|
+
export declare const schedulerAllDayLabel: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
593
|
+
export declare const schedulerAllDayCell: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
594
|
+
/**
|
|
595
|
+
* O corpo rolável. `scrollbar-thin` é a barra do DS; `overscroll-contain` evita
|
|
596
|
+
* que rolar até o fim da grade continue rolando a página atrás.
|
|
597
|
+
*/
|
|
598
|
+
export declare const schedulerTimeBody: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "min-h-0 flex-1 overflow-y-auto overscroll-contain scrollbar-thin", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "min-h-0 flex-1 overflow-y-auto overscroll-contain scrollbar-thin", unknown, unknown, undefined>>;
|
|
599
|
+
export declare const schedulerTimeCanvas: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "relative flex", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "relative flex", unknown, unknown, undefined>>;
|
|
600
|
+
/**
|
|
601
|
+
* Rótulo da hora. Fica no TOPO da própria faixa, deslocado meia-linha pra cima
|
|
602
|
+
* (`-translate-y-1/2`), que é a convenção de calendário: o rótulo marca a linha,
|
|
603
|
+
* não a faixa. Sem o deslocamento, "09:00" aparece centralizado no bloco das 9h
|
|
604
|
+
* e o usuário lê a linha errada.
|
|
605
|
+
*
|
|
606
|
+
* O primeiro rótulo é ocultado (`first:opacity-0`) porque metade dele sairia
|
|
607
|
+
* acima da área visível.
|
|
608
|
+
*/
|
|
609
|
+
export declare const schedulerHourLabel: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
610
|
+
export declare const schedulerHourLabelText: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "-translate-y-1/2", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "-translate-y-1/2", unknown, unknown, undefined>>;
|
|
611
|
+
export declare const schedulerTimeColumn: import('tailwind-variants').TVReturnType<{
|
|
612
|
+
weekend: {
|
|
613
|
+
true: string;
|
|
614
|
+
false: string;
|
|
615
|
+
};
|
|
616
|
+
}, undefined, "relative min-w-0 flex-1 border-l border-border-subtle", {
|
|
617
|
+
weekend: {
|
|
618
|
+
true: string;
|
|
619
|
+
false: string;
|
|
620
|
+
};
|
|
621
|
+
}, undefined, import('tailwind-variants').TVReturnType<{
|
|
622
|
+
weekend: {
|
|
623
|
+
true: string;
|
|
624
|
+
false: string;
|
|
625
|
+
};
|
|
626
|
+
}, undefined, "relative min-w-0 flex-1 border-l border-border-subtle", unknown, unknown, undefined>>;
|
|
627
|
+
/**
|
|
628
|
+
* Uma faixa de hora dentro da coluna. É `button` porque é alvo de clique
|
|
629
|
+
* (criar evento naquela hora) — um `div` com `onClick` não é alcançável por
|
|
630
|
+
* teclado nem anunciado como acionável.
|
|
631
|
+
*/
|
|
632
|
+
export declare const schedulerHourSlot: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
633
|
+
/** Linha do "agora". `pointer-events-none` pra não roubar clique da faixa. */
|
|
634
|
+
export declare const schedulerNowLine: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "pointer-events-none absolute left-0 right-0 z-[2] flex items-center", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "pointer-events-none absolute left-0 right-0 z-[2] flex items-center", unknown, unknown, undefined>>;
|
|
635
|
+
export declare const schedulerNowDot: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "-ml-[4px] size-[8px] shrink-0 rounded-radius-full bg-bg-brand", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "-ml-[4px] size-[8px] shrink-0 rounded-radius-full bg-bg-brand", unknown, unknown, undefined>>;
|
|
636
|
+
export declare const schedulerNowStroke: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "h-px flex-1 bg-bg-brand", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "h-px flex-1 bg-bg-brand", unknown, unknown, undefined>>;
|
|
637
|
+
/** Rótulo "agora" no gutter, alinhado com a linha. */
|
|
638
|
+
export declare const schedulerNowLabel: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
639
|
+
export declare const schedulerListFrame: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
640
|
+
export declare const schedulerListDay: 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>>;
|
|
641
|
+
/**
|
|
642
|
+
* Cabeçalho do dia. `sticky` com fundo opaco: numa agenda longa, saber "que dia
|
|
643
|
+
* é este que estou lendo" é justamente o que se perde ao rolar.
|
|
644
|
+
*/
|
|
645
|
+
export declare const schedulerListDayHead: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
646
|
+
export declare const schedulerListDayNumber: import('tailwind-variants').TVReturnType<{
|
|
647
|
+
today: {
|
|
648
|
+
true: string;
|
|
649
|
+
false: string;
|
|
650
|
+
};
|
|
651
|
+
}, undefined, "text-title-sm font-semibold tabular-nums", {
|
|
652
|
+
today: {
|
|
653
|
+
true: string;
|
|
654
|
+
false: string;
|
|
655
|
+
};
|
|
656
|
+
}, undefined, import('tailwind-variants').TVReturnType<{
|
|
657
|
+
today: {
|
|
658
|
+
true: string;
|
|
659
|
+
false: string;
|
|
660
|
+
};
|
|
661
|
+
}, undefined, "text-title-sm font-semibold tabular-nums", unknown, unknown, undefined>>;
|
|
662
|
+
export declare const schedulerListDayName: 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>>;
|
|
663
|
+
export declare const schedulerListEvents: 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>>;
|
|
664
|
+
/**
|
|
665
|
+
* ⚠️ **A cor NUNCA vai no texto.** Medido em WCAG antes de decidir (spec
|
|
666
|
+
* §2.1): `text-fg-{cor}` sobre a pílula tingida dá 1.72–4.49 no claro e
|
|
667
|
+
* 2.97–4.31 no escuro — nenhuma das 6 famílias passa AA, e `warning` chega a
|
|
668
|
+
* 1.72:1. O texto é sempre `fg-default` (17.46–18.42 / 7.45–10.95, AAA nos
|
|
669
|
+
* dois modos) e a cor mora no **tint de fundo, na borda e no dot/barra de
|
|
670
|
+
* acento**. Hierarquia dentro do pill se faz por peso e tamanho, não por cor.
|
|
671
|
+
*
|
|
672
|
+
* Corolário de acessibilidade: cor é reforço, nunca o único portador da
|
|
673
|
+
* informação — o título sempre diz o que o evento é.
|
|
674
|
+
*/
|
|
675
|
+
export declare const schedulerEvent: import('tailwind-variants').TVReturnType<{
|
|
676
|
+
color: {
|
|
677
|
+
brand: string;
|
|
678
|
+
info: string;
|
|
679
|
+
success: string;
|
|
680
|
+
warning: string;
|
|
681
|
+
danger: string;
|
|
682
|
+
neutral: string;
|
|
683
|
+
};
|
|
684
|
+
variant: {
|
|
685
|
+
/** Mês: linha de 20px, uma só, sem quebra. */
|
|
686
|
+
pill: string;
|
|
687
|
+
/** Week/day: bloco absoluto que ocupa a duração. */
|
|
688
|
+
block: string;
|
|
689
|
+
/** List/agenda: linha larga com descrição. */
|
|
690
|
+
row: string;
|
|
691
|
+
};
|
|
692
|
+
/** Continuação de evento multi-dia: perde o canto do lado truncado. */
|
|
693
|
+
truncateStart: {
|
|
694
|
+
true: string;
|
|
695
|
+
false: string;
|
|
696
|
+
};
|
|
697
|
+
truncateEnd: {
|
|
698
|
+
true: string;
|
|
699
|
+
false: string;
|
|
700
|
+
};
|
|
701
|
+
/**
|
|
702
|
+
* Enquanto arrasta: sombra alta pra o bloco "sair da superfície", z acima
|
|
703
|
+
* dos vizinhos, e `cursor-grabbing`.
|
|
704
|
+
*
|
|
705
|
+
* ⚠️ **Sem `transition` neste estado.** O `transform` do dnd-kit é atualizado
|
|
706
|
+
* a cada movimento do ponteiro; uma transição em cima dele faz o bloco
|
|
707
|
+
* perseguir o cursor com atraso — o gesto fica elástico e impreciso. A
|
|
708
|
+
* transição vive no estado NÃO-arrastando (`movable`), que é onde ela serve:
|
|
709
|
+
* o assentamento depois do soltar.
|
|
710
|
+
*/
|
|
711
|
+
dragging: {
|
|
712
|
+
true: string;
|
|
713
|
+
false: string;
|
|
714
|
+
};
|
|
715
|
+
/** Arrastável e em repouso: mão aberta + transição de assentamento. */
|
|
716
|
+
movable: {
|
|
717
|
+
true: string;
|
|
718
|
+
false: string;
|
|
719
|
+
};
|
|
720
|
+
disabled: {
|
|
721
|
+
true: string;
|
|
722
|
+
false: string;
|
|
723
|
+
};
|
|
724
|
+
}, undefined, string[], {
|
|
725
|
+
color: {
|
|
726
|
+
brand: string;
|
|
727
|
+
info: string;
|
|
728
|
+
success: string;
|
|
729
|
+
warning: string;
|
|
730
|
+
danger: string;
|
|
731
|
+
neutral: string;
|
|
732
|
+
};
|
|
733
|
+
variant: {
|
|
734
|
+
/** Mês: linha de 20px, uma só, sem quebra. */
|
|
735
|
+
pill: string;
|
|
736
|
+
/** Week/day: bloco absoluto que ocupa a duração. */
|
|
737
|
+
block: string;
|
|
738
|
+
/** List/agenda: linha larga com descrição. */
|
|
739
|
+
row: string;
|
|
740
|
+
};
|
|
741
|
+
/** Continuação de evento multi-dia: perde o canto do lado truncado. */
|
|
742
|
+
truncateStart: {
|
|
743
|
+
true: string;
|
|
744
|
+
false: string;
|
|
745
|
+
};
|
|
746
|
+
truncateEnd: {
|
|
747
|
+
true: string;
|
|
748
|
+
false: string;
|
|
749
|
+
};
|
|
750
|
+
/**
|
|
751
|
+
* Enquanto arrasta: sombra alta pra o bloco "sair da superfície", z acima
|
|
752
|
+
* dos vizinhos, e `cursor-grabbing`.
|
|
753
|
+
*
|
|
754
|
+
* ⚠️ **Sem `transition` neste estado.** O `transform` do dnd-kit é atualizado
|
|
755
|
+
* a cada movimento do ponteiro; uma transição em cima dele faz o bloco
|
|
756
|
+
* perseguir o cursor com atraso — o gesto fica elástico e impreciso. A
|
|
757
|
+
* transição vive no estado NÃO-arrastando (`movable`), que é onde ela serve:
|
|
758
|
+
* o assentamento depois do soltar.
|
|
759
|
+
*/
|
|
760
|
+
dragging: {
|
|
761
|
+
true: string;
|
|
762
|
+
false: string;
|
|
763
|
+
};
|
|
764
|
+
/** Arrastável e em repouso: mão aberta + transição de assentamento. */
|
|
765
|
+
movable: {
|
|
766
|
+
true: string;
|
|
767
|
+
false: string;
|
|
768
|
+
};
|
|
769
|
+
disabled: {
|
|
770
|
+
true: string;
|
|
771
|
+
false: string;
|
|
772
|
+
};
|
|
773
|
+
}, undefined, import('tailwind-variants').TVReturnType<{
|
|
774
|
+
color: {
|
|
775
|
+
brand: string;
|
|
776
|
+
info: string;
|
|
777
|
+
success: string;
|
|
778
|
+
warning: string;
|
|
779
|
+
danger: string;
|
|
780
|
+
neutral: string;
|
|
781
|
+
};
|
|
782
|
+
variant: {
|
|
783
|
+
/** Mês: linha de 20px, uma só, sem quebra. */
|
|
784
|
+
pill: string;
|
|
785
|
+
/** Week/day: bloco absoluto que ocupa a duração. */
|
|
786
|
+
block: string;
|
|
787
|
+
/** List/agenda: linha larga com descrição. */
|
|
788
|
+
row: string;
|
|
789
|
+
};
|
|
790
|
+
/** Continuação de evento multi-dia: perde o canto do lado truncado. */
|
|
791
|
+
truncateStart: {
|
|
792
|
+
true: string;
|
|
793
|
+
false: string;
|
|
794
|
+
};
|
|
795
|
+
truncateEnd: {
|
|
796
|
+
true: string;
|
|
797
|
+
false: string;
|
|
798
|
+
};
|
|
799
|
+
/**
|
|
800
|
+
* Enquanto arrasta: sombra alta pra o bloco "sair da superfície", z acima
|
|
801
|
+
* dos vizinhos, e `cursor-grabbing`.
|
|
802
|
+
*
|
|
803
|
+
* ⚠️ **Sem `transition` neste estado.** O `transform` do dnd-kit é atualizado
|
|
804
|
+
* a cada movimento do ponteiro; uma transição em cima dele faz o bloco
|
|
805
|
+
* perseguir o cursor com atraso — o gesto fica elástico e impreciso. A
|
|
806
|
+
* transição vive no estado NÃO-arrastando (`movable`), que é onde ela serve:
|
|
807
|
+
* o assentamento depois do soltar.
|
|
808
|
+
*/
|
|
809
|
+
dragging: {
|
|
810
|
+
true: string;
|
|
811
|
+
false: string;
|
|
812
|
+
};
|
|
813
|
+
/** Arrastável e em repouso: mão aberta + transição de assentamento. */
|
|
814
|
+
movable: {
|
|
815
|
+
true: string;
|
|
816
|
+
false: string;
|
|
817
|
+
};
|
|
818
|
+
disabled: {
|
|
819
|
+
true: string;
|
|
820
|
+
false: string;
|
|
821
|
+
};
|
|
822
|
+
}, undefined, string[], unknown, unknown, undefined>>;
|
|
823
|
+
/**
|
|
824
|
+
* Alça de resize — 6px na borda do bloco, revelada no hover/foco.
|
|
825
|
+
*
|
|
826
|
+
* `h-[6px]` e não um token: é área de AGARRE, não espaçamento. Não existe token
|
|
827
|
+
* de "alvo de arraste" no DS, e reusar `sp-2xs` (2px) aqui seria emprestar um
|
|
828
|
+
* nome de espaçamento pra dizer outra coisa — a L-060 avisa exatamente sobre
|
|
829
|
+
* isso. 6px é o mesmo threshold do sensor, então o alvo nunca é menor que o
|
|
830
|
+
* gesto que o ativa.
|
|
831
|
+
*
|
|
832
|
+
* `absolute inset-x-0` cobre a largura toda do bloco: alça estreita no meio
|
|
833
|
+
* seria um alvo que o usuário precisa procurar.
|
|
834
|
+
*/
|
|
835
|
+
export declare const schedulerResizeHandle: import('tailwind-variants').TVReturnType<{
|
|
836
|
+
edge: {
|
|
837
|
+
start: string;
|
|
838
|
+
end: string;
|
|
839
|
+
};
|
|
840
|
+
}, undefined, string[], {
|
|
841
|
+
edge: {
|
|
842
|
+
start: string;
|
|
843
|
+
end: string;
|
|
844
|
+
};
|
|
845
|
+
}, undefined, import('tailwind-variants').TVReturnType<{
|
|
846
|
+
edge: {
|
|
847
|
+
start: string;
|
|
848
|
+
end: string;
|
|
849
|
+
};
|
|
850
|
+
}, undefined, string[], unknown, unknown, undefined>>;
|
|
851
|
+
/**
|
|
852
|
+
* Célula/coluna sob o cursor durante o arraste. Fundo de marca sutil + borda
|
|
853
|
+
* interna — é o "vai cair aqui" que o gesto precisa pra não ser adivinhação.
|
|
854
|
+
*
|
|
855
|
+
* `inset` em vez de `ring`: a célula do mês já tem borda de grade, e um ring por
|
|
856
|
+
* fora vazaria pra célula vizinha.
|
|
857
|
+
*/
|
|
858
|
+
export declare const schedulerDropTarget: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "bg-bg-brand-subtle shadow-[inset_0_0_0_2px_var(--color-border-brand)]", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "bg-bg-brand-subtle shadow-[inset_0_0_0_2px_var(--color-border-brand)]", unknown, unknown, undefined>>;
|
|
859
|
+
/** Dot/barra de acento — é aqui que a cor da categoria realmente aparece. */
|
|
860
|
+
export declare const schedulerEventDot: import('tailwind-variants').TVReturnType<{
|
|
861
|
+
color: {
|
|
862
|
+
brand: string;
|
|
863
|
+
info: string;
|
|
864
|
+
success: string;
|
|
865
|
+
warning: string;
|
|
866
|
+
danger: string;
|
|
867
|
+
neutral: string;
|
|
868
|
+
};
|
|
869
|
+
size: {
|
|
870
|
+
sm: string;
|
|
871
|
+
md: string;
|
|
872
|
+
};
|
|
873
|
+
}, undefined, "shrink-0 rounded-radius-full", {
|
|
874
|
+
color: {
|
|
875
|
+
brand: string;
|
|
876
|
+
info: string;
|
|
877
|
+
success: string;
|
|
878
|
+
warning: string;
|
|
879
|
+
danger: string;
|
|
880
|
+
neutral: string;
|
|
881
|
+
};
|
|
882
|
+
size: {
|
|
883
|
+
sm: string;
|
|
884
|
+
md: string;
|
|
885
|
+
};
|
|
886
|
+
}, undefined, import('tailwind-variants').TVReturnType<{
|
|
887
|
+
color: {
|
|
888
|
+
brand: string;
|
|
889
|
+
info: string;
|
|
890
|
+
success: string;
|
|
891
|
+
warning: string;
|
|
892
|
+
danger: string;
|
|
893
|
+
neutral: string;
|
|
894
|
+
};
|
|
895
|
+
size: {
|
|
896
|
+
sm: string;
|
|
897
|
+
md: string;
|
|
898
|
+
};
|
|
899
|
+
}, undefined, "shrink-0 rounded-radius-full", unknown, unknown, undefined>>;
|
|
900
|
+
export declare const schedulerEventTitle: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "min-w-0 flex-1 truncate font-medium text-fg-default", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "min-w-0 flex-1 truncate font-medium text-fg-default", unknown, unknown, undefined>>;
|
|
901
|
+
export declare const schedulerEventTime: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "shrink-0 tabular-nums text-fg-muted", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "shrink-0 tabular-nums text-fg-muted", unknown, unknown, undefined>>;
|
|
902
|
+
export declare const schedulerEventDescription: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "min-w-0 truncate text-caption-sm text-fg-muted", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "min-w-0 truncate text-caption-sm text-fg-muted", unknown, unknown, undefined>>;
|
|
903
|
+
/**
|
|
904
|
+
* Existe de propósito e é temporário: `week`, `day` e `list` chegam nas
|
|
905
|
+
* fatias seguintes. Mostrar um aviso honesto é melhor do que esconder a
|
|
906
|
+
* opção no segmented (o usuário não descobriria que a view vai existir) ou
|
|
907
|
+
* do que renderizar uma grade vazia que parece defeito.
|
|
908
|
+
*/
|
|
909
|
+
export declare const schedulerPlaceholder: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
|
|
910
|
+
export type SchedulerEventVariants = VariantProps<typeof schedulerEvent>;
|
|
911
|
+
//# sourceMappingURL=scheduler.styles.d.ts.map
|