@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.
- package/README.md +2 -1
- package/dist/components/disclosure/collapsible/collapsible-panel-variants.d.ts +1 -1
- package/dist/components/disclosure/tabs/tabs-indicator-variants.d.ts +1 -1
- package/dist/components/disclosure/tabs/tabs-list-variants.d.ts +1 -1
- package/dist/components/disclosure/tabs/tabs-tab-variants.d.ts +1 -1
- package/dist/components/display/avatar/avatar-root-variants.d.ts +1 -1
- package/dist/components/display/badge/badge-variants.d.ts +4 -1
- package/dist/components/display/badge/badge-variants.js +5 -0
- package/dist/components/display/badge/badge-variants.js.map +1 -1
- package/dist/components/display/badge/badge.d.ts +10 -1
- package/dist/components/display/badge/badge.js +40 -2
- package/dist/components/display/badge/badge.js.map +1 -1
- package/dist/components/display/card/card-body.js +1 -0
- package/dist/components/display/card/card-body.js.map +1 -1
- package/dist/components/display/data-list/data-list-item-label-variants.d.ts +7 -0
- package/dist/components/display/data-list/data-list-item-label-variants.js +27 -0
- package/dist/components/display/data-list/data-list-item-label-variants.js.map +1 -0
- package/dist/components/display/data-list/data-list-item-label.d.ts +2 -1
- package/dist/components/display/data-list/data-list-item-label.js +9 -2
- package/dist/components/display/data-list/data-list-item-label.js.map +1 -1
- package/dist/components/display/data-list/data-list-item-value-variants.d.ts +1 -1
- package/dist/components/display/data-list/data-list-item-value-variants.js +9 -5
- package/dist/components/display/data-list/data-list-item-value-variants.js.map +1 -1
- package/dist/components/display/data-list/data-list-item-value.d.ts +2 -1
- package/dist/components/display/data-list/data-list-item-value.js +4 -3
- package/dist/components/display/data-list/data-list-item-value.js.map +1 -1
- package/dist/components/display/data-list/data-list-item-variants.d.ts +2 -6
- package/dist/components/display/data-list/data-list-item-variants.js +24 -26
- package/dist/components/display/data-list/data-list-item-variants.js.map +1 -1
- package/dist/components/display/data-list/data-list-item.d.ts +2 -1
- package/dist/components/display/data-list/data-list-item.js +7 -3
- package/dist/components/display/data-list/data-list-item.js.map +1 -1
- package/dist/components/display/data-list/data-list-root-variants.d.ts +1 -2
- package/dist/components/display/data-list/data-list-root-variants.js +7 -24
- package/dist/components/display/data-list/data-list-root-variants.js.map +1 -1
- package/dist/components/display/data-list/data-list-root.d.ts +3 -2
- package/dist/components/display/data-list/data-list-root.js +8 -3
- package/dist/components/display/data-list/data-list-root.js.map +1 -1
- package/dist/components/display/data-list/use-data-list-context.d.ts +18 -7
- package/dist/components/display/data-list/use-data-list-context.js +3 -2
- package/dist/components/display/data-list/use-data-list-context.js.map +1 -1
- package/dist/components/display/tag/tag-root-variants.d.ts +1 -2
- package/dist/components/display/tag/tag-root-variants.js +0 -1
- package/dist/components/display/tag/tag-root-variants.js.map +1 -1
- package/dist/components/feedback/alert/alert-indicator.d.ts +2 -2
- package/dist/components/feedback/alert/alert-indicator.js +2 -2
- package/dist/components/feedback/alert/alert-indicator.js.map +1 -1
- package/dist/components/layout/center-absolute/center-absolute-variants.d.ts +1 -1
- package/dist/components/layout/scroll-area/scroll-area-root.d.ts +16 -3
- package/dist/components/layout/scroll-area/scroll-area-root.js +6 -3
- package/dist/components/layout/scroll-area/scroll-area-root.js.map +1 -1
- package/dist/components/layout/scroll-area/scroll-area-scrollbar.d.ts +3 -0
- package/dist/components/layout/scroll-area/scroll-area-scrollbar.js +9 -2
- package/dist/components/layout/scroll-area/scroll-area-scrollbar.js.map +1 -1
- package/dist/components/layout/scroll-area/scroll-area-thumb.d.ts +5 -1
- package/dist/components/layout/scroll-area/scroll-area-thumb.js +15 -5
- package/dist/components/layout/scroll-area/scroll-area-thumb.js.map +1 -1
- package/dist/components/layout/scroll-area/scroll-area-viewport-variants.d.ts +1 -1
- package/dist/components/overlays/alert-dialog/alert-dialog-body.d.ts +5 -2
- package/dist/components/overlays/alert-dialog/alert-dialog-body.js +8 -3
- package/dist/components/overlays/alert-dialog/alert-dialog-body.js.map +1 -1
- package/dist/components/overlays/alert-dialog/alert-dialog-footer.d.ts +6 -3
- package/dist/components/overlays/alert-dialog/alert-dialog-footer.js +9 -5
- package/dist/components/overlays/alert-dialog/alert-dialog-footer.js.map +1 -1
- package/dist/components/overlays/alert-dialog/alert-dialog-header.d.ts +9 -2
- package/dist/components/overlays/alert-dialog/alert-dialog-header.js +19 -5
- package/dist/components/overlays/alert-dialog/alert-dialog-header.js.map +1 -1
- package/dist/components/overlays/alert-dialog/alert-dialog-imperative.d.ts +87 -28
- package/dist/components/overlays/alert-dialog/alert-dialog-imperative.js +120 -55
- package/dist/components/overlays/alert-dialog/alert-dialog-imperative.js.map +1 -1
- package/dist/components/overlays/alert-dialog/alert-dialog-indicator-variants.d.ts +24 -0
- package/dist/components/overlays/alert-dialog/alert-dialog-indicator-variants.js +31 -0
- package/dist/components/overlays/alert-dialog/alert-dialog-indicator-variants.js.map +1 -0
- package/dist/components/overlays/alert-dialog/alert-dialog-indicator.d.ts +25 -0
- package/dist/components/overlays/alert-dialog/alert-dialog-indicator.js +51 -0
- package/dist/components/overlays/alert-dialog/alert-dialog-indicator.js.map +1 -0
- package/dist/components/overlays/alert-dialog/alert-dialog-outlet.d.ts +4 -0
- package/dist/components/overlays/alert-dialog/alert-dialog-outlet.js +13 -2
- package/dist/components/overlays/alert-dialog/alert-dialog-outlet.js.map +1 -1
- package/dist/components/overlays/alert-dialog/alert-dialog-popup-variants.d.ts +4 -2
- package/dist/components/overlays/alert-dialog/alert-dialog-popup-variants.js +7 -6
- package/dist/components/overlays/alert-dialog/alert-dialog-popup-variants.js.map +1 -1
- package/dist/components/overlays/alert-dialog/alert-dialog-popup.d.ts +2 -1
- package/dist/components/overlays/alert-dialog/alert-dialog-popup.js +2 -1
- package/dist/components/overlays/alert-dialog/alert-dialog-popup.js.map +1 -1
- package/dist/components/overlays/alert-dialog/alert-dialog-store.d.ts +20 -4
- package/dist/components/overlays/alert-dialog/alert-dialog-store.js +48 -5
- package/dist/components/overlays/alert-dialog/alert-dialog-store.js.map +1 -1
- package/dist/components/overlays/alert-dialog/alert-dialog-title.d.ts +3 -2
- package/dist/components/overlays/alert-dialog/alert-dialog-title.js +4 -3
- package/dist/components/overlays/alert-dialog/alert-dialog-title.js.map +1 -1
- package/dist/components/overlays/alert-dialog/index.parts.d.ts +4 -3
- package/dist/components/overlays/alert-dialog/index.parts.js +3 -1
- package/dist/components/overlays/alert-dialog/index.parts.js.map +1 -1
- package/dist/components/overlays/dialog/dialog-body.js +1 -0
- package/dist/components/overlays/dialog/dialog-body.js.map +1 -1
- package/dist/components/overlays/dialog/dialog-popup-variants.d.ts +1 -1
- package/dist/components/overlays/dialog/dialog-popup-variants.js +2 -3
- package/dist/components/overlays/dialog/dialog-popup-variants.js.map +1 -1
- package/dist/components/overlays/drawer/drawer-body.js +1 -0
- package/dist/components/overlays/drawer/drawer-body.js.map +1 -1
- package/dist/components/typography/link/index.d.ts +3 -0
- package/dist/components/typography/link/index.js +2 -0
- package/dist/components/typography/link/link-variants.d.ts +33 -0
- package/dist/components/typography/link/link-variants.js +91 -0
- package/dist/components/typography/link/link-variants.js.map +1 -0
- package/dist/components/typography/link/link.d.ts +50 -0
- package/dist/components/typography/link/link.js +74 -0
- package/dist/components/typography/link/link.js.map +1 -0
- package/dist/components/typography/mark/mark-variants.d.ts +1 -1
- 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?: "
|
|
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
|
+
"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.
|
|
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.
|
|
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.
|
|
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"
|