@lucasbernardosn/react-ui 0.3.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.
Files changed (111) hide show
  1. package/README.md +2 -1
  2. package/dist/components/disclosure/collapsible/collapsible-panel-variants.d.ts +1 -1
  3. package/dist/components/disclosure/tabs/tabs-indicator-variants.d.ts +1 -1
  4. package/dist/components/disclosure/tabs/tabs-list-variants.d.ts +1 -1
  5. package/dist/components/disclosure/tabs/tabs-tab-variants.d.ts +1 -1
  6. package/dist/components/display/avatar/avatar-root-variants.d.ts +1 -1
  7. package/dist/components/display/badge/badge-variants.d.ts +4 -1
  8. package/dist/components/display/badge/badge-variants.js +5 -0
  9. package/dist/components/display/badge/badge-variants.js.map +1 -1
  10. package/dist/components/display/badge/badge.d.ts +10 -1
  11. package/dist/components/display/badge/badge.js +40 -2
  12. package/dist/components/display/badge/badge.js.map +1 -1
  13. package/dist/components/display/card/card-body.js +1 -0
  14. package/dist/components/display/card/card-body.js.map +1 -1
  15. package/dist/components/display/data-list/data-list-item-label-variants.d.ts +7 -0
  16. package/dist/components/display/data-list/data-list-item-label-variants.js +27 -0
  17. package/dist/components/display/data-list/data-list-item-label-variants.js.map +1 -0
  18. package/dist/components/display/data-list/data-list-item-label.d.ts +2 -1
  19. package/dist/components/display/data-list/data-list-item-label.js +9 -2
  20. package/dist/components/display/data-list/data-list-item-label.js.map +1 -1
  21. package/dist/components/display/data-list/data-list-item-value-variants.d.ts +1 -1
  22. package/dist/components/display/data-list/data-list-item-value-variants.js +9 -5
  23. package/dist/components/display/data-list/data-list-item-value-variants.js.map +1 -1
  24. package/dist/components/display/data-list/data-list-item-value.d.ts +2 -1
  25. package/dist/components/display/data-list/data-list-item-value.js +4 -3
  26. package/dist/components/display/data-list/data-list-item-value.js.map +1 -1
  27. package/dist/components/display/data-list/data-list-item-variants.d.ts +2 -6
  28. package/dist/components/display/data-list/data-list-item-variants.js +24 -26
  29. package/dist/components/display/data-list/data-list-item-variants.js.map +1 -1
  30. package/dist/components/display/data-list/data-list-item.d.ts +2 -1
  31. package/dist/components/display/data-list/data-list-item.js +7 -3
  32. package/dist/components/display/data-list/data-list-item.js.map +1 -1
  33. package/dist/components/display/data-list/data-list-root-variants.d.ts +1 -2
  34. package/dist/components/display/data-list/data-list-root-variants.js +7 -24
  35. package/dist/components/display/data-list/data-list-root-variants.js.map +1 -1
  36. package/dist/components/display/data-list/data-list-root.d.ts +3 -2
  37. package/dist/components/display/data-list/data-list-root.js +8 -3
  38. package/dist/components/display/data-list/data-list-root.js.map +1 -1
  39. package/dist/components/display/data-list/use-data-list-context.d.ts +18 -7
  40. package/dist/components/display/data-list/use-data-list-context.js +3 -2
  41. package/dist/components/display/data-list/use-data-list-context.js.map +1 -1
  42. package/dist/components/display/tag/tag-root-variants.d.ts +1 -2
  43. package/dist/components/display/tag/tag-root-variants.js +0 -1
  44. package/dist/components/display/tag/tag-root-variants.js.map +1 -1
  45. package/dist/components/feedback/alert/alert-indicator.d.ts +2 -2
  46. package/dist/components/feedback/alert/alert-indicator.js +2 -2
  47. package/dist/components/feedback/alert/alert-indicator.js.map +1 -1
  48. package/dist/components/layout/center-absolute/center-absolute-variants.d.ts +1 -1
  49. package/dist/components/layout/scroll-area/scroll-area-root.d.ts +16 -3
  50. package/dist/components/layout/scroll-area/scroll-area-root.js +6 -3
  51. package/dist/components/layout/scroll-area/scroll-area-root.js.map +1 -1
  52. package/dist/components/layout/scroll-area/scroll-area-scrollbar.d.ts +3 -0
  53. package/dist/components/layout/scroll-area/scroll-area-scrollbar.js +9 -2
  54. package/dist/components/layout/scroll-area/scroll-area-scrollbar.js.map +1 -1
  55. package/dist/components/layout/scroll-area/scroll-area-thumb.d.ts +5 -1
  56. package/dist/components/layout/scroll-area/scroll-area-thumb.js +15 -5
  57. package/dist/components/layout/scroll-area/scroll-area-thumb.js.map +1 -1
  58. package/dist/components/layout/scroll-area/scroll-area-viewport-variants.d.ts +1 -1
  59. package/dist/components/overlays/alert-dialog/alert-dialog-body.d.ts +5 -2
  60. package/dist/components/overlays/alert-dialog/alert-dialog-body.js +8 -3
  61. package/dist/components/overlays/alert-dialog/alert-dialog-body.js.map +1 -1
  62. package/dist/components/overlays/alert-dialog/alert-dialog-footer.d.ts +6 -3
  63. package/dist/components/overlays/alert-dialog/alert-dialog-footer.js +9 -5
  64. package/dist/components/overlays/alert-dialog/alert-dialog-footer.js.map +1 -1
  65. package/dist/components/overlays/alert-dialog/alert-dialog-header.d.ts +9 -2
  66. package/dist/components/overlays/alert-dialog/alert-dialog-header.js +19 -5
  67. package/dist/components/overlays/alert-dialog/alert-dialog-header.js.map +1 -1
  68. package/dist/components/overlays/alert-dialog/alert-dialog-imperative.d.ts +87 -28
  69. package/dist/components/overlays/alert-dialog/alert-dialog-imperative.js +120 -55
  70. package/dist/components/overlays/alert-dialog/alert-dialog-imperative.js.map +1 -1
  71. package/dist/components/overlays/alert-dialog/alert-dialog-indicator-variants.d.ts +24 -0
  72. package/dist/components/overlays/alert-dialog/alert-dialog-indicator-variants.js +31 -0
  73. package/dist/components/overlays/alert-dialog/alert-dialog-indicator-variants.js.map +1 -0
  74. package/dist/components/overlays/alert-dialog/alert-dialog-indicator.d.ts +25 -0
  75. package/dist/components/overlays/alert-dialog/alert-dialog-indicator.js +51 -0
  76. package/dist/components/overlays/alert-dialog/alert-dialog-indicator.js.map +1 -0
  77. package/dist/components/overlays/alert-dialog/alert-dialog-outlet.d.ts +4 -0
  78. package/dist/components/overlays/alert-dialog/alert-dialog-outlet.js +13 -2
  79. package/dist/components/overlays/alert-dialog/alert-dialog-outlet.js.map +1 -1
  80. package/dist/components/overlays/alert-dialog/alert-dialog-popup-variants.d.ts +4 -2
  81. package/dist/components/overlays/alert-dialog/alert-dialog-popup-variants.js +7 -6
  82. package/dist/components/overlays/alert-dialog/alert-dialog-popup-variants.js.map +1 -1
  83. package/dist/components/overlays/alert-dialog/alert-dialog-popup.d.ts +2 -1
  84. package/dist/components/overlays/alert-dialog/alert-dialog-popup.js +2 -1
  85. package/dist/components/overlays/alert-dialog/alert-dialog-popup.js.map +1 -1
  86. package/dist/components/overlays/alert-dialog/alert-dialog-store.d.ts +20 -4
  87. package/dist/components/overlays/alert-dialog/alert-dialog-store.js +48 -5
  88. package/dist/components/overlays/alert-dialog/alert-dialog-store.js.map +1 -1
  89. package/dist/components/overlays/alert-dialog/alert-dialog-title.d.ts +3 -2
  90. package/dist/components/overlays/alert-dialog/alert-dialog-title.js +4 -3
  91. package/dist/components/overlays/alert-dialog/alert-dialog-title.js.map +1 -1
  92. package/dist/components/overlays/alert-dialog/index.parts.d.ts +4 -3
  93. package/dist/components/overlays/alert-dialog/index.parts.js +3 -1
  94. package/dist/components/overlays/alert-dialog/index.parts.js.map +1 -1
  95. package/dist/components/overlays/dialog/dialog-body.js +1 -0
  96. package/dist/components/overlays/dialog/dialog-body.js.map +1 -1
  97. package/dist/components/overlays/dialog/dialog-popup-variants.d.ts +1 -1
  98. package/dist/components/overlays/dialog/dialog-popup-variants.js +2 -3
  99. package/dist/components/overlays/dialog/dialog-popup-variants.js.map +1 -1
  100. package/dist/components/overlays/drawer/drawer-body.js +1 -0
  101. package/dist/components/overlays/drawer/drawer-body.js.map +1 -1
  102. package/dist/components/typography/link/index.d.ts +3 -0
  103. package/dist/components/typography/link/index.js +2 -0
  104. package/dist/components/typography/link/link-variants.d.ts +33 -0
  105. package/dist/components/typography/link/link-variants.js +91 -0
  106. package/dist/components/typography/link/link-variants.js.map +1 -0
  107. package/dist/components/typography/link/link.d.ts +50 -0
  108. package/dist/components/typography/link/link.js +74 -0
  109. package/dist/components/typography/link/link.js.map +1 -0
  110. package/dist/components/typography/mark/mark-variants.d.ts +1 -1
  111. package/package.json +4 -4
package/README.md CHANGED
@@ -120,7 +120,8 @@ Toast.add({ type: 'success', title: 'Nota 4821 emitida' });
120
120
  const confirmed = await AlertDialog.confirm({
121
121
  title: 'Excluir a nota 4821?',
122
122
  description: 'A exclusão não pode ser desfeita.',
123
- confirmButton: { children: 'Excluir', colorScheme: 'red' },
123
+ confirmLabel: 'Excluir',
124
+ destructive: true,
124
125
  });
