@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
@@ -4,14 +4,18 @@ import { dataListItemVariants } from "./data-list-item-variants.js";
4
4
  import { mergeProps, useRender } from "@base-ui/react";
5
5
  //#region src/components/display/data-list/data-list-item.tsx
6
6
  /**
7
- * Um par rótulo e valor. O `div` em volta de `dt` e `dd` é válido dentro de `dl`.
7
+ * Um par rótulo e valor, com a orientação e o tamanho do `Root`. O `div` em volta de `dt` e `dd` é
8
+ * válido dentro de `dl`.
8
9
  */
9
10
  const DataListItem = (props) => {
10
11
  const { render, className, ...rest } = props;
11
- const { orientation } = useDataListContext();
12
+ const { orientation, size } = useDataListContext();
12
13
  const baseProps = {
13
14
  "data-component": "DataList.Item",
14
- className: mergeTwClassNames(dataListItemVariants({ orientation }), className)
15
+ className: mergeTwClassNames(dataListItemVariants({
16
+ orientation,
17
+ size
18
+ }), className)
15
19
  };
16
20
  return useRender({
17
21
  render,
@@ -1 +1 @@
1
- {"version":3,"file":"data-list-item.js","names":[],"sources":["../../../../src/components/display/data-list/data-list-item.tsx"],"sourcesContent":["import { mergeProps, useRender } from '@base-ui/react';\nimport { mergeTwClassNames } from '#utils';\nimport { dataListItemVariants } from './data-list-item-variants';\nimport { useDataListContext } from './use-data-list-context';\n\nexport type DataListItemProps = useRender.ComponentProps<'div'>;\n\n/**\n * Um par rótulo e valor. O `div` em volta de `dt` e `dd` é válido dentro de `dl`.\n */\nexport const DataListItem = (props: DataListItemProps) => {\n const { render, className, ...rest } = props;\n\n const { orientation } = useDataListContext();\n\n const baseProps = {\n 'data-component': 'DataList.Item',\n className: mergeTwClassNames(\n dataListItemVariants({ orientation }),\n className,\n ),\n };\n\n return useRender({\n render,\n defaultTagName: 'div',\n props: mergeProps(baseProps, rest),\n });\n};\n\nDataListItem.displayName = 'DataList.Item';\n"],"mappings":";;;;;;;;AAUA,MAAa,gBAAgB,UAA6B;CACxD,MAAM,EAAE,QAAQ,WAAW,GAAG,SAAS;CAEvC,MAAM,EAAE,gBAAgB,mBAAmB;CAE3C,MAAM,YAAY;EAChB,kBAAkB;EAClB,WAAW,kBACT,qBAAqB,EAAE,YAAY,CAAC,GACpC,SACF;CACF;CAEA,OAAO,UAAU;EACf;EACA,gBAAgB;EAChB,OAAO,WAAW,WAAW,IAAI;CACnC,CAAC;AACH;AAEA,aAAa,cAAc"}
1
+ {"version":3,"file":"data-list-item.js","names":[],"sources":["../../../../src/components/display/data-list/data-list-item.tsx"],"sourcesContent":["import { mergeProps, useRender } from '@base-ui/react';\nimport { mergeTwClassNames } from '#utils';\nimport { dataListItemVariants } from './data-list-item-variants';\nimport { useDataListContext } from './use-data-list-context';\n\nexport type DataListItemProps = useRender.ComponentProps<'div'>;\n\n/**\n * Um par rótulo e valor, com a orientação e o tamanho do `Root`. O `div` em volta de `dt` e `dd` é\n * válido dentro de `dl`.\n */\nexport const DataListItem = (props: DataListItemProps) => {\n const { render, className, ...rest } = props;\n\n const { orientation, size } = useDataListContext();\n\n const baseProps = {\n 'data-component': 'DataList.Item',\n className: mergeTwClassNames(\n dataListItemVariants({ orientation, size }),\n className,\n ),\n };\n\n return useRender({\n render,\n defaultTagName: 'div',\n props: mergeProps(baseProps, rest),\n });\n};\n\nDataListItem.displayName = 'DataList.Item';\n"],"mappings":";;;;;;;;;AAWA,MAAa,gBAAgB,UAA6B;CACxD,MAAM,EAAE,QAAQ,WAAW,GAAG,SAAS;CAEvC,MAAM,EAAE,aAAa,SAAS,mBAAmB;CAEjD,MAAM,YAAY;EAChB,kBAAkB;EAClB,WAAW,kBACT,qBAAqB;GAAE;GAAa;EAAK,CAAC,GAC1C,SACF;CACF;CAEA,OAAO,UAAU;EACf;EACA,gBAAgB;EAChB,OAAO,WAAW,WAAW,IAAI;CACnC,CAAC;AACH;AAEA,aAAa,cAAc"}
@@ -1,7 +1,6 @@
1
1
  //#region src/components/display/data-list/data-list-root-variants.d.ts
2
2
  export declare const dataListRootVariants: (props?: ({
3
- divided?: boolean | null | undefined;
4
- orientation?: "vertical" | "horizontal" | null | undefined;
3
+ size?: "sm" | "md" | "lg" | null | undefined;
5
4
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
6
5
  //#endregion
7
6
  //# sourceMappingURL=data-list-root-variants.d.ts.map
@@ -1,30 +1,13 @@
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-root-variants.ts
4
- const dataListRootVariants = cva(["flex", "text-sm"], {
5
- variants: {
6
- divided: {
7
- true: [],
8
- false: []
9
- },
10
- orientation: {
11
- horizontal: ["flex-row"],
12
- vertical: ["flex-col"]
13
- }
14
- },
15
- compoundVariants: [{
16
- divided: true,
17
- orientation: "horizontal",
18
- className: ["divide-x", "divide-gray-6"]
19
- }, {
20
- divided: true,
21
- orientation: "vertical",
22
- className: ["divide-y", "divide-gray-6"]
23
- }],
24
- defaultVariants: {
25
- divided: dataListDefaultVariants.divided,
26
- orientation: dataListDefaultVariants.orientation
27
- }
4
+ const dataListRootVariants = cva(["flex", "flex-col"], {
5
+ variants: { size: {
6
+ sm: ["gap-3"],
7
+ md: ["gap-4"],
8
+ lg: ["gap-5"]
9
+ } },
10
+ defaultVariants: { size: dataListDefaultVariants.size }
28
11
  });
29
12
  //#endregion
30
13
  export { dataListRootVariants };
@@ -1 +1 @@
1
- {"version":3,"file":"data-list-root-variants.js","names":[],"sources":["../../../../src/components/display/data-list/data-list-root-variants.ts"],"sourcesContent":["import { cva } from 'class-variance-authority';\nimport { dataListDefaultVariants } from './use-data-list-context';\n\nexport const dataListRootVariants = cva(['flex', 'text-sm'], {\n variants: {\n divided: {\n true: [],\n false: [],\n },\n orientation: {\n horizontal: ['flex-row'],\n vertical: ['flex-col'],\n },\n },\n compoundVariants: [\n {\n divided: true,\n orientation: 'horizontal',\n className: ['divide-x', 'divide-gray-6'],\n },\n {\n divided: true,\n orientation: 'vertical',\n className: ['divide-y', 'divide-gray-6'],\n },\n ],\n defaultVariants: {\n divided: dataListDefaultVariants.divided,\n orientation: dataListDefaultVariants.orientation,\n },\n});\n"],"mappings":";;;AAGA,MAAa,uBAAuB,IAAI,CAAC,QAAQ,SAAS,GAAG;CAC3D,UAAU;EACR,SAAS;GACP,MAAM,CAAC;GACP,OAAO,CAAC;EACV;EACA,aAAa;GACX,YAAY,CAAC,UAAU;GACvB,UAAU,CAAC,UAAU;EACvB;CACF;CACA,kBAAkB,CAChB;EACE,SAAS;EACT,aAAa;EACb,WAAW,CAAC,YAAY,eAAe;CACzC,GACA;EACE,SAAS;EACT,aAAa;EACb,WAAW,CAAC,YAAY,eAAe;CACzC,CACF;CACA,iBAAiB;EACf,SAAS,wBAAwB;EACjC,aAAa,wBAAwB;CACvC;AACF,CAAC"}
1
+ {"version":3,"file":"data-list-root-variants.js","names":[],"sources":["../../../../src/components/display/data-list/data-list-root-variants.ts"],"sourcesContent":["import { cva } from 'class-variance-authority';\n\nimport { dataListDefaultVariants } from './use-data-list-context';\n\nexport const dataListRootVariants = cva(['flex', 'flex-col'], {\n variants: {\n size: {\n sm: ['gap-3'],\n md: ['gap-4'],\n lg: ['gap-5'],\n },\n },\n defaultVariants: {\n size: dataListDefaultVariants.size,\n },\n});\n"],"mappings":";;;AAIA,MAAa,uBAAuB,IAAI,CAAC,QAAQ,UAAU,GAAG;CAC5D,UAAU,EACR,MAAM;EACJ,IAAI,CAAC,OAAO;EACZ,IAAI,CAAC,OAAO;EACZ,IAAI,CAAC,OAAO;CACd,EACF;CACA,iBAAiB,EACf,MAAM,wBAAwB,KAChC;AACF,CAAC"}
@@ -4,11 +4,12 @@ import { useRender } from "@base-ui/react";
4
4
  //#region src/components/display/data-list/data-list-root.d.ts
5
5
  export type DataListRootProps = MergeOverride<useRender.ComponentProps<'dl'>, DataListVariants>;
6
6
  /**
7
- * Lista de pares rótulo e valor, renderizada como `dl`.
7
+ * Lista de pares rótulo e valor, renderizada como `dl`. É sempre uma coluna; grade ou linha vêm da
8
+ * `className`, e o espaço entre os itens, do `gap`.
8
9
  *
9
10
  * @example
10
11
  * ```tsx
11
- * <DataList.Root>
12
+ * <DataList.Root orientation="horizontal">
12
13
  * <DataList.Item>
13
14
  * <DataList.ItemLabel>Status</DataList.ItemLabel>
14
15
  * <DataList.ItemValue>Ativo</DataList.ItemValue>
@@ -7,11 +7,12 @@ import { jsx } from "react/jsx-runtime";
7
7
  //#region src/components/display/data-list/data-list-root.tsx
8
8
  const splitVariantProps = createSplitProps();
9
9
  /**
10
- * Lista de pares rótulo e valor, renderizada como `dl`.
10
+ * Lista de pares rótulo e valor, renderizada como `dl`. É sempre uma coluna; grade ou linha vêm da
11
+ * `className`, e o espaço entre os itens, do `gap`.
11
12
  *
12
13
  * @example
13
14
  * ```tsx
14
- * <DataList.Root>
15
+ * <DataList.Root orientation="horizontal">
15
16
  * <DataList.Item>
16
17
  * <DataList.ItemLabel>Status</DataList.ItemLabel>
17
18
  * <DataList.ItemValue>Ativo</DataList.ItemValue>
@@ -20,7 +21,11 @@ const splitVariantProps = createSplitProps();
20
21
  * ```
21
22
  */
22
23
  const DataListRoot = (props) => {
23
- const [variantProps, elementProps] = splitVariantProps(props, ["divided", "orientation"]);
24
+ const [variantProps, elementProps] = splitVariantProps(props, [
25
+ "orientation",
26
+ "size",
27
+ "variant"
28
+ ]);
24
29
  const { render, className, ...rest } = elementProps;
25
30
  const baseProps = {
26
31
  "data-component": "DataList.Root",
@@ -1 +1 @@
1
- {"version":3,"file":"data-list-root.js","names":[],"sources":["../../../../src/components/display/data-list/data-list-root.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 { dataListRootVariants } from './data-list-root-variants';\nimport {\n DataListContextProvider,\n type DataListVariants,\n} from './use-data-list-context';\n\nexport type DataListRootProps = MergeOverride<\n useRender.ComponentProps<'dl'>,\n DataListVariants\n>;\n\nconst splitVariantProps = createSplitProps<DataListVariants>();\n\n/**\n * Lista de pares rótulo e valor, renderizada como `dl`.\n *\n * @example\n * ```tsx\n * <DataList.Root>\n * <DataList.Item>\n * <DataList.ItemLabel>Status</DataList.ItemLabel>\n * <DataList.ItemValue>Ativo</DataList.ItemValue>\n * </DataList.Item>\n * </DataList.Root>\n * ```\n */\nexport const DataListRoot = (props: DataListRootProps) => {\n const [variantProps, elementProps] = splitVariantProps(props, [\n 'divided',\n 'orientation',\n ]);\n\n const { render, className, ...rest } = elementProps;\n\n const baseProps = {\n 'data-component': 'DataList.Root',\n className: mergeTwClassNames(dataListRootVariants(variantProps), className),\n };\n\n return (\n <DataListContextProvider value={variantProps}>\n {useRender({\n render,\n defaultTagName: 'dl',\n props: mergeProps(baseProps, rest),\n })}\n </DataListContextProvider>\n );\n};\n\nDataListRoot.displayName = 'DataList.Root';\n"],"mappings":";;;;;;;AAiBA,MAAM,oBAAoB,iBAAmC;;;;;;;;;;;;;;AAe7D,MAAa,gBAAgB,UAA6B;CACxD,MAAM,CAAC,cAAc,gBAAgB,kBAAkB,OAAO,CAC5D,WACA,aACF,CAAC;CAED,MAAM,EAAE,QAAQ,WAAW,GAAG,SAAS;CAEvC,MAAM,YAAY;EAChB,kBAAkB;EAClB,WAAW,kBAAkB,qBAAqB,YAAY,GAAG,SAAS;CAC5E;CAEA,OACE,oBAAC,yBAAD;EAAyB,OAAO;EAC7B,UAAA,UAAU;GACT;GACA,gBAAgB;GAChB,OAAO,WAAW,WAAW,IAAI;EACnC,CAAC;CACsB,CAAA;AAE7B;AAEA,aAAa,cAAc"}
1
+ {"version":3,"file":"data-list-root.js","names":[],"sources":["../../../../src/components/display/data-list/data-list-root.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 { dataListRootVariants } from './data-list-root-variants';\nimport {\n DataListContextProvider,\n type DataListVariants,\n} from './use-data-list-context';\n\nexport type DataListRootProps = MergeOverride<\n useRender.ComponentProps<'dl'>,\n DataListVariants\n>;\n\nconst splitVariantProps = createSplitProps<DataListVariants>();\n\n/**\n * Lista de pares rótulo e valor, renderizada como `dl`. É sempre uma coluna; grade ou linha vêm da\n * `className`, e o espaço entre os itens, do `gap`.\n *\n * @example\n * ```tsx\n * <DataList.Root orientation=\"horizontal\">\n * <DataList.Item>\n * <DataList.ItemLabel>Status</DataList.ItemLabel>\n * <DataList.ItemValue>Ativo</DataList.ItemValue>\n * </DataList.Item>\n * </DataList.Root>\n * ```\n */\nexport const DataListRoot = (props: DataListRootProps) => {\n const [variantProps, elementProps] = splitVariantProps(props, [\n 'orientation',\n 'size',\n 'variant',\n ]);\n\n const { render, className, ...rest } = elementProps;\n\n const baseProps = {\n 'data-component': 'DataList.Root',\n className: mergeTwClassNames(dataListRootVariants(variantProps), className),\n };\n\n return (\n <DataListContextProvider value={variantProps}>\n {useRender({\n render,\n defaultTagName: 'dl',\n props: mergeProps(baseProps, rest),\n })}\n </DataListContextProvider>\n );\n};\n\nDataListRoot.displayName = 'DataList.Root';\n"],"mappings":";;;;;;;AAiBA,MAAM,oBAAoB,iBAAmC;;;;;;;;;;;;;;;AAgB7D,MAAa,gBAAgB,UAA6B;CACxD,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,qBAAqB,YAAY,GAAG,SAAS;CAC5E;CAEA,OACE,oBAAC,yBAAD;EAAyB,OAAO;EAC7B,UAAA,UAAU;GACT;GACA,gBAAgB;GAChB,OAAO,WAAW,WAAW,IAAI;EACnC,CAAC;CACsB,CAAA;AAE7B;AAEA,aAAa,cAAc"}
@@ -1,21 +1,32 @@
1
1
  //#region src/components/display/data-list/use-data-list-context.d.ts
2
2
  /**
3
3
  * Variantes do DataList. Informadas no `DataList.Root` e repassadas às partes por contexto.
4
+ *
5
+ * O `size` e o `variant` são exceções à tipografia fixa por papel: a lista aparece em densidades
6
+ * diferentes (um resumo compacto, uma ficha completa), e o `bold` inverte a ênfase quando o rótulo
7
+ * é o que se procura.
4
8
  */
5
9
  export type DataListVariants = {
6
10
  /**
7
- * Linha entre os itens.
11
+ * Orientação do par rótulo/valor, não da lista: `vertical` põe o rótulo em cima e o valor
12
+ * embaixo; `horizontal` põe os dois lado a lado, com o rótulo numa largura mínima de 120px para
13
+ * os valores alinharem. O `Root` é sempre uma coluna, e grade ou linha vêm pela `className`.
8
14
  *
9
- * @default false
15
+ * @default 'vertical'
10
16
  */
11
- divided?: boolean;
17
+ orientation?: 'horizontal' | 'vertical';
12
18
  /**
13
- * Orientação da lista, não do par rótulo/valor: `vertical` empilha os itens, com rótulo e valor
14
- * lado a lado; `horizontal` põe os itens em linha, com o valor abaixo do rótulo.
19
+ * Espaço entre os itens e tamanho do texto.
15
20
  *
16
- * @default 'vertical'
21
+ * @default 'md'
17
22
  */
18
- orientation?: 'horizontal' | 'vertical';
23
+ size?: 'sm' | 'md' | 'lg';
24
+ /**
25
+ * Ênfase do par: `subtle` apaga o rótulo; `bold` põe o rótulo em peso médio e apaga o valor.
26
+ *
27
+ * @default 'subtle'
28
+ */
29
+ variant?: 'subtle' | 'bold';
19
30
  };
20
31
  export declare const dataListDefaultVariants: Required<DataListVariants>;
21
32
  export declare const DataListContextProvider: import("react").Provider<DataListVariants>, useDataListContext: () => DataListVariants;
@@ -1,8 +1,9 @@
1
1
  import { createContext } from "@lucasbernardosn/react-utils";
2
2
  //#region src/components/display/data-list/use-data-list-context.ts
3
3
  const dataListDefaultVariants = {
4
- divided: false,
5
- orientation: "vertical"
4
+ orientation: "vertical",
5
+ size: "md",
6
+ variant: "subtle"
6
7
  };
7
8
  const [DataListContextProvider, useDataListContext] = createContext({
8
9
  name: "DataListContext",
@@ -1 +1 @@
1
- {"version":3,"file":"use-data-list-context.js","names":[],"sources":["../../../../src/components/display/data-list/use-data-list-context.ts"],"sourcesContent":["import { createContext } from '@lucasbernardosn/react-utils';\n\n/**\n * Variantes do DataList. Informadas no `DataList.Root` e repassadas às partes por contexto.\n */\nexport type DataListVariants = {\n /**\n * Linha entre os itens.\n *\n * @default false\n */\n divided?: boolean;\n /**\n * Orientação da lista, não do par rótulo/valor: `vertical` empilha os itens, com rótulo e valor\n * lado a lado; `horizontal` põe os itens em linha, com o valor abaixo do rótulo.\n *\n * @default 'vertical'\n */\n orientation?: 'horizontal' | 'vertical';\n};\n\nexport const dataListDefaultVariants: Required<DataListVariants> = {\n divided: false,\n orientation: 'vertical',\n};\n\nexport const [DataListContextProvider, useDataListContext] =\n createContext<DataListVariants>({\n name: 'DataListContext',\n providers: ['DataList.Root'],\n });\n"],"mappings":";;AAqBA,MAAa,0BAAsD;CACjE,SAAS;CACT,aAAa;AACf;AAEA,MAAa,CAAC,yBAAyB,sBACrC,cAAgC;CAC9B,MAAM;CACN,WAAW,CAAC,eAAe;AAC7B,CAAC"}
1
+ {"version":3,"file":"use-data-list-context.js","names":[],"sources":["../../../../src/components/display/data-list/use-data-list-context.ts"],"sourcesContent":["import { createContext } from '@lucasbernardosn/react-utils';\n\n/**\n * Variantes do DataList. Informadas no `DataList.Root` e repassadas às partes por contexto.\n *\n * O `size` e o `variant` são exceções à tipografia fixa por papel: a lista aparece em densidades\n * diferentes (um resumo compacto, uma ficha completa), e o `bold` inverte a ênfase quando o rótulo\n * é o que se procura.\n */\nexport type DataListVariants = {\n /**\n * Orientação do par rótulo/valor, não da lista: `vertical` põe o rótulo em cima e o valor\n * embaixo; `horizontal` põe os dois lado a lado, com o rótulo numa largura mínima de 120px para\n * os valores alinharem. O `Root` é sempre uma coluna, e grade ou linha vêm pela `className`.\n *\n * @default 'vertical'\n */\n orientation?: 'horizontal' | 'vertical';\n /**\n * Espaço entre os itens e tamanho do texto.\n *\n * @default 'md'\n */\n size?: 'sm' | 'md' | 'lg';\n /**\n * Ênfase do par: `subtle` apaga o rótulo; `bold` põe o rótulo em peso médio e apaga o valor.\n *\n * @default 'subtle'\n */\n variant?: 'subtle' | 'bold';\n};\n\nexport const dataListDefaultVariants: Required<DataListVariants> = {\n orientation: 'vertical',\n size: 'md',\n variant: 'subtle',\n};\n\nexport const [DataListContextProvider, useDataListContext] =\n createContext<DataListVariants>({\n name: 'DataListContext',\n providers: ['DataList.Root'],\n });\n"],"mappings":";;AAgCA,MAAa,0BAAsD;CACjE,aAAa;CACb,MAAM;CACN,SAAS;AACX;AAEA,MAAa,CAAC,yBAAyB,sBACrC,cAAgC;CAC9B,MAAM;CACN,WAAW,CAAC,eAAe;AAC7B,CAAC"}
@@ -27,11 +27,10 @@ export declare const tagRootDefaultVariants: Required<TagRootVariants>;
27
27
  * Cópia de `badgeVariants`, a origem do visual do rótulo curto, onde as variáveis de cor estão
28
28
  * explicadas (tabela no README de `display`). As diferenças:
29
29
  * - variáveis com o prefixo `--tag-`;
30
- * - `max-w-full` e `min-w-0`, para o `Tag.Label` truncar um texto longo;
31
30
  * - cada `size` declara o tamanho do `Tag.Close` em `--tag-close-size`.
32
31
  */
33
32
  export declare const tagRootVariants: (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;
33
+ 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
34
  size?: "sm" | "md" | "lg" | null | undefined;
36
35
  variant?: "solid" | "subtle" | "surface" | "outline" | null | undefined;
37
36
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
@@ -9,7 +9,6 @@ const tagRootDefaultVariants = {
9
9
  * Cópia de `badgeVariants`, a origem do visual do rótulo curto, onde as variáveis de cor estão
10
10
  * explicadas (tabela no README de `display`). As diferenças:
11
11
  * - variáveis com o prefixo `--tag-`;
12
- * - `max-w-full` e `min-w-0`, para o `Tag.Label` truncar um texto longo;
13
12
  * - cada `size` declara o tamanho do `Tag.Close` em `--tag-close-size`.
14
13
  */
15
14
  const tagRootVariants = cva([
@@ -1 +1 @@
1
- {"version":3,"file":"tag-root-variants.js","names":[],"sources":["../../../../src/components/display/tag/tag-root-variants.ts"],"sourcesContent":["import { cva } from 'class-variance-authority';\nimport type { ColorSchemeFull } from '#types';\n\nexport type TagRootVariants = {\n /**\n * Cor do texto, do fundo e da borda, como no `Badge`.\n *\n * @default 'gray'\n */\n colorScheme?: ColorSchemeFull;\n /**\n * Altura, padding, tamanho do texto e do botão de remover: `sm` = `h-5`, `md` = `h-6`,\n * `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 tagRootDefaultVariants: Required<TagRootVariants> = {\n colorScheme: 'gray',\n size: 'sm',\n variant: 'subtle',\n};\n\n/**\n * Cópia de `badgeVariants`, a origem do visual do rótulo curto, onde as variáveis de cor estão\n * explicadas (tabela no README de `display`). As diferenças:\n * - variáveis com o prefixo `--tag-`;\n * - `max-w-full` e `min-w-0`, para o `Tag.Label` truncar um texto longo;\n * - cada `size` declara o tamanho do `Tag.Close` em `--tag-close-size`.\n */\nexport const tagRootVariants = 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 '[--tag-fg:var(--color-gray-11)]',\n '[--tag-subtle-bg:var(--color-gray-alpha-3)]',\n '[--tag-surface-bg:var(--color-gray-alpha-2)]',\n '[--tag-surface-border:var(--color-gray-alpha-6)]',\n '[--tag-outline-border:var(--color-gray-alpha-8)]',\n '[--tag-solid-bg:var(--color-black)]',\n 'dark:[--tag-solid-bg:var(--color-white)]',\n '[--tag-solid-fg:var(--color-white)]',\n 'dark:[--tag-solid-fg:var(--color-black)]',\n ],\n brand: [\n '[--tag-fg:var(--color-brand-11)]',\n '[--tag-subtle-bg:var(--color-brand-alpha-3)]',\n '[--tag-surface-bg:var(--color-brand-alpha-2)]',\n '[--tag-surface-border:var(--color-brand-alpha-6)]',\n '[--tag-outline-border:var(--color-brand-alpha-8)]',\n '[--tag-solid-bg:var(--color-brand-9)]',\n '[--tag-solid-fg:var(--color-white)]',\n ],\n red: [\n '[--tag-fg:var(--color-red-11)]',\n '[--tag-subtle-bg:var(--color-red-alpha-3)]',\n '[--tag-surface-bg:var(--color-red-alpha-2)]',\n '[--tag-surface-border:var(--color-red-alpha-6)]',\n '[--tag-outline-border:var(--color-red-alpha-8)]',\n '[--tag-solid-bg:var(--color-red-9)]',\n '[--tag-solid-fg:var(--color-white)]',\n ],\n green: [\n '[--tag-fg:var(--color-green-11)]',\n '[--tag-subtle-bg:var(--color-green-alpha-3)]',\n '[--tag-surface-bg:var(--color-green-alpha-2)]',\n '[--tag-surface-border:var(--color-green-alpha-6)]',\n '[--tag-outline-border:var(--color-green-alpha-8)]',\n '[--tag-solid-bg:var(--color-green-9)]',\n '[--tag-solid-fg:var(--color-white)]',\n ],\n blue: [\n '[--tag-fg:var(--color-blue-11)]',\n '[--tag-subtle-bg:var(--color-blue-alpha-3)]',\n '[--tag-surface-bg:var(--color-blue-alpha-2)]',\n '[--tag-surface-border:var(--color-blue-alpha-6)]',\n '[--tag-outline-border:var(--color-blue-alpha-8)]',\n '[--tag-solid-bg:var(--color-blue-9)]',\n '[--tag-solid-fg:var(--color-white)]',\n ],\n amber: [\n '[--tag-fg:var(--color-amber-11)]',\n '[--tag-subtle-bg:var(--color-amber-alpha-3)]',\n '[--tag-surface-bg:var(--color-amber-alpha-2)]',\n '[--tag-surface-border:var(--color-amber-alpha-6)]',\n '[--tag-outline-border:var(--color-amber-alpha-8)]',\n '[--tag-solid-bg:var(--color-amber-9)]',\n '[--tag-solid-fg:var(--color-black)]',\n ],\n purple: [\n '[--tag-fg:var(--color-purple-11)]',\n '[--tag-subtle-bg:var(--color-purple-alpha-3)]',\n '[--tag-surface-bg:var(--color-purple-alpha-2)]',\n '[--tag-surface-border:var(--color-purple-alpha-6)]',\n '[--tag-outline-border:var(--color-purple-alpha-8)]',\n '[--tag-solid-bg:var(--color-purple-9)]',\n '[--tag-solid-fg:var(--color-white)]',\n ],\n pink: [\n '[--tag-fg:var(--color-pink-11)]',\n '[--tag-subtle-bg:var(--color-pink-alpha-3)]',\n '[--tag-surface-bg:var(--color-pink-alpha-2)]',\n '[--tag-surface-border:var(--color-pink-alpha-6)]',\n '[--tag-outline-border:var(--color-pink-alpha-8)]',\n '[--tag-solid-bg:var(--color-pink-9)]',\n '[--tag-solid-fg:var(--color-white)]',\n ],\n cyan: [\n '[--tag-fg:var(--color-cyan-11)]',\n '[--tag-subtle-bg:var(--color-cyan-alpha-3)]',\n '[--tag-surface-bg:var(--color-cyan-alpha-2)]',\n '[--tag-surface-border:var(--color-cyan-alpha-6)]',\n '[--tag-outline-border:var(--color-cyan-alpha-8)]',\n '[--tag-solid-bg:var(--color-cyan-9)]',\n '[--tag-solid-fg:var(--color-white)]',\n ],\n teal: [\n '[--tag-fg:var(--color-teal-11)]',\n '[--tag-subtle-bg:var(--color-teal-alpha-3)]',\n '[--tag-surface-bg:var(--color-teal-alpha-2)]',\n '[--tag-surface-border:var(--color-teal-alpha-6)]',\n '[--tag-outline-border:var(--color-teal-alpha-8)]',\n '[--tag-solid-bg:var(--color-teal-9)]',\n '[--tag-solid-fg:var(--color-white)]',\n ],\n orange: [\n '[--tag-fg:var(--color-orange-11)]',\n '[--tag-subtle-bg:var(--color-orange-alpha-3)]',\n '[--tag-surface-bg:var(--color-orange-alpha-2)]',\n '[--tag-surface-border:var(--color-orange-alpha-6)]',\n '[--tag-outline-border:var(--color-orange-alpha-8)]',\n '[--tag-solid-bg:var(--color-orange-9)]',\n '[--tag-solid-fg:var(--color-white)]',\n ],\n brown: [\n '[--tag-fg:var(--color-brown-11)]',\n '[--tag-subtle-bg:var(--color-brown-alpha-3)]',\n '[--tag-surface-bg:var(--color-brown-alpha-2)]',\n '[--tag-surface-border:var(--color-brown-alpha-6)]',\n '[--tag-outline-border:var(--color-brown-alpha-8)]',\n '[--tag-solid-bg:var(--color-brown-9)]',\n '[--tag-solid-fg:var(--color-white)]',\n ],\n yellow: [\n '[--tag-fg:var(--color-yellow-11)]',\n '[--tag-subtle-bg:var(--color-yellow-alpha-3)]',\n '[--tag-surface-bg:var(--color-yellow-alpha-2)]',\n '[--tag-surface-border:var(--color-yellow-alpha-6)]',\n '[--tag-outline-border:var(--color-yellow-alpha-8)]',\n '[--tag-solid-bg:var(--color-yellow-9)]',\n '[--tag-solid-fg:var(--color-black)]',\n ],\n bronze: [\n '[--tag-fg:var(--color-bronze-11)]',\n '[--tag-subtle-bg:var(--color-bronze-alpha-3)]',\n '[--tag-surface-bg:var(--color-bronze-alpha-2)]',\n '[--tag-surface-border:var(--color-bronze-alpha-6)]',\n '[--tag-outline-border:var(--color-bronze-alpha-8)]',\n '[--tag-solid-bg:var(--color-bronze-9)]',\n '[--tag-solid-fg:var(--color-white)]',\n ],\n gold: [\n '[--tag-fg:var(--color-gold-11)]',\n '[--tag-subtle-bg:var(--color-gold-alpha-3)]',\n '[--tag-surface-bg:var(--color-gold-alpha-2)]',\n '[--tag-surface-border:var(--color-gold-alpha-6)]',\n '[--tag-outline-border:var(--color-gold-alpha-8)]',\n '[--tag-solid-bg:var(--color-gold-9)]',\n '[--tag-solid-fg:var(--color-white)]',\n ],\n tomato: [\n '[--tag-fg:var(--color-tomato-11)]',\n '[--tag-subtle-bg:var(--color-tomato-alpha-3)]',\n '[--tag-surface-bg:var(--color-tomato-alpha-2)]',\n '[--tag-surface-border:var(--color-tomato-alpha-6)]',\n '[--tag-outline-border:var(--color-tomato-alpha-8)]',\n '[--tag-solid-bg:var(--color-tomato-9)]',\n '[--tag-solid-fg:var(--color-white)]',\n ],\n ruby: [\n '[--tag-fg:var(--color-ruby-11)]',\n '[--tag-subtle-bg:var(--color-ruby-alpha-3)]',\n '[--tag-surface-bg:var(--color-ruby-alpha-2)]',\n '[--tag-surface-border:var(--color-ruby-alpha-6)]',\n '[--tag-outline-border:var(--color-ruby-alpha-8)]',\n '[--tag-solid-bg:var(--color-ruby-9)]',\n '[--tag-solid-fg:var(--color-white)]',\n ],\n crimson: [\n '[--tag-fg:var(--color-crimson-11)]',\n '[--tag-subtle-bg:var(--color-crimson-alpha-3)]',\n '[--tag-surface-bg:var(--color-crimson-alpha-2)]',\n '[--tag-surface-border:var(--color-crimson-alpha-6)]',\n '[--tag-outline-border:var(--color-crimson-alpha-8)]',\n '[--tag-solid-bg:var(--color-crimson-9)]',\n '[--tag-solid-fg:var(--color-white)]',\n ],\n plum: [\n '[--tag-fg:var(--color-plum-11)]',\n '[--tag-subtle-bg:var(--color-plum-alpha-3)]',\n '[--tag-surface-bg:var(--color-plum-alpha-2)]',\n '[--tag-surface-border:var(--color-plum-alpha-6)]',\n '[--tag-outline-border:var(--color-plum-alpha-8)]',\n '[--tag-solid-bg:var(--color-plum-9)]',\n '[--tag-solid-fg:var(--color-white)]',\n ],\n violet: [\n '[--tag-fg:var(--color-violet-11)]',\n '[--tag-subtle-bg:var(--color-violet-alpha-3)]',\n '[--tag-surface-bg:var(--color-violet-alpha-2)]',\n '[--tag-surface-border:var(--color-violet-alpha-6)]',\n '[--tag-outline-border:var(--color-violet-alpha-8)]',\n '[--tag-solid-bg:var(--color-violet-9)]',\n '[--tag-solid-fg:var(--color-white)]',\n ],\n iris: [\n '[--tag-fg:var(--color-iris-11)]',\n '[--tag-subtle-bg:var(--color-iris-alpha-3)]',\n '[--tag-surface-bg:var(--color-iris-alpha-2)]',\n '[--tag-surface-border:var(--color-iris-alpha-6)]',\n '[--tag-outline-border:var(--color-iris-alpha-8)]',\n '[--tag-solid-bg:var(--color-iris-9)]',\n '[--tag-solid-fg:var(--color-white)]',\n ],\n indigo: [\n '[--tag-fg:var(--color-indigo-11)]',\n '[--tag-subtle-bg:var(--color-indigo-alpha-3)]',\n '[--tag-surface-bg:var(--color-indigo-alpha-2)]',\n '[--tag-surface-border:var(--color-indigo-alpha-6)]',\n '[--tag-outline-border:var(--color-indigo-alpha-8)]',\n '[--tag-solid-bg:var(--color-indigo-9)]',\n '[--tag-solid-fg:var(--color-white)]',\n ],\n sky: [\n '[--tag-fg:var(--color-sky-11)]',\n '[--tag-subtle-bg:var(--color-sky-alpha-3)]',\n '[--tag-surface-bg:var(--color-sky-alpha-2)]',\n '[--tag-surface-border:var(--color-sky-alpha-6)]',\n '[--tag-outline-border:var(--color-sky-alpha-8)]',\n '[--tag-solid-bg:var(--color-sky-9)]',\n '[--tag-solid-fg:var(--color-black)]',\n ],\n mint: [\n '[--tag-fg:var(--color-mint-11)]',\n '[--tag-subtle-bg:var(--color-mint-alpha-3)]',\n '[--tag-surface-bg:var(--color-mint-alpha-2)]',\n '[--tag-surface-border:var(--color-mint-alpha-6)]',\n '[--tag-outline-border:var(--color-mint-alpha-8)]',\n '[--tag-solid-bg:var(--color-mint-9)]',\n '[--tag-solid-fg:var(--color-black)]',\n ],\n lime: [\n '[--tag-fg:var(--color-lime-11)]',\n '[--tag-subtle-bg:var(--color-lime-alpha-3)]',\n '[--tag-surface-bg:var(--color-lime-alpha-2)]',\n '[--tag-surface-border:var(--color-lime-alpha-6)]',\n '[--tag-outline-border:var(--color-lime-alpha-8)]',\n '[--tag-solid-bg:var(--color-lime-9)]',\n '[--tag-solid-fg:var(--color-black)]',\n ],\n jade: [\n '[--tag-fg:var(--color-jade-11)]',\n '[--tag-subtle-bg:var(--color-jade-alpha-3)]',\n '[--tag-surface-bg:var(--color-jade-alpha-2)]',\n '[--tag-surface-border:var(--color-jade-alpha-6)]',\n '[--tag-outline-border:var(--color-jade-alpha-8)]',\n '[--tag-solid-bg:var(--color-jade-9)]',\n '[--tag-solid-fg:var(--color-white)]',\n ],\n grass: [\n '[--tag-fg:var(--color-grass-11)]',\n '[--tag-subtle-bg:var(--color-grass-alpha-3)]',\n '[--tag-surface-bg:var(--color-grass-alpha-2)]',\n '[--tag-surface-border:var(--color-grass-alpha-6)]',\n '[--tag-outline-border:var(--color-grass-alpha-8)]',\n '[--tag-solid-bg:var(--color-grass-9)]',\n '[--tag-solid-fg:var(--color-white)]',\n ],\n },\n size: {\n sm: [\n '[--tag-close-size:--spacing(4)]',\n 'h-5',\n 'px-1.5',\n 'gap-1',\n 'text-xs',\n '[&_svg]:size-3',\n ],\n md: [\n '[--tag-close-size:--spacing(5)]',\n 'h-6',\n 'px-2',\n 'gap-1',\n 'text-xs',\n '[&_svg]:size-3.5',\n ],\n lg: [\n '[--tag-close-size:--spacing(5)]',\n 'h-7',\n 'px-2.5',\n 'gap-1.5',\n 'text-sm',\n '[&_svg]:size-4',\n ],\n },\n variant: {\n // A borda transparente fica para as variantes terem a mesma medida.\n subtle: [\n 'border-transparent',\n 'bg-(--tag-subtle-bg)',\n 'text-(--tag-fg)',\n ],\n surface: [\n 'border-(--tag-surface-border)',\n 'bg-(--tag-surface-bg)',\n 'text-(--tag-fg)',\n ],\n outline: ['border-(--tag-outline-border)', 'text-(--tag-fg)'],\n solid: [\n 'border-transparent',\n 'bg-(--tag-solid-bg)',\n 'text-(--tag-solid-fg)',\n ],\n },\n },\n defaultVariants: {\n colorScheme: tagRootDefaultVariants.colorScheme,\n size: tagRootDefaultVariants.size,\n variant: tagRootDefaultVariants.variant,\n },\n },\n);\n"],"mappings":";;AA0BA,MAAa,yBAAoD;CAC/D,aAAa;CACb,MAAM;CACN,SAAS;AACX;;;;;;;;AASA,MAAa,kBAAkB,IAC7B;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;IACF;IACA;IACA;IACA;IACA;IACA;GACF;GACA,IAAI;IACF;IACA;IACA;IACA;IACA;IACA;GACF;GACA,IAAI;IACF;IACA;IACA;IACA;IACA;IACA;GACF;EACF;EACA,SAAS;GAEP,QAAQ;IACN;IACA;IACA;GACF;GACA,SAAS;IACP;IACA;IACA;GACF;GACA,SAAS,CAAC,iCAAiC,iBAAiB;GAC5D,OAAO;IACL;IACA;IACA;GACF;EACF;CACF;CACA,iBAAiB;EACf,aAAa,uBAAuB;EACpC,MAAM,uBAAuB;EAC7B,SAAS,uBAAuB;CAClC;AACF,CACF"}
1
+ {"version":3,"file":"tag-root-variants.js","names":[],"sources":["../../../../src/components/display/tag/tag-root-variants.ts"],"sourcesContent":["import { cva } from 'class-variance-authority';\nimport type { ColorSchemeFull } from '#types';\n\nexport type TagRootVariants = {\n /**\n * Cor do texto, do fundo e da borda, como no `Badge`.\n *\n * @default 'gray'\n */\n colorScheme?: ColorSchemeFull;\n /**\n * Altura, padding, tamanho do texto e do botão de remover: `sm` = `h-5`, `md` = `h-6`,\n * `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 tagRootDefaultVariants: Required<TagRootVariants> = {\n colorScheme: 'gray',\n size: 'sm',\n variant: 'subtle',\n};\n\n/**\n * Cópia de `badgeVariants`, a origem do visual do rótulo curto, onde as variáveis de cor estão\n * explicadas (tabela no README de `display`). As diferenças:\n * - variáveis com o prefixo `--tag-`;\n * - cada `size` declara o tamanho do `Tag.Close` em `--tag-close-size`.\n */\nexport const tagRootVariants = 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 '[--tag-fg:var(--color-gray-11)]',\n '[--tag-subtle-bg:var(--color-gray-alpha-3)]',\n '[--tag-surface-bg:var(--color-gray-alpha-2)]',\n '[--tag-surface-border:var(--color-gray-alpha-6)]',\n '[--tag-outline-border:var(--color-gray-alpha-8)]',\n '[--tag-solid-bg:var(--color-black)]',\n 'dark:[--tag-solid-bg:var(--color-white)]',\n '[--tag-solid-fg:var(--color-white)]',\n 'dark:[--tag-solid-fg:var(--color-black)]',\n ],\n brand: [\n '[--tag-fg:var(--color-brand-11)]',\n '[--tag-subtle-bg:var(--color-brand-alpha-3)]',\n '[--tag-surface-bg:var(--color-brand-alpha-2)]',\n '[--tag-surface-border:var(--color-brand-alpha-6)]',\n '[--tag-outline-border:var(--color-brand-alpha-8)]',\n '[--tag-solid-bg:var(--color-brand-9)]',\n '[--tag-solid-fg:var(--color-white)]',\n ],\n red: [\n '[--tag-fg:var(--color-red-11)]',\n '[--tag-subtle-bg:var(--color-red-alpha-3)]',\n '[--tag-surface-bg:var(--color-red-alpha-2)]',\n '[--tag-surface-border:var(--color-red-alpha-6)]',\n '[--tag-outline-border:var(--color-red-alpha-8)]',\n '[--tag-solid-bg:var(--color-red-9)]',\n '[--tag-solid-fg:var(--color-white)]',\n ],\n green: [\n '[--tag-fg:var(--color-green-11)]',\n '[--tag-subtle-bg:var(--color-green-alpha-3)]',\n '[--tag-surface-bg:var(--color-green-alpha-2)]',\n '[--tag-surface-border:var(--color-green-alpha-6)]',\n '[--tag-outline-border:var(--color-green-alpha-8)]',\n '[--tag-solid-bg:var(--color-green-9)]',\n '[--tag-solid-fg:var(--color-white)]',\n ],\n blue: [\n '[--tag-fg:var(--color-blue-11)]',\n '[--tag-subtle-bg:var(--color-blue-alpha-3)]',\n '[--tag-surface-bg:var(--color-blue-alpha-2)]',\n '[--tag-surface-border:var(--color-blue-alpha-6)]',\n '[--tag-outline-border:var(--color-blue-alpha-8)]',\n '[--tag-solid-bg:var(--color-blue-9)]',\n '[--tag-solid-fg:var(--color-white)]',\n ],\n amber: [\n '[--tag-fg:var(--color-amber-11)]',\n '[--tag-subtle-bg:var(--color-amber-alpha-3)]',\n '[--tag-surface-bg:var(--color-amber-alpha-2)]',\n '[--tag-surface-border:var(--color-amber-alpha-6)]',\n '[--tag-outline-border:var(--color-amber-alpha-8)]',\n '[--tag-solid-bg:var(--color-amber-9)]',\n '[--tag-solid-fg:var(--color-black)]',\n ],\n purple: [\n '[--tag-fg:var(--color-purple-11)]',\n '[--tag-subtle-bg:var(--color-purple-alpha-3)]',\n '[--tag-surface-bg:var(--color-purple-alpha-2)]',\n '[--tag-surface-border:var(--color-purple-alpha-6)]',\n '[--tag-outline-border:var(--color-purple-alpha-8)]',\n '[--tag-solid-bg:var(--color-purple-9)]',\n '[--tag-solid-fg:var(--color-white)]',\n ],\n pink: [\n '[--tag-fg:var(--color-pink-11)]',\n '[--tag-subtle-bg:var(--color-pink-alpha-3)]',\n '[--tag-surface-bg:var(--color-pink-alpha-2)]',\n '[--tag-surface-border:var(--color-pink-alpha-6)]',\n '[--tag-outline-border:var(--color-pink-alpha-8)]',\n '[--tag-solid-bg:var(--color-pink-9)]',\n '[--tag-solid-fg:var(--color-white)]',\n ],\n cyan: [\n '[--tag-fg:var(--color-cyan-11)]',\n '[--tag-subtle-bg:var(--color-cyan-alpha-3)]',\n '[--tag-surface-bg:var(--color-cyan-alpha-2)]',\n '[--tag-surface-border:var(--color-cyan-alpha-6)]',\n '[--tag-outline-border:var(--color-cyan-alpha-8)]',\n '[--tag-solid-bg:var(--color-cyan-9)]',\n '[--tag-solid-fg:var(--color-white)]',\n ],\n teal: [\n '[--tag-fg:var(--color-teal-11)]',\n '[--tag-subtle-bg:var(--color-teal-alpha-3)]',\n '[--tag-surface-bg:var(--color-teal-alpha-2)]',\n '[--tag-surface-border:var(--color-teal-alpha-6)]',\n '[--tag-outline-border:var(--color-teal-alpha-8)]',\n '[--tag-solid-bg:var(--color-teal-9)]',\n '[--tag-solid-fg:var(--color-white)]',\n ],\n orange: [\n '[--tag-fg:var(--color-orange-11)]',\n '[--tag-subtle-bg:var(--color-orange-alpha-3)]',\n '[--tag-surface-bg:var(--color-orange-alpha-2)]',\n '[--tag-surface-border:var(--color-orange-alpha-6)]',\n '[--tag-outline-border:var(--color-orange-alpha-8)]',\n '[--tag-solid-bg:var(--color-orange-9)]',\n '[--tag-solid-fg:var(--color-white)]',\n ],\n brown: [\n '[--tag-fg:var(--color-brown-11)]',\n '[--tag-subtle-bg:var(--color-brown-alpha-3)]',\n '[--tag-surface-bg:var(--color-brown-alpha-2)]',\n '[--tag-surface-border:var(--color-brown-alpha-6)]',\n '[--tag-outline-border:var(--color-brown-alpha-8)]',\n '[--tag-solid-bg:var(--color-brown-9)]',\n '[--tag-solid-fg:var(--color-white)]',\n ],\n yellow: [\n '[--tag-fg:var(--color-yellow-11)]',\n '[--tag-subtle-bg:var(--color-yellow-alpha-3)]',\n '[--tag-surface-bg:var(--color-yellow-alpha-2)]',\n '[--tag-surface-border:var(--color-yellow-alpha-6)]',\n '[--tag-outline-border:var(--color-yellow-alpha-8)]',\n '[--tag-solid-bg:var(--color-yellow-9)]',\n '[--tag-solid-fg:var(--color-black)]',\n ],\n bronze: [\n '[--tag-fg:var(--color-bronze-11)]',\n '[--tag-subtle-bg:var(--color-bronze-alpha-3)]',\n '[--tag-surface-bg:var(--color-bronze-alpha-2)]',\n '[--tag-surface-border:var(--color-bronze-alpha-6)]',\n '[--tag-outline-border:var(--color-bronze-alpha-8)]',\n '[--tag-solid-bg:var(--color-bronze-9)]',\n '[--tag-solid-fg:var(--color-white)]',\n ],\n gold: [\n '[--tag-fg:var(--color-gold-11)]',\n '[--tag-subtle-bg:var(--color-gold-alpha-3)]',\n '[--tag-surface-bg:var(--color-gold-alpha-2)]',\n '[--tag-surface-border:var(--color-gold-alpha-6)]',\n '[--tag-outline-border:var(--color-gold-alpha-8)]',\n '[--tag-solid-bg:var(--color-gold-9)]',\n '[--tag-solid-fg:var(--color-white)]',\n ],\n tomato: [\n '[--tag-fg:var(--color-tomato-11)]',\n '[--tag-subtle-bg:var(--color-tomato-alpha-3)]',\n '[--tag-surface-bg:var(--color-tomato-alpha-2)]',\n '[--tag-surface-border:var(--color-tomato-alpha-6)]',\n '[--tag-outline-border:var(--color-tomato-alpha-8)]',\n '[--tag-solid-bg:var(--color-tomato-9)]',\n '[--tag-solid-fg:var(--color-white)]',\n ],\n ruby: [\n '[--tag-fg:var(--color-ruby-11)]',\n '[--tag-subtle-bg:var(--color-ruby-alpha-3)]',\n '[--tag-surface-bg:var(--color-ruby-alpha-2)]',\n '[--tag-surface-border:var(--color-ruby-alpha-6)]',\n '[--tag-outline-border:var(--color-ruby-alpha-8)]',\n '[--tag-solid-bg:var(--color-ruby-9)]',\n '[--tag-solid-fg:var(--color-white)]',\n ],\n crimson: [\n '[--tag-fg:var(--color-crimson-11)]',\n '[--tag-subtle-bg:var(--color-crimson-alpha-3)]',\n '[--tag-surface-bg:var(--color-crimson-alpha-2)]',\n '[--tag-surface-border:var(--color-crimson-alpha-6)]',\n '[--tag-outline-border:var(--color-crimson-alpha-8)]',\n '[--tag-solid-bg:var(--color-crimson-9)]',\n '[--tag-solid-fg:var(--color-white)]',\n ],\n plum: [\n '[--tag-fg:var(--color-plum-11)]',\n '[--tag-subtle-bg:var(--color-plum-alpha-3)]',\n '[--tag-surface-bg:var(--color-plum-alpha-2)]',\n '[--tag-surface-border:var(--color-plum-alpha-6)]',\n '[--tag-outline-border:var(--color-plum-alpha-8)]',\n '[--tag-solid-bg:var(--color-plum-9)]',\n '[--tag-solid-fg:var(--color-white)]',\n ],\n violet: [\n '[--tag-fg:var(--color-violet-11)]',\n '[--tag-subtle-bg:var(--color-violet-alpha-3)]',\n '[--tag-surface-bg:var(--color-violet-alpha-2)]',\n '[--tag-surface-border:var(--color-violet-alpha-6)]',\n '[--tag-outline-border:var(--color-violet-alpha-8)]',\n '[--tag-solid-bg:var(--color-violet-9)]',\n '[--tag-solid-fg:var(--color-white)]',\n ],\n iris: [\n '[--tag-fg:var(--color-iris-11)]',\n '[--tag-subtle-bg:var(--color-iris-alpha-3)]',\n '[--tag-surface-bg:var(--color-iris-alpha-2)]',\n '[--tag-surface-border:var(--color-iris-alpha-6)]',\n '[--tag-outline-border:var(--color-iris-alpha-8)]',\n '[--tag-solid-bg:var(--color-iris-9)]',\n '[--tag-solid-fg:var(--color-white)]',\n ],\n indigo: [\n '[--tag-fg:var(--color-indigo-11)]',\n '[--tag-subtle-bg:var(--color-indigo-alpha-3)]',\n '[--tag-surface-bg:var(--color-indigo-alpha-2)]',\n '[--tag-surface-border:var(--color-indigo-alpha-6)]',\n '[--tag-outline-border:var(--color-indigo-alpha-8)]',\n '[--tag-solid-bg:var(--color-indigo-9)]',\n '[--tag-solid-fg:var(--color-white)]',\n ],\n sky: [\n '[--tag-fg:var(--color-sky-11)]',\n '[--tag-subtle-bg:var(--color-sky-alpha-3)]',\n '[--tag-surface-bg:var(--color-sky-alpha-2)]',\n '[--tag-surface-border:var(--color-sky-alpha-6)]',\n '[--tag-outline-border:var(--color-sky-alpha-8)]',\n '[--tag-solid-bg:var(--color-sky-9)]',\n '[--tag-solid-fg:var(--color-black)]',\n ],\n mint: [\n '[--tag-fg:var(--color-mint-11)]',\n '[--tag-subtle-bg:var(--color-mint-alpha-3)]',\n '[--tag-surface-bg:var(--color-mint-alpha-2)]',\n '[--tag-surface-border:var(--color-mint-alpha-6)]',\n '[--tag-outline-border:var(--color-mint-alpha-8)]',\n '[--tag-solid-bg:var(--color-mint-9)]',\n '[--tag-solid-fg:var(--color-black)]',\n ],\n lime: [\n '[--tag-fg:var(--color-lime-11)]',\n '[--tag-subtle-bg:var(--color-lime-alpha-3)]',\n '[--tag-surface-bg:var(--color-lime-alpha-2)]',\n '[--tag-surface-border:var(--color-lime-alpha-6)]',\n '[--tag-outline-border:var(--color-lime-alpha-8)]',\n '[--tag-solid-bg:var(--color-lime-9)]',\n '[--tag-solid-fg:var(--color-black)]',\n ],\n jade: [\n '[--tag-fg:var(--color-jade-11)]',\n '[--tag-subtle-bg:var(--color-jade-alpha-3)]',\n '[--tag-surface-bg:var(--color-jade-alpha-2)]',\n '[--tag-surface-border:var(--color-jade-alpha-6)]',\n '[--tag-outline-border:var(--color-jade-alpha-8)]',\n '[--tag-solid-bg:var(--color-jade-9)]',\n '[--tag-solid-fg:var(--color-white)]',\n ],\n grass: [\n '[--tag-fg:var(--color-grass-11)]',\n '[--tag-subtle-bg:var(--color-grass-alpha-3)]',\n '[--tag-surface-bg:var(--color-grass-alpha-2)]',\n '[--tag-surface-border:var(--color-grass-alpha-6)]',\n '[--tag-outline-border:var(--color-grass-alpha-8)]',\n '[--tag-solid-bg:var(--color-grass-9)]',\n '[--tag-solid-fg:var(--color-white)]',\n ],\n },\n size: {\n sm: [\n '[--tag-close-size:--spacing(4)]',\n 'h-5',\n 'px-1.5',\n 'gap-1',\n 'text-xs',\n '[&_svg]:size-3',\n ],\n md: [\n '[--tag-close-size:--spacing(5)]',\n 'h-6',\n 'px-2',\n 'gap-1',\n 'text-xs',\n '[&_svg]:size-3.5',\n ],\n lg: [\n '[--tag-close-size:--spacing(5)]',\n 'h-7',\n 'px-2.5',\n 'gap-1.5',\n 'text-sm',\n '[&_svg]:size-4',\n ],\n },\n variant: {\n // A borda transparente fica para as variantes terem a mesma medida.\n subtle: [\n 'border-transparent',\n 'bg-(--tag-subtle-bg)',\n 'text-(--tag-fg)',\n ],\n surface: [\n 'border-(--tag-surface-border)',\n 'bg-(--tag-surface-bg)',\n 'text-(--tag-fg)',\n ],\n outline: ['border-(--tag-outline-border)', 'text-(--tag-fg)'],\n solid: [\n 'border-transparent',\n 'bg-(--tag-solid-bg)',\n 'text-(--tag-solid-fg)',\n ],\n },\n },\n defaultVariants: {\n colorScheme: tagRootDefaultVariants.colorScheme,\n size: tagRootDefaultVariants.size,\n variant: tagRootDefaultVariants.variant,\n },\n },\n);\n"],"mappings":";;AA0BA,MAAa,yBAAoD;CAC/D,aAAa;CACb,MAAM;CACN,SAAS;AACX;;;;;;;AAQA,MAAa,kBAAkB,IAC7B;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;IACF;IACA;IACA;IACA;IACA;IACA;GACF;GACA,IAAI;IACF;IACA;IACA;IACA;IACA;IACA;GACF;GACA,IAAI;IACF;IACA;IACA;IACA;IACA;IACA;GACF;EACF;EACA,SAAS;GAEP,QAAQ;IACN;IACA;IACA;GACF;GACA,SAAS;IACP;IACA;IACA;GACF;GACA,SAAS,CAAC,iCAAiC,iBAAiB;GAC5D,OAAO;IACL;IACA;IACA;GACF;EACF;CACF;CACA,iBAAiB;EACf,aAAa,uBAAuB;EACpC,MAAM,uBAAuB;EAC7B,SAAS,uBAAuB;CAClC;AACF,CACF"}
@@ -10,8 +10,8 @@ export type AlertIndicatorProps = useRender.ComponentProps<'div'>;
10
10
  *
11
11
  * Fica com `aria-hidden`: o ícone repete o que o texto diz, e o `status` não é anunciado por ele.
12
12
  *
13
- * Origem do `Toast.Indicator`, que o copia (tabela no README de `feedback`). Uma mudança aqui vale
14
- * para a cópia na mesma rodada.
13
+ * Origem do `Toast.Indicator` e do `AlertDialog.Indicator`, que o copiam (tabela no README de
14
+ * `feedback`). Uma mudança aqui vale para as cópias na mesma rodada.
15
15
  */
16
16
  export declare const AlertIndicator: {
17
17
  (props: AlertIndicatorProps): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
@@ -13,8 +13,8 @@ import { CheckCircleIcon, InfoIcon, WarningCircleIcon, WarningIcon } from "@phos
13
13
  *
14
14
  * Fica com `aria-hidden`: o ícone repete o que o texto diz, e o `status` não é anunciado por ele.
15
15
  *
16
- * Origem do `Toast.Indicator`, que o copia (tabela no README de `feedback`). Uma mudança aqui vale
17
- * para a cópia na mesma rodada.
16
+ * Origem do `Toast.Indicator` e do `AlertDialog.Indicator`, que o copiam (tabela no README de
17
+ * `feedback`). Uma mudança aqui vale para as cópias na mesma rodada.
18
18
  */
19
19
  const AlertIndicator = (props) => {
20
20
  const { render, className, children, ...rest } = props;
@@ -1 +1 @@
1
- {"version":3,"file":"alert-indicator.js","names":[],"sources":["../../../../src/components/feedback/alert/alert-indicator.tsx"],"sourcesContent":["import { mergeProps, useRender } from '@base-ui/react';\nimport {\n CheckCircleIcon,\n InfoIcon,\n WarningCircleIcon,\n WarningIcon,\n} from '@phosphor-icons/react';\nimport type React from 'react';\nimport { Icon } from '#components/display/icon';\nimport { mergeTwClassNames } from '#utils';\nimport {\n type AlertVariants,\n alertDefaultVariants,\n useAlertContext,\n} from './use-alert-context';\n\nexport type AlertIndicatorProps = useRender.ComponentProps<'div'>;\n\n/**\n * Ícone do alerta, na cor do `status`. Sem filhos, mostra o ícone do `status`, pelo `Icon` da lib;\n * com filhos (outro ícone, um `Spinner`), usa os filhos, e um ícone próprio entra pelo `Icon` para\n * ter o mesmo traço. O `svg` mede `1em` (20px), numa caixa da altura da linha do título, para ficar\n * alinhado à primeira linha.\n *\n * Fica com `aria-hidden`: o ícone repete o que o texto diz, e o `status` não é anunciado por ele.\n *\n * Origem do `Toast.Indicator`, que o copia (tabela no README de `feedback`). Uma mudança aqui vale\n * para a cópia na mesma rodada.\n */\nexport const AlertIndicator = (props: AlertIndicatorProps) => {\n const { render, className, children, ...rest } = props;\n\n const { status = alertDefaultVariants.status } = useAlertContext();\n\n const StatusIcon = statusIcons[status];\n\n const baseProps = {\n 'data-component': 'Alert.Indicator',\n 'aria-hidden': true,\n children: children ?? <Icon render={<StatusIcon />} />,\n className: mergeTwClassNames(\n [\n 'flex',\n 'items-center',\n 'justify-center',\n 'shrink-0',\n\n 'h-5',\n\n 'text-(--alert-fg)',\n 'text-xl',\n // Sem entrelinha, um emoji ocuparia mais altura que o ícone.\n 'leading-none',\n\n '[&_svg]:size-[1em]',\n ],\n className,\n ),\n };\n\n return useRender({\n render,\n defaultTagName: 'div',\n props: mergeProps(baseProps, rest),\n });\n};\n\nAlertIndicator.displayName = 'Alert.Indicator';\n\nconst statusIcons: Record<\n Required<AlertVariants>['status'],\n React.ComponentType\n> = {\n neutral: InfoIcon,\n info: InfoIcon,\n success: CheckCircleIcon,\n warning: WarningIcon,\n error: WarningCircleIcon,\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;AA6BA,MAAa,kBAAkB,UAA+B;CAC5D,MAAM,EAAE,QAAQ,WAAW,UAAU,GAAG,SAAS;CAEjD,MAAM,EAAE,SAAS,qBAAqB,WAAW,gBAAgB;CAEjE,MAAM,aAAa,YAAY;CAE/B,MAAM,YAAY;EAChB,kBAAkB;EAClB,eAAe;EACf,UAAU,YAAY,oBAAC,MAAD,EAAM,QAAQ,oBAAC,YAAD,CAAa,CAAA,EAAI,CAAA;EACrD,WAAW,kBACT;GACE;GACA;GACA;GACA;GAEA;GAEA;GACA;GAEA;GAEA;EACF,GACA,SACF;CACF;CAEA,OAAO,UAAU;EACf;EACA,gBAAgB;EAChB,OAAO,WAAW,WAAW,IAAI;CACnC,CAAC;AACH;AAEA,eAAe,cAAc;AAE7B,MAAM,cAGF;CACF,SAAS;CACT,MAAM;CACN,SAAS;CACT,SAAS;CACT,OAAO;AACT"}
1
+ {"version":3,"file":"alert-indicator.js","names":[],"sources":["../../../../src/components/feedback/alert/alert-indicator.tsx"],"sourcesContent":["import { mergeProps, useRender } from '@base-ui/react';\nimport {\n CheckCircleIcon,\n InfoIcon,\n WarningCircleIcon,\n WarningIcon,\n} from '@phosphor-icons/react';\nimport type React from 'react';\nimport { Icon } from '#components/display/icon';\nimport { mergeTwClassNames } from '#utils';\nimport {\n type AlertVariants,\n alertDefaultVariants,\n useAlertContext,\n} from './use-alert-context';\n\nexport type AlertIndicatorProps = useRender.ComponentProps<'div'>;\n\n/**\n * Ícone do alerta, na cor do `status`. Sem filhos, mostra o ícone do `status`, pelo `Icon` da lib;\n * com filhos (outro ícone, um `Spinner`), usa os filhos, e um ícone próprio entra pelo `Icon` para\n * ter o mesmo traço. O `svg` mede `1em` (20px), numa caixa da altura da linha do título, para ficar\n * alinhado à primeira linha.\n *\n * Fica com `aria-hidden`: o ícone repete o que o texto diz, e o `status` não é anunciado por ele.\n *\n * Origem do `Toast.Indicator` e do `AlertDialog.Indicator`, que o copiam (tabela no README de\n * `feedback`). Uma mudança aqui vale para as cópias na mesma rodada.\n */\nexport const AlertIndicator = (props: AlertIndicatorProps) => {\n const { render, className, children, ...rest } = props;\n\n const { status = alertDefaultVariants.status } = useAlertContext();\n\n const StatusIcon = statusIcons[status];\n\n const baseProps = {\n 'data-component': 'Alert.Indicator',\n 'aria-hidden': true,\n children: children ?? <Icon render={<StatusIcon />} />,\n className: mergeTwClassNames(\n [\n 'flex',\n 'items-center',\n 'justify-center',\n 'shrink-0',\n\n 'h-5',\n\n 'text-(--alert-fg)',\n 'text-xl',\n // Sem entrelinha, um emoji ocuparia mais altura que o ícone.\n 'leading-none',\n\n '[&_svg]:size-[1em]',\n ],\n className,\n ),\n };\n\n return useRender({\n render,\n defaultTagName: 'div',\n props: mergeProps(baseProps, rest),\n });\n};\n\nAlertIndicator.displayName = 'Alert.Indicator';\n\nconst statusIcons: Record<\n Required<AlertVariants>['status'],\n React.ComponentType\n> = {\n neutral: InfoIcon,\n info: InfoIcon,\n success: CheckCircleIcon,\n warning: WarningIcon,\n error: WarningCircleIcon,\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;AA6BA,MAAa,kBAAkB,UAA+B;CAC5D,MAAM,EAAE,QAAQ,WAAW,UAAU,GAAG,SAAS;CAEjD,MAAM,EAAE,SAAS,qBAAqB,WAAW,gBAAgB;CAEjE,MAAM,aAAa,YAAY;CAE/B,MAAM,YAAY;EAChB,kBAAkB;EAClB,eAAe;EACf,UAAU,YAAY,oBAAC,MAAD,EAAM,QAAQ,oBAAC,YAAD,CAAa,CAAA,EAAI,CAAA;EACrD,WAAW,kBACT;GACE;GACA;GACA;GACA;GAEA;GAEA;GACA;GAEA;GAEA;EACF,GACA,SACF;CACF;CAEA,OAAO,UAAU;EACf;EACA,gBAAgB;EAChB,OAAO,WAAW,WAAW,IAAI;CACnC,CAAC;AACH;AAEA,eAAe,cAAc;AAE7B,MAAM,cAGF;CACF,SAAS;CACT,MAAM;CACN,SAAS;CACT,SAAS;CACT,OAAO;AACT"}
@@ -9,7 +9,7 @@ export type CenterAbsoluteVariants = {
9
9
  };
10
10
  export declare const centerAbsoluteDefaultVariants: Required<CenterAbsoluteVariants>;
11
11
  export declare const centerAbsoluteVariants: (props?: ({
12
- axis?: "vertical" | "horizontal" | "both" | null | undefined;
12
+ axis?: "both" | "horizontal" | "vertical" | null | undefined;
13
13
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
14
14
  //#endregion
15
15
  //# sourceMappingURL=center-absolute-variants.d.ts.map
@@ -1,6 +1,17 @@
1
+ import { MergeOverride } from "@lucasbernardosn/ts-utils";
1
2
  import { ScrollArea } from "@base-ui/react/scroll-area";
2
3
  //#region src/components/layout/scroll-area/scroll-area-root.d.ts
3
- export type ScrollAreaRootProps = ScrollArea.Root.Props;
4
+ export type ScrollAreaRootProps = MergeOverride<ScrollArea.Root.Props, {
5
+ /**
6
+ * Quando as barras aparecem. Com `'auto'`, no hover e na rolagem. Com `'always'`, ficam sempre
7
+ * visíveis com mouse, com a trilha de 16px; no toque, continuam sumindo. Serve a uma área de
8
+ * dados, em que a barra mostra a posição e que há mais conteúdo ao lado. Vale para as barras
9
+ * filhas diretas do `Root`, não para as de um `ScrollArea` aninhado.
10
+ *
11
+ * @default 'auto'
12
+ */
13
+ scrollbars?: 'auto' | 'always';
14
+ }>;
4
15
  export type ScrollAreaRootState = ScrollArea.Root.State;
5
16
  /**
6
17
  * Agrupa as partes e serve de referência de posição para as barras. **Não declara tamanho**:
@@ -14,9 +25,11 @@ export type ScrollAreaRootState = ScrollArea.Root.State;
14
25
  *
15
26
  * | Variável | Controla | Padrão |
16
27
  * | --- | --- | --- |
17
- * | `--scroll-area-scrollbar-size` | espessura da trilha | 4px no toque, 6px com mouse |
28
+ * | `--scroll-area-scrollbar-size` | espessura da trilha | 4px no toque, 12px com mouse, 16px com mouse e `scrollbars="always"` |
18
29
  * | `--scroll-area-scrollbar-inset` | recuo da trilha até a borda | 2px |
19
- * | `--scroll-area-thumb-size` | espessura do polegar na trilha | a trilha toda |
30
+ * | `--scroll-area-thumb-size` | espessura do polegar na trilha | a trilha toda no toque, 6px com mouse |
31
+ *
32
+ * A visibilidade e a espessura de `scrollbars="always"` são explicadas no `Scrollbar`.
20
33
  *
21
34
  * Como funciona:
22
35
  * 1. o `Root` zera as três com `initial` — assim um `ScrollArea` aninhado não herda os valores
@@ -14,9 +14,11 @@ import { ScrollArea } from "@base-ui/react/scroll-area";
14
14
  *
15
15
  * | Variável | Controla | Padrão |
16
16
  * | --- | --- | --- |
17
- * | `--scroll-area-scrollbar-size` | espessura da trilha | 4px no toque, 6px com mouse |
17
+ * | `--scroll-area-scrollbar-size` | espessura da trilha | 4px no toque, 12px com mouse, 16px com mouse e `scrollbars="always"` |
18
18
  * | `--scroll-area-scrollbar-inset` | recuo da trilha até a borda | 2px |
19
- * | `--scroll-area-thumb-size` | espessura do polegar na trilha | a trilha toda |
19
+ * | `--scroll-area-thumb-size` | espessura do polegar na trilha | a trilha toda no toque, 6px com mouse |
20
+ *
21
+ * A visibilidade e a espessura de `scrollbars="always"` são explicadas no `Scrollbar`.
20
22
  *
21
23
  * Como funciona:
22
24
  * 1. o `Root` zera as três com `initial` — assim um `ScrollArea` aninhado não herda os valores
@@ -32,9 +34,10 @@ import { ScrollArea } from "@base-ui/react/scroll-area";
32
34
  * ```
33
35
  */
34
36
  const ScrollAreaRoot = (props) => {
35
- const { className, ...rest } = props;
37
+ const { className, scrollbars, ...rest } = props;
36
38
  return /* @__PURE__ */ jsx(ScrollArea.Root, {
37
39
  "data-component": "ScrollArea.Root",
40
+ "data-scrollbars": scrollbars === "always" ? "always" : void 0,
38
41
  className: mergeStateClassNames([
39
42
  "overflow-hidden",
40
43
  "[--scroll-area-scrollbar-size:initial]",
@@ -1 +1 @@
1
- {"version":3,"file":"scroll-area-root.js","names":["BaseScrollArea"],"sources":["../../../../src/components/layout/scroll-area/scroll-area-root.tsx"],"sourcesContent":["import { ScrollArea as BaseScrollArea } from '@base-ui/react/scroll-area';\nimport { mergeStateClassNames } from '#utils';\n\nexport type ScrollAreaRootProps = BaseScrollArea.Root.Props;\n\nexport type ScrollAreaRootState = BaseScrollArea.Root.State;\n\n/**\n * Agrupa as partes e serve de referência de posição para as barras. **Não declara tamanho**:\n * com altura definida a área rola; sem altura ela cresce com o conteúdo e quem rola é o\n * contêiner de cima. Altura e largura (`h-72`, `flex-1`, `md:h-52`) ficam com quem usa.\n *\n * #### Personalização das barras\n *\n * Por variável CSS na `className` do `Root`. As barras herdam — inclusive as de\n * `ScrollArea.Bars`, que não recebe props.\n *\n * | Variável | Controla | Padrão |\n * | --- | --- | --- |\n * | `--scroll-area-scrollbar-size` | espessura da trilha | 4px no toque, 6px com mouse |\n * | `--scroll-area-scrollbar-inset` | recuo da trilha até a borda | 2px |\n * | `--scroll-area-thumb-size` | espessura do polegar na trilha | a trilha toda |\n *\n * Como funciona:\n * 1. o `Root` zera as três com `initial` — assim um `ScrollArea` aninhado não herda os valores\n * do de fora;\n * 2. `Scrollbar` e `Thumb` leem cada uma com um padrão no `var()`: é ali que os valores padrão\n * moram, e eles valem enquanto a variável estiver zerada;\n * 3. a classe de quem usa substitui o `initial`, porque o `mergeTwClassNames` descarta a classe\n * conflitante anterior.\n *\n * @example\n * ```tsx\n * <ScrollArea.Root className=\"h-72 [--scroll-area-scrollbar-size:--spacing(2.5)]\">\n * ```\n */\nexport const ScrollAreaRoot = (props: ScrollAreaRootProps) => {\n const { className, ...rest } = props;\n\n return (\n <BaseScrollArea.Root\n data-component=\"ScrollArea.Root\"\n className={mergeStateClassNames(\n [\n // Zera o piso automático de item flex/grid: `flex-1` basta para encolher e rolar, sem\n // `min-h-0`/`min-w-0`. Também recorta os cantos do `rounded-*` e impede que um\n // decorativo vazado dê scroll à página (no Chrome Android, a barra de endereço passa a\n // recolher). `overflow-clip` recortaria, mas não zera o piso.\n //\n // Custo: sem altura, numa coluna flex que não comporta os filhos, o `Root` encolhe e\n // rola em vez de crescer. `shrink-0` devolve o crescimento.\n 'overflow-hidden',\n\n // Ver \"Personalização das barras\" acima.\n '[--scroll-area-scrollbar-size:initial]',\n '[--scroll-area-scrollbar-inset:initial]',\n '[--scroll-area-thumb-size:initial]',\n\n // Anel do `Viewport` (`focusRing`), pintado aqui porque a máscara do `fade` apagaria o\n // que o viewport pintasse. A utility dispara pelo `data-focus-ring` do filho.\n 'focus-ring-inside',\n 'ring-gray-12',\n ],\n className,\n )}\n {...rest}\n />\n );\n};\n\nScrollAreaRoot.displayName = 'ScrollArea.Root';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCA,MAAa,kBAAkB,UAA+B;CAC5D,MAAM,EAAE,WAAW,GAAG,SAAS;CAE/B,OACE,oBAACA,WAAe,MAAhB;EACE,kBAAe;EACf,WAAW,qBACT;GAQE;GAGA;GACA;GACA;GAIA;GACA;EACF,GACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,eAAe,cAAc"}
1
+ {"version":3,"file":"scroll-area-root.js","names":["BaseScrollArea"],"sources":["../../../../src/components/layout/scroll-area/scroll-area-root.tsx"],"sourcesContent":["import { ScrollArea as BaseScrollArea } from '@base-ui/react/scroll-area';\nimport type { MergeOverride } from '@lucasbernardosn/ts-utils';\nimport { mergeStateClassNames } from '#utils';\n\nexport type ScrollAreaRootProps = MergeOverride<\n BaseScrollArea.Root.Props,\n {\n /**\n * Quando as barras aparecem. Com `'auto'`, no hover e na rolagem. Com `'always'`, ficam sempre\n * visíveis com mouse, com a trilha de 16px; no toque, continuam sumindo. Serve a uma área de\n * dados, em que a barra mostra a posição e que há mais conteúdo ao lado. Vale para as barras\n * filhas diretas do `Root`, não para as de um `ScrollArea` aninhado.\n *\n * @default 'auto'\n */\n scrollbars?: 'auto' | 'always';\n }\n>;\n\nexport type ScrollAreaRootState = BaseScrollArea.Root.State;\n\n/**\n * Agrupa as partes e serve de referência de posição para as barras. **Não declara tamanho**:\n * com altura definida a área rola; sem altura ela cresce com o conteúdo e quem rola é o\n * contêiner de cima. Altura e largura (`h-72`, `flex-1`, `md:h-52`) ficam com quem usa.\n *\n * #### Personalização das barras\n *\n * Por variável CSS na `className` do `Root`. As barras herdam — inclusive as de\n * `ScrollArea.Bars`, que não recebe props.\n *\n * | Variável | Controla | Padrão |\n * | --- | --- | --- |\n * | `--scroll-area-scrollbar-size` | espessura da trilha | 4px no toque, 12px com mouse, 16px com mouse e `scrollbars=\"always\"` |\n * | `--scroll-area-scrollbar-inset` | recuo da trilha até a borda | 2px |\n * | `--scroll-area-thumb-size` | espessura do polegar na trilha | a trilha toda no toque, 6px com mouse |\n *\n * A visibilidade e a espessura de `scrollbars=\"always\"` são explicadas no `Scrollbar`.\n *\n * Como funciona:\n * 1. o `Root` zera as três com `initial` — assim um `ScrollArea` aninhado não herda os valores\n * do de fora;\n * 2. `Scrollbar` e `Thumb` leem cada uma com um padrão no `var()`: é ali que os valores padrão\n * moram, e eles valem enquanto a variável estiver zerada;\n * 3. a classe de quem usa substitui o `initial`, porque o `mergeTwClassNames` descarta a classe\n * conflitante anterior.\n *\n * @example\n * ```tsx\n * <ScrollArea.Root className=\"h-72 [--scroll-area-scrollbar-size:--spacing(2.5)]\">\n * ```\n */\nexport const ScrollAreaRoot = (props: ScrollAreaRootProps) => {\n const { className, scrollbars, ...rest } = props;\n\n return (\n <BaseScrollArea.Root\n data-component=\"ScrollArea.Root\"\n data-scrollbars={scrollbars === 'always' ? 'always' : undefined}\n className={mergeStateClassNames(\n [\n // Zera o piso automático de item flex/grid: `flex-1` basta para encolher e rolar, sem\n // `min-h-0`/`min-w-0`. Também recorta os cantos do `rounded-*` e impede que um\n // decorativo vazado dê scroll à página (no Chrome Android, a barra de endereço passa a\n // recolher). `overflow-clip` recortaria, mas não zera o piso.\n //\n // Custo: sem altura, numa coluna flex que não comporta os filhos, o `Root` encolhe e\n // rola em vez de crescer. `shrink-0` devolve o crescimento.\n 'overflow-hidden',\n\n // Ver \"Personalização das barras\" acima.\n '[--scroll-area-scrollbar-size:initial]',\n '[--scroll-area-scrollbar-inset:initial]',\n '[--scroll-area-thumb-size:initial]',\n\n // Anel do `Viewport` (`focusRing`), pintado aqui porque a máscara do `fade` apagaria o\n // que o viewport pintasse. A utility dispara pelo `data-focus-ring` do filho.\n 'focus-ring-inside',\n 'ring-gray-12',\n ],\n className,\n )}\n {...rest}\n />\n );\n};\n\nScrollAreaRoot.displayName = 'ScrollArea.Root';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoDA,MAAa,kBAAkB,UAA+B;CAC5D,MAAM,EAAE,WAAW,YAAY,GAAG,SAAS;CAE3C,OACE,oBAACA,WAAe,MAAhB;EACE,kBAAe;EACf,mBAAiB,eAAe,WAAW,WAAW,KAAA;EACtD,WAAW,qBACT;GAQE;GAGA;GACA;GACA;GAIA;GACA;EACF,GACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,eAAe,cAAc"}
@@ -8,6 +8,9 @@ export type ScrollAreaScrollbarState = ScrollArea.Scrollbar.State;
8
8
  *
9
9
  * Espessura e recuo se ajustam pelas variáveis do `Root`, não por classe: um `w-*` passado aqui
10
10
  * perde para as regras `data-[orientation=…]:`, que têm especificidade maior.
11
+ *
12
+ * Com `scrollbars="always"` no `Root`, as barras filhas diretas dele ficam sempre visíveis com
13
+ * mouse, com a trilha de 16px; no toque, seguem o comportamento padrão.
11
14
  */
12
15
  export declare const ScrollAreaScrollbar: {
13
16
  (props: ScrollAreaScrollbarProps): import("react").JSX.Element;
@@ -8,6 +8,9 @@ import { ScrollArea } from "@base-ui/react/scroll-area";
8
8
  *
9
9
  * Espessura e recuo se ajustam pelas variáveis do `Root`, não por classe: um `w-*` passado aqui
10
10
  * perde para as regras `data-[orientation=…]:`, que têm especificidade maior.
11
+ *
12
+ * Com `scrollbars="always"` no `Root`, as barras filhas diretas dele ficam sempre visíveis com
13
+ * mouse, com a trilha de 16px; no toque, seguem o comportamento padrão.
11
14
  */
12
15
  const ScrollAreaScrollbar = (props) => {
13
16
  const { className, ...rest } = props;
@@ -19,9 +22,13 @@ const ScrollAreaScrollbar = (props) => {
19
22
  "data-[orientation=horizontal]:items-center",
20
23
  "m-(--scroll-area-scrollbar-inset,--spacing(0.5))",
21
24
  "data-[orientation=vertical]:w-(--scroll-area-scrollbar-size,--spacing(1))",
22
- "pointer-fine:data-[orientation=vertical]:w-(--scroll-area-scrollbar-size,--spacing(1.5))",
25
+ "pointer-fine:data-[orientation=vertical]:w-(--scroll-area-scrollbar-size,--spacing(3))",
23
26
  "data-[orientation=horizontal]:h-(--scroll-area-scrollbar-size,--spacing(1))",
24
- "pointer-fine:data-[orientation=horizontal]:h-(--scroll-area-scrollbar-size,--spacing(1.5))",
27
+ "pointer-fine:data-[orientation=horizontal]:h-(--scroll-area-scrollbar-size,--spacing(3))",
28
+ "pointer-fine:[[data-scrollbars=always]>&]:opacity-100",
29
+ "pointer-fine:[[data-scrollbars=always]>&]:pointer-events-auto",
30
+ "pointer-fine:[[data-scrollbars=always]>&]:data-[orientation=vertical]:w-(--scroll-area-scrollbar-size,--spacing(4))",
31
+ "pointer-fine:[[data-scrollbars=always]>&]:data-[orientation=horizontal]:h-(--scroll-area-scrollbar-size,--spacing(4))",
25
32
  "before:absolute",
26
33
  "before:content-['']",
27
34
  "data-[orientation=vertical]:before:inset-y-0",
@@ -1 +1 @@
1
- {"version":3,"file":"scroll-area-scrollbar.js","names":["BaseScrollArea"],"sources":["../../../../src/components/layout/scroll-area/scroll-area-scrollbar.tsx"],"sourcesContent":["import { ScrollArea as BaseScrollArea } from '@base-ui/react/scroll-area';\nimport { mergeStateClassNames } from '#utils';\n\nexport type ScrollAreaScrollbarProps = BaseScrollArea.Scrollbar.Props;\n\nexport type ScrollAreaScrollbarState = BaseScrollArea.Scrollbar.State;\n\n/**\n * A trilha do polegar, transparente e sobreposta ao conteúdo. O Base UI a posiciona inline\n * (`absolute` na borda do `Root`) e só a monta quando o eixo dela transborda.\n *\n * Espessura e recuo se ajustam pelas variáveis do `Root`, não por classe: um `w-*` passado aqui\n * perde para as regras `data-[orientation=…]:`, que têm especificidade maior.\n */\nexport const ScrollAreaScrollbar = (props: ScrollAreaScrollbarProps) => {\n const { className, ...rest } = props;\n\n return (\n <BaseScrollArea.Scrollbar\n data-component=\"ScrollArea.Scrollbar\"\n className={mergeStateClassNames(\n [\n // Centraliza o polegar quando ele é mais fino que a trilha.\n 'flex',\n 'data-[orientation=vertical]:justify-center',\n 'data-[orientation=horizontal]:items-center',\n\n 'm-(--scroll-area-scrollbar-inset,--spacing(0.5))',\n\n // ESPESSURA — fina no toque, onde a barra só indica posição; mais grossa com mouse,\n // onde vira alvo de arrasto. As duas regras leem a mesma variável, então uma classe no\n // `Root` vale para os dois. Uma regra por orientação porque o comprimento vem do\n // `top`/`bottom` que o Base UI escreve — uma altura explícita o desligaria.\n 'data-[orientation=vertical]:w-(--scroll-area-scrollbar-size,--spacing(1))',\n 'pointer-fine:data-[orientation=vertical]:w-(--scroll-area-scrollbar-size,--spacing(1.5))',\n\n 'data-[orientation=horizontal]:h-(--scroll-area-scrollbar-size,--spacing(1))',\n 'pointer-fine:data-[orientation=horizontal]:h-(--scroll-area-scrollbar-size,--spacing(1.5))',\n\n // ÁREA DE TOQUE — pseudo-elemento de 12px, maior que a trilha visível; herda o\n // `pointer-events` e some junto com ela. Cresce só para dentro: para fora, daria\n // scroll à página. O `overflow-hidden` do `Root` seguraria, mas não se depende dele.\n 'before:absolute',\n \"before:content-['']\",\n\n 'data-[orientation=vertical]:before:inset-y-0',\n 'data-[orientation=vertical]:before:inset-e-0',\n 'data-[orientation=vertical]:before:w-3',\n\n 'data-[orientation=horizontal]:before:inset-x-0',\n 'data-[orientation=horizontal]:before:bottom-0',\n 'data-[orientation=horizontal]:before:h-3',\n\n // VISIBILIDADE — invisível e sem capturar clique em repouso. Aparece na hora e some\n // com atraso: os estados zeram `delay`/`duration` na entrada, e a base volta a valer\n // na saída.\n 'opacity-0',\n 'pointer-events-none',\n 'transition-opacity',\n 'duration-150',\n 'ease-exit',\n 'delay-300',\n\n 'data-hovering:opacity-100',\n 'data-hovering:pointer-events-auto',\n 'data-hovering:ease-enter',\n 'data-hovering:delay-0',\n\n 'data-scrolling:opacity-100',\n 'data-scrolling:pointer-events-auto',\n 'data-scrolling:duration-0',\n 'data-scrolling:delay-0',\n ],\n className,\n )}\n {...rest}\n />\n );\n};\n\nScrollAreaScrollbar.displayName = 'ScrollArea.Scrollbar';\n"],"mappings":";;;;;;;;;;;AAcA,MAAa,uBAAuB,UAAoC;CACtE,MAAM,EAAE,WAAW,GAAG,SAAS;CAE/B,OACE,oBAACA,WAAe,WAAhB;EACE,kBAAe;EACf,WAAW,qBACT;GAEE;GACA;GACA;GAEA;GAMA;GACA;GAEA;GACA;GAKA;GACA;GAEA;GACA;GACA;GAEA;GACA;GACA;GAKA;GACA;GACA;GACA;GACA;GACA;GAEA;GACA;GACA;GACA;GAEA;GACA;GACA;GACA;EACF,GACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,oBAAoB,cAAc"}
1
+ {"version":3,"file":"scroll-area-scrollbar.js","names":["BaseScrollArea"],"sources":["../../../../src/components/layout/scroll-area/scroll-area-scrollbar.tsx"],"sourcesContent":["import { ScrollArea as BaseScrollArea } from '@base-ui/react/scroll-area';\nimport { mergeStateClassNames } from '#utils';\n\nexport type ScrollAreaScrollbarProps = BaseScrollArea.Scrollbar.Props;\n\nexport type ScrollAreaScrollbarState = BaseScrollArea.Scrollbar.State;\n\n/**\n * A trilha do polegar, transparente e sobreposta ao conteúdo. O Base UI a posiciona inline\n * (`absolute` na borda do `Root`) e só a monta quando o eixo dela transborda.\n *\n * Espessura e recuo se ajustam pelas variáveis do `Root`, não por classe: um `w-*` passado aqui\n * perde para as regras `data-[orientation=…]:`, que têm especificidade maior.\n *\n * Com `scrollbars=\"always\"` no `Root`, as barras filhas diretas dele ficam sempre visíveis com\n * mouse, com a trilha de 16px; no toque, seguem o comportamento padrão.\n */\nexport const ScrollAreaScrollbar = (props: ScrollAreaScrollbarProps) => {\n const { className, ...rest } = props;\n\n return (\n <BaseScrollArea.Scrollbar\n data-component=\"ScrollArea.Scrollbar\"\n className={mergeStateClassNames(\n [\n // Centraliza o polegar quando ele é mais fino que a trilha.\n 'flex',\n 'data-[orientation=vertical]:justify-center',\n 'data-[orientation=horizontal]:items-center',\n\n 'm-(--scroll-area-scrollbar-inset,--spacing(0.5))',\n\n // ESPESSURA — fina no toque, onde a barra só indica posição; com mouse, 12px, onde vira\n // alvo de arrasto e o polegar tem espaço para engrossar (ver `ScrollArea.Thumb`). As duas regras leem a mesma variável, então uma classe no\n // `Root` vale para os dois. Uma regra por orientação porque o comprimento vem do\n // `top`/`bottom` que o Base UI escreve — uma altura explícita o desligaria.\n 'data-[orientation=vertical]:w-(--scroll-area-scrollbar-size,--spacing(1))',\n 'pointer-fine:data-[orientation=vertical]:w-(--scroll-area-scrollbar-size,--spacing(3))',\n\n 'data-[orientation=horizontal]:h-(--scroll-area-scrollbar-size,--spacing(1))',\n 'pointer-fine:data-[orientation=horizontal]:h-(--scroll-area-scrollbar-size,--spacing(3))',\n\n // SEMPRE VISÍVEL — `scrollbars=\"always\"` no `Root` (`data-scrollbars`). O seletor\n // `[data-scrollbars=always]>&` vale só para a barra filha direta: um `ScrollArea`\n // aninhado não herda. Ele soma um atributo à especificidade, então vence as regras\n // de espessura acima sem depender da ordem do CSS; e a variável de quem usa vence\n // todas, porque está no `var()`. Sem isso, a trilha fina e a opacidade 0 voltariam.\n 'pointer-fine:[[data-scrollbars=always]>&]:opacity-100',\n 'pointer-fine:[[data-scrollbars=always]>&]:pointer-events-auto',\n 'pointer-fine:[[data-scrollbars=always]>&]:data-[orientation=vertical]:w-(--scroll-area-scrollbar-size,--spacing(4))',\n 'pointer-fine:[[data-scrollbars=always]>&]:data-[orientation=horizontal]:h-(--scroll-area-scrollbar-size,--spacing(4))',\n\n // ÁREA DE TOQUE — pseudo-elemento de 12px, maior que a trilha visível; herda o\n // `pointer-events` e some junto com ela. Cresce só para dentro: para fora, daria\n // scroll à página. O `overflow-hidden` do `Root` seguraria, mas não se depende dele.\n 'before:absolute',\n \"before:content-['']\",\n\n 'data-[orientation=vertical]:before:inset-y-0',\n 'data-[orientation=vertical]:before:inset-e-0',\n 'data-[orientation=vertical]:before:w-3',\n\n 'data-[orientation=horizontal]:before:inset-x-0',\n 'data-[orientation=horizontal]:before:bottom-0',\n 'data-[orientation=horizontal]:before:h-3',\n\n // VISIBILIDADE — invisível e sem capturar clique em repouso. Aparece na hora e some\n // com atraso: os estados zeram `delay`/`duration` na entrada, e a base volta a valer\n // na saída.\n 'opacity-0',\n 'pointer-events-none',\n 'transition-opacity',\n 'duration-150',\n 'ease-exit',\n 'delay-300',\n\n 'data-hovering:opacity-100',\n 'data-hovering:pointer-events-auto',\n 'data-hovering:ease-enter',\n 'data-hovering:delay-0',\n\n 'data-scrolling:opacity-100',\n 'data-scrolling:pointer-events-auto',\n 'data-scrolling:duration-0',\n 'data-scrolling:delay-0',\n ],\n className,\n )}\n {...rest}\n />\n );\n};\n\nScrollAreaScrollbar.displayName = 'ScrollArea.Scrollbar';\n"],"mappings":";;;;;;;;;;;;;;AAiBA,MAAa,uBAAuB,UAAoC;CACtE,MAAM,EAAE,WAAW,GAAG,SAAS;CAE/B,OACE,oBAACA,WAAe,WAAhB;EACE,kBAAe;EACf,WAAW,qBACT;GAEE;GACA;GACA;GAEA;GAMA;GACA;GAEA;GACA;GAOA;GACA;GACA;GACA;GAKA;GACA;GAEA;GACA;GACA;GAEA;GACA;GACA;GAKA;GACA;GACA;GACA;GACA;GACA;GAEA;GACA;GACA;GACA;GAEA;GACA;GACA;GACA;EACF,GACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,oBAAoB,cAAc"}
@@ -4,7 +4,11 @@ export type ScrollAreaThumbProps = ScrollArea.Thumb.Props;
4
4
  export type ScrollAreaThumbState = ScrollArea.Thumb.State;
5
5
  /**
6
6
  * O polegar que corre na trilha. Espessura em `--scroll-area-thumb-size`, no `Root`; sem ela,
7
- * ocupa a trilha toda. Translúcido para funcionar sobre qualquer fundo.
7
+ * ocupa a trilha toda.
8
+ *
9
+ * Tem três estados, em degraus da escala alpha do cinza, que é translúcida e funciona sobre
10
+ * qualquer fundo: repouso (entre o passo 8 e o 9), hover (10) e arrastando (11). Com mouse, no
11
+ * hover e ao arrastar, ele engrossa para 8px, sem passar da trilha; no toque, mantém a espessura.
8
12
  */
9
13
  export declare const ScrollAreaThumb: {
10
14
  (props: ScrollAreaThumbProps): import("react").JSX.Element;
@@ -4,7 +4,11 @@ import { ScrollArea } from "@base-ui/react/scroll-area";
4
4
  //#region src/components/layout/scroll-area/scroll-area-thumb.tsx
5
5
  /**
6
6
  * O polegar que corre na trilha. Espessura em `--scroll-area-thumb-size`, no `Root`; sem ela,
7
- * ocupa a trilha toda. Translúcido para funcionar sobre qualquer fundo.
7
+ * ocupa a trilha toda.
8
+ *
9
+ * Tem três estados, em degraus da escala alpha do cinza, que é translúcida e funciona sobre
10
+ * qualquer fundo: repouso (entre o passo 8 e o 9), hover (10) e arrastando (11). Com mouse, no
11
+ * hover e ao arrastar, ele engrossa para 8px, sem passar da trilha; no toque, mantém a espessura.
8
12
  */
9
13
  const ScrollAreaThumb = (props) => {
10
14
  const { className, ...rest } = props;
@@ -12,10 +16,16 @@ const ScrollAreaThumb = (props) => {
12
16
  "data-component": "ScrollArea.Thumb",
13
17
  className: mergeStateClassNames([
14
18
  "size-(--scroll-area-thumb-size,100%)",
15
- "rounded-full",
16
- "bg-gray-9/50",
17
- "active:bg-gray-10",
18
- "transition-colors"
19
+ "pointer-fine:size-(--scroll-area-thumb-size,--spacing(1.5))",
20
+ "rounded-xs",
21
+ "bg-[color-mix(in_oklab,var(--color-gray-alpha-8),var(--color-gray-alpha-9))]",
22
+ "hover:bg-gray-alpha-10",
23
+ "active:bg-gray-alpha-11",
24
+ "pointer-fine:hover:[--scroll-area-thumb-size:min(--spacing(2),100%)]",
25
+ "pointer-fine:active:[--scroll-area-thumb-size:min(--spacing(2),100%)]",
26
+ "not-motion-reduced:transition-[background-color,width,height]",
27
+ "not-motion-reduced:duration-150",
28
+ "not-motion-reduced:ease-move"
19
29
  ], className),
20
30
  ...rest
21
31
  });
@@ -1 +1 @@
1
- {"version":3,"file":"scroll-area-thumb.js","names":["BaseScrollArea"],"sources":["../../../../src/components/layout/scroll-area/scroll-area-thumb.tsx"],"sourcesContent":["import { ScrollArea as BaseScrollArea } from '@base-ui/react/scroll-area';\nimport { mergeStateClassNames } from '#utils';\n\nexport type ScrollAreaThumbProps = BaseScrollArea.Thumb.Props;\n\nexport type ScrollAreaThumbState = BaseScrollArea.Thumb.State;\n\n/**\n * O polegar que corre na trilha. Espessura em `--scroll-area-thumb-size`, no `Root`; sem ela,\n * ocupa a trilha toda. Translúcido para funcionar sobre qualquer fundo.\n */\nexport const ScrollAreaThumb = (props: ScrollAreaThumbProps) => {\n const { className, ...rest } = props;\n\n return (\n <BaseScrollArea.Thumb\n data-component=\"ScrollArea.Thumb\"\n className={mergeStateClassNames(\n [\n // Os dois eixos sem olhar a orientação: o principal o Base UI escreve inline, e\n // inline vence classe. Na prática, a classe só define o eixo cruzado.\n 'size-(--scroll-area-thumb-size,100%)',\n 'rounded-full',\n\n // O `active:` dura o arrasto inteiro: o Base UI captura o ponteiro no polegar.\n 'bg-gray-9/50',\n 'active:bg-gray-10',\n 'transition-colors',\n ],\n className,\n )}\n {...rest}\n />\n );\n};\n\nScrollAreaThumb.displayName = 'ScrollArea.Thumb';\n"],"mappings":";;;;;;;;AAWA,MAAa,mBAAmB,UAAgC;CAC9D,MAAM,EAAE,WAAW,GAAG,SAAS;CAE/B,OACE,oBAACA,WAAe,OAAhB;EACE,kBAAe;EACf,WAAW,qBACT;GAGE;GACA;GAGA;GACA;GACA;EACF,GACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,gBAAgB,cAAc"}
1
+ {"version":3,"file":"scroll-area-thumb.js","names":["BaseScrollArea"],"sources":["../../../../src/components/layout/scroll-area/scroll-area-thumb.tsx"],"sourcesContent":["import { ScrollArea as BaseScrollArea } from '@base-ui/react/scroll-area';\nimport { mergeStateClassNames } from '#utils';\n\nexport type ScrollAreaThumbProps = BaseScrollArea.Thumb.Props;\n\nexport type ScrollAreaThumbState = BaseScrollArea.Thumb.State;\n\n/**\n * O polegar que corre na trilha. Espessura em `--scroll-area-thumb-size`, no `Root`; sem ela,\n * ocupa a trilha toda.\n *\n * Tem três estados, em degraus da escala alpha do cinza, que é translúcida e funciona sobre\n * qualquer fundo: repouso (entre o passo 8 e o 9), hover (10) e arrastando (11). Com mouse, no\n * hover e ao arrastar, ele engrossa para 8px, sem passar da trilha; no toque, mantém a espessura.\n */\nexport const ScrollAreaThumb = (props: ScrollAreaThumbProps) => {\n const { className, ...rest } = props;\n\n return (\n <BaseScrollArea.Thumb\n data-component=\"ScrollArea.Thumb\"\n className={mergeStateClassNames(\n [\n // Os dois eixos sem olhar a orientação: o principal o Base UI escreve inline, e\n // inline vence classe. Na prática, a classe só define o eixo cruzado.\n 'size-(--scroll-area-thumb-size,100%)',\n // Com mouse, 6px no meio da trilha de 12px (16px no `always`), com folga para o hover\n // engrossar. No toque, a trilha toda. Também no `var()`: a variável do `Root` vence.\n 'pointer-fine:size-(--scroll-area-thumb-size,--spacing(1.5))',\n 'rounded-xs',\n\n // Os três estados na escala alpha. O `active:` dura o arrasto inteiro: o Base UI\n // captura o ponteiro no polegar.\n 'bg-[color-mix(in_oklab,var(--color-gray-alpha-8),var(--color-gray-alpha-9))]',\n 'hover:bg-gray-alpha-10',\n 'active:bg-gray-alpha-11',\n\n // Com mouse, engrossa para 8px no hover e ao arrastar. A variável é redeclarada no\n // próprio polegar, onde o `size-*` acima a lê; o `min` impede de passar da trilha, e\n // numa barra fina ele só a ocupa toda.\n 'pointer-fine:hover:[--scroll-area-thumb-size:min(--spacing(2),100%)]',\n 'pointer-fine:active:[--scroll-area-thumb-size:min(--spacing(2),100%)]',\n\n // A cor e o tamanho numa transição só, com uma curva só. Vale o `ease-move`: a troca de\n // tamanho é movimento, e a de cor, de 150ms, acompanha sem diferença perceptível.\n 'not-motion-reduced:transition-[background-color,width,height]',\n 'not-motion-reduced:duration-150',\n 'not-motion-reduced:ease-move',\n ],\n className,\n )}\n {...rest}\n />\n );\n};\n\nScrollAreaThumb.displayName = 'ScrollArea.Thumb';\n"],"mappings":";;;;;;;;;;;;AAeA,MAAa,mBAAmB,UAAgC;CAC9D,MAAM,EAAE,WAAW,GAAG,SAAS;CAE/B,OACE,oBAACA,WAAe,OAAhB;EACE,kBAAe;EACf,WAAW,qBACT;GAGE;GAGA;GACA;GAIA;GACA;GACA;GAKA;GACA;GAIA;GACA;GACA;EACF,GACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,gBAAgB,cAAc"}