@grazziotin/react-components-next 0.1.0 → 1.0.1
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 +266 -174
- package/dist/chunk-4DIPDYEU.mjs +79 -0
- package/dist/chunk-4DIPDYEU.mjs.map +1 -0
- package/dist/chunk-XNWAGZVV.mjs +467 -0
- package/dist/chunk-XNWAGZVV.mjs.map +1 -0
- package/dist/functions/index.d.mts +38 -0
- package/dist/functions/index.d.ts +38 -0
- package/dist/functions/index.js +54 -0
- package/dist/functions/index.js.map +1 -0
- package/dist/functions/index.mjs +3 -0
- package/dist/functions/index.mjs.map +1 -0
- package/dist/index.css +1 -1
- package/dist/index.d.mts +10 -67
- package/dist/index.d.ts +10 -67
- package/dist/index.js +512 -345
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +22 -393
- package/dist/index.mjs.map +1 -1
- package/dist/ui/index.d.mts +316 -0
- package/dist/ui/index.d.ts +316 -0
- package/dist/ui/index.js +515 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/index.mjs +4 -0
- package/dist/ui/index.mjs.map +1 -0
- package/package.json +101 -73
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/lib/utils.ts","../src/components/ui/Button/Button.tsx","../src/components/ui/Input/Input.tsx","../src/components/ui/Card/Card.tsx","../src/components/ui/Badge/Badge.tsx","../src/components/ui/Avatar/Avatar.tsx"],"names":["jsxs","jsx","sizeStyles","variantStyles","React"],"mappings":"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","file":"index.js","sourcesContent":["export type ClassValue =\r\n | string\r\n | number\r\n | bigint\r\n | boolean\r\n | undefined\r\n | null\r\n | ClassValue[];\r\n\r\nexport function cn(...inputs: ClassValue[]): string {\r\n const result: string[] = [];\r\n\r\n for (const input of inputs) {\r\n if (!input && input !== 0) continue;\r\n if (typeof input === \"string\") {\r\n result.push(input);\r\n } else if (typeof input === \"number\" || typeof input === \"bigint\") {\r\n result.push(String(input));\r\n } else if (Array.isArray(input)) {\r\n const nested = cn(...(input as ClassValue[]));\r\n if (nested) result.push(nested);\r\n }\r\n }\r\n\r\n return result.join(\" \").replace(/\\s+/g, \" \").trim();\r\n}\r\n","import React from \"react\";\nimport { cn } from \"../../../lib/utils\";\n\nexport type ButtonVariant =\n | \"primary\"\n | \"secondary\"\n | \"outline\"\n | \"ghost\"\n | \"destructive\";\nexport type ButtonSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: ButtonVariant;\n size?: ButtonSize;\n loading?: boolean;\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n fullWidth?: boolean;\n}\n\nconst variantStyles: Record<ButtonVariant, string> = {\n primary:\n \"bg-blue-600 text-white hover:bg-blue-700 active:bg-blue-800 focus-visible:ring-blue-500\",\n secondary:\n \"bg-gray-100 text-gray-900 hover:bg-gray-200 active:bg-gray-300 focus-visible:ring-gray-400\",\n outline:\n \"border border-gray-300 bg-transparent text-gray-900 hover:bg-gray-50 active:bg-gray-100 focus-visible:ring-gray-400\",\n ghost:\n \"bg-transparent text-gray-700 hover:bg-gray-100 active:bg-gray-200 focus-visible:ring-gray-400\",\n destructive:\n \"bg-red-600 text-white hover:bg-red-700 active:bg-red-800 focus-visible:ring-red-500\",\n};\n\nconst sizeStyles: Record<ButtonSize, string> = {\n sm: \"h-8 px-3 text-sm gap-1.5\",\n md: \"h-10 px-4 text-sm gap-2\",\n lg: \"h-12 px-6 text-base gap-2.5\",\n};\n\nexport function Button({\n variant = \"primary\",\n size = \"md\",\n loading = false,\n leftIcon,\n rightIcon,\n fullWidth = false,\n children,\n className,\n disabled,\n ...props\n}: ButtonProps) {\n const isDisabled = disabled || loading;\n\n return (\n <button\n className={cn(\n \"inline-flex items-center justify-center rounded-md font-medium\",\n \"transition-colors duration-150 ease-in-out\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n variantStyles[variant],\n sizeStyles[size],\n fullWidth && \"w-full\",\n className\n )}\n disabled={isDisabled}\n {...props}\n >\n {loading ? (\n <Spinner size={size} />\n ) : (\n leftIcon && <span className=\"shrink-0\">{leftIcon}</span>\n )}\n {children}\n {!loading && rightIcon && (\n <span className=\"shrink-0\">{rightIcon}</span>\n )}\n </button>\n );\n}\n\nfunction Spinner({ size }: { size: ButtonSize }) {\n const spinnerSize = size === \"sm\" ? \"h-3 w-3\" : size === \"lg\" ? \"h-5 w-5\" : \"h-4 w-4\";\n return (\n <svg\n className={cn(\"animate-spin shrink-0\", spinnerSize)}\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\"\n />\n </svg>\n );\n}\n","import React from \"react\";\nimport { cn } from \"../../../lib/utils\";\n\nexport type InputSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface InputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\"> {\n label?: string;\n hint?: string;\n error?: string;\n size?: InputSize;\n leftAddon?: React.ReactNode;\n rightAddon?: React.ReactNode;\n fullWidth?: boolean;\n}\n\nconst sizeStyles: Record<InputSize, string> = {\n sm: \"h-8 px-2.5 text-sm\",\n md: \"h-10 px-3 text-sm\",\n lg: \"h-12 px-4 text-base\",\n};\n\nexport function Input({\n label,\n hint,\n error,\n size = \"md\",\n leftAddon,\n rightAddon,\n fullWidth = false,\n className,\n id,\n ...props\n}: InputProps) {\n const inputId = id ?? label?.toLowerCase().replace(/\\s+/g, \"-\");\n\n return (\n <div className={cn(\"flex flex-col gap-1.5\", fullWidth && \"w-full\")}>\n {label && (\n <label\n htmlFor={inputId}\n className=\"text-sm font-medium text-gray-700\"\n >\n {label}\n </label>\n )}\n <div className=\"relative flex items-center\">\n {leftAddon && (\n <span className=\"absolute left-3 flex items-center text-gray-500\">\n {leftAddon}\n </span>\n )}\n <input\n id={inputId}\n className={cn(\n \"w-full rounded-md border bg-white text-gray-900 placeholder:text-gray-400\",\n \"transition-colors duration-150\",\n \"focus:outline-none focus:ring-2 focus:ring-offset-0\",\n \"disabled:cursor-not-allowed disabled:bg-gray-50 disabled:text-gray-500\",\n sizeStyles[size],\n error\n ? \"border-red-400 focus:border-red-400 focus:ring-red-300\"\n : \"border-gray-300 focus:border-blue-500 focus:ring-blue-300\",\n leftAddon && \"pl-9\",\n rightAddon && \"pr-9\",\n className\n )}\n {...props}\n />\n {rightAddon && (\n <span className=\"absolute right-3 flex items-center text-gray-500\">\n {rightAddon}\n </span>\n )}\n </div>\n {(hint || error) && (\n <p className={cn(\"text-xs\", error ? \"text-red-500\" : \"text-gray-500\")}>\n {error ?? hint}\n </p>\n )}\n </div>\n );\n}\n","import React from \"react\";\nimport { cn } from \"../../../lib/utils\";\n\nexport interface CardProps extends React.HTMLAttributes<HTMLDivElement> {\n shadow?: \"none\" | \"sm\" | \"md\" | \"lg\";\n hoverable?: boolean;\n bordered?: boolean;\n padding?: \"none\" | \"sm\" | \"md\" | \"lg\";\n}\n\nconst shadowStyles = {\n none: \"\",\n sm: \"shadow-sm\",\n md: \"shadow-md\",\n lg: \"shadow-lg\",\n};\n\nconst paddingStyles = {\n none: \"\",\n sm: \"p-4\",\n md: \"p-6\",\n lg: \"p-8\",\n};\n\nexport function Card({\n shadow = \"sm\",\n hoverable = false,\n bordered = true,\n padding = \"md\",\n className,\n children,\n ...props\n}: CardProps) {\n return (\n <div\n className={cn(\n \"rounded-xl bg-white\",\n shadowStyles[shadow],\n paddingStyles[padding],\n bordered && \"border border-gray-200\",\n hoverable &&\n \"cursor-pointer transition-shadow duration-200 hover:shadow-md\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n}\n\nexport interface CardHeaderProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport function CardHeader({ className, children, ...props }: CardHeaderProps) {\n return (\n <div className={cn(\"mb-4 flex flex-col gap-1\", className)} {...props}>\n {children}\n </div>\n );\n}\n\nexport interface CardTitleProps extends React.HTMLAttributes<HTMLHeadingElement> {}\n\nexport function CardTitle({ className, children, ...props }: CardTitleProps) {\n return (\n <h3\n className={cn(\"text-lg font-semibold text-gray-900\", className)}\n {...props}\n >\n {children}\n </h3>\n );\n}\n\nexport interface CardDescriptionProps\n extends React.HTMLAttributes<HTMLParagraphElement> {}\n\nexport function CardDescription({\n className,\n children,\n ...props\n}: CardDescriptionProps) {\n return (\n <p className={cn(\"text-sm text-gray-500\", className)} {...props}>\n {children}\n </p>\n );\n}\n\nexport interface CardContentProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport function CardContent({\n className,\n children,\n ...props\n}: CardContentProps) {\n return (\n <div className={cn(\"text-sm text-gray-700\", className)} {...props}>\n {children}\n </div>\n );\n}\n\nexport interface CardFooterProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport function CardFooter({ className, children, ...props }: CardFooterProps) {\n return (\n <div\n className={cn(\"mt-4 flex items-center gap-2\", className)}\n {...props}\n >\n {children}\n </div>\n );\n}\n","import React from \"react\";\nimport { cn } from \"../../../lib/utils\";\n\nexport type BadgeVariant =\n | \"default\"\n | \"primary\"\n | \"success\"\n | \"warning\"\n | \"danger\"\n | \"info\";\n\nexport interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\n variant?: BadgeVariant;\n dot?: boolean;\n}\n\nconst variantStyles: Record<BadgeVariant, string> = {\n default: \"bg-gray-100 text-gray-700\",\n primary: \"bg-blue-100 text-blue-700\",\n success: \"bg-green-100 text-green-700\",\n warning: \"bg-yellow-100 text-yellow-700\",\n danger: \"bg-red-100 text-red-700\",\n info: \"bg-sky-100 text-sky-700\",\n};\n\nconst dotStyles: Record<BadgeVariant, string> = {\n default: \"bg-gray-500\",\n primary: \"bg-blue-500\",\n success: \"bg-green-500\",\n warning: \"bg-yellow-500\",\n danger: \"bg-red-500\",\n info: \"bg-sky-500\",\n};\n\nexport function Badge({\n variant = \"default\",\n dot = false,\n className,\n children,\n ...props\n}: BadgeProps) {\n return (\n <span\n className={cn(\n \"inline-flex items-center gap-1.5 rounded-full px-2.5 py-0.5 text-xs font-medium\",\n variantStyles[variant],\n className\n )}\n {...props}\n >\n {dot && (\n <span\n className={cn(\"h-1.5 w-1.5 rounded-full\", dotStyles[variant])}\n />\n )}\n {children}\n </span>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport { cn } from \"../../../lib/utils\";\n\nexport type AvatarSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n\nexport interface AvatarProps extends React.HTMLAttributes<HTMLSpanElement> {\n src?: string;\n alt?: string;\n fallback?: string;\n size?: AvatarSize;\n}\n\nconst sizeStyles: Record<AvatarSize, string> = {\n xs: \"h-6 w-6 text-xs\",\n sm: \"h-8 w-8 text-sm\",\n md: \"h-10 w-10 text-sm\",\n lg: \"h-12 w-12 text-base\",\n xl: \"h-16 w-16 text-lg\",\n};\n\nfunction getInitials(name: string): string {\n return name\n .split(\" \")\n .slice(0, 2)\n .map((word) => word[0]?.toUpperCase() ?? \"\")\n .join(\"\");\n}\n\nexport function Avatar({\n src,\n alt = \"\",\n fallback,\n size = \"md\",\n className,\n ...props\n}: AvatarProps) {\n const [imgError, setImgError] = React.useState(false);\n const showFallback = !src || imgError;\n const initials = fallback ? getInitials(fallback) : alt ? getInitials(alt) : \"?\";\n\n return (\n <span\n className={cn(\n \"relative inline-flex shrink-0 items-center justify-center overflow-hidden rounded-full bg-gray-200\",\n sizeStyles[size],\n className\n )}\n {...props}\n >\n {!showFallback ? (\n // eslint-disable-next-line @next/next/no-img-element\n <img\n src={src}\n alt={alt}\n className=\"h-full w-full object-cover\"\n onError={() => setImgError(true)}\n />\n ) : (\n <span className=\"font-medium text-gray-600 select-none\">\n {initials}\n </span>\n )}\n </span>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["#style-inject:#style-inject","../src/styles/tailwind-output.css","../src/functions/cn/cn.ts","../src/functions/nvl/nvl.ts","../src/core/remove-digits.ts","../src/functions/format-cpf-cnpj/format-cpf-cnpj.ts","../src/functions/format-phone-br/format-phone-br.ts","../src/components/ui/card/index.tsx","../src/components/ui/dialog/utils/constants.ts","../src/components/ui/dialog/index.tsx","../src/components/ui/data-table/utils/constants.ts","../src/components/ui/data-table/utils/between-filter.tsx","../src/components/ui/data-table/index.tsx","../src/components/ui/tab/index.tsx"],"names":["twMerge","clsx","jsxs","Box","jsx","Tooltip","DialogMui","DialogTitle","DialogContent","DialogActions","ptBR","TextField","getGridStringOperators","getGridNumericOperators","GRID_STRING_COL_DEF","GRID_NUMERIC_COL_DEF","GridColumnsPanel","GridColumnMenu","GridFilterPanel","GridOverlay","GridPagination","DataGrid","styled","MuiTabs","MuiTab"],"mappings":"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","file":"index.js","sourcesContent":["\n export default function styleInject(css, { insertAt } = {}) {\n if (!css || typeof document === 'undefined') return\n \n const head = document.head || document.getElementsByTagName('head')[0]\n const style = document.createElement('style')\n style.type = 'text/css'\n \n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild)\n } else {\n head.appendChild(style)\n }\n } else {\n head.appendChild(style)\n }\n \n if (style.styleSheet) {\n style.styleSheet.cssText = css\n } else {\n style.appendChild(document.createTextNode(css))\n }\n }\n ","import styleInject from '#style-inject';styleInject(\"/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */\\n@layer properties {\\n @supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))) {\\n *,\\n :before,\\n :after,\\n ::backdrop {\\n --tw-border-style:solid;\\n --tw-font-weight:initial;\\n --tw-shadow:0 0 #0000;\\n --tw-shadow-color:initial;\\n --tw-shadow-alpha:100%;\\n --tw-inset-shadow:0 0 #0000;\\n --tw-inset-shadow-color:initial;\\n --tw-inset-shadow-alpha:100%;\\n --tw-ring-color:initial;\\n --tw-ring-shadow:0 0 #0000;\\n --tw-inset-ring-color:initial;\\n --tw-inset-ring-shadow:0 0 #0000;\\n --tw-ring-inset:initial;\\n --tw-ring-offset-width:0px;\\n --tw-ring-offset-color:#fff;\\n --tw-ring-offset-shadow:0 0 #0000;\\n --tw-outline-style:solid;\\n --tw-blur:initial;\\n --tw-brightness:initial;\\n --tw-contrast:initial;\\n --tw-grayscale:initial;\\n --tw-hue-rotate:initial;\\n --tw-invert:initial;\\n --tw-opacity:initial;\\n --tw-saturate:initial;\\n --tw-sepia:initial;\\n --tw-drop-shadow:initial;\\n --tw-drop-shadow-color:initial;\\n --tw-drop-shadow-alpha:100%;\\n --tw-drop-shadow-size:initial;\\n }\\n }\\n}\\n@layer theme {\\n :root,\\n :host {\\n --font-sans:ui-sans-serif,\\n system-ui,\\n sans-serif,\\n \\\"Apple Color Emoji\\\",\\n \\\"Segoe UI Emoji\\\",\\n \\\"Segoe UI Symbol\\\",\\n \\\"Noto Color Emoji\\\";\\n --font-mono:ui-monospace,\\n SFMono-Regular,\\n Menlo,\\n Monaco,\\n Consolas,\\n \\\"Liberation Mono\\\",\\n \\\"Courier New\\\",\\n monospace;\\n --color-red-600:oklch(57.7% .245 27.325);\\n --color-green-50:oklch(98.2% .018 155.826);\\n --color-green-100:oklch(96.2% .044 156.743);\\n --color-green-400:oklch(79.2% .209 151.711);\\n --color-green-500:oklch(72.3% .219 149.579);\\n --color-green-800:oklch(44.8% .119 151.328);\\n --color-teal-500:oklch(70.4% .14 182.503);\\n --color-blue-500:oklch(62.3% .214 259.815);\\n --color-gray-50:oklch(98.5% .002 247.839);\\n --color-gray-100:oklch(96.7% .003 264.542);\\n --color-gray-200:oklch(92.8% .006 264.531);\\n --color-gray-500:oklch(55.1% .027 264.364);\\n --color-gray-600:oklch(44.6% .03 256.802);\\n --color-gray-700:oklch(37.3% .034 259.733);\\n --color-gray-900:oklch(21% .034 264.665);\\n --color-black:#000;\\n --color-white:#fff;\\n --spacing:.25rem;\\n --container-3xl:48rem;\\n --text-xs:.75rem;\\n --text-xs--line-height:calc(1 / .75);\\n --text-sm:.875rem;\\n --text-sm--line-height:calc(1.25 / .875);\\n --text-2xl:1.5rem;\\n --text-2xl--line-height:calc(2 / 1.5);\\n --font-weight-medium:500;\\n --font-weight-semibold:600;\\n --font-weight-bold:700;\\n --radius-lg:.5rem;\\n --default-transition-duration:.15s;\\n --default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);\\n --default-font-family:var(--font-sans);\\n --default-mono-font-family:var(--font-mono);\\n }\\n}\\n@layer base {\\n *,\\n :after,\\n :before,\\n ::backdrop {\\n box-sizing: border-box;\\n border: 0 solid;\\n margin: 0;\\n padding: 0;\\n }\\n ::file-selector-button {\\n box-sizing: border-box;\\n border: 0 solid;\\n margin: 0;\\n padding: 0;\\n }\\n html,\\n :host {\\n -webkit-text-size-adjust: 100%;\\n tab-size: 4;\\n line-height: 1.5;\\n font-family: var(--default-font-family,ui-sans-serif, system-ui, sans-serif, \\\"Apple Color Emoji\\\", \\\"Segoe UI Emoji\\\", \\\"Segoe UI Symbol\\\", \\\"Noto Color Emoji\\\");\\n font-feature-settings: var(--default-font-feature-settings,normal);\\n font-variation-settings: var(--default-font-variation-settings,normal);\\n -webkit-tap-highlight-color: transparent;\\n }\\n hr {\\n height: 0;\\n color: inherit;\\n border-top-width: 1px;\\n }\\n abbr:where([title]) {\\n -webkit-text-decoration: underline dotted;\\n text-decoration: underline dotted;\\n }\\n h1,\\n h2,\\n h3,\\n h4,\\n h5,\\n h6 {\\n font-size: inherit;\\n font-weight: inherit;\\n }\\n a {\\n color: inherit;\\n -webkit-text-decoration: inherit;\\n -webkit-text-decoration: inherit;\\n -webkit-text-decoration: inherit;\\n text-decoration: inherit;\\n }\\n b,\\n strong {\\n font-weight: bolder;\\n }\\n code,\\n kbd,\\n samp,\\n pre {\\n font-family: var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \\\"Liberation Mono\\\", \\\"Courier New\\\", monospace);\\n font-feature-settings: var(--default-mono-font-feature-settings,normal);\\n font-variation-settings: var(--default-mono-font-variation-settings,normal);\\n font-size: 1em;\\n }\\n small {\\n font-size: 80%;\\n }\\n sub,\\n sup {\\n vertical-align: baseline;\\n font-size: 75%;\\n line-height: 0;\\n position: relative;\\n }\\n sub {\\n bottom: -.25em;\\n }\\n sup {\\n top: -.5em;\\n }\\n table {\\n text-indent: 0;\\n border-color: inherit;\\n border-collapse: collapse;\\n }\\n :-moz-focusring {\\n outline: auto;\\n }\\n progress {\\n vertical-align: baseline;\\n }\\n summary {\\n display: list-item;\\n }\\n ol,\\n ul,\\n menu {\\n list-style: none;\\n }\\n img,\\n svg,\\n video,\\n canvas,\\n audio,\\n iframe,\\n embed,\\n object {\\n vertical-align: middle;\\n display: block;\\n }\\n img,\\n video {\\n max-width: 100%;\\n height: auto;\\n }\\n button,\\n input,\\n select,\\n optgroup,\\n textarea {\\n font: inherit;\\n font-feature-settings: inherit;\\n font-variation-settings: inherit;\\n letter-spacing: inherit;\\n color: inherit;\\n opacity: 1;\\n background-color: #0000;\\n border-radius: 0;\\n }\\n ::file-selector-button {\\n font: inherit;\\n font-feature-settings: inherit;\\n font-variation-settings: inherit;\\n letter-spacing: inherit;\\n color: inherit;\\n opacity: 1;\\n background-color: #0000;\\n border-radius: 0;\\n }\\n :where(select:is([multiple], [size])) optgroup {\\n font-weight: bolder;\\n }\\n :where(select:is([multiple], [size])) optgroup option {\\n padding-inline-start: 20px;\\n }\\n ::file-selector-button {\\n margin-inline-end: 4px;\\n }\\n ::placeholder {\\n opacity: 1;\\n }\\n @supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px) {\\n ::placeholder {\\n color: currentColor;\\n }\\n @supports (color:color-mix(in lab, red, red)) {\\n ::placeholder {\\n color: color-mix(in oklab, currentcolor 50%, transparent);\\n }\\n }\\n }\\n textarea {\\n resize: vertical;\\n }\\n ::-webkit-search-decoration {\\n -webkit-appearance: none;\\n }\\n ::-webkit-date-and-time-value {\\n min-height: 1lh;\\n text-align: inherit;\\n }\\n ::-webkit-datetime-edit {\\n display: inline-flex;\\n }\\n ::-webkit-datetime-edit-fields-wrapper {\\n padding: 0;\\n }\\n ::-webkit-datetime-edit {\\n padding-block: 0;\\n }\\n ::-webkit-datetime-edit-year-field {\\n padding-block: 0;\\n }\\n ::-webkit-datetime-edit-month-field {\\n padding-block: 0;\\n }\\n ::-webkit-datetime-edit-day-field {\\n padding-block: 0;\\n }\\n ::-webkit-datetime-edit-hour-field {\\n padding-block: 0;\\n }\\n ::-webkit-datetime-edit-minute-field {\\n padding-block: 0;\\n }\\n ::-webkit-datetime-edit-second-field {\\n padding-block: 0;\\n }\\n ::-webkit-datetime-edit-millisecond-field {\\n padding-block: 0;\\n }\\n ::-webkit-datetime-edit-meridiem-field {\\n padding-block: 0;\\n }\\n ::-webkit-calendar-picker-indicator {\\n line-height: 1;\\n }\\n :-moz-ui-invalid {\\n box-shadow: none;\\n }\\n button,\\n input:where([type=button], [type=reset], [type=submit]) {\\n appearance: button;\\n }\\n ::file-selector-button {\\n appearance: button;\\n }\\n ::-webkit-inner-spin-button {\\n height: auto;\\n }\\n ::-webkit-outer-spin-button {\\n height: auto;\\n }\\n [hidden]:where(:not([hidden=until-found])) {\\n display: none !important;\\n }\\n}\\n@layer components;\\n@layer utilities {\\n .container {\\n width: 100%;\\n }\\n @media (min-width: 40rem) {\\n .container {\\n max-width: 40rem;\\n }\\n }\\n @media (min-width: 48rem) {\\n .container {\\n max-width: 48rem;\\n }\\n }\\n @media (min-width: 64rem) {\\n .container {\\n max-width: 64rem;\\n }\\n }\\n @media (min-width: 80rem) {\\n .container {\\n max-width: 80rem;\\n }\\n }\\n @media (min-width: 96rem) {\\n .container {\\n max-width: 96rem;\\n }\\n }\\n .mt-2 {\\n margin-top: calc(var(--spacing) * 2);\\n }\\n .mt-4 {\\n margin-top: calc(var(--spacing) * 4);\\n }\\n .block {\\n display: block;\\n }\\n .block\\\\! {\\n display: block !important;\\n }\\n .flex {\\n display: flex;\\n }\\n .hidden {\\n display: none;\\n }\\n .inline-block {\\n display: inline-block;\\n }\\n .table {\\n display: table;\\n }\\n .min-h-\\\\[210px\\\\]\\\\! {\\n min-height: 210px !important;\\n }\\n .min-h-screen {\\n min-height: 100vh;\\n }\\n .max-w-3xl {\\n max-width: var(--container-3xl);\\n }\\n .min-w-0 {\\n min-width: calc(var(--spacing) * 0);\\n }\\n .flex-1 {\\n flex: 1;\\n }\\n .border-collapse {\\n border-collapse: collapse;\\n }\\n .resize {\\n resize: both;\\n }\\n .flex-col {\\n flex-direction: column;\\n }\\n .items-center {\\n align-items: center;\\n }\\n .justify-center {\\n justify-content: center;\\n }\\n .gap-2 {\\n gap: calc(var(--spacing) * 2);\\n }\\n .gap-3 {\\n gap: calc(var(--spacing) * 3);\\n }\\n .truncate {\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n overflow: hidden;\\n }\\n .truncate\\\\! {\\n text-overflow: ellipsis !important;\\n white-space: nowrap !important;\\n overflow: hidden !important;\\n }\\n .rounded {\\n border-radius: .25rem;\\n }\\n .rounded-lg {\\n border-radius: var(--radius-lg);\\n }\\n .border {\\n border-style: var(--tw-border-style);\\n border-width: 1px;\\n }\\n .border-green-500 {\\n border-color: var(--color-green-500);\\n }\\n .bg-blue-500 {\\n background-color: var(--color-blue-500);\\n }\\n .bg-gray-50 {\\n background-color: var(--color-gray-50);\\n }\\n .bg-gray-100 {\\n background-color: var(--color-gray-100);\\n }\\n .bg-gray-200 {\\n background-color: var(--color-gray-200);\\n }\\n .bg-gray-900 {\\n background-color: var(--color-gray-900);\\n }\\n .bg-green-50 {\\n background-color: var(--color-green-50);\\n }\\n .bg-green-100 {\\n background-color: var(--color-green-100);\\n }\\n .bg-red-600 {\\n background-color: var(--color-red-600);\\n }\\n .bg-teal-500 {\\n background-color: var(--color-teal-500);\\n }\\n .p-4 {\\n padding: calc(var(--spacing) * 4);\\n }\\n .px-2 {\\n padding-inline: calc(var(--spacing) * 2);\\n }\\n .px-4 {\\n padding-inline: calc(var(--spacing) * 4);\\n }\\n .px-6 {\\n padding-inline: calc(var(--spacing) * 6);\\n }\\n .py-0 {\\n padding-block: calc(var(--spacing) * 0);\\n }\\n .py-0\\\\.5 {\\n padding-block: calc(var(--spacing) * .5);\\n }\\n .py-1 {\\n padding-block: calc(var(--spacing) * 1);\\n }\\n .py-2 {\\n padding-block: calc(var(--spacing) * 2);\\n }\\n .py-3 {\\n padding-block: calc(var(--spacing) * 3);\\n }\\n .text-center {\\n text-align: center;\\n }\\n .font-mono {\\n font-family: var(--font-mono);\\n }\\n .text-2xl {\\n font-size: var(--text-2xl);\\n line-height: var(--tw-leading,var(--text-2xl--line-height));\\n }\\n .text-sm {\\n font-size: var(--text-sm);\\n line-height: var(--tw-leading,var(--text-sm--line-height));\\n }\\n .text-sm\\\\! {\\n font-size: var(--text-sm) !important;\\n line-height: var(--tw-leading,var(--text-sm--line-height)) !important;\\n }\\n .text-xs {\\n font-size: var(--text-xs);\\n line-height: var(--tw-leading,var(--text-xs--line-height));\\n }\\n .text-xs\\\\! {\\n font-size: var(--text-xs) !important;\\n line-height: var(--tw-leading,var(--text-xs--line-height)) !important;\\n }\\n .font-bold {\\n --tw-font-weight:var(--font-weight-bold);\\n font-weight: var(--font-weight-bold);\\n }\\n .font-medium {\\n --tw-font-weight:var(--font-weight-medium);\\n font-weight: var(--font-weight-medium);\\n }\\n .font-semibold {\\n --tw-font-weight:var(--font-weight-semibold);\\n font-weight: var(--font-weight-semibold);\\n }\\n .font-semibold\\\\! {\\n --tw-font-weight:var(--font-weight-semibold) !important;\\n font-weight: var(--font-weight-semibold) !important;\\n }\\n .text-black {\\n color: var(--color-black);\\n }\\n .text-gray-500 {\\n color: var(--color-gray-500);\\n }\\n .text-gray-600 {\\n color: var(--color-gray-600);\\n }\\n .text-gray-700 {\\n color: var(--color-gray-700);\\n }\\n .text-gray-900 {\\n color: var(--color-gray-900);\\n }\\n .text-green-400 {\\n color: var(--color-green-400);\\n }\\n .text-green-800 {\\n color: var(--color-green-800);\\n }\\n .text-white {\\n color: var(--color-white);\\n }\\n .uppercase {\\n text-transform: uppercase;\\n }\\n .underline {\\n text-decoration-line: underline;\\n }\\n .shadow {\\n --tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);\\n box-shadow:\\n var(--tw-inset-shadow),\\n var(--tw-inset-ring-shadow),\\n var(--tw-ring-offset-shadow),\\n var(--tw-ring-shadow),\\n var(--tw-shadow);\\n }\\n .outline {\\n outline-style: var(--tw-outline-style);\\n outline-width: 1px;\\n }\\n .blur {\\n --tw-blur:blur(8px);\\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\\n }\\n .filter {\\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\\n }\\n .transition {\\n transition-property:\\n color,\\n background-color,\\n border-color,\\n outline-color,\\n text-decoration-color,\\n fill,\\n stroke,\\n --tw-gradient-from,\\n --tw-gradient-via,\\n --tw-gradient-to,\\n opacity,\\n box-shadow,\\n transform,\\n translate,\\n scale,\\n rotate,\\n filter,\\n -webkit-backdrop-filter,\\n backdrop-filter,\\n display,\\n content-visibility,\\n overlay,\\n pointer-events;\\n transition-timing-function: var(--tw-ease,var(--default-transition-timing-function));\\n transition-duration: var(--tw-duration,var(--default-transition-duration));\\n }\\n}\\n@property --tw-border-style { syntax:\\\"*\\\";inherits:false;initial-value:solid }\\n@property --tw-font-weight { syntax:\\\"*\\\";inherits:false }\\n@property --tw-shadow { syntax:\\\"*\\\";inherits:false;initial-value:0 0 #0000 }\\n@property --tw-shadow-color { syntax:\\\"*\\\";inherits:false }\\n@property --tw-shadow-alpha { syntax:\\\"<percentage>\\\";inherits:false;initial-value:100% }\\n@property --tw-inset-shadow { syntax:\\\"*\\\";inherits:false;initial-value:0 0 #0000 }\\n@property --tw-inset-shadow-color { syntax:\\\"*\\\";inherits:false }\\n@property --tw-inset-shadow-alpha { syntax:\\\"<percentage>\\\";inherits:false;initial-value:100% }\\n@property --tw-ring-color { syntax:\\\"*\\\";inherits:false }\\n@property --tw-ring-shadow { syntax:\\\"*\\\";inherits:false;initial-value:0 0 #0000 }\\n@property --tw-inset-ring-color { syntax:\\\"*\\\";inherits:false }\\n@property --tw-inset-ring-shadow { syntax:\\\"*\\\";inherits:false;initial-value:0 0 #0000 }\\n@property --tw-ring-inset { syntax:\\\"*\\\";inherits:false }\\n@property --tw-ring-offset-width { syntax:\\\"<length>\\\";inherits:false;initial-value:0 }\\n@property --tw-ring-offset-color { syntax:\\\"*\\\";inherits:false;initial-value:#fff }\\n@property --tw-ring-offset-shadow { syntax:\\\"*\\\";inherits:false;initial-value:0 0 #0000 }\\n@property --tw-outline-style { syntax:\\\"*\\\";inherits:false;initial-value:solid }\\n@property --tw-blur { syntax:\\\"*\\\";inherits:false }\\n@property --tw-brightness { syntax:\\\"*\\\";inherits:false }\\n@property --tw-contrast { syntax:\\\"*\\\";inherits:false }\\n@property --tw-grayscale { syntax:\\\"*\\\";inherits:false }\\n@property --tw-hue-rotate { syntax:\\\"*\\\";inherits:false }\\n@property --tw-invert { syntax:\\\"*\\\";inherits:false }\\n@property --tw-opacity { syntax:\\\"*\\\";inherits:false }\\n@property --tw-saturate { syntax:\\\"*\\\";inherits:false }\\n@property --tw-sepia { syntax:\\\"*\\\";inherits:false }\\n@property --tw-drop-shadow { syntax:\\\"*\\\";inherits:false }\\n@property --tw-drop-shadow-color { syntax:\\\"*\\\";inherits:false }\\n@property --tw-drop-shadow-alpha { syntax:\\\"<percentage>\\\";inherits:false;initial-value:100% }\\n@property --tw-drop-shadow-size { syntax:\\\"*\\\";inherits:false }\\n\")","import { twMerge } from \"tailwind-merge\";\r\nimport { clsx } from \"clsx\";\r\nimport type { ClassValue } from \"./utils/interfaces\";\r\n\r\nexport function cn(...values: ClassValue[]): string {\r\n return twMerge(clsx(values));\r\n}\r\n","/**\r\n * Função NVL (Null Value Logic) - retorna valor padrão se o valor for null/undefined\r\n * @param {T | null | undefined} value - Valor a ser verificado\r\n * @param {T} defaultValue - Valor padrão a ser retornado se value for null/undefined\r\n * @returns {T} Value se não for null/undefined, senão defaultValue\r\n * @template T - Tipo do valor\r\n * @example\r\n * nvl(null, 'padrão') // Retorna: 'padrão'\r\n * nvl('valor', 'padrão') // Retorna: 'valor'\r\n */\r\nexport function nvl<T>(value: T | null | undefined, defaultValue: T): T {\r\n return value ?? defaultValue;\r\n}\r\n","/** Remove tudo que não for dígito. */\r\nexport function removeDigits(value: string): string {\r\n return value.replace(/\\D/g, \"\");\r\n}\r\n","import { removeDigits } from \"../../core/remove-digits\";\r\n\r\n/**\r\n * Formata CPF (até 11 dígitos) ou CNPJ (12–14 dígitos) conforme o tamanho.\r\n * @param data - Valor com ou sem formatação\r\n * @returns CPF `000.000.000-00` ou CNPJ `00.000.000/0000-00`; string vazia se ausente\r\n * @example\r\n * formatCpfCnpj(\"12345678901\") // \"123.456.789-01\"\r\n * formatCpfCnpj(\"12345678000199\") // \"12.345.678/0001-99\"\r\n */\r\nexport function formatCpfCnpj(data?: string): string {\r\n if (!data) return \"\";\r\n const value = removeDigits(data);\r\n\r\n if (!value) return \"\";\r\n if (value.length <= 11) {\r\n const cpf = value.slice(0, 11);\r\n return cpf\r\n .replace(/(\\d{3})(\\d)/, \"$1.$2\")\r\n .replace(/(\\d{3})(\\d)/, \"$1.$2\")\r\n .replace(/(\\d{3})(\\d{1,2})$/, \"$1-$2\");\r\n }\r\n\r\n const cnpj = value.slice(0, 14);\r\n return cnpj\r\n .replace(/^(\\d{2})(\\d)/, \"$1.$2\")\r\n .replace(/^(\\d{2})\\.(\\d{3})(\\d)/, \"$1.$2.$3\")\r\n .replace(/\\.(\\d{3})(\\d)/, \".$1/$2\")\r\n .replace(/(\\d{4})(\\d)/, \"$1-$2\");\r\n}\r\n","import { removeDigits } from \"../../core/remove-digits\";\r\n\r\n/**\r\n * Formata telefone brasileiro (até 11 dígitos): fixo `(00) 0000-0000` ou celular `(00) 00000-0000`.\r\n * @param phone - Valor com ou sem formatação\r\n * @returns Telefone formatado ou string vazia se ausente\r\n * @example\r\n * formatPhoneBr(\"11987654321\") // \"(11) 98765-4321\"\r\n * formatPhoneBr(\"1133334444\") // \"(11) 3333-4444\"\r\n */\r\nexport function formatPhoneBr(phone?: string): string {\r\n if (!phone) return \"\";\r\n const digits = removeDigits(phone).slice(0, 11);\r\n\r\n if (!digits) return \"\";\r\n if (digits.length <= 2) return digits;\r\n if (digits.length <= 6) {\r\n return digits.replace(/(\\d{2})(\\d+)/, \"($1) $2\");\r\n }\r\n if (digits.length <= 10) {\r\n return digits.replace(/(\\d{2})(\\d{4})(\\d+)/, \"($1) $2-$3\");\r\n }\r\n return digits.replace(/(\\d{2})(\\d{5})(\\d+)/, \"($1) $2-$3\");\r\n}\r\n","import { cn } from \"@/functions\";\r\nimport { Box } from \"@mui/material\";\r\nimport { Tooltip } from \"@mantine/core\";\r\nimport type { CardProps } from \"./utils/interface\";\r\n\r\n/**\r\n * Container de UI com cabeçalho colorido (título e ícone opcionais) e área de conteúdo.\r\n *\r\n * O card usa MUI `Box` para dimensões, sombra e responsividade; classes Tailwind\r\n * extras podem ser passadas em `className` e são mescladas com `cn`. O título é\r\n * sempre exibido e truncado quando necessário; o tooltip (Mantine) só aparece se\r\n * `toolTip` for `true`.\r\n *\r\n * @param props - Propriedades do componente. Detalhes em {@link CardProps}.\r\n * @param props.width - Largura do card. Padrão: `\"100%\"`.\r\n * @param props.height - Altura do card. Padrão: `\"auto\"`.\r\n * @param props.margin - Margem externa.\r\n * @param props.title - Texto do cabeçalho.\r\n * @param props.toolTip - Habilita tooltip no título.\r\n * @param props.className - `className` nativo do React no container.\r\n * @param props.titleWidth - Largura da barra do cabeçalho. Padrão: `\"100%\"`.\r\n * @param props.titleColor - Cor de fundo do cabeçalho. Padrão: `var(--primary-color)`.\r\n * @param props.borderTitle - `border-radius` só do cabeçalho.\r\n * @param props.onClick - Clique no card; adiciona `cursor: pointer !important`.\r\n * @param props.borderRadius - `border-radius` do container.\r\n * @param props.icon - Conteúdo à direita do título.\r\n * @param props.children - Corpo do card.\r\n * @param props.justifyContent - Alinhamento título/ícone. Padrão: `\"space-between\"`.\r\n *\r\n * @returns Elemento `Box` com cabeçalho e `children`.\r\n *\r\n * @example\r\n * ```tsx\r\n * <Card title=\"Resumo\" toolTip icon={<span>+</span>}>\r\n * <p>Conteúdo interno</p>\r\n * </Card>\r\n * ```\r\n *\r\n * @example\r\n * ```tsx\r\n * <Card\r\n * title=\"Clique aqui\"\r\n * width=\"320px\"\r\n * onClick={() => alert(\"Card clicado\")}\r\n * >\r\n * Card interativo\r\n * </Card>\r\n * ```\r\n */\r\nfunction Card({\r\n margin,\r\n onClick,\r\n title,\r\n toolTip,\r\n className,\r\n borderTitle,\r\n children,\r\n borderRadius,\r\n width = \"100%\",\r\n height = \"auto\",\r\n titleWidth = \"100%\",\r\n justifyContent = \"space-between\",\r\n titleColor = \"var(--primary-color)\",\r\n icon,\r\n}: Readonly<CardProps>): React.ReactElement {\r\n return (\r\n <Box\r\n onClick={onClick}\r\n className={cn(className, \"text-sm!\")}\r\n sx={{\r\n width,\r\n margin,\r\n height,\r\n borderRadius,\r\n \"@media (max-width: 768px)\": { width: \"100%\" },\r\n boxShadow: \"0 0.15rem 0.5rem rgba(0, 0, 0, 0.16)\",\r\n ...(onClick && { cursor: \"pointer !important\" }),\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n justifyContent,\r\n height: \"24px\",\r\n color: \"white\",\r\n display: \"flex\",\r\n width: titleWidth,\r\n overflow: \"hidden\",\r\n padding: \"0px 15px\",\r\n alignItems: \"center\",\r\n flexDirection: \"row\",\r\n borderRadius: borderTitle,\r\n backgroundColor: titleColor,\r\n }}\r\n >\r\n <span className=\"min-w-0 flex-1 font-semibold! truncate!\">\r\n <Tooltip\r\n withArrow\r\n radius=\"md\"\r\n label={title}\r\n arrowSize={6}\r\n position=\"top\"\r\n arrowOffset={15}\r\n disabled={!toolTip}\r\n color={titleColor}\r\n classNames={{ tooltip: \"text-xs!\" }}\r\n offset={{ mainAxis: 11, crossAxis: -21 }}\r\n transitionProps={{ transition: \"fade\", duration: 100 }}\r\n >\r\n <span className=\"block! truncate!\">{title}</span>\r\n </Tooltip>\r\n </span>\r\n <div>{icon}</div>\r\n </Box>\r\n {children}\r\n </Box>\r\n );\r\n}\r\nexport default Card;\r\n","export const DIALOG_BACKDROP_STYLE = {\r\n backdropFilter: \"blur(4px)\",\r\n backgroundColor: \"rgba(0, 0, 0, 0.5)\",\r\n};\r\n\r\nexport const DIALOG_PAPER_FONT_SX = {\r\n fontFamily: \"var(--font-family, inherit) !important\",\r\n \"& .MuiDialogTitle-root, & .MuiDialogContent-root, & .MuiDialogActions-root, & .MuiTypography-root\":\r\n {\r\n fontFamily: \"inherit !important\",\r\n },\r\n};\r\n\r\nconst dialogConstants = `\r\nModal de diálogo baseado no MUI \\`Dialog\\`, com título, conteúdo e ações opcionais.\r\nSuporta \\`maxWidth\\` e backdrop com blur via \\`blurBackdrop\\`.\r\n\r\n**Importação:**\r\n\\`\\`\\`tsx\r\nimport Dialog from \"@/components/ui/dialog\";\r\n// ou, no pacote publicado:\r\n// import { Dialog } from \"@grazziotin/react-components-next/ui\";\r\n\\`\\`\\`\r\n\r\n**Fonte do projeto (CSS global):**\r\n\\`\\`\\`css\r\n:root {\r\n --font-family: \"Poppins\", sans-serif;\r\n}\r\n\\`\\`\\`\r\n\r\nSem \\`--font-family\\`, os componentes herdam a fonte do \\`body\\`.\r\n\r\n**Uso básico:**\r\n\\`\\`\\`tsx\r\nconst [open, setOpen] = useState(false);\r\n\r\n<Dialog\r\n open={open}\r\n title=\"Confirmar\"\r\n onClose={() => setOpen(false)}\r\n actions={<button type=\"button\">OK</button>}\r\n>\r\n Conteúdo do diálogo\r\n</Dialog>\r\n\\`\\`\\`\r\n`;\r\n\r\nexport default dialogConstants;\r\n","import React from \"react\";\r\nimport DialogMui from \"@mui/material/Dialog\";\r\nimport type { DialogProps } from \"./utils/interface\";\r\nimport DialogTitle from \"@mui/material/DialogTitle\";\r\nimport DialogActions from \"@mui/material/DialogActions\";\r\nimport DialogContent from \"@mui/material/DialogContent\";\r\nimport { DIALOG_BACKDROP_STYLE, DIALOG_PAPER_FONT_SX } from \"./utils/constants\";\r\n\r\n/**\r\n * Modal de diálogo baseado no MUI `Dialog`, com título, conteúdo e ações opcionais.\r\n *\r\n * O componente usa `fullWidth` por padrão e permite limitar a largura via `maxWidth`.\r\n * Com `blurBackdrop`, o fundo recebe desfoque e overlay escuro semitransparente.\r\n *\r\n * @param props - Propriedades do componente. Detalhes em {@link DialogProps}.\r\n * @param props.open - Controla se o diálogo está visível.\r\n * @param props.title - Título exibido no topo; omitido se não informado.\r\n * @param props.onClose - Callback ao fechar (clique fora, ESC ou botão de fechar do MUI).\r\n * @param props.actions - Rodapé com botões ou ações customizadas.\r\n * @param props.children - Conteúdo principal do diálogo.\r\n * @param props.maxWidth - Largura máxima do MUI (`xs`, `sm`, `md`, `lg`, `xl` ou `false`).\r\n * @param props.blurBackdrop - Aplica blur e escurecimento no backdrop. Padrão: `false`.\r\n *\r\n * @returns Instância do `Dialog` do Material UI.\r\n *\r\n * @example\r\n * ```tsx\r\n * const [open, setOpen] = useState(false);\r\n *\r\n * <Dialog\r\n * open={open}\r\n * title=\"Confirmar exclusão\"\r\n * onClose={() => setOpen(false)}\r\n * actions={<Button onClick={() => setOpen(false)}>OK</Button>}\r\n * >\r\n * Deseja realmente excluir este item?\r\n * </Dialog>\r\n * ```\r\n *\r\n * @example\r\n * ```tsx\r\n * <Dialog\r\n * open={open}\r\n * onClose={handleClose}\r\n * maxWidth=\"sm\"\r\n * blurBackdrop\r\n * >\r\n * Conteúdo sem título.\r\n * </Dialog>\r\n * ```\r\n */\r\nfunction Dialog({\r\n open,\r\n title,\r\n onClose,\r\n actions,\r\n children,\r\n maxWidth,\r\n blurBackdrop = false,\r\n}: Readonly<DialogProps>): React.ReactElement {\r\n const backdropStyle = blurBackdrop ? DIALOG_BACKDROP_STYLE : {};\r\n\r\n return (\r\n <DialogMui\r\n fullWidth\r\n open={open}\r\n onClose={onClose}\r\n maxWidth={maxWidth}\r\n slotProps={{\r\n backdrop: { sx: backdropStyle },\r\n paper: { sx: DIALOG_PAPER_FONT_SX },\r\n }}\r\n >\r\n {title && (\r\n <DialogTitle>\r\n <p className=\"text-sm font-semibold text-black-de\">{title}</p>\r\n </DialogTitle>\r\n )}\r\n <DialogContent className=\"text-black\">{children}</DialogContent>\r\n {actions && <DialogActions>{actions}</DialogActions>}\r\n </DialogMui>\r\n );\r\n}\r\n\r\nexport default Dialog;\r\n","import { SxProps, Theme } from \"@mui/material\";\r\nimport { ptBR } from \"@mui/x-data-grid/locales\";\r\nimport { GridLocaleText } from \"@mui/x-data-grid\";\r\n\r\nexport const localeText: Partial<GridLocaleText> = {\r\n ...ptBR.components.MuiDataGrid.defaultProps.localeText,\r\n noColumnsOverlayLabel: \"Nenhuma coluna disponível\",\r\n noColumnsOverlayManageColumns: \"Gerenciar colunas\",\r\n\r\n columnsManagementSearchTitle: \"Buscar coluna\",\r\n columnsManagementNoColumns: \"Nenhuma coluna para mostrar\",\r\n columnsManagementShowHideAllText: \"Mostrar/Ocultar todas\",\r\n columnsManagementReset: \"Redefinir\",\r\n columnsManagementDeleteIconLabel: \"Excluir\",\r\n\r\n columnMenuManageColumns: \"Gerenciar colunas\",\r\n columnMenuShowColumns: \"Mostrar colunas\",\r\n columnMenuLabel: \"Menu da coluna\",\r\n columnMenuHideColumn: \"Ocultar\",\r\n columnMenuUnsort: \"Remover ordenação\",\r\n columnMenuSortAsc: \"Ordenar ASC\",\r\n columnMenuSortDesc: \"Ordenar DESC\",\r\n columnMenuFilter: \"Filtrar\",\r\n\r\n toolbarQuickFilterLabel: \"Filtro rápido\",\r\n toolbarQuickFilterPlaceholder: \"Filtrar…\",\r\n toolbarQuickFilterDeleteIconLabel: \"Limpar filtro\",\r\n toolbarExport: \"Exportar\",\r\n toolbarExportLabel: \"Exportar\",\r\n toolbarExportCSV: \"Baixar como CSV\",\r\n toolbarExportPrint: \"Imprimir\",\r\n toolbarColumns: \"Colunas\",\r\n toolbarColumnsLabel: \"Selecionar colunas\",\r\n toolbarFilters: \"Filtros\",\r\n toolbarFiltersLabel: \"Mostrar filtros\",\r\n toolbarFiltersTooltipHide: \"Ocultar filtros\",\r\n toolbarFiltersTooltipShow: \"Mostrar filtros\",\r\n toolbarFiltersTooltipActive: (count) =>\r\n count === 1 ? `${count} filtro ativo` : `${count} filtros ativos`,\r\n toolbarDensity: \"Densidade\",\r\n toolbarDensityLabel: \"Densidade\",\r\n toolbarDensityCompact: \"Compacta\",\r\n toolbarDensityStandard: \"Padrão\",\r\n toolbarDensityComfortable: \"Confortável\",\r\n\r\n filterPanelAddFilter: \"Adicionar filtro\",\r\n filterPanelDeleteIconLabel: \"Excluir\",\r\n filterPanelOperatorAnd: \"E\",\r\n filterPanelOperatorOr: \"OU\",\r\n filterPanelColumn: \"Colunas\",\r\n filterPanelInputLabel: \"Valor\",\r\n filterPanelInputPlaceholder: \"Valor do filtro\",\r\n\r\n filterOperatorContains: \"contém\",\r\n filterOperatorEquals: \"igual a\",\r\n filterOperatorStartsWith: \"começa com\",\r\n filterOperatorEndsWith: \"termina com\",\r\n filterOperatorIs: \"é\",\r\n filterOperatorNot: \"não é\",\r\n filterOperatorAfter: \"depois de\",\r\n filterOperatorOnOrAfter: \"em ou depois de\",\r\n filterOperatorBefore: \"antes de\",\r\n filterOperatorOnOrBefore: \"em ou antes de\",\r\n filterOperatorIsEmpty: \"está vazio\",\r\n filterOperatorIsNotEmpty: \"não está vazio\",\r\n filterOperatorIsAnyOf: \"é qualquer um de\",\r\n\r\n footerTotalRows: \"Total de linhas:\",\r\n footerRowSelected: (count) =>\r\n count === 1\r\n ? \"1 linha selecionada\"\r\n : `${count.toLocaleString()} linhas selecionadas`,\r\n footerTotalVisibleRows: (visibleCount, totalCount) =>\r\n `${visibleCount.toLocaleString()} de ${totalCount.toLocaleString()}`,\r\n\r\n paginationRowsPerPage: \"Linhas por página:\",\r\n paginationItemAriaLabel: (type) => {\r\n switch (type) {\r\n case \"first\":\r\n return \"Primeira página\";\r\n case \"last\":\r\n return \"Última página\";\r\n case \"next\":\r\n return \"Próxima página\";\r\n case \"previous\":\r\n return \"Página anterior\";\r\n default:\r\n return \"\";\r\n }\r\n },\r\n\r\n noRowsLabel: \"Nenhum dado encontrado\",\r\n noResultsOverlayLabel: \"Nenhum resultado encontrado\",\r\n\r\n checkboxSelectionHeaderName: \"Seleção de checkbox\",\r\n checkboxSelectionSelectAllRows: \"Selecionar todas as linhas\",\r\n checkboxSelectionUnselectAllRows: \"Desmarcar todas as linhas\",\r\n checkboxSelectionSelectRow: \"Selecionar linha\",\r\n checkboxSelectionUnselectRow: \"Desmarcar linha\",\r\n\r\n columnHeaderSortIconLabel: \"Ordenar\",\r\n\r\n groupingColumnHeaderName: \"Grupo\",\r\n groupColumn: (name) => `Agrupar por ${name}`,\r\n unGroupColumn: (name) => `Parar de agrupar por ${name}`,\r\n\r\n detailPanelToggle: \"Alternar painel de detalhes\",\r\n expandDetailPanel: \"Expandir\",\r\n collapseDetailPanel: \"Recolher\",\r\n\r\n treeDataGroupingHeaderName: \"Grupo\",\r\n treeDataExpand: \"ver filhos\",\r\n treeDataCollapse: \"ocultar filhos\",\r\n\r\n aggregationMenuItemHeader: \"Agregação\",\r\n aggregationFunctionLabelSum: \"soma\",\r\n aggregationFunctionLabelAvg: \"média\",\r\n aggregationFunctionLabelMin: \"mín\",\r\n aggregationFunctionLabelMax: \"máx\",\r\n aggregationFunctionLabelSize: \"tamanho\",\r\n\r\n paginationDisplayedRows: ({ from, to, count }) => {\r\n const total = count === -1 ? \"mais de \" + to : count;\r\n return `${from}–${to} de ${total}`;\r\n },\r\n};\r\n\r\nexport const columnPanelSx: SxProps<Theme> = {\r\n padding: 2,\r\n width: \"350px\",\r\n color: \"#000000DE\",\r\n};\r\n\r\nexport const columnMenuSx: SxProps<Theme> = {\r\n \"& .MuiListItemText-primary\": {\r\n fontSize: \"14px !important\",\r\n },\r\n};\r\n\r\nexport const filterSx: SxProps<Theme> = {\r\n width: \"750px\",\r\n \"*\": { fontSize: \"14px !important\" },\r\n \"& .MuiDataGrid-filterFormColumnInput\": { width: \"230px\" },\r\n \"& .MuiDataGrid-filterFormOperatorInput\": { width: \"230px\" },\r\n};\r\n\r\nexport const paginationSx: SxProps<Theme> = {\r\n \"& .MuiTablePagination-root\": { fontSize: \"12px !important\" },\r\n \"& .MuiTablePagination-selectLabel\": { fontSize: \"12px !important\" },\r\n \"& .MuiTablePagination-displayedRows\": { fontSize: \"12px !important\" },\r\n \"& .MuiTablePagination-select\": { fontSize: \"12px !important\" },\r\n \"& .MuiTablePagination-toolbar\": {\r\n minHeight: \"40px !important\",\r\n padding: \"0 8px !important\",\r\n },\r\n};\r\n\r\nexport const tableSx: SxProps<Theme> = {\r\n fontSize: \"13px\",\r\n \"& .MuiDataGrid-row:nth-of-type(even)\": {\r\n backgroundColor: \"#F9FAFB\",\r\n },\r\n \"& .MuiDataGrid-row:nth-of-type(odd)\": {\r\n backgroundColor: \"#FFFFFF\",\r\n },\r\n \"& .MuiDataGrid-row.Mui-selected:nth-of-type(even)\": {\r\n backgroundColor: \"#F9FAFB !important\",\r\n },\r\n \"& .MuiDataGrid-row.Mui-selected:nth-of-type(odd)\": {\r\n backgroundColor: \"#FFFFFF !important\",\r\n },\r\n \"& .MuiDataGrid-row:hover\": { backgroundColor: \"#F3F4F6 !important\" },\r\n \"& .MuiDataGrid-columnHeaderTitleContainer\": {\r\n color: \"#FFFFFF\",\r\n justifyContent: \"center\",\r\n \"& svg\": { color: \"#FFFFFF\" },\r\n },\r\n \"& .MuiDataGrid-iconButtonContainer .MuiIconButton-root, & .MuiDataGrid-menuIconButton\":\r\n {\r\n color: \"#FFFFFF\",\r\n },\r\n \"& .MuiDataGrid-iconButtonContainer .MuiIconButton-root:hover, & .MuiDataGrid-menuIconButton:hover\":\r\n { backgroundColor: \"transparent\" },\r\n \"& .MuiDataGrid-iconButtonContainer .MuiIconButton-root.Mui-focusVisible, & .MuiDataGrid-menuIconButton.Mui-focusVisible\":\r\n { backgroundColor: \"transparent\" },\r\n \"& .MuiDataGrid-columnHeaders\": {\r\n background: \"linear-gradient(to right, #00B2A6 0%, #0AAEB2 100%)\",\r\n },\r\n \"& .MuiDataGrid-columnHeader\": {\r\n color: \"#FFFFFF\",\r\n fontWeight: \"bold\",\r\n backgroundColor: \"transparent\",\r\n \"& svg\": { color: \"#FFFFFF\" },\r\n },\r\n \"& .MuiDataGrid-columnHeader:hover\": { backgroundColor: \"transparent\" },\r\n \"& .MuiDataGrid-columnHeader:hover .MuiIconButton-root\": {\r\n backgroundColor: \"transparent\",\r\n },\r\n \"& .MuiDataGrid-columnHeader:focus-within\": {\r\n backgroundColor: \"transparent\",\r\n },\r\n \"& .MuiDataGrid-columnHeader--sorted\": { backgroundColor: \"transparent\" },\r\n \"& .MuiDataGrid-columnHeader--sorted .MuiIconButton-root\": {\r\n backgroundColor: \"transparent\",\r\n },\r\n \"& .MuiDataGrid-sortIcon\": { color: \"#FFFFFF\" },\r\n \"& .MuiDataGrid-sortIcon:hover\": { backgroundColor: \"transparent\" },\r\n \"& .MuiDataGrid-columnHeaderTitle\": { fontWeight: \"500\", color: \"#FFFFFF\" },\r\n};\r\n\r\nconst dataTableConstants = `\r\nTabela de dados baseada no MUI \\`DataGrid\\`, com estilização Grazziotin, textos em\r\nportuguês e operador de filtro **entre** automático para colunas string e number.\r\n\r\n**Importação:**\r\n\\`\\`\\`tsx\r\nimport { DataTable } from \"@grazziotin/react-components-next/ui\";\r\nimport type { DataTableProps } from \"@grazziotin/react-components-next/ui\";\r\n\\`\\`\\`\r\n\r\n**Uso básico:**\r\n\\`\\`\\`tsx\r\nconst columns = [\r\n { field: \"id\", headerName: \"ID\", width: 90 },\r\n { field: \"nome\", headerName: \"Nome\", flex: 1 },\r\n { field: \"idade\", headerName: \"Idade\", type: \"number\", width: 110 },\r\n];\r\n\r\nconst rows = [\r\n { id: 1, nome: \"João\", idade: 28 },\r\n { id: 2, nome: \"Maria\", idade: 34 },\r\n];\r\n\r\n<DataTable\r\n rows={rows}\r\n columns={columns}\r\n pageSizeOptions={[5, 10, 25]}\r\n initialState={{ pagination: { paginationModel: { pageSize: 5 } } }}\r\n/>\r\n\\`\\`\\`\r\n\r\n**Recursos incluídos:**\r\n- Filtros, ordenação e paginação\r\n- Painel de gerenciamento de colunas\r\n- Operador \"entre\" em colunas texto e numéricas\r\n- Overlay \"Nenhum dado encontrado\" em português\r\n`;\r\n\r\nexport default dataTableConstants;\r\n","import {\r\n GridFilterItem,\r\n GridFilterOperator,\r\n getGridNumericOperators,\r\n getGridStringOperators,\r\n} from \"@mui/x-data-grid\";\r\nimport { Box, TextField } from \"@mui/material\";\r\nimport type { ChangeEvent } from \"react\";\r\n\r\nconst createChange =\r\n (item: GridFilterItem, applyValue: (item: GridFilterItem) => void) =>\r\n (index: number) =>\r\n ({ target }: ChangeEvent<HTMLInputElement>) => {\r\n const [start = \"\", end = \"\"] = Array.isArray(item.value) ? item.value : [];\r\n\r\n applyValue({\r\n ...item,\r\n value: index === 0 ? [target.value, end] : [start, target.value],\r\n });\r\n };\r\n\r\nexport const textBetweenOp: GridFilterOperator = {\r\n label: \"entre\",\r\n value: \"between\",\r\n getApplyFilterFn: (filter: GridFilterItem) => {\r\n if (!filter.value || !Array.isArray(filter.value)) return null;\r\n\r\n const [start, end] = filter.value;\r\n if (!start || !end) return null;\r\n\r\n return (value) => {\r\n const cell = value?.toString() || \"\";\r\n return cell >= start && cell <= end;\r\n };\r\n },\r\n InputComponent: ({ item, applyValue, focusElementRef }) => {\r\n const onChange = createChange(item, applyValue);\r\n\r\n return (\r\n <Box sx={{ display: \"flex\", flexDirection: \"column\", gap: 1 }}>\r\n <TextField\r\n size=\"small\"\r\n label=\"De\"\r\n variant=\"outlined\"\r\n inputRef={focusElementRef}\r\n value={(item.value || [\"\", \"\"])[0] || \"\"}\r\n onChange={onChange(0)}\r\n placeholder=\"Inicial\"\r\n />\r\n <TextField\r\n size=\"small\"\r\n label=\"Até\"\r\n variant=\"outlined\"\r\n value={(item.value || [\"\", \"\"])[1] || \"\"}\r\n onChange={onChange(1)}\r\n placeholder=\"Final\"\r\n />\r\n </Box>\r\n );\r\n },\r\n};\r\n\r\nexport const numberBetweenOp: GridFilterOperator = {\r\n label: \"entre\",\r\n value: \"between\",\r\n getApplyFilterFn: (filter: GridFilterItem) => {\r\n if (!filter.value || !Array.isArray(filter.value)) return null;\r\n\r\n const [start, end] = filter.value;\r\n if (start === \"\" || end === \"\" || start == null || end == null) return null;\r\n\r\n return (value) => {\r\n const number = Number(value);\r\n return number >= Number(start) && number <= Number(end);\r\n };\r\n },\r\n InputComponent: ({ item, applyValue, focusElementRef }) => {\r\n const onChange = createChange(item, applyValue);\r\n\r\n return (\r\n <Box sx={{ display: \"flex\", flexDirection: \"column\", gap: 1 }}>\r\n <TextField\r\n size=\"small\"\r\n label=\"De\"\r\n type=\"number\"\r\n variant=\"outlined\"\r\n inputRef={focusElementRef}\r\n value={(item.value || [\"\", \"\"])[0] || \"\"}\r\n onChange={onChange(0)}\r\n placeholder=\"Mínimo\"\r\n />\r\n <TextField\r\n size=\"small\"\r\n label=\"Até\"\r\n type=\"number\"\r\n variant=\"outlined\"\r\n value={(item.value || [\"\", \"\"])[1] || \"\"}\r\n onChange={onChange(1)}\r\n placeholder=\"Máximo\"\r\n />\r\n </Box>\r\n );\r\n },\r\n};\r\n\r\nexport const getTextOps = (): GridFilterOperator[] => {\r\n return [...getGridStringOperators(), textBetweenOp];\r\n};\r\n\r\nexport const getNumberOps = (): GridFilterOperator[] => {\r\n return [...getGridNumericOperators(), numberBetweenOp];\r\n};\r\n","import {\r\n localeText,\r\n tableSx,\r\n filterSx,\r\n columnMenuSx,\r\n paginationSx,\r\n columnPanelSx,\r\n} from \"./utils/constants\";\r\nimport {\r\n DataGrid,\r\n GridOverlay,\r\n GridColumnMenu,\r\n GridPagination,\r\n GridFilterPanel,\r\n GridColumnsPanel,\r\n GridColumnMenuProps,\r\n GRID_STRING_COL_DEF,\r\n GRID_NUMERIC_COL_DEF,\r\n GridColumnsPanelProps,\r\n} from \"@mui/x-data-grid\";\r\nimport { Box } from \"@mui/material\";\r\nimport type { ComponentProps } from \"react\";\r\nimport type { DataTableProps } from \"./utils/interface\";\r\nimport { getNumberOps, getTextOps } from \"./utils/between-filter\";\r\n/**\r\n * Configuração global dos operadores de filtro do DataGrid.\r\n *\r\n * Sobrescreve as definições padrão do MUI DataGrid para incluir automaticamente\r\n * o operador \"entre\" em todas as colunas do tipo string e number.\r\n *\r\n * Isso significa que TODAS as tabelas do projeto que usam o componente DataTable\r\n * terão o operador \"entre\" disponível sem necessidade de configuração adicional.\r\n */\r\nGRID_STRING_COL_DEF.filterOperators = getTextOps();\r\nGRID_NUMERIC_COL_DEF.filterOperators = getNumberOps();\r\n\r\nfunction CustomColumnsPanel(props: Readonly<GridColumnsPanelProps>) {\r\n return <GridColumnsPanel {...props} sx={columnPanelSx} />;\r\n}\r\n\r\nfunction CustomColumnMenu(props: Readonly<GridColumnMenuProps>) {\r\n return (\r\n <Box sx={columnMenuSx}>\r\n <GridColumnMenu {...props} />\r\n </Box>\r\n );\r\n}\r\n\r\nfunction CustomFilterPanel(\r\n props: Readonly<ComponentProps<typeof GridFilterPanel>>,\r\n) {\r\n return <GridFilterPanel {...props} sx={filterSx} />;\r\n}\r\n\r\nfunction CustomNoRowsOverlay() {\r\n return (\r\n <GridOverlay>\r\n <Box sx={{ mt: 1 }}>Nenhum dado encontrado.</Box>\r\n </GridOverlay>\r\n );\r\n}\r\n\r\nfunction CustomPagination() {\r\n return (\r\n <Box sx={paginationSx}>\r\n <GridPagination />\r\n </Box>\r\n );\r\n}\r\n\r\n/**\r\n * Componente DataTable personalizado baseado no MUI DataGrid.\r\n *\r\n * Fornece uma tabela de dados com estilização customizada, filtros avançados,\r\n * paginação, ordenação e gerenciamento de colunas.\r\n *\r\n * Recursos incluídos:\r\n * - Operador de filtro \"entre\" automático para colunas string e number\r\n * - Painel de filtros customizado\r\n * - Painel de gerenciamento de colunas\r\n * - Paginação estilizada\r\n * - Overlay personalizado para \"sem dados\"\r\n * - Textos em português brasileiro\r\n *\r\n * @param props - Todas as props do MUI DataGrid são suportadas. Ver {@link DataTableProps}.\r\n *\r\n * @example\r\n * <DataTable\r\n * rows={dados}\r\n * columns={colunas}\r\n * loading={carregando}\r\n * pageSizeOptions={[10, 20, 50]}\r\n * />\r\n */\r\nconst DataTable = ({ ...rest }: DataTableProps) => {\r\n return (\r\n <Box sx={{ mb: 2, mt: 2, height: \"100%\" }}>\r\n <DataGrid\r\n sx={tableSx}\r\n {...rest}\r\n className=\"min-h-[210px]!\"\r\n localeText={localeText}\r\n disableRowSelectionOnClick\r\n slotProps={{\r\n loadingOverlay: {\r\n variant: \"linear-progress\",\r\n noRowsVariant: \"skeleton\",\r\n },\r\n }}\r\n slots={{\r\n columnMenu: CustomColumnMenu,\r\n filterPanel: CustomFilterPanel,\r\n columnsPanel: CustomColumnsPanel,\r\n noRowsOverlay: CustomNoRowsOverlay,\r\n pagination: CustomPagination,\r\n }}\r\n />\r\n </Box>\r\n );\r\n};\r\n\r\nexport default DataTable;\r\n","import type { TabColorProps } from \"./utils/interface\";\r\nimport { styled, Tab as MuiTab, Tabs as MuiTabs } from \"@mui/material\";\r\n\r\nconst DEFAULT_TAB_COLOR = \"var(--primary-color)\";\r\nconst DEFAULT_TAB_FONT_FAMILY = \"var(--font-family, inherit)\";\r\n\r\n/**\r\n * Container de abas baseado no MUI `Tabs`, com indicador colorido customizável.\r\n *\r\n * @param props.color - Cor do indicador da aba ativa. Padrão: `var(--primary-color)`.\r\n *\r\n * @example\r\n * ```tsx\r\n * <Tabs value={value} onChange={handleChange} color=\"#00B2A6\">\r\n * <Tab label=\"Aba 1\" />\r\n * </Tabs>\r\n * ```\r\n */\r\nexport const Tabs = styled(MuiTabs, {\r\n shouldForwardProp: (prop) => prop !== \"color\",\r\n})<TabColorProps>(({ color = DEFAULT_TAB_COLOR }) => ({\r\n fontFamily: `${DEFAULT_TAB_FONT_FAMILY} !important`,\r\n \"& .MuiTabs-indicator\": { backgroundColor: color },\r\n}));\r\n\r\n/**\r\n * Aba individual baseada no MUI `Tab`, com tipografia e cor de seleção customizáveis.\r\n *\r\n * @param props.color - Cor do rótulo quando a aba está selecionada. Padrão: `var(--primary-color)`.\r\n * @param props.fontFamily - Família tipográfica do rótulo. Padrão: `var(--font-family, inherit)`.\r\n *\r\n * @example\r\n * ```tsx\r\n * <Tab label=\"Configurações\" color=\"#00B2A6\" />\r\n * ```\r\n */\r\nexport const Tab = styled(MuiTab, {\r\n shouldForwardProp: (prop) => prop !== \"color\" && prop !== \"fontFamily\",\r\n})<TabColorProps>(\r\n ({ color = DEFAULT_TAB_COLOR, fontFamily = DEFAULT_TAB_FONT_FAMILY }) => ({\r\n fontWeight: \"500 !important\",\r\n color: \"#000000CC !important\",\r\n fontSize: \"14px !important\",\r\n textTransform: \"uppercase !important\",\r\n fontFamily: `${fontFamily} !important`,\r\n \"&.Mui-selected\": { color: `${color} !important` },\r\n }),\r\n);\r\n"]}
|