125
126
  ```
126
127
 
@@ -10,7 +10,7 @@ export type CollapsiblePanelVariants = {
10
10
  };
11
11
  export declare const collapsiblePanelDefaultVariants: Required<CollapsiblePanelVariants>;
12
12
  export declare const collapsiblePanelVariants: (props?: ({
13
- orientation?: "vertical" | "horizontal" | null | undefined;
13
+ orientation?: "horizontal" | "vertical" | null | undefined;
14
14
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
15
15
  //#endregion
16
16
  //# sourceMappingURL=collapsible-panel-variants.d.ts.map
@@ -1,6 +1,6 @@
1
1
  //#region src/components/disclosure/tabs/tabs-indicator-variants.d.ts
2
2
  export declare const tabsIndicatorVariants: (props?: ({
3
- variant?: "line" | "subtle" | "outline" | "plain" | "enclosed" | null | undefined;
3
+ variant?: "subtle" | "outline" | "plain" | "line" | "enclosed" | null | undefined;
4
4
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
5
5
  //#endregion
6
6
  //# sourceMappingURL=tabs-indicator-variants.d.ts.map
@@ -2,7 +2,7 @@
2
2
  export declare const tabsListVariants: (props?: ({
3
3
  fitted?: boolean | null | undefined;
4
4
  justify?: "center" | "start" | "end" | null | undefined;
5
- variant?: "line" | "subtle" | "outline" | "plain" | "enclosed" | null | undefined;
5
+ variant?: "subtle" | "outline" | "plain" | "line" | "enclosed" | null | undefined;
6
6
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
7
  //#endregion
8
8
  //# sourceMappingURL=tabs-list-variants.d.ts.map
@@ -7,7 +7,7 @@
7
7
  */
8
8
  export declare const tabsTabVariants: (props?: ({
9
9
  fitted?: boolean | null | undefined;
10
- variant?: "line" | "subtle" | "outline" | "plain" | "enclosed" | null | undefined;
10
+ variant?: "subtle" | "outline" | "plain" | "line" | "enclosed" | null | undefined;
11
11
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
12
12
  //#endregion
13
13
  //# sourceMappingURL=tabs-tab-variants.d.ts.map
@@ -31,7 +31,7 @@ export declare const avatarRootDefaultVariants: Pick<Required<AvatarRootVariants
31
31
  * yellow, sky, mint e lime), que levam preto; o gray é preto no tema claro e branco no escuro.
32
32
  */
33
33
  export declare const avatarRootVariants: (props?: ({
34
- colorScheme?: "ruby" | "gray" | "brand" | "red" | "green" | "blue" | "teal" | "pink" | "purple" | "cyan" | "orange" | "brown" | "yellow" | "amber" | "bronze" | "gold" | "tomato" | "crimson" | "plum" | "violet" | "iris" | "indigo" | "jade" | "grass" | "lime" | "mint" | "sky" | null | undefined;
34
+ colorScheme?: "gray" | "brand" | "red" | "green" | "blue" | "teal" | "pink" | "purple" | "cyan" | "orange" | "brown" | "yellow" | "amber" | "ruby" | "bronze" | "gold" | "tomato" | "crimson" | "plum" | "violet" | "iris" | "indigo" | "jade" | "grass" | "lime" | "mint" | "sky" | null | undefined;
35
35
  size?: "2xs" | "xs" | "sm" | "md" | "lg" | "xl" | null | undefined;
36
36
  variant?: "solid" | "subtle" | "surface" | "outline" | null | undefined;
37
37
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
@@ -31,9 +31,12 @@ export declare const badgeDefaultVariants: Required<BadgeVariants>;
31
31
  * fundo e a borda usam a escala alpha, para o badge funcionar sobre qualquer fundo. No `solid`, o
32
32
  * texto é branco, menos em amber, yellow, sky, mint e lime, claros demais para ele, que levam
33
33
  * preto; o gray sólido é preto no tema claro e branco no escuro, como o do `Button`.
34
+ *
35
+ * O `max-w-full` e o `min-w-0` limitam o badge à largura do pai, para o `Badge` cortar um texto
36
+ * longo com reticências. O `shrink-0` fica: numa linha flex, quem encolhe é o vizinho.
34
37
  */
35
38
  export declare const badgeVariants: (props?: ({
36
- colorScheme?: "ruby" | "gray" | "brand" | "red" | "green" | "blue" | "teal" | "pink" | "purple" | "cyan" | "orange" | "brown" | "yellow" | "amber" | "bronze" | "gold" | "tomato" | "crimson" | "plum" | "violet" | "iris" | "indigo" | "jade" | "grass" | "lime" | "mint" | "sky" | null | undefined;
39
+ colorScheme?: "gray" | "brand" | "red" | "green" | "blue" | "teal" | "pink" | "purple" | "cyan" | "orange" | "brown" | "yellow" | "amber" | "ruby" | "bronze" | "gold" | "tomato" | "crimson" | "plum" | "violet" | "iris" | "indigo" | "jade" | "grass" | "lime" | "mint" | "sky" | null | undefined;
37
40
  size?: "sm" | "md" | "lg" | null | undefined;
38
41
  variant?: "solid" | "subtle" | "surface" | "outline" | null | undefined;
39
42
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
@@ -13,12 +13,17 @@ const badgeDefaultVariants = {
13
13
  * fundo e a borda usam a escala alpha, para o badge funcionar sobre qualquer fundo. No `solid`, o
14
14
  * texto é branco, menos em amber, yellow, sky, mint e lime, claros demais para ele, que levam
15
15
  * preto; o gray sólido é preto no tema claro e branco no escuro, como o do `Button`.
16
+ *
17
+ * O `max-w-full` e o `min-w-0` limitam o badge à largura do pai, para o `Badge` cortar um texto
18
+ * longo com reticências. O `shrink-0` fica: numa linha flex, quem encolhe é o vizinho.
16
19
  */
17
20
  const badgeVariants = cva([
18
21
  "inline-flex",
19
22
  "items-center",
20
23
  "shrink-0",
21
24
  "align-middle",
25
+ "max-w-full",
26
+ "min-w-0",
22
27
  "border",
23
28
  "rounded-sm",
24
29
  "corner-squircle",
@@ -1 +1 @@
1
- {"version":3,"file":"badge-variants.js","names":[],"sources":["../../../../src/components/display/badge/badge-variants.ts"],"sourcesContent":["import { cva } from 'class-variance-authority';\nimport type { ColorSchemeFull } from '#types';\n\nexport type BadgeVariants = {\n /**\n * Cor do texto, do fundo e da borda, entre todas as escalas do tema: para categorias, há\n * variedade; para estado, `red`, `green`, `amber` e `blue`.\n *\n * @default 'gray'\n */\n colorScheme?: ColorSchemeFull;\n /**\n * Altura, padding, tamanho do texto e do ícone: `sm` = `h-5`, `md` = `h-6`, `lg` = `h-7`.\n *\n * @default 'sm'\n */\n size?: 'sm' | 'md' | 'lg';\n /**\n * Fundo e borda: `subtle` só com fundo, `surface` com fundo e borda, `outline` só com borda e\n * `solid` com o fundo cheio (passo 9) e o texto em contraste.\n *\n * @default 'subtle'\n */\n variant?: 'subtle' | 'surface' | 'outline' | 'solid';\n};\n\nexport const badgeDefaultVariants: Required<BadgeVariants> = {\n colorScheme: 'gray',\n size: 'sm',\n variant: 'subtle',\n};\n\n/**\n * Origem do visual do rótulo curto, copiado pela `Tag` (tabela no README de `display`).\n *\n * O `colorScheme` só declara as variáveis `--badge-*`, e a `variant` decide onde cada uma entra.\n * Assim uma cor nova é um bloco de variáveis, sem um bloco por combinação de cor e `variant`. O\n * fundo e a borda usam a escala alpha, para o badge funcionar sobre qualquer fundo. No `solid`, o\n * texto é branco, menos em amber, yellow, sky, mint e lime, claros demais para ele, que levam\n * preto; o gray sólido é preto no tema claro e branco no escuro, como o do `Button`.\n */\nexport const badgeVariants = cva(\n [\n 'inline-flex',\n 'items-center',\n 'shrink-0',\n 'align-middle',\n\n 'border',\n 'rounded-sm',\n 'corner-squircle',\n\n 'font-medium',\n 'leading-none',\n 'whitespace-nowrap',\n 'tabular-nums',\n\n '[&_svg]:shrink-0',\n ],\n {\n variants: {\n colorScheme: {\n gray: [\n '[--badge-fg:var(--color-gray-11)]',\n '[--badge-subtle-bg:var(--color-gray-alpha-3)]',\n '[--badge-surface-bg:var(--color-gray-alpha-2)]',\n '[--badge-surface-border:var(--color-gray-alpha-6)]',\n '[--badge-outline-border:var(--color-gray-alpha-8)]',\n '[--badge-solid-bg:var(--color-black)]',\n 'dark:[--badge-solid-bg:var(--color-white)]',\n '[--badge-solid-fg:var(--color-white)]',\n 'dark:[--badge-solid-fg:var(--color-black)]',\n ],\n brand: [\n '[--badge-fg:var(--color-brand-11)]',\n '[--badge-subtle-bg:var(--color-brand-alpha-3)]',\n '[--badge-surface-bg:var(--color-brand-alpha-2)]',\n '[--badge-surface-border:var(--color-brand-alpha-6)]',\n '[--badge-outline-border:var(--color-brand-alpha-8)]',\n '[--badge-solid-bg:var(--color-brand-9)]',\n '[--badge-solid-fg:var(--color-white)]',\n ],\n red: [\n '[--badge-fg:var(--color-red-11)]',\n '[--badge-subtle-bg:var(--color-red-alpha-3)]',\n '[--badge-surface-bg:var(--color-red-alpha-2)]',\n '[--badge-surface-border:var(--color-red-alpha-6)]',\n '[--badge-outline-border:var(--color-red-alpha-8)]',\n '[--badge-solid-bg:var(--color-red-9)]',\n '[--badge-solid-fg:var(--color-white)]',\n ],\n green: [\n '[--badge-fg:var(--color-green-11)]',\n '[--badge-subtle-bg:var(--color-green-alpha-3)]',\n '[--badge-surface-bg:var(--color-green-alpha-2)]',\n '[--badge-surface-border:var(--color-green-alpha-6)]',\n '[--badge-outline-border:var(--color-green-alpha-8)]',\n '[--badge-solid-bg:var(--color-green-9)]',\n '[--badge-solid-fg:var(--color-white)]',\n ],\n blue: [\n '[--badge-fg:var(--color-blue-11)]',\n '[--badge-subtle-bg:var(--color-blue-alpha-3)]',\n '[--badge-surface-bg:var(--color-blue-alpha-2)]',\n '[--badge-surface-border:var(--color-blue-alpha-6)]',\n '[--badge-outline-border:var(--color-blue-alpha-8)]',\n '[--badge-solid-bg:var(--color-blue-9)]',\n '[--badge-solid-fg:var(--color-white)]',\n ],\n amber: [\n '[--badge-fg:var(--color-amber-11)]',\n '[--badge-subtle-bg:var(--color-amber-alpha-3)]',\n '[--badge-surface-bg:var(--color-amber-alpha-2)]',\n '[--badge-surface-border:var(--color-amber-alpha-6)]',\n '[--badge-outline-border:var(--color-amber-alpha-8)]',\n '[--badge-solid-bg:var(--color-amber-9)]',\n '[--badge-solid-fg:var(--color-black)]',\n ],\n purple: [\n '[--badge-fg:var(--color-purple-11)]',\n '[--badge-subtle-bg:var(--color-purple-alpha-3)]',\n '[--badge-surface-bg:var(--color-purple-alpha-2)]',\n '[--badge-surface-border:var(--color-purple-alpha-6)]',\n '[--badge-outline-border:var(--color-purple-alpha-8)]',\n '[--badge-solid-bg:var(--color-purple-9)]',\n '[--badge-solid-fg:var(--color-white)]',\n ],\n pink: [\n '[--badge-fg:var(--color-pink-11)]',\n '[--badge-subtle-bg:var(--color-pink-alpha-3)]',\n '[--badge-surface-bg:var(--color-pink-alpha-2)]',\n '[--badge-surface-border:var(--color-pink-alpha-6)]',\n '[--badge-outline-border:var(--color-pink-alpha-8)]',\n '[--badge-solid-bg:var(--color-pink-9)]',\n '[--badge-solid-fg:var(--color-white)]',\n ],\n cyan: [\n '[--badge-fg:var(--color-cyan-11)]',\n '[--badge-subtle-bg:var(--color-cyan-alpha-3)]',\n '[--badge-surface-bg:var(--color-cyan-alpha-2)]',\n '[--badge-surface-border:var(--color-cyan-alpha-6)]',\n '[--badge-outline-border:var(--color-cyan-alpha-8)]',\n '[--badge-solid-bg:var(--color-cyan-9)]',\n '[--badge-solid-fg:var(--color-white)]',\n ],\n teal: [\n '[--badge-fg:var(--color-teal-11)]',\n '[--badge-subtle-bg:var(--color-teal-alpha-3)]',\n '[--badge-surface-bg:var(--color-teal-alpha-2)]',\n '[--badge-surface-border:var(--color-teal-alpha-6)]',\n '[--badge-outline-border:var(--color-teal-alpha-8)]',\n '[--badge-solid-bg:var(--color-teal-9)]',\n '[--badge-solid-fg:var(--color-white)]',\n ],\n orange: [\n '[--badge-fg:var(--color-orange-11)]',\n '[--badge-subtle-bg:var(--color-orange-alpha-3)]',\n '[--badge-surface-bg:var(--color-orange-alpha-2)]',\n '[--badge-surface-border:var(--color-orange-alpha-6)]',\n '[--badge-outline-border:var(--color-orange-alpha-8)]',\n '[--badge-solid-bg:var(--color-orange-9)]',\n '[--badge-solid-fg:var(--color-white)]',\n ],\n brown: [\n '[--badge-fg:var(--color-brown-11)]',\n '[--badge-subtle-bg:var(--color-brown-alpha-3)]',\n '[--badge-surface-bg:var(--color-brown-alpha-2)]',\n '[--badge-surface-border:var(--color-brown-alpha-6)]',\n '[--badge-outline-border:var(--color-brown-alpha-8)]',\n '[--badge-solid-bg:var(--color-brown-9)]',\n '[--badge-solid-fg:var(--color-white)]',\n ],\n yellow: [\n '[--badge-fg:var(--color-yellow-11)]',\n '[--badge-subtle-bg:var(--color-yellow-alpha-3)]',\n '[--badge-surface-bg:var(--color-yellow-alpha-2)]',\n '[--badge-surface-border:var(--color-yellow-alpha-6)]',\n '[--badge-outline-border:var(--color-yellow-alpha-8)]',\n '[--badge-solid-bg:var(--color-yellow-9)]',\n '[--badge-solid-fg:var(--color-black)]',\n ],\n bronze: [\n '[--badge-fg:var(--color-bronze-11)]',\n '[--badge-subtle-bg:var(--color-bronze-alpha-3)]',\n '[--badge-surface-bg:var(--color-bronze-alpha-2)]',\n '[--badge-surface-border:var(--color-bronze-alpha-6)]',\n '[--badge-outline-border:var(--color-bronze-alpha-8)]',\n '[--badge-solid-bg:var(--color-bronze-9)]',\n '[--badge-solid-fg:var(--color-white)]',\n ],\n gold: [\n '[--badge-fg:var(--color-gold-11)]',\n '[--badge-subtle-bg:var(--color-gold-alpha-3)]',\n '[--badge-surface-bg:var(--color-gold-alpha-2)]',\n '[--badge-surface-border:var(--color-gold-alpha-6)]',\n '[--badge-outline-border:var(--color-gold-alpha-8)]',\n '[--badge-solid-bg:var(--color-gold-9)]',\n '[--badge-solid-fg:var(--color-white)]',\n ],\n tomato: [\n '[--badge-fg:var(--color-tomato-11)]',\n '[--badge-subtle-bg:var(--color-tomato-alpha-3)]',\n '[--badge-surface-bg:var(--color-tomato-alpha-2)]',\n '[--badge-surface-border:var(--color-tomato-alpha-6)]',\n '[--badge-outline-border:var(--color-tomato-alpha-8)]',\n '[--badge-solid-bg:var(--color-tomato-9)]',\n '[--badge-solid-fg:var(--color-white)]',\n ],\n ruby: [\n '[--badge-fg:var(--color-ruby-11)]',\n '[--badge-subtle-bg:var(--color-ruby-alpha-3)]',\n '[--badge-surface-bg:var(--color-ruby-alpha-2)]',\n '[--badge-surface-border:var(--color-ruby-alpha-6)]',\n '[--badge-outline-border:var(--color-ruby-alpha-8)]',\n '[--badge-solid-bg:var(--color-ruby-9)]',\n '[--badge-solid-fg:var(--color-white)]',\n ],\n crimson: [\n '[--badge-fg:var(--color-crimson-11)]',\n '[--badge-subtle-bg:var(--color-crimson-alpha-3)]',\n '[--badge-surface-bg:var(--color-crimson-alpha-2)]',\n '[--badge-surface-border:var(--color-crimson-alpha-6)]',\n '[--badge-outline-border:var(--color-crimson-alpha-8)]',\n '[--badge-solid-bg:var(--color-crimson-9)]',\n '[--badge-solid-fg:var(--color-white)]',\n ],\n plum: [\n '[--badge-fg:var(--color-plum-11)]',\n '[--badge-subtle-bg:var(--color-plum-alpha-3)]',\n '[--badge-surface-bg:var(--color-plum-alpha-2)]',\n '[--badge-surface-border:var(--color-plum-alpha-6)]',\n '[--badge-outline-border:var(--color-plum-alpha-8)]',\n '[--badge-solid-bg:var(--color-plum-9)]',\n '[--badge-solid-fg:var(--color-white)]',\n ],\n violet: [\n '[--badge-fg:var(--color-violet-11)]',\n '[--badge-subtle-bg:var(--color-violet-alpha-3)]',\n '[--badge-surface-bg:var(--color-violet-alpha-2)]',\n '[--badge-surface-border:var(--color-violet-alpha-6)]',\n '[--badge-outline-border:var(--color-violet-alpha-8)]',\n '[--badge-solid-bg:var(--color-violet-9)]',\n '[--badge-solid-fg:var(--color-white)]',\n ],\n iris: [\n '[--badge-fg:var(--color-iris-11)]',\n '[--badge-subtle-bg:var(--color-iris-alpha-3)]',\n '[--badge-surface-bg:var(--color-iris-alpha-2)]',\n '[--badge-surface-border:var(--color-iris-alpha-6)]',\n '[--badge-outline-border:var(--color-iris-alpha-8)]',\n '[--badge-solid-bg:var(--color-iris-9)]',\n '[--badge-solid-fg:var(--color-white)]',\n ],\n indigo: [\n '[--badge-fg:var(--color-indigo-11)]',\n '[--badge-subtle-bg:var(--color-indigo-alpha-3)]',\n '[--badge-surface-bg:var(--color-indigo-alpha-2)]',\n '[--badge-surface-border:var(--color-indigo-alpha-6)]',\n '[--badge-outline-border:var(--color-indigo-alpha-8)]',\n '[--badge-solid-bg:var(--color-indigo-9)]',\n '[--badge-solid-fg:var(--color-white)]',\n ],\n sky: [\n '[--badge-fg:var(--color-sky-11)]',\n '[--badge-subtle-bg:var(--color-sky-alpha-3)]',\n '[--badge-surface-bg:var(--color-sky-alpha-2)]',\n '[--badge-surface-border:var(--color-sky-alpha-6)]',\n '[--badge-outline-border:var(--color-sky-alpha-8)]',\n '[--badge-solid-bg:var(--color-sky-9)]',\n '[--badge-solid-fg:var(--color-black)]',\n ],\n mint: [\n '[--badge-fg:var(--color-mint-11)]',\n '[--badge-subtle-bg:var(--color-mint-alpha-3)]',\n '[--badge-surface-bg:var(--color-mint-alpha-2)]',\n '[--badge-surface-border:var(--color-mint-alpha-6)]',\n '[--badge-outline-border:var(--color-mint-alpha-8)]',\n '[--badge-solid-bg:var(--color-mint-9)]',\n '[--badge-solid-fg:var(--color-black)]',\n ],\n lime: [\n '[--badge-fg:var(--color-lime-11)]',\n '[--badge-subtle-bg:var(--color-lime-alpha-3)]',\n '[--badge-surface-bg:var(--color-lime-alpha-2)]',\n '[--badge-surface-border:var(--color-lime-alpha-6)]',\n '[--badge-outline-border:var(--color-lime-alpha-8)]',\n '[--badge-solid-bg:var(--color-lime-9)]',\n '[--badge-solid-fg:var(--color-black)]',\n ],\n jade: [\n '[--badge-fg:var(--color-jade-11)]',\n '[--badge-subtle-bg:var(--color-jade-alpha-3)]',\n '[--badge-surface-bg:var(--color-jade-alpha-2)]',\n '[--badge-surface-border:var(--color-jade-alpha-6)]',\n '[--badge-outline-border:var(--color-jade-alpha-8)]',\n '[--badge-solid-bg:var(--color-jade-9)]',\n '[--badge-solid-fg:var(--color-white)]',\n ],\n grass: [\n '[--badge-fg:var(--color-grass-11)]',\n '[--badge-subtle-bg:var(--color-grass-alpha-3)]',\n '[--badge-surface-bg:var(--color-grass-alpha-2)]',\n '[--badge-surface-border:var(--color-grass-alpha-6)]',\n '[--badge-outline-border:var(--color-grass-alpha-8)]',\n '[--badge-solid-bg:var(--color-grass-9)]',\n '[--badge-solid-fg:var(--color-white)]',\n ],\n },\n size: {\n sm: ['h-5', 'px-1.5', 'gap-1', 'text-xs', '[&_svg]:size-3'],\n md: ['h-6', 'px-2', 'gap-1', 'text-xs', '[&_svg]:size-3.5'],\n lg: ['h-7', 'px-2.5', 'gap-1.5', 'text-sm', '[&_svg]:size-4'],\n },\n variant: {\n // A borda transparente fica para as variantes terem a mesma medida.\n subtle: [\n 'border-transparent',\n 'bg-(--badge-subtle-bg)',\n 'text-(--badge-fg)',\n ],\n surface: [\n 'border-(--badge-surface-border)',\n 'bg-(--badge-surface-bg)',\n 'text-(--badge-fg)',\n ],\n outline: ['border-(--badge-outline-border)', 'text-(--badge-fg)'],\n solid: [\n 'border-transparent',\n 'bg-(--badge-solid-bg)',\n 'text-(--badge-solid-fg)',\n ],\n },\n },\n defaultVariants: {\n colorScheme: badgeDefaultVariants.colorScheme,\n size: badgeDefaultVariants.size,\n variant: badgeDefaultVariants.variant,\n },\n },\n);\n"],"mappings":";;AA0BA,MAAa,uBAAgD;CAC3D,aAAa;CACb,MAAM;CACN,SAAS;AACX;;;;;;;;;;AAWA,MAAa,gBAAgB,IAC3B;CACE;CACA;CACA;CACA;CAEA;CACA;CACA;CAEA;CACA;CACA;CACA;CAEA;AACF,GACA;CACE,UAAU;EACR,aAAa;GACX,MAAM;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,OAAO;IACL;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,KAAK;IACH;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,OAAO;IACL;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,MAAM;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,OAAO;IACL;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,QAAQ;IACN;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,MAAM;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,MAAM;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,MAAM;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,QAAQ;IACN;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,OAAO;IACL;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,QAAQ;IACN;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,QAAQ;IACN;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,MAAM;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,QAAQ;IACN;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,MAAM;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,SAAS;IACP;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,MAAM;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,QAAQ;IACN;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,MAAM;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,QAAQ;IACN;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,KAAK;IACH;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,MAAM;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,MAAM;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,MAAM;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,OAAO;IACL;IACA;IACA;IACA;IACA;IACA;IACA;GACF;EACF;EACA,MAAM;GACJ,IAAI;IAAC;IAAO;IAAU;IAAS;IAAW;GAAgB;GAC1D,IAAI;IAAC;IAAO;IAAQ;IAAS;IAAW;GAAkB;GAC1D,IAAI;IAAC;IAAO;IAAU;IAAW;IAAW;GAAgB;EAC9D;EACA,SAAS;GAEP,QAAQ;IACN;IACA;IACA;GACF;GACA,SAAS;IACP;IACA;IACA;GACF;GACA,SAAS,CAAC,mCAAmC,mBAAmB;GAChE,OAAO;IACL;IACA;IACA;GACF;EACF;CACF;CACA,iBAAiB;EACf,aAAa,qBAAqB;EAClC,MAAM,qBAAqB;EAC3B,SAAS,qBAAqB;CAChC;AACF,CACF"}
1
+ {"version":3,"file":"badge-variants.js","names":[],"sources":["../../../../src/components/display/badge/badge-variants.ts"],"sourcesContent":["import { cva } from 'class-variance-authority';\nimport type { ColorSchemeFull } from '#types';\n\nexport type BadgeVariants = {\n /**\n * Cor do texto, do fundo e da borda, entre todas as escalas do tema: para categorias, há\n * variedade; para estado, `red`, `green`, `amber` e `blue`.\n *\n * @default 'gray'\n */\n colorScheme?: ColorSchemeFull;\n /**\n * Altura, padding, tamanho do texto e do ícone: `sm` = `h-5`, `md` = `h-6`, `lg` = `h-7`.\n *\n * @default 'sm'\n */\n size?: 'sm' | 'md' | 'lg';\n /**\n * Fundo e borda: `subtle` só com fundo, `surface` com fundo e borda, `outline` só com borda e\n * `solid` com o fundo cheio (passo 9) e o texto em contraste.\n *\n * @default 'subtle'\n */\n variant?: 'subtle' | 'surface' | 'outline' | 'solid';\n};\n\nexport const badgeDefaultVariants: Required<BadgeVariants> = {\n colorScheme: 'gray',\n size: 'sm',\n variant: 'subtle',\n};\n\n/**\n * Origem do visual do rótulo curto, copiado pela `Tag` (tabela no README de `display`).\n *\n * O `colorScheme` só declara as variáveis `--badge-*`, e a `variant` decide onde cada uma entra.\n * Assim uma cor nova é um bloco de variáveis, sem um bloco por combinação de cor e `variant`. O\n * fundo e a borda usam a escala alpha, para o badge funcionar sobre qualquer fundo. No `solid`, o\n * texto é branco, menos em amber, yellow, sky, mint e lime, claros demais para ele, que levam\n * preto; o gray sólido é preto no tema claro e branco no escuro, como o do `Button`.\n *\n * O `max-w-full` e o `min-w-0` limitam o badge à largura do pai, para o `Badge` cortar um texto\n * longo com reticências. O `shrink-0` fica: numa linha flex, quem encolhe é o vizinho.\n */\nexport const badgeVariants = cva(\n [\n 'inline-flex',\n 'items-center',\n 'shrink-0',\n 'align-middle',\n\n 'max-w-full',\n 'min-w-0',\n\n 'border',\n 'rounded-sm',\n 'corner-squircle',\n\n 'font-medium',\n 'leading-none',\n 'whitespace-nowrap',\n 'tabular-nums',\n\n '[&_svg]:shrink-0',\n ],\n {\n variants: {\n colorScheme: {\n gray: [\n '[--badge-fg:var(--color-gray-11)]',\n '[--badge-subtle-bg:var(--color-gray-alpha-3)]',\n '[--badge-surface-bg:var(--color-gray-alpha-2)]',\n '[--badge-surface-border:var(--color-gray-alpha-6)]',\n '[--badge-outline-border:var(--color-gray-alpha-8)]',\n '[--badge-solid-bg:var(--color-black)]',\n 'dark:[--badge-solid-bg:var(--color-white)]',\n '[--badge-solid-fg:var(--color-white)]',\n 'dark:[--badge-solid-fg:var(--color-black)]',\n ],\n brand: [\n '[--badge-fg:var(--color-brand-11)]',\n '[--badge-subtle-bg:var(--color-brand-alpha-3)]',\n '[--badge-surface-bg:var(--color-brand-alpha-2)]',\n '[--badge-surface-border:var(--color-brand-alpha-6)]',\n '[--badge-outline-border:var(--color-brand-alpha-8)]',\n '[--badge-solid-bg:var(--color-brand-9)]',\n '[--badge-solid-fg:var(--color-white)]',\n ],\n red: [\n '[--badge-fg:var(--color-red-11)]',\n '[--badge-subtle-bg:var(--color-red-alpha-3)]',\n '[--badge-surface-bg:var(--color-red-alpha-2)]',\n '[--badge-surface-border:var(--color-red-alpha-6)]',\n '[--badge-outline-border:var(--color-red-alpha-8)]',\n '[--badge-solid-bg:var(--color-red-9)]',\n '[--badge-solid-fg:var(--color-white)]',\n ],\n green: [\n '[--badge-fg:var(--color-green-11)]',\n '[--badge-subtle-bg:var(--color-green-alpha-3)]',\n '[--badge-surface-bg:var(--color-green-alpha-2)]',\n '[--badge-surface-border:var(--color-green-alpha-6)]',\n '[--badge-outline-border:var(--color-green-alpha-8)]',\n '[--badge-solid-bg:var(--color-green-9)]',\n '[--badge-solid-fg:var(--color-white)]',\n ],\n blue: [\n '[--badge-fg:var(--color-blue-11)]',\n '[--badge-subtle-bg:var(--color-blue-alpha-3)]',\n '[--badge-surface-bg:var(--color-blue-alpha-2)]',\n '[--badge-surface-border:var(--color-blue-alpha-6)]',\n '[--badge-outline-border:var(--color-blue-alpha-8)]',\n '[--badge-solid-bg:var(--color-blue-9)]',\n '[--badge-solid-fg:var(--color-white)]',\n ],\n amber: [\n '[--badge-fg:var(--color-amber-11)]',\n '[--badge-subtle-bg:var(--color-amber-alpha-3)]',\n '[--badge-surface-bg:var(--color-amber-alpha-2)]',\n '[--badge-surface-border:var(--color-amber-alpha-6)]',\n '[--badge-outline-border:var(--color-amber-alpha-8)]',\n '[--badge-solid-bg:var(--color-amber-9)]',\n '[--badge-solid-fg:var(--color-black)]',\n ],\n purple: [\n '[--badge-fg:var(--color-purple-11)]',\n '[--badge-subtle-bg:var(--color-purple-alpha-3)]',\n '[--badge-surface-bg:var(--color-purple-alpha-2)]',\n '[--badge-surface-border:var(--color-purple-alpha-6)]',\n '[--badge-outline-border:var(--color-purple-alpha-8)]',\n '[--badge-solid-bg:var(--color-purple-9)]',\n '[--badge-solid-fg:var(--color-white)]',\n ],\n pink: [\n '[--badge-fg:var(--color-pink-11)]',\n '[--badge-subtle-bg:var(--color-pink-alpha-3)]',\n '[--badge-surface-bg:var(--color-pink-alpha-2)]',\n '[--badge-surface-border:var(--color-pink-alpha-6)]',\n '[--badge-outline-border:var(--color-pink-alpha-8)]',\n '[--badge-solid-bg:var(--color-pink-9)]',\n '[--badge-solid-fg:var(--color-white)]',\n ],\n cyan: [\n '[--badge-fg:var(--color-cyan-11)]',\n '[--badge-subtle-bg:var(--color-cyan-alpha-3)]',\n '[--badge-surface-bg:var(--color-cyan-alpha-2)]',\n '[--badge-surface-border:var(--color-cyan-alpha-6)]',\n '[--badge-outline-border:var(--color-cyan-alpha-8)]',\n '[--badge-solid-bg:var(--color-cyan-9)]',\n '[--badge-solid-fg:var(--color-white)]',\n ],\n teal: [\n '[--badge-fg:var(--color-teal-11)]',\n '[--badge-subtle-bg:var(--color-teal-alpha-3)]',\n '[--badge-surface-bg:var(--color-teal-alpha-2)]',\n '[--badge-surface-border:var(--color-teal-alpha-6)]',\n '[--badge-outline-border:var(--color-teal-alpha-8)]',\n '[--badge-solid-bg:var(--color-teal-9)]',\n '[--badge-solid-fg:var(--color-white)]',\n ],\n orange: [\n '[--badge-fg:var(--color-orange-11)]',\n '[--badge-subtle-bg:var(--color-orange-alpha-3)]',\n '[--badge-surface-bg:var(--color-orange-alpha-2)]',\n '[--badge-surface-border:var(--color-orange-alpha-6)]',\n '[--badge-outline-border:var(--color-orange-alpha-8)]',\n '[--badge-solid-bg:var(--color-orange-9)]',\n '[--badge-solid-fg:var(--color-white)]',\n ],\n brown: [\n '[--badge-fg:var(--color-brown-11)]',\n '[--badge-subtle-bg:var(--color-brown-alpha-3)]',\n '[--badge-surface-bg:var(--color-brown-alpha-2)]',\n '[--badge-surface-border:var(--color-brown-alpha-6)]',\n '[--badge-outline-border:var(--color-brown-alpha-8)]',\n '[--badge-solid-bg:var(--color-brown-9)]',\n '[--badge-solid-fg:var(--color-white)]',\n ],\n yellow: [\n '[--badge-fg:var(--color-yellow-11)]',\n '[--badge-subtle-bg:var(--color-yellow-alpha-3)]',\n '[--badge-surface-bg:var(--color-yellow-alpha-2)]',\n '[--badge-surface-border:var(--color-yellow-alpha-6)]',\n '[--badge-outline-border:var(--color-yellow-alpha-8)]',\n '[--badge-solid-bg:var(--color-yellow-9)]',\n '[--badge-solid-fg:var(--color-black)]',\n ],\n bronze: [\n '[--badge-fg:var(--color-bronze-11)]',\n '[--badge-subtle-bg:var(--color-bronze-alpha-3)]',\n '[--badge-surface-bg:var(--color-bronze-alpha-2)]',\n '[--badge-surface-border:var(--color-bronze-alpha-6)]',\n '[--badge-outline-border:var(--color-bronze-alpha-8)]',\n '[--badge-solid-bg:var(--color-bronze-9)]',\n '[--badge-solid-fg:var(--color-white)]',\n ],\n gold: [\n '[--badge-fg:var(--color-gold-11)]',\n '[--badge-subtle-bg:var(--color-gold-alpha-3)]',\n '[--badge-surface-bg:var(--color-gold-alpha-2)]',\n '[--badge-surface-border:var(--color-gold-alpha-6)]',\n '[--badge-outline-border:var(--color-gold-alpha-8)]',\n '[--badge-solid-bg:var(--color-gold-9)]',\n '[--badge-solid-fg:var(--color-white)]',\n ],\n tomato: [\n '[--badge-fg:var(--color-tomato-11)]',\n '[--badge-subtle-bg:var(--color-tomato-alpha-3)]',\n '[--badge-surface-bg:var(--color-tomato-alpha-2)]',\n '[--badge-surface-border:var(--color-tomato-alpha-6)]',\n '[--badge-outline-border:var(--color-tomato-alpha-8)]',\n '[--badge-solid-bg:var(--color-tomato-9)]',\n '[--badge-solid-fg:var(--color-white)]',\n ],\n ruby: [\n '[--badge-fg:var(--color-ruby-11)]',\n '[--badge-subtle-bg:var(--color-ruby-alpha-3)]',\n '[--badge-surface-bg:var(--color-ruby-alpha-2)]',\n '[--badge-surface-border:var(--color-ruby-alpha-6)]',\n '[--badge-outline-border:var(--color-ruby-alpha-8)]',\n '[--badge-solid-bg:var(--color-ruby-9)]',\n '[--badge-solid-fg:var(--color-white)]',\n ],\n crimson: [\n '[--badge-fg:var(--color-crimson-11)]',\n '[--badge-subtle-bg:var(--color-crimson-alpha-3)]',\n '[--badge-surface-bg:var(--color-crimson-alpha-2)]',\n '[--badge-surface-border:var(--color-crimson-alpha-6)]',\n '[--badge-outline-border:var(--color-crimson-alpha-8)]',\n '[--badge-solid-bg:var(--color-crimson-9)]',\n '[--badge-solid-fg:var(--color-white)]',\n ],\n plum: [\n '[--badge-fg:var(--color-plum-11)]',\n '[--badge-subtle-bg:var(--color-plum-alpha-3)]',\n '[--badge-surface-bg:var(--color-plum-alpha-2)]',\n '[--badge-surface-border:var(--color-plum-alpha-6)]',\n '[--badge-outline-border:var(--color-plum-alpha-8)]',\n '[--badge-solid-bg:var(--color-plum-9)]',\n '[--badge-solid-fg:var(--color-white)]',\n ],\n violet: [\n '[--badge-fg:var(--color-violet-11)]',\n '[--badge-subtle-bg:var(--color-violet-alpha-3)]',\n '[--badge-surface-bg:var(--color-violet-alpha-2)]',\n '[--badge-surface-border:var(--color-violet-alpha-6)]',\n '[--badge-outline-border:var(--color-violet-alpha-8)]',\n '[--badge-solid-bg:var(--color-violet-9)]',\n '[--badge-solid-fg:var(--color-white)]',\n ],\n iris: [\n '[--badge-fg:var(--color-iris-11)]',\n '[--badge-subtle-bg:var(--color-iris-alpha-3)]',\n '[--badge-surface-bg:var(--color-iris-alpha-2)]',\n '[--badge-surface-border:var(--color-iris-alpha-6)]',\n '[--badge-outline-border:var(--color-iris-alpha-8)]',\n '[--badge-solid-bg:var(--color-iris-9)]',\n '[--badge-solid-fg:var(--color-white)]',\n ],\n indigo: [\n '[--badge-fg:var(--color-indigo-11)]',\n '[--badge-subtle-bg:var(--color-indigo-alpha-3)]',\n '[--badge-surface-bg:var(--color-indigo-alpha-2)]',\n '[--badge-surface-border:var(--color-indigo-alpha-6)]',\n '[--badge-outline-border:var(--color-indigo-alpha-8)]',\n '[--badge-solid-bg:var(--color-indigo-9)]',\n '[--badge-solid-fg:var(--color-white)]',\n ],\n sky: [\n '[--badge-fg:var(--color-sky-11)]',\n '[--badge-subtle-bg:var(--color-sky-alpha-3)]',\n '[--badge-surface-bg:var(--color-sky-alpha-2)]',\n '[--badge-surface-border:var(--color-sky-alpha-6)]',\n '[--badge-outline-border:var(--color-sky-alpha-8)]',\n '[--badge-solid-bg:var(--color-sky-9)]',\n '[--badge-solid-fg:var(--color-black)]',\n ],\n mint: [\n '[--badge-fg:var(--color-mint-11)]',\n '[--badge-subtle-bg:var(--color-mint-alpha-3)]',\n '[--badge-surface-bg:var(--color-mint-alpha-2)]',\n '[--badge-surface-border:var(--color-mint-alpha-6)]',\n '[--badge-outline-border:var(--color-mint-alpha-8)]',\n '[--badge-solid-bg:var(--color-mint-9)]',\n '[--badge-solid-fg:var(--color-black)]',\n ],\n lime: [\n '[--badge-fg:var(--color-lime-11)]',\n '[--badge-subtle-bg:var(--color-lime-alpha-3)]',\n '[--badge-surface-bg:var(--color-lime-alpha-2)]',\n '[--badge-surface-border:var(--color-lime-alpha-6)]',\n '[--badge-outline-border:var(--color-lime-alpha-8)]',\n '[--badge-solid-bg:var(--color-lime-9)]',\n '[--badge-solid-fg:var(--color-black)]',\n ],\n jade: [\n '[--badge-fg:var(--color-jade-11)]',\n '[--badge-subtle-bg:var(--color-jade-alpha-3)]',\n '[--badge-surface-bg:var(--color-jade-alpha-2)]',\n '[--badge-surface-border:var(--color-jade-alpha-6)]',\n '[--badge-outline-border:var(--color-jade-alpha-8)]',\n '[--badge-solid-bg:var(--color-jade-9)]',\n '[--badge-solid-fg:var(--color-white)]',\n ],\n grass: [\n '[--badge-fg:var(--color-grass-11)]',\n '[--badge-subtle-bg:var(--color-grass-alpha-3)]',\n '[--badge-surface-bg:var(--color-grass-alpha-2)]',\n '[--badge-surface-border:var(--color-grass-alpha-6)]',\n '[--badge-outline-border:var(--color-grass-alpha-8)]',\n '[--badge-solid-bg:var(--color-grass-9)]',\n '[--badge-solid-fg:var(--color-white)]',\n ],\n },\n size: {\n sm: ['h-5', 'px-1.5', 'gap-1', 'text-xs', '[&_svg]:size-3'],\n md: ['h-6', 'px-2', 'gap-1', 'text-xs', '[&_svg]:size-3.5'],\n lg: ['h-7', 'px-2.5', 'gap-1.5', 'text-sm', '[&_svg]:size-4'],\n },\n variant: {\n // A borda transparente fica para as variantes terem a mesma medida.\n subtle: [\n 'border-transparent',\n 'bg-(--badge-subtle-bg)',\n 'text-(--badge-fg)',\n ],\n surface: [\n 'border-(--badge-surface-border)',\n 'bg-(--badge-surface-bg)',\n 'text-(--badge-fg)',\n ],\n outline: ['border-(--badge-outline-border)', 'text-(--badge-fg)'],\n solid: [\n 'border-transparent',\n 'bg-(--badge-solid-bg)',\n 'text-(--badge-solid-fg)',\n ],\n },\n },\n defaultVariants: {\n colorScheme: badgeDefaultVariants.colorScheme,\n size: badgeDefaultVariants.size,\n variant: badgeDefaultVariants.variant,\n },\n },\n);\n"],"mappings":";;AA0BA,MAAa,uBAAgD;CAC3D,aAAa;CACb,MAAM;CACN,SAAS;AACX;;;;;;;;;;;;;AAcA,MAAa,gBAAgB,IAC3B;CACE;CACA;CACA;CACA;CAEA;CACA;CAEA;CACA;CACA;CAEA;CACA;CACA;CACA;CAEA;AACF,GACA;CACE,UAAU;EACR,aAAa;GACX,MAAM;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,OAAO;IACL;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,KAAK;IACH;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,OAAO;IACL;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,MAAM;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,OAAO;IACL;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,QAAQ;IACN;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,MAAM;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,MAAM;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,MAAM;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,QAAQ;IACN;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,OAAO;IACL;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,QAAQ;IACN;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,QAAQ;IACN;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,MAAM;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,QAAQ;IACN;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,MAAM;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,SAAS;IACP;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,MAAM;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,QAAQ;IACN;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,MAAM;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,QAAQ;IACN;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,KAAK;IACH;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,MAAM;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,MAAM;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,MAAM;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,OAAO;IACL;IACA;IACA;IACA;IACA;IACA;IACA;GACF;EACF;EACA,MAAM;GACJ,IAAI;IAAC;IAAO;IAAU;IAAS;IAAW;GAAgB;GAC1D,IAAI;IAAC;IAAO;IAAQ;IAAS;IAAW;GAAkB;GAC1D,IAAI;IAAC;IAAO;IAAU;IAAW;IAAW;GAAgB;EAC9D;EACA,SAAS;GAEP,QAAQ;IACN;IACA;IACA;GACF;GACA,SAAS;IACP;IACA;IACA;GACF;GACA,SAAS,CAAC,mCAAmC,mBAAmB;GAChE,OAAO;IACL;IACA;IACA;GACF;EACF;CACF;CACA,iBAAiB;EACf,aAAa,qBAAqB;EAClC,MAAM,qBAAqB;EAC3B,SAAS,qBAAqB;CAChC;AACF,CACF"}
@@ -1,4 +1,5 @@
1
1
  import { BadgeVariants } from "./badge-variants.js";
2
+ import React from "react";
2
3
  import { MergeOverride } from "@lucasbernardosn/ts-utils";
3
4
  import { useRender } from "@base-ui/react";
4
5
  //#region src/components/display/badge/badge.d.ts
@@ -10,13 +11,21 @@ export type BadgeProps = MergeOverride<useRender.ComponentProps<'span'>, BadgeVa
10
11
  * Um ícone entra nos filhos, antes ou depois do texto, pelo `Icon` da lib. A cor sozinha não
11
12
  * comunica para quem não a distingue: o texto diz o que o badge significa.
12
13
  *
14
+ * O badge não passa da largura do pai: um texto que não cabe termina em reticências. O leitor de
15
+ * tela lê o texto inteiro, e quem vê precisa dele no `title`, como no `Truncate`.
16
+ *
13
17
  * @example
14
18
  * ```tsx
