@snksergio/design-system 0.1.0 → 0.4.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/README.md +34 -1
- package/dist-lib/chunks/{app-shell-BNTvOETJ.mjs → app-shell-BdVam01i.cjs} +55 -55
- package/dist-lib/chunks/app-shell-BdVam01i.cjs.map +1 -0
- package/dist-lib/chunks/{app-shell-CDy42aNI.mjs → app-shell-C_enrPD8.mjs} +86 -86
- package/dist-lib/chunks/app-shell-C_enrPD8.mjs.map +1 -0
- package/dist-lib/chunks/{app-shell-mocks-oO_IV3Gw.mjs → app-shell-mocks-oO_IV3Gw.cjs} +1 -1
- package/dist-lib/chunks/{app-shell-mocks-oO_IV3Gw.mjs.map → app-shell-mocks-oO_IV3Gw.cjs.map} +1 -1
- package/dist-lib/chunks/{badge-B_2Zt52o.mjs → badge-B0D_PRxn.mjs} +10 -10
- package/dist-lib/chunks/badge-B0D_PRxn.mjs.map +1 -0
- package/dist-lib/chunks/{badge-DKpXURa1.mjs → badge-CUttkO1X.cjs} +10 -10
- package/dist-lib/chunks/badge-CUttkO1X.cjs.map +1 -0
- package/dist-lib/chunks/{chat-v2-mocks-BV9Wha_Z.mjs → chat-v2-mocks-BV9Wha_Z.cjs} +1 -1
- package/dist-lib/chunks/{chat-v2-mocks-BV9Wha_Z.mjs.map → chat-v2-mocks-BV9Wha_Z.cjs.map} +1 -1
- package/dist-lib/chunks/{chip-group-CsKBBHW2.mjs → chip-group-2-f_Yo7Y.cjs} +31 -64
- package/dist-lib/chunks/chip-group-2-f_Yo7Y.cjs.map +1 -0
- package/dist-lib/chunks/{chip-group-D3D0i72q.mjs → chip-group-_e-yh1Zq.mjs} +31 -64
- package/dist-lib/chunks/chip-group-_e-yh1Zq.mjs.map +1 -0
- package/dist-lib/chunks/{clientes-showcase-mocks-BMfbNNJh.mjs → clientes-showcase-mocks-CPNOhx1G.cjs} +3 -3
- package/dist-lib/chunks/clientes-showcase-mocks-CPNOhx1G.cjs.map +1 -0
- package/dist-lib/chunks/{clientes-showcase-mocks-Cq9u3nGZ.mjs → clientes-showcase-mocks-DEHCKxMK.mjs} +3 -3
- package/dist-lib/chunks/clientes-showcase-mocks-DEHCKxMK.mjs.map +1 -0
- package/dist-lib/chunks/{input-374MpdBL.mjs → input-BWevV7up.cjs} +3 -3
- package/dist-lib/chunks/input-BWevV7up.cjs.map +1 -0
- package/dist-lib/chunks/{input-DF4XAWmr.mjs → input-C9eKSSEb.mjs} +3 -3
- package/dist-lib/chunks/input-C9eKSSEb.mjs.map +1 -0
- package/dist-lib/chunks/{page-header-mC1gGtOI.mjs → page-header-DM2G1mdi.mjs} +3 -3
- package/dist-lib/chunks/page-header-DM2G1mdi.mjs.map +1 -0
- package/dist-lib/chunks/{page-header-Dw-3wqAG.mjs → page-header-qOywgRWy.cjs} +3 -3
- package/dist-lib/chunks/page-header-qOywgRWy.cjs.map +1 -0
- package/dist-lib/chunks/{panel-bzNmFlEZ.mjs → panel-CjfnpA-4.cjs} +532 -244
- package/dist-lib/chunks/panel-CjfnpA-4.cjs.map +1 -0
- package/dist-lib/chunks/{panel-Ds15whqp.mjs → panel-DZ7X1NZV.mjs} +547 -259
- package/dist-lib/chunks/panel-DZ7X1NZV.mjs.map +1 -0
- package/dist-lib/chunks/{useTheme-Dee4mo-A.mjs → useTheme-Dee4mo-A.cjs} +1 -1
- package/dist-lib/chunks/{useTheme-Dee4mo-A.mjs.map → useTheme-Dee4mo-A.cjs.map} +1 -1
- package/dist-lib/index.cjs +23 -76
- package/dist-lib/index.cjs.map +1 -1
- package/dist-lib/index.mjs +89 -142
- package/dist-lib/index.mjs.map +1 -1
- package/dist-lib/preview/chat.cjs +38 -39
- package/dist-lib/preview/chat.cjs.map +1 -1
- package/dist-lib/preview/chat.mjs +35 -36
- package/dist-lib/preview/chat.mjs.map +1 -1
- package/dist-lib/preview/clientes.cjs +22 -22
- package/dist-lib/preview/clientes.cjs.map +1 -1
- package/dist-lib/preview/clientes.mjs +20 -20
- package/dist-lib/preview/clientes.mjs.map +1 -1
- package/dist-lib/preview/dashboard.cjs +40 -40
- package/dist-lib/preview/dashboard.cjs.map +1 -1
- package/dist-lib/preview/dashboard.mjs +38 -38
- package/dist-lib/preview/dashboard.mjs.map +1 -1
- package/dist-lib/preview/mocks.cjs +3 -3
- package/dist-lib/preview/mocks.mjs +1 -1
- package/dist-lib/theme.css +18 -122
- package/dist-lib/tokens.cjs +24 -160
- package/dist-lib/tokens.cjs.map +1 -1
- package/dist-lib/tokens.mjs +24 -160
- package/dist-lib/tokens.mjs.map +1 -1
- package/package.json +142 -142
- package/dist-lib/chunks/app-shell-BNTvOETJ.mjs.map +0 -1
- package/dist-lib/chunks/app-shell-CDy42aNI.mjs.map +0 -1
- package/dist-lib/chunks/badge-B_2Zt52o.mjs.map +0 -1
- package/dist-lib/chunks/badge-DKpXURa1.mjs.map +0 -1
- package/dist-lib/chunks/chip-group-CsKBBHW2.mjs.map +0 -1
- package/dist-lib/chunks/chip-group-D3D0i72q.mjs.map +0 -1
- package/dist-lib/chunks/clientes-showcase-mocks-BMfbNNJh.mjs.map +0 -1
- package/dist-lib/chunks/clientes-showcase-mocks-Cq9u3nGZ.mjs.map +0 -1
- package/dist-lib/chunks/input-374MpdBL.mjs.map +0 -1
- package/dist-lib/chunks/input-DF4XAWmr.mjs.map +0 -1
- package/dist-lib/chunks/page-header-Dw-3wqAG.mjs.map +0 -1
- package/dist-lib/chunks/page-header-mC1gGtOI.mjs.map +0 -1
- package/dist-lib/chunks/panel-Ds15whqp.mjs.map +0 -1
- package/dist-lib/chunks/panel-bzNmFlEZ.mjs.map +0 -1
|
@@ -32,54 +32,36 @@ const twMerge = tailwindMerge.extendTailwindMerge({
|
|
|
32
32
|
classGroups: {
|
|
33
33
|
"font-size": [
|
|
34
34
|
{
|
|
35
|
+
// Lista 1:1 com tokens/brands/default/semantic/typography.ts.
|
|
36
|
+
// Manter sincronizado com src/utils/tv.ts. Ver L-016.
|
|
35
37
|
text: [
|
|
36
|
-
// Displays
|
|
38
|
+
// Displays (fluid clamp)
|
|
37
39
|
"display-2xl",
|
|
38
40
|
"display-xl",
|
|
39
41
|
"display-lg",
|
|
40
42
|
"display-md",
|
|
41
|
-
// Headings
|
|
43
|
+
// Headings (xs estático, sm-xl fluid clamp)
|
|
42
44
|
"heading-xl",
|
|
43
45
|
"heading-lg",
|
|
44
46
|
"heading-md",
|
|
45
47
|
"heading-sm",
|
|
46
48
|
"heading-xs",
|
|
47
|
-
|
|
48
|
-
// Titles
|
|
49
|
+
// Titles (weight 600 default)
|
|
49
50
|
"title-lg",
|
|
50
51
|
"title-md",
|
|
51
52
|
"title-sm",
|
|
52
|
-
//
|
|
53
|
-
"
|
|
54
|
-
"
|
|
55
|
-
"label-md",
|
|
56
|
-
"label-sm",
|
|
57
|
-
"label-xs",
|
|
58
|
-
// Paragraphs
|
|
59
|
-
"paragraph-xl",
|
|
60
|
-
"paragraph-lg",
|
|
61
|
-
"paragraph-md",
|
|
62
|
-
"paragraph-sm",
|
|
63
|
-
"paragraph-xs",
|
|
64
|
-
// Body
|
|
53
|
+
// Body (xs/sm = weight 500 interactive; md-2xl = 400 corrido)
|
|
54
|
+
"body-2xl",
|
|
55
|
+
"body-xl",
|
|
65
56
|
"body-lg",
|
|
66
57
|
"body-md",
|
|
67
58
|
"body-sm",
|
|
68
|
-
"body-
|
|
69
|
-
|
|
70
|
-
"body-sm-medium",
|
|
71
|
-
// Captions
|
|
59
|
+
"body-xs",
|
|
60
|
+
// Captions (weight 400)
|
|
72
61
|
"caption-md",
|
|
73
62
|
"caption-sm",
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
"subheading-sm",
|
|
77
|
-
"subheading-xs",
|
|
78
|
-
"subheading-2xs",
|
|
79
|
-
// Overlines
|
|
80
|
-
"overline-md",
|
|
81
|
-
"overline-sm",
|
|
82
|
-
// Code
|
|
63
|
+
"caption-xs",
|
|
64
|
+
// Code (mono regular)
|
|
83
65
|
"code-md",
|
|
84
66
|
"code-sm"
|
|
85
67
|
]
|
|
@@ -154,48 +136,33 @@ const twMergeConfig = {
|
|
|
154
136
|
"font-size": [
|
|
155
137
|
{
|
|
156
138
|
text: [
|
|
157
|
-
// Displays
|
|
139
|
+
// Displays (fluid clamp)
|
|
158
140
|
"display-2xl",
|
|
159
141
|
"display-xl",
|
|
160
142
|
"display-lg",
|
|
161
143
|
"display-md",
|
|
162
|
-
// Headings (
|
|
144
|
+
// Headings (xs estático, sm-xl fluid clamp)
|
|
163
145
|
"heading-xl",
|
|
164
146
|
"heading-lg",
|
|
165
147
|
"heading-md",
|
|
166
148
|
"heading-sm",
|
|
167
149
|
"heading-xs",
|
|
168
|
-
// Titles
|
|
150
|
+
// Titles (weight 600 default)
|
|
169
151
|
"title-lg",
|
|
170
152
|
"title-md",
|
|
171
153
|
"title-sm",
|
|
172
|
-
//
|
|
173
|
-
"
|
|
174
|
-
"
|
|
175
|
-
"
|
|
176
|
-
"
|
|
177
|
-
"
|
|
178
|
-
"
|
|
179
|
-
|
|
180
|
-
// Paragraphs (+ paragraph-base 13px)
|
|
181
|
-
"paragraph-xl",
|
|
182
|
-
"paragraph-lg",
|
|
183
|
-
"paragraph-md",
|
|
184
|
-
"paragraph-sm",
|
|
185
|
-
"paragraph-base",
|
|
186
|
-
"paragraph-xs",
|
|
187
|
-
// Captions (+ caption-xs 10px)
|
|
154
|
+
// Body (xs/sm = weight 500 interactive; md-2xl = 400 corrido)
|
|
155
|
+
"body-2xl",
|
|
156
|
+
"body-xl",
|
|
157
|
+
"body-lg",
|
|
158
|
+
"body-md",
|
|
159
|
+
"body-sm",
|
|
160
|
+
"body-xs",
|
|
161
|
+
// Captions (weight 400)
|
|
188
162
|
"caption-md",
|
|
189
163
|
"caption-sm",
|
|
190
164
|
"caption-xs",
|
|
191
|
-
//
|
|
192
|
-
"subheading-md",
|
|
193
|
-
"subheading-sm",
|
|
194
|
-
"subheading-xs",
|
|
195
|
-
"subheading-2xs",
|
|
196
|
-
"subheading-strong-md",
|
|
197
|
-
"subheading-strong-sm",
|
|
198
|
-
// Code
|
|
165
|
+
// Code (mono regular)
|
|
199
166
|
"code-md",
|
|
200
167
|
"code-sm"
|
|
201
168
|
]
|
|
@@ -214,7 +181,7 @@ const buttonVariants = tv({
|
|
|
214
181
|
"select-none whitespace-nowrap",
|
|
215
182
|
"focus-visible:outline-none",
|
|
216
183
|
"border border-transparent",
|
|
217
|
-
"text-
|
|
184
|
+
"text-body-sm font-semibold leading-none",
|
|
218
185
|
// 13px / 600 — alinhado com sandbox btn
|
|
219
186
|
"[&_svg]:shrink-0",
|
|
220
187
|
// SVG não diminui; tamanho controlado por size
|
|
@@ -478,12 +445,12 @@ const chipVariants = tv({
|
|
|
478
445
|
],
|
|
479
446
|
variants: {
|
|
480
447
|
size: {
|
|
481
|
-
sm: "h-[24px] px-pad-md text-
|
|
482
|
-
md: "h-form-xs px-pad-lg text-
|
|
448
|
+
sm: "h-[24px] px-pad-md text-caption-sm [&_svg]:size-[12px]",
|
|
449
|
+
md: "h-form-xs px-pad-lg text-body-xs font-normal [&_svg]:size-[12px]",
|
|
483
450
|
// 28px
|
|
484
|
-
lg: "h-form-sm px-pad-xl text-
|
|
451
|
+
lg: "h-form-sm px-pad-xl text-body-sm font-normal [&_svg]:size-[14px]",
|
|
485
452
|
// 32px
|
|
486
|
-
xl: "h-form-md px-pad-xl text-
|
|
453
|
+
xl: "h-form-md px-pad-xl text-body-sm font-normal [&_svg]:size-[14px]"
|
|
487
454
|
// 36px (= Button md)
|
|
488
455
|
},
|
|
489
456
|
/**
|
|
@@ -597,7 +564,7 @@ const chipVariants = tv({
|
|
|
597
564
|
const chipCount = tv({
|
|
598
565
|
base: [
|
|
599
566
|
"inline-flex items-center justify-center min-w-[16px] h-[16px] px-[4px]",
|
|
600
|
-
"rounded-radius-full text-
|
|
567
|
+
"rounded-radius-full text-caption-xs font-semibold leading-none",
|
|
601
568
|
"bg-bg-muted text-fg-default"
|
|
602
569
|
]
|
|
603
570
|
});
|
|
@@ -793,4 +760,4 @@ exports.chipCount = chipCount;
|
|
|
793
760
|
exports.chipVariants = chipVariants;
|
|
794
761
|
exports.cn = cn;
|
|
795
762
|
exports.tv = tv;
|
|
796
|
-
//# sourceMappingURL=chip-group-
|
|
763
|
+
//# sourceMappingURL=chip-group-2-f_Yo7Y.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chip-group-2-f_Yo7Y.cjs","sources":["../../src/lib/utils.ts","../../src/utils/tv.ts","../../src/components/ui/Button/button.styles.ts","../../src/components/ui/Button/button.tsx","../../src/components/ui/Chip/chip.styles.ts","../../src/components/ui/Chip/chip.tsx","../../src/components/ui/Chip/chip-group.tsx"],"sourcesContent":["import { type ClassValue, clsx } from \"clsx\";\r\nimport { extendTailwindMerge } from \"tailwind-merge\";\r\n\r\n/**\r\n * tw-merge configurado pra reconhecer:\r\n *\r\n * 1) Presets tipográficos do iGreen DS como `font-size` (e não text-color).\r\n * Sem isso, `text-title-md` e `text-fg-default` colidem e um é removido.\r\n *\r\n * 2) Prefixos DS (pad-*, sp-*, gp-*, radius-*, sh-*, form-*) como conflitantes\r\n * com utilitários nativos do Tailwind. Sem isso, `p-pad-4xl` + `p-0` no cn()\r\n * deixava AMBOS no className final (24px + 0 = 24px ganhava).\r\n */\r\n\r\n/** Padding/Margin spacing: pad-* (padding contexts), sp-* (geral) */\r\nconst isDsPad = (v: string) => /^(pad|sp)-/.test(v);\r\n/** Gap: gp-* */\r\nconst isDsGap = (v: string) => /^gp-/.test(v);\r\n/** Border-radius: radius-* */\r\nconst isDsRadius = (v: string) => /^radius-/.test(v);\r\n/** Shadow: sh-* */\r\nconst isDsShadow = (v: string) => /^sh-/.test(v);\r\n/** Form heights: form-* (min-h, h, w, size) */\r\nconst isDsForm = (v: string) => /^form-/.test(v);\r\n\r\nconst twMerge = extendTailwindMerge({\r\n extend: {\r\n classGroups: {\r\n \"font-size\": [\r\n {\r\n // Lista 1:1 com tokens/brands/default/semantic/typography.ts.\r\n // Manter sincronizado com src/utils/tv.ts. Ver L-016.\r\n text: [\r\n // Displays (fluid clamp)\r\n \"display-2xl\", \"display-xl\", \"display-lg\", \"display-md\",\r\n // Headings (xs estático, sm-xl fluid clamp)\r\n \"heading-xl\", \"heading-lg\", \"heading-md\", \"heading-sm\", \"heading-xs\",\r\n // Titles (weight 600 default)\r\n \"title-lg\", \"title-md\", \"title-sm\",\r\n // Body (xs/sm = weight 500 interactive; md-2xl = 400 corrido)\r\n \"body-2xl\", \"body-xl\", \"body-lg\", \"body-md\", \"body-sm\", \"body-xs\",\r\n // Captions (weight 400)\r\n \"caption-md\", \"caption-sm\", \"caption-xs\",\r\n // Code (mono regular)\r\n \"code-md\", \"code-sm\",\r\n ],\r\n },\r\n ],\r\n\r\n /* ── Padding ──────────────────────────────────────────────────────── */\r\n p: [{ p: [isDsPad] }],\r\n px: [{ px: [isDsPad] }],\r\n py: [{ py: [isDsPad] }],\r\n pt: [{ pt: [isDsPad] }],\r\n pr: [{ pr: [isDsPad] }],\r\n pb: [{ pb: [isDsPad] }],\r\n pl: [{ pl: [isDsPad] }],\r\n ps: [{ ps: [isDsPad] }],\r\n pe: [{ pe: [isDsPad] }],\r\n\r\n /* ── Margin (usa mesmo sp-*) ──────────────────────────────────────── */\r\n m: [{ m: [isDsPad] }],\r\n mx: [{ mx: [isDsPad] }],\r\n my: [{ my: [isDsPad] }],\r\n mt: [{ mt: [isDsPad] }],\r\n mr: [{ mr: [isDsPad] }],\r\n mb: [{ mb: [isDsPad] }],\r\n ml: [{ ml: [isDsPad] }],\r\n ms: [{ ms: [isDsPad] }],\r\n me: [{ me: [isDsPad] }],\r\n\r\n /* ── Inset / position (top/right/bottom/left) ─────────────────────── */\r\n inset: [{ inset: [isDsPad] }],\r\n \"inset-x\": [{ \"inset-x\": [isDsPad] }],\r\n \"inset-y\": [{ \"inset-y\": [isDsPad] }],\r\n \"top\": [{ top: [isDsPad] }],\r\n \"right\": [{ right: [isDsPad] }],\r\n \"bottom\": [{ bottom: [isDsPad] }],\r\n \"left\": [{ left: [isDsPad] }],\r\n \"start\": [{ start: [isDsPad] }],\r\n \"end\": [{ end: [isDsPad] }],\r\n\r\n /* ── Gap ──────────────────────────────────────────────────────────── */\r\n gap: [{ gap: [isDsGap] }],\r\n \"gap-x\": [{ \"gap-x\": [isDsGap] }],\r\n \"gap-y\": [{ \"gap-y\": [isDsGap] }],\r\n\r\n /* ── Rounded (todas as cantos) ────────────────────────────────────── */\r\n rounded: [{ rounded: [isDsRadius] }],\r\n \"rounded-s\": [{ \"rounded-s\": [isDsRadius] }],\r\n \"rounded-e\": [{ \"rounded-e\": [isDsRadius] }],\r\n \"rounded-t\": [{ \"rounded-t\": [isDsRadius] }],\r\n \"rounded-r\": [{ \"rounded-r\": [isDsRadius] }],\r\n \"rounded-b\": [{ \"rounded-b\": [isDsRadius] }],\r\n \"rounded-l\": [{ \"rounded-l\": [isDsRadius] }],\r\n \"rounded-ss\": [{ \"rounded-ss\": [isDsRadius] }],\r\n \"rounded-se\": [{ \"rounded-se\": [isDsRadius] }],\r\n \"rounded-ee\": [{ \"rounded-ee\": [isDsRadius] }],\r\n \"rounded-es\": [{ \"rounded-es\": [isDsRadius] }],\r\n \"rounded-tl\": [{ \"rounded-tl\": [isDsRadius] }],\r\n \"rounded-tr\": [{ \"rounded-tr\": [isDsRadius] }],\r\n \"rounded-br\": [{ \"rounded-br\": [isDsRadius] }],\r\n \"rounded-bl\": [{ \"rounded-bl\": [isDsRadius] }],\r\n\r\n /* ── Shadow ───────────────────────────────────────────────────────── */\r\n shadow: [{ shadow: [isDsShadow] }],\r\n\r\n /* ── Form sizes (min-h, h, w, size) ───────────────────────────────── */\r\n \"min-h\": [{ \"min-h\": [isDsForm] }],\r\n h: [{ h: [isDsForm] }],\r\n w: [{ w: [isDsForm] }],\r\n size: [{ size: [isDsForm] }],\r\n },\r\n },\r\n});\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","// src/utils/tv.ts\r\n// tv() customizado que ensina o tailwind-merge a reconhecer\r\n// os presets tipográficos do iGreen como font-size, não text-color.\r\nimport { tv as tvBase, type TVConfig } from \"tailwind-variants\";\r\n\r\n// Objeto de config — NÃO é o resultado de extendTailwindMerge()\r\n// TV3 recebe o config diretamente e aplica o merge internamente\r\nconst twMergeConfig = {\r\n extend: {\r\n classGroups: {\r\n \"font-size\": [\r\n {\r\n text: [\r\n // Displays (fluid clamp)\r\n \"display-2xl\", \"display-xl\", \"display-lg\", \"display-md\",\r\n // Headings (xs estático, sm-xl fluid clamp)\r\n \"heading-xl\", \"heading-lg\", \"heading-md\", \"heading-sm\", \"heading-xs\",\r\n // Titles (weight 600 default)\r\n \"title-lg\", \"title-md\", \"title-sm\",\r\n // Body (xs/sm = weight 500 interactive; md-2xl = 400 corrido)\r\n \"body-2xl\", \"body-xl\", \"body-lg\", \"body-md\", \"body-sm\", \"body-xs\",\r\n // Captions (weight 400)\r\n \"caption-md\", \"caption-sm\", \"caption-xs\",\r\n // Code (mono regular)\r\n \"code-md\", \"code-sm\",\r\n ],\r\n },\r\n ],\r\n },\r\n },\r\n};\r\n\r\nexport const tv: typeof tvBase = (options, config) =>\r\n tvBase(options, {\r\n ...config,\r\n twMergeConfig,\r\n } as TVConfig);\r\n\r\nexport type { VariantProps } from \"tailwind-variants\";\r\n","import { tv, type VariantProps } from \"@/utils/tv\";\r\n\r\n/**\r\n * Button styles — V3 tokens (alinhado com /design-and-table-v2)\r\n *\r\n * Specs base:\r\n * - font-size 13px (text-body-md font-medium = 0.8125rem / 600)\r\n * - border-radius 10px (rounded-radius-lg)\r\n * - secondary usa fg-secondary\r\n * - rings cor-pura via ring.{brand|danger|success|warning|secondary}\r\n *\r\n * Variants color: primary/secondary/critical/success/warning\r\n * - primary → bg-brand / fg-brand / border-brand\r\n * - critical → bg-danger / fg-danger / border-danger-muted\r\n * - secondary → neutros (bg-muted, fg-secondary, border-default)\r\n *\r\n * Variants visual: filled/outline/soft/ghost\r\n *\r\n * Sizes mantidas (largura/espaçamento como estavam).\r\n *\r\n * Disabled: opacity-50 (v3 não tem bg-disabled token).\r\n */\r\nexport const buttonVariants = tv({\r\n base: [\r\n \"inline-flex items-center justify-center\",\r\n \"select-none whitespace-nowrap\",\r\n \"focus-visible:outline-none\",\r\n \"border border-transparent\",\r\n \"text-body-sm font-semibold leading-none\", // 13px / 600 — alinhado com sandbox btn\r\n \"[&_svg]:shrink-0\", // SVG não diminui; tamanho controlado por size\r\n \"transition-all duration-200 ease-out\",\r\n \"cursor-pointer\",\r\n \"focus-visible:ring-4\",\r\n ],\r\n\r\n variants: {\r\n color: {\r\n primary: \"focus-visible:ring-ring-brand\",\r\n secondary: \"focus-visible:ring-ring-secondary\",\r\n critical: \"focus-visible:ring-ring-danger\",\r\n success: \"focus-visible:ring-ring-success\",\r\n warning: \"focus-visible:ring-ring-warning\",\r\n },\r\n\r\n variant: {\r\n filled: \"\",\r\n outline: \"\",\r\n soft: \"\",\r\n ghost: \"bg-transparent\",\r\n },\r\n\r\n size: {\r\n // h28 / pad 10 / gap 6 / radius 8 / icon 12\r\n \"2xs\": \"min-h-form-xs px-pad-lg gap-gp-sm rounded-radius-md [&_svg]:size-[12px]\",\r\n // h32 / pad 12 / gap 6 / radius 8 / icon 14\r\n xs: \"min-h-form-sm px-pad-xl gap-gp-sm rounded-radius-md [&_svg]:size-[14px]\",\r\n // h36 / pad 12 / gap 6 / radius 10 / icon 14\r\n sm: \"min-h-form-md px-pad-xl gap-gp-sm rounded-radius-lg [&_svg]:size-[14px]\",\r\n // h40 / pad 16 / gap 6 / radius 10 / icon 14 (alinhado com sandbox Exportar)\r\n md: \"min-h-form-lg px-pad-2xl gap-gp-sm rounded-radius-lg [&_svg]:size-[14px]\",\r\n // h44 / pad 16 / gap 8 / radius 10 / icon 16\r\n lg: \"min-h-form-xl px-pad-2xl gap-gp-md rounded-radius-lg [&_svg]:size-[16px]\",\r\n\r\n // Icon buttons — width = height (square). Regra: SVG +2px vs versão com label\r\n // (precisa preencher mais o quadrado sem o texto carregando peso visual).\r\n \"icon-2xs\": \"size-form-xs rounded-radius-md p-0 [&_svg]:size-[14px]\", // 28×28 / +2 (12→14)\r\n \"icon-xs\": \"size-form-sm rounded-radius-md p-0 [&_svg]:size-[16px]\", // 32×32 / +2 (14→16)\r\n \"icon-sm\": \"size-form-md rounded-radius-lg p-0 [&_svg]:size-[16px]\", // 36×36 / +2 (14→16)\r\n \"icon-md\": \"size-form-lg rounded-radius-lg p-0 [&_svg]:size-[16px]\", // 40×40 / +2 (14→16)\r\n \"icon-lg\": \"size-form-xl rounded-radius-lg p-0 [&_svg]:size-[18px]\", // 44×44 / +2 (16→18)\r\n },\r\n\r\n fullWidth: {\r\n true: \"w-full flex-1\",\r\n },\r\n\r\n /**\r\n * Shape do botão:\r\n * - rounded (default): mantém o radius da `size` (varia por tamanho)\r\n * - pill: força `rounded-full` (override com `!` pra ganhar do size)\r\n */\r\n shape: {\r\n rounded: \"\",\r\n pill: \"!rounded-full\",\r\n },\r\n\r\n disabled: {\r\n true: \"pointer-events-none opacity-50\",\r\n },\r\n },\r\n\r\n compoundVariants: [\r\n // ── Primary (brand) ─────────────────────────────────────────────\r\n {\r\n color: \"primary\", variant: \"filled\",\r\n class: \"bg-bg-brand text-fg-on-brand hover:bg-bg-brand-hover\",\r\n },\r\n {\r\n color: \"primary\", variant: \"outline\",\r\n class: \"bg-bg-surface border-border-brand text-fg-brand shadow-sh-sm hover:bg-bg-brand-subtle hover:border-transparent hover:shadow-sh-none\",\r\n },\r\n {\r\n color: \"primary\", variant: \"soft\",\r\n class: \"bg-bg-brand-subtle text-fg-brand hover:bg-bg-brand-subtle-hover\",\r\n },\r\n {\r\n color: \"primary\", variant: \"ghost\",\r\n class: \"text-fg-brand hover:bg-bg-brand-subtle\",\r\n },\r\n\r\n // ── Secondary (neutro) ──────────────────────────────────────────\r\n {\r\n color: \"secondary\", variant: \"filled\",\r\n class: \"bg-bg-muted text-fg-muted hover:bg-bg-muted-hover hover:text-fg-default\",\r\n },\r\n {\r\n // Outline alinhado com `.btn.tbl-tool-btn` do design-and-table-v2:\r\n // light = bg-surface + border-subtle + fg-default + shadow-sm (mantém no hover)\r\n // dark = bg-muted + border-input + fg-muted + sem shadow\r\n color: \"secondary\", variant: \"outline\",\r\n class: [\r\n \"bg-bg-surface border-border-subtle text-fg-default shadow-sh-sm\",\r\n \"dark:bg-bg-muted dark:border-border-input dark:text-fg-muted dark:shadow-sh-none\",\r\n \"hover:bg-bg-muted-hover hover:text-fg-default\",\r\n \"dark:hover:bg-bg-muted-hover dark:hover:text-fg-default\",\r\n ].join(\" \"),\r\n },\r\n {\r\n color: \"secondary\", variant: \"soft\",\r\n class: \"bg-bg-muted text-fg-muted hover:bg-bg-muted-hover hover:text-fg-default\",\r\n },\r\n {\r\n color: \"secondary\", variant: \"ghost\",\r\n class: \"text-fg-muted hover:bg-bg-muted hover:text-fg-default\",\r\n },\r\n\r\n // ── Critical (danger) ───────────────────────────────────────────\r\n {\r\n color: \"critical\", variant: \"filled\",\r\n class: \"bg-bg-danger text-fg-on-danger hover:bg-bg-danger-hover\",\r\n },\r\n {\r\n color: \"critical\", variant: \"outline\",\r\n class: \"bg-bg-surface border-border-danger-muted text-fg-danger shadow-sh-sm hover:bg-bg-danger-muted hover:shadow-sh-none\",\r\n },\r\n {\r\n color: \"critical\", variant: \"soft\",\r\n class: \"bg-bg-danger-muted text-fg-danger hover:bg-bg-danger-muted-hover\",\r\n },\r\n {\r\n color: \"critical\", variant: \"ghost\",\r\n class: \"text-fg-danger hover:bg-bg-danger-muted\",\r\n },\r\n\r\n // ── Success ─────────────────────────────────────────────────────\r\n {\r\n color: \"success\", variant: \"filled\",\r\n class: \"bg-bg-success text-fg-on-success hover:bg-bg-success-hover\",\r\n },\r\n {\r\n color: \"success\", variant: \"outline\",\r\n class: \"bg-bg-surface border-border-success-muted text-fg-success shadow-sh-sm hover:bg-bg-success-muted hover:shadow-sh-none\",\r\n },\r\n {\r\n color: \"success\", variant: \"soft\",\r\n class: \"bg-bg-success-muted text-fg-success hover:bg-bg-success-muted-hover\",\r\n },\r\n {\r\n color: \"success\", variant: \"ghost\",\r\n class: \"text-fg-success hover:bg-bg-success-muted\",\r\n },\r\n\r\n // ── Warning ─────────────────────────────────────────────────────\r\n {\r\n color: \"warning\", variant: \"filled\",\r\n class: \"bg-bg-warning text-fg-on-warning hover:bg-bg-warning-hover\",\r\n },\r\n {\r\n color: \"warning\", variant: \"outline\",\r\n class: \"bg-bg-surface border-border-warning-muted text-fg-warning shadow-sh-sm hover:bg-bg-warning-muted hover:shadow-sh-none\",\r\n },\r\n {\r\n color: \"warning\", variant: \"soft\",\r\n class: \"bg-bg-warning-muted text-fg-warning hover:bg-bg-warning-muted-hover\",\r\n },\r\n {\r\n color: \"warning\", variant: \"ghost\",\r\n class: \"text-fg-warning hover:bg-bg-warning-muted\",\r\n },\r\n\r\n // ── Disabled — SEMPRE por último ────────────────────────────────\r\n { disabled: true, class: \"pointer-events-none opacity-50\" },\r\n ],\r\n\r\n defaultVariants: {\r\n color: \"primary\",\r\n variant: \"filled\",\r\n size: \"md\",\r\n shape: \"rounded\",\r\n },\r\n});\r\n\r\nexport type ButtonVariantProps = VariantProps<typeof buttonVariants>;\r\n","import { forwardRef } from \"react\";\nimport type { ButtonProps } from \"./button.types\";\nimport { buttonVariants } from \"./button.styles\";\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n function Button(\n {\n color,\n variant,\n size,\n shape,\n fullWidth,\n loading = false,\n disabled = false,\n iconLeft,\n iconRight,\n children,\n className,\n type = \"button\",\n ...rest\n },\n ref,\n ) {\n const isDisabled = disabled || loading;\n\n return (\n <button\n ref={ref}\n type={type}\n disabled={isDisabled}\n className={buttonVariants({\n color,\n variant,\n size,\n shape,\n fullWidth,\n disabled: isDisabled,\n className,\n })}\n {...rest}\n >\n {loading && <Spinner />}\n {!loading && iconLeft}\n {children}\n {!loading && iconRight}\n </button>\n );\n },\n);\n\nfunction Spinner() {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n className=\"animate-spin\"\n >\n <circle\n cx=\"8\"\n cy=\"8\"\n r=\"6\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeDasharray=\"28\"\n strokeDashoffset=\"8\"\n className=\"opacity-70\"\n />\n </svg>\n );\n}\n","import { tv, type VariantProps } from \"@/utils/tv\";\r\n\r\n/**\r\n * Chip styles — pílula compacta pra status, tags, filtros, abas.\r\n *\r\n * Pode ser estático (span) ou interativo (button via `onClick` / dentro de ChipGroup).\r\n *\r\n * Variantes:\r\n * - color: primary | neutral | danger | warning | success | info\r\n * - variant: solid | outline | soft\r\n * - size: sm (24px) | md (28px = form-xs) | lg (32px = form-sm)\r\n *\r\n * Padding/font-size escalam por size — alturas coerentes com o sistema (sm < form-xs\r\n * pra ficar mais compacto que o menor botão; md/lg alinham com Button).\r\n */\r\nexport const chipVariants = tv({\r\n base: [\r\n \"inline-flex items-center justify-center gap-gp-xs shrink-0\",\r\n \"font-semibold whitespace-nowrap select-none\",\r\n \"transition-[background-color,color,border-color,box-shadow] duration-150\",\r\n \"[&_svg]:shrink-0\",\r\n ],\r\n variants: {\r\n size: {\r\n sm: \"h-[24px] px-pad-md text-caption-sm [&_svg]:size-[12px]\",\r\n md: \"h-form-xs px-pad-lg text-body-xs font-normal [&_svg]:size-[12px]\", // 28px\r\n lg: \"h-form-sm px-pad-xl text-body-sm font-normal [&_svg]:size-[14px]\", // 32px\r\n xl: \"h-form-md px-pad-xl text-body-sm font-normal [&_svg]:size-[14px]\", // 36px (= Button md)\r\n },\r\n /**\r\n * `pill` = rounded-full (default — chip pílula clássico).\r\n * `rounded` = canto arredondado igual ao Button (radius-md em sm/md, radius-lg em lg/xl).\r\n */\r\n shape: {\r\n pill: \"rounded-radius-full\",\r\n rounded: \"\", // aplica via compoundVariants por size\r\n },\r\n color: {\r\n primary: \"\",\r\n neutral: \"\",\r\n danger: \"\",\r\n warning: \"\",\r\n success: \"\",\r\n info: \"\",\r\n },\r\n variant: {\r\n solid: \"\",\r\n outline: \"border\",\r\n soft: \"\",\r\n \"soft-outline\": \"border\",\r\n },\r\n interactive: {\r\n true: \"cursor-pointer outline-none focus-visible:shadow-sh-ring\",\r\n false: \"\",\r\n },\r\n selected: {\r\n true: \"\",\r\n false: \"\",\r\n },\r\n },\r\n compoundVariants: [\r\n /* ── Shape rounded × size — radius proporcional ao Button ──── */\r\n { shape: \"rounded\", size: \"sm\", class: \"rounded-radius-md\" },\r\n { shape: \"rounded\", size: \"md\", class: \"rounded-radius-md\" },\r\n { shape: \"rounded\", size: \"lg\", class: \"rounded-radius-lg\" },\r\n { shape: \"rounded\", size: \"xl\", class: \"rounded-radius-lg\" },\r\n\r\n /* ── Solid ──────────────────────────────────────────────────── */\r\n { color: \"primary\", variant: \"solid\", class: \"bg-bg-brand text-fg-on-brand\" },\r\n { color: \"neutral\", variant: \"solid\", class: \"bg-bg-muted text-fg-default\" },\r\n { color: \"danger\", variant: \"solid\", class: \"bg-bg-danger text-fg-on-danger\" },\r\n { color: \"warning\", variant: \"solid\", class: \"bg-bg-warning text-fg-on-warning\" },\r\n { color: \"success\", variant: \"solid\", class: \"bg-bg-success text-fg-on-success\" },\r\n { color: \"info\", variant: \"solid\", class: \"bg-bg-info text-fg-on-info\" },\r\n\r\n /* ── Outline ────────────────────────────────────────────────── */\r\n { color: \"primary\", variant: \"outline\", class: \"bg-transparent border-border-brand text-fg-brand\" },\r\n { color: \"neutral\", variant: \"outline\", class: \"bg-transparent border-border-default text-fg-default\" },\r\n { color: \"danger\", variant: \"outline\", class: \"bg-transparent border-border-danger-muted text-fg-danger\" },\r\n { color: \"warning\", variant: \"outline\", class: \"bg-transparent border-border-warning-muted text-fg-warning\" },\r\n { color: \"success\", variant: \"outline\", class: \"bg-transparent border-border-success-muted text-fg-success\" },\r\n { color: \"info\", variant: \"outline\", class: \"bg-transparent border-border-info-muted text-fg-info\" },\r\n\r\n /* ── Soft ───────────────────────────────────────────────────── */\r\n { color: \"primary\", variant: \"soft\", class: \"bg-bg-brand-subtle text-fg-brand\" },\r\n { color: \"neutral\", variant: \"soft\", class: \"bg-bg-muted text-fg-muted\" },\r\n { color: \"danger\", variant: \"soft\", class: \"bg-bg-danger-muted text-fg-danger\" },\r\n { color: \"warning\", variant: \"soft\", class: \"bg-bg-warning-muted text-fg-warning\" },\r\n { color: \"success\", variant: \"soft\", class: \"bg-bg-success-muted text-fg-success\" },\r\n { color: \"info\", variant: \"soft\", class: \"bg-bg-info-muted text-fg-info\" },\r\n\r\n /* ── Soft + Outline (bg sutil + borda definida) ─────────────── */\r\n { color: \"primary\", variant: \"soft-outline\", class: \"bg-bg-brand-subtle border-border-brand text-fg-brand\" },\r\n { color: \"neutral\", variant: \"soft-outline\", class: \"bg-bg-muted border-border-default text-fg-muted\" },\r\n { color: \"danger\", variant: \"soft-outline\", class: \"bg-bg-danger-muted border-border-danger-muted text-fg-danger\" },\r\n { color: \"warning\", variant: \"soft-outline\", class: \"bg-bg-warning-muted border-border-warning-muted text-fg-warning\" },\r\n { color: \"success\", variant: \"soft-outline\", class: \"bg-bg-success-muted border-border-success-muted text-fg-success\" },\r\n { color: \"info\", variant: \"soft-outline\", class: \"bg-bg-info-muted border-border-info-muted text-fg-info\" },\r\n\r\n /* ── Hover (somente quando interactive) ────────────────────── */\r\n { interactive: true, color: \"primary\", variant: \"solid\", class: \"hover:bg-bg-brand-hover\" },\r\n { interactive: true, color: \"neutral\", variant: \"solid\", class: \"hover:bg-bg-muted-hover\" },\r\n { interactive: true, color: \"danger\", variant: \"solid\", class: \"hover:bg-bg-danger-hover\" },\r\n { interactive: true, color: \"warning\", variant: \"solid\", class: \"hover:bg-bg-warning-hover\" },\r\n { interactive: true, color: \"success\", variant: \"solid\", class: \"hover:bg-bg-success-hover\" },\r\n { interactive: true, color: \"info\", variant: \"solid\", class: \"hover:bg-bg-info-hover\" },\r\n\r\n { interactive: true, color: \"primary\", variant: \"outline\", class: \"hover:bg-bg-brand-subtle\" },\r\n { interactive: true, color: \"neutral\", variant: \"outline\", class: \"hover:bg-bg-muted\" },\r\n { interactive: true, color: \"danger\", variant: \"outline\", class: \"hover:bg-bg-danger-muted\" },\r\n { interactive: true, color: \"warning\", variant: \"outline\", class: \"hover:bg-bg-warning-muted\" },\r\n { interactive: true, color: \"success\", variant: \"outline\", class: \"hover:bg-bg-success-muted\" },\r\n { interactive: true, color: \"info\", variant: \"outline\", class: \"hover:bg-bg-info-muted\" },\r\n\r\n { interactive: true, color: \"primary\", variant: \"soft\", class: \"hover:bg-bg-brand-subtle-hover\" },\r\n { interactive: true, color: \"neutral\", variant: \"soft\", class: \"hover:bg-bg-muted-hover hover:text-fg-default\" },\r\n { interactive: true, color: \"danger\", variant: \"soft\", class: \"hover:bg-bg-danger-muted-hover\" },\r\n { interactive: true, color: \"warning\", variant: \"soft\", class: \"hover:bg-bg-warning-muted-hover\" },\r\n { interactive: true, color: \"success\", variant: \"soft\", class: \"hover:bg-bg-success-muted-hover\" },\r\n { interactive: true, color: \"info\", variant: \"soft\", class: \"hover:bg-bg-info-muted-hover\" },\r\n\r\n { interactive: true, color: \"primary\", variant: \"soft-outline\", class: \"hover:bg-bg-brand-subtle-hover\" },\r\n { interactive: true, color: \"neutral\", variant: \"soft-outline\", class: \"hover:bg-bg-muted-hover hover:text-fg-default\" },\r\n { interactive: true, color: \"danger\", variant: \"soft-outline\", class: \"hover:bg-bg-danger-muted-hover\" },\r\n { interactive: true, color: \"warning\", variant: \"soft-outline\", class: \"hover:bg-bg-warning-muted-hover\" },\r\n { interactive: true, color: \"success\", variant: \"soft-outline\", class: \"hover:bg-bg-success-muted-hover\" },\r\n { interactive: true, color: \"info\", variant: \"soft-outline\", class: \"hover:bg-bg-info-muted-hover\" },\r\n\r\n /* ── Selected (ChipGroup) — força \"soft\" da color como visual ativo ── */\r\n { selected: true, color: \"primary\", class: \"bg-bg-brand-subtle text-fg-brand border-transparent\" },\r\n { selected: true, color: \"neutral\", class: \"bg-bg-accent text-fg-default font-semibold border-transparent shadow-sh-sm\" },\r\n { selected: true, color: \"danger\", class: \"bg-bg-danger-muted text-fg-danger border-transparent\" },\r\n { selected: true, color: \"warning\", class: \"bg-bg-warning-muted text-fg-warning border-transparent\" },\r\n { selected: true, color: \"success\", class: \"bg-bg-success-muted text-fg-success border-transparent\" },\r\n { selected: true, color: \"info\", class: \"bg-bg-info-muted text-fg-info border-transparent\" },\r\n ],\r\n defaultVariants: {\r\n color: \"neutral\",\r\n variant: \"soft\",\r\n size: \"md\",\r\n shape: \"pill\",\r\n interactive: false,\r\n selected: false,\r\n },\r\n});\r\n\r\nexport type ChipVariantProps = VariantProps<typeof chipVariants>;\r\n\r\n/** Contador inline pra usar como adornment no Chip (ex: \"Não lidas (3)\") */\r\nexport const chipCount = tv({\r\n base: [\r\n \"inline-flex items-center justify-center min-w-[16px] h-[16px] px-[4px]\",\r\n \"rounded-radius-full text-caption-xs font-semibold leading-none\",\r\n \"bg-bg-muted text-fg-default\",\r\n ],\r\n});\r\n","import { forwardRef, type ReactNode } from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { chipVariants, type ChipVariantProps } from \"./chip.styles\";\n\nexport type ChipProps = Omit<\n React.ButtonHTMLAttributes<HTMLButtonElement> &\n React.HTMLAttributes<HTMLSpanElement>,\n \"color\"\n> &\n ChipVariantProps & {\n /** Conteúdo (label, ícone, etc) */\n children: ReactNode;\n /**\n * Quando passado, o chip vira `<button>` clicável. Se omitido,\n * renderiza como `<span>` estático (pra status/tag).\n */\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n /** Força renderizar como button mesmo sem onClick */\n asButton?: boolean;\n };\n\n/**\n * Chip — pílula compacta pra status/tags/filtros/abas.\n *\n * Dual-mode:\n * - **Span estático** (default): usado pra Badge-like (status, categoria, count)\n * - **Button interativo**: quando recebe `onClick` OU `asButton`\n *\n * Pra grupo de seleção (radio/checkbox via chips), use `<ChipGroup>`.\n *\n * Variantes:\n * - `color`: primary | neutral | danger | warning | success | info (default `neutral`)\n * - `variant`: solid | outline | soft (default `soft`)\n * - `size`: sm (24px) | md (28px) | lg (32px) (default `md`)\n */\nexport const Chip = forwardRef<HTMLElement, ChipProps>(function Chip(\n {\n children,\n color,\n variant,\n size,\n shape,\n selected,\n onClick,\n asButton,\n className,\n type,\n ...rest\n },\n ref,\n) {\n const interactive = Boolean(onClick) || asButton === true;\n const classes = cn(\n chipVariants({ color, variant, size, shape, interactive, selected }),\n className,\n );\n\n if (interactive) {\n return (\n <button\n ref={ref as React.Ref<HTMLButtonElement>}\n type={type ?? \"button\"}\n onClick={onClick}\n className={classes}\n aria-pressed={selected}\n {...(rest as React.ButtonHTMLAttributes<HTMLButtonElement>)}\n >\n {children}\n </button>\n );\n }\n\n return (\n <span\n ref={ref as React.Ref<HTMLSpanElement>}\n className={classes}\n {...(rest as React.HTMLAttributes<HTMLSpanElement>)}\n >\n {children}\n </span>\n );\n});\n","import { createContext, forwardRef, useContext, type ReactNode } from \"react\";\nimport * as ToggleGroupPrimitive from \"@radix-ui/react-toggle-group\";\nimport { cn } from \"@/lib/utils\";\nimport { chipVariants, type ChipVariantProps } from \"./chip.styles\";\n\ntype ChipColor = NonNullable<ChipVariantProps[\"color\"]>;\ntype ChipVariant = NonNullable<ChipVariantProps[\"variant\"]>;\ntype ChipSize = NonNullable<ChipVariantProps[\"size\"]>;\ntype ChipShape = NonNullable<ChipVariantProps[\"shape\"]>;\n\n/* ── Classes do estado SELECTED (data-state=on) por color × variant ── */\n/**\n * Mapeamento color × variant → classes aplicadas em items selecionados\n * (Radix dá `data-state=\"on\"` quando ativo).\n *\n * Inclui todas as 4 variants × 6 cores = 24 combos.\n */\nconst SELECTED_CLASSES: Record<ChipColor, Record<ChipVariant, string>> = {\n primary: {\n solid: \"data-[state=on]:bg-bg-brand data-[state=on]:text-fg-on-brand data-[state=on]:border-transparent\",\n outline: \"data-[state=on]:border-border-brand data-[state=on]:text-fg-brand data-[state=on]:bg-transparent\",\n soft: \"data-[state=on]:bg-bg-brand-subtle data-[state=on]:text-fg-brand data-[state=on]:border-transparent\",\n \"soft-outline\":\"data-[state=on]:bg-bg-brand-subtle data-[state=on]:border-border-brand data-[state=on]:text-fg-brand\",\n },\n neutral: {\n solid: \"data-[state=on]:bg-bg-muted data-[state=on]:text-fg-default data-[state=on]:border-transparent\",\n outline: \"data-[state=on]:border-border-default data-[state=on]:text-fg-default data-[state=on]:bg-transparent\",\n soft: \"data-[state=on]:bg-bg-accent data-[state=on]:text-fg-default data-[state=on]:border-transparent data-[state=on]:shadow-sh-sm\",\n \"soft-outline\":\"data-[state=on]:bg-bg-muted data-[state=on]:border-border-default data-[state=on]:text-fg-default\",\n },\n danger: {\n solid: \"data-[state=on]:bg-bg-danger data-[state=on]:text-fg-on-danger data-[state=on]:border-transparent\",\n outline: \"data-[state=on]:border-border-danger-muted data-[state=on]:text-fg-danger data-[state=on]:bg-transparent\",\n soft: \"data-[state=on]:bg-bg-danger-muted data-[state=on]:text-fg-danger data-[state=on]:border-transparent\",\n \"soft-outline\":\"data-[state=on]:bg-bg-danger-muted data-[state=on]:border-border-danger-muted data-[state=on]:text-fg-danger\",\n },\n warning: {\n solid: \"data-[state=on]:bg-bg-warning data-[state=on]:text-fg-on-warning data-[state=on]:border-transparent\",\n outline: \"data-[state=on]:border-border-warning-muted data-[state=on]:text-fg-warning data-[state=on]:bg-transparent\",\n soft: \"data-[state=on]:bg-bg-warning-muted data-[state=on]:text-fg-warning data-[state=on]:border-transparent\",\n \"soft-outline\":\"data-[state=on]:bg-bg-warning-muted data-[state=on]:border-border-warning-muted data-[state=on]:text-fg-warning\",\n },\n success: {\n solid: \"data-[state=on]:bg-bg-success data-[state=on]:text-fg-on-success data-[state=on]:border-transparent\",\n outline: \"data-[state=on]:border-border-success-muted data-[state=on]:text-fg-success data-[state=on]:bg-transparent\",\n soft: \"data-[state=on]:bg-bg-success-muted data-[state=on]:text-fg-success data-[state=on]:border-transparent\",\n \"soft-outline\":\"data-[state=on]:bg-bg-success-muted data-[state=on]:border-border-success-muted data-[state=on]:text-fg-success\",\n },\n info: {\n solid: \"data-[state=on]:bg-bg-info data-[state=on]:text-fg-on-info data-[state=on]:border-transparent\",\n outline: \"data-[state=on]:border-border-info-muted data-[state=on]:text-fg-info data-[state=on]:bg-transparent\",\n soft: \"data-[state=on]:bg-bg-info-muted data-[state=on]:text-fg-info data-[state=on]:border-transparent\",\n \"soft-outline\":\"data-[state=on]:bg-bg-info-muted data-[state=on]:border-border-info-muted data-[state=on]:text-fg-info\",\n },\n};\n\n/* ── ChipGroup root ──────────────────────────────────────────────── */\n\ntype CommonProps = {\n /** Cor do estado INATIVO (default `\"neutral\"`) */\n inactiveColor?: ChipColor;\n /** Variant do estado INATIVO (default `\"outline\"`) */\n inactiveVariant?: ChipVariant;\n /** Cor do estado ATIVO (default `\"primary\"`) */\n activeColor?: ChipColor;\n /** Variant do estado ATIVO (default `\"soft-outline\"`) */\n activeVariant?: ChipVariant;\n /** Size aplicado em todos os chips do grupo */\n size?: ChipSize;\n /** Shape aplicado em todos os chips (default `\"pill\"`) */\n shape?: ChipShape;\n /** Direção do grupo */\n orientation?: \"horizontal\" | \"vertical\";\n /** Aria-label do grupo */\n ariaLabel?: string;\n className?: string;\n children: ReactNode;\n};\n\ntype SingleProps = CommonProps & {\n type: \"single\";\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n};\n\ntype MultipleProps = CommonProps & {\n type: \"multiple\";\n value?: string[];\n defaultValue?: string[];\n onValueChange?: (value: string[]) => void;\n};\n\nexport type ChipGroupProps = SingleProps | MultipleProps;\n\n/**\n * ChipGroup — agrupa chips com seleção controlada.\n *\n * - `type=\"single\"`: escolha única (radio-like)\n * - `type=\"multiple\"`: escolha múltipla (checkbox-like)\n *\n * **Estado visual configurável independentemente:**\n * - `inactiveColor` + `inactiveVariant` → estilo dos items NÃO selecionados\n * (default: `neutral` + `outline`)\n * - `activeColor` + `activeVariant` → estilo dos items SELECIONADOS\n * (default: `primary` + `soft-outline`)\n *\n * Usa `@radix-ui/react-toggle-group` por baixo.\n */\nexport const ChipGroup = forwardRef<HTMLDivElement, ChipGroupProps>(\n function ChipGroup(props, ref) {\n const {\n inactiveColor = \"neutral\",\n inactiveVariant = \"outline\",\n activeColor = \"primary\",\n activeVariant = \"soft-outline\",\n size = \"md\",\n shape = \"pill\",\n orientation = \"horizontal\",\n ariaLabel,\n className,\n children,\n } = props;\n\n const contextValue = {\n inactiveColor,\n inactiveVariant,\n activeColor,\n activeVariant,\n size,\n shape,\n };\n\n if (props.type === \"single\") {\n return (\n <ChipGroupContext.Provider value={contextValue}>\n <ToggleGroupPrimitive.Root\n ref={ref}\n type=\"single\"\n value={props.value}\n defaultValue={props.defaultValue}\n onValueChange={props.onValueChange as (v: string) => void}\n orientation={orientation}\n aria-label={ariaLabel}\n className={cn(\n \"inline-flex items-center gap-gp-sm\",\n orientation === \"vertical\" && \"flex-col\",\n className,\n )}\n >\n {children}\n </ToggleGroupPrimitive.Root>\n </ChipGroupContext.Provider>\n );\n }\n\n return (\n <ChipGroupContext.Provider value={contextValue}>\n <ToggleGroupPrimitive.Root\n ref={ref}\n type=\"multiple\"\n value={props.value}\n defaultValue={props.defaultValue}\n onValueChange={props.onValueChange as (v: string[]) => void}\n orientation={orientation}\n aria-label={ariaLabel}\n className={cn(\n \"inline-flex items-center gap-gp-sm\",\n orientation === \"vertical\" && \"flex-col\",\n className,\n )}\n >\n {children}\n </ToggleGroupPrimitive.Root>\n </ChipGroupContext.Provider>\n );\n },\n);\n\n/* ── Context ─────────────────────────────────────────────────────── */\ntype ChipGroupContextValue = {\n inactiveColor: ChipColor;\n inactiveVariant: ChipVariant;\n activeColor: ChipColor;\n activeVariant: ChipVariant;\n size: ChipSize;\n shape: ChipShape;\n};\n\nconst ChipGroupContext = createContext<ChipGroupContextValue>({\n inactiveColor: \"neutral\",\n inactiveVariant: \"outline\",\n activeColor: \"primary\",\n activeVariant: \"soft-outline\",\n size: \"md\",\n shape: \"pill\",\n});\n\n/* ── ChipGroupItem ───────────────────────────────────────────────── */\n\nexport type ChipGroupItemProps = Omit<\n React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Item>,\n \"color\"\n>;\n\n/**\n * ChipGroupItem — item dentro do `<ChipGroup>`. Visual gerenciado pelo\n * grupo via context: estilo `inactive*` quando OFF e `active*` quando ON.\n *\n * <ChipGroup type=\"single\" inactiveVariant=\"outline\" activeVariant=\"soft-outline\">\n * <ChipGroupItem value=\"all\">Todas</ChipGroupItem>\n * <ChipGroupItem value=\"unread\">Não lidas</ChipGroupItem>\n * </ChipGroup>\n */\nexport const ChipGroupItem = forwardRef<HTMLButtonElement, ChipGroupItemProps>(\n function ChipGroupItem({ className, children, ...rest }, ref) {\n const {\n inactiveColor,\n inactiveVariant,\n activeColor,\n activeVariant,\n size,\n shape,\n } = useContext(ChipGroupContext);\n\n return (\n <ToggleGroupPrimitive.Item\n ref={ref}\n className={cn(\n // Estado OFF — visual inativo (passa pelo chipVariants normal)\n chipVariants({\n color: inactiveColor,\n variant: inactiveVariant,\n size,\n shape,\n interactive: true,\n }),\n // Estado ON — override via data-state=on com classes do active*\n SELECTED_CLASSES[activeColor][activeVariant],\n className,\n )}\n {...rest}\n >\n {children}\n </ToggleGroupPrimitive.Item>\n );\n },\n);\n"],"names":["extendTailwindMerge","clsx","tvBase","forwardRef","Button","jsxs","jsx","Chip","ChipGroup","ToggleGroupPrimitive","createContext","ChipGroupItem","useContext"],"mappings":"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"}
|
|
@@ -14,54 +14,36 @@ const twMerge = extendTailwindMerge({
|
|
|
14
14
|
classGroups: {
|
|
15
15
|
"font-size": [
|
|
16
16
|
{
|
|
17
|
+
// Lista 1:1 com tokens/brands/default/semantic/typography.ts.
|
|
18
|
+
// Manter sincronizado com src/utils/tv.ts. Ver L-016.
|
|
17
19
|
text: [
|
|
18
|
-
// Displays
|
|
20
|
+
// Displays (fluid clamp)
|
|
19
21
|
"display-2xl",
|
|
20
22
|
"display-xl",
|
|
21
23
|
"display-lg",
|
|
22
24
|
"display-md",
|
|
23
|
-
// Headings
|
|
25
|
+
// Headings (xs estático, sm-xl fluid clamp)
|
|
24
26
|
"heading-xl",
|
|
25
27
|
"heading-lg",
|
|
26
28
|
"heading-md",
|
|
27
29
|
"heading-sm",
|
|
28
30
|
"heading-xs",
|
|
29
|
-
|
|
30
|
-
// Titles
|
|
31
|
+
// Titles (weight 600 default)
|
|
31
32
|
"title-lg",
|
|
32
33
|
"title-md",
|
|
33
34
|
"title-sm",
|
|
34
|
-
//
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
"label-md",
|
|
38
|
-
"label-sm",
|
|
39
|
-
"label-xs",
|
|
40
|
-
// Paragraphs
|
|
41
|
-
"paragraph-xl",
|
|
42
|
-
"paragraph-lg",
|
|
43
|
-
"paragraph-md",
|
|
44
|
-
"paragraph-sm",
|
|
45
|
-
"paragraph-xs",
|
|
46
|
-
// Body
|
|
35
|
+
// Body (xs/sm = weight 500 interactive; md-2xl = 400 corrido)
|
|
36
|
+
"body-2xl",
|
|
37
|
+
"body-xl",
|
|
47
38
|
"body-lg",
|
|
48
39
|
"body-md",
|
|
49
40
|
"body-sm",
|
|
50
|
-
"body-
|
|
51
|
-
|
|
52
|
-
"body-sm-medium",
|
|
53
|
-
// Captions
|
|
41
|
+
"body-xs",
|
|
42
|
+
// Captions (weight 400)
|
|
54
43
|
"caption-md",
|
|
55
44
|
"caption-sm",
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
"subheading-sm",
|
|
59
|
-
"subheading-xs",
|
|
60
|
-
"subheading-2xs",
|
|
61
|
-
// Overlines
|
|
62
|
-
"overline-md",
|
|
63
|
-
"overline-sm",
|
|
64
|
-
// Code
|
|
45
|
+
"caption-xs",
|
|
46
|
+
// Code (mono regular)
|
|
65
47
|
"code-md",
|
|
66
48
|
"code-sm"
|
|
67
49
|
]
|
|
@@ -136,48 +118,33 @@ const twMergeConfig = {
|
|
|
136
118
|
"font-size": [
|
|
137
119
|
{
|
|
138
120
|
text: [
|
|
139
|
-
// Displays
|
|
121
|
+
// Displays (fluid clamp)
|
|
140
122
|
"display-2xl",
|
|
141
123
|
"display-xl",
|
|
142
124
|
"display-lg",
|
|
143
125
|
"display-md",
|
|
144
|
-
// Headings (
|
|
126
|
+
// Headings (xs estático, sm-xl fluid clamp)
|
|
145
127
|
"heading-xl",
|
|
146
128
|
"heading-lg",
|
|
147
129
|
"heading-md",
|
|
148
130
|
"heading-sm",
|
|
149
131
|
"heading-xs",
|
|
150
|
-
// Titles
|
|
132
|
+
// Titles (weight 600 default)
|
|
151
133
|
"title-lg",
|
|
152
134
|
"title-md",
|
|
153
135
|
"title-sm",
|
|
154
|
-
//
|
|
155
|
-
"
|
|
156
|
-
"
|
|
157
|
-
"
|
|
158
|
-
"
|
|
159
|
-
"
|
|
160
|
-
"
|
|
161
|
-
|
|
162
|
-
// Paragraphs (+ paragraph-base 13px)
|
|
163
|
-
"paragraph-xl",
|
|
164
|
-
"paragraph-lg",
|
|
165
|
-
"paragraph-md",
|
|
166
|
-
"paragraph-sm",
|
|
167
|
-
"paragraph-base",
|
|
168
|
-
"paragraph-xs",
|
|
169
|
-
// Captions (+ caption-xs 10px)
|
|
136
|
+
// Body (xs/sm = weight 500 interactive; md-2xl = 400 corrido)
|
|
137
|
+
"body-2xl",
|
|
138
|
+
"body-xl",
|
|
139
|
+
"body-lg",
|
|
140
|
+
"body-md",
|
|
141
|
+
"body-sm",
|
|
142
|
+
"body-xs",
|
|
143
|
+
// Captions (weight 400)
|
|
170
144
|
"caption-md",
|
|
171
145
|
"caption-sm",
|
|
172
146
|
"caption-xs",
|
|
173
|
-
//
|
|
174
|
-
"subheading-md",
|
|
175
|
-
"subheading-sm",
|
|
176
|
-
"subheading-xs",
|
|
177
|
-
"subheading-2xs",
|
|
178
|
-
"subheading-strong-md",
|
|
179
|
-
"subheading-strong-sm",
|
|
180
|
-
// Code
|
|
147
|
+
// Code (mono regular)
|
|
181
148
|
"code-md",
|
|
182
149
|
"code-sm"
|
|
183
150
|
]
|
|
@@ -196,7 +163,7 @@ const buttonVariants = tv({
|
|
|
196
163
|
"select-none whitespace-nowrap",
|
|
197
164
|
"focus-visible:outline-none",
|
|
198
165
|
"border border-transparent",
|
|
199
|
-
"text-
|
|
166
|
+
"text-body-sm font-semibold leading-none",
|
|
200
167
|
// 13px / 600 — alinhado com sandbox btn
|
|
201
168
|
"[&_svg]:shrink-0",
|
|
202
169
|
// SVG não diminui; tamanho controlado por size
|
|
@@ -460,12 +427,12 @@ const chipVariants = tv({
|
|
|
460
427
|
],
|
|
461
428
|
variants: {
|
|
462
429
|
size: {
|
|
463
|
-
sm: "h-[24px] px-pad-md text-
|
|
464
|
-
md: "h-form-xs px-pad-lg text-
|
|
430
|
+
sm: "h-[24px] px-pad-md text-caption-sm [&_svg]:size-[12px]",
|
|
431
|
+
md: "h-form-xs px-pad-lg text-body-xs font-normal [&_svg]:size-[12px]",
|
|
465
432
|
// 28px
|
|
466
|
-
lg: "h-form-sm px-pad-xl text-
|
|
433
|
+
lg: "h-form-sm px-pad-xl text-body-sm font-normal [&_svg]:size-[14px]",
|
|
467
434
|
// 32px
|
|
468
|
-
xl: "h-form-md px-pad-xl text-
|
|
435
|
+
xl: "h-form-md px-pad-xl text-body-sm font-normal [&_svg]:size-[14px]"
|
|
469
436
|
// 36px (= Button md)
|
|
470
437
|
},
|
|
471
438
|
/**
|
|
@@ -579,7 +546,7 @@ const chipVariants = tv({
|
|
|
579
546
|
const chipCount = tv({
|
|
580
547
|
base: [
|
|
581
548
|
"inline-flex items-center justify-center min-w-[16px] h-[16px] px-[4px]",
|
|
582
|
-
"rounded-radius-full text-
|
|
549
|
+
"rounded-radius-full text-caption-xs font-semibold leading-none",
|
|
583
550
|
"bg-bg-muted text-fg-default"
|
|
584
551
|
]
|
|
585
552
|
});
|
|
@@ -777,4 +744,4 @@ export {
|
|
|
777
744
|
chipVariants as f,
|
|
778
745
|
tv as t
|
|
779
746
|
};
|
|
780
|
-
//# sourceMappingURL=chip-group-
|
|
747
|
+
//# sourceMappingURL=chip-group-_e-yh1Zq.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chip-group-_e-yh1Zq.mjs","sources":["../../src/lib/utils.ts","../../src/utils/tv.ts","../../src/components/ui/Button/button.styles.ts","../../src/components/ui/Button/button.tsx","../../src/components/ui/Chip/chip.styles.ts","../../src/components/ui/Chip/chip.tsx","../../src/components/ui/Chip/chip-group.tsx"],"sourcesContent":["import { type ClassValue, clsx } from \"clsx\";\r\nimport { extendTailwindMerge } from \"tailwind-merge\";\r\n\r\n/**\r\n * tw-merge configurado pra reconhecer:\r\n *\r\n * 1) Presets tipográficos do iGreen DS como `font-size` (e não text-color).\r\n * Sem isso, `text-title-md` e `text-fg-default` colidem e um é removido.\r\n *\r\n * 2) Prefixos DS (pad-*, sp-*, gp-*, radius-*, sh-*, form-*) como conflitantes\r\n * com utilitários nativos do Tailwind. Sem isso, `p-pad-4xl` + `p-0` no cn()\r\n * deixava AMBOS no className final (24px + 0 = 24px ganhava).\r\n */\r\n\r\n/** Padding/Margin spacing: pad-* (padding contexts), sp-* (geral) */\r\nconst isDsPad = (v: string) => /^(pad|sp)-/.test(v);\r\n/** Gap: gp-* */\r\nconst isDsGap = (v: string) => /^gp-/.test(v);\r\n/** Border-radius: radius-* */\r\nconst isDsRadius = (v: string) => /^radius-/.test(v);\r\n/** Shadow: sh-* */\r\nconst isDsShadow = (v: string) => /^sh-/.test(v);\r\n/** Form heights: form-* (min-h, h, w, size) */\r\nconst isDsForm = (v: string) => /^form-/.test(v);\r\n\r\nconst twMerge = extendTailwindMerge({\r\n extend: {\r\n classGroups: {\r\n \"font-size\": [\r\n {\r\n // Lista 1:1 com tokens/brands/default/semantic/typography.ts.\r\n // Manter sincronizado com src/utils/tv.ts. Ver L-016.\r\n text: [\r\n // Displays (fluid clamp)\r\n \"display-2xl\", \"display-xl\", \"display-lg\", \"display-md\",\r\n // Headings (xs estático, sm-xl fluid clamp)\r\n \"heading-xl\", \"heading-lg\", \"heading-md\", \"heading-sm\", \"heading-xs\",\r\n // Titles (weight 600 default)\r\n \"title-lg\", \"title-md\", \"title-sm\",\r\n // Body (xs/sm = weight 500 interactive; md-2xl = 400 corrido)\r\n \"body-2xl\", \"body-xl\", \"body-lg\", \"body-md\", \"body-sm\", \"body-xs\",\r\n // Captions (weight 400)\r\n \"caption-md\", \"caption-sm\", \"caption-xs\",\r\n // Code (mono regular)\r\n \"code-md\", \"code-sm\",\r\n ],\r\n },\r\n ],\r\n\r\n /* ── Padding ──────────────────────────────────────────────────────── */\r\n p: [{ p: [isDsPad] }],\r\n px: [{ px: [isDsPad] }],\r\n py: [{ py: [isDsPad] }],\r\n pt: [{ pt: [isDsPad] }],\r\n pr: [{ pr: [isDsPad] }],\r\n pb: [{ pb: [isDsPad] }],\r\n pl: [{ pl: [isDsPad] }],\r\n ps: [{ ps: [isDsPad] }],\r\n pe: [{ pe: [isDsPad] }],\r\n\r\n /* ── Margin (usa mesmo sp-*) ──────────────────────────────────────── */\r\n m: [{ m: [isDsPad] }],\r\n mx: [{ mx: [isDsPad] }],\r\n my: [{ my: [isDsPad] }],\r\n mt: [{ mt: [isDsPad] }],\r\n mr: [{ mr: [isDsPad] }],\r\n mb: [{ mb: [isDsPad] }],\r\n ml: [{ ml: [isDsPad] }],\r\n ms: [{ ms: [isDsPad] }],\r\n me: [{ me: [isDsPad] }],\r\n\r\n /* ── Inset / position (top/right/bottom/left) ─────────────────────── */\r\n inset: [{ inset: [isDsPad] }],\r\n \"inset-x\": [{ \"inset-x\": [isDsPad] }],\r\n \"inset-y\": [{ \"inset-y\": [isDsPad] }],\r\n \"top\": [{ top: [isDsPad] }],\r\n \"right\": [{ right: [isDsPad] }],\r\n \"bottom\": [{ bottom: [isDsPad] }],\r\n \"left\": [{ left: [isDsPad] }],\r\n \"start\": [{ start: [isDsPad] }],\r\n \"end\": [{ end: [isDsPad] }],\r\n\r\n /* ── Gap ──────────────────────────────────────────────────────────── */\r\n gap: [{ gap: [isDsGap] }],\r\n \"gap-x\": [{ \"gap-x\": [isDsGap] }],\r\n \"gap-y\": [{ \"gap-y\": [isDsGap] }],\r\n\r\n /* ── Rounded (todas as cantos) ────────────────────────────────────── */\r\n rounded: [{ rounded: [isDsRadius] }],\r\n \"rounded-s\": [{ \"rounded-s\": [isDsRadius] }],\r\n \"rounded-e\": [{ \"rounded-e\": [isDsRadius] }],\r\n \"rounded-t\": [{ \"rounded-t\": [isDsRadius] }],\r\n \"rounded-r\": [{ \"rounded-r\": [isDsRadius] }],\r\n \"rounded-b\": [{ \"rounded-b\": [isDsRadius] }],\r\n \"rounded-l\": [{ \"rounded-l\": [isDsRadius] }],\r\n \"rounded-ss\": [{ \"rounded-ss\": [isDsRadius] }],\r\n \"rounded-se\": [{ \"rounded-se\": [isDsRadius] }],\r\n \"rounded-ee\": [{ \"rounded-ee\": [isDsRadius] }],\r\n \"rounded-es\": [{ \"rounded-es\": [isDsRadius] }],\r\n \"rounded-tl\": [{ \"rounded-tl\": [isDsRadius] }],\r\n \"rounded-tr\": [{ \"rounded-tr\": [isDsRadius] }],\r\n \"rounded-br\": [{ \"rounded-br\": [isDsRadius] }],\r\n \"rounded-bl\": [{ \"rounded-bl\": [isDsRadius] }],\r\n\r\n /* ── Shadow ───────────────────────────────────────────────────────── */\r\n shadow: [{ shadow: [isDsShadow] }],\r\n\r\n /* ── Form sizes (min-h, h, w, size) ───────────────────────────────── */\r\n \"min-h\": [{ \"min-h\": [isDsForm] }],\r\n h: [{ h: [isDsForm] }],\r\n w: [{ w: [isDsForm] }],\r\n size: [{ size: [isDsForm] }],\r\n },\r\n },\r\n});\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","// src/utils/tv.ts\r\n// tv() customizado que ensina o tailwind-merge a reconhecer\r\n// os presets tipográficos do iGreen como font-size, não text-color.\r\nimport { tv as tvBase, type TVConfig } from \"tailwind-variants\";\r\n\r\n// Objeto de config — NÃO é o resultado de extendTailwindMerge()\r\n// TV3 recebe o config diretamente e aplica o merge internamente\r\nconst twMergeConfig = {\r\n extend: {\r\n classGroups: {\r\n \"font-size\": [\r\n {\r\n text: [\r\n // Displays (fluid clamp)\r\n \"display-2xl\", \"display-xl\", \"display-lg\", \"display-md\",\r\n // Headings (xs estático, sm-xl fluid clamp)\r\n \"heading-xl\", \"heading-lg\", \"heading-md\", \"heading-sm\", \"heading-xs\",\r\n // Titles (weight 600 default)\r\n \"title-lg\", \"title-md\", \"title-sm\",\r\n // Body (xs/sm = weight 500 interactive; md-2xl = 400 corrido)\r\n \"body-2xl\", \"body-xl\", \"body-lg\", \"body-md\", \"body-sm\", \"body-xs\",\r\n // Captions (weight 400)\r\n \"caption-md\", \"caption-sm\", \"caption-xs\",\r\n // Code (mono regular)\r\n \"code-md\", \"code-sm\",\r\n ],\r\n },\r\n ],\r\n },\r\n },\r\n};\r\n\r\nexport const tv: typeof tvBase = (options, config) =>\r\n tvBase(options, {\r\n ...config,\r\n twMergeConfig,\r\n } as TVConfig);\r\n\r\nexport type { VariantProps } from \"tailwind-variants\";\r\n","import { tv, type VariantProps } from \"@/utils/tv\";\r\n\r\n/**\r\n * Button styles — V3 tokens (alinhado com /design-and-table-v2)\r\n *\r\n * Specs base:\r\n * - font-size 13px (text-body-md font-medium = 0.8125rem / 600)\r\n * - border-radius 10px (rounded-radius-lg)\r\n * - secondary usa fg-secondary\r\n * - rings cor-pura via ring.{brand|danger|success|warning|secondary}\r\n *\r\n * Variants color: primary/secondary/critical/success/warning\r\n * - primary → bg-brand / fg-brand / border-brand\r\n * - critical → bg-danger / fg-danger / border-danger-muted\r\n * - secondary → neutros (bg-muted, fg-secondary, border-default)\r\n *\r\n * Variants visual: filled/outline/soft/ghost\r\n *\r\n * Sizes mantidas (largura/espaçamento como estavam).\r\n *\r\n * Disabled: opacity-50 (v3 não tem bg-disabled token).\r\n */\r\nexport const buttonVariants = tv({\r\n base: [\r\n \"inline-flex items-center justify-center\",\r\n \"select-none whitespace-nowrap\",\r\n \"focus-visible:outline-none\",\r\n \"border border-transparent\",\r\n \"text-body-sm font-semibold leading-none\", // 13px / 600 — alinhado com sandbox btn\r\n \"[&_svg]:shrink-0\", // SVG não diminui; tamanho controlado por size\r\n \"transition-all duration-200 ease-out\",\r\n \"cursor-pointer\",\r\n \"focus-visible:ring-4\",\r\n ],\r\n\r\n variants: {\r\n color: {\r\n primary: \"focus-visible:ring-ring-brand\",\r\n secondary: \"focus-visible:ring-ring-secondary\",\r\n critical: \"focus-visible:ring-ring-danger\",\r\n success: \"focus-visible:ring-ring-success\",\r\n warning: \"focus-visible:ring-ring-warning\",\r\n },\r\n\r\n variant: {\r\n filled: \"\",\r\n outline: \"\",\r\n soft: \"\",\r\n ghost: \"bg-transparent\",\r\n },\r\n\r\n size: {\r\n // h28 / pad 10 / gap 6 / radius 8 / icon 12\r\n \"2xs\": \"min-h-form-xs px-pad-lg gap-gp-sm rounded-radius-md [&_svg]:size-[12px]\",\r\n // h32 / pad 12 / gap 6 / radius 8 / icon 14\r\n xs: \"min-h-form-sm px-pad-xl gap-gp-sm rounded-radius-md [&_svg]:size-[14px]\",\r\n // h36 / pad 12 / gap 6 / radius 10 / icon 14\r\n sm: \"min-h-form-md px-pad-xl gap-gp-sm rounded-radius-lg [&_svg]:size-[14px]\",\r\n // h40 / pad 16 / gap 6 / radius 10 / icon 14 (alinhado com sandbox Exportar)\r\n md: \"min-h-form-lg px-pad-2xl gap-gp-sm rounded-radius-lg [&_svg]:size-[14px]\",\r\n // h44 / pad 16 / gap 8 / radius 10 / icon 16\r\n lg: \"min-h-form-xl px-pad-2xl gap-gp-md rounded-radius-lg [&_svg]:size-[16px]\",\r\n\r\n // Icon buttons — width = height (square). Regra: SVG +2px vs versão com label\r\n // (precisa preencher mais o quadrado sem o texto carregando peso visual).\r\n \"icon-2xs\": \"size-form-xs rounded-radius-md p-0 [&_svg]:size-[14px]\", // 28×28 / +2 (12→14)\r\n \"icon-xs\": \"size-form-sm rounded-radius-md p-0 [&_svg]:size-[16px]\", // 32×32 / +2 (14→16)\r\n \"icon-sm\": \"size-form-md rounded-radius-lg p-0 [&_svg]:size-[16px]\", // 36×36 / +2 (14→16)\r\n \"icon-md\": \"size-form-lg rounded-radius-lg p-0 [&_svg]:size-[16px]\", // 40×40 / +2 (14→16)\r\n \"icon-lg\": \"size-form-xl rounded-radius-lg p-0 [&_svg]:size-[18px]\", // 44×44 / +2 (16→18)\r\n },\r\n\r\n fullWidth: {\r\n true: \"w-full flex-1\",\r\n },\r\n\r\n /**\r\n * Shape do botão:\r\n * - rounded (default): mantém o radius da `size` (varia por tamanho)\r\n * - pill: força `rounded-full` (override com `!` pra ganhar do size)\r\n */\r\n shape: {\r\n rounded: \"\",\r\n pill: \"!rounded-full\",\r\n },\r\n\r\n disabled: {\r\n true: \"pointer-events-none opacity-50\",\r\n },\r\n },\r\n\r\n compoundVariants: [\r\n // ── Primary (brand) ─────────────────────────────────────────────\r\n {\r\n color: \"primary\", variant: \"filled\",\r\n class: \"bg-bg-brand text-fg-on-brand hover:bg-bg-brand-hover\",\r\n },\r\n {\r\n color: \"primary\", variant: \"outline\",\r\n class: \"bg-bg-surface border-border-brand text-fg-brand shadow-sh-sm hover:bg-bg-brand-subtle hover:border-transparent hover:shadow-sh-none\",\r\n },\r\n {\r\n color: \"primary\", variant: \"soft\",\r\n class: \"bg-bg-brand-subtle text-fg-brand hover:bg-bg-brand-subtle-hover\",\r\n },\r\n {\r\n color: \"primary\", variant: \"ghost\",\r\n class: \"text-fg-brand hover:bg-bg-brand-subtle\",\r\n },\r\n\r\n // ── Secondary (neutro) ──────────────────────────────────────────\r\n {\r\n color: \"secondary\", variant: \"filled\",\r\n class: \"bg-bg-muted text-fg-muted hover:bg-bg-muted-hover hover:text-fg-default\",\r\n },\r\n {\r\n // Outline alinhado com `.btn.tbl-tool-btn` do design-and-table-v2:\r\n // light = bg-surface + border-subtle + fg-default + shadow-sm (mantém no hover)\r\n // dark = bg-muted + border-input + fg-muted + sem shadow\r\n color: \"secondary\", variant: \"outline\",\r\n class: [\r\n \"bg-bg-surface border-border-subtle text-fg-default shadow-sh-sm\",\r\n \"dark:bg-bg-muted dark:border-border-input dark:text-fg-muted dark:shadow-sh-none\",\r\n \"hover:bg-bg-muted-hover hover:text-fg-default\",\r\n \"dark:hover:bg-bg-muted-hover dark:hover:text-fg-default\",\r\n ].join(\" \"),\r\n },\r\n {\r\n color: \"secondary\", variant: \"soft\",\r\n class: \"bg-bg-muted text-fg-muted hover:bg-bg-muted-hover hover:text-fg-default\",\r\n },\r\n {\r\n color: \"secondary\", variant: \"ghost\",\r\n class: \"text-fg-muted hover:bg-bg-muted hover:text-fg-default\",\r\n },\r\n\r\n // ── Critical (danger) ───────────────────────────────────────────\r\n {\r\n color: \"critical\", variant: \"filled\",\r\n class: \"bg-bg-danger text-fg-on-danger hover:bg-bg-danger-hover\",\r\n },\r\n {\r\n color: \"critical\", variant: \"outline\",\r\n class: \"bg-bg-surface border-border-danger-muted text-fg-danger shadow-sh-sm hover:bg-bg-danger-muted hover:shadow-sh-none\",\r\n },\r\n {\r\n color: \"critical\", variant: \"soft\",\r\n class: \"bg-bg-danger-muted text-fg-danger hover:bg-bg-danger-muted-hover\",\r\n },\r\n {\r\n color: \"critical\", variant: \"ghost\",\r\n class: \"text-fg-danger hover:bg-bg-danger-muted\",\r\n },\r\n\r\n // ── Success ─────────────────────────────────────────────────────\r\n {\r\n color: \"success\", variant: \"filled\",\r\n class: \"bg-bg-success text-fg-on-success hover:bg-bg-success-hover\",\r\n },\r\n {\r\n color: \"success\", variant: \"outline\",\r\n class: \"bg-bg-surface border-border-success-muted text-fg-success shadow-sh-sm hover:bg-bg-success-muted hover:shadow-sh-none\",\r\n },\r\n {\r\n color: \"success\", variant: \"soft\",\r\n class: \"bg-bg-success-muted text-fg-success hover:bg-bg-success-muted-hover\",\r\n },\r\n {\r\n color: \"success\", variant: \"ghost\",\r\n class: \"text-fg-success hover:bg-bg-success-muted\",\r\n },\r\n\r\n // ── Warning ─────────────────────────────────────────────────────\r\n {\r\n color: \"warning\", variant: \"filled\",\r\n class: \"bg-bg-warning text-fg-on-warning hover:bg-bg-warning-hover\",\r\n },\r\n {\r\n color: \"warning\", variant: \"outline\",\r\n class: \"bg-bg-surface border-border-warning-muted text-fg-warning shadow-sh-sm hover:bg-bg-warning-muted hover:shadow-sh-none\",\r\n },\r\n {\r\n color: \"warning\", variant: \"soft\",\r\n class: \"bg-bg-warning-muted text-fg-warning hover:bg-bg-warning-muted-hover\",\r\n },\r\n {\r\n color: \"warning\", variant: \"ghost\",\r\n class: \"text-fg-warning hover:bg-bg-warning-muted\",\r\n },\r\n\r\n // ── Disabled — SEMPRE por último ────────────────────────────────\r\n { disabled: true, class: \"pointer-events-none opacity-50\" },\r\n ],\r\n\r\n defaultVariants: {\r\n color: \"primary\",\r\n variant: \"filled\",\r\n size: \"md\",\r\n shape: \"rounded\",\r\n },\r\n});\r\n\r\nexport type ButtonVariantProps = VariantProps<typeof buttonVariants>;\r\n","import { forwardRef } from \"react\";\nimport type { ButtonProps } from \"./button.types\";\nimport { buttonVariants } from \"./button.styles\";\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n function Button(\n {\n color,\n variant,\n size,\n shape,\n fullWidth,\n loading = false,\n disabled = false,\n iconLeft,\n iconRight,\n children,\n className,\n type = \"button\",\n ...rest\n },\n ref,\n ) {\n const isDisabled = disabled || loading;\n\n return (\n <button\n ref={ref}\n type={type}\n disabled={isDisabled}\n className={buttonVariants({\n color,\n variant,\n size,\n shape,\n fullWidth,\n disabled: isDisabled,\n className,\n })}\n {...rest}\n >\n {loading && <Spinner />}\n {!loading && iconLeft}\n {children}\n {!loading && iconRight}\n </button>\n );\n },\n);\n\nfunction Spinner() {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n className=\"animate-spin\"\n >\n <circle\n cx=\"8\"\n cy=\"8\"\n r=\"6\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeDasharray=\"28\"\n strokeDashoffset=\"8\"\n className=\"opacity-70\"\n />\n </svg>\n );\n}\n","import { tv, type VariantProps } from \"@/utils/tv\";\r\n\r\n/**\r\n * Chip styles — pílula compacta pra status, tags, filtros, abas.\r\n *\r\n * Pode ser estático (span) ou interativo (button via `onClick` / dentro de ChipGroup).\r\n *\r\n * Variantes:\r\n * - color: primary | neutral | danger | warning | success | info\r\n * - variant: solid | outline | soft\r\n * - size: sm (24px) | md (28px = form-xs) | lg (32px = form-sm)\r\n *\r\n * Padding/font-size escalam por size — alturas coerentes com o sistema (sm < form-xs\r\n * pra ficar mais compacto que o menor botão; md/lg alinham com Button).\r\n */\r\nexport const chipVariants = tv({\r\n base: [\r\n \"inline-flex items-center justify-center gap-gp-xs shrink-0\",\r\n \"font-semibold whitespace-nowrap select-none\",\r\n \"transition-[background-color,color,border-color,box-shadow] duration-150\",\r\n \"[&_svg]:shrink-0\",\r\n ],\r\n variants: {\r\n size: {\r\n sm: \"h-[24px] px-pad-md text-caption-sm [&_svg]:size-[12px]\",\r\n md: \"h-form-xs px-pad-lg text-body-xs font-normal [&_svg]:size-[12px]\", // 28px\r\n lg: \"h-form-sm px-pad-xl text-body-sm font-normal [&_svg]:size-[14px]\", // 32px\r\n xl: \"h-form-md px-pad-xl text-body-sm font-normal [&_svg]:size-[14px]\", // 36px (= Button md)\r\n },\r\n /**\r\n * `pill` = rounded-full (default — chip pílula clássico).\r\n * `rounded` = canto arredondado igual ao Button (radius-md em sm/md, radius-lg em lg/xl).\r\n */\r\n shape: {\r\n pill: \"rounded-radius-full\",\r\n rounded: \"\", // aplica via compoundVariants por size\r\n },\r\n color: {\r\n primary: \"\",\r\n neutral: \"\",\r\n danger: \"\",\r\n warning: \"\",\r\n success: \"\",\r\n info: \"\",\r\n },\r\n variant: {\r\n solid: \"\",\r\n outline: \"border\",\r\n soft: \"\",\r\n \"soft-outline\": \"border\",\r\n },\r\n interactive: {\r\n true: \"cursor-pointer outline-none focus-visible:shadow-sh-ring\",\r\n false: \"\",\r\n },\r\n selected: {\r\n true: \"\",\r\n false: \"\",\r\n },\r\n },\r\n compoundVariants: [\r\n /* ── Shape rounded × size — radius proporcional ao Button ──── */\r\n { shape: \"rounded\", size: \"sm\", class: \"rounded-radius-md\" },\r\n { shape: \"rounded\", size: \"md\", class: \"rounded-radius-md\" },\r\n { shape: \"rounded\", size: \"lg\", class: \"rounded-radius-lg\" },\r\n { shape: \"rounded\", size: \"xl\", class: \"rounded-radius-lg\" },\r\n\r\n /* ── Solid ──────────────────────────────────────────────────── */\r\n { color: \"primary\", variant: \"solid\", class: \"bg-bg-brand text-fg-on-brand\" },\r\n { color: \"neutral\", variant: \"solid\", class: \"bg-bg-muted text-fg-default\" },\r\n { color: \"danger\", variant: \"solid\", class: \"bg-bg-danger text-fg-on-danger\" },\r\n { color: \"warning\", variant: \"solid\", class: \"bg-bg-warning text-fg-on-warning\" },\r\n { color: \"success\", variant: \"solid\", class: \"bg-bg-success text-fg-on-success\" },\r\n { color: \"info\", variant: \"solid\", class: \"bg-bg-info text-fg-on-info\" },\r\n\r\n /* ── Outline ────────────────────────────────────────────────── */\r\n { color: \"primary\", variant: \"outline\", class: \"bg-transparent border-border-brand text-fg-brand\" },\r\n { color: \"neutral\", variant: \"outline\", class: \"bg-transparent border-border-default text-fg-default\" },\r\n { color: \"danger\", variant: \"outline\", class: \"bg-transparent border-border-danger-muted text-fg-danger\" },\r\n { color: \"warning\", variant: \"outline\", class: \"bg-transparent border-border-warning-muted text-fg-warning\" },\r\n { color: \"success\", variant: \"outline\", class: \"bg-transparent border-border-success-muted text-fg-success\" },\r\n { color: \"info\", variant: \"outline\", class: \"bg-transparent border-border-info-muted text-fg-info\" },\r\n\r\n /* ── Soft ───────────────────────────────────────────────────── */\r\n { color: \"primary\", variant: \"soft\", class: \"bg-bg-brand-subtle text-fg-brand\" },\r\n { color: \"neutral\", variant: \"soft\", class: \"bg-bg-muted text-fg-muted\" },\r\n { color: \"danger\", variant: \"soft\", class: \"bg-bg-danger-muted text-fg-danger\" },\r\n { color: \"warning\", variant: \"soft\", class: \"bg-bg-warning-muted text-fg-warning\" },\r\n { color: \"success\", variant: \"soft\", class: \"bg-bg-success-muted text-fg-success\" },\r\n { color: \"info\", variant: \"soft\", class: \"bg-bg-info-muted text-fg-info\" },\r\n\r\n /* ── Soft + Outline (bg sutil + borda definida) ─────────────── */\r\n { color: \"primary\", variant: \"soft-outline\", class: \"bg-bg-brand-subtle border-border-brand text-fg-brand\" },\r\n { color: \"neutral\", variant: \"soft-outline\", class: \"bg-bg-muted border-border-default text-fg-muted\" },\r\n { color: \"danger\", variant: \"soft-outline\", class: \"bg-bg-danger-muted border-border-danger-muted text-fg-danger\" },\r\n { color: \"warning\", variant: \"soft-outline\", class: \"bg-bg-warning-muted border-border-warning-muted text-fg-warning\" },\r\n { color: \"success\", variant: \"soft-outline\", class: \"bg-bg-success-muted border-border-success-muted text-fg-success\" },\r\n { color: \"info\", variant: \"soft-outline\", class: \"bg-bg-info-muted border-border-info-muted text-fg-info\" },\r\n\r\n /* ── Hover (somente quando interactive) ────────────────────── */\r\n { interactive: true, color: \"primary\", variant: \"solid\", class: \"hover:bg-bg-brand-hover\" },\r\n { interactive: true, color: \"neutral\", variant: \"solid\", class: \"hover:bg-bg-muted-hover\" },\r\n { interactive: true, color: \"danger\", variant: \"solid\", class: \"hover:bg-bg-danger-hover\" },\r\n { interactive: true, color: \"warning\", variant: \"solid\", class: \"hover:bg-bg-warning-hover\" },\r\n { interactive: true, color: \"success\", variant: \"solid\", class: \"hover:bg-bg-success-hover\" },\r\n { interactive: true, color: \"info\", variant: \"solid\", class: \"hover:bg-bg-info-hover\" },\r\n\r\n { interactive: true, color: \"primary\", variant: \"outline\", class: \"hover:bg-bg-brand-subtle\" },\r\n { interactive: true, color: \"neutral\", variant: \"outline\", class: \"hover:bg-bg-muted\" },\r\n { interactive: true, color: \"danger\", variant: \"outline\", class: \"hover:bg-bg-danger-muted\" },\r\n { interactive: true, color: \"warning\", variant: \"outline\", class: \"hover:bg-bg-warning-muted\" },\r\n { interactive: true, color: \"success\", variant: \"outline\", class: \"hover:bg-bg-success-muted\" },\r\n { interactive: true, color: \"info\", variant: \"outline\", class: \"hover:bg-bg-info-muted\" },\r\n\r\n { interactive: true, color: \"primary\", variant: \"soft\", class: \"hover:bg-bg-brand-subtle-hover\" },\r\n { interactive: true, color: \"neutral\", variant: \"soft\", class: \"hover:bg-bg-muted-hover hover:text-fg-default\" },\r\n { interactive: true, color: \"danger\", variant: \"soft\", class: \"hover:bg-bg-danger-muted-hover\" },\r\n { interactive: true, color: \"warning\", variant: \"soft\", class: \"hover:bg-bg-warning-muted-hover\" },\r\n { interactive: true, color: \"success\", variant: \"soft\", class: \"hover:bg-bg-success-muted-hover\" },\r\n { interactive: true, color: \"info\", variant: \"soft\", class: \"hover:bg-bg-info-muted-hover\" },\r\n\r\n { interactive: true, color: \"primary\", variant: \"soft-outline\", class: \"hover:bg-bg-brand-subtle-hover\" },\r\n { interactive: true, color: \"neutral\", variant: \"soft-outline\", class: \"hover:bg-bg-muted-hover hover:text-fg-default\" },\r\n { interactive: true, color: \"danger\", variant: \"soft-outline\", class: \"hover:bg-bg-danger-muted-hover\" },\r\n { interactive: true, color: \"warning\", variant: \"soft-outline\", class: \"hover:bg-bg-warning-muted-hover\" },\r\n { interactive: true, color: \"success\", variant: \"soft-outline\", class: \"hover:bg-bg-success-muted-hover\" },\r\n { interactive: true, color: \"info\", variant: \"soft-outline\", class: \"hover:bg-bg-info-muted-hover\" },\r\n\r\n /* ── Selected (ChipGroup) — força \"soft\" da color como visual ativo ── */\r\n { selected: true, color: \"primary\", class: \"bg-bg-brand-subtle text-fg-brand border-transparent\" },\r\n { selected: true, color: \"neutral\", class: \"bg-bg-accent text-fg-default font-semibold border-transparent shadow-sh-sm\" },\r\n { selected: true, color: \"danger\", class: \"bg-bg-danger-muted text-fg-danger border-transparent\" },\r\n { selected: true, color: \"warning\", class: \"bg-bg-warning-muted text-fg-warning border-transparent\" },\r\n { selected: true, color: \"success\", class: \"bg-bg-success-muted text-fg-success border-transparent\" },\r\n { selected: true, color: \"info\", class: \"bg-bg-info-muted text-fg-info border-transparent\" },\r\n ],\r\n defaultVariants: {\r\n color: \"neutral\",\r\n variant: \"soft\",\r\n size: \"md\",\r\n shape: \"pill\",\r\n interactive: false,\r\n selected: false,\r\n },\r\n});\r\n\r\nexport type ChipVariantProps = VariantProps<typeof chipVariants>;\r\n\r\n/** Contador inline pra usar como adornment no Chip (ex: \"Não lidas (3)\") */\r\nexport const chipCount = tv({\r\n base: [\r\n \"inline-flex items-center justify-center min-w-[16px] h-[16px] px-[4px]\",\r\n \"rounded-radius-full text-caption-xs font-semibold leading-none\",\r\n \"bg-bg-muted text-fg-default\",\r\n ],\r\n});\r\n","import { forwardRef, type ReactNode } from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { chipVariants, type ChipVariantProps } from \"./chip.styles\";\n\nexport type ChipProps = Omit<\n React.ButtonHTMLAttributes<HTMLButtonElement> &\n React.HTMLAttributes<HTMLSpanElement>,\n \"color\"\n> &\n ChipVariantProps & {\n /** Conteúdo (label, ícone, etc) */\n children: ReactNode;\n /**\n * Quando passado, o chip vira `<button>` clicável. Se omitido,\n * renderiza como `<span>` estático (pra status/tag).\n */\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n /** Força renderizar como button mesmo sem onClick */\n asButton?: boolean;\n };\n\n/**\n * Chip — pílula compacta pra status/tags/filtros/abas.\n *\n * Dual-mode:\n * - **Span estático** (default): usado pra Badge-like (status, categoria, count)\n * - **Button interativo**: quando recebe `onClick` OU `asButton`\n *\n * Pra grupo de seleção (radio/checkbox via chips), use `<ChipGroup>`.\n *\n * Variantes:\n * - `color`: primary | neutral | danger | warning | success | info (default `neutral`)\n * - `variant`: solid | outline | soft (default `soft`)\n * - `size`: sm (24px) | md (28px) | lg (32px) (default `md`)\n */\nexport const Chip = forwardRef<HTMLElement, ChipProps>(function Chip(\n {\n children,\n color,\n variant,\n size,\n shape,\n selected,\n onClick,\n asButton,\n className,\n type,\n ...rest\n },\n ref,\n) {\n const interactive = Boolean(onClick) || asButton === true;\n const classes = cn(\n chipVariants({ color, variant, size, shape, interactive, selected }),\n className,\n );\n\n if (interactive) {\n return (\n <button\n ref={ref as React.Ref<HTMLButtonElement>}\n type={type ?? \"button\"}\n onClick={onClick}\n className={classes}\n aria-pressed={selected}\n {...(rest as React.ButtonHTMLAttributes<HTMLButtonElement>)}\n >\n {children}\n </button>\n );\n }\n\n return (\n <span\n ref={ref as React.Ref<HTMLSpanElement>}\n className={classes}\n {...(rest as React.HTMLAttributes<HTMLSpanElement>)}\n >\n {children}\n </span>\n );\n});\n","import { createContext, forwardRef, useContext, type ReactNode } from \"react\";\nimport * as ToggleGroupPrimitive from \"@radix-ui/react-toggle-group\";\nimport { cn } from \"@/lib/utils\";\nimport { chipVariants, type ChipVariantProps } from \"./chip.styles\";\n\ntype ChipColor = NonNullable<ChipVariantProps[\"color\"]>;\ntype ChipVariant = NonNullable<ChipVariantProps[\"variant\"]>;\ntype ChipSize = NonNullable<ChipVariantProps[\"size\"]>;\ntype ChipShape = NonNullable<ChipVariantProps[\"shape\"]>;\n\n/* ── Classes do estado SELECTED (data-state=on) por color × variant ── */\n/**\n * Mapeamento color × variant → classes aplicadas em items selecionados\n * (Radix dá `data-state=\"on\"` quando ativo).\n *\n * Inclui todas as 4 variants × 6 cores = 24 combos.\n */\nconst SELECTED_CLASSES: Record<ChipColor, Record<ChipVariant, string>> = {\n primary: {\n solid: \"data-[state=on]:bg-bg-brand data-[state=on]:text-fg-on-brand data-[state=on]:border-transparent\",\n outline: \"data-[state=on]:border-border-brand data-[state=on]:text-fg-brand data-[state=on]:bg-transparent\",\n soft: \"data-[state=on]:bg-bg-brand-subtle data-[state=on]:text-fg-brand data-[state=on]:border-transparent\",\n \"soft-outline\":\"data-[state=on]:bg-bg-brand-subtle data-[state=on]:border-border-brand data-[state=on]:text-fg-brand\",\n },\n neutral: {\n solid: \"data-[state=on]:bg-bg-muted data-[state=on]:text-fg-default data-[state=on]:border-transparent\",\n outline: \"data-[state=on]:border-border-default data-[state=on]:text-fg-default data-[state=on]:bg-transparent\",\n soft: \"data-[state=on]:bg-bg-accent data-[state=on]:text-fg-default data-[state=on]:border-transparent data-[state=on]:shadow-sh-sm\",\n \"soft-outline\":\"data-[state=on]:bg-bg-muted data-[state=on]:border-border-default data-[state=on]:text-fg-default\",\n },\n danger: {\n solid: \"data-[state=on]:bg-bg-danger data-[state=on]:text-fg-on-danger data-[state=on]:border-transparent\",\n outline: \"data-[state=on]:border-border-danger-muted data-[state=on]:text-fg-danger data-[state=on]:bg-transparent\",\n soft: \"data-[state=on]:bg-bg-danger-muted data-[state=on]:text-fg-danger data-[state=on]:border-transparent\",\n \"soft-outline\":\"data-[state=on]:bg-bg-danger-muted data-[state=on]:border-border-danger-muted data-[state=on]:text-fg-danger\",\n },\n warning: {\n solid: \"data-[state=on]:bg-bg-warning data-[state=on]:text-fg-on-warning data-[state=on]:border-transparent\",\n outline: \"data-[state=on]:border-border-warning-muted data-[state=on]:text-fg-warning data-[state=on]:bg-transparent\",\n soft: \"data-[state=on]:bg-bg-warning-muted data-[state=on]:text-fg-warning data-[state=on]:border-transparent\",\n \"soft-outline\":\"data-[state=on]:bg-bg-warning-muted data-[state=on]:border-border-warning-muted data-[state=on]:text-fg-warning\",\n },\n success: {\n solid: \"data-[state=on]:bg-bg-success data-[state=on]:text-fg-on-success data-[state=on]:border-transparent\",\n outline: \"data-[state=on]:border-border-success-muted data-[state=on]:text-fg-success data-[state=on]:bg-transparent\",\n soft: \"data-[state=on]:bg-bg-success-muted data-[state=on]:text-fg-success data-[state=on]:border-transparent\",\n \"soft-outline\":\"data-[state=on]:bg-bg-success-muted data-[state=on]:border-border-success-muted data-[state=on]:text-fg-success\",\n },\n info: {\n solid: \"data-[state=on]:bg-bg-info data-[state=on]:text-fg-on-info data-[state=on]:border-transparent\",\n outline: \"data-[state=on]:border-border-info-muted data-[state=on]:text-fg-info data-[state=on]:bg-transparent\",\n soft: \"data-[state=on]:bg-bg-info-muted data-[state=on]:text-fg-info data-[state=on]:border-transparent\",\n \"soft-outline\":\"data-[state=on]:bg-bg-info-muted data-[state=on]:border-border-info-muted data-[state=on]:text-fg-info\",\n },\n};\n\n/* ── ChipGroup root ──────────────────────────────────────────────── */\n\ntype CommonProps = {\n /** Cor do estado INATIVO (default `\"neutral\"`) */\n inactiveColor?: ChipColor;\n /** Variant do estado INATIVO (default `\"outline\"`) */\n inactiveVariant?: ChipVariant;\n /** Cor do estado ATIVO (default `\"primary\"`) */\n activeColor?: ChipColor;\n /** Variant do estado ATIVO (default `\"soft-outline\"`) */\n activeVariant?: ChipVariant;\n /** Size aplicado em todos os chips do grupo */\n size?: ChipSize;\n /** Shape aplicado em todos os chips (default `\"pill\"`) */\n shape?: ChipShape;\n /** Direção do grupo */\n orientation?: \"horizontal\" | \"vertical\";\n /** Aria-label do grupo */\n ariaLabel?: string;\n className?: string;\n children: ReactNode;\n};\n\ntype SingleProps = CommonProps & {\n type: \"single\";\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n};\n\ntype MultipleProps = CommonProps & {\n type: \"multiple\";\n value?: string[];\n defaultValue?: string[];\n onValueChange?: (value: string[]) => void;\n};\n\nexport type ChipGroupProps = SingleProps | MultipleProps;\n\n/**\n * ChipGroup — agrupa chips com seleção controlada.\n *\n * - `type=\"single\"`: escolha única (radio-like)\n * - `type=\"multiple\"`: escolha múltipla (checkbox-like)\n *\n * **Estado visual configurável independentemente:**\n * - `inactiveColor` + `inactiveVariant` → estilo dos items NÃO selecionados\n * (default: `neutral` + `outline`)\n * - `activeColor` + `activeVariant` → estilo dos items SELECIONADOS\n * (default: `primary` + `soft-outline`)\n *\n * Usa `@radix-ui/react-toggle-group` por baixo.\n */\nexport const ChipGroup = forwardRef<HTMLDivElement, ChipGroupProps>(\n function ChipGroup(props, ref) {\n const {\n inactiveColor = \"neutral\",\n inactiveVariant = \"outline\",\n activeColor = \"primary\",\n activeVariant = \"soft-outline\",\n size = \"md\",\n shape = \"pill\",\n orientation = \"horizontal\",\n ariaLabel,\n className,\n children,\n } = props;\n\n const contextValue = {\n inactiveColor,\n inactiveVariant,\n activeColor,\n activeVariant,\n size,\n shape,\n };\n\n if (props.type === \"single\") {\n return (\n <ChipGroupContext.Provider value={contextValue}>\n <ToggleGroupPrimitive.Root\n ref={ref}\n type=\"single\"\n value={props.value}\n defaultValue={props.defaultValue}\n onValueChange={props.onValueChange as (v: string) => void}\n orientation={orientation}\n aria-label={ariaLabel}\n className={cn(\n \"inline-flex items-center gap-gp-sm\",\n orientation === \"vertical\" && \"flex-col\",\n className,\n )}\n >\n {children}\n </ToggleGroupPrimitive.Root>\n </ChipGroupContext.Provider>\n );\n }\n\n return (\n <ChipGroupContext.Provider value={contextValue}>\n <ToggleGroupPrimitive.Root\n ref={ref}\n type=\"multiple\"\n value={props.value}\n defaultValue={props.defaultValue}\n onValueChange={props.onValueChange as (v: string[]) => void}\n orientation={orientation}\n aria-label={ariaLabel}\n className={cn(\n \"inline-flex items-center gap-gp-sm\",\n orientation === \"vertical\" && \"flex-col\",\n className,\n )}\n >\n {children}\n </ToggleGroupPrimitive.Root>\n </ChipGroupContext.Provider>\n );\n },\n);\n\n/* ── Context ─────────────────────────────────────────────────────── */\ntype ChipGroupContextValue = {\n inactiveColor: ChipColor;\n inactiveVariant: ChipVariant;\n activeColor: ChipColor;\n activeVariant: ChipVariant;\n size: ChipSize;\n shape: ChipShape;\n};\n\nconst ChipGroupContext = createContext<ChipGroupContextValue>({\n inactiveColor: \"neutral\",\n inactiveVariant: \"outline\",\n activeColor: \"primary\",\n activeVariant: \"soft-outline\",\n size: \"md\",\n shape: \"pill\",\n});\n\n/* ── ChipGroupItem ───────────────────────────────────────────────── */\n\nexport type ChipGroupItemProps = Omit<\n React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Item>,\n \"color\"\n>;\n\n/**\n * ChipGroupItem — item dentro do `<ChipGroup>`. Visual gerenciado pelo\n * grupo via context: estilo `inactive*` quando OFF e `active*` quando ON.\n *\n * <ChipGroup type=\"single\" inactiveVariant=\"outline\" activeVariant=\"soft-outline\">\n * <ChipGroupItem value=\"all\">Todas</ChipGroupItem>\n * <ChipGroupItem value=\"unread\">Não lidas</ChipGroupItem>\n * </ChipGroup>\n */\nexport const ChipGroupItem = forwardRef<HTMLButtonElement, ChipGroupItemProps>(\n function ChipGroupItem({ className, children, ...rest }, ref) {\n const {\n inactiveColor,\n inactiveVariant,\n activeColor,\n activeVariant,\n size,\n shape,\n } = useContext(ChipGroupContext);\n\n return (\n <ToggleGroupPrimitive.Item\n ref={ref}\n className={cn(\n // Estado OFF — visual inativo (passa pelo chipVariants normal)\n chipVariants({\n color: inactiveColor,\n variant: inactiveVariant,\n size,\n shape,\n interactive: true,\n }),\n // Estado ON — override via data-state=on com classes do active*\n SELECTED_CLASSES[activeColor][activeVariant],\n className,\n )}\n {...rest}\n >\n {children}\n </ToggleGroupPrimitive.Item>\n );\n },\n);\n"],"names":["tvBase","Button","Chip","ChipGroup","ChipGroupItem"],"mappings":"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"}
|