@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
@@ -0,0 +1,50 @@
1
+ import { LinkVariants } from "./link-variants.js";
2
+ import { MergeOverride } from "@lucasbernardosn/ts-utils";
3
+ import { useRender } from "@base-ui/react";
4
+ //#region src/components/typography/link/link.d.ts
5
+ /**
6
+ * Props do `Link`: as variantes visuais, o `external` e as props do elemento renderizado.
7
+ */
8
+ export type LinkProps = MergeOverride<useRender.ComponentProps<'a'>, LinkVariants & {
9
+ /**
10
+ * Abre o link em nova aba: acrescenta `target="_blank"` e `rel="noopener noreferrer"` (as props
11
+ * recebidas vencem), o ícone de link externo e o aviso "(abre em nova aba)" para o leitor de
12
+ * tela.
13
+ *
14
+ * @default false
15
+ */
16
+ external?: boolean;
17
+ }>;
18
+ /**
19
+ * Link de texto: cor, sublinhado, foco e, no `external`, o ícone de link externo. Herda o tamanho e
20
+ * o peso do texto ao redor e quebra de linha junto com ele.
21
+ *
22
+ * Renderiza um `<a>`. A navegação de um router vem pelo `render`
23
+ * (`render={<RouterLink to="…" />}`); um app que navega muito pode montar o próprio wrapper (um
24
+ * `AppLink` com o `to` e o `render` num lugar só). Para uma ação que não navega, o `render` é um
25
+ * `<button>`. O `external` abre em nova aba e avisa o leitor de tela.
26
+ *
27
+ * @example
28
+ * ```tsx
29
+ * <Link href="mailto:contato@exemplo.com.br">contato@exemplo.com.br</Link>
30
+ *
31
+ * <Link render={<RouterLink to="/clientes/42" />}>Cardoso Couros</Link>
32
+ *
33
+ * <Link render={<button type="button" onClick={openCustomer} />}>
34
+ * Cardoso Couros
35
+ * </Link>
36
+ *
37
+ * <Link
38
+ * href="https://exemplo.com.br"
39
+ * external
40
+ * >
41
+ * exemplo.com.br
42
+ * </Link>
43
+ * ```
44
+ */
45
+ export declare const Link: {
46
+ (props: LinkProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
47
+ displayName: string;
48
+ };
49
+ //#endregion
50
+ //# sourceMappingURL=link.d.ts.map
@@ -0,0 +1,74 @@
1
+ import { mergeTwClassNames } from "../../../utils/merge-class-names.js";
2
+ import { Icon } from "../../display/icon/icon.js";
3
+ import { linkVariants } from "./link-variants.js";
4
+ import { createSplitProps } from "@lucasbernardosn/ts-utils";
5
+ import { mergeProps, useRender } from "@base-ui/react";
6
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
7
+ import { ArrowSquareOutIcon } from "@phosphor-icons/react";
8
+ //#region src/components/typography/link/link.tsx
9
+ const splitVariantProps = createSplitProps();
10
+ /**
11
+ * Link de texto: cor, sublinhado, foco e, no `external`, o ícone de link externo. Herda o tamanho e
12
+ * o peso do texto ao redor e quebra de linha junto com ele.
13
+ *
14
+ * Renderiza um `<a>`. A navegação de um router vem pelo `render`
15
+ * (`render={<RouterLink to="…" />}`); um app que navega muito pode montar o próprio wrapper (um
16
+ * `AppLink` com o `to` e o `render` num lugar só). Para uma ação que não navega, o `render` é um
17
+ * `<button>`. O `external` abre em nova aba e avisa o leitor de tela.
18
+ *
19
+ * @example
20
+ * ```tsx
21
+ * <Link href="mailto:contato@exemplo.com.br">contato@exemplo.com.br</Link>
22
+ *
23
+ * <Link render={<RouterLink to="/clientes/42" />}>Cardoso Couros</Link>
24
+ *
25
+ * <Link render={<button type="button" onClick={openCustomer} />}>
26
+ * Cardoso Couros
27
+ * </Link>
28
+ *
29
+ * <Link
30
+ * href="https://exemplo.com.br"
31
+ * external
32
+ * >
33
+ * exemplo.com.br
34
+ * </Link>
35
+ * ```
36
+ */
37
+ const Link = (props) => {
38
+ const [variantProps, elementProps] = splitVariantProps(props, ["colorScheme", "variant"]);
39
+ const { render, className, children, external = false, ...rest } = elementProps;
40
+ const baseProps = {
41
+ "data-component": "Link",
42
+ className: mergeTwClassNames(linkVariants(variantProps), className),
43
+ ...external && {
44
+ target: "_blank",
45
+ rel: "noopener noreferrer"
46
+ },
47
+ children: external ? /* @__PURE__ */ jsxs(Fragment, { children: [
48
+ children,
49
+ /* @__PURE__ */ jsx(Icon, {
50
+ render: /* @__PURE__ */ jsx(ArrowSquareOutIcon, {}),
51
+ className: mergeTwClassNames([
52
+ "inline-block",
53
+ "align-[-0.125em]",
54
+ "ms-0.5"
55
+ ])
56
+ }),
57
+ " ",
58
+ /* @__PURE__ */ jsx("span", {
59
+ className: mergeTwClassNames(["sr-only"]),
60
+ children: "(abre em nova aba)"
61
+ })
62
+ ] }) : children
63
+ };
64
+ return useRender({
65
+ render,
66
+ defaultTagName: "a",
67
+ props: mergeProps(baseProps, rest)
68
+ });
69
+ };
70
+ Link.displayName = "Link";
71
+ //#endregion
72
+ export { Link };
73
+
74
+ //# sourceMappingURL=link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link.js","names":[],"sources":["../../../../src/components/typography/link/link.tsx"],"sourcesContent":["import { mergeProps, useRender } from '@base-ui/react';\nimport {\n createSplitProps,\n type MergeOverride,\n} from '@lucasbernardosn/ts-utils';\nimport { ArrowSquareOutIcon } from '@phosphor-icons/react';\nimport { Icon } from '#components/display/icon';\nimport { mergeTwClassNames } from '#utils';\nimport { type LinkVariants, linkVariants } from './link-variants';\n\n/**\n * Props do `Link`: as variantes visuais, o `external` e as props do elemento renderizado.\n */\nexport type LinkProps = MergeOverride<\n useRender.ComponentProps<'a'>,\n LinkVariants & {\n /**\n * Abre o link em nova aba: acrescenta `target=\"_blank\"` e `rel=\"noopener noreferrer\"` (as props\n * recebidas vencem), o ícone de link externo e o aviso \"(abre em nova aba)\" para o leitor de\n * tela.\n *\n * @default false\n */\n external?: boolean;\n }\n>;\n\nconst splitVariantProps = createSplitProps<LinkVariants>();\n\n/**\n * Link de texto: cor, sublinhado, foco e, no `external`, o ícone de link externo. Herda o tamanho e\n * o peso do texto ao redor e quebra de linha junto com ele.\n *\n * Renderiza um `<a>`. A navegação de um router vem pelo `render`\n * (`render={<RouterLink to=\"…\" />}`); um app que navega muito pode montar o próprio wrapper (um\n * `AppLink` com o `to` e o `render` num lugar só). Para uma ação que não navega, o `render` é um\n * `<button>`. O `external` abre em nova aba e avisa o leitor de tela.\n *\n * @example\n * ```tsx\n * <Link href=\"mailto:contato@exemplo.com.br\">contato@exemplo.com.br</Link>\n *\n * <Link render={<RouterLink to=\"/clientes/42\" />}>Cardoso Couros</Link>\n *\n * <Link render={<button type=\"button\" onClick={openCustomer} />}>\n * Cardoso Couros\n * </Link>\n *\n * <Link\n * href=\"https://exemplo.com.br\"\n * external\n * >\n * exemplo.com.br\n * </Link>\n * ```\n */\nexport const Link = (props: LinkProps) => {\n const [variantProps, elementProps] = splitVariantProps(props, [\n 'colorScheme',\n 'variant',\n ]);\n\n const {\n render,\n className,\n children,\n external = false,\n ...rest\n } = elementProps;\n\n const baseProps = {\n 'data-component': 'Link',\n className: mergeTwClassNames(linkVariants(variantProps), className),\n ...(external && {\n target: '_blank',\n rel: 'noopener noreferrer',\n }),\n children: external ? (\n <>\n {children}\n <Icon\n render={<ArrowSquareOutIcon />}\n className={mergeTwClassNames([\n 'inline-block',\n // O link é inline e quebra junto com o texto: o ícone acompanha a linha de base sem\n // transformar o link em flex.\n 'align-[-0.125em]',\n\n 'ms-0.5',\n ])}\n />{' '}\n <span className={mergeTwClassNames(['sr-only'])}>\n (abre em nova aba)\n </span>\n </>\n ) : (\n children\n ),\n };\n\n return useRender({\n render,\n defaultTagName: 'a',\n props: mergeProps(baseProps, rest),\n });\n};\n\nLink.displayName = 'Link';\n"],"mappings":";;;;;;;;AA2BA,MAAM,oBAAoB,iBAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BzD,MAAa,QAAQ,UAAqB;CACxC,MAAM,CAAC,cAAc,gBAAgB,kBAAkB,OAAO,CAC5D,eACA,SACF,CAAC;CAED,MAAM,EACJ,QACA,WACA,UACA,WAAW,OACX,GAAG,SACD;CAEJ,MAAM,YAAY;EAChB,kBAAkB;EAClB,WAAW,kBAAkB,aAAa,YAAY,GAAG,SAAS;EAClE,GAAI,YAAY;GACd,QAAQ;GACR,KAAK;EACP;EACA,UAAU,WACR,qBAAA,UAAA,EAAA,UAAA;GACG;GACD,oBAAC,MAAD;IACE,QAAQ,oBAAC,oBAAD,CAAqB,CAAA;IAC7B,WAAW,kBAAkB;KAC3B;KAGA;KAEA;IACF,CAAC;GACF,CAAA;GAAE;GACH,oBAAC,QAAD;IAAM,WAAW,kBAAkB,CAAC,SAAS,CAAC;IAAG,UAAA;GAE3C,CAAA;EACN,EAAA,CAAA,IAEF;CAEJ;CAEA,OAAO,UAAU;EACf;EACA,gBAAgB;EAChB,OAAO,WAAW,WAAW,IAAI;CACnC,CAAC;AACH;AAEA,KAAK,cAAc"}
@@ -26,7 +26,7 @@ export declare const markDefaultVariants: Required<MarkVariants>;
26
26
  */
27
27
  export declare const markVariants: (props?: ({
28
28
  colorScheme?: "gray" | "brand" | "red" | "green" | "blue" | "amber" | null | undefined;
29
- variant?: "text" | "solid" | "subtle" | "plain" | null | undefined;
29
+ variant?: "solid" | "subtle" | "plain" | "text" | null | undefined;
30
30
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
31
31
  //#endregion
32
32
  //# sourceMappingURL=mark-variants.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lucasbernardosn/react-ui",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "A React component library built with TypeScript and Tailwind CSS, designed to provide a comprehensive set of customizable UI components for modern web applications.",
5
5
  "type": "module",
6
6
  "imports": {
@@ -34,7 +34,7 @@
34
34
  "dependencies": {
35
35
  "@base-ui/react": "1.9.0",
36
36
  "@base-ui/utils": "0.5.0",
37
- "@lucasbernardosn/ts-utils": "^0.3.0",
37
+ "@lucasbernardosn/ts-utils": "^0.4.0",
38
38
  "@phosphor-icons/react": "2.1.10",
39
39
  "@zag-js/clipboard": "1.44.0",
40
40
  "@zag-js/collection": "1.44.0",
@@ -50,7 +50,7 @@
50
50
  },
51
51
  "devDependencies": {
52
52
  "@biomejs/biome": "2.6.3",
53
- "@lucasbernardosn/react-utils": "0.3.0",
53
+ "@lucasbernardosn/react-utils": "0.4.0",
54
54
  "@lucasbernardosn/ts-config": "0.2.0",
55
55
  "@testing-library/jest-dom": "7.0.1",
56
56
  "@testing-library/react": "16.3.3",
@@ -70,7 +70,7 @@
70
70
  "vitest": "5.0.3"
71
71
  },
72
72
  "peerDependencies": {
73
- "@lucasbernardosn/react-utils": "^0.3.0",
73
+ "@lucasbernardosn/react-utils": "^0.4.0",
74
74
  "react": "^19.0.0",
75
75
  "react-dom": "^19.0.0",
76
76
  "tailwindcss": "^4.0.0"