15
19
  * <Badge colorScheme="green">Pago</Badge>
16
20
  * ```
21
+ *
22
+ * @example
23
+ * ```tsx
24
+ * <Badge title={status}>{status}</Badge>
25
+ * ```
17
26
  */
18
27
  export declare const Badge: {
19
- (props: BadgeProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
28
+ (props: BadgeProps): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
20
29
  displayName: string;
21
30
  };
22
31
  //#endregion
@@ -1,7 +1,9 @@
1
1
  import { mergeTwClassNames } from "../../../utils/merge-class-names.js";
2
2
  import { badgeVariants } from "./badge-variants.js";
3
+ import { Children } from "react";
3
4
  import { createSplitProps } from "@lucasbernardosn/ts-utils";
4
5
  import { mergeProps, useRender } from "@base-ui/react";
6
+ import { jsx } from "react/jsx-runtime";
5
7
  //#region src/components/display/badge/badge.tsx
6
8
  const splitVariantProps = createSplitProps();
7
9
  /**
@@ -11,10 +13,18 @@ const splitVariantProps = createSplitProps();
11
13
  * Um ícone entra nos filhos, antes ou depois do texto, pelo `Icon` da lib. A cor sozinha não
12
14
  * comunica para quem não a distingue: o texto diz o que o badge significa.
13
15
  *
16
+ * O badge não passa da largura do pai: um texto que não cabe termina em reticências. O leitor de
17
+ * tela lê o texto inteiro, e quem vê precisa dele no `title`, como no `Truncate`.
18
+ *
14
19
  * @example
15
20
  * ```tsx
16
21
  * <Badge colorScheme="green">Pago</Badge>
17
22
  * ```
23
+ *
24
+ * @example
25
+ * ```tsx
26
+ * <Badge title={status}>{status}</Badge>
27
+ * ```
18
28
  */
19
29
  const Badge = (props) => {
20
30
  const [variantProps, elementProps] = splitVariantProps(props, [
@@ -22,7 +32,7 @@ const Badge = (props) => {
22
32
  "size",
23
33
  "variant"
24
34
  ]);
25
- const { render, className, ...rest } = elementProps;
35
+ const { render, className, children, ...rest } = elementProps;
26
36
  const baseProps = {
27
37
  "data-component": "Badge",
28
38
  className: mergeTwClassNames(badgeVariants(variantProps), className)
@@ -30,10 +40,38 @@ const Badge = (props) => {
30
40
  return useRender({
31
41
  render,
32
42
  defaultTagName: "span",
33
- props: mergeProps(baseProps, rest)
43
+ props: mergeProps(baseProps, rest, children === void 0 ? {} : { children: wrapTextChildren(children) })
34
44
  });
35
45
  };
36
46
  Badge.displayName = "Badge";
47
+ /**
48
+ * Envolve cada sequência de texto dos filhos num `span` com `truncate`, que é onde as reticências
49
+ * se aplicam: um texto solto num contêiner flex vira um item anônimo e não corta. Os elementos
50
+ * (ícones) ficam como estão, e `null`, `undefined` e booleanos somem. Sem texto, devolve os
51
+ * filhos intactos.
52
+ */
53
+ const wrapTextChildren = (children) => {
54
+ const items = Children.toArray(children);
55
+ if (!items.some(isText)) return children;
56
+ const result = [];
57
+ let textRun = [];
58
+ const flushTextRun = () => {
59
+ if (textRun.length === 0) return;
60
+ result.push(/* @__PURE__ */ jsx("span", {
61
+ className: mergeTwClassNames(["min-w-0", "truncate"]),
62
+ children: textRun
63
+ }, `text-${result.length}`));
64
+ textRun = [];
65
+ };
66
+ for (const item of items) if (isText(item)) textRun.push(item);
67
+ else {
68
+ flushTextRun();
69
+ result.push(item);
70
+ }
71
+ flushTextRun();
72
+ return result;
73
+ };
74
+ const isText = (node) => typeof node === "string" || typeof node === "number";
37
75
  //#endregion
38
76
  export { Badge };
39
77
 
@@ -1 +1 @@
1
- {"version":3,"file":"badge.js","names":[],"sources":["../../../../src/components/display/badge/badge.tsx"],"sourcesContent":["import { mergeProps, useRender } from '@base-ui/react';\nimport {\n createSplitProps,\n type MergeOverride,\n} from '@lucasbernardosn/ts-utils';\nimport { mergeTwClassNames } from '#utils';\nimport { type BadgeVariants, badgeVariants } from './badge-variants';\n\nexport type BadgeProps = MergeOverride<\n useRender.ComponentProps<'span'>,\n BadgeVariants\n>;\n\nconst splitVariantProps = createSplitProps<BadgeVariants>();\n\n/**\n * Rótulo curto de exibição, para uma categoria, um estado ou uma contagem (\"Pago\", \"NF-e\", \"3\").\n * Não tem interação: para um item que se remove, a `Tag`.\n *\n * Um ícone entra nos filhos, antes ou depois do texto, pelo `Icon` da lib. A cor sozinha não\n * comunica para quem não a distingue: o texto diz o que o badge significa.\n *\n * @example\n * ```tsx\n * <Badge colorScheme=\"green\">Pago</Badge>\n * ```\n */\nexport const Badge = (props: BadgeProps) => {\n const [variantProps, elementProps] = splitVariantProps(props, [\n 'colorScheme',\n 'size',\n 'variant',\n ]);\n\n const { render, className, ...rest } = elementProps;\n\n const baseProps = {\n 'data-component': 'Badge',\n className: mergeTwClassNames(badgeVariants(variantProps), className),\n };\n\n return useRender({\n render,\n defaultTagName: 'span',\n props: mergeProps(baseProps, rest),\n });\n};\n\nBadge.displayName = 'Badge';\n"],"mappings":";;;;;AAaA,MAAM,oBAAoB,iBAAgC;;;;;;;;;;;;;AAc1D,MAAa,SAAS,UAAsB;CAC1C,MAAM,CAAC,cAAc,gBAAgB,kBAAkB,OAAO;EAC5D;EACA;EACA;CACF,CAAC;CAED,MAAM,EAAE,QAAQ,WAAW,GAAG,SAAS;CAEvC,MAAM,YAAY;EAChB,kBAAkB;EAClB,WAAW,kBAAkB,cAAc,YAAY,GAAG,SAAS;CACrE;CAEA,OAAO,UAAU;EACf;EACA,gBAAgB;EAChB,OAAO,WAAW,WAAW,IAAI;CACnC,CAAC;AACH;AAEA,MAAM,cAAc"}
1
+ {"version":3,"file":"badge.js","names":[],"sources":["../../../../src/components/display/badge/badge.tsx"],"sourcesContent":["import { mergeProps, useRender } from '@base-ui/react';\nimport {\n createSplitProps,\n type MergeOverride,\n} from '@lucasbernardosn/ts-utils';\nimport type React from 'react';\nimport { Children } from 'react';\nimport { mergeTwClassNames } from '#utils';\nimport { type BadgeVariants, badgeVariants } from './badge-variants';\n\nexport type BadgeProps = MergeOverride<\n useRender.ComponentProps<'span'>,\n BadgeVariants\n>;\n\nconst splitVariantProps = createSplitProps<BadgeVariants>();\n\n/**\n * Rótulo curto de exibição, para uma categoria, um estado ou uma contagem (\"Pago\", \"NF-e\", \"3\").\n * Não tem interação: para um item que se remove, a `Tag`.\n *\n * Um ícone entra nos filhos, antes ou depois do texto, pelo `Icon` da lib. A cor sozinha não\n * comunica para quem não a distingue: o texto diz o que o badge significa.\n *\n * O badge não passa da largura do pai: um texto que não cabe termina em reticências. O leitor de\n * tela lê o texto inteiro, e quem vê precisa dele no `title`, como no `Truncate`.\n *\n * @example\n * ```tsx\n * <Badge colorScheme=\"green\">Pago</Badge>\n * ```\n *\n * @example\n * ```tsx\n * <Badge title={status}>{status}</Badge>\n * ```\n */\nexport const Badge = (props: BadgeProps) => {\n const [variantProps, elementProps] = splitVariantProps(props, [\n 'colorScheme',\n 'size',\n 'variant',\n ]);\n\n const { render, className, children, ...rest } = elementProps;\n\n const baseProps = {\n 'data-component': 'Badge',\n className: mergeTwClassNames(badgeVariants(variantProps), className),\n };\n\n return useRender({\n render,\n defaultTagName: 'span',\n props: mergeProps(\n baseProps,\n rest,\n children === undefined ? {} : { children: wrapTextChildren(children) },\n ),\n });\n};\n\nBadge.displayName = 'Badge';\n\n/**\n * Envolve cada sequência de texto dos filhos num `span` com `truncate`, que é onde as reticências\n * se aplicam: um texto solto num contêiner flex vira um item anônimo e não corta. Os elementos\n * (ícones) ficam como estão, e `null`, `undefined` e booleanos somem. Sem texto, devolve os\n * filhos intactos.\n */\nconst wrapTextChildren = (children: React.ReactNode): React.ReactNode => {\n const items = Children.toArray(children);\n\n if (!items.some(isText)) {\n return children;\n }\n\n const result: React.ReactNode[] = [];\n let textRun: (string | number)[] = [];\n\n const flushTextRun = () => {\n if (textRun.length === 0) {\n return;\n }\n\n result.push(\n <span\n key={`text-${result.length}`}\n className={mergeTwClassNames(['min-w-0', 'truncate'])}\n >\n {textRun}\n </span>,\n );\n textRun = [];\n };\n\n for (const item of items) {\n if (isText(item)) {\n textRun.push(item);\n } else {\n flushTextRun();\n result.push(item);\n }\n }\n\n flushTextRun();\n\n return result;\n};\n\nconst isText = (node: unknown): node is string | number =>\n typeof node === 'string' || typeof node === 'number';\n"],"mappings":";;;;;;;AAeA,MAAM,oBAAoB,iBAAgC;;;;;;;;;;;;;;;;;;;;;AAsB1D,MAAa,SAAS,UAAsB;CAC1C,MAAM,CAAC,cAAc,gBAAgB,kBAAkB,OAAO;EAC5D;EACA;EACA;CACF,CAAC;CAED,MAAM,EAAE,QAAQ,WAAW,UAAU,GAAG,SAAS;CAEjD,MAAM,YAAY;EAChB,kBAAkB;EAClB,WAAW,kBAAkB,cAAc,YAAY,GAAG,SAAS;CACrE;CAEA,OAAO,UAAU;EACf;EACA,gBAAgB;EAChB,OAAO,WACL,WACA,MACA,aAAa,KAAA,IAAY,CAAC,IAAI,EAAE,UAAU,iBAAiB,QAAQ,EAAE,CACvE;CACF,CAAC;AACH;AAEA,MAAM,cAAc;;;;;;;AAQpB,MAAM,oBAAoB,aAA+C;CACvE,MAAM,QAAQ,SAAS,QAAQ,QAAQ;CAEvC,IAAI,CAAC,MAAM,KAAK,MAAM,GACpB,OAAO;CAGT,MAAM,SAA4B,CAAC;CACnC,IAAI,UAA+B,CAAC;CAEpC,MAAM,qBAAqB;EACzB,IAAI,QAAQ,WAAW,GACrB;EAGF,OAAO,KACL,oBAAC,QAAD;GAEE,WAAW,kBAAkB,CAAC,WAAW,UAAU,CAAC;GAEnD,UAAA;EACG,GAJC,QAAQ,OAAO,QAIhB,CACR;EACA,UAAU,CAAC;CACb;CAEA,KAAK,MAAM,QAAQ,OACjB,IAAI,OAAO,IAAI,GACb,QAAQ,KAAK,IAAI;MACZ;EACL,aAAa;EACb,OAAO,KAAK,IAAI;CAClB;CAGF,aAAa;CAEb,OAAO;AACT;AAEA,MAAM,UAAU,SACd,OAAO,SAAS,YAAY,OAAO,SAAS"}
@@ -16,6 +16,7 @@ const CardBody = (props) => {
16
16
  "flex",
17
17
  "flex-1",
18
18
  "flex-col",
19
+ "gap-4",
19
20
  "p-(--card-padding)"
20
21
  ], className)
21
22
  };
@@ -1 +1 @@
1
- {"version":3,"file":"card-body.js","names":[],"sources":["../../../../src/components/display/card/card-body.tsx"],"sourcesContent":["import { mergeProps, useRender } from '@base-ui/react';\nimport { mergeTwClassNames } from '#utils';\n\nexport type CardBodyProps = useRender.ComponentProps<'div'>;\n\n/**\n * Conteúdo principal do card. Ocupa o espaço que sobra (`flex-1`), empurrando o `Card.Footer`\n * para a base.\n *\n * Origem do corpo das superfícies com cabeçalho: o `Dialog.Body` copia estas classes (tabela no README de `display`). Uma\n * mudança aqui vale para a cópia na mesma rodada.\n */\nexport const CardBody = (props: CardBodyProps) => {\n const { render, className, ...rest } = props;\n\n const baseProps = {\n 'data-component': 'Card.Body',\n className: mergeTwClassNames(\n [\n 'flex',\n 'flex-1',\n 'flex-col',\n\n 'p-(--card-padding)',\n ],\n className,\n ),\n };\n\n return useRender({\n render,\n defaultTagName: 'div',\n props: mergeProps(baseProps, rest),\n });\n};\n\nCardBody.displayName = 'Card.Body';\n"],"mappings":";;;;;;;;;;AAYA,MAAa,YAAY,UAAyB;CAChD,MAAM,EAAE,QAAQ,WAAW,GAAG,SAAS;CAEvC,MAAM,YAAY;EAChB,kBAAkB;EAClB,WAAW,kBACT;GACE;GACA;GACA;GAEA;EACF,GACA,SACF;CACF;CAEA,OAAO,UAAU;EACf;EACA,gBAAgB;EAChB,OAAO,WAAW,WAAW,IAAI;CACnC,CAAC;AACH;AAEA,SAAS,cAAc"}
1
+ {"version":3,"file":"card-body.js","names":[],"sources":["../../../../src/components/display/card/card-body.tsx"],"sourcesContent":["import { mergeProps, useRender } from '@base-ui/react';\nimport { mergeTwClassNames } from '#utils';\n\nexport type CardBodyProps = useRender.ComponentProps<'div'>;\n\n/**\n * Conteúdo principal do card. Ocupa o espaço que sobra (`flex-1`), empurrando o `Card.Footer`\n * para a base.\n *\n * Origem do corpo das superfícies com cabeçalho: o `Dialog.Body` copia estas classes (tabela no README de `display`). Uma\n * mudança aqui vale para a cópia na mesma rodada.\n */\nexport const CardBody = (props: CardBodyProps) => {\n const { render, className, ...rest } = props;\n\n const baseProps = {\n 'data-component': 'Card.Body',\n className: mergeTwClassNames(\n [\n 'flex',\n 'flex-1',\n 'flex-col',\n 'gap-4',\n\n 'p-(--card-padding)',\n ],\n className,\n ),\n };\n\n return useRender({\n render,\n defaultTagName: 'div',\n props: mergeProps(baseProps, rest),\n });\n};\n\nCardBody.displayName = 'Card.Body';\n"],"mappings":";;;;;;;;;;AAYA,MAAa,YAAY,UAAyB;CAChD,MAAM,EAAE,QAAQ,WAAW,GAAG,SAAS;CAEvC,MAAM,YAAY;EAChB,kBAAkB;EAClB,WAAW,kBACT;GACE;GACA;GACA;GACA;GAEA;EACF,GACA,SACF;CACF;CAEA,OAAO,UAAU;EACf;EACA,gBAAgB;EAChB,OAAO,WAAW,WAAW,IAAI;CACnC,CAAC;AACH;AAEA,SAAS,cAAc"}
@@ -0,0 +1,7 @@
1
+ //#region src/components/display/data-list/data-list-item-label-variants.d.ts
2
+ export declare const dataListItemLabelVariants: (props?: ({
3
+ orientation?: "horizontal" | "vertical" | null | undefined;
4
+ variant?: "subtle" | "bold" | null | undefined;
5
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
6
+ //#endregion
7
+ //# sourceMappingURL=data-list-item-label-variants.d.ts.map
@@ -0,0 +1,27 @@
1
+ import { dataListDefaultVariants } from "./use-data-list-context.js";
2
+ import { cva } from "class-variance-authority";
3
+ //#region src/components/display/data-list/data-list-item-label-variants.ts
4
+ const dataListItemLabelVariants = cva([
5
+ "flex",
6
+ "items-center",
7
+ "gap-1"
8
+ ], {
9
+ variants: {
10
+ orientation: {
11
+ vertical: [],
12
+ horizontal: ["min-w-30"]
13
+ },
14
+ variant: {
15
+ subtle: ["text-gray-11"],
16
+ bold: ["font-medium", "text-gray-12"]
17
+ }
18
+ },
19
+ defaultVariants: {
20
+ orientation: dataListDefaultVariants.orientation,
21
+ variant: dataListDefaultVariants.variant
22
+ }
23
+ });
24
+ //#endregion
25
+ export { dataListItemLabelVariants };
26
+
27
+ //# sourceMappingURL=data-list-item-label-variants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-list-item-label-variants.js","names":[],"sources":["../../../../src/components/display/data-list/data-list-item-label-variants.ts"],"sourcesContent":["import { cva } from 'class-variance-authority';\n\nimport { dataListDefaultVariants } from './use-data-list-context';\n\nexport const dataListItemLabelVariants = cva(\n [\n 'flex',\n 'items-center',\n\n 'gap-1',\n ],\n {\n variants: {\n orientation: {\n vertical: [],\n horizontal: ['min-w-30'],\n },\n variant: {\n subtle: ['text-gray-11'],\n bold: [\n 'font-medium',\n\n 'text-gray-12',\n ],\n },\n },\n defaultVariants: {\n orientation: dataListDefaultVariants.orientation,\n variant: dataListDefaultVariants.variant,\n },\n },\n);\n"],"mappings":";;;AAIA,MAAa,4BAA4B,IACvC;CACE;CACA;CAEA;AACF,GACA;CACE,UAAU;EACR,aAAa;GACX,UAAU,CAAC;GACX,YAAY,CAAC,UAAU;EACzB;EACA,SAAS;GACP,QAAQ,CAAC,cAAc;GACvB,MAAM,CACJ,eAEA,cACF;EACF;CACF;CACA,iBAAiB;EACf,aAAa,wBAAwB;EACrC,SAAS,wBAAwB;CACnC;AACF,CACF"}
@@ -2,7 +2,8 @@ import { useRender } from "@base-ui/react";
2
2
  //#region src/components/display/data-list/data-list-item-label.d.ts
3
3
  export type DataListItemLabelProps = useRender.ComponentProps<'dt'>;
4
4
  /**
5
- * Rótulo do item, renderizado como `dt`.
5
+ * Rótulo do item, renderizado como `dt`. É um `flex`, para caber um ícone ao lado do texto. Na
6
+ * orientação `horizontal`, tem largura mínima de 120px.
6
7
  */
7
8
  export declare const DataListItemLabel: {
8
9
  (props: DataListItemLabelProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
@@ -1,14 +1,21 @@
1
1
  import { mergeTwClassNames } from "../../../utils/merge-class-names.js";
2
+ import { useDataListContext } from "./use-data-list-context.js";
3
+ import { dataListItemLabelVariants } from "./data-list-item-label-variants.js";
2
4
  import { mergeProps, useRender } from "@base-ui/react";
3
5
  //#region src/components/display/data-list/data-list-item-label.tsx
4
6
  /**
5
- * Rótulo do item, renderizado como `dt`.
7
+ * Rótulo do item, renderizado como `dt`. É um `flex`, para caber um ícone ao lado do texto. Na
8
+ * orientação `horizontal`, tem largura mínima de 120px.
6
9
  */
7
10
  const DataListItemLabel = (props) => {
8
11
  const { render, className, ...rest } = props;
12
+ const { orientation, variant } = useDataListContext();
9
13
  const baseProps = {
10
14
  "data-component": "DataList.ItemLabel",
11
- className: mergeTwClassNames(["text-gray-11"], className)
15
+ className: mergeTwClassNames(dataListItemLabelVariants({
16
+ orientation,
17
+ variant
18
+ }), className)
12
19
  };
13
20
  return useRender({
14
21
  render,
@@ -1 +1 @@
1
- {"version":3,"file":"data-list-item-label.js","names":[],"sources":["../../../../src/components/display/data-list/data-list-item-label.tsx"],"sourcesContent":["import { mergeProps, useRender } from '@base-ui/react';\nimport { mergeTwClassNames } from '#utils';\n\nexport type DataListItemLabelProps = useRender.ComponentProps<'dt'>;\n\n/**\n * Rótulo do item, renderizado como `dt`.\n */\nexport const DataListItemLabel = (props: DataListItemLabelProps) => {\n const { render, className, ...rest } = props;\n\n const baseProps = {\n 'data-component': 'DataList.ItemLabel',\n className: mergeTwClassNames(['text-gray-11'], className),\n };\n\n return useRender({\n render,\n defaultTagName: 'dt',\n props: mergeProps(baseProps, rest),\n });\n};\n\nDataListItemLabel.displayName = 'DataList.ItemLabel';\n"],"mappings":";;;;;;AAQA,MAAa,qBAAqB,UAAkC;CAClE,MAAM,EAAE,QAAQ,WAAW,GAAG,SAAS;CAEvC,MAAM,YAAY;EAChB,kBAAkB;EAClB,WAAW,kBAAkB,CAAC,cAAc,GAAG,SAAS;CAC1D;CAEA,OAAO,UAAU;EACf;EACA,gBAAgB;EAChB,OAAO,WAAW,WAAW,IAAI;CACnC,CAAC;AACH;AAEA,kBAAkB,cAAc"}
1
+ {"version":3,"file":"data-list-item-label.js","names":[],"sources":["../../../../src/components/display/data-list/data-list-item-label.tsx"],"sourcesContent":["import { mergeProps, useRender } from '@base-ui/react';\nimport { mergeTwClassNames } from '#utils';\nimport { dataListItemLabelVariants } from './data-list-item-label-variants';\nimport { useDataListContext } from './use-data-list-context';\n\nexport type DataListItemLabelProps = useRender.ComponentProps<'dt'>;\n\n/**\n * Rótulo do item, renderizado como `dt`. É um `flex`, para caber um ícone ao lado do texto. Na\n * orientação `horizontal`, tem largura mínima de 120px.\n */\nexport const DataListItemLabel = (props: DataListItemLabelProps) => {\n const { render, className, ...rest } = props;\n\n const { orientation, variant } = useDataListContext();\n\n const baseProps = {\n 'data-component': 'DataList.ItemLabel',\n className: mergeTwClassNames(\n dataListItemLabelVariants({ orientation, variant }),\n className,\n ),\n };\n\n return useRender({\n render,\n defaultTagName: 'dt',\n props: mergeProps(baseProps, rest),\n });\n};\n\nDataListItemLabel.displayName = 'DataList.ItemLabel';\n"],"mappings":";;;;;;;;;AAWA,MAAa,qBAAqB,UAAkC;CAClE,MAAM,EAAE,QAAQ,WAAW,GAAG,SAAS;CAEvC,MAAM,EAAE,aAAa,YAAY,mBAAmB;CAEpD,MAAM,YAAY;EAChB,kBAAkB;EAClB,WAAW,kBACT,0BAA0B;GAAE;GAAa;EAAQ,CAAC,GAClD,SACF;CACF;CAEA,OAAO,UAAU;EACf;EACA,gBAAgB;EAChB,OAAO,WAAW,WAAW,IAAI;CACnC,CAAC;AACH;AAEA,kBAAkB,cAAc"}
@@ -1,6 +1,6 @@
1
1
  //#region src/components/display/data-list/data-list-item-value-variants.d.ts
2
2
  export declare const dataListItemValueVariants: (props?: ({
3
- orientation?: "vertical" | "horizontal" | null | undefined;
3
+ variant?: "subtle" | "bold" | null | undefined;
4
4
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
5
5
  //#endregion
6
6
  //# sourceMappingURL=data-list-item-value-variants.d.ts.map
@@ -1,12 +1,16 @@
1
1
  import { dataListDefaultVariants } from "./use-data-list-context.js";
2
2
  import { cva } from "class-variance-authority";
3
3
  //#region src/components/display/data-list/data-list-item-value-variants.ts
4
- const dataListItemValueVariants = cva(["text-gray-12"], {
5
- variants: { orientation: {
6
- horizontal: ["text-start"],
7
- vertical: ["text-end"]
4
+ const dataListItemValueVariants = cva([
5
+ "flex",
6
+ "min-w-0",
7
+ "flex-1"
8
+ ], {
9
+ variants: { variant: {
10
+ subtle: ["text-gray-12"],
11
+ bold: ["text-gray-11"]
8
12
  } },
9
- defaultVariants: { orientation: dataListDefaultVariants.orientation }
13
+ defaultVariants: { variant: dataListDefaultVariants.variant }
10
14
  });
11
15
  //#endregion
12
16
  export { dataListItemValueVariants };
@@ -1 +1 @@
1
- {"version":3,"file":"data-list-item-value-variants.js","names":[],"sources":["../../../../src/components/display/data-list/data-list-item-value-variants.ts"],"sourcesContent":["import { cva } from 'class-variance-authority';\nimport { dataListDefaultVariants } from './use-data-list-context';\n\nexport const dataListItemValueVariants = cva(['text-gray-12'], {\n variants: {\n orientation: {\n horizontal: ['text-start'],\n vertical: ['text-end'],\n },\n },\n defaultVariants: {\n orientation: dataListDefaultVariants.orientation,\n },\n});\n"],"mappings":";;;AAGA,MAAa,4BAA4B,IAAI,CAAC,cAAc,GAAG;CAC7D,UAAU,EACR,aAAa;EACX,YAAY,CAAC,YAAY;EACzB,UAAU,CAAC,UAAU;CACvB,EACF;CACA,iBAAiB,EACf,aAAa,wBAAwB,YACvC;AACF,CAAC"}
1
+ {"version":3,"file":"data-list-item-value-variants.js","names":[],"sources":["../../../../src/components/display/data-list/data-list-item-value-variants.ts"],"sourcesContent":["import { cva } from 'class-variance-authority';\n\nimport { dataListDefaultVariants } from './use-data-list-context';\n\nexport const dataListItemValueVariants = cva(\n [\n 'flex',\n 'min-w-0',\n\n 'flex-1',\n ],\n {\n variants: {\n variant: {\n subtle: ['text-gray-12'],\n bold: ['text-gray-11'],\n },\n },\n defaultVariants: {\n variant: dataListDefaultVariants.variant,\n },\n },\n);\n"],"mappings":";;;AAIA,MAAa,4BAA4B,IACvC;CACE;CACA;CAEA;AACF,GACA;CACE,UAAU,EACR,SAAS;EACP,QAAQ,CAAC,cAAc;EACvB,MAAM,CAAC,cAAc;CACvB,EACF;CACA,iBAAiB,EACf,SAAS,wBAAwB,QACnC;AACF,CACF"}
@@ -2,7 +2,8 @@ import { useRender } from "@base-ui/react";
2
2
  //#region src/components/display/data-list/data-list-item-value.d.ts
3
3
  export type DataListItemValueProps = useRender.ComponentProps<'dd'>;
4
4
  /**
5
- * Valor do item, renderizado como `dd`. Na orientação `vertical`, alinha à direita.
5
+ * Valor do item, renderizado como `dd`. Ocupa o espaço que sobra ao lado do rótulo e quebra o texto
6
+ * longo dentro da própria coluna.
6
7
  */
7
8
  export declare const DataListItemValue: {
8
9
  (props: DataListItemValueProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
@@ -4,14 +4,15 @@ import { dataListItemValueVariants } from "./data-list-item-value-variants.js";
4
4
  import { mergeProps, useRender } from "@base-ui/react";
5
5
  //#region src/components/display/data-list/data-list-item-value.tsx
6
6
  /**
7
- * Valor do item, renderizado como `dd`. Na orientação `vertical`, alinha à direita.
7
+ * Valor do item, renderizado como `dd`. Ocupa o espaço que sobra ao lado do rótulo e quebra o texto
8
+ * longo dentro da própria coluna.
8
9
  */
9
10
  const DataListItemValue = (props) => {
10
11
  const { render, className, ...rest } = props;
11
- const { orientation } = useDataListContext();
12
+ const { variant } = useDataListContext();
12
13
  const baseProps = {
13
14
  "data-component": "DataList.ItemValue",
14
- className: mergeTwClassNames(dataListItemValueVariants({ orientation }), className)
15
+ className: mergeTwClassNames(dataListItemValueVariants({ variant }), className)
15
16
  };
16
17
  return useRender({
17
18
  render,
@@ -1 +1 @@
1
- {"version":3,"file":"data-list-item-value.js","names":[],"sources":["../../../../src/components/display/data-list/data-list-item-value.tsx"],"sourcesContent":["import { mergeProps, useRender } from '@base-ui/react';\nimport { mergeTwClassNames } from '#utils';\nimport { dataListItemValueVariants } from './data-list-item-value-variants';\nimport { useDataListContext } from './use-data-list-context';\n\nexport type DataListItemValueProps = useRender.ComponentProps<'dd'>;\n\n/**\n * Valor do item, renderizado como `dd`. Na orientação `vertical`, alinha à direita.\n */\nexport const DataListItemValue = (props: DataListItemValueProps) => {\n const { render, className, ...rest } = props;\n\n const { orientation } = useDataListContext();\n\n const baseProps = {\n 'data-component': 'DataList.ItemValue',\n className: mergeTwClassNames(\n dataListItemValueVariants({ orientation }),\n className,\n ),\n };\n\n return useRender({\n render,\n defaultTagName: 'dd',\n props: mergeProps(baseProps, rest),\n });\n};\n\nDataListItemValue.displayName = 'DataList.ItemValue';\n"],"mappings":";;;;;;;;AAUA,MAAa,qBAAqB,UAAkC;CAClE,MAAM,EAAE,QAAQ,WAAW,GAAG,SAAS;CAEvC,MAAM,EAAE,gBAAgB,mBAAmB;CAE3C,MAAM,YAAY;EAChB,kBAAkB;EAClB,WAAW,kBACT,0BAA0B,EAAE,YAAY,CAAC,GACzC,SACF;CACF;CAEA,OAAO,UAAU;EACf;EACA,gBAAgB;EAChB,OAAO,WAAW,WAAW,IAAI;CACnC,CAAC;AACH;AAEA,kBAAkB,cAAc"}
1
+ {"version":3,"file":"data-list-item-value.js","names":[],"sources":["../../../../src/components/display/data-list/data-list-item-value.tsx"],"sourcesContent":["import { mergeProps, useRender } from '@base-ui/react';\nimport { mergeTwClassNames } from '#utils';\nimport { dataListItemValueVariants } from './data-list-item-value-variants';\nimport { useDataListContext } from './use-data-list-context';\n\nexport type DataListItemValueProps = useRender.ComponentProps<'dd'>;\n\n/**\n * Valor do item, renderizado como `dd`. Ocupa o espaço que sobra ao lado do rótulo e quebra o texto\n * longo dentro da própria coluna.\n */\nexport const DataListItemValue = (props: DataListItemValueProps) => {\n const { render, className, ...rest } = props;\n\n const { variant } = useDataListContext();\n\n const baseProps = {\n 'data-component': 'DataList.ItemValue',\n className: mergeTwClassNames(\n dataListItemValueVariants({ variant }),\n className,\n ),\n };\n\n return useRender({\n render,\n defaultTagName: 'dd',\n props: mergeProps(baseProps, rest),\n });\n};\n\nDataListItemValue.displayName = 'DataList.ItemValue';\n"],"mappings":";;;;;;;;;AAWA,MAAa,qBAAqB,UAAkC;CAClE,MAAM,EAAE,QAAQ,WAAW,GAAG,SAAS;CAEvC,MAAM,EAAE,YAAY,mBAAmB;CAEvC,MAAM,YAAY;EAChB,kBAAkB;EAClB,WAAW,kBACT,0BAA0B,EAAE,QAAQ,CAAC,GACrC,SACF;CACF;CAEA,OAAO,UAAU;EACf;EACA,gBAAgB;EAChB,OAAO,WAAW,WAAW,IAAI;CACnC,CAAC;AACH;AAEA,kBAAkB,cAAc"}
@@ -1,11 +1,7 @@
1
1
  //#region src/components/display/data-list/data-list-item-variants.d.ts
2
- /**
3
- * O espaçamento depende da orientação: em `horizontal` os itens ficam lado a lado e o respiro é
4
- * lateral, com o valor abaixo do rótulo; em `vertical` eles empilham e o respiro é vertical, com
5
- * rótulo e valor lado a lado.
6
- */
7
2
  export declare const dataListItemVariants: (props?: ({
8
- orientation?: "vertical" | "horizontal" | null | undefined;
3
+ orientation?: "horizontal" | "vertical" | null | undefined;
4
+ size?: "sm" | "md" | "lg" | null | undefined;
9
5
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
10
6
  //#endregion
11
7
  //# sourceMappingURL=data-list-item-variants.d.ts.map
@@ -1,32 +1,30 @@
1
1
  import { dataListDefaultVariants } from "./use-data-list-context.js";
2
2
  import { cva } from "class-variance-authority";
3
3
  //#region src/components/display/data-list/data-list-item-variants.ts
4
- /**
5
- * O espaçamento depende da orientação: em `horizontal` os itens ficam lado a lado e o respiro é
6
- * lateral, com o valor abaixo do rótulo; em `vertical` eles empilham e o respiro é vertical, com
7
- * rótulo e valor lado a lado.
8
- */
9
- const dataListItemVariants = cva(["flex"], {
10
- variants: { orientation: {
11
- horizontal: [
12
- "flex-col",
13
- "items-start",
14
- "gap-1",
15
- "px-2",
16
- "first:pl-0",
17
- "last:pr-0"
18
- ],
19
- vertical: [
20
- "flex-row",
21
- "items-center",
22
- "justify-between",
23
- "gap-4",
24
- "py-2",
25
- "first:pt-0",
26
- "last:pb-0"
27
- ]
28
- } },
29
- defaultVariants: { orientation: dataListDefaultVariants.orientation }
4
+ const dataListItemVariants = cva([], {
5
+ variants: {
6
+ orientation: {
7
+ vertical: [
8
+ "flex",
9
+ "flex-col",
10
+ "gap-1"
11
+ ],
12
+ horizontal: [
13
+ "inline-flex",
14
+ "items-center",
15
+ "gap-4"
16
+ ]
17
+ },
18
+ size: {
19
+ sm: ["text-xs/4"],
20
+ md: ["text-sm/5"],
21
+ lg: ["text-base/6"]
22
+ }
23
+ },
24
+ defaultVariants: {
25
+ orientation: dataListDefaultVariants.orientation,
26
+ size: dataListDefaultVariants.size
27
+ }
30
28
  });
31
29
  //#endregion
32
30
  export { dataListItemVariants };
@@ -1 +1 @@
1
- {"version":3,"file":"data-list-item-variants.js","names":[],"sources":["../../../../src/components/display/data-list/data-list-item-variants.ts"],"sourcesContent":["import { cva } from 'class-variance-authority';\nimport { dataListDefaultVariants } from './use-data-list-context';\n\n/**\n * O espaçamento depende da orientação: em `horizontal` os itens ficam lado a lado e o respiro é\n * lateral, com o valor abaixo do rótulo; em `vertical` eles empilham e o respiro é vertical, com\n * rótulo e valor lado a lado.\n */\nexport const dataListItemVariants = cva(['flex'], {\n variants: {\n orientation: {\n horizontal: [\n 'flex-col',\n 'items-start',\n\n 'gap-1',\n 'px-2',\n\n 'first:pl-0',\n 'last:pr-0',\n ],\n vertical: [\n 'flex-row',\n 'items-center',\n 'justify-between',\n\n 'gap-4',\n 'py-2',\n\n 'first:pt-0',\n 'last:pb-0',\n ],\n },\n },\n defaultVariants: {\n orientation: dataListDefaultVariants.orientation,\n },\n});\n"],"mappings":";;;;;;;;AAQA,MAAa,uBAAuB,IAAI,CAAC,MAAM,GAAG;CAChD,UAAU,EACR,aAAa;EACX,YAAY;GACV;GACA;GAEA;GACA;GAEA;GACA;EACF;EACA,UAAU;GACR;GACA;GACA;GAEA;GACA;GAEA;GACA;EACF;CACF,EACF;CACA,iBAAiB,EACf,aAAa,wBAAwB,YACvC;AACF,CAAC"}
1
+ {"version":3,"file":"data-list-item-variants.js","names":[],"sources":["../../../../src/components/display/data-list/data-list-item-variants.ts"],"sourcesContent":["import { cva } from 'class-variance-authority';\n\nimport { dataListDefaultVariants } from './use-data-list-context';\n\nexport const dataListItemVariants = cva([], {\n variants: {\n orientation: {\n vertical: [\n 'flex',\n 'flex-col',\n\n 'gap-1',\n ],\n horizontal: [\n 'inline-flex',\n 'items-center',\n\n 'gap-4',\n ],\n },\n size: {\n sm: ['text-xs/4'],\n md: ['text-sm/5'],\n lg: ['text-base/6'],\n },\n },\n defaultVariants: {\n orientation: dataListDefaultVariants.orientation,\n size: dataListDefaultVariants.size,\n },\n});\n"],"mappings":";;;AAIA,MAAa,uBAAuB,IAAI,CAAC,GAAG;CAC1C,UAAU;EACR,aAAa;GACX,UAAU;IACR;IACA;IAEA;GACF;GACA,YAAY;IACV;IACA;IAEA;GACF;EACF;EACA,MAAM;GACJ,IAAI,CAAC,WAAW;GAChB,IAAI,CAAC,WAAW;GAChB,IAAI,CAAC,aAAa;EACpB;CACF;CACA,iBAAiB;EACf,aAAa,wBAAwB;EACrC,MAAM,wBAAwB;CAChC;AACF,CAAC"}
@@ -2,7 +2,8 @@ import { useRender } from "@base-ui/react";
2
2
  //#region src/components/display/data-list/data-list-item.d.ts
3
3
  export type DataListItemProps = useRender.ComponentProps<'div'>;
4
4
  /**
5
- * Um par rótulo e valor. O `div` em volta de `dt` e `dd` é válido dentro de `dl`.
5
+ * Um par rótulo e valor, com a orientação e o tamanho do `Root`. O `div` em volta de `dt` e `dd` é
6
+ * válido dentro de `dl`.
6
7
  */
7
8
  export declare const DataListItem: {
8
9
  (props: DataListItemProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;