@iclips/ui 1.2.40 → 1.3.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/components/ui/kanban-card.d.ts +49 -34
- package/dist/components/ui/kanban-card.d.ts.map +1 -1
- package/dist/components/ui/kanban-generic-card.d.ts +43 -0
- package/dist/components/ui/kanban-generic-card.d.ts.map +1 -0
- package/dist/components/ui/multi-select.d.ts +85 -0
- package/dist/components/ui/multi-select.d.ts.map +1 -0
- package/dist/index.cjs +52 -52
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7397 -7073
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
|
@@ -1,42 +1,57 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
export
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
name: string;
|
|
10
|
-
avatar?: string;
|
|
11
|
-
initials?: string;
|
|
12
|
-
}
|
|
13
|
-
export interface PropsCartaoKanban {
|
|
14
|
-
id: string;
|
|
2
|
+
export type KanbanCardStatus = "on-time" | "overdue" | "no-date";
|
|
3
|
+
export interface KanbanCardProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title" | "onClick"> {
|
|
4
|
+
/** Ex: "#123 Job de Arte" — exibido no canto superior esquerdo */
|
|
5
|
+
headerLeft: string;
|
|
6
|
+
/** Nome do cliente — exibido no canto superior direito */
|
|
7
|
+
headerRight?: string;
|
|
8
|
+
/** Título principal da atividade */
|
|
15
9
|
title: string;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
tags?: TagCartaoKanban[];
|
|
20
|
-
assignees?: ResponsavelCartaoKanban[];
|
|
21
|
-
priority?: "low" | "medium" | "high" | "urgent";
|
|
10
|
+
/** Subtítulo opcional — ex: nome da etapa/workflow */
|
|
11
|
+
subtitle?: string;
|
|
12
|
+
/** Data de fim da atividade */
|
|
22
13
|
dueDate?: Date;
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
progress?: number;
|
|
30
|
-
status?: string;
|
|
31
|
-
variant?: "default" | "compact" | "detailed";
|
|
14
|
+
/**
|
|
15
|
+
* Status visual do card. Se omitido, calculado automaticamente:
|
|
16
|
+
* !dueDate → "no-date" | dueDate < now → "overdue" | default → "on-time"
|
|
17
|
+
*/
|
|
18
|
+
status?: KanbanCardStatus;
|
|
19
|
+
/** Aplica estilos de drag (opacity reduzida + shadow elevada) */
|
|
32
20
|
isDragging?: boolean;
|
|
21
|
+
/** Callback de click no card — separado de HTMLAttributes para tipagem limpa */
|
|
33
22
|
onClick?: () => void;
|
|
34
|
-
onEdit?: () => void;
|
|
35
|
-
onDelete?: () => void;
|
|
36
|
-
onDuplicate?: () => void;
|
|
37
|
-
className?: string;
|
|
38
23
|
}
|
|
39
|
-
|
|
40
|
-
|
|
24
|
+
/**
|
|
25
|
+
* KanbanCard — Card de atividade para boards Kanban do domínio iClips.
|
|
26
|
+
*
|
|
27
|
+
* Exibe: referência do job, cliente, título, etapa, data de fim e indicador de status (no prazo / atrasada / sem data).
|
|
28
|
+
* Compatível com dnd-kit: aceita ref forwarding + spread de attributes/listeners diretamente via HTMLAttributes.
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```tsx
|
|
32
|
+
* // Uso estático
|
|
33
|
+
* <KanbanCard
|
|
34
|
+
* headerLeft="#45 Campanha Q3"
|
|
35
|
+
* headerRight="Empresa Xpto"
|
|
36
|
+
* title="Criar peças para mídia social"
|
|
37
|
+
* subtitle="Design"
|
|
38
|
+
* dueDate={new Date("2026-04-22T18:00:00")}
|
|
39
|
+
* />
|
|
40
|
+
*
|
|
41
|
+
* // Com dnd-kit
|
|
42
|
+
* const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({ id });
|
|
43
|
+
* <KanbanCard
|
|
44
|
+
* ref={setNodeRef}
|
|
45
|
+
* style={{ transform: CSS.Transform.toString(transform), transition }}
|
|
46
|
+
* {...attributes}
|
|
47
|
+
* {...listeners}
|
|
48
|
+
* isDragging={isDragging}
|
|
49
|
+
* headerLeft={card.tituloJob}
|
|
50
|
+
* title={card.titulo}
|
|
51
|
+
* onClick={handleClick}
|
|
52
|
+
* />
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
export declare const KanbanCard: React.ForwardRefExoticComponent<KanbanCardProps & React.RefAttributes<HTMLDivElement>>;
|
|
41
56
|
export default KanbanCard;
|
|
42
57
|
//# sourceMappingURL=kanban-card.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kanban-card.d.ts","sourceRoot":"","sources":["../../../src/components/ui/kanban-card.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"kanban-card.d.ts","sourceRoot":"","sources":["../../../src/components/ui/kanban-card.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAEjE,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACtG,kEAAkE;IAClE,UAAU,EAAE,MAAM,CAAC;IACnB,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+BAA+B;IAC/B,OAAO,CAAC,EAAE,IAAI,CAAC;IACf;;;OAGG;IACH,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,iEAAiE;IACjE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAWD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,eAAO,MAAM,UAAU,wFA0GtB,CAAC;AAIF,eAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export interface TagCartaoKanban {
|
|
3
|
+
id: string;
|
|
4
|
+
label: string;
|
|
5
|
+
color?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface ResponsavelCartaoKanban {
|
|
8
|
+
id: string;
|
|
9
|
+
name: string;
|
|
10
|
+
avatar?: string;
|
|
11
|
+
initials?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface PropsCartaoKanban {
|
|
14
|
+
id: string;
|
|
15
|
+
title: string;
|
|
16
|
+
description?: string;
|
|
17
|
+
coverImage?: string;
|
|
18
|
+
thumbnailImage?: string;
|
|
19
|
+
tags?: TagCartaoKanban[];
|
|
20
|
+
assignees?: ResponsavelCartaoKanban[];
|
|
21
|
+
priority?: "low" | "medium" | "high" | "urgent";
|
|
22
|
+
dueDate?: Date;
|
|
23
|
+
comments?: number;
|
|
24
|
+
attachments?: number;
|
|
25
|
+
checklist?: {
|
|
26
|
+
completed: number;
|
|
27
|
+
total: number;
|
|
28
|
+
};
|
|
29
|
+
progress?: number;
|
|
30
|
+
status?: string;
|
|
31
|
+
variant?: "default" | "compact" | "detailed";
|
|
32
|
+
isDragging?: boolean;
|
|
33
|
+
onClick?: () => void;
|
|
34
|
+
onEdit?: () => void;
|
|
35
|
+
onDelete?: () => void;
|
|
36
|
+
onDuplicate?: () => void;
|
|
37
|
+
className?: string;
|
|
38
|
+
}
|
|
39
|
+
export type KanbanGenericCardProps = PropsCartaoKanban;
|
|
40
|
+
export type KanbanCardProps = PropsCartaoKanban;
|
|
41
|
+
export declare const KanbanGenericCard: React.ForwardRefExoticComponent<PropsCartaoKanban & React.RefAttributes<HTMLDivElement>>;
|
|
42
|
+
export default KanbanGenericCard;
|
|
43
|
+
//# sourceMappingURL=kanban-generic-card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kanban-generic-card.d.ts","sourceRoot":"","sources":["../../../src/components/ui/kanban-generic-card.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAiB/B,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,eAAe,EAAE,CAAC;IACzB,SAAS,CAAC,EAAE,uBAAuB,EAAE,CAAC;IACtC,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;IAChD,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE;QACV,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;IAC7C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,sBAAsB,GAAG,iBAAiB,CAAC;AAEvD,MAAM,MAAM,eAAe,GAAG,iBAAiB,CAAC;AA6BhD,eAAO,MAAM,iBAAiB,0FA+R7B,CAAC;AAIF,eAAe,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export interface MultiSelectOption {
|
|
3
|
+
value: string;
|
|
4
|
+
label: string;
|
|
5
|
+
disabled?: boolean;
|
|
6
|
+
/** Slot para renderização customizada à direita do label — ex: <Badge>Externo</Badge> */
|
|
7
|
+
badge?: React.ReactNode;
|
|
8
|
+
}
|
|
9
|
+
export interface MultiSelectGroup {
|
|
10
|
+
label: string;
|
|
11
|
+
options: MultiSelectOption[];
|
|
12
|
+
}
|
|
13
|
+
export interface MultiSelectProps {
|
|
14
|
+
/** Valores atualmente selecionados */
|
|
15
|
+
value: string[];
|
|
16
|
+
/** Callback disparado ao alterar a seleção */
|
|
17
|
+
onValueChange: (values: string[]) => void;
|
|
18
|
+
/**
|
|
19
|
+
* Opções em lista plana.
|
|
20
|
+
* Use `options` OU `groups` — nunca os dois ao mesmo tempo.
|
|
21
|
+
*/
|
|
22
|
+
options?: MultiSelectOption[];
|
|
23
|
+
/**
|
|
24
|
+
* Opções agrupadas hierarquicamente.
|
|
25
|
+
* Use `options` OU `groups` — nunca os dois ao mesmo tempo.
|
|
26
|
+
*/
|
|
27
|
+
groups?: MultiSelectGroup[];
|
|
28
|
+
placeholder?: string;
|
|
29
|
+
searchPlaceholder?: string;
|
|
30
|
+
emptyMessage?: string;
|
|
31
|
+
disabled?: boolean;
|
|
32
|
+
/** Exibe estado de carregamento — substitui a lista por spinner */
|
|
33
|
+
loading?: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Número máximo de chips visíveis no trigger antes de exibir "+N".
|
|
36
|
+
* @default 2
|
|
37
|
+
*/
|
|
38
|
+
maxVisibleChips?: number;
|
|
39
|
+
/**
|
|
40
|
+
* Callback de busca assíncrona — chamado a cada keystroke e ao abrir o dropdown.
|
|
41
|
+
* Quando presente, a filtragem local é desativada (o caller controla `options`/`groups`).
|
|
42
|
+
*/
|
|
43
|
+
onSearch?: (query: string) => void;
|
|
44
|
+
className?: string;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* MultiSelect — Seleção múltipla com chips, busca, grupos hierárquicos e slots de badge por opção.
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```tsx
|
|
51
|
+
* // Lista plana
|
|
52
|
+
* <MultiSelect
|
|
53
|
+
* value={selectedSquads}
|
|
54
|
+
* onValueChange={setSelectedSquads}
|
|
55
|
+
* options={squads.map(s => ({ value: String(s.id), label: s.name }))}
|
|
56
|
+
* placeholder="Selecione os squads"
|
|
57
|
+
* />
|
|
58
|
+
*
|
|
59
|
+
* // Com badge por opção (ex: funcionários externos)
|
|
60
|
+
* <MultiSelect
|
|
61
|
+
* value={selectedEmployees}
|
|
62
|
+
* onValueChange={setSelectedEmployees}
|
|
63
|
+
* options={employees.map(e => ({
|
|
64
|
+
* value: String(e.id),
|
|
65
|
+
* label: e.name,
|
|
66
|
+
* badge: e.isExternalUser
|
|
67
|
+
* ? <Badge variant="secondary" className="text-xs">Externo</Badge>
|
|
68
|
+
* : undefined,
|
|
69
|
+
* }))}
|
|
70
|
+
* />
|
|
71
|
+
*
|
|
72
|
+
* // Lista hierárquica (grupos de clientes)
|
|
73
|
+
* <MultiSelect
|
|
74
|
+
* value={selectedClients}
|
|
75
|
+
* onValueChange={setSelectedClients}
|
|
76
|
+
* groups={customerGroups.map(g => ({
|
|
77
|
+
* label: g.name,
|
|
78
|
+
* options: g.children.map(c => ({ value: String(c.id), label: c.name })),
|
|
79
|
+
* }))}
|
|
80
|
+
* />
|
|
81
|
+
* ```
|
|
82
|
+
*/
|
|
83
|
+
export declare function MultiSelect({ value, onValueChange, options, groups, placeholder, searchPlaceholder, emptyMessage, disabled, loading, maxVisibleChips, onSearch, className, }: MultiSelectProps): import("react/jsx-runtime").JSX.Element;
|
|
84
|
+
export default MultiSelect;
|
|
85
|
+
//# sourceMappingURL=multi-select.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multi-select.d.ts","sourceRoot":"","sources":["../../../src/components/ui/multi-select.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAS/B,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,yFAAyF;IACzF,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,iBAAiB,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,sCAAsC;IACtC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,8CAA8C;IAC9C,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAE1C;;;OAGG;IACH,OAAO,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC9B;;;OAGG;IACH,MAAM,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAE5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mEAAmE;IACnE,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAEnC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,aAAa,EACb,OAAO,EACP,MAAM,EACN,WAA4B,EAC5B,iBAA+B,EAC/B,YAA4C,EAC5C,QAAgB,EAChB,OAAe,EACf,eAAmB,EACnB,QAAQ,EACR,SAAS,GACV,EAAE,gBAAgB,2CA2NlB;AAED,eAAe,WAAW,CAAC"}
|