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.
@@ -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";
@@ -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
+ }