@snksergio/design-system 0.41.0 → 0.42.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/chunks/{panel-Bje0kUTh.mjs → panel-BI52RBEn.mjs} +94 -68
- package/dist-lib/chunks/panel-BI52RBEn.mjs.map +1 -0
- package/dist-lib/chunks/{panel-DtU3KlKY.cjs → panel-INPypAHe.cjs} +36 -10
- package/dist-lib/chunks/panel-INPypAHe.cjs.map +1 -0
- package/dist-lib/index.cjs +2 -2
- package/dist-lib/index.cjs.map +1 -1
- package/dist-lib/index.mjs +76 -76
- package/dist-lib/index.mjs.map +1 -1
- package/dist-lib/preview/clientes.cjs +1 -1
- package/dist-lib/preview/clientes.mjs +1 -1
- package/dist-lib/src/components/ui/DataTable/builders/column-builders.d.ts.map +1 -1
- package/dist-lib/src/components/ui/DataTable/parts/data-table-actions-cell.d.ts +7 -3
- package/dist-lib/src/components/ui/DataTable/parts/data-table-actions-cell.d.ts.map +1 -1
- package/dist-lib/src/components/ui/DataTable/utils/action-slots.d.ts +76 -0
- package/dist-lib/src/components/ui/DataTable/utils/action-slots.d.ts.map +1 -0
- package/dist-lib/src/components/ui/DataTable/utils/calculate-column-widths.d.ts.map +1 -1
- package/package.json +208 -207
- package/dist-lib/chunks/panel-Bje0kUTh.mjs.map +0 -1
- package/dist-lib/chunks/panel-DtU3KlKY.cjs.map +0 -1
|
@@ -5,7 +5,7 @@ const React = require("react");
|
|
|
5
5
|
const useTheme = require("../chunks/useTheme-3iZAognE.cjs");
|
|
6
6
|
const lucideReact = require("lucide-react");
|
|
7
7
|
const clientesShowcaseMocks = require("../chunks/clientes-showcase-mocks-CwhluBTT.cjs");
|
|
8
|
-
const panel = require("../chunks/panel-
|
|
8
|
+
const panel = require("../chunks/panel-INPypAHe.cjs");
|
|
9
9
|
const avatar = require("../chunks/avatar-eM5txRFZ.cjs");
|
|
10
10
|
require("../chunks/input-az2SuVXQ.cjs");
|
|
11
11
|
require("../chunks/textarea-K20CL_gF.cjs");
|
|
@@ -3,7 +3,7 @@ import { useState, useEffect, useRef, useCallback, useMemo } from "react";
|
|
|
3
3
|
import { a as ChipGroup, b as ChipGroupItem, C as Chip, u as useTheme, A as AppShell } from "../chunks/useTheme-B3ZakPqk.mjs";
|
|
4
4
|
import { Pencil, Trash2, ChevronDown, MoreHorizontal, Plus, Download, Maximize2, Copy, Upload, RotateCcw, MessageSquare, Archive, Clock } from "lucide-react";
|
|
5
5
|
import { S as STATUSES, a as STATUS_DOT, C as CATEGORIES, b as CITIES, A as AGENTS, d as CATEGORY_KIND, f as formatBRL, e as formatShortDate, g as CLIENTS_87, K as KANBAN_COLUMNS, h as STATUS_OPTIONS, i as CATEGORY_OPTIONS, j as AGENTS_LOOKUP, k as AGENT_OPTIONS } from "../chunks/clientes-showcase-mocks-CwWGCCmf.mjs";
|
|
6
|
-
import { P as Panel, F as FormFieldInput, a as FormField, b as FormFieldSelect, c as FormFieldTextarea, d as FloatingPanel, p as presetView, D as DataTable, B as BulkActionButton, A as AlertModal } from "../chunks/panel-
|
|
6
|
+
import { P as Panel, F as FormFieldInput, a as FormField, b as FormFieldSelect, c as FormFieldTextarea, d as FloatingPanel, p as presetView, D as DataTable, B as BulkActionButton, A as AlertModal } from "../chunks/panel-BI52RBEn.mjs";
|
|
7
7
|
import { t as tv, B as Button, A as Avatar, a as AvatarFallback } from "../chunks/avatar-DFWEwBKu.mjs";
|
|
8
8
|
import "../chunks/input-CfmzMYtd.mjs";
|
|
9
9
|
import "../chunks/textarea-BPRIHZVd.mjs";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"column-builders.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/DataTable/builders/column-builders.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"column-builders.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/DataTable/builders/column-builders.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,qBAAqB,CAAC;AAE7B;;;;;;;;;;;;;GAaG;AAEH,KAAK,eAAe,CAAC,CAAC,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;AAEzD,8EAA8E;AAC9E,wBAAgB,UAAU,CAAC,CAAC,EAC1B,KAAK,EAAE,MAAM,CAAC,GAAG,MAAM,EACvB,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,GAC7B,kBAAkB,CAAC,CAAC,CAAC,CAEvB;AAED,2FAA2F;AAC3F,wBAAgB,YAAY,CAAC,CAAC,EAC5B,KAAK,EAAE,MAAM,CAAC,GAAG,MAAM,EACvB,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,GAC7B,kBAAkB,CAAC,CAAC,CAAC,CAEvB;AAED,sEAAsE;AACtE,wBAAgB,cAAc,CAAC,CAAC,EAC9B,KAAK,EAAE,MAAM,CAAC,GAAG,MAAM,EACvB,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GACtE,kBAAkB,CAAC,CAAC,CAAC,CAYvB;AAED,6DAA6D;AAC7D,wBAAgB,WAAW,CAAC,CAAC,EAC3B,KAAK,EAAE,MAAM,CAAC,GAAG,MAAM,EACvB,UAAU,GAAE,MAAgB,EAC5B,SAAS,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,GAC7B,kBAAkB,CAAC,CAAC,CAAC,CAEvB;AAED,0DAA0D;AAC1D,wBAAgB,WAAW,CAAC,CAAC,EAC3B,KAAK,EAAE,MAAM,CAAC,GAAG,MAAM,EACvB,UAAU,GAAE,MAAmB,EAC/B,SAAS,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,GAC7B,kBAAkB,CAAC,CAAC,CAAC,CAEvB;AAED,4EAA4E;AAC5E,wBAAgB,UAAU,CAAC,CAAC,EAC1B,KAAK,EAAE,MAAM,CAAC,GAAG,MAAM,EACvB,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,GAC7B,kBAAkB,CAAC,CAAC,CAAC,CAEvB;AAED,uFAAuF;AACvF,wBAAgB,YAAY,CAAC,CAAC,EAC5B,KAAK,EAAE,MAAM,CAAC,GAAG,MAAM,EACvB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EACzE,SAAS,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,GAC7B,kBAAkB,CAAC,CAAC,CAAC,CAUvB;AAED,kFAAkF;AAClF,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE;IACpC,UAAU,EAAE,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,CAAC,CAAA;KAAE,KAAK,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAcxB;AAED,oFAAoF;AACpF,wBAAgB,YAAY,CAAC,CAAC,EAC5B,KAAK,EAAE,MAAM,CAAC,GAAG,MAAM,EACvB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,CAAC,MAAM,EAAE;IAAE,GAAG,EAAE,CAAC,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,KAAK,SAAS,EACzD,SAAS,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,GAC7B,kBAAkB,CAAC,CAAC,CAAC,CAEvB"}
|
|
@@ -6,9 +6,13 @@ export type DataTableActionsCellProps<T> = {
|
|
|
6
6
|
actions: DataTableActionItem<T>[];
|
|
7
7
|
};
|
|
8
8
|
/**
|
|
9
|
-
* Celula da coluna `type: "actions"` — renderiza icone-buttons inline
|
|
10
|
-
*
|
|
11
|
-
*
|
|
9
|
+
* Celula da coluna `type: "actions"` — renderiza icone-buttons inline e/ou o
|
|
10
|
+
* dropdown "…". Quem decide o split é `splitActionSlots` (ver `utils/action-slots.ts`
|
|
11
|
+
* pra a regra e a geometria que a justifica):
|
|
12
|
+
*
|
|
13
|
+
* - algum item com `showInMenu` → o split do consumer manda, sem limite;
|
|
14
|
+
* - até 3 itens, nenhum marcado → todos inline, sem "…";
|
|
15
|
+
* - mais de 3, nenhum marcado → todos no "…" (4 ícones não cabem na coluna).
|
|
12
16
|
*
|
|
13
17
|
* Items com `hidden(row) === true` somem completamente. Items com
|
|
14
18
|
* `disabled(row) === true` ficam atenuados e sem click.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-table-actions-cell.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/DataTable/parts/data-table-actions-cell.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"data-table-actions-cell.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/DataTable/parts/data-table-actions-cell.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAG/D,MAAM,MAAM,yBAAyB,CAAC,CAAC,IAAI;IACzC,0DAA0D;IAC1D,GAAG,EAAE,CAAC,CAAC;IACP,+CAA+C;IAC/C,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;CACnC,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,EACtC,GAAG,EACH,OAAO,GACR,EAAE,yBAAyB,CAAC,CAAC,CAAC,kDAsE9B"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { DataTableActionItem } from '../data-table.types';
|
|
2
|
+
/**
|
|
3
|
+
* Regra de distribuição das ações de uma row entre ícones inline e o menu "…",
|
|
4
|
+
* e a largura que a coluna `type: "actions"` precisa pra caber o resultado.
|
|
5
|
+
*
|
|
6
|
+
* ## Por que isto é um módulo próprio
|
|
7
|
+
*
|
|
8
|
+
* A célula (`parts/data-table-actions-cell.tsx`) decide o que renderiza; o
|
|
9
|
+
* `calculate-column-widths.ts` decide quanto espaço reservar. Se cada um aplicasse a
|
|
10
|
+
* regra por conta, os dois divergiriam no primeiro ajuste — foi exatamente o defeito da
|
|
11
|
+
* L-038, onde header e footer liam `col.align` cru e discordavam do body. Aqui a regra
|
|
12
|
+
* mora num lugar e os dois a chamam.
|
|
13
|
+
*
|
|
14
|
+
* ## A geometria, MEDIDA NO BROWSER (e a versão errada que ela substituiu)
|
|
15
|
+
*
|
|
16
|
+
* A célula é `flex items-center gap-gp-2xs justify-end` dentro de uma `TableCell` que, na
|
|
17
|
+
* variante `actions`, usa **`px-pad-md`** — a variante sobrescreve o `px-pad-2xl` default
|
|
18
|
+
* das outras células (`Table/table.styles.ts`, bloco `variants.actions`). Com os tokens:
|
|
19
|
+
*
|
|
20
|
+
* padding = `pad-md` × 2 = 16px
|
|
21
|
+
* ícone = `icon-2xs` → `size-form-xs` = 28px
|
|
22
|
+
* gap = `gp-2xs` = 2px
|
|
23
|
+
*
|
|
24
|
+
* largura(n) = 16 + 28n + 2(n−1) = **30n + 14**
|
|
25
|
+
*
|
|
26
|
+
* Donde 1→44, 2→74, 3→104, 4→134.
|
|
27
|
+
*
|
|
28
|
+
* ⚠️ A primeira versão deste módulo usava `pad-2xl` (32px de padding) e chegava a
|
|
29
|
+
* `30n + 30` — 1→60, 3→120 — com a conclusão elegante de que o `ACTIONS_COLUMN_WIDTH`
|
|
30
|
+
* legado (120) "era exatamente 3 slots". **Falso**: 3 slots são 104, e 120 fica entre 3 e
|
|
31
|
+
* 4. O teste concordava porque derivava da mesma fórmula errada; quem pegou foi a medição
|
|
32
|
+
* no browser (`width: 64px` inline, `padding: 8px/8px`, botão 28px, folga 8px). É a L-064
|
|
33
|
+
* literal — teste escrito do mesmo modelo mental do código concorda por construção.
|
|
34
|
+
*
|
|
35
|
+
* ## O limite de 3 não é preferência estética
|
|
36
|
+
*
|
|
37
|
+
* É a capacidade da coluna que o componente já usava: dentro dos 120px legados sobram
|
|
38
|
+
* 104 úteis, e 4 ícones pedem 118. Ou a coluna cresce, ou o excedente vai pro menu. O
|
|
39
|
+
* default aqui é **mandar tudo pro menu**, porque coluna de ação larga empurra o conteúdo
|
|
40
|
+
* de dados e derrota o motivo de ela estar ancorada à direita.
|
|
41
|
+
*/
|
|
42
|
+
/** Quantos ícones cabem inline nos 120px que a coluna sempre usou. */
|
|
43
|
+
export declare const ACTIONS_INLINE_MAX = 3;
|
|
44
|
+
/** Largura da coluna pra `n` slots renderizados (ícones + o "…" quando existe). */
|
|
45
|
+
export declare function actionsWidthForSlots(slots: number): number;
|
|
46
|
+
/**
|
|
47
|
+
* Divide as ações visíveis de uma row entre inline e menu.
|
|
48
|
+
*
|
|
49
|
+
* Precedência — e a primeira regra existe pra não passar por cima de decisão explícita:
|
|
50
|
+
*
|
|
51
|
+
* 1. **Algum item marca `showInMenu`** → o consumer já decidiu o split; respeitado
|
|
52
|
+
* integralmente, sem limite de quantidade. Quem quer 5 ícones inline consegue.
|
|
53
|
+
* 2. Até `ACTIONS_INLINE_MAX` (3) itens → todos inline, sem "…". Uma ação só = um ícone
|
|
54
|
+
* só, que é o caso comum de "editar".
|
|
55
|
+
* 3. Mais de 3 → **todos** vão pro menu, e a coluna renderiza só o "…".
|
|
56
|
+
*/
|
|
57
|
+
export declare function splitActionSlots<T>(actions: DataTableActionItem<T>[], row: T): {
|
|
58
|
+
inline: DataTableActionItem<T>[];
|
|
59
|
+
menu: DataTableActionItem<T>[];
|
|
60
|
+
};
|
|
61
|
+
/** Slots renderizados: um por ícone inline, mais um pro "…" quando há menu. */
|
|
62
|
+
export declare function countActionSlots<T>(split: {
|
|
63
|
+
inline: DataTableActionItem<T>[];
|
|
64
|
+
menu: DataTableActionItem<T>[];
|
|
65
|
+
}): number;
|
|
66
|
+
/**
|
|
67
|
+
* Largura necessária pra uma coluna de ações, olhando as rows amostradas.
|
|
68
|
+
*
|
|
69
|
+
* Usa o **máximo** entre as rows: `hidden` pode variar por row (ex.: "cancelar" só em
|
|
70
|
+
* pedido aberto), e reservar pelo menor cortaria a row mais completa. Sem `getActions`
|
|
71
|
+
* ou sem rows, devolve `null` — quem chama decide o fallback.
|
|
72
|
+
*/
|
|
73
|
+
export declare function measureActionsWidth<T>(getActions: ((params: {
|
|
74
|
+
row: T;
|
|
75
|
+
}) => DataTableActionItem<T>[]) | undefined, rows: T[]): number | null;
|
|
76
|
+
//# sourceMappingURL=action-slots.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-slots.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/DataTable/utils/action-slots.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,sEAAsE;AACtE,eAAO,MAAM,kBAAkB,IAAI,CAAC;AAEpC,mFAAmF;AACnF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1D;AAOD;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAAE,EACjC,GAAG,EAAE,CAAC,GACL;IAAE,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;IAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAA;CAAE,CAetE;AAED,+EAA+E;AAC/E,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,KAAK,EAAE;IACzC,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;IACjC,IAAI,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;CAChC,GAAG,MAAM,CAET;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IAAE,GAAG,EAAE,CAAC,CAAA;CAAE,KAAK,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,EAC1E,IAAI,EAAE,CAAC,EAAE,GACR,MAAM,GAAG,IAAI,CASf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calculate-column-widths.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/DataTable/utils/calculate-column-widths.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"calculate-column-widths.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/DataTable/utils/calculate-column-widths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAO9D,iFAAiF;AACjF,eAAO,MAAM,oBAAoB,MAAM,CAAC;AACxC,oFAAoF;AACpF,eAAO,MAAM,eAAe,KAAK,CAAC;AAClC,sDAAsD;AACtD,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAEtC;;;;;GAKG;AACH,eAAO,MAAM,cAAc,QAAS,CAAC;AAErC;;;;;;;GAOG;AACH,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAyB5C,MAAM,WAAW,4BAA4B;IAC3C,iEAAiE;IACjE,cAAc,EAAE,MAAM,CAAC;IACvB,qDAAqD;IACrD,OAAO,EAAE,OAAO,CAAC;IACjB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EACrC,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,EAChC,IAAI,EAAE,CAAC,EAAE,EACT,OAAO,EAAE,4BAA4B,GACpC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAwLxB"}
|
package/package.json
CHANGED
|
@@ -1,207 +1,208 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@snksergio/design-system",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"//distribuicao": "Canal PRIMARIO = registry shadcn (copy-in) + CLI @snksergio/create-design-system; sobe sozinho no merge (Vercel). Canal SECUNDARIO = este pacote npm (@snksergio/design-system), publicado por passo MANUAL do mantenedor, entao costuma ficar atras do registry. SECUNDARIO descreve a ORDEM DE PUBLICACAO, nao o nivel de suporte: NAO e depreciado, e desde a 0.37.0 entrega 41 dos 42 componentes ui/ no barrel raiz + os 41 primitivos shadcn no subpath ./shadcn (so TabelaTeste, demo interno, fica de fora). Publish so pelo Passo 7 do .claude/skills/ds-dev/release.md (valida com `npm run lib:verify`, pede o token, publica, revoga). Ver DISTRIBUICAO.md.",
|
|
5
|
-
"description": "iGreen Design System — internal library for SaaS CRM, admin panels and dashboards. React 19 + Tailwind v4 + Shadcn + Radix.",
|
|
6
|
-
"license": "UNLICENSED",
|
|
7
|
-
"type": "module",
|
|
8
|
-
"main": "./dist-lib/index.cjs",
|
|
9
|
-
"module": "./dist-lib/index.mjs",
|
|
10
|
-
"types": "./dist-lib/index.d.ts",
|
|
11
|
-
"files": [
|
|
12
|
-
"dist-lib/index.*",
|
|
13
|
-
"dist-lib/shadcn.*",
|
|
14
|
-
"dist-lib/tokens.*",
|
|
15
|
-
"dist-lib/theme.css",
|
|
16
|
-
"dist-lib/theme/**",
|
|
17
|
-
"dist-lib/fonts/**",
|
|
18
|
-
"dist-lib/preview/**",
|
|
19
|
-
"dist-lib/chunks/**",
|
|
20
|
-
"dist-lib/src/**",
|
|
21
|
-
"dist-lib/tokens/**",
|
|
22
|
-
"README.md"
|
|
23
|
-
],
|
|
24
|
-
"engines": {
|
|
25
|
-
"node": ">=20.0.0"
|
|
26
|
-
},
|
|
27
|
-
"repository": {
|
|
28
|
-
"type": "git",
|
|
29
|
-
"url": "git+https://github.com/igreenlab/igreen-desingsystem-admin.git"
|
|
30
|
-
},
|
|
31
|
-
"bugs": {
|
|
32
|
-
"url": "https://github.com/igreenlab/igreen-desingsystem-admin/issues"
|
|
33
|
-
},
|
|
34
|
-
"homepage": "https://github.com/igreenlab/igreen-desingsystem-admin#readme",
|
|
35
|
-
"//exports-theme-marcas": "Os overlays de marca (./theme/brand-*.css) são enumerados um por um DE PROPÓSITO, não por wildcard: o pack-contract extrai cada path prometido no exports e o lib-verify confere no disco — um './theme/*' prometeria nada e não seria verificado, que é justo o modo de falha da L-017. Marca nova exige entrada aqui, e o build:lib FALHA se achar brand-*.css sem export correspondente (gate no vite.lib.config.ts). Nunca colocar chave de comentário DENTRO de exports: lá toda chave é subpath e o Node/pack-contract tentam resolvê-la.",
|
|
36
|
-
"exports": {
|
|
37
|
-
".": {
|
|
38
|
-
"types": "./dist-lib/index.d.ts",
|
|
39
|
-
"import": "./dist-lib/index.mjs",
|
|
40
|
-
"require": "./dist-lib/index.cjs"
|
|
41
|
-
},
|
|
42
|
-
"./shadcn": {
|
|
43
|
-
"types": "./dist-lib/shadcn.d.ts",
|
|
44
|
-
"import": "./dist-lib/shadcn.mjs",
|
|
45
|
-
"require": "./dist-lib/shadcn.cjs"
|
|
46
|
-
},
|
|
47
|
-
"./theme.css": "./dist-lib/theme.css",
|
|
48
|
-
"./theme/brand-blue.css": "./dist-lib/theme/brand-blue.css",
|
|
49
|
-
"./theme/brand-green.css": "./dist-lib/theme/brand-green.css",
|
|
50
|
-
"./theme/brand-pay.css": "./dist-lib/theme/brand-pay.css",
|
|
51
|
-
"./theme/brand-vibrant.css": "./dist-lib/theme/brand-vibrant.css",
|
|
52
|
-
"./tokens": {
|
|
53
|
-
"types": "./dist-lib/tokens.d.ts",
|
|
54
|
-
"import": "./dist-lib/tokens.mjs",
|
|
55
|
-
"require": "./dist-lib/tokens.cjs"
|
|
56
|
-
},
|
|
57
|
-
"./preview/chat": {
|
|
58
|
-
"types": "./dist-lib/preview/chat.d.ts",
|
|
59
|
-
"import": "./dist-lib/preview/chat.mjs",
|
|
60
|
-
"require": "./dist-lib/preview/chat.cjs"
|
|
61
|
-
},
|
|
62
|
-
"./preview/clientes": {
|
|
63
|
-
"types": "./dist-lib/preview/clientes.d.ts",
|
|
64
|
-
"import": "./dist-lib/preview/clientes.mjs",
|
|
65
|
-
"require": "./dist-lib/preview/clientes.cjs"
|
|
66
|
-
},
|
|
67
|
-
"./preview/dashboard": {
|
|
68
|
-
"types": "./dist-lib/preview/dashboard.d.ts",
|
|
69
|
-
"import": "./dist-lib/preview/dashboard.mjs",
|
|
70
|
-
"require": "./dist-lib/preview/dashboard.cjs"
|
|
71
|
-
},
|
|
72
|
-
"./preview/mocks": {
|
|
73
|
-
"types": "./dist-lib/preview/mocks.d.ts",
|
|
74
|
-
"import": "./dist-lib/preview/mocks.mjs",
|
|
75
|
-
"require": "./dist-lib/preview/mocks.cjs"
|
|
76
|
-
}
|
|
77
|
-
},
|
|
78
|
-
"publishConfig": {
|
|
79
|
-
"access": "public"
|
|
80
|
-
},
|
|
81
|
-
"scripts": {
|
|
82
|
-
"dev": "npm run tokens:tw4 && vite",
|
|
83
|
-
"build": "npm run tokens:tw4 && tsc -b && vite build",
|
|
84
|
-
"build:showcase": "npm run build && npm --prefix projeto/virtual-proposta install --no-audit --no-fund && npm --prefix projeto/virtual-proposta run build && cp -r projeto/virtual-proposta/dist dist/demo",
|
|
85
|
-
"build:lib": "npm run tokens:tw4 && vite build --config vite.lib.config.ts",
|
|
86
|
-
"preview": "vite preview",
|
|
87
|
-
"prepublishOnly": "npm run build:lib",
|
|
88
|
-
"lib:verify": "node scripts/lib-verify.mjs --build",
|
|
89
|
-
"lib:publish:patch": "echo '⛔ Use o /ds-release: ele bumpa, valida com lib:verify e PARA pedindo o token. Publicar por aqui pula o gate (Regra 7 / L-020).' && exit 1",
|
|
90
|
-
"lib:publish:minor": "echo '⛔ Use o /ds-release: ele bumpa, valida com lib:verify e PARA pedindo o token. Publicar por aqui pula o gate (Regra 7 / L-020).' && exit 1",
|
|
91
|
-
"lib:publish:major": "echo '⛔ Use o /ds-release: ele bumpa, valida com lib:verify e PARA pedindo o token. Publicar por aqui pula o gate (Regra 7 / L-020).' && exit 1",
|
|
92
|
-
"tokens:tw4": "tsx tokens/transforms/to-tailwind-v4.ts > src/styles/theme/tailwind-theme.css",
|
|
93
|
-
"tokens:brand:blue": "tsx tokens/transforms/to-brand-overlay.ts blue > src/styles/theme/brand-blue.css",
|
|
94
|
-
"tokens:brand:green": "tsx tokens/transforms/to-brand-overlay.ts green > src/styles/theme/brand-green.css",
|
|
95
|
-
"tokens:brand:pay": "tsx tokens/transforms/to-brand-overlay.ts pay > src/styles/theme/brand-pay.css",
|
|
96
|
-
"tokens:brand:vibrant": "tsx tokens/transforms/to-brand-overlay.ts vibrant > src/styles/theme/brand-vibrant.css",
|
|
97
|
-
"tokens:css": "tsx tokens/transforms/to-css-vars.ts > dist/tokens.css",
|
|
98
|
-
"tokens:dtcg": "tsx tokens/transforms/to-dtcg.ts > dist/tokens.tokens.json",
|
|
99
|
-
"tokens:all": "npm run tokens:tw4 && npm run tokens:css && npm run tokens:dtcg",
|
|
100
|
-
"tokens:check": "tsc --noEmit",
|
|
101
|
-
"brand:check": "node scripts/brand-check.mjs",
|
|
102
|
-
"brand:contrast": "node scripts/brand-contrast.mjs",
|
|
103
|
-
"audit:token-docs": "node scripts/audit-token-docs.mjs",
|
|
104
|
-
"registry:stamp": "node scripts/registry-stamp.mjs",
|
|
105
|
-
"registry:build": "npm run examples:drift && npm run tokens:tw4 && npm run registry:stamp && npx shadcn@4.17.0 build",
|
|
106
|
-
"release:check": "node scripts/registry-check.mjs --ci && node scripts/brand-check.mjs && node scripts/distribution-debt.mjs --ci && node scripts/examples-drift-check.mjs --ci && npm run registry-app:audit",
|
|
107
|
-
"
|
|
108
|
-
"
|
|
109
|
-
"
|
|
110
|
-
"
|
|
111
|
-
"
|
|
112
|
-
"
|
|
113
|
-
"
|
|
114
|
-
"test
|
|
115
|
-
"test:
|
|
116
|
-
"
|
|
117
|
-
"
|
|
118
|
-
"
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
"//
|
|
122
|
-
"
|
|
123
|
-
|
|
124
|
-
"@dnd-kit/
|
|
125
|
-
"@dnd-kit/
|
|
126
|
-
"@dnd-kit/
|
|
127
|
-
"@
|
|
128
|
-
"@
|
|
129
|
-
"@radix-ui/react-
|
|
130
|
-
"@radix-ui/react-
|
|
131
|
-
"@radix-ui/react-
|
|
132
|
-
"@radix-ui/react-
|
|
133
|
-
"@radix-ui/react-
|
|
134
|
-
"@radix-ui/react-
|
|
135
|
-
"@radix-ui/react-
|
|
136
|
-
"@radix-ui/react-
|
|
137
|
-
"@radix-ui/react-
|
|
138
|
-
"@radix-ui/react-
|
|
139
|
-
"@radix-ui/react-
|
|
140
|
-
"@radix-ui/react-
|
|
141
|
-
"@radix-ui/react-
|
|
142
|
-
"@radix-ui/react-
|
|
143
|
-
"@radix-ui/react-
|
|
144
|
-
"@radix-ui/react-
|
|
145
|
-
"@radix-ui/react-
|
|
146
|
-
"@radix-ui/react-
|
|
147
|
-
"@radix-ui/react-
|
|
148
|
-
"@radix-ui/react-
|
|
149
|
-
"@radix-ui/react-
|
|
150
|
-
"@radix-ui/react-
|
|
151
|
-
"@radix-ui/react-
|
|
152
|
-
"@radix-ui/react-toggle
|
|
153
|
-
"@radix-ui/react-
|
|
154
|
-
"@
|
|
155
|
-
"@
|
|
156
|
-
"@types/
|
|
157
|
-
"@types/
|
|
158
|
-
"
|
|
159
|
-
"
|
|
160
|
-
"
|
|
161
|
-
"
|
|
162
|
-
"
|
|
163
|
-
"
|
|
164
|
-
"
|
|
165
|
-
"
|
|
166
|
-
"
|
|
167
|
-
"react
|
|
168
|
-
"
|
|
169
|
-
"
|
|
170
|
-
"
|
|
171
|
-
"tailwind-
|
|
172
|
-
"
|
|
173
|
-
"
|
|
174
|
-
"
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
"@
|
|
179
|
-
"@testing-library/
|
|
180
|
-
"@testing-library/
|
|
181
|
-
"@testing-library/
|
|
182
|
-
"@
|
|
183
|
-
"@types/react
|
|
184
|
-
"@types/
|
|
185
|
-
"@
|
|
186
|
-
"@
|
|
187
|
-
"
|
|
188
|
-
"
|
|
189
|
-
"
|
|
190
|
-
"
|
|
191
|
-
"
|
|
192
|
-
"
|
|
193
|
-
"vite
|
|
194
|
-
"
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
"react
|
|
199
|
-
"
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "@snksergio/design-system",
|
|
3
|
+
"version": "0.42.0",
|
|
4
|
+
"//distribuicao": "Canal PRIMARIO = registry shadcn (copy-in) + CLI @snksergio/create-design-system; sobe sozinho no merge (Vercel). Canal SECUNDARIO = este pacote npm (@snksergio/design-system), publicado por passo MANUAL do mantenedor, entao costuma ficar atras do registry. SECUNDARIO descreve a ORDEM DE PUBLICACAO, nao o nivel de suporte: NAO e depreciado, e desde a 0.37.0 entrega 41 dos 42 componentes ui/ no barrel raiz + os 41 primitivos shadcn no subpath ./shadcn (so TabelaTeste, demo interno, fica de fora). Publish so pelo Passo 7 do .claude/skills/ds-dev/release.md (valida com `npm run lib:verify`, pede o token, publica, revoga). Ver DISTRIBUICAO.md.",
|
|
5
|
+
"description": "iGreen Design System — internal library for SaaS CRM, admin panels and dashboards. React 19 + Tailwind v4 + Shadcn + Radix.",
|
|
6
|
+
"license": "UNLICENSED",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"main": "./dist-lib/index.cjs",
|
|
9
|
+
"module": "./dist-lib/index.mjs",
|
|
10
|
+
"types": "./dist-lib/index.d.ts",
|
|
11
|
+
"files": [
|
|
12
|
+
"dist-lib/index.*",
|
|
13
|
+
"dist-lib/shadcn.*",
|
|
14
|
+
"dist-lib/tokens.*",
|
|
15
|
+
"dist-lib/theme.css",
|
|
16
|
+
"dist-lib/theme/**",
|
|
17
|
+
"dist-lib/fonts/**",
|
|
18
|
+
"dist-lib/preview/**",
|
|
19
|
+
"dist-lib/chunks/**",
|
|
20
|
+
"dist-lib/src/**",
|
|
21
|
+
"dist-lib/tokens/**",
|
|
22
|
+
"README.md"
|
|
23
|
+
],
|
|
24
|
+
"engines": {
|
|
25
|
+
"node": ">=20.0.0"
|
|
26
|
+
},
|
|
27
|
+
"repository": {
|
|
28
|
+
"type": "git",
|
|
29
|
+
"url": "git+https://github.com/igreenlab/igreen-desingsystem-admin.git"
|
|
30
|
+
},
|
|
31
|
+
"bugs": {
|
|
32
|
+
"url": "https://github.com/igreenlab/igreen-desingsystem-admin/issues"
|
|
33
|
+
},
|
|
34
|
+
"homepage": "https://github.com/igreenlab/igreen-desingsystem-admin#readme",
|
|
35
|
+
"//exports-theme-marcas": "Os overlays de marca (./theme/brand-*.css) são enumerados um por um DE PROPÓSITO, não por wildcard: o pack-contract extrai cada path prometido no exports e o lib-verify confere no disco — um './theme/*' prometeria nada e não seria verificado, que é justo o modo de falha da L-017. Marca nova exige entrada aqui, e o build:lib FALHA se achar brand-*.css sem export correspondente (gate no vite.lib.config.ts). Nunca colocar chave de comentário DENTRO de exports: lá toda chave é subpath e o Node/pack-contract tentam resolvê-la.",
|
|
36
|
+
"exports": {
|
|
37
|
+
".": {
|
|
38
|
+
"types": "./dist-lib/index.d.ts",
|
|
39
|
+
"import": "./dist-lib/index.mjs",
|
|
40
|
+
"require": "./dist-lib/index.cjs"
|
|
41
|
+
},
|
|
42
|
+
"./shadcn": {
|
|
43
|
+
"types": "./dist-lib/shadcn.d.ts",
|
|
44
|
+
"import": "./dist-lib/shadcn.mjs",
|
|
45
|
+
"require": "./dist-lib/shadcn.cjs"
|
|
46
|
+
},
|
|
47
|
+
"./theme.css": "./dist-lib/theme.css",
|
|
48
|
+
"./theme/brand-blue.css": "./dist-lib/theme/brand-blue.css",
|
|
49
|
+
"./theme/brand-green.css": "./dist-lib/theme/brand-green.css",
|
|
50
|
+
"./theme/brand-pay.css": "./dist-lib/theme/brand-pay.css",
|
|
51
|
+
"./theme/brand-vibrant.css": "./dist-lib/theme/brand-vibrant.css",
|
|
52
|
+
"./tokens": {
|
|
53
|
+
"types": "./dist-lib/tokens.d.ts",
|
|
54
|
+
"import": "./dist-lib/tokens.mjs",
|
|
55
|
+
"require": "./dist-lib/tokens.cjs"
|
|
56
|
+
},
|
|
57
|
+
"./preview/chat": {
|
|
58
|
+
"types": "./dist-lib/preview/chat.d.ts",
|
|
59
|
+
"import": "./dist-lib/preview/chat.mjs",
|
|
60
|
+
"require": "./dist-lib/preview/chat.cjs"
|
|
61
|
+
},
|
|
62
|
+
"./preview/clientes": {
|
|
63
|
+
"types": "./dist-lib/preview/clientes.d.ts",
|
|
64
|
+
"import": "./dist-lib/preview/clientes.mjs",
|
|
65
|
+
"require": "./dist-lib/preview/clientes.cjs"
|
|
66
|
+
},
|
|
67
|
+
"./preview/dashboard": {
|
|
68
|
+
"types": "./dist-lib/preview/dashboard.d.ts",
|
|
69
|
+
"import": "./dist-lib/preview/dashboard.mjs",
|
|
70
|
+
"require": "./dist-lib/preview/dashboard.cjs"
|
|
71
|
+
},
|
|
72
|
+
"./preview/mocks": {
|
|
73
|
+
"types": "./dist-lib/preview/mocks.d.ts",
|
|
74
|
+
"import": "./dist-lib/preview/mocks.mjs",
|
|
75
|
+
"require": "./dist-lib/preview/mocks.cjs"
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
"publishConfig": {
|
|
79
|
+
"access": "public"
|
|
80
|
+
},
|
|
81
|
+
"scripts": {
|
|
82
|
+
"dev": "npm run tokens:tw4 && vite",
|
|
83
|
+
"build": "npm run tokens:tw4 && tsc -b && vite build",
|
|
84
|
+
"build:showcase": "npm run build && npm --prefix projeto/virtual-proposta install --no-audit --no-fund && npm --prefix projeto/virtual-proposta run build && cp -r projeto/virtual-proposta/dist dist/demo",
|
|
85
|
+
"build:lib": "npm run tokens:tw4 && vite build --config vite.lib.config.ts",
|
|
86
|
+
"preview": "vite preview",
|
|
87
|
+
"prepublishOnly": "npm run build:lib",
|
|
88
|
+
"lib:verify": "node scripts/lib-verify.mjs --build",
|
|
89
|
+
"lib:publish:patch": "echo '⛔ Use o /ds-release: ele bumpa, valida com lib:verify e PARA pedindo o token. Publicar por aqui pula o gate (Regra 7 / L-020).' && exit 1",
|
|
90
|
+
"lib:publish:minor": "echo '⛔ Use o /ds-release: ele bumpa, valida com lib:verify e PARA pedindo o token. Publicar por aqui pula o gate (Regra 7 / L-020).' && exit 1",
|
|
91
|
+
"lib:publish:major": "echo '⛔ Use o /ds-release: ele bumpa, valida com lib:verify e PARA pedindo o token. Publicar por aqui pula o gate (Regra 7 / L-020).' && exit 1",
|
|
92
|
+
"tokens:tw4": "tsx tokens/transforms/to-tailwind-v4.ts > src/styles/theme/tailwind-theme.css",
|
|
93
|
+
"tokens:brand:blue": "tsx tokens/transforms/to-brand-overlay.ts blue > src/styles/theme/brand-blue.css",
|
|
94
|
+
"tokens:brand:green": "tsx tokens/transforms/to-brand-overlay.ts green > src/styles/theme/brand-green.css",
|
|
95
|
+
"tokens:brand:pay": "tsx tokens/transforms/to-brand-overlay.ts pay > src/styles/theme/brand-pay.css",
|
|
96
|
+
"tokens:brand:vibrant": "tsx tokens/transforms/to-brand-overlay.ts vibrant > src/styles/theme/brand-vibrant.css",
|
|
97
|
+
"tokens:css": "tsx tokens/transforms/to-css-vars.ts > dist/tokens.css",
|
|
98
|
+
"tokens:dtcg": "tsx tokens/transforms/to-dtcg.ts > dist/tokens.tokens.json",
|
|
99
|
+
"tokens:all": "npm run tokens:tw4 && npm run tokens:css && npm run tokens:dtcg",
|
|
100
|
+
"tokens:check": "tsc --noEmit",
|
|
101
|
+
"brand:check": "node scripts/brand-check.mjs",
|
|
102
|
+
"brand:contrast": "node scripts/brand-contrast.mjs",
|
|
103
|
+
"audit:token-docs": "node scripts/audit-token-docs.mjs",
|
|
104
|
+
"registry:stamp": "node scripts/registry-stamp.mjs",
|
|
105
|
+
"registry:build": "npm run examples:drift && npm run tokens:tw4 && npm run registry:stamp && npx shadcn@4.17.0 build",
|
|
106
|
+
"release:check": "node scripts/registry-check.mjs --ci && node scripts/brand-check.mjs && node scripts/distribution-debt.mjs --ci && node scripts/examples-drift-check.mjs --ci && npm run registry-app:audit",
|
|
107
|
+
"pronto": "npm test && npm run release:check",
|
|
108
|
+
"registry-app:audit": "npm audit --audit-level=high --prefix registry-app",
|
|
109
|
+
"distribution:debt": "node scripts/distribution-debt.mjs",
|
|
110
|
+
"lint:styles": "node scripts/lint-styles.mjs --ratchet",
|
|
111
|
+
"cli:rebake": "node scripts/cli-rebake-foundationals.mjs",
|
|
112
|
+
"doc:index": "node scripts/doc-index.mjs --write",
|
|
113
|
+
"typecheck": "tsc --noEmit",
|
|
114
|
+
"test": "npm run typecheck && vitest run",
|
|
115
|
+
"test:watch": "vitest",
|
|
116
|
+
"test:ui": "vitest --ui",
|
|
117
|
+
"sync:agents": "node .claude/scripts/sync-agents-to-cursor.cjs",
|
|
118
|
+
"examples:drift": "node scripts/examples-drift-check.mjs",
|
|
119
|
+
"ds:link": "node scripts/ds-link.mjs"
|
|
120
|
+
},
|
|
121
|
+
"//test-inclui-typecheck": "O `test` roda `typecheck` ANTES do vitest de proposito. Medido em 2026-08-14 por dogfood: um componente que NAO compilava passou 413/413 no `npm test`, porque o `tsc --noEmit` era step separado so no CI. Quem valida local com o comando natural (`npm test`) recebia falso verde e so descobria na PR. Custo: ~10s no caminho de sucesso. No CI o Typecheck ja roda em step proprio ANTES dos testes (falha rapida com sinal claro na UI de Checks), entao o job so paga esses 10s quando tudo passa. `tokens:check` e o MESMO comando sob um nome que sugere escopo de tokens — mantido porque ha registro historico apontando pra ele; o nome canonico e `typecheck`.",
|
|
122
|
+
"//deps-de-tipo": "Os 3 `@types/*` abaixo estao em dependencies (nao devDependencies) DE PROPOSITO: os `.d.ts` publicados os referenciam no tipo PUBLICO. `dist-lib/src/components/ui/ChoroplethMap/choropleth-map.types.d.ts` faz `import { Feature } from 'geojson'` e `import { Topology } from 'topojson-specification'`, e `GeoProjection` vem de `@types/d3-geo` (o `d3-geo` nao embute tipos). Em devDependencies o consumidor npm instala o pacote, recebe os `.d.ts`, e o `tsc` DELE quebra com 'Cannot find module geojson' — o DS compila porque tem os @types localmente. Criterio: se um pacote aparece num `from '...'` de `.d.ts` sob `dist-lib/`, ele e dependency. Gate: `scripts/lib/deps-declared.mjs`. `@types/topojson-client` fica em devDeps porque o topojson-client so e importado como VALOR, e o tipo nao vaza pra superficie publica.",
|
|
123
|
+
"dependencies": {
|
|
124
|
+
"@dnd-kit/core": "^6.3.1",
|
|
125
|
+
"@dnd-kit/modifiers": "^9.0.0",
|
|
126
|
+
"@dnd-kit/sortable": "^10.0.0",
|
|
127
|
+
"@dnd-kit/utilities": "^3.2.2",
|
|
128
|
+
"@hello-pangea/dnd": "^18.0.1",
|
|
129
|
+
"@radix-ui/react-accordion": "^1.2.12",
|
|
130
|
+
"@radix-ui/react-alert-dialog": "^1.1.15",
|
|
131
|
+
"@radix-ui/react-aspect-ratio": "^1.1.10",
|
|
132
|
+
"@radix-ui/react-avatar": "^1.1.11",
|
|
133
|
+
"@radix-ui/react-checkbox": "^1.3.3",
|
|
134
|
+
"@radix-ui/react-collapsible": "^1.1.14",
|
|
135
|
+
"@radix-ui/react-context-menu": "^2.3.1",
|
|
136
|
+
"@radix-ui/react-dialog": "^1.1.17",
|
|
137
|
+
"@radix-ui/react-dropdown-menu": "^2.1.16",
|
|
138
|
+
"@radix-ui/react-hover-card": "^1.1.17",
|
|
139
|
+
"@radix-ui/react-label": "^2.1.8",
|
|
140
|
+
"@radix-ui/react-menubar": "^1.1.18",
|
|
141
|
+
"@radix-ui/react-navigation-menu": "^1.2.16",
|
|
142
|
+
"@radix-ui/react-popover": "^1.1.15",
|
|
143
|
+
"@radix-ui/react-progress": "^1.1.8",
|
|
144
|
+
"@radix-ui/react-radio-group": "^1.3.8",
|
|
145
|
+
"@radix-ui/react-scroll-area": "^1.2.12",
|
|
146
|
+
"@radix-ui/react-select": "^2.2.6",
|
|
147
|
+
"@radix-ui/react-separator": "^1.1.8",
|
|
148
|
+
"@radix-ui/react-slider": "^1.3.6",
|
|
149
|
+
"@radix-ui/react-slot": "^1.3.0",
|
|
150
|
+
"@radix-ui/react-switch": "^1.2.6",
|
|
151
|
+
"@radix-ui/react-tabs": "^1.1.13",
|
|
152
|
+
"@radix-ui/react-toggle": "^1.1.12",
|
|
153
|
+
"@radix-ui/react-toggle-group": "^1.1.13",
|
|
154
|
+
"@radix-ui/react-tooltip": "^1.2.10",
|
|
155
|
+
"@tanstack/react-virtual": "^3.13.24",
|
|
156
|
+
"@types/d3-geo": "^3.1.0",
|
|
157
|
+
"@types/geojson": "^7946.0.14",
|
|
158
|
+
"@types/topojson-specification": "^1.0.5",
|
|
159
|
+
"class-variance-authority": "^0.7.1",
|
|
160
|
+
"clsx": "^2.1.1",
|
|
161
|
+
"cmdk": "^1.1.1",
|
|
162
|
+
"d3-geo": "^3.1.1",
|
|
163
|
+
"date-fns": "^4.1.0",
|
|
164
|
+
"embla-carousel-react": "^8.6.0",
|
|
165
|
+
"geist": "^1.7.0",
|
|
166
|
+
"input-otp": "^1.4.2",
|
|
167
|
+
"lucide-react": "^1.7.0",
|
|
168
|
+
"react-day-picker": "^9.14.0",
|
|
169
|
+
"recharts": "^3.8.1",
|
|
170
|
+
"sonner": "^2.0.7",
|
|
171
|
+
"tailwind-merge": "^3.0.0",
|
|
172
|
+
"tailwind-variants": "^3.0.0",
|
|
173
|
+
"topojson-client": "^3.1.0",
|
|
174
|
+
"tw-animate-css": "^1.4.0",
|
|
175
|
+
"vaul": "^1.1.2"
|
|
176
|
+
},
|
|
177
|
+
"devDependencies": {
|
|
178
|
+
"@tailwindcss/vite": "^4.0.0",
|
|
179
|
+
"@testing-library/dom": "^10.4.1",
|
|
180
|
+
"@testing-library/jest-dom": "^6.9.1",
|
|
181
|
+
"@testing-library/react": "^16.3.2",
|
|
182
|
+
"@testing-library/user-event": "^14.6.3",
|
|
183
|
+
"@types/react": "^19.0.0",
|
|
184
|
+
"@types/react-dom": "^19.0.0",
|
|
185
|
+
"@types/topojson-client": "^3.1.5",
|
|
186
|
+
"@vitejs/plugin-react": "^4.3.0",
|
|
187
|
+
"@vitest/ui": "^4.1.6",
|
|
188
|
+
"jsdom": "^29.1.1",
|
|
189
|
+
"react-router-dom": "^7.18.2",
|
|
190
|
+
"tailwindcss": "^4.0.0",
|
|
191
|
+
"tsx": "^4.19.0",
|
|
192
|
+
"typescript": "^5.6.0",
|
|
193
|
+
"vite": "^6.0.0",
|
|
194
|
+
"vite-plugin-dts": "^5.0.0",
|
|
195
|
+
"vitest": "^4.1.6"
|
|
196
|
+
},
|
|
197
|
+
"peerDependencies": {
|
|
198
|
+
"react": "^19.0.0",
|
|
199
|
+
"react-dom": "^19.0.0",
|
|
200
|
+
"tailwindcss": "^4.0.0"
|
|
201
|
+
},
|
|
202
|
+
"peerDependenciesMeta": {
|
|
203
|
+
"tailwindcss": {
|
|
204
|
+
"optional": false
|
|
205
|
+
}
|
|
206
|
+
},
|
|
207
|
+
"//exports-shadcn": "O subpath ./shadcn e um ENTRY SEPARADO (nao um re-export do barrel raiz) de proposito: 41 arquivos / 233 nomes exportados contra 3-4 que o consumidor tipico usa. No mesmo entry, qualquer import do pacote arrastaria Radix + cmdk + vaul + embla + input-otp + sonner antes do tree-shaking do consumidor. Deps desses primitivos ficam em rollupOptions.external (vite.lib.config.ts) — sem isso o Rollup as embute e sonner/@hello-pangea-dnd rodam com contexto React duplicado."
|
|
208
|
+
}
|