rl-core-front 0.15.5 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/_services/api/schema.d.ts +267 -4
- package/src/_services/images/index.ts +81 -0
- package/src/_utils/upload-url.ts +27 -0
- package/src/components/index.ts +1 -0
- package/src/components/job-dock.tsx +118 -0
- package/src/components/ui/data-table.tsx +600 -250
- package/src/components/ui/image-upload.tsx +329 -0
- package/src/components/ui/index.ts +1 -0
- package/src/components/ui/table.tsx +30 -1
- package/src/components/user-avatar.tsx +7 -13
- package/src/contexts/index.ts +2 -0
- package/src/contexts/jobs-context.tsx +146 -0
- package/src/contexts/jobs-store.ts +391 -0
- package/src/hooks/use-column-visibility.ts +6 -1
- package/src/hooks/use-image-upload.ts +169 -0
- package/src/hooks/use-table-view.ts +54 -0
- package/src/i18n/messages/en.ts +20 -0
- package/src/i18n/messages/pt.ts +20 -0
- package/src/index.ts +31 -0
- package/src/styles/core.css +31 -0
package/src/i18n/messages/pt.ts
CHANGED
|
@@ -93,6 +93,21 @@ export const pt = {
|
|
|
93
93
|
running: "Processando…",
|
|
94
94
|
completed: "Processamento concluído",
|
|
95
95
|
failed: "Não foi possível concluir o processamento",
|
|
96
|
+
dockRunning: "{count} em andamento",
|
|
97
|
+
dockFailed: "Algo não deu certo",
|
|
98
|
+
},
|
|
99
|
+
image: {
|
|
100
|
+
empty: "Arraste uma imagem, cole, ou",
|
|
101
|
+
choose: "escolha um arquivo",
|
|
102
|
+
urlLabel: "Ou cole o endereço de uma imagem",
|
|
103
|
+
urlAction: "Buscar",
|
|
104
|
+
remove: "Remover imagem",
|
|
105
|
+
replace: "Trocar imagem",
|
|
106
|
+
sending: "Enviando…",
|
|
107
|
+
tooLarge: "A imagem passa do limite de {size}MB",
|
|
108
|
+
invalidType: "Formato inválido — use JPEG, PNG ou WebP",
|
|
109
|
+
failed: "Não foi possível enviar a imagem",
|
|
110
|
+
hint: "A imagem é convertida para {format} em até {width}px.",
|
|
96
111
|
},
|
|
97
112
|
queues: {
|
|
98
113
|
title: "Filas",
|
|
@@ -167,9 +182,13 @@ export const pt = {
|
|
|
167
182
|
nextPage: "Próxima página",
|
|
168
183
|
empty: "Nenhum registro",
|
|
169
184
|
emptyFiltered: "Nenhum registro para este filtro",
|
|
185
|
+
view: "Formato da listagem",
|
|
186
|
+
viewList: "Lista",
|
|
187
|
+
viewGrid: "Cartões",
|
|
170
188
|
reorder: "Arraste para reordenar",
|
|
171
189
|
reorderSorted:
|
|
172
190
|
"Limpe a ordenação por coluna para arrastar as linhas",
|
|
191
|
+
reorderGrouped: "Não dá para reordenar com a lista dividida em seções",
|
|
173
192
|
},
|
|
174
193
|
filters: {
|
|
175
194
|
button: "Filtros",
|
|
@@ -177,6 +196,7 @@ export const pt = {
|
|
|
177
196
|
hint: "Preencha só os campos que quiser usar. Tudo é combinado com E.",
|
|
178
197
|
apply: "Aplicar",
|
|
179
198
|
clear: "Limpar",
|
|
199
|
+
close: "Fechar",
|
|
180
200
|
empty: "Esta listagem ainda não tem filtros.",
|
|
181
201
|
noOptions: "Nenhuma opção disponível",
|
|
182
202
|
all: "Todos",
|
package/src/index.ts
CHANGED
|
@@ -87,6 +87,8 @@ export type { UseFilterSchemaResult } from "#core/hooks/use-filter-schema";
|
|
|
87
87
|
export { useFilterSchema } from "#core/hooks/use-filter-schema";
|
|
88
88
|
export type { FilterMode, FiltersState } from "#core/hooks/use-filters";
|
|
89
89
|
export { useFilters } from "#core/hooks/use-filters";
|
|
90
|
+
export type { UseImageUploadResult } from "#core/hooks/use-image-upload";
|
|
91
|
+
export { useImageUpload } from "#core/hooks/use-image-upload";
|
|
90
92
|
export type {
|
|
91
93
|
JobState,
|
|
92
94
|
UseJobProgressResult,
|
|
@@ -110,6 +112,8 @@ export {
|
|
|
110
112
|
EXPAND_SHORTCUT_LABEL,
|
|
111
113
|
useShortcut,
|
|
112
114
|
} from "#core/hooks/use-shortcut";
|
|
115
|
+
export type { TableView, UseTableViewResult } from "#core/hooks/use-table-view";
|
|
116
|
+
export { useTableView } from "#core/hooks/use-table-view";
|
|
113
117
|
// RequestOperation é enum (valor, não só tipo): sem ele o projeto não consegue
|
|
114
118
|
// pedir o toast padrão de criado/alterado/removido que o core já traduz.
|
|
115
119
|
export { RequestOperation, useRequest } from "#core/hooks/use-request";
|
|
@@ -123,3 +127,30 @@ export { toListParams } from "#core/_services/api/list-query";
|
|
|
123
127
|
export { en } from "#core/i18n/messages/en";
|
|
124
128
|
export type { Messages } from "#core/i18n/messages/pt";
|
|
125
129
|
export { pt } from "#core/i18n/messages/pt";
|
|
130
|
+
|
|
131
|
+
// ---------------------------------------------------------------------------
|
|
132
|
+
// Upload de imagem — o componente, o serviço e o painel de trabalhos
|
|
133
|
+
// ---------------------------------------------------------------------------
|
|
134
|
+
// O projeto declara o perfil no backend (tamanho, formato, pasta) e usa o
|
|
135
|
+
// componente com o nome dele: `<ImageUpload profile="funkos" … />`. O
|
|
136
|
+
// `JobsProvider` entra no layout, dentro do `SocketProvider` — é ele que
|
|
137
|
+
// mantém o acompanhamento vivo quando a pessoa troca de tela no meio de um
|
|
138
|
+
// upload, e é ele que renderiza o painel do rodapé.
|
|
139
|
+
export type {
|
|
140
|
+
ImageAccepted,
|
|
141
|
+
ImageJobSummary,
|
|
142
|
+
ImageProfileInfo,
|
|
143
|
+
} from "#core/_services/images";
|
|
144
|
+
export { ImageFit, ImageFormat, imagesService } from "#core/_services/images";
|
|
145
|
+
export { uploadUrlOf } from "#core/_utils/upload-url";
|
|
146
|
+
export { JobDock } from "#core/components/job-dock";
|
|
147
|
+
export type { ImageUploadProps } from "#core/components/ui/image-upload";
|
|
148
|
+
export { ImageUpload } from "#core/components/ui/image-upload";
|
|
149
|
+
export type { JobsContextType } from "#core/contexts/jobs-context";
|
|
150
|
+
export { JobsProvider, useJobs } from "#core/contexts/jobs-context";
|
|
151
|
+
export type {
|
|
152
|
+
JobHandle,
|
|
153
|
+
TrackedJob,
|
|
154
|
+
TrackedJobState,
|
|
155
|
+
} from "#core/contexts/jobs-store";
|
|
156
|
+
export { JobsStore } from "#core/contexts/jobs-store";
|
package/src/styles/core.css
CHANGED
|
@@ -237,3 +237,34 @@
|
|
|
237
237
|
width: 0%;
|
|
238
238
|
}
|
|
239
239
|
}
|
|
240
|
+
|
|
241
|
+
/*
|
|
242
|
+
* Listras andando na barra de progresso do painel de jobs.
|
|
243
|
+
*
|
|
244
|
+
* Existe porque um job de imagem não tem etapas contáveis: ele passa de "estou
|
|
245
|
+
* baixando" para "acabei" sem números no meio, e uma barra parada em 50% é
|
|
246
|
+
* indistinguível de uma barra travada. As listras dizem "ainda estou aqui" sem
|
|
247
|
+
* fingir precisão que o job não tem.
|
|
248
|
+
*/
|
|
249
|
+
.rl-job-stripes {
|
|
250
|
+
background-image: linear-gradient(
|
|
251
|
+
45deg,
|
|
252
|
+
rgb(255 255 255 / 0.3) 25%,
|
|
253
|
+
transparent 25%,
|
|
254
|
+
transparent 50%,
|
|
255
|
+
rgb(255 255 255 / 0.3) 50%,
|
|
256
|
+
rgb(255 255 255 / 0.3) 75%,
|
|
257
|
+
transparent 75%,
|
|
258
|
+
transparent
|
|
259
|
+
);
|
|
260
|
+
background-size: 1rem 1rem;
|
|
261
|
+
animation: rl-job-stripes 1s linear infinite;
|
|
262
|
+
}
|
|
263
|
+
@keyframes rl-job-stripes {
|
|
264
|
+
from {
|
|
265
|
+
background-position: 0 0;
|
|
266
|
+
}
|
|
267
|
+
to {
|
|
268
|
+
background-position: 1rem 0;
|
|
269
|
+
}
|
|
270
|
+
}
|