@snksergio/design-system 0.1.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.
Files changed (73) hide show
  1. package/README.md +260 -0
  2. package/dist-lib/chunks/app-shell-BNTvOETJ.mjs +2681 -0
  3. package/dist-lib/chunks/app-shell-BNTvOETJ.mjs.map +1 -0
  4. package/dist-lib/chunks/app-shell-CDy42aNI.mjs +2663 -0
  5. package/dist-lib/chunks/app-shell-CDy42aNI.mjs.map +1 -0
  6. package/dist-lib/chunks/app-shell-mocks-kWIVSzLs.mjs +208 -0
  7. package/dist-lib/chunks/app-shell-mocks-kWIVSzLs.mjs.map +1 -0
  8. package/dist-lib/chunks/app-shell-mocks-oO_IV3Gw.mjs +207 -0
  9. package/dist-lib/chunks/app-shell-mocks-oO_IV3Gw.mjs.map +1 -0
  10. package/dist-lib/chunks/badge-B_2Zt52o.mjs +797 -0
  11. package/dist-lib/chunks/badge-B_2Zt52o.mjs.map +1 -0
  12. package/dist-lib/chunks/badge-DKpXURa1.mjs +813 -0
  13. package/dist-lib/chunks/badge-DKpXURa1.mjs.map +1 -0
  14. package/dist-lib/chunks/chat-v2-mocks-BV9Wha_Z.mjs +192 -0
  15. package/dist-lib/chunks/chat-v2-mocks-BV9Wha_Z.mjs.map +1 -0
  16. package/dist-lib/chunks/chat-v2-mocks-DvZRkhmz.mjs +193 -0
  17. package/dist-lib/chunks/chat-v2-mocks-DvZRkhmz.mjs.map +1 -0
  18. package/dist-lib/chunks/chip-group-CsKBBHW2.mjs +796 -0
  19. package/dist-lib/chunks/chip-group-CsKBBHW2.mjs.map +1 -0
  20. package/dist-lib/chunks/chip-group-D3D0i72q.mjs +780 -0
  21. package/dist-lib/chunks/chip-group-D3D0i72q.mjs.map +1 -0
  22. package/dist-lib/chunks/clientes-showcase-mocks-BMfbNNJh.mjs +185 -0
  23. package/dist-lib/chunks/clientes-showcase-mocks-BMfbNNJh.mjs.map +1 -0
  24. package/dist-lib/chunks/clientes-showcase-mocks-Cq9u3nGZ.mjs +169 -0
  25. package/dist-lib/chunks/clientes-showcase-mocks-Cq9u3nGZ.mjs.map +1 -0
  26. package/dist-lib/chunks/input-374MpdBL.mjs +72 -0
  27. package/dist-lib/chunks/input-374MpdBL.mjs.map +1 -0
  28. package/dist-lib/chunks/input-DF4XAWmr.mjs +56 -0
  29. package/dist-lib/chunks/input-DF4XAWmr.mjs.map +1 -0
  30. package/dist-lib/chunks/page-header-Dw-3wqAG.mjs +75 -0
  31. package/dist-lib/chunks/page-header-Dw-3wqAG.mjs.map +1 -0
  32. package/dist-lib/chunks/page-header-mC1gGtOI.mjs +76 -0
  33. package/dist-lib/chunks/page-header-mC1gGtOI.mjs.map +1 -0
  34. package/dist-lib/chunks/panel-Ds15whqp.mjs +9717 -0
  35. package/dist-lib/chunks/panel-Ds15whqp.mjs.map +1 -0
  36. package/dist-lib/chunks/panel-bzNmFlEZ.mjs +9737 -0
  37. package/dist-lib/chunks/panel-bzNmFlEZ.mjs.map +1 -0
  38. package/dist-lib/chunks/useTheme-BUPLZBMs.mjs +66 -0
  39. package/dist-lib/chunks/useTheme-BUPLZBMs.mjs.map +1 -0
  40. package/dist-lib/chunks/useTheme-Dee4mo-A.mjs +65 -0
  41. package/dist-lib/chunks/useTheme-Dee4mo-A.mjs.map +1 -0
  42. package/dist-lib/index.cjs +1207 -0
  43. package/dist-lib/index.cjs.map +1 -0
  44. package/dist-lib/index.d.ts +2 -0
  45. package/dist-lib/index.mjs +1209 -0
  46. package/dist-lib/index.mjs.map +1 -0
  47. package/dist-lib/preview/chat.cjs +1120 -0
  48. package/dist-lib/preview/chat.cjs.map +1 -0
  49. package/dist-lib/preview/chat.d.ts +6 -0
  50. package/dist-lib/preview/chat.mjs +1120 -0
  51. package/dist-lib/preview/chat.mjs.map +1 -0
  52. package/dist-lib/preview/clientes.cjs +897 -0
  53. package/dist-lib/preview/clientes.cjs.map +1 -0
  54. package/dist-lib/preview/clientes.d.ts +6 -0
  55. package/dist-lib/preview/clientes.mjs +897 -0
  56. package/dist-lib/preview/clientes.mjs.map +1 -0
  57. package/dist-lib/preview/dashboard.cjs +733 -0
  58. package/dist-lib/preview/dashboard.cjs.map +1 -0
  59. package/dist-lib/preview/dashboard.d.ts +4 -0
  60. package/dist-lib/preview/dashboard.mjs +733 -0
  61. package/dist-lib/preview/dashboard.mjs.map +1 -0
  62. package/dist-lib/preview/mocks.cjs +15 -0
  63. package/dist-lib/preview/mocks.cjs.map +1 -0
  64. package/dist-lib/preview/mocks.d.ts +2 -0
  65. package/dist-lib/preview/mocks.mjs +15 -0
  66. package/dist-lib/preview/mocks.mjs.map +1 -0
  67. package/dist-lib/theme.css +668 -0
  68. package/dist-lib/tokens.cjs +915 -0
  69. package/dist-lib/tokens.cjs.map +1 -0
  70. package/dist-lib/tokens.d.ts +2 -0
  71. package/dist-lib/tokens.mjs +915 -0
  72. package/dist-lib/tokens.mjs.map +1 -0
  73. package/package.json +142 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.cjs","sources":["../tokens/brands/default/primitives/color-palette.ts","../tokens/brands/default/semantic/color-light.ts","../tokens/brands/default/semantic/color-dark.ts","../tokens/brands/default/primitives/scales.ts","../tokens/brands/default/semantic/spacing.ts","../tokens/brands/default/semantic/sizing.ts","../tokens/brands/default/semantic/shape.ts","../tokens/brands/default/semantic/elevation.ts","../tokens/brands/default/primitives/fonts.ts","../tokens/brands/default/semantic/typography.ts","../tokens/brands/default/primitives/motion.ts"],"sourcesContent":["/**\n * color-palette.ts — Primitive color tokens (v3)\n * Tier 1 de 3: valores raw. API privada.\n *\n * Nunca referenciar diretamente em componentes.\n * Componentes usam semantic tokens (color-light / color-dark).\n *\n * Formato: OKLCH (perceptualmente uniforme, suporte P3, ideal para color-mix())\n *\n * Escala 50–950 (12 níveis com 150 extra):\n * 50 → quase branco\n * 500/600 → tom médio (referência de identidade — varia por cor)\n * 950 → quase preto\n *\n * NAMING V3:\n * brand → cor da marca (verde escuro #00803c — light theme)\n * brandContrast → variante brilhante (verde #0fc589 — dark theme)\n * gray → neutro puro (chroma 0)\n * danger → feedback destrutivo/erro (vermelho)\n * success / warning / info → feedback positivo / atenção / informação\n */\n\n// ─── Brand — base oklch(0.5248 0.1415 150.9) em 600 (verde escuro #00803c) ────\nexport const brand = {\n 50: \"oklch(0.97 0.022 151)\",\n 100: \"oklch(0.93 0.045 151)\",\n 150: \"oklch(0.90 0.060 151)\",\n 200: \"oklch(0.85 0.085 151)\",\n 300: \"oklch(0.76 0.115 151)\",\n 400: \"oklch(0.65 0.135 151)\",\n 500: \"oklch(0.58 0.140 151)\",\n 600: \"oklch(0.5248 0.1415 150.9)\", // BASE — identidade light\n 700: \"oklch(0.43 0.130 151)\",\n 800: \"oklch(0.34 0.110 151)\",\n 900: \"oklch(0.24 0.080 151)\",\n 950: \"oklch(0.16 0.055 151)\",\n} as const;\n\n// ─── Brand Contrast — base oklch(0.7289 0.1571 162.3) em 400 (verde brilhante #0fc589) ──\n// Usado no dark theme como cor primária. Hue 162 (ligeiramente diferente do brand 151).\nexport const brandContrast = {\n 50: \"oklch(0.97 0.025 162)\",\n 100: \"oklch(0.94 0.050 162)\",\n 150: \"oklch(0.91 0.075 162)\",\n 200: \"oklch(0.86 0.100 162)\",\n 300: \"oklch(0.79 0.130 162)\",\n 400: \"oklch(0.7289 0.1571 162.3)\", // BASE — identidade dark\n 500: \"oklch(0.65 0.155 162)\",\n 600: \"oklch(0.55 0.140 162)\",\n 700: \"oklch(0.45 0.115 162)\",\n 800: \"oklch(0.34 0.085 162)\",\n 900: \"oklch(0.24 0.060 162)\",\n 950: \"oklch(0.16 0.040 162)\",\n} as const;\n\n// ─── Gray — neutro puro (chroma 0) ────────────────────────────────────────────\nexport const gray = {\n 50: \"oklch(0.973 0 0)\",\n 100: \"oklch(0.94 0 0)\",\n 150: \"oklch(0.931 0 0)\",\n 200: \"oklch(0.9076 0 0)\",\n 300: \"oklch(0.8761 0 0)\",\n 400: \"oklch(0.7025 0 0)\",\n 500: \"oklch(0.4997 0 0)\",\n 600: \"oklch(0.36 0 0)\",\n 700: \"oklch(0.30 0 0)\",\n 800: \"oklch(0.2645 0 0)\",\n 900: \"oklch(0.205 0 0)\",\n 950: \"oklch(0.15 0 0)\",\n} as const;\n\n// ─── Danger — base oklch(0.6368 0.2078 25.33) em 500 (vermelho hue 25) ────────\nexport const danger = {\n 50: \"oklch(0.97 0.025 25)\",\n 100: \"oklch(0.94 0.050 25)\",\n 150: \"oklch(0.91 0.080 25)\",\n 200: \"oklch(0.86 0.110 25)\",\n 300: \"oklch(0.76 0.165 25)\",\n 400: \"oklch(0.69 0.195 25)\",\n 500: \"oklch(0.6368 0.2078 25.33)\", // BASE\n 600: \"oklch(0.56 0.200 25)\",\n 700: \"oklch(0.46 0.180 25)\",\n 800: \"oklch(0.36 0.140 25)\",\n 900: \"oklch(0.26 0.100 25)\",\n 950: \"oklch(0.18 0.070 25)\",\n} as const;\n\n// ─── Success — base oklch(0.66 0.135 161) em 500 (verde teal hue 161) ─────────\nexport const success = {\n 50: \"oklch(0.96 0.025 161)\",\n 100: \"oklch(0.93 0.045 161)\",\n 150: \"oklch(0.90 0.065 161)\",\n 200: \"oklch(0.85 0.090 161)\",\n 300: \"oklch(0.77 0.115 161)\",\n 400: \"oklch(0.71 0.130 161)\",\n 500: \"oklch(0.66 0.135 161)\", // BASE\n 600: \"oklch(0.57 0.130 161)\",\n 700: \"oklch(0.47 0.110 161)\",\n 800: \"oklch(0.37 0.085 161)\",\n 900: \"oklch(0.27 0.060 161)\",\n 950: \"oklch(0.19 0.045 161)\",\n} as const;\n\n// ─── Warning — base oklch(0.81 0.160 81) em 500 (amarelo-laranja hue 81) ──────\nexport const warning = {\n 50: \"oklch(0.97 0.030 81)\",\n 100: \"oklch(0.95 0.060 81)\",\n 150: \"oklch(0.93 0.090 81)\",\n 200: \"oklch(0.91 0.115 81)\",\n 300: \"oklch(0.86 0.150 81)\",\n 400: \"oklch(0.83 0.155 81)\",\n 500: \"oklch(0.81 0.160 81)\", // BASE\n 600: \"oklch(0.71 0.155 81)\",\n 700: \"oklch(0.59 0.135 81)\",\n 800: \"oklch(0.46 0.110 81)\",\n 900: \"oklch(0.34 0.085 81)\",\n 950: \"oklch(0.24 0.060 81)\",\n} as const;\n\n// ─── Info — base oklch(0.62 0.210 280) em 500 (roxo hue 280) ──────────────────\nexport const info = {\n 50: \"oklch(0.97 0.025 280)\",\n 100: \"oklch(0.93 0.050 280)\",\n 150: \"oklch(0.89 0.085 280)\",\n 200: \"oklch(0.85 0.110 280)\",\n 300: \"oklch(0.76 0.155 280)\",\n 400: \"oklch(0.69 0.190 280)\",\n 500: \"oklch(0.62 0.210 280)\", // BASE\n 600: \"oklch(0.55 0.200 280)\",\n 700: \"oklch(0.46 0.170 280)\",\n 800: \"oklch(0.37 0.135 280)\",\n 900: \"oklch(0.27 0.095 280)\",\n 950: \"oklch(0.19 0.070 280)\",\n} as const;\n\n// ─── Universais puros ─────────────────────────────────────────────────────────\nexport const white = \"oklch(1 0 0)\";\nexport const black = \"oklch(0 0 0)\";\n\n// ─── Alpha (overlays / scrim — só black e white com OKLCH slash alpha) ────────\nexport const alpha = {\n black: {\n 4: \"oklch(0 0 0 / 0.04)\",\n 8: \"oklch(0 0 0 / 0.08)\",\n 12: \"oklch(0 0 0 / 0.12)\",\n 16: \"oklch(0 0 0 / 0.16)\",\n 24: \"oklch(0 0 0 / 0.24)\",\n 32: \"oklch(0 0 0 / 0.32)\",\n 40: \"oklch(0 0 0 / 0.40)\",\n 45: \"oklch(0 0 0 / 0.45)\",\n 48: \"oklch(0 0 0 / 0.48)\",\n 55: \"oklch(0 0 0 / 0.55)\",\n 64: \"oklch(0 0 0 / 0.64)\",\n },\n white: {\n 1: \"oklch(1 0 0 / 0.01)\",\n 2: \"oklch(1 0 0 / 0.02)\",\n 3: \"oklch(1 0 0 / 0.03)\",\n 4: \"oklch(1 0 0 / 0.04)\",\n 8: \"oklch(1 0 0 / 0.08)\",\n 12: \"oklch(1 0 0 / 0.12)\",\n 16: \"oklch(1 0 0 / 0.16)\",\n 24: \"oklch(1 0 0 / 0.24)\",\n 32: \"oklch(1 0 0 / 0.32)\",\n },\n} as const;\n\nexport const colorPalette = {\n brand, brandContrast, gray,\n success, warning, danger, info,\n white, black,\n alpha,\n};\n","/**\n * color-light.ts — Semantic color tokens (light mode) — V3\n * Tier 2 de 3: intenção. API pública.\n *\n * NOMENCLATURA V3:\n * brand → cor da marca (NÃO \"primary\")\n * danger → feedback destrutivo (NÃO \"critical\")\n * fg.default → texto padrão (NÃO \"fg.foreground\")\n * on-* → texto sobre cor sólida\n * subtle/muted → variantes alpha-tinted (color-mix da cor base)\n * hover → escurece cor sólida (mix com black) ou sobe alpha\n *\n * NAMESPACES:\n * bg → fundos de superfícies, brand, status, neutros\n * fg → texto + ícones\n * border → bordas, dividers\n * ring → focus rings (acessibilidade)\n * overlay → scrims de modal/drawer\n */\n\nimport {\n brand, gray, success, warning, danger, info,\n white, black,\n} from \"../primitives/color-palette\";\n\n// ─── Background ───────────────────────────────────────────────────────────────\n\nexport const bg = {\n // Surfaces (sólidos)\n canvas: white, // body, página\n surface: white, // cards, drawer\n \"surface-elevated\": white, // popovers, modais\n \"surface-panels\": white, // página de fundo\n sidebar: \"oklch(0.9516 0.0027 106.45)\", // mineral-100 — calidez sidebar (sem primitive equiv)\n\n // Backgrounds neutros (sólidos cinza no light)\n subtle: gray[50],\n muted: gray[50],\n emphasis: gray[100], // neutro mais visível que muted (sem semântica de \"active\")\n input: white,\n accent: white, // light: bg-accent = branco (item ativo destaca por contraste)\n\n // Brand (derivam do brand[600])\n brand: brand[600],\n \"brand-subtle\": `color-mix(in oklch, ${brand[600]} 14%, transparent)`,\n \"brand-hover\": `color-mix(in oklch, ${brand[600]} 90%, black)`,\n \"brand-subtle-hover\": `color-mix(in oklch, ${brand[600]} 22%, transparent)`,\n\n // Status (sólido + muted alpha — ×4 cores)\n danger: danger[500],\n \"danger-muted\": `color-mix(in oklch, ${danger[500]} 14%, transparent)`,\n \"danger-hover\": `color-mix(in oklch, ${danger[500]} 90%, black)`,\n \"danger-muted-hover\": `color-mix(in oklch, ${danger[500]} 22%, transparent)`,\n\n success: success[500],\n \"success-muted\": `color-mix(in oklch, ${success[500]} 14%, transparent)`,\n \"success-hover\": `color-mix(in oklch, ${success[500]} 90%, black)`,\n \"success-muted-hover\": `color-mix(in oklch, ${success[500]} 22%, transparent)`,\n\n warning: warning[500],\n \"warning-muted\": `color-mix(in oklch, ${warning[500]} 14%, transparent)`,\n \"warning-hover\": `color-mix(in oklch, ${warning[500]} 90%, black)`,\n \"warning-muted-hover\": `color-mix(in oklch, ${warning[500]} 22%, transparent)`,\n\n info: info[500],\n \"info-muted\": `color-mix(in oklch, ${info[500]} 14%, transparent)`,\n \"info-hover\": `color-mix(in oklch, ${info[500]} 90%, black)`,\n \"info-muted-hover\": `color-mix(in oklch, ${info[500]} 22%, transparent)`,\n\n // Hover dos neutros — sólidos cinza no light\n \"muted-hover\": \"oklch(0.95 0 0)\",\n \"input-hover\": gray[50], // 0.973 — sutil sobre input=white\n \"accent-hover\": \"oklch(0.84 0 0)\",\n\n // Sidebar item states — active = branco (contrasta com sidebar mineral-100), hover = mineral subtle\n \"sidebar-accent\": white,\n \"sidebar-accent-hover\": \"oklch(0.92 0.0068 115.72)\",\n\n // Tabela — sólidos\n \"table\": white,\n \"table-head\": gray[50],\n // Hover sutil: gray[50] (~2.7% diff de white) em vez de gray[100] (6% — forte demais).\n // Mesmo tom do table-head, mantém hierarquia visual sem competir com cells selected.\n \"table-row-hover\": gray[50],\n // Linha selecionada — alpha brand discreto (6%); hover sobe pra 10%\n // (não usar `bg-brand-subtle` 14% — forte demais como bg de row)\n \"table-row-selected\": `color-mix(in oklch, ${brand[600]} 6%, transparent)`,\n \"table-row-selected-hover\": `color-mix(in oklch, ${brand[600]} 10%, transparent)`,\n\n // Dropdown/Popover — referencia bg-canvas (white no light)\n \"dropdown\": \"var(--color-bg-canvas)\",\n} as const;\n\n// ─── Foreground (texto + ícones) ──────────────────────────────────────────────\n\nexport const fg = {\n // Hierarquia\n strong: gray[950],\n default: gray[950],\n muted: gray[500], // labels, helpers (light)\n subtle: gray[400], // placeholders, hints\n disabled: gray[400],\n\n // Brand\n brand: brand[600],\n\n // Status\n danger: danger[500],\n success: success[500],\n warning: warning[500],\n info: info[500],\n\n // Sobre fundos sólidos (on-*)\n \"on-brand\": white,\n \"on-danger\": white,\n \"on-success\": white,\n \"on-warning\": black, // amarelo claro → preto pra contraste\n \"on-info\": white,\n} as const;\n\n// ─── Border ───────────────────────────────────────────────────────────────────\n\nexport const border = {\n default: gray[200], // borda padrão\n subtle: gray[150], // dividers, controles\n input: gray[300], // inputs / fields\n sidebar: \"oklch(0.9076 0.0068 115.72)\", // mineral-200\n\n brand: brand[600],\n \"brand-subtle\": `color-mix(in oklch, ${brand[600]} 36%, transparent)`,\n\n \"danger-muted\": `color-mix(in oklch, ${danger[500]} 36%, transparent)`,\n \"success-muted\": `color-mix(in oklch, ${success[500]} 36%, transparent)`,\n \"warning-muted\": `color-mix(in oklch, ${warning[500]} 36%, transparent)`,\n \"info-muted\": `color-mix(in oklch, ${info[500]} 36%, transparent)`,\n\n // Tabela\n table: gray[150],\n} as const;\n\n// ─── Ring (focus rings — cor pura usada com ring-* do Tailwind) ───────────────\n\nexport const ring = {\n brand: `color-mix(in oklch, ${brand[600]} 22%, transparent)`,\n danger: `color-mix(in oklch, ${danger[500]} 22%, transparent)`,\n success: `color-mix(in oklch, ${success[500]} 22%, transparent)`,\n warning: `color-mix(in oklch, ${warning[500]} 22%, transparent)`,\n info: `color-mix(in oklch, ${info[500]} 22%, transparent)`,\n secondary: `color-mix(in oklch, ${gray[500]} 22%, transparent)`,\n} as const;\n\n// ─── Overlay / Scrim ──────────────────────────────────────────────────────────\n\nexport const overlay = {\n // Scrim de backdrop (modais, drawers)\n scrim: \"oklch(0 0 0 / 0.55)\",\n // Outline de 6px pra elementos flutuantes (panels, dropdowns, command, modais)\n // — consumido pela utility `outline-float`. Light: cinza medium 12%.\n // Valor anterior (6%) era visualmente imperceptível em backgrounds claros;\n // 12% mantém o efeito \"halo sutil\" mas com presença visual real.\n float: \"oklch(0.55 0 0 / 0.12)\",\n} as const;\n\nexport const colorLight = { bg, fg, border, ring, overlay };\n","/**\n * color-dark.ts — Semantic color tokens (dark mode) — V3\n * Tier 2 de 3: intenção. API pública.\n *\n * Mesmo contrato de nomes que color-light.ts. Só muda os valores.\n * Dark mode usa brandContrast (verde brilhante #0fc589) em vez de brand.\n *\n * MECÂNICA V3:\n * - Surfaces sólidas (gray-900 e variantes)\n * - Backgrounds neutros como alpha-overlay (oklch(1 0 0 / X)) que se adaptam à surface\n * - Brand/status muted via color-mix da cor base com transparent\n * - Hover de sólidos: clareiam (mix com white)\n * - Hover de alphas: sobem 1 tier\n */\n\nimport {\n brandContrast, gray, success, warning, danger, info,\n white, black,\n} from \"../primitives/color-palette\";\n\n// ─── Background ───────────────────────────────────────────────────────────────\n\nexport const bg = {\n // Surfaces sólidas\n canvas: gray[900], // body\n surface: \"oklch(0.225 0 0)\", // cards, drawer (entre gray-900 e gray-800)\n \"surface-elevated\": \"oklch(0.225 0 0)\",\n \"surface-panels\": gray[900],\n sidebar: \"oklch(0.225 0 0)\",\n\n // Backgrounds neutros (alpha overlay — adapta ao surface debaixo)\n subtle: \"oklch(1 0 0 / 0.01)\",\n muted: \"oklch(1 0 0 / 0.03)\",\n emphasis: `color-mix(in oklch, ${white} 12%, transparent)`, // mesmo visual do bg-accent (sem semântica de \"active\")\n input: \"oklch(1 0 0 / 0.04)\",\n accent: \"oklch(1 0 0 / 0.12)\",\n\n // Brand (dark usa brandContrast — verde brilhante)\n brand: brandContrast[400],\n \"brand-subtle\": `color-mix(in oklch, ${brandContrast[400]} 14%, transparent)`,\n \"brand-hover\": `color-mix(in oklch, ${brandContrast[400]} 90%, black)`,\n \"brand-subtle-hover\": `color-mix(in oklch, ${brandContrast[400]} 22%, transparent)`,\n\n // Status (sólido + muted alpha — ×4 cores)\n danger: danger[500],\n \"danger-muted\": `color-mix(in oklch, ${danger[500]} 14%, transparent)`,\n \"danger-hover\": `color-mix(in oklch, ${danger[500]} 90%, white)`,\n \"danger-muted-hover\": `color-mix(in oklch, ${danger[500]} 22%, transparent)`,\n\n success: success[500],\n \"success-muted\": `color-mix(in oklch, ${success[500]} 14%, transparent)`,\n \"success-hover\": `color-mix(in oklch, ${success[500]} 90%, white)`,\n \"success-muted-hover\": `color-mix(in oklch, ${success[500]} 22%, transparent)`,\n\n warning: warning[500],\n \"warning-muted\": `color-mix(in oklch, ${warning[500]} 14%, transparent)`,\n \"warning-hover\": `color-mix(in oklch, ${warning[500]} 90%, white)`,\n \"warning-muted-hover\": `color-mix(in oklch, ${warning[500]} 22%, transparent)`,\n\n info: info[500],\n \"info-muted\": `color-mix(in oklch, ${info[500]} 14%, transparent)`,\n \"info-hover\": `color-mix(in oklch, ${info[500]} 90%, white)`,\n \"info-muted-hover\": `color-mix(in oklch, ${info[500]} 22%, transparent)`,\n\n // Hover dos neutros — alphas sobem 1 tier\n \"muted-hover\": \"oklch(1 0 0 / 0.08)\",\n \"input-hover\": \"oklch(1 0 0 / 0.08)\",\n \"accent-hover\": \"oklch(1 0 0 / 0.16)\",\n\n // Sidebar item states — alphas\n \"sidebar-accent\": \"oklch(1 0 0 / 0.08)\",\n \"sidebar-accent-hover\": \"oklch(1 0 0 / 0.12)\",\n\n // Tabela — sólidos pra suportar sticky columns sem vazamento\n \"table\": \"oklch(0.225 0 0)\", // mesmo bg-surface\n \"table-head\": \"oklch(0.252 0 0)\", // gray-850 — head sticky\n \"table-row-hover\": \"oklch(0.252 0 0)\",\n // Linha selecionada — alpha brandContrast 10%; hover sobe pra 14%\n // (no dark precisa de alpha levemente maior pra ficar visível sobre surface escuro)\n \"table-row-selected\": `color-mix(in oklch, ${brandContrast[400]} 10%, transparent)`,\n \"table-row-selected-hover\": `color-mix(in oklch, ${brandContrast[400]} 14%, transparent)`,\n\n // Dropdown/Popover — frosted-glass: bg-canvas com 70% opacidade\n // (combina com backdrop-blur no componente pra efeito vidro fosco)\n \"dropdown\": \"color-mix(in oklab, var(--color-bg-canvas) 70%, transparent)\",\n} as const;\n\n// ─── Foreground (texto + ícones) ──────────────────────────────────────────────\n\nexport const fg = {\n // Hierarquia\n strong: white, // 100% — títulos\n default: \"oklch(0.98 0 0)\", // texto padrão (sem primitive equiv exato)\n muted: gray[400], // labels, helpers\n subtle: `color-mix(in oklch, ${gray[400]} 70%, transparent)`, // placeholders\n disabled: gray[600],\n\n // Brand\n brand: brandContrast[400],\n\n // Status\n danger: danger[500],\n success: success[500],\n warning: warning[500],\n info: info[500],\n\n // Sobre fundos sólidos (on-*) — dark inverte: verde brilhante, vermelho saturado, etc\n \"on-brand\": black, // preto sobre verde brilhante\n \"on-danger\": white,\n \"on-success\": black,\n \"on-warning\": black,\n \"on-info\": white,\n} as const;\n\n// ─── Border ───────────────────────────────────────────────────────────────────\n\nexport const border = {\n default: gray[800],\n subtle: \"oklch(1 0 0 / 0.04)\",\n input: \"oklch(1 0 0 / 0.08)\",\n sidebar: gray[800],\n\n brand: brandContrast[400],\n \"brand-subtle\": `color-mix(in oklch, ${brandContrast[400]} 36%, transparent)`,\n\n \"danger-muted\": `color-mix(in oklch, ${danger[500]} 36%, transparent)`,\n \"success-muted\": `color-mix(in oklch, ${success[500]} 36%, transparent)`,\n \"warning-muted\": `color-mix(in oklch, ${warning[500]} 36%, transparent)`,\n \"info-muted\": `color-mix(in oklch, ${info[500]} 36%, transparent)`,\n\n // Tabela\n table: gray[800],\n} as const;\n\n// ─── Ring (focus rings — cor pura usada com ring-* do Tailwind) ───────────────\n\nexport const ring = {\n brand: `color-mix(in oklch, ${brandContrast[400]} 22%, transparent)`,\n danger: `color-mix(in oklch, ${danger[500]} 22%, transparent)`,\n success: `color-mix(in oklch, ${success[500]} 22%, transparent)`,\n warning: `color-mix(in oklch, ${warning[500]} 22%, transparent)`,\n info: `color-mix(in oklch, ${info[500]} 22%, transparent)`,\n secondary: `color-mix(in oklch, ${gray[500]} 22%, transparent)`,\n} as const;\n\n// ─── Overlay / Scrim ──────────────────────────────────────────────────────────\n\nexport const overlay = {\n // Scrim de backdrop (modais, drawers)\n scrim: \"oklch(0 0 0 / 0.55)\",\n // Outline de 6px pra elementos flutuantes (panels, dropdowns, command, modais)\n // — consumido pela utility `outline-float`. Dark: branco 8%.\n // Valor anterior (4%) era visualmente imperceptível em surfaces escuras;\n // 8% mantém o efeito \"halo sutil\" mas com presença visual real.\n float: \"oklch(1 0 0 / 0.08)\",\n} as const;\n\nexport const colorDark = { bg, fg, border, ring, overlay };\n","/**\n * scales.ts — Spatial scale (base-4 system)\n * Tier 1 de 3: valores raw. API privada.\n *\n * Princípio: todo valor espacial é múltiplo de 4px.\n *\n * Uso: importar sp() nos arquivos semantic (spacing.ts, sizing.ts, shape.ts).\n * Nunca usar sp() diretamente em componentes.\n *\n * Fórmula: sp(n) = n * 4px\n */\n\nconst BASE = 4; // px\n\n/** Retorna valor em px como string */\nexport const sp = (n: number): string => `${n * BASE}px`;\n\n/**\n * Escala completa: 0 a 80 (0px a 320px)\n * Usar sp() ao invés desta tabela nos tokens semânticos.\n * Esta tabela existe para referência e documentação.\n */\nexport const scale = {\n 0: sp(0), // 0px\n 0.5: sp(0.5), // 2px ← hairline\n 1: sp(1), // 4px ← xs\n 1.5: sp(1.5), // 6px\n 2: sp(2), // 8px ← sm\n 2.5: sp(2.5), // 10px\n 3: sp(3), // 12px ← md\n 3.5: sp(3.5), // 14px\n 4: sp(4), // 16px ← base (1 unit)\n 5: sp(5), // 20px\n 6: sp(6), // 24px ← lg\n 7: sp(7), // 28px\n 8: sp(8), // 32px ← xl\n 9: sp(9), // 36px\n 10: sp(10), // 40px\n 11: sp(11), // 44px ← touch target min\n 12: sp(12), // 48px ← touch target ideal\n 14: sp(14), // 56px\n 16: sp(16), // 64px\n 18: sp(18), // 72px\n 20: sp(20), // 80px\n 24: sp(24), // 96px\n 28: sp(28), // 112px\n 32: sp(32), // 128px\n 40: sp(40), // 160px\n 48: sp(48), // 192px\n 56: sp(56), // 224px\n 64: sp(64), // 256px\n 80: sp(80), // 320px\n} as const;\n","/**\n * spacing.ts — Semantic spacing tokens\n *\n * REGRAS:\n * - Todos os valores derivam de scales.ts.\n * - 3 conceitos: space (genérico), gap (entre items), pad (padding).\n * - Os 3 compartilham a MESMA escala de valores.\n * - O prefixo (sp-, gp-, pad-) diferencia o papel no CSS.\n *\n * ESCALA UNIFICADA:\n * 2xs=2 xs=4 sm=6 md=8 lg=10 xl=12 2xl=16 3xl=20 4xl=24 5xl=28 6xl=32 7xl=48\n *\n * CONVENÇÃO DE PAPÉIS:\n * space → genérico (margin, padding simétrico, offsets)\n * gap → entre filhos flex/grid, icon-to-label, section spacing\n * pad → padding interno de componente\n */\n\nimport { scale } from \"../primitives/scales\";\n\n// Escala unificada: 2 4 6 8 10 12 16 20 24 28 32 48\nconst unified = {\n \"2xs\": scale[0.5], // 2px — hairline, border-like gaps\n xs: scale[1], // 4px — icon-to-text tight, checkbox gap, tag gap\n sm: scale[1.5], // 6px — button icon gap (xxs/xs), badge gap, tabs\n md: scale[2], // 8px — button icon gap (sm/md), form field gap, input padding\n lg: scale[2.5], // 10px — compact card padding\n xl: scale[3], // 12px — button padding (xs), info box gap, card row gap\n \"2xl\": scale[4], // 16px — card padding (sm), section gap, info box padding\n \"3xl\": scale[5], // 20px — spacer médio\n \"4xl\": scale[6], // 24px — card gap padrão, card padding (default), section gap\n \"5xl\": scale[7], // 28px — spacer grande\n \"6xl\": scale[8], // 32px — section major gap\n \"7xl\": scale[12], // 48px — page-level gap\n} as const;\n\n// ─── Space (escala genérica) ─────────────────────────────────────────────────\nexport const space = {\n base: scale[4], // 16px — DEFAULT: uma unidade espacial do sistema\n 0: scale[0],\n px: { px: \"1px\", raw: 1 },\n ...unified,\n} as const;\n\n// ─── Gap (entre items) ──────────────────────────────────────────────────────\nexport const gap = {\n base: scale[6], // 24px — DEFAULT: card/section internal gap\n ...unified,\n} as const;\n\n// ─── Pad (padding de componente) ─────────────────────────────────────────────\nexport const pad = {\n base: scale[3], // 12px — DEFAULT: button/input padding horizontal\n ...unified,\n} as const;\n\n// Export agrupado\nexport const spacing = { space, gap, pad } as const;\nexport type SpacingToken = typeof spacing;\n","/**\n * sizing.ts — Escala genérica de dimensões de componente\n *\n * REGRAS:\n * - Escala única `comp` para h-*, w-*, size-* (height, width, square).\n * - Baseada em scales.ts (base-4 system).\n * - Heights são min-height (componentes crescem com conteúdo).\n * - WCAG 2.1 AA: mínimo 44px de touch target para interativos.\n *\n * Tokens orientados a componente específico (form, layout, icon, container)\n * ficam em components/sizing.ts.\n */\n\nimport { scale } from \"../primitives/scales\";\n\n// ─── Comp (escala genérica de dimensão) ──────────────────────────────────────\n// Gera: h-comp-*, w-comp-*, size-comp-*, min-h-comp-*\nexport const comp = {\n base: scale[10], // 40px — DEFAULT: button md, input md (desktop)\n \"3xs\": scale[4], // 16px — badge micro\n \"2xs\": scale[5], // 20px — badge md, switch\n xs: scale[6], // 24px — compact chip, small tag\n sm: scale[7], // 28px — tabs item\n md: scale[8], // 32px — button xs, input xs\n lg: scale[9], // 36px — button sm, input sm\n xl: scale[10], // 40px — mesmo valor que base\n \"2xl\": scale[11], // 44px — WCAG touch target\n \"3xl\": scale[12], // 48px — confortável\n \"4xl\": scale[14], // 56px — hero CTA\n} as const;\n\nexport const sizing = { comp } as const;\nexport type SizingToken = typeof sizing;\n","/**\n * shape.ts — Shape tokens (border-radius + border-width)\n *\n * REGRAS:\n * - border-radius e border-width ficam juntos porque definem a \"forma\" visual.\n * Quando um muda, o outro costuma mudar — são co-dependentes de tema.\n * - Nomenclatura: base (default), none, xs, sm, md, lg, xl, 2xl, 3xl, 4xl, full.\n *\n * FILOSOFIA DE FORMA:\n * O sistema usa um \"knob\" central (RADIUS_BASE = 0.625rem = 10px).\n * Todos os steps são derivados por multiplicador.\n * Mudar RADIUS_BASE escala toda a personalidade do sistema.\n *\n * `base` = radius padrão de componentes interativos (buttons, cards, inputs, dialogs).\n * Escala numérica (xs→4xl) existe para casos onde se precisa de um radius específico.\n *\n * RELAÇÃO form height → radius:\n * xl (44px) → base (10px)\n * lg (40px) → base (10px)\n * md (36px) → base (10px)\n * sm (32px) → md (8px)\n * xs (28px) → md (8px)\n */\n\n// ─── Radius ───────────────────────────────────────────────────────────────────\n/**\n * Knob central do sistema — controla a \"personalidade de forma\" (sharp → pill).\n * Alterar este valor escala toda a curva de radius proporcionalmente.\n * O transform to-tailwind-v4 gera calc(RADIUS_BASE * N) para cada step.\n */\nexport const RADIUS_BASE = \"0.625rem\"; // 10px — mesma ref do shadcn\n\nexport const radius = {\n base: RADIUS_BASE, // 10px — DEFAULT componentes interativos (= lg)\n none: \"0px\", // 0px — sharp corners\n xs: `${RADIUS_BASE} * 0.4`, // 4px — sutil\n sm: `${RADIUS_BASE} * 0.6`, // 6px — tabs indicator\n md: `${RADIUS_BASE} * 0.8`, // 8px — inputs menores\n lg: RADIUS_BASE, // 10px — igual ao knob (alias de base)\n xl: `${RADIUS_BASE} * 1.4`, // 14px — modais, painéis\n \"2xl\": `${RADIUS_BASE} * 1.8`, // 18px — textarea, select content\n \"3xl\": `${RADIUS_BASE} * 2.2`, // 22px — badges, componentes menores\n \"4xl\": `${RADIUS_BASE} * 2.6`, // 26px — antigo valor de base (retido pra casos específicos)\n full: \"9999px\", // pill — avatars, chips\n} as const;\n\n// ─── Border Width ──────────────────────────────────────────────────────────────\nexport const borderWidth = {\n none: \"0px\",\n xs: \"1px\", // padrão — separadores, inputs, cards\n sm: \"2px\", // ênfase — foco, hover de botão outline\n md: \"4px\", // forte — accent, progress indicator\n} as const;\n\n// ─── Outline (focus ring) ──────────────────────────────────────────────────────\n// Separado de border porque tem semântica de acessibilidade própria\nexport const outline = {\n width: \"2px\", // largura do outline de foco\n offset: \"2px\", // espaço entre elemento e outline\n style: \"solid\",\n} as const;\n\n// ─── Divider ───────────────────────────────────────────────────────────────────\nexport const divider = {\n width: \"1px\",\n style: \"solid\",\n} as const;\n\nexport const shape = { radius, RADIUS_BASE, borderWidth, outline, divider } as const;\nexport type ShapeToken = typeof shape;\n","/**\n * elevation.ts — Elevation tokens (shadows + opacity + blur + z-index) — V3\n *\n * REGRAS:\n * - Shadows ficam juntos com opacity porque definem \"elevação\".\n * - Shadows usam string literal pra parsing em build time.\n * - Múltiplas shadows por camada (ambient + key light).\n * - Dark mode: opacidade ~2-3x maior (sombras precisam ser mais fortes em fundo escuro).\n *\n * NOTA: Shadows usam OKLCH com slash alpha — formato moderno, suporte amplo.\n *\n * HIERARQUIA DE ELEVAÇÃO (V3):\n * none → sem elevação\n * sm → controles, botões em repouso\n * md → cards em repouso, tooltips\n * lg → popovers, dropdowns ancorados\n * xl → dropdowns grandes\n * 2xl → modais, dialogs\n * aside → drawer slide-in lateral (direção horizontal)\n *\n * Outros composites:\n * ring → focus de input/textarea/select (3px brand-tinted box-shadow)\n */\n\nimport { brand, brandContrast, gray, danger, success, warning, info } from \"../primitives/color-palette\";\n\n// ─── Shadow tokens ─────────────────────────────────────────────────────────────\n\nexport const shadow = {\n // ── Light mode ───────────────────────────────────────────────────────────────\n light: {\n none: \"none\",\n sm: \"0 1px 2px oklch(0 0 0 / 0.04)\",\n md: \"rgba(145, 158, 171, 0.18) 0 0 2px 0, rgba(145, 158, 171, 0.12) 0 12px 24px -4px\",\n lg: \"0 8px 24px oklch(0 0 0 / 0.08)\",\n xl: \"0 12px 32px oklch(0 0 0 / 0.08)\",\n \"2xl\": \"0 24px 56px oklch(0 0 0 / 0.16)\",\n aside: \"-8px 0 24px oklch(0 0 0 / 0.12)\",\n\n // Focus ring brand-tinted (composite — usado direto em box-shadow)\n ring: `0 0 0 3px color-mix(in oklch, ${brand[600]} 22%, transparent)`,\n \"ring-danger\": `0 0 0 3px color-mix(in oklch, ${danger[500]} 22%, transparent)`,\n \"ring-warning\": `0 0 0 3px color-mix(in oklch, ${warning[500]} 22%, transparent)`,\n \"ring-success\": `0 0 0 3px color-mix(in oklch, ${success[500]} 22%, transparent)`,\n \"ring-info\": `0 0 0 3px color-mix(in oklch, ${info[500]} 22%, transparent)`,\n },\n\n // ── Dark mode ────────────────────────────────────────────────────────────────\n dark: {\n none: \"none\",\n sm: \"none\",\n md: `0 0 0 1px ${gray[800]}`,\n lg: \"0 8px 24px oklch(0 0 0 / 0.30)\",\n xl: \"0 12px 32px oklch(0 0 0 / 0.40)\",\n \"2xl\": \"0 24px 56px oklch(0 0 0 / 0.45)\",\n aside: \"-8px 0 24px oklch(0 0 0 / 0.40)\",\n\n // Focus ring brand-contrast-tinted (dark usa brandContrast)\n ring: `0 0 0 3px color-mix(in oklch, ${brandContrast[400]} 22%, transparent)`,\n \"ring-danger\": `0 0 0 3px color-mix(in oklch, ${danger[500]} 22%, transparent)`,\n \"ring-warning\": `0 0 0 3px color-mix(in oklch, ${warning[500]} 22%, transparent)`,\n \"ring-success\": `0 0 0 3px color-mix(in oklch, ${success[500]} 22%, transparent)`,\n \"ring-info\": `0 0 0 3px color-mix(in oklch, ${info[500]} 22%, transparent)`,\n },\n} as const;\n\n// ─── Opacity ───────────────────────────────────────────────────────────────────\nexport const opacity = {\n // Estados interativos\n disabled: 0.38,\n hover: 0.08,\n focus: 0.12,\n pressed: 0.12,\n dragged: 0.16,\n\n // Visibilidade\n invisible: 0,\n muted: 0.5,\n subtle: 0.7,\n full: 1,\n\n // Overlay de background (scrims de modal)\n \"scrim-light\": 0.32,\n \"scrim-dark\": 0.64,\n} as const;\n\n// ─── Blur (backdrop-filter) ────────────────────────────────────────────────────\nexport const blur = {\n sm: \"blur(4px)\",\n md: \"blur(8px)\",\n lg: \"blur(16px)\",\n xl: \"blur(24px)\",\n} as const;\n\n// ─── Z-Index ──────────────────────────────────────────────────────────────────\nexport const zIndex = {\n hide: -1,\n base: 0,\n dropdown: 100,\n sticky: 200,\n overlay: 300,\n modal: 400,\n popover: 500,\n toast: 600,\n tooltip: 700,\n} as const;\n\nexport const elevation = { shadow, opacity, blur, zIndex } as const;\nexport type ElevationToken = typeof elevation;\n","/**\n * fonts.ts — Typographic scale\n * Tier 1 de 3: valores raw. API privada.\n *\n * Princípio: escala baseada em razão modular (1.25 — Major Third).\n *\n * BASE = 16px (1rem)\n * Razão = 1.25 (major third)\n *\n * Regra de line-height: proporcional ao font-size.\n * - Displays e headings: ratio 1.2 (tight)\n * - Body: ratio 1.5 (confortável para leitura)\n * - Captions/labels: ratio 1.33\n *\n * Uso: importar nos arquivos semantic (typography.ts).\n * Nunca usar valores raw diretamente em componentes.\n */\n\nconst BASE = 16; // px\nconst RATIO = 1.25; // major third\n\n/**\n * Calcula font-size na escala modular.\n * step > 0 = maior que base, step < 0 = menor que base\n */\nexport const typeSize = (step: number): string =>\n `${Math.round(BASE * Math.pow(RATIO, step))}px`;\n\n/**\n * Calcula line-height proporcional ao font-size.\n * tight = displays/headings, normal = body, loose = captions\n */\nexport const lh = (\n size: number,\n mode: \"tight\" | \"normal\" | \"loose\" = \"normal\"\n): string => {\n const ratio = { tight: 1.2, normal: 1.5, loose: 1.33 };\n return `${Math.round(size * ratio[mode])}px`;\n};\n\n/**\n * Font families (valores raw).\n * A decisão de qual fonte usa cada preset fica em typography.ts (semântico).\n */\nexport const fontFamily = {\n sans: \"var(--font-sans, 'Geist', system-ui, -apple-system, sans-serif)\",\n mono: \"var(--font-mono, 'Geist Mono', 'Fira Code', monospace)\",\n serif: \"var(--font-serif, Georgia, 'Times New Roman', serif)\",\n} as const;\n\n/**\n * Font weights.\n * Usando nomes semânticos, não números — portável entre fontes.\n */\nexport const fontWeight = {\n regular: \"400\",\n medium: \"500\",\n semibold: \"600\",\n bold: \"700\",\n} as const;\n\n/**\n * Letter-spacing por contexto.\n */\nexport const letterSpacing = {\n tighter: \"-0.02em\",\n tight: \"-0.01em\", // displays e headlines grandes\n normal: \"0em\", // body\n wide: \"0.01em\", // labels, botões\n wider: \"0.03em\",\n widest: \"0.05em\", // overlines, all-caps\n} as const;\n\n/** Escala com named keys — usada por typography.ts */\nexport const fontSize: Record<string, { size: string; lineHeight: string }> = {\n \"2xs\": { size: typeSize(-3), lineHeight: lh(Math.round(BASE * Math.pow(RATIO, -3)), \"loose\") },\n xs: { size: typeSize(-2), lineHeight: lh(Math.round(BASE * Math.pow(RATIO, -2)), \"normal\") },\n sm: { size: typeSize(-1), lineHeight: lh(Math.round(BASE * Math.pow(RATIO, -1)), \"normal\") },\n md: { size: typeSize(0), lineHeight: lh(BASE, \"normal\") },\n lg: { size: typeSize(1), lineHeight: lh(Math.round(BASE * RATIO), \"tight\") },\n xl: { size: typeSize(2), lineHeight: lh(Math.round(BASE * Math.pow(RATIO, 2)), \"tight\") },\n \"2xl\": { size: typeSize(3), lineHeight: lh(Math.round(BASE * Math.pow(RATIO, 3)), \"tight\") },\n \"3xl\": { size: typeSize(4), lineHeight: lh(Math.round(BASE * Math.pow(RATIO, 4)), \"tight\") },\n \"4xl\": { size: typeSize(5), lineHeight: lh(Math.round(BASE * Math.pow(RATIO, 5)), \"tight\") },\n \"5xl\": { size: typeSize(6), lineHeight: lh(Math.round(BASE * Math.pow(RATIO, 6)), \"tight\") },\n};\n","/**\n * typography.ts — Semantic typography tokens (composite)\n *\n * REGRAS:\n * - Presets compostos: combinam fontSize + fontWeight + lineHeight + letterSpacing.\n * - Nomenclatura: {role}-{scale}-{weight?}\n * - Valores em rem (acessibilidade: respeita preferência de fonte do usuário).\n * - display/heading (≥32px desktop) usam clamp() para fluid typography responsiva.\n * - Presets menores usam rem estático (fluid não faz diferença abaixo de 32px).\n * - Line heights de presets fluidos: unitless (escala com o font-size).\n * - Line heights de presets estáticos: rem.\n *\n * HIERARQUIA:\n * display → hero sections, marketing (muito grande, fluid)\n * heading → títulos de página, modais (grande, fluid a partir de sm)\n * title → títulos de card, seção (médio, estático)\n * label → labels de UI, botões, tabs (peso 500, estático)\n * paragraph → texto corrido, parágrafos (peso 400, estático)\n * caption → texto auxiliar, metadados (estático)\n * subheading → categoria acima de conteúdo (uppercase, estático)\n * overline → decorativo (legacy alias para subheading)\n * code → código inline e blocos (estático)\n */\n\nimport { fontWeight, fontFamily, letterSpacing } from \"../primitives/fonts\";\n\n// Tipo base para um preset tipográfico\ninterface TypographyPreset {\n fontSize: string;\n lineHeight: string;\n fontWeight: string;\n letterSpacing: string;\n fontFamily: string;\n}\n\n// ─── Display (fluid — clamp) ─────────────────────────────────────────────────\n// Hero sections, landing pages. Viewport range: 375px → 1280px.\nexport const display: Record<string, TypographyPreset> = {\n \"display-2xl\": {\n fontSize: \"clamp(2.5rem, calc(1.568rem + 3.978vw), 4.75rem)\",\n lineHeight: \"1.1\",\n fontWeight: fontWeight.bold,\n letterSpacing: \"-0.02em\",\n fontFamily: fontFamily.sans,\n },\n \"display-xl\": {\n fontSize: \"clamp(2.25rem, calc(1.603rem + 2.762vw), 3.8125rem)\",\n lineHeight: \"1.1\",\n fontWeight: fontWeight.bold,\n letterSpacing: \"-0.02em\",\n fontFamily: fontFamily.sans,\n },\n \"display-lg\": {\n fontSize: \"clamp(2rem, calc(1.560rem + 1.878vw), 3.0625rem)\",\n lineHeight: \"1.15\",\n fontWeight: fontWeight.semibold,\n letterSpacing: \"-0.01em\",\n fontFamily: fontFamily.sans,\n },\n \"display-md\": {\n fontSize: \"clamp(1.75rem, calc(1.465rem + 1.215vw), 2.4375rem)\",\n lineHeight: \"1.15\",\n fontWeight: fontWeight.semibold,\n letterSpacing: \"-0.01em\",\n fontFamily: fontFamily.sans,\n },\n} as const;\n\n// ─── Heading (fluid sm→xl, estático xs/2xs) ──────────────────────────────────\n// Títulos de página, modais, dialogs.\nexport const heading: Record<string, TypographyPreset> = {\n \"heading-xl\": {\n fontSize: \"clamp(2.25rem, calc(1.732rem + 2.210vw), 3.5rem)\",\n lineHeight: \"1.15\",\n fontWeight: fontWeight.medium,\n letterSpacing: \"-0.01em\",\n fontFamily: fontFamily.sans,\n },\n \"heading-lg\": {\n fontSize: \"clamp(2rem, calc(1.586rem + 1.768vw), 3rem)\",\n lineHeight: \"1.2\",\n fontWeight: fontWeight.medium,\n letterSpacing: \"-0.01em\",\n fontFamily: fontFamily.sans,\n },\n \"heading-md\": {\n fontSize: \"clamp(1.75rem, calc(1.439rem + 1.326vw), 2.5rem)\",\n lineHeight: \"1.2\",\n fontWeight: fontWeight.medium,\n letterSpacing: \"-0.01em\",\n fontFamily: fontFamily.sans,\n },\n \"heading-sm\": {\n fontSize: \"clamp(1.5rem, calc(1.293rem + 0.884vw), 2rem)\",\n lineHeight: \"1.25\",\n fontWeight: fontWeight.medium,\n letterSpacing: \"-0.005em\",\n fontFamily: fontFamily.sans,\n },\n \"heading-xs\": {\n fontSize: \"1.5rem\", // 24px\n lineHeight: \"2rem\", // 32px\n fontWeight: fontWeight.medium,\n letterSpacing: \"0em\",\n fontFamily: fontFamily.sans,\n },\n // NOTE: heading-2xs removido — era duplicata pura de title-lg (ambos 20px/500/0em).\n // Consumidores migrados para text-title-lg.\n} as const;\n\n// ─── Title (estático — rem) ──────────────────────────────────────────────────\n// Títulos de card, seção, sidebar item ativo.\nexport const title: Record<string, TypographyPreset> = {\n \"title-lg\": {\n fontSize: \"1.25rem\", // 20px\n lineHeight: \"1.75rem\", // 28px\n fontWeight: fontWeight.medium,\n letterSpacing: \"0em\",\n fontFamily: fontFamily.sans,\n },\n \"title-md\": {\n fontSize: \"1rem\", // 16px\n lineHeight: \"1.5rem\", // 24px\n fontWeight: fontWeight.medium,\n letterSpacing: \"0em\",\n fontFamily: fontFamily.sans,\n },\n \"title-sm\": {\n fontSize: \"0.875rem\", // 14px\n lineHeight: \"1.25rem\", // 20px\n fontWeight: fontWeight.medium,\n letterSpacing: \"0em\",\n fontFamily: fontFamily.sans,\n },\n} as const;\n\n// ─── Label (estático — rem) ──────────────────────────────────────────────────\n// Labels de UI: botões, inputs, tabs, nav items (peso 500).\nexport const label: Record<string, TypographyPreset> = {\n \"label-xl\": {\n fontSize: \"1.5rem\", // 24px\n lineHeight: \"2rem\", // 32px\n fontWeight: fontWeight.medium,\n letterSpacing: \"-0.015em\",\n fontFamily: fontFamily.sans,\n },\n \"label-lg\": {\n fontSize: \"1.125rem\", // 18px\n lineHeight: \"1.5rem\", // 24px\n fontWeight: fontWeight.medium,\n letterSpacing: \"-0.015em\",\n fontFamily: fontFamily.sans,\n },\n \"label-md\": {\n fontSize: \"1rem\", // 16px\n lineHeight: \"1.5rem\", // 24px\n fontWeight: fontWeight.medium,\n letterSpacing: \"-0.011em\",\n fontFamily: fontFamily.sans,\n },\n \"label-sm\": {\n fontSize: \"0.875rem\", // 14px\n lineHeight: \"1.25rem\", // 20px\n fontWeight: fontWeight.medium,\n letterSpacing: \"-0.006em\",\n fontFamily: fontFamily.sans,\n },\n \"label-xs\": {\n fontSize: \"0.75rem\", // 12px\n lineHeight: \"1rem\", // 16px\n fontWeight: fontWeight.medium,\n letterSpacing: \"0em\",\n fontFamily: fontFamily.sans,\n },\n // ★ NOVO — preenche tier 11px no namespace label (interactive, weight 500).\n // Casos: micro label, hint count, rail tooltip.\n \"label-2xs\": {\n fontSize: \"0.6875rem\", // 11px\n lineHeight: \"0.875rem\", // 14px\n fontWeight: fontWeight.medium,\n letterSpacing: \"0em\",\n fontFamily: fontFamily.sans,\n },\n // ★ NOVO — preenche tier 13px no namespace label (body default interativo do projeto).\n // Casos: button sm, dropdown item, input value, tab default.\n \"label-base\": {\n fontSize: \"0.8125rem\", // 13px\n lineHeight: \"1.125rem\", // 18px\n fontWeight: fontWeight.medium,\n letterSpacing: \"-0.003em\",\n fontFamily: fontFamily.sans,\n },\n} as const;\n\n// ─── Paragraph (estático — rem) ──────────────────────────────────────────────\n// Texto corrido, parágrafos, descrições (peso 400).\nexport const paragraph: Record<string, TypographyPreset> = {\n \"paragraph-xl\": {\n fontSize: \"1.5rem\", // 24px\n lineHeight: \"2rem\", // 32px\n fontWeight: fontWeight.regular,\n letterSpacing: \"-0.015em\",\n fontFamily: fontFamily.sans,\n },\n \"paragraph-lg\": {\n fontSize: \"1.125rem\", // 18px\n lineHeight: \"1.5rem\", // 24px\n fontWeight: fontWeight.regular,\n letterSpacing: \"-0.015em\",\n fontFamily: fontFamily.sans,\n },\n \"paragraph-md\": {\n fontSize: \"1rem\", // 16px\n lineHeight: \"1.5rem\", // 24px\n fontWeight: fontWeight.regular,\n letterSpacing: \"-0.011em\",\n fontFamily: fontFamily.sans,\n },\n \"paragraph-sm\": {\n fontSize: \"0.875rem\", // 14px\n lineHeight: \"1.25rem\", // 20px\n fontWeight: fontWeight.regular,\n letterSpacing: \"-0.006em\",\n fontFamily: fontFamily.sans,\n },\n \"paragraph-xs\": {\n fontSize: \"0.75rem\", // 12px\n lineHeight: \"1rem\", // 16px\n fontWeight: fontWeight.regular,\n letterSpacing: \"0em\",\n fontFamily: fontFamily.sans,\n },\n // ★ NOVO — preenche tier 13px no namespace paragraph (body default do projeto).\n // Casos: body small, msg bubble, table cell, command item, dropdown item.\n \"paragraph-base\": {\n fontSize: \"0.8125rem\", // 13px\n lineHeight: \"1.125rem\", // 18px\n fontWeight: fontWeight.regular,\n letterSpacing: \"-0.003em\",\n fontFamily: fontFamily.sans,\n },\n} as const;\n\n// NOTE: body-* removido — eram aliases legacy de paragraph-*. Sem consumidores.\n\n// ─── Caption (estático — rem) ────────────────────────────────────────────────\n// Texto auxiliar, timestamps, metadados.\nexport const caption: Record<string, TypographyPreset> = {\n \"caption-md\": {\n fontSize: \"0.8125rem\", // 13px\n lineHeight: \"1.125rem\", // 18px\n fontWeight: fontWeight.regular,\n letterSpacing: \"0em\",\n fontFamily: fontFamily.sans,\n },\n \"caption-sm\": {\n fontSize: \"0.6875rem\", // 11px\n lineHeight: \"0.875rem\", // 14px\n fontWeight: fontWeight.regular,\n letterSpacing: \"0em\",\n fontFamily: fontFamily.sans,\n },\n // ★ NOVO — preenche tier 10px (faltava completamente no DS).\n // Casos: micro caption (bubble meta, conv ID, history meta).\n \"caption-xs\": {\n fontSize: \"0.625rem\", // 10px\n lineHeight: \"0.75rem\", // 12px\n fontWeight: fontWeight.regular,\n letterSpacing: \"0em\",\n fontFamily: fontFamily.sans,\n },\n} as const;\n\n// ─── Subheading (estático — rem) ─────────────────────────────────────────────\n// Texto acima de seções (ex: \"CATEGORIAS\", \"NOVO\") — uppercase.\nexport const subheading: Record<string, TypographyPreset> = {\n \"subheading-md\": {\n fontSize: \"1rem\", // 16px\n lineHeight: \"1.5rem\", // 24px\n fontWeight: fontWeight.medium,\n letterSpacing: \"0.06em\",\n fontFamily: fontFamily.sans,\n },\n \"subheading-sm\": {\n fontSize: \"0.875rem\", // 14px\n lineHeight: \"1.25rem\", // 20px\n fontWeight: fontWeight.medium,\n letterSpacing: \"0.06em\",\n fontFamily: fontFamily.sans,\n },\n \"subheading-xs\": {\n fontSize: \"0.75rem\", // 12px\n lineHeight: \"1rem\", // 16px\n fontWeight: fontWeight.medium,\n letterSpacing: \"0.04em\",\n fontFamily: fontFamily.sans,\n },\n \"subheading-2xs\": {\n fontSize: \"0.6875rem\", // 11px\n lineHeight: \"0.75rem\", // 12px\n fontWeight: fontWeight.medium,\n letterSpacing: \"0.02em\",\n fontFamily: fontFamily.sans,\n },\n // ★ NOVO — variante \"strong\" weight 700 + tracking apertado (+0.06em).\n // Substitui o pattern literal `text-[Npx] font-bold tracking-[0.06em] uppercase`.\n // Casos: FILTERS/CATEGORIAS section title, table thead, MenuSidebar section header.\n \"subheading-strong-md\": {\n fontSize: \"0.6875rem\", // 11px\n lineHeight: \"0.875rem\", // 14px\n fontWeight: fontWeight.bold,\n letterSpacing: \"0.06em\",\n fontFamily: fontFamily.sans,\n },\n // ★ NOVO — versão 10px do strong subheading.\n // Casos: chip counter, unread badge, header tab count, agent rank.\n \"subheading-strong-sm\": {\n fontSize: \"0.625rem\", // 10px\n lineHeight: \"0.75rem\", // 12px\n fontWeight: fontWeight.bold,\n letterSpacing: \"0.06em\",\n fontFamily: fontFamily.sans,\n },\n} as const;\n\n// NOTE: overline-* removido — eram aliases legacy de subheading. Sem consumidores.\n\n// ─── Code (estático — rem) ───────────────────────────────────────────────────\nexport const code: Record<string, TypographyPreset> = {\n \"code-md\": {\n fontSize: \"1rem\", // 16px\n lineHeight: \"1.6\",\n fontWeight: fontWeight.regular,\n letterSpacing: \"0em\",\n fontFamily: fontFamily.mono,\n },\n \"code-sm\": {\n fontSize: \"0.8125rem\", // 13px\n lineHeight: \"1.6\",\n fontWeight: fontWeight.regular,\n letterSpacing: \"0em\",\n fontFamily: fontFamily.mono,\n },\n} as const;\n\n// ─── Export agrupado ───────────────────────────────────────────────────────────\nexport const typography = {\n ...display,\n ...heading,\n ...title,\n ...label,\n ...paragraph,\n ...caption,\n ...subheading,\n ...code,\n} as const;\n\nexport type TypographyToken = typeof typography;\nexport type TypographyKey = keyof typeof typography;\n","/**\n * motion.ts — Motion primitive tokens\n * Tier 1 de 3: valores raw. API privada.\n *\n * Princípio: durações baseadas em complexidade da transição.\n * Easings: productive (precisão) vs expressive (fluidez).\n */\n\n/** Durações em ms */\nexport const duration = {\n instant: \"0ms\",\n \"x-fast\": \"100ms\", // hover states, focus rings\n fast: \"150ms\", // simples (opacity, color)\n moderate: \"200ms\", // entradas de elementos\n slow: \"300ms\", // modais, drawers, expansões\n \"x-slow\": \"400ms\", // page transitions\n deliberate: \"500ms\", // animações complexas, onboarding\n} as const;\n\n/**\n * Easing curves.\n * Productive: movimentos precisos (UI transacional).\n * Expressive: movimentos fluidos (marketing, onboarding).\n */\nexport const easing = {\n // Productive\n \"standard\": \"cubic-bezier(0.2, 0, 0.38, 0.9)\", // entra e sai\n \"entrance-productive\": \"cubic-bezier(0, 0, 0.38, 0.9)\", // entra\n \"exit-productive\": \"cubic-bezier(0.2, 0, 1, 0.9)\", // sai\n\n // Expressive\n \"emphasized\": \"cubic-bezier(0.2, 0, 0, 1)\", // enfatizado\n \"emphasized-decelerate\": \"cubic-bezier(0.05, 0.7, 0.1, 1)\",// entra (expressive)\n \"emphasized-accelerate\": \"cubic-bezier(0.3, 0, 0.8, 0.15)\",// sai (expressive)\n\n // Utilitários\n \"linear\": \"linear\",\n \"spring\": \"cubic-bezier(0.175, 0.885, 0.32, 1.275)\", // ligeiro bounce\n} as const;\n\n/** Tokens compostos: duração + easing para padrões comuns */\nexport const motionPresets = {\n // Component transitions (button, badge, input, switch)\n \"component\": `${duration.moderate} ease-out`,\n // Color shift (tabs item color)\n \"color-shift\": `${duration.slow} ease-out`,\n // Spring (tabs indicator slide)\n \"spring\": `${duration.slow} cubic-bezier(0.65, 0, 0.35, 1)`,\n // Existing presets\n \"hover-color\": `${duration.fast} ${easing.standard}`,\n \"hover-transform\": `${duration[\"x-fast\"]} ${easing[\"entrance-productive\"]}`,\n \"fade-in\": `${duration.moderate} ${easing[\"emphasized-decelerate\"]}`,\n \"fade-out\": `${duration.fast} ${easing[\"emphasized-accelerate\"]}`,\n \"slide-in\": `${duration.slow} ${easing[\"emphasized-decelerate\"]}`,\n \"slide-out\": `${duration.moderate} ${easing[\"emphasized-accelerate\"]}`,\n \"expand\": `${duration.slow} ${easing.emphasized}`,\n \"collapse\": `${duration.moderate} ${easing[\"emphasized-accelerate\"]}`,\n} as const;\n"],"names":["bg","fg","border","ring","overlay"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './tokens/index'
2
+ export